> ## Documentation Index
> Fetch the complete documentation index at: https://help.clinikehr.com/llms.txt
> Use this file to discover all available pages before exploring further.

# Reports and the executive dashboard

> Run the pharmacy report set, export any view to CSV or Excel, and read the owner's remote view of the business.

export const AuditNote = ({action = 'This action'}) => <div className="ck-callout ck-callout--info" role="note">
    <p className="ck-callout__body">
      {action} is written to your workspace's audit log with your name, the
      record touched and the time — a HIPAA requirement, and one you can review
      yourself under <strong>Audit Log</strong>. See{' '}
      <a href="/platform/security/audit-log">Audit log</a>.
    </p>
  </div>;

export const StillStuck = ({topic}) => <div className="ck-callout ck-callout--note" role="note">
    <p className="ck-callout__body">
      <strong>Still stuck{topic ? ` with ${topic}` : ''}?</strong>{' '}
      Check <a href="/platform/help/troubleshooting">Troubleshooting</a> first —
      it covers the failures we see most often. If that does not resolve it,{' '}
      <a href="/platform/help/contact-support">contact support</a> and include
      your workspace name and the time the problem happened, so we can find the
      matching entry in your audit log.
    </p>
  </div>;

export const Path = ({steps = []}) => <span className="ck-path">
    {steps.map((s, i) => <span key={i} className="ck-path__step">
        {i > 0 ? <span className="ck-path__sep" aria-hidden="true">
            ›
          </span> : null}
        {s}
      </span>)}
  </span>;

export const Availability = ({editions = ['all'], plans, roles, note}) => {
  const list = editions.includes('all') ? ['clinic', 'pharmacy', 'lims'] : editions;
  return <div className="ck-avail" role="note" aria-label="Feature availability">
      <span className="ck-avail__label">Available in</span>

      {list.map(e => <span key={e} className={`ck-pill ck-pill--${e}`}>
          {EDITION_LABELS[e] || e}
        </span>)}

      {plans ? <span className="ck-avail__label">Plan</span> : null}
      {plans ? <span className="ck-pill ck-pill--plan">{plans}</span> : null}

      {roles ? <span className="ck-avail__label">Who</span> : null}
      {roles ? <span className="ck-pill ck-pill--role">{roles}</span> : null}

      {note ? <span className="ck-avail__note">{note}</span> : null}
    </div>;
};

<Availability editions={['pharmacy']} plans="Executive needs Professional and above; Analytics on all plans" roles="Some scopes need their own permission" />

Two screens answer the "how is the business doing?" question, and they are not the same tool. **Executive** is a glance — today, this week, per branch. **Analytics** is the workbench — pick a report, pick a period, read it, export it.

<Columns cols={2}>
  <Card title="Executive" icon="https://mintcdn.com/clinikehr/gjlpJWWKqjyYNRzM/images/icons/briefcase.svg?fit=max&auto=format&n=gjlpJWWKqjyYNRzM&q=85&s=84f9b434127a52771b6b0b126bfd1361" width="24" height="24" data-path="images/icons/briefcase.svg">
    <Path steps={['Sidebar', 'Executive']} />

    The owner's remote view. Today's numbers, alerts, and four quick reports.
  </Card>

  <Card title="Analytics" icon="https://mintcdn.com/clinikehr/nLyvBRumcl1Yk8z3/images/icons/table.svg?fit=max&auto=format&n=nLyvBRumcl1Yk8z3&q=85&s=00494272a212f133cdc3b4a2e5aa9e78" width="24" height="24" data-path="images/icons/table.svg">
    <Path steps={['Sidebar', 'Analytics']} />

    Eleven reports over a period you choose, each with an export.
  </Card>
</Columns>

## The executive dashboard

The heading reads **Today at a glance** with today's date. Run more than one branch and it becomes **All branches** or the branch you have selected, with a branch select alongside.

Underneath: today's and this week's tiles, and the headline **Today's net (revenue − cost − expenses)**. That figure is only as good as your recorded running costs — see [Track expenses and your net position](/pharmacy/money/expenses).

With several branches you also get a **By branch** card, listing each one with its sales count and net. Select a branch to switch the whole page to it.

**Revenue mix this week** splits takings between **Medication \{n}%** and **Retail \{n}%**. It appears only once both sides have sold something — a bar reading 100% / 0% tells you nothing you did not already know.

### The Reports card

A range select — **Today**, **7 days**, **1 month**, **3 months**, **6 months**, **All time** — and four tabs:

| Tab                 | Answers                                 |
| ------------------- | --------------------------------------- |
| **Top products**    | What is actually moving                 |
| **Sales Report**    | Takings day by day                      |
| **Customer Report** | Who spends, and how much                |
| **Payment Methods** | Cash versus card versus everything else |

Each has **Export Excel**, which is the fastest way to get a shareable copy of any of the four.

### Plan gating

Executive needs the **Professional** plan. Below that the entire page is one card:

> **Executive dashboard** — Available on Professional and above — Upgrade to get the owner's remote view of your pharmacy.

