Autor Thema: Mindermenge nicht für Wertgutscheine ?  (Gelesen 7355 mal)

0 Mitglieder und 1 Gast betrachten dieses Thema.

Offline dobra

  • Global Moderator
  • Hero Member
  • *****
  • Beiträge: 1353
  • Lob: 18
Mindermenge nicht für Wertgutscheine ?
« am: April 26, 2012, 22:14:52 »
Hallo,

Wenn ein Kunde NUR Wertgutscheine im WK hat werden keine Versandkosten verrechnet (Code wird ja per mail versendet).
Das habe ich so realisiert, dass GS ein "Gewicht" von 0 haben - alle anderen Artikel haben in ben.def. Feld GEWICHT "1" stehen.
In Callback::invoice_addpos_final wird dieses Feld dann abgefragt.

Das Problem ist aber, dass der Mindermengenzuschlag (bei Händler "bis Betrag 25" eingetragen) auch bei "NUR GS-Bestellungen" wenn unter 25,- berechnet wird.
Soll aber nicht wenn der Kunde eben NUR Wertgutscheine bestellt.

my $minderbetrag = $_[6];ist zwar definiert aber wie kann ich das auch verwenden ?
sorry - habe mal wieder ein total-blackout :(

hier mal mein komplettes Script:
<!--spmacro:module(Callback)
$vsumme = 0;
$gewichtsumme =0;
$rabattsumme = 0;

sub invoice_addpos_final {
my $ref_gesamt = $_[0];
my $ref_gesamt_netto = $_[1];
my $ref_gesamt_steuer = $_[2];
my $anzahl = ssp::get_cart_items();
my $ust = $_[3]/100;
my $netto = $_[4];
my $versandbetrag = $_[5];
my $minderbetrag = $_[6];
my $zahlkosten = $_[7];

($sec,$min,$hour,$mday,$mon,$year) = localtime(time);
$mon += 1; $year += 1900; # Y2K
my $datum = sprintf("%02d%02d",$mon,$mday);

for (my $i = 0;$i <= $anzahl;++$i) {
my $wert = ssp::get_var_cart('RABKLASSE',$i) ;
my $tag = ssp::get_var_cart('DATUM',$i);
if ($datum == $tag){
$rabattsumme += $wert * ssp::get_var_cart('preis',$i) *
ssp::get_var_cart('anzahl',$i); }
}
if ($netto > 0) {
$$ref_gesamt = $$ref_gesamt - $rabattsumme;
$$ref_gesamt_steuer = $$ref_gesamt_steuer - ($rabattsumme*$ust);
} else {
$$ref_gesamt = $$ref_gesamt - $rabattsumme;
$$ref_gesamt_steuer = $$ref_gesamt_steuer - ($rabattsumme*(1-1/(1+$ust)));
}

my $versand = $Callback::vsumme;
my $warenwert = ssp::get_wkprodsum();
my ($zone,$txt) = ssp::get_cart_zone();
if ($warenwert >= 100 && $zone == 1) { $wert = 0; }
elsif ($warenwert >= 150 && $zone == 2) { $wert = 0; }
else {
my $ust = $_[3]/100;
my $netto = $_[4];
for (my $i = 0;$i <= $anzahl;++$i) {
my $wert = ssp::get_var_cart('anzahl',$i)*ssp::get_var_cart('GEWICHT',$i);
$gewichtsumme += $wert;
}
}
foreach my $i (@{$defs::verskosttab}) {
ssp::trace("$i->[0] $i->[1] $i->[2]\n");
if (($i->[0] <= $gewichtsumme) && ($gewichtsumme < $i->[1]) ) {
$vsumme = $i->[2];
break;
}
}
if ($netto > 0) {
$$ref_gesamt += $vsumme;
$$ref_gesamt_steuer += $vsumme*$ust;
} else {
$$ref_gesamt += $vsumme;
$$ref_gesamt_steuer += $vsumme*(1-1/(1+$ust));
}
$$ref_gesamt_netto = ($$ref_gesamt*100)/120;
$$versandbetrag = $vsumme;

ssp::trace("+++++ invoice_addpos gesamt: $$ref_gesamt / gesamt netto:$$ref_gesamt_netto / gesamt Steuer: $$ref_gesamt_steuer / vsumme: $vsumme\n");
return 0;
}
-->


Linkback: https://www.shoppilot.net/pf/index.php?topic=1599.0
mfG
dobra

Offline ahe

  • Global Moderator
  • Sr. Member
  • *****
  • Beiträge: 435
  • Lob: 20
Re: Mindermenge nicht für Wertgutscheine ?
« Antwort #1 am: April 27, 2012, 08:31:29 »
Hallo Dobra,

der Mindermengenbetrag kann so gesetzt werden:

$$minderbetrag = 0;
Vermutlich muss das dann auch abgezogen werden von $$ref_gesamt und $$ref_gesamt_steuer.
Analog zu deiner bestehenden Rabattrechnung also.
MfG ahe

Offline dobra

  • Global Moderator
  • Hero Member
  • *****
  • Beiträge: 1353
  • Lob: 18
Re: Mindermenge nicht für Wertgutscheine ?
« Antwort #2 am: April 27, 2012, 09:05:16 »
Hallo ahe,

funktioniert nicht wie es soll - bzw mache ichs falsch :(

mit
my $wert2 = ssp::get_var_cart('anzahl',$i)*ssp::get_var_cart('GEWICHT',$i);
$gewichtsumme2 += $wert2;
if ($gewichtsumme2 <= 0){
$$minderbetrag = 0;
}

wird die Mindermenge nicht ausgegeben aber trotzdem berechnet.

Zitat
Vermutlich muss das dann auch abgezogen werden von $$ref_gesamt und $$ref_gesamt_steuer.

2. Versuch:
my $wert2 = ssp::get_var_cart('anzahl',$i)*ssp::get_var_cart('GEWICHT',$i);
$gewichtsumme2 += $wert2;
if ($gewichtsumme2 <= 0){
$$minderbetrag = 0;

if ($netto > 0) {
$$ref_gesamt = $$ref_gesamt - $minderbetrag;
$$ref_gesamt_steuer = $$ref_gesamt_steuer - ($minderbetrag*$ust);
} else {
$$ref_gesamt = $$ref_gesamt - $minderbetrag;
$$ref_gesamt_steuer = $$ref_gesamt_steuer - ($minderbetrag*(1-1/(1+$ust)));
}
}

hat nichts geändert.

Glaube, da pfuscht noch irgendein anderer Cod dazwischen  ???

nur Gutschein € 10,- im WK
aber Warenwert wird 13,50 (also MIT Mindermenge) angezeigt und berechnet ?

muss mir das nochmal in Ruhe anschauen ....
Jetzt wird schon bei Warenwert

Offline ahe

  • Global Moderator
  • Sr. Member
  • *****
  • Beiträge: 435
  • Lob: 20
Re: Mindermenge nicht für Wertgutscheine ?
« Antwort #3 am: April 27, 2012, 09:48:20 »
Variante 2 sieht mir schon korrekt aus.
Allerdings darf $$minderbetrag erst auf 0 gesetzt werden nachdem der Betrag vom Gesamtpreis abgezogen wurde und nicht vorher ;)

Offline dobra

  • Global Moderator
  • Hero Member
  • *****
  • Beiträge: 1353
  • Lob: 18
Re: Mindermenge nicht für Wertgutscheine ?
« Antwort #4 am: April 27, 2012, 10:01:56 »
hatte da einige Fehler drin - Klammern falsch gesetzt ...

SO funktioniert es jetzt wie es soll :)
Danke für den Lösungsansatz !

