using IdokladSdk.Models.CashRegister; using IdokladSdk.Models.CashVoucher; using IdokladSdk.Models.ReceivedReceipt.Patch; using IdokladSdk.Models.ReceivedReceipt.Post; using Idoklad.Client; namespace Idoklad.Services; /// /// Purchase-side receipts and cash agendas: received receipts, received documents (read-only), /// cash vouchers and cash registers. /// public sealed class PurchaseCashService { private readonly IdokladApiAccessor _accessor; public PurchaseCashService(IdokladApiAccessor accessor) => _accessor = accessor; // ---- Received receipts ---- public Task ListReceivedReceiptsAsync(int page, int pageSize, CancellationToken ct) => _accessor.Api.ReceivedReceiptClient.List().ToPageAsync(page, pageSize, ct); public Task ReceivedReceiptDetailAsync(int id, CancellationToken ct) => _accessor.Api.ReceivedReceiptClient.Detail(id).ToDetailAsync(ct); public async Task ReceivedReceiptDefaultAsync(CancellationToken ct) => (await _accessor.Api.ReceivedReceiptClient.DefaultAsync(ct)).Unwrap(); public async Task CreateReceivedReceiptAsync(ReceivedReceiptPostModel model, CancellationToken ct) => (await _accessor.Api.ReceivedReceiptClient.PostAsync(model, ct)).Unwrap(); public async Task UpdateReceivedReceiptAsync(ReceivedReceiptPatchModel model, CancellationToken ct) => (await _accessor.Api.ReceivedReceiptClient.UpdateAsync(model, ct)).Unwrap(); public async Task DeleteReceivedReceiptAsync(int id, CancellationToken ct) => (await _accessor.Api.ReceivedReceiptClient.DeleteAsync(id, ct)).Unwrap(); // ---- Cash vouchers ---- public Task ListCashVouchersAsync(int page, int pageSize, CancellationToken ct) => _accessor.Api.CashVoucherClient.List().ToPageAsync(page, pageSize, ct); public Task CashVoucherDetailAsync(int id, CancellationToken ct) => _accessor.Api.CashVoucherClient.Detail(id).ToDetailAsync(ct); public async Task CreateCashVoucherAsync(CashVoucherPostModel model, CancellationToken ct) => (await _accessor.Api.CashVoucherClient.PostAsync(model, ct)).Unwrap(); public async Task UpdateCashVoucherAsync(CashVoucherPatchModel model, CancellationToken ct) => (await _accessor.Api.CashVoucherClient.UpdateAsync(model, ct)).Unwrap(); public async Task DeleteCashVoucherAsync(int id, CancellationToken ct) => (await _accessor.Api.CashVoucherClient.DeleteAsync(id, ct)).Unwrap(); // ---- Cash registers ---- public Task ListCashRegistersAsync(int page, int pageSize, CancellationToken ct) => _accessor.Api.CashRegisterClient.List().ToPageAsync(page, pageSize, ct); public Task CashRegisterDetailAsync(int id, CancellationToken ct) => _accessor.Api.CashRegisterClient.Detail(id).ToDetailAsync(ct); public async Task CreateCashRegisterAsync(CashRegisterPostModel model, CancellationToken ct) => (await _accessor.Api.CashRegisterClient.PostAsync(model, ct)).Unwrap(); public async Task UpdateCashRegisterAsync(CashRegisterPatchModel model, CancellationToken ct) => (await _accessor.Api.CashRegisterClient.UpdateAsync(model, ct)).Unwrap(); public async Task DeleteCashRegisterAsync(int id, CancellationToken ct) => (await _accessor.Api.CashRegisterClient.DeleteAsync(id, ct)).Unwrap(); }