001// -------------------------------------------------------------------------------- 002// Copyright 2002-2025 Echo Three, LLC 003// 004// Licensed under the Apache License, Version 2.0 (the "License"); 005// you may not use this file except in compliance with the License. 006// You may obtain a copy of the License at 007// 008// http://www.apache.org/licenses/LICENSE-2.0 009// 010// Unless required by applicable law or agreed to in writing, software 011// distributed under the License is distributed on an "AS IS" BASIS, 012// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 013// See the License for the specific language governing permissions and 014// limitations under the License. 015// -------------------------------------------------------------------------------- 016 017package com.echothree.model.control.accounting.server.graphql; 018 019import com.echothree.model.control.graphql.server.graphql.AmountObject; 020import com.echothree.model.control.graphql.server.graphql.BaseObject; 021import com.echothree.model.control.party.server.graphql.PartyObject; 022import com.echothree.model.control.party.server.graphql.PartySecurityUtils; 023import com.echothree.model.data.accounting.server.entity.TransactionGlEntry; 024import graphql.annotations.annotationTypes.GraphQLDescription; 025import graphql.annotations.annotationTypes.GraphQLField; 026import graphql.annotations.annotationTypes.GraphQLName; 027import graphql.annotations.annotationTypes.GraphQLNonNull; 028import graphql.schema.DataFetchingEnvironment; 029 030@GraphQLDescription("transaction GL entry object") 031@GraphQLName("TransactionGlEntry") 032public class TransactionGlEntryObject 033 extends BaseObject { 034 035 private final TransactionGlEntry transactionGlEntry; // Always Present 036 037 public TransactionGlEntryObject(TransactionGlEntry transactionGlEntry) { 038 this.transactionGlEntry = transactionGlEntry; 039 } 040 041 @GraphQLField 042 @GraphQLDescription("transaction") 043 @GraphQLNonNull 044 public TransactionObject getTransaction(final DataFetchingEnvironment env) { 045 return AccountingSecurityUtils.getHasTransactionAccess(env) ? 046 new TransactionObject(transactionGlEntry.getTransaction()) : 047 null; 048 } 049 050 @GraphQLField 051 @GraphQLDescription("transaction GL entry sequence") 052 @GraphQLNonNull 053 public int getTransactionGlEntrySequence() { 054 return transactionGlEntry.getTransactionGlEntrySequence(); 055 } 056 057 @GraphQLField 058 @GraphQLDescription("group party") 059 @GraphQLNonNull 060 public PartyObject getGroupParty(final DataFetchingEnvironment env) { 061 var groupParty = transactionGlEntry.getGroupParty(); 062 063 return PartySecurityUtils.getHasPartyAccess(env, groupParty) ? 064 new PartyObject(groupParty) : 065 null; 066 } 067 068 @GraphQLField 069 @GraphQLDescription("transaction GL account category") 070 public TransactionGlAccountCategoryObject getTransactionGlAccountCategory(final DataFetchingEnvironment env) { 071 var transactionGlAccountCategory = transactionGlEntry.getTransactionGlAccountCategory(); 072 073 return transactionGlAccountCategory == null ? null : 074 AccountingSecurityUtils.getHasTransactionGlAccountCategoryAccess(env) ? 075 new TransactionGlAccountCategoryObject(transactionGlAccountCategory) : 076 null; 077 } 078 079 @GraphQLField 080 @GraphQLDescription("GL account") 081 @GraphQLNonNull 082 public GlAccountObject getGlAccount(final DataFetchingEnvironment env) { 083 return AccountingSecurityUtils.getHasGlAccountAccess(env) ? 084 new GlAccountObject(transactionGlEntry.getGlAccount()) : 085 null; 086 } 087 088 @GraphQLField 089 @GraphQLDescription("original currency") 090 @GraphQLNonNull 091 public CurrencyObject getOriginalCurrency(final DataFetchingEnvironment env) { 092 return AccountingSecurityUtils.getHasCurrencyAccess(env) ? 093 new CurrencyObject(transactionGlEntry.getOriginalCurrency()) : 094 null; 095 } 096 097 @GraphQLField 098 @GraphQLDescription("original debit") 099 public AmountObject getOriginalDebit() { 100 var originalDebit = transactionGlEntry.getOriginalDebit(); 101 102 return originalDebit == null ? null : 103 new AmountObject(transactionGlEntry.getOriginalCurrency(), transactionGlEntry.getOriginalDebit()); 104 } 105 106 @GraphQLField 107 @GraphQLDescription("original credit") 108 public AmountObject getOriginalCredit() { 109 var originalCredit = transactionGlEntry.getOriginalCredit(); 110 111 return originalCredit == null ? null : 112 new AmountObject(transactionGlEntry.getOriginalCurrency(), transactionGlEntry.getOriginalCredit()); 113 } 114 115 @GraphQLField 116 @GraphQLDescription("original debit") 117 public AmountObject getDebit() { 118 var debit = transactionGlEntry.getDebit(); 119 120 return debit == null ? null : 121 new AmountObject(transactionGlEntry.getGlAccount().getLastDetail().getCurrency(), transactionGlEntry.getDebit()); 122 } 123 124 @GraphQLField 125 @GraphQLDescription("original credit") 126 public AmountObject getCredit() { 127 var credit = transactionGlEntry.getCredit(); 128 129 return credit == null ? null : 130 new AmountObject(transactionGlEntry.getGlAccount().getLastDetail().getCurrency(), transactionGlEntry.getCredit()); 131 } 132 133}