#1 (permalink)  
Alt 27.01.2009, 00:42
Neuer Benutzer
 
Registriert seit: 27.01.2009
Beiträge: 12
Standard Globale Preisänderung in Mysql

Hallo,

wie schon in diesem Forum nachzulesen war kann man mit
PHP-Code:
update products set products_price=products_price+(products_price*.5); 
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.
Digg this Post!Add Post to del.icio.usBookmark Post in TechnoratiFurl this Post!Wong this Post!
Mit Zitat antworten
  #2 (permalink)  
Alt 27.01.2009, 06:45
Erfahrener Benutzer
 
Registriert seit: 08.03.2005
Ort: Mußtopp
Beiträge: 638
Standard

Dein Beispiel erhöht die Preise nicht um 5% sondern um 50%.
Was du suchst ist funktion "round"

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


siehe
http://dev.mysql.com/doc/refman/4.1/...function_round



mfg
Digg this Post!Add Post to del.icio.usBookmark Post in TechnoratiFurl this Post!Wong this Post!
Mit Zitat antworten
  #3 (permalink)  
Alt 27.01.2009, 11:49
Neuer Benutzer
 
Registriert seit: 27.01.2009
Beiträge: 12
Standard

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 ?
Digg this Post!Add Post to del.icio.usBookmark Post in TechnoratiFurl this Post!Wong this Post!
Mit Zitat antworten
  #4 (permalink)  
Alt 30.01.2009, 16:01
Benutzer
 
Registriert seit: 21.01.2009
Beiträge: 32
Standard

Zitat:
Zitat von Kloeppy Beitrag anzeigen
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
Digg this Post!Add Post to del.icio.usBookmark Post in TechnoratiFurl this Post!Wong this Post!
Mit Zitat antworten
  #5 (permalink)  
Alt 03.02.2009, 14:48
Neuer Benutzer
 
Registriert seit: 27.01.2009
Beiträge: 12
Standard

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
Digg this Post!Add Post to del.icio.usBookmark Post in TechnoratiFurl this Post!Wong this Post!
Mit Zitat antworten
  #6 (permalink)  
Alt 03.02.2009, 15:31
Erfahrener Benutzer
 
Registriert seit: 08.03.2005
Ort: Mußtopp
Beiträge: 638
Standard

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
Digg this Post!Add Post to del.icio.usBookmark Post in TechnoratiFurl this Post!Wong this Post!
Mit Zitat antworten
  #7 (permalink)  
Alt 03.02.2009, 18:48
Benutzer
 
Registriert seit: 21.01.2009
Beiträge: 32
Standard

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
Digg this Post!Add Post to del.icio.usBookmark Post in TechnoratiFurl this Post!Wong this Post!
Mit Zitat antworten
  #8 (permalink)  
Alt 05.02.2009, 12:27
Benutzer
 
Registriert seit: 10.06.2005
Beiträge: 86
Standard

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.
Digg this Post!Add Post to del.icio.usBookmark Post in TechnoratiFurl this Post!Wong this Post!
Mit Zitat antworten
  #9 (permalink)  
Alt 06.02.2009, 14:55
Neuer Benutzer
 
Registriert seit: 27.01.2009
Beiträge: 12
Standard

Hi,

super Reinhardt. Damit klappts einwandfrei. Ohne Script und völlig unkompliziert. Manchmal ist die Lösung dann doch einfacher als man denkt ;-)
Digg this Post!Add Post to del.icio.usBookmark Post in TechnoratiFurl this Post!Wong this Post!
Mit Zitat antworten
  #10 (permalink)  
Alt 06.02.2009, 15:42
Benutzer
 
Registriert seit: 10.06.2005
Beiträge: 86
Standard

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%)
Digg this Post!Add Post to del.icio.usBookmark Post in TechnoratiFurl this Post!Wong this Post!
Mit Zitat antworten
Antwort

Lesezeichen

Stichworte
globale, mysql, preisänderung

Themen-Optionen
Ansicht

Forumregeln
Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are aus
Pingbacks are aus
Refbacks are aus


Ähnliche Themen
Thema Autor Forum Antworten Letzter Beitrag
Globale Preisänderung Modul - Kein Punkt vor "php" Manuellsen Modul Entwicklung 3 30.09.2008 20:58
Globale Preisänderung bzw. bestimmte Artikel??? tooner Installation und Konfiguration 1 17.06.2007 22:04


Alle Zeitangaben in WEZ +1. Es ist jetzt 03:17 Uhr.

Copyright © 2011 xt:Commerce GmbH / xt:Commerce International Ltd. - All Rights Reserved

xt:Commerce is a SafeCharge brand