Beispiel #1
0
 public function onAfterWrite()
 {
     parent::onAfterWrite();
     //create an OrderStatusLog
     if ($this->flagOrderStatusWrite) {
         $this->flagOrderStatusWrite = false;
         $log = OrderStatusLog::create();
         // populate OrderStatusLog
         $log->Title = _t('ShopEmail.StatusChanged', 'Status for order #{OrderNo} changed to "{OrderStatus}"', '', array('OrderNo' => $this->Reference, 'OrderStatus' => $this->getStatusI18N()));
         $log->Note = _t('ShopEmail.StatusChange' . $this->Status . 'Note');
         $log->OrderID = $this->ID;
         OrderEmailNotifier::create($this)->sendStatusChange($log->Title, $log->Note);
         $log->SentToCustomer = true;
         $this->extend('updateOrderStatusLog', $log);
         $log->write();
     }
 }
 public function testDelete()
 {
     Config::inst()->update('FlatTaxModifier', 'rate', 0.25);
     Config::inst()->update('Order', 'modifiers', array('FlatTaxModifier'));
     $order = Order::create();
     $shirt = $this->objFromFixture("Product", "tshirt");
     $mp3player = $this->objFromFixture("Product", "mp3player");
     $order->Items()->add($shirt->createItem(3));
     $order->Items()->add($mp3player->createItem(1));
     $order->write();
     $order->calculate();
     $statusLogId = OrderStatusLog::create(array('Title' => 'Test status log', 'OrderID' => $order->ID))->write();
     $paymentId = Payment::create(array('OrderID' => $order->ID))->init('Manual', 343.75, 'NZD')->write();
     $this->assertEquals(4, $order->Items()->Quantity());
     $this->assertEquals(1, $order->Modifiers()->count());
     $this->assertEquals(1, $order->OrderStatusLogs()->count());
     $this->assertEquals(1, $order->Payments()->count());
     $itemIds = Product_OrderItem::get()->filter('OrderID', $order->ID)->column('ID');
     $modifierIds = OrderModifier::get()->filter('OrderID', $order->ID)->column('ID');
     $order->delete();
     // Items should no longer be linked to order
     $this->assertEquals(0, $order->Items()->count());
     $this->assertEquals(0, $order->Modifiers()->count());
     $this->assertEquals(0, $order->OrderStatusLogs()->count());
     $this->assertEquals(0, $order->Payments()->count());
     // Ensure the order items have been deleted!
     $this->assertEquals(0, Product_OrderItem::get()->filter('ID', $itemIds)->count());
     $this->assertEquals(0, OrderModifier::get()->filter('ID', $modifierIds)->count());
     $this->assertEquals(0, OrderStatusLog::get()->filter('ID', $statusLogId)->count());
     // Keep the payment… it might be relevant for book keeping
     $this->assertEquals(1, Payment::get()->filter('ID', $paymentId)->count());
 }