diff --git a/app/Controllers/User.php b/app/Controllers/User.php
index 06ca3a62..91bb092d 100644
--- a/app/Controllers/User.php
+++ b/app/Controllers/User.php
@@ -1280,357 +1280,362 @@ class User extends BaseController
// print_r($_GET);
// echo isset($_GET['from']) ? $_GET['from'] : 'n';
// echo isset($_GET['to']) ? $_GET['to'] : 'n';
- // die();
- try{
- // if (isset($_POST['sync']) || $_GET['from'] != null && $_GET['to'] != null)
- // {
- // $ch=curl_init();
- //$this->load->helper('zohobooks_fetch_api_helper');
- helper('zohobook');
- $Zohobook_model = model('Zohobook_api_model');
- if(isset($_GET['from']) && $_GET['from'] != null && isset($_GET['to']) && $_GET['to'] != null)
- {
- $date_today = $_GET['to'];
- $date_yesterday = $_GET['from'];
+ // die();
+ try{
+ // if (isset($_POST['sync']) || $_GET['from'] != null && $_GET['to'] != null)
+ // {
+ // $ch=curl_init();
+ //$this->load->helper('zohobooks_fetch_api_helper');
+ helper('zohobook');
+ $Zohobook_model = model('Zohobook_api_model');
+ if(isset($_GET['from']) && $_GET['from'] != null && isset($_GET['to']) && $_GET['to'] != null)
+ {
+ $date_today = $_GET['to'];
+ $date_yesterday = $_GET['from'];
+ }
+ else
+ {
+ $date_today = date('Y-m-d');
+ $date_yesterday = date('Y-m-d',strtotime('-3 day',strtotime($date_today)));
+ }
+ // echo $date_today.'--'.$date_yesterday;die;
+ $chk_acc_token_val = $Zohobook_model->get_data('zohobook_accesstoken','id' , 1);
+ // print_r($chk_acc_token_val);//die();
+ $date = new \DateTime($chk_acc_token_val[0]['created_at']);
+ //print_r($date);
+ $date->add(new \DateInterval('PT1H'));
+ //print_r($date);
+ //echo '****************';
+ //print_r(date('Y-m-d h:i:s'));
+ $token = 0;
+ if ($date->format('Y-m-d H:i:s') > date('Y-m-d H:i:s')) { $token = $chk_acc_token_val[0]['token']; }
+ else { $token = generateNewToken(); $tokendata['token'] = $token; $Zohobook_model->customUpdate($tokendata , 1,'zohobook_accesstoken'); }
+ // $token = generateNewToken(); $tokendata['token'] = $token;
+ //$Zohobook_model->update($tokendata , 1,'zohobook_accesstoken');
+ $result = getheringInvoiceDetails($date_today , $date_yesterday , $token);
+ $headers_new = $result['headers_new'];
+ $res = json_decode($result['data'],true);
+ $inv_array = $res['invoices'];
+ // print_r($inv_array);
+ // echo "rrrr";
+ // die();
+ foreach($inv_array as $inv){
+ $invoice_id = $inv['invoice_id'];
+ //filter only einvoice status pushed invoices only
+ //&& isset($inv['einvoice_details']) && isset($inv['einvoice_details']['status']) && ($inv['einvoice_details']['status'] == 'pushed')
+ if($invoice_id !== "" ){
+ $organization_id = '776847408';
+ $result2=getheringInvoiceSubDetails($invoice_id,$organization_id,$headers_new);
+ $resall = json_decode($result2,true);
+ $res2[] = $resall['invoice'];
}
- else
- {
- $date_today = date('Y-m-d');
- $date_yesterday = date('Y-m-d',strtotime('-3 day',strtotime($date_today)));
- }
- // echo $date_today.'--'.$date_yesterday;die;
- $chk_acc_token_val = $Zohobook_model->get_data('zohobook_accesstoken','id' , 1);
- // print_r($chk_acc_token_val);//die();
- $date = new \DateTime($chk_acc_token_val[0]['created_at']);
- //print_r($date);
- $date->add(new \DateInterval('PT1H'));
- //print_r($date);
- //echo '****************';
- //print_r(date('Y-m-d h:i:s'));
- $token = 0;
- if ($date->format('Y-m-d H:i:s') > date('Y-m-d H:i:s')) { $token = $chk_acc_token_val[0]['token']; }
- else { $token = generateNewToken(); $tokendata['token'] = $token; $Zohobook_model->customUpdate($tokendata , 1,'zohobook_accesstoken'); }
- // $token = generateNewToken(); $tokendata['token'] = $token;
- //$Zohobook_model->update($tokendata , 1,'zohobook_accesstoken');
- $result = getheringInvoiceDetails($date_today , $date_yesterday , $token);
- $headers_new = $result['headers_new'];
- $res = json_decode($result['data'],true);
- $inv_array = $res['invoices'];
- // print_r($inv_array);
- // echo "rrrr";
- // die();
- foreach($inv_array as $inv){
- $invoice_id = $inv['invoice_id'];
- //filter only einvoice status pushed invoices only
- //&& isset($inv['einvoice_details']) && isset($inv['einvoice_details']['status']) && ($inv['einvoice_details']['status'] == 'pushed')
- if($invoice_id !== "" ){
- $organization_id = '776847408';
- $result2=getheringInvoiceSubDetails($invoice_id,$organization_id,$headers_new);
- $resall = json_decode($result2,true);
- $res2[] = $resall['invoice'];
- }
- }
- $insert_count = 0;
- $update_count = 0;
- foreach($res2 as $rs)
- {
- $gst_no = $rs['gst_no'];
- $invoice_number = $rs['invoice_number'];
- $invoice_date = $rs['date'];
- $status = $rs['status'];
- $due_date = $rs['due_date'];
-
- $invoice_time=$rs['created_time'];
- $time_array = explode("T", $invoice_time);
- $time_array = explode("+",$time_array[1]);
- $invoice_time = $time_array[0];
-
- $sql_invoice_chk = $Zohobook_model->ip_invoices($invoice_number , $invoice_date);
- if($sql_invoice_chk <= 0)
- {
-
- $gst_sql = $Zohobook_model->ip_clients($gst_no);
- if($gst_sql)
- {
- $client_id = $gst_sql[0]['client_id'];
- log_message('error', 'Data fetch success DB : ip_clients , client_id : '.$client_id);
- }
- else
- {
- log_message('error', 'No data => Data fetch failed DB : ip_clients '.$gst_no);
- $gst_no_data['client_tax_code'] = $gst_no;
- $gst_inserted_id = $Zohobook_model->customInsert($gst_no_data,'ip_clients');
- $client_id = $gst_inserted_id;
- log_message('error', 'New Data Created : DB : ip_clients , client_id : '.$client_id);
- }
-
-
- $characters = '0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ';
- $charactersLength = strlen($characters);
- $randomString = '';
- for ($i = 0; $i < 16; $i++) { $randomString .= $characters[rand(0, $charactersLength - 1)]; }
- $url_key = $randomString;
-
- $ip_invoices['user_id'] = 1;
- $ip_invoices['client_id'] = $client_id;
- $ip_invoices['invoice_group_id'] = 6;
- $ip_invoices['invoice_status_id'] = ($status == 'draft' ? 1 : (($status == 'sent' || $status == 'overdue') ? 2 : 5));
- $ip_invoices['invoice_date_created'] = $invoice_date;
- $ip_invoices['invoice_time_created'] = $invoice_time;
- $ip_invoices['invoice_date_due'] = $due_date;
- $ip_invoices['invoice_number'] = $invoice_number;
- $ip_invoices['invoice_url_key'] = $url_key;
- $ip_invoices['receivedstatus'] = 'ST066';
- $ip_invoices['credit_status'] = 0;
- $invoice_insert_id = $Zohobook_model->customInsert($ip_invoices,'ip_invoices');
- if($invoice_insert_id)
- {
- log_message('error', 'Data insert success DB : ip_invoices client id :'. $client_id);
- $insert_count = $insert_count + 1;
- //start invoice level custom fields
-
- //custom fields insert
-
- $batch_no = isset($rs['custom_fields'][5]['value']) ? $rs['custom_fields'][5]['value'] : "";
- // $batch_no = "";
- $vehicle_number = isset($rs['custom_field_hash']['cf_vehicle_number']) ? $rs['custom_field_hash']['cf_vehicle_number']: '';
- $transport_mode =isset($rs['custom_field_hash']['cf_transport_mode']) ? $rs['custom_field_hash']['cf_transport_mode'] : '';
- $purchase_order_date = isset($rs['custom_field_hash']['cf_purchase_order_date'])?$rs['custom_field_hash']['cf_purchase_order_date']:'';
- $driver = isset($rs['custom_field_hash']['cf_driver']) ? $rs['custom_field_hash']['cf_driver'] : '';
- $place_of_supply = isset($rs['custom_field_hash']['cf_place_of_supply']) ? $rs['custom_field_hash']['cf_place_of_supply']:'';
- // batch_no
- $ip_invoice_custom_b['invoice_id'] = $invoice_insert_id;
- $ip_invoice_custom_b['invoice_custom_fieldid'] = 62;
- $ip_invoice_custom_b['invoice_custom_fieldvalue'] = $batch_no;
- $result_invoice_custom_insert = $Zohobook_model->customInsert($ip_invoice_custom_b,'ip_invoice_custom');
- if($result_invoice_custom_insert)
- log_message('error', 'Data insert success DB : ip_invoice_custom ');
- else
- log_message('error', 'Data insert failed DB : ip_invoice_custom ');
- // vehicle_number
- $ip_invoice_custom_v['invoice_id'] = $invoice_insert_id;
- $ip_invoice_custom_v['invoice_custom_fieldid'] = 8;
- $ip_invoice_custom_v['invoice_custom_fieldvalue'] = $vehicle_number;
- $res_vehicle = $Zohobook_model->customInsert($ip_invoice_custom_v,'ip_invoice_custom');
- if($res_vehicle)
- log_message('error', 'Data insert success DB : ip_invoice_custom ');
- else
- log_message('error', 'Data insert failed DB : ip_invoice_custom ');
- // transport_mode
- $ip_invoice_custom_t['invoice_id'] = $invoice_insert_id;
- $ip_invoice_custom_t['invoice_custom_fieldid'] = 7;
- $ip_invoice_custom_t['invoice_custom_fieldvalue'] = $transport_mode;
- $res_transport_mode = $Zohobook_model->customInsert($ip_invoice_custom_t,'ip_invoice_custom');
- if($res_transport_mode)
- log_message('error', 'Data insert success DB : ip_invoice_custom ');
- else
- log_message('error', 'Data insert failed DB : ip_invoice_custom ');
- // purchase_order_date
- $ip_invoice_custom_p['invoice_id'] = $invoice_insert_id;
- $ip_invoice_custom_p['invoice_custom_fieldid'] = 15;
- $ip_invoice_custom_p['invoice_custom_fieldvalue'] = $purchase_order_date;
- $res_purchase_order_date =$Zohobook_model->customInsert($ip_invoice_custom_p,'ip_invoice_custom');
- if($res_purchase_order_date)
- log_message('error', 'Data insert success DB : ip_invoice_custom ');
- else
- log_message('error', 'Data insert failed DB : ip_invoice_custom ');
- // driver
- $ip_invoice_custom_d['invoice_id'] = $invoice_insert_id;
- $ip_invoice_custom_d['invoice_custom_fieldid'] = 58;
- $ip_invoice_custom_d['invoice_custom_fieldvalue'] = $driver;
- $res_driver = $Zohobook_model->customInsert($ip_invoice_custom_d,'ip_invoice_custom');
- if($res_driver)
- log_message('error', 'Data insert success DB : ip_invoice_custom ');
- else
- log_message('error', 'Data insert failed DB : ip_invoice_custom ');
- // place_of_supply
- $ip_invoice_custom_d['invoice_id'] = $invoice_insert_id;
- $ip_invoice_custom_d['invoice_custom_fieldid'] = 10;
- $ip_invoice_custom_d['invoice_custom_fieldvalue'] = $place_of_supply;
- $res_place = $Zohobook_model->customInsert($ip_invoice_custom_d,'ip_invoice_custom');
- if($res_place)
- log_message('error', 'Data insert success DB : ip_invoice_custom ');
- else
- log_message('error', 'Data insert failed DB : ip_invoice_custom ');
- //end invoice level custom fields
-
- //if line items available
- if(isset($rs['line_items']) && count($rs['line_items']) > 0)
- {
- log_message('error', 'Processing line items'.count($rs['line_items']));
-
- for($i = 0; $i< count($rs['line_items']);$i++)
- { //start insert line items
- $sku = $rs['line_items'][$i]['sku'];
-
-
- $item_price = $rs['line_items'][$i]['rate'];
- $item_order = $rs['line_items'][$i]['item_order'];
- $item_product_unit = $rs['line_items'][$i]['unit'];
- $item_name = $rs['line_items'][$i]['name'];
- $item_description = $rs['line_items'][$i]['description'];
- $item_quantity = $rs['line_items'][$i]['quantity'];
- $cgst = $rs['line_items'][$i]['line_item_taxes'][1]['tax_name'];
- $sgst = $rs['line_items'][$i]['line_item_taxes'][0]['tax_name'];
- $cgst = $cgst[4];
- $sgst = $sgst[4];
- $cgst = $cgst.'.000';
- $getcgsttax = $Zohobook_model->ip_tax_rates($cgst);
- if($getcgsttax)
- {
- $cgsttaxid = $getcgsttax[0]['tax_rate_id'];
- log_message('error', 'Data fetch success DB : ip_tax_rates cgst'. $cgst);
- }
- else
- {
- log_message('error', 'No data => Data fetch failed DB : ip_tax_rates '. $cgst);
- $cgst_data['tax_rate_percent'] = $cgst;
- $getcgsttax = $Zohobook_model->customInsert($cgst_data,'ip_tax_rates');
- $cgsttaxid = $getcgsttax;
- log_message('error', 'New Data Created : DB : ip_tax_rates , tax_rate_id : '.$cgsttaxid);
- }
-
- $sgst = $sgst.'.000';
- $getsgsttax = $Zohobook_model->ip_tax_rates($sgst);
- if($getsgsttax)
- {
- $sgsttaxid = $getsgsttax[0]['tax_rate_id'];
- log_message('error', 'Data fetch success DB : ip_tax_rates sgst'. $sgst);
- }
- else
- {
- log_message('error', 'No data => Data fetch failed DB : ip_tax_rates '. $sgst);
- $sgst_data['tax_rate_percent'] = $sgst;
- $getsgsttax = $Zohobook_model->customInsert($sgst_data,'ip_tax_rates');
- $sgsttaxid = $getsgsttax;
- log_message('error', 'New Data Created : DB : ip_tax_rates , tax_rate_id : '.$sgsttaxid);
- }
-
- $item_subtotal = $rs['line_items'][$i]['item_total'];
-
-
- $item_sgst_amt = $rs['line_items'][$i]['line_item_taxes'][0]['tax_amount'];
- $item_cgst_amt = $rs['line_items'][$i]['line_item_taxes'][1]['tax_amount'];
- $item_tax_total = ($item_sgst_amt + $item_cgst_amt);
- $item_total = ($item_subtotal + $item_tax_total);
-
- $item_discount = 0.00;
- $item_igst_amt = 0.00;
- // if($batch_no==""){ $batch_no = "";}
-
-
- $sku_sql = $Zohobook_model->ip_products($sku);
- if(!empty($sku_sql))
- {
- $product_id = $sku_sql[0]['product_id'];
- log_message('error', 'Data fetch success DB : ip_products , product_id : '.$product_id);
- }
- else
- {
- log_message('error', 'No data => Data fetch failed DB : ip_products '. $sku);
- $sku_data['product_name'] = $item_name;
- $sku_data['product_description'] = $item_description;
- $sku_data['sku'] = $sku;
- $sku_inserted_id = $Zohobook_model->customInsert($sku_data,'ip_products');
- $product_id = $sku_inserted_id;
- log_message('error', '$sku_sql => Data fetch failed DB : ip_products '. $sku_sql);
+ }
+ $insert_count = 0;
+ $update_count = 0;
+ foreach($res2 as $rs)
+ {
+ $gst_no = $rs['gst_no'];
+ $invoice_number = $rs['invoice_number'];
+ $invoice_date = $rs['date'];
+ $status = $rs['status'];
+ $due_date = $rs['due_date'];
+ $invoice_url = $rs['invoice_url'];
+ $einvoice_number = $rs['einvoice_details']['inv_ref_num'];
- log_message('error', 'sku'.$sku);
- log_message('error', 'New Data Created : DB : product_id , product_id : '.$product_id);
- }
-
- //#1
-
- $ip_invoice_items['invoice_id'] = $invoice_insert_id;
- $ip_invoice_items['item_product_id'] = $product_id;
- $ip_invoice_items['item_date_added'] = $invoice_date;
- $ip_invoice_items['item_name'] = $item_name;
- $ip_invoice_items['item_description'] = $item_description;
- $ip_invoice_items['item_quantity'] = $item_quantity;
- $ip_invoice_items['item_price'] = $item_price;
- $ip_invoice_items['item_order'] = $item_order;
- $ip_invoice_items['item_product_unit'] = $item_product_unit;
- $ip_invoice_items['Sgst_item_tax_rate_id'] = $sgsttaxid;
- $ip_invoice_items['Cgst_item_tax_rate_id'] = $cgsttaxid;
- $item_insert_id = $Zohobook_model->customInsert($ip_invoice_items,'ip_invoice_items');
- if($item_insert_id)
- log_message('error', 'Data insert success DB : ip_invoice_items => Sgst_item_tax_rate_id :'. $sgsttaxid);
- else
- log_message('error', 'Data insert failed DB : ip_invoice_items => Sgst_item_tax_rate_id :'. $sgsttaxid);
-
- //tax amount -- ip_invoice_item_amounts - table
- $ip_invoice_item_amounts['item_id'] = $item_insert_id;
- $ip_invoice_item_amounts['item_subtotal'] = $item_subtotal;
- $ip_invoice_item_amounts['item_tax_total'] = $item_tax_total;
- $ip_invoice_item_amounts['item_total'] = $item_total;
- $ip_invoice_item_amounts['item_sgst_amt'] = $item_sgst_amt;
- $ip_invoice_item_amounts['item_cgst_amt'] = $item_cgst_amt;
- $ip_invoice_item_amounts['item_discount'] = $item_discount;
- $ip_invoice_item_amounts['item_igst_amt'] = $item_igst_amt;
- $result_tax_amount_insert = $Zohobook_model->customInsert($ip_invoice_item_amounts,'ip_invoice_item_amounts');
- if($result_tax_amount_insert)
- log_message('error', 'Data insert success DB : ip_invoice_item_amounts ');
- else
- log_message('error', 'Data insert failed DB : ip_invoice_item_amounts ');
-
- } //end line items insert
-
- }
- else
- {
- log_message('error', 'Line Items not found in API result');
- }
- }
- else
- {
- log_message('error', 'Data insert failed DB : ip_invoice_items client id :'. $client_id);
- }
-
-
- }
- else // update invoice status, especially for cancelled invoices
+ $invoice_time=$rs['created_time'];
+ $time_array = explode("T", $invoice_time);
+ $time_array = explode("+",$time_array[1]);
+ $invoice_time = $time_array[0];
+
+ $sql_invoice_chk = $Zohobook_model->ip_invoices($invoice_number , $invoice_date);
+ if($sql_invoice_chk <= 0)
+ {
+
+ $gst_sql = $Zohobook_model->ip_clients($gst_no);
+ if($gst_sql)
{
- if($status == "void" || $status == "sent" || $status == "overdue")
+ $client_id = $gst_sql[0]['client_id'];
+ log_message('error', 'Data fetch success DB : ip_clients , client_id : '.$client_id);
+ }
+ else
+ {
+ log_message('error', 'No data => Data fetch failed DB : ip_clients '.$gst_no);
+ $gst_no_data['client_tax_code'] = $gst_no;
+ $gst_inserted_id = $Zohobook_model->customInsert($gst_no_data,'ip_clients');
+ $client_id = $gst_inserted_id;
+ log_message('error', 'New Data Created : DB : ip_clients , client_id : '.$client_id);
+ }
+
+
+ $characters = '0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ';
+ $charactersLength = strlen($characters);
+ $randomString = '';
+ for ($i = 0; $i < 16; $i++) { $randomString .= $characters[rand(0, $charactersLength - 1)]; }
+ $url_key = $randomString;
+
+ $ip_invoices['user_id'] = 1;
+ $ip_invoices['client_id'] = $client_id;
+ $ip_invoices['invoice_group_id'] = 6;
+ $ip_invoices['invoice_status_id'] = ($status == 'draft' ? 1 : (($status == 'sent' || $status == 'overdue') ? 2 : 5));
+ $ip_invoices['invoice_date_created'] = $invoice_date;
+ $ip_invoices['invoice_time_created'] = $invoice_time;
+ $ip_invoices['invoice_date_due'] = $due_date;
+ $ip_invoices['invoice_number'] = $invoice_number;
+ $ip_invoices['invoice_url_key'] = $url_key;
+ $ip_invoices['receivedstatus'] = 'ST066';
+ $ip_invoices['credit_status'] = 0;
+ $ip_invoices['status'] = $status;
+ $ip_invoices['e_invoice_number'] = $einvoice_number;
+ $ip_invoices['invoice_url'] = $invoice_url;
+ $invoice_insert_id = $Zohobook_model->customInsert($ip_invoices,'ip_invoices');
+ if($invoice_insert_id)
+ {
+ log_message('error', 'Data insert success DB : ip_invoices client id :'. $client_id);
+ $insert_count = $insert_count + 1;
+ //start invoice level custom fields
+
+ //custom fields insert
+
+ $batch_no = isset($rs['custom_fields'][5]['value']) ? $rs['custom_fields'][5]['value'] : "";
+ // $batch_no = "";
+ $vehicle_number = isset($rs['custom_field_hash']['cf_vehicle_number']) ? $rs['custom_field_hash']['cf_vehicle_number']: '';
+ $transport_mode =isset($rs['custom_field_hash']['cf_transport_mode']) ? $rs['custom_field_hash']['cf_transport_mode'] : '';
+ $purchase_order_date = isset($rs['custom_field_hash']['cf_purchase_order_date'])?$rs['custom_field_hash']['cf_purchase_order_date']:'';
+ $driver = isset($rs['custom_field_hash']['cf_driver']) ? $rs['custom_field_hash']['cf_driver'] : '';
+ $place_of_supply = isset($rs['custom_field_hash']['cf_place_of_supply']) ? $rs['custom_field_hash']['cf_place_of_supply']:'';
+ // batch_no
+ $ip_invoice_custom_b['invoice_id'] = $invoice_insert_id;
+ $ip_invoice_custom_b['invoice_custom_fieldid'] = 62;
+ $ip_invoice_custom_b['invoice_custom_fieldvalue'] = $batch_no;
+ $result_invoice_custom_insert = $Zohobook_model->customInsert($ip_invoice_custom_b,'ip_invoice_custom');
+ if($result_invoice_custom_insert)
+ log_message('error', 'Data insert success DB : ip_invoice_custom ');
+ else
+ log_message('error', 'Data insert failed DB : ip_invoice_custom ');
+ // vehicle_number
+ $ip_invoice_custom_v['invoice_id'] = $invoice_insert_id;
+ $ip_invoice_custom_v['invoice_custom_fieldid'] = 8;
+ $ip_invoice_custom_v['invoice_custom_fieldvalue'] = $vehicle_number;
+ $res_vehicle = $Zohobook_model->customInsert($ip_invoice_custom_v,'ip_invoice_custom');
+ if($res_vehicle)
+ log_message('error', 'Data insert success DB : ip_invoice_custom ');
+ else
+ log_message('error', 'Data insert failed DB : ip_invoice_custom ');
+ // transport_mode
+ $ip_invoice_custom_t['invoice_id'] = $invoice_insert_id;
+ $ip_invoice_custom_t['invoice_custom_fieldid'] = 7;
+ $ip_invoice_custom_t['invoice_custom_fieldvalue'] = $transport_mode;
+ $res_transport_mode = $Zohobook_model->customInsert($ip_invoice_custom_t,'ip_invoice_custom');
+ if($res_transport_mode)
+ log_message('error', 'Data insert success DB : ip_invoice_custom ');
+ else
+ log_message('error', 'Data insert failed DB : ip_invoice_custom ');
+ // purchase_order_date
+ $ip_invoice_custom_p['invoice_id'] = $invoice_insert_id;
+ $ip_invoice_custom_p['invoice_custom_fieldid'] = 15;
+ $ip_invoice_custom_p['invoice_custom_fieldvalue'] = $purchase_order_date;
+ $res_purchase_order_date =$Zohobook_model->customInsert($ip_invoice_custom_p,'ip_invoice_custom');
+ if($res_purchase_order_date)
+ log_message('error', 'Data insert success DB : ip_invoice_custom ');
+ else
+ log_message('error', 'Data insert failed DB : ip_invoice_custom ');
+ // driver
+ $ip_invoice_custom_d['invoice_id'] = $invoice_insert_id;
+ $ip_invoice_custom_d['invoice_custom_fieldid'] = 58;
+ $ip_invoice_custom_d['invoice_custom_fieldvalue'] = $driver;
+ $res_driver = $Zohobook_model->customInsert($ip_invoice_custom_d,'ip_invoice_custom');
+ if($res_driver)
+ log_message('error', 'Data insert success DB : ip_invoice_custom ');
+ else
+ log_message('error', 'Data insert failed DB : ip_invoice_custom ');
+ // place_of_supply
+ $ip_invoice_custom_d['invoice_id'] = $invoice_insert_id;
+ $ip_invoice_custom_d['invoice_custom_fieldid'] = 10;
+ $ip_invoice_custom_d['invoice_custom_fieldvalue'] = $place_of_supply;
+ $res_place = $Zohobook_model->customInsert($ip_invoice_custom_d,'ip_invoice_custom');
+ if($res_place)
+ log_message('error', 'Data insert success DB : ip_invoice_custom ');
+ else
+ log_message('error', 'Data insert failed DB : ip_invoice_custom ');
+ //end invoice level custom fields
+
+ //if line items available
+ if(isset($rs['line_items']) && count($rs['line_items']) > 0)
{
- $sql_invoice_update = array();
- $sql_invoice_update['invoice_status_id'] = (($status == "sent" || $status == "overdue") ? 2 : 5);
- // echo 'script' . $invoice_number. $status;
- // print_r( $sql_invoice_update);
- // echo '
';
- $sql_invoice_update = $Zohobook_model->sql_invoice_update($sql_invoice_update,$invoice_number,$invoice_date,'ip_invoices');
- if($sql_invoice_update)
- {
- log_message('error', 'Data update success DB : ip_invoices ');
- }
- else
- {
- log_message('error', 'Data update failed DB : ip_invoices ');
- }
- $update_count = $update_count + 1;
+ log_message('error', 'Processing line items'.count($rs['line_items']));
+
+ for($i = 0; $i< count($rs['line_items']);$i++)
+ { //start insert line items
+ $sku = $rs['line_items'][$i]['sku'];
+
+
+ $item_price = $rs['line_items'][$i]['rate'];
+ $item_order = $rs['line_items'][$i]['item_order'];
+ $item_product_unit = $rs['line_items'][$i]['unit'];
+ $item_name = $rs['line_items'][$i]['name'];
+ $item_description = $rs['line_items'][$i]['description'];
+ $item_quantity = $rs['line_items'][$i]['quantity'];
+ $cgst = $rs['line_items'][$i]['line_item_taxes'][1]['tax_name'];
+ $sgst = $rs['line_items'][$i]['line_item_taxes'][0]['tax_name'];
+ $cgst = $cgst[4];
+ $sgst = $sgst[4];
+ $cgst = $cgst.'.000';
+ $getcgsttax = $Zohobook_model->ip_tax_rates($cgst);
+ if($getcgsttax)
+ {
+ $cgsttaxid = $getcgsttax[0]['tax_rate_id'];
+ log_message('error', 'Data fetch success DB : ip_tax_rates cgst'. $cgst);
+ }
+ else
+ {
+ log_message('error', 'No data => Data fetch failed DB : ip_tax_rates '. $cgst);
+ $cgst_data['tax_rate_percent'] = $cgst;
+ $getcgsttax = $Zohobook_model->customInsert($cgst_data,'ip_tax_rates');
+ $cgsttaxid = $getcgsttax;
+ log_message('error', 'New Data Created : DB : ip_tax_rates , tax_rate_id : '.$cgsttaxid);
+ }
+
+ $sgst = $sgst.'.000';
+ $getsgsttax = $Zohobook_model->ip_tax_rates($sgst);
+ if($getsgsttax)
+ {
+ $sgsttaxid = $getsgsttax[0]['tax_rate_id'];
+ log_message('error', 'Data fetch success DB : ip_tax_rates sgst'. $sgst);
+ }
+ else
+ {
+ log_message('error', 'No data => Data fetch failed DB : ip_tax_rates '. $sgst);
+ $sgst_data['tax_rate_percent'] = $sgst;
+ $getsgsttax = $Zohobook_model->customInsert($sgst_data,'ip_tax_rates');
+ $sgsttaxid = $getsgsttax;
+ log_message('error', 'New Data Created : DB : ip_tax_rates , tax_rate_id : '.$sgsttaxid);
+ }
+
+ $item_subtotal = $rs['line_items'][$i]['item_total'];
+
+
+ $item_sgst_amt = $rs['line_items'][$i]['line_item_taxes'][0]['tax_amount'];
+ $item_cgst_amt = $rs['line_items'][$i]['line_item_taxes'][1]['tax_amount'];
+ $item_tax_total = ($item_sgst_amt + $item_cgst_amt);
+ $item_total = ($item_subtotal + $item_tax_total);
+
+ $item_discount = 0.00;
+ $item_igst_amt = 0.00;
+ // if($batch_no==""){ $batch_no = "";}
+
+
+ $sku_sql = $Zohobook_model->ip_products($sku);
+ if(!empty($sku_sql))
+ {
+ $product_id = $sku_sql[0]['product_id'];
+ log_message('error', 'Data fetch success DB : ip_products , product_id : '.$product_id);
+ }
+ else
+ {
+ log_message('error', 'No data => Data fetch failed DB : ip_products '. $sku);
+ $sku_data['product_name'] = $item_name;
+ $sku_data['product_description'] = $item_description;
+ $sku_data['sku'] = $sku;
+ $sku_inserted_id = $Zohobook_model->customInsert($sku_data,'ip_products');
+ $product_id = $sku_inserted_id;
+ log_message('error', '$sku_sql => Data fetch failed DB : ip_products '. $sku_sql);
+
+ log_message('error', 'sku'.$sku);
+ log_message('error', 'New Data Created : DB : product_id , product_id : '.$product_id);
+ }
+
+ //#1
+
+ $ip_invoice_items['invoice_id'] = $invoice_insert_id;
+ $ip_invoice_items['item_product_id'] = $product_id;
+ $ip_invoice_items['item_date_added'] = $invoice_date;
+ $ip_invoice_items['item_name'] = $item_name;
+ $ip_invoice_items['item_description'] = $item_description;
+ $ip_invoice_items['item_quantity'] = $item_quantity;
+ $ip_invoice_items['item_price'] = $item_price;
+ $ip_invoice_items['item_order'] = $item_order;
+ $ip_invoice_items['item_product_unit'] = $item_product_unit;
+ $ip_invoice_items['Sgst_item_tax_rate_id'] = $sgsttaxid;
+ $ip_invoice_items['Cgst_item_tax_rate_id'] = $cgsttaxid;
+ $item_insert_id = $Zohobook_model->customInsert($ip_invoice_items,'ip_invoice_items');
+ if($item_insert_id)
+ log_message('error', 'Data insert success DB : ip_invoice_items => Sgst_item_tax_rate_id :'. $sgsttaxid);
+ else
+ log_message('error', 'Data insert failed DB : ip_invoice_items => Sgst_item_tax_rate_id :'. $sgsttaxid);
+
+ //tax amount -- ip_invoice_item_amounts - table
+ $ip_invoice_item_amounts['item_id'] = $item_insert_id;
+ $ip_invoice_item_amounts['item_subtotal'] = $item_subtotal;
+ $ip_invoice_item_amounts['item_tax_total'] = $item_tax_total;
+ $ip_invoice_item_amounts['item_total'] = $item_total;
+ $ip_invoice_item_amounts['item_sgst_amt'] = $item_sgst_amt;
+ $ip_invoice_item_amounts['item_cgst_amt'] = $item_cgst_amt;
+ $ip_invoice_item_amounts['item_discount'] = $item_discount;
+ $ip_invoice_item_amounts['item_igst_amt'] = $item_igst_amt;
+ $result_tax_amount_insert = $Zohobook_model->customInsert($ip_invoice_item_amounts,'ip_invoice_item_amounts');
+ if($result_tax_amount_insert)
+ log_message('error', 'Data insert success DB : ip_invoice_item_amounts ');
+ else
+ log_message('error', 'Data insert failed DB : ip_invoice_item_amounts ');
+
+ } //end line items insert
+
+ }
+ else
+ {
+ log_message('error', 'Line Items not found in API result');
}
}
- // echo 'new invoice inserted count- ' . $insert_count . '/' . 'status updated count - ' . $update_count;
+ else
+ {
+ log_message('error', 'Data insert failed DB : ip_invoice_items client id :'. $client_id);
+ }
+
+
+ }
+ else // update invoice status, especially for cancelled invoices
+ {
+ // if($status == "void" || $status == "sent" || $status == "overdue")
+ // {
+ $sql_invoice_update = array();
+ $sql_invoice_update['invoice_status_id'] = (($status == "sent" || $status == "overdue") ? 2 : 5);
+ // echo 'script' . $invoice_number. $status;
+ // print_r( $sql_invoice_update);
+ // echo '
';
+ $sql_invoice_update = $Zohobook_model->sql_invoice_update($sql_invoice_update,$invoice_number,$invoice_date,'ip_invoices');
+ if($sql_invoice_update)
+ {
+ log_message('error', 'Data update success DB : ip_invoices ');
+ }
+ else
+ {
+ log_message('error', 'Data update failed DB : ip_invoices ');
+ }
+ $update_count = $update_count + 1;
+ // }
+ }
+ // echo 'new invoice inserted count- ' . $insert_count . '/' . 'status updated count - ' . $update_count;
- }$response = [
- 'status' => true,
- 'message' => "Successfully data inserted. Total inserted: " . $insert_count . ", Total Updated: " . $update_count
- ];
- return json_encode($response);
-
- // curl_close($ch);
- // }
- }
- catch (\Exception $e) {
- $data['err'] = $e->getMessage();
- // $db = \Config\Database::connect();
- // $data['last_query'] = $db->getLastQuery();;
- $Zohobook_model->customInsert($data,'zohobook_api_err');
- log_message('error', "Data insertion failed : " . $e->getMessage());
-
- return json_encode("Data insertion failed : " . $e->getMessage());
- }
- }
- // END zoho API
+ }$response = [
+ 'status' => true,
+ 'message' => "Successfully data inserted. Total inserted: " . $insert_count . ", Total Updated: " . $update_count
+ ];
+ return json_encode($response);
+
+ // curl_close($ch);
+ // }
+ }
+ catch (\Exception $e) {
+ $data['err'] = $e->getMessage();
+ // $db = \Config\Database::connect();
+ // $data['last_query'] = $db->getLastQuery();;
+ $Zohobook_model->customInsert($data,'zohobook_api_err');
+ log_message('error', "Data insertion failed : " . $e->getMessage());
+
+ return json_encode("Data insertion failed : " . $e->getMessage());
+ }
+ }
+ // END zoho API
// Sales Invoice List
diff --git a/app/Models/Ipinvoice_model.php b/app/Models/Ipinvoice_model.php
index 0c62ad37..c625f901 100644
--- a/app/Models/Ipinvoice_model.php
+++ b/app/Models/Ipinvoice_model.php
@@ -17,24 +17,68 @@ class Ipinvoice_model extends Model
*/
function saleInvoiceListing()
{
- $builder = $this->db->table('ip_invoices ')
+ $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_clients.client_name,
- ip_payment_methods.payment_method_name, ip_users.user_name, ip_products.product_name,
- ip_invoice_amounts.invoice_total')
+ 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_amounts.invoice_total, ip_invoice_amounts.invoice_item_subtotal, ip_invoice_amounts.invoice_item_tax_total')
->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')
- ->orderBy('ip_invoices.invoice_number', 'DESC');
-
+ ->orderBy('ip_invoices.invoice_number', 'DESC');
+
$query = $builder->get();
$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;
}
+
diff --git a/app/Views/includes/header.php b/app/Views/includes/header.php
index 1f99c35c..49f97c58 100644
--- a/app/Views/includes/header.php
+++ b/app/Views/includes/header.php
@@ -349,7 +349,7 @@
| Invoice Date | Invoice No | -Invoice Date Created | -Invoice Date Due | Client Name | -User Name | -Product Name | -Payment Method | -Invoice Total | +Product | +Rate | +Quantity | +Sub Total | +GST | +Total | +Status | +E-Invoice Number | +Action |
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| invoice_date_created)); ?> | - invoice_number; ?> - | -invoice_date_created)); ?> - | invoice_date_due)); ?> + invoice_url)){ ?> + + + invoice_number; ?> + invoice_url)){ ?> + + | client_name ?> | -user_name ?> | -product_name ?> | -payment_method_name; ?> | -invoice_total ?> | +item_name ?> | +item_price ?> | +item_quantity, 2 ,'.', ',' ) ?> | ++ | + | + | status ?> | +e_invoice_number; ?> | ++ + + + |