fix: get tranasction history by user
This commit is contained in:
@@ -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)
|
||||
|
||||
Reference in New Issue
Block a user