HEX
Server: Apache/2.4.59 (Debian)
System: Linux keymana 4.19.0-21-cloud-amd64 #1 SMP Debian 4.19.249-2 (2022-06-30) x86_64
User: lijunjie (1003)
PHP: 7.4.33
Disabled: pcntl_alarm,pcntl_fork,pcntl_waitpid,pcntl_wait,pcntl_wifexited,pcntl_wifstopped,pcntl_wifsignaled,pcntl_wifcontinued,pcntl_wexitstatus,pcntl_wtermsig,pcntl_wstopsig,pcntl_signal,pcntl_signal_get_handler,pcntl_signal_dispatch,pcntl_get_last_error,pcntl_strerror,pcntl_sigprocmask,pcntl_sigwaitinfo,pcntl_sigtimedwait,pcntl_exec,pcntl_getpriority,pcntl_setpriority,pcntl_async_signals,pcntl_unshare,
Upload Files
File: /var/www/html/wp-content/plugins/erp/includes/updates/update-1.8.1.php
<?php

/**
 * Insert necessary ledgers for purchase return
 */
function erp_acct_insert_to_erp_acct_ledgers_1_8_1() {
    global $wpdb;

    $sales_return_discount_exists = $wpdb->get_row(
        $wpdb->prepare(
            "SELECT * FROM {$wpdb->prefix}erp_acct_ledgers WHERE slug = %s", [ 'sales_return_discount' ]
        )
    );

    if ( empty( $sales_return_discount_exists ) ) {
        $wpdb->query(
            $wpdb->prepare(
                "INSERT INTO {$wpdb->prefix}erp_acct_ledgers ( `chart_id`, `name`, `slug`, `code`, `system`, `created_at` ) VALUES ( %d, %s, %s, %s, %d, %s )",
                [ 4, 'Sales Return Discount', 'sales_return_discount', '1406', 1, date( 'Y-m-d' ) ]
            )
        );
    }

    $sales_return_tax_exists = $wpdb->get_row(
        $wpdb->prepare(
            "SELECT * FROM {$wpdb->prefix}erp_acct_ledgers WHERE slug = %s", [ 'sales_return_tax' ]
        )
    );

    if ( empty( $sales_return_tax_exists ) ) {
        $wpdb->query(
            $wpdb->prepare(
                "INSERT INTO {$wpdb->prefix}erp_acct_ledgers ( `chart_id`, `name`, `slug`, `code`, `system`, `created_at` ) VALUES ( %d, %s, %s, %s, %d, %s )",
                [ 4, 'Sales Return Tax', 'sales_return_tax', '1407', 1, date( 'Y-m-d' ) ]
            )
        );
    }

    $purchase_return_exists  = $wpdb->get_row(
        $wpdb->prepare(
            "SELECT * FROM {$wpdb->prefix}erp_acct_ledgers WHERE slug = %s", [ 'purchase_return' ]
        )
    );

    if ( empty( $purchase_return_exists ) ) {
        $wpdb->query(
            $wpdb->prepare(
                "INSERT INTO {$wpdb->prefix}erp_acct_ledgers ( `chart_id`, `name`, `slug`, `code`, `system`, `created_at` ) VALUES ( %d, %s, %s, %s, %d, %s )",
                [ 4, 'Purchase Return', 'purchase_return', '1408', 1, date( 'Y-m-d' ) ]
            )
        );
    }

    $purchase_return_vat_exists = $wpdb->get_row(
        $wpdb->prepare(
            "SELECT * FROM {$wpdb->prefix}erp_acct_ledgers WHERE slug = %s", [ 'purchase_return_vat' ]
        )
    );

    if ( empty( $purchase_return_vat_exists ) ) {
        $wpdb->query(
            $wpdb->prepare(
                "INSERT INTO {$wpdb->prefix}erp_acct_ledgers ( `chart_id`, `name`, `slug`, `code`, `system`, `created_at` ) VALUES ( %d, %s, %s, %s, %d, %s )",
                [ 4, 'Purchase Return VAT', 'purchase_return_vat', '1409', 1, date( 'Y-m-d' ) ]
            )
        );
    }

    $purchase_return_discount_exists = $wpdb->get_row(
        $wpdb->prepare(
            "SELECT * FROM {$wpdb->prefix}erp_acct_ledgers WHERE slug = %s", [ 'purchase_return_discount' ]
        )
    );

    if ( empty( $purchase_return_discount_exists ) ) {
        $wpdb->query(
            $wpdb->prepare(
                "INSERT INTO {$wpdb->prefix}erp_acct_ledgers ( `chart_id`, `name`, `slug`, `code`, `system`, `created_at` ) VALUES ( %d, %s, %s, %s, %d, %s )",
                [ 5, 'Purchase Return Discount', 'purchase_return_discount', '1410', 1, date( 'Y-m-d' ) ]
            )
        );
    }

    $purchase_vat_exists = $wpdb->get_row(
        $wpdb->prepare(
            "SELECT * FROM {$wpdb->prefix}erp_acct_ledgers WHERE slug = %s", [ 'purchase_vat' ]
        )
    );

    if ( empty( $purchase_vat_exists ) ) {
        $wpdb->query(
            $wpdb->prepare(
                "INSERT INTO {$wpdb->prefix}erp_acct_ledgers ( `chart_id`, `name`, `slug`, `code`, `system`, `created_at` ) VALUES ( %d, %s, %s, %s, %d, %s )",
                [ 5, 'Purchase VAT', 'purchase_vat', '1509', 1, date( 'Y-m-d' ) ]
            )
        );
    }
}

