/**
 * Insert a new chart
 *
 * @param array $args
 */
function erp_ac_insert_chart($args = array())
{
    global $wpdb;
    $defaults = array('id' => null, 'name' => '', 'type_id' => '', 'active' => 1, 'parent' => 0, 'system' => 0);
    $args = wp_parse_args($args, $defaults);
    $table_name = $wpdb->prefix . 'erp_ac_ledger';
    // some basic validation
    if (empty($args['name'])) {
        return new WP_Error('no-name', __('No Name provided.', 'erp-accounting'));
    }
    // remove row id to determine if new or update
    $row_id = (int) $args['id'];
    unset($args['id']);
    if (!$row_id) {
        $ledger = WeDevs\ERP\Accounting\Model\Ledger::create($args);
        if ($ledger->id) {
            return $ledger->id;
        }
    } else {
        // don't allow to change account type
        unset($args['type_id']);
        // do update method here
        if ($wpdb->update($table_name, $args, array('id' => $row_id))) {
            return $row_id;
        }
    }
    return false;
}