# InvoiceController

**Kind:** Controller

**Source:** `Pams/API/Pams.API/Controllers/Sales/InvoiceController.cs` (line 22)

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

## Where it refuses work

- `InvoiceController` stops the work with `HttpResponseException` when `!logic.IsFound(id, CompanyID)`.
- `InvoiceController` stops the work with `HttpResponseException` when `dataStream == null`.
- `InvoiceController` stops the work with an early return when `!domain.IsFound(dto.InvoiceID, CompanyID)`, in 3 places.
- `InvoiceController` stops the work with an early return when `!isAllowedToEdit`, in 3 places.
- `InvoiceController` stops the work with an early return when `isAllowedToCreate`, in 2 places.
- `InvoiceController` stops the work with an early return when `!new InvoiceLogic().IsFound(ID, CompanyID)`.

## When something fails

- `InvoiceController` handles failure in 10 places: it turns it into a return value in all 10.

## Relationships

- MODULE_DECLARES → `GetFreightTypes`
- MODULE_DECLARES → `GetByID`
- MODULE_DECLARES → `GetAll`
- MODULE_DECLARES → `GetAllStatus`
- MODULE_DECLARES → `GetInvoicesForDisplay`
- MODULE_DECLARES → `GetInvoicesForPayment`
- MODULE_DECLARES → `GetDueInvoicesAndAllocatedForPayment`
- MODULE_DECLARES → `GetUnPaidInvoices`
- MODULE_DECLARES → `GetNonPaidInvoiceLookups`
- MODULE_DECLARES → `Save`
- MODULE_DECLARES → `SaveStatus`
- MODULE_DECLARES → `SaveAdditionalInvoice`
- MODULE_DECLARES → `SaveAccountInvoice`
- MODULE_DECLARES → `GetAllDeductionReasons`
- MODULE_DECLARES → `getDeductionsByInvoiceID`
- MODULE_DECLARES → `SaveDeductions`
- MODULE_DECLARES → `DeleteDeduction`
- MODULE_DECLARES → `PrintWord`
- IMPORTS → `BaseController`
- IMPORTS → `GetByID`
- IMPORTS → `GetByID`
- IMPORTS → `GetByID`
- IMPORTS → `GetByID`
- IMPORTS → `GetByID`
- IMPORTS → `GetById`
- IMPORTS → `GetById`
- IMPORTS → `GetAll`
- IMPORTS → `GetAll`
- IMPORTS → `GetAll`
- IMPORTS → `GetAll`
- IMPORTS → `GetAll`
- IMPORTS → `GetAll`
- IMPORTS → `GetAll`
- IMPORTS → `GetAll`
- IMPORTS → `GetAll`
- IMPORTS → `GetInvoicesForDisplay`
- IMPORTS → `GetInvoicesForDisplay`
- IMPORTS → `ListQueryParameters`
- IMPORTS → `InvoicesBindingModel`
- IMPORTS → `DomainException`
- IMPORTS → `Save`
- IMPORTS → `Save`
- IMPORTS → `Save`
- IMPORTS → `Save`
- IMPORTS → `Save`
- IMPORTS → `Save`
- IMPORTS → `Save`
- IMPORTS → `Save`
- IMPORTS → `InvoiceStatusDto`
- IMPORTS → `DeductionReasonsBindingModel`
- IMPORTS → `DeductionsBindingModel`
- IMPORTS → `UserLogResultBindingModel`
- IMPORTS → `DeductionDeleteDto`
- IMPORTS → `Delete`
- IMPORTS → `Delete`
- IMPORTS → `Delete`
- IMPORTS → `Delete`
- IMPORTS → `Delete`
- IMPORTS → `Delete`
- IMPORTS → `Delete`
- IMPORTS → `Delete`
- IMPORTS → `Delete`
- IMPORTS → `Delete`

## Used by

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

### calls by (2)

- `AppSettings` — `Frontend/src/app/settings/app/app.settings.ts`:241
- `AppSettings` — `Pams/Web/Pams.Web/Client/app/settings/app/app.settings.ts`:126
