more progress in changes with new columns in hesabdariDoc
This commit is contained in:
parent
ef17ba4d78
commit
79b887041e
|
@ -47,7 +47,7 @@ class CostController extends AbstractController
|
||||||
$yearStart = $jdate->jdate('Y/m/d', $yearStartUnix);
|
$yearStart = $jdate->jdate('Y/m/d', $yearStartUnix);
|
||||||
$yearEnd = $jdate->jdate('Y/m/d', $yearEndUnix);
|
$yearEnd = $jdate->jdate('Y/m/d', $yearEndUnix);
|
||||||
|
|
||||||
// کوئری پایه - فقط جمع bd را محاسبه میکنیم
|
// کوئری پایه - فقط جمع bd را محاسبه میکنیم و فقط اسناد تایید شده
|
||||||
$qb = $entityManager->createQueryBuilder()
|
$qb = $entityManager->createQueryBuilder()
|
||||||
->select('SUM(COALESCE(r.bd, 0)) as total')
|
->select('SUM(COALESCE(r.bd, 0)) as total')
|
||||||
->from('App\Entity\HesabdariDoc', 'd')
|
->from('App\Entity\HesabdariDoc', 'd')
|
||||||
|
@ -56,10 +56,12 @@ class CostController extends AbstractController
|
||||||
->andWhere('d.money = :money')
|
->andWhere('d.money = :money')
|
||||||
->andWhere('d.type = :type')
|
->andWhere('d.type = :type')
|
||||||
->andWhere('d.year = :year')
|
->andWhere('d.year = :year')
|
||||||
|
->andWhere('d.isApproved = :isApproved')
|
||||||
->setParameter('bid', $acc['bid'])
|
->setParameter('bid', $acc['bid'])
|
||||||
->setParameter('money', $acc['money'])
|
->setParameter('money', $acc['money'])
|
||||||
->setParameter('type', 'cost')
|
->setParameter('type', 'cost')
|
||||||
->setParameter('year', $acc['year']);
|
->setParameter('year', $acc['year'])
|
||||||
|
->setParameter('isApproved', true);
|
||||||
|
|
||||||
// هزینه امروز
|
// هزینه امروز
|
||||||
$todayCost = (clone $qb)
|
$todayCost = (clone $qb)
|
||||||
|
@ -126,7 +128,7 @@ class CostController extends AbstractController
|
||||||
'year' => $acc['year'],
|
'year' => $acc['year'],
|
||||||
];
|
];
|
||||||
|
|
||||||
// کوئری پایه
|
// کوئری پایه - فقط اسناد تایید شده
|
||||||
$qb = $entityManager->createQueryBuilder()
|
$qb = $entityManager->createQueryBuilder()
|
||||||
->select('t.name AS center_name, SUM(COALESCE(r.bd, 0)) AS total_cost')
|
->select('t.name AS center_name, SUM(COALESCE(r.bd, 0)) AS total_cost')
|
||||||
->from('App\Entity\HesabdariDoc', 'd')
|
->from('App\Entity\HesabdariDoc', 'd')
|
||||||
|
@ -136,13 +138,15 @@ class CostController extends AbstractController
|
||||||
->andWhere('d.money = :money')
|
->andWhere('d.money = :money')
|
||||||
->andWhere('d.type = :type')
|
->andWhere('d.type = :type')
|
||||||
->andWhere('d.year = :year')
|
->andWhere('d.year = :year')
|
||||||
|
->andWhere('d.isApproved = :isApproved')
|
||||||
->andWhere('r.bd != 0')
|
->andWhere('r.bd != 0')
|
||||||
->groupBy('t.id, t.name')
|
->groupBy('t.id, t.name')
|
||||||
->orderBy('total_cost', 'DESC')
|
->orderBy('total_cost', 'DESC')
|
||||||
->setParameter('bid', $acc['bid'])
|
->setParameter('bid', $acc['bid'])
|
||||||
->setParameter('money', $acc['money'])
|
->setParameter('money', $acc['money'])
|
||||||
->setParameter('type', 'cost')
|
->setParameter('type', 'cost')
|
||||||
->setParameter('year', $acc['year']);
|
->setParameter('year', $acc['year'])
|
||||||
|
->setParameter('isApproved', true);
|
||||||
|
|
||||||
// اعمال فیلتر تاریخ فقط برای امروز و ماه
|
// اعمال فیلتر تاریخ فقط برای امروز و ماه
|
||||||
if ($period === 'today') {
|
if ($period === 'today') {
|
||||||
|
@ -203,6 +207,7 @@ class CostController 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')
|
||||||
|
@ -217,6 +222,14 @@ class CostController extends AbstractController
|
||||||
->setParameter('type', $type)
|
->setParameter('type', $type)
|
||||||
->setParameter('money', $acc['money']);
|
->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
|
// Apply filters
|
||||||
if (!empty($filters)) {
|
if (!empty($filters)) {
|
||||||
// Text search
|
// Text search
|
||||||
|
@ -313,6 +326,8 @@ class CostController 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 cost center details
|
// Get cost center details
|
||||||
|
@ -378,14 +393,30 @@ class CostController extends AbstractController
|
||||||
|
|
||||||
$params = json_decode($request->getContent(), true) ?? [];
|
$params = json_decode($request->getContent(), true) ?? [];
|
||||||
|
|
||||||
|
// Check if includePreview parameter is provided
|
||||||
|
$includePreview = $params['includePreview'] ?? false;
|
||||||
|
|
||||||
// دریافت آیتمهای انتخاب شده یا همه آیتمها
|
// دریافت آیتمهای انتخاب شده یا همه آیتمها
|
||||||
if (!isset($params['items'])) {
|
if (!isset($params['items'])) {
|
||||||
$items = $entityManager->getRepository(HesabdariDoc::class)->findBy([
|
$query = $entityManager->createQueryBuilder()
|
||||||
'bid' => $acc['bid'],
|
->select('d')
|
||||||
'type' => 'cost',
|
->from(HesabdariDoc::class, 'd')
|
||||||
'year' => $acc['year'],
|
->where('d.bid = :bid')
|
||||||
'money' => $acc['money']
|
->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 {
|
} else {
|
||||||
$items = [];
|
$items = [];
|
||||||
foreach ($params['items'] as $param) {
|
foreach ($params['items'] as $param) {
|
||||||
|
@ -397,7 +428,10 @@ class CostController extends AbstractController
|
||||||
'money' => $acc['money']
|
'money' => $acc['money']
|
||||||
]);
|
]);
|
||||||
if ($doc) {
|
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) ?? [];
|
$params = json_decode($request->getContent(), true) ?? [];
|
||||||
|
|
||||||
|
// Check if includePreview parameter is provided
|
||||||
|
$includePreview = $params['includePreview'] ?? false;
|
||||||
|
|
||||||
// دریافت آیتمهای انتخاب شده یا همه آیتمها
|
// دریافت آیتمهای انتخاب شده یا همه آیتمها
|
||||||
if (!isset($params['items'])) {
|
if (!isset($params['items'])) {
|
||||||
$items = $entityManager->getRepository(HesabdariDoc::class)->findBy([
|
$query = $entityManager->createQueryBuilder()
|
||||||
'bid' => $acc['bid'],
|
->select('d')
|
||||||
'type' => 'cost',
|
->from(HesabdariDoc::class, 'd')
|
||||||
'year' => $acc['year'],
|
->where('d.bid = :bid')
|
||||||
'money' => $acc['money']
|
->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 {
|
} else {
|
||||||
$items = [];
|
$items = [];
|
||||||
foreach ($params['items'] as $param) {
|
foreach ($params['items'] as $param) {
|
||||||
|
@ -448,7 +498,10 @@ class CostController extends AbstractController
|
||||||
'money' => $acc['money']
|
'money' => $acc['money']
|
||||||
]);
|
]);
|
||||||
if ($doc) {
|
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->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());
|
||||||
|
}
|
||||||
|
|
||||||
$entityManager->persist($doc);
|
$entityManager->persist($doc);
|
||||||
$entityManager->flush();
|
$entityManager->flush();
|
||||||
|
|
||||||
|
|
|
@ -42,6 +42,20 @@ class DirectHesabdariDoc extends AbstractController
|
||||||
$hesabdariDoc->setCode($provider->getAccountingCode($acc['bid'], 'accounting'));
|
$hesabdariDoc->setCode($provider->getAccountingCode($acc['bid'], 'accounting'));
|
||||||
$hesabdariDoc->setDateSubmit(time());
|
$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
|
//insert rows
|
||||||
if (isset($prams['rows'])) {
|
if (isset($prams['rows'])) {
|
||||||
if (count($prams['rows']) < 2) {
|
if (count($prams['rows']) < 2) {
|
||||||
|
@ -355,6 +369,9 @@ class DirectHesabdariDoc extends AbstractController
|
||||||
'date' => $hesabdariDoc->getDate(),
|
'date' => $hesabdariDoc->getDate(),
|
||||||
'des' => $hesabdariDoc->getDes(),
|
'des' => $hesabdariDoc->getDes(),
|
||||||
'code' => $hesabdariDoc->getCode(),
|
'code' => $hesabdariDoc->getCode(),
|
||||||
|
'isPreview' => $hesabdariDoc->isPreview(),
|
||||||
|
'isApproved' => $hesabdariDoc->isApproved(),
|
||||||
|
'approvedBy' => $hesabdariDoc->getApprovedBy() ? $hesabdariDoc->getApprovedBy()->getFullName() : null,
|
||||||
'rows' => $rows
|
'rows' => $rows
|
||||||
];
|
];
|
||||||
|
|
||||||
|
|
|
@ -48,7 +48,7 @@ class IncomeController extends AbstractController
|
||||||
$yearStart = $jdate->jdate('Y/m/d', $yearStartUnix);
|
$yearStart = $jdate->jdate('Y/m/d', $yearStartUnix);
|
||||||
$yearEnd = $jdate->jdate('Y/m/d', $yearEndUnix);
|
$yearEnd = $jdate->jdate('Y/m/d', $yearEndUnix);
|
||||||
|
|
||||||
// کوئری پایه - جمع bs را محاسبه میکنیم
|
// کوئری پایه - جمع bs را محاسبه میکنیم و فقط اسناد تایید شده
|
||||||
$qb = $entityManager->createQueryBuilder()
|
$qb = $entityManager->createQueryBuilder()
|
||||||
->select('SUM(COALESCE(r.bs, 0)) as total')
|
->select('SUM(COALESCE(r.bs, 0)) as total')
|
||||||
->from('App\Entity\HesabdariDoc', 'd')
|
->from('App\Entity\HesabdariDoc', 'd')
|
||||||
|
@ -57,11 +57,13 @@ class IncomeController extends AbstractController
|
||||||
->andWhere('d.money = :money')
|
->andWhere('d.money = :money')
|
||||||
->andWhere('d.type = :type')
|
->andWhere('d.type = :type')
|
||||||
->andWhere('d.year = :year')
|
->andWhere('d.year = :year')
|
||||||
|
->andWhere('d.isApproved = :isApproved')
|
||||||
->andWhere('r.bs != 0') // فقط ردیفهایی که bs صفر نیست
|
->andWhere('r.bs != 0') // فقط ردیفهایی که bs صفر نیست
|
||||||
->setParameter('bid', $acc['bid'])
|
->setParameter('bid', $acc['bid'])
|
||||||
->setParameter('money', $acc['money'])
|
->setParameter('money', $acc['money'])
|
||||||
->setParameter('type', 'income')
|
->setParameter('type', 'income')
|
||||||
->setParameter('year', $acc['year']);
|
->setParameter('year', $acc['year'])
|
||||||
|
->setParameter('isApproved', true);
|
||||||
|
|
||||||
// درآمد امروز
|
// درآمد امروز
|
||||||
$todayIncome = (clone $qb)
|
$todayIncome = (clone $qb)
|
||||||
|
@ -123,7 +125,7 @@ class IncomeController extends AbstractController
|
||||||
$today = $jdate->jdate('Y/m/d', time());
|
$today = $jdate->jdate('Y/m/d', time());
|
||||||
$monthStart = $jdate->jdate('Y/m/01', time());
|
$monthStart = $jdate->jdate('Y/m/01', time());
|
||||||
|
|
||||||
// کوئری پایه
|
// کوئری پایه - فقط اسناد تایید شده
|
||||||
$qb = $entityManager->createQueryBuilder()
|
$qb = $entityManager->createQueryBuilder()
|
||||||
->select('t.name AS center_name, SUM(COALESCE(r.bs, 0)) AS total_income')
|
->select('t.name AS center_name, SUM(COALESCE(r.bs, 0)) AS total_income')
|
||||||
->from('App\Entity\HesabdariDoc', 'd')
|
->from('App\Entity\HesabdariDoc', 'd')
|
||||||
|
@ -133,13 +135,15 @@ class IncomeController extends AbstractController
|
||||||
->andWhere('d.money = :money')
|
->andWhere('d.money = :money')
|
||||||
->andWhere('d.type = :type')
|
->andWhere('d.type = :type')
|
||||||
->andWhere('d.year = :year')
|
->andWhere('d.year = :year')
|
||||||
|
->andWhere('d.isApproved = :isApproved')
|
||||||
->andWhere('r.bs != 0') // فقط ردیفهایی که bs صفر نیست
|
->andWhere('r.bs != 0') // فقط ردیفهایی که bs صفر نیست
|
||||||
->groupBy('t.id, t.name')
|
->groupBy('t.id, t.name')
|
||||||
->orderBy('total_income', 'DESC')
|
->orderBy('total_income', 'DESC')
|
||||||
->setParameter('bid', $acc['bid'])
|
->setParameter('bid', $acc['bid'])
|
||||||
->setParameter('money', $acc['money'])
|
->setParameter('money', $acc['money'])
|
||||||
->setParameter('type', 'income')
|
->setParameter('type', 'income')
|
||||||
->setParameter('year', $acc['year']);
|
->setParameter('year', $acc['year'])
|
||||||
|
->setParameter('isApproved', true);
|
||||||
|
|
||||||
// اعمال فیلتر تاریخ فقط برای امروز و ماه
|
// اعمال فیلتر تاریخ فقط برای امروز و ماه
|
||||||
if ($period === 'today') {
|
if ($period === 'today') {
|
||||||
|
@ -200,6 +204,7 @@ class IncomeController 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')
|
||||||
|
@ -214,6 +219,14 @@ class IncomeController extends AbstractController
|
||||||
->setParameter('type', $type)
|
->setParameter('type', $type)
|
||||||
->setParameter('money', $acc['money']);
|
->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
|
// Apply filters
|
||||||
if (!empty($filters)) {
|
if (!empty($filters)) {
|
||||||
// Text search
|
// Text search
|
||||||
|
@ -310,6 +323,8 @@ class IncomeController 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 income center details
|
// Get income center details
|
||||||
|
@ -375,14 +390,30 @@ class IncomeController extends AbstractController
|
||||||
|
|
||||||
$params = json_decode($request->getContent(), true) ?? [];
|
$params = json_decode($request->getContent(), true) ?? [];
|
||||||
|
|
||||||
|
// Check if includePreview parameter is provided
|
||||||
|
$includePreview = $params['includePreview'] ?? false;
|
||||||
|
|
||||||
// دریافت آیتمهای انتخاب شده یا همه آیتمها
|
// دریافت آیتمهای انتخاب شده یا همه آیتمها
|
||||||
if (!isset($params['items'])) {
|
if (!isset($params['items'])) {
|
||||||
$items = $entityManager->getRepository(HesabdariDoc::class)->findBy([
|
$query = $entityManager->createQueryBuilder()
|
||||||
'bid' => $acc['bid'],
|
->select('d')
|
||||||
'type' => 'income',
|
->from(HesabdariDoc::class, 'd')
|
||||||
'year' => $acc['year'],
|
->where('d.bid = :bid')
|
||||||
'money' => $acc['money']
|
->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 {
|
} else {
|
||||||
$items = [];
|
$items = [];
|
||||||
foreach ($params['items'] as $param) {
|
foreach ($params['items'] as $param) {
|
||||||
|
@ -394,7 +425,10 @@ class IncomeController extends AbstractController
|
||||||
'money' => $acc['money']
|
'money' => $acc['money']
|
||||||
]);
|
]);
|
||||||
if ($doc) {
|
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) ?? [];
|
$params = json_decode($request->getContent(), true) ?? [];
|
||||||
|
|
||||||
|
// Check if includePreview parameter is provided
|
||||||
|
$includePreview = $params['includePreview'] ?? false;
|
||||||
|
|
||||||
// دریافت آیتمهای انتخاب شده یا همه آیتمها
|
// دریافت آیتمهای انتخاب شده یا همه آیتمها
|
||||||
if (!isset($params['items'])) {
|
if (!isset($params['items'])) {
|
||||||
$items = $entityManager->getRepository(HesabdariDoc::class)->findBy([
|
$query = $entityManager->createQueryBuilder()
|
||||||
'bid' => $acc['bid'],
|
->select('d')
|
||||||
'type' => 'income',
|
->from(HesabdariDoc::class, 'd')
|
||||||
'year' => $acc['year'],
|
->where('d.bid = :bid')
|
||||||
'money' => $acc['money']
|
->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 {
|
} else {
|
||||||
$items = [];
|
$items = [];
|
||||||
foreach ($params['items'] as $param) {
|
foreach ($params['items'] as $param) {
|
||||||
|
@ -445,7 +495,10 @@ class IncomeController extends AbstractController
|
||||||
'money' => $acc['money']
|
'money' => $acc['money']
|
||||||
]);
|
]);
|
||||||
if ($doc) {
|
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->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());
|
||||||
|
}
|
||||||
|
|
||||||
$entityManager->persist($doc);
|
$entityManager->persist($doc);
|
||||||
$entityManager->flush();
|
$entityManager->flush();
|
||||||
|
|
||||||
|
|
Loading…
Reference in a new issue