zbyle sluzby podle CC

This commit is contained in:
JiriUhlir
2026-06-12 14:18:21 +02:00
parent 1801d02e5c
commit 0805748567
34 changed files with 2543 additions and 52 deletions
+64
View File
@@ -0,0 +1,64 @@
using IdokladSdk.Models.PriceListItem;
using IdokladSdk.Models.StockMovement;
using IdokladSdk.Models.Tag;
using Idoklad.Client;
namespace Idoklad.Services;
/// <summary>
/// Catalog and stock agendas: price list items, stock movements and tags.
/// </summary>
public sealed class CatalogService
{
private readonly IdokladApiAccessor _accessor;
public CatalogService(IdokladApiAccessor accessor) => _accessor = accessor;
// ---- Price list items ----
public Task<object?> ListPriceListItemsAsync(int page, int pageSize, CancellationToken ct)
=> _accessor.Api.PriceListItemClient.List().ToPageAsync(page, pageSize, ct);
public Task<object?> PriceListItemDetailAsync(int id, CancellationToken ct)
=> _accessor.Api.PriceListItemClient.Detail(id).ToDetailAsync(ct);
public async Task<object?> PriceListItemDefaultAsync(CancellationToken ct)
=> (await _accessor.Api.PriceListItemClient.DefaultAsync(ct)).Unwrap();
public async Task<object?> CreatePriceListItemAsync(PriceListItemPostModel model, CancellationToken ct)
=> (await _accessor.Api.PriceListItemClient.PostAsync(model, ct)).Unwrap();
public async Task<object?> UpdatePriceListItemAsync(PriceListItemPatchModel model, CancellationToken ct)
=> (await _accessor.Api.PriceListItemClient.UpdateAsync(model, ct)).Unwrap();
// ---- Stock movements ----
public Task<object?> ListStockMovementsAsync(int page, int pageSize, CancellationToken ct)
=> _accessor.Api.StockMovementClient.List().ToPageAsync(page, pageSize, ct);
public Task<object?> StockMovementDetailAsync(int id, CancellationToken ct)
=> _accessor.Api.StockMovementClient.Detail(id).ToDetailAsync(ct);
public async Task<object?> StockMovementDefaultAsync(int priceListItemId, CancellationToken ct)
=> (await _accessor.Api.StockMovementClient.DefaultAsync(priceListItemId, ct)).Unwrap();
public async Task<object?> CreateStockMovementAsync(StockMovementPostModel model, CancellationToken ct)
=> (await _accessor.Api.StockMovementClient.PostAsync(model, ct)).Unwrap();
public async Task<object?> UpdateStockMovementAsync(StockMovementPatchModel model, CancellationToken ct)
=> (await _accessor.Api.StockMovementClient.UpdateAsync(model, ct)).Unwrap();
public async Task<bool> DeleteStockMovementAsync(int id, CancellationToken ct)
=> (await _accessor.Api.StockMovementClient.DeleteAsync(id, ct)).Unwrap();
// ---- Tags ----
public Task<object?> ListTagsAsync(int page, int pageSize, CancellationToken ct)
=> _accessor.Api.TagClient.List().ToPageAsync(page, pageSize, ct);
public async Task<object?> CreateTagAsync(TagPostModel model, CancellationToken ct)
=> (await _accessor.Api.TagClient.PostAsync(model, ct)).Unwrap();
public async Task<object?> UpdateTagAsync(TagPatchModel model, CancellationToken ct)
=> (await _accessor.Api.TagClient.UpdateAsync(model, ct)).Unwrap();
public async Task<bool> DeleteTagAsync(int id, CancellationToken ct)
=> (await _accessor.Api.TagClient.DeleteAsync(id, ct)).Unwrap();
}
+75
View File
@@ -0,0 +1,75 @@
using Idoklad.Client;
namespace Idoklad.Services;
/// <summary>
/// Read-only iDoklad code lists (registers): banks, countries, currencies, constant symbols,
/// exchange rates, payment options, VAT codes, VAT reverse-charge codes, sales offices and
/// sales POS equipment. Every agenda supports list + detail.
/// </summary>
public sealed class CodeListsService
{
private readonly IdokladApiAccessor _accessor;
public CodeListsService(IdokladApiAccessor accessor) => _accessor = accessor;
public Task<object?> ListBanksAsync(int page, int pageSize, CancellationToken ct)
=> _accessor.Api.BankClient.List().ToPageAsync(page, pageSize, ct);
public Task<object?> BankDetailAsync(int id, CancellationToken ct)
=> _accessor.Api.BankClient.Detail(id).ToDetailAsync(ct);
public Task<object?> ListCountriesAsync(int page, int pageSize, CancellationToken ct)
=> _accessor.Api.CountryClient.List().ToPageAsync(page, pageSize, ct);
public Task<object?> CountryDetailAsync(int id, CancellationToken ct)
=> _accessor.Api.CountryClient.Detail(id).ToDetailAsync(ct);
public Task<object?> ListCurrenciesAsync(int page, int pageSize, CancellationToken ct)
=> _accessor.Api.CurrencyClient.List().ToPageAsync(page, pageSize, ct);
public Task<object?> CurrencyDetailAsync(int id, CancellationToken ct)
=> _accessor.Api.CurrencyClient.Detail(id).ToDetailAsync(ct);
public Task<object?> ListConstantSymbolsAsync(int page, int pageSize, CancellationToken ct)
=> _accessor.Api.ConstantSymbolClient.List().ToPageAsync(page, pageSize, ct);
public Task<object?> ConstantSymbolDetailAsync(int id, CancellationToken ct)
=> _accessor.Api.ConstantSymbolClient.Detail(id).ToDetailAsync(ct);
public Task<object?> ListExchangeRatesAsync(int page, int pageSize, CancellationToken ct)
=> _accessor.Api.ExchangeRateClient.List().ToPageAsync(page, pageSize, ct);
public Task<object?> ExchangeRateDetailAsync(int id, CancellationToken ct)
=> _accessor.Api.ExchangeRateClient.Detail(id).ToDetailAsync(ct);
public Task<object?> ListPaymentOptionsAsync(int page, int pageSize, CancellationToken ct)
=> _accessor.Api.PaymentOptionClient.List().ToPageAsync(page, pageSize, ct);
public Task<object?> PaymentOptionDetailAsync(int id, CancellationToken ct)
=> _accessor.Api.PaymentOptionClient.Detail(id).ToDetailAsync(ct);
public Task<object?> ListVatCodesAsync(int page, int pageSize, CancellationToken ct)
=> _accessor.Api.VatCodeClient.List().ToPageAsync(page, pageSize, ct);
public Task<object?> VatCodeDetailAsync(int id, CancellationToken ct)
=> _accessor.Api.VatCodeClient.Detail(id).ToDetailAsync(ct);
public Task<object?> ListVatReverseChargeCodesAsync(int page, int pageSize, CancellationToken ct)
=> _accessor.Api.VatReverseChargeCodeClient.List().ToPageAsync(page, pageSize, ct);
public Task<object?> VatReverseChargeCodeDetailAsync(int id, CancellationToken ct)
=> _accessor.Api.VatReverseChargeCodeClient.Detail(id).ToDetailAsync(ct);
public Task<object?> ListSalesOfficesAsync(int page, int pageSize, CancellationToken ct)
=> _accessor.Api.SalesOfficeClient.List().ToPageAsync(page, pageSize, ct);
public Task<object?> SalesOfficeDetailAsync(int id, CancellationToken ct)
=> _accessor.Api.SalesOfficeClient.Detail(id).ToDetailAsync(ct);
public Task<object?> ListSalesPosEquipmentAsync(int page, int pageSize, CancellationToken ct)
=> _accessor.Api.SalesPosEquipmentClient.List().ToPageAsync(page, pageSize, ct);
public Task<object?> SalesPosEquipmentDetailAsync(int id, CancellationToken ct)
=> _accessor.Api.SalesPosEquipmentClient.Detail(id).ToDetailAsync(ct);
}
+76
View File
@@ -0,0 +1,76 @@
using IdokladSdk.Enums;
using IdokladSdk.Models.Attachment;
using IdokladSdk.Models.Webhook;
using Idoklad.Client;
namespace Idoklad.Services;
/// <summary>
/// Integration / utility agendas: webhooks, notifications, change log, registered sales (EET),
/// unpaired documents, attachments and the system code books.
/// </summary>
public sealed class IntegrationService
{
private readonly IdokladApiAccessor _accessor;
public IntegrationService(IdokladApiAccessor accessor) => _accessor = accessor;
// ---- Webhooks ----
public Task<object?> ListWebhooksAsync(int page, int pageSize, CancellationToken ct)
=> _accessor.Api.WebhookClient.List().ToPageAsync(page, pageSize, ct);
public Task<object?> WebhookDetailAsync(int id, CancellationToken ct)
=> _accessor.Api.WebhookClient.Detail(id).ToDetailAsync(ct);
public async Task<object?> CreateWebhookAsync(AgendaWebhookSettingsPostModel model, CancellationToken ct)
=> (await _accessor.Api.WebhookClient.PostAsync(model, ct)).Unwrap();
public async Task<bool> DeleteWebhookAsync(int id, CancellationToken ct)
=> (await _accessor.Api.WebhookClient.DeleteAsync(id, ct)).Unwrap();
// ---- Notifications ----
public Task<object?> ListNotificationsAsync(int page, int pageSize, CancellationToken ct)
=> _accessor.Api.NotificationClient.List().ToPageAsync(page, pageSize, ct);
public async Task<bool> DeleteNotificationAsync(int id, CancellationToken ct)
=> (await _accessor.Api.NotificationClient.DeleteAsync(id, ct)).Unwrap();
// ---- Change log ----
public Task<object?> ListLogAsync(int page, int pageSize, CancellationToken ct)
=> _accessor.Api.LogClient.List().ToPageAsync(page, pageSize, ct);
// ---- Registered sales (EET) ----
public Task<object?> ListRegisteredSalesAsync(int page, int pageSize, CancellationToken ct)
=> _accessor.Api.RegisteredSaleClient.List().ToPageAsync(page, pageSize, ct);
public async Task<object?> RegisteredSaleDefaultAsync(CancellationToken ct)
=> (await _accessor.Api.RegisteredSaleClient.DefaultAsync(ct)).Unwrap();
// ---- Unpaired documents ----
public Task<object?> ListUnpairedDocumentsAsync(
MovementType movementType, PairingDocumentType pairingDocumentType, int page, int pageSize, CancellationToken ct)
=> _accessor.Api.UnpairedDocumentClient.List(movementType, pairingDocumentType).ToPageAsync(page, pageSize, ct);
// ---- Attachments ----
public async Task<object?> GetAttachmentAsync(int attachmentId, bool compressed, CancellationToken ct)
=> (await _accessor.Api.AttachmentClient.GetAsync(attachmentId, compressed, ct)).Unwrap();
public async Task<object?> GetDocumentAttachmentsAsync(int documentId, AttachmentDocumentType documentType, bool compressed, CancellationToken ct)
=> (await _accessor.Api.AttachmentClient.GetAsync(documentId, documentType, compressed, ct)).Unwrap();
public async Task<bool> UploadAttachmentAsync(AttachmentUploadModel model, CancellationToken ct)
=> (await _accessor.Api.AttachmentClient.UploadAsync(model, ct)).Unwrap();
public async Task<bool> DeleteAttachmentAsync(int attachmentId, CancellationToken ct)
=> (await _accessor.Api.AttachmentClient.DeleteAsync(attachmentId, ct)).Unwrap();
public async Task<bool> DeleteDocumentAttachmentsAsync(int documentId, AttachmentDocumentType documentType, CancellationToken ct)
=> (await _accessor.Api.AttachmentClient.DeleteAsync(documentId, documentType, ct)).Unwrap();
// ---- System code books ----
public Task<object?> CodeBooksAsync(CancellationToken ct)
=> _accessor.Api.SystemClient.CodeBooks().ToDetailAsync(ct);
public Task<object?> CodeBooksChangesAsync(DateTime lastCheck, CancellationToken ct)
=> _accessor.Api.SystemClient.CodeBooksChanges(lastCheck).ToDetailAsync(ct);
}
+72
View File
@@ -0,0 +1,72 @@
using IdokladSdk.Models.BankStatement.Patch;
using IdokladSdk.Models.BankStatement.Post;
using IdokladSdk.Models.IssuedDocumentPayment;
using IdokladSdk.Models.ReceivedDocumentPayments;
using Idoklad.Client;
namespace Idoklad.Services;
/// <summary>
/// Payments and bank statements: bank statements, issued document payments and received document
/// payments.
/// </summary>
public sealed class PaymentsService
{
private readonly IdokladApiAccessor _accessor;
public PaymentsService(IdokladApiAccessor accessor) => _accessor = accessor;
// ---- Bank statements ----
public Task<object?> ListBankStatementsAsync(int page, int pageSize, CancellationToken ct)
=> _accessor.Api.BankStatementClient.List().ToPageAsync(page, pageSize, ct);
public Task<object?> BankStatementDetailAsync(int id, CancellationToken ct)
=> _accessor.Api.BankStatementClient.Detail(id).ToDetailAsync(ct);
public async Task<object?> CreateBankStatementAsync(BankStatementPostModel model, CancellationToken ct)
=> (await _accessor.Api.BankStatementClient.PostAsync(model, ct)).Unwrap();
public async Task<object?> UpdateBankStatementAsync(BankStatementPatchModel model, CancellationToken ct)
=> (await _accessor.Api.BankStatementClient.UpdateAsync(model, ct)).Unwrap();
public async Task<bool> DeleteBankStatementAsync(int id, CancellationToken ct)
=> (await _accessor.Api.BankStatementClient.DeleteAsync(id, ct)).Unwrap();
// ---- Issued document payments ----
public Task<object?> ListIssuedPaymentsAsync(int page, int pageSize, CancellationToken ct)
=> _accessor.Api.IssuedDocumentPaymentClient.List().ToPageAsync(page, pageSize, ct);
public Task<object?> IssuedPaymentDetailAsync(int id, CancellationToken ct)
=> _accessor.Api.IssuedDocumentPaymentClient.Detail(id).ToDetailAsync(ct);
public async Task<object?> IssuedPaymentDefaultAsync(int invoiceId, CancellationToken ct)
=> (await _accessor.Api.IssuedDocumentPaymentClient.DefaultAsync(invoiceId, ct)).Unwrap();
public async Task<object?> CreateIssuedPaymentAsync(IssuedDocumentPaymentPostModel model, CancellationToken ct)
=> (await _accessor.Api.IssuedDocumentPaymentClient.PostAsync(model, ct)).Unwrap();
public async Task<bool> DeleteIssuedPaymentAsync(int id, CancellationToken ct)
=> (await _accessor.Api.IssuedDocumentPaymentClient.DeleteAsync(id, ct)).Unwrap();
public async Task<bool> FullyUnpayIssuedAsync(int invoiceId, CancellationToken ct)
=> (await _accessor.Api.IssuedDocumentPaymentClient.FullyUnpayAsync(invoiceId, ct)).Unwrap();
// ---- Received document payments ----
public Task<object?> ListReceivedPaymentsAsync(int page, int pageSize, CancellationToken ct)
=> _accessor.Api.ReceivedDocumentPaymentsClient.List().ToPageAsync(page, pageSize, ct);
public Task<object?> ReceivedPaymentDetailAsync(int id, CancellationToken ct)
=> _accessor.Api.ReceivedDocumentPaymentsClient.Detail(id).ToDetailAsync(ct);
public async Task<object?> ReceivedPaymentDefaultAsync(int invoiceId, CancellationToken ct)
=> (await _accessor.Api.ReceivedDocumentPaymentsClient.DefaultAsync(invoiceId, ct)).Unwrap();
public async Task<object?> CreateReceivedPaymentAsync(ReceivedDocumentPaymentPostModel model, CancellationToken ct)
=> (await _accessor.Api.ReceivedDocumentPaymentsClient.PostAsync(model, ct)).Unwrap();
public async Task<bool> DeleteReceivedPaymentAsync(int id, CancellationToken ct)
=> (await _accessor.Api.ReceivedDocumentPaymentsClient.DeleteAsync(id, ct)).Unwrap();
public async Task<bool> FullyUnpayReceivedAsync(int invoiceId, CancellationToken ct)
=> (await _accessor.Api.ReceivedDocumentPaymentsClient.FullyUnpayAsync(invoiceId, ct)).Unwrap();
}
+69
View File
@@ -0,0 +1,69 @@
using IdokladSdk.Models.CashRegister;
using IdokladSdk.Models.CashVoucher;
using IdokladSdk.Models.ReceivedReceipt.Patch;
using IdokladSdk.Models.ReceivedReceipt.Post;
using Idoklad.Client;
namespace Idoklad.Services;
/// <summary>
/// Purchase-side receipts and cash agendas: received receipts, received documents (read-only),
/// cash vouchers and cash registers.
/// </summary>
public sealed class PurchaseCashService
{
private readonly IdokladApiAccessor _accessor;
public PurchaseCashService(IdokladApiAccessor accessor) => _accessor = accessor;
// ---- Received receipts ----
public Task<object?> ListReceivedReceiptsAsync(int page, int pageSize, CancellationToken ct)
=> _accessor.Api.ReceivedReceiptClient.List().ToPageAsync(page, pageSize, ct);
public Task<object?> ReceivedReceiptDetailAsync(int id, CancellationToken ct)
=> _accessor.Api.ReceivedReceiptClient.Detail(id).ToDetailAsync(ct);
public async Task<object?> ReceivedReceiptDefaultAsync(CancellationToken ct)
=> (await _accessor.Api.ReceivedReceiptClient.DefaultAsync(ct)).Unwrap();
public async Task<object?> CreateReceivedReceiptAsync(ReceivedReceiptPostModel model, CancellationToken ct)
=> (await _accessor.Api.ReceivedReceiptClient.PostAsync(model, ct)).Unwrap();
public async Task<object?> UpdateReceivedReceiptAsync(ReceivedReceiptPatchModel model, CancellationToken ct)
=> (await _accessor.Api.ReceivedReceiptClient.UpdateAsync(model, ct)).Unwrap();
public async Task<bool> DeleteReceivedReceiptAsync(int id, CancellationToken ct)
=> (await _accessor.Api.ReceivedReceiptClient.DeleteAsync(id, ct)).Unwrap();
// ---- Cash vouchers ----
public Task<object?> ListCashVouchersAsync(int page, int pageSize, CancellationToken ct)
=> _accessor.Api.CashVoucherClient.List().ToPageAsync(page, pageSize, ct);
public Task<object?> CashVoucherDetailAsync(int id, CancellationToken ct)
=> _accessor.Api.CashVoucherClient.Detail(id).ToDetailAsync(ct);
public async Task<object?> CreateCashVoucherAsync(CashVoucherPostModel model, CancellationToken ct)
=> (await _accessor.Api.CashVoucherClient.PostAsync(model, ct)).Unwrap();
public async Task<object?> UpdateCashVoucherAsync(CashVoucherPatchModel model, CancellationToken ct)
=> (await _accessor.Api.CashVoucherClient.UpdateAsync(model, ct)).Unwrap();
public async Task<bool> DeleteCashVoucherAsync(int id, CancellationToken ct)
=> (await _accessor.Api.CashVoucherClient.DeleteAsync(id, ct)).Unwrap();
// ---- Cash registers ----
public Task<object?> ListCashRegistersAsync(int page, int pageSize, CancellationToken ct)
=> _accessor.Api.CashRegisterClient.List().ToPageAsync(page, pageSize, ct);
public Task<object?> CashRegisterDetailAsync(int id, CancellationToken ct)
=> _accessor.Api.CashRegisterClient.Detail(id).ToDetailAsync(ct);
public async Task<object?> CreateCashRegisterAsync(CashRegisterPostModel model, CancellationToken ct)
=> (await _accessor.Api.CashRegisterClient.PostAsync(model, ct)).Unwrap();
public async Task<object?> UpdateCashRegisterAsync(CashRegisterPatchModel model, CancellationToken ct)
=> (await _accessor.Api.CashRegisterClient.UpdateAsync(model, ct)).Unwrap();
public async Task<bool> DeleteCashRegisterAsync(int id, CancellationToken ct)
=> (await _accessor.Api.CashRegisterClient.DeleteAsync(id, ct)).Unwrap();
}
+168
View File
@@ -0,0 +1,168 @@
using IdokladSdk.Models.CreditNote;
using IdokladSdk.Models.IssuedDocumentTemplate.Patch;
using IdokladSdk.Models.IssuedDocumentTemplate.Post;
using IdokladSdk.Models.IssuedTaxDocument.Patch;
using IdokladSdk.Models.IssuedTaxDocument.Post;
using IdokladSdk.Models.ProformaInvoice;
using IdokladSdk.Models.RecurringInvoice;
using IdokladSdk.Models.SalesOrder;
using IdokladSdk.Models.SalesReceipt;
using Idoklad.Client;
namespace Idoklad.Services;
/// <summary>
/// Sales-side documents: proforma invoices, credit notes, sales receipts, sales orders,
/// recurring invoices, issued tax documents and issued document templates.
/// </summary>
public sealed class SalesDocumentsService
{
private readonly IdokladApiAccessor _accessor;
public SalesDocumentsService(IdokladApiAccessor accessor) => _accessor = accessor;
// ---- Proforma invoices ----
public Task<object?> ListProformaAsync(int page, int pageSize, CancellationToken ct)
=> _accessor.Api.ProformaInvoiceClient.List().ToPageAsync(page, pageSize, ct);
public Task<object?> ProformaDetailAsync(int id, CancellationToken ct)
=> _accessor.Api.ProformaInvoiceClient.Detail(id).ToDetailAsync(ct);
public async Task<object?> ProformaDefaultAsync(CancellationToken ct)
=> (await _accessor.Api.ProformaInvoiceClient.DefaultAsync(ct)).Unwrap();
public async Task<object?> ProformaCopyAsync(int id, CancellationToken ct)
=> (await _accessor.Api.ProformaInvoiceClient.CopyAsync(id, ct)).Unwrap();
public async Task<object?> CreateProformaAsync(ProformaInvoicePostModel model, CancellationToken ct)
=> (await _accessor.Api.ProformaInvoiceClient.PostAsync(model, ct)).Unwrap();
public async Task<object?> UpdateProformaAsync(ProformaInvoicePatchModel model, CancellationToken ct)
=> (await _accessor.Api.ProformaInvoiceClient.UpdateAsync(model, ct)).Unwrap();
public async Task<bool> DeleteProformaAsync(int id, CancellationToken ct)
=> (await _accessor.Api.ProformaInvoiceClient.DeleteAsync(id, ct)).Unwrap();
// ---- Credit notes ----
public Task<object?> ListCreditNotesAsync(int page, int pageSize, CancellationToken ct)
=> _accessor.Api.CreditNoteClient.List().ToPageAsync(page, pageSize, ct);
public Task<object?> CreditNoteDetailAsync(int id, CancellationToken ct)
=> _accessor.Api.CreditNoteClient.Detail(id).ToDetailAsync(ct);
public async Task<object?> CreditNoteDefaultAsync(int invoiceId, CancellationToken ct)
=> (await _accessor.Api.CreditNoteClient.DefaultAsync(invoiceId, ct)).Unwrap();
public async Task<object?> CreateCreditNoteAsync(CreditNotePostModel model, CancellationToken ct)
=> (await _accessor.Api.CreditNoteClient.PostAsync(model, ct)).Unwrap();
public async Task<object?> UpdateCreditNoteAsync(CreditNotePatchModel model, CancellationToken ct)
=> (await _accessor.Api.CreditNoteClient.UpdateAsync(model, ct)).Unwrap();
public async Task<bool> DeleteCreditNoteAsync(int id, CancellationToken ct)
=> (await _accessor.Api.CreditNoteClient.DeleteAsync(id, ct)).Unwrap();
// ---- Sales receipts ----
public Task<object?> ListSalesReceiptsAsync(int page, int pageSize, CancellationToken ct)
=> _accessor.Api.SalesReceiptClient.List().ToPageAsync(page, pageSize, ct);
public Task<object?> SalesReceiptDetailAsync(int id, CancellationToken ct)
=> _accessor.Api.SalesReceiptClient.Detail(id).ToDetailAsync(ct);
public async Task<object?> SalesReceiptDefaultAsync(CancellationToken ct)
=> (await _accessor.Api.SalesReceiptClient.DefaultAsync(ct)).Unwrap();
public async Task<object?> SalesReceiptCopyAsync(int id, CancellationToken ct)
=> (await _accessor.Api.SalesReceiptClient.CopyAsync(id, ct)).Unwrap();
public async Task<object?> CreateSalesReceiptAsync(SalesReceiptPostModel model, CancellationToken ct)
=> (await _accessor.Api.SalesReceiptClient.PostAsync(model, ct)).Unwrap();
public async Task<object?> UpdateSalesReceiptAsync(SalesReceiptPatchModel model, CancellationToken ct)
=> (await _accessor.Api.SalesReceiptClient.UpdateAsync(model, ct)).Unwrap();
public async Task<bool> DeleteSalesReceiptAsync(int id, CancellationToken ct)
=> (await _accessor.Api.SalesReceiptClient.DeleteAsync(id, ct)).Unwrap();
// ---- Sales orders ----
public Task<object?> ListSalesOrdersAsync(int page, int pageSize, CancellationToken ct)
=> _accessor.Api.SalesOrderClient.List().ToPageAsync(page, pageSize, ct);
public Task<object?> SalesOrderDetailAsync(int id, CancellationToken ct)
=> _accessor.Api.SalesOrderClient.Detail(id).ToDetailAsync(ct);
public async Task<object?> SalesOrderDefaultAsync(CancellationToken ct)
=> (await _accessor.Api.SalesOrderClient.DefaultAsync(ct)).Unwrap();
public async Task<object?> SalesOrderCopyAsync(int id, CancellationToken ct)
=> (await _accessor.Api.SalesOrderClient.CopyAsync(id, ct)).Unwrap();
public async Task<object?> CreateSalesOrderAsync(SalesOrderPostModel model, CancellationToken ct)
=> (await _accessor.Api.SalesOrderClient.PostAsync(model, ct)).Unwrap();
public async Task<object?> UpdateSalesOrderAsync(SalesOrderPatchModel model, CancellationToken ct)
=> (await _accessor.Api.SalesOrderClient.UpdateAsync(model, ct)).Unwrap();
public async Task<bool> DeleteSalesOrderAsync(int id, CancellationToken ct)
=> (await _accessor.Api.SalesOrderClient.DeleteAsync(id, ct)).Unwrap();
// ---- Recurring invoices ----
public Task<object?> ListRecurringAsync(int page, int pageSize, CancellationToken ct)
=> _accessor.Api.RecurringInvoiceClient.List().ToPageAsync(page, pageSize, ct);
public Task<object?> RecurringDetailAsync(int id, CancellationToken ct)
=> _accessor.Api.RecurringInvoiceClient.Detail(id).ToDetailAsync(ct);
public async Task<object?> RecurringDefaultAsync(CancellationToken ct)
=> (await _accessor.Api.RecurringInvoiceClient.DefaultAsync(ct)).Unwrap();
public async Task<object?> RecurringCopyAsync(int id, CancellationToken ct)
=> (await _accessor.Api.RecurringInvoiceClient.CopyAsync(id, ct)).Unwrap();
public async Task<object?> CreateRecurringAsync(RecurringInvoicePostModel model, CancellationToken ct)
=> (await _accessor.Api.RecurringInvoiceClient.PostAsync(model, ct)).Unwrap();
public async Task<object?> UpdateRecurringAsync(RecurringInvoicePatchModel model, CancellationToken ct)
=> (await _accessor.Api.RecurringInvoiceClient.UpdateAsync(model, ct)).Unwrap();
public async Task<bool> DeleteRecurringAsync(int id, CancellationToken ct)
=> (await _accessor.Api.RecurringInvoiceClient.DeleteAsync(id, ct)).Unwrap();
// ---- Issued tax documents ----
public Task<object?> ListTaxDocumentsAsync(int page, int pageSize, CancellationToken ct)
=> _accessor.Api.IssuedTaxDocumentClient.List().ToPageAsync(page, pageSize, ct);
public Task<object?> TaxDocumentDetailAsync(int id, CancellationToken ct)
=> _accessor.Api.IssuedTaxDocumentClient.Detail(id).ToDetailAsync(ct);
public async Task<object?> TaxDocumentDefaultAsync(int advanceInvoiceId, CancellationToken ct)
=> (await _accessor.Api.IssuedTaxDocumentClient.DefaultAsync(advanceInvoiceId, ct)).Unwrap();
public async Task<object?> CreateTaxDocumentAsync(IssuedTaxDocumentPostModel model, CancellationToken ct)
=> (await _accessor.Api.IssuedTaxDocumentClient.PostAsync(model, ct)).Unwrap();
public async Task<object?> UpdateTaxDocumentAsync(IssuedTaxDocumentPatchModel model, CancellationToken ct)
=> (await _accessor.Api.IssuedTaxDocumentClient.UpdateAsync(model, ct)).Unwrap();
public async Task<bool> DeleteTaxDocumentAsync(int id, CancellationToken ct)
=> (await _accessor.Api.IssuedTaxDocumentClient.DeleteAsync(id, ct)).Unwrap();
// ---- Issued document templates ----
public Task<object?> ListTemplatesAsync(int page, int pageSize, CancellationToken ct)
=> _accessor.Api.IssuedDocumentTemplateClient.List().ToPageAsync(page, pageSize, ct);
public Task<object?> TemplateDetailAsync(int id, CancellationToken ct)
=> _accessor.Api.IssuedDocumentTemplateClient.Detail(id).ToDetailAsync(ct);
public async Task<object?> TemplateDefaultAsync(CancellationToken ct)
=> (await _accessor.Api.IssuedDocumentTemplateClient.DefaultAsync(ct)).Unwrap();
public async Task<object?> CreateTemplateAsync(IssuedDocumentTemplatePostModel model, CancellationToken ct)
=> (await _accessor.Api.IssuedDocumentTemplateClient.PostAsync(model, ct)).Unwrap();
public async Task<object?> UpdateTemplateAsync(IssuedDocumentTemplatePatchModel model, CancellationToken ct)
=> (await _accessor.Api.IssuedDocumentTemplateClient.UpdateAsync(model, ct)).Unwrap();
public async Task<bool> DeleteTemplateAsync(int id, CancellationToken ct)
=> (await _accessor.Api.IssuedDocumentTemplateClient.DeleteAsync(id, ct)).Unwrap();
}
+39
View File
@@ -0,0 +1,39 @@
using IdokladSdk.Enums;
using Idoklad.Client;
namespace Idoklad.Services;
/// <summary>Agenda statistics and summaries.</summary>
public sealed class StatisticsService
{
private readonly IdokladApiAccessor _accessor;
public StatisticsService(IdokladApiAccessor accessor) => _accessor = accessor;
public async Task<object?> InvoicingForPeriodAsync(PeriodType periodType, CancellationToken ct)
=> (await _accessor.Api.StatisticsClient.InvoicingForPeriodAsync(periodType, null, ct)).Unwrap();
public async Task<object?> InvoicingForYearAsync(YearType yearType, CancellationToken ct)
=> (await _accessor.Api.StatisticsClient.InvoicingForYearAsync(yearType, ct)).Unwrap();
public async Task<object?> QuarterSummaryAsync(CancellationToken ct)
=> (await _accessor.Api.StatisticsClient.QuarterSummaryAsync(ct)).Unwrap();
public async Task<object?> TopPartnersAsync(int? count, CancellationToken ct)
=> (await _accessor.Api.StatisticsClient.TopPartnersAsync(count, ct)).Unwrap();
public async Task<object?> AgendaSummaryAsync(CancellationToken ct)
=> (await _accessor.Api.StatisticsClient.AgendaSummaryAsync(ct)).Unwrap();
public async Task<object?> StatisticForContactAsync(int id, CancellationToken ct)
=> (await _accessor.Api.StatisticsClient.StatisticForContactAsync(id, ct)).Unwrap();
public async Task<object?> DebtIntervalsAsync(CancellationToken ct)
=> (await _accessor.Api.StatisticsClient.DebtIntervals(ct)).Unwrap();
public async Task<object?> TopDebtorsAsync(int? count, CancellationToken ct)
=> (await _accessor.Api.StatisticsClient.TopDebtors(count, ct)).Unwrap();
public async Task<object?> VatPayerProgressAsync(CancellationToken ct)
=> (await _accessor.Api.StatisticsClient.VatPayerProgress(ct)).Unwrap();
}