Merge branch 'master' of https://source.hesabix.ir/morrning/hesabixCore
This commit is contained in:
commit
da074d2e89
|
@ -47,9 +47,17 @@ class BankController extends AbstractController
|
|||
foreach ($datas as $data) {
|
||||
$bs = 0;
|
||||
$bd = 0;
|
||||
$items = $entityManager->getRepository(HesabdariRow::class)->findBy([
|
||||
'bank' => $data
|
||||
]);
|
||||
// Use query builder to filter by approved documents
|
||||
$items = $entityManager->createQueryBuilder()
|
||||
->select('r')
|
||||
->from(HesabdariRow::class, 'r')
|
||||
->join('r.doc', 'd')
|
||||
->where('r.bank = :bank')
|
||||
->andWhere('d.isApproved = :isApproved')
|
||||
->setParameter('bank', $data)
|
||||
->setParameter('isApproved', true)
|
||||
->getQuery()
|
||||
->getResult();
|
||||
foreach ($items as $item) {
|
||||
$bs += $item->getBs();
|
||||
$bd += $item->getBd();
|
||||
|
@ -95,9 +103,17 @@ class BankController extends AbstractController
|
|||
foreach ($datas as $data) {
|
||||
$bs = 0;
|
||||
$bd = 0;
|
||||
$items = $entityManager->getRepository(HesabdariRow::class)->findBy([
|
||||
'bank' => $data
|
||||
]);
|
||||
// Use query builder to filter by approved documents
|
||||
$items = $entityManager->createQueryBuilder()
|
||||
->select('r')
|
||||
->from(HesabdariRow::class, 'r')
|
||||
->join('r.doc', 'd')
|
||||
->where('r.bank = :bank')
|
||||
->andWhere('d.isApproved = :isApproved')
|
||||
->setParameter('bank', $data)
|
||||
->setParameter('isApproved', true)
|
||||
->getQuery()
|
||||
->getResult();
|
||||
foreach ($items as $item) {
|
||||
$bs += $item->getBs();
|
||||
$bd += $item->getBd();
|
||||
|
@ -212,8 +228,17 @@ class BankController extends AbstractController
|
|||
$bank = $entityManager->getRepository(BankAccount::class)->findOneBy(['bid' => $acc['bid'], 'code' => $code]);
|
||||
if (!$bank)
|
||||
throw $this->createNotFoundException();
|
||||
//check accounting docs
|
||||
$rows = $entityManager->getRepository(HesabdariRow::class)->findby(['bid' => $acc['bid'], 'bank' => $bank]);
|
||||
//check accounting docs - include both approved and preview documents for deletion check
|
||||
$rows = $entityManager->createQueryBuilder()
|
||||
->select('r')
|
||||
->from(HesabdariRow::class, 'r')
|
||||
->join('r.doc', 'd')
|
||||
->where('r.bid = :bid')
|
||||
->andWhere('r.bank = :bank')
|
||||
->setParameter('bid', $acc['bid'])
|
||||
->setParameter('bank', $bank)
|
||||
->getQuery()
|
||||
->getResult();
|
||||
if (count($rows) > 0)
|
||||
return $this->json(['result' => 2]);
|
||||
if ($acc['bid']->getWalletMatchBank()) {
|
||||
|
@ -245,9 +270,17 @@ class BankController extends AbstractController
|
|||
|
||||
$bs = 0;
|
||||
$bd = 0;
|
||||
$items = $entityManager->getRepository(HesabdariRow::class)->findBy([
|
||||
'bank' => $bank
|
||||
]);
|
||||
// Use query builder to filter by approved documents
|
||||
$items = $entityManager->createQueryBuilder()
|
||||
->select('r')
|
||||
->from(HesabdariRow::class, 'r')
|
||||
->join('r.doc', 'd')
|
||||
->where('r.bank = :bank')
|
||||
->andWhere('d.isApproved = :isApproved')
|
||||
->setParameter('bank', $bank)
|
||||
->setParameter('isApproved', true)
|
||||
->getQuery()
|
||||
->getResult();
|
||||
|
||||
foreach ($items as $item) {
|
||||
$bs += $item->getBs();
|
||||
|
@ -285,11 +318,20 @@ class BankController extends AbstractController
|
|||
$query = $entityManager->createQueryBuilder()
|
||||
->select('r')
|
||||
->from(HesabdariRow::class, 'r')
|
||||
->join('r.doc', 'd')
|
||||
->where('r.bank = :bank')
|
||||
->andWhere('r.bid = :bid')
|
||||
->setParameter('bank', $bank)
|
||||
->setParameter('bid', $acc['bid']);
|
||||
|
||||
// Check if includePreview parameter is provided
|
||||
$includePreview = $params['includePreview'] ?? false;
|
||||
if (!$includePreview) {
|
||||
// Default: only show approved documents
|
||||
$query->andWhere('d.isApproved = :isApproved')
|
||||
->setParameter('isApproved', true);
|
||||
}
|
||||
|
||||
if (isset($params['startDate']) && isset($params['endDate'])) {
|
||||
$query->andWhere('r.doc.date BETWEEN :startDate AND :endDate')
|
||||
->setParameter('startDate', $params['startDate'])
|
||||
|
@ -327,12 +369,29 @@ class BankController extends AbstractController
|
|||
$bank = $entityManager->getRepository(BankAccount::class)->findOneBy(['bid' => $acc['bid'], 'code' => $params['code']]);
|
||||
if (!$bank)
|
||||
throw $this->createNotFoundException();
|
||||
|
||||
// Check if includePreview parameter is provided
|
||||
$includePreview = $params['includePreview'] ?? false;
|
||||
|
||||
if (!array_key_exists('items', $params)) {
|
||||
$transactions = $entityManager->getRepository(HesabdariRow::class)->findBy([
|
||||
'bid' => $acc['bid'],
|
||||
'bank' => $bank,
|
||||
'year'=>$acc['year']
|
||||
]);
|
||||
$query = $entityManager->createQueryBuilder()
|
||||
->select('r')
|
||||
->from(HesabdariRow::class, 'r')
|
||||
->join('r.doc', 'd')
|
||||
->where('r.bid = :bid')
|
||||
->andWhere('r.bank = :bank')
|
||||
->andWhere('r.year = :year')
|
||||
->setParameter('bid', $acc['bid'])
|
||||
->setParameter('bank', $bank)
|
||||
->setParameter('year', $acc['year']);
|
||||
|
||||
if (!$includePreview) {
|
||||
// Default: only show approved documents
|
||||
$query->andWhere('d.isApproved = :isApproved')
|
||||
->setParameter('isApproved', true);
|
||||
}
|
||||
|
||||
$transactions = $query->getQuery()->getResult();
|
||||
} else {
|
||||
$transactions = [];
|
||||
foreach ($params['items'] as $param) {
|
||||
|
@ -343,7 +402,10 @@ class BankController extends AbstractController
|
|||
'year' => $acc['year']
|
||||
]);
|
||||
if ($prs) {
|
||||
$transactions[] = $prs;
|
||||
// Check if the document is approved (unless includePreview is true)
|
||||
if ($includePreview || $prs->getDoc()->isApproved()) {
|
||||
$transactions[] = $prs;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
@ -397,12 +459,28 @@ class BankController extends AbstractController
|
|||
if (!$bank)
|
||||
throw $this->createNotFoundException();
|
||||
|
||||
// Check if includePreview parameter is provided
|
||||
$includePreview = $params['includePreview'] ?? false;
|
||||
|
||||
if (!array_key_exists('items', $params)) {
|
||||
$transactions = $entityManager->getRepository(HesabdariRow::class)->findBy([
|
||||
'bid' => $acc['bid'],
|
||||
'bank' => $bank,
|
||||
'year'=>$acc['year']
|
||||
]);
|
||||
$query = $entityManager->createQueryBuilder()
|
||||
->select('r')
|
||||
->from(HesabdariRow::class, 'r')
|
||||
->join('r.doc', 'd')
|
||||
->where('r.bid = :bid')
|
||||
->andWhere('r.bank = :bank')
|
||||
->andWhere('r.year = :year')
|
||||
->setParameter('bid', $acc['bid'])
|
||||
->setParameter('bank', $bank)
|
||||
->setParameter('year', $acc['year']);
|
||||
|
||||
if (!$includePreview) {
|
||||
// Default: only show approved documents
|
||||
$query->andWhere('d.isApproved = :isApproved')
|
||||
->setParameter('isApproved', true);
|
||||
}
|
||||
|
||||
$transactions = $query->getQuery()->getResult();
|
||||
} else {
|
||||
$transactions = [];
|
||||
foreach ($params['items'] as $param) {
|
||||
|
@ -413,7 +491,10 @@ class BankController extends AbstractController
|
|||
'year'=>$acc['year']
|
||||
]);
|
||||
if ($prs) {
|
||||
$transactions[] = $prs;
|
||||
// Check if the document is approved (unless includePreview is true)
|
||||
if ($includePreview || $prs->getDoc()->isApproved()) {
|
||||
$transactions[] = $prs;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
|
@ -49,9 +49,17 @@ class CashdeskController extends AbstractController
|
|||
foreach ($datas as $data) {
|
||||
$bs = 0;
|
||||
$bd = 0;
|
||||
$items = $entityManager->getRepository(HesabdariRow::class)->findBy([
|
||||
'cashdesk' => $data
|
||||
]);
|
||||
// Use query builder to filter by approved documents
|
||||
$items = $entityManager->createQueryBuilder()
|
||||
->select('r')
|
||||
->from(HesabdariRow::class, 'r')
|
||||
->join('r.doc', 'd')
|
||||
->where('r.cashdesk = :cashdesk')
|
||||
->andWhere('d.isApproved = :isApproved')
|
||||
->setParameter('cashdesk', $data)
|
||||
->setParameter('isApproved', true)
|
||||
->getQuery()
|
||||
->getResult();
|
||||
foreach ($items as $item) {
|
||||
$bs += $item->getBs();
|
||||
$bd += $item->getBd();
|
||||
|
@ -131,8 +139,17 @@ class CashdeskController extends AbstractController
|
|||
$cashdesk = $entityManager->getRepository(Cashdesk::class)->findOneBy(['bid' => $acc['bid'], 'code' => $code]);
|
||||
if (!$cashdesk)
|
||||
throw $this->createNotFoundException();
|
||||
//check accounting docs
|
||||
$rows = $entityManager->getRepository(HesabdariRow::class)->findby(['bid' => $acc['bid'], 'cashdesk' => $cashdesk]);
|
||||
//check accounting docs - include both approved and preview documents for deletion check
|
||||
$rows = $entityManager->createQueryBuilder()
|
||||
->select('r')
|
||||
->from(HesabdariRow::class, 'r')
|
||||
->join('r.doc', 'd')
|
||||
->where('r.bid = :bid')
|
||||
->andWhere('r.cashdesk = :cashdesk')
|
||||
->setParameter('bid', $acc['bid'])
|
||||
->setParameter('cashdesk', $cashdesk)
|
||||
->getQuery()
|
||||
->getResult();
|
||||
if (count($rows) > 0)
|
||||
return $this->json(['result' => 2]);
|
||||
|
||||
|
@ -177,9 +194,17 @@ class CashdeskController extends AbstractController
|
|||
foreach ($datas as $data) {
|
||||
$bs = 0;
|
||||
$bd = 0;
|
||||
$items = $entityManager->getRepository(HesabdariRow::class)->findBy([
|
||||
'cashdesk' => $data
|
||||
]);
|
||||
// Use query builder to filter by approved documents
|
||||
$items = $entityManager->createQueryBuilder()
|
||||
->select('r')
|
||||
->from(HesabdariRow::class, 'r')
|
||||
->join('r.doc', 'd')
|
||||
->where('r.cashdesk = :cashdesk')
|
||||
->andWhere('d.isApproved = :isApproved')
|
||||
->setParameter('cashdesk', $data)
|
||||
->setParameter('isApproved', true)
|
||||
->getQuery()
|
||||
->getResult();
|
||||
foreach ($items as $item) {
|
||||
$bs += $item->getBs();
|
||||
$bd += $item->getBd();
|
||||
|
@ -211,9 +236,23 @@ class CashdeskController extends AbstractController
|
|||
|
||||
$bs = 0;
|
||||
$bd = 0;
|
||||
$items = $entityManager->getRepository(HesabdariRow::class)->findBy([
|
||||
'cashdesk' => $cashdesk
|
||||
]);
|
||||
// Use query builder to filter by approved documents
|
||||
$items = $entityManager->createQueryBuilder()
|
||||
->select('r')
|
||||
->from(HesabdariRow::class, 'r')
|
||||
->join('r.doc', 'd')
|
||||
->where('r.cashdesk = :cashdesk')
|
||||
->andWhere('r.year = :year')
|
||||
->andWhere('r.bid = :bid')
|
||||
->andWhere('r.money = :money')
|
||||
->andWhere('d.isApproved = :isApproved')
|
||||
->setParameter('cashdesk', $cashdesk)
|
||||
->setParameter('year', $acc['year'])
|
||||
->setParameter('bid', $acc['bid'])
|
||||
->setParameter('money', $acc['money'])
|
||||
->setParameter('isApproved', true)
|
||||
->getQuery()
|
||||
->getResult();
|
||||
|
||||
foreach ($items as $item) {
|
||||
$bs += $item->getBs();
|
||||
|
@ -251,11 +290,20 @@ class CashdeskController extends AbstractController
|
|||
$query = $entityManager->createQueryBuilder()
|
||||
->select('r')
|
||||
->from(HesabdariRow::class, 'r')
|
||||
->join('r.doc', 'd')
|
||||
->where('r.cashdesk = :cashdesk')
|
||||
->andWhere('r.bid = :bid')
|
||||
->setParameter('cashdesk', $cashdesk)
|
||||
->setParameter('bid', $acc['bid']);
|
||||
|
||||
// Check if includePreview parameter is provided
|
||||
$includePreview = $params['includePreview'] ?? false;
|
||||
if (!$includePreview) {
|
||||
// Default: only show approved documents
|
||||
$query->andWhere('d.isApproved = :isApproved')
|
||||
->setParameter('isApproved', true);
|
||||
}
|
||||
|
||||
if (isset($params['startDate']) && isset($params['endDate'])) {
|
||||
$query->andWhere('r.doc.date BETWEEN :startDate AND :endDate')
|
||||
->setParameter('startDate', $params['startDate'])
|
||||
|
@ -293,12 +341,29 @@ class CashdeskController extends AbstractController
|
|||
$cashdesk = $entityManager->getRepository(Cashdesk::class)->findOneBy(['bid' => $acc['bid'], 'code' => $params['code']]);
|
||||
if (!$cashdesk)
|
||||
throw $this->createNotFoundException();
|
||||
|
||||
// Check if includePreview parameter is provided
|
||||
$includePreview = $params['includePreview'] ?? false;
|
||||
|
||||
if (!array_key_exists('items', $params)) {
|
||||
$transactions = $entityManager->getRepository(HesabdariRow::class)->findBy([
|
||||
'bid' => $acc['bid'],
|
||||
'cashdesk' => $cashdesk,
|
||||
'year'=>$acc['year']
|
||||
]);
|
||||
$query = $entityManager->createQueryBuilder()
|
||||
->select('r')
|
||||
->from(HesabdariRow::class, 'r')
|
||||
->join('r.doc', 'd')
|
||||
->where('r.bid = :bid')
|
||||
->andWhere('r.cashdesk = :cashdesk')
|
||||
->andWhere('r.year = :year')
|
||||
->setParameter('bid', $acc['bid'])
|
||||
->setParameter('cashdesk', $cashdesk)
|
||||
->setParameter('year', $acc['year']);
|
||||
|
||||
if (!$includePreview) {
|
||||
// Default: only show approved documents
|
||||
$query->andWhere('d.isApproved = :isApproved')
|
||||
->setParameter('isApproved', true);
|
||||
}
|
||||
|
||||
$transactions = $query->getQuery()->getResult();
|
||||
} else {
|
||||
$transactions = [];
|
||||
foreach ($params['items'] as $param) {
|
||||
|
@ -309,7 +374,10 @@ class CashdeskController extends AbstractController
|
|||
'year' => $acc['year']
|
||||
]);
|
||||
if ($prs) {
|
||||
$transactions[] = $prs;
|
||||
// Check if the document is approved (unless includePreview is true)
|
||||
if ($includePreview || $prs->getDoc()->isApproved()) {
|
||||
$transactions[] = $prs;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
@ -370,12 +438,28 @@ class CashdeskController extends AbstractController
|
|||
if (!$cashdesk)
|
||||
throw $this->createNotFoundException();
|
||||
|
||||
// Check if includePreview parameter is provided
|
||||
$includePreview = $params['includePreview'] ?? false;
|
||||
|
||||
if (!array_key_exists('items', $params)) {
|
||||
$transactions = $entityManager->getRepository(HesabdariRow::class)->findBy([
|
||||
'bid' => $acc['bid'],
|
||||
'cashdesk' => $cashdesk,
|
||||
'year'=>$acc['year']
|
||||
]);
|
||||
$query = $entityManager->createQueryBuilder()
|
||||
->select('r')
|
||||
->from(HesabdariRow::class, 'r')
|
||||
->join('r.doc', 'd')
|
||||
->where('r.bid = :bid')
|
||||
->andWhere('r.cashdesk = :cashdesk')
|
||||
->andWhere('r.year = :year')
|
||||
->setParameter('bid', $acc['bid'])
|
||||
->setParameter('cashdesk', $cashdesk)
|
||||
->setParameter('year', $acc['year']);
|
||||
|
||||
if (!$includePreview) {
|
||||
// Default: only show approved documents
|
||||
$query->andWhere('d.isApproved = :isApproved')
|
||||
->setParameter('isApproved', true);
|
||||
}
|
||||
|
||||
$transactions = $query->getQuery()->getResult();
|
||||
} else {
|
||||
$transactions = [];
|
||||
foreach ($params['items'] as $param) {
|
||||
|
@ -386,7 +470,10 @@ class CashdeskController extends AbstractController
|
|||
'year'=>$acc['year']
|
||||
]);
|
||||
if ($prs) {
|
||||
$transactions[] = $prs;
|
||||
// Check if the document is approved (unless includePreview is true)
|
||||
if ($includePreview || $prs->getDoc()->isApproved()) {
|
||||
$transactions[] = $prs;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
|
@ -133,10 +133,19 @@ class CommodityController extends AbstractController
|
|||
$data = array_map(function (Commodity $item) use ($entityManager, $acc, $explore) {
|
||||
$temp = $explore::ExploreCommodity($item);
|
||||
if (!$item->isKhadamat()) {
|
||||
$rows = $entityManager->getRepository('App\Entity\HesabdariRow')->findBy([
|
||||
'bid' => $acc['bid'],
|
||||
'commodity' => $item
|
||||
]);
|
||||
// Use query builder to filter by approved documents
|
||||
$rows = $entityManager->createQueryBuilder()
|
||||
->select('r')
|
||||
->from('App\Entity\HesabdariRow', 'r')
|
||||
->join('r.doc', 'd')
|
||||
->where('r.bid = :bid')
|
||||
->andWhere('r.commodity = :commodity')
|
||||
->andWhere('d.isApproved = :isApproved')
|
||||
->setParameter('bid', $acc['bid'])
|
||||
->setParameter('commodity', $item)
|
||||
->setParameter('isApproved', true)
|
||||
->getQuery()
|
||||
->getResult();
|
||||
$count = 0;
|
||||
foreach ($rows as $row) {
|
||||
if ($row->getDoc()->getType() === 'buy' || $row->getDoc()->getType() === 'open_balance') {
|
||||
|
@ -184,10 +193,19 @@ class CommodityController extends AbstractController
|
|||
foreach ($items as $item) {
|
||||
$temp = Explore::ExploreCommodity($item);
|
||||
if (!$item->isKhadamat()) {
|
||||
$rows = $entityManager->getRepository('App\Entity\HesabdariRow')->findBy([
|
||||
'bid' => $acc['bid'],
|
||||
'commodity' => $item
|
||||
]);
|
||||
// Use query builder to filter by approved documents
|
||||
$rows = $entityManager->createQueryBuilder()
|
||||
->select('r')
|
||||
->from('App\Entity\HesabdariRow', 'r')
|
||||
->join('r.doc', 'd')
|
||||
->where('r.bid = :bid')
|
||||
->andWhere('r.commodity = :commodity')
|
||||
->andWhere('d.isApproved = :isApproved')
|
||||
->setParameter('bid', $acc['bid'])
|
||||
->setParameter('commodity', $item)
|
||||
->setParameter('isApproved', true)
|
||||
->getQuery()
|
||||
->getResult();
|
||||
$count = 0;
|
||||
foreach ($rows as $row) {
|
||||
if ($row->getDoc()->getType() === 'buy' || $row->getDoc()->getType() === 'open_balance') {
|
||||
|
@ -288,10 +306,19 @@ class CommodityController extends AbstractController
|
|||
if ($item->isKhadamat()) {
|
||||
$temp['count'] = 0;
|
||||
} else {
|
||||
$rows = $entityManager->getRepository(HesabdariRow::class)->findBy([
|
||||
'bid' => $acc['bid'],
|
||||
'commodity' => $item
|
||||
]);
|
||||
// Use query builder to filter by approved documents
|
||||
$rows = $entityManager->createQueryBuilder()
|
||||
->select('r')
|
||||
->from(HesabdariRow::class, 'r')
|
||||
->join('r.doc', 'd')
|
||||
->where('r.bid = :bid')
|
||||
->andWhere('r.commodity = :commodity')
|
||||
->andWhere('d.isApproved = :isApproved')
|
||||
->setParameter('bid', $acc['bid'])
|
||||
->setParameter('commodity', $item)
|
||||
->setParameter('isApproved', true)
|
||||
->getQuery()
|
||||
->getResult();
|
||||
$count = 0;
|
||||
foreach ($rows as $row) {
|
||||
if ($row->getDoc()->getType() == 'buy') {
|
||||
|
@ -356,10 +383,19 @@ class CommodityController extends AbstractController
|
|||
if ($item->isKhadamat()) {
|
||||
$temp['count'] = 0;
|
||||
} else {
|
||||
$rows = $entityManager->getRepository(HesabdariRow::class)->findBy([
|
||||
'bid' => $acc['bid'],
|
||||
'commodity' => $item
|
||||
]);
|
||||
// Use query builder to filter by approved documents
|
||||
$rows = $entityManager->createQueryBuilder()
|
||||
->select('r')
|
||||
->from(HesabdariRow::class, 'r')
|
||||
->join('r.doc', 'd')
|
||||
->where('r.bid = :bid')
|
||||
->andWhere('r.commodity = :commodity')
|
||||
->andWhere('d.isApproved = :isApproved')
|
||||
->setParameter('bid', $acc['bid'])
|
||||
->setParameter('commodity', $item)
|
||||
->setParameter('isApproved', true)
|
||||
->getQuery()
|
||||
->getResult();
|
||||
$count = 0;
|
||||
foreach ($rows as $row) {
|
||||
if ($row->getDoc()->getType() == 'buy') {
|
||||
|
@ -452,10 +488,19 @@ class CommodityController extends AbstractController
|
|||
if ($item->isKhadamat()) {
|
||||
$temp['count'] = 0;
|
||||
} else {
|
||||
$rows = $entityManager->getRepository(HesabdariRow::class)->findBy([
|
||||
'bid' => $acc['bid'],
|
||||
'commodity' => $item
|
||||
]);
|
||||
// Use query builder to filter by approved documents
|
||||
$rows = $entityManager->createQueryBuilder()
|
||||
->select('r')
|
||||
->from(HesabdariRow::class, 'r')
|
||||
->join('r.doc', 'd')
|
||||
->where('r.bid = :bid')
|
||||
->andWhere('r.commodity = :commodity')
|
||||
->andWhere('d.isApproved = :isApproved')
|
||||
->setParameter('bid', $acc['bid'])
|
||||
->setParameter('commodity', $item)
|
||||
->setParameter('isApproved', true)
|
||||
->getQuery()
|
||||
->getResult();
|
||||
$count = 0;
|
||||
foreach ($rows as $row) {
|
||||
if ($row->getDoc()->getType() == 'buy') {
|
||||
|
@ -651,10 +696,19 @@ class CommodityController extends AbstractController
|
|||
if ($data->isKhadamat()) {
|
||||
$res['count'] = 0;
|
||||
} else {
|
||||
$rows = $entityManager->getRepository(HesabdariRow::class)->findBy([
|
||||
'bid' => $acc['bid'],
|
||||
'commodity' => $data
|
||||
]);
|
||||
// Use query builder to filter by approved documents
|
||||
$rows = $entityManager->createQueryBuilder()
|
||||
->select('r')
|
||||
->from(HesabdariRow::class, 'r')
|
||||
->join('r.doc', 'd')
|
||||
->where('r.bid = :bid')
|
||||
->andWhere('r.commodity = :commodity')
|
||||
->andWhere('d.isApproved = :isApproved')
|
||||
->setParameter('bid', $acc['bid'])
|
||||
->setParameter('commodity', $data)
|
||||
->setParameter('isApproved', true)
|
||||
->getQuery()
|
||||
->getResult();
|
||||
foreach ($rows as $row) {
|
||||
if ($row->getDoc()->getType() == 'buy') {
|
||||
$count += $row->getCommdityCount();
|
||||
|
@ -1320,8 +1374,17 @@ class CommodityController extends AbstractController
|
|||
throw $this->createNotFoundException('کالا یافت نشد');
|
||||
}
|
||||
|
||||
// بررسی اسناد حسابداری
|
||||
$docs = $entityManager->getRepository(HesabdariRow::class)->findBy(['bid' => $acc['bid'], 'commodity' => $commodity]);
|
||||
// بررسی اسناد حسابداری - include both approved and preview documents for deletion check
|
||||
$docs = $entityManager->createQueryBuilder()
|
||||
->select('r')
|
||||
->from(HesabdariRow::class, 'r')
|
||||
->join('r.doc', 'd')
|
||||
->where('r.bid = :bid')
|
||||
->andWhere('r.commodity = :commodity')
|
||||
->setParameter('bid', $acc['bid'])
|
||||
->setParameter('commodity', $commodity)
|
||||
->getQuery()
|
||||
->getResult();
|
||||
if (count($docs) > 0) {
|
||||
return $this->json(['result' => 2, 'message' => 'این کالا در اسناد حسابداری استفاده شده و قابل حذف نیست']);
|
||||
}
|
||||
|
@ -1371,7 +1434,17 @@ class CommodityController extends AbstractController
|
|||
continue;
|
||||
}
|
||||
|
||||
$docs = $entityManager->getRepository(HesabdariRow::class)->findBy(['bid' => $acc['bid'], 'commodity' => $commodity]);
|
||||
// بررسی اسناد حسابداری - include both approved and preview documents for deletion check
|
||||
$docs = $entityManager->createQueryBuilder()
|
||||
->select('r')
|
||||
->from(HesabdariRow::class, 'r')
|
||||
->join('r.doc', 'd')
|
||||
->where('r.bid = :bid')
|
||||
->andWhere('r.commodity = :commodity')
|
||||
->setParameter('bid', $acc['bid'])
|
||||
->setParameter('commodity', $commodity)
|
||||
->getQuery()
|
||||
->getResult();
|
||||
$storeDocs = $entityManager->getRepository(StoreroomItem::class)->findBy(['bid' => $acc['bid'], 'commodity' => $commodity]);
|
||||
|
||||
if (count($docs) > 0 || count($storeDocs) > 0) {
|
||||
|
|
|
@ -47,7 +47,7 @@ class CostController extends AbstractController
|
|||
$yearStart = $jdate->jdate('Y/m/d', $yearStartUnix);
|
||||
$yearEnd = $jdate->jdate('Y/m/d', $yearEndUnix);
|
||||
|
||||
// کوئری پایه - فقط جمع bd را محاسبه میکنیم
|
||||
// کوئری پایه - فقط جمع bd را محاسبه میکنیم و فقط اسناد تایید شده
|
||||
$qb = $entityManager->createQueryBuilder()
|
||||
->select('SUM(COALESCE(r.bd, 0)) as total')
|
||||
->from('App\Entity\HesabdariDoc', 'd')
|
||||
|
@ -56,10 +56,12 @@ class CostController extends AbstractController
|
|||
->andWhere('d.money = :money')
|
||||
->andWhere('d.type = :type')
|
||||
->andWhere('d.year = :year')
|
||||
->andWhere('d.isApproved = :isApproved')
|
||||
->setParameter('bid', $acc['bid'])
|
||||
->setParameter('money', $acc['money'])
|
||||
->setParameter('type', 'cost')
|
||||
->setParameter('year', $acc['year']);
|
||||
->setParameter('year', $acc['year'])
|
||||
->setParameter('isApproved', true);
|
||||
|
||||
// هزینه امروز
|
||||
$todayCost = (clone $qb)
|
||||
|
@ -126,7 +128,7 @@ class CostController extends AbstractController
|
|||
'year' => $acc['year'],
|
||||
];
|
||||
|
||||
// کوئری پایه
|
||||
// کوئری پایه - فقط اسناد تایید شده
|
||||
$qb = $entityManager->createQueryBuilder()
|
||||
->select('t.name AS center_name, SUM(COALESCE(r.bd, 0)) AS total_cost')
|
||||
->from('App\Entity\HesabdariDoc', 'd')
|
||||
|
@ -136,13 +138,15 @@ class CostController extends AbstractController
|
|||
->andWhere('d.money = :money')
|
||||
->andWhere('d.type = :type')
|
||||
->andWhere('d.year = :year')
|
||||
->andWhere('d.isApproved = :isApproved')
|
||||
->andWhere('r.bd != 0')
|
||||
->groupBy('t.id, t.name')
|
||||
->orderBy('total_cost', 'DESC')
|
||||
->setParameter('bid', $acc['bid'])
|
||||
->setParameter('money', $acc['money'])
|
||||
->setParameter('type', 'cost')
|
||||
->setParameter('year', $acc['year']);
|
||||
->setParameter('year', $acc['year'])
|
||||
->setParameter('isApproved', true);
|
||||
|
||||
// اعمال فیلتر تاریخ فقط برای امروز و ماه
|
||||
if ($period === 'today') {
|
||||
|
@ -203,6 +207,7 @@ class CostController 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')
|
||||
|
@ -217,6 +222,14 @@ class CostController extends AbstractController
|
|||
->setParameter('type', $type)
|
||||
->setParameter('money', $acc['money']);
|
||||
|
||||
// Check if includePreview parameter is provided
|
||||
$includePreview = $params['includePreview'] ?? false;
|
||||
if (!$includePreview) {
|
||||
// Default: only show approved documents
|
||||
$queryBuilder->andWhere('d.isApproved = :isApproved')
|
||||
->setParameter('isApproved', true);
|
||||
}
|
||||
|
||||
// Apply filters
|
||||
if (!empty($filters)) {
|
||||
// Text search
|
||||
|
@ -313,6 +326,8 @@ class CostController extends AbstractController
|
|||
'des' => $doc['des'],
|
||||
'amount' => $doc['amount'],
|
||||
'submitter' => $doc['submitter'],
|
||||
'isPreview' => $doc['isPreview'],
|
||||
'isApproved' => $doc['isApproved'],
|
||||
];
|
||||
|
||||
// Get cost center details
|
||||
|
@ -378,14 +393,30 @@ class CostController extends AbstractController
|
|||
|
||||
$params = json_decode($request->getContent(), true) ?? [];
|
||||
|
||||
// Check if includePreview parameter is provided
|
||||
$includePreview = $params['includePreview'] ?? false;
|
||||
|
||||
// دریافت آیتمهای انتخاب شده یا همه آیتمها
|
||||
if (!isset($params['items'])) {
|
||||
$items = $entityManager->getRepository(HesabdariDoc::class)->findBy([
|
||||
'bid' => $acc['bid'],
|
||||
'type' => 'cost',
|
||||
'year' => $acc['year'],
|
||||
'money' => $acc['money']
|
||||
]);
|
||||
$query = $entityManager->createQueryBuilder()
|
||||
->select('d')
|
||||
->from(HesabdariDoc::class, 'd')
|
||||
->where('d.bid = :bid')
|
||||
->andWhere('d.type = :type')
|
||||
->andWhere('d.year = :year')
|
||||
->andWhere('d.money = :money')
|
||||
->setParameter('bid', $acc['bid'])
|
||||
->setParameter('type', 'cost')
|
||||
->setParameter('year', $acc['year'])
|
||||
->setParameter('money', $acc['money']);
|
||||
|
||||
if (!$includePreview) {
|
||||
// Default: only show approved documents
|
||||
$query->andWhere('d.isApproved = :isApproved')
|
||||
->setParameter('isApproved', true);
|
||||
}
|
||||
|
||||
$items = $query->getQuery()->getResult();
|
||||
} else {
|
||||
$items = [];
|
||||
foreach ($params['items'] as $param) {
|
||||
|
@ -397,7 +428,10 @@ class CostController extends AbstractController
|
|||
'money' => $acc['money']
|
||||
]);
|
||||
if ($doc) {
|
||||
$items[] = $doc;
|
||||
// Check if the document is approved (unless includePreview is true)
|
||||
if ($includePreview || $doc->isApproved()) {
|
||||
$items[] = $doc;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
@ -429,14 +463,30 @@ class CostController extends AbstractController
|
|||
|
||||
$params = json_decode($request->getContent(), true) ?? [];
|
||||
|
||||
// Check if includePreview parameter is provided
|
||||
$includePreview = $params['includePreview'] ?? false;
|
||||
|
||||
// دریافت آیتمهای انتخاب شده یا همه آیتمها
|
||||
if (!isset($params['items'])) {
|
||||
$items = $entityManager->getRepository(HesabdariDoc::class)->findBy([
|
||||
'bid' => $acc['bid'],
|
||||
'type' => 'cost',
|
||||
'year' => $acc['year'],
|
||||
'money' => $acc['money']
|
||||
]);
|
||||
$query = $entityManager->createQueryBuilder()
|
||||
->select('d')
|
||||
->from(HesabdariDoc::class, 'd')
|
||||
->where('d.bid = :bid')
|
||||
->andWhere('d.type = :type')
|
||||
->andWhere('d.year = :year')
|
||||
->andWhere('d.money = :money')
|
||||
->setParameter('bid', $acc['bid'])
|
||||
->setParameter('type', 'cost')
|
||||
->setParameter('year', $acc['year'])
|
||||
->setParameter('money', $acc['money']);
|
||||
|
||||
if (!$includePreview) {
|
||||
// Default: only show approved documents
|
||||
$query->andWhere('d.isApproved = :isApproved')
|
||||
->setParameter('isApproved', true);
|
||||
}
|
||||
|
||||
$items = $query->getQuery()->getResult();
|
||||
} else {
|
||||
$items = [];
|
||||
foreach ($params['items'] as $param) {
|
||||
|
@ -448,7 +498,10 @@ class CostController extends AbstractController
|
|||
'money' => $acc['money']
|
||||
]);
|
||||
if ($doc) {
|
||||
$items[] = $doc;
|
||||
// Check if the document is approved (unless includePreview is true)
|
||||
if ($includePreview || $doc->isApproved()) {
|
||||
$items[] = $doc;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
@ -566,6 +619,20 @@ class CostController extends AbstractController
|
|||
$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());
|
||||
}
|
||||
|
||||
$entityManager->persist($doc);
|
||||
$entityManager->flush();
|
||||
|
||||
|
|
|
@ -42,6 +42,20 @@ class DirectHesabdariDoc extends AbstractController
|
|||
$hesabdariDoc->setCode($provider->getAccountingCode($acc['bid'], 'accounting'));
|
||||
$hesabdariDoc->setDateSubmit(time());
|
||||
|
||||
// Set approval status based on business settings
|
||||
$business = $acc['bid'];
|
||||
if ($business->getTwoStepApproval()) {
|
||||
// Two-step approval is enabled
|
||||
$hesabdariDoc->setIsPreview(true);
|
||||
$hesabdariDoc->setIsApproved(false);
|
||||
$hesabdariDoc->setApprovedBy(null);
|
||||
} else {
|
||||
// Two-step approval is disabled - auto approve
|
||||
$hesabdariDoc->setIsPreview(false);
|
||||
$hesabdariDoc->setIsApproved(true);
|
||||
$hesabdariDoc->setApprovedBy($this->getUser());
|
||||
}
|
||||
|
||||
//insert rows
|
||||
if (isset($prams['rows'])) {
|
||||
if (count($prams['rows']) < 2) {
|
||||
|
@ -355,6 +369,9 @@ class DirectHesabdariDoc extends AbstractController
|
|||
'date' => $hesabdariDoc->getDate(),
|
||||
'des' => $hesabdariDoc->getDes(),
|
||||
'code' => $hesabdariDoc->getCode(),
|
||||
'isPreview' => $hesabdariDoc->isPreview(),
|
||||
'isApproved' => $hesabdariDoc->isApproved(),
|
||||
'approvedBy' => $hesabdariDoc->getApprovedBy() ? $hesabdariDoc->getApprovedBy()->getFullName() : null,
|
||||
'rows' => $rows
|
||||
];
|
||||
|
||||
|
|
|
@ -48,7 +48,7 @@ class IncomeController extends AbstractController
|
|||
$yearStart = $jdate->jdate('Y/m/d', $yearStartUnix);
|
||||
$yearEnd = $jdate->jdate('Y/m/d', $yearEndUnix);
|
||||
|
||||
// کوئری پایه - جمع bs را محاسبه میکنیم
|
||||
// کوئری پایه - جمع bs را محاسبه میکنیم و فقط اسناد تایید شده
|
||||
$qb = $entityManager->createQueryBuilder()
|
||||
->select('SUM(COALESCE(r.bs, 0)) as total')
|
||||
->from('App\Entity\HesabdariDoc', 'd')
|
||||
|
@ -57,11 +57,13 @@ class IncomeController extends AbstractController
|
|||
->andWhere('d.money = :money')
|
||||
->andWhere('d.type = :type')
|
||||
->andWhere('d.year = :year')
|
||||
->andWhere('d.isApproved = :isApproved')
|
||||
->andWhere('r.bs != 0') // فقط ردیفهایی که bs صفر نیست
|
||||
->setParameter('bid', $acc['bid'])
|
||||
->setParameter('money', $acc['money'])
|
||||
->setParameter('type', 'income')
|
||||
->setParameter('year', $acc['year']);
|
||||
->setParameter('year', $acc['year'])
|
||||
->setParameter('isApproved', true);
|
||||
|
||||
// درآمد امروز
|
||||
$todayIncome = (clone $qb)
|
||||
|
@ -123,7 +125,7 @@ class IncomeController extends AbstractController
|
|||
$today = $jdate->jdate('Y/m/d', time());
|
||||
$monthStart = $jdate->jdate('Y/m/01', time());
|
||||
|
||||
// کوئری پایه
|
||||
// کوئری پایه - فقط اسناد تایید شده
|
||||
$qb = $entityManager->createQueryBuilder()
|
||||
->select('t.name AS center_name, SUM(COALESCE(r.bs, 0)) AS total_income')
|
||||
->from('App\Entity\HesabdariDoc', 'd')
|
||||
|
@ -133,13 +135,15 @@ class IncomeController extends AbstractController
|
|||
->andWhere('d.money = :money')
|
||||
->andWhere('d.type = :type')
|
||||
->andWhere('d.year = :year')
|
||||
->andWhere('d.isApproved = :isApproved')
|
||||
->andWhere('r.bs != 0') // فقط ردیفهایی که bs صفر نیست
|
||||
->groupBy('t.id, t.name')
|
||||
->orderBy('total_income', 'DESC')
|
||||
->setParameter('bid', $acc['bid'])
|
||||
->setParameter('money', $acc['money'])
|
||||
->setParameter('type', 'income')
|
||||
->setParameter('year', $acc['year']);
|
||||
->setParameter('year', $acc['year'])
|
||||
->setParameter('isApproved', true);
|
||||
|
||||
// اعمال فیلتر تاریخ فقط برای امروز و ماه
|
||||
if ($period === 'today') {
|
||||
|
@ -200,6 +204,7 @@ class IncomeController 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')
|
||||
|
@ -214,6 +219,14 @@ class IncomeController extends AbstractController
|
|||
->setParameter('type', $type)
|
||||
->setParameter('money', $acc['money']);
|
||||
|
||||
// Check if includePreview parameter is provided
|
||||
$includePreview = $params['includePreview'] ?? false;
|
||||
if (!$includePreview) {
|
||||
// Default: only show approved documents
|
||||
$queryBuilder->andWhere('d.isApproved = :isApproved')
|
||||
->setParameter('isApproved', true);
|
||||
}
|
||||
|
||||
// Apply filters
|
||||
if (!empty($filters)) {
|
||||
// Text search
|
||||
|
@ -310,6 +323,8 @@ class IncomeController extends AbstractController
|
|||
'des' => $doc['des'],
|
||||
'amount' => $doc['amount'],
|
||||
'submitter' => $doc['submitter'],
|
||||
'isPreview' => $doc['isPreview'],
|
||||
'isApproved' => $doc['isApproved'],
|
||||
];
|
||||
|
||||
// Get income center details
|
||||
|
@ -375,14 +390,30 @@ class IncomeController extends AbstractController
|
|||
|
||||
$params = json_decode($request->getContent(), true) ?? [];
|
||||
|
||||
// Check if includePreview parameter is provided
|
||||
$includePreview = $params['includePreview'] ?? false;
|
||||
|
||||
// دریافت آیتمهای انتخاب شده یا همه آیتمها
|
||||
if (!isset($params['items'])) {
|
||||
$items = $entityManager->getRepository(HesabdariDoc::class)->findBy([
|
||||
'bid' => $acc['bid'],
|
||||
'type' => 'income',
|
||||
'year' => $acc['year'],
|
||||
'money' => $acc['money']
|
||||
]);
|
||||
$query = $entityManager->createQueryBuilder()
|
||||
->select('d')
|
||||
->from(HesabdariDoc::class, 'd')
|
||||
->where('d.bid = :bid')
|
||||
->andWhere('d.type = :type')
|
||||
->andWhere('d.year = :year')
|
||||
->andWhere('d.money = :money')
|
||||
->setParameter('bid', $acc['bid'])
|
||||
->setParameter('type', 'income')
|
||||
->setParameter('year', $acc['year'])
|
||||
->setParameter('money', $acc['money']);
|
||||
|
||||
if (!$includePreview) {
|
||||
// Default: only show approved documents
|
||||
$query->andWhere('d.isApproved = :isApproved')
|
||||
->setParameter('isApproved', true);
|
||||
}
|
||||
|
||||
$items = $query->getQuery()->getResult();
|
||||
} else {
|
||||
$items = [];
|
||||
foreach ($params['items'] as $param) {
|
||||
|
@ -394,7 +425,10 @@ class IncomeController extends AbstractController
|
|||
'money' => $acc['money']
|
||||
]);
|
||||
if ($doc) {
|
||||
$items[] = $doc;
|
||||
// Check if the document is approved (unless includePreview is true)
|
||||
if ($includePreview || $doc->isApproved()) {
|
||||
$items[] = $doc;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
@ -426,14 +460,30 @@ class IncomeController extends AbstractController
|
|||
|
||||
$params = json_decode($request->getContent(), true) ?? [];
|
||||
|
||||
// Check if includePreview parameter is provided
|
||||
$includePreview = $params['includePreview'] ?? false;
|
||||
|
||||
// دریافت آیتمهای انتخاب شده یا همه آیتمها
|
||||
if (!isset($params['items'])) {
|
||||
$items = $entityManager->getRepository(HesabdariDoc::class)->findBy([
|
||||
'bid' => $acc['bid'],
|
||||
'type' => 'income',
|
||||
'year' => $acc['year'],
|
||||
'money' => $acc['money']
|
||||
]);
|
||||
$query = $entityManager->createQueryBuilder()
|
||||
->select('d')
|
||||
->from(HesabdariDoc::class, 'd')
|
||||
->where('d.bid = :bid')
|
||||
->andWhere('d.type = :type')
|
||||
->andWhere('d.year = :year')
|
||||
->andWhere('d.money = :money')
|
||||
->setParameter('bid', $acc['bid'])
|
||||
->setParameter('type', 'income')
|
||||
->setParameter('year', $acc['year'])
|
||||
->setParameter('money', $acc['money']);
|
||||
|
||||
if (!$includePreview) {
|
||||
// Default: only show approved documents
|
||||
$query->andWhere('d.isApproved = :isApproved')
|
||||
->setParameter('isApproved', true);
|
||||
}
|
||||
|
||||
$items = $query->getQuery()->getResult();
|
||||
} else {
|
||||
$items = [];
|
||||
foreach ($params['items'] as $param) {
|
||||
|
@ -445,7 +495,10 @@ class IncomeController extends AbstractController
|
|||
'money' => $acc['money']
|
||||
]);
|
||||
if ($doc) {
|
||||
$items[] = $doc;
|
||||
// Check if the document is approved (unless includePreview is true)
|
||||
if ($includePreview || $doc->isApproved()) {
|
||||
$items[] = $doc;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
@ -563,6 +616,20 @@ class IncomeController extends AbstractController
|
|||
$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());
|
||||
}
|
||||
|
||||
$entityManager->persist($doc);
|
||||
$entityManager->flush();
|
||||
|
||||
|
|
|
@ -1,18 +0,0 @@
|
|||
<?php
|
||||
|
||||
namespace App\Controller;
|
||||
|
||||
use Symfony\Bundle\FrameworkBundle\Controller\AbstractController;
|
||||
use Symfony\Component\HttpFoundation\Response;
|
||||
use Symfony\Component\Routing\Annotation\Route;
|
||||
|
||||
class MoadiyanController extends AbstractController
|
||||
{
|
||||
#[Route('api/moadiyan', name: 'app_moadiyan')]
|
||||
public function index(): Response
|
||||
{
|
||||
return $this->render('moadiyan/index.html.twig', [
|
||||
'controller_name' => 'MoadiyanController',
|
||||
]);
|
||||
}
|
||||
}
|
|
@ -46,9 +46,17 @@ class SalaryController extends AbstractController
|
|||
foreach ($datas as $data) {
|
||||
$bs = 0;
|
||||
$bd = 0;
|
||||
$items = $entityManager->getRepository(HesabdariRow::class)->findBy([
|
||||
'salary' => $data
|
||||
]);
|
||||
// Use query builder to filter by approved documents
|
||||
$items = $entityManager->createQueryBuilder()
|
||||
->select('r')
|
||||
->from(HesabdariRow::class, 'r')
|
||||
->join('r.doc', 'd')
|
||||
->where('r.salary = :salary')
|
||||
->andWhere('d.isApproved = :isApproved')
|
||||
->setParameter('salary', $data)
|
||||
->setParameter('isApproved', true)
|
||||
->getQuery()
|
||||
->getResult();
|
||||
foreach ($items as $item) {
|
||||
$bs += $item->getBs();
|
||||
$bd += $item->getBd();
|
||||
|
@ -73,9 +81,17 @@ class SalaryController extends AbstractController
|
|||
// محاسبه بدهکار و بستانکار و تراز
|
||||
$bs = 0;
|
||||
$bd = 0;
|
||||
$items = $entityManager->getRepository(HesabdariRow::class)->findBy([
|
||||
'salary' => $data
|
||||
]);
|
||||
// Use query builder to filter by approved documents
|
||||
$items = $entityManager->createQueryBuilder()
|
||||
->select('r')
|
||||
->from(HesabdariRow::class, 'r')
|
||||
->join('r.doc', 'd')
|
||||
->where('r.salary = :salary')
|
||||
->andWhere('d.isApproved = :isApproved')
|
||||
->setParameter('salary', $data)
|
||||
->setParameter('isApproved', true)
|
||||
->getQuery()
|
||||
->getResult();
|
||||
foreach ($items as $item) {
|
||||
$bs += $item->getBs();
|
||||
$bd += $item->getBd();
|
||||
|
@ -141,8 +157,17 @@ class SalaryController extends AbstractController
|
|||
$salary = $entityManager->getRepository(Salary::class)->findOneBy(['bid' => $acc['bid'], 'code' => $code]);
|
||||
if (!$salary)
|
||||
throw $this->createNotFoundException();
|
||||
//check accounting docs
|
||||
$rows = $entityManager->getRepository(HesabdariRow::class)->findby(['bid' => $acc['bid'], 'salary' => $salary]);
|
||||
//check accounting docs - include both approved and preview documents for deletion check
|
||||
$rows = $entityManager->createQueryBuilder()
|
||||
->select('r')
|
||||
->from(HesabdariRow::class, 'r')
|
||||
->join('r.doc', 'd')
|
||||
->where('r.bid = :bid')
|
||||
->andWhere('r.salary = :salary')
|
||||
->setParameter('bid', $acc['bid'])
|
||||
->setParameter('salary', $salary)
|
||||
->getQuery()
|
||||
->getResult();
|
||||
if (count($rows) > 0)
|
||||
return $this->json(['result' => 2]);
|
||||
|
||||
|
@ -187,9 +212,17 @@ class SalaryController extends AbstractController
|
|||
foreach ($datas as $data) {
|
||||
$bs = 0;
|
||||
$bd = 0;
|
||||
$items = $entityManager->getRepository(HesabdariRow::class)->findBy([
|
||||
'salary' => $data
|
||||
]);
|
||||
// Use query builder to filter by approved documents
|
||||
$items = $entityManager->createQueryBuilder()
|
||||
->select('r')
|
||||
->from(HesabdariRow::class, 'r')
|
||||
->join('r.doc', 'd')
|
||||
->where('r.salary = :salary')
|
||||
->andWhere('d.isApproved = :isApproved')
|
||||
->setParameter('salary', $data)
|
||||
->setParameter('isApproved', true)
|
||||
->getQuery()
|
||||
->getResult();
|
||||
foreach ($items as $item) {
|
||||
$bs += $item->getBs();
|
||||
$bd += $item->getBd();
|
||||
|
@ -221,9 +254,17 @@ class SalaryController extends AbstractController
|
|||
|
||||
$bs = 0;
|
||||
$bd = 0;
|
||||
$items = $entityManager->getRepository(HesabdariRow::class)->findBy([
|
||||
'salary' => $salary
|
||||
]);
|
||||
// Use query builder to filter by approved documents
|
||||
$items = $entityManager->createQueryBuilder()
|
||||
->select('r')
|
||||
->from(HesabdariRow::class, 'r')
|
||||
->join('r.doc', 'd')
|
||||
->where('r.salary = :salary')
|
||||
->andWhere('d.isApproved = :isApproved')
|
||||
->setParameter('salary', $salary)
|
||||
->setParameter('isApproved', true)
|
||||
->getQuery()
|
||||
->getResult();
|
||||
|
||||
foreach ($items as $item) {
|
||||
$bs += $item->getBs();
|
||||
|
@ -261,11 +302,20 @@ class SalaryController extends AbstractController
|
|||
$query = $entityManager->createQueryBuilder()
|
||||
->select('r')
|
||||
->from(HesabdariRow::class, 'r')
|
||||
->join('r.doc', 'd')
|
||||
->where('r.salary = :salary')
|
||||
->andWhere('r.bid = :bid')
|
||||
->setParameter('salary', $salary)
|
||||
->setParameter('bid', $acc['bid']);
|
||||
|
||||
// Check if includePreview parameter is provided
|
||||
$includePreview = $params['includePreview'] ?? false;
|
||||
if (!$includePreview) {
|
||||
// Default: only show approved documents
|
||||
$query->andWhere('d.isApproved = :isApproved')
|
||||
->setParameter('isApproved', true);
|
||||
}
|
||||
|
||||
if (isset($params['startDate']) && isset($params['endDate'])) {
|
||||
$query->andWhere('r.doc.date BETWEEN :startDate AND :endDate')
|
||||
->setParameter('startDate', $params['startDate'])
|
||||
|
@ -303,12 +353,29 @@ class SalaryController extends AbstractController
|
|||
$salary = $entityManager->getRepository(Salary::class)->findOneBy(['bid' => $acc['bid'], 'code' => $params['code']]);
|
||||
if (!$salary)
|
||||
throw $this->createNotFoundException();
|
||||
|
||||
// Check if includePreview parameter is provided
|
||||
$includePreview = $params['includePreview'] ?? false;
|
||||
|
||||
if (!array_key_exists('items', $params)) {
|
||||
$transactions = $entityManager->getRepository(HesabdariRow::class)->findBy([
|
||||
'bid' => $acc['bid'],
|
||||
'salary' => $salary,
|
||||
'year' => $acc['year'],
|
||||
]);
|
||||
$query = $entityManager->createQueryBuilder()
|
||||
->select('r')
|
||||
->from(HesabdariRow::class, 'r')
|
||||
->join('r.doc', 'd')
|
||||
->where('r.bid = :bid')
|
||||
->andWhere('r.salary = :salary')
|
||||
->andWhere('r.year = :year')
|
||||
->setParameter('bid', $acc['bid'])
|
||||
->setParameter('salary', $salary)
|
||||
->setParameter('year', $acc['year']);
|
||||
|
||||
if (!$includePreview) {
|
||||
// Default: only show approved documents
|
||||
$query->andWhere('d.isApproved = :isApproved')
|
||||
->setParameter('isApproved', true);
|
||||
}
|
||||
|
||||
$transactions = $query->getQuery()->getResult();
|
||||
} else {
|
||||
$transactions = [];
|
||||
if (is_array($params['items'])) {
|
||||
|
@ -322,7 +389,10 @@ class SalaryController extends AbstractController
|
|||
'year' => $acc['year'],
|
||||
]);
|
||||
if ($row) {
|
||||
$transactions[] = $row;
|
||||
// Check if the document is approved (unless includePreview is true)
|
||||
if ($includePreview || $row->getDoc()->isApproved()) {
|
||||
$transactions[] = $row;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
@ -378,12 +448,29 @@ class SalaryController extends AbstractController
|
|||
$salary = $entityManager->getRepository(Salary::class)->findOneBy(['bid' => $acc['bid'], 'code' => $params['code']]);
|
||||
if (!$salary)
|
||||
throw $this->createNotFoundException();
|
||||
|
||||
// Check if includePreview parameter is provided
|
||||
$includePreview = $params['includePreview'] ?? false;
|
||||
|
||||
if (!array_key_exists('items', $params)) {
|
||||
$transactions = $entityManager->getRepository(HesabdariRow::class)->findBy([
|
||||
'bid' => $acc['bid'],
|
||||
'salary' => $salary,
|
||||
'year' => $acc['year'],
|
||||
]);
|
||||
$query = $entityManager->createQueryBuilder()
|
||||
->select('r')
|
||||
->from(HesabdariRow::class, 'r')
|
||||
->join('r.doc', 'd')
|
||||
->where('r.bid = :bid')
|
||||
->andWhere('r.salary = :salary')
|
||||
->andWhere('r.year = :year')
|
||||
->setParameter('bid', $acc['bid'])
|
||||
->setParameter('salary', $salary)
|
||||
->setParameter('year', $acc['year']);
|
||||
|
||||
if (!$includePreview) {
|
||||
// Default: only show approved documents
|
||||
$query->andWhere('d.isApproved = :isApproved')
|
||||
->setParameter('isApproved', true);
|
||||
}
|
||||
|
||||
$transactions = $query->getQuery()->getResult();
|
||||
} else {
|
||||
$transactions = [];
|
||||
if (is_array($params['items'])) {
|
||||
|
@ -397,7 +484,10 @@ class SalaryController extends AbstractController
|
|||
'year' => $acc['year'],
|
||||
]);
|
||||
if ($row) {
|
||||
$transactions[] = $row;
|
||||
// Check if the document is approved (unless includePreview is true)
|
||||
if ($includePreview || $row->getDoc()->isApproved()) {
|
||||
$transactions[] = $row;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
Loading…
Reference in a new issue