// Shared helpers for the Asset Management pages. var ASSET_STATUS = { 0: ['Draft', 'bg-secondary'], 1: ['Active', 'bg-success'], 2: ['Fully depreciated', 'bg-info text-white'], 3: ['Disposed', 'bg-dark'], 4: ['Void', 'bg-light text-dark'] }; function asset_status_badge(status, asset_class) { var code = parseInt(status, 10); var entry = ASSET_STATUS[code] || ['—', 'bg-light text-dark']; var label = (code === 2 && asset_class === 'intangible') ? 'Fully amortized' : entry[0]; return '' + label + ''; } function asset_class_badge(asset_class) { return asset_class === 'intangible' ? 'Intangible · Amortization' : 'Tangible · Depreciation'; } function asset_gl_badge(posted) { return String(posted) === '1' ? 'Posted' : 'Unposted'; } // Active posting accounts from the chart of accounts. function load_posting_accounts(onLoaded) { return ajax_request({ url: server_url + 'accounting/api/engine/account.php', autoPrepare: true, checkRequired: 0, action: 'read', queueLock: false, noLoading: true, onSuccess: function(res) { var rows = (res.output || []).filter(function(a) { return String(a.is_posting) === '1' && String(a.status) === '1'; }); onLoaded(rows); } }); } // '; var found = false; list.forEach(function(a) { var is_selected = String(a.account_code) === String(selected || ''); if (is_selected) found = true; html += ''; }); // Keep a saved code visible even if it is no longer an active posting account. if (selected && !found) { html += ''; } return html; } function current_period() { var d = new Date(); return d.getFullYear() + '-' + ('0' + (d.getMonth() + 1)).slice(-2); }