add more filter in hesabdari controller
This commit is contained in:
parent
9af86b989b
commit
8d91bcd4ea
|
@ -51,12 +51,38 @@ class AccountingDocService
|
||||||
]);
|
]);
|
||||||
if (!$person)
|
if (!$person)
|
||||||
return ['error' => 'شخص یافت نشد'];
|
return ['error' => 'شخص یافت نشد'];
|
||||||
$data = $em->getRepository(\App\Entity\HesabdariRow::class)->findBy([
|
|
||||||
'person' => $person,
|
// Check if we should include preview documents
|
||||||
'year' => $acc['year']
|
$includePreview = $params['includePreview'] ?? false;
|
||||||
], [
|
|
||||||
'id' => 'ASC'
|
if ($includePreview) {
|
||||||
]);
|
$data = $em->getRepository(\App\Entity\HesabdariRow::class)->createQueryBuilder('r')
|
||||||
|
->join('r.doc', 'd')
|
||||||
|
->where('r.person = :person')
|
||||||
|
->andWhere('r.year = :year')
|
||||||
|
->andWhere('d.bid = :bid')
|
||||||
|
->setParameter('person', $person)
|
||||||
|
->setParameter('year', $acc['year'])
|
||||||
|
->setParameter('bid', $acc['bid'])
|
||||||
|
->orderBy('r.id', 'ASC')
|
||||||
|
->getQuery()
|
||||||
|
->getResult();
|
||||||
|
} else {
|
||||||
|
// Default: only approved documents
|
||||||
|
$data = $em->getRepository(\App\Entity\HesabdariRow::class)->createQueryBuilder('r')
|
||||||
|
->join('r.doc', 'd')
|
||||||
|
->where('r.person = :person')
|
||||||
|
->andWhere('r.year = :year')
|
||||||
|
->andWhere('d.bid = :bid')
|
||||||
|
->andWhere('d.isApproved = :isApproved')
|
||||||
|
->setParameter('person', $person)
|
||||||
|
->setParameter('year', $acc['year'])
|
||||||
|
->setParameter('bid', $acc['bid'])
|
||||||
|
->setParameter('isApproved', true)
|
||||||
|
->orderBy('r.id', 'ASC')
|
||||||
|
->getQuery()
|
||||||
|
->getResult();
|
||||||
|
}
|
||||||
} elseif ($params['type'] == 'bank') {
|
} elseif ($params['type'] == 'bank') {
|
||||||
$bank = $em->getRepository(\App\Entity\BankAccount::class)->findOneBy([
|
$bank = $em->getRepository(\App\Entity\BankAccount::class)->findOneBy([
|
||||||
'bid' => $acc['bid'],
|
'bid' => $acc['bid'],
|
||||||
|
@ -64,12 +90,38 @@ class AccountingDocService
|
||||||
]);
|
]);
|
||||||
if (!$bank)
|
if (!$bank)
|
||||||
return ['error' => 'بانک یافت نشد'];
|
return ['error' => 'بانک یافت نشد'];
|
||||||
$data = $em->getRepository(\App\Entity\HesabdariRow::class)->findBy([
|
|
||||||
'bank' => $bank,
|
// Check if we should include preview documents
|
||||||
'year' => $acc['year']
|
$includePreview = $params['includePreview'] ?? false;
|
||||||
], [
|
|
||||||
'id' => 'ASC'
|
if ($includePreview) {
|
||||||
]);
|
$data = $em->getRepository(\App\Entity\HesabdariRow::class)->createQueryBuilder('r')
|
||||||
|
->join('r.doc', 'd')
|
||||||
|
->where('r.bank = :bank')
|
||||||
|
->andWhere('r.year = :year')
|
||||||
|
->andWhere('d.bid = :bid')
|
||||||
|
->setParameter('bank', $bank)
|
||||||
|
->setParameter('year', $acc['year'])
|
||||||
|
->setParameter('bid', $acc['bid'])
|
||||||
|
->orderBy('r.id', 'ASC')
|
||||||
|
->getQuery()
|
||||||
|
->getResult();
|
||||||
|
} else {
|
||||||
|
// Default: only approved documents
|
||||||
|
$data = $em->getRepository(\App\Entity\HesabdariRow::class)->createQueryBuilder('r')
|
||||||
|
->join('r.doc', 'd')
|
||||||
|
->where('r.bank = :bank')
|
||||||
|
->andWhere('r.year = :year')
|
||||||
|
->andWhere('d.bid = :bid')
|
||||||
|
->andWhere('d.isApproved = :isApproved')
|
||||||
|
->setParameter('bank', $bank)
|
||||||
|
->setParameter('year', $acc['year'])
|
||||||
|
->setParameter('bid', $acc['bid'])
|
||||||
|
->setParameter('isApproved', true)
|
||||||
|
->orderBy('r.id', 'ASC')
|
||||||
|
->getQuery()
|
||||||
|
->getResult();
|
||||||
|
}
|
||||||
} elseif ($params['type'] == 'cashdesk') {
|
} elseif ($params['type'] == 'cashdesk') {
|
||||||
$cashdesk = $em->getRepository(\App\Entity\Cashdesk::class)->findOneBy([
|
$cashdesk = $em->getRepository(\App\Entity\Cashdesk::class)->findOneBy([
|
||||||
'bid' => $acc['bid'],
|
'bid' => $acc['bid'],
|
||||||
|
@ -77,12 +129,38 @@ class AccountingDocService
|
||||||
]);
|
]);
|
||||||
if (!$cashdesk)
|
if (!$cashdesk)
|
||||||
return ['error' => 'صندوق یافت نشد'];
|
return ['error' => 'صندوق یافت نشد'];
|
||||||
$data = $em->getRepository(\App\Entity\HesabdariRow::class)->findBy([
|
|
||||||
'cashdesk' => $cashdesk,
|
// Check if we should include preview documents
|
||||||
'year' => $acc['year']
|
$includePreview = $params['includePreview'] ?? false;
|
||||||
], [
|
|
||||||
'id' => 'ASC'
|
if ($includePreview) {
|
||||||
]);
|
$data = $em->getRepository(\App\Entity\HesabdariRow::class)->createQueryBuilder('r')
|
||||||
|
->join('r.doc', 'd')
|
||||||
|
->where('r.cashdesk = :cashdesk')
|
||||||
|
->andWhere('r.year = :year')
|
||||||
|
->andWhere('d.bid = :bid')
|
||||||
|
->setParameter('cashdesk', $cashdesk)
|
||||||
|
->setParameter('year', $acc['year'])
|
||||||
|
->setParameter('bid', $acc['bid'])
|
||||||
|
->orderBy('r.id', 'ASC')
|
||||||
|
->getQuery()
|
||||||
|
->getResult();
|
||||||
|
} else {
|
||||||
|
// Default: only approved documents
|
||||||
|
$data = $em->getRepository(\App\Entity\HesabdariRow::class)->createQueryBuilder('r')
|
||||||
|
->join('r.doc', 'd')
|
||||||
|
->where('r.cashdesk = :cashdesk')
|
||||||
|
->andWhere('r.year = :year')
|
||||||
|
->andWhere('d.bid = :bid')
|
||||||
|
->andWhere('d.isApproved = :isApproved')
|
||||||
|
->setParameter('cashdesk', $cashdesk)
|
||||||
|
->setParameter('year', $acc['year'])
|
||||||
|
->setParameter('bid', $acc['bid'])
|
||||||
|
->setParameter('isApproved', true)
|
||||||
|
->orderBy('r.id', 'ASC')
|
||||||
|
->getQuery()
|
||||||
|
->getResult();
|
||||||
|
}
|
||||||
} elseif ($params['type'] == 'salary') {
|
} elseif ($params['type'] == 'salary') {
|
||||||
$salary = $em->getRepository(\App\Entity\Salary::class)->findOneBy([
|
$salary = $em->getRepository(\App\Entity\Salary::class)->findOneBy([
|
||||||
'bid' => $acc['bid'],
|
'bid' => $acc['bid'],
|
||||||
|
@ -90,12 +168,38 @@ class AccountingDocService
|
||||||
]);
|
]);
|
||||||
if (!$salary)
|
if (!$salary)
|
||||||
return ['error' => 'حقوق یافت نشد'];
|
return ['error' => 'حقوق یافت نشد'];
|
||||||
$data = $em->getRepository(\App\Entity\HesabdariRow::class)->findBy([
|
|
||||||
'salary' => $salary,
|
// Check if we should include preview documents
|
||||||
'year' => $acc['year']
|
$includePreview = $params['includePreview'] ?? false;
|
||||||
], [
|
|
||||||
'id' => 'ASC'
|
if ($includePreview) {
|
||||||
]);
|
$data = $em->getRepository(\App\Entity\HesabdariRow::class)->createQueryBuilder('r')
|
||||||
|
->join('r.doc', 'd')
|
||||||
|
->where('r.salary = :salary')
|
||||||
|
->andWhere('r.year = :year')
|
||||||
|
->andWhere('d.bid = :bid')
|
||||||
|
->setParameter('salary', $salary)
|
||||||
|
->setParameter('year', $acc['year'])
|
||||||
|
->setParameter('bid', $acc['bid'])
|
||||||
|
->orderBy('r.id', 'ASC')
|
||||||
|
->getQuery()
|
||||||
|
->getResult();
|
||||||
|
} else {
|
||||||
|
// Default: only approved documents
|
||||||
|
$data = $em->getRepository(\App\Entity\HesabdariRow::class)->createQueryBuilder('r')
|
||||||
|
->join('r.doc', 'd')
|
||||||
|
->where('r.salary = :salary')
|
||||||
|
->andWhere('r.year = :year')
|
||||||
|
->andWhere('d.bid = :bid')
|
||||||
|
->andWhere('d.isApproved = :isApproved')
|
||||||
|
->setParameter('salary', $salary)
|
||||||
|
->setParameter('year', $acc['year'])
|
||||||
|
->setParameter('bid', $acc['bid'])
|
||||||
|
->setParameter('isApproved', true)
|
||||||
|
->orderBy('r.id', 'ASC')
|
||||||
|
->getQuery()
|
||||||
|
->getResult();
|
||||||
|
}
|
||||||
} else {
|
} else {
|
||||||
return ['error' => 'نوع پشتیبانی نمیشود'];
|
return ['error' => 'نوع پشتیبانی نمیشود'];
|
||||||
}
|
}
|
||||||
|
|
|
@ -52,12 +52,25 @@ class HesabdariController extends AbstractController
|
||||||
$acc = $access->hasRole('accounting');
|
$acc = $access->hasRole('accounting');
|
||||||
if (!$acc)
|
if (!$acc)
|
||||||
throw $this->createAccessDeniedException();
|
throw $this->createAccessDeniedException();
|
||||||
$doc = $entityManager->getRepository(HesabdariDoc::class)->findOneBy([
|
// Check if we should include preview documents
|
||||||
'bid' => $acc['bid'],
|
$includePreview = $params['includePreview'] ?? false;
|
||||||
'year' => $acc['year'],
|
|
||||||
'code' => $params['code'],
|
if ($includePreview) {
|
||||||
'money' => $acc['money']
|
$doc = $entityManager->getRepository(HesabdariDoc::class)->findOneByIncludePreview([
|
||||||
]);
|
'bid' => $acc['bid'],
|
||||||
|
'year' => $acc['year'],
|
||||||
|
'code' => $params['code'],
|
||||||
|
'money' => $acc['money']
|
||||||
|
]);
|
||||||
|
} else {
|
||||||
|
// Default: only approved documents
|
||||||
|
$doc = $entityManager->getRepository(HesabdariDoc::class)->findOneBy([
|
||||||
|
'bid' => $acc['bid'],
|
||||||
|
'year' => $acc['year'],
|
||||||
|
'code' => $params['code'],
|
||||||
|
'money' => $acc['money']
|
||||||
|
]);
|
||||||
|
}
|
||||||
if (!$doc)
|
if (!$doc)
|
||||||
throw $this->createNotFoundException();
|
throw $this->createNotFoundException();
|
||||||
//add shortlink to doc
|
//add shortlink to doc
|
||||||
|
@ -208,6 +221,7 @@ class HesabdariController extends AbstractController
|
||||||
// Build base query
|
// Build base query
|
||||||
$queryBuilder = $entityManager->createQueryBuilder()
|
$queryBuilder = $entityManager->createQueryBuilder()
|
||||||
->select('DISTINCT d.id, d.dateSubmit, d.date, d.type, d.code, d.des, d.amount')
|
->select('DISTINCT d.id, d.dateSubmit, d.date, d.type, d.code, d.des, d.amount')
|
||||||
|
->addSelect('d.isPreview, d.isApproved')
|
||||||
->addSelect('u.fullName as submitter')
|
->addSelect('u.fullName as submitter')
|
||||||
->from('App\Entity\HesabdariDoc', 'd')
|
->from('App\Entity\HesabdariDoc', 'd')
|
||||||
->leftJoin('d.submitter', 'u')
|
->leftJoin('d.submitter', 'u')
|
||||||
|
@ -220,6 +234,21 @@ class HesabdariController extends AbstractController
|
||||||
->setParameter('year', $acc['year'])
|
->setParameter('year', $acc['year'])
|
||||||
->setParameter('money', $acc['money']);
|
->setParameter('money', $acc['money']);
|
||||||
|
|
||||||
|
// Apply approval filters - if not specified, only show approved documents
|
||||||
|
if (isset($filters['isApproved'])) {
|
||||||
|
$queryBuilder->andWhere('d.isApproved = :isApproved')
|
||||||
|
->setParameter('isApproved', $filters['isApproved']);
|
||||||
|
} else {
|
||||||
|
// Default: only show approved documents
|
||||||
|
$queryBuilder->andWhere('d.isApproved = :isApproved')
|
||||||
|
->setParameter('isApproved', true);
|
||||||
|
}
|
||||||
|
|
||||||
|
if (isset($filters['isPreview'])) {
|
||||||
|
$queryBuilder->andWhere('d.isPreview = :isPreview')
|
||||||
|
->setParameter('isPreview', $filters['isPreview']);
|
||||||
|
}
|
||||||
|
|
||||||
// Add type filter if not 'all'
|
// Add type filter if not 'all'
|
||||||
if ($type !== 'all') {
|
if ($type !== 'all') {
|
||||||
$queryBuilder->andWhere('d.type = :type')
|
$queryBuilder->andWhere('d.type = :type')
|
||||||
|
@ -323,6 +352,8 @@ class HesabdariController extends AbstractController
|
||||||
'des' => $doc['des'],
|
'des' => $doc['des'],
|
||||||
'amount' => $doc['amount'],
|
'amount' => $doc['amount'],
|
||||||
'submitter' => $doc['submitter'],
|
'submitter' => $doc['submitter'],
|
||||||
|
'isPreview' => $doc['isPreview'],
|
||||||
|
'isApproved' => $doc['isApproved'],
|
||||||
];
|
];
|
||||||
|
|
||||||
// Get related person info if applicable
|
// Get related person info if applicable
|
||||||
|
@ -443,6 +474,21 @@ class HesabdariController extends AbstractController
|
||||||
$doc->setSubmitter($this->getUser());
|
$doc->setSubmitter($this->getUser());
|
||||||
$doc->setMoney($acc['money']);
|
$doc->setMoney($acc['money']);
|
||||||
$doc->setCode($provider->getAccountingCode($acc['bid'], 'accounting'));
|
$doc->setCode($provider->getAccountingCode($acc['bid'], 'accounting'));
|
||||||
|
|
||||||
|
// Set approval status based on business settings
|
||||||
|
$business = $acc['bid'];
|
||||||
|
if ($business->getTwoStepApproval()) {
|
||||||
|
// Two-step approval is enabled
|
||||||
|
$doc->setIsPreview(true);
|
||||||
|
$doc->setIsApproved(false);
|
||||||
|
$doc->setApprovedBy(null);
|
||||||
|
} else {
|
||||||
|
// Two-step approval is disabled - auto approve
|
||||||
|
$doc->setIsPreview(false);
|
||||||
|
$doc->setIsApproved(true);
|
||||||
|
$doc->setApprovedBy($this->getUser());
|
||||||
|
}
|
||||||
|
|
||||||
if (array_key_exists('refData', $params))
|
if (array_key_exists('refData', $params))
|
||||||
$doc->setRefData($params['refData']);
|
$doc->setRefData($params['refData']);
|
||||||
if (array_key_exists('plugin', $params))
|
if (array_key_exists('plugin', $params))
|
||||||
|
|
Loading…
Reference in a new issue