Jump to content
xt:Commerce Community Forum

Globale Preisänderung in Mysql


Kloeppy

Recommended Posts

Hallo,

wie schon in diesem Forum nachzulesen war kann man mit

update products set products_price=products_price+(products_price*.5);[/PHP]

die Preise in mysql um 5 % erhöhen. Kann man diesen Befehl zu modifizieren, dass die Preise zusätzlich gerundet werden, nämlich von 297,58 € auf 298 € o.ä. oder gibt dies mysql nicht her.

Vielen Dank im voraus.

Link to comment
Share on other sites

Super. Danke. Nun hab ich aber eine Kleinigkeit übersehen. Wenn ich die Preise mit dem Befehl ändere bekomme ich in der Tabelle natürlich nur die abgerundeten Preise ohne MwSt. Daher müsste der Befehl so aussehen, dass die Preise nach Aufschlag von 19 % abgerundet sind. Ist sowas möglich ? Ich befürchte, dass ist dann wohl doch zu kompliziert, oder ?

Link to comment
Share on other sites

Super. Danke. Nun hab ich aber eine Kleinigkeit übersehen. Wenn ich die Preise mit dem Befehl ändere bekomme ich in der Tabelle natürlich nur die abgerundeten Preise ohne MwSt. Daher müsste der Befehl so aussehen, dass die Preise nach Aufschlag von 19 % abgerundet sind. Ist sowas möglich ? Ich befürchte, dass ist dann wohl doch zu kompliziert, oder ?

klar geht das. in der xt-db stehen die preise ohne mwst.. also: erstmal auf die preise in der db 19% märchensteuer drauf, dann hast du deine vk-preise in der db inkl. mwst. dann deine 5% aufschlag auf den vk draufbasteln, jetzt hast du deinen erhöhten vk in der db allerdings noch mit mwst. dann eben wieder 19% runter und du hast den um 5% erhöhten vk ohne mwst in der db, so wie du es wolltest...

wenn du sowas öfter machst (mehr als zweimal :) ), schreib dir doch ein kleines php-script, was das ganze berechnet und die richtigen preise die du willst per knopfdruck in deine xt-datenbank schreibt...

cu

buddy

Link to comment
Share on other sites

Hallo,

leider funktioniert die Round-Funktion nicht so wie beschrieben...Wenn ich den Befehl update products set products_price=round(products_price*1.05); ausführe werden alle Preise trotzdem krumm dargestellt z.B. 346,37 € statt wie ich es wollte 346,50 €. Dafür bin ich aber schon einen Schritt bezgl. der MwSt. weiter...Musste ersteinmal schauen, wie ich wieder den auf den Anfangswert zurückkomme, wenn ich einmal alle Preise um 19 % erhöht habe. Meine mathematischen Berechnungen :) haben folgendes ergeben:

Mehrwertsteuer drauf:

update products set products_price=products_price+(products_price*0.19);

Mehrwertsteuer wieder runter:

update products set products_price=products_price+(products_price/1.19-products_price)

@buddy_67: Sorry, aber ein php-script kann ich nicht schreiben, da ich davon null Ahnung habe :(

Link to comment
Share on other sites

products_price ist stets ohne UST. Wenn du das so aufrechnest musst du den Shop anschl. mit 0% MWST konfigurieren um im Laden den Preis zu erhalten welchen du in der DB errechnet hat.

Dann gehen dir allerdings auch die automatischen Anzeigen flöten welche gesetzlich vorgeschrieben sind (Anzeige UST in Preisangabe) was wiederum weitere Maßnahmen erforderlich macht das zu korrigieren.

mfg

Link to comment
Share on other sites

hei,

wie hubbabubba sagt: die preisangaben in der xt-db sind OHNE mwst, damit du im shop einen "glatten" preis hast, wirst du mit den "krummen" zahlen in der db leben müssen.

beispiel:

im shop soll der preis 350.- (inkl. mwst) erscheinen, dann muss in der db (350/119)*100, also 294,1176 eingetragen sein...

jetzt willst du deinen preis im shop um 10% auf 385 euro erhöhen, dann muss in der db stehen: (294,1176*110)/100 also 323,5293 im shop wird dann stehen: (323,5293*119)/100 also 385.-

so weit so klar :)

du willst deine preise in der db so ändern, dass nach dem aufschlag von 19% "glatte" werte herauskommen, die dann im shop als vk erscheinen...richtig? dabei hilft dir aber die round-funktion von mysql nicht und du kannst mit mysql auch nichts berechnen lassen, was du aber müsstest. wenn ich richtig verstanden hab was du möchtest, kann ich dir eventuell mit einem kleinen script weiterhelfen das ich mal für meine db geschrieben habe. falls interesse bitte pn.

ciao

buddy

Link to comment
Share on other sites

ups, wo ist das Problem?

update products set products_price=round(products_price*1.05*1.19)/1.19;

oder erst mal mit einem Select testen:

select round(products_price*1.05*1.19)/1.19 from products;

ggf. noch eine entsprechende where Bedingung dran gefügt.

Vorher sichern! ;-)

Möchte man jetzt einen Preis mit x.99 haben, dann einfach

products_price=round(products_price*1.05*1.19+0.99)/1.19

Wenn der Preis zu klein ist, kann die Erhöhung natürlich schon ganz schön groß sein.

Link to comment
Share on other sites

Bitte!

Kleinen Fehler habe ich aber noch in der letzten Variante gefunden mit dem x.99 Preis

products_price=(round(products_price*1.05*1.19)+0.99)/1.19

Wenn man Produkte mit unterschiedlichen Steuersätzen in seinem Shop hat, dann muss man natürlich die WHERE Bedingung beachten.

update products set products_price=round(products_price*1.05*1.19)/1.19

where tax_class_id=1;

(tax_class_id=1 sind bei mir die Produkte mit der Steuerklasse 19%)

Link to comment
Share on other sites

  • 2 months later...

Sollte gehen, kann ich aber gerade nicht testen, also hier reine Theorie.

update products set products_price=round(products_price*1.05*1.19)/1.19

where tax_class_id=1 and manufacturers_id = ...

Wenn du die manufactures_id nicht kennst kann du auch einen Join aus beiden Tabellen machen. Es gibt die Tabelle "manufacturers". Ich bin jetzt aber auch kein SQL Profi.

Ich würde mir die ID heraussuchen.

Link to comment
Share on other sites

  • 4 years later...

Moin,

im letzten post von reinhardt steht doch schon die Lösung:

update products set products_price=round(products_price*1.05*1.19)/1.19

where tax_class_id=1 and manufacturers_id = 1

Dieser Code würde alle Preise mit Steuersatz 1 und Hersteller-Id 1 um 5% erhöhen.

LG

Link to comment
Share on other sites

Archived

This topic is now archived and is closed to further replies.

×
  • Create New...