/**
 * Shell Data & Reporting APIsLib
 *
 * This file was automatically generated by APIMATIC v3.0 ( https://www.apimatic.io ).
 */

import { nullable, number, object, optional, Schema, string } from '../schema';

export interface InvoicesSummaries {
  /** Amount due from last summary document date. */
  amountDue?: number | null;
  /** Amount that are due from past summary documents. */
  amountNotOverdue?: number | null;
  /** Amount that are overdue from past summary documents. */
  amountOverdue?: number | null;
  /** Total amount paid in billing currency. */
  amountPaid?: number | null;
  /** Billing currency ISO code. */
  billingCurrencyCode?: string | null;
  /**
   * Billing currency symbol.
   * Example: €
   */
  billingCurrencySymbol?: string | null;
  /** Current outstanding balance amount */
  outstandingBalance?: number | null;
  /**
   * Payment due date.
   * Format: YYYYMMDD
   */
  paymentDueDate?: string | null;
  /**
   * Summary document date.
   * Format: YYYYMMDD
   */
  summaryDocumentDate?: string | null;
  /** Total number of invoices generated on this date. */
  totalBillingDocuments?: number | null;
  /** Total gross amount in billing currency. */
  totalGrossAmountBillingCurrency?: number | null;
  /** Total net amount in billing currency. */
  totalNetAmountBillingCurrency?: number | null;
  /** Total number of summary documents generated on this date. */
  totalSummaryDocuments?: number | null;
  /** Total VAT amount in billing currency. */
  totalVATAmountBillingCurrency?: number | null;
}

export const invoicesSummariesSchema: Schema<InvoicesSummaries> = object({
  amountDue: ['AmountDue', optional(nullable(number()))],
  amountNotOverdue: ['AmountNotOverdue', optional(nullable(number()))],
  amountOverdue: ['AmountOverdue', optional(nullable(number()))],
  amountPaid: ['AmountPaid', optional(nullable(number()))],
  billingCurrencyCode: ['BillingCurrencyCode', optional(nullable(string()))],
  billingCurrencySymbol: [
    'BillingCurrencySymbol',
    optional(nullable(string())),
  ],
  outstandingBalance: ['OutstandingBalance', optional(nullable(number()))],
  paymentDueDate: ['PaymentDueDate', optional(nullable(string()))],
  summaryDocumentDate: ['SummaryDocumentDate', optional(nullable(string()))],
  totalBillingDocuments: [
    'TotalBillingDocuments',
    optional(nullable(number())),
  ],
  totalGrossAmountBillingCurrency: [
    'TotalGrossAmountBillingCurrency',
    optional(nullable(number())),
  ],
  totalNetAmountBillingCurrency: [
    'TotalNetAmountBillingCurrency',
    optional(nullable(number())),
  ],
  totalSummaryDocuments: [
    'TotalSummaryDocuments',
    optional(nullable(number())),
  ],
  totalVATAmountBillingCurrency: [
    'TotalVATAmountBillingCurrency',
    optional(nullable(number())),
  ],
});
