Service Automator qui effectue des calculs simples prédéfinis


1

Je travaille comme vendeur et ce que je dois faire plusieurs fois par jour, c'est calculer le prix + TVA et -VA qui est de 19% ici en Allemagne. J'ai trouvé un script de calculateur mais je n'ai pas pu le modifier pour qu'il se comporte comme je le souhaite:

bc --mathlib | awk '{if ($ 0 ~ /./) sub ("\. + $", ""); print}'

cela, exécuté comme un script shell, prend des opérations afin par exemple (quelque part) je tape le prix 100 * 1.19, le sélectionne avec la souris et lance le service. Il calcule ensuite l'opération et remplace le texte sélectionné par le résultat 119.

Mais je veux seulement sélectionner le 100 et appuyer sur l'un des services + TVA ou -VAT (dans le menu contextuel par exemple) et il sera remplacé par le résultat. Ce serait tellement génial.

Y a-t-il quelqu'un qui peut aider? Peut-être avec un AppleScript ou quelque chose comme ça! Merci beaucoup!

Réponses:


1

n = STDIN.read.scan(/-?[0-9., ]+/)[0]
separator = "."
separator = "," if n =~ /.+[. ].+,.+/ || n =~ /,/ && n !~ /\./
separator == "." ? n.gsub!(/[, ]/, "") : n = n.gsub(/[. ]/, "").gsub(",", ".")
out = "%.02f" % ((n.to_f * 1.19 * 100).round.to_f / 100)
out.gsub!(".", ",") if separator == ","
print out
  • Comprend 10 000,50 et 10 000 50, mais traite 10 000 et 10 000 comme 10
  • Les demi-décimales sont arrondies vers le haut, les demi-décimales négatives vers le bas

WOW, c'était rapide! Mais il ne reconnaît que 99,99 pas 99,99. Est-il possible, pour l'obtenir a) de lire avec une virgule et b) de remplacer par une virgule? (La meilleure façon serait sortie comme entrée!)
Thron

@Tron Vous avez raison, j'ai édité le script ... Il devrait maintenant arrondir correctement les nombres également.
Lri

Je voudrais pouvoir upvoter cette question et répondre plus d'une fois. Les services sont une fonctionnalité étonnante de Mac OS X, et ce cas d'utilisation illustre pourquoi.
Daniel

C'est tellement incroyable génial ... Merci beaucoup!
Thron
En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.