# JobItemStatus

**Kind:** Class

**Source:** `Pams/Web/Pams.Web/Client/app/models/sales/job-item-status.model.ts` (line 4)

**Part of:** [Pams](subsystem-pams)

`JobItemStatus` represents the status data associated with a sales job item in the client application. Its `clone()` and `cloneData()` methods support copying status instances or their underlying data without changing the original object.

## Methods

| Method | Signature | Returns |
|---|---|---|
| `clone` | `clone(item: JobItemStatus)` | `void` |
| `cloneData` | `cloneData(item: JobItemStatus)` | `void` |

## Properties

| Property | Type |
|---|---|
| `JobItemStatusID` | `number` |
| `JobItemID` | `number` |
| `StatusID` | `number` |
| `ActionDate` | `Date` |
| `ActionByUserID` | `number` |
| `ReasonID` | `number` |
| `Comment` | `string` |
| `Amount` | `number` |
| `Data` | `JobItemStatusData` |

## Where it refuses work

- `JobItemStatus` stops the work with an early return when `this.ActionDate == null`.

## Diagram

```mermaid
graph LR
  JobItemStatus --> clone["clone()"]
  JobItemStatus --> cloneData["cloneData()"]
  clone --> StatusCopy["JobItemStatus copy"]
  cloneData --> DataCopy["status data copy"]
```

## Usage

```ts
import { JobItemStatus } from './models/sales/job-item-status.model';

const status = new JobItemStatus();

const statusCopy = status.clone();
const statusDataCopy = status.cloneData();

// Changes to copies do not change the original status object.
console.log(statusCopy, statusDataCopy);
```

## AI Coding Instructions

- Use `clone()` when code needs another `JobItemStatus` instance.
- Use `cloneData()` when code only needs a copy of the status data.
- Avoid changing shared status objects when preparing data for forms or API requests.
- Keep new status-related fields compatible with both cloning methods.

## Relationships

- IMPORTS → `JobItemStatusData`
- IMPORTS → `AppSettings`
- IMPORTS → `JobStatusE`
- IMPORTS → `JobVersionStatusE`

## Used by

5 references from 5 files. Each is a place in this repository where the symbol is actually used — go read one rather than trusting an example.

### Imported by (5)

- `JobItemStatusService` — `Pams/Web/Pams.Web/Client/app/services/sales/job-item-status.service.ts`:1
- `JobItemService` — `Pams/Web/Pams.Web/Client/app/services/sales/job-items.service.ts`:1
- `TempInq` — `Pams/Web/Pams.Web/Client/app/models/sales/inquiry.model.ts`:17
- `itemProcessShared` — `Pams/Web/Pams.Web/Client/app/models/sales/items-process-shared.model.ts`:3
- `JobItem` — `Pams/Web/Pams.Web/Client/app/models/sales/job-item.model.ts`:6