/*
 * Add tax and tax_zone_id columns in `erp_acct_purchase` table
 */
function erp_acct_alter_table_erp_acct_purchase_1_8_1() {
    global $wpdb;

    $table = $wpdb->prefix . 'erp_acct_purchase';
    $cols  = $wpdb->get_col( "DESC $table" );

    if ( ! in_array( 'tax_zone_id', $cols ) ) {
        $wpdb->query(
            $wpdb->prepare(
                "ALTER TABLE `{$wpdb->prefix}erp_acct_purchase` ADD `tax_zone_id` integer DEFAULT NULL AFTER `amount`;"
            )
        );
    }

    if ( ! in_array( 'tax', $cols ) ) {
        $wpdb->query(
            $wpdb->prepare(
                "ALTER TABLE `{$wpdb->prefix}erp_acct_purchase` ADD `tax` decimal(20,2) DEFAULT NULL AFTER `amount`;"
            )
        );
    }
}

/*
 * Add tax column in `erp_acct_purchase_details` table
 */
function erp_acct_alter_table_erp_acct_purchase_details_1_8_1() {
    global $wpdb;

    $table = $wpdb->prefix . 'erp_acct_purchase_details';
    $cols  = $wpdb->get_col( "DESC $table" );

    if ( ! in_array( 'tax', $cols ) ) {
        $wpdb->query(
            $wpdb->prepare(
                "ALTER TABLE `{$wpdb->prefix}erp_acct_purchase_details` ADD `tax` decimal(20,2) DEFAULT NULL AFTER `amount`;"
            )
        );
    }
}

/*
 * Create `erp_acct_purchase_details_tax` table
 */
function erp_acct_create_erp_acct_purchase_details_tax_1_8_1() {
    global $wpdb;

    $charset_collate = $wpdb->get_charset_collate();

    $sql = "CREATE TABLE {$wpdb->prefix}erp_acct_purchase_details_tax (
                id int(20) UNSIGNED NOT NULL AUTO_INCREMENT,
                invoice_details_id int(20) NOT NULL,
                agency_id int(20) DEFAULT NULL,
                tax_rate decimal(20,2) NOT NULL,
                created_at datetime DEFAULT NULL,
                created_by int(20) DEFAULT NULL,
                updated_at datetime DEFAULT NULL,
                updated_by int(20) DEFAULT NULL,
                PRIMARY KEY  (id)
            ) $charset_collate";

    require_once ABSPATH . 'wp-admin/includes/upgrade.php';

    dbDelta( $sql );
}

/*
 * Update `Asset Purchase` system ledger
 */
function erp_acct_update_table_erp_acct_ledgers_1_8_1() {
    global $wpdb;

    $wpdb->update(
        $wpdb->prefix . 'erp_acct_ledgers',
        [ 'code' => '1507', 'updated_at' => date( 'Y-m-d' ) ],
        [ 'slug' => 'asset_purchase' ],
        [ '%s', '%s' ],
        [ '%s' ]
    );
}

/*
 * Add `returned` transaction status type
 */
function erp_acct_insert_into_table_trn_status_types_1_8_1() {
    global $wpdb;

    $returned_trn_type = $wpdb->get_row(
        $wpdb->prepare(
            "SELECT id FROM {$wpdb->prefix}erp_acct_trn_status_types WHERE slug = %s",
            'returned'
        )
    );

    if ( empty( $returned_trn_type ) ) {
        $wpdb->insert( "{$wpdb->prefix}erp_acct_trn_status_types", [
            'type_name' => 'Returned',
            'slug'      => 'returned',
        ] );
    }

    $part_returned_trn_type = $wpdb->get_row(
        $wpdb->prepare(
            "SELECT id FROM {$wpdb->prefix}erp_acct_trn_status_types WHERE slug = %s",
            'partially_returned'
        )
    );

    if ( empty( $part_returned_trn_type ) ) {
        $wpdb->insert( "{$wpdb->prefix}erp_acct_trn_status_types", [
            'type_name' => 'Partially Returned',
            'slug'      => 'partially_returned',
        ] );
    }
}

/*
 * Add tax_zone_id column in `erp_acct_invoices` table
 */
function erp_acct_alter_table_erp_acct_invoices_1_8_1() {
    global $wpdb;

    $cols = $wpdb->get_col( "DESC {$wpdb->prefix}erp_acct_invoices" );

    if ( ! in_array( 'tax_zone_id', $cols ) ) {
        $wpdb->query(
            $wpdb->prepare(
                "ALTER TABLE `{$wpdb->prefix}erp_acct_invoices` ADD `tax_zone_id` int(11) DEFAULT NULL AFTER `tax`;"
            )
        );
    }
}

erp_acct_alter_table_erp_acct_purchase_1_8_1();
erp_acct_alter_table_erp_acct_purchase_details_1_8_1();
erp_acct_create_erp_acct_purchase_details_tax_1_8_1();
erp_acct_insert_to_erp_acct_ledgers_1_8_1();
erp_acct_update_table_erp_acct_ledgers_1_8_1();
erp_acct_insert_into_table_trn_status_types_1_8_1();
erp_acct_alter_table_erp_acct_invoices_1_8_1();