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, UsersModule,
TransactionModule, TransactionModule,
ConfigurableModule, ConfigurableModule,
ProductModule, // ProductModule,
], ],
}) })
export class AppModule {} 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 { 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, UpdateDateColumn,
DeleteDateColumn, DeleteDateColumn,
VersionColumn, VersionColumn,
CreateDateColumn, ManyToOne, ManyToMany, JoinTable, CreateDateColumn, ManyToOne, ManyToMany, JoinTable, OneToOne,
} from 'typeorm'; } from 'typeorm';
import { Product } from '../../product/entities/product.entity'; import { Product } from '../../product/entities/product.entity';
import { User } from '../../users/entities/user.entity'; import { User } from '../../users/entities/user.entity';
import { BaseModel } from '../../config/basemodel.entity'; import { BaseModel } from '../../config/basemodel.entity';
import { ProductCategories } from '../../product/entities/product-category.entity'; import { ProductCategories } from '../../product/entities/product-category.entity';
import { COA } from './coa.entity'; import { COA } from './coa.entity';
import { Transactions } from './transactions.entity';
import { TransactionType } from './transaction-type.entity';
enum type { enum type {
SYSTEM_BANk, SYSTEM_BANk,
@ -31,6 +33,12 @@ export class TransactionJournal extends BaseModel {
@Column() @Column()
amount: number; amount: number;
@OneToOne(() => Transactions, (trans) => trans.id)
transaction: Transactions;
@ManyToOne(() => COA, (coa) => coa.id) @ManyToOne(() => COA, (coa) => coa.id)
coa: COA; 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() @Entity()
export class Transaction extends BaseModel { export class Transactions extends BaseModel {
@Column() @Column()
amount: number; amount: number;
@ -32,7 +32,4 @@ export class Transaction extends BaseModel {
@ManyToOne(() => User, (user) => user.id) @ManyToOne(() => User, (user) => user.id)
user: User; user: User;
@ManyToOne(() => ProductHistoryPrice, (productHistory) => productHistory.id)
product: ProductHistoryPrice;
} }

View File

@ -11,7 +11,7 @@ import {
Req, Req,
} from '@nestjs/common'; } from '@nestjs/common';
import { TransactionService } from './transaction.service'; import { TransactionService } from './transaction.service';
import { CreateTransactionDto } from './dto/create-transaction.dto'; import { DistributeTransactionDto } from './dto/distribute-transaction.dto';
import { FastifyRequest } from 'fastify'; import { FastifyRequest } from 'fastify';
@Controller({ @Controller({

View File

@ -8,7 +8,7 @@ import {
Delete, Delete,
} from '@nestjs/common'; } from '@nestjs/common';
import { TransactionService } from './transaction.service'; 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'; import { UpdateTransactionDto } from './dto/update-transaction.dto';
@Controller({ @Controller({
@ -19,7 +19,7 @@ export class TransactionController {
constructor(private readonly transactionService: TransactionService) {} constructor(private readonly transactionService: TransactionService) {}
@Post() @Post()
create(@Body() createTransactionDto: CreateTransactionDto) { create(@Body() createTransactionDto: DistributeTransactionDto) {
return this.transactionService.create(createTransactionDto); return this.transactionService.create(createTransactionDto);
} }

View File

@ -2,8 +2,23 @@ import { Module } from '@nestjs/common';
import { TransactionService } from './transaction.service'; import { TransactionService } from './transaction.service';
import { TransactionController } from './transaction.controller'; import { TransactionController } from './transaction.controller';
import { PpobCallbackController } from './ppob_callback.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({ @Module({
imports: [
TypeOrmModule.forFeature([
CoaType,
TransactionType,
COA,
TransactionJournal,
Transaction,
]),
],
controllers: [TransactionController, PpobCallbackController], controllers: [TransactionController, PpobCallbackController],
providers: [TransactionService], providers: [TransactionService],
}) })

View File

@ -1,11 +1,43 @@
import { Injectable } from '@nestjs/common'; 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 { 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() @Injectable()
export class TransactionService { export class TransactionService {
create(createTransactionDto: CreateTransactionDto) { constructor(
return 'This action adds a new transaction'; @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() { findAll() {