Table of Contents

Class PhysicalCountsController

Namespace
KadicErp.WebApi.Controllers.Inventory
Assembly
KadicErp.WebApi.dll
[Route("api/inventory/physical-counts")]
[Authorize]
[ApiController]
public class PhysicalCountsController : ControllerBase
Inheritance
object
ControllerBase
PhysicalCountsController

Constructors

PhysicalCountsController(ISender, ICurrentUser, ITenantIdContext, IStringLocalizer<GeneralMessages>)

public PhysicalCountsController(ISender sender, ICurrentUser currentUser, ITenantIdContext tenantContext, IStringLocalizer<GeneralMessages> localizer)

Parameters

sender ISender
currentUser ICurrentUser
tenantContext ITenantIdContext
localizer IStringLocalizer<GeneralMessages>

Methods

Cancel(Guid, CancelPhysicalCountRequest?, CancellationToken)

Cancels a physical count (only if not Confirmed).

[HttpPost("{id:guid}/cancel")]
[Authorize(Policy = "INVENTORY_PHYSICAL_COUNTS_CANCEL")]
[ProducesResponseType(200)]
[ProducesResponseType(typeof(object), 400)]
[ProducesResponseType(typeof(object), 404)]
public Task<IActionResult> Cancel(Guid id, CancelPhysicalCountRequest? request = null, CancellationToken cancellationToken = default)

Parameters

id Guid
request CancelPhysicalCountRequest
cancellationToken CancellationToken

Returns

Task<IActionResult>

Confirm(Guid, ConfirmPhysicalCountRequest, CancellationToken)

Confirms a physical count, updating WarehouseStock and creating adjustment movements.

[HttpPost("{id:guid}/confirm")]
[Authorize(Policy = "INVENTORY_PHYSICAL_COUNTS_CONFIRM")]
[ProducesResponseType(200)]
[ProducesResponseType(typeof(object), 400)]
[ProducesResponseType(typeof(object), 404)]
public Task<IActionResult> Confirm(Guid id, ConfirmPhysicalCountRequest request, CancellationToken cancellationToken = default)

Parameters

id Guid
request ConfirmPhysicalCountRequest
cancellationToken CancellationToken

Returns

Task<IActionResult>

Create(CreatePhysicalCountCommand, CancellationToken)

Creates a new physical count in InProgress status.

[HttpPost]
[Authorize(Policy = "INVENTORY_PHYSICAL_COUNTS_CREATE")]
[ProducesResponseType(typeof(Result<Guid>), 201)]
[ProducesResponseType(typeof(Result), 400)]
public Task<IActionResult> Create(CreatePhysicalCountCommand command, CancellationToken cancellationToken = default)

Parameters

command CreatePhysicalCountCommand
cancellationToken CancellationToken

Returns

Task<IActionResult>

GetAll(PaginatorRequestDto, Guid?, string?, CancellationToken)

Gets a paginated list of physical counts with optional filters.

[HttpGet]
[Authorize(Policy = "INVENTORY_PHYSICAL_COUNTS_VIEW")]
[ProducesResponseType(typeof(PaginatorResponseDto<PhysicalCountDto>), 200)]
public Task<IActionResult> GetAll(PaginatorRequestDto paginator, Guid? warehouseId = null, string? status = null, CancellationToken cancellationToken = default)

Parameters

paginator PaginatorRequestDto
warehouseId Guid?
status string
cancellationToken CancellationToken

Returns

Task<IActionResult>

GetById(Guid, CancellationToken)

Gets a physical count by ID including its lines.

[HttpGet("{id:guid}")]
[Authorize(Policy = "INVENTORY_PHYSICAL_COUNTS_VIEW")]
[ProducesResponseType(typeof(PhysicalCountDto), 200)]
[ProducesResponseType(typeof(object), 404)]
public Task<IActionResult> GetById(Guid id, CancellationToken cancellationToken = default)

Parameters

id Guid
cancellationToken CancellationToken

Returns

Task<IActionResult>

Update(Guid, UpdatePhysicalCountCommand, CancellationToken)

Updates notes and lines of a physical count (only Draft or InProgress).

[HttpPut("{id:guid}")]
[Authorize(Policy = "INVENTORY_PHYSICAL_COUNTS_UPDATE")]
[ProducesResponseType(200)]
[ProducesResponseType(typeof(object), 400)]
[ProducesResponseType(typeof(object), 404)]
public Task<IActionResult> Update(Guid id, UpdatePhysicalCountCommand command, CancellationToken cancellationToken = default)

Parameters

id Guid
command UpdatePhysicalCountCommand
cancellationToken CancellationToken

Returns

Task<IActionResult>