import { z } from 'zod'; import { CloudPaymentsReceiptSchema } from '../../models'; export namespace ReceiptCommand { export const RequestSchema = z .object({ Id: z.string(), DocumentNumber: z.string(), SessionNumber: z.string(), Number: z.string(), FiscalSign: z.string(), DeviceNumber: z.string(), RegNumber: z.string(), FiscalNumber: z.string(), Inn: z.string(), Type: z.string(), Ofd: z.string(), Url: z.string(), QrCodeUrl: z.string(), TransactionId: z.string(), Amount: z.string().transform((amount) => parseInt(amount, 10)), DateTime: z.string(), InvoiceId: z.string().optional(), SubscriptionId: z.string().optional(), AccountId: z.string(), Receipt: z .string() .transform((str, ctx) => { try { return JSON.parse(str); } catch { ctx.addIssue({ code: 'custom', message: 'Invalid JSON' }); return z.NEVER; } }) .pipe(CloudPaymentsReceiptSchema), }) .transform((data) => ({ id: data.Id, documentNumber: data.DocumentNumber, sessionNumber: data.SessionNumber, number: data.Number, fiscalSign: data.FiscalSign, deviceNumber: data.DeviceNumber, regNumber: data.RegNumber, fiscalNumber: data.FiscalNumber, inn: data.Inn, type: data.Type, ofd: data.Ofd, url: data.Url, qrCodeUrl: data.QrCodeUrl, transactionId: data.TransactionId, amount: data.Amount, dateTime: data.DateTime, invoiceId: data.InvoiceId, subscriptionId: data.SubscriptionId, accountId: data.AccountId, receipt: data.Receipt, })); export type Request = z.infer; export const ResponseSchema = z.object({ code: z.number(), }); export type Response = z.infer; }