diff --git a/app/Config/Routes.php b/app/Config/Routes.php
index b08ca39c..a7164a8c 100755
--- a/app/Config/Routes.php
+++ b/app/Config/Routes.php
@@ -437,6 +437,7 @@ $routes->get('sales_invoice', 'Sales::sales_invoice');
$routes->post('sales_invoice', 'Sales::sales_invoice');
$routes->post('download_sales_invoice', 'Sales::download_sales_invoice');
$routes->post('updateInvRecQty', 'Sales::updateInvRecQty');
+$routes->match(['GET', 'POST'], 'sales_report', 'Sales::sales_report');
// transporter Routes
$routes->get('transporterListing', 'Supplier::transporterListing');
diff --git a/app/Controllers/Sales.php b/app/Controllers/Sales.php
index 48b2656b..a58fb3ee 100755
--- a/app/Controllers/Sales.php
+++ b/app/Controllers/Sales.php
@@ -118,6 +118,44 @@ class Sales extends BaseController
$this->loadViews("sales_invoice", $this->global, $data, NULL);
}
+
+ public function sales_report()
+ {
+ $headline = '';
+ $report = [];
+
+ if ($this->request->getMethod(true) === 'POST' && $this->request->getPost('btn_submit')) {
+
+
+ $from_date = $this->request->getPost('from_date');
+ $to_date = $this->request->getPost('to_date');
+ $hsn_number = $this->request->getPost('hsn_number');
+ $product_id = $this->request->getPost('product');
+ $client_id = $this->request->getPost('client');
+
+
+
+ $headline .= ((isset($from_date) && isset($to_date)) && (!empty($from_date) && !empty($to_date))) ? $from_date . ' to ' . $to_date. ', ' : '';
+ $headline .= (isset($hsn_number) && !empty($hsn_number)) ? $hsn_number . ', ' : '';
+ $headline .= (isset($product_id) && !empty($product_id)) ? $this->ipinvoice_model->getProductName($product_id) . ', ' : '';
+ $headline .= (isset($client_id) && !empty($client_id)) ? $this->ipinvoice_model->getClientName($client_id) . ', ' : '';
+
+
+
+ $report = $this->ipinvoice_model->sales_report($from_date, $to_date, $hsn_number, $product_id, $client_id);
+ }
+ $data['hsn'] = $this->ipinvoice_model->getHsn();
+ $data['product'] = $this->ipinvoice_model->getProducts();
+ $data['client'] = $this->ipinvoice_model->getClients();
+
+ $data['headline'] = $headline;
+ $data['sales_invoice'] = $report;
+
+ // Load the view
+ $this->global['pageTitle'] = 'Reports';
+ $this->loadviews("report_sales", $this->global, $data, NULL);
+ }
+
public function download_sales_invoice()
{
// Fetch data from the model
diff --git a/app/Controllers/User.php b/app/Controllers/User.php
index 5cea8b2e..6209aefd 100755
--- a/app/Controllers/User.php
+++ b/app/Controllers/User.php
@@ -1368,6 +1368,10 @@ class User extends BaseController
$headers_new = $result['headers_new'];
$res = json_decode($result['data'], true);
$inv_array = $res['invoices'];
+
+ // $cteditNotes = getAllCreditNotes($date_today, $date_yesterday, $token);
+ // dd($cteditNotes);
+
// dd($inv_array);
// print_r($inv_array);
// echo "rrrr";
@@ -1388,6 +1392,7 @@ class User extends BaseController
// dd($res2);
foreach ($res2 as $rs) {
+
$gst_no = $rs['gst_no'];
$customer_id = $rs['customer_id'];
$customer_name = $rs['customer_name'];
@@ -1538,7 +1543,7 @@ class User extends BaseController
if (isset($rs['line_items']) && count($rs['line_items']) > 0) {
log_message('error', 'Processing line items' . count($rs['line_items']));
- dd($rs);
+ // dd($rs);
for ($i = 0; $i < count($rs['line_items']); $i++) { //start insert line items
$sku = $rs['line_items'][$i]['sku'];
diff --git a/app/Helpers/zohobook_helper.php b/app/Helpers/zohobook_helper.php
index bfce0ba3..4d957e05 100755
--- a/app/Helpers/zohobook_helper.php
+++ b/app/Helpers/zohobook_helper.php
@@ -110,4 +110,94 @@ if (! function_exists('test_helper')) {
}
}
+if (! function_exists('getAllCreditNotes')) {
+ // function getAllCreditNotes($date_today, $date_yesterday, $accesstoken)
+ // {
+ // // Initialize cURL
+ // $ch = curl_init();
+
+ // // Zoho API credentials
+ // $organization_id = '776847408';
+ // // $url_org = "https://books.zoho.com/api/v3/creditnotes?";
+ // $url_org = "https://www.zohoapis.com/books/v3/creditnotes?";
+
+ // // Construct query parameters
+ // $fields = array(
+ // "usestate" => "true",
+ // "organization_id" => $organization_id,
+ // "date_start" => $date_yesterday,
+ // "date_end" => $date_today
+ // );
+ // $data_all = http_build_query($fields);
+
+ // // Set headers
+ // $headers = array(
+ // 'Authorization: Zoho-oauthtoken '.$accesstoken,
+ // 'Content-Type: application/json'
+ // );
+
+ // // Construct URL
+ // $data_access = $url_org.$data_all;
+
+ // // Set cURL options
+ // curl_setopt($ch, CURLOPT_URL, $data_access);
+ // curl_setopt($ch, CURLOPT_HTTPHEADER, $headers);
+
+ // curl_setopt($ch, CURLOPT_HEADER, 0);
+ // curl_setopt($ch, CURLOPT_CUSTOMREQUEST, "GET");
+ // curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
+
+ // // Execute cURL request
+ // $result = curl_exec($ch);
+
+ // // Store headers and data
+ // $data['headers_new'] = $headers;
+ // $data['data'] = curl_exec($ch);
+ // // Return data
+ // return $data;
+ // }
+
+ function getAllCreditNotes($date_today, $date_yesterday, $accesstoken)
+ {
+ // Initialize cURL
+ $ch = curl_init();
+ var_dump($accesstoken);
+ // Zoho API credentials
+ $organization_id = '776847408';
+ $url_org = "https://books.zoho.com/api/v3/creditnotes?";
+
+ // Construct query parameters manually (Zoho might need raw values)
+ $query_string = "usestate=true&organization_id=$organization_id&date_start=$date_yesterday&date_end=$date_today";
+
+ // Set headers
+ $headers = array(
+ 'Authorization: Zoho-oauthtoken ' . $accesstoken,
+ 'Content-Type: application/json'
+ );
+
+ // Set cURL options
+ curl_setopt($ch, CURLOPT_URL, $url_org . $query_string);
+ curl_setopt($ch, CURLOPT_HTTPHEADER, $headers);
+ curl_setopt($ch, CURLOPT_CUSTOMREQUEST, "GET");
+ curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
+
+ // Execute cURL request
+ $result = curl_exec($ch);
+
+ // Check for errors
+ if ($result === false) {
+ return ['error' => curl_error($ch)];
+ }
+
+ // Close cURL session
+ curl_close($ch);
+
+ return [
+ 'headers_new' => $headers,
+ 'data' => $result
+ ];
+ }
+
+}
+
?>
\ No newline at end of file
diff --git a/app/Models/Inwardgateregister_model.php b/app/Models/Inwardgateregister_model.php
index 4ec07343..f8f6a1b3 100755
--- a/app/Models/Inwardgateregister_model.php
+++ b/app/Models/Inwardgateregister_model.php
@@ -410,6 +410,7 @@ class Inwardgateregister_model extends Model
LEFT JOIN t_purchaseorder_lineitem POL ON PONO = POL.PONO AND IGRD.MaterialCode = POL.MaterialCode
LEFT JOIN t_revenue_tax tax ON tax.LineItemNo = POL.LineItemNo
WHERE IGRD.IGRNO = igr.IGRNO AND IGRD.QuantityAsPerInvoice != 0
+ GROUP BY POL.PONO
LIMIT 1
)
WHEN (PO.POType = 'service' OR (PO.POType = 'capital' AND PO.CapitalRange = '1')) THEN (
@@ -421,6 +422,7 @@ class Inwardgateregister_model extends Model
LEFT JOIN t_purchaseorder_lineitem POL ON PONO = POL.PONO AND IGRD.MaterialCode = POL.MaterialCode
LEFT JOIN t_service_tax tax ON tax.LineItemNo = POL.LineItemNo
WHERE IGRD.IGRNO = igr.IGRNO AND IGRD.QuantityAsPerInvoice != 0
+ GROUP BY POL.PONO
LIMIT 1
)
diff --git a/app/Models/Ipinvoice_model.php b/app/Models/Ipinvoice_model.php
index 40f8b1c7..dc662e6f 100755
--- a/app/Models/Ipinvoice_model.php
+++ b/app/Models/Ipinvoice_model.php
@@ -4,6 +4,7 @@ namespace App\Models;
use CodeIgniter\Model;
+
class Ipinvoice_model extends Model
{
@@ -23,7 +24,7 @@ class Ipinvoice_model extends Model
ip_invoices.invoice_number, ip_invoices.invoice_terms, ip_invoices.status, ip_invoices.e_invoice_number, ip_invoices.invoice_url, ip_clients.client_name,
ip_payment_methods.payment_method_name, ip_users.user_name,
ip_products.product_name, ip_invoice_items.item_price, ip_products.cgst, ip_products.sgst,
- ip_invoice_items.item_quantity, ip_invoice_items.item_price, ip_invoice_items.item_name, ip_invoice_items.item_quantity,
+ ip_invoice_items.item_quantity, ip_invoice_items.item_price, ip_invoice_items.item_name, ip_invoice_items.item_quantity,ip_invoice_items.hsn_or_sac,
ip_invoice_amounts.invoice_total, ip_invoice_amounts.invoice_item_subtotal, ip_invoice_amounts.invoice_item_tax_total
,ip_invoice_attachment.file_name , ip_invoices.received_qty')
->join('ip_payment_methods', 'ip_invoices.payment_method = ip_payment_methods.payment_method_id', 'left')
@@ -41,47 +42,100 @@ class Ipinvoice_model extends Model
$result = $query->getResult();
// $results = $query->getResultArray();
return $result;
- // $invoices = [];
-
- // foreach ($results as $row) {
- // $invoice_id = $row['invoice_id'];
-
- // // If the invoice_id doesn't exist in the $invoices array, initialize it
- // if (!isset($invoices[$invoice_id])) {
- // $invoices[$invoice_id] = [
- // 'invoice_id' => $row['invoice_id'],
- // 'user_id' => $row['user_id'],
- // 'client_id' => $row['client_id'],
- // 'invoice_group_id' => $row['invoice_group_id'],
- // 'invoice_status_id' => $row['invoice_status_id'],
- // 'invoice_date_due' => $row['invoice_date_due'],
- // 'invoice_date_created' => $row['invoice_date_created'],
- // 'invoice_number' => $row['invoice_number'],
- // 'invoice_terms' => $row['invoice_terms'],
- // 'status' => $row['status'],
- // 'e_invoice_number' => $row['e_invoice_number'],
- // 'invoice_url' => $row['invoice_url'],
- // 'client_name' => $row['client_name'],
- // 'payment_method_name' => $row['payment_method_name'],
- // 'user_name' => $row['user_name'],
- // 'invoice_total' => $row['invoice_total'],
- // 'invoice_item_subtotal' => $row['invoice_item_subtotal'],
- // 'invoice_item_tax_total' => $row['invoice_item_tax_total'],
- // 'products' => [] // Initialize the products array
- // ];
- // }
-
- // // Add the product to the products array for the current invoice
- // $invoices[$invoice_id]['products'][] = [
- // 'product_name' => $row['product_name'],
- // 'item_quantity' => $row['item_quantity'],
- // 'item_price' => $row['item_price'],
- // ];
- // }
-
- // // Return the grouped invoices
- // return $invoices;
+
}
+
+ function getHsn()
+ {
+ return $this->db->table('ip_invoice_items')
+ ->select('hsn_or_sac')
+ ->distinct()
+ ->get()
+ ->getResult();
+ }
+
+ function getProducts()
+ {
+ return $this->db->table('ip_products')
+ ->select('product_id,product_name')
+ ->distinct()
+ ->get()
+ ->getResult();
+ }
+
+ function getProductName($id)
+ {
+ return $this->db->table('ip_products')
+ ->select('product_id,product_name')
+ ->where('product_id',$id)
+ ->get()->getRow()->product_name;
+
+ }
+
+
+ function getClientName($id)
+ {
+ return $this->db->table('ip_clients')
+ ->select('client_id,client_name')
+ ->where('client_id',$id)
+ ->get()->getRow()->client_name;
+ }
+
+ function getClients()
+ {
+ return $this->db->table('ip_clients')
+ ->select('client_id,client_name')
+ ->distinct()
+ ->get()
+ ->getResult();
+ }
+
+ public function sales_report($from_date, $to_date, $hsn_number, $product_id, $client_id)
+ {
+ $builder = $this->db->table('ip_invoices')
+ ->select('ip_invoices.invoice_id, ip_invoices.user_id, ip_invoices.client_id,
+ ip_invoices.invoice_group_id, ip_invoices.invoice_status_id, ip_invoices.invoice_date_due, ip_invoices.invoice_date_created,
+ ip_invoices.invoice_number, ip_invoices.invoice_terms, ip_invoices.status, ip_invoices.e_invoice_number, ip_invoices.invoice_url, ip_clients.client_name,
+ ip_payment_methods.payment_method_name, ip_users.user_name,
+ ip_products.product_name, ip_invoice_items.item_price, ip_products.cgst, ip_products.sgst,
+ ip_invoice_items.item_quantity, ip_invoice_items.item_price, ip_invoice_items.item_name, ip_invoice_items.item_quantity,ip_invoice_items.hsn_or_sac,
+ ip_invoice_amounts.invoice_total, ip_invoice_amounts.invoice_item_subtotal, ip_invoice_amounts.invoice_item_tax_total,
+ ip_invoice_attachment.file_name, ip_invoices.received_qty')
+ ->join('ip_payment_methods', 'ip_invoices.payment_method = ip_payment_methods.payment_method_id', 'left')
+ ->join('ip_clients', 'ip_invoices.client_id = ip_clients.client_id', 'left')
+ ->join('ip_users', 'ip_invoices.user_id = ip_users.user_id', 'left')
+ ->join('ip_invoice_items', 'ip_invoices.invoice_id = ip_invoice_items.invoice_id', 'left')
+ ->join('ip_products', 'ip_invoice_items.item_product_id = ip_products.product_id', 'left')
+ ->join('ip_invoice_amounts', 'ip_invoices.invoice_id = ip_invoice_amounts.invoice_id', 'left')
+ ->join('ip_invoice_attachment', 'ip_invoices.invoice_id = ip_invoice_attachment.invoice_id AND ip_invoice_attachment.is_active = 1', 'left');
+
+ // Apply filters only if values are provided
+ if (!empty($from_date) && !empty($to_date)) {
+ $from_date = get_date_time_dynamical_format('d-m-Y', 'Y-m-d', $from_date);
+ $to_date = get_date_time_dynamical_format('d-m-Y', 'Y-m-d', $to_date);
+ $builder->where('ip_invoices.invoice_date_created >=', $from_date);
+ $builder->where('ip_invoices.invoice_date_created <=', $to_date);
+ }
+
+ if (!empty($hsn_number)) {
+ $builder->where('ip_invoice_items.hsn_or_sac', $hsn_number);
+ }
+
+ if (!empty($product_id)) {
+ $builder->where('ip_invoice_items.item_product_id', $product_id);
+ }
+
+ if (!empty($client_id)) {
+ $builder->where('ip_invoices.client_id', $client_id);
+ }
+
+ // Order by invoice number in descending order
+ $builder->orderBy('ip_invoices.invoice_number', 'DESC');
+
+ $query = $builder->get();
+ return $query->getResult();
+ }
+
diff --git a/app/Views/includes/new_header.php b/app/Views/includes/new_header.php
index 2f08bd30..eedc8e88 100755
--- a/app/Views/includes/new_header.php
+++ b/app/Views/includes/new_header.php
@@ -654,6 +654,7 @@
diff --git a/app/Views/viewinwardgateregister.php b/app/Views/viewinwardgateregister.php
index bf6ab9c7..8a00b012 100755
--- a/app/Views/viewinwardgateregister.php
+++ b/app/Views/viewinwardgateregister.php
@@ -262,7 +262,7 @@
NetWeight ?> |
taxable_value ?> |
gst_amount ?> |
- gst_amount + (int)$record->gst_amount) ?> |
+ taxable_value + (int)$record->gst_amount) ?> |
VehicleNo ?> |
DriverName ?> |
@@ -1808,6 +1808,7 @@
+