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";
   }
}
-->