add: progress transaction
This commit is contained in:
		| @@ -1 +0,0 @@ | ||||
| export class CreateTransactionDto {} | ||||
							
								
								
									
										9
									
								
								src/transaction/dto/distribute-transaction.dto.ts
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										9
									
								
								src/transaction/dto/distribute-transaction.dto.ts
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,9 @@ | ||||
| import { IsNotEmpty, IsUUID } from 'class-validator'; | ||||
|  | ||||
| export class DistributeTransactionDto { | ||||
|   @IsNotEmpty() | ||||
|   amount: number; | ||||
|  | ||||
|   @IsNotEmpty() | ||||
|   destination: string; | ||||
| } | ||||
| @@ -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) {} | ||||
|   | ||||
| @@ -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; | ||||
| } | ||||
							
								
								
									
										23
									
								
								src/transaction/entities/transaction-type.entity.ts
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										23
									
								
								src/transaction/entities/transaction-type.entity.ts
									
									
									
									
									
										Normal file
									
								
							| @@ -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; | ||||
| } | ||||
| @@ -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; | ||||
| } | ||||
| @@ -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({ | ||||
|   | ||||
| @@ -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); | ||||
|   } | ||||
|  | ||||
|   | ||||
| @@ -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], | ||||
| }) | ||||
|   | ||||
| @@ -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<Transactions>, | ||||
|     @InjectRepository(TransactionType) | ||||
|     private transactionType: Repository<TransactionType>, | ||||
|     @InjectRepository(TransactionJournal) | ||||
|     private transactionJournal: Repository<TransactionJournal>, | ||||
|     @InjectRepository(User) | ||||
|     private userRepository: Repository<User>, | ||||
|   ) {} | ||||
|  | ||||
|   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() { | ||||
|   | ||||
		Reference in New Issue
	
	Block a user