for (my $i = 0;$i <= $anzahl;++$i) {
my $wert = ssp::get_var_cart('RABKLASSE',$i) ;
my $tag = ssp::get_var_cart('DATUM',$i);
if ($datum == $tag){
$rabattsumme += $wert * ssp::get_var_cart('preis',$i) *
ssp::get_var_cart('anzahl',$i); }
my $wert2 = ssp::get_var_cart('anzahl',$i)*ssp::get_var_cart('GEWICHT',$i);
$gewichtsumme2 += $wert2;
}
my $klm;
if ($gewichtsumme2 == 0){
$$minderbetrag = 0;
$klm = $minderbetrag;
}

if ($netto > 0) {
$$ref_gesamt = $$ref_gesamt - $rabattsumme - $klm;
$$ref_gesamt_steuer = $$ref_gesamt_steuer - ($rabattsumme*$ust) - ($klm*$ust);
} else {
$$ref_gesamt = $$ref_gesamt - $rabattsumme - $klm;
$$ref_gesamt_steuer = $$ref_gesamt_steuer - ($rabattsumme*(1-1/(1+$ust))) - ($klm*(1-1/(1+$ust)));
}

und damit ist - hoffe ich - auch das
Zitat
Allerdings darf $$minderbetrag erst auf 0 gesetzt werden nachdem der Betrag vom Gesamtpreis abgezogen wurde und nicht vorher
korrigiert ?

Bei den Test mit nur GS/anderes + GS/ nur anderes wird jetzt jedenfalls alles korrekt angezeigt und berechnet.

Offline ahe

  • Global Moderator
  • Sr. Member
  • *****
  • Beiträge: 435
  • Lob: 20
Re: Mindermenge nicht für Wertgutscheine ?
« Antwort #5 am: April 27, 2012, 10:10:27 »
und damit ist - hoffe ich - auch das
Zitat
Allerdings darf $$minderbetrag erst auf 0 gesetzt werden nachdem der Betrag vom Gesamtpreis abgezogen wurde und nicht vorher
korrigiert ?
So ist es  :)


xx
Wertgutscheine

Begonnen von dobra

2 Antworten
4895 Aufrufe
Letzter Beitrag Juli 17, 2006, 04:47:16
von dobra
xx
eingestellte Mindermenge auslesen ?

Begonnen von dobra

1 Antworten
5535 Aufrufe
Letzter Beitrag Dezember 11, 2012, 16:48:00
von admin
xx
Gutscheine und Mindermenge - Konflikt ?

Begonnen von parimo

4 Antworten
5357 Aufrufe
Letzter Beitrag April 22, 2008, 15:22:40
von dobra
xx
Nicht zugeordnet!

Begonnen von jg

1 Antworten
4924 Aufrufe
Letzter Beitrag August 28, 2006, 19:57:30
von admin