The multi-branch roll-up needs more again: the multi-branch reports feature **and** more than one branch on your account. With a single branch you get the single-pharmacy view, which is the right view for a single pharmacy. See [Change your plan](/platform/plans/change-plan).

## The Analytics workbench

**Analytics** lists every report your pharmacy can populate. Nothing clinical appears — a pharmacy has no wards or consultations to report on, so those reports do not exist for you rather than sitting empty.

| Report                  | What it covers                                        | Scopes                                          |
| ----------------------- | ----------------------------------------------------- | ----------------------------------------------- |
| **Revenue**             | Invoiced and paid money                               | **Invoices** · **Payments**                     |
| **POS Sales**           | Till takings and payment mix, net of refunds          | **Takings** · **Transactions** · **By cashier** |
| **Customers**           | Who you serve, and how often                          | —                                               |
| **Dispensing**          | Dispensing volume and stock-outs                      | —                                               |
| **Staff**               | Headcount by role and activity                        | —                                               |
| **Workload**            | Load across the business and peak hours               | —                                               |
| **Inventory**           | Valuation, turnover and expiry risk                   | —                                               |
| **Expenses**            | Operating spend by day and category                   | —                                               |
| **Expiry Risk**         | Stock value at risk of expiring, **as it stands now** | —                                               |
| **Expiry & Waste**      | Stock actually written off in the period              | —                                               |
| **Predictive Analysis** | Demand, revenue and stock forecasts                   | —                                               |

### Expiry Risk and Expiry & Waste are not the same report

These two are confused constantly, so read this once:

<Columns cols={2}>
  <Card title="Expiry Risk — the future" icon="https://mintcdn.com/clinikehr/nLyvBRumcl1Yk8z3/images/icons/triangle-exclamation.svg?fit=max&auto=format&n=nLyvBRumcl1Yk8z3&q=85&s=36566b5e7f88d663d6a3e3aec917ddb0" width="24" height="24" data-path="images/icons/triangle-exclamation.svg">
    A **snapshot**. What is on your shelves right now that will not sell through before it expires. It has **no date picker** at all — the header simply says **As it stands now**, because a period control that changed nothing would be a lie you could not see. Act on it: discount, transfer, return.
  </Card>

  <Card title="Expiry & Waste — the past" icon="https://mintcdn.com/clinikehr/nLyvBRumcl1Yk8z3/images/icons/trash-can.svg?fit=max&auto=format&n=nLyvBRumcl1Yk8z3&q=85&s=64c275249ae7684c517d65198aba27dd" width="24" height="24" data-path="images/icons/trash-can.svg">
    Period-shaped. What was actually written off in the window you selected, by day and by kind. Learn from it: which lines you keep over-ordering.
  </Card>
</Columns>

### Reading a report

Every report has the same shape, which is the point of having one workbench: a period select (**Last 30 days**, **Last 90 days**, **Last 12 months**), optional scope tabs, summary tiles, a chart over time, a breakdown chart, and a data table.

Periods longer than twelve months are shortened, and the page says so: "Figures are aggregates for the selected period. Periods longer than 12 months are shortened server-side."

### Exporting

**Export** on the data table offers two:

* **CSV — this view** — exactly the rows on screen, opens in Excel, Numbers or Sheets.
* **Excel (.xlsx) — this view** — a formatted workbook.

The toast tells you what you got: **Exported** — "\{n} rows · \{period}".

### Scopes you may not have

The **By cashier** scope on **POS Sales** needs the **View per-cashier takings** permission. The till total and *who took it* are different questions, and only the second is colleague-performance visibility — so the report stays open to everyone and just that tab is gated.

If a scope is not yours, the workbench quietly opens the first one you can see rather than showing an error. You will not be told which tab you are missing; if you expect a tab that is not there, that is why. See [Staff permissions](/platform/team/permissions).

<AuditNote action="Opening a report" />

## If something goes wrong

<AccordionGroup>
  <Accordion title="The Executive page is one card offering an upgrade">
    Executive needs **Professional** or above. Everything on **Analytics** is still available to you. See [Change your plan](/platform/plans/change-plan).
  </Accordion>

  <Accordion title="No branch select, and no By branch card">
    Both need the multi-branch reports feature and more than one branch. A single-branch pharmacy sees the single-branch view.
  </Accordion>

  <Accordion title="Expiry Risk has no date picker">
    Correct. It is a snapshot of your shelves as they stand now. For a period-shaped view of what was written off, open **Expiry & Waste**.
  </Accordion>

  <Accordion title="A report I expected is not listed">
    The list is generated from what your pharmacy can actually populate, so a report you cannot fill is not offered. Some are also permission-gated — ask an owner or manager.
  </Accordion>

  <Accordion title="I want an export from the Sales page">
    There is no export button there. Use the **Reports** card on **Executive**, or any report in **Analytics**. See [The sales dashboard](/pharmacy/money/sales).
  </Accordion>

  <Accordion title="The exported file will not open properly">
    Take the Excel option rather than CSV if your spreadsheet mangles accents or currency symbols on import.
  </Accordion>
</AccordionGroup>

<StillStuck topic="a report" />
