| Server IP : 13.126.101.145 / Your IP : 216.73.217.87 Web Server : Apache/2.4.52 (Ubuntu) System : Linux ip-11-115-0-196 6.8.0-1039-aws #41~22.04.1-Ubuntu SMP Thu Sep 11 10:54:48 UTC 2025 x86_64 User : www-data ( 33) PHP Version : 8.3.17 Disable Function : NONE MySQL : OFF | cURL : ON | WGET : ON | Perl : ON | Python : OFF | Sudo : ON | Pkexec : ON Directory : /var/www/html/rentals_updated/wp-content/plugins/wc-finance/ |
Upload File : |
<?php
/**
* Plugin Name: Finance
* Description: Manages Security Deposits and Collections under Finance menu
* Version: 2.0.0
* Author: iTroSys
* Developer: Bhaskara
* Author URI: https://itrosys.com
* Text Domain: wc-finance
*/
if (!defined('ABSPATH')) {
exit;
}
// Check if WooCommerce is active
function wc_finance_check_woocommerce_active() {
if (!class_exists('WooCommerce')) {
add_action('admin_notices', 'wc_finance_woocommerce_missing_notice');
return false;
}
return true;
}
function wc_finance_woocommerce_missing_notice() {
echo '<div class="notice notice-error"><p>' . __('WooCommerce Finance requires WooCommerce to be installed and active.', 'wc-finance') . '</p></div>';
}
function wc_finance_add_admin_menu() {
add_menu_page(
__('Finance', 'wc-finance'),
__('Finance', 'wc-finance'),
'manage_woocommerce',
'wc-finance',
'__return_null', // No page function
'dashicons-money-alt',
56
);
// Submenu pages
add_submenu_page(
'wc-finance',
__('Security Deposits', 'wc-finance'),
__('Security Deposits', 'wc-finance'),
'manage_woocommerce',
'wc-security-deposits',
'wc_security_deposit_admin_page'
);
add_submenu_page(
'wc-finance',
__('Payments', 'wc-finance'),
__('Payments', 'wc-finance'),
'manage_woocommerce',
'wc-payments',
'cwp_payments_admin_page'
);
add_submenu_page(
'wc-finance',
__('Collections', 'wc-finance'),
__('Collections', 'wc-finance'),
'manage_woocommerce',
'wc-collections',
'wc_collections_admin_page'
);
}
// Remove the automatic first submenu
function wc_finance_remove_parent_submenu() {
remove_submenu_page('wc-finance', 'wc-finance');
}
add_action('admin_menu', 'wc_finance_remove_parent_submenu', 100);
// Enqueue scripts and styles
function wc_finance_admin_scripts($hook) {
if (!in_array($hook, array('finance_page_wc-security-deposits', 'finance_page_wc-collections', 'finance_page_wc-payments'))) {
return;
}
wp_enqueue_style('wc-finance-style', plugin_dir_url(__FILE__) . 'css/admin-style.css', array(), '1.0.0');
wp_enqueue_script('jquery-ui-datepicker');
// Ensure jQuery UI CSS is loaded properly
wp_enqueue_style('jquery-ui-css', plugins_url('css/jquery-ui.css', __FILE__), array(), '1.12.1');
}
// Activation hook
function wc_finance_activate() {
$css_dir = plugin_dir_path(__FILE__) . 'css/';
if (!file_exists($css_dir)) {
mkdir($css_dir, 0755, true);
}
$admin_css = "
.wc-finance-filters {
margin: 20px 0;
background: #fff;
padding: 15px;
border: 1px solid #ccd0d4;
}
.filter-row {
display: flex;
gap: 10px;
align-items: center;
}
.export-form {
margin: 10px 0;
}
.datepicker {
padding: 4px;
}
";
file_put_contents($css_dir . 'admin-style.css', $admin_css);
// Copy jQuery UI CSS locally to ensure it loads
$jquery_ui_css = file_get_contents('https://code.jquery.com/ui/1.12.1/themes/base/jquery-ui.css');
file_put_contents($css_dir . 'jquery-ui.css', $jquery_ui_css);
// Create payments table for collections
global $wpdb;
$table_name = $wpdb->prefix . 'payments';
$charset_collate = $wpdb->get_charset_collate();
$sql = "CREATE TABLE IF NOT EXISTS $table_name (
id INT NOT NULL AUTO_INCREMENT,
order_id INT NOT NULL,
user_id INT NOT NULL,
doc_payment_date DATE NOT NULL,
payment_date DATE NOT NULL,
paid_amount DECIMAL(10,2) NOT NULL,
payment_mod VARCHAR(100) NOT NULL,
doc_reference_num VARCHAR(100) NOT NULL,
invoice_date DATE NOT NULL,
invoice_number INT NOT NULL,
invoice_total VARCHAR(100) NOT NULL,
PRIMARY KEY (id)
) $charset_collate;";
require_once(ABSPATH . 'wp-admin/includes/upgrade.php');
dbDelta($sql);
}
// Initialize plugin
function wc_finance_init() {
if (wc_finance_check_woocommerce_active()) {
// Include the sub-files
require_once plugin_dir_path(__FILE__) . 'includes/security-deposits.php';
require_once plugin_dir_path(__FILE__) . 'includes/collections.php';
require_once plugin_dir_path(__FILE__) . 'includes/payments.php';
add_action('admin_menu', 'wc_finance_add_admin_menu');
add_action('admin_enqueue_scripts', 'wc_finance_admin_scripts');
add_action('admin_init', 'wc_security_deposit_export_csv');
add_action('admin_init', 'wc_collections_export_csv');
}
}
register_activation_hook(__FILE__, 'wc_finance_activate');
add_action('plugins_loaded', 'wc_finance_init');