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 @@
  • - Sales Invoice + Sales
  • diff --git a/app/Views/sales_invoice.php b/app/Views/sales_invoice.php index b0fa86b2..d4435024 100644 --- a/app/Views/sales_invoice.php +++ b/app/Views/sales_invoice.php @@ -1,5 +1,10 @@ - - + +
    @@ -21,40 +26,60 @@
    - +
    + - - - - - - + + + + + + + + + - - + item_price * $invoice->item_quantity; + // Calculate CGST and SGST + $cgst_amount = ($subtotal * $invoice->cgst) / 100; + $sgst_amount = ($subtotal * $invoice->sgst) / 100; + $total = $subtotal + $cgst_amount + $sgst_amount;?> + + + - - - - - + + + + + + + + + - - +
    Invoice Date Invoice NoInvoice Date CreatedInvoice Date Due Client NameUser NameProduct NamePayment MethodInvoice TotalProductRateQuantitySub TotalGSTTotalStatusE-Invoice NumberAction
    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; ?> + + + +
    @@ -72,14 +97,16 @@