UNPKG

@accounter/server

Version:
127 lines (104 loc) 2.9 kB
import { gql } from 'graphql-modules'; export default gql` extend type Query { chargesWithLedgerChanges(filters: ChargeFilter, limit: Int): [ChargesWithLedgerChangesResult!]! @requiresAuth ledgerRecordsByDates(fromDate: TimelessDate!, toDate: TimelessDate!): [LedgerRecord!]! @requiresAuth ledgerRecordsByFinancialEntity(financialEntityId: UUID!): [LedgerRecord!]! @requiresAuth } extend type Mutation { regenerateLedgerRecords(chargeId: UUID!): GeneratedLedgerRecords! @requiresAuth @requiresAnyRole(roles: ["business_owner", "accountant"]) lockLedgerRecords(date: TimelessDate!): Boolean! @requiresAuth @requiresAnyRole(roles: ["business_owner", "accountant"]) } " represent atomic movement of funds " type LedgerRecord { id: UUID! debitAmount1: FinancialAmount debitAmount2: FinancialAmount creditAmount1: FinancialAmount creditAmount2: FinancialAmount localCurrencyDebitAmount1: FinancialAmount! localCurrencyDebitAmount2: FinancialAmount localCurrencyCreditAmount1: FinancialAmount! localCurrencyCreditAmount2: FinancialAmount invoiceDate: DateTime! valueDate: DateTime! description: String reference: String } extend interface Charge { " ledger records linked to the charge " ledger: Ledger! } extend type CommonCharge { ledger: Ledger! } extend type FinancialCharge { ledger: Ledger! } extend type ConversionCharge { ledger: Ledger! } extend type SalaryCharge { ledger: Ledger! } extend type InternalTransferCharge { ledger: Ledger! } extend type DividendCharge { ledger: Ledger! } extend type BusinessTripCharge { ledger: Ledger! } extend type MonthlyVatCharge { ledger: Ledger! } extend type BankDepositCharge { ledger: Ledger! } extend type ForeignSecuritiesCharge { ledger: Ledger! } extend type CreditcardBankCharge { ledger: Ledger! } extend type ChargeMetadata { isLedgerLocked: Boolean! } " unbalanced entity over ledger records " type LedgerBalanceUnbalancedEntity { entity: FinancialEntity! balance: FinancialAmount! } " info about ledger total balance " type LedgerBalanceInfo { isBalanced: Boolean! unbalancedEntities: [LedgerBalanceUnbalancedEntity!]! } " array of ledger records linked to the charge " type Ledger { records: [LedgerRecord!]! balance: LedgerBalanceInfo validate: LedgerValidation! } " ledger validation info" type LedgerValidation { isValid: Boolean! matches: [UUID!]! differences: [LedgerRecord!]! errors: [String!]! } " result type for ledger records " union GeneratedLedgerRecords = Ledger | CommonError " result type for charges with ledger changes " type ChargesWithLedgerChangesResult { progress: Float! charge: Charge } `;