intval($_GET['product_id'] ?? 0), 'client_id' => intval($_GET['client_id'] ?? 0), 'kind' => isset(productRepriceKinds()[$_GET['kind'] ?? '']) ? $_GET['kind'] : '', 'doc_id' => intval($_GET['doc_id'] ?? 0), ]; $groups = productRepriceLines($filters); $kinds = productRepriceKinds(); $can_edit = lookupUserPermission('module_sales') >= 2; $line_count = array_sum(array_map(function ($group) { return count($group['lines']); }, $groups)); $period_words = ['month' => 'a month', 'quarter' => 'a quarter', 'year' => 'a year']; $doc_pages = ['recurring' => 'recurring_invoice.php?recurring_invoice_id=', 'invoice' => 'invoice.php?invoice_id=', 'quote' => 'quote.php?quote_id=']; // What it is narrowed to, each with a link that takes it off $narrowed = []; $clear_url = function ($keys) use ($filters) { $params = array_filter(array_diff_key($filters, array_flip($keys))); return 'products_reprice.php' . ($params ? '?' . http_build_query($params) : ''); }; if ($filters['product_id']) { $narrowed[] = ['Product', getFieldById('products', $filters['product_id'], 'product_name') ?: 'a product', $clear_url(['product_id'])]; } if ($filters['client_id']) { $narrowed[] = ['Client', getFieldById('clients', $filters['client_id'], 'client_name') ?: 'a client', $clear_url(['client_id'])]; } if ($filters['kind']) { $doc = $filters['doc_id'] ? billingRow($filters['kind'], $filters['doc_id']) : null; $narrowed[] = [$kinds[$filters['kind']]['one'], $doc ? billingNumber($filters['kind'], $doc) : $kinds[$filters['kind']]['label'], $clear_url(['kind', 'doc_id'])]; } $page_title = 'Update Prices'; ?>