534 lines
12 KiB
C#
534 lines
12 KiB
C#
namespace TakeoutSaaS.TenantApi.Contracts.Finance;
|
||
|
||
/// <summary>
|
||
/// 保存发票设置请求。
|
||
/// </summary>
|
||
public sealed class FinanceInvoiceSettingSaveRequest
|
||
{
|
||
/// <summary>
|
||
/// 企业名称。
|
||
/// </summary>
|
||
public string CompanyName { get; set; } = string.Empty;
|
||
|
||
/// <summary>
|
||
/// 纳税人识别号。
|
||
/// </summary>
|
||
public string TaxpayerNumber { get; set; } = string.Empty;
|
||
|
||
/// <summary>
|
||
/// 注册地址。
|
||
/// </summary>
|
||
public string? RegisteredAddress { get; set; }
|
||
|
||
/// <summary>
|
||
/// 注册电话。
|
||
/// </summary>
|
||
public string? RegisteredPhone { get; set; }
|
||
|
||
/// <summary>
|
||
/// 开户银行。
|
||
/// </summary>
|
||
public string? BankName { get; set; }
|
||
|
||
/// <summary>
|
||
/// 银行账号。
|
||
/// </summary>
|
||
public string? BankAccount { get; set; }
|
||
|
||
/// <summary>
|
||
/// 是否启用电子普通发票。
|
||
/// </summary>
|
||
public bool EnableElectronicNormalInvoice { get; set; } = true;
|
||
|
||
/// <summary>
|
||
/// 是否启用电子专用发票。
|
||
/// </summary>
|
||
public bool EnableElectronicSpecialInvoice { get; set; }
|
||
|
||
/// <summary>
|
||
/// 是否启用自动开票。
|
||
/// </summary>
|
||
public bool EnableAutoIssue { get; set; }
|
||
|
||
/// <summary>
|
||
/// 自动开票单张最大金额。
|
||
/// </summary>
|
||
public decimal AutoIssueMaxAmount { get; set; } = 10_000m;
|
||
}
|
||
|
||
/// <summary>
|
||
/// 发票记录列表请求。
|
||
/// </summary>
|
||
public sealed class FinanceInvoiceRecordListRequest
|
||
{
|
||
/// <summary>
|
||
/// 开始日期(yyyy-MM-dd)。
|
||
/// </summary>
|
||
public string? StartDate { get; set; }
|
||
|
||
/// <summary>
|
||
/// 结束日期(yyyy-MM-dd)。
|
||
/// </summary>
|
||
public string? EndDate { get; set; }
|
||
|
||
/// <summary>
|
||
/// 状态(pending/issued/voided)。
|
||
/// </summary>
|
||
public string? Status { get; set; }
|
||
|
||
/// <summary>
|
||
/// 类型(normal/special)。
|
||
/// </summary>
|
||
public string? InvoiceType { get; set; }
|
||
|
||
/// <summary>
|
||
/// 关键词(发票号/公司名/申请人)。
|
||
/// </summary>
|
||
public string? Keyword { get; set; }
|
||
|
||
/// <summary>
|
||
/// 页码。
|
||
/// </summary>
|
||
public int Page { get; set; } = 1;
|
||
|
||
/// <summary>
|
||
/// 每页条数。
|
||
/// </summary>
|
||
public int PageSize { get; set; } = 10;
|
||
}
|
||
|
||
/// <summary>
|
||
/// 发票记录详情请求。
|
||
/// </summary>
|
||
public sealed class FinanceInvoiceRecordDetailRequest
|
||
{
|
||
/// <summary>
|
||
/// 发票记录 ID。
|
||
/// </summary>
|
||
public string RecordId { get; set; } = string.Empty;
|
||
}
|
||
|
||
/// <summary>
|
||
/// 发票开票请求。
|
||
/// </summary>
|
||
public sealed class FinanceInvoiceRecordIssueRequest
|
||
{
|
||
/// <summary>
|
||
/// 发票记录 ID。
|
||
/// </summary>
|
||
public string RecordId { get; set; } = string.Empty;
|
||
|
||
/// <summary>
|
||
/// 接收邮箱(可选)。
|
||
/// </summary>
|
||
public string? ContactEmail { get; set; }
|
||
|
||
/// <summary>
|
||
/// 开票备注。
|
||
/// </summary>
|
||
public string? IssueRemark { get; set; }
|
||
}
|
||
|
||
/// <summary>
|
||
/// 发票作废请求。
|
||
/// </summary>
|
||
public sealed class FinanceInvoiceRecordVoidRequest
|
||
{
|
||
/// <summary>
|
||
/// 发票记录 ID。
|
||
/// </summary>
|
||
public string RecordId { get; set; } = string.Empty;
|
||
|
||
/// <summary>
|
||
/// 作废原因。
|
||
/// </summary>
|
||
public string VoidReason { get; set; } = string.Empty;
|
||
}
|
||
|
||
/// <summary>
|
||
/// 发票申请请求。
|
||
/// </summary>
|
||
public sealed class FinanceInvoiceRecordApplyRequest
|
||
{
|
||
/// <summary>
|
||
/// 申请人。
|
||
/// </summary>
|
||
public string ApplicantName { get; set; } = string.Empty;
|
||
|
||
/// <summary>
|
||
/// 开票抬头(公司名)。
|
||
/// </summary>
|
||
public string CompanyName { get; set; } = string.Empty;
|
||
|
||
/// <summary>
|
||
/// 纳税人识别号。
|
||
/// </summary>
|
||
public string? TaxpayerNumber { get; set; }
|
||
|
||
/// <summary>
|
||
/// 发票类型(normal/special)。
|
||
/// </summary>
|
||
public string InvoiceType { get; set; } = "normal";
|
||
|
||
/// <summary>
|
||
/// 开票金额。
|
||
/// </summary>
|
||
public decimal Amount { get; set; }
|
||
|
||
/// <summary>
|
||
/// 关联订单号。
|
||
/// </summary>
|
||
public string OrderNo { get; set; } = string.Empty;
|
||
|
||
/// <summary>
|
||
/// 接收邮箱。
|
||
/// </summary>
|
||
public string? ContactEmail { get; set; }
|
||
|
||
/// <summary>
|
||
/// 联系电话。
|
||
/// </summary>
|
||
public string? ContactPhone { get; set; }
|
||
|
||
/// <summary>
|
||
/// 申请备注。
|
||
/// </summary>
|
||
public string? ApplyRemark { get; set; }
|
||
|
||
/// <summary>
|
||
/// 申请时间(可空)。
|
||
/// </summary>
|
||
public DateTime? AppliedAt { get; set; }
|
||
}
|
||
|
||
/// <summary>
|
||
/// 发票设置响应。
|
||
/// </summary>
|
||
public sealed class FinanceInvoiceSettingResponse
|
||
{
|
||
/// <summary>
|
||
/// 企业名称。
|
||
/// </summary>
|
||
public string CompanyName { get; set; } = string.Empty;
|
||
|
||
/// <summary>
|
||
/// 纳税人识别号。
|
||
/// </summary>
|
||
public string TaxpayerNumber { get; set; } = string.Empty;
|
||
|
||
/// <summary>
|
||
/// 注册地址。
|
||
/// </summary>
|
||
public string? RegisteredAddress { get; set; }
|
||
|
||
/// <summary>
|
||
/// 注册电话。
|
||
/// </summary>
|
||
public string? RegisteredPhone { get; set; }
|
||
|
||
/// <summary>
|
||
/// 开户银行。
|
||
/// </summary>
|
||
public string? BankName { get; set; }
|
||
|
||
/// <summary>
|
||
/// 银行账号。
|
||
/// </summary>
|
||
public string? BankAccount { get; set; }
|
||
|
||
/// <summary>
|
||
/// 是否启用电子普通发票。
|
||
/// </summary>
|
||
public bool EnableElectronicNormalInvoice { get; set; }
|
||
|
||
/// <summary>
|
||
/// 是否启用电子专用发票。
|
||
/// </summary>
|
||
public bool EnableElectronicSpecialInvoice { get; set; }
|
||
|
||
/// <summary>
|
||
/// 是否启用自动开票。
|
||
/// </summary>
|
||
public bool EnableAutoIssue { get; set; }
|
||
|
||
/// <summary>
|
||
/// 自动开票单张最大金额。
|
||
/// </summary>
|
||
public decimal AutoIssueMaxAmount { get; set; }
|
||
}
|
||
|
||
/// <summary>
|
||
/// 发票统计响应。
|
||
/// </summary>
|
||
public sealed class FinanceInvoiceStatsResponse
|
||
{
|
||
/// <summary>
|
||
/// 本月已开票金额。
|
||
/// </summary>
|
||
public decimal CurrentMonthIssuedAmount { get; set; }
|
||
|
||
/// <summary>
|
||
/// 本月已开票张数。
|
||
/// </summary>
|
||
public int CurrentMonthIssuedCount { get; set; }
|
||
|
||
/// <summary>
|
||
/// 待开票数量。
|
||
/// </summary>
|
||
public int PendingCount { get; set; }
|
||
|
||
/// <summary>
|
||
/// 已作废数量。
|
||
/// </summary>
|
||
public int VoidedCount { get; set; }
|
||
}
|
||
|
||
/// <summary>
|
||
/// 发票记录列表项响应。
|
||
/// </summary>
|
||
public sealed class FinanceInvoiceRecordResponse
|
||
{
|
||
/// <summary>
|
||
/// 记录 ID。
|
||
/// </summary>
|
||
public string RecordId { get; set; } = string.Empty;
|
||
|
||
/// <summary>
|
||
/// 发票号码。
|
||
/// </summary>
|
||
public string InvoiceNo { get; set; } = string.Empty;
|
||
|
||
/// <summary>
|
||
/// 申请人。
|
||
/// </summary>
|
||
public string ApplicantName { get; set; } = string.Empty;
|
||
|
||
/// <summary>
|
||
/// 开票抬头(公司名)。
|
||
/// </summary>
|
||
public string CompanyName { get; set; } = string.Empty;
|
||
|
||
/// <summary>
|
||
/// 发票类型编码。
|
||
/// </summary>
|
||
public string InvoiceType { get; set; } = string.Empty;
|
||
|
||
/// <summary>
|
||
/// 发票类型文案。
|
||
/// </summary>
|
||
public string InvoiceTypeText { get; set; } = string.Empty;
|
||
|
||
/// <summary>
|
||
/// 金额。
|
||
/// </summary>
|
||
public decimal Amount { get; set; }
|
||
|
||
/// <summary>
|
||
/// 关联订单号。
|
||
/// </summary>
|
||
public string OrderNo { get; set; } = string.Empty;
|
||
|
||
/// <summary>
|
||
/// 状态编码。
|
||
/// </summary>
|
||
public string Status { get; set; } = string.Empty;
|
||
|
||
/// <summary>
|
||
/// 状态文案。
|
||
/// </summary>
|
||
public string StatusText { get; set; } = string.Empty;
|
||
|
||
/// <summary>
|
||
/// 申请时间(本地显示字符串)。
|
||
/// </summary>
|
||
public string AppliedAt { get; set; } = string.Empty;
|
||
}
|
||
|
||
/// <summary>
|
||
/// 发票记录详情响应。
|
||
/// </summary>
|
||
public sealed class FinanceInvoiceRecordDetailResponse
|
||
{
|
||
/// <summary>
|
||
/// 记录 ID。
|
||
/// </summary>
|
||
public string RecordId { get; set; } = string.Empty;
|
||
|
||
/// <summary>
|
||
/// 发票号码。
|
||
/// </summary>
|
||
public string InvoiceNo { get; set; } = string.Empty;
|
||
|
||
/// <summary>
|
||
/// 申请人。
|
||
/// </summary>
|
||
public string ApplicantName { get; set; } = string.Empty;
|
||
|
||
/// <summary>
|
||
/// 开票抬头(公司名)。
|
||
/// </summary>
|
||
public string CompanyName { get; set; } = string.Empty;
|
||
|
||
/// <summary>
|
||
/// 纳税人识别号。
|
||
/// </summary>
|
||
public string? TaxpayerNumber { get; set; }
|
||
|
||
/// <summary>
|
||
/// 发票类型编码。
|
||
/// </summary>
|
||
public string InvoiceType { get; set; } = string.Empty;
|
||
|
||
/// <summary>
|
||
/// 发票类型文案。
|
||
/// </summary>
|
||
public string InvoiceTypeText { get; set; } = string.Empty;
|
||
|
||
/// <summary>
|
||
/// 金额。
|
||
/// </summary>
|
||
public decimal Amount { get; set; }
|
||
|
||
/// <summary>
|
||
/// 关联订单号。
|
||
/// </summary>
|
||
public string OrderNo { get; set; } = string.Empty;
|
||
|
||
/// <summary>
|
||
/// 接收邮箱。
|
||
/// </summary>
|
||
public string? ContactEmail { get; set; }
|
||
|
||
/// <summary>
|
||
/// 联系电话。
|
||
/// </summary>
|
||
public string? ContactPhone { get; set; }
|
||
|
||
/// <summary>
|
||
/// 申请备注。
|
||
/// </summary>
|
||
public string? ApplyRemark { get; set; }
|
||
|
||
/// <summary>
|
||
/// 状态编码。
|
||
/// </summary>
|
||
public string Status { get; set; } = string.Empty;
|
||
|
||
/// <summary>
|
||
/// 状态文案。
|
||
/// </summary>
|
||
public string StatusText { get; set; } = string.Empty;
|
||
|
||
/// <summary>
|
||
/// 申请时间(本地显示字符串)。
|
||
/// </summary>
|
||
public string AppliedAt { get; set; } = string.Empty;
|
||
|
||
/// <summary>
|
||
/// 开票时间(本地显示字符串)。
|
||
/// </summary>
|
||
public string? IssuedAt { get; set; }
|
||
|
||
/// <summary>
|
||
/// 开票人 ID。
|
||
/// </summary>
|
||
public string? IssuedByUserId { get; set; }
|
||
|
||
/// <summary>
|
||
/// 开票备注。
|
||
/// </summary>
|
||
public string? IssueRemark { get; set; }
|
||
|
||
/// <summary>
|
||
/// 作废时间(本地显示字符串)。
|
||
/// </summary>
|
||
public string? VoidedAt { get; set; }
|
||
|
||
/// <summary>
|
||
/// 作废人 ID。
|
||
/// </summary>
|
||
public string? VoidedByUserId { get; set; }
|
||
|
||
/// <summary>
|
||
/// 作废原因。
|
||
/// </summary>
|
||
public string? VoidReason { get; set; }
|
||
}
|
||
|
||
/// <summary>
|
||
/// 发票开票结果响应。
|
||
/// </summary>
|
||
public sealed class FinanceInvoiceIssueResultResponse
|
||
{
|
||
/// <summary>
|
||
/// 记录 ID。
|
||
/// </summary>
|
||
public string RecordId { get; set; } = string.Empty;
|
||
|
||
/// <summary>
|
||
/// 发票号码。
|
||
/// </summary>
|
||
public string InvoiceNo { get; set; } = string.Empty;
|
||
|
||
/// <summary>
|
||
/// 开票抬头。
|
||
/// </summary>
|
||
public string CompanyName { get; set; } = string.Empty;
|
||
|
||
/// <summary>
|
||
/// 金额。
|
||
/// </summary>
|
||
public decimal Amount { get; set; }
|
||
|
||
/// <summary>
|
||
/// 接收邮箱。
|
||
/// </summary>
|
||
public string? ContactEmail { get; set; }
|
||
|
||
/// <summary>
|
||
/// 开票时间(本地显示字符串)。
|
||
/// </summary>
|
||
public string IssuedAt { get; set; } = string.Empty;
|
||
|
||
/// <summary>
|
||
/// 状态编码。
|
||
/// </summary>
|
||
public string Status { get; set; } = string.Empty;
|
||
|
||
/// <summary>
|
||
/// 状态文案。
|
||
/// </summary>
|
||
public string StatusText { get; set; } = string.Empty;
|
||
}
|
||
|
||
/// <summary>
|
||
/// 发票记录分页响应。
|
||
/// </summary>
|
||
public sealed class FinanceInvoiceRecordListResultResponse
|
||
{
|
||
/// <summary>
|
||
/// 列表项。
|
||
/// </summary>
|
||
public List<FinanceInvoiceRecordResponse> Items { get; set; } = [];
|
||
|
||
/// <summary>
|
||
/// 页码。
|
||
/// </summary>
|
||
public int Page { get; set; }
|
||
|
||
/// <summary>
|
||
/// 每页条数。
|
||
/// </summary>
|
||
public int PageSize { get; set; }
|
||
|
||
/// <summary>
|
||
/// 总条数。
|
||
/// </summary>
|
||
public int TotalCount { get; set; }
|
||
|
||
/// <summary>
|
||
/// 统计。
|
||
/// </summary>
|
||
public FinanceInvoiceStatsResponse Stats { get; set; } = new();
|
||
}
|