HEX
Server: Apache/2.4.6 (CentOS) OpenSSL/1.0.2k-fips PHP/7.4.30
System: Linux iZj6c1151k3ad370bosnmsZ 3.10.0-1160.76.1.el7.x86_64 #1 SMP Wed Aug 10 16:21:17 UTC 2022 x86_64
User: root (0)
PHP: 7.4.30
Disabled: NONE
Upload Files
File: /var/www/html/amberconcept/check_cost.php
<style>
.highlight {
	background-color:powderblue;	
}
.warning {
	background-color:white;	
	color:red;
}
.total {
	background-color:gold;	
}
.grandTotal {
	background-color:yellowgreen;	
}
</style>

<?php
error_reporting(E_ALL);
ini_set('display_errors', 1);
//include wp libriries and set timezone to HK
require_once('wp-load.php'); 
date_default_timezone_set("Asia/Hong_Kong"); 
$_SESSION['grandTotal'] = 0;
/*
function get_paper_cost($key){
	global $wpdb;
	
	$cost = array("base_cost"=>0, "additional_cost_per_sheet"=>0);
	
	$sql_cost = "SELECT * FROM custom_lookup_paper_cost WHERE attribute_name = '".$key."' LIMIT 1 ";
	
	$result = $wpdb->get_results($sql_cost);
	
	foreach($result as $record){
	   $cost['base_cost'] = $record->base_cost;
	   $cost['additional_cost_per_sheet'] = $record->additional_cost_per_sheet;
	}		
	
	return $cost;
	
}

function get_extra_cost($key, $value){
	global $wpdb;
	
	$cost = 0;
	
	$sql_cost = "SELECT * FROM custom_lookup_extra_cost WHERE attribute_name = '".$key."' AND option_value = '".$value."' LIMIT 1 ";
	
	$result = $wpdb->get_results($sql_cost);
	
	foreach($result as $record){
	   $cost = $record->cost;	  
	}		
	
	return $cost;
	
}

*/
function get_order_cost($order_id){
	global $wpdb;
		
	$order = wc_get_order($order_id);

	if($order===false){
		echo "order not found!";
		exit();	
	}

	$order_no = $order->get_order_number();
	
	foreach( $order->get_items() as $item ){
	
		$item_data = $item->get_data();
		$item_meta_data = $item->get_meta_data();
		
		$item_id = $item->get_ID();	
		$item_name = $item->get_name();		
		$qty = $item->get_quantity();
		
		if(stripos($item_name, "Fotomax")!==false){
			
			$base_spread = 0;		
			$base_cost = 0;		
			$additional_cost_per_sheet = 0;	
			$box = "";
			$box_cost = 0;
			$logo_cost = 0;		
			$logo = "";
			$sql_spreads = "SELECT * FROM wp_woocommerce_order_itemmeta WHERE order_item_id = '".$item_id."' AND meta_key LIKE '%size' AND meta_key NOT LIKE '#_%' ESCAPE '#' ";
			
			$result = $wpdb->get_results($sql_spreads);			
			
			foreach($result as $record){
			   $size_key = $record->meta_key;
			   $size = $record->meta_value;
			}
			
			$sql_binding = "SELECT * FROM wp_woocommerce_order_itemmeta WHERE order_item_id = '".$item_id."' AND meta_key = 'fotomaxbinding' ";
			
			$result = $wpdb->get_results($sql_binding);			
			
			foreach($result as $record){
			   $binding_key = $record->meta_key;
			   $binding = $record->meta_value;
			   if($binding=="Magazine"){
					$base_spread = 8;	  
			   } elseif($binding = "Flush Mount") {
					$base_spread = 8;	  
			   }
			}
			
			
			$sql_spreads = "SELECT * FROM wp_woocommerce_order_itemmeta WHERE order_item_id = '".$item_id."' AND meta_key LIKE '%spread%' AND meta_key NOT LIKE '#_%' ESCAPE '#' ";
			
			$result = $wpdb->get_results($sql_spreads);		
			
			foreach($result as $record){
			   $spread_key = $record->meta_key;
			   $total_spread = $record->meta_value;		
				$paper_cost_result = get_paper_cost($spread_key);
				$base_cost = $paper_cost_result['base_cost'];
				$additional_cost_per_sheet = $paper_cost_result['additional_cost_per_sheet']*($total_spread-$base_spread);	
				if($additional_cost_per_sheet<0){
					$additional_cost_per_sheet = 0;
				}
			}		
			
			
			
			$sql_box = "SELECT * FROM wp_woocommerce_order_itemmeta WHERE order_item_id = '".$item_id."' AND meta_key LIKE '%box' AND meta_key NOT LIKE '#_%' ESCAPE '#' ";
			
			$result = $wpdb->get_results($sql_box);		
			
			foreach($result as $record){
			   $box_key = $record->meta_key;
			   $box = $record->meta_value;		
			   if($box=="Yes"){
				   $lookup_key = "box_".$size;
				   $box_material = "Matte Box";
				   $box_cost = get_extra_cost($lookup_key, $box_material);				   
			   }
				
			}				
			
			
			
			

			$sql_logo = "SELECT * FROM wp_woocommerce_order_itemmeta WHERE order_item_id = '".$item_id."' AND meta_key = 'fotomaxletterpress' ";
			
			$result = $wpdb->get_results($sql_logo);		
			
			foreach($result as $record){
			   $logo_key = $record->meta_key;
			   $logo = $record->meta_value;	
			   if($logo=="Yes"){
				   $logo_cost = 3*10;
			   } elseif($logo=="None") {
				   $logo_cost = 10;
			   }
			}			
				
				
			$total_cost = $base_cost + $additional_cost_per_sheet + $box_cost + $logo_cost;
		   	$_SESSION['grandTotal'] += $total_cost*$qty;
	
						
			
		}elseif($item_name!="Canvas") {
		
			//$binding = $item->get_meta("binding");
			
			// calculate paper cost
			$sql_spreads = "SELECT * FROM wp_woocommerce_order_itemmeta WHERE order_item_id = '".$item_id."' AND meta_key LIKE '%spreads%' AND meta_key NOT LIKE '#_%' ESCAPE '#' ";
			
			$result = $wpdb->get_results($sql_spreads);
			
			foreach($result as $record){
			   $spread_key = $record->meta_key;
			   $total_spread = $record->meta_value;
			}
			
			$arr_spread_key = explode("_",$spread_key);
			
			$layout = $arr_spread_key[0];
			
			if($layout=="m"){
				$binding = "Magazine";
				$base_spread = 15;	
			} elseif($layout=="f"){
				$binding = "Flush Mount";
				$base_spread = 10;			
			}
			
			$size = $arr_spread_key[1];
			
			$paper_cost_result = get_paper_cost($spread_key);
			$base_cost = $paper_cost_result['base_cost'];
			$additional_cost_per_sheet = $paper_cost_result['additional_cost_per_sheet']*($total_spread-$base_spread);
			
			// calculate box cost
			$sql_box = "SELECT * FROM wp_woocommerce_order_itemmeta WHERE order_item_id = '".$item_id."' AND meta_key LIKE '%box%' AND meta_key NOT LIKE '#_%' ESCAPE '#' ";
			
			$result = $wpdb->get_results($sql_box);
			
			$has_box = false;
			
			foreach($result as $record){
			   $box_key = $record->meta_key;
			   $box = $record->meta_value;
			   
			   if($record->meta_value!="None" && $record->meta_value!="" ){
				   $has_box = true;
			   }
			   
			}
			
			$box_cost = get_extra_cost($box_key, $box);
			
			// calculate logo cost
			$sql_logo = "SELECT * FROM wp_woocommerce_order_itemmeta WHERE order_item_id = '".$item_id."' AND meta_key LIKE '%logo' AND meta_key NOT LIKE '#_%' ESCAPE '#' ";
			
			$result = $wpdb->get_results($sql_logo);		
			
			$logo_cost = 0;
			
			foreach($result as $record){
			   $logo_key = $record->meta_key;
			   $logo = $record->meta_value;
			   
			   if($record->meta_value=="Yes"){
				  $logo_cost = get_extra_cost($logo_key, $logo); 
			   }		   
			}		
			
		   if($has_box){
			   $logo_cost = $logo_cost * 2;
		   }		
		   
		   $total_cost = $base_cost + $additional_cost_per_sheet + $box_cost + $logo_cost;
		   $_SESSION['grandTotal'] += $total_cost*$qty;
		   
		} else {
			
			$binding = "";	
			$base_spread = "";
			$base_cost = "";
			$total_spread = "";
			$additional_cost_per_sheet = "";
			$box = "";
			$box_cost = "";
			$logo = "";
			$logo_cost = "";			
			
			// calculate logo cost
			//$sql_canvassize = "SELECT * FROM wp_woocommerce_order_itemmeta WHERE order_item_id = '".$item_id."' AND meta_key LIKE '%canvassize' ";
			$sql_canvassize = "SELECT * FROM wp_woocommerce_order_itemmeta WHERE order_item_id = '".$item_id."' AND meta_key LIKE '%size2' ";
			
			$result = $wpdb->get_results($sql_canvassize);		
			
			$total_cost = 0;
			
			foreach($result as $record){
			   $size_key = $record->meta_key;
			   $size = $record->meta_value;
			   
			   $total_cost = get_extra_cost($size_key, $size);  
			}		
			
		   $_SESSION['grandTotal'] += $total_cost*$qty;						
		}
		
		
		echo "<tr>";
			echo "<td>#".$order_no."</td>";
			echo "<td>".$item_id."</td>";
			echo "<td>".$item_name."</td>";
			echo "<td>".$qty."</td>";
			echo "<td>".$size."</td>";
			echo "<td>".$binding."</td>";
			echo "<td>".$base_spread."</td>";			
			echo "<td class='highlight'>".$base_cost."</td>";		
			echo "<td>".$total_spread."</td>";																
			echo "<td class='highlight'>".$additional_cost_per_sheet."</td>";	
			echo "<td>".$box."</td>";	
			echo "<td class='highlight'>".$box_cost."</td>";
			echo "<td>".$logo."</td>";	
			echo "<td class='highlight'>".$logo_cost."</td>";	
			echo "<td class='total'>".$total_cost."</td>";	
			echo "<td class='total'>".$qty*$total_cost."</td>";																					
		echo "<tr>";
		
	}
}

echo "<form action='?' id='' name='' method='post'>";	
	echo "<table style='border-collapse: collapse;' border='1' cellpadding='5' cellspacing='5'>";
		echo "<tr>";
			echo "<td>";
				echo "Order# <input type='text' name='order_number' id='order_number' value='".$_REQUEST['order_number']."'>";
			echo "</td>";	
			echo "<td>";
				echo "<input type='submit' name='submit' id='submit' value='check'>";
			echo "</td>";	
			echo "<td class='warning'>";
				echo "**Only applicable to those orders having new attribute set";
			echo "</td>";						
		echo "</tr>";
	echo "</table>";	
echo "</form>";		
	
echo "<table style='border-collapse: collapse;' border='1' cellpadding='5' cellspacing='5' width='100%'>";
	echo "<tr>";
		echo "<td>Order#</td>";
		echo "<td>Item ID</td>";
		echo "<td>Product</td>";
		echo "<td>Order Qty</td>";
		echo "<td>Size</td>";
		echo "<td>Binding</td>";
		echo "<td>Base Spread</td>";					
		echo "<td>Base Cost</td>";				
		echo "<td>Total Spread</td>";													
		echo "<td>Additional Spread Cost</td>";		
		echo "<td>Box</td>";	
		echo "<td>Box Cost</td>";
		echo "<td>Logo</td>";	
		echo "<td>Logo Cost</td>";	
		echo "<td>Unit Material Cost</td>";																				
		echo "<td>Total Material Cost</td>";																				
	echo "<tr>";
	if($_REQUEST['order_number']!=""){
		get_order_cost($_REQUEST['order_number']);	
	}
	echo "<tr>";
		echo "<td colspan='15' align='right'>Grand Total</td>";																				
		echo "<td class='grandTotal'>".$_SESSION['grandTotal']."</td>";																				
	echo "<tr>";	
echo "</table>";