From 0cafafe3dd219f5d0e372437b39d8c44cc455fbd Mon Sep 17 00:00:00 2001 From: ToutPratique Date: Tue, 21 Mar 2017 11:34:24 +0100 Subject: [PATCH] remove .pdf socol --- .gitignore | 3 +- modules/colissimoetiquetage/CHANGELOG.md | 73 + modules/colissimoetiquetage/LICENCE.md | 18 + modules/colissimoetiquetage/README.md | 10 + .../classes/Colissimo_Autoload.php | 32 + .../classes/Colissimo_LaPoste.php | 284 + .../classes/Colissimo_LabelWebservice.php | 477 + .../classes/Colissimo_PDF.php | 142 + .../classes/Colissimo_Tools.php | 181 + modules/colissimoetiquetage/classes/index.php | 35 + .../colissimoetiquetage.php | 797 + .../admin/AdminColissimoPdfController.php | 170 + .../admin/AdminColissimoReturnController.php | 257 + .../admin/AdminColissimoSessionController.php | 449 + .../controllers/admin/index.php | 35 + .../colissimoetiquetage/controllers/index.php | 35 + modules/colissimoetiquetage/docs/index.php | 35 + .../colissimoetiquetage/docs/readme_fr.pdf | Bin 0 -> 204508 bytes .../colissimoetiquetage/download/index.php | 35 + modules/colissimoetiquetage/index.php | 35 + .../colissimoetiquetage/librairies/index.php | 35 + .../librairies/mpdf/.gitattributes | 2 + .../librairies/mpdf/CHANGELOG.txt | 3148 ++ .../librairies/mpdf/CREDITS.txt | 91 + .../librairies/mpdf/LICENSE.txt | 340 + .../librairies/mpdf/MpdfException.php | 6 + .../librairies/mpdf/README.md | 52 + .../librairies/mpdf/README.txt | 130 + .../librairies/mpdf/Tag.php | 6118 +++ .../librairies/mpdf/classes/barcode.php | 2102 + .../librairies/mpdf/classes/bmp.php | 260 + .../librairies/mpdf/classes/cssmgr.php | 2043 + .../librairies/mpdf/classes/directw.php | 463 + .../librairies/mpdf/classes/gif.php | 677 + .../librairies/mpdf/classes/grad.php | 975 + .../librairies/mpdf/classes/indic.php | 1864 + .../librairies/mpdf/classes/meter.php | 292 + .../librairies/mpdf/classes/mpdfform.php | 1746 + .../librairies/mpdf/classes/myanmar.php | 484 + .../librairies/mpdf/classes/otl.php | 6231 +++ .../librairies/mpdf/classes/otl_dump.php | 4288 +++ .../librairies/mpdf/classes/sea.php | 383 + .../librairies/mpdf/classes/svg.php | 3795 ++ .../librairies/mpdf/classes/tocontents.php | 778 + .../librairies/mpdf/classes/ttfontsuni.php | 4997 +++ .../mpdf/classes/ttfontsuni_analysis.php | 446 + .../librairies/mpdf/classes/ucdn.php | 2923 ++ .../librairies/mpdf/classes/wmf.php | 271 + .../collations/Afrikaans_South_Africa.php | 104 + .../mpdf/collations/Albanian_Albania.php | 110 + .../mpdf/collations/Alsatian_France.php | 104 + .../mpdf/collations/Arabic_Algeria.php | 67 + .../mpdf/collations/Arabic_Bahrain.php | 67 + .../mpdf/collations/Arabic_Egypt.php | 67 + .../mpdf/collations/Arabic_Iraq.php | 67 + .../mpdf/collations/Arabic_Jordan.php | 67 + .../mpdf/collations/Arabic_Kuwait.php | 67 + .../mpdf/collations/Arabic_Lebanon.php | 67 + .../mpdf/collations/Arabic_Libya.php | 67 + .../mpdf/collations/Arabic_Morocco.php | 67 + .../mpdf/collations/Arabic_Oman.php | 67 + .../mpdf/collations/Arabic_Pseudo_RTL.php | 67 + .../mpdf/collations/Arabic_Qatar.php | 67 + .../mpdf/collations/Arabic_Saudi_Arabia.php | 67 + .../mpdf/collations/Arabic_Syria.php | 67 + .../mpdf/collations/Arabic_Tunisia.php | 67 + .../mpdf/collations/Arabic_Yemen.php | 67 + .../Azeri_(Cyrillic)_Azerbaijan.php | 79 + .../collations/Azeri_(Latin)_Azerbaijan.php | 97 + .../mpdf/collations/Bashkir_Russia.php | 79 + .../mpdf/collations/Basque_Spain.php | 104 + .../mpdf/collations/Belarusian_Belarus.php | 79 + ...nian_(Cyrillic)_Bosnia_and_Herzegovina.php | 79 + ...Bosnian_(Latin)_Bosnia_and_Herzegovina.php | 106 + .../mpdf/collations/Breton_France.php | 104 + .../mpdf/collations/Bulgarian_Bulgaria.php | 79 + .../mpdf/collations/Catalan_Spain.php | 104 + .../mpdf/collations/Corsican_France.php | 104 + ...roatian_(Latin)_Bosnia_and_Herzegovina.php | 106 + .../mpdf/collations/Croatian_Croatia.php | 106 + .../mpdf/collations/Czech_Czech_Republic.php | 107 + .../mpdf/collations/Danish_Denmark.php | 101 + .../mpdf/collations/Dari_Afghanistan.php | 64 + .../mpdf/collations/Dutch_Belgium.php | 104 + .../mpdf/collations/Dutch_Netherlands.php | 104 + .../mpdf/collations/English_Australia.php | 104 + .../mpdf/collations/English_Belize.php | 104 + .../mpdf/collations/English_Canada.php | 104 + .../mpdf/collations/English_Caribbean.php | 104 + .../mpdf/collations/English_India.php | 104 + .../mpdf/collations/English_Ireland.php | 104 + .../mpdf/collations/English_Jamaica.php | 104 + .../mpdf/collations/English_Malaysia.php | 104 + .../mpdf/collations/English_New_Zealand.php | 104 + .../English_Republic_of_the_Philippines.php | 104 + .../mpdf/collations/English_Singapore.php | 104 + .../mpdf/collations/English_South_Africa.php | 104 + .../English_Trinidad_and_Tobago.php | 104 + .../collations/English_United_Kingdom.php | 103 + .../mpdf/collations/English_United_States.php | 103 + .../mpdf/collations/English_Zimbabwe.php | 104 + .../mpdf/collations/Estonian_Estonia.php | 93 + .../mpdf/collations/Faroese_Faroe_Islands.php | 104 + .../mpdf/collations/Filipino_Philippines.php | 104 + .../mpdf/collations/Finnish_Finland.php | 102 + .../mpdf/collations/French_Belgium.php | 104 + .../mpdf/collations/French_Canada.php | 104 + .../mpdf/collations/French_France.php | 104 + .../mpdf/collations/French_Luxembourg.php | 104 + .../French_Principality_of_Monaco.php | 104 + .../mpdf/collations/French_Switzerland.php | 104 + .../mpdf/collations/Frisian_Netherlands.php | 104 + .../mpdf/collations/Galician_Spain.php | 104 + .../mpdf/collations/German_Austria.php | 104 + .../mpdf/collations/German_Germany.php | 104 + .../mpdf/collations/German_Liechtenstein.php | 104 + .../mpdf/collations/German_Luxembourg.php | 104 + .../mpdf/collations/German_Switzerland.php | 104 + .../mpdf/collations/Greek_Greece.php | 74 + .../mpdf/collations/Greenlandic_Greenland.php | 101 + .../mpdf/collations/Hausa_(Latin)_Nigeria.php | 104 + .../mpdf/collations/Hebrew_Israel.php | 59 + .../mpdf/collations/Hungarian_Hungary.php | 70 + .../mpdf/collations/Icelandic_Iceland.php | 94 + .../mpdf/collations/Igbo_Nigeria.php | 104 + .../mpdf/collations/Indonesian_Indonesia.php | 104 + .../collations/Inuktitut_(Latin)_Canada.php | 104 + .../Invariant_Language_Invariant_Country.php | 104 + .../mpdf/collations/Irish_Ireland.php | 104 + .../mpdf/collations/Italian_Italy.php | 104 + .../mpdf/collations/Italian_Switzerland.php | 104 + .../mpdf/collations/Kinyarwanda_Rwanda.php | 104 + .../mpdf/collations/Kiswahili_Kenya.php | 104 + .../mpdf/collations/Kyrgyz_Kyrgyzstan.php | 79 + .../mpdf/collations/Latvian_Latvia.php | 87 + .../mpdf/collations/Lithuanian_Lithuania.php | 91 + .../mpdf/collations/Lower_Sorbian_Germany.php | 104 + .../collations/Luxembourgish_Luxembourg.php | 104 + .../Macedonian_(FYROM)_Macedonia_(FYROM).php | 78 + .../collations/Malay_Brunei_Darussalam.php | 104 + .../mpdf/collations/Malay_Malaysia.php | 104 + .../mpdf/collations/Mapudungun_Chile.php | 102 + .../mpdf/collations/Mohawk_Canada.php | 104 + .../Mongolian_(Cyrillic)_Mongolia.php | 79 + .../collations/Norwegian_(Nynorsk)_Norway.php | 101 + .../mpdf/collations/Occitan_France.php | 104 + .../mpdf/collations/Persian_Iran.php | 65 + .../mpdf/collations/Polish_Poland.php | 102 + .../mpdf/collations/Portuguese_Brazil.php | 104 + .../mpdf/collations/Portuguese_Portugal.php | 104 + .../mpdf/collations/Quechua_Bolivia.php | 104 + .../mpdf/collations/Quechua_Ecuador.php | 104 + .../mpdf/collations/Quechua_Peru.php | 104 + .../mpdf/collations/Romanian_Romania.php | 107 + .../mpdf/collations/Romansh_Switzerland.php | 86 + .../mpdf/collations/Russian_Russia.php | 79 + .../mpdf/collations/Sami_(Inari)_Finland.php | 94 + .../mpdf/collations/Sami_(Lule)_Norway.php | 94 + .../mpdf/collations/Sami_(Lule)_Sweden.php | 94 + .../collations/Sami_(Northern)_Finland.php | 94 + .../collations/Sami_(Northern)_Norway.php | 94 + .../collations/Sami_(Northern)_Sweden.php | 94 + .../mpdf/collations/Sami_(Skolt)_Finland.php | 94 + .../collations/Sami_(Southern)_Norway.php | 94 + .../collations/Sami_(Southern)_Sweden.php | 94 + ...bian_(Cyrillic)_Bosnia_and_Herzegovina.php | 79 + .../collations/Serbian_(Cyrillic)_Serbia.php | 79 + ...Serbian_(Latin)_Bosnia_and_Herzegovina.php | 106 + .../collations/Serbian_(Latin)_Serbia.php | 106 + .../Sesotho_sa_Leboa_South_Africa.php | 104 + .../mpdf/collations/Setswana_South_Africa.php | 104 + .../mpdf/collations/Slovak_Slovakia.php | 105 + .../mpdf/collations/Slovenian_Slovenia.php | 104 + .../mpdf/collations/Spanish_Argentina.php | 103 + .../mpdf/collations/Spanish_Bolivia.php | 103 + .../mpdf/collations/Spanish_Chile.php | 103 + .../mpdf/collations/Spanish_Colombia.php | 103 + .../mpdf/collations/Spanish_Costa_Rica.php | 103 + .../collations/Spanish_Dominican_Republic.php | 103 + .../mpdf/collations/Spanish_Ecuador.php | 103 + .../mpdf/collations/Spanish_El_Salvador.php | 103 + .../mpdf/collations/Spanish_Guatemala.php | 103 + .../mpdf/collations/Spanish_Honduras.php | 103 + .../mpdf/collations/Spanish_Mexico.php | 103 + .../mpdf/collations/Spanish_Nicaragua.php | 103 + .../mpdf/collations/Spanish_Panama.php | 103 + .../mpdf/collations/Spanish_Paraguay.php | 103 + .../mpdf/collations/Spanish_Peru.php | 103 + .../mpdf/collations/Spanish_Puerto_Rico.php | 103 + .../mpdf/collations/Spanish_Spain.php | 103 + .../mpdf/collations/Spanish_United_States.php | 104 + .../mpdf/collations/Spanish_Uruguay.php | 103 + .../mpdf/collations/Spanish_Venezuela.php | 103 + .../mpdf/collations/Swedish_Finland.php | 102 + .../mpdf/collations/Swedish_Sweden.php | 102 + .../Tajik_(Cyrillic)_Tajikistan.php | 79 + .../collations/Tamazight_(Latin)_Algeria.php | 104 + .../mpdf/collations/Tatar_Russia.php | 79 + .../mpdf/collations/Turkish_Turkey.php | 97 + .../mpdf/collations/Turkmen_Turkmenistan.php | 104 + .../mpdf/collations/Ukrainian_Ukraine.php | 78 + .../mpdf/collations/Upper_Sorbian_Germany.php | 102 + .../Urdu_Islamic_Republic_of_Pakistan.php | 66 + .../Uzbek_(Cyrillic)_Uzbekistan.php | 79 + .../collations/Uzbek_(Latin)_Uzbekistan.php | 102 + .../mpdf/collations/Vietnamese_Vietnam.php | 90 + .../mpdf/collations/Welsh_United_Kingdom.php | 104 + .../mpdf/collations/Wolof_Senegal.php | 104 + .../mpdf/collations/Yakut_Russia.php | 78 + .../mpdf/collations/Yoruba_Nigeria.php | 104 + .../mpdf/collations/isiXhosa_South_Africa.php | 104 + .../mpdf/collations/isiZulu_South_Africa.php | 104 + .../librairies/mpdf/composer.json | 52 + .../librairies/mpdf/composer.lock | 1176 + .../librairies/mpdf/compress.php | 172 + .../librairies/mpdf/config.php | 598 + .../mpdf/config_fonts-distr-without-OTL.php | 231 + .../librairies/mpdf/config_fonts.php | 312 + .../librairies/mpdf/config_lang2fonts.php | 513 + .../librairies/mpdf/config_script2lang.php | 124 + .../librairies/mpdf/font/ccourier.php | 9 + .../librairies/mpdf/font/ccourierb.php | 9 + .../librairies/mpdf/font/ccourierbi.php | 9 + .../librairies/mpdf/font/ccourieri.php | 9 + .../librairies/mpdf/font/chelvetica.php | 21 + .../librairies/mpdf/font/chelveticab.php | 21 + .../librairies/mpdf/font/chelveticabi.php | 21 + .../librairies/mpdf/font/chelveticai.php | 21 + .../librairies/mpdf/font/csymbol.php | 20 + .../librairies/mpdf/font/ctimes.php | 21 + .../librairies/mpdf/font/ctimesb.php | 21 + .../librairies/mpdf/font/ctimesbi.php | 21 + .../librairies/mpdf/font/ctimesi.php | 21 + .../librairies/mpdf/font/czapfdingbats.php | 20 + .../librairies/mpdf/graph.php | 858 + .../librairies/mpdf/graph_cache/.gitignore | 2 + .../mpdf/iccprofiles/SWOP2006_Coated5v2.icc | Bin 0 -> 2747744 bytes .../mpdf/iccprofiles/sRGB_IEC61966-2-1.icc | Bin 0 -> 3052 bytes .../librairies/mpdf/includes/CJKdata.php | 99 + .../librairies/mpdf/includes/functions.php | 169 + .../librairies/mpdf/includes/linebrdictK.dat | Bin 0 -> 1053144 bytes .../librairies/mpdf/includes/linebrdictL.dat | Bin 0 -> 126932 bytes .../librairies/mpdf/includes/linebrdictT.dat | Bin 0 -> 301751 bytes .../librairies/mpdf/includes/no_image.jpg | Bin 0 -> 7888 bytes .../librairies/mpdf/includes/out.php | 68 + .../librairies/mpdf/includes/subs_core.php | 452 + .../mpdf/includes/subs_win-1252.php | 306 + .../librairies/mpdf/includes/upperCase.php | 974 + .../librairies/mpdf/lang2fonts.css | 394 + .../librairies/mpdf/mpdf.css | 82 + .../librairies/mpdf/mpdf.php | 31551 ++++++++++++++++ .../mpdf/mpdfi/filters/FilterASCII85.php | 98 + .../mpdf/mpdfi/filters/FilterLZW.php | 154 + .../librairies/mpdf/mpdfi/fpdi_pdf_parser.php | 363 + .../librairies/mpdf/mpdfi/pdf_context.php | 78 + .../librairies/mpdf/mpdfi/pdf_parser.php | 690 + .../librairies/mpdf/patterns/NOTES.txt | 5 + .../librairies/mpdf/patterns/de.php | 7 + .../librairies/mpdf/patterns/dictionary.txt | 1 + .../librairies/mpdf/patterns/en.php | 7 + .../librairies/mpdf/patterns/es.php | 9 + .../librairies/mpdf/patterns/fi.php | 7 + .../librairies/mpdf/patterns/fr.php | 10 + .../librairies/mpdf/patterns/it.php | 9 + .../librairies/mpdf/patterns/nl.php | 9 + .../librairies/mpdf/patterns/pl.php | 7 + .../librairies/mpdf/patterns/ru.php | 10 + .../librairies/mpdf/patterns/sv.php | 10 + .../librairies/mpdf/phpunit.xml | 19 + .../librairies/mpdf/progbar.css | 66 + .../librairies/mpdf/qrcode/_LGPL.txt | 165 + .../librairies/mpdf/qrcode/_lisez_moi.txt | 49 + .../librairies/mpdf/qrcode/data/modele1.dat | Bin 0 -> 841 bytes .../librairies/mpdf/qrcode/data/modele10.dat | Bin 0 -> 4225 bytes .../librairies/mpdf/qrcode/data/modele11.dat | Bin 0 -> 4761 bytes .../librairies/mpdf/qrcode/data/modele12.dat | Bin 0 -> 5329 bytes .../librairies/mpdf/qrcode/data/modele13.dat | Bin 0 -> 5929 bytes .../librairies/mpdf/qrcode/data/modele14.dat | Bin 0 -> 6561 bytes .../librairies/mpdf/qrcode/data/modele15.dat | Bin 0 -> 7225 bytes .../librairies/mpdf/qrcode/data/modele16.dat | Bin 0 -> 7921 bytes .../librairies/mpdf/qrcode/data/modele17.dat | Bin 0 -> 8649 bytes .../librairies/mpdf/qrcode/data/modele18.dat | Bin 0 -> 9409 bytes .../librairies/mpdf/qrcode/data/modele19.dat | Bin 0 -> 10201 bytes .../librairies/mpdf/qrcode/data/modele2.dat | Bin 0 -> 1089 bytes .../librairies/mpdf/qrcode/data/modele20.dat | Bin 0 -> 11025 bytes .../librairies/mpdf/qrcode/data/modele21.dat | Bin 0 -> 11881 bytes .../librairies/mpdf/qrcode/data/modele22.dat | Bin 0 -> 12769 bytes .../librairies/mpdf/qrcode/data/modele23.dat | Bin 0 -> 13689 bytes .../librairies/mpdf/qrcode/data/modele24.dat | Bin 0 -> 14641 bytes .../librairies/mpdf/qrcode/data/modele25.dat | Bin 0 -> 15625 bytes .../librairies/mpdf/qrcode/data/modele26.dat | Bin 0 -> 16641 bytes .../librairies/mpdf/qrcode/data/modele27.dat | Bin 0 -> 17689 bytes .../librairies/mpdf/qrcode/data/modele28.dat | Bin 0 -> 18769 bytes .../librairies/mpdf/qrcode/data/modele29.dat | Bin 0 -> 19881 bytes .../librairies/mpdf/qrcode/data/modele3.dat | Bin 0 -> 1369 bytes .../librairies/mpdf/qrcode/data/modele30.dat | Bin 0 -> 21025 bytes .../librairies/mpdf/qrcode/data/modele31.dat | Bin 0 -> 22201 bytes .../librairies/mpdf/qrcode/data/modele32.dat | Bin 0 -> 23409 bytes .../librairies/mpdf/qrcode/data/modele33.dat | Bin 0 -> 24649 bytes .../librairies/mpdf/qrcode/data/modele34.dat | Bin 0 -> 25921 bytes .../librairies/mpdf/qrcode/data/modele35.dat | Bin 0 -> 27225 bytes .../librairies/mpdf/qrcode/data/modele36.dat | Bin 0 -> 28561 bytes .../librairies/mpdf/qrcode/data/modele37.dat | Bin 0 -> 29929 bytes .../librairies/mpdf/qrcode/data/modele38.dat | Bin 0 -> 31329 bytes .../librairies/mpdf/qrcode/data/modele39.dat | Bin 0 -> 32761 bytes .../librairies/mpdf/qrcode/data/modele4.dat | Bin 0 -> 1681 bytes .../librairies/mpdf/qrcode/data/modele40.dat | Bin 0 -> 34225 bytes .../librairies/mpdf/qrcode/data/modele5.dat | Bin 0 -> 2025 bytes .../librairies/mpdf/qrcode/data/modele6.dat | Bin 0 -> 2401 bytes .../librairies/mpdf/qrcode/data/modele7.dat | Bin 0 -> 2809 bytes .../librairies/mpdf/qrcode/data/modele8.dat | Bin 0 -> 3249 bytes .../librairies/mpdf/qrcode/data/modele9.dat | Bin 0 -> 3721 bytes .../librairies/mpdf/qrcode/data/qrv10_0.dat | Bin 0 -> 8340 bytes .../librairies/mpdf/qrcode/data/qrv10_1.dat | Bin 0 -> 8339 bytes .../librairies/mpdf/qrcode/data/qrv10_2.dat | Bin 0 -> 8343 bytes .../librairies/mpdf/qrcode/data/qrv10_3.dat | Bin 0 -> 8343 bytes .../librairies/mpdf/qrcode/data/qrv11_0.dat | Bin 0 -> 9732 bytes .../librairies/mpdf/qrcode/data/qrv11_1.dat | Bin 0 -> 9731 bytes .../librairies/mpdf/qrcode/data/qrv11_2.dat | Bin 0 -> 9738 bytes .../librairies/mpdf/qrcode/data/qrv11_3.dat | Bin 0 -> 9735 bytes .../librairies/mpdf/qrcode/data/qrv12_0.dat | Bin 0 -> 11223 bytes .../librairies/mpdf/qrcode/data/qrv12_1.dat | Bin 0 -> 11219 bytes .../librairies/mpdf/qrcode/data/qrv12_2.dat | Bin 0 -> 11226 bytes .../librairies/mpdf/qrcode/data/qrv12_3.dat | Bin 0 -> 11225 bytes .../librairies/mpdf/qrcode/data/qrv13_0.dat | Bin 0 -> 12808 bytes .../librairies/mpdf/qrcode/data/qrv13_1.dat | Bin 0 -> 12803 bytes .../librairies/mpdf/qrcode/data/qrv13_2.dat | Bin 0 -> 12815 bytes .../librairies/mpdf/qrcode/data/qrv13_3.dat | Bin 0 -> 12811 bytes .../librairies/mpdf/qrcode/data/qrv14_0.dat | Bin 0 -> 13993 bytes .../librairies/mpdf/qrcode/data/qrv14_1.dat | Bin 0 -> 13988 bytes .../librairies/mpdf/qrcode/data/qrv14_2.dat | Bin 0 -> 14000 bytes .../librairies/mpdf/qrcode/data/qrv14_3.dat | Bin 0 -> 14000 bytes .../librairies/mpdf/qrcode/data/qrv15_0.dat | Bin 0 -> 15770 bytes .../librairies/mpdf/qrcode/data/qrv15_1.dat | Bin 0 -> 15766 bytes .../librairies/mpdf/qrcode/data/qrv15_2.dat | Bin 0 -> 15778 bytes .../librairies/mpdf/qrcode/data/qrv15_3.dat | Bin 0 -> 15772 bytes .../librairies/mpdf/qrcode/data/qrv16_0.dat | Bin 0 -> 17642 bytes .../librairies/mpdf/qrcode/data/qrv16_1.dat | Bin 0 -> 17638 bytes .../librairies/mpdf/qrcode/data/qrv16_2.dat | Bin 0 -> 17648 bytes .../librairies/mpdf/qrcode/data/qrv16_3.dat | Bin 0 -> 17649 bytes .../librairies/mpdf/qrcode/data/qrv17_0.dat | Bin 0 -> 19611 bytes .../librairies/mpdf/qrcode/data/qrv17_1.dat | Bin 0 -> 19606 bytes .../librairies/mpdf/qrcode/data/qrv17_2.dat | Bin 0 -> 19619 bytes .../librairies/mpdf/qrcode/data/qrv17_3.dat | Bin 0 -> 19616 bytes .../librairies/mpdf/qrcode/data/qrv18_0.dat | Bin 0 -> 21677 bytes .../librairies/mpdf/qrcode/data/qrv18_1.dat | Bin 0 -> 21670 bytes .../librairies/mpdf/qrcode/data/qrv18_2.dat | Bin 0 -> 21685 bytes .../librairies/mpdf/qrcode/data/qrv18_3.dat | Bin 0 -> 21682 bytes .../librairies/mpdf/qrcode/data/qrv19_0.dat | Bin 0 -> 23838 bytes .../librairies/mpdf/qrcode/data/qrv19_1.dat | Bin 0 -> 23831 bytes .../librairies/mpdf/qrcode/data/qrv19_2.dat | Bin 0 -> 23849 bytes .../librairies/mpdf/qrcode/data/qrv19_3.dat | Bin 0 -> 23845 bytes .../librairies/mpdf/qrcode/data/qrv1_0.dat | Bin 0 -> 656 bytes .../librairies/mpdf/qrcode/data/qrv1_1.dat | Bin 0 -> 656 bytes .../librairies/mpdf/qrcode/data/qrv1_2.dat | Bin 0 -> 656 bytes .../librairies/mpdf/qrcode/data/qrv1_3.dat | Bin 0 -> 656 bytes .../librairies/mpdf/qrcode/data/qrv20_0.dat | Bin 0 -> 26096 bytes .../librairies/mpdf/qrcode/data/qrv20_1.dat | Bin 0 -> 26088 bytes .../librairies/mpdf/qrcode/data/qrv20_2.dat | Bin 0 -> 26105 bytes .../librairies/mpdf/qrcode/data/qrv20_3.dat | Bin 0 -> 26100 bytes .../librairies/mpdf/qrcode/data/qrv21_0.dat | Bin 0 -> 27804 bytes .../librairies/mpdf/qrcode/data/qrv21_1.dat | Bin 0 -> 27795 bytes .../librairies/mpdf/qrcode/data/qrv21_2.dat | Bin 0 -> 27812 bytes .../librairies/mpdf/qrcode/data/qrv21_3.dat | Bin 0 -> 27810 bytes .../librairies/mpdf/qrcode/data/qrv22_0.dat | Bin 0 -> 30252 bytes .../librairies/mpdf/qrcode/data/qrv22_1.dat | 209 + .../librairies/mpdf/qrcode/data/qrv22_2.dat | Bin 0 -> 30269 bytes .../librairies/mpdf/qrcode/data/qrv22_3.dat | Bin 0 -> 30258 bytes .../librairies/mpdf/qrcode/data/qrv23_0.dat | Bin 0 -> 32797 bytes .../librairies/mpdf/qrcode/data/qrv23_1.dat | 217 + .../librairies/mpdf/qrcode/data/qrv23_2.dat | Bin 0 -> 32809 bytes .../librairies/mpdf/qrcode/data/qrv23_3.dat | Bin 0 -> 32804 bytes .../librairies/mpdf/qrcode/data/qrv24_0.dat | Bin 0 -> 35439 bytes .../librairies/mpdf/qrcode/data/qrv24_1.dat | 225 + .../librairies/mpdf/qrcode/data/qrv24_2.dat | Bin 0 -> 35451 bytes .../librairies/mpdf/qrcode/data/qrv24_3.dat | Bin 0 -> 35446 bytes .../librairies/mpdf/qrcode/data/qrv25_0.dat | 233 + .../librairies/mpdf/qrcode/data/qrv25_1.dat | 233 + .../librairies/mpdf/qrcode/data/qrv25_2.dat | Bin 0 -> 38190 bytes .../librairies/mpdf/qrcode/data/qrv25_3.dat | Bin 0 -> 38184 bytes .../librairies/mpdf/qrcode/data/qrv26_0.dat | 241 + .../librairies/mpdf/qrcode/data/qrv26_1.dat | 241 + .../librairies/mpdf/qrcode/data/qrv26_2.dat | Bin 0 -> 41024 bytes .../librairies/mpdf/qrcode/data/qrv26_3.dat | 241 + .../librairies/mpdf/qrcode/data/qrv27_0.dat | 249 + .../librairies/mpdf/qrcode/data/qrv27_1.dat | 249 + .../librairies/mpdf/qrcode/data/qrv27_2.dat | 249 + .../librairies/mpdf/qrcode/data/qrv27_3.dat | 249 + .../librairies/mpdf/qrcode/data/qrv28_0.dat | 257 + .../librairies/mpdf/qrcode/data/qrv28_1.dat | 257 + .../librairies/mpdf/qrcode/data/qrv28_2.dat | 257 + .../librairies/mpdf/qrcode/data/qrv28_3.dat | 257 + .../librairies/mpdf/qrcode/data/qrv29_0.dat | 265 + .../librairies/mpdf/qrcode/data/qrv29_1.dat | 265 + .../librairies/mpdf/qrcode/data/qrv29_2.dat | 265 + .../librairies/mpdf/qrcode/data/qrv29_3.dat | 265 + .../librairies/mpdf/qrcode/data/qrv2_0.dat | Bin 0 -> 1109 bytes .../librairies/mpdf/qrcode/data/qrv2_1.dat | Bin 0 -> 1109 bytes .../librairies/mpdf/qrcode/data/qrv2_2.dat | Bin 0 -> 1109 bytes .../librairies/mpdf/qrcode/data/qrv2_3.dat | Bin 0 -> 1109 bytes .../librairies/mpdf/qrcode/data/qrv30_0.dat | 273 + .../librairies/mpdf/qrcode/data/qrv30_1.dat | 273 + .../librairies/mpdf/qrcode/data/qrv30_2.dat | 273 + .../librairies/mpdf/qrcode/data/qrv30_3.dat | 273 + .../librairies/mpdf/qrcode/data/qrv31_0.dat | 281 + .../librairies/mpdf/qrcode/data/qrv31_1.dat | 281 + .../librairies/mpdf/qrcode/data/qrv31_2.dat | 281 + .../librairies/mpdf/qrcode/data/qrv31_3.dat | 281 + .../librairies/mpdf/qrcode/data/qrv32_0.dat | 289 + .../librairies/mpdf/qrcode/data/qrv32_1.dat | 289 + .../librairies/mpdf/qrcode/data/qrv32_2.dat | 289 + .../librairies/mpdf/qrcode/data/qrv32_3.dat | 289 + .../librairies/mpdf/qrcode/data/qrv33_0.dat | 297 + .../librairies/mpdf/qrcode/data/qrv33_1.dat | 297 + .../librairies/mpdf/qrcode/data/qrv33_2.dat | 297 + .../librairies/mpdf/qrcode/data/qrv33_3.dat | 297 + .../librairies/mpdf/qrcode/data/qrv34_0.dat | 305 + .../librairies/mpdf/qrcode/data/qrv34_1.dat | 305 + .../librairies/mpdf/qrcode/data/qrv34_2.dat | 305 + .../librairies/mpdf/qrcode/data/qrv34_3.dat | 305 + .../librairies/mpdf/qrcode/data/qrv35_0.dat | 313 + .../librairies/mpdf/qrcode/data/qrv35_1.dat | 313 + .../librairies/mpdf/qrcode/data/qrv35_2.dat | 313 + .../librairies/mpdf/qrcode/data/qrv35_3.dat | 313 + .../librairies/mpdf/qrcode/data/qrv36_0.dat | 321 + .../librairies/mpdf/qrcode/data/qrv36_1.dat | 321 + .../librairies/mpdf/qrcode/data/qrv36_2.dat | 321 + .../librairies/mpdf/qrcode/data/qrv36_3.dat | 321 + .../librairies/mpdf/qrcode/data/qrv37_0.dat | 329 + .../librairies/mpdf/qrcode/data/qrv37_1.dat | 329 + .../librairies/mpdf/qrcode/data/qrv37_2.dat | 329 + .../librairies/mpdf/qrcode/data/qrv37_3.dat | 329 + .../librairies/mpdf/qrcode/data/qrv38_0.dat | 337 + .../librairies/mpdf/qrcode/data/qrv38_1.dat | 337 + .../librairies/mpdf/qrcode/data/qrv38_2.dat | 337 + .../librairies/mpdf/qrcode/data/qrv38_3.dat | 337 + .../librairies/mpdf/qrcode/data/qrv39_0.dat | 345 + .../librairies/mpdf/qrcode/data/qrv39_1.dat | 345 + .../librairies/mpdf/qrcode/data/qrv39_2.dat | 345 + .../librairies/mpdf/qrcode/data/qrv39_3.dat | 345 + .../librairies/mpdf/qrcode/data/qrv3_0.dat | Bin 0 -> 1733 bytes .../librairies/mpdf/qrcode/data/qrv3_1.dat | Bin 0 -> 1733 bytes .../librairies/mpdf/qrcode/data/qrv3_2.dat | Bin 0 -> 1734 bytes .../librairies/mpdf/qrcode/data/qrv3_3.dat | Bin 0 -> 1734 bytes .../librairies/mpdf/qrcode/data/qrv40_0.dat | 353 + .../librairies/mpdf/qrcode/data/qrv40_1.dat | 353 + .../librairies/mpdf/qrcode/data/qrv40_2.dat | 353 + .../librairies/mpdf/qrcode/data/qrv40_3.dat | 353 + .../librairies/mpdf/qrcode/data/qrv4_0.dat | Bin 0 -> 2454 bytes .../librairies/mpdf/qrcode/data/qrv4_1.dat | Bin 0 -> 2453 bytes .../librairies/mpdf/qrcode/data/qrv4_2.dat | Bin 0 -> 2456 bytes .../librairies/mpdf/qrcode/data/qrv4_3.dat | Bin 0 -> 2454 bytes .../librairies/mpdf/qrcode/data/qrv5_0.dat | Bin 0 -> 3270 bytes .../librairies/mpdf/qrcode/data/qrv5_1.dat | Bin 0 -> 3269 bytes .../librairies/mpdf/qrcode/data/qrv5_2.dat | Bin 0 -> 3272 bytes .../librairies/mpdf/qrcode/data/qrv5_3.dat | Bin 0 -> 3272 bytes .../librairies/mpdf/qrcode/data/qrv6_0.dat | Bin 0 -> 4184 bytes .../librairies/mpdf/qrcode/data/qrv6_1.dat | Bin 0 -> 4182 bytes .../librairies/mpdf/qrcode/data/qrv6_2.dat | Bin 0 -> 4184 bytes .../librairies/mpdf/qrcode/data/qrv6_3.dat | Bin 0 -> 4184 bytes .../librairies/mpdf/qrcode/data/qrv7_0.dat | Bin 0 -> 4739 bytes .../librairies/mpdf/qrcode/data/qrv7_1.dat | Bin 0 -> 4737 bytes .../librairies/mpdf/qrcode/data/qrv7_2.dat | Bin 0 -> 4740 bytes .../librairies/mpdf/qrcode/data/qrv7_3.dat | Bin 0 -> 4741 bytes .../librairies/mpdf/qrcode/data/qrv8_0.dat | Bin 0 -> 5843 bytes .../librairies/mpdf/qrcode/data/qrv8_1.dat | Bin 0 -> 5841 bytes .../librairies/mpdf/qrcode/data/qrv8_2.dat | Bin 0 -> 5845 bytes .../librairies/mpdf/qrcode/data/qrv8_3.dat | Bin 0 -> 5845 bytes .../librairies/mpdf/qrcode/data/qrv9_0.dat | Bin 0 -> 7044 bytes .../librairies/mpdf/qrcode/data/qrv9_1.dat | Bin 0 -> 7041 bytes .../librairies/mpdf/qrcode/data/qrv9_2.dat | Bin 0 -> 7047 bytes .../librairies/mpdf/qrcode/data/qrv9_3.dat | Bin 0 -> 7047 bytes .../librairies/mpdf/qrcode/data/qrvfr1.dat | 21 + .../librairies/mpdf/qrcode/data/qrvfr10.dat | 57 + .../librairies/mpdf/qrcode/data/qrvfr11.dat | 61 + .../librairies/mpdf/qrcode/data/qrvfr12.dat | 65 + .../librairies/mpdf/qrcode/data/qrvfr13.dat | 69 + .../librairies/mpdf/qrcode/data/qrvfr14.dat | 73 + .../librairies/mpdf/qrcode/data/qrvfr15.dat | 77 + .../librairies/mpdf/qrcode/data/qrvfr16.dat | 81 + .../librairies/mpdf/qrcode/data/qrvfr17.dat | 85 + .../librairies/mpdf/qrcode/data/qrvfr18.dat | 89 + .../librairies/mpdf/qrcode/data/qrvfr19.dat | 93 + .../librairies/mpdf/qrcode/data/qrvfr2.dat | 25 + .../librairies/mpdf/qrcode/data/qrvfr20.dat | 97 + .../librairies/mpdf/qrcode/data/qrvfr21.dat | 101 + .../librairies/mpdf/qrcode/data/qrvfr22.dat | 105 + .../librairies/mpdf/qrcode/data/qrvfr23.dat | 109 + .../librairies/mpdf/qrcode/data/qrvfr24.dat | 113 + .../librairies/mpdf/qrcode/data/qrvfr25.dat | 117 + .../librairies/mpdf/qrcode/data/qrvfr26.dat | 121 + .../librairies/mpdf/qrcode/data/qrvfr27.dat | 125 + .../librairies/mpdf/qrcode/data/qrvfr28.dat | 129 + .../librairies/mpdf/qrcode/data/qrvfr29.dat | 133 + .../librairies/mpdf/qrcode/data/qrvfr3.dat | 29 + .../librairies/mpdf/qrcode/data/qrvfr30.dat | 137 + .../librairies/mpdf/qrcode/data/qrvfr31.dat | 141 + .../librairies/mpdf/qrcode/data/qrvfr32.dat | 145 + .../librairies/mpdf/qrcode/data/qrvfr33.dat | 149 + .../librairies/mpdf/qrcode/data/qrvfr34.dat | 153 + .../librairies/mpdf/qrcode/data/qrvfr35.dat | 157 + .../librairies/mpdf/qrcode/data/qrvfr36.dat | 161 + .../librairies/mpdf/qrcode/data/qrvfr37.dat | 165 + .../librairies/mpdf/qrcode/data/qrvfr38.dat | 169 + .../librairies/mpdf/qrcode/data/qrvfr39.dat | 173 + .../librairies/mpdf/qrcode/data/qrvfr4.dat | 33 + .../librairies/mpdf/qrcode/data/qrvfr40.dat | 177 + .../librairies/mpdf/qrcode/data/qrvfr5.dat | 37 + .../librairies/mpdf/qrcode/data/qrvfr6.dat | 41 + .../librairies/mpdf/qrcode/data/qrvfr7.dat | 45 + .../librairies/mpdf/qrcode/data/qrvfr8.dat | 49 + .../librairies/mpdf/qrcode/data/qrvfr9.dat | 53 + .../librairies/mpdf/qrcode/data/rsc10.dat | 11 + .../librairies/mpdf/qrcode/data/rsc13.dat | 14 + .../librairies/mpdf/qrcode/data/rsc15.dat | 17 + .../librairies/mpdf/qrcode/data/rsc16.dat | 17 + .../librairies/mpdf/qrcode/data/rsc17.dat | 18 + .../librairies/mpdf/qrcode/data/rsc18.dat | 19 + .../librairies/mpdf/qrcode/data/rsc20.dat | 21 + .../librairies/mpdf/qrcode/data/rsc22.dat | 23 + .../librairies/mpdf/qrcode/data/rsc24.dat | 25 + .../librairies/mpdf/qrcode/data/rsc26.dat | 27 + .../librairies/mpdf/qrcode/data/rsc28.dat | 29 + .../librairies/mpdf/qrcode/data/rsc30.dat | 31 + .../librairies/mpdf/qrcode/data/rsc32.dat | 33 + .../librairies/mpdf/qrcode/data/rsc34.dat | 36 + .../librairies/mpdf/qrcode/data/rsc36.dat | 73 + .../librairies/mpdf/qrcode/data/rsc40.dat | 41 + .../librairies/mpdf/qrcode/data/rsc42.dat | 43 + .../librairies/mpdf/qrcode/data/rsc44.dat | 45 + .../librairies/mpdf/qrcode/data/rsc46.dat | 47 + .../librairies/mpdf/qrcode/data/rsc48.dat | 49 + .../librairies/mpdf/qrcode/data/rsc50.dat | 51 + .../librairies/mpdf/qrcode/data/rsc52.dat | 106 + .../librairies/mpdf/qrcode/data/rsc54.dat | 55 + .../librairies/mpdf/qrcode/data/rsc56.dat | 57 + .../librairies/mpdf/qrcode/data/rsc58.dat | 59 + .../librairies/mpdf/qrcode/data/rsc60.dat | 61 + .../librairies/mpdf/qrcode/data/rsc62.dat | 63 + .../librairies/mpdf/qrcode/data/rsc64.dat | 66 + .../librairies/mpdf/qrcode/data/rsc66.dat | 68 + .../librairies/mpdf/qrcode/data/rsc68.dat | 69 + .../librairies/mpdf/qrcode/data/rsc7.dat | 8 + .../librairies/mpdf/qrcode/image.php | 13 + .../librairies/mpdf/qrcode/index.php | 68 + .../librairies/mpdf/qrcode/qrcode.class.php | 672 + .../librairies/mpdf/tests/MPDITest.php | 548 + .../librairies/mpdf/tests/WriteHtmlTest.php | 71 + .../librairies/mpdf/tests/bootstrap.php | 19 + .../mpdf/tests/data/pdfs/2-Page-PDF_1_4.pdf | Bin 0 -> 22894 bytes .../librairies/mpdf/tests/mPDFTest.php | 26 + .../librairies/mpdf/tmp/.gitignore | 2 + .../librairies/mpdf/ttfontdata/.gitignore | 2 + .../mpdf/ttfonts/DejaVuSans-Bold.ttf | Bin 0 -> 693876 bytes .../mpdf/ttfonts/DejaVuSans-BoldOblique.ttf | Bin 0 -> 632168 bytes .../mpdf/ttfonts/DejaVuSans-Oblique.ttf | Bin 0 -> 632416 bytes .../librairies/mpdf/ttfonts/DejaVuSans.ttf | Bin 0 -> 741536 bytes .../mpdf/ttfonts/DejaVuSansCondensed-Bold.ttf | Bin 0 -> 653336 bytes .../DejaVuSansCondensed-BoldOblique.ttf | Bin 0 -> 600936 bytes .../ttfonts/DejaVuSansCondensed-Oblique.ttf | Bin 0 -> 596596 bytes .../mpdf/ttfonts/DejaVuSansCondensed.ttf | Bin 0 -> 664972 bytes .../librairies/mpdf/ttfonts/DejaVuinfo.txt | 99 + .../librairies/mpdf/utils/UnicodeData.txt | 21488 +++++++++++ .../librairies/mpdf/utils/UnicodeRanges.php | 216 + .../mpdf/utils/font_collections.php | 70 + .../librairies/mpdf/utils/font_coverage.php | 249 + .../librairies/mpdf/utils/font_dump.php | 232 + .../librairies/mpdf/utils/font_dump_OTL.php | 234 + .../librairies/mpdf/utils/font_names.php | 212 + .../librairies/mpdf/utils/image_details.php | 520 + .../librairies/mpdf/utils/index.php | 29 + .../librairies/mpdf/vendor/autoload.php | 7 + .../mpdf/vendor/composer/ClassLoader.php | 413 + .../librairies/mpdf/vendor/composer/LICENSE | 21 + .../vendor/composer/autoload_classmap.php | 41 + .../vendor/composer/autoload_namespaces.php | 9 + .../mpdf/vendor/composer/autoload_psr4.php | 9 + .../mpdf/vendor/composer/autoload_real.php | 45 + .../mpdf/vendor/composer/installed.json | 53 + .../mpdf/vendor/setasign/fpdi/LICENSE | 21 + .../mpdf/vendor/setasign/fpdi/README.md | 87 + .../mpdf/vendor/setasign/fpdi/composer.json | 30 + .../setasign/fpdi/filters/FilterASCII85.php | 106 + .../fpdi/filters/FilterASCIIHexDecode.php | 43 + .../setasign/fpdi/filters/FilterLZW.php | 164 + .../mpdf/vendor/setasign/fpdi/fpdf_tpl.php | 548 + .../mpdf/vendor/setasign/fpdi/fpdi.php | 693 + .../mpdf/vendor/setasign/fpdi/fpdi_bridge.php | 206 + .../vendor/setasign/fpdi/fpdi_pdf_parser.php | 347 + .../mpdf/vendor/setasign/fpdi/pdf_context.php | 144 + .../mpdf/vendor/setasign/fpdi/pdf_parser.php | 925 + modules/colissimoetiquetage/logo.png | Bin 0 -> 7185 bytes .../models/ColissimoLabelModel.php | 116 + .../models/ColissimoReturnModel.php | 93 + .../models/ColissimoSessionModel.php | 113 + modules/colissimoetiquetage/models/index.php | 35 + modules/colissimoetiquetage/pdf/bordereau.tpl | 78 + modules/colissimoetiquetage/pdf/index.php | 35 + .../colissimoetiquetage/translations/fr.php | 167 + .../translations/index.php | 35 + modules/colissimoetiquetage/upgrade/index.php | 35 + .../upgrade/upgrade-1.3.0.php | 55 + .../upgrade/upgrade-1.5.0.php | 102 + .../upgrade/upgrade-1.5.1.php | 47 + .../upgrade/upgrade-2.0.0.php | 47 + .../upgrade/upgrade-2.0.2.php | 40 + .../upgrade/upgrade-2.2.0.php | 40 + .../views/css/colissimoetiquetage.css | 44 + .../colissimoetiquetage/views/css/index.php | 35 + .../colissimoetiquetage/views/img/index.php | 35 + .../colissimoetiquetage/views/img/loader.gif | Bin 0 -> 59428 bytes .../views/img/logo-colissimo.png | Bin 0 -> 13278 bytes modules/colissimoetiquetage/views/index.php | 35 + .../views/js/colissimo_config.js | 93 + .../views/js/colissimo_order.js | 112 + .../views/js/colissimo_return.js | 25 + .../views/js/colissimo_session.js | 247 + .../colissimoetiquetage/views/js/index.php | 35 + .../templates/admin/_print_pdf_icon-15.tpl | 43 + .../templates/admin/_print_pdf_icon-16.tpl | 50 + .../views/templates/admin/add_order_15.tpl | 94 + .../views/templates/admin/add_order_16.tpl | 93 + .../views/templates/admin/index.php | 35 + .../views/templates/hook/admin-order.tpl | 130 + .../templates/hook/configuration_infos.tpl | 36 + .../hook/configuration_navigation.tpl | 88 + .../views/templates/hook/index.php | 35 + .../templates/hook/order-shipping-content.tpl | 125 + .../templates/hook/order-shipping-tab.tpl | 23 + .../views/templates/index.php | 35 + 630 files changed, 158925 insertions(+), 1 deletion(-) create mode 100644 modules/colissimoetiquetage/CHANGELOG.md create mode 100644 modules/colissimoetiquetage/LICENCE.md create mode 100644 modules/colissimoetiquetage/README.md create mode 100644 modules/colissimoetiquetage/classes/Colissimo_Autoload.php create mode 100644 modules/colissimoetiquetage/classes/Colissimo_LaPoste.php create mode 100644 modules/colissimoetiquetage/classes/Colissimo_LabelWebservice.php create mode 100644 modules/colissimoetiquetage/classes/Colissimo_PDF.php create mode 100644 modules/colissimoetiquetage/classes/Colissimo_Tools.php create mode 100644 modules/colissimoetiquetage/classes/index.php create mode 100644 modules/colissimoetiquetage/colissimoetiquetage.php create mode 100644 modules/colissimoetiquetage/controllers/admin/AdminColissimoPdfController.php create mode 100644 modules/colissimoetiquetage/controllers/admin/AdminColissimoReturnController.php create mode 100644 modules/colissimoetiquetage/controllers/admin/AdminColissimoSessionController.php create mode 100644 modules/colissimoetiquetage/controllers/admin/index.php create mode 100644 modules/colissimoetiquetage/controllers/index.php create mode 100644 modules/colissimoetiquetage/docs/index.php create mode 100644 modules/colissimoetiquetage/docs/readme_fr.pdf create mode 100644 modules/colissimoetiquetage/download/index.php create mode 100644 modules/colissimoetiquetage/index.php create mode 100644 modules/colissimoetiquetage/librairies/index.php create mode 100644 modules/colissimoetiquetage/librairies/mpdf/.gitattributes create mode 100644 modules/colissimoetiquetage/librairies/mpdf/CHANGELOG.txt create mode 100644 modules/colissimoetiquetage/librairies/mpdf/CREDITS.txt create mode 100644 modules/colissimoetiquetage/librairies/mpdf/LICENSE.txt create mode 100644 modules/colissimoetiquetage/librairies/mpdf/MpdfException.php create mode 100644 modules/colissimoetiquetage/librairies/mpdf/README.md create mode 100644 modules/colissimoetiquetage/librairies/mpdf/README.txt create mode 100644 modules/colissimoetiquetage/librairies/mpdf/Tag.php create mode 100644 modules/colissimoetiquetage/librairies/mpdf/classes/barcode.php create mode 100644 modules/colissimoetiquetage/librairies/mpdf/classes/bmp.php create mode 100644 modules/colissimoetiquetage/librairies/mpdf/classes/cssmgr.php create mode 100644 modules/colissimoetiquetage/librairies/mpdf/classes/directw.php create mode 100644 modules/colissimoetiquetage/librairies/mpdf/classes/gif.php create mode 100644 modules/colissimoetiquetage/librairies/mpdf/classes/grad.php create mode 100644 modules/colissimoetiquetage/librairies/mpdf/classes/indic.php create mode 100644 modules/colissimoetiquetage/librairies/mpdf/classes/meter.php create mode 100644 modules/colissimoetiquetage/librairies/mpdf/classes/mpdfform.php create mode 100644 modules/colissimoetiquetage/librairies/mpdf/classes/myanmar.php create mode 100644 modules/colissimoetiquetage/librairies/mpdf/classes/otl.php create mode 100644 modules/colissimoetiquetage/librairies/mpdf/classes/otl_dump.php create mode 100644 modules/colissimoetiquetage/librairies/mpdf/classes/sea.php create mode 100644 modules/colissimoetiquetage/librairies/mpdf/classes/svg.php create mode 100644 modules/colissimoetiquetage/librairies/mpdf/classes/tocontents.php create mode 100644 modules/colissimoetiquetage/librairies/mpdf/classes/ttfontsuni.php create mode 100644 modules/colissimoetiquetage/librairies/mpdf/classes/ttfontsuni_analysis.php create mode 100644 modules/colissimoetiquetage/librairies/mpdf/classes/ucdn.php create mode 100644 modules/colissimoetiquetage/librairies/mpdf/classes/wmf.php create mode 100644 modules/colissimoetiquetage/librairies/mpdf/collations/Afrikaans_South_Africa.php create mode 100644 modules/colissimoetiquetage/librairies/mpdf/collations/Albanian_Albania.php create mode 100644 modules/colissimoetiquetage/librairies/mpdf/collations/Alsatian_France.php create mode 100644 modules/colissimoetiquetage/librairies/mpdf/collations/Arabic_Algeria.php create mode 100644 modules/colissimoetiquetage/librairies/mpdf/collations/Arabic_Bahrain.php create mode 100644 modules/colissimoetiquetage/librairies/mpdf/collations/Arabic_Egypt.php create mode 100644 modules/colissimoetiquetage/librairies/mpdf/collations/Arabic_Iraq.php create mode 100644 modules/colissimoetiquetage/librairies/mpdf/collations/Arabic_Jordan.php create mode 100644 modules/colissimoetiquetage/librairies/mpdf/collations/Arabic_Kuwait.php create mode 100644 modules/colissimoetiquetage/librairies/mpdf/collations/Arabic_Lebanon.php create mode 100644 modules/colissimoetiquetage/librairies/mpdf/collations/Arabic_Libya.php create mode 100644 modules/colissimoetiquetage/librairies/mpdf/collations/Arabic_Morocco.php create mode 100644 modules/colissimoetiquetage/librairies/mpdf/collations/Arabic_Oman.php create mode 100644 modules/colissimoetiquetage/librairies/mpdf/collations/Arabic_Pseudo_RTL.php create mode 100644 modules/colissimoetiquetage/librairies/mpdf/collations/Arabic_Qatar.php create mode 100644 modules/colissimoetiquetage/librairies/mpdf/collations/Arabic_Saudi_Arabia.php create mode 100644 modules/colissimoetiquetage/librairies/mpdf/collations/Arabic_Syria.php create mode 100644 modules/colissimoetiquetage/librairies/mpdf/collations/Arabic_Tunisia.php create mode 100644 modules/colissimoetiquetage/librairies/mpdf/collations/Arabic_Yemen.php create mode 100644 modules/colissimoetiquetage/librairies/mpdf/collations/Azeri_(Cyrillic)_Azerbaijan.php create mode 100644 modules/colissimoetiquetage/librairies/mpdf/collations/Azeri_(Latin)_Azerbaijan.php create mode 100644 modules/colissimoetiquetage/librairies/mpdf/collations/Bashkir_Russia.php create mode 100644 modules/colissimoetiquetage/librairies/mpdf/collations/Basque_Spain.php create mode 100644 modules/colissimoetiquetage/librairies/mpdf/collations/Belarusian_Belarus.php create mode 100644 modules/colissimoetiquetage/librairies/mpdf/collations/Bosnian_(Cyrillic)_Bosnia_and_Herzegovina.php create mode 100644 modules/colissimoetiquetage/librairies/mpdf/collations/Bosnian_(Latin)_Bosnia_and_Herzegovina.php create mode 100644 modules/colissimoetiquetage/librairies/mpdf/collations/Breton_France.php create mode 100644 modules/colissimoetiquetage/librairies/mpdf/collations/Bulgarian_Bulgaria.php create mode 100644 modules/colissimoetiquetage/librairies/mpdf/collations/Catalan_Spain.php create mode 100644 modules/colissimoetiquetage/librairies/mpdf/collations/Corsican_France.php create mode 100644 modules/colissimoetiquetage/librairies/mpdf/collations/Croatian_(Latin)_Bosnia_and_Herzegovina.php create mode 100644 modules/colissimoetiquetage/librairies/mpdf/collations/Croatian_Croatia.php create mode 100644 modules/colissimoetiquetage/librairies/mpdf/collations/Czech_Czech_Republic.php create mode 100644 modules/colissimoetiquetage/librairies/mpdf/collations/Danish_Denmark.php create mode 100644 modules/colissimoetiquetage/librairies/mpdf/collations/Dari_Afghanistan.php create mode 100644 modules/colissimoetiquetage/librairies/mpdf/collations/Dutch_Belgium.php create mode 100644 modules/colissimoetiquetage/librairies/mpdf/collations/Dutch_Netherlands.php create mode 100644 modules/colissimoetiquetage/librairies/mpdf/collations/English_Australia.php create mode 100644 modules/colissimoetiquetage/librairies/mpdf/collations/English_Belize.php create mode 100644 modules/colissimoetiquetage/librairies/mpdf/collations/English_Canada.php create mode 100644 modules/colissimoetiquetage/librairies/mpdf/collations/English_Caribbean.php create mode 100644 modules/colissimoetiquetage/librairies/mpdf/collations/English_India.php create mode 100644 modules/colissimoetiquetage/librairies/mpdf/collations/English_Ireland.php create mode 100644 modules/colissimoetiquetage/librairies/mpdf/collations/English_Jamaica.php create mode 100644 modules/colissimoetiquetage/librairies/mpdf/collations/English_Malaysia.php create mode 100644 modules/colissimoetiquetage/librairies/mpdf/collations/English_New_Zealand.php create mode 100644 modules/colissimoetiquetage/librairies/mpdf/collations/English_Republic_of_the_Philippines.php create mode 100644 modules/colissimoetiquetage/librairies/mpdf/collations/English_Singapore.php create mode 100644 modules/colissimoetiquetage/librairies/mpdf/collations/English_South_Africa.php create mode 100644 modules/colissimoetiquetage/librairies/mpdf/collations/English_Trinidad_and_Tobago.php create mode 100644 modules/colissimoetiquetage/librairies/mpdf/collations/English_United_Kingdom.php create mode 100644 modules/colissimoetiquetage/librairies/mpdf/collations/English_United_States.php create mode 100644 modules/colissimoetiquetage/librairies/mpdf/collations/English_Zimbabwe.php create mode 100644 modules/colissimoetiquetage/librairies/mpdf/collations/Estonian_Estonia.php create mode 100644 modules/colissimoetiquetage/librairies/mpdf/collations/Faroese_Faroe_Islands.php create mode 100644 modules/colissimoetiquetage/librairies/mpdf/collations/Filipino_Philippines.php create mode 100644 modules/colissimoetiquetage/librairies/mpdf/collations/Finnish_Finland.php create mode 100644 modules/colissimoetiquetage/librairies/mpdf/collations/French_Belgium.php create mode 100644 modules/colissimoetiquetage/librairies/mpdf/collations/French_Canada.php create mode 100644 modules/colissimoetiquetage/librairies/mpdf/collations/French_France.php create mode 100644 modules/colissimoetiquetage/librairies/mpdf/collations/French_Luxembourg.php create mode 100644 modules/colissimoetiquetage/librairies/mpdf/collations/French_Principality_of_Monaco.php create mode 100644 modules/colissimoetiquetage/librairies/mpdf/collations/French_Switzerland.php create mode 100644 modules/colissimoetiquetage/librairies/mpdf/collations/Frisian_Netherlands.php create mode 100644 modules/colissimoetiquetage/librairies/mpdf/collations/Galician_Spain.php create mode 100644 modules/colissimoetiquetage/librairies/mpdf/collations/German_Austria.php create mode 100644 modules/colissimoetiquetage/librairies/mpdf/collations/German_Germany.php create mode 100644 modules/colissimoetiquetage/librairies/mpdf/collations/German_Liechtenstein.php create mode 100644 modules/colissimoetiquetage/librairies/mpdf/collations/German_Luxembourg.php create mode 100644 modules/colissimoetiquetage/librairies/mpdf/collations/German_Switzerland.php create mode 100644 modules/colissimoetiquetage/librairies/mpdf/collations/Greek_Greece.php create mode 100644 modules/colissimoetiquetage/librairies/mpdf/collations/Greenlandic_Greenland.php create mode 100644 modules/colissimoetiquetage/librairies/mpdf/collations/Hausa_(Latin)_Nigeria.php create mode 100644 modules/colissimoetiquetage/librairies/mpdf/collations/Hebrew_Israel.php create mode 100644 modules/colissimoetiquetage/librairies/mpdf/collations/Hungarian_Hungary.php create mode 100644 modules/colissimoetiquetage/librairies/mpdf/collations/Icelandic_Iceland.php create mode 100644 modules/colissimoetiquetage/librairies/mpdf/collations/Igbo_Nigeria.php create mode 100644 modules/colissimoetiquetage/librairies/mpdf/collations/Indonesian_Indonesia.php create mode 100644 modules/colissimoetiquetage/librairies/mpdf/collations/Inuktitut_(Latin)_Canada.php create mode 100644 modules/colissimoetiquetage/librairies/mpdf/collations/Invariant_Language_Invariant_Country.php create mode 100644 modules/colissimoetiquetage/librairies/mpdf/collations/Irish_Ireland.php create mode 100644 modules/colissimoetiquetage/librairies/mpdf/collations/Italian_Italy.php create mode 100644 modules/colissimoetiquetage/librairies/mpdf/collations/Italian_Switzerland.php create mode 100644 modules/colissimoetiquetage/librairies/mpdf/collations/Kinyarwanda_Rwanda.php create mode 100644 modules/colissimoetiquetage/librairies/mpdf/collations/Kiswahili_Kenya.php create mode 100644 modules/colissimoetiquetage/librairies/mpdf/collations/Kyrgyz_Kyrgyzstan.php create mode 100644 modules/colissimoetiquetage/librairies/mpdf/collations/Latvian_Latvia.php create mode 100644 modules/colissimoetiquetage/librairies/mpdf/collations/Lithuanian_Lithuania.php create mode 100644 modules/colissimoetiquetage/librairies/mpdf/collations/Lower_Sorbian_Germany.php create mode 100644 modules/colissimoetiquetage/librairies/mpdf/collations/Luxembourgish_Luxembourg.php create mode 100644 modules/colissimoetiquetage/librairies/mpdf/collations/Macedonian_(FYROM)_Macedonia_(FYROM).php create mode 100644 modules/colissimoetiquetage/librairies/mpdf/collations/Malay_Brunei_Darussalam.php create mode 100644 modules/colissimoetiquetage/librairies/mpdf/collations/Malay_Malaysia.php create mode 100644 modules/colissimoetiquetage/librairies/mpdf/collations/Mapudungun_Chile.php create mode 100644 modules/colissimoetiquetage/librairies/mpdf/collations/Mohawk_Canada.php create mode 100644 modules/colissimoetiquetage/librairies/mpdf/collations/Mongolian_(Cyrillic)_Mongolia.php create mode 100644 modules/colissimoetiquetage/librairies/mpdf/collations/Norwegian_(Nynorsk)_Norway.php create mode 100644 modules/colissimoetiquetage/librairies/mpdf/collations/Occitan_France.php create mode 100644 modules/colissimoetiquetage/librairies/mpdf/collations/Persian_Iran.php create mode 100644 modules/colissimoetiquetage/librairies/mpdf/collations/Polish_Poland.php create mode 100644 modules/colissimoetiquetage/librairies/mpdf/collations/Portuguese_Brazil.php create mode 100644 modules/colissimoetiquetage/librairies/mpdf/collations/Portuguese_Portugal.php create mode 100644 modules/colissimoetiquetage/librairies/mpdf/collations/Quechua_Bolivia.php create mode 100644 modules/colissimoetiquetage/librairies/mpdf/collations/Quechua_Ecuador.php create mode 100644 modules/colissimoetiquetage/librairies/mpdf/collations/Quechua_Peru.php create mode 100644 modules/colissimoetiquetage/librairies/mpdf/collations/Romanian_Romania.php create mode 100644 modules/colissimoetiquetage/librairies/mpdf/collations/Romansh_Switzerland.php create mode 100644 modules/colissimoetiquetage/librairies/mpdf/collations/Russian_Russia.php create mode 100644 modules/colissimoetiquetage/librairies/mpdf/collations/Sami_(Inari)_Finland.php create mode 100644 modules/colissimoetiquetage/librairies/mpdf/collations/Sami_(Lule)_Norway.php create mode 100644 modules/colissimoetiquetage/librairies/mpdf/collations/Sami_(Lule)_Sweden.php create mode 100644 modules/colissimoetiquetage/librairies/mpdf/collations/Sami_(Northern)_Finland.php create mode 100644 modules/colissimoetiquetage/librairies/mpdf/collations/Sami_(Northern)_Norway.php create mode 100644 modules/colissimoetiquetage/librairies/mpdf/collations/Sami_(Northern)_Sweden.php create mode 100644 modules/colissimoetiquetage/librairies/mpdf/collations/Sami_(Skolt)_Finland.php create mode 100644 modules/colissimoetiquetage/librairies/mpdf/collations/Sami_(Southern)_Norway.php create mode 100644 modules/colissimoetiquetage/librairies/mpdf/collations/Sami_(Southern)_Sweden.php create mode 100644 modules/colissimoetiquetage/librairies/mpdf/collations/Serbian_(Cyrillic)_Bosnia_and_Herzegovina.php create mode 100644 modules/colissimoetiquetage/librairies/mpdf/collations/Serbian_(Cyrillic)_Serbia.php create mode 100644 modules/colissimoetiquetage/librairies/mpdf/collations/Serbian_(Latin)_Bosnia_and_Herzegovina.php create mode 100644 modules/colissimoetiquetage/librairies/mpdf/collations/Serbian_(Latin)_Serbia.php create mode 100644 modules/colissimoetiquetage/librairies/mpdf/collations/Sesotho_sa_Leboa_South_Africa.php create mode 100644 modules/colissimoetiquetage/librairies/mpdf/collations/Setswana_South_Africa.php create mode 100644 modules/colissimoetiquetage/librairies/mpdf/collations/Slovak_Slovakia.php create mode 100644 modules/colissimoetiquetage/librairies/mpdf/collations/Slovenian_Slovenia.php create mode 100644 modules/colissimoetiquetage/librairies/mpdf/collations/Spanish_Argentina.php create mode 100644 modules/colissimoetiquetage/librairies/mpdf/collations/Spanish_Bolivia.php create mode 100644 modules/colissimoetiquetage/librairies/mpdf/collations/Spanish_Chile.php create mode 100644 modules/colissimoetiquetage/librairies/mpdf/collations/Spanish_Colombia.php create mode 100644 modules/colissimoetiquetage/librairies/mpdf/collations/Spanish_Costa_Rica.php create mode 100644 modules/colissimoetiquetage/librairies/mpdf/collations/Spanish_Dominican_Republic.php create mode 100644 modules/colissimoetiquetage/librairies/mpdf/collations/Spanish_Ecuador.php create mode 100644 modules/colissimoetiquetage/librairies/mpdf/collations/Spanish_El_Salvador.php create mode 100644 modules/colissimoetiquetage/librairies/mpdf/collations/Spanish_Guatemala.php create mode 100644 modules/colissimoetiquetage/librairies/mpdf/collations/Spanish_Honduras.php create mode 100644 modules/colissimoetiquetage/librairies/mpdf/collations/Spanish_Mexico.php create mode 100644 modules/colissimoetiquetage/librairies/mpdf/collations/Spanish_Nicaragua.php create mode 100644 modules/colissimoetiquetage/librairies/mpdf/collations/Spanish_Panama.php create mode 100644 modules/colissimoetiquetage/librairies/mpdf/collations/Spanish_Paraguay.php create mode 100644 modules/colissimoetiquetage/librairies/mpdf/collations/Spanish_Peru.php create mode 100644 modules/colissimoetiquetage/librairies/mpdf/collations/Spanish_Puerto_Rico.php create mode 100644 modules/colissimoetiquetage/librairies/mpdf/collations/Spanish_Spain.php create mode 100644 modules/colissimoetiquetage/librairies/mpdf/collations/Spanish_United_States.php create mode 100644 modules/colissimoetiquetage/librairies/mpdf/collations/Spanish_Uruguay.php create mode 100644 modules/colissimoetiquetage/librairies/mpdf/collations/Spanish_Venezuela.php create mode 100644 modules/colissimoetiquetage/librairies/mpdf/collations/Swedish_Finland.php create mode 100644 modules/colissimoetiquetage/librairies/mpdf/collations/Swedish_Sweden.php create mode 100644 modules/colissimoetiquetage/librairies/mpdf/collations/Tajik_(Cyrillic)_Tajikistan.php create mode 100644 modules/colissimoetiquetage/librairies/mpdf/collations/Tamazight_(Latin)_Algeria.php create mode 100644 modules/colissimoetiquetage/librairies/mpdf/collations/Tatar_Russia.php create mode 100644 modules/colissimoetiquetage/librairies/mpdf/collations/Turkish_Turkey.php create mode 100644 modules/colissimoetiquetage/librairies/mpdf/collations/Turkmen_Turkmenistan.php create mode 100644 modules/colissimoetiquetage/librairies/mpdf/collations/Ukrainian_Ukraine.php create mode 100644 modules/colissimoetiquetage/librairies/mpdf/collations/Upper_Sorbian_Germany.php create mode 100644 modules/colissimoetiquetage/librairies/mpdf/collations/Urdu_Islamic_Republic_of_Pakistan.php create mode 100644 modules/colissimoetiquetage/librairies/mpdf/collations/Uzbek_(Cyrillic)_Uzbekistan.php create mode 100644 modules/colissimoetiquetage/librairies/mpdf/collations/Uzbek_(Latin)_Uzbekistan.php create mode 100644 modules/colissimoetiquetage/librairies/mpdf/collations/Vietnamese_Vietnam.php create mode 100644 modules/colissimoetiquetage/librairies/mpdf/collations/Welsh_United_Kingdom.php create mode 100644 modules/colissimoetiquetage/librairies/mpdf/collations/Wolof_Senegal.php create mode 100644 modules/colissimoetiquetage/librairies/mpdf/collations/Yakut_Russia.php create mode 100644 modules/colissimoetiquetage/librairies/mpdf/collations/Yoruba_Nigeria.php create mode 100644 modules/colissimoetiquetage/librairies/mpdf/collations/isiXhosa_South_Africa.php create mode 100644 modules/colissimoetiquetage/librairies/mpdf/collations/isiZulu_South_Africa.php create mode 100644 modules/colissimoetiquetage/librairies/mpdf/composer.json create mode 100644 modules/colissimoetiquetage/librairies/mpdf/composer.lock create mode 100644 modules/colissimoetiquetage/librairies/mpdf/compress.php create mode 100644 modules/colissimoetiquetage/librairies/mpdf/config.php create mode 100644 modules/colissimoetiquetage/librairies/mpdf/config_fonts-distr-without-OTL.php create mode 100644 modules/colissimoetiquetage/librairies/mpdf/config_fonts.php create mode 100644 modules/colissimoetiquetage/librairies/mpdf/config_lang2fonts.php create mode 100644 modules/colissimoetiquetage/librairies/mpdf/config_script2lang.php create mode 100644 modules/colissimoetiquetage/librairies/mpdf/font/ccourier.php create mode 100644 modules/colissimoetiquetage/librairies/mpdf/font/ccourierb.php create mode 100644 modules/colissimoetiquetage/librairies/mpdf/font/ccourierbi.php create mode 100644 modules/colissimoetiquetage/librairies/mpdf/font/ccourieri.php create mode 100644 modules/colissimoetiquetage/librairies/mpdf/font/chelvetica.php create mode 100644 modules/colissimoetiquetage/librairies/mpdf/font/chelveticab.php create mode 100644 modules/colissimoetiquetage/librairies/mpdf/font/chelveticabi.php create mode 100644 modules/colissimoetiquetage/librairies/mpdf/font/chelveticai.php create mode 100644 modules/colissimoetiquetage/librairies/mpdf/font/csymbol.php create mode 100644 modules/colissimoetiquetage/librairies/mpdf/font/ctimes.php create mode 100644 modules/colissimoetiquetage/librairies/mpdf/font/ctimesb.php create mode 100644 modules/colissimoetiquetage/librairies/mpdf/font/ctimesbi.php create mode 100644 modules/colissimoetiquetage/librairies/mpdf/font/ctimesi.php create mode 100644 modules/colissimoetiquetage/librairies/mpdf/font/czapfdingbats.php create mode 100644 modules/colissimoetiquetage/librairies/mpdf/graph.php create mode 100644 modules/colissimoetiquetage/librairies/mpdf/graph_cache/.gitignore create mode 100644 modules/colissimoetiquetage/librairies/mpdf/iccprofiles/SWOP2006_Coated5v2.icc create mode 100644 modules/colissimoetiquetage/librairies/mpdf/iccprofiles/sRGB_IEC61966-2-1.icc create mode 100644 modules/colissimoetiquetage/librairies/mpdf/includes/CJKdata.php create mode 100644 modules/colissimoetiquetage/librairies/mpdf/includes/functions.php create mode 100644 modules/colissimoetiquetage/librairies/mpdf/includes/linebrdictK.dat create mode 100644 modules/colissimoetiquetage/librairies/mpdf/includes/linebrdictL.dat create mode 100644 modules/colissimoetiquetage/librairies/mpdf/includes/linebrdictT.dat create mode 100644 modules/colissimoetiquetage/librairies/mpdf/includes/no_image.jpg create mode 100644 modules/colissimoetiquetage/librairies/mpdf/includes/out.php create mode 100644 modules/colissimoetiquetage/librairies/mpdf/includes/subs_core.php create mode 100644 modules/colissimoetiquetage/librairies/mpdf/includes/subs_win-1252.php create mode 100644 modules/colissimoetiquetage/librairies/mpdf/includes/upperCase.php create mode 100644 modules/colissimoetiquetage/librairies/mpdf/lang2fonts.css create mode 100644 modules/colissimoetiquetage/librairies/mpdf/mpdf.css create mode 100644 modules/colissimoetiquetage/librairies/mpdf/mpdf.php create mode 100644 modules/colissimoetiquetage/librairies/mpdf/mpdfi/filters/FilterASCII85.php create mode 100644 modules/colissimoetiquetage/librairies/mpdf/mpdfi/filters/FilterLZW.php create mode 100644 modules/colissimoetiquetage/librairies/mpdf/mpdfi/fpdi_pdf_parser.php create mode 100644 modules/colissimoetiquetage/librairies/mpdf/mpdfi/pdf_context.php create mode 100644 modules/colissimoetiquetage/librairies/mpdf/mpdfi/pdf_parser.php create mode 100644 modules/colissimoetiquetage/librairies/mpdf/patterns/NOTES.txt create mode 100644 modules/colissimoetiquetage/librairies/mpdf/patterns/de.php create mode 100644 modules/colissimoetiquetage/librairies/mpdf/patterns/dictionary.txt create mode 100644 modules/colissimoetiquetage/librairies/mpdf/patterns/en.php create mode 100644 modules/colissimoetiquetage/librairies/mpdf/patterns/es.php create mode 100644 modules/colissimoetiquetage/librairies/mpdf/patterns/fi.php create mode 100644 modules/colissimoetiquetage/librairies/mpdf/patterns/fr.php create mode 100644 modules/colissimoetiquetage/librairies/mpdf/patterns/it.php create mode 100644 modules/colissimoetiquetage/librairies/mpdf/patterns/nl.php create mode 100644 modules/colissimoetiquetage/librairies/mpdf/patterns/pl.php create mode 100644 modules/colissimoetiquetage/librairies/mpdf/patterns/ru.php create mode 100644 modules/colissimoetiquetage/librairies/mpdf/patterns/sv.php create mode 100644 modules/colissimoetiquetage/librairies/mpdf/phpunit.xml create mode 100644 modules/colissimoetiquetage/librairies/mpdf/progbar.css create mode 100644 modules/colissimoetiquetage/librairies/mpdf/qrcode/_LGPL.txt create mode 100644 modules/colissimoetiquetage/librairies/mpdf/qrcode/_lisez_moi.txt create mode 100644 modules/colissimoetiquetage/librairies/mpdf/qrcode/data/modele1.dat create mode 100644 modules/colissimoetiquetage/librairies/mpdf/qrcode/data/modele10.dat create mode 100644 modules/colissimoetiquetage/librairies/mpdf/qrcode/data/modele11.dat create mode 100644 modules/colissimoetiquetage/librairies/mpdf/qrcode/data/modele12.dat create mode 100644 modules/colissimoetiquetage/librairies/mpdf/qrcode/data/modele13.dat create mode 100644 modules/colissimoetiquetage/librairies/mpdf/qrcode/data/modele14.dat create mode 100644 modules/colissimoetiquetage/librairies/mpdf/qrcode/data/modele15.dat create mode 100644 modules/colissimoetiquetage/librairies/mpdf/qrcode/data/modele16.dat create mode 100644 modules/colissimoetiquetage/librairies/mpdf/qrcode/data/modele17.dat create mode 100644 modules/colissimoetiquetage/librairies/mpdf/qrcode/data/modele18.dat create mode 100644 modules/colissimoetiquetage/librairies/mpdf/qrcode/data/modele19.dat create mode 100644 modules/colissimoetiquetage/librairies/mpdf/qrcode/data/modele2.dat create mode 100644 modules/colissimoetiquetage/librairies/mpdf/qrcode/data/modele20.dat create mode 100644 modules/colissimoetiquetage/librairies/mpdf/qrcode/data/modele21.dat create mode 100644 modules/colissimoetiquetage/librairies/mpdf/qrcode/data/modele22.dat create mode 100644 modules/colissimoetiquetage/librairies/mpdf/qrcode/data/modele23.dat create mode 100644 modules/colissimoetiquetage/librairies/mpdf/qrcode/data/modele24.dat create mode 100644 modules/colissimoetiquetage/librairies/mpdf/qrcode/data/modele25.dat create mode 100644 modules/colissimoetiquetage/librairies/mpdf/qrcode/data/modele26.dat create mode 100644 modules/colissimoetiquetage/librairies/mpdf/qrcode/data/modele27.dat create mode 100644 modules/colissimoetiquetage/librairies/mpdf/qrcode/data/modele28.dat create mode 100644 modules/colissimoetiquetage/librairies/mpdf/qrcode/data/modele29.dat create mode 100644 modules/colissimoetiquetage/librairies/mpdf/qrcode/data/modele3.dat create mode 100644 modules/colissimoetiquetage/librairies/mpdf/qrcode/data/modele30.dat create mode 100644 modules/colissimoetiquetage/librairies/mpdf/qrcode/data/modele31.dat create mode 100644 modules/colissimoetiquetage/librairies/mpdf/qrcode/data/modele32.dat create mode 100644 modules/colissimoetiquetage/librairies/mpdf/qrcode/data/modele33.dat create mode 100644 modules/colissimoetiquetage/librairies/mpdf/qrcode/data/modele34.dat create mode 100644 modules/colissimoetiquetage/librairies/mpdf/qrcode/data/modele35.dat create mode 100644 modules/colissimoetiquetage/librairies/mpdf/qrcode/data/modele36.dat create mode 100644 modules/colissimoetiquetage/librairies/mpdf/qrcode/data/modele37.dat create mode 100644 modules/colissimoetiquetage/librairies/mpdf/qrcode/data/modele38.dat create mode 100644 modules/colissimoetiquetage/librairies/mpdf/qrcode/data/modele39.dat create mode 100644 modules/colissimoetiquetage/librairies/mpdf/qrcode/data/modele4.dat create mode 100644 modules/colissimoetiquetage/librairies/mpdf/qrcode/data/modele40.dat create mode 100644 modules/colissimoetiquetage/librairies/mpdf/qrcode/data/modele5.dat create mode 100644 modules/colissimoetiquetage/librairies/mpdf/qrcode/data/modele6.dat create mode 100644 modules/colissimoetiquetage/librairies/mpdf/qrcode/data/modele7.dat create mode 100644 modules/colissimoetiquetage/librairies/mpdf/qrcode/data/modele8.dat create mode 100644 modules/colissimoetiquetage/librairies/mpdf/qrcode/data/modele9.dat create mode 100644 modules/colissimoetiquetage/librairies/mpdf/qrcode/data/qrv10_0.dat create mode 100644 modules/colissimoetiquetage/librairies/mpdf/qrcode/data/qrv10_1.dat create mode 100644 modules/colissimoetiquetage/librairies/mpdf/qrcode/data/qrv10_2.dat create mode 100644 modules/colissimoetiquetage/librairies/mpdf/qrcode/data/qrv10_3.dat create mode 100644 modules/colissimoetiquetage/librairies/mpdf/qrcode/data/qrv11_0.dat create mode 100644 modules/colissimoetiquetage/librairies/mpdf/qrcode/data/qrv11_1.dat create mode 100644 modules/colissimoetiquetage/librairies/mpdf/qrcode/data/qrv11_2.dat create mode 100644 modules/colissimoetiquetage/librairies/mpdf/qrcode/data/qrv11_3.dat create mode 100644 modules/colissimoetiquetage/librairies/mpdf/qrcode/data/qrv12_0.dat create mode 100644 modules/colissimoetiquetage/librairies/mpdf/qrcode/data/qrv12_1.dat create mode 100644 modules/colissimoetiquetage/librairies/mpdf/qrcode/data/qrv12_2.dat create mode 100644 modules/colissimoetiquetage/librairies/mpdf/qrcode/data/qrv12_3.dat create mode 100644 modules/colissimoetiquetage/librairies/mpdf/qrcode/data/qrv13_0.dat create mode 100644 modules/colissimoetiquetage/librairies/mpdf/qrcode/data/qrv13_1.dat create mode 100644 modules/colissimoetiquetage/librairies/mpdf/qrcode/data/qrv13_2.dat create mode 100644 modules/colissimoetiquetage/librairies/mpdf/qrcode/data/qrv13_3.dat create mode 100644 modules/colissimoetiquetage/librairies/mpdf/qrcode/data/qrv14_0.dat create mode 100644 modules/colissimoetiquetage/librairies/mpdf/qrcode/data/qrv14_1.dat create mode 100644 modules/colissimoetiquetage/librairies/mpdf/qrcode/data/qrv14_2.dat create mode 100644 modules/colissimoetiquetage/librairies/mpdf/qrcode/data/qrv14_3.dat create mode 100644 modules/colissimoetiquetage/librairies/mpdf/qrcode/data/qrv15_0.dat create mode 100644 modules/colissimoetiquetage/librairies/mpdf/qrcode/data/qrv15_1.dat create mode 100644 modules/colissimoetiquetage/librairies/mpdf/qrcode/data/qrv15_2.dat create mode 100644 modules/colissimoetiquetage/librairies/mpdf/qrcode/data/qrv15_3.dat create mode 100644 modules/colissimoetiquetage/librairies/mpdf/qrcode/data/qrv16_0.dat create mode 100644 modules/colissimoetiquetage/librairies/mpdf/qrcode/data/qrv16_1.dat create mode 100644 modules/colissimoetiquetage/librairies/mpdf/qrcode/data/qrv16_2.dat create mode 100644 modules/colissimoetiquetage/librairies/mpdf/qrcode/data/qrv16_3.dat create mode 100644 modules/colissimoetiquetage/librairies/mpdf/qrcode/data/qrv17_0.dat create mode 100644 modules/colissimoetiquetage/librairies/mpdf/qrcode/data/qrv17_1.dat create mode 100644 modules/colissimoetiquetage/librairies/mpdf/qrcode/data/qrv17_2.dat create mode 100644 modules/colissimoetiquetage/librairies/mpdf/qrcode/data/qrv17_3.dat create mode 100644 modules/colissimoetiquetage/librairies/mpdf/qrcode/data/qrv18_0.dat create mode 100644 modules/colissimoetiquetage/librairies/mpdf/qrcode/data/qrv18_1.dat create mode 100644 modules/colissimoetiquetage/librairies/mpdf/qrcode/data/qrv18_2.dat create mode 100644 modules/colissimoetiquetage/librairies/mpdf/qrcode/data/qrv18_3.dat create mode 100644 modules/colissimoetiquetage/librairies/mpdf/qrcode/data/qrv19_0.dat create mode 100644 modules/colissimoetiquetage/librairies/mpdf/qrcode/data/qrv19_1.dat create mode 100644 modules/colissimoetiquetage/librairies/mpdf/qrcode/data/qrv19_2.dat create mode 100644 modules/colissimoetiquetage/librairies/mpdf/qrcode/data/qrv19_3.dat create mode 100644 modules/colissimoetiquetage/librairies/mpdf/qrcode/data/qrv1_0.dat create mode 100644 modules/colissimoetiquetage/librairies/mpdf/qrcode/data/qrv1_1.dat create mode 100644 modules/colissimoetiquetage/librairies/mpdf/qrcode/data/qrv1_2.dat create mode 100644 modules/colissimoetiquetage/librairies/mpdf/qrcode/data/qrv1_3.dat create mode 100644 modules/colissimoetiquetage/librairies/mpdf/qrcode/data/qrv20_0.dat create mode 100644 modules/colissimoetiquetage/librairies/mpdf/qrcode/data/qrv20_1.dat create mode 100644 modules/colissimoetiquetage/librairies/mpdf/qrcode/data/qrv20_2.dat create mode 100644 modules/colissimoetiquetage/librairies/mpdf/qrcode/data/qrv20_3.dat create mode 100644 modules/colissimoetiquetage/librairies/mpdf/qrcode/data/qrv21_0.dat create mode 100644 modules/colissimoetiquetage/librairies/mpdf/qrcode/data/qrv21_1.dat create mode 100644 modules/colissimoetiquetage/librairies/mpdf/qrcode/data/qrv21_2.dat create mode 100644 modules/colissimoetiquetage/librairies/mpdf/qrcode/data/qrv21_3.dat create mode 100644 modules/colissimoetiquetage/librairies/mpdf/qrcode/data/qrv22_0.dat create mode 100644 modules/colissimoetiquetage/librairies/mpdf/qrcode/data/qrv22_1.dat create mode 100644 modules/colissimoetiquetage/librairies/mpdf/qrcode/data/qrv22_2.dat create mode 100644 modules/colissimoetiquetage/librairies/mpdf/qrcode/data/qrv22_3.dat create mode 100644 modules/colissimoetiquetage/librairies/mpdf/qrcode/data/qrv23_0.dat create mode 100644 modules/colissimoetiquetage/librairies/mpdf/qrcode/data/qrv23_1.dat create mode 100644 modules/colissimoetiquetage/librairies/mpdf/qrcode/data/qrv23_2.dat create mode 100644 modules/colissimoetiquetage/librairies/mpdf/qrcode/data/qrv23_3.dat create mode 100644 modules/colissimoetiquetage/librairies/mpdf/qrcode/data/qrv24_0.dat create mode 100644 modules/colissimoetiquetage/librairies/mpdf/qrcode/data/qrv24_1.dat create mode 100644 modules/colissimoetiquetage/librairies/mpdf/qrcode/data/qrv24_2.dat create mode 100644 modules/colissimoetiquetage/librairies/mpdf/qrcode/data/qrv24_3.dat create mode 100644 modules/colissimoetiquetage/librairies/mpdf/qrcode/data/qrv25_0.dat create mode 100644 modules/colissimoetiquetage/librairies/mpdf/qrcode/data/qrv25_1.dat create mode 100644 modules/colissimoetiquetage/librairies/mpdf/qrcode/data/qrv25_2.dat create mode 100644 modules/colissimoetiquetage/librairies/mpdf/qrcode/data/qrv25_3.dat create mode 100644 modules/colissimoetiquetage/librairies/mpdf/qrcode/data/qrv26_0.dat create mode 100644 modules/colissimoetiquetage/librairies/mpdf/qrcode/data/qrv26_1.dat create mode 100644 modules/colissimoetiquetage/librairies/mpdf/qrcode/data/qrv26_2.dat create mode 100644 modules/colissimoetiquetage/librairies/mpdf/qrcode/data/qrv26_3.dat create mode 100644 modules/colissimoetiquetage/librairies/mpdf/qrcode/data/qrv27_0.dat create mode 100644 modules/colissimoetiquetage/librairies/mpdf/qrcode/data/qrv27_1.dat create mode 100644 modules/colissimoetiquetage/librairies/mpdf/qrcode/data/qrv27_2.dat create mode 100644 modules/colissimoetiquetage/librairies/mpdf/qrcode/data/qrv27_3.dat create mode 100644 modules/colissimoetiquetage/librairies/mpdf/qrcode/data/qrv28_0.dat create mode 100644 modules/colissimoetiquetage/librairies/mpdf/qrcode/data/qrv28_1.dat create mode 100644 modules/colissimoetiquetage/librairies/mpdf/qrcode/data/qrv28_2.dat create mode 100644 modules/colissimoetiquetage/librairies/mpdf/qrcode/data/qrv28_3.dat create mode 100644 modules/colissimoetiquetage/librairies/mpdf/qrcode/data/qrv29_0.dat create mode 100644 modules/colissimoetiquetage/librairies/mpdf/qrcode/data/qrv29_1.dat create mode 100644 modules/colissimoetiquetage/librairies/mpdf/qrcode/data/qrv29_2.dat create mode 100644 modules/colissimoetiquetage/librairies/mpdf/qrcode/data/qrv29_3.dat create mode 100644 modules/colissimoetiquetage/librairies/mpdf/qrcode/data/qrv2_0.dat create mode 100644 modules/colissimoetiquetage/librairies/mpdf/qrcode/data/qrv2_1.dat create mode 100644 modules/colissimoetiquetage/librairies/mpdf/qrcode/data/qrv2_2.dat create mode 100644 modules/colissimoetiquetage/librairies/mpdf/qrcode/data/qrv2_3.dat create mode 100644 modules/colissimoetiquetage/librairies/mpdf/qrcode/data/qrv30_0.dat create mode 100644 modules/colissimoetiquetage/librairies/mpdf/qrcode/data/qrv30_1.dat create mode 100644 modules/colissimoetiquetage/librairies/mpdf/qrcode/data/qrv30_2.dat create mode 100644 modules/colissimoetiquetage/librairies/mpdf/qrcode/data/qrv30_3.dat create mode 100644 modules/colissimoetiquetage/librairies/mpdf/qrcode/data/qrv31_0.dat create mode 100644 modules/colissimoetiquetage/librairies/mpdf/qrcode/data/qrv31_1.dat create mode 100644 modules/colissimoetiquetage/librairies/mpdf/qrcode/data/qrv31_2.dat create mode 100644 modules/colissimoetiquetage/librairies/mpdf/qrcode/data/qrv31_3.dat create mode 100644 modules/colissimoetiquetage/librairies/mpdf/qrcode/data/qrv32_0.dat create mode 100644 modules/colissimoetiquetage/librairies/mpdf/qrcode/data/qrv32_1.dat create mode 100644 modules/colissimoetiquetage/librairies/mpdf/qrcode/data/qrv32_2.dat create mode 100644 modules/colissimoetiquetage/librairies/mpdf/qrcode/data/qrv32_3.dat create mode 100644 modules/colissimoetiquetage/librairies/mpdf/qrcode/data/qrv33_0.dat create mode 100644 modules/colissimoetiquetage/librairies/mpdf/qrcode/data/qrv33_1.dat create mode 100644 modules/colissimoetiquetage/librairies/mpdf/qrcode/data/qrv33_2.dat create mode 100644 modules/colissimoetiquetage/librairies/mpdf/qrcode/data/qrv33_3.dat create mode 100644 modules/colissimoetiquetage/librairies/mpdf/qrcode/data/qrv34_0.dat create mode 100644 modules/colissimoetiquetage/librairies/mpdf/qrcode/data/qrv34_1.dat create mode 100644 modules/colissimoetiquetage/librairies/mpdf/qrcode/data/qrv34_2.dat create mode 100644 modules/colissimoetiquetage/librairies/mpdf/qrcode/data/qrv34_3.dat create mode 100644 modules/colissimoetiquetage/librairies/mpdf/qrcode/data/qrv35_0.dat create mode 100644 modules/colissimoetiquetage/librairies/mpdf/qrcode/data/qrv35_1.dat create mode 100644 modules/colissimoetiquetage/librairies/mpdf/qrcode/data/qrv35_2.dat create mode 100644 modules/colissimoetiquetage/librairies/mpdf/qrcode/data/qrv35_3.dat create mode 100644 modules/colissimoetiquetage/librairies/mpdf/qrcode/data/qrv36_0.dat create mode 100644 modules/colissimoetiquetage/librairies/mpdf/qrcode/data/qrv36_1.dat create mode 100644 modules/colissimoetiquetage/librairies/mpdf/qrcode/data/qrv36_2.dat create mode 100644 modules/colissimoetiquetage/librairies/mpdf/qrcode/data/qrv36_3.dat create mode 100644 modules/colissimoetiquetage/librairies/mpdf/qrcode/data/qrv37_0.dat create mode 100644 modules/colissimoetiquetage/librairies/mpdf/qrcode/data/qrv37_1.dat create mode 100644 modules/colissimoetiquetage/librairies/mpdf/qrcode/data/qrv37_2.dat create mode 100644 modules/colissimoetiquetage/librairies/mpdf/qrcode/data/qrv37_3.dat create mode 100644 modules/colissimoetiquetage/librairies/mpdf/qrcode/data/qrv38_0.dat create mode 100644 modules/colissimoetiquetage/librairies/mpdf/qrcode/data/qrv38_1.dat create mode 100644 modules/colissimoetiquetage/librairies/mpdf/qrcode/data/qrv38_2.dat create mode 100644 modules/colissimoetiquetage/librairies/mpdf/qrcode/data/qrv38_3.dat create mode 100644 modules/colissimoetiquetage/librairies/mpdf/qrcode/data/qrv39_0.dat create mode 100644 modules/colissimoetiquetage/librairies/mpdf/qrcode/data/qrv39_1.dat create mode 100644 modules/colissimoetiquetage/librairies/mpdf/qrcode/data/qrv39_2.dat create mode 100644 modules/colissimoetiquetage/librairies/mpdf/qrcode/data/qrv39_3.dat create mode 100644 modules/colissimoetiquetage/librairies/mpdf/qrcode/data/qrv3_0.dat create mode 100644 modules/colissimoetiquetage/librairies/mpdf/qrcode/data/qrv3_1.dat create mode 100644 modules/colissimoetiquetage/librairies/mpdf/qrcode/data/qrv3_2.dat create mode 100644 modules/colissimoetiquetage/librairies/mpdf/qrcode/data/qrv3_3.dat create mode 100644 modules/colissimoetiquetage/librairies/mpdf/qrcode/data/qrv40_0.dat create mode 100644 modules/colissimoetiquetage/librairies/mpdf/qrcode/data/qrv40_1.dat create mode 100644 modules/colissimoetiquetage/librairies/mpdf/qrcode/data/qrv40_2.dat create mode 100644 modules/colissimoetiquetage/librairies/mpdf/qrcode/data/qrv40_3.dat create mode 100644 modules/colissimoetiquetage/librairies/mpdf/qrcode/data/qrv4_0.dat create mode 100644 modules/colissimoetiquetage/librairies/mpdf/qrcode/data/qrv4_1.dat create mode 100644 modules/colissimoetiquetage/librairies/mpdf/qrcode/data/qrv4_2.dat create mode 100644 modules/colissimoetiquetage/librairies/mpdf/qrcode/data/qrv4_3.dat create mode 100644 modules/colissimoetiquetage/librairies/mpdf/qrcode/data/qrv5_0.dat create mode 100644 modules/colissimoetiquetage/librairies/mpdf/qrcode/data/qrv5_1.dat create mode 100644 modules/colissimoetiquetage/librairies/mpdf/qrcode/data/qrv5_2.dat create mode 100644 modules/colissimoetiquetage/librairies/mpdf/qrcode/data/qrv5_3.dat create mode 100644 modules/colissimoetiquetage/librairies/mpdf/qrcode/data/qrv6_0.dat create mode 100644 modules/colissimoetiquetage/librairies/mpdf/qrcode/data/qrv6_1.dat create mode 100644 modules/colissimoetiquetage/librairies/mpdf/qrcode/data/qrv6_2.dat create mode 100644 modules/colissimoetiquetage/librairies/mpdf/qrcode/data/qrv6_3.dat create mode 100644 modules/colissimoetiquetage/librairies/mpdf/qrcode/data/qrv7_0.dat create mode 100644 modules/colissimoetiquetage/librairies/mpdf/qrcode/data/qrv7_1.dat create mode 100644 modules/colissimoetiquetage/librairies/mpdf/qrcode/data/qrv7_2.dat create mode 100644 modules/colissimoetiquetage/librairies/mpdf/qrcode/data/qrv7_3.dat create mode 100644 modules/colissimoetiquetage/librairies/mpdf/qrcode/data/qrv8_0.dat create mode 100644 modules/colissimoetiquetage/librairies/mpdf/qrcode/data/qrv8_1.dat create mode 100644 modules/colissimoetiquetage/librairies/mpdf/qrcode/data/qrv8_2.dat create mode 100644 modules/colissimoetiquetage/librairies/mpdf/qrcode/data/qrv8_3.dat create mode 100644 modules/colissimoetiquetage/librairies/mpdf/qrcode/data/qrv9_0.dat create mode 100644 modules/colissimoetiquetage/librairies/mpdf/qrcode/data/qrv9_1.dat create mode 100644 modules/colissimoetiquetage/librairies/mpdf/qrcode/data/qrv9_2.dat create mode 100644 modules/colissimoetiquetage/librairies/mpdf/qrcode/data/qrv9_3.dat create mode 100644 modules/colissimoetiquetage/librairies/mpdf/qrcode/data/qrvfr1.dat create mode 100644 modules/colissimoetiquetage/librairies/mpdf/qrcode/data/qrvfr10.dat create mode 100644 modules/colissimoetiquetage/librairies/mpdf/qrcode/data/qrvfr11.dat create mode 100644 modules/colissimoetiquetage/librairies/mpdf/qrcode/data/qrvfr12.dat create mode 100644 modules/colissimoetiquetage/librairies/mpdf/qrcode/data/qrvfr13.dat create mode 100644 modules/colissimoetiquetage/librairies/mpdf/qrcode/data/qrvfr14.dat create mode 100644 modules/colissimoetiquetage/librairies/mpdf/qrcode/data/qrvfr15.dat create mode 100644 modules/colissimoetiquetage/librairies/mpdf/qrcode/data/qrvfr16.dat create mode 100644 modules/colissimoetiquetage/librairies/mpdf/qrcode/data/qrvfr17.dat create mode 100644 modules/colissimoetiquetage/librairies/mpdf/qrcode/data/qrvfr18.dat create mode 100644 modules/colissimoetiquetage/librairies/mpdf/qrcode/data/qrvfr19.dat create mode 100644 modules/colissimoetiquetage/librairies/mpdf/qrcode/data/qrvfr2.dat create mode 100644 modules/colissimoetiquetage/librairies/mpdf/qrcode/data/qrvfr20.dat create mode 100644 modules/colissimoetiquetage/librairies/mpdf/qrcode/data/qrvfr21.dat create mode 100644 modules/colissimoetiquetage/librairies/mpdf/qrcode/data/qrvfr22.dat create mode 100644 modules/colissimoetiquetage/librairies/mpdf/qrcode/data/qrvfr23.dat create mode 100644 modules/colissimoetiquetage/librairies/mpdf/qrcode/data/qrvfr24.dat create mode 100644 modules/colissimoetiquetage/librairies/mpdf/qrcode/data/qrvfr25.dat create mode 100644 modules/colissimoetiquetage/librairies/mpdf/qrcode/data/qrvfr26.dat create mode 100644 modules/colissimoetiquetage/librairies/mpdf/qrcode/data/qrvfr27.dat create mode 100644 modules/colissimoetiquetage/librairies/mpdf/qrcode/data/qrvfr28.dat create mode 100644 modules/colissimoetiquetage/librairies/mpdf/qrcode/data/qrvfr29.dat create mode 100644 modules/colissimoetiquetage/librairies/mpdf/qrcode/data/qrvfr3.dat create mode 100644 modules/colissimoetiquetage/librairies/mpdf/qrcode/data/qrvfr30.dat create mode 100644 modules/colissimoetiquetage/librairies/mpdf/qrcode/data/qrvfr31.dat create mode 100644 modules/colissimoetiquetage/librairies/mpdf/qrcode/data/qrvfr32.dat create mode 100644 modules/colissimoetiquetage/librairies/mpdf/qrcode/data/qrvfr33.dat create mode 100644 modules/colissimoetiquetage/librairies/mpdf/qrcode/data/qrvfr34.dat create mode 100644 modules/colissimoetiquetage/librairies/mpdf/qrcode/data/qrvfr35.dat create mode 100644 modules/colissimoetiquetage/librairies/mpdf/qrcode/data/qrvfr36.dat create mode 100644 modules/colissimoetiquetage/librairies/mpdf/qrcode/data/qrvfr37.dat create mode 100644 modules/colissimoetiquetage/librairies/mpdf/qrcode/data/qrvfr38.dat create mode 100644 modules/colissimoetiquetage/librairies/mpdf/qrcode/data/qrvfr39.dat create mode 100644 modules/colissimoetiquetage/librairies/mpdf/qrcode/data/qrvfr4.dat create mode 100644 modules/colissimoetiquetage/librairies/mpdf/qrcode/data/qrvfr40.dat create mode 100644 modules/colissimoetiquetage/librairies/mpdf/qrcode/data/qrvfr5.dat create mode 100644 modules/colissimoetiquetage/librairies/mpdf/qrcode/data/qrvfr6.dat create mode 100644 modules/colissimoetiquetage/librairies/mpdf/qrcode/data/qrvfr7.dat create mode 100644 modules/colissimoetiquetage/librairies/mpdf/qrcode/data/qrvfr8.dat create mode 100644 modules/colissimoetiquetage/librairies/mpdf/qrcode/data/qrvfr9.dat create mode 100644 modules/colissimoetiquetage/librairies/mpdf/qrcode/data/rsc10.dat create mode 100644 modules/colissimoetiquetage/librairies/mpdf/qrcode/data/rsc13.dat create mode 100644 modules/colissimoetiquetage/librairies/mpdf/qrcode/data/rsc15.dat create mode 100644 modules/colissimoetiquetage/librairies/mpdf/qrcode/data/rsc16.dat create mode 100644 modules/colissimoetiquetage/librairies/mpdf/qrcode/data/rsc17.dat create mode 100644 modules/colissimoetiquetage/librairies/mpdf/qrcode/data/rsc18.dat create mode 100644 modules/colissimoetiquetage/librairies/mpdf/qrcode/data/rsc20.dat create mode 100644 modules/colissimoetiquetage/librairies/mpdf/qrcode/data/rsc22.dat create mode 100644 modules/colissimoetiquetage/librairies/mpdf/qrcode/data/rsc24.dat create mode 100644 modules/colissimoetiquetage/librairies/mpdf/qrcode/data/rsc26.dat create mode 100644 modules/colissimoetiquetage/librairies/mpdf/qrcode/data/rsc28.dat create mode 100644 modules/colissimoetiquetage/librairies/mpdf/qrcode/data/rsc30.dat create mode 100644 modules/colissimoetiquetage/librairies/mpdf/qrcode/data/rsc32.dat create mode 100644 modules/colissimoetiquetage/librairies/mpdf/qrcode/data/rsc34.dat create mode 100644 modules/colissimoetiquetage/librairies/mpdf/qrcode/data/rsc36.dat create mode 100644 modules/colissimoetiquetage/librairies/mpdf/qrcode/data/rsc40.dat create mode 100644 modules/colissimoetiquetage/librairies/mpdf/qrcode/data/rsc42.dat create mode 100644 modules/colissimoetiquetage/librairies/mpdf/qrcode/data/rsc44.dat create mode 100644 modules/colissimoetiquetage/librairies/mpdf/qrcode/data/rsc46.dat create mode 100644 modules/colissimoetiquetage/librairies/mpdf/qrcode/data/rsc48.dat create mode 100644 modules/colissimoetiquetage/librairies/mpdf/qrcode/data/rsc50.dat create mode 100644 modules/colissimoetiquetage/librairies/mpdf/qrcode/data/rsc52.dat create mode 100644 modules/colissimoetiquetage/librairies/mpdf/qrcode/data/rsc54.dat create mode 100644 modules/colissimoetiquetage/librairies/mpdf/qrcode/data/rsc56.dat create mode 100644 modules/colissimoetiquetage/librairies/mpdf/qrcode/data/rsc58.dat create mode 100644 modules/colissimoetiquetage/librairies/mpdf/qrcode/data/rsc60.dat create mode 100644 modules/colissimoetiquetage/librairies/mpdf/qrcode/data/rsc62.dat create mode 100644 modules/colissimoetiquetage/librairies/mpdf/qrcode/data/rsc64.dat create mode 100644 modules/colissimoetiquetage/librairies/mpdf/qrcode/data/rsc66.dat create mode 100644 modules/colissimoetiquetage/librairies/mpdf/qrcode/data/rsc68.dat create mode 100644 modules/colissimoetiquetage/librairies/mpdf/qrcode/data/rsc7.dat create mode 100644 modules/colissimoetiquetage/librairies/mpdf/qrcode/image.php create mode 100644 modules/colissimoetiquetage/librairies/mpdf/qrcode/index.php create mode 100644 modules/colissimoetiquetage/librairies/mpdf/qrcode/qrcode.class.php create mode 100644 modules/colissimoetiquetage/librairies/mpdf/tests/MPDITest.php create mode 100644 modules/colissimoetiquetage/librairies/mpdf/tests/WriteHtmlTest.php create mode 100644 modules/colissimoetiquetage/librairies/mpdf/tests/bootstrap.php create mode 100644 modules/colissimoetiquetage/librairies/mpdf/tests/data/pdfs/2-Page-PDF_1_4.pdf create mode 100644 modules/colissimoetiquetage/librairies/mpdf/tests/mPDFTest.php create mode 100644 modules/colissimoetiquetage/librairies/mpdf/tmp/.gitignore create mode 100644 modules/colissimoetiquetage/librairies/mpdf/ttfontdata/.gitignore create mode 100644 modules/colissimoetiquetage/librairies/mpdf/ttfonts/DejaVuSans-Bold.ttf create mode 100644 modules/colissimoetiquetage/librairies/mpdf/ttfonts/DejaVuSans-BoldOblique.ttf create mode 100644 modules/colissimoetiquetage/librairies/mpdf/ttfonts/DejaVuSans-Oblique.ttf create mode 100644 modules/colissimoetiquetage/librairies/mpdf/ttfonts/DejaVuSans.ttf create mode 100644 modules/colissimoetiquetage/librairies/mpdf/ttfonts/DejaVuSansCondensed-Bold.ttf create mode 100644 modules/colissimoetiquetage/librairies/mpdf/ttfonts/DejaVuSansCondensed-BoldOblique.ttf create mode 100644 modules/colissimoetiquetage/librairies/mpdf/ttfonts/DejaVuSansCondensed-Oblique.ttf create mode 100644 modules/colissimoetiquetage/librairies/mpdf/ttfonts/DejaVuSansCondensed.ttf create mode 100644 modules/colissimoetiquetage/librairies/mpdf/ttfonts/DejaVuinfo.txt create mode 100644 modules/colissimoetiquetage/librairies/mpdf/utils/UnicodeData.txt create mode 100644 modules/colissimoetiquetage/librairies/mpdf/utils/UnicodeRanges.php create mode 100644 modules/colissimoetiquetage/librairies/mpdf/utils/font_collections.php create mode 100644 modules/colissimoetiquetage/librairies/mpdf/utils/font_coverage.php create mode 100644 modules/colissimoetiquetage/librairies/mpdf/utils/font_dump.php create mode 100644 modules/colissimoetiquetage/librairies/mpdf/utils/font_dump_OTL.php create mode 100644 modules/colissimoetiquetage/librairies/mpdf/utils/font_names.php create mode 100644 modules/colissimoetiquetage/librairies/mpdf/utils/image_details.php create mode 100644 modules/colissimoetiquetage/librairies/mpdf/utils/index.php create mode 100644 modules/colissimoetiquetage/librairies/mpdf/vendor/autoload.php create mode 100644 modules/colissimoetiquetage/librairies/mpdf/vendor/composer/ClassLoader.php create mode 100644 modules/colissimoetiquetage/librairies/mpdf/vendor/composer/LICENSE create mode 100644 modules/colissimoetiquetage/librairies/mpdf/vendor/composer/autoload_classmap.php create mode 100644 modules/colissimoetiquetage/librairies/mpdf/vendor/composer/autoload_namespaces.php create mode 100644 modules/colissimoetiquetage/librairies/mpdf/vendor/composer/autoload_psr4.php create mode 100644 modules/colissimoetiquetage/librairies/mpdf/vendor/composer/autoload_real.php create mode 100644 modules/colissimoetiquetage/librairies/mpdf/vendor/composer/installed.json create mode 100644 modules/colissimoetiquetage/librairies/mpdf/vendor/setasign/fpdi/LICENSE create mode 100644 modules/colissimoetiquetage/librairies/mpdf/vendor/setasign/fpdi/README.md create mode 100644 modules/colissimoetiquetage/librairies/mpdf/vendor/setasign/fpdi/composer.json create mode 100644 modules/colissimoetiquetage/librairies/mpdf/vendor/setasign/fpdi/filters/FilterASCII85.php create mode 100644 modules/colissimoetiquetage/librairies/mpdf/vendor/setasign/fpdi/filters/FilterASCIIHexDecode.php create mode 100644 modules/colissimoetiquetage/librairies/mpdf/vendor/setasign/fpdi/filters/FilterLZW.php create mode 100644 modules/colissimoetiquetage/librairies/mpdf/vendor/setasign/fpdi/fpdf_tpl.php create mode 100644 modules/colissimoetiquetage/librairies/mpdf/vendor/setasign/fpdi/fpdi.php create mode 100644 modules/colissimoetiquetage/librairies/mpdf/vendor/setasign/fpdi/fpdi_bridge.php create mode 100644 modules/colissimoetiquetage/librairies/mpdf/vendor/setasign/fpdi/fpdi_pdf_parser.php create mode 100644 modules/colissimoetiquetage/librairies/mpdf/vendor/setasign/fpdi/pdf_context.php create mode 100644 modules/colissimoetiquetage/librairies/mpdf/vendor/setasign/fpdi/pdf_parser.php create mode 100644 modules/colissimoetiquetage/logo.png create mode 100644 modules/colissimoetiquetage/models/ColissimoLabelModel.php create mode 100644 modules/colissimoetiquetage/models/ColissimoReturnModel.php create mode 100644 modules/colissimoetiquetage/models/ColissimoSessionModel.php create mode 100644 modules/colissimoetiquetage/models/index.php create mode 100644 modules/colissimoetiquetage/pdf/bordereau.tpl create mode 100644 modules/colissimoetiquetage/pdf/index.php create mode 100644 modules/colissimoetiquetage/translations/fr.php create mode 100644 modules/colissimoetiquetage/translations/index.php create mode 100644 modules/colissimoetiquetage/upgrade/index.php create mode 100644 modules/colissimoetiquetage/upgrade/upgrade-1.3.0.php create mode 100644 modules/colissimoetiquetage/upgrade/upgrade-1.5.0.php create mode 100644 modules/colissimoetiquetage/upgrade/upgrade-1.5.1.php create mode 100644 modules/colissimoetiquetage/upgrade/upgrade-2.0.0.php create mode 100644 modules/colissimoetiquetage/upgrade/upgrade-2.0.2.php create mode 100644 modules/colissimoetiquetage/upgrade/upgrade-2.2.0.php create mode 100644 modules/colissimoetiquetage/views/css/colissimoetiquetage.css create mode 100644 modules/colissimoetiquetage/views/css/index.php create mode 100644 modules/colissimoetiquetage/views/img/index.php create mode 100644 modules/colissimoetiquetage/views/img/loader.gif create mode 100644 modules/colissimoetiquetage/views/img/logo-colissimo.png create mode 100644 modules/colissimoetiquetage/views/index.php create mode 100644 modules/colissimoetiquetage/views/js/colissimo_config.js create mode 100644 modules/colissimoetiquetage/views/js/colissimo_order.js create mode 100644 modules/colissimoetiquetage/views/js/colissimo_return.js create mode 100644 modules/colissimoetiquetage/views/js/colissimo_session.js create mode 100644 modules/colissimoetiquetage/views/js/index.php create mode 100644 modules/colissimoetiquetage/views/templates/admin/_print_pdf_icon-15.tpl create mode 100644 modules/colissimoetiquetage/views/templates/admin/_print_pdf_icon-16.tpl create mode 100644 modules/colissimoetiquetage/views/templates/admin/add_order_15.tpl create mode 100644 modules/colissimoetiquetage/views/templates/admin/add_order_16.tpl create mode 100644 modules/colissimoetiquetage/views/templates/admin/index.php create mode 100644 modules/colissimoetiquetage/views/templates/hook/admin-order.tpl create mode 100644 modules/colissimoetiquetage/views/templates/hook/configuration_infos.tpl create mode 100644 modules/colissimoetiquetage/views/templates/hook/configuration_navigation.tpl create mode 100644 modules/colissimoetiquetage/views/templates/hook/index.php create mode 100644 modules/colissimoetiquetage/views/templates/hook/order-shipping-content.tpl create mode 100644 modules/colissimoetiquetage/views/templates/hook/order-shipping-tab.tpl create mode 100644 modules/colissimoetiquetage/views/templates/index.php diff --git a/.gitignore b/.gitignore index 2dd4c088..1abebcac 100644 --- a/.gitignore +++ b/.gitignore @@ -95,4 +95,5 @@ return.xml rss/* modules/antadis_doofinder/script/*.csv modules/flashsales/views/img/banner/*.jpg -classes/ObjectModel.php \ No newline at end of file +classes/ObjectModel.php +modules/colissimoetiquetage/download/*.pdf \ No newline at end of file diff --git a/modules/colissimoetiquetage/CHANGELOG.md b/modules/colissimoetiquetage/CHANGELOG.md new file mode 100644 index 00000000..1a649052 --- /dev/null +++ b/modules/colissimoetiquetage/CHANGELOG.md @@ -0,0 +1,73 @@ +#CHANGELOG + +## 2.2.0 - 15/12/2016 +- Allow to edit offset X and Y in configuration +- Allow to send Return label by email to customer +- Allow to re-generate labels +- Display CN23 link on admin order's page + +## 2.1.0 - 01/12/2016 +- Prestashop 1.7 compatibility +- Updated with latest webservice version (november 2016) + +## 2.0.2 - 31/11/2016 +- Add "Keep Add panel open in Colissimo Session" option +- Fix issue with 2.0.1 update file +- Minor fixes + +## 2.0.1 - 15/10/2016 +- Minor fixes +- Update french translation + +## 2.0.0 - 15/09/2016 +- Rebranding Colissimo +- Prise en charge du module Colissimo Pickup +- Comptatibilité Prestashop 1.7 + +## 1.5.2 - 31/08/2016 +- Add option to choose return type in case of international shipment +- Fix bug when Jquery may not be defined in Colissimo controller + +## 1.5.1 - 10/06/2016 +- Let users choose old A4 print format +- Removed useless dependancies + +## 1.5.0 - 31/06/2016 +- Prestashop 1.5 compatibility + +## 1.4.3 - 15/05/2016 +- Minor bugfixes +- Printing multiple labels now respects configuration (A4 or 10x15) +- Fix WS return message now properly encoded + +## 1.4.2 - 11/04/2016 +- More compatibility with Colissimo Flexibility module +- Bugfix mail with tracking informations not always sent +- Merged PDF now use rand name to avoid cache issues + +## 1.4.1 - 05/04/2016 +- Compatibility with Colissimo Flexibilité module +- When you add order in session, order's weight is taken by default +- Minor bugfixes + +## 1.4.0 - 31/03/2016 +- Merge multiple labels in one file +- Rework CN23 management + +## 1.3.0 - 15/03/2016 +- Colissimo Returns generation + +## 1.2.0 - 03/03/2016 +- CN23 generation + +## 1.1.1 - 25/02/2016 +- Bugfix when updating weight with Mozilla Firefox + +## 1.1.0 - 01/12/2015 +- Compatibility with SoColissimo module +- Added "Mon commercant" +- Improved compatibility with PS 1.6.0.9 +- Fixed bug with support link in module configuration + +## 1.0.0 - 01/08/2015 +- First release diff --git a/modules/colissimoetiquetage/LICENCE.md b/modules/colissimoetiquetage/LICENCE.md new file mode 100644 index 00000000..f0057d6e --- /dev/null +++ b/modules/colissimoetiquetage/LICENCE.md @@ -0,0 +1,18 @@ +NOTICE OF LICENSE + +This source file is subject to a commercial license. +Use, copy, modification or distribution of this source file without written +license agreement is strictly forbidden. +In order to obtain a license, please contact us: simon@daig.re +........................................................................... +INFORMATION SUR LA LICENCE D'UTILISATION + +L'utilisation de ce fichier source est soumise a une licence commerciale. +Toute utilisation, reproduction, modification ou distribution du present +fichier source sans contrat de licence ecrit est expressement interdite. +Pour obtenir une licence, veuillez nous contacter a l'adresse: simon@daig.re + +@package Colissimo Suivi - Affranchissement & étiquetage +@author Simon Daigre +@copyright Copyright(c) 2015-2016 +Contact by Email : simon@daig.re \ No newline at end of file diff --git a/modules/colissimoetiquetage/README.md b/modules/colissimoetiquetage/README.md new file mode 100644 index 00000000..702b12e9 --- /dev/null +++ b/modules/colissimoetiquetage/README.md @@ -0,0 +1,10 @@ +# Readme +**Module Colissimo Suivi - Affranchissement & étiquetage** + +**Made by Simon Daigre** + +## Installation +Once you have buyed the module, you can find him automatically in your Prestashop back-office. +If he doesn't appear, download it in Prestashop Addons, and install it in your back-office (via Modules -> Add a module). + +In case of problems, don’t hesitate to contact me via Addons. \ No newline at end of file diff --git a/modules/colissimoetiquetage/classes/Colissimo_Autoload.php b/modules/colissimoetiquetage/classes/Colissimo_Autoload.php new file mode 100644 index 00000000..98b03a96 --- /dev/null +++ b/modules/colissimoetiquetage/classes/Colissimo_Autoload.php @@ -0,0 +1,32 @@ + array( + 'id' => '0', + 'name' => 'Pas de produit pour ce transporteur', + 'product_code' => '0', + ), + '1' => array( + 'id' => '1', + 'name' => 'Colissimo Domicile - sans signature - France', + 'product_code' => 'DOM', + ), + '2' => array( + 'id' => '2', + 'name' => 'Colissimo Access - sans signature - France', + 'product_code' => 'COLD', + ), + '3' => array( + 'id' => '3', + 'name' => 'Colissimo Domicile - avec signature - France', + 'product_code' => 'DOS', + ), + '4' => array( + 'id' => '4', + 'name' => 'Colissimo Access - avec signature - France', + 'product_code' => 'COL', + ), + '5' => array( + 'id' => '5', + 'name' => 'Colissimo - Point Retrait – A La Poste - France', + 'product_code' => 'BPR', + ), + '6' => array( + 'id' => '6', + 'name' => 'Colissimo - Point Retrait – en relais Pickup ou en consigne Pickup Station - France', + 'product_code' => 'A2P', + ), + '7' => array( + 'id' => '7', + 'name' => 'Colissimo Domicile - sans signature - Outre-Mer', + 'product_code' => 'COM', + ), + '8' => array( + 'id' => '8', + 'name' => 'Colissimo Domicile - avec signature - Outre-Mer', + 'product_code' => 'CDS', + ), + '9' => array( + 'id' => '9', + 'name' => 'Colissimo Eco OM - Outre-Mer', + 'product_code' => 'ECO' + ), + '10' => array( + 'id' => '10', + 'name' => 'Colissimo Expert International', + 'product_code' => 'COLI', + ), + '11' => array( + 'id' => '11', + 'name' => 'Colissimo - Point Retrait – en relais - International (Liste définie)', + 'product_code' => 'CMT', + ), + '12' => array( + 'id' => '12', + 'name' => 'Colissimo Domicile - sans signature - International (Liste définie)', + 'product_code' => 'DOM', + ), + '13' => array( + 'id' => '13', + 'name' => 'Colissimo Domicile - avec signature - International (Liste définie)', + 'product_code' => 'DOS', + ), + '14' => array( + 'id' => '14', + 'name' => 'Colissimo Point Retrait – en bureau de poste - International (Liste définie)', + 'product_code' => 'BDP', + ), + ); + + /** @var array */ + private static $returnTypeChoices = array( + '2' => array( + 'code' => '2', + 'name' => 'Retour payant en prioritaire', + ), + '3' => array( + 'code' => '3', + 'name' => 'Ne pas retourner', + ), + ); + + /** @var array */ + private static $returnTypes = array( + '1' => array( + 'id' => '1', + 'name' => 'Ne pas envoyer', + 'ws_value' => '', + ), + '2' => array( + 'id' => '2', + 'name' => 'Envoyer le PDF en pièce-jointe', + 'ws_value' => 'SendPDFByMail', + ), + '3' => array( + 'id' => '3', + 'name' => 'Envoyer le lien hypertexte', + 'ws_value' => 'SendPDFLinkByMail', + ), + + ); + + /** + * @param int $id_carrier + * @return string + * @throws PrestaShopModuleException + */ + public static function getProductCodeByCarrierId($id_carrier) + { + $carrier = new Carrier($id_carrier); + if (!Validate::isLoadedObject($carrier)) { + throw new PrestaShopModuleException('Can\'t load Carrier object'); + } + + $carriers = Tools::unSerialize(Configuration::get('COLISSIMOETQ_MAPPING_CARRIERS')); + + return (string)self::getProducts()[$carriers[(int)$carrier->id_reference]]['product_code']; + } + + /** + * @param int $id_carrier + * @return int + */ + public static function getProductIdByCarrierId($id_carrier) + { + $carrier = new Carrier($id_carrier); + if (!Validate::isLoadedObject($carrier)) { + throw new PrestaShopModuleException('Can\'t load Carrier object'); + } + + $carriers = Tools::unSerialize(Configuration::get('COLISSIMOETQ_MAPPING_CARRIERS')); + + return (int)self::getProducts()[$carriers[(int)$carrier->id_reference]]['id']; + } + + /** + * @return array + */ + public static function getAllCarriersId() + { + $colissimoCarriers = Tools::unSerialize(Configuration::get('COLISSIMOETQ_MAPPING_CARRIERS')); + foreach ($colissimoCarriers as $id_carrier => $id_colissimo_product) { + if ((int)$id_colissimo_product === 0) { + unset($colissimoCarriers[$id_carrier]); + } + } + + $carriers = Db::getInstance()->executeS( + 'SELECT c.`id_carrier` + FROM `'._DB_PREFIX_.'carrier` c + WHERE c.`id_reference` IN ('.implode(', ', array_map('intval', array_keys($colissimoCarriers))).')' + ); + + $carrierReturn = []; + foreach ($carriers as $carrier) { + $carrierReturn[] = (int)$carrier['id_carrier']; + } + + return $carrierReturn; + } + + /** + * @return array + */ + public static function getProducts() + { + return self::$laposte_products; + } + + /** + * @param int $id_product + * @return bool + */ + public static function isPickup($id_product) + { + return in_array(self::$laposte_products[$id_product]['product_code'], array('A2P', 'BPR', 'CMT', 'BDP')); + } + + /** + * @param int $id_product + * @return mixed + */ + public static function getProductName($id_product) + { + return self::getProducts()[$id_product]['name']; + } + + /** + * @return array + */ + public static function getListingSession() + { + $session = Db::getInstance()->executeS(' + SELECT css.*, + o.`reference`, cse.`tracking`, ad.`postcode`, + cse.`id_product`, + COALESCE(css.`weight`, 0) AS `weight`, + country.`iso_code`, + CONCAT(c.`firstname`, \' \', c.`lastname`) AS `customer` + FROM `'._DB_PREFIX_.'colissimo_session` css + LEFT JOIN `'._DB_PREFIX_.'colissimo_label` cse ON (cse.`id_label` = css.`id_label`) + LEFT JOIN `'._DB_PREFIX_.'orders` o ON (o.`id_order` = css.`id_order`) + LEFT JOIN `'._DB_PREFIX_.'customer` c ON (c.`id_customer` = o.`id_customer`) + LEFT JOIN `'._DB_PREFIX_.'address` ad ON (ad.`id_address` = o.`id_address_delivery`) + INNER JOIN `'._DB_PREFIX_.'country` country ON (ad.id_country = country.id_country) + WHERE cse.`id_label` != 0 + ORDER BY cse.`tracking` ASC' + ); + + $return = array(); + foreach ($session as $detail) { + if (!array_key_exists((int)$detail['id_product'], $return)) { + $return[$detail['id_product']] = array(); + } + + array_push($return[$detail['id_product']], array( + 'reference' => $detail['reference'], + 'customer' => $detail['customer'], + 'tracking' => $detail['tracking'], + 'postcode' => $detail['postcode'], + 'iso_pays' => $detail['iso_code'], + 'weight' => Tools::ps_round($detail['weight'], 2), + 'non_meca' => '0' + )); + } + + return $return; + } + + /** + * @return array + */ + public static function getReturnTypeChoices() + { + return self::$returnTypeChoices; + } + + /** + * @return array + */ + public static function getReturnType() + { + return self::$returnTypes; + } +} diff --git a/modules/colissimoetiquetage/classes/Colissimo_LabelWebservice.php b/modules/colissimoetiquetage/classes/Colissimo_LabelWebservice.php new file mode 100644 index 00000000..108c94c5 --- /dev/null +++ b/modules/colissimoetiquetage/classes/Colissimo_LabelWebservice.php @@ -0,0 +1,477 @@ + array( + 'id' => '1', + 'name' => 'Colissimo Points-relais', + ), + '2' => array( + 'id' => '2', + 'name' => 'Colissimo Intégration en webservice', + ), + '3' => array( + 'id' => '3', + 'name' => 'Colissimo Simplicité', + ) + ); + + /** + * Colissimo_LabelWebservice constructor. + */ + public function __construct() + { + $this->soap = new SoapClient($this->webServiceUrl, ["trace" => 1, "exception" => 0]); + } + + /** + * @param int $id_order + * @return string + */ + public function getDeliveryLabel($id_order) + { + $order = new Order($id_order); + $customer = new Customer($order->id_customer); + $address = new Address($order->id_address_delivery); + $session = new ColissimoSession(ColissimoSession::getIdByOrderId($id_order)); + + $label = [ + 'contractNumber' => Configuration::get('COLISSIMOETQ_NUM_CONTRAT'), + 'password' => Configuration::get('COLISSIMOETQ_PASS'), + 'outputFormat' => [ + 'x' => Configuration::get('COLISSIMOETQ_PRINT_OFFSET_X'), + 'y' => Configuration::get('COLISSIMOETQ_PRINT_OFFSET_Y'), + 'outputPrintingType' => Colissimo_Tools::getPrintFormat()['value_ws'], + ], + ]; + + $label['letter']['service'] = [ + 'productCode' => $this->getProductCode($order->id_cart, $order->id_carrier), + 'depositDate' => date('Y-m-d'), + 'transportationAmount' => Tools::ps_round($order->total_shipping, 2), + 'totalAmount' => Tools::ps_round($order->total_products, 2), + 'orderNumber' => $order->id, + 'commercialName' => Configuration::get('COLISSIMOETQ_SHOP_NAME'), + ]; + + if (in_array(Colissimo_LaPoste::getProductCodeByCarrierId($order->id_carrier), array('COLI', 'DOS', 'DOM'))) { + $label['letter']['service']['returnTypeChoice'] = Configuration::get('COLISSIMOETQ_RETURN_TYPE_CHOICE'); + } + + $label['letter']['parcel'] = [ + 'weight' => (float)$session->weight, + 'instructions' => Tools::substr($address->other, 0, 70), + ]; + + if (Colissimo_LaPoste::isPickup(Colissimo_LaPoste::getProductIdByCarrierId($order->id_carrier))) { + $label['letter']['parcel']['pickupLocationId'] = $this->getRelayInfos($order->id_cart); + } + + if (Country::getIsoById($address->id_country) != 'FR' && Configuration::get('COLISSIMOETQ_CN23_DESCRIPTION') != '') { + $currency = new Currency($order->id_currency); + + $label['letter']['customsDeclarations'] = array( + 'includeCustomsDeclarations' => '1', + 'contents' => array( + 'category' => array( + 'value' => 3, + ), + 'original' => array( + 'originalIdent' => 'A', + 'originalInvoiceNumber' => $order->reference, + 'originalInvoiceDate' => explode(' ', $order->date_add)[0], + 'originalParcelNumber' => $order->shipping_number, + ) + ), + ); + + foreach ($order->getOrderDetailList() as $orderDetail) { + $label['letter']['customsDeclarations']['contents']['article'][] = array( + 'description' => (string)$orderDetail['product_name'], + 'quantity' => (int)$orderDetail['product_quantity'], + 'weight' => Tools::ps_round((float)$orderDetail['product_weight'], 2), + 'value' => Tools::ps_round((float)$orderDetail['total_price_tax_incl'], 2), + 'hsCode' => '000000', + 'originCountry' => Country::getIsoById(Configuration::get('COLISSIMOETQ_SHOP_COUNTRY_ID')), + 'currency' => $currency->iso_code, + 'artref' => (string)$orderDetail['product_reference'], + 'originalIdent' => 'A', + ); + } + } + + $label['letter']['sender'] = array( + 'senderParcelRef' => $order->reference, + 'address' => array( + 'companyName' => Tools::substr(Configuration::get('COLISSIMOETQ_SHOP_NAME'), 0, 35), + 'line2' => Tools::substr(Configuration::get('COLISSIMOETQ_SHOP_ADDR1'), 0, 35), + 'line3' => Tools::substr(Configuration::get('COLISSIMOETQ_SHOP_ADDR2'), 0, 35), + 'countryCode' => Country::getIsoById(Configuration::get('COLISSIMOETQ_SHOP_COUNTRY_ID')), + 'city' => Tools::substr(Configuration::get('COLISSIMOETQ_SHOP_CITY'), 0, 35), + 'zipCode' => Configuration::get('COLISSIMOETQ_SHOP_POSTCODE'), + 'phoneNumber' => Colissimo_Tools::cleanPhoneNumber(Configuration::get('COLISSIMOETQ_SHOP_PHONE')), + 'mobileNumber' => Colissimo_Tools::cleanPhoneNumber(Configuration::get('COLISSIMOETQ_SHOP_PHONE_MOBILE')), + 'email' => Tools::substr(Configuration::get('COLISSIMOETQ_SHOP_EMAIL'), 0, 80), + 'language' => Country::getIsoById(Configuration::get('COLISSIMOETQ_SHOP_COUNTRY_ID')), + ), + ); + + $label['letter']['addressee'] = array( + 'address' => array( + 'companyName' => Tools::substr($address->company, 0, 35), + 'lastName' => Tools::substr($address->firstname, 0, 35), + 'firstName' => Tools::substr($address->lastname, 0, 29), + 'line2' => Tools::substr($address->address1, 0, 35), + 'line3' => Tools::substr($address->address2, 0, 35), + 'countryCode' => Country::getIsoById($address->id_country), + 'city' => Tools::substr($address->city, 0, 35), + 'zipCode' => $address->postcode, + 'phoneNumber' => Colissimo_Tools::cleanPhoneNumber($address->phone), + 'mobileNumber' => Colissimo_Tools::cleanPhoneNumber($address->phone_mobile, true) ?: (string)Configuration::get('COLISSIMOETQ_DEFAULT_PHONE'), + 'email' => Tools::substr($customer->email, 0, 80), + ), + ); + + return $this->generateLabel($label, $address->id_country); + } + + /** + * @param int $id_cart + * @return string + */ + private function getRelayInfos($id_cart) + { + switch ((int)Configuration::get('COLISSIMOETQ_PICKUP_SOURCE')) { + case '1': { + if (Module::isEnabled('colissimorelay')) { + $pickup = new ColissimoPickup(ColissimoPickup::getIdByCartId((int)$id_cart)); + + if (!Validate::isLoadedObject($pickup)) { + die(Tools::displayError('Aucun point relais indiqué sur cet envoi.')); + } + + return sprintf('%06s', $pickup->id_point_pickup); + } + } break; + case '2': { + if (Module::isEnabled('soflexibilite')) { + if ((int)Configuration::get('SOFLEXIBILITE_MODE') == 1) { + return sprintf('%06s', (string)Db::getInstance()->getValue(' + SELECT sc.prid + FROM `'._DB_PREFIX_.'socolissimo_delivery_info` sc + WHERE sc.id_cart = '.(int)$id_cart + )); + } else { + return sprintf('%06s', (string)Db::getInstance()->getValue(' + SELECT sc.point_id + FROM `'._DB_PREFIX_.'so_delivery` sc + WHERE sc.cart_id = '.(int)$id_cart + )); + } + } + } break; + case '3': { + if (Module::isEnabled('socolissimo')) { + return sprintf('%06s', (string)Db::getInstance()->getValue(' + SELECT sc.prid + FROM `'._DB_PREFIX_.'socolissimo_delivery_info` sc + WHERE sc.id_cart = '.(int)$id_cart + )); + } + } break; + default: { + die(Tools::displayError('Aucun point relais indiqué sur cet envoi.')); + } + } + } + + /** + * @param int $id_cart + * @return string + */ + private function getProductCode($id_cart, $id_carrier) + { + $productCode = ''; + switch ((int)Configuration::get('COLISSIMOETQ_PICKUP_SOURCE')) { + case '1': { + $productCode = Colissimo_LaPoste::getProductCodeByCarrierId($id_carrier); + } break; + case '2': { + if (Module::isEnabled('soflexibilite')) { + if ((int)Configuration::get('SOFLEXIBILITE_MODE') == 1) { + $productCode = (string)Db::getInstance()->getValue(' + SELECT sc.delivery_mode + FROM `'._DB_PREFIX_.'socolissimo_delivery_info` sc + WHERE sc.id_cart = '.(int)$id_cart + ); + } else { + $productCode = (string)Db::getInstance()->getValue(' + SELECT sc.type + FROM `'._DB_PREFIX_.'so_delivery` sc + WHERE sc.cart_id = '.(int)$id_cart + ); + } + } + } break; + case '3': { + if (Module::isEnabled('socolissimo')) { + $productCode = (string)Db::getInstance()->getValue(' + SELECT sc.delivery_mode + FROM `'._DB_PREFIX_.'socolissimo_delivery_info` sc + WHERE sc.id_cart = '.(int)$id_cart + ); + } + } break; + default: { + die(Tools::displayError('Aucun code produit indiqué sur cet envoi.')); + } + } + + if ($productCode == '' || $productCode == false) { + return Colissimo_LaPoste::getProductCodeByCarrierId($id_carrier); + } else { + return $productCode; + } + } + + /** + * @param int $id_order + * @return string + */ + public function getReturnLabel($id_order) + { + $order = new Order($id_order); + $customer = new Customer($order->id_customer); + + if (Module::isEnabled('colissimopickup')) { + if (ColissimoPickup::getIdByCartId($order->id_cart)) { + $address = new Address($order->id_address_invoice); + } else { + $address = new Address($order->id_address_delivery); + } + } else { + $address = new Address($order->id_address_delivery); + } + + if (!Validate::isLoadedObject($address)) { + die(Tools::displayError('Invalid Address object.')); + } + + $label = array( + 'contractNumber' => Configuration::get('COLISSIMOETQ_NUM_CONTRAT'), + 'password' => Configuration::get('COLISSIMOETQ_PASS'), + 'outputFormat' => array( + 'outputPrintingType' => Colissimo_Tools::getPrintFormat()['value_ws'], + 'returnType' => Configuration::get('COLISSIMOETQ_RETURN_TYPE'), + ), + ); + + $label['letter']['service'] = array( + 'productCode' => Country::getIsoById($address->id_country) == 'FR' ? 'CORE' : 'CORI', + 'depositDate' => date('Y-m-d'), + 'transportationAmount' => Tools::ps_round($order->total_shipping, 2), + 'totalAmount' => Tools::ps_round($order->total_products, 2), + 'orderNumber' => $order->id, + 'commercialName' => Configuration::get('COLISSIMOETQ_SHOP_NAME'), + ); + + $label['letter']['parcel'] = array( + 'weight' => $order->getTotalWeight() ?: 1, + ); + + if (Country::getIsoById($address->id_country) != 'FR' && Configuration::get('COLISSIMOETQ_CN23_DESCRIPTION') != '') { + $currency = new Currency($order->id_currency); + + $label['letter']['customsDeclarations'] = array( + 'includeCustomsDeclarations' => '1', + 'importersReference' => '', + 'importersContact' => '', + 'officeOrigin' => '', + 'invoiceNumber' => '', + 'licenceNumber' => '', + 'certificatNumber' => '', + 'contents' => array( + 'category' => array( + 'value' => 6, + ), + 'original' => array( + 'originalIdent' => 'A', + 'originalInvoiceNumber' => $order->reference, + 'originalInvoiceDate' => explode(' ', $order->date_add)[0], + 'originalParcelNumber' => $order->shipping_number, + ) + ), + ); + + foreach ($order->getOrderDetailList() as $orderDetail) { + $label['letter']['customsDeclarations']['contents']['article'][] = array( + 'description' => Tools::substr(preg_replace('/[^a-zA-Z0-9]+/', ' ', (string)$orderDetail['product_name']), 0, 63), + 'quantity' => (int)$orderDetail['product_quantity'], + 'weight' => Tools::ps_round((float)$orderDetail['product_weight'], 2), + 'value' => /*Tools::ps_round((float)$orderDetail['total_price_tax_incl'], 2)*/ 1, + 'hsCode' => '50000001', + 'originCountry' => Country::getIsoById(Configuration::get('COLISSIMOETQ_SHOP_COUNTRY_ID')), + 'currency' => $currency->iso_code, + 'artref' => (string)$orderDetail['product_reference'], + 'originalIdent' => 'A', + ); + } + } + + $label['letter']['sender'] = array( + 'senderParcelRef' => $order->reference, + 'address' => array( + 'companyName' => Tools::substr($address->company, 0, 35), + 'lastName' => Tools::substr($address->firstname, 0, 35), + 'firstName' => Tools::substr($address->lastname, 0, 29), + 'line2' => Tools::substr($address->address1, 0, 35), + 'line3' => Tools::substr($address->address2, 0, 35), + 'countryCode' => Country::getIsoById($address->id_country), + 'city' => Tools::substr($address->city, 0, 35), + 'zipCode' => $address->postcode, + 'phoneNumber' => Colissimo_Tools::cleanPhoneNumber($address->phone), + 'mobileNumber' => Colissimo_Tools::cleanPhoneNumber($address->phone_mobile), + 'email' => Tools::substr($customer->email, 0, 80), + ), + ); + + $label['letter']['addressee'] = array( + 'address' => array( + 'companyName' => Tools::substr(Configuration::get('COLISSIMOETQ_SHOP_NAME'), 0, 35), + 'line2' => Tools::substr(Configuration::get('COLISSIMOETQ_SHOP_ADDR1'), 0, 35), + 'line3' => Tools::substr(Configuration::get('COLISSIMOETQ_SHOP_ADDR2'), 0, 35), + 'countryCode' => Country::getIsoById(Configuration::get('COLISSIMOETQ_SHOP_COUNTRY_ID')), + 'city' => Tools::substr(Configuration::get('COLISSIMOETQ_SHOP_CITY'), 0, 35), + 'zipCode' => Configuration::get('COLISSIMOETQ_SHOP_POSTCODE'), + 'phoneNumber' => Colissimo_Tools::cleanPhoneNumber(Configuration::get('COLISSIMOETQ_SHOP_PHONE')), + 'email' => Tools::substr(Configuration::get('COLISSIMOETQ_SHOP_EMAIL'), 0, 80), + 'language' => Country::getIsoById(Configuration::get('COLISSIMOETQ_SHOP_COUNTRY_ID')), + ), + ); + + return $this->generateLabel($label, $address->id_country); + } + + /** + * @param array $label + * @param int $id_country + * @return string + */ + private function generateLabel($label, $id_country) + { + try { + $this->soap->generateLabel(array('generateLabelRequest' => $label)); + } catch (Exception $ex) { + // merci à La Poste de ne pas respecter la norme SOAP + //d($this->soap->__getLastRequest()); + //d($this->soap->__getLastResponse()); + + $return = $this->decoderRetour($this->soap->__getLastResponse()); + + if ($return->messages->id != 0) { + die('Erreur retournée par le webservice Colissimo pour la commande n° '.$label['letter']['service']['orderNumber'].': '.(string)$return->messages->messageContent); + } else { + if (!empty($return->labelResponse->label)) { + self::saveLabel($this->soap->__getLastResponse(), (string)$return->labelResponse->parcelNumber); + } + + if (Country::getIsoById($id_country) != 'FR') { + self::saveCN23($this->soap->__getLastResponse(), (string)$return->labelResponse->parcelNumber); + } + + return (string)$return->labelResponse->parcelNumber; + } + } + } + + /** + * @param string $return + * @param string $filename + */ + private function saveLabel($return, $filename) + { + $start = strpos($return, '%PDF-1.3'); + $end = strpos($return, '%%EOF'); + + $this->saveAttachment(substr($return, $start, $end), $filename); + } + + /** + * @param string $return + * @param string $filename + */ + private function saveCN23($return, $filename) + { + $start = strrpos($return, '%PDF-1.4'); + $end = strrpos($return, '%%EOF'); + + $this->saveAttachment(substr($return, $start, $end), $filename.'-cn23'); + } + + /** + * @param string $out + * @param string $filename + */ + private function saveAttachment($out, $filename) + { + $fp = fopen(_PS_MODULE_DIR_.'colissimoetiquetage/download/'.$filename.'.pdf', 'w'); + fwrite($fp, trim($out)); + fclose($fp); + } + + /** + * @param string $return + * @return SimpleXMLElement + */ + protected function decoderRetour($return) + { + $start = strpos($return, '') + 16; + $return = substr($return, $start, ($end - $start)); + + $xml = new SimpleXMLElement($return); + return $xml->xpath("//*[name()='return']")[0]; + } + + /** + * @return array + */ + public static function getPickupSources() + { + return self::$pickupSources; + } +} diff --git a/modules/colissimoetiquetage/classes/Colissimo_PDF.php b/modules/colissimoetiquetage/classes/Colissimo_PDF.php new file mode 100644 index 00000000..9f58c89e --- /dev/null +++ b/modules/colissimoetiquetage/classes/Colissimo_PDF.php @@ -0,0 +1,142 @@ +context = Context::getContext(); + $this->pdf = new mPDF('BLANK', $format.'-'.$orientation, $font_size, 5, 5, 5, 5, 5, 5, 5); + } + + public function genererPDFBordereau() + { + if (ColissimoSession::getTotalColis() == 0) { + die('Erreur: Aucun colis à envoyer.'); + } + + $this->context->smarty->assign( + array( + 'expediteur' => Colissimo_Tools::getShopAddress(), + 'infos' => array( + 'site_pec' => (string)Configuration::get('COLISSIMOETQ_SITE_PEC_CODE'), + 'libelle_pec' => (string)Configuration::get('COLISSIMOETQ_SITE_PEC_LIBELLE'), + 'num_client' => (int)Configuration::get('COLISSIMOETQ_NUM_CONTRAT'), + 'num_bordereau' => (int)Colissimo_Tools::getNumBordereau(), + 'date' => date('d/m/Y'), + ), + 'expeditions' => array( + 'liste' => Colissimo_LaPoste::getListingSession(), + 'total_colis' => ColissimoSession::getTotalColis(), + 'total_poids' => ColissimoSession::getTotalWeight(), + ) + ) + ); + + // enregistrement en pdf + $template = $this->context->smarty->fetch(_PS_MODULE_DIR_.'colissimoetiquetage/pdf/bordereau.tpl'); + $this->pdf->writeHTML($template); + + $this->pdf->Output(_PS_MODULE_DIR_.'colissimoetiquetage/download/bordereau.pdf', 'F'); + } + + /** + * @param array|int $sessions_id + * @return int + */ + public function mergeMultiplesPDF($sessions_id) + { + if (is_array($sessions_id)) { + $files_total = sizeof($sessions_id); + $file_number = 1; + $positionLeft = true; + + $this->pdf->SetImportUse(); + + foreach ($sessions_id as $session_id) { + $session = new ColissimoSession($session_id); + + if (Validate::isLoadedObject($session) && $session->isLabelGenerated()) { + $label = new ColissimoLabel($session->id_label); + $file = $label->getLabelPath(); + + if (file_exists($file)) { + $pages_number = $this->pdf->SetSourceFile($file); + + for ($i = 1; $i <= $pages_number; $i++) { + $tplId = $this->pdf->ImportPage($i); + + if ((int)Colissimo_Tools::getPrintFormat()['id'] == 3) { + if ($positionLeft == true) { + $this->pdf->UseTemplate($tplId, '10', '0', '135', '205'); + + $positionLeft = false; + } else { + $this->pdf->UseTemplate($tplId, '148', '0', '135', '205'); + + if (($file_number < $files_total) || ($i != $pages_number)) { + $this->pdf->WriteHTML(''); + } + + $positionLeft = true; + } + } else { + $this->pdf->UseTemplate($tplId); + + if (($file_number < $files_total) || ($i != $pages_number)) { + $this->pdf->WriteHTML(''); + } + } + } + } + + $file_number++; + } + } + + $rand = rand(); + $this->pdf->Output(_PS_MODULE_DIR_.'colissimoetiquetage/download/temp_'.$rand.'.pdf', 'F'); + return $rand; + } + } +} diff --git a/modules/colissimoetiquetage/classes/Colissimo_Tools.php b/modules/colissimoetiquetage/classes/Colissimo_Tools.php new file mode 100644 index 00000000..bea59418 --- /dev/null +++ b/modules/colissimoetiquetage/classes/Colissimo_Tools.php @@ -0,0 +1,181 @@ + array( + 'id' => '1', + 'name' => '1 étiquette par page 10x15', + 'value_ws' => 'PDF_10x15_300dpi', + 'value_out' => 'PDF_10x15_300dpi', + ), + '2' => array( + 'id' => '2', + 'name' => '1 étiquette par page A4', + 'value_ws' => 'PDF_A4_300dpi', + 'value_out' => 'PDF_A4_300dpi', + ), + '3' => array( + 'id' => '3', + 'name' => '2 étiquettes par page A4', + 'value_ws' => 'PDF_A4_300dpi', + 'value_out' => 'PDF_A4_300dpi', + ), + ); + + /** + * @param int $id_order + * @return array + * @throws PrestaShopException + */ + public static function generateLabel($id_order) + { + if (!Validate::isInt($id_order)) { + die(Tools::displayError('Invalid order ID: '.$id_order)); + } + + $order = new Order($id_order); + if (Colissimo_LaPoste::getProductIdByCarrierId($order->id_carrier) === 0) { + die('No La Poste product configured for this carrier.'); + } + + $address = new Address($order->id_address_delivery); + $ws = new Colissimo_LabelWebservice(); + $tracking = (string)$ws->getDeliveryLabel($id_order); + + if (!Validate::isTrackingNumber($tracking)) { + die(Tools::displayError('Invalid tracking number: ').$tracking); + } + + // enregistrement des données + $label = new ColissimoLabel(); + $label->id_order = (int)$id_order; + $label->id_product = Colissimo_LaPoste::getProductIdByCarrierId($order->id_carrier); + $label->id_country = $address->id_country; + $label->tracking = $tracking; + $label->add(); + + // mise à jour de la commande + $order->shipping_number = $tracking; + $order->update(); + + $order_carrier = new OrderCarrier($order->getIdOrderCarrier()); + $order_carrier->tracking_number = $tracking; + if ($order_carrier->update()) { + // Send mail to customer + $customer = new Customer((int)$order->id_customer); + $carrier = new Carrier((int)$order->id_carrier, $order->id_lang); + if (!Validate::isLoadedObject($customer)) { + throw new PrestaShopException('Can\'t load Customer object'); + } + if (!Validate::isLoadedObject($carrier)) { + throw new PrestaShopException('Can\'t load Carrier object'); + } + $templateVars = array( + '{followup}' => str_replace('@', $order->shipping_number, $carrier->url), + '{firstname}' => $customer->firstname, + '{lastname}' => $customer->lastname, + '{id_order}' => $order->id, + '{shipping_number}' => $order->shipping_number, + '{order_name}' => $order->getUniqReference() + ); + if (@Mail::Send((int)$order->id_lang, 'in_transit', Mail::l('Package in transit', (int)$order->id_lang), $templateVars, + $customer->email, $customer->firstname.' '.$customer->lastname, null, null, null, null, + _PS_MAIL_DIR_, true, (int)$order->id_shop)) { + Hook::exec('actionAdminOrdersTrackingNumberUpdate', array('order' => $order, 'customer' => $customer, 'carrier' => $carrier), null, false, true, false, $order->id_shop); + } + } + + $order->setCurrentState((int)Configuration::get('COLISSIMOETQ_STATUS_AFTER'), (int)Context::getContext()->employee->id); + + $return = array(); + $return[$id_order]['id_label'] = $label->id; + $return[$id_order]['tracking'] = $label->getTrackingFormatted(); + $return[$id_order]['date_add'] = $label->date_add; + $return[$id_order]['url_pdf'] = $label->getLabelUrl(); + + return $return; + } + + /** + * @return int + */ + public static function getNumBordereau() + { + $num = (int)Configuration::get('COLISSIMOETQ_NUM_BORDEREAU'); + Configuration::updateValue('COLISSIMOETQ_NUM_BORDEREAU', $num+1); + + return $num; + } + + /** + * @return array + */ + public static function getShopAddress() + { + return array( + 'company' => Configuration::get('COLISSIMOETQ_SHOP_NAME'), + 'address1' => Configuration::get('COLISSIMOETQ_SHOP_ADDR1'), + 'address2' => Configuration::get('COLISSIMOETQ_SHOP_ADDR2'), + 'postcode' => Configuration::get('COLISSIMOETQ_SHOP_POSTCODE'), + 'city' => Configuration::get('COLISSIMOETQ_SHOP_CITY'), + 'phone' => Configuration::get('COLISSIMOETQ_SHOP_PHONE'), + 'email' => Configuration::get('COLISSIMOETQ_SHOP_EMAIL') + ); + } + + /** + * @return string + */ + public static function getPrintFormat() + { + return self::$printFormats[Configuration::get('COLISSIMOETQ_PRINT_FORMAT')]; + } + + /** + * @param string $phone_number + * @return string + */ + public static function cleanPhoneNumber($phone_number, $check_mobile = false) + { + // add check mobile to verify extension + if ($check_mobile) { + $tmp_phone_number = preg_replace('/[^0-9]/', '', $phone_number); + $extension = substr($tmp_phone_number, 0, 2); + if ($extension == '06' || $extension == '07') { + return $tmp_phone_number; + } else { + return Configuration::get('COLISSIMOETQ_DEFAULT_PHONE'); + } + } else { + return preg_replace('/[^0-9]/', '', $phone_number); + } + } +} diff --git a/modules/colissimoetiquetage/classes/index.php b/modules/colissimoetiquetage/classes/index.php new file mode 100644 index 00000000..264ff3f6 --- /dev/null +++ b/modules/colissimoetiquetage/classes/index.php @@ -0,0 +1,35 @@ + +* @copyright 2007-2014 PrestaShop SA +* @license http://opensource.org/licenses/osl-3.0.php Open Software License (OSL 3.0) +* International Registered Trademark & Property of PrestaShop SA +*/ + +header("Expires: Mon, 26 Jul 1997 05:00:00 GMT"); +header("Last-Modified: ".gmdate("D, d M Y H:i:s")." GMT"); + +header("Cache-Control: no-store, no-cache, must-revalidate"); +header("Cache-Control: post-check=0, pre-check=0", false); +header("Pragma: no-cache"); + +header("Location: ../"); +exit; diff --git a/modules/colissimoetiquetage/colissimoetiquetage.php b/modules/colissimoetiquetage/colissimoetiquetage.php new file mode 100644 index 00000000..15d9480f --- /dev/null +++ b/modules/colissimoetiquetage/colissimoetiquetage.php @@ -0,0 +1,797 @@ +name = 'colissimoetiquetage'; + $this->tab = 'shipping_logistics'; + $this->version = '2.2.0'; + $this->author = 'Simon Daigre'; + $this->module_key = 'bf5a11fffbf6c6fe7a24465108979835'; + + $config = Configuration::getMultiple(array('COLISSIMOETQ_NUM_CONTRAT', 'COLISSIMOETQ_PASS')); + + if (isset($config['COLISSIMOETQ_NUM_CONTRAT'])) { + $this->colissimo_num_contrat = $config['COLISSIMOETQ_NUM_CONTRAT']; + } + if (isset($config['COLISSIMOETQ_PASS'])) { + $this->colissimo_pass = $config['COLISSIMOETQ_PASS']; + } + + $this->bootstrap = true; + parent::__construct(); + + $this->protocol = Configuration::get('PS_SSL_ENABLED') ? 'https://' : 'http://'; + $this->url = $this->protocol.htmlspecialchars($_SERVER['HTTP_HOST'], ENT_COMPAT, 'UTF-8').__PS_BASE_URI__.basename(_PS_MODULE_DIR_).'/'.$this->name.'/'; + + $this->displayName = $this->l('Colissimo • Labels'); + $this->description = $this->l('Allow to generate easily your labels for La Poste Colissimo.'); + $this->confirmUninstall = $this->l('Are you sure to uninstall this module ?'); + + if (!isset($this->colissimo_num_contrat) || !isset($this->colissimo_pass) || empty($this->colissimo_num_contrat) || empty($this->colissimo_pass)) { + $this->warning = $this->l('Please enter your La Poste account number and your password in module configuration to use this module.'); + } + + $this->ps_versions_compliancy = array('min' => '1.5.0.0', 'max' => _PS_VERSION_); + } + + /** + * @return bool + */ + public function install() + { + if (Shop::isFeatureActive()) { + Shop::setContext(Shop::CONTEXT_ALL); + } + + $tab_session = new Tab(); + $tab_session->class_name = 'AdminColissimoSession'; + + foreach (Language::getLanguages(true) as $lang) { + $tab_session->name[(int)$lang['id_lang']] = $this->l('Colissimo • Labels'); + } + + $tab_session->id_parent = (int)Tab::getIdFromClassName('AdminParentShipping'); + $tab_session->module = $this->name; + $tab_session->add(); + + $tab_pdf = new Tab(); + $tab_pdf->class_name = 'AdminColissimoPdf'; + + foreach (Language::getLanguages(true) as $lang) { + $tab_pdf->name[(int)$lang['id_lang']] = $this->l('Colissimo PDF Controller'); + } + + $tab_pdf->id_parent = 0; + $tab_pdf->module = $this->name; + $tab_pdf->active = false; + $tab_pdf->add(); + + $tab_return = new Tab(); + $tab_return->class_name = 'AdminColissimoReturn'; + + foreach (Language::getLanguages(true) as $lang) { + $tab_return->name[(int)$lang['id_lang']] = $this->l('Colissimo • Returns'); + } + + $tab_return->id_parent = (int)Tab::getIdFromClassName('AdminParentShipping'); + $tab_return->module = $this->name; + $tab_return->add(); + + Configuration::updateValue('COLISSIMOETQ_MAPPING_STATUS', serialize(array(_PS_OS_PAYMENT_, _PS_OS_PREPARATION_))); + Configuration::updateValue('COLISSIMOETQ_STATUS_BEFORE', _PS_OS_PREPARATION_); + Configuration::updateValue('COLISSIMOETQ_STATUS_AFTER', _PS_OS_SHIPPING_); + + Configuration::updateValue('COLISSIMOETQ_MAPPING_CARRIERS', serialize(array())); + + Configuration::updateValue('COLISSIMOETQ_NUM_CONTRAT', ''); + Configuration::updateValue('COLISSIMOETQ_PASS', ''); + Configuration::updateValue('COLISSIMOETQ_SITE_PEC_CODE', ''); + Configuration::updateValue('COLISSIMOETQ_SITE_PEC_LIBELLE', ''); + + Configuration::updateValue('COLISSIMOETQ_KEEP_ADD_PANEL_OPEN', false); + Configuration::updateValue('COLISSIMOETQ_DEFAULT_PHONE', Configuration::get('PS_SHOP_PHONE')); + Configuration::updateValue('COLISSIMOETQ_RETURN_TYPE', 1); + Configuration::updateValue('COLISSIMOETQ_RETURN_TYPE_CHOICE', 2); + Configuration::updateValue('COLISSIMOETQ_PICKUP_SOURCE', 1); + + Configuration::updateValue('COLISSIMOETQ_SHOP_NAME', Configuration::get('PS_SHOP_NAME')); + Configuration::updateValue('COLISSIMOETQ_SHOP_ADDR1', Configuration::get('PS_SHOP_ADDR1')); + Configuration::updateValue('COLISSIMOETQ_SHOP_ADDR2', Configuration::get('PS_SHOP_ADDR2')); + Configuration::updateValue('COLISSIMOETQ_SHOP_POSTCODE', Configuration::get('PS_SHOP_CODE')); + Configuration::updateValue('COLISSIMOETQ_SHOP_CITY', Configuration::get('PS_SHOP_CITY')); + Configuration::updateValue('COLISSIMOETQ_SHOP_PHONE', Configuration::get('PS_SHOP_PHONE')); + Configuration::updateValue('COLISSIMOETQ_SHOP_EMAIL', Configuration::get('PS_SHOP_EMAIL')); + Configuration::updateValue('COLISSIMOETQ_SHOP_COUNTRY_ID', Configuration::get('PS_SHOP_COUNTRY_ID')); + + Configuration::updateValue('COLISSIMOETQ_PRINT_FORMAT', 5); + Configuration::updateValue('COLISSIMOETQ_PRINT_OFFSET_X', 0); + Configuration::updateValue('COLISSIMOETQ_PRINT_OFFSET_Y', 0); + + Configuration::updateValue('COLISSIMOETQ_NUM_BORDEREAU', 1); + + if (version_compare(_PS_VERSION_, '1.6.0.9', '<')) { + return ( + parent::install() + && $this->installDB() + && $this->registerHook('displayBackOfficeHeader') + && $this->registerHook('adminOrder') + ); + } else { + return ( + parent::install() + && $this->installDB() + && $this->registerHook('displayBackOfficeHeader') + && $this->registerHook('displayAdminOrderTabShip') + && $this->registerHook('displayAdminOrderContentShip') + ); + } + } + + /** + * @return bool + */ + public function installDB() + { + return Db::getInstance()->execute( + 'CREATE TABLE IF NOT EXISTS `'._DB_PREFIX_.'colissimo_label` ( + `id_label` INT(10) NOT NULL AUTO_INCREMENT, + `id_order` INT(10) NOT NULL, + `tracking` VARCHAR(13) NOT NULL, + `id_product` INT(10) NOT NULL, + `id_country` INT(10) NOT NULL, + `date_add` DATETIME NOT NULL, + PRIMARY KEY ( `id_label` ) + ) ENGINE = '._MYSQL_ENGINE_.' DEFAULT CHARSET = utf8;' + ) && Db::getInstance()->execute( + 'CREATE TABLE IF NOT EXISTS`'._DB_PREFIX_.'colissimo_session` ( + `id_session` INT(10) NOT NULL AUTO_INCREMENT, + `id_order` INT(10) NOT NULL, + `id_label` INT(10) NOT NULL, + `weight` DECIMAL(20,6) NOT NULL DEFAULT \'0.000000\', + `date_add` DATETIME NOT NULL, + PRIMARY KEY ( `id_session` ) + ) ENGINE = '._MYSQL_ENGINE_.' DEFAULT CHARSET = utf8;' + ) && Db::getInstance()->execute( + 'CREATE TABLE IF NOT EXISTS`'._DB_PREFIX_.'colissimo_return` ( + `id_return` INT(10) NOT NULL AUTO_INCREMENT, + `id_order` INT(10) NOT NULL, + `tracking` VARCHAR(13) NOT NULL, + `date_add` DATETIME NOT NULL, + PRIMARY KEY ( `id_return` ) + ) ENGINE = '._MYSQL_ENGINE_.' DEFAULT CHARSET = utf8;' + ); + } + + /** + * @return bool + */ + public function uninstall() + { + if (Shop::isFeatureActive()) { + Shop::setContext(Shop::CONTEXT_ALL); + } + + $tab_session = new Tab((int)Tab::getIdFromClassName('AdminColissimoSession')); + $tab_session->delete(); + + $tab_pdf = new Tab((int)Tab::getIdFromClassName('AdminColissimoPdf')); + $tab_pdf->delete(); + + $tab_retour = new Tab((int)Tab::getIdFromClassName('AdminColissimoReturn')); + $tab_retour->delete(); + + Configuration::deleteByName('COLISSIMOETQ_MAPPING_STATUS'); + Configuration::deleteByName('COLISSIMOETQ_STATUS_BEFORE'); + Configuration::deleteByName('COLISSIMOETQ_STATUS_AFTER'); + + Configuration::deleteByName('COLISSIMOETQ_MAPPING_CARRIERS'); + + Configuration::deleteByName('COLISSIMOETQ_NUM_CONTRAT'); + Configuration::deleteByName('COLISSIMOETQ_PASS'); + Configuration::deleteByName('COLISSIMOETQ_SITE_PEC_CODE'); + Configuration::deleteByName('COLISSIMOETQ_SITE_PEC_LIBELLE'); + + Configuration::deleteByName('COLISSIMOETQ_KEEP_ADD_PANEL_OPEN'); + Configuration::deleteByName('COLISSIMOETQ_DEFAULT_PHONE'); + Configuration::deleteByName('COLISSIMOETQ_RETURN_TYPE'); + Configuration::deleteByName('COLISSIMOETQ_RETURN_TYPE_CHOICE'); + Configuration::deleteByName('COLISSIMOETQ_PICKUP_SOURCE'); + + Configuration::deleteByName('COLISSIMOETQ_SHOP_NAME'); + Configuration::deleteByName('COLISSIMOETQ_SHOP_ADDR1'); + Configuration::deleteByName('COLISSIMOETQ_SHOP_ADDR2'); + Configuration::deleteByName('COLISSIMOETQ_SHOP_POSTCODE'); + Configuration::deleteByName('COLISSIMOETQ_SHOP_CITY'); + Configuration::deleteByName('COLISSIMOETQ_SHOP_PHONE'); + Configuration::deleteByName('COLISSIMOETQ_SHOP_EMAIL'); + Configuration::deleteByName('COLISSIMOETQ_SHOP_COUNTRY_ID'); + + Configuration::deleteByName('COLISSIMOETQ_PRINT_FORMAT'); + Configuration::deleteByName('COLISSIMOETQ_PRINT_OFFSET_X'); + Configuration::deleteByName('COLISSIMOETQ_PRINT_OFFSET_Y'); + + Configuration::deleteByName('COLISSIMOETQ_NUM_BORDEREAU'); + + Db::getInstance()->execute('DROP TABLE IF EXISTS `'._DB_PREFIX_.'colissimo_label`'); + Db::getInstance()->execute('DROP TABLE IF EXISTS `'._DB_PREFIX_.'colissimo_session`'); + Db::getInstance()->execute('DROP TABLE IF EXISTS `'._DB_PREFIX_.'colissimo_return`'); + + return parent::uninstall(); + } + + /** + * @param array $params + */ + public function hookDisplayBackOfficeHeader($params) + { + $this->context->controller->addCSS($this->_path.'views/css/colissimoetiquetage.css'); + + if (Tools::getValue('controller') == 'AdminColissimoSession') { + $this->context->controller->addJquery(); + $this->context->controller->addJS($this->_path.'views/js/colissimo_session.js'); + } + + if (Tools::getValue('controller') == 'AdminColissimoReturn') { + $this->context->controller->addJquery(); + $this->context->controller->addJS($this->_path.'views/js/colissimo_return.js'); + } + + if (Tools::strtolower(Tools::getValue('controller')) == 'adminorders') { + $this->context->controller->addJquery(); + $this->context->controller->addJS($this->_path.'views/js/colissimo_order.js'); + } + + if (Tools::getValue('configure') == $this->name) { + $this->context->controller->addJquery(); + $this->context->controller->addJS($this->_path.'views/js/colissimo_config.js'); + } + } + + /** + * @param array $params + * @return string + */ + public function hookDisplayAdminOrderTabShip($params) + { + return $this->display(__FILE__, 'order-shipping-tab.tpl'); + } + + /** + * @param array $params + * @return string + */ + public function hookDisplayAdminOrderContentShip($params) + { + $error = false; + if (!isset($this->colissimo_num_contrat) || !isset($this->colissimo_pass) || empty($this->colissimo_num_contrat) || empty($this->colissimo_pass)) { + $error = true; + } + + $this->context->smarty->assign( + array( + 'error' => $error, + 'colissimo_img' => $this->url.'views/img/', + 'colissimo_etq_url' => $this->context->link->getAdminLink('AdminColissimoPdf').'&ajax=1&action=createLabelFromOrder', + 'colissimo_return_url' => $this->context->link->getAdminLink('AdminColissimoPdf').'&ajax=1&action=createReturnLabelFromOrder', + 'id_order' => $params['order']->id, + 'data_etq' => $this->getLabel($params['order']->id), + 'data_return' => $this->getReturnLabel($params['order']->id) + ) + ); + + if (version_compare(_PS_VERSION_, '1.6', '<')) { + return $this->display(__FILE__, 'admin-order.tpl'); + } else { + return $this->display(__FILE__, 'order-shipping-content.tpl'); + } + } + + /** + * @param array $params + * @return string + */ + public function hookAdminOrder($params) + { + return $this->hookDisplayAdminOrderContentShip($params); + } + + /** + * @param int $id_order + * @return array + */ + public function getLabel($id_order) + { + $data = array( + 'exists' => false, + ); + + $label = new ColissimoLabel(ColissimoLabel::getIdByOrderId($id_order)); + + if (Validate::isLoadedObject($label)) { + $data['exists'] = true; + $data['url_pdf'] = $this->url.'download/'.$label->tracking.'.pdf'; + $data['tracking'] = $label->getTrackingFormatted(); + $data['date_add'] = $label->date_add; + + if (Country::getIsoById($label->id_country) !== 'FR') { + $data['url_cn23'] = $this->url.'download/'.$label->tracking.'-cn23.pdf'; + } + } + + return $data; + } + + /** + * @param int $id_order + * @return array + */ + public function getReturnLabel($id_order) + { + $data = array( + 'exists' => false, + ); + + $return = new ColissimoReturn(ColissimoReturn::getIdByOrderId($id_order)); + + if (Validate::isLoadedObject($return)) { + $data['exists'] = true; + $data['url_pdf'] = $this->url.'download/'.$return->tracking.'.pdf'; + $data['url_cn23'] = null; + $data['tracking'] = $return->getTrackingFormatted(); + $data['date_add'] = $return->date_add; + } + + return $data; + } + + /** + * @return string + */ + public function getContent() + { + $message = null; + + if (Tools::isSubmit('submit'.$this->name)) { + Configuration::updateValue('COLISSIMOETQ_STATUS_BEFORE', Tools::getValue('COLISSIMOETQ_STATUS_BEFORE')); + Configuration::updateValue('COLISSIMOETQ_STATUS_AFTER', Tools::getValue('COLISSIMOETQ_STATUS_AFTER')); + Configuration::updateValue('COLISSIMOETQ_MAPPING_STATUS', serialize(Tools::getValue(version_compare(_PS_VERSION_, '1.6.0.10', '<') ? 'COLISSIMOETQ_MAPPING_STATUS' : 'COLISSIMOETQ_MAPPING_STATUS_selected'))); + Configuration::updateValue('COLISSIMOETQ_KEEP_ADD_PANEL_OPEN', Tools::getValue('COLISSIMOETQ_KEEP_ADD_PANEL_OPEN')); + + Configuration::updateValue('COLISSIMOETQ_MAPPING_CARRIERS', serialize(Tools::getValue('COLISSIMOETQ_MAPPING_CARRIERS'))); + + Configuration::updateValue('COLISSIMOETQ_NUM_CONTRAT', Tools::getValue('COLISSIMOETQ_NUM_CONTRAT')); + Configuration::updateValue('COLISSIMOETQ_PASS', Tools::getValue('COLISSIMOETQ_PASS')); + Configuration::updateValue('COLISSIMOETQ_SITE_PEC_CODE', Tools::getValue('COLISSIMOETQ_SITE_PEC_CODE')); + Configuration::updateValue('COLISSIMOETQ_SITE_PEC_LIBELLE', Tools::strtoupper(Tools::getValue('COLISSIMOETQ_SITE_PEC_LIBELLE'))); + Configuration::updateValue('COLISSIMOETQ_DEFAULT_PHONE', Tools::getValue('COLISSIMOETQ_DEFAULT_PHONE')); + Configuration::updateValue('COLISSIMOETQ_RETURN_TYPE', Tools::getValue('COLISSIMOETQ_RETURN_TYPE')); + Configuration::updateValue('COLISSIMOETQ_RETURN_TYPE_CHOICE', Tools::getValue('COLISSIMOETQ_RETURN_TYPE_CHOICE')); + Configuration::updateValue('COLISSIMOETQ_PICKUP_SOURCE', Tools::getValue('COLISSIMOETQ_PICKUP_SOURCE')); + + Configuration::updateValue('COLISSIMOETQ_SHOP_NAME', Tools::getValue('COLISSIMOETQ_SHOP_NAME')); + Configuration::updateValue('COLISSIMOETQ_SHOP_ADDR1', Tools::getValue('COLISSIMOETQ_SHOP_ADDR1')); + Configuration::updateValue('COLISSIMOETQ_SHOP_ADDR2', Tools::getValue('COLISSIMOETQ_SHOP_ADDR2')); + Configuration::updateValue('COLISSIMOETQ_SHOP_POSTCODE', Tools::getValue('COLISSIMOETQ_SHOP_POSTCODE')); + Configuration::updateValue('COLISSIMOETQ_SHOP_CITY', Tools::getValue('COLISSIMOETQ_SHOP_CITY')); + Configuration::updateValue('COLISSIMOETQ_SHOP_PHONE', Tools::getValue('COLISSIMOETQ_SHOP_PHONE')); + Configuration::updateValue('COLISSIMOETQ_SHOP_EMAIL', Tools::getValue('COLISSIMOETQ_SHOP_EMAIL')); + Configuration::updateValue('COLISSIMOETQ_SHOP_COUNTRY_ID', Tools::getValue('COLISSIMOETQ_SHOP_COUNTRY_ID')); + + Configuration::updateValue('COLISSIMOETQ_PRINT_FORMAT', Tools::getValue('COLISSIMOETQ_PRINT_FORMAT')); + Configuration::updateValue('COLISSIMOETQ_PRINT_OFFSET_X', Tools::getValue('COLISSIMOETQ_PRINT_OFFSET_X')); + Configuration::updateValue('COLISSIMOETQ_PRINT_OFFSET_Y', Tools::getValue('COLISSIMOETQ_PRINT_OFFSET_Y')); + + $message = '
'.$this->l('The configuration has been updated.').'
'; + } + + $this->context->smarty->assign( + array( + 'is_configured' => (!isset($this->colissimo_num_contrat) || !isset($this->colissimo_pass) || empty($this->colissimo_num_contrat) || empty($this->colissimo_pass)), + 'tracking_conf' => $this->context->link->getAdminLink('AdminModules').'&configure=colissimosuivi', + ) + ); + + if (version_compare(_PS_VERSION_, '1.6', '<')) { + return $message.$this->display(__FILE__, 'configuration_infos.tpl').$this->renderForm(); + } else { + return $message.$this->display(__FILE__, 'configuration_infos.tpl').$this->display(__FILE__, 'configuration_navigation.tpl').$this->renderForm(); + } + } + + /** + * @return string + */ + public function renderForm() + { + $default_lang = (int)Configuration::get('PS_LANG_DEFAULT'); + + $fields_form[0]['form'] = array( + 'legend' => array( + 'title' => $this->l('Carriers configuration'), + 'icon' => 'icon-truck' + ), + ); + + $fields_form[0]['form']['input'] = array(); + foreach (Carrier::getCarriers($this->context->language->id, false, false, false, null, Carrier::ALL_CARRIERS) as $carrier) { + $fields_form[0]['form']['input'][] = array( + 'type' => 'select', + 'label' => $carrier['name'], + 'name' => 'COLISSIMOETQ_MAPPING_CARRIERS['.$carrier['id_reference'].']', + 'options' => array( + 'query' => Colissimo_LaPoste::getProducts(), + 'id' => 'id', + 'name' => 'name' + ), + ); + } + + $fields_form[0]['form']['submit'] = array( + 'title' => $this->l('Save'), + ); + + $fields_form[1]['form'] = array( + 'legend' => array( + 'title' => $this->l('Status configuration'), + 'icon' => 'icon-filter' + ), + 'input' => array( + array( + 'type' => 'select', + 'label' => $this->l('Order status before label generation'), + 'name' => 'COLISSIMOETQ_STATUS_BEFORE', + 'options' => array( + 'query' => OrderState::getOrderStates($this->context->language->id), + 'id' => 'id_order_state', + 'name' => 'name' + ), + 'required' => true + ), + array( + 'type' => 'select', + 'label' => $this->l('Order status after label generation'), + 'name' => 'COLISSIMOETQ_STATUS_AFTER', + 'options' => array( + 'query' => OrderState::getOrderStates($this->context->language->id), + 'id' => 'id_order_state', + 'name' => 'name' + ), + 'required' => true + ), + array( + 'type' => version_compare(_PS_VERSION_, '1.6.0.10', '<') ? 'select' : 'swap', + 'label' => $this->l('Status mapping'), + 'name' => version_compare(_PS_VERSION_, '1.6.0.10', '<') ? 'COLISSIMOETQ_MAPPING_STATUS[]' : 'COLISSIMOETQ_MAPPING_STATUS', + 'required' => false, + 'multiple' => true, + 'options' => array( + 'query' => OrderState::getOrderStates($this->context->language->id), + 'id' => 'id_order_state', + 'name' => 'name' + ), + 'desc' => $this->l('Select available status to create label in Carriers -> Colissimo • Labels.'), + ), + ), + 'submit' => array( + 'title' => $this->l('Save'), + ) + ); + + $fields_form[2]['form'] = array( + 'legend' => array( + 'title' => $this->l('La Poste contract configuration'), + 'icon' => 'icon-file' + ), + 'input' => array( + array( + 'type' => 'text', + 'label' => $this->l('Coliposte login'), + 'name' => 'COLISSIMOETQ_NUM_CONTRAT', + 'required' => true + ), + array( + 'type' => 'text', + 'label' => $this->l('Coliposte password'), + 'name' => 'COLISSIMOETQ_PASS', + 'required' => true + ), + array( + 'type' => 'text', + 'label' => $this->l('Code site dépôt'), + 'name' => 'COLISSIMOETQ_SITE_PEC_CODE', + 'required' => true + ), + array( + 'type' => 'text', + 'label' => $this->l('Libellé site dépôt'), + 'name' => 'COLISSIMOETQ_SITE_PEC_LIBELLE', + 'required' => true + ), + ), + 'submit' => array( + 'title' => $this->l('Save'), + ) + ); + + $fields_form[3]['form'] = array( + 'legend' => array( + 'title' => $this->l('Address configuration'), + 'icon' => 'icon-home' + ), + 'input' => array( + array( + 'type' => 'text', + 'label' => $this->l('Name / Company name'), + 'name' => 'COLISSIMOETQ_SHOP_NAME', + 'required' => true + ), + array( + 'type' => 'text', + 'label' => $this->l('Address line 1'), + 'name' => 'COLISSIMOETQ_SHOP_ADDR1', + 'required' => true + ), + array( + 'type' => 'text', + 'label' => $this->l('Address line 2'), + 'name' => 'COLISSIMOETQ_SHOP_ADDR2', + ), + array( + 'type' => 'text', + 'label' => $this->l('Postcode'), + 'name' => 'COLISSIMOETQ_SHOP_POSTCODE', + 'class' => 'fixed-width-md', + 'maxlength' => 5, + 'required' => true + ), + array( + 'type' => 'text', + 'label' => $this->l('City'), + 'name' => 'COLISSIMOETQ_SHOP_CITY', + 'required' => true + ), + array( + 'type' => 'text', + 'label' => $this->l('Phone'), + 'name' => 'COLISSIMOETQ_SHOP_PHONE', + 'required' => true + ), + array( + 'type' => 'text', + 'label' => $this->l('Email'), + 'name' => 'COLISSIMOETQ_SHOP_EMAIL', + 'required' => true + ), + array( + 'type' => 'select', + 'label' => $this->l('Country'), + 'name' => 'COLISSIMOETQ_SHOP_COUNTRY_ID', + 'options' => array( + 'query' => Country::getCountries($this->context->language->id), + 'id' => 'id_country', + 'name' => 'name' + ), + 'required' => true + ), + ), + 'submit' => array( + 'title' => $this->l('Save'), + ) + ); + + $fields_form[4]['form'] = array( + 'legend' => array( + 'title' => $this->l('Print configuration'), + 'icon' => 'icon-print' + ), + 'input' => array( + array( + 'type' => 'select', + 'label' => $this->l('Labels print format'), + 'name' => 'COLISSIMOETQ_PRINT_FORMAT', + 'options' => array( + 'query' => Colissimo_Tools::$printFormats, + 'id' => 'id', + 'name' => 'name' + ), + ), + array( + 'type' => 'text', + 'label' => $this->l('Offset X axis'), + 'name' => 'COLISSIMOETQ_PRINT_OFFSET_X', + 'suffix' => 'pt', + ), + array( + 'type' => 'text', + 'label' => $this->l('Offset Y axis'), + 'name' => 'COLISSIMOETQ_PRINT_OFFSET_Y', + 'suffix' => 'pt', + ), + ), + 'submit' => array( + 'title' => $this->l('Save'), + ) + ); + $fields_form[5]['form'] = array( + 'legend' => array( + 'title' => $this->l('Settings'), + 'icon' => 'icon-cogs' + ), + 'input' => array( + array( + 'type' => 'radio', + 'label' => $this->l('Keep Add panel open in Colissimo Session'), + 'name' => 'COLISSIMOETQ_KEEP_ADD_PANEL_OPEN', + 'is_bool' => true, + 'class' => 't', + 'values' => array( + array( + 'id' => 'active_on', + 'value' => 1, + 'label' => $this->l('Enabled') + ), + array( + 'id' => 'active_off', + 'value' => 0, + 'label' => $this->l('Disabled') + ) + ), + ), + array( + 'type' => 'text', + 'label' => $this->l('Default mobile phone'), + 'name' => 'COLISSIMOETQ_DEFAULT_PHONE', + 'required' => true, + 'desc' => $this->l('This phone is sent to La Poste when your customer didn\'t set a mobile phone.'), + ), + array( + 'type' => 'select', + 'label' => $this->l('Return type'), + 'name' => 'COLISSIMOETQ_RETURN_TYPE', + 'options' => array( + 'query' => Colissimo_LaPoste::getReturnType(), + 'id' => 'id', + 'name' => 'name' + ), + 'desc' => $this->l('Send return label by email to your customer when you generate it.'), + 'required' => true, + ), + array( + 'type' => 'select', + 'label' => $this->l('Return type choice'), + 'name' => 'COLISSIMOETQ_RETURN_TYPE_CHOICE', + 'options' => array( + 'query' => Colissimo_LaPoste::getReturnTypeChoices(), + 'id' => 'code', + 'name' => 'name' + ), + 'required' => true, + 'desc' => $this->l('Action when shipment is undeliverable (only for international).'), + ), + array( + 'type' => 'select', + 'label' => $this->l('Pickup module'), + 'name' => 'COLISSIMOETQ_PICKUP_SOURCE', + 'options' => array( + 'query' => Colissimo_LabelWebservice::getPickupSources(), + 'id' => 'id', + 'name' => 'name' + ), + 'required' => true + ), + ), + 'submit' => array( + 'title' => $this->l('Save'), + ) + ); + + $helper = new HelperForm(); + $helper->module = $this; + $helper->name_controller = $this->name; + $helper->token = Tools::getAdminTokenLite('AdminModules'); + $helper->currentIndex = AdminController::$currentIndex.'&configure='.$this->name; + $helper->default_form_language = $default_lang; + $helper->allow_employee_form_lang = $default_lang; + $helper->title = $this->displayName; + $helper->show_toolbar = true; + $helper->toolbar_scroll = true; + $helper->submit_action = 'submit'.$this->name; + $helper->toolbar_btn = array( + 'save' => array( + 'desc' => $this->l('Save'), + 'href' => AdminController::$currentIndex.'&configure='.$this->name.'&save'.$this->name.'&token='.Tools::getAdminTokenLite('AdminModules'), + ), + 'back' => array( + 'href' => AdminController::$currentIndex.'&token='.Tools::getAdminTokenLite('AdminModules'), + 'desc' => $this->l('Back to list') + ) + ); + + $current = Tools::unSerialize(Configuration::get('COLISSIMOETQ_MAPPING_CARRIERS')); + foreach (Carrier::getCarriers($this->context->language->id, false, false, false, null, Carrier::ALL_CARRIERS) as $carrier) { + if (isset($current[$carrier['id_reference']])) { + $helper->fields_value['COLISSIMOETQ_MAPPING_CARRIERS['.$carrier['id_reference'].']'] = $current[$carrier['id_reference']]; + } else { + $helper->fields_value['COLISSIMOETQ_MAPPING_CARRIERS['.$carrier['id_reference'].']'] = 0; + } + } + + $helper->fields_value['COLISSIMOETQ_STATUS_BEFORE'] = Configuration::get('COLISSIMOETQ_STATUS_BEFORE'); + $helper->fields_value['COLISSIMOETQ_STATUS_AFTER'] = Configuration::get('COLISSIMOETQ_STATUS_AFTER'); + $helper->fields_value[version_compare(_PS_VERSION_, '1.6.0.10', '<') ? 'COLISSIMOETQ_MAPPING_STATUS[]' : 'COLISSIMOETQ_MAPPING_STATUS'] = is_array(Tools::unSerialize(Configuration::get('COLISSIMOETQ_MAPPING_STATUS'))) ? Tools::unSerialize(Configuration::get('COLISSIMOETQ_MAPPING_STATUS')) : array(); + + $helper->fields_value['COLISSIMOETQ_NUM_CONTRAT'] = Configuration::get('COLISSIMOETQ_NUM_CONTRAT'); + $helper->fields_value['COLISSIMOETQ_PASS'] = Configuration::get('COLISSIMOETQ_PASS'); + $helper->fields_value['COLISSIMOETQ_SITE_PEC_CODE'] = Configuration::get('COLISSIMOETQ_SITE_PEC_CODE'); + $helper->fields_value['COLISSIMOETQ_SITE_PEC_LIBELLE'] = Configuration::get('COLISSIMOETQ_SITE_PEC_LIBELLE'); + + $helper->fields_value['COLISSIMOETQ_KEEP_ADD_PANEL_OPEN'] = Configuration::get('COLISSIMOETQ_KEEP_ADD_PANEL_OPEN'); + $helper->fields_value['COLISSIMOETQ_DEFAULT_PHONE'] = Configuration::get('COLISSIMOETQ_DEFAULT_PHONE'); + $helper->fields_value['COLISSIMOETQ_RETURN_TYPE'] = Configuration::get('COLISSIMOETQ_RETURN_TYPE'); + $helper->fields_value['COLISSIMOETQ_RETURN_TYPE_CHOICE'] = Configuration::get('COLISSIMOETQ_RETURN_TYPE_CHOICE'); + $helper->fields_value['COLISSIMOETQ_PICKUP_SOURCE'] = Configuration::get('COLISSIMOETQ_PICKUP_SOURCE'); + + $helper->fields_value['COLISSIMOETQ_SHOP_NAME'] = Configuration::get('COLISSIMOETQ_SHOP_NAME'); + $helper->fields_value['COLISSIMOETQ_SHOP_ADDR1'] = Configuration::get('COLISSIMOETQ_SHOP_ADDR1'); + $helper->fields_value['COLISSIMOETQ_SHOP_ADDR2'] = Configuration::get('COLISSIMOETQ_SHOP_ADDR2'); + $helper->fields_value['COLISSIMOETQ_SHOP_POSTCODE'] = Configuration::get('COLISSIMOETQ_SHOP_POSTCODE'); + $helper->fields_value['COLISSIMOETQ_SHOP_CITY'] = Configuration::get('COLISSIMOETQ_SHOP_CITY'); + $helper->fields_value['COLISSIMOETQ_SHOP_PHONE'] = Configuration::get('COLISSIMOETQ_SHOP_PHONE'); + $helper->fields_value['COLISSIMOETQ_SHOP_PHONE_MOBILE'] = Configuration::get('COLISSIMOETQ_SHOP_PHONE_MOBILE'); + $helper->fields_value['COLISSIMOETQ_SHOP_EMAIL'] = Configuration::get('COLISSIMOETQ_SHOP_EMAIL'); + $helper->fields_value['COLISSIMOETQ_SHOP_COUNTRY_ID'] = Configuration::get('COLISSIMOETQ_SHOP_COUNTRY_ID'); + + $helper->fields_value['COLISSIMOETQ_PRINT_FORMAT'] = Configuration::get('COLISSIMOETQ_PRINT_FORMAT'); + $helper->fields_value['COLISSIMOETQ_PRINT_OFFSET_X'] = Configuration::get('COLISSIMOETQ_PRINT_OFFSET_X'); + $helper->fields_value['COLISSIMOETQ_PRINT_OFFSET_Y'] = Configuration::get('COLISSIMOETQ_PRINT_OFFSET_Y'); + + return $helper->generateForm($fields_form); + } +} diff --git a/modules/colissimoetiquetage/controllers/admin/AdminColissimoPdfController.php b/modules/colissimoetiquetage/controllers/admin/AdminColissimoPdfController.php new file mode 100644 index 00000000..291185ab --- /dev/null +++ b/modules/colissimoetiquetage/controllers/admin/AdminColissimoPdfController.php @@ -0,0 +1,170 @@ +id_label = $return[$session->id_order]['id_label']; + $session->update(); + + die(Tools::getValue('callback').'('.Tools::jsonEncode(array('console' => ob_get_clean(), 'return' => $return)).')'); + } catch (Exception $exception) { + die(Tools::getValue('callback').'('.Tools::jsonEncode(array('console' => ob_get_clean(), 'error' => (string)$exception->getMessage())).')'); + } + } + + + public function ajaxProcessCreateMultipleLabels() + { + try { + ob_start(); + $return = array(); + + foreach (Tools::getValue('colissimo_sessionBox') as $id_session) { + $session = new ColissimoSession($id_session); + + if (!$session->isLabelGenerated()) { + $return = Colissimo_Tools::generateLabel(ColissimoSession::getOrderIdById($id_session)); + + $session = new ColissimoSession($id_session); + $session->id_label = $return[$session->id_order]['id_label']; + $session->update(); + } + } + + die(Tools::getValue('callback').'('.Tools::jsonEncode(array('console' => ob_get_clean(),'return' => 'OK')).')'); + } catch (Exception $exception) { + die(Tools::getValue('callback').'('.Tools::jsonEncode(array('console' => ob_get_clean(), 'error' => (string)$exception->getMessage())).')'); + } + } + + public function ajaxProcessCreateLabelFromOrder() + { + try { + ob_start(); + $id_order = (int)Tools::getValue('id_order'); + $order = new Order($id_order); + + if (!Validate::isLoadedObject($order)) { + throw new PrestaShopException('Can\'t load Order object'); + } + + if (!ColissimoSession::getIdByOrderId($id_order)) { + $session = new ColissimoSession(); + $session->id_order = $id_order; + $session->weight = $order->getTotalWeight() ?: 1; + $session->add(); + } else { + $session = new ColissimoSession(ColissimoSession::getIdByOrderId($id_order)); + } + + // re-generate + $id_label = ColissimoLabel::getIdByOrderId($id_order); + if ($id_label !== 0 || $id_label !== false) { + $label = new ColissimoLabel($session->id_label); + $label->delete(); + } + + $return = Colissimo_Tools::generateLabel($id_order); + + $session->id_label = $return[$id_order]['id_label']; + $session->update(); + + // retour ajax + die(Tools::getValue('callback').'('.Tools::jsonEncode(array('console' => ob_get_clean(), 'return' => $return)).')'); + } catch (Exception $exception) { + die(Tools::getValue('callback').'('.Tools::jsonEncode(array('console' => ob_get_clean(), 'error' => (string)$exception->getMessage())).')'); + } + } + + public function ajaxProcessCreateReturnLabelFromOrder() + { + try { + ob_start(); + $id_order = (int)Tools::getValue('id_order'); + + if (!ColissimoReturn::getIdByOrderId($id_order)) { + $return = new ColissimoReturn(); + $return->id_order = $id_order; + + $ws = new Colissimo_LabelWebservice(); + $tracking = (string)$ws->getReturnLabel($id_order); + + if (!Validate::isTrackingNumber($tracking)) { + die(Tools::displayError('Invalid tracking number: ').$tracking); + } + + $return->tracking = $tracking; + $return->add(); + } else { + $return = new ColissimoReturn(ColissimoReturn::getIdByOrderId($id_order)); + } + + $data = array(); + $data[$id_order]['id_session'] = $return->id; + $data[$id_order]['tracking'] = $return->getTrackingFormatted(); + $data[$id_order]['date_add'] = $return->date_add; + $data[$id_order]['url_pdf'] = $return->getLabelUrl(); + + // retour ajax + die(Tools::getValue('callback').'('.Tools::jsonEncode(array('console' => ob_get_clean(), 'return' => $data)).')'); + } catch (Exception $exception) { + die(Tools::getValue('callback').'('.Tools::jsonEncode(array('console' => ob_get_clean(), 'error' => (string)$exception->getMessage())).')'); + } + } + + public function ajaxProcessGenererBordereau() + { + try { + $pdf = new Colissimo_PDF('A4', 8, 'P'); + $pdf->genererPDFBordereau(); + + $return = Tools::htmlentitiesUTF8($this->module->url.'download/bordereau.pdf'); + + // retour ajax + die(Tools::getValue('callback').'('.Tools::jsonEncode(array('console' => ob_get_clean(), 'return' => $return)).')'); + } catch (Exception $exception) { + die(Tools::getValue('callback').'('.Tools::jsonEncode(array('console' => ob_get_clean(), 'error' => (string)$exception->getMessage())).')'); + } + } +} diff --git a/modules/colissimoetiquetage/controllers/admin/AdminColissimoReturnController.php b/modules/colissimoetiquetage/controllers/admin/AdminColissimoReturnController.php new file mode 100644 index 00000000..09e42f2a --- /dev/null +++ b/modules/colissimoetiquetage/controllers/admin/AdminColissimoReturnController.php @@ -0,0 +1,257 @@ +context = Context::getContext(); + $this->table = 'colissimo_return'; + $this->className = 'ColissimoReturn'; + $this->identifier = 'id_return'; + $this->addRowAction('delete'); + $this->lang = false; + $this->bootstrap = true; + $this->list_no_link = true; + + parent::__construct(); + + $this->_select = ' + o.`reference`, + COALESCE(a.`id_return`, 0) AS `id_pdf`, + country_lang.`name` as `cname`, + CONCAT(c.`firstname`, \' \', c.`lastname`) AS `customer`, + CONCAT(ad.`address1`, \' \', ad.`address2`, \' \', ad.`postcode`, \' \', ad.`city`) as `address`'; + + $this->_join = ' + LEFT JOIN `'._DB_PREFIX_.'orders` o ON (o.`id_order` = a.`id_order`) + LEFT JOIN `'._DB_PREFIX_.'customer` c ON (c.`id_customer` = o.`id_customer`) + LEFT JOIN `'._DB_PREFIX_.'address` ad ON (ad.`id_address` = o.`id_address_delivery`) + INNER JOIN `'._DB_PREFIX_.'country` country ON (ad.id_country = country.id_country) + INNER JOIN `'._DB_PREFIX_.'country_lang` country_lang ON (country.`id_country` = country_lang.`id_country` AND country_lang.`id_lang` = '.(int)$this->context->language->id.')'; + + $this->_where = ' + AND o.id_shop = '.$this->context->shop->id; + + $this->fields_list = array( + 'id_order' => array( + 'title' => $this->l('ID'), + 'class' => 'fixed-width-xs order-id', + 'havingFilter' => true, + 'align' => 'center', + 'type' => 'int', + 'callback' => 'getOrderLink' + ), + 'reference' => array( + 'title' => $this->l('Reference'), + ), + 'customer' => array( + 'title' => $this->l('Customer'), + 'havingFilter' => true, + ), + 'address' => array( + 'title' => $this->l('Address'), + 'havingFilter' => true, + ), + 'cname' => array( + 'title' => $this->l('Country'), + 'havingFilter' => true, + ), + 'tracking' => array( + 'title' => $this->l('Tracking N°'), + 'callback' => 'getTrackingLink' + ), + 'id_pdf' => array( + 'title' => $this->l('PDF'), + 'align' => 'text-center', + 'callback' => 'printPDFIcons', + 'orderby' => false, + 'search' => false, + ) + ); + + $this->bulk_actions = array( + 'deleteFromReturn' => array( + 'text' => $this->l('Delete selection'), + 'confirm' => $this->l('Would you delete selected orders from session ?'), + 'icon' => 'icon-trash' + ), + ); + + if (version_compare(_PS_VERSION_, '1.6', '<')) { + $this->toolbar_btn['clean_session'] = array( + 'href' => self::$currentIndex.'&ajax=1&action=cleanSession&token='.$this->token, + 'desc' => $this->l('Clean session'), + 'icon' => 'process-icon-refresh' + ); + $this->toolbar_btn['configuration'] = array( + 'href' => $this->context->link->getAdminLink('AdminModules').'&configure='.$this->module->name, + 'desc' => $this->l('Configuration'), + 'icon' => 'process-icon-cogs' + ); + } + } + + public function initPageHeaderToolbar() + { + if (empty($this->display)) { + $this->page_header_toolbar_btn['clean_session'] = array( + 'href' => self::$currentIndex.'&ajax=1&action=cleansession&token='.$this->token, + 'desc' => $this->l('Clean session'), + 'icon' => 'process-icon-refresh' + ); + $this->page_header_toolbar_btn['configuration'] = array( + 'href' => $this->context->link->getAdminLink('AdminModules').'&configure='.$this->module->name, + 'desc' => $this->l('Configuration'), + 'icon' => 'process-icon-cogs' + ); + } + + parent::initPageHeaderToolbar(); + } + + public function ajaxProcessGetReturnLabelPdf() + { + $return = new ColissimoReturn((int)Tools::getValue('id_return')); + + if (Validate::isLoadedObject($return)) { + switch (Tools::getValue('function')) { + case 'view': + Tools::redirect($return->getLabelUrl()); + break; + + case 'download': + $etq_path = $return->getLabelPath(); + if (file_exists($etq_path)) { + header('Content-Description: File Transfer'); + header("Content-type: application/pdf"); + header('Content-Disposition: attachment; filename='.basename($etq_path)); + header('Cache-Control: private'); + header('Content-Length: '.filesize($etq_path)); + ob_clean(); + flush(); + readfile($etq_path); + exit; + } + + break; + + default: + exit; + break; + } + } else { + die(Tools::displayError('Error: Can\'t load Colissimo Return object.')); + } + } + + public function ajaxProcessCleanSession() + { + Db::getInstance()->execute('TRUNCATE '._DB_PREFIX_.'colissimo_return'); + Tools::redirectAdmin($this->context->link->getAdminLink('AdminColissimoReturn')); + } + + public function processBulkDeleteFromSession() + { + if (Tools::isSubmit('submitBulkdeleteFromSessioncolissimo_session') && Tools::getValue('colissimo_sessionBox')) { + foreach (Tools::getValue('colissimo_sessionBox') as $id_session) { + $session = new ColissimoSession((int)$id_session); + $session->delete(); + } + } + + Tools::redirectAdmin($this->context->link->getAdminLink('AdminColissimoSession')); + } + + /** + * @param int $id_order + * @return string + */ + public function getOrderLink($id_order) + { + return ''.$id_order.''; + } + + /** + * @param string $tracking + * @param array $details + * @return string + */ + public function getTrackingLink($tracking, $details) + { + $label = new ColissimoReturn($details['id_return']); + + if (Validate::isLoadedObject($label)) { + return ''.$label->getTrackingFormatted().''; + } else { + return $label->getTrackingFormatted(); + } + } + + /** + * @param int $id_return + * @return string + */ + public function printPDFIcons($id_return) + { + $this->context->smarty->assign( + array( + 'id_return' => $id_return, + ) + ); + + if (version_compare(_PS_VERSION_, '1.6', '<')) { + return $this->createTemplate('_print_pdf_icon-15.tpl')->fetch(); + } else { + return $this->createTemplate('_print_pdf_icon-16.tpl')->fetch(); + } + } + + /** + * @param string $tpl_name + * @return object|Smarty_Internal_Template + */ + public function createTemplate($tpl_name) + { + if (file_exists(_PS_MODULE_DIR_.$this->module->name.'/views/templates/admin/'.$tpl_name) && $this->viewAccess()) { + return $this->context->smarty->createTemplate(_PS_MODULE_DIR_.$this->module->name.'/views/templates/admin/'.$tpl_name, $this->context->smarty); + } elseif (file_exists(_PS_THEME_DIR_.'modules/'.$this->module->name.'/views/templates/admin/'.$tpl_name) && $this->viewAccess()) { + return $this->context->smarty->createTemplate(_PS_THEME_DIR_.'modules/'.$this->module->name.'/views/templates/admin/'.$tpl_name, $this->context->smarty); + } elseif (file_exists($this->getTemplatePath().$this->override_folder.$tpl_name) && $this->viewAccess()) { + return $this->context->smarty->createTemplate($this->getTemplatePath().$this->override_folder.$tpl_name, $this->context->smarty); + } + + return parent::createTemplate($tpl_name); + } +} diff --git a/modules/colissimoetiquetage/controllers/admin/AdminColissimoSessionController.php b/modules/colissimoetiquetage/controllers/admin/AdminColissimoSessionController.php new file mode 100644 index 00000000..c8ee4217 --- /dev/null +++ b/modules/colissimoetiquetage/controllers/admin/AdminColissimoSessionController.php @@ -0,0 +1,449 @@ +context = Context::getContext(); + $this->table = 'colissimo_session'; + $this->className = 'ColissimoSession'; + $this->identifier = 'id_session'; + $this->addRowAction('delete'); + $this->lang = false; + $this->bootstrap = true; + $this->list_no_link = true; + + parent::__construct(); + + $this->_select = ' + o.`reference`, cse.`tracking`, cse.`id_country`, + COALESCE(a.`weight`, 2) AS `weight`, + COALESCE(cse.`id_label`, 0) AS `id_pdf`, + country_lang.`name` as `cname`, + CONCAT(c.`firstname`, \' \', c.`lastname`) AS `customer`, + CONCAT(ad.`address1`, \' \', ad.`address2`, \' \', ad.`postcode`, \' \', ad.`city`) as `address`'; + + $this->_join = ' + LEFT JOIN `'._DB_PREFIX_.'colissimo_label` cse ON (cse.`id_label` = a.`id_label`) + LEFT JOIN `'._DB_PREFIX_.'orders` o ON (o.`id_order` = a.`id_order`) + LEFT JOIN `'._DB_PREFIX_.'customer` c ON (c.`id_customer` = o.`id_customer`) + LEFT JOIN `'._DB_PREFIX_.'address` ad ON (ad.`id_address` = o.`id_address_delivery`) + INNER JOIN `'._DB_PREFIX_.'country` country ON (ad.id_country = country.id_country) + INNER JOIN `'._DB_PREFIX_.'country_lang` country_lang ON (country.`id_country` = country_lang.`id_country` AND country_lang.`id_lang` = '.(int)$this->context->language->id.')'; + + $this->_where = ' + AND o.id_shop = '.$this->context->shop->id; + + $this->fields_list = array( + 'id_order' => array( + 'title' => $this->l('ID'), + 'class' => 'fixed-width-xs order-id', + 'havingFilter' => true, + 'align' => 'center', + 'type' => 'int', + 'callback' => 'getOrderLink' + ), + 'reference' => array( + 'title' => $this->l('Reference'), + ), + 'customer' => array( + 'title' => $this->l('Customer'), + 'havingFilter' => true, + ), + 'address' => array( + 'title' => $this->l('Address'), + 'havingFilter' => true, + ), + 'cname' => array( + 'title' => $this->l('Country'), + 'havingFilter' => true, + ), + 'tracking' => array( + 'title' => $this->l('Tracking N°'), + 'callback' => 'getTrackingLink' + ), + 'weight' => array( + 'title' => $this->l('Weight'), + 'type' => 'float', + 'suffix' => 'kg', + 'class' => 'fixed-width-xs weight-line', + 'havingFilter' => true, + 'search' => false, + ), + 'id_pdf' => array( + 'title' => $this->l('PDF'), + 'align' => 'text-center', + 'callback' => 'printPDFIcons', + 'orderby' => false, + 'search' => false, + ) + ); + + $this->bulk_actions = array( + 'deleteFromSession' => array( + 'text' => $this->l('Delete selection'), + 'confirm' => $this->l('Would you delete selected orders from session ?'), + 'icon' => 'icon-trash' + ), + ); + + if (version_compare(_PS_VERSION_, '1.6', '<')) { + $this->module = new ColissimoEtiquetage(); + + $this->toolbar_btn['add_order'] = array( + 'href' => '#', + 'desc' => $this->l('Add orders'), + 'class' => 'process-icon-new' + ); + $this->toolbar_btn['gen_labels'] = array( + 'href' => '#', + 'desc' => $this->l('Generate labels'), + 'class' => 'process-icon-paper-plane' + ); + $this->toolbar_btn['print_labels'] = array( + 'href' => '#', + 'desc' => $this->l('Print labels'), + 'class' => 'process-icon-print' + ); + $this->toolbar_btn['gen_bordereau'] = array( + 'href' => '#', + 'desc' => $this->l('Generate delivery slip'), + 'class' => 'process-icon-file' + ); + $this->toolbar_btn['clean_session'] = array( + 'href' => self::$currentIndex.'&ajax=1&action=cleansession&token='.$this->token, + 'desc' => $this->l('Clean session'), + 'class' => 'process-icon-refresh' + ); + $this->toolbar_btn['configuration'] = array( + 'href' => $this->context->link->getAdminLink('AdminModules').'&configure='.$this->module->name, + 'desc' => $this->l('Configuration'), + 'class' => 'process-icon-cogs' + ); + } + } + + public function initPageHeaderToolbar() + { + if (empty($this->display)) { + $this->page_header_toolbar_btn['add_order'] = array( + 'href' => '#', + 'desc' => $this->l('Add orders'), + 'icon' => 'process-icon-new' + ); + $this->page_header_toolbar_btn['gen_labels'] = array( + 'href' => '#', + 'desc' => $this->l('Generate labels'), + 'icon' => 'process-icon-paper-plane' + ); + $this->page_header_toolbar_btn['print_labels'] = array( + 'href' => '#', + 'desc' => $this->l('Print labels'), + 'icon' => 'process-icon-print' + ); + $this->page_header_toolbar_btn['gen_bordereau'] = array( + 'href' => '#', + 'desc' => $this->l('Generate delivery slip'), + 'icon' => 'process-icon-file' + ); + $this->page_header_toolbar_btn['clean_session'] = array( + 'href' => self::$currentIndex.'&ajax=1&action=cleansession&token='.$this->token, + 'desc' => $this->l('Clean session'), + 'icon' => 'process-icon-refresh' + ); + $this->page_header_toolbar_btn['configuration'] = array( + 'href' => $this->context->link->getAdminLink('AdminModules').'&configure='.$this->module->name, + 'desc' => $this->l('Configuration'), + 'icon' => 'process-icon-cogs' + ); + } + + parent::initPageHeaderToolbar(); + } + + /** + * @return string + */ + public function renderList() + { + $orders = Db::getInstance()->executeS( + 'SELECT o.`id_order`, o.`reference`, o.`date_add`, + country_lang.`name` as `cname`, + CONCAT(c.`firstname`, \' \', c.`lastname`) AS `customer`, + CONCAT(ad.`address1`, \' \', ad.`address2`, \' \', ad.`postcode`, \' \', ad.`city`) as `address` + FROM `'._DB_PREFIX_.'orders` o + LEFT JOIN `'._DB_PREFIX_.'customer` c ON (c.`id_customer` = o.`id_customer`) + LEFT JOIN `'._DB_PREFIX_.'address` ad ON (ad.`id_address` = o.`id_address_delivery`) + INNER JOIN `'._DB_PREFIX_.'country` country ON (ad.id_country = country.id_country) + INNER JOIN `'._DB_PREFIX_.'country_lang` country_lang ON (country.`id_country` = country_lang.`id_country` AND country_lang.`id_lang` = '.(int)$this->context->language->id.') + WHERE o.`id_order` NOT IN (SELECT `id_order` FROM `'._DB_PREFIX_.'colissimo_session`) + AND o.`current_state` IN ('.implode(', ', array_map('intval', Tools::unSerialize(Configuration::get('COLISSIMOETQ_MAPPING_STATUS')))).') + AND o.id_shop = '.$this->context->shop->id.' + AND o.id_carrier IN ('.implode(', ', array_map('intval', Colissimo_LaPoste::getAllCarriersId())).')' + ); + + $this->context->smarty->assign( + [ + 'config_state' => (isset($this->module->colissimo_num_contrat) && isset($this->module->colissimo_pass)), + 'colissimo_add_order' => self::$currentIndex.'&ajax=1&action=addOrder&token='.$this->token, + 'colissimo_gen_labels' => $this->context->link->getAdminLink('AdminColissimoPdf').'&ajax=1&action=createMultipleLabels', + 'colissimo_print_labels' => self::$currentIndex.'&ajax=1&action=printLabels&token='.$this->token, + 'colissimo_print_bdx' => $this->context->link->getAdminLink('AdminColissimoPdf').'&ajax=1&action=genererBordereau', + 'colissimo_create_label' => $this->context->link->getAdminLink('AdminColissimoPdf').'&ajax=1&action=createLabelFromSession', + 'colissimo_upd_weight' => self::$currentIndex.'&ajax=1&action=updateWeight&token='.$this->token, + 'colissimo_img' => $this->context->controller->module->url.'views/img/', + 'orders' => $orders, + 'keepAddPanelOpen' => (bool)Configuration::get('COLISSIMOETQ_KEEP_ADD_PANEL_OPEN'), + ] + ); + + if (version_compare(_PS_VERSION_, '1.6', '<')) { + return $this->createTemplate('add_order_15.tpl')->fetch().parent::renderList(); + } else { + return $this->createTemplate('add_order_16.tpl')->fetch().parent::renderList(); + } + } + + public function ajaxProcessAddOrder() + { + try { + ob_start(); + foreach (Tools::getValue('colissimo_add') as $id_order) { + if (!ColissimoSession::getIdByOrderId($id_order)) { + $session = new ColissimoSession(); + $session->id_order = $id_order; + + $order = new Order($id_order); + $session->weight = $order->getTotalWeight(); + $session->add(); + + $order->setCurrentState((int)Configuration::get('COLISSIMOETQ_STATUS_BEFORE'), (int)Context::getContext()->employee->id); + } + } + + die(Tools::getValue('callback').'('.Tools::jsonEncode(array('console' => ob_get_clean(), 'return' => 'OK')).')'); + } catch (Exception $exception) { + die(Tools::getValue('callback').'('.Tools::jsonEncode(array('console' => ob_get_clean(), 'error' => (string)$exception->getMessage())).')'); + } + } + + public function ajaxProcessPrintLabels() + { + try { + ob_start(); + $pdf_link = ''; + + if (count(Tools::getValue('colissimo_sessionBox')) == 1) { + $session = new ColissimoSession((int)Tools::getValue('colissimo_sessionBox')[0]); + + if (Validate::isLoadedObject($session) && $session->isLabelGenerated()) { + $label = new ColissimoLabel($session->id_label); + + if (!Validate::isLoadedObject($label)) { + throw new PrestaShopException('Can\'t load ColissimoLabel object.'); + } + + $pdf_link = $label->getLabelUrl(); + } else { + die($this->l('The label for this order has not been generated.')); + } + } else { + if (Colissimo_Tools::getPrintFormat()['value_out'] == 'PDF_A4_300dpi') { + $pdf = new Colissimo_PDF('A4', 12, 'L'); + } else { + $pdf = new Colissimo_PDF('A5', 12, 'P'); + } + + $rand = $pdf->mergeMultiplesPDF(Tools::getValue('colissimo_sessionBox')); + + $pdf_link = $this->module->url.'download/temp_'.$rand.'.pdf'; + } + + die(Tools::getValue('callback').'('.Tools::jsonEncode(array('console' => ob_get_clean(), 'return' => $pdf_link)).')'); + } catch (Exception $exception) { + die(Tools::getValue('callback').'('.Tools::jsonEncode(array('console' => ob_get_clean(), 'error' => (string)$exception->getMessage())).')'); + } + } + + public function ajaxProcessGetLabelPdf() + { + $label = new ColissimoLabel((int)Tools::getValue('id_label')); + + if (Validate::isLoadedObject($label)) { + switch (Tools::getValue('function')) { + case 'view': + Tools::redirect($label->getLabelUrl()); + break; + + case 'download': + $etq_path = $label->getLabelPath(); + if (file_exists($etq_path)) { + header('Content-Description: File Transfer'); + header("Content-type: application/pdf"); + header('Content-Disposition: attachment; filename='.basename($etq_path)); + header('Cache-Control: private'); + header('Content-Length: '.filesize($etq_path)); + ob_clean(); + flush(); + readfile($etq_path); + exit; + } + + break; + + case 'cn23': + Tools::redirect($label->getCN23Url()); + break; + + default: + exit; + break; + } + } + } + + public function ajaxProcessCleanSession() + { + Db::getInstance()->execute('TRUNCATE '._DB_PREFIX_.'colissimo_session'); + Tools::redirectAdmin($this->context->link->getAdminLink('AdminColissimoSession')); + } + + /** + * @throws PrestaShopException + */ + public function ajaxProcessUpdateWeight() + { + try { + ob_start(); + if (!Validate::isFloat(Tools::getValue('new_weight'))) { + die($this->l('Invalid weight.')); + } + + if (!Validate::isUnsignedId(Tools::getValue('id_order'))) { + die($this->l('Invalid session ID.')); + } + + $session = new ColissimoSession(ColissimoSession::getIdByOrderId((int)Tools::getValue('id_order'))); + + if (Validate::isLoadedObject($session)) { + $session->weight = (float)Tools::getValue('new_weight'); + $session->update(); + + die(Tools::getValue('callback').'('.Tools::jsonEncode(array('console' => ob_get_clean())).')'); + } else { + throw new PrestaShopException('Can\'t load ColissimoSession object.'); + } + } catch (Exception $exception) { + die(Tools::getValue('callback').'('.Tools::jsonEncode(array('console' => ob_get_clean(), 'error' => (string)$exception->getMessage())).')'); + } + } + + public function processBulkDeleteFromSession() + { + if (Tools::isSubmit('submitBulkdeleteFromSessioncolissimo_session') && Tools::getValue('colissimo_sessionBox')) { + foreach (Tools::getValue('colissimo_sessionBox') as $id_session) { + $session = new ColissimoSession((int)$id_session); + $session->delete(); + } + } + + Tools::redirectAdmin($this->context->link->getAdminLink('AdminColissimoSession')); + } + + /** + * @param int $id_order + * @return string + */ + public function getOrderLink($id_order) + { + return ''.$id_order.''; + } + + /** + * @param string $tracking + * @param array $details + * @return string + */ + public function getTrackingLink($tracking, $details) + { + $label = new ColissimoLabel($details['id_label']); + + if (Validate::isLoadedObject($label)) { + return ''.$label->getTrackingFormatted().''; + } else { + return '--'; + } + } + + /** + * @param int $id_label + * @param array $details + * @return string + */ + public function printPDFIcons($id_label, $details) + { + $this->context->smarty->assign( + array( + 'id_session' => (int)$details['id_session'], + 'id_label' => (int)$details['id_label'], + 'id_order' => (int)$details['id_order'], + 'is_international' => (bool)(Country::getIsoById($details['id_country']) != 'FR') + ) + ); + + if (version_compare(_PS_VERSION_, '1.6', '<')) { + return $this->createTemplate('_print_pdf_icon-15.tpl')->fetch(); + } else { + return $this->createTemplate('_print_pdf_icon-16.tpl')->fetch(); + } + } + + /** + * @param string $tpl_name + * @return object|Smarty_Internal_Template + */ + public function createTemplate($tpl_name) + { + if (file_exists(_PS_MODULE_DIR_.$this->module->name.'/views/templates/admin/'.$tpl_name) && $this->viewAccess()) { + return $this->context->smarty->createTemplate(_PS_MODULE_DIR_.$this->module->name.'/views/templates/admin/'.$tpl_name, $this->context->smarty); + } elseif (file_exists(_PS_THEME_DIR_.'modules/'.$this->module->name.'/views/templates/admin/'.$tpl_name) && $this->viewAccess()) { + return $this->context->smarty->createTemplate(_PS_THEME_DIR_.'modules/'.$this->module->name.'/views/templates/admin/'.$tpl_name, $this->context->smarty); + } elseif (file_exists($this->getTemplatePath().$this->override_folder.$tpl_name) && $this->viewAccess()) { + return $this->context->smarty->createTemplate($this->getTemplatePath().$this->override_folder.$tpl_name, $this->context->smarty); + } + + return parent::createTemplate($tpl_name); + } +} diff --git a/modules/colissimoetiquetage/controllers/admin/index.php b/modules/colissimoetiquetage/controllers/admin/index.php new file mode 100644 index 00000000..264ff3f6 --- /dev/null +++ b/modules/colissimoetiquetage/controllers/admin/index.php @@ -0,0 +1,35 @@ + +* @copyright 2007-2014 PrestaShop SA +* @license http://opensource.org/licenses/osl-3.0.php Open Software License (OSL 3.0) +* International Registered Trademark & Property of PrestaShop SA +*/ + +header("Expires: Mon, 26 Jul 1997 05:00:00 GMT"); +header("Last-Modified: ".gmdate("D, d M Y H:i:s")." GMT"); + +header("Cache-Control: no-store, no-cache, must-revalidate"); +header("Cache-Control: post-check=0, pre-check=0", false); +header("Pragma: no-cache"); + +header("Location: ../"); +exit; diff --git a/modules/colissimoetiquetage/controllers/index.php b/modules/colissimoetiquetage/controllers/index.php new file mode 100644 index 00000000..264ff3f6 --- /dev/null +++ b/modules/colissimoetiquetage/controllers/index.php @@ -0,0 +1,35 @@ + +* @copyright 2007-2014 PrestaShop SA +* @license http://opensource.org/licenses/osl-3.0.php Open Software License (OSL 3.0) +* International Registered Trademark & Property of PrestaShop SA +*/ + +header("Expires: Mon, 26 Jul 1997 05:00:00 GMT"); +header("Last-Modified: ".gmdate("D, d M Y H:i:s")." GMT"); + +header("Cache-Control: no-store, no-cache, must-revalidate"); +header("Cache-Control: post-check=0, pre-check=0", false); +header("Pragma: no-cache"); + +header("Location: ../"); +exit; diff --git a/modules/colissimoetiquetage/docs/index.php b/modules/colissimoetiquetage/docs/index.php new file mode 100644 index 00000000..264ff3f6 --- /dev/null +++ b/modules/colissimoetiquetage/docs/index.php @@ -0,0 +1,35 @@ + +* @copyright 2007-2014 PrestaShop SA +* @license http://opensource.org/licenses/osl-3.0.php Open Software License (OSL 3.0) +* International Registered Trademark & Property of PrestaShop SA +*/ + +header("Expires: Mon, 26 Jul 1997 05:00:00 GMT"); +header("Last-Modified: ".gmdate("D, d M Y H:i:s")." GMT"); + +header("Cache-Control: no-store, no-cache, must-revalidate"); +header("Cache-Control: post-check=0, pre-check=0", false); +header("Pragma: no-cache"); + +header("Location: ../"); +exit; diff --git a/modules/colissimoetiquetage/docs/readme_fr.pdf b/modules/colissimoetiquetage/docs/readme_fr.pdf new file mode 100644 index 0000000000000000000000000000000000000000..f2a6b9043607e48fa3428dd97ca13c7b8bc26109 GIT binary patch literal 204508 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