From b1fa9175766cd41d8f3946a0276c7cbd0f630399 Mon Sep 17 00:00:00 2001 From: ilham Date: Mon, 6 Dec 2021 23:45:57 +0700 Subject: [PATCH] add: progress transaction --- src/app.module.ts | 2 +- src/transaction/dto/create-transaction.dto.ts | 1 - .../dto/distribute-transaction.dto.ts | 9 +++++ src/transaction/dto/update-transaction.dto.ts | 4 +- ...ntity.ts => transaction-journal.entity.ts} | 10 ++++- .../entities/transaction-type.entity.ts | 23 +++++++++++ ...ction.entity.ts => transactions.entity.ts} | 5 +-- src/transaction/ppob_callback.controller.ts | 2 +- src/transaction/transaction.controller.ts | 4 +- src/transaction/transaction.module.ts | 15 ++++++++ src/transaction/transaction.service.ts | 38 +++++++++++++++++-- 11 files changed, 98 insertions(+), 15 deletions(-) delete mode 100644 src/transaction/dto/create-transaction.dto.ts create mode 100644 src/transaction/dto/distribute-transaction.dto.ts rename src/transaction/entities/{transaction_journal.entity.ts => transaction-journal.entity.ts} (65%) create mode 100644 src/transaction/entities/transaction-type.entity.ts rename src/transaction/entities/{transaction.entity.ts => transactions.entity.ts} (81%) diff --git a/src/app.module.ts b/src/app.module.ts index ce2cf6a..a0fd6d6 100644 --- a/src/app.module.ts +++ b/src/app.module.ts @@ -52,7 +52,7 @@ import configuration from './config/configuration'; UsersModule, TransactionModule, ConfigurableModule, - ProductModule, + // ProductModule, ], }) export class AppModule {} diff --git a/src/transaction/dto/create-transaction.dto.ts b/src/transaction/dto/create-transaction.dto.ts deleted file mode 100644 index 6f59387..0000000 --- a/src/transaction/dto/create-transaction.dto.ts +++ /dev/null @@ -1 +0,0 @@ -export class CreateTransactionDto {} diff --git a/src/transaction/dto/distribute-transaction.dto.ts b/src/transaction/dto/distribute-transaction.dto.ts new file mode 100644 index 0000000..7d79186 --- /dev/null +++ b/src/transaction/dto/distribute-transaction.dto.ts @@ -0,0 +1,9 @@ +import { IsNotEmpty, IsUUID } from 'class-validator'; + +export class DistributeTransactionDto { + @IsNotEmpty() + amount: number; + + @IsNotEmpty() + destination: string; +} diff --git a/src/transaction/dto/update-transaction.dto.ts b/src/transaction/dto/update-transaction.dto.ts index bade684..6402c55 100644 --- a/src/transaction/dto/update-transaction.dto.ts +++ b/src/transaction/dto/update-transaction.dto.ts @@ -1,4 +1,4 @@ import { PartialType } from '@nestjs/mapped-types'; -import { CreateTransactionDto } from './create-transaction.dto'; +import { DistributeTransactionDto } from './distribute-transaction.dto'; -export class UpdateTransactionDto extends PartialType(CreateTransactionDto) {} +export class UpdateTransactionDto extends PartialType(DistributeTransactionDto) {} diff --git a/src/transaction/entities/transaction_journal.entity.ts b/src/transaction/entities/transaction-journal.entity.ts similarity index 65% rename from src/transaction/entities/transaction_journal.entity.ts rename to src/transaction/entities/transaction-journal.entity.ts index 1333950..4f99b5c 100644 --- a/src/transaction/entities/transaction_journal.entity.ts +++ b/src/transaction/entities/transaction-journal.entity.ts @@ -5,13 +5,15 @@ import { UpdateDateColumn, DeleteDateColumn, VersionColumn, - CreateDateColumn, ManyToOne, ManyToMany, JoinTable, + CreateDateColumn, ManyToOne, ManyToMany, JoinTable, OneToOne, } from 'typeorm'; import { Product } from '../../product/entities/product.entity'; import { User } from '../../users/entities/user.entity'; import { BaseModel } from '../../config/basemodel.entity'; import { ProductCategories } from '../../product/entities/product-category.entity'; import { COA } from './coa.entity'; +import { Transactions } from './transactions.entity'; +import { TransactionType } from './transaction-type.entity'; enum type { SYSTEM_BANk, @@ -31,6 +33,12 @@ export class TransactionJournal extends BaseModel { @Column() amount: number; + @OneToOne(() => Transactions, (trans) => trans.id) + transaction: Transactions; + @ManyToOne(() => COA, (coa) => coa.id) coa: COA; + + @ManyToOne(() => TransactionType, (transType) => transType.id) + transactionType: TransactionType; } diff --git a/src/transaction/entities/transaction-type.entity.ts b/src/transaction/entities/transaction-type.entity.ts new file mode 100644 index 0000000..3998378 --- /dev/null +++ b/src/transaction/entities/transaction-type.entity.ts @@ -0,0 +1,23 @@ +import { + Entity, + Column, + PrimaryGeneratedColumn, + UpdateDateColumn, + DeleteDateColumn, + VersionColumn, + CreateDateColumn, + ManyToOne, + ManyToMany, + JoinTable, +} from 'typeorm'; +import { Product } from '../../product/entities/product.entity'; +import { User } from '../../users/entities/user.entity'; +import { BaseModel } from '../../config/basemodel.entity'; +import { COA } from './coa.entity'; +import { ProductHistoryPrice } from '../../product/entities/product-history-price.entity'; + +@Entity() +export class TransactionType extends BaseModel { + @Column() + name: string; +} diff --git a/src/transaction/entities/transaction.entity.ts b/src/transaction/entities/transactions.entity.ts similarity index 81% rename from src/transaction/entities/transaction.entity.ts rename to src/transaction/entities/transactions.entity.ts index 4cf5e85..bed1e84 100644 --- a/src/transaction/entities/transaction.entity.ts +++ b/src/transaction/entities/transactions.entity.ts @@ -23,7 +23,7 @@ enum status { } @Entity() -export class Transaction extends BaseModel { +export class Transactions extends BaseModel { @Column() amount: number; @@ -32,7 +32,4 @@ export class Transaction extends BaseModel { @ManyToOne(() => User, (user) => user.id) user: User; - - @ManyToOne(() => ProductHistoryPrice, (productHistory) => productHistory.id) - product: ProductHistoryPrice; } diff --git a/src/transaction/ppob_callback.controller.ts b/src/transaction/ppob_callback.controller.ts index a6cd453..0044656 100644 --- a/src/transaction/ppob_callback.controller.ts +++ b/src/transaction/ppob_callback.controller.ts @@ -11,7 +11,7 @@ import { Req, } from '@nestjs/common'; import { TransactionService } from './transaction.service'; -import { CreateTransactionDto } from './dto/create-transaction.dto'; +import { DistributeTransactionDto } from './dto/distribute-transaction.dto'; import { FastifyRequest } from 'fastify'; @Controller({ diff --git a/src/transaction/transaction.controller.ts b/src/transaction/transaction.controller.ts index bf71aab..2b95bf8 100644 --- a/src/transaction/transaction.controller.ts +++ b/src/transaction/transaction.controller.ts @@ -8,7 +8,7 @@ import { Delete, } from '@nestjs/common'; import { TransactionService } from './transaction.service'; -import { CreateTransactionDto } from './dto/create-transaction.dto'; +import { DistributeTransactionDto } from './dto/distribute-transaction.dto'; import { UpdateTransactionDto } from './dto/update-transaction.dto'; @Controller({ @@ -19,7 +19,7 @@ export class TransactionController { constructor(private readonly transactionService: TransactionService) {} @Post() - create(@Body() createTransactionDto: CreateTransactionDto) { + create(@Body() createTransactionDto: DistributeTransactionDto) { return this.transactionService.create(createTransactionDto); } diff --git a/src/transaction/transaction.module.ts b/src/transaction/transaction.module.ts index 7a8e1e8..329489d 100644 --- a/src/transaction/transaction.module.ts +++ b/src/transaction/transaction.module.ts @@ -2,8 +2,23 @@ import { Module } from '@nestjs/common'; import { TransactionService } from './transaction.service'; import { TransactionController } from './transaction.controller'; import { PpobCallbackController } from './ppob_callback.controller'; +import { TypeOrmModule } from '@nestjs/typeorm'; +import { COA } from './entities/coa.entity'; +import { CoaType } from './entities/coa-type.entity'; +import { TransactionType } from './entities/transaction-type.entity'; +import { TransactionJournal } from './entities/transaction-journal.entity'; +import { Transaction } from './entities/transactions.entity'; @Module({ + imports: [ + TypeOrmModule.forFeature([ + CoaType, + TransactionType, + COA, + TransactionJournal, + Transaction, + ]), + ], controllers: [TransactionController, PpobCallbackController], providers: [TransactionService], }) diff --git a/src/transaction/transaction.service.ts b/src/transaction/transaction.service.ts index 0f49e43..917851b 100644 --- a/src/transaction/transaction.service.ts +++ b/src/transaction/transaction.service.ts @@ -1,11 +1,43 @@ import { Injectable } from '@nestjs/common'; -import { CreateTransactionDto } from './dto/create-transaction.dto'; +import { DistributeTransactionDto } from './dto/distribute-transaction.dto'; import { UpdateTransactionDto } from './dto/update-transaction.dto'; +import { InjectRepository } from '@nestjs/typeorm'; +import { Transactions } from './entities/transactions.entity'; +import { Repository } from 'typeorm'; +import { User } from '../users/entities/user.entity'; +import { TransactionType } from './entities/transaction-type.entity'; +import { TransactionJournal } from './entities/transaction-journal.entity'; @Injectable() export class TransactionService { - create(createTransactionDto: CreateTransactionDto) { - return 'This action adds a new transaction'; + constructor( + @InjectRepository(Transactions) + private transactionRepository: Repository, + @InjectRepository(TransactionType) + private transactionType: Repository, + @InjectRepository(TransactionJournal) + private transactionJournal: Repository, + @InjectRepository(User) + private userRepository: Repository, + ) {} + + async create(distributeTransactionDto: DistributeTransactionDto) { + // GET USER + // GET COA + // GET TYPE TRANSAKSI + + //ADD USER IN INSERT + const transactionSaved = await this.transactionRepository.insert({ + amount: distributeTransactionDto.amount, + }); + + //INSERT TRANSACTION JOURNAL + await this.transactionJournal.insert({ + amount: distributeTransactionDto.amount, + transaction: transactionSaved.identifiers[0], + }); + + return true; } findAll() {