add: progress transaction

This commit is contained in:
ilham 2021-12-06 23:45:57 +07:00
parent 77db83490f
commit b1fa917576
11 changed files with 98 additions and 15 deletions

View File

@ -52,7 +52,7 @@ import configuration from './config/configuration';
UsersModule,
TransactionModule,
ConfigurableModule,
ProductModule,
// ProductModule,
],
})
export class AppModule {}

View File

@ -1 +0,0 @@
export class CreateTransactionDto {}

View File

@ -0,0 +1,9 @@
import { IsNotEmpty, IsUUID } from 'class-validator';
export class DistributeTransactionDto {
@IsNotEmpty()
amount: number;
@IsNotEmpty()
destination: string;
}

View File

@ -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) {}

View File

@ -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;
}

View 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;
}

View File

@ -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;
}

View File

@ -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({

View File

@ -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);
}

View File

@ -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],
})

View File

@ -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() {