fix: get tranasction history by user

This commit is contained in:
ilham
2021-12-15 15:17:59 +07:00
parent 53575f36d6
commit 8c5e944cc8
5 changed files with 121 additions and 8 deletions

View File

@@ -123,6 +123,7 @@ export class TransactionService {
const userData = await this.userService.findByUsername(
currentUser.username,
);
if (userData.roles.name != 'Admin') {
throw new HttpException(
{
@@ -289,11 +290,13 @@ export class TransactionService {
let supervisorData = [];
const profit = product_price.mark_up_price - product_price.price;
if (!userData.partner) {
//GET SALES
supervisorData = await this.calculateCommission(
supervisorData,
product_price.mark_up_price - product_price.price,
profit,
userData,
);
}
@@ -339,6 +342,7 @@ export class TransactionService {
transactionData.user = userData.id;
transactionData.status = statusTransaction.SUCCESS;
transactionData.type = typeTransaction.ORDER;
transactionData.product_price = product_price;
await manager.insert(Transactions, transactionData);
await this.accountingTransaction({
@@ -365,9 +369,7 @@ export class TransactionService {
},
{
coa_id: coaExpense.id,
credit: userData.partner
? 0
: product_price.mark_up_price - product_price.price,
credit: userData.partner ? 0 : profit,
},
].concat(supervisorData),
});
@@ -379,8 +381,39 @@ export class TransactionService {
return true;
}
async transactionHistoryByUser(page: number, user: string) {
const baseQuery = this.transactionRepository
.createQueryBuilder('transaction')
.select('transaction.id', 'id')
.addSelect('transaction.created_at', 'created_at')
.where('transaction.user = :id and transaction.type = 1', {
id: user,
})
.leftJoin('transaction.product_price', 'product_price')
.leftJoin('product_price.product', 'product')
.addSelect('product_price.mark_up_price', 'mark_up_price')
.addSelect('product.name', 'name')
.addSelect('product.id', 'product_id');
// .leftJoinAndSelect('transaction.product_price', 'product_price')
// .leftJoinAndSelect('product_price.product', 'product');
const data = await baseQuery
.skip(page * 10)
.take(10)
.getRawMany();
const totalData = await baseQuery.getCount();
return {
data,
count: totalData,
};
}
async calculateCommission(data, totalPrice, userData) {
let supervisorData = [];
const supervisorData = [];
supervisorData.push(
await this.userService.findByUsername(userData.superior.username),
);
@@ -498,17 +531,20 @@ export class TransactionService {
return a.plus(b);
}, new Decimal(0));
let coa = coas.find(
(it) => it.id.toLowerCase() === coaId.toLowerCase(),
);
const coa = coas.find((it) => {
return it.id.toLowerCase() === coaId.toLowerCase();
});
let balance = new Decimal(coa.amount);
if (coa.balanceType == balanceType.DEBIT) {
balance = balance.plus(debitSum.minus(creditSum));
} else if (coa.balanceType == balanceType.CREDIT) {
balance = balance.plus(creditSum.minus(debitSum));
}
const diff = balance.minus(new Decimal(coa.amount));
return createJournalDto.transactionalEntityManager
.createQueryBuilder()
.update(COA)