Perberos

steam-argentina-prices.user.js

Sep 23rd, 2020 (edited)
21,197
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. // ==UserScript==
  2. // @name         Steam Argentina - Muestra precio final con Impuestos
  3. // @namespace    http://perberos.me/
  4. // @version      0.1
  5. // @description  Agrega +65% al precio
  6. // @author       Perberos
  7. // @match        https://store.steampowered.com/*
  8. // @grant        none
  9. // ==/UserScript==
  10.  
  11. // Cambiar este valor si cambia el impuesto
  12. // esto es: +21% del IVA, +9% por impuesto PAIS y +35% el retroactivo a moneda extranjera.
  13. var impuestos = 21 + 9 + 35;
  14. var impuestos_porcentaje = (100 + impuestos) / 100; // el valor original 100% + impuestos / %100, deberia dar 1.65 si es 65%.
  15.  
  16. (function() {
  17.     'use strict';
  18.  
  19.     // Create our number formatter.
  20.     // https://stackoverflow.com/questions/149055/how-to-format-numbers-as-currency-string
  21.     var formatter = new Intl.NumberFormat('en-AR', {
  22.         style: 'currency',
  23.         currency: 'ARS',
  24.  
  25.         // These options are needed to round to whole numbers if that's what you want.
  26.         minimumFractionDigits: 0,
  27.         maximumFractionDigits: 2
  28.     });
  29.     // parsea una numero 123456.123456 a una cadena "123.456,12"
  30.     var nf = function (strnum) {
  31.         return (strnum.toFixed(2).toString().replace(".", ",")).replace(/(\..*)$|(\d)(?=(\d{3})+(?!\d))/g, (digit, fract) => fract || digit + '.');
  32.     };
  33.  
  34.     // busco la mayoria de los elementos HTML que contienen el precio.
  35.     var discount_final_price = document.querySelectorAll(".discount_final_price");
  36.     var game_purchase_price = document.querySelectorAll(".game_purchase_price");
  37.     var regular_price = document.querySelectorAll(".regular_price");
  38.  
  39.     function do_prices (a) {
  40.         var cadena = a.innerText.trim();
  41.  
  42.         if (cadena != "Free" && cadena.indexOf("ARS$") >= 0) {
  43.             if (cadena.indexOf("Your Price:") >= 0) cadena = cadena.split("Your Price:")[1].trim()
  44.  
  45.             var b = cadena.split(" ");
  46.             b[1] = Number(b[1].replace(".", "").replace(",", ".")) * impuestos_porcentaje;
  47.  
  48.             a.innerHTML = "<div class='tax_pct' style='color: #c2c2c2; background: #5d5d5d; display: inline-block;' title='Precio sin impuestos: " + cadena + "'>+65%</div> " + b[0] + " " + nf(b[1]);
  49.         }
  50.     };
  51.  
  52.     regular_price.forEach(do_prices);
  53.     game_purchase_price.forEach(do_prices);
  54.     discount_final_price.forEach(do_prices);
  55.  
  56.     // El area de DLCs es algo especial
  57.     var game_area_dlc_price = document.querySelectorAll(".game_area_dlc_price");
  58.  
  59.     game_area_dlc_price.forEach(function (a) {
  60.         if (a.childNodes.length == 1) { // al parecer ya lo toma la funcion de arriba, y solo debemos procesar los que no tienen descuentos
  61.             var cadena = a.innerText.trim();
  62.  
  63.             if (cadena != "Free" && cadena.indexOf("ARS$") >= 0) {
  64.                 if (cadena.indexOf("Your Price:") >= 0) cadena = cadena.split("Your Price:")[1].trim()
  65.  
  66.                 var b = cadena.split(" ");
  67.                 b[1] = Number(b[1].replace(".", "").replace(",", ".")) * impuestos_porcentaje;
  68.  
  69.                 a.innerHTML = "<div class='tax_pct' style='color: #c2c2c2; background: #5d5d5d; display: inline-block;' title='Precio sin impuestos: " + cadena + "'>+65%</div> " + b[0] + " " + nf(b[1]);
  70.             }
  71.         }
  72.     });
  73.  
  74.     // esto es para la lista de /search/
  75.     var search_price = document.querySelectorAll(".search_price");
  76.  
  77.     // funcion personalizada por el espacio limitado en el cuadro de busqueda
  78.     function do_prices_ext (a) {
  79.         var cadena, b;
  80.         // tiene descuento
  81.         if (a.childNodes[3]) {
  82.             cadena = a.childNodes[3].data.trim();
  83.  
  84.             if (cadena != "Free" && cadena.indexOf("ARS$") >= 0) {
  85.                 if (cadena.indexOf("Your Price:") >= 0) cadena = cadena.split("Your Price:")[1].trim()
  86.  
  87.                 b = cadena.split(" ");
  88.                 b[1] = Number(b[1].replace(".", "").replace(",", ".")) * impuestos_porcentaje;
  89.  
  90.                 a.childNodes[3].data = "* " + b[0] + " " + nf(b[1]);
  91.             }
  92.         }
  93.         else { // normal sin descuento
  94.             cadena = a.innerText.trim();
  95.  
  96.             if (cadena != "Free" && cadena.indexOf("ARS$") >= 0) {
  97.                 if (cadena.indexOf("Your Price:") >= 0) cadena = cadena.split("Your Price:")[1].trim()
  98.  
  99.                 b = cadena.split(" ");
  100.                 b[1] = Number(b[1].replace(".", "").replace(",", ".")) * impuestos_porcentaje;
  101.  
  102.                 a.innerHTML = "<span title='Precio sin impuestos: " + cadena + "'><span class='tax_pct' style='color: #888888;'>*</span> " + b[0] + " " + nf(b[1]) + "</span>";
  103.             }
  104.         }
  105.     };
  106.  
  107.     search_price.forEach(do_prices_ext);
  108. })();
Add Comment
Please, Sign In to add comment