function cw_doc_recalc($doc_id)
{
    global $config, $tables;
    cw_load('aom', 'cart_process');
    $orig = $config['Taxes']['display_taxed_order_totals'];
    $doc_data = cw_call('cw_doc_get', array($doc_id, 65535));
    if ($doc_data['type'] == 'G') {
        $config['Taxes']['display_taxed_order_totals'] = 'Y';
    } else {
        $config['Taxes']['display_taxed_order_totals'] = 'N';
    }
    $company_id = 0;
    if (is_numeric($doc_data['userinfo']['customer_id'])) {
        $company_id = cw_query_first_cell("SELECT company_id FROM {$tables['customers_customer_info']} WHERE customer_id = " . $doc_data['userinfo']['customer_id']);
    }
    $doc_data['userinfo']['company_id'] = $company_id;
    $doc_data['use_discount_alt'] = '';
    $doc_data['use_shipping_cost_alt'] = '';
    $doc_data['use_shipping_insurance_alt'] = '';
    $doc_data = cw_aom_normalize_after_update($doc_data, array());
    cw_aom_update_order($doc_data, array());
    $config['Taxes']['display_taxed_order_totals'] = $orig;
}
    $smarty->assign('home_style', 'iframe');
    $smarty->assign('is_printing', true);
    cw_display('admin/index.tpl', $smarty);
    exit;
}
if ($action == 'save') {
    if ($confirmed == "Y") {
        $aom_orders[$doc_id]['type'] = $aom_orders[$doc_id]['type'][0];
        if ($aom_orders[$doc_id]['new']) {
            $aom_orders[$doc_id]['display_doc_id'] = cw_doc_get_display_id($aom_orders[$doc_id]['type']);
        }
        $display_doc_id = $aom_orders[$doc_id]['display_doc_id'];
        $prefix = $aom_orders[$doc_id]['prefix'];
        $year = $aom_orders[$doc_id]['year'];
        $aom_orders[$doc_id]['display_id'] = ($prefix ? $prefix . ' ' : '') . ($config['docs']['display_id_format'] == 'Y' ? $year . '/' : '') . $display_doc_id;
        cw_aom_update_order($aom_orders[$doc_id], $doc_data['products']);
        $aom_orders[$doc_id] = null;
        if ($notify_customer) {
            $doc_data = $doc_data_customer = cw_call('cw_doc_get', array($doc_id));
            if (!empty($doc_data)) {
                $to_customer = $userinfo['language'] ? $userinfo['language'] : $config['default_customer_language'];
                $doc_data_customer['products'] = cw_doc_translate_products($doc_data['products'], $to_customer);
                $smarty->assign('doc_data', $doc_data_customer);
                if ($doc_data['info']['layout_id']) {
                    $layout = cw_web_get_layout_by_id($doc_data['info']['layout_id']);
                } else {
                    $layout = cw_call('cw_web_get_layout', array('docs_' . $doc_data['type']), true);
                }
                $smarty->assign('layout_data', $layout);
                $smarty->assign('info', $doc_data['info']);
                $smarty->assign('products', $doc_data_customer['products']);
    }
}
if ($action && $aom_orders[$doc_id]['saved']) {
    $error_message = cw_get_langvar_by_name('txt_aom_already_printed');
}
if ($action == 'save_doc' && !$aom_orders[$doc_id]['saved']) {
    if ($aom_orders[$doc_id] && $aom_orders[$doc_id]['info']['total'] >= 0 && count($aom_orders[$doc_id]['products'])) {
        if ($aom_orders[$doc_id]['type'] == 'G' && $config['pos']['is_use_printer'] != 'Y' && AREA_TYPE == 'G') {
            $aom_orders[$doc_id]['type'] = 'I';
        }
        $aom_orders[$doc_id]['doc_id'] = cw_doc_create_empty($aom_orders[$doc_id]['type']);
        $doc_info = cw_doc_get_basic_info($aom_orders[$doc_id]['doc_id']);
        $aom_orders[$doc_id]['info']['doc_info_id'] = $doc_info['doc_info_id'];
        $aom_orders[$doc_id]['userinfo']['main_address']['address_id'] = $doc_info['main_address_id'];
        $aom_orders[$doc_id]['userinfo']['current_address']['address_id'] = $doc_info['current_address_id'];
        cw_aom_update_order($aom_orders[$doc_id], $is_invoice);
        $aom_orders[$doc_id]['saved'] = 1;
        # for pos, generate invoice if required
        if ($aom_orders[$doc_id]['type'] == 'G' && $is_invoice) {
            cw_doc_make_full_relation('I', $aom_orders[$doc_id]['doc_id']);
        }
    } else {
        $error_message = cw_get_langvar_by_name('txt_aom_total_is_incorrect');
    }
}
if (!$aom_orders[$doc_id]['saved']) {
    $smarty->assign('reset_error', 1);
}
$smarty->assign('update_time', cw_core_get_time());
if (count($not_found)) {
    $error_message .= cw_get_langvar_by_name('txt_aom_product_eans_not_found') . implode('<br/>', $not_found) . '<br/>';