Пример #1
0
					<div class="<?php 
    echo $s_status;
    ?>
"><?php 
    echo urldecode($s_message);
    ?>
</div>
				<?php 
}
?>
			
				<p>Refunds for <?php 
echo singular(humanizer($table_name));
?>
 # <?php 
echo remove_semicol($dataid);
?>
</p>
				<table style="width:100%" class="borderless">
					<tr><td style="width:150px;">Grand Total:</td><td>$<?php 
echo my_number_format($grand_total);
?>
</td></tr>
					<tr><td>Refunds to date:</td><td>$<?php 
echo my_number_format($refunded);
?>
</td></tr>
					<tr><td>Shipping Refund:</td><td>$<input size="3" class="max_num" max="<?php 
echo $max_shipping_refund;
?>
" type="text" name="shipping_amount" value="<?php 
Пример #2
0
 function refund($table_name = FALSE, $id = FALSE)
 {
     if ($table_name == FALSE || $id == FALSE) {
         redirect(base_url());
     }
     $table_details = 'order_details';
     if ($_POST && $_POST['_action'] == 'Cancel') {
         redirect(base_url() . 'content/' . $table_name);
     }
     if ($_POST && $_POST['_action'] == 'Process Refunds') {
         $order_details_refund = array();
         $grand_refund = 0;
         $r_subtotal = 0;
         if (key_exists('items', $_POST)) {
             foreach ($_POST['items'] as $oid => $products) {
                 //get the amount that is supposed to be refunded in this trans and the corresponding order_detail_id
                 $order_details_refund[$products] = $_POST[$products];
                 $grand_refund += $_POST[$products];
             }
         }
         $r_subtotal = $grand_refund;
         if (key_exists('shipping_amount', $_POST)) {
             $grand_refund += $_POST['shipping_amount'];
             $r_shipping_amount = $_POST['shipping_amount'];
         }
         if (key_exists('tax_amount', $_POST)) {
             $grand_refund += $_POST['tax_amount'];
             $r_tax = $_POST['tax_amount'];
         }
         //get the user information
         $data['user'] = $this->db->query("SELECT * FROM {$table_name} o LEFT JOIN users u on u.id=o.user_id LEFT JOIN user_address ua ON ua.user_id=u.id WHERE o.id='{$id}'")->row();
         $process = $this->payment->refund($grand_refund, $data['user']->customer_profile_id, $data['user']->customer_payment_profile_id, $data['user']->transaction_id);
         foreach ($_POST['refund'] as $refundables) {
             $ab = explode('_', $refundables);
             $a = $ab[0];
             $b = $ab[1];
             $this->db->query("UPDATE order_details SET is_returned='{$a}' WHERE id='{$b}'");
         }
         if ($process === TRUE) {
             if (key_exists('notify', $_POST)) {
                 send_email($data['user']->email, SITENAME . " :: Transaction Refunds", 'Refunds of $' . $grand_refund . ' has been refunded to the card with which you used to make this payment. Yay you.', '');
             }
             //update details
             foreach ($order_details_refund as $r_id => $r_amount) {
                 $this->db->query("UPDATE order_details SET refunded_amount=refunded_amount+{$r_amount} WHERE id='{$r_id}'");
             }
             $this->db->query("UPDATE orders SET refunded_shipping_amount=refunded_shipping_amount+{$r_shipping_amount} WHERE id='{$id}'");
             $this->db->query("UPDATE orders SET refunded_tax=refunded_tax+{$r_tax} WHERE id='{$id}'");
             $this->db->query("UPDATE orders SET refunded_sub_total=refunded_sub_total+{$r_subtotal} WHERE id='{$id}'");
             $this->db->query("UPDATE orders SET is_voidable=0");
             redirect(base_url() . 'process/refund/' . $table_name . '/' . remove_semicol($id) . ':success:' . urlencode("This item has been refunded successfully!"));
         } elseif ($grand_refund < 1) {
             if (key_exists('notify', $_POST)) {
                 send_email($data['user']->email, SITENAME . " :: Transaction Returns", 'We reveived the items you returned and have updated our records!', 'We reveived the items you returned and have updated our records!');
             }
             redirect(base_url() . 'process/refund/' . $table_name . '/' . remove_semicol($id) . ':note:' . urlencode("No refunds were made. Returns have been updated successfully."));
         } else {
             redirect(base_url() . 'process/refund/' . $table_name . '/' . remove_semicol($id) . ':error:' . urlencode("{$process} Please process them manually with the payment processor."));
         }
     }
     //**addition for cms styles: keep this comment incase of clashes **//
     $table_name = mysql_real_escape_string($table_name);
     $data['group'] = $this->db->query("SELECT * FROM " . DATABASE_MENU_GROUPS . " WHERE id=(SELECT group_id FROM " . DATABASE_TABLE_RULES . " WHERE table_name='{$table_name}' LIMIT 1)")->row();
     //backwards
     $data['groups'] = $this->db->query("SELECT * FROM " . DATABASE_MENU_GROUPS)->result();
     $data['tables'] = $this->db->query("SELECT m.table_name FROM " . DATABASE_TABLE_RULES . " m JOIN " . DATABASE_MENU_GROUPS . " n ON n.id=m.group_id WHERE m.is_hidden=0 AND n.id=(SELECT group_id FROM " . DATABASE_TABLE_RULES . " WHERE table_name='{$table_name}' order by `order` LIMIT 1)  order by `order`")->result();
     //** end addition for cms styles: keep this comment incase of clashes **//
     $meta['page_title'] = 'Refund';
     $meta['breadcrumbs']['content/' . $table_name] = plural(humanizer($table_name));
     $meta['breadcrumbs']['none'] = 'Refund';
     $data['table_name'] = $table_name;
     $data['dataid'] = $id;
     $data['object'] = $this->db->query("SELECT * FROM {$table_name} o LEFT JOIN users u on u.id=o.user_id WHERE o.id='{$id}'")->row();
     $data['object_details'] = $this->db->query("SELECT od.id as order_details_id, od.amount, od.refunded_amount, od.is_returned, od.is_refundable, p.name FROM order_details od JOIN upc u on u.id=od.upc_id JOIN products p ON p.id=u.product_id WHERE od.order_id='{$id}'")->result();
     $data['grand_total'] = $data['object']->sub_total + $data['object']->tax + $data['object']->shipping_amount;
     $data['refunded'] = $data['object']->refunded_sub_total + $data['object']->refunded_tax + $data['object']->refunded_shipping_amount;
     $data['max_shipping_refund'] = $data['object']->shipping_amount - $data['object']->refunded_shipping_amount;
     $data['max_tax_refund'] = $data['object']->tax - $data['object']->refunded_tax;
     $data['refunded_shipping_amount'] = $data['object']->refunded_shipping_amount;
     if (stripos(uri_string(), ':')) {
         $mess = explode(':', uri_string());
         if (count($mess) > 2) {
             $data['s_message'] = $mess[2];
             $data['s_status'] = $mess[1];
         }
     }
     $this->load->view('includes/header', $meta);
     $this->load->view("process/refundview", $data);
     $this->load->view('includes/footer');
 }