Erweiterung oxorder model funktioniert nicht, neues tabellenfeld wird nicht erkannt

Guten Morgen an alle,

ich habe ein Prblem was ich grad nicht mehr richtig nachvollziehen kann.

Ich habe in der Tabelle oxorder ein neue Tabellenfeld amngelegt mit dem Namen MYCOMPANYCOUPONVALUE. Das ist auch in der Tabelle und als Decimal (12,4) angelegt.

Nun erweitere ich das oxorder Model und habe meine Klasse mycompanyOrderModel. Die Klasse und das Objekt werden auch geladen. Beim Debugging, mittels xdubug stand dann in der Variablen, die das Tabellenfeld wieder gibt mein Wert drin. Die Variable sieht so aus.


$this->oxorder__mycompanycouponvalue = new oxField($this->_mycompanySession->getVar('price'));

Nachdem ich Core Code verfolgen konnte ist dies eigentlich richtig, jedoch wird beim bestellen mein Modulewert nicht in die Tabelle geschrieben, es bleibt 0,0000 drin stehen.

Hier der komplette Code meines mycompanyOrderModel


class mycompanyOrderModel extends mycompanyOrderModel_parent
{
	protected $_mycompanySession;
	
	public function __construct()
	{
		$this->_mycompanySession = new oxSession('mycompany');
		$this->oxorder__mycompanycouponvalue = new oxField($this->_mycompanySession->getVar('price'));
		parent::__construct();
	}
	
	public function finalizeOrder(oxBasket $oBasket, $oUser, $blRecalculatingOrder = false)
	{
		return parent::finalizeOrder($oBasket, $oUser, $blRecalculatingOrder);
	}
}

So und hier der ersetzende Aufruf im oder überladenen Order Controller mycompanyOrder in der Methode execute().


try {
// 				$oOrder = oxNew( 'oxorder' );
				$oOrder = new mycompanyOrderModel();
		
				// finalizing ordering process (validating, storing order into DB, executing payment, setting status ...)
				$iSuccess = $oOrder->finalizeOrder( $oBasket, $oUser );

Wie komme ich im execute() Prozess an die Order ID des gerade frisch gespeicherten Orders heran?

Kann mir bitte einer sagen warum mein Wert da nicht in die Tabelle eingetragen wird?

Danke Gruß Daniel

Erstmal 2 kleine Fragen:

  • Du initialisierst im Constructor und zwar vor der eigentlichen Base/Parent, ich bin mir nicht sicher ob das funktioniert.
  • Du erzeugst eine Session aus einer zweiten Klasse, aber die ist ausser das sie initialisiert wurde noch blank, bist du dir sicher das getVar(‘price’) auf das Objekt funktioniert? Willst du nicht eher die Session des Benutzers oder so nehmen?

Die Varibale


$this->oxorder__mycompanycouponvalue

ist genau mit dem Wert gefüllt den ich erwarte, dass sagt mit xdebug. Es wird lediglich nicht in die Datenbank rein geschrieben.

Das hesit die Variable ist initialisiert bzw. definiert mit dem Wert aus der Session. Der Variablenname ist genau der selber wie der Feldname in der order Tabelle.

Und der Wert ist auch noch da bevor oxorder gespeichert wird?

Ja.

Ich konnte über xdebug aber grad sehen das


$this->oxorder_mycompanycouponvalue 

nicht im Array _aFieldNames steht. Warum das?
Die Variable ist doch aber da un befüllt.

Views outdated?

[QUOTE=acpi;121298]Views outdated?[/QUOTE]

Was meinst du damit?

Im Backend: Service -> Tools -> Views Updaten

Danke für die Hilfe, nachdem ich die Views geupdated habe wurden die Werte eingetragen.

Gruß Daniel