コード例 #1
0
 /**
  * Set a new/reserved ordernumber before writing and send attributed
  * ShopEmails.
  * 
  * @return void
  *
  * @author Sebastian Diel <*****@*****.**>
  * @since 23.01.2014
  */
 protected function onBeforeWrite()
 {
     parent::onBeforeWrite();
     if (empty($this->OrderNumber)) {
         $this->OrderNumber = SilvercartNumberRange::useReservedNumberByIdentifier('OrderNumber');
     }
     if (!$this->didHandleOrderStatusChange && $this->ID > 0 && $this->isChanged('SilvercartOrderStatusID')) {
         $this->didHandleOrderStatusChange = true;
         $this->extend('onBeforeOrderStatusChange');
         if (method_exists($this->SilvercartPaymentMethod(), 'handleOrderStatusChange')) {
             $this->SilvercartPaymentMethod()->handleOrderStatusChange($this);
         }
         $newOrderStatus = DataObject::get_by_id('SilvercartOrderStatus', $this->SilvercartOrderStatusID);
         if ($newOrderStatus) {
             if ($this->AmountTotalAmount > 0) {
                 $this->AmountTotal->setAmount($this->AmountTotalAmount);
                 $this->AmountTotal->setCurrency($this->AmountTotalCurrency);
             }
             $newOrderStatus->sendMailFor($this);
         }
         SilvercartOrderLog::addChangedLog($this, 'SilvercartOrderStatus', $this->original['SilvercartOrderStatusID'], $this->SilvercartOrderStatusID);
     }
     if (array_key_exists('sa__FirstName', $_POST) && $this->SilvercartShippingAddress()->ID > 0) {
         foreach ($_POST as $paramName => $paramValue) {
             if (strpos($paramName, 'sa__') === 0) {
                 $addressParamName = str_replace('sa__', '', $paramName);
                 $this->SilvercartShippingAddress()->{$addressParamName} = $paramValue;
             }
         }
         $this->SilvercartShippingAddress()->write();
     }
     if (array_key_exists('ia__FirstName', $_POST) && $this->SilvercartInvoiceAddress()->ID > 0) {
         foreach ($_POST as $paramName => $paramValue) {
             if (strpos($paramName, 'ia__') === 0) {
                 $addressParamName = str_replace('ia__', '', $paramName);
                 $this->SilvercartInvoiceAddress()->{$addressParamName} = $paramValue;
             }
         }
         $this->SilvercartInvoiceAddress()->write();
     }
     $this->extend('updateOnBeforeWrite');
 }
コード例 #2
0
 /**
  * Creates the default SilvercartNumberRanges if not exists
  * 
  * @return void
  *
  * @author Sebastian Diel <*****@*****.**>
  * @since 02.05.2012
  */
 public function createDefaultNumberRanges()
 {
     // create number ranges
     $orderNumbers = SilvercartNumberRange::get()->filter('Identifier', 'OrderNumber')->first();
     if (!$orderNumbers) {
         $orderNumbers = new SilvercartNumberRange();
         $orderNumbers->Identifier = 'OrderNumber';
         $orderNumbers->Title = _t('SilvercartNumberRange.ORDERNUMBER', 'Ordernumber');
         $orderNumbers->write();
     }
     $customerNumbers = SilvercartNumberRange::get()->filter('Identifier', 'CustomerNumber')->first();
     if (!$customerNumbers) {
         $customerNumbers = new SilvercartNumberRange();
         $customerNumbers->Identifier = 'CustomerNumber';
         $customerNumbers->Title = _t('SilvercartNumberRange.CUSTOMERNUMBER', 'Customernumber');
         $customerNumbers->write();
     }
 }
コード例 #3
0
 /**
  * processor method
  *
  * @return void
  *
  * @author Sebastian Diel <*****@*****.**>,
  *         Sascha Koehler <*****@*****.**>
  * @since 15.11.2014
  */
 public function process()
 {
     $checkoutData = $this->controller->getCombinedStepData();
     $member = SilvercartCustomer::currentUser();
     if ($member instanceof Member) {
         // Vorbereitung der Parameter zur Erzeugung der Bestellung
         if (isset($checkoutData['Email'])) {
             $customerEmail = $checkoutData['Email'];
         } else {
             $customerEmail = '';
         }
         if (isset($checkoutData['Note'])) {
             $customerNote = $checkoutData['Note'];
         } else {
             $customerNote = '';
         }
         $anonymousCustomer = SilvercartCustomer::currentAnonymousCustomer();
         if ($anonymousCustomer) {
             // add a customer number to anonymous customer when ordering
             $anonymousCustomer->CustomerNumber = SilvercartNumberRange::useReservedNumberByIdentifier('CustomerNumber');
             $anonymousCustomer->write();
         }
         $shippingData = SilvercartTools::extractAddressDataFrom('Shipping', $checkoutData);
         $invoiceData = SilvercartTools::extractAddressDataFrom('Invoice', $checkoutData);
         $order = $this->createOrder($customerEmail, $checkoutData, $customerNote);
         $this->extend('onAfterCreateOrder', $order);
         $order->createShippingAddress($shippingData);
         $order->createInvoiceAddress($invoiceData);
         $order->convertShoppingCartPositionsToOrderPositions();
         // send order confirmation mail
         if ($this->sendConfirmationMail) {
             $order->sendConfirmationMail();
         }
         $this->controller->setStepData(array('orderId' => $order->ID));
         $this->controller->addCompletedStep();
         $this->controller->NextStep(false);
     }
     return false;
 }
コード例 #4
0
 /**
  * returns a number range by identifier.
  *
  * @param string $identifier Identifier of the number range
  *
  * @return SilvercartNumberRange
  */
 public static function getByIdentifier($identifier)
 {
     return SilvercartNumberRange::get()->filter('Identifier', $identifier)->first();
 }
コード例 #5
0
 /**
  * If the user is not anonymous a customer number is attributed to the
  * Member if none is yet given.
  *
  * @return void
  *
  * @author Sascha Koehler <*****@*****.**>
  * @since 10.10.2011
  */
 public function onBeforeWrite()
 {
     parent::onBeforeWrite();
     if (!self::currentAnonymousCustomer()) {
         if (empty($this->owner->CustomerNumber)) {
             $this->owner->CustomerNumber = SilvercartNumberRange::useReservedNumberByIdentifier('CustomerNumber');
         }
     }
 }