• Willkommen im Linux Club - dem deutschsprachigen Supportforum für GNU/Linux. Registriere dich kostenlos, um alle Inhalte zu sehen und Fragen zu stellen.

Mehrwertsteuer Rechner?

Nichts, ich meinte auch eher das Rausrechnen des Mwst.-Anteils, wenn man den Bruttowert hat.
An "b * 19 / 119" ist zwar auch nichts problematisch, aber wenn ich mit Buchungssätzen beschäftigt bin, habe ich eben keine große Lust, jedesmal über diese Formel nachzudenken. Ich will nur schnell ein Ergebnis haben, das ich bei der Buchführung eintragen kann. Die Werte sollen ja auch unbedingt stimmen, da es sonst Ärger gibt :roll:.

Das Ganze ist ein bißchen wie diese kaufmännischen Taschenrechner mit nur den Grundrechenarten und extra-großen Tasten. Da weiß man auch zuerst nicht, was das soll, und warum kein "normaler" Taschenrechner verwendet wird ...

Viele Grüße
 
abgdf schrieb:
Code:
#!/usr/bin/perl

use warnings;
use strict;

use Tk;
use Tk::ROText;

# mwst.pl, by abgdf@gmx.net, 2007, Licence: LGPL
# Use at your own risk !

my $MWSTS = 19;
my $LINELENGTH = 30;

my $mw = MainWindow -> new();

$mw -> title("Mehrwertsteuer");
$mw -> geometry("+300+230");
$mw -> optionAdd("*font", "{suse sans} 15 {normal}");

my $tf = $mw -> ROText (-background => 'white',
                        -foreground => 'black',
                        -width      => 40,
                        -height     => 10,
                        -font       => "{courier new} 15 {normal}");

my $fr1 = $mw -> Frame();
my $l1 = $fr1 -> Label(-text => "Betrag:");
my $e1 = $fr1 -> Entry(-background => 'white');
$e1 -> focus();
$e1 -> bind('<Return>', sub { &calculate($e1 -> get()) });

$l1 -> pack(-side => "left", -padx => 5);
$e1 -> pack();
$fr1 -> pack(-pady => 10);
$tf -> pack(-fill => "both");

my $btn_exit = $mw -> Button(-text => "Exit", -command => sub { $mw -> destroy() });

$btn_exit -> pack(-side => "right", -anchor => "e", -padx => 20, -pady => 15);

MainLoop();


sub calculate
{
    # Wenn nichts oder keine Zahl eingegeben:
    if ($#_ < 0 || $_[0] =~ m/[^0-9,\.]/)
    {
        return;
    }

    my $a = $_[0];
    $a =~ s/,/\./;

    $a = sprintf("%.2f", $a);

    my @b = &texts($a);

    $tf -> delete("1.0", "end");
    $tf -> insert("1.0", "\n");

    my $i;

    for($i = 0;$i <= $#b; $i++)
    {
        if ($i == 3)
        {
            $tf -> insert("end", "\n");
        }

        $tf -> insert("end", $b[$i]);
    }
}

sub texts
{
    my @a = &calculateMwSt($_[0]);

    my @b = ("Netto:",
             "Mehrwertsteuer ($MWSTS %)",
             "Brutto:",
             "Brutto:",
             "Mehrwertsteuer ($MWSTS %)",
             "Netto:");

    my $l;

    my $i;

    for($i = 0;$i <= $#b; $i++)
    {
        $l = $LINELENGTH - length($b[$i]) - length(&z($a[$i]));
        $b[$i] .= " " x $l;
        $b[$i] .= &z($a[$i]);
        $b[$i] .= " EUR\n";
    }

    return @b
}


sub calculateMwSt
{
    my @b = ($_[0],
             $_[0] * $MWSTS / 100,
             $_[0] * (100 + $MWSTS) / 100,
             $_[0],
             $_[0] * $MWSTS / (100 + $MWSTS),
             $_[0] * 100 / (100 + $MWSTS) );
    my $i;

    foreach $i (@b)
    {
        $i = sprintf("%.2f", $i);
    }

    return @b;
}

sub z
{
    my $a = $_[0];
    $a = sprintf("%.2f", $a);
    $a =~ s/\./,/;
    return $a;
}
So hat Linus Torwalds auch mal angefangen. Wenn Du so weitermachst wird bestimmt noch en Betriebssystem draus :mrgreen:
 
Oben