From 2b7f772f32e682937a02196a258af368386db6df Mon Sep 17 00:00:00 2001 From: Patrick Garman Date: Sat, 14 Jan 2012 19:36:26 +0000 Subject: [PATCH] Adding local delivery/pickup methods to CORE --- classes/shipping/shipping-local-delivery.php | 101 +++++++++++++++++++ classes/shipping/shipping-local-pickup.php | 74 ++++++++++++++ 2 files changed, 175 insertions(+) create mode 100644 classes/shipping/shipping-local-delivery.php create mode 100644 classes/shipping/shipping-local-pickup.php diff --git a/classes/shipping/shipping-local-delivery.php b/classes/shipping/shipping-local-delivery.php new file mode 100644 index 00000000000..0ddce5bd34f --- /dev/null +++ b/classes/shipping/shipping-local-delivery.php @@ -0,0 +1,101 @@ +id = 'local-delivery'; + $this->method_title = __('Local Delivery', 'woothemes'); + + // Load the form fields. + $this->init_form_fields(); + + // Load the settings. + $this->init_settings(); + + // Define user set variables + $this->enabled = $this->settings['enabled']; + $this->free = $this->settings['free']; + $this->title = $this->settings['title']; + $this->fee = $this->settings['fee']; + $this->type = $this->settings['type']; + + add_action('woocommerce_update_options_shipping_methods', array(&$this, 'process_admin_options')); + + } + + function calculate_shipping() { + global $woocommerce; + $_tax = &new woocommerce_tax(); + if ($this->type=='free') $shipping_total = 0; + if ($this->type=='fixed') $shipping_total = $this->fee; + if ($this->type=='percent') $shipping_total = $woocommerce->cart->cart_contents_total * ($this->fee/100); + $shipping_tax = 0; + + $rate = array( + 'id' => $this->id, + 'label' => $this->title, + 'cost' => $shipping_total, + 'taxes' => $shipping_tax, + 'calc_tax' => 'per_order' + ); + + $this->add_rate($rate); + } + + function init_form_fields() { + global $woocommerce; + $this->form_fields = array( + 'enabled' => array( + 'title' => __( 'Enable', 'woocommerce' ), + 'type' => 'checkbox', + 'label' => __( 'Enable local delivery', 'woocommerce' ), + 'default' => 'yes' + ), + 'title' => array( + 'title' => __( 'Title', 'woocommerce' ), + 'type' => 'text', + 'description' => __( 'This controls the title which the user sees during checkout.', 'woocommerce' ), + 'default' => __( 'Local Delivery', 'woocommerce' ) + ), + 'type' => array( + 'title' => __( 'Fee Type', 'woocommerce' ), + 'type' => 'select', + 'description' => __( 'How to calculate delivery charges', 'woocommerce' ), + 'default' => 'fixed', + 'options' => array( + 'free' => __('Free Delivery', 'woocommerce'), + 'fixed' => __('Fixed Amount', 'woocommerce'), + 'percent' => __('Percentage of Cart Total', 'woocommerce'), + ), + ), + 'fee' => array( + 'title' => __( 'Fee', 'woocommerce' ), + 'type' => 'text', + 'description' => __( 'What fee do you want to charge for local delivery, disregarded if you choose free.', 'woocommerce' ), + 'default' => '5' + ), + ); + } + + function admin_options() { + global $woocommerce; ?> +

method_title; ?>

+ + generate_settings_html(); ?> +
id = 'local-pickup'; + $this->method_title = __('Local Pickup', 'woothemes'); + + // Load the form fields. + $this->init_form_fields(); + + // Load the settings. + $this->init_settings(); + + // Define user set variables + $this->enabled = $this->settings['enabled']; + $this->title = $this->settings['title']; + + add_action('woocommerce_update_options_shipping_methods', array(&$this, 'process_admin_options')); + + } + + function calculate_shipping() { + global $woocommerce; + $_tax = &new woocommerce_tax(); + + $rate = array( + 'id' => $this->id, + 'label' => $this->title, + ); + + $this->add_rate($rate); + } + + function init_form_fields() { + global $woocommerce; + $this->form_fields = array( + 'enabled' => array( + 'title' => __( 'Enable', 'woocommerce' ), + 'type' => 'checkbox', + 'label' => __( 'Enable local pickup', 'woocommerce' ), + 'default' => 'yes' + ), + 'title' => array( + 'title' => __( 'Title', 'woocommerce' ), + 'type' => 'text', + 'description' => __( 'This controls the title which the user sees during checkout.', 'woocommerce' ), + 'default' => __( 'Local Pickup', 'woocommerce' ) + ), + ); + } + + function admin_options() { + global $woocommerce; ?> +

method_title; ?>

+ + generate_settings_html(); ?> +