diff --git a/prisma/schema.prisma b/prisma/schema.prisma index 34032ea..809318a 100644 --- a/prisma/schema.prisma +++ b/prisma/schema.prisma @@ -269,7 +269,6 @@ model transactions { user_id String? @db.Uuid status String @db.VarChar(50) amount Decimal @db.Decimal(20, 2) - is_pay Boolean @default(false) c_bpartner_id Decimal? @db.Decimal(10, 0) created_at DateTime? @default(now()) @db.Timestamptz(6) updated_at DateTime? @default(now()) @db.Timestamptz(6) @@ -291,13 +290,14 @@ model transactions { virtualAccountNo String? @db.VarChar(50) partnerReferenceNo String? @db.VarChar(50) bankto_id String? @db.Uuid - external_id String? @db.VarChar(50) beneficiaryAccountName String? @db.VarChar(255) beneficiaryAccountNo String? @db.VarChar(255) method String? @db.VarChar(50) originatorCustomerName String? @db.VarChar(255) originatorCustomerNo String? @db.VarChar(50) sourceAccountNo String? @db.VarChar(255) + external_id String? @db.VarChar(50) + documentno String? @db.VarChar(255) banks banks @relation(fields: [bank_id], references: [bank_id], onDelete: NoAction, onUpdate: NoAction) banks_to banks? @relation("transactions_bankto_idTobanks", fields: [bankto_id], references: [bank_id], onDelete: NoAction, onUpdate: NoAction) database database? @relation(fields: [db_id], references: [db_id], onDelete: NoAction, onUpdate: NoAction) @@ -315,10 +315,11 @@ model transactions_lines { c_invoice_id Decimal? @db.Decimal(10, 0) created_at DateTime? @default(now()) @db.Timestamptz(6) updated_at DateTime? @default(now()) @db.Timestamptz(6) - bank_id String @db.Uuid tenant_id String @db.Uuid line_no Int @default(1) id String @id @default(dbgenerated("gen_random_uuid()")) @db.Uuid + c_payment_id Decimal? @db.Decimal(10, 0) + documentno String? @db.VarChar(255) database database? @relation(fields: [db_id], references: [db_id], onDelete: NoAction, onUpdate: NoAction) transactions transactions @relation(fields: [transaction_id], references: [id], onDelete: NoAction, onUpdate: NoAction) } diff --git a/src/controllers/transferController.ts b/src/controllers/transferController.ts index 6f6e142..686a20f 100644 --- a/src/controllers/transferController.ts +++ b/src/controllers/transferController.ts @@ -104,17 +104,18 @@ export async function MidsuitPayment(req: Request, res: Response) { ) { return res.status(400).json({ error: "invalid bank code" }); } - const bankFrom = await db.bank_code.findFirst({ + const bankFrom = await db.banks.findFirst({ where: { code: String(get(data, "originatorBankCode")) }, }); - const bankTo = await db.bank_code.findFirst({ - where: { code: String(get(data, "beneficiaryBankCode")) }, - }); if (!bankFrom) { return res .status(400) .json({ error: "unsupported originator bank code midsuit" }); } + const bankTo = await db.banks.findFirst({ + where: { code: String(get(data, "beneficiaryBankCode")) }, + }); + console.log(bankTo); if (!bankTo) { return res .status(400) @@ -160,8 +161,31 @@ export async function MidsuitPayment(req: Request, res: Response) { senderCustomerType: get(data, "beneficiaryCustomerType", "2"), }; } + console.log({ + tenant_id: user.tenant_id, + bank_id: get(bankTo, "bank_id") as any, + bankto_id: get(bankFrom, "bank_id") as any, + external_id: external_id, + partnerReferenceNo: partnerReferenceNo, + amount: get(data, "amount"), + description: `Payment for ${get(data, "documentno")}`, + status: "DRAFT", + beneficiaryAccountName: get(data, "beneficiaryAccountName"), + beneficiaryAccountNo: get(data, "beneficiaryAccountNo"), + sourceAccountNo: get(data, "sourceAccountNo"), + originatorCustomerName: get(data, "originatorCustomerName"), + originatorCustomerNo: get(data, "originatorCustomerNo"), + method: isRTKGS + ? "RTGS" + : get(data, "beneficiaryBankCode") !== bankCodeUser + ? "SKN" + : "Inhouse", + }); const transaction = await db.transactions.create({ data: { + db_id: user.db_id, + user_id: user.user_id, + documentno: get(data, "documentno"), tenant_id: user.tenant_id, bank_id: get(bankTo, "bank_id") as any, bankto_id: get(bankFrom, "bank_id") as any, @@ -169,7 +193,6 @@ export async function MidsuitPayment(req: Request, res: Response) { partnerReferenceNo: partnerReferenceNo, amount: get(data, "amount"), description: `Payment for ${get(data, "documentno")}`, - is_pay: false, status: "DRAFT", beneficiaryAccountName: get(data, "beneficiaryAccountName"), beneficiaryAccountNo: get(data, "beneficiaryAccountNo"), @@ -183,6 +206,16 @@ export async function MidsuitPayment(req: Request, res: Response) { : "Inhouse", }, }); + await db.transactions_lines.create({ + data: { + transaction_id: transaction.id, + documentno: get(data, "documentno"), + amount: get(data, "amount"), + description: `Payment for ${get(data, "documentno")}`, + tenant_id: user.tenant_id, + line_no: 1, + }, + }); if (isRTKGS) { // method RTGS const result = await callGate({ diff --git a/src/lib/bank/mandiri/getInvoiceVirtualAccount.ts b/src/lib/bank/mandiri/getInvoiceVirtualAccount.ts index 8cbf404..5eb3e1c 100644 --- a/src/lib/bank/mandiri/getInvoiceVirtualAccount.ts +++ b/src/lib/bank/mandiri/getInvoiceVirtualAccount.ts @@ -71,7 +71,6 @@ export default async function ({ bank_id: user.bank_id, amount: formatMoney(grandtotal._sum.grandtotal, true) || 0, description: `Payment for Virtual Account ${invoiceId}`, - is_pay: false, status: "DRAFT", c_bpartner_id: get(c_bpartner, "c_bpartner_id"), inquiryRequestId: get(data, "inquiryRequestId"), diff --git a/src/lib/bank/mandiri/paymentInvoiceVirtualAccount.ts b/src/lib/bank/mandiri/paymentInvoiceVirtualAccount.ts index d72c256..0ec1258 100644 --- a/src/lib/bank/mandiri/paymentInvoiceVirtualAccount.ts +++ b/src/lib/bank/mandiri/paymentInvoiceVirtualAccount.ts @@ -44,7 +44,6 @@ export default async function ({ bank_id: user.bank_id, amount: invoice.amount as any, description: `Payment for Virtual Account ${invoice.inquiryRequestId}`, - is_pay: false, status: "DRAFT", c_bpartner_id: get(invoice, "c_bpartner_id"), paymentRequestId: get(data, "paymentRequestId"), @@ -74,7 +73,6 @@ export default async function ({ amount: lo.get(item, "grandtotal", 0), c_invoice_id: get(item, "c_invoice_id"), db_id: lo.get(user, "database.db_id"), - bank_id: get(user, "bank_id"), tenant_id: get(user, "tenant_id"), }, })