Guest User

postnl zuigt.

a guest
May 11th, 2019
833
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. // plak alles hieronder in de "Custom JavaScript for websites" Chrome extension op de PostNL pagina en sla deze op.
  2. // Custom JavaScript for websites extension is hier te vinden:
  3. // https://chrome.google.com/webstore/detail/custom-javascript-for-web/poakhlngfciodnhlhhgnaaelnpjljija?hl=en
  4.  
  5. // lukt het nou echt niet? https://tweakers.net/gallery/401983/
  6.  
  7. var jouwPrinterNaam = "DYMO LabelWriter 450"; // vervang DYMO LabelWriter 450 met de naam van de gewenste printer
  8. // om de exacte naam te vinden ga je naar de lijst van printers in windows (voorbeeld: https://imgur.com/a/IBiSGjB)
  9.  
  10. ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
  11. // Code niet aanpassen onder deze tekst
  12. ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
  13.  
  14. // Variabelen voor tijdens het afdrukken
  15. var afdrukkenProefzegel = 0;
  16. var afdrukkenHuidigeNr = 0;
  17. var afdrukkenTotaalAantal = 0;
  18. var afdrukkenAnnuleren = 0;
  19. var printParams = "";
  20. var jsfwDymo = null;
  21. var printers = null;
  22.  
  23. // Afdruk URL wordt gezet op het moment van afdrukken
  24. var afdrukkenUrl = "";
  25.  
  26. // Omniture product (aantal = 1) en products (aantal = totaal) worden gezet op het moment van afdrukken
  27. var omnitureProduct = "";
  28.  
  29.  
  30. function frameworkInitShim() {
  31.     dymo.label.framework.init(SysteemcontroleCheck); //init, then invoke a callback
  32. }
  33.  
  34.  
  35. function AfdrukkenProefzegel()
  36. {
  37.     var fout = frameworkInitShim();
  38.     if (fout)
  39.     {
  40.         ToonSysteemcontrole('proefzegel_afdrukken', fout);
  41.         return;
  42.     }
  43.  
  44.     ToonAfdrukBevestiging(500);
  45. }
  46.  
  47. function Afdrukken(aantal, isIngelogd, heeftVoldoendeSaldo, popupHoogte)
  48. {
  49.  
  50.     if (!isIngelogd) {
  51.         ToonInloggen('afdrukken');
  52.         return;
  53.     }
  54.  
  55.     var fout = frameworkInitShim();
  56.     if (fout) {
  57.         ToonSysteemcontrole('afdrukken', fout);
  58.         return;
  59.     }
  60.  
  61.  
  62.     if (!heeftVoldoendeSaldo) {
  63.         ToonOpwaarderen('afdrukken');
  64.         return;
  65.     }
  66.  
  67.     ToonAfdrukBevestiging(450 + popupHoogte);
  68. }
  69.  
  70. /*
  71.  * Controleert of de Dymo Javascript Framework Library de Dymo Add-In geladen kan worden
  72.  * en of er een Dymo labelprinter wordt gevonden.
  73.  *
  74.  * Returns: 0 bij succes. Foutmelding bij een fout.
  75.  */
  76. function SysteemcontroleCheck() {
  77.     jsfwDymo = dymo.label.framework.checkEnvironment();
  78.  
  79.     if (!jsfwDymo.isFrameworkInstalled) {
  80.         return "Framework_Not_Installed";
  81.     }
  82.  
  83.     if (!jsfwDymo.isBrowserSupported) {
  84.         return "Browser_Not_Supported";
  85.     }
  86.  
  87.     // Controleer of er Dymo labelprinters gevonden kunnen worden.
  88.     top.printers = dymo.label.framework.getLabelWriterPrinters();
  89.  
  90.     if (top.printers.length == 0) {
  91.         return "FoutPrinter";
  92.     }
  93.  
  94.     // Controleer of de Dymo labelprinter is aangesloten en aan staat.'
  95.     var connected = false;
  96.     for (var i = 0; i < top.printers.length && !connected; i++)
  97.     {
  98.         connected = top.printers[i].isConnected;
  99.     }
  100.  
  101.     if (!connected) {
  102.         return "FoutPrinter";
  103.     }
  104.  
  105.     // Geslaagd
  106.     return 0;
  107. }
  108.  
  109. /*
  110.  * Functie die opnieuw controleert of de systeemcontrole goed gaat. Zo niet wordt 'from' gebruikt om opnieuw het dialoog
  111.  * van systeemcontrole te openen. Zo ja, wordt 'from' gebruikt om te bepalen welk scherm geopend wordt.
  112.  */
  113. function SysteemcontroleRecheck(from)
  114. {
  115.     var fout = frameworkInitShim();
  116.     if (fout)
  117.     {
  118.         ToonSysteemcontrole(from, fout);
  119.     }
  120.     else
  121.     {
  122.         switch (from)
  123.         {
  124.             case 'afdrukken':
  125.                 RefreshProductSelectie('FROM_SYSTEEMCONTROLE_GESLAAGD');
  126.                 break;
  127.             case 'aandeslag':
  128.                 ToonAandeslag('systeemcontrole');
  129.                 break;
  130.             default:
  131.                 tb_remove();
  132.                 break;
  133.         }
  134.     }
  135. }
  136.  
  137. function AfdrukkenStarten(aantal, proefzegel)
  138. {
  139.     // Proefzegel?
  140.     if (proefzegel)
  141.         afdrukkenProefzegel = 1;
  142.     else
  143.         afdrukkenProefzegel = 0;
  144.  
  145.     // Hoeveel zegels?
  146.     if (proefzegel)
  147.         afdrukkenTotaalAantal = 1;
  148.     else
  149.         afdrukkenTotaalAantal = aantal;
  150.  
  151.     // Overige variabelen initialiseren
  152.     afdrukkenHuidigeNr = 0;
  153.     afdrukkenAnnuleren = 0;
  154.  
  155.     // Controle
  156.     if (afdrukkenTotaalAantal < 1) {
  157.         ToonFoutmelding('AFDRUKKEN', 'Een onverwachte fout is opgetreden. Het totaal af te drukken zegels is kleiner dan 1. Deze fout hoort afgevangen te worden in de server.');
  158.         return;
  159.     }
  160.  
  161.     // Popup openen
  162.     tb_open(null, "BezigAfdrukken.aspx?height=250&width=435&size=small", null);
  163.  
  164.     // Wacht op callback van BezigAfdrukken.aspx
  165. }
  166.  
  167. function AfdrukkenStartenPopupCallback()
  168. {
  169.     // Ga naar volgende stap
  170.     setTimeout("PrintClicked_WaitForPrinterReady()", 200);
  171. }
  172.  
  173. function UpdateProgress()
  174. {
  175.     $('#bezigmetprinten #progressbar').updateProgress(afdrukkenHuidigeNr, afdrukkenTotaalAantal);
  176. }
  177.  
  178. function PrintClicked_WaitForPrinterReady()
  179. {
  180.     // Annuleren?
  181.     if (afdrukkenAnnuleren)
  182.         return;
  183.  
  184.     // Zijn we klaar met printen?
  185.     if (afdrukkenHuidigeNr == afdrukkenTotaalAantal) {
  186.         PrintDone();
  187.     }
  188.     else {
  189.         // Zo niet, opnieuw printen
  190.         setTimeout("PrintClicked_PrintLabel()", 1);
  191.     }
  192. }
  193.  
  194. function PrintClicked_PrintLabel() {
  195.     if(jsfwDymo == null)
  196.         jsfwDymo = dymo.label.framework.checkEnvironment();
  197.  
  198.     // Huidige print bijwerken
  199.     afdrukkenHuidigeNr++;
  200.     UpdateProgress();
  201.  
  202.     // get the correct printer
  203.     //if(top.printers == null)
  204.     top.printers = dymo.label.framework.getLabelWriterPrinters();
  205.  
  206.     if (top.printers.length == 0) {
  207.         PrintError('no_printer');
  208.         return;
  209.     }
  210.  
  211.     // Laatste kans om te annuleren
  212.     if (afdrukkenAnnuleren) {
  213.         return;
  214.     }
  215.  
  216.     // Inladen van label
  217.     var labelXml = loadLabel(afdrukkenUrl);
  218.     var label = dymo.label.framework.openLabelXml(labelXml);
  219.     if (labelXml.indexOf("Error code ") != -1) {
  220.         PrintError('url');
  221.         return;
  222.     }
  223.  
  224.     // Werkelijk afdrukken
  225.     label.print(jouwPrinterNaam, printParams);
  226.  
  227.     // Timeout alvorens verder te gaan
  228.     setTimeout("PrintClicked_WaitForPrinterReady()", 3000);
  229.  
  230.     // Voor statistieken
  231.     OmniturePurchase(omnitureProduct);
  232. }
  233.  
  234. function loadLabel(url)
  235. {
  236.     var xhr = new XMLHttpRequest();
  237.     xhr.open('GET', url, false);
  238.     xhr.send(null);
  239.     if(xhr.status == 200)
  240.     {
  241.         return xhr.responseText;
  242.     }
  243.     else
  244.     {
  245.         PrintError('url');
  246.         return "Error code " + xhr.status;
  247.     }
  248. }
  249.  
  250. function PrintError(melding)
  251. {
  252.     ToonFoutmelding('AFDRUKKEN', melding);
  253.     RefreshLoginPanel();
  254. }
  255.  
  256. function PrintDone()
  257. {
  258.     tb_remove();
  259.     RefreshLoginPanel();
  260.     RefreshProductSelectie('print_done');
  261. }
  262.  
  263. function PrintCancel()
  264. {
  265.     afdrukkenAnnuleren = 1;
  266.  
  267.     tb_remove();
  268.     RefreshLoginPanel();
  269.     RefreshProductSelectie('print_cancel');
  270.  
  271.     OmnitureAfdrukkenGeannuleerd();
  272. }
  273.  
  274. /*
  275. * Deze functie wordt aangeroepen zodra het vinkje van 'Aan de slag' wordt geplaatst. Een systeemcontrole wordt
  276. * uitgevoerd en bij een fout wordt het systeemcontrolescherm geopend. Stond in Global maar is hier verplaatst omdat door een workaround
  277. * een kopie is gemaakt van ICT.Afdrukken om de oude situatie te behouden.
  278. */
  279. function AanDeSlagControle() {
  280.     if ($(this).is(':checked')) {
  281.         var fout = SysteemcontroleCheck();
  282.         if (fout) {
  283.             ToonSysteemcontrole('aandeslag', fout);
  284.         }
  285.     }
  286. }
  287.  
  288. function IsTwinTurboPrinter() {
  289.  
  290.     var isTwinTurbo = false;
  291.     if (top.printers != null && top.printers != "")
  292.     {
  293.         for (var i = 0; i < top.printers.length; i++)
  294.         {
  295.             if (top.printers[i].printerType == "LabelWriterPrinter" && top.printers[i].isConnected)
  296.             {
  297.                 isTwinTurbo = top.printers[i].isTwinTurbo;
  298.                 break;
  299.             }
  300.         }
  301.     }
  302.     return isTwinTurbo;
  303. }
Advertisement
Add Comment
Please, Sign In to add comment