import { z } from "zod";

export const transactionsSchema = z.object({
  id: z.number(),
  gId: z.string(),
  orderId: z.string(),
  bankId: z.number(),
  clientId: z.number(),
  tenantId: z.number(),
  roomId: z.number(),
  propId: z.number(),
  floor: z.string(),
  transactionFor: z.number(),
  amount: z.number().gt(0),
  name: z.string(),
  title: z.string().nullable(),
  receipt: z.string(),
  type: z.number(),
  reason: z.string(),
  propName: z.string(),
  roomNum: z.string(),
  dueDate: z.string().datetime(),
  mode: z.number().gt(0),
  status: z.number().gt(0),
  collectionDate: z.string().datetime(),
  createdAt: z.string().datetime(),
  updatedAt: z.string().datetime(),
  ledgerReferenceId: z.string(),
  recordedBy: z.string(),
  settleStatus: z.number(),
  settleDescription: z.string(),
  charges: z.number(),
  gstCharges: z.number(),
  holdAmount: z.number(),
  splitTnxId: z.string(),
  gstNo: z.string(),
  invoiceNo: z.string(),
  discount: z.number(),
  gateway: z.number(),
  paymentAccountNo: z.string().nullable(),
  paymentAccountName: z.string().nullable(),
  settledOn: z.string().datetime(),
  utrNo: z.string().nullable(),
  docs: z.string(),
  bankRefNum: z.string().nullable(),
  remarks: z.string().nullable(),
  isFinanciallyApplicable: z.number(),
  tallyGuid: z.string(),
  tallyBillRef: z.string(),
  tallyStatus: z.number(),
});

type transactionsTypes = z.infer<typeof transactionsSchema>;

export const GenerateOrderIdSchema = z.object({
  amount: z.number().gt(0),
  mode: z.number().gt(0),
});
export const GenerateChargesSchema = z.object({
  amount: z.number().gt(0),
  mode: z.number().gt(0),
});

export const AddTransactionSchema = z.object({
  key: z.string(),
  dueIds: z.array(z.number().gt(0)),
  paymentId: z.string().nullable(),
  mode: z.number().gt(0),
  status: z.number().gt(0),
});

export default transactionsTypes;
