ria/app/Helpers/numberseries_helper.php
2025-04-05 05:50:38 +00:00

109 lines
4.0 KiB
PHP
Executable File

<?php
if (!function_exists('generate_po_number')) {
function generate_po_number($last_pono)
{
$currentYear = date("Y");
$shortenFinYear = get_shorten_financial_year();// Get it From - DateTime Helper refer it.
// if(here have to check fin year if there is a change means both are same means ){
// $counter = $counter + 1;
// }else{
// $counter = 1;
// }
$result = explode('/', $last_pono);
$requestedFinYear = $result[1];
$leftPad = "RIPL";
$digit = 5;
if($requestedFinYear == $shortenFinYear){
$number = ((int)$result[2])+1;
$PoNo = $leftPad . '/' . $shortenFinYear . '/' . str_pad($number, $digit, '0', STR_PAD_LEFT);
}else{
$counter = 1;
$PoNo = $leftPad . '/' . $shortenFinYear . '/' . str_pad($counter, $digit, '0', STR_PAD_LEFT);
}
return $PoNo;
}
}
if (!function_exists('generate_igr_number')) {
function generate_igr_number($last_igrno)
{
$shortenFinYear = get_shorten_financial_year();
if (preg_match('/^\w+\/\d+-\d+\/\d+$/', $last_igrno)) {
// echo $last_igrno;
$type = 1; // IGRNO/25-26/00001 // 2025 april onwards karthick asked to changed this type.
} elseif (preg_match('/^\w+-\d+$/', $last_igrno)) {
// echo $last_igrno;
$type = 2; // IGRNO-0001 // karthick asked to checked this type 2023- 2025 april
} else {
// echo $last_igrno;
$type = 3; // IGRNO00001 // very first time we followed this type
}
if ($type == 1) {
$result = explode('/', $last_igrno);
$requestedFinYear = $result[1];
$leftPad = "IGR";
$digit = 4;
if($requestedFinYear == $shortenFinYear){ // here i am comparing the shoren fin year
$number = ((int)$result[2])+1;
$IgrNo = $leftPad . '/' . $shortenFinYear . '/' . str_pad($number, $digit, '0', STR_PAD_LEFT);
}else{
// here not same means ressetted type 1 format
$counter = 1;
$IgrNo = $leftPad . '/' . $shortenFinYear . '/' . str_pad($counter, $digit, '0', STR_PAD_LEFT);
}
return $IgrNo;
}else{
// type 2 and type 3 is converted into type 1 format
$leftPad = "IGR";
$digit = 5;
$counter = 1;
$IgrNo = $leftPad . '/' . $shortenFinYear . '/' . str_pad($counter, $digit, '0', STR_PAD_LEFT);
return $IgrNo;
}
}
}
if (!function_exists('generate_non_igr_number')) {
function generate_non_igr_number($last_non_igr)
{
$shortenFinYear = get_shorten_financial_year();// Get it From
$result = explode('/', $last_non_igr);
$requestedFinYear = $result[1];
$leftPad = "NonIGR";
$digit = 3;
if($requestedFinYear == $shortenFinYear){
$number = ((int)$result[2])+1;
$NonIgrNo = $leftPad . '/' . $shortenFinYear . '/' . str_pad($number, $digit, '0', STR_PAD_LEFT);
}else{
$counter = 1;
$NonIgrNo = $leftPad . '/' . $shortenFinYear . '/' . str_pad($counter, $digit, '0', STR_PAD_LEFT);
}
return $NonIgrNo;
}
}
function generate_amendment_po_number($PoNo, $increment = 1) {
if (strpos($PoNo, '.') !== false) {
list($base, $decimal) = explode('.', $PoNo);
preg_match('/^0*(\d+)$/', $decimal, $matches);
$numeric_part = isset($matches[1]) ? $matches[1] : '';
$new_numeric_part = intval($numeric_part) + $increment;
// Determine the number of leading zeros based on the original numeric part length
$new_decimal_length = strlen($numeric_part) > 1 ? strlen($numeric_part) : 2;
$new_decimal = str_pad($new_numeric_part, $new_decimal_length, '0', STR_PAD_LEFT);
return $base . '.' . $new_decimal;
} else {
return $PoNo . '.01';
}
}
?>