Mój Alfred – obliczanie VAT
W dzisiejszej części wpisów poświęconych workflows do Alfreda po raz pierwszy od dłuższego czasu przedstawię Wam stworzoną przeze mnie akcję, która ma za zadanie podać cenę netto lub brutto dotyczącą 23% podatku.
Z pewnością część z Was ma czasami potrzebę szybkiego obliczenia kwoty netto lub brutto od jakiejś liczby. Wiem to po sobie. Dlatego na własne potrzeby stworzyłem workflow, który po wpisaniu kwoty wyświetla od razu netto i brutto (w zależności, które potrzebujemy).
Działanie przedstawia się następująco:
- w oknie Alfreda wpisujemy
vat
oraz kwotę - w momencie wpisania kwoty pokażą się dwa wyniki – netto i brutto
- po wskazaniu któregoś z wyników mamy dwie możliwości:
- wciśnięcie klawisza
Enter
spowoduje skopiowanie wartości do schowka - wciśnięcie klawiszy
Cmd ⌘
+Enter
wyświetli wynik w oknie Alfreda, dzięki czemu będziemy mogli wykonywać dalsze obliczenia
- wciśnięcie klawisza
Budowa tego workflow przedstawia się następująco:
Wejście
Na wejściu użyłem Script filter, w którym odbywa się całe liczenie. Skrypt znajdujący się wewnątrz wygląda następująco:
LICZBA={query}
LICZBA=${LICZBA//,/.}
NETTO=`echo "scale=2;x=((100*$LICZBA*100/123)+0.5)/100; if (x<1) print 0; x" | bc`
NETTO8=`echo "scale=2;x=((100*$LICZBA*100/108)+0.5)/100; if (x<1) print 0; x" | bc`
BRUTTO=`echo "scale=2;x=((100*$LICZBA*1.23)+0.5)/100; if (x<1) print 0; x" | bc`
BRUTTO8=`echo "scale=2;x=((100*$LICZBA*1.08)+0.5)/100; if (x<1) print 0; x" | bc`
NETTO=${NETTO//./,}
NETTO8=${NETTO8//./,}
BRUTTO=${BRUTTO//./,}
BRUTTO8=${BRUTTO8//./,}
TEXT="[ENTER] = skopiuj, [CMD]+[ENTER] = wyświetl wynik w Alfredzie"
echo '
-
icon.png
'$TEXT'
-
icon.png
'$TEXT'
-
icon.png
'$TEXT'
-
icon.png
'$TEXT'
'
Dla zainteresowanych wyjaśnienie kodu:
LICZBA={query}
– proste, przypisanie wpisywanej kwoty do zmiennejLICZBA
;LICZBAOK=${LICZBA//,/.}
– ponieważ w Polsce wprowadzamy liczby dziesiętne rozdzielane przecinkiem, natomiast OS X czyta liczby rozdzielane kropką, to w tym miejscu wprowadzona liczba jest odpowiednio konwertowana – przecinek zamieniany jest na kropkę – i całość przypisana jest do nowej zmiennejLICZBAOK
;NETTO=`echo “scale=2;(((10^2)$LICZBAOK100/123)+0.5)/(10^2)” | bc`
– do zmiennejNETTO
przypisany jest wynik stosownego obliczenia;BRUTTO=`echo “scale=2;(((10^2)$LICZBAOK1.23)+0.5)/(10^2)” | bc`
– do zmiennejBRUTTO
przypisany jest wynik stosownego obliczenia;NETTOOK=${NETTO//./,}
orazBRUTTOOK=${BRUTTO//./,}
– tutaj liczby są ponownie konwertowane – kropka rozdzielająca miejsca dziesiętne zamieniana jest na przecinek;echo…
– ta sekwencja ma wyświetlić wyniki „na żywo” pod oknem Alfreda.
Wyjście
Skopiowanie do schowka
Użyty został element Copy to Clipboard ze zmienną {query}, czyli wynikiem akcji, który zostanie skopiowany do systemowego schowka. Zaznaczenie dodatkowo opcji Automatically paste to front most app wklei wartość do aplikacji, która znajduje się aktualnie „na wierzchu”.
Wyświetlenie w oknie Alfreda
Tutaj z kolei posłużyłem się elementem Run NSAppleScript, czyli wywołuję poniższy, bardzo łatwy AppleScript:
on alfred_script(q)
tell application "Alfred 3"
search q
end tell
end alfred_script
Jego działanie jest bardzo proste. Po wciśnięciu kombinacji Cmd ⌘
+Enter
okno Alfreda zostanie uruchomione jeszcze raz, ale tym razem z parametrem q
, czyli naszym wynikiem.
Komentarze: 4
Dzięki za workflow. Przy okazji mam pytanie: jak nazywa się motyw, którego używasz w Alfredzie ?
To motyw mojej twórczości – Tiny – możesz go pobrać stąd → https://dl.dropboxusercontent.com/u/6791141/share/tiny-mcskrzypczak.zip
Dzięki właśnie miałem się zabrać za stworzenie takiego workflow, ale okazało się, że już go stworzyłeś – super! :-)
Witam.
Mam problem z tym skryptem. Mam alfreda 3 z powerpackiem.
Dodaje w Workflow “Blank Workflow”. Nazywam je VAT.
Nastepnie dodaje po kolei elementy i je łaczę.
https://www.dropbox.com/s/eph7favg3vzgd3h/Zrzut%20ekranu%202016-06-13%2016.12.43.jpg?dl=0
W skrypcie dodaje kod w taki sposób:
https://www.dropbox.com/s/a2c2wbvh5j2rav3/Zrzut%20ekranu%202016-06-13%2016.15.34.jpg?dl=0
i niestety nie działa mi ten workflow chocby nie wiem co a bardzo bym go chciał. Z góry dziekuje za wszelką pomoc w tej kwestii.