UNPKG

@accounter/server

Version:
95 lines 5.17 kB
import { GraphQLError } from 'graphql'; import { generateReport } from '../../../../../shaam6111-generator/src/index.js'; import { AdminContextProvider } from '../../admin-context/providers/admin-context.provider.js'; import { ScopeProvider } from '../../auth/providers/scope.provider.js'; import { BusinessesProvider } from '../../financial-entities/providers/businesses.provider.js'; import { convertLocalReportDataToShaam6111ReportData, getShaam6111Data, } from '../helpers/shaam6111.helper.js'; export const shaam6111Resolvers = { Query: { shaam6111: async (_, { year, businessId: requestedBusinessId }, { injector }) => { // Per-business report: a requested business must be within the read scope; // default to the request's primary business otherwise. let businessId; if (requestedBusinessId) { // Validates the id is within the read scope (throws otherwise). await injector.get(ScopeProvider).getReadScope([requestedBusinessId]); businessId = requestedBusinessId; } else { const { ownerId } = await injector.get(AdminContextProvider).getVerifiedAdminContext(); businessId = ownerId; } const reportData = await getShaam6111Data(injector, businessId, year); return { businessId, reportData, }; }, }, Shaam6111Report: { id: ({ reportData }) => { return `shaam6111-${reportData.header.idNumber}-${reportData.header.taxYear}`; }, business: ({ businessId }, _, context) => { return context.injector .get(BusinessesProvider) .getBusinessByIdLoader.load(businessId) .then(business => { if (!business) { throw new GraphQLError(`Report business not found (ID: ${businessId})`); } return business; }); }, data: ({ reportData }) => reportData, file: ({ reportData }) => { const adjustedReportData = convertLocalReportDataToShaam6111ReportData(reportData); const reportContent = generateReport(adjustedReportData, true); return { id: `shaam6111-${reportData.header.idNumber}-${reportData.header.taxYear}-file`, reportContent, diffContent: '', // TODO: implement diff content fileName: `shaam6111-${reportData.header.idNumber}-${reportData.header.taxYear}-file`, // TODO: check if specific file name format is required }; }, year: ({ reportData }) => parseInt(reportData.header.taxYear, 10), }, Shaam6111Data: { id: reportData => `shaam6111-${reportData.header.idNumber}-${reportData.header.taxYear}-file`, header: reportData => { return { taxFileNumber: reportData.header.taxFileNumber, taxYear: reportData.header.taxYear, idNumber: reportData.header.idNumber, vatFileNumber: reportData.header.vatFileNumber, withholdingTaxFileNumber: reportData.header.withholdingTaxFileNumber, industryCode: reportData.header.industryCode, businessDescription: reportData.header.businessDescription, businessType: reportData.header.businessType, reportingMethod: reportData.header.reportingMethod, accountingMethod: reportData.header.accountingMethod, accountingSystem: reportData.header.accountingSystem, isPartnership: reportData.header.isPartnership, includesProfitLoss: reportData.header.includesProfitLoss, includesTaxAdjustment: reportData.header.includesTaxAdjustment, includesBalanceSheet: reportData.header.includesBalanceSheet, profitLossEntryCount: reportData.profitAndLoss.length, taxAdjustmentEntryCount: reportData.taxAdjustment.length, balanceSheetEntryCount: reportData.balanceSheet?.length ?? 0, ifrsImplementationYear: reportData.header.ifrsImplementationYear, ifrsReportingOption: reportData.header.ifrsReportingOption, softwareRegistrationNumber: reportData.header.softwareRegistrationNumber, partnershipCount: reportData.header.partnershipCount, partnershipProfitShare: reportData.header.partnershipProfitShare, currencyType: reportData.header.currencyType, auditOpinionType: reportData.header.auditOpinionType, amountsInThousands: reportData.header.amountsInThousands, }; }, profitAndLoss: reportData => reportData.profitAndLoss, taxAdjustment: reportData => reportData.taxAdjustment, balanceSheet: reportData => reportData.balanceSheet ?? null, individualOrCompany: reportData => reportData.individualOrCompany ?? null, }, }; //# sourceMappingURL=shaam6111.resolver.js.map