"Jetzt versenden" (funktion) automatisieren

Hallo,

ist es möglich den button “jetzt versenden” in der bestellübersicht der einzelnen bestellungen bzw. die funktion die dahinter steckt “public function sendorder()” zu automatisieren? Wir müssen täglich viele bestellungen so von hand klicken, was langsam zur last wird.

Das eintragen des datums ins “oxsendate” feld reicht in dem fall nicht aus. Ich vermute erst die funktion “$oOrder->save();” macht alles komplett.

Gibt es hier eine möglichkeit das einigermaßen zu automatisieren. Über vorschläge und hilfstellungen würde ich mich sehr freuen.

Grüße

mit einem WaWi kein Problem:

  • bei Eingang einer Bestellung Rechnung oder Lieferschein drucken
  • wenn Bestellung bearbeitet -> Barcode scannen (=Bestellnummer)
  • versendet klicken -> fertig
  • auch die Versandmails können automatsch geschickt werden - mit Rechnung als pdf-Anlage

Das hilft uns leider nicht weiter aber trotzdem vielen dank.

Du kannst Dir ja einen Cronjob einrichten, der alle offenen Bestellungen vom Tage aufruft und dann einfach über “foreach” jeweils die Order aufruft und das Datum schreibt.

$oOrder = oxNew( "oxorder" );
if ( $oOrder->load( $soxId ) ) {
$oOrder->oxorder__oxsenddate->setValue( date( "Y-m-d H:i:s", oxRegistry::get("oxUtilsDate")->getTime() ) );
$oOrder->save();
}

Das geht mit oder ohne Form. Ohne Form nur die Bestellungen vom Tage. Die Form kann dann ähnlich wie hier aussehen: http://496.foxido.de/cron/invoicetool_form.php

@ gajel
Hast ne PN mit “o.g. Aktion” ist #4 gemeint.

Dat will nicht funzena ber ich hatte schon immer ein problem mit dem klassen erweitern was das verständniss angeht

Ich habe eine cron.php ins root verzeichniss gelegt und diese führe ich per ssh konsole aus. Eine fehlermeldung kommt nicht aber es scheint auch sonst nix zu passieren …


function getShopBasePath()
{
    return dirname(__FILE__).'/';
}


if ( !function_exists( 'isAdmin' )) {
    /**
     * Returns false.
     *
     * @return bool
     */
    function isAdmin()
    {
        return false;
    }
}

// custom functions file
require getShopBasePath() . 'modules/functions.php';

// Generic utility method file
require_once getShopBasePath() . 'core/oxfunctions.php';

// initializes singleton config class
$myConfig = oxConfig::getInstance();

// executing maintenance tasks..
oxNew( "oxmaintenance" )->execute();

//class Order_Overview extends oxAdminDetails

class Order_Senden extends oxAdminDetails
{
	
    public function sendorder()
    {
        $oOrder = oxNew( "oxorder" );
        if ( $oOrder->load( "dca706a34126c6ce81c648c17707e2bc" ) ) {
            $oOrder->oxorder__oxsenddate->setValue( date( "Y-m-d H:i:s", oxUtilsDate::getInstance()->getTime() ) );
            $oOrder->save();
            
        }
    }



}

// closing page, writing cache and so on..
$myConfig->pageClose();

In der cron.php rufst Du die Methode einer Klasse auf, die entweder schon vorhanden ist oder über eine Erweiterung kommt. Bsp:

require_once dirname(__FILE__) . "/../bootstrap.php";

// initializes singleton config class
$myConfig = oxRegistry::getConfig();


oxNew("order_overview")->deine_anwendung();

// closing page, writing cache and so on..
$myConfig->pageClose();

Dann erweiterst Du die Klasse “order_overview” mit der Methode “deine_anwendung” und führst hier die Abfrage aus, die dann die Aktion zum Schreiben auslöst.

Ich habe das jetzt etwas simper gelöst, in dem ich die eigentliche funktion direkt in die cron.php gepackt habe. Das funktioniert auch aber leider weiß ich nicht wie ich an alle oxid’s (oxorder tabelle) komme.


$oOrder = oxNew( "oxorder" );
$oOrder->load('mp2e90075072f6e8e0f672be9df91d8d');
mo_billsafe__main::getInstance()->getInterface()->reportShipment($oOrder, array());

Gibt es hier die möglichkeit statt einem statischen load einer einzelnen oxid, alle zu laden, evtl. auch mit einer bedingung?

Grüße