Jump to content

Grundpreis für Artikel Variationen


Holger72

Recommended Posts

Hallo allerseits,

ich bastle schon seit 3 Tage an den Grundpreis für Artikel Variationen herum und bekomme es nicht hin.

Ich würde gerne unterschiedliche Gewichts-Variationen anbieten z.B.:

100g für 2€
250g für 4€
500g für 7€

Hierbei habe ich das Problem das der Grundpreis also pro 100g nicht berechnet wird. Es wird immer der Endpreis dafür ausgegeben z.B.

 

500g ausgewählt in der Drop-and-down-liste:

7€
7€ pro 100g 

 

oder

 

100g ausgewählt in der Drop-and-down-liste:

 

 

2€
2€ pro 100g



Produkt--->Varianten wird irgend wie nur der Preis übernommen, aber nicht die Änderungen z.B.: Änderung des Preis/ pro 100g.

Hat mir Bitte Jemand einen Tipp oder eine How-to-do Anleitung. Alles was ich Gegooglet habe an Anleitungen war nix.

Danke
Holger

Link to comment
Share on other sites

Das Gewicht wo man da einstellen kann ist meines Wissens nur für den Versand bestimmt.

 

Wenn du das so machen willst, musst du wohl oder übel ein Modul nehmen, nach meinem Kenntnisstand.

 

Ich habe da auch eins mal programmiert:

 

http://addons.prestashop.com/de/preise-aktionen-prestashop-module/5756-grundpreis-modul-fur-variationen.html

 

Aber vll geht es ja inzwischen auch so und ich weiss es nur nicht ,)

 

EDIT:

 

 

Bei mir rechnet er auch nicht die Auswirkung pro Stückpreis, iwie wird das total ignoriert.....

 

So rechnet er momentan, alles auf die Grundvariante, also 100g würden auch 7€ kosten bei der 500 g variante, was ja nicht stimmt, da wären es 1.40€

Edited by BluTiGeS (see edit history)
  • Like 1
Link to comment
Share on other sites

Habe mir das ganze mal wing tiefer angeschaut, also die Berechnung ist so wie sie jetzt drin ist ein wenig komisch.

 

Es wird einmal beim anlegen des Products die unit_price_ratio in die DB geschrieben.

 

Sagen wir mal ich habe ein Produkt mit 2€ und 100g dann ermittelt presta dafür ein verhältnis von 1.

 

Jede weitere Variante wird dann damit umgerechnet, daher erhält man auch bei z.B: 8 € für 500 g auch 8€ pro 100g .

 

Was natürlcih schwachsinn ist.

 

In der product.js habe ich schon was gesehen wegen unit_impact (also aufpreis usw) aber habe es noch nicht ganz durchblickt was da abgeht oder eben nicht.

 

EDIT:

 

Komme iwie nicht weiter, aber scheint wohl das es mit Varianten und evtl rabatten nicht klar kommt.

Mal sehen was Presta zum Bug eintrag sagt, aber wird nicht in der 1.6.0.9 behoben sein......

 

Entweder stehen wir alle auf dem Schlauch von der Logik her oder Presta hat richtig gemurkst ,)

Edited by BluTiGeS (see edit history)
  • Like 1
Link to comment
Share on other sites

By Richi²

    // Unit price are the price per piece, per Kg, per m²
    // It doesn't modify the price, it's only for display
    if (productUnitPriceRatio > 0)
    {   
    String.prototype.insert = new Function('intPos','strIns','return this.substring(0,intPos) + strIns + this.substring(intPos,this.length);');
    
    priceWithDiscountsDisplayB = priceWithDiscountsDisplay * 100000;
        unit_priceB = Math.abs(priceWithDiscountsDisplayB / ( combination.weight * 10 ) ) ;   //combination.weight; //combination.unit_impact; //priceWithDiscountsDisplay / productUnitPriceRatio; // produktpreis geteilt durch 1euro
        unit_price = unit_priceB / 100000;
        unit_price = Math.round(unit_price / 0.001) * 0.001 ;
        $('#unit_price_display').text(unit_price * currencyRate + ' € ', currencyFormat, currencySign, currencyBlank );
        $('.unit-price').show();
    }

 

Link to comment
Share on other sites

Okay, habe mir das ganze mal angeschaut, der ansatz ist gut.

 

Also wenn man die Bezeichnung von Presta ignoriert und einfach das aktuelle gewicht dort angibt. (ist ja auch einfacher zum eingeben )

 

Ich habe jedoch gleich mal noch ein bisschen den code gefixt.

 

Den String.prototype braucht man nicht meiner ansich nach. Ich habe auch den fehler behoben (division durch 0) wenn die grudnvariante 100g hat und die kleines kombination kein mehrgewicht hat. Ja man hätte es auch eingeben können aber Fehler können schon passieren ;)

 

Was ich auch nicht verstanden habe wieso die währung fix auf € reduziert wurde.

 

 

Das ganze geht aber auch nur mit kg, wenn jetzt jemand das ganze für stück verwenden will geht das schon so nicht mehr.

 

 

Hier mal mein angepasster code für die product.js:

if (productUnitPriceRatio > 0)
    {   
		var $fWeight = (combination.weight == 0) ? 0.1 : combination.weight; //handle also no increase of weight
		priceWithDiscountsDisplayB = priceWithDiscountsDisplay * 100000;
        unit_priceB = Math.abs(priceWithDiscountsDisplayB / ( $fWeight * 10 ) ) ;   //get kg
        unit_price = unit_priceB / 100000;	
        unit_price = Math.round(unit_price / 0.001) * 0.001 ;       
		$('#unit_price_display').text(formatCurrency(unit_price * currencyRate, currencyFormat, currencySign, currencyBlank));
        $('.unit-price').show();
    }

EDIT:

 

Habe das ganze mal noch auf Stückpreis ebene gemacht, hierzu muss man einfach den Grundartikel zb anlegen 100g, 1stk wie auch immer und dann bei den varianten die auswirkung auf den stückpreis pro einheit.

 

In meinem Beispiel z.B.:

 

1.87 (brutto eintragen) 2€ netto => 100g

 

Dann die Varianten:

 

100g bleiben 2€

250 g werden 4€

500g werden 7€

 

100g => keine Auswirkung Stückpreis

250g => erniedrigung von 0.40 pro 100g.

500g => erniedrigung von 0.60 pro 100g.

 

Dann ist man nicht ahängig von der bezugseinheit

if (productUnitPriceRatio > 0)
    {   
        unit_price = productPrice + parseFloat(combination.unit_impact)  ;      
		$('#unit_price_display').text(formatCurrency(unit_price * currencyRate, currencyFormat, currencySign, currencyBlank));
        $('.unit-price').show();
    }

Hier noch ein Video (kann man sich immer besser vorstellen so):

 

Edited by BluTiGeS (see edit history)
  • Like 1
Link to comment
Share on other sites

Genau den Ansatz hast gut aufgenommen und umgesetzt :)
Im Patch Code war noch viel Müll, das wurde auf einen iPhone bei Gassi gehen gepacht und erst der 5. Ansatz klappte. Danke für säubern :)

Ich sehe allerdings ein Rundungsproblem wenn man "formatCurrency" benutzt. Da es die 3. Kommastelle rundet. Bei meinen Versuchen von 100g zu 5kg sind da Grundpreisunterschiede zum Preis von teils 40 Cent aufgetreten.

Denke mit der 3. Kommastelle beim Grundpreis ist man sicherer.

Oder :) :) :)

Man könnte die Variable: combination.unit_impact
abfragen. Dort steht die Angabe die man bei Varianten---> x,xx pro kg/Stück gemacht hat.

 

pseudo code:

IF combination.unit_impact > 0 then { Wenn da was drin ist. Dieses Feld als Korrektur ausgeben}
Ifnot combination.unit_impact > 0 { Die Berechnug wie in unseren Projekt Patch hier ausgeben }

 

 

Unseren CodePatch mal schnell :) erweitert und ungetestet:

 

if (productUnitPriceRatio > 0)
    {   
        var $fWeight = (combination.weight == 0) ? 0.1 : combination.weight; //handle also no increase of weight
        priceWithDiscountsDisplayB = priceWithDiscountsDisplay * 100000;
        unit_priceB = Math.abs(priceWithDiscountsDisplayB / ( $fWeight * 10 ) ) ;   //get kg
        unit_price = unit_priceB / 100000;    
        unit_price = Math.round(unit_price / 0.001) * 0.001 ;      
           
if (combination.unit_impact > 0)
    { unit_price = combination.unit_impact; }

}

$('#unit_price_display').text(formatCurrency(unit_price * currencyRate, currencyFormat, currencySign, currencyBlank));
        $('.unit-price').show();

 

 

Im Endeffekt alle Ideen vereint :)


 

Edited by Holger72 (see edit history)
Link to comment
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now
×
×
  • Create New...