File: /home/jairicem/bunkerltd.com/app/libraries/Gst.php
<?php
defined('BASEPATH') or exit('No direct script access allowed');
/*
* ==============================================================================
* Author : Mian Saleem
* Email : saleem@tecdiary.com
* For : Stock Manager Advance
* Web : http://tecdiary.com
* ==============================================================================
*/
class Gst
{
public function __construct()
{
}
public function __get($var)
{
return get_instance()->$var;
}
public function calculateIndianGST($item_tax, $state, $tax_details)
{
if ($this->Settings->indian_gst) {
$cgst = $sgst = $igst = 0;
if ($state) {
$gst = $tax_details->type == 1 ? $this->sma->formatDecimal(($tax_details->rate / 2), 0) . '%' : $this->sma->formatDecimal(($tax_details->rate / 2), 0);
$cgst = $this->sma->formatDecimal(($item_tax / 2), 4);
$sgst = $this->sma->formatDecimal(($item_tax / 2), 4);
} else {
$gst = $tax_details->type == 1 ? $this->sma->formatDecimal(($tax_details->rate), 0) . '%' : $this->sma->formatDecimal(($tax_details->rate), 0);
$igst = $item_tax;
}
return ['gst' => $gst, 'cgst' => $cgst, 'sgst' => $sgst, 'igst' => $igst];
}
return [];
}
public function genHTML($tax_summary = [], $product_tax = 0)
{
$html = '';
if (!empty($tax_summary)) {
$html .= '<div style="text-align:left;"><h4 style="font-weight:bold;">' . lang('tax_summary') . '</h4></div>';
$html .= '<table class="table table-bordered table-striped print-table order-table table-condensed"><thead><tr><th>' . lang('name') . '</th><th>' . lang('code') . '</th><th>' . lang('qty') . '</th><th>' . lang('tax_excl') . '</th><th>' . lang('tax_amt') . '</th></tr></td><tbody>';
foreach ($tax_summary as $summary) {
$html .= '<tr><td>' . $summary['name'] . '</td><td style="text-align:center;">' . $summary['code'] . '</td><td class="text-center">' . $this->sma->formatQuantity($summary['items']) . '</td><td style="text-align:right;">' . $this->sma->formatMoney($summary['amt']) . '</td><td class="text-right">' . $this->sma->formatMoney($summary['tax']) . '</td></tr>';
}
$html .= '</tbody></tfoot>';
$html .= '<tr class="active"><th colspan="4" style="text-align:right;">' . lang('total_tax_amount') . '</th><th class="text-right">' . $this->sma->formatMoney($product_tax) . '</th></tr>';
$html .= '</tfoot></table>';
}
return $html;
}
public function getIndianStates($blank = false)
{
$istates = [
'AN' => 'Andaman & Nicobar',
'AP' => 'Andhra Pradesh',
'AR' => 'Arunachal Pradesh',
'AS' => 'Assam',
'BR' => 'Bihar',
'CH' => 'Chandigarh',
'CT' => 'Chhattisgarh',
'DN' => 'Dadra and Nagar Haveli',
'DD' => 'Daman & Diu',
'DL' => 'Delhi',
'GA' => 'Goa',
'GJ' => 'Gujarat',
'HR' => 'Haryana',
'HP' => 'Himachal Pradesh',
'JK' => 'Jammu & Kashmir',
'JH' => 'Jharkhand',
'KA' => 'Karnataka',
'KL' => 'Kerala',
'LD' => 'Lakshadweep',
'MP' => 'Madhya Pradesh',
'MH' => 'Maharashtra',
'MN' => 'Manipur',
'ML' => 'Meghalaya',
'MZ' => 'Mizoram',
'NL' => 'Nagaland',
'OR' => 'Odisha',
'PY' => 'Puducherry',
'PB' => 'Punjab',
'RJ' => 'Rajasthan',
'SK' => 'Sikkim',
'TN' => 'Tamil Nadu',
'TS' => 'Telangana',
'TR' => 'Tripura',
'UK' => 'Uttarakhand',
'UP' => 'Uttar Pradesh',
'WB' => 'West Bengal',
];
if ($blank) {
array_unshift($istates, lang('select'));
}
return $istates;
}
public function summary($rows = [], $return_rows = [], $product_tax = 0, $onCost = false)
{
$code = '';
if ($this->Settings->invoice_view > 0 && !empty($rows)) {
$tax_summary = $this->taxSummary($rows, $onCost);
if (!empty($return_rows)) {
$return_tax_summary = $this->taxSummary($return_rows, $onCost);
foreach ($return_tax_summary as $arg) {
$tax_summary[] = $arg;
}
}
$code = $this->genHTML($tax_summary, $product_tax);
}
return $code;
}
public function taxSummary($rows = [], $onCost = false)
{
$tax_summary = [];
if (!empty($rows)) {
foreach ($rows as $row) {
if (isset($tax_summary[$row->tax_code])) {
$tax_summary[$row->tax_code]['items'] += $row->unit_quantity;
$tax_summary[$row->tax_code]['tax'] += $row->item_tax;
$tax_summary[$row->tax_code]['amt'] += ($row->unit_quantity * ($onCost ? $row->net_unit_cost : $row->net_unit_price));
} else {
$tax_summary[$row->tax_code]['items'] = $row->unit_quantity;
$tax_summary[$row->tax_code]['tax'] = $row->item_tax;
$tax_summary[$row->tax_code]['amt'] = ($row->unit_quantity * ($onCost ? $row->net_unit_cost : $row->net_unit_price));
$tax_summary[$row->tax_code]['name'] = $row->tax_name;
$tax_summary[$row->tax_code]['code'] = $row->tax_code;
$tax_summary[$row->tax_code]['rate'] = $row->tax_rate;
}
}
}
return $tax_summary;
}
}