Merge branch 'master' into order-delivery-flow

This commit is contained in:
Almira Krdzic
2018-11-04 11:17:42 +01:00
23 changed files with 1745 additions and 459 deletions

View File

@@ -248,6 +248,10 @@ class Wiaas_Cart {
* @return bool
*/
public static function update_package_quantity($package_cart_item_key, $new_quantity) {
if ($new_quantity > 65000){
return false;
}
$cart_item = WC()->cart->get_cart_item($package_cart_item_key);
if (!$cart_item) {
@@ -309,7 +313,11 @@ class Wiaas_Cart {
* @return WC_Order_Item
*/
public static function add_order_item_meta( $order_item, $cart_item_key, $cart_item ) {
if (wc_pb_is_bundle_container_cart_item($cart_item) && isset($cart_item['_wiaas_payment'])) {
$is_bundle_item = wc_pb_is_bundle_container_cart_item($cart_item);
$is_bundled_item = wc_pb_is_bundled_cart_item($cart_item);
if ($is_bundle_item && isset($cart_item['_wiaas_payment'])) {
$payment = $cart_item['_wiaas_payment'];
@@ -378,25 +386,34 @@ class Wiaas_Cart {
$order_item->add_meta_data( '_wiaas_documents', $item_documents, true );
}
// save simple product information that needs to be avaialable later on
// save simple product information that needs to be available later on
// even if this data is changed or removed from product at that time
$simple_product_meta = array();
if(wc_pb_is_bundled_cart_item($cart_item)) {
if($is_bundled_item) {
$product = $cart_item['data'];
$product = wc_get_product($cart_item['product_id']);
$order_item->add_meta_data('_wiaas_category', Wiaas_Product_Category::get_category($product), true);
$order_item->add_meta_data('_wiaas_manufacturer_product_no', $product->get_meta('_manufacturer_product_no'), true);
$order_item->add_meta_data('_wiaas_supplier_product_no', $product->get_meta('_supplier_product_no'), true);
$simple_product_meta['_wiaas_category'] = Wiaas_Product_Category::get_category($product);
$simple_product_meta['_wiaas_price'] = $product->get_price();
$simple_product_meta['_wiaas_manufacturer_product_no'] = $product->get_meta('_manufacturer_product_no');
$simple_product_meta['_wiaas_supplier_product_no'] = $product->get_meta('_supplier_product_no');
// get supplier
if ($supplier_organization_id = Wiaas_Product_Supplier::get_supplier_organisation_id_from_product($product->get_id())) {
$info = wiaas_get_organization_info($supplier_organization_id);
if ($supplier_organization_id = Wiaas_Product_Supplier::get_supplier_organisation_id_from_product($cart_item['product_id'])) {
$simple_product_meta['_wiaas_supplier_info'] = $info;
$order_item->add_meta_data('_wiaas_supplier_organization_id', $supplier_organization_id, true);
}
// save bundled product item total cost (price x period)
$product_price = Wiaas_Pricing::get_product_total_cost($product);
$order_item->add_meta_data('_wiaas_product_price', $product_price, true);
}
// save number of days before earliest installation for bundles
if ($is_bundle_item) {
$order_item->add_meta_data(
'_wiaas_earliest_installation_additional_days',
Wiaas_Package::get_earliest_installation_additional_days($cart_item['product_id']),
true);
}
@@ -450,6 +467,55 @@ class Wiaas_Cart {
$shop_owner_id = absint($shop_owner_id);
$order->add_meta_data('_wiaas_commercial_lead_id', $shop_owner_id);
// add supplier organizations information to order
$suppliers_info = array();
$items = $order->get_items('line_item');
foreach($items as $item) {
if (! empty($item['wiaas_supplier_organization_id']) &&
empty($suppliers_info[$item['wiaas_supplier_organization_id']]) ) {
$supplier_organization_id = $item['wiaas_supplier_organization_id'];
$suppliers_info[$supplier_organization_id] = array(
'id' => $supplier_organization_id,
'estimated_delivery_date' => null,
'confirmed_delivery_date' => null,
'tracking_info' => array(),
);
$supplier_organization_info = wiaas_get_organization_info($supplier_organization_id);
foreach ($supplier_organization_info as $key => $info) {
$suppliers_info[$supplier_organization_id][$key] = $info;
}
}
}
$order->add_meta_data('_wiaas_suppliers', $suppliers_info, true);
// add additional date fields to order
$order->add_meta_data('_wiaas_estimated_delivery_date', null, true);
$order->add_meta_data('_wiaas_final_estimated_delivery_date', null, true);
$order->add_meta_data('_wiaas_final_confirmed_delivery_date', null, true);
$order->add_meta_data('_wiaas_earliest_installation_date', null, true);
// calculate number of days before earlier installation for whole order
$earliest_installation_additional_days = 0;
$items = $order->get_items('line_item');
foreach($items as $item) {
if (! empty($item['_wiaas_earliest_installation_additional_days'])) {
$additional_days = absint($item['_wiaas_earliest_installation_additional_days']);
$earliest_installation_additional_days = max($additional_days, $earliest_installation_additional_days);
}
}
$order->add_meta_data('_wiaas_order_additional_days_prior_installation', $earliest_installation_additional_days, true);
}
/**