Updated GL System , Updated user manual

This commit is contained in:
2026-06-08 10:55:42 -05:00
parent 63d767c6b0
commit 2a254489a3
6 changed files with 964 additions and 10 deletions

View File

@@ -266,8 +266,34 @@
<p>
Select a book to view its <strong>GL ledger</strong> in debit/credit format asset cost, accumulated depreciation, and the
periods depreciation expense rolled to GL accounts, with per-asset detail and a summary. You can export the ledger.
This rollup is computed automatically from depreciation; the <strong>Journal entries</strong> panel below it is a separate,
editable layer (the two do not double-count).
</p>
<h3>GL journal entries add, edit, import &amp; track changes</h3>
<p>
Below the computed ledger, the <strong>Journal entries</strong> panel holds stored, editable GL postings for the selected
book and year. Use it to record manual journal lines or to load entries from another system.
</p>
<ul>
<li><strong>Add / edit / delete.</strong> Click <strong>Add entry</strong> (or the pencil/trash on a row) to capture a
date, GL account, account type, description, reference, <strong>debit</strong> and/or <strong>credit</strong>, and an
optional <strong>external ID</strong>. The panel shows running debit, credit, and balance totals.</li>
<li><strong>Import (CSV or Excel/XLS).</strong> Click <strong>Import</strong> and choose a <code>.csv</code>,
<code>.xlsx</code>, or <code>.xls</code> file. Column headers are matched flexibly (Date, Account, Debit, Credit,
Reference, Description, External&nbsp;Id, ).</li>
<li><strong>Conflict / merge resolution.</strong> The import first shows a <strong>preview</strong> that classifies every
row as <em>New</em>, <em>Update</em> (matches an existing entry but differs), <em>Duplicate</em> (identical), or
<em>Error</em>, with counts. Rows are matched to existing entries by <strong>external ID</strong> first, then by a
natural key (date + account + debit + credit + reference). You then pick a strategy <strong>Skip conflicts</strong>,
<strong>Merge</strong> (update existing + insert new), or <strong>Insert as new</strong> and confirm. Set an external ID
on your entries for the most reliable re-import matching.</li>
<li><strong>Export.</strong> The <strong>Export</strong> menu downloads the current entries as CSV or Excel (XLSX).</li>
<li><strong>Change history.</strong> Every add, edit, delete, and import is fully logged. Click the <strong>history</strong>
(clock) icon on a row to see that entrys timeline who changed it, when, and a field-level beforeafter diff. The same
events are searchable system-wide in <strong>Admin Activity &amp; Audit Trail</strong>.</li>
</ul>
<h3>Depreciation methods &amp; critical fields</h3>
<p>
Each books depreciation is computed from the depreciation-critical fields: property type, placed-in-service date,
@@ -523,6 +549,36 @@
Completed forms with signature, ratings, notes, and photos are viewable from both the assets PM tab and the
<strong>Completed PM forms</strong> list on the Maintenance screen.
</v-alert>
<h3>Dynamic scheduling usage meters &amp; the lifespan wear curve</h3>
<p>
Beyond a fixed calendar interval, a schedules next-due date can adjust to real-world use. When usage and
age signals are enabled, the next service is due at the <strong>earliest</strong> of three triggers the
calendar interval, a projected usage threshold, or an age-compressed date and the assets PM list shows a
small badge (📅 date, usage, or 📉 age) indicating which one is driving the date.
</p>
<ul>
<li>
<strong>Usage meters.</strong> Add one or more meters to a PM plan (e.g. <em>Operating Hours</em>, kWh,
gallons, cycles) with a due every threshold. Record the current reading when completing a service, or
anytime via <strong>Log reading</strong> on the assets PM tab. DepreCore infers the usage <em>rate</em>
from successive readings and pulls the due-date in when a machine is running hard; crossing a threshold
raises a usage alert (e.g. Operating Hours 512/500).
</li>
<li>
<strong>Lifespan wear curve.</strong> Turn on Tighten the interval as the asset ages on a plan to shorten
the service interval as an asset approaches its estimated life (from the assets useful-life months). New
equipment is serviced on the base cadence; near end-of-life it is serviced more often, along a curve you
tune in PM settings.
</li>
</ul>
<v-alert type="info" variant="tonal" density="comfortable" class="manual-callout">
Both signals are <strong>opt-in</strong>: an administrator enables Usage-based scheduling and the Lifespan
wear curve (with its end-of-life factor and aggressiveness) under <strong>Admin Application Configuration
Preventative maintenance defaults</strong>. A nightly job re-projects due-dates so usage/age schedules stay
current even when an asset isnt serviced for a while; admins can also run it on demand with <strong>Run
now</strong>.
</v-alert>
</section>
<!-- PARTS -->
@@ -561,6 +617,7 @@
<li>Use the type selector and filter box to find records; create a contact with <strong>New contact</strong>.</li>
<li>Capture name/organization, international-friendly address and phone, and email.</li>
<li><strong>Type-specific fields</strong>: employee ID/department/manager/start date; contractor tax ID or business license; vendor and service-provider star rating and credit term.</li>
<li><strong>Location map</strong> once an address is entered, the contact card can show an embedded <strong>Google map</strong> of the location, with an <em>Open in Google Maps</em> link. For a new contact the map appears on a <em>Show map</em> click; when you open an existing contact with an address its shown automatically.</li>
<li>Keep a per-contact <strong>notes log</strong> for running history.</li>
</ul>
<h3>How contacts connect to the rest of the app</h3>
@@ -605,6 +662,7 @@
<ul>
<li><strong>Email digest</strong> when email is enabled and a mail server is configured, new alerts are emailed to the recipient list. You can also trigger <strong>Email digest now</strong> from the Alerts screen.</li>
<li><strong>Webhook</strong> each new alert can be posted to an external URL as a JSON object, optionally signed for authenticity. Useful for chat tools or custom automation.</li>
<li><strong>Microsoft Teams</strong> post a digest card of new alerts to a Teams channel or chat (see <a href="#" @click.prevent="select('teams')">Microsoft Teams integration</a>).</li>
<li><strong>ServiceNow incident</strong> raise a ticket from any alert (see below).</li>
</ul>
@@ -655,21 +713,65 @@
</v-alert>
</section>
<!-- MICROSOFT TEAMS -->
<section v-show="isShown('teams')" class="manual-section">
<h2>Microsoft Teams integration</h2>
<p>
DepreCore can post newly raised alerts to a <strong>Microsoft Teams</strong> channel or chat. One digest card is sent per
alert cycle, alongside (or instead of) email, webhook, and ServiceNow delivery. Configure it in
<strong>Administration Integrations Microsoft Teams</strong>.
</p>
<h3>Connecting</h3>
<ol>
<li>In Teams, create an incoming webhook for the target channel a <strong>Workflows</strong> post to a channel when a
webhook request is received flow (recommended), or a legacy <strong>Incoming Webhook</strong> connector.</li>
<li>Paste the webhook URL into DepreCore and pick the matching <strong>card format</strong>: <em>Adaptive Card (Workflows)</em>
for the modern flow, or <em>MessageCard (legacy connector)</em>.</li>
<li>Choose a <strong>minimum severity</strong> to post (e.g. Warning and above) so the channel only gets what matters, turn on
<strong>Enable Teams delivery</strong>, and click <strong>Send test card</strong> to confirm it lands in the channel.</li>
</ol>
<v-alert type="info" variant="tonal" density="comfortable" class="manual-callout">
Cards are colour-coded by severity and summarize the pending alerts (title, detail, due date, asset). Each alert is delivered
once across all channels. <em>Note:</em> this Teams (Microsoft Teams chat) is unrelated to <strong>Admin Users &amp;
Teams</strong>, which groups your DepreCore users.
</v-alert>
</section>
<!-- ADMIN -->
<section v-show="isShown('admin')" class="manual-section">
<h2>Administration</h2>
<p>
<strong>Admin</strong> (admin role) is where the application is configured. It is split into three sub-screens in the
navigation rail: <strong>Users &amp; Teams</strong>, <strong>Application Configuration</strong> (application settings, asset classes, depreciation zones, Section 179 limits, asset ID templates, asset categories,
asset departments, PM categories, parts categories, maintenance defaults, tax rule sets), and <strong>Integrations</strong> (email, webhook, ServiceNow, Workday). Each is described below.
<strong>Admin</strong> (admin role) is where the application is configured. It is split into sub-screens in the
navigation rail: <strong>Users &amp; Teams</strong>, <strong>Password &amp; Security</strong>,
<strong>Activity &amp; Audit Trail</strong>, <strong>Application Configuration</strong> (companies, application
settings, asset classes, depreciation zones, Section 179 limits, asset ID templates, asset categories,
asset departments, PM categories, parts categories, maintenance defaults, tax rule sets), and
<strong>Integrations</strong> (email, webhook, Microsoft Teams, ServiceNow, Workday). Each is described below.
</p>
<h3>Users &amp; roles</h3>
<ul>
<li>Create and edit users name, email, team, role, status, and password.</li>
<li>The list paginates and is filterable. A users role controls what they can see and do.</li>
<li><strong>Company access</strong> assign which companies a user may see and switch between (administrators
always see every company). See <a href="#" @click.prevent="select('companies')">Companies</a>.</li>
<li>You can require a <strong>password change at next sign-in</strong>, and a locked account (after too many
failed sign-ins) shows an <strong>Unlock</strong> action see
<a href="#" @click.prevent="select('security')">Password &amp; security</a>.</li>
</ul>
<h3>Companies</h3>
<p>Add, edit, and dispose/restore companies, each with its own books, GL, and data. Covered under
<a href="#" @click.prevent="select('companies')">Companies</a>.</p>
<h3>Password &amp; security</h3>
<p>Password complexity/expiry/history rules and account lockout. Covered under
<a href="#" @click.prevent="select('security')">Password &amp; security</a>.</p>
<h3>Activity &amp; audit trail</h3>
<p>A searchable, exportable log of every change made in the system. Covered under
<a href="#" @click.prevent="select('security')">Password &amp; security</a>.</p>
<h3>Teams</h3>
<p>Group users into teams. Select a team to edit or delete it (a team in use by members cant be deleted until theyre reassigned).</p>
@@ -747,11 +849,20 @@
payload is shown for whoever builds the receiving side.
</p>
<h3>Microsoft Teams</h3>
<p>Post alert digests to a Teams channel webhook URL, card format, and minimum severity. Covered under <a href="#" @click.prevent="select('teams')">Microsoft Teams integration</a>.</p>
<h3>ServiceNow integration</h3>
<p>Connection, incident push, and CMDB pull settings covered in detail under <a href="#" @click.prevent="select('servicenow')">ServiceNow integration</a>.</p>
<h3>Maintenance (PM) defaults</h3>
<p>Set the default maintenance frequency for newly attached plans and how many days ahead PM-due alerts should appear.</p>
<p>
Set the default maintenance frequency for newly attached plans and how many days ahead PM-due alerts should appear.
This is also where you enable <strong>dynamic scheduling</strong>: <strong>usage-based scheduling</strong> (meters) and the
<strong>lifespan wear curve</strong> (with its end-of-life interval factor and curve aggressiveness), plus the
<strong>nightly recompute</strong> job (on/off, hour of day, and a <em>Run now</em> button). See
<a href="#" @click.prevent="select('pm')">Preventative maintenance</a> for how these signals drive due-dates.
</p>
<h3>Workday connector</h3>
<ul>
@@ -799,6 +910,83 @@
</v-alert>
</section>
<!-- COMPANIES -->
<section v-show="isShown('companies')" class="manual-section">
<h2>Companies (multi-company)</h2>
<p>
DepreCore can manage <strong>multiple companies</strong>, each with its own assets, books and general ledger, PM plans,
alerts, reports, reference data (categories/locations/departments), contacts, templates, saved reports, parts, and
employee directory. You work in one <strong>active company</strong> at a time.
</p>
<h3>Switching companies</h3>
<p>
When you have access to more than one company, a <strong>company switcher</strong> appears in the top bar. Choosing a
company instantly re-scopes every screen dashboard, assets, books, maintenance, alerts, reports, and so on to that
company. Your selection is remembered between visits.
</p>
<h3>Managing companies</h3>
<p>Administrators manage companies in <strong>Admin Application Configuration Companies</strong>:</p>
<ul>
<li><strong>Add / edit</strong> a company name, legal name, base currency, fiscal year-end month, and separate
<strong>Federal</strong>, <strong>State</strong>, and (optional) <strong>Local</strong> tax IDs. A new company is
created with the standard book set and the standard reference data so its ledger works immediately.</li>
<li><strong>Dispose (archive)</strong> a company to retire it all of its assets, books, GL, and history are
<em>preserved</em>, but its hidden from the switcher and cant be selected for new work. The last active company cant be
disposed. Disposed companies can be <strong>restored</strong> at any time.</li>
</ul>
<h3>Who can see which company</h3>
<p>
Each user is granted access to one or more companies (set in the users edit dialog see
<a href="#" @click.prevent="select('admin')">Administration</a>); the switcher only lists the companies they may use, and a
user cant reach another companys data. <strong>Administrators see every company.</strong>
</p>
<v-alert type="info" variant="tonal" density="comfortable" class="manual-callout">
A few things are deliberately <strong>shared across all companies</strong>: the tax-rule-set catalog (each company still
selects which set each of its books uses), IRS reference data (depreciation zones and §179 limits), the integrations
(email/Teams/webhook/ServiceNow/Workday), and the users/roles and audit/security layer.
</v-alert>
</section>
<!-- SECURITY -->
<section v-show="isShown('security')" class="manual-section">
<h2>Password &amp; security · audit trail</h2>
<h3>Password &amp; account security policy</h3>
<p>
Administrators set the rules for locally managed passwords in <strong>Admin Password &amp; Security</strong>. They are
enforced whenever a password is set or changed and at sign-in:
</p>
<ul>
<li><strong>Complexity</strong> minimum length and required character classes (uppercase, lowercase, number, symbol),
and a rule that a password may not contain the users name or email.</li>
<li><strong>Rotation &amp; reuse</strong> expire passwords after N days, block reuse of the last N passwords, and an
optional minimum password age.</li>
<li><strong>Account lockout</strong> lock an account for a set number of minutes after too many failed sign-ins. A locked
user is refused until the window passes or an administrator clicks <strong>Unlock</strong> on the user.</li>
</ul>
<p>
The live rule preview shows users exactly whats required. Users change their own password from the account menu
(<strong>Change password</strong>); when a change is required (expired, or set by an admin) theyre prompted at sign-in.
</p>
<h3>Activity &amp; Audit Trail</h3>
<p>
<strong>Admin Activity &amp; Audit Trail</strong> is a complete, searchable record of user activity sign-ins and
lockouts, password and permission changes, GL and data edits, imports, and every create/update/delete across the app.
</p>
<ul>
<li>Filter by <strong>user</strong>, <strong>action</strong>, <strong>entity type</strong>, <strong>date range</strong>, or
free-text search, with pagination.</li>
<li>Each entry can expand to show the full <strong>before after</strong> detail of what changed.</li>
<li><strong>Export CSV</strong> for external review or retention.</li>
</ul>
<v-alert type="info" variant="tonal" density="comfortable" class="manual-callout">
Because every change is captured here with full before/after detail, the audit trail is the system-of-record for change
tracking for example, each GL journal-entry edit is logged here and also surfaced inline via the entrys
<strong>history</strong> icon (see <a href="#" @click.prevent="select('books')">Books, depreciation &amp; tax</a>).
</v-alert>
</section>
<div class="manual-footer quiet">DepreCore User Guide · select a topic on the left, or use Print / Save PDF for the full manual.</div>
</div>
</div>
@@ -878,16 +1066,19 @@ export default {
{ id: 'assets', title: 'Assets — creating & managing', icon: 'mdi-archive-search-outline', keywords: 'asset register create edit import export mass edit workbench files notes tasks warranty' },
{ id: 'lifecycle', title: 'Asset lifecycle', icon: 'mdi-cash-remove', keywords: 'dispose disposal sale retire gain loss lease amortization impairment adjustment write down' },
{ id: 'barcodes', title: 'Barcodes & scanning', icon: 'mdi-barcode-scan', keywords: 'barcode label print scan camera tag' },
{ id: 'books', title: 'Books, depreciation & tax', icon: 'mdi-book-open-variant', keywords: 'book gaap federal depreciation general ledger gl method convention 179 bonus reports' },
{ id: 'books', title: 'Books, depreciation & tax', icon: 'mdi-book-open-variant', keywords: 'book gaap federal depreciation general ledger gl method convention 179 bonus reports journal entry entries import export csv excel conflict merge history zone section 179' },
{ id: 'taxrules', title: 'Tax rule sets', icon: 'mdi-scale-balance', keywords: 'tax rules jurisdiction method limits activate version' },
{ id: 'templates', title: 'Templates', icon: 'mdi-form-select', keywords: 'template defaults custom fields data entry' },
{ id: 'pm', title: 'Preventative maintenance', icon: 'mdi-wrench-clock', keywords: 'pm maintenance plan steps complete close signature ratings guidance photos schedule' },
{ id: 'pm', title: 'Preventative maintenance', icon: 'mdi-wrench-clock', keywords: 'pm maintenance plan steps complete close signature ratings guidance photos schedule meter usage reading hours lifespan wear curve dynamic nightly recompute' },
{ id: 'parts', title: 'Parts inventory', icon: 'mdi-package-variant-closed', keywords: 'parts stock aisle bin reserve reorder supplier inventory' },
{ id: 'contacts', title: 'Contacts & CRM', icon: 'mdi-card-account-details-outline', keywords: 'contacts crm vendor employee contractor work location supplier notes' },
{ id: 'assignments', title: 'Assignments (custody)', icon: 'mdi-account-switch-outline', keywords: 'assignment custody employee release traceability' },
{ id: 'alerts', title: 'Alerts & reminders', icon: 'mdi-bell-alert-outline', keywords: 'alerts reminders severity scan acknowledge dismiss email digest webhook servicenow' },
{ id: 'alerts', title: 'Alerts & reminders', icon: 'mdi-bell-alert-outline', keywords: 'alerts reminders severity scan acknowledge dismiss email digest webhook teams microsoft servicenow' },
{ id: 'servicenow', title: 'ServiceNow integration', icon: 'mdi-cloud-sync-outline', keywords: 'servicenow incident ticket cmdb import sync connection' },
{ id: 'admin', title: 'Administration', icon: 'mdi-cog-outline', keywords: 'admin users roles teams settings smtp email webhook workday configuration' },
{ id: 'teams', title: 'Microsoft Teams', icon: 'mdi-microsoft-teams', keywords: 'teams microsoft chat channel webhook adaptive card messagecard alert digest notification workflow connector' },
{ id: 'admin', title: 'Administration', icon: 'mdi-cog-outline', keywords: 'admin users roles teams settings smtp email webhook workday configuration company companies password security lockout audit activity trail' },
{ id: 'companies', title: 'Companies (multi-company)', icon: 'mdi-domain', keywords: 'company companies multi tenant switch active dispose archive restore tax id federal state local entity access' },
{ id: 'security', title: 'Password & security · audit', icon: 'mdi-shield-key-outline', keywords: 'password policy complexity expiry lockout reuse history audit trail activity log change tracking export forced change' },
{ id: 'roles', title: 'Roles & permissions', icon: 'mdi-shield-account-outline', keywords: 'roles permissions admin finance operations viewer access' }
]
};