add more filter in hesabdari controller
This commit is contained in:
parent
9af86b989b
commit
8d91bcd4ea
|
@ -51,12 +51,38 @@ class AccountingDocService
|
|||
]);
|
||||
if (!$person)
|
||||
return ['error' => 'شخص یافت نشد'];
|
||||
$data = $em->getRepository(\App\Entity\HesabdariRow::class)->findBy([
|
||||
'person' => $person,
|
||||
'year' => $acc['year']
|
||||
], [
|
||||
'id' => 'ASC'
|
||||
]);
|
||||
|
||||
// Check if we should include preview documents
|
||||
$includePreview = $params['includePreview'] ?? false;
|
||||
|
||||
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') {
|
||||
$bank = $em->getRepository(\App\Entity\BankAccount::class)->findOneBy([
|
||||
'bid' => $acc['bid'],
|
||||
|
@ -64,12 +90,38 @@ class AccountingDocService
|
|||
]);
|
||||
if (!$bank)
|
||||
return ['error' => 'بانک یافت نشد'];
|
||||
$data = $em->getRepository(\App\Entity\HesabdariRow::class)->findBy([
|
||||
'bank' => $bank,
|
||||
'year' => $acc['year']
|
||||
], [
|
||||
'id' => 'ASC'
|
||||
]);
|
||||
|
||||
// Check if we should include preview documents
|
||||
$includePreview = $params['includePreview'] ?? false;
|
||||
|
||||
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') {
|
||||
$cashdesk = $em->getRepository(\App\Entity\Cashdesk::class)->findOneBy([
|
||||
'bid' => $acc['bid'],
|
||||
|
@ -77,12 +129,38 @@ class AccountingDocService
|
|||
]);
|
||||
if (!$cashdesk)
|
||||
return ['error' => 'صندوق یافت نشد'];
|
||||
$data = $em->getRepository(\App\Entity\HesabdariRow::class)->findBy([
|
||||
'cashdesk' => $cashdesk,
|
||||
'year' => $acc['year']
|
||||
], [
|
||||
'id' => 'ASC'
|
||||
]);
|
||||
|
||||
// Check if we should include preview documents
|
||||
$includePreview = $params['includePreview'] ?? false;
|
||||
|
||||
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') {
|
||||
$salary = $em->getRepository(\App\Entity\Salary::class)->findOneBy([
|
||||
'bid' => $acc['bid'],
|
||||
|
@ -90,12 +168,38 @@ class AccountingDocService
|
|||
]);
|
||||
if (!$salary)
|
||||
return ['error' => 'حقوق یافت نشد'];
|
||||
$data = $em->getRepository(\App\Entity\HesabdariRow::class)->findBy([
|
||||
'salary' => $salary,
|
||||
'year' => $acc['year']
|
||||
], [
|
||||
'id' => 'ASC'
|
||||
]);
|
||||
|
||||
// Check if we should include preview documents
|
||||
$includePreview = $params['includePreview'] ?? false;
|
||||
|
||||
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 {
|
||||
return ['error' => 'نوع پشتیبانی نمیشود'];
|
||||
}
|
||||
|
|
|
@ -52,12 +52,25 @@ class HesabdariController extends AbstractController
|
|||
$acc = $access->hasRole('accounting');
|
||||
if (!$acc)
|
||||
throw $this->createAccessDeniedException();
|
||||
// Check if we should include preview documents
|
||||
$includePreview = $params['includePreview'] ?? false;
|
||||
|
||||
if ($includePreview) {
|
||||
$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)
|
||||
throw $this->createNotFoundException();
|
||||
//add shortlink to doc
|
||||
|
@ -208,6 +221,7 @@ class HesabdariController extends AbstractController
|
|||
// Build base query
|
||||
$queryBuilder = $entityManager->createQueryBuilder()
|
||||
->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')
|
||||
->from('App\Entity\HesabdariDoc', 'd')
|
||||
->leftJoin('d.submitter', 'u')
|
||||
|
@ -220,6 +234,21 @@ class HesabdariController extends AbstractController
|
|||
->setParameter('year', $acc['year'])
|
||||
->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'
|
||||
if ($type !== 'all') {
|
||||
$queryBuilder->andWhere('d.type = :type')
|
||||
|
@ -323,6 +352,8 @@ class HesabdariController extends AbstractController
|
|||
'des' => $doc['des'],
|
||||
'amount' => $doc['amount'],
|
||||
'submitter' => $doc['submitter'],
|
||||
'isPreview' => $doc['isPreview'],
|
||||
'isApproved' => $doc['isApproved'],
|
||||
];
|
||||
|
||||
// Get related person info if applicable
|
||||
|
@ -443,6 +474,21 @@ class HesabdariController extends AbstractController
|
|||
$doc->setSubmitter($this->getUser());
|
||||
$doc->setMoney($acc['money']);
|
||||
$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))
|
||||
$doc->setRefData($params['refData']);
|
||||
if (array_key_exists('plugin', $params))
|
||||
|
|
Loading…
Reference in a new issue