using AccountsDAL.DTO.Voucher; using GB5Shared.DTO.Framework.Criteria; using GB5Shared.DTO.Framework.Login; using System.Threading; namespace AccountsBLL.Voucher { public interface IVoucherBLL { // ── TVP Save ────────────────────────────────────────────────────────── Task SaveVoucherAsync(VoucherDTO voucherDTO, LoginDTO loginDTO); Task> SaveBatchVoucherAsync(List vouchers, LoginDTO loginDTO); Task> SaveBulkVoucherAsync(List vouchers, LoginDTO loginDTO); Task SaveOpeningBalanceAsync(VoucherDTO voucherDTO, LoginDTO loginDTO); // ── Delete/Cancel ──────────────────────────────────────────────────────── Task DeleteVoucherAsync(int voucherId, int cancelApplicable, LoginDTO loginDTO); // ── Cross-module posting bridges ──────────────────────────────────────── // Accounts owns voucher construction/GL posting; the caller resolves its own // domain-specific accounts and hands over already-resolved debit/credit lines. Task PostClaimVoucherAsync(ClaimVoucherPostingRequestDTO request, LoginDTO loginDTO, CancellationToken ct); // ── Read ────────────────────────────────────────────────────────────── Task GetVoucher(int voucherId, LoginDTO loginDTO); Task GetVoucherTDS(CriteriaDTO criteriaDTO, LoginDTO loginDTO); Task GetSelectListVoucherTDS(CriteriaDTO criteriaDTO, LoginDTO loginDTO); Task GetBillAllocation(int voucherId, LoginDTO loginDTO); Task GetPendingBillAllocation(BillAllocationFilterDTO filterDTO, LoginDTO loginDTO); Task GetSelectListBillAllocation(CriteriaDTO criteriaDTO, LoginDTO loginDTO); Task PaymentEntryValidation(string referenceNumber, LoginDTO loginDTO); Task GetSelectListVoucher(int FirstNumber, int MaxResult, CriteriaDTO criteriaDTO, LoginDTO loginDTO); Task GetSelectListVoucherInstrument(CriteriaDTO criteriaDTO, LoginDTO loginDTO); // ── Write ───────────────────────────────────────────────────────────── Task UpdateBillAllocation(VoucherBillAllocationDTO dto, LoginDTO loginDTO); Task AutoPendingBillAllocation(double amount, BillAllocationFilterDTO filterDTO, LoginDTO loginDTO); Task LoadBRS(int firstNumber, int maxResult, CriteriaDTO criteriaDTO, LoginDTO loginDTO, bool count = false); Task UpdateBRS(List brsLoadDTOs, LoginDTO loginDTO); Task ReAccountPost(int voucherId, LoginDTO loginDTO); // ── Opening Balance Save/Update ───────────────────────────────────────── Task SaveUpdateOpeningVoucher(List voucherDetails, int bizTransactionTypeId, int ouId, LoginDTO loginDTO); // ── Re-Account-Post (period/account/OU-scoped ledger rebuild) ─────────── Task ReAccountPostFast(int periodId, int accountId, LoginDTO loginDTO); Task ReAccountPostFastAllOU(int periodId, int accountId, LoginDTO loginDTO); Task GetVoucherDetailForOpeningBalance(int bizTransactionTypeId, int ouId, int voucherAccountId, LoginDTO loginDTO); Task CheckReferenceNumberDuplication(int ouId, int periodId, int bizTransactionTypeId, int accountId, string referenceNumber, LoginDTO loginDTO); Task GetUsedVoucherInBillAllocation(int voucherId, LoginDTO loginDTO); Task GetVoucherSummaryInfo(int voucherId, LoginDTO loginDTO); } }