work on deemand sheet
This commit is contained in:
@@ -1,4 +1,4 @@
|
|||||||
<div class="container">
|
<div class="">
|
||||||
<div class="text-right mb-3" style="margin-bottom: 15px;">
|
<div class="text-right mb-3" style="margin-bottom: 15px;">
|
||||||
<button id="downloadPdf" class="btn btn-primary">Download Demand Sheet</button>
|
<button id="downloadPdf" class="btn btn-primary">Download Demand Sheet</button>
|
||||||
</div>
|
</div>
|
||||||
@@ -10,16 +10,80 @@
|
|||||||
<th>AC No</th>
|
<th>AC No</th>
|
||||||
<th>Name</th>
|
<th>Name</th>
|
||||||
<th>Mobile</th>
|
<th>Mobile</th>
|
||||||
<th>Account Creation Date</th>
|
<th>Account Create Date</th>
|
||||||
<th>Maturity Value</th>
|
<th>Maturity Value</th>
|
||||||
<th>Balance</th>
|
<th>Balance</th>
|
||||||
<th>No Of Installment</th>
|
<th>Total EMI</th>
|
||||||
<th>No Of Paid Installment</th>
|
<th>Total Paid EMI</th>
|
||||||
<th>Installment Amount</th>
|
<th>Deu EMI Till Date</th>
|
||||||
|
<th>EMI Amount</th>
|
||||||
<th>Total Due Amount</th>
|
<th>Total Due Amount</th>
|
||||||
|
|
||||||
</tr>
|
</tr>
|
||||||
|
|
||||||
<?php
|
<?php
|
||||||
|
function countCycles($cycle, $createDate, $totalInstallment) {
|
||||||
|
$today = new DateTime();
|
||||||
|
$startDate = new DateTime($createDate);
|
||||||
|
|
||||||
|
$cycle = strtoupper(trim($cycle));
|
||||||
|
|
||||||
|
if ($cycle === "D") {
|
||||||
|
// দৈনিক চক্র: পরের দিন থেকে শুরু
|
||||||
|
$firstPaymentDate = (clone $startDate)->modify('+1 day');
|
||||||
|
|
||||||
|
if ($firstPaymentDate > $today) {
|
||||||
|
$count = 0;
|
||||||
|
} else {
|
||||||
|
$diff = $firstPaymentDate->diff($today);
|
||||||
|
$count = $diff->days + 1; // +1 because diff->days doesn't include start day
|
||||||
|
}
|
||||||
|
} elseif ($cycle === "W") {
|
||||||
|
// সাপ্তাহিক চক্র: ৭ দিন পরে প্রথম EMI
|
||||||
|
$firstPaymentDate = (clone $startDate)->modify('+7 days');
|
||||||
|
|
||||||
|
if ($firstPaymentDate > $today) {
|
||||||
|
$count = 0;
|
||||||
|
} else {
|
||||||
|
$diff = $firstPaymentDate->diff($today);
|
||||||
|
$count = floor($diff->days / 7) + 1;
|
||||||
|
}
|
||||||
|
} elseif ($cycle === "M") {
|
||||||
|
// মাসিক চক্র: পরের মাসের同一天 প্রথম EMI
|
||||||
|
$firstPaymentDate = (clone $startDate)->modify('+1 month');
|
||||||
|
|
||||||
|
// যদি পরের মাসে同一天 না থাকে (যেমন 31st Jan থেকে 28/29th Feb)
|
||||||
|
if ($firstPaymentDate->format('d') != $startDate->format('d')) {
|
||||||
|
$firstPaymentDate->modify('last day of this month');
|
||||||
|
}
|
||||||
|
|
||||||
|
if ($firstPaymentDate > $today) {
|
||||||
|
$count = 0;
|
||||||
|
} else {
|
||||||
|
$count = 1; // প্রথম EMI already due
|
||||||
|
$nextPaymentDate = clone $firstPaymentDate;
|
||||||
|
|
||||||
|
// পরের মাসগুলির জন্য গণনা
|
||||||
|
while ($nextPaymentDate <= $today) {
|
||||||
|
$nextPaymentDate->modify('+1 month');
|
||||||
|
|
||||||
|
// তারিখ adjust করাが必要 হলে
|
||||||
|
if ($nextPaymentDate->format('d') != $firstPaymentDate->format('d')) {
|
||||||
|
$nextPaymentDate->modify('last day of this month');
|
||||||
|
}
|
||||||
|
|
||||||
|
if ($nextPaymentDate <= $today) {
|
||||||
|
$count++;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
} else {
|
||||||
|
$count = 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
return min($count, $totalInstallment);
|
||||||
|
}
|
||||||
|
|
||||||
$conn = new mysqli($GLOBALS['host'], $GLOBALS['user'], $GLOBALS['pass'], $GLOBALS['db']);
|
$conn = new mysqli($GLOBALS['host'], $GLOBALS['user'], $GLOBALS['pass'], $GLOBALS['db']);
|
||||||
if ($conn->connect_error) { die("Connection failed: " . $conn->connect_error); }
|
if ($conn->connect_error) { die("Connection failed: " . $conn->connect_error); }
|
||||||
|
|
||||||
@@ -39,11 +103,11 @@ $grandTotal = [
|
|||||||
foreach($types as $type){
|
foreach($types as $type){
|
||||||
$typeLike = "%$type%";
|
$typeLike = "%$type%";
|
||||||
if($_SESSION['type']==='admin'){
|
if($_SESSION['type']==='admin'){
|
||||||
$sql = "SELECT * FROM `" . $GLOBALS['arif_ac'] . "` WHERE `AA_TYPE` LIKE ? AND (`STATUS` IS NULL OR `STATUS`!='closed') ORDER BY `AA_ID` DESC";
|
$sql = "SELECT * FROM `" . $GLOBALS['arif_ac'] . "` WHERE `AA_TYPE` LIKE ? AND (`STATUS` IS NULL OR (`STATUS`!='closed' AND `STATUS`!='matured')) ORDER BY `AA_ID` DESC";
|
||||||
$stmt = $conn->prepare($sql);
|
$stmt = $conn->prepare($sql);
|
||||||
$stmt->bind_param("s", $typeLike);
|
$stmt->bind_param("s", $typeLike);
|
||||||
} elseif($_SESSION['type']==='agent'){
|
} elseif($_SESSION['type']==='agent'){
|
||||||
$sql = "SELECT * FROM `" . $GLOBALS['arif_ac'] . "` WHERE `AA_TYPE` LIKE ? AND (`STATUS` IS NULL OR `STATUS`!='closed') AND `AA_AGENT`=? ORDER BY `AA_ID` DESC";
|
$sql = "SELECT * FROM `" . $GLOBALS['arif_ac'] . "` WHERE `AA_TYPE` LIKE ? AND (`STATUS` IS NULL OR (`STATUS`!='closed' AND `STATUS`!='matured')) AND `AA_AGENT`=? ORDER BY `AA_ID` DESC";
|
||||||
$stmt = $conn->prepare($sql);
|
$stmt = $conn->prepare($sql);
|
||||||
$stmt->bind_param("ss", $typeLike, $agent_id);
|
$stmt->bind_param("ss", $typeLike, $agent_id);
|
||||||
}
|
}
|
||||||
@@ -52,7 +116,7 @@ foreach($types as $type){
|
|||||||
$result = $stmt->get_result();
|
$result = $stmt->get_result();
|
||||||
|
|
||||||
if($result->num_rows>0){
|
if($result->num_rows>0){
|
||||||
echo "<tr><td colspan='11' style='text-align:center; font-weight:bold; background:#f0f0f0;'>$type Demand</td></tr>";
|
echo "<tr><td colspan='13' style='text-align:center; font-weight:bold; background:#f0f0f0;'>$type Demand</td></tr>";
|
||||||
|
|
||||||
while($row = $result->fetch_assoc()){
|
while($row = $result->fetch_assoc()){
|
||||||
$totalDueAmt = $row['AA_BAL'];
|
$totalDueAmt = $row['AA_BAL'];
|
||||||
@@ -68,36 +132,48 @@ foreach($types as $type){
|
|||||||
$paidInst = 0; // বা অন্য লজিক
|
$paidInst = 0; // বা অন্য লজিক
|
||||||
$remainInst = 0;
|
$remainInst = 0;
|
||||||
}
|
}
|
||||||
// echo $row['AA_BAL'] . ' : ' . $row['AA_INSTALLMENT'];
|
$paidInstallment = ($row['AA_MATURE_VALUE'] + $row['AA_BAL']) / $row['AA_INSTALLMENT'];
|
||||||
|
$paidInstallment = number_format($paidInstallment, 2, '.', '');
|
||||||
|
|
||||||
|
$deuEMITillDate = countCycles($row['AA_ACTYPE'], $row['AA_DATE'], $row['AA_NO_OF_PAYMENT']) - $paidInstallment;
|
||||||
|
$deuEMITillDate = abs($deuEMITillDate);
|
||||||
|
$deuEMITillDate = number_format($deuEMITillDate, 2, '.', '');
|
||||||
// HTML table row
|
// HTML table row
|
||||||
echo "<tr>
|
echo "<tr>
|
||||||
<td>".$sl."</td>
|
<td>".$sl."</td>
|
||||||
<td>".$row['AA_TYPE']."</td>
|
<td>".$row['AA_ACTYPE'].", ".$row['AA_TYPE']."</td>
|
||||||
<td>".$row['AA_ACNO']."</td>
|
<td>".$row['AA_ACNO']."</td>
|
||||||
<td>".$row['AA_NAME']."</td>
|
<td>".$row['AA_NAME']."</td>
|
||||||
<td>".$row['AA_PHONE']."</td>
|
<td>".$row['AA_PHONE']."</td>
|
||||||
<td>".$row['AA_DATE']."</td>
|
<td>".$row['AA_DATE']."</td>
|
||||||
<td>".$row['AA_MATURE_VALUE']."</td>
|
<td>".$row['AA_MATURE_VALUE']."</td>
|
||||||
<td>".$row['AA_BAL']."</td>
|
<td>".$row['AA_BAL']."</td>
|
||||||
<td>".$remainInst."</td>
|
<td>".$row['AA_NO_OF_PAYMENT']."</td>
|
||||||
<td>".$paidInst."</td>
|
<td>".$paidInstallment."</td>
|
||||||
<td>".$row['AA_INSTALLMENT']."</td>
|
<td>".$deuEMITillDate."</td>
|
||||||
<td>".$totalDueAmt."</td>
|
<td>".$row['AA_INSTALLMENT']."</td>
|
||||||
</tr>";
|
<td>".$totalDueAmt."</td>
|
||||||
|
|
||||||
|
</tr>";
|
||||||
|
// <td>".$remainInst."</td> <td>".$row['AA_NO_OF_PAYMENT']."</td>
|
||||||
// PDF simplified row
|
// PDF simplified row
|
||||||
$pdfData[] = [
|
// "SL","NAME ","MOBILE NO", "CYCLE", "ACCOUNT NO","EMI PAID","EMI DUE", "EMI AMOUNT", "CUSTOMER. SIGN"
|
||||||
$type,
|
if($deuEMITillDate != 0){
|
||||||
$sl,
|
$pdfData[] = [
|
||||||
$row['AA_NAME'], // NAME OF ACCOUNT HOLDER
|
$type,
|
||||||
$row['AA_PHONE'], // MOBILE NO (blank)
|
$sl,
|
||||||
$row['AA_ACNO'], // ACCOUNT NO
|
$row['AA_NAME'], // NAME OF ACCOUNT HOLDER
|
||||||
$paidInst, // NO OF INSTALLMENT PAID
|
$row['AA_PHONE'], // MOBILE NO (blank)
|
||||||
$remainInst, // NO OF INSTALLMENT DUE
|
$row['AA_ACTYPE'], // EMI Cycle
|
||||||
$row['AA_INSTALLMENT'], // EMI AMOUNT
|
$row['AA_ACNO'], // ACCOUNT NO
|
||||||
$totalDueAmt, // TOTAL DUE AMOUNT
|
$paidInstallment, // NO OF INSTALLMENT PAID
|
||||||
"" // CUSTOMER SIGNATURE
|
$deuEMITillDate, // NO OF INSTALLMENT DUE
|
||||||
];
|
$row['AA_INSTALLMENT'], // EMI AMOUNT
|
||||||
|
// $totalDueAmt, // TOTAL DUE AMOUNT
|
||||||
|
"" // CUSTOMER SIGNATURE
|
||||||
|
];
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
// Update grand total
|
// Update grand total
|
||||||
$grandTotal['accounts']++;
|
$grandTotal['accounts']++;
|
||||||
@@ -149,7 +225,7 @@ document.addEventListener('DOMContentLoaded', function() {
|
|||||||
|
|
||||||
let y = 130;
|
let y = 130;
|
||||||
|
|
||||||
const headers = ["SL","NAME ","MOBILE NO","ACCOUNT NO","EMI PAID","EMI DUE", "EMI AMOUNT", "TOTAL DUE AMOUNT","CUSTOMER. SIGN"];
|
const headers = ["SL","NAME ","MOBILE NO", "CYCLE", "ACCOUNT NO","EMI PAID","EMI DUE", "EMI AMOUNT", "CUSTOMER. SIGN"];
|
||||||
let currentType = '';
|
let currentType = '';
|
||||||
let rows = [];
|
let rows = [];
|
||||||
|
|
||||||
@@ -162,7 +238,7 @@ document.addEventListener('DOMContentLoaded', function() {
|
|||||||
startY:y,
|
startY:y,
|
||||||
styles:{
|
styles:{
|
||||||
fontSize:7,
|
fontSize:7,
|
||||||
cellPadding:6,
|
cellPadding:3,
|
||||||
lineWidth: 0.1, // border width
|
lineWidth: 0.1, // border width
|
||||||
lineColor: [0, 0, 0] // black border color
|
lineColor: [0, 0, 0] // black border color
|
||||||
},
|
},
|
||||||
@@ -190,7 +266,7 @@ document.addEventListener('DOMContentLoaded', function() {
|
|||||||
startY:y,
|
startY:y,
|
||||||
styles:{
|
styles:{
|
||||||
fontSize:7,
|
fontSize:7,
|
||||||
cellPadding:6,
|
cellPadding:3,
|
||||||
lineWidth: 0.1, // border width
|
lineWidth: 0.1, // border width
|
||||||
lineColor: [0, 0, 0] // black border color
|
lineColor: [0, 0, 0] // black border color
|
||||||
},
|
},
|
||||||
|
|||||||
1160
pma/tmp/twig/0d/0db8cfffd3d09171c872ac1e72f62ca0.php
Normal file
1160
pma/tmp/twig/0d/0db8cfffd3d09171c872ac1e72f62ca0.php
Normal file
File diff suppressed because it is too large
Load Diff
71
pma/tmp/twig/a1/a1e2156a9f6527a4e1b3d8858b435fa0.php
Normal file
71
pma/tmp/twig/a1/a1e2156a9f6527a4e1b3d8858b435fa0.php
Normal file
@@ -0,0 +1,71 @@
|
|||||||
|
<?php
|
||||||
|
|
||||||
|
use Twig\Environment;
|
||||||
|
use Twig\Error\LoaderError;
|
||||||
|
use Twig\Error\RuntimeError;
|
||||||
|
use Twig\Extension\SandboxExtension;
|
||||||
|
use Twig\Markup;
|
||||||
|
use Twig\Sandbox\SecurityError;
|
||||||
|
use Twig\Sandbox\SecurityNotAllowedTagError;
|
||||||
|
use Twig\Sandbox\SecurityNotAllowedFilterError;
|
||||||
|
use Twig\Sandbox\SecurityNotAllowedFunctionError;
|
||||||
|
use Twig\Source;
|
||||||
|
use Twig\Template;
|
||||||
|
|
||||||
|
/* table/import/index.twig */
|
||||||
|
class __TwigTemplate_5ea560073dcab819362801734e57360e extends Template
|
||||||
|
{
|
||||||
|
private $source;
|
||||||
|
private $macros = [];
|
||||||
|
|
||||||
|
public function __construct(Environment $env)
|
||||||
|
{
|
||||||
|
parent::__construct($env);
|
||||||
|
|
||||||
|
$this->source = $this->getSourceContext();
|
||||||
|
|
||||||
|
$this->blocks = [
|
||||||
|
'title' => [$this, 'block_title'],
|
||||||
|
];
|
||||||
|
}
|
||||||
|
|
||||||
|
protected function doGetParent(array $context)
|
||||||
|
{
|
||||||
|
// line 1
|
||||||
|
return "import.twig";
|
||||||
|
}
|
||||||
|
|
||||||
|
protected function doDisplay(array $context, array $blocks = [])
|
||||||
|
{
|
||||||
|
$macros = $this->macros;
|
||||||
|
$this->parent = $this->loadTemplate("import.twig", "table/import/index.twig", 1);
|
||||||
|
$this->parent->display($context, array_merge($this->blocks, $blocks));
|
||||||
|
}
|
||||||
|
|
||||||
|
// line 3
|
||||||
|
public function block_title($context, array $blocks = [])
|
||||||
|
{
|
||||||
|
$macros = $this->macros;
|
||||||
|
echo twig_escape_filter($this->env, twig_sprintf(_gettext("Importing into the table \"%s\""), ($context["table"] ?? null)), "html", null, true);
|
||||||
|
}
|
||||||
|
|
||||||
|
public function getTemplateName()
|
||||||
|
{
|
||||||
|
return "table/import/index.twig";
|
||||||
|
}
|
||||||
|
|
||||||
|
public function isTraitable()
|
||||||
|
{
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
|
public function getDebugInfo()
|
||||||
|
{
|
||||||
|
return array ( 46 => 3, 35 => 1,);
|
||||||
|
}
|
||||||
|
|
||||||
|
public function getSourceContext()
|
||||||
|
{
|
||||||
|
return new Source("", "table/import/index.twig", "/home/suvo/web/graffin.ns77.siliconpin.com/public_html/pma/templates/table/import/index.twig");
|
||||||
|
}
|
||||||
|
}
|
||||||
Reference in New Issue
Block a user