function dopayment($data, $form) { $SQLData = Convert::raw2sql($data); if (isset($SQLData['OrderID'])) { if ($orderID = intval($SQLData['OrderID'])) { $order = Order::get_by_id_if_can_view($orderID); if ($order && $order->canPay()) { if (EcommercePayment::validate_payment($order, $form, $data)) { $payment = EcommercePayment::process_payment_form_and_return_next_step($order, $form, $data); } if ($payment) { ShoppingCart::singleton()->submit(); $order->tryToFinaliseOrder(); return $payment; } else { //error messages are set in validation return $this->controller->redirectBack(); } } else { $form->sessionMessage(_t('OrderForm.NO_PAYMENTS_CAN_BE_MADE_FOR_THIS_ORDER', 'No payments can be made for this order.'), 'bad'); return $this->controller->redirectBack(); } } } $form->sessionMessage(_t('OrderForm.COULDNOTPROCESSPAYMENT', 'Sorry, we could not find the Order for payment.'), 'bad'); $this->controller->redirectBack(); return false; }
function init() { parent::init(); Requirements::themedCSS("typography"); Requirements::javascript(THIRDPARTY_DIR . "/jquery/jquery.js"); //Requirements::block(THIRDPARTY_DIR."/jquery/jquery.js"); //Requirements::javascript(Director::protocol()."ajax.googleapis.com/ajax/libs/jquery/1.7.2/jquery.min.js"); $id = intval($this->request->param("ID")); if (!$id && isset($_REQUEST["OrderID"])) { $id = intval($_REQUEST["OrderID"]); } if ($id) { $order = Order::get_by_id_if_can_view($id); if ($order) { $this->currentOrder = $order; } } }
function dopayment($data, $form) { $SQLData = Convert::raw2sql($data); if (isset($SQLData['OrderID'])) { if ($orderID = intval($SQLData['OrderID'])) { $order = Order::get_by_id_if_can_view($orderID); if ($order && $order->canPay()) { return EcommercePayment::process_payment_form_and_return_next_step($order, $form, $data); } } } $form->sessionMessage(_t('OrderForm.COULDNOTPROCESSPAYMENT', 'Sorry, we could not process your payment.'), 'bad'); Director::redirectBack(); return false; }
function copyorder($request) { $orderID = intval($request->param('ID')); if ($order = Order::get_by_id_if_can_view($orderID)) { $this->cart->copyOrder($order); } $this->redirectBack(); }
public function __construct($controller, $name, $repeatOrderID = 0, $originatingOrder = 0) { $order = null; //create vs edit if ($repeatOrderID) { $repeatOrder = DataObject::get_by_id('RepeatOrder', $repeatOrderID); $items = $repeatOrder->OrderItems(); } else { $repeatOrder = null; if ($originatingOrder) { $order = Order::get_by_id_if_can_view($originatingOrder); } if (!$order) { $order = ShoppingCart::current_order(); } if ($order) { $items = $order->Items(); } else { $items = null; } } //build fields $fields = new FieldSet(); //products! if ($items) { $fields->push(new HeaderField('ProductsHeader', 'Products')); $products = DataObject::get('Product', "\"AllowPurchase\" = 1"); $productsMap = $products->map('ID', 'Title'); $this->array_unshift_assoc($productsMap, 0, "--- Please select ---"); foreach ($productsMap as $id => $title) { if ($product = DataObject::get_by_id("Product", $id)) { if (!$product->canPurchase()) { unset($productsMap[$id]); } } } $j = 0; foreach ($items as $key => $item) { $j++; $alternativeItemsMap = $productsMap; $defaultProductID = $item->ProductID ? $item->ProductID : $item->BuyableID; $itemID = $defaultProductID; unset($alternativeItemsMap[$defaultProductID]); $fields->push(new DropdownField('Product[ID][' . $itemID . ']', "Preferred Product #{$j}", $productsMap, $defaultProductID)); $fields->push(new NumericField('Product[Quantity][' . $itemID . ']', " ... quantity", $item->Quantity)); for ($i = 1; $i < 6; $i++) { $alternativeField = "Alternative" . $i . "ID"; $fields->push(new DropdownField('Product[' . $alternativeField . '][' . $itemID . ']', " ... alternative {$i}", $alternativeItemsMap, isset($item->{$alternativeField}) ? $item->{$alternativeField} : 0)); } } } else { $fields->push(new HeaderField('items', 'There are no products in this repeating order')); } //other details $fields->push(new HeaderField('DetailsHeader', 'Repeat Order Details')); $fields->push(new ListboxField('PaymentMethod', 'Payment Method', RepeatOrder::get_payment_methods(), null, count(RepeatOrder::get_payment_methods()))); $startField = new DateField('Start', 'Start Date'); $startField->setConfig('showcalendar', true); $fields->push($startField); $endField = new DateField('End', 'End Date'); $endField->setConfig('showcalendar', true); $fields->push($endField); $fields->push(new ListboxField('Period', 'Period', RepeatOrder::get_period_fields(), null, count(RepeatOrder::get_period_fields()))); $fields->push(new ListboxField('DeliveryDay', 'Delivery day', $source = array_combine(RepeatOrder::get_delivery_days(), RepeatOrder::get_delivery_days()), null, count(RepeatOrder::get_delivery_days()), false)); $fields->push(new TextareaField('Notes', 'Notes')); //hidden field if (isset($order->ID)) { $fields->push(new HiddenField('OrderID', 'OrderID', $order->ID)); } if ($repeatOrder) { $fields->push(new HiddenField('RepeatOrderID', 'RepeatOrderID', $repeatOrder->ID)); } //actions $actions = new FieldSet(); if ($repeatOrder) { $actions->push(new FormAction('doSave', 'Save')); } else { $actions->push(new FormAction('doCreate', 'Create')); } //required fields $requiredArray = array('Start', 'End', 'Period', 'DeliveryDay'); $requiredFields = new RequiredFields($requiredArray); //make form parent::__construct($controller, $name, $fields, $actions, $requiredFields); //load data if ($repeatOrder) { $this->loadDataFrom(array('Start' => $repeatOrder->Start, 'End' => $repeatOrder->End, 'Period' => $repeatOrder->Period, 'Notes' => $repeatOrder->Notes, 'DeliveryDay' => $repeatOrder->DeliveryDay, 'PaymentMethod' => $repeatOrder->PaymentMethod)); } }
/** * Standard SS function * if set to false, user can edit order, if set to true, user can only review order **/ public function init() { parent::init(); Requirements::themedCSS('CheckoutPage', 'ecommerce'); $ajaxifyArray = EcommerceConfig::get("CheckoutPage_Controller", "ajaxify_steps"); if (count($ajaxifyArray)) { foreach ($ajaxifyArray as $js) { Requirements::javascript($js); } } Requirements::javascript('ecommerce/javascript/EcomPayment.js'); Requirements::customScript(' if (typeof EcomOrderForm != "undefined") { EcomOrderForm.set_TermsAndConditionsMessage(\'' . convert::raw2js($this->TermsAndConditionsMessage) . '\'); }', "TermsAndConditionsMessage"); $this->steps = EcommerceConfig::get("CheckoutPage_Controller", "checkout_steps"); $this->currentStep = $this->request->Param("ID"); if ($this->currentStep && in_array($this->currentStep, $this->steps)) { //do nothing } else { $this->currentStep = array_shift($this->steps); } //redirect to current order - // this is only applicable when people submit order (start to pay) // and then return back if ($checkoutPageCurrentOrderID = Session::get("CheckoutPageCurrentOrderID")) { if (!$this->currentOrder || $this->currentOrder->ID != $checkoutPageCurrentOrderID) { if ($order = Order::get_by_id_if_can_view(intval($checkoutPageCurrentOrderID))) { Session::clear("CheckoutPageCurrentOrderID"); Session::set("CheckoutPageCurrentOrderID", 0); Session::save(); return $this->redirect($order->Link()); } } } if ($this->currentOrder) { //we make sure all the OrderModifiers are up to date.... Session::set("CheckoutPageCurrentOrderID", $this->currentOrder->ID); } }
function createorder($request) { $orderID = intval($request->param("ID")); $order = null; if ($orderID) { $order = Order::get_by_id_if_can_view($orderID); } if (!$order) { $order = ShoppingCart::current_order(); } //TODO: move items to order $params = array('Order' => $order); return $this->renderWith(array('RepeatOrdersPage_edit', 'Page'), $params); }