# Supplier

**Kind:** Class

**Source:** `Pams/Web/Pams.Web/Client/app/models/person/supplier.model.ts` (line 9)

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

`Supplier` represents a supplier person model in the PAMS web client. It exposes `clone()` and `cloneSupplier()` methods that create another `Supplier` instance for workflows that need a copied supplier model.

## Methods

| Method | Signature | Returns |
|---|---|---|
| `clone` | `clone()` | `Supplier` |
| `cloneSupplier` | `cloneSupplier(spi: Supplier)` | `Supplier` |

## Properties

| Property | Type |
|---|---|
| `SupplierID` | `number` |
| `SupplierCurrencyCode` | `string` |
| `PersonID` | `number` |
| `UserID` | `number` |
| `ModificationDate` | `Date` |
| `CompanyBranchID` | `number` |
| `IsActive` | `boolean` |
| `SupplierName` | `string` |
| `FullName` | `string` |
| `SupplierTypeID` | `number` |
| `IsPrincipal` | `boolean` |
| `ContractualInfo` | `SupplierContractualInfo` |
| `Vat` | `string` |
| `Selected` | `boolean` |
| `ImgPath` | `string` |
| `MarketSegmentID` | `number` |
| `MarketSegmentIDs` | `number[]` |
| `Addresses` | `Address[]` |
| `ContactInfoList` | `Array<ContactInfo>` |
| `ContactPersonList` | `Array<ContactPersons>` |

## Diagram

```mermaid
graph LR
  Supplier[Supplier]
  Supplier --> Clone[clone(): Supplier]
  Supplier --> CloneSupplier[cloneSupplier(): Supplier]
  Clone --> Copy[Supplier copy]
  CloneSupplier --> Copy
```

## Usage

```ts
const supplier = new Supplier();

const copiedSupplier = supplier.clone();
const supplierCopy = supplier.cloneSupplier();

// Work with a copied model without replacing the original reference.
console.log(copiedSupplier, supplierCopy);
```

## AI Coding Instructions

- Use `clone()` or `cloneSupplier()` when a caller needs another `Supplier` instance.
- Keep clone-related changes consistent across both methods.
- Confirm copied fields remain valid for supplier forms and API request models.
- Avoid replacing the original supplier reference when an edit flow requires a separate copy.

## Relationships

- IMPORTS → `Address`
- IMPORTS → `SupplierContractualInfo`
- IMPORTS → `SupplierContractCountry`
- IMPORTS → `SupplierContractClient`
- IMPORTS → `SupplierMarketSegment`
- IMPORTS → `SupplierContractMarketSegment`
- IMPORTS → `DecreasedTable`

## Used by

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

### Imported by (10)

- `ProductCategoriesComponent` — `Pams/Web/Pams.Web/Client/app/components/configuration/products/product-categories/product-categories.component.ts`:1
- `ContactViewEditComponent` — `Pams/Web/Pams.Web/Client/app/components/market/contacts/contact-view-edit/contact-view-edit.component.ts`:1
- `ContactsComponent` — `Pams/Web/Pams.Web/Client/app/components/market/contacts/contacts.component.ts`:1
- `RegistrationsComponent` — `Pams/Web/Pams.Web/Client/app/components/market/registrations/registrations/registrations.component.ts`:1
- `CurrencyRate` — `Pams/Web/Pams.Web/Client/app/components/payments/payment-details/payment-details.component.ts`:1
- `PaymentsListComponent` — `Pams/Web/Pams.Web/Client/app/components/payments/payments-list/payments-list.component.ts`:1
- `TagComponent` — `Pams/Web/Pams.Web/Client/app/components/shared/tag/tag.component.ts`:1
- `ProductCategoryService` — `Pams/Web/Pams.Web/Client/app/services/common/product-category.service.ts`:1

…and 2 more.
