id = ACS_POINTS_PLUGIN_ID; $this->title = __(AcsPointsPlugin::$labels['checkout_option_title'], ACS_POINTS_PLUGIN_ID); $this->method_title = __(AcsPointsPlugin::$labels['checkout_option_title'], ACS_POINTS_PLUGIN_ID); $this->method_description = ''; $this->availability = 'including'; $settings = AcsPointsPlugin::getSettings(); $this->countries = ['GR', 'CY']; if ($settings['countries_availability'] == 'gr') { $this->countries = ['GR']; } elseif ($settings['countries_availability'] == 'cy') { $this->countries = ['CY']; } $this->enabled = $settings['enabled']; add_action('woocommerce_update_options_shipping_' . $this->id, array($this, 'process_admin_options')); } function admin_options() { ?>

title); ?>

calculate($sender_country, $sender_zipcode, $sender_billing_code, $recipient_country, $recipient_zipcode); $baseCost = (!isset($settings['pricing'][$costGroup]['baseCost']) || $settings['pricing'][$costGroup]['baseCost'] == '') ? 0 : $settings['pricing'][$costGroup]['baseCost']; $baseCostKgLimit = (!isset($settings['pricing'][$costGroup]['baseCostKgLimit']) ?? $settings['pricing'][$costGroup]['baseCostKgLimit'] == '') ? $settings['pricing'][$costGroup]['baseCostKgLimit'] : 0; $costPerKg = (!isset($settings['pricing'][$costGroup]['costPerKg']) ?? $settings['pricing'][$costGroup]['costPerKg'] == '') ? $settings['pricing'][$costGroup]['costPerKg'] : 0; $freeShippingLimit = $settings['freeShippingUpperLimit']; $optionCost = 0; $orderTotalCost = 0; $weightTotal = 0; foreach ($package['contents'] as $item_id => $values) { $_product = $values['data']; $qty = $values['quantity'] ?? 1; $tempWeight = (float)$_product->get_weight(); $weightTotal += wc_get_weight($qty * $tempWeight, 'kg'); $orderTotalCost += $qty * $_product->get_price(); } $weightTotal = ceil($weightTotal); if ($freeShippingLimit != '' && $orderTotalCost < $freeShippingLimit) { $optionCost = $baseCost; if ($weightTotal > $baseCostKgLimit) { $optionCost += $costPerKg * ($weightTotal - $baseCostKgLimit); } } $rate = array( 'id' => $this->id, 'label' => $this->title, 'cost' => $optionCost ); $this->add_rate($rate); } } });