zbyle sluzby podle CC
This commit is contained in:
@@ -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();
|
||||
}
|
||||
@@ -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);
|
||||
}
|
||||
@@ -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);
|
||||
}
|
||||
@@ -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();
|
||||
}
|
||||
@@ -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();
|
||||
}
|
||||
@@ -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();
|
||||
}
|
||||
@@ -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();
|
||||
}
|
||||
Reference in New Issue
Block a user