diff --git a/hesabixCore/src/Cog/AccountingDocService.php b/hesabixCore/src/Cog/AccountingDocService.php index 97a6bcf..b800e54 100644 --- a/hesabixCore/src/Cog/AccountingDocService.php +++ b/hesabixCore/src/Cog/AccountingDocService.php @@ -55,7 +55,7 @@ class AccountingDocService 'person' => $person, 'year' => $acc['year'] ], [ - 'id' => 'DESC' + 'id' => 'ASC' ]); } elseif ($params['type'] == 'bank') { $bank = $em->getRepository(\App\Entity\BankAccount::class)->findOneBy([ @@ -68,7 +68,7 @@ class AccountingDocService 'bank' => $bank, 'year' => $acc['year'] ], [ - 'id' => 'DESC' + 'id' => 'ASC' ]); } elseif ($params['type'] == 'cashdesk') { $cashdesk = $em->getRepository(\App\Entity\Cashdesk::class)->findOneBy([ @@ -81,7 +81,7 @@ class AccountingDocService 'cashdesk' => $cashdesk, 'year' => $acc['year'] ], [ - 'id' => 'DESC' + 'id' => 'ASC' ]); } elseif ($params['type'] == 'salary') { $salary = $em->getRepository(\App\Entity\Salary::class)->findOneBy([ @@ -94,13 +94,29 @@ class AccountingDocService 'salary' => $salary, 'year' => $acc['year'] ], [ - 'id' => 'DESC' + 'id' => 'ASC' ]); } else { return ['error' => 'نوع پشتیبانی نمی‌شود']; } + $dataTemp = []; + $runningBalance = 0; // باقی‌مانده تجمعی + foreach ($data as $item) { + // محاسبه باقی‌مانده تجمعی + $runningBalance += ($item->getBs() - $item->getBd()); + + // محاسبه تشخیص بر اساس باقی‌مانده تجمعی + $settlement = ''; + if ($runningBalance > 0) { + $settlement = 'بستانکار'; + } elseif ($runningBalance < 0) { + $settlement = 'بدهکار'; + } else { + $settlement = 'تسویه‌شده'; + } + $temp = [ 'id' => $item->getId(), 'dateSubmit' => $item->getDoc()->getDateSubmit(), @@ -111,10 +127,14 @@ class AccountingDocService 'bs' => $item->getBs(), 'bd' => $item->getBd(), 'code' => $item->getDoc()->getCode(), - 'submitter' => $item->getDoc()->getSubmitter()->getFullName() + 'submitter' => $item->getDoc()->getSubmitter()->getFullName(), + 'settlement' => $settlement, // ستون تشخیص + 'balance' => $runningBalance // ستون باقی‌مانده ]; $dataTemp[] = $temp; } - return $dataTemp; + + // معکوس کردن ترتیب برای نمایش جدیدترین‌ها اول + return array_reverse($dataTemp); } } \ No newline at end of file diff --git a/hesabixCore/src/Controller/PersonsController.php b/hesabixCore/src/Controller/PersonsController.php index 76fbae6..f237127 100644 --- a/hesabixCore/src/Controller/PersonsController.php +++ b/hesabixCore/src/Controller/PersonsController.php @@ -721,10 +721,25 @@ class PersonsController extends AbstractController 'تفضیل', 'بستانکار', 'بدهکار', + 'تشخیص', + 'باقی‌مانده', 'سال مالی', ] ]; + + $runningBalance = 0; foreach ($transactions as $transaction) { + $runningBalance += ($transaction->getBs() - $transaction->getBd()); + + $settlement = ''; + if ($runningBalance > 0) { + $settlement = 'بستانکار'; + } elseif ($runningBalance < 0) { + $settlement = 'بدهکار'; + } else { + $settlement = 'تسویه‌شده'; + } + $arrayEntity[] = [ $transaction->getId(), $transaction->getDoc()->getDate(), @@ -732,6 +747,8 @@ class PersonsController extends AbstractController $transaction->getRef()->getName(), $transaction->getBs(), $transaction->getBd(), + $settlement, + $runningBalance, $transaction->getYear()->getlabel() ]; } diff --git a/hesabixCore/templates/pdf/person_card.html.twig b/hesabixCore/templates/pdf/person_card.html.twig index 2e357a0..53e200b 100644 --- a/hesabixCore/templates/pdf/person_card.html.twig +++ b/hesabixCore/templates/pdf/person_card.html.twig @@ -81,13 +81,25 @@ تفضیل بدهکار بستانکار + تشخیص + باقی‌مانده شرح سند {% set sumBs = 0 %} {% set sumBd = 0 %} + {% set runningBalance = 0 %} {% for item in items %} {% set sumBs = sumBs + item.bs %} {% set sumBd = sumBd + item.bd %} + {% set runningBalance = runningBalance + (item.bs - item.bd) %} + {% set settlement = '' %} + {% if runningBalance > 0 %} + {% set settlement = 'بستانکار' %} + {% elseif runningBalance < 0 %} + {% set settlement = 'بدهکار' %} + {% else %} + {% set settlement = 'تسویه‌شده' %} + {% endif %} {{ loop.index }} {{ item.doc.code }} @@ -96,6 +108,8 @@ {{ item.ref.name }} {{ item.bd | number_format }} {{ item.bs | number_format }} + {{ settlement }} + {{ runningBalance | number_format }} {{ item.doc.des }} {% endfor %} diff --git a/webUI/src/i18n/fa_lang.ts b/webUI/src/i18n/fa_lang.ts index c31373c..7049c8b 100755 --- a/webUI/src/i18n/fa_lang.ts +++ b/webUI/src/i18n/fa_lang.ts @@ -779,7 +779,9 @@ const fa_lang = { "reject_cheque": "برگشت چک", "modify_cheque": "ثبت چک", "modify_cheque_output": "دریافت چک", - "pass_cheque": "واگذاری چک" + "pass_cheque": "واگذاری چک", + "settlement": "تشخیص", + "running_balance": "باقی‌مانده" }, dashboard: { admin_area: "ناحیه مدیریت", diff --git a/webUI/src/views/acc/persons/card.vue b/webUI/src/views/acc/persons/card.vue index 5d4c417..6fa709a 100755 --- a/webUI/src/views/acc/persons/card.vue +++ b/webUI/src/views/acc/persons/card.vue @@ -216,6 +216,24 @@ + + @@ -255,6 +273,8 @@ export default { { title: this.$t('pages.person_card.detail'), key: "ref", align: "center", sortable: true }, { title: this.$t('pages.person_card.debit'), key: "bd", align: "center", sortable: true }, { title: this.$t('pages.person_card.credit'), key: "bs", align: "center", sortable: true }, + { title: this.$t('pages.person_card.settlement'), key: "settlement", align: "center", sortable: true }, + { title: this.$t('pages.person_card.running_balance'), key: "balance", align: "center", sortable: true }, ], }; },