Shopsystem ShopPilot

ShopPilot => Shopbetrieb => Thema gestartet von: dobra am September 12, 2010, 08:44:15

Titel: Problem mit exclude_zahlart und Minusbetrag
Beitrag von: dobra am September 12, 2010, 08:44:15
Hallo,

Ich habe meinen Kunden ein Guthabenkonto eingerichtet, auf das Provisionen (Affiliate-Provisionen) gebucht werden.
Bei Bestellungen wird dieses Guthaben von der Rechnungssumme abgezogen.

<!--spmacro:module(Callback)
sub invoice_addpos_final {
my $ref_gesamt = $_[0];
   my $kdnr = ssp::get_var_user("kundennr");
        my $pre = ssp::db_get_prefix();
        my $USR = $pre . "USR";
            ssp::readSQLData(qq|SELECT GUTSCHBETR FROM $USR WHERE KUNDENNR = '$kdnr'|, "GUTSCHBETR");
        my $wert =  ssp::get_var_db('GUTSCHBETR',0);
        $wert = 0 if ($wert eq $ssp::undefined);
if ($wert ne "undefined") {
$$ref_gesamt -= $wert;
}
return 0;
}
-->

Soweit funktioniert das auch.

Das Problem:
in diesem Fall kann der Rechnungsbetrag auch ein Minusbetrag sein.
also wenn ssp::get_wktotalsum(); <= 0 soll als Zahloption nur "nix zu zahlen" angezeigt werden.
Ist der Wert >0 die normalen Zahlarten.

Scheinbar kann das Callback::exclude_zahlart  aber nicht mit Minuszahlen umgehen?

<!--spmacro:module(Callback)
sub exclude_zahlart {
my $sum = ssp::get_wktotalsum();
if ($sum >= 0) {
return 6; # ID für "nichts zu bezahlen"
} else {
return "1,2,4,5";
}
}
-->

funktioniert nicht  ???
wie kann ich das lösen?

Nachtrag
ich glaube, jetzt habe ich die Lösung gefunden...
Scheinbar wird das Callback::exclude_zahlart VOR dem Callback::invoice_addpos_final ausgeführt?

wenn ich das SO schreibe, funktioniert es (auch bei Minuswerten)
<!--spmacro:module(Callback)
sub exclude_zahlart {
   my $kdnr = ssp::get_var_user("kundennr");
        my $pre = ssp::db_get_prefix();
        my $USR = $pre . "USR";
            ssp::readSQLData(qq|SELECT GUTSCHBETR FROM $USR WHERE KUNDENNR = '$kdnr'|, "GUTSCHBETR");
        my $wert =  ssp::get_var_db('GUTSCHBETR',0);
        $wert = 0 if ($wert eq $ssp::undefined);
        
    my $sum = ssp::get_wktotalsum();
    if (($sum - $wert) >=0) {
        return 6; # ID für "nichts zu bezahlen"
    } else {
        return "1,2,4,5";
    }
}
-->