XH-Shop

Ein CMSimple Support Forum für deutsch sprechende Nutzer und Entwickler
cmb
Posts: 14225
Joined: Tue Jun 21, 2011 11:04 am
Location: Bingen, RLP, DE
Contact:

Re: XH-Shop

Post by cmb » Wed Sep 26, 2018 12:52 pm

albert wrote:
Wed Sep 26, 2018 9:10 am
Ich benötige ein Feld (z.B.) %Email-Forward%. Hier soll nur dann die Emailadresse drinstehen, wenn MAY_FORWARD_EMAIL 'yes' ist - und da brauche ich bitte Hilfe. Wohl im FrontEndController:

Code: Select all

'%EMAIL%'              => $_SESSION['xhsCustomer']->email,
'%MAY_FORWARD_EMAIL%'  => $this->viewProvider->labels[$_SESSION['xhsCustomer']->may_forward_email ? 'yes' : 'no'],
'%EMAIL-FORWARD%'  => if ....
Vielleicht:

Code: Select all

'%EMAIL-FORWARD%'  => $_SESSION['xhsCustomer']->may_forward_email ? $_SESSION['xhsCustomer']->email : '',
albert wrote:
Wed Sep 26, 2018 9:10 am
Außerdem müsste

Code: Select all

'%WEIGHT%'  => $this->viewProvider->formatDecimal($_SESSION['xhsOrder']->getUnits()),
nur ganze Zahlen liefern, aufgerundet
Schneller Hack:

Code: Select all

'%WEIGHT%'  => substr($_SESSION['xhsOrder']->getUnits()->plus(new Decimal('0.99')), 0, -3),
PS: 1.00 zu addieren passt nicht; müsste 0.99 sein. Im Code-Schnipsel korrigiert.
Christoph M. Becker – Plugins for CMSimple_XH

albert
Posts: 526
Joined: Sun Mar 07, 2010 8:01 pm
Location: Germany
Contact:

Re: XH-Shop

Post by albert » Wed Sep 26, 2018 8:09 pm

cool danke
EMAIL_FORWARD klappt
bei WEIGHT hapert es noch, kommt gar kein Wert raus... wohl ein Fehler im Code?
(Nebenbei: ich vergaß: meine Gewichte sind nicht in kg, sondern in g)
werde morgen weitermachen
das müsste doch auch mit https://www.w3schools.com/php/func_math_ceil.asp gehen? Werds testen

cmb
Posts: 14225
Joined: Tue Jun 21, 2011 11:04 am
Location: Bingen, RLP, DE
Contact:

Re: XH-Shop

Post by cmb » Wed Sep 26, 2018 9:18 pm

albert wrote:
Wed Sep 26, 2018 8:09 pm
bei WEIGHT hapert es noch, kommt gar kein Wert raus... wohl ein Fehler im Code?
(Nebenbei: ich vergaß: meine Gewichte sind nicht in kg, sondern in g)
werde morgen weitermachen
das müsste doch auch mit https://www.w3schools.com/php/func_math_ceil.asp gehen? Werds testen
Als schneller Test definitiv okay, und vermutlich auch allgemein, aber bei Fließkommazahlen muss man immer aufpassen, wenn exakte Werte nötig sind. Die Decimal-Arithmetik sollte immer exakte Werte liefern. Was hier nicht passt, ist mir nicht klar.
Christoph M. Becker – Plugins for CMSimple_XH

albert
Posts: 526
Joined: Sun Mar 07, 2010 8:01 pm
Location: Germany
Contact:

Re: XH-Shop

Post by albert » Thu Sep 27, 2018 10:40 am

cmb wrote:
Wed Sep 26, 2018 9:18 pm
Was hier nicht passt, ist mir nicht klar.
weiss auch nicht...
Aber unabhäbhängig davon, ob ich die Gewichte bei allen Artikeln im Shop auf Kilogramm umschreibe oder nicht, macht mir noch das Kartongewicht Sorge. Bisher hatte ich die genaue Berechnung der jeweiligen Gewichtsklasse in der Kunden-Exeldatei programmiert, wobei dann je nach Größe ein bestimmtes Kartongewicht aufaddiert (und dann durch 1000 geteilt) wurde. Das soll nun aber schon in der bill.rtf berechnet sein. Bei Exel sieht die Formel so aus (S3987 ist das vom Shop errechnete weight) :

Code: Select all

=WENN((S3987)=-1;"Rg.-Anschrift";WENN(((S3987)+1800)>10100;AUFRUNDEN(((S3987)+1800)/1000;0);WENN(((S3987)+684)>5100;AUFRUNDEN(((S3987)+1000)/1000;0);  WENN(((S3987)+550)>3100;AUFRUNDEN(((S3987)+550)/1000;0);  WENN(((S3987)+240)>2100;AUFRUNDEN(((S3987)+240)/1000;0);WENN(((S3987)+180)>1100;AUFRUNDEN(((S3987)+180)/1000;0);WENN(S3987>360;"1";"Brief")))))))
Ich fürchte, dafür wäre irgendwo eine function nötig, oder geht das auch einfach im FrontEndController %WEIGHT% usw.?

albert
Posts: 526
Joined: Sun Mar 07, 2010 8:01 pm
Location: Germany
Contact:

Re: XH-Shop

Post by albert » Fri Sep 28, 2018 10:31 am

Hab jetzt selber mal was probiert in FrontEndController, Zeile ca. 540, direkt oberhalb von "replacements"

Code: Select all

$weight = $_SESSION['xhsOrder']->getUnits();
	if (($weight + 240) > 2100) {
    $weight = "3";
	} 
	else {
    $weight = "Brief";
	}
	
        $replacements = array(
 ...
            '%WEIGHT%'             => $weight,
Warum klappt das nicht richtig? ($weight müsste 2766 + 240 sein, es kommt aber "Brief".
Wenn ich schreibe if (($weight + 240) < 2100) kommt "3".
Mit original FrontEndController

Code: Select all

'%WEIGHT%'             => $this->viewProvider->formatDecimal($_SESSION['xhsOrder']->getUnits()),
kommt 2766,00

albert
Posts: 526
Joined: Sun Mar 07, 2010 8:01 pm
Location: Germany
Contact:

Re: XH-Shop

Post by albert » Fri Sep 28, 2018 10:42 am

UPDATE (zu früh gefreut)
hab jetzt:

Code: Select all

$weight = $this->viewProvider->formatDecimal($_SESSION['xhsOrder']->getUnits());
	if (($weight + 240) < 2100) {
	...
geht auch nicht
Hilfe :?:

cmb
Posts: 14225
Joined: Tue Jun 21, 2011 11:04 am
Location: Bingen, RLP, DE
Contact:

Re: XH-Shop

Post by cmb » Fri Sep 28, 2018 12:16 pm

albert wrote:
Fri Sep 28, 2018 10:42 am
UPDATE (zu früh gefreut)
hab jetzt:

Code: Select all

$weight = $this->viewProvider->formatDecimal($_SESSION['xhsOrder']->getUnits());
	if (($weight + 240) < 2100) {
	...
geht auch nicht
Hilfe :?:
$_SESSION['xhsOrder']->getUnits() liefert ein Exemplar der Klasse Decimal. Willst du „normal“ damit weiterrechnen, dann wandle es einfach in einen String um:

Code: Select all

$weight = (string) $_SESSION['xhsOrder']->getUnits();
if (($weight + 240) < 2100) {
	...
Christoph M. Becker – Plugins for CMSimple_XH

albert
Posts: 526
Joined: Sun Mar 07, 2010 8:01 pm
Location: Germany
Contact:

Re: XH-Shop

Post by albert » Fri Sep 28, 2018 3:03 pm

cmb wrote:
Fri Sep 28, 2018 12:16 pm

Code: Select all

$weight = (string) $_SESSION['xhsOrder']->getUnits();
liefert leider "ERROR: Object of class Xhshop\Decimal could not be converted to string"

cmb
Posts: 14225
Joined: Tue Jun 21, 2011 11:04 am
Location: Bingen, RLP, DE
Contact:

Re: XH-Shop

Post by cmb » Fri Sep 28, 2018 4:39 pm

albert wrote:
Fri Sep 28, 2018 3:03 pm
cmb wrote:
Fri Sep 28, 2018 12:16 pm

Code: Select all

$weight = (string) $_SESSION['xhsOrder']->getUnits();
liefert leider "ERROR: Object of class Xhshop\Decimal could not be converted to string"
Upps! Wer lesen kann, ist klar im Vorteil (die Klasse definiert toString() und nicht __toString()). Also:

Code: Select all

$weight = $_SESSION['xhsOrder']->getUnits()->toString();
Christoph M. Becker – Plugins for CMSimple_XH

albert
Posts: 526
Joined: Sun Mar 07, 2010 8:01 pm
Location: Germany
Contact:

Re: XH-Shop

Post by albert » Fri Sep 28, 2018 9:47 pm

Sehr gut prima so komme ich jetzt wohl ans Ziel
Danke!

Post Reply