FIX_Change 1 : ps

This commit is contained in:
VE10-Sanjeev 2024-05-15 13:10:17 +00:00
parent 633dc1011d
commit 1e28298aea
11 changed files with 488 additions and 314 deletions

View File

@ -128,6 +128,8 @@ $routes->get('purchaseorder/AddComplaint','Purchaseorder::AddComplaint');
$routes->post('purchaseorder/SaveComplaint','Purchaseorder::SaveComplaint');
$routes->get('purchaseorder/Nonconfirmativelist','Purchaseorder::Nonconfirmativelist');
//Zohobooks sync
$routes->post('user/zohobooks_api_fetch_all','User::zohobooks_api_fetch_all');
// Application Payslip Routes
$routes->match(['get', 'post', 'put', 'delete'],'monthlyListings', 'Monthlypay::monthlyListing');
@ -175,6 +177,7 @@ $routes->match(['get', 'post', 'put', 'delete'],'EmergencyPO', 'Emergencypurchas
$routes->match(['get', 'post', 'put', 'delete'],'AdvanceRequest', 'Purchaseorder::advancerequest');
$routes->match(['get', 'post', 'put', 'delete'],'PORelease', 'Purchaseorder::porelease');
$routes->match(['get', 'post', 'put', 'delete'],'ViewPO', 'Purchaseorder::viewfullpurchaseorder');
// $routes->match(['get', 'post', 'put', 'delete'],'POApproval', 'Purchaseorder::poapproval');
$routes->get('amendmentpurchaseorder','Amendmentpurchaseorder::index');
$routes->get('EditAmendPO', 'Amendmentpurchaseorder::EditAmendPurchaseOrder');
@ -195,6 +198,7 @@ $routes->get('EditPO', 'Purchaseorder::EditPurchaseOrder');
$routes->get('purchaseorder/CreatePOPrint', 'Purchaseorder::CreatePOPrint');
$routes->post('purchaseorder/ReleasePO', 'Purchaseorder::ReleasePO');
$routes->post('purchaseorder/EditRevenuePurchaseOrder', 'Purchaseorder/EditRevenuePurchaseOrder');
$routes->post('VerifyWithSupplierForPendingPO', 'Purchaseorder::VerifyWithSupplierForPendingPO');
@ -310,3 +314,6 @@ $routes->get('qualityreportlist', 'Quality::reportList');
$routes->get('qualityreportlistinward', 'Quality::reportListInward');
$routes->get('shortagematerialListing', 'Rawmaterialdetails::shortagematerialListing');
$routes->get('/pdf', 'PdfController::index');
$routes->match(['get', 'post', 'put', 'delete'],'pdf/preview', 'PdfController::preview');
$routes->match(['get', 'post', 'put', 'delete'],'pdf/download', 'PdfController::download');

View File

@ -1297,69 +1297,133 @@ class Purchaseorder extends BaseController
// echo \Mpdf\Mpdf::VERSION;
// die;
$mpdf = new Mpdf([
'mode' => 'utf-8',
'format' => 'A4', // Page format: A4 with portrait orientation
// 'format' => [148, 210], // Set custom width and height in millimeters
'default_font_size' => 6,
'default_font' => 'sans-serif',
'margin_left' => 10,
'margin_right' => 10,
'margin_top' => 10,
'margin_bottom' => 10,
'margin_header' => 82,
'margin_footer' => 38,
'orientation' => 'P',
]);
// $mpdf = new Mpdf([
// 'mode' => 'utf-8',
// 'format' => 'A4', // Page format: A4 with portrait orientation
// // 'format' => [148, 210], // Set custom width and height in millimeters
// 'default_font_size' => 6,
// 'default_font' => 'sans-serif',
// 'margin_left' => 10,
// 'margin_right' => 10,
// 'margin_top' => 10,
// 'margin_bottom' => 10,
// 'margin_header' => 82,
// 'margin_footer' => 38,
// 'orientation' => 'P',
// ]);
$mpdf->autoLangToFont = true;
$mpdf->autoScriptToLang = true;
// Set PDF properties
$mpdf->SetTitle('Invoice');
$mpdf->SetAuthor($data['CompanyDetails'][0]->CompanyName);
$mpdf->SetCreator('');
// $mpdf->autoLangToFont = true;
// $mpdf->autoScriptToLang = true;
// // Set PDF properties
// $mpdf->SetTitle('Invoice');
// $mpdf->SetAuthor($data['CompanyDetails'][0]->CompanyName);
// $mpdf->SetCreator('');
$htmlFooter = '<div>
<img src="https://cdn.pixabay.com/photo/2012/04/26/14/17/blue-42596_960_720.png"style=margin-top:70px;/> </div>';
$mpdf->setHTMLFooter($htmlFooter);
// $htmlFooter = '<div>
// <img src="https://cdn.pixabay.com/photo/2012/04/26/14/17/blue-42596_960_720.png"style=margin-top:70px;/> </div>';
// $mpdf->setHTMLFooter($htmlFooter);
// Generate the PDF content (HTML)
if ($PoStatus == PO_RELEASED || $PoStatus == PO_SERVICE_COMPLETED || $PoStatus == MRIR_APPROVED || $PoStatus == MRIR_REJECTED || $PoStatus == IGR_CREATED || $PoStatus == '' || $PoStatus == SPECIAL_PO) {
$mpdf->SetWatermarkText('');
} else {
$mpdf->SetWatermarkText('DRAFT');
}
// // Generate the PDF content (HTML)
// if ($PoStatus == PO_RELEASED || $PoStatus == PO_SERVICE_COMPLETED || $PoStatus == MRIR_APPROVED || $PoStatus == MRIR_REJECTED || $PoStatus == IGR_CREATED || $PoStatus == '' || $PoStatus == SPECIAL_PO) {
// $mpdf->SetWatermarkText('');
// } else {
// $mpdf->SetWatermarkText('DRAFT');
// }
$WatermarkImage = base_url()."public/assets/images/mpdf.png";
$mpdf->SetWatermarkImage($WatermarkImage, 8, 10);
// $WatermarkImage = base_url()."public/assets/images/mpdf.png";
// $mpdf->SetWatermarkImage($WatermarkImage, 8, 10);
$mpdf->showWatermarkImage = true;
$mpdf->watermark_font = 'DejaVuSansCondensed';
$mpdf->showWatermarkText = true;
// $mpdf->showWatermarkImage = true;
// $mpdf->watermark_font = 'DejaVuSansCondensed';
// $mpdf->showWatermarkText = true;
// Set auto margins
$mpdf->setAutoTopMargin = 'stretch';
$mpdf->setAutoBottomMargin = 'stretch';
// $mpdf->setAutoTopMargin = 'stretch';
// $mpdf->setAutoBottomMargin = 'stretch';
// Set HTML header
$HtmlHeading = view('includes/pdfheader', $data);
$mpdf->SetHTMLHeader($HtmlHeading);
// $HtmlHeading = view('includes/pdfheader', $data);
// $mpdf->SetHTMLHeader($HtmlHeading);
// Set HTML body
$html = view('capitalpopdf', $data);
$mpdf->WriteHTML($html); // Use WriteHTML() method to add body content
// $html = view('capitalpopdf', $data);
// $mpdf->WriteHTML($html); // Use WriteHTML() method to add body content
// Set HTML footer
$HTMLFooter = view('includes/pdffooter', $data);
$mpdf->setFooter($HTMLFooter . "Page {PAGENO} of {nb}");
// $HTMLFooter = view('includes/pdffooter', $data);
// $mpdf->setFooter($HTMLFooter . "Page {PAGENO} of {nb}");
// Output PDF
$mpdf->Output('CapitalPOReport' . $PONO . '.pdf', 'D');
// $mpdf->Output('CapitalPOReport' . $PONO . '.pdf', 'D');
// $pdf = myPdf('P');
// $pdf->writeHTML( "Hello World" );
// $pdf->Output( FCPATH . "writable/uploads/test.pdf", 'F');
// return redirect()->to( site_url('/') );
}
function myPdf( $orientation ) {
$defaultFontConfig = ( new Mpdf\Config\FontVariables() )->getDefaults();
$fontData = $defaultFontConfig[ 'fontdata' ] + [
'homemadeapple' => [
'R' => 'HomemadeApple-Regular.ttf',
],
'roboto' => [
'R' => 'Roboto-Regular.ttf',
'I' => 'Roboto-Italic.ttf',
'B' => 'Roboto-Bold.ttf',
'BI' => 'Roboto-BoldItalic.ttf',
],
'robotocondensed' => [
'R' => 'RobotoCondensed-Regular.ttf',
'I' => 'RobotoCondensed-Italic.ttf',
'B' => 'RobotoCondensed-Bold.ttf',
'BI' => 'RobotoCondensed-BoldItalic.ttf',
],
];
$defaultConfig = ( new Mpdf\Config\ConfigVariables() )->getDefaults();
$fontDirs = $defaultConfig[ 'fontDir' ];
if ( $orientation == 'L' ) {
$myPdf = new \Mpdf\Mpdf(
array(
'format' => 'A4-L',
'margin_left' => 10,
'margin_right' => 10,
'margin_top' => 30,
'margin_bottom' => 20,
'margin_header' => 8,
'margin_footer' => 8,
'orientation' => 'L',
'mode' => 's',
'fontDir' => array_merge( $fontDirs, [ FCPATH . 'public/assets-app/fonts', ] ),
'fontdata' => $fontData,
) );
}
else {
$myPdf = new \Mpdf\Mpdf( array(
'format' => 'A4-P',
'margin_left' => 20,
'margin_right' => 10,
'margin_top' => 40,
'margin_bottom' => 20,
'margin_header' => 8,
'margin_footer' => 8,
'orientation' => 'P',
'mode' => 's',
'fontDir' => array_merge( $fontDirs, [ FCPATH . 'public/assets-app/fonts', ] ),
'fontdata' => $fontData,
) );
}
return $myPdf;
}

View File

@ -10,7 +10,8 @@ use App\Models\Costcenter_model;
use App\Models\Dashboard_model;
use App\Models\Employeedetails_model;
use App\Models\User_model;
use App\Models\Zohobooks_api_model;
require_once 'vendor/autoload.php';
/**
* Module : User
@ -1269,310 +1270,326 @@ class User extends BaseController
}
}
// start zoho API
function zohobooks_api_fetch_all()
{
helper('zohobook');
$Zohobook_model = model('Zohobook_api_model');
try {
$from = $this->request->getPost('from');
$to = $this->request->getPost('to');
if (isset($_POST['sync'])) {
$con = new mysqli($this->db->hostname, $this->db->username, $this->db->password, $this->db->database);
$ch = curl_init();
$organization_id = '776847408';
$client_id = '1000.0WMDLCXAZV5DR60IKE9P49YTYGVL6C';
$refresh_token = '1000.0fcf314cc7b7b598df6e519461bbe9b8.f77688a2254137532ae33ad5e152a064';
$client_secret = '99da3a05cfa13cf91eb6476a3c44cfa3e21b6106a8';
$redirect_uri = 'https://resicoindustries.com/RIA';
$date_today = get_current_date();
// $date_yesterday = format_date($date_today, 1);
//$date_today = '2022-08-23';
$date_yesterday = format_date($date_today, 7);
// echo $date_yesterday;die();
$url_org = "https://books.zoho.com/api/v3/invoices?";
$fields = array(
"usestate" => "true",
"organization_id" => "776847408",
"date_start" => $date_yesterday,
"date_end" => $date_today
);
$data_all = http_build_query($fields);
$accesstoken = '1000.095b66fc95fc81874c1cfc7d15b0904e.10bc9956d9b9ec14cce1350ee0cf8254';
//code => 57 -->expired
//code => 0 -->not expired
$headers = array(
'Authorization:Zoho-oauthtoken ' . $accesstoken,
'Content-Type:application/json'
);
$data_access = $url_org . $data_all;
curl_setopt($ch, CURLOPT_URL, $data_access);
curl_setopt($ch, CURLOPT_HTTPHEADER, $headers);
curl_setopt($ch, CURLOPT_HEADER, 0);
$body = '{}';
curl_setopt($ch, CURLOPT_CUSTOMREQUEST, "GET");
curl_setopt($ch, CURLOPT_POSTFIELDS, $body);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
$result = curl_exec($ch);
$res = json_decode($result);
if ($res->code == "57") {
//echo 'new token';//die();
$url_getauthtoken = 'https://accounts.zoho.com/oauth/v2/token?refresh_token=' . $refresh_token . '&client_id=' . $client_id . '&client_secret=' . $client_secret . '&redirect_uri=' . $redirect_uri . '&grant_type=refresh_token';
curl_setopt($ch, CURLOPT_URL, $url_getauthtoken);
curl_setopt($ch, CURLOPT_HTTPHEADER, $headers);
curl_setopt($ch, CURLOPT_HEADER, 0);
$body = '{}';
curl_setopt($ch, CURLOPT_CUSTOMREQUEST, "POST");
curl_setopt($ch, CURLOPT_POSTFIELDS, $body);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
$res_token = curl_exec($ch);
$ress = json_decode($res_token);
$newaccesstoken = $ress->access_token;
$headers_new = array(
'Authorization:Zoho-oauthtoken ' . $newaccesstoken,
'Content-Type:application/json'
);
curl_setopt($ch, CURLOPT_URL, $url_org . $data_access);
curl_setopt($ch, CURLOPT_HTTPHEADER, $headers_new);
curl_setopt($ch, CURLOPT_HEADER, 0);
$body = '{}';
curl_setopt($ch, CURLOPT_CUSTOMREQUEST, "GET");
curl_setopt($ch, CURLOPT_POSTFIELDS, $body);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
$result = curl_exec($ch);
$res = json_decode($result, true);
if (isset($from) && isset($to) && $from !== null && $to !== null) {
$date_today = $to;
$date_yesterday = $from;
} else {
$date_today = get_current_date(); // refer datetime helper
$date_yesterday = get_date_days_ago($date_today,'Y-m-d','-3 day'); // refer datetime helper
}
$chk_acc_token_val = $Zohobook_model->get_data('zohobook_accesstoken', 'id', 1);
$newDate = add_one_hour_date($chk_acc_token_val[0]['created_at']); // refer datetime helper
$token = 0;
if ($newDate > get_current_date('Y-m-d H:i:s')) {
$token = $chk_acc_token_val[0]['token'];
$tokendata['token'] = $token;
} else {
$token = generateNewToken();
$tokendata['token'] = $token;
$Zohobook_model->customUpdate($tokendata, 1, 'zohobook_accesstoken');
}
$result = getheringInvoiceDetails($date_today, $date_yesterday, $token);//refer zohobook helper
$headers_new = $result['headers_new'];
$res = json_decode($result['data'], true);
if(isset($res['invoices']) && !empty($res['invoices'])){
$inv_array = $res['invoices'];
// echo json_encode($inv_array);die;
}else{
$inv_array = array();
log_message('ERROR', $res['message']);
echo "An Error Occur ==> " .$res['message']." \n <br> ";
throw new \Exception($res['message']);
}
if(!empty($inv_array)){
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 !== "") {
$url2 = 'https://books.zoho.com/api/v3/invoices/' . $invoice_id . '?organization_id=' . $organization_id;
curl_setopt($ch, CURLOPT_URL, $url2);
curl_setopt($ch, CURLOPT_HTTPHEADER, $headers_new);
curl_setopt($ch, CURLOPT_HEADER, 0);
$body2 = '{}';
curl_setopt($ch, CURLOPT_CUSTOMREQUEST, "GET");
curl_setopt($ch, CURLOPT_POSTFIELDS, $body2);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
$result2 = curl_exec($ch);
// $organization_id = '655654572';
$organization_id = '776847408';
$result2 = getheringInvoiceSubDetails($invoice_id, $organization_id, $headers_new);// refer Zohobook helper
$resall = json_decode($result2, true);
$res2[] = $resall['invoice'];
}
}
$insert_count = 0;
$update_count = 0;
// echo json_encode($res2);die();
foreach ($res2 as $rs) {
$gst_no = $rs['gst_no'];
$sku = $rs['line_items'][0]['sku'];
$invoice_number = $rs['invoice_number'];
$invoice_date = $rs['date'];
$status = $rs['status'];
$due_date = $rs['due_date'];
$item_price = $rs['line_items'][0]['rate'];
$item_order = $rs['line_items'][0]['item_order'];
$item_product_unit = $rs['line_items'][0]['unit'];
$item_name = $rs['line_items'][0]['name'];
$item_description = $rs['line_items'][0]['description'];
$item_quantity = $rs['line_items'][0]['quantity'];
// $batch_no = $rs['custom_fields'][5]['value'];
$batch_no = "";
$invoice_time = $rs['created_time'];
$time_array = explode("T", $invoice_time);
$time_array = explode("+", $time_array[1]);
$invoice_time = $time_array[0];
$status = $rs['status'];
//$vehicle_number = $rs['custom_field_hash']['cf_vehicle_number'];
//$transport_mode =$rs['custom_field_hash']['cf_transport_mode'];
//$purchase_order_date = $rs['custom_field_hash']['cf_purchase_order_date'];
$driver = $rs['custom_field_hash']['cf_driver'];
$place_of_supply = $rs['custom_field_hash']['cf_place_of_supply'];
$cgst = $rs['taxes'][0]['tax_name'];
$sgst = $rs['taxes'][1]['tax_name'];
$cgst = $cgst[4];
$sgst = $sgst[4];
$cgst = $cgst . '.000';
$getcgsttax = "SELECT * FROM ip_tax_rates WHERE tax_rate_percent='$cgst'";
$res_cgsttax = $con->query($getcgsttax);
$rw_cgsttax = $res_cgsttax->fetch_assoc();
$cgsttaxid = $rw_cgsttax['tax_rate_id'];
$sgst = $sgst . '.000';
$getsgsttax = "SELECT * FROM ip_tax_rates WHERE tax_rate_percent='$sgst'";
$res_sgsttax = $con->query($getsgsttax);
$rw_sgsttax = $res_sgsttax->fetch_assoc();
$sgsttaxid = $rw_sgsttax['tax_rate_id'];
$item_subtotal = $rs['line_items'][0]['item_total'];
$item_tax_total = $rs['tax_total'];
$item_total = $rs['total'];
$item_sgst_amt = $rs['taxes'][1]['tax_amount'];
$item_cgst_amt = $rs['taxes'][0]['tax_amount'];
$item_discount = 0.00;
$item_igst_amt = 0.00;
if ($batch_no == "") {
$batch_no = "";
}
$gst_sql = "SELECT * FROM ip_clients WHERE client_tax_code='$gst_no'";
$res_gst = $con->query($gst_sql);
// $r_gst[] = $res_gst->fetch_assoc()['client_id'];
$client_id = $res_gst->fetch_assoc()['client_id'];
$sku_sql = "SELECT * FROM ip_products WHERE sku='$sku'";
$res_sku = $con->query($sku_sql);
// $r_sku[] = $res_sku->fetch_assoc()['product_id'];
$product_id = $res_sku->fetch_assoc()['product_id'];
$sql_invoice_chk = "SELECT * FROM ip_invoices WHERE invoice_number='$invoice_number' AND invoice_date_created='$invoice_date'";
$res_invoice = $con->query($sql_invoice_chk);
if ($res_invoice->num_rows <= 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_sql = $Zohobook_model->customInsert($gst_no_data, 'ip_clients');
$client_id = $gst_sql[0]['tax_rate_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;
$sql_invoice_insert = "INSERT INTO ip_invoices(user_id,client_id,invoice_group_id,invoice_status_id,invoice_date_created,invoice_time_created,invoice_date_due,invoice_number,invoice_url_key,receivedstatus,crediT_Status)VALUES(1,'$client_id',6,2,'$invoice_date','$invoice_time','$due_date','$invoice_number','$url_key','ST066',0)";
$result_invoice_insert = $con->query($sql_invoice_insert);
$invoice_insert_id = $con->insert_id;
$sql_invoiceitem_insert = "INSERT INTO ip_invoice_items(invoice_id,item_product_id,item_date_added,item_name,item_description,item_quantity,item_price,item_order,item_product_unit,Sgst_item_tax_rate_id,Cgst_item_tax_rate_id)
VALUES('$invoice_insert_id','$product_id','$invoice_date','$item_name','$item_description','$item_quantity','$item_price','$item_order','$item_product_unit','$sgsttaxid','$cgsttaxid')";
$result_invoiceitem_insert = $con->query($sql_invoiceitem_insert);
$item_insert_id = $con->insert_id;
//tax amount -- ip_invoice_item_amounts - table
$sql_tax_amount_insert = "INSERT INTO ip_invoice_item_amounts(item_id,item_subtotal,item_tax_total,item_total,item_sgst_amt,item_cgst_amt,item_discount,item_igst_amt)VALUES('$item_insert_id','$item_subtotal','$item_tax_total','$item_total','$item_sgst_amt','$item_cgst_amt','$item_discount','$item_igst_amt')";
$result_tax_amount_insert = $con->query($sql_tax_amount_insert);
//custom fields insert
$sql_invoice_custom_insert = "INSERT INTO ip_invoice_custom(invoice_id,invoice_custom_fieldid,invoice_custom_fieldvalue)VALUES('$invoice_insert_id',62,'$batch_no')";
$result_invoice_custom_insert = $con->query($sql_invoice_custom_insert);
// $custom_vehicle = "INSERT INTO ip_invoice_custom(invoice_id,invoice_custom_fieldid,invoice_custom_fieldvalue)VALUES('$invoice_insert_id',8,'$vehicle_number')";
// $res_vehicle = $con->query($custom_vehicle);
// $custom_transport_mode = "INSERT INTO ip_invoice_custom(invoice_id,invoice_custom_fieldid,invoice_custom_fieldvalue)VALUES('$invoice_insert_id',7,'$transport_mode')";
// $res_transport_mode= $con->query($custom_transport_mode);
// $custom_purchase_order_date= "INSERT INTO ip_invoice_custom(invoice_id,invoice_custom_fieldid,invoice_custom_fieldvalue)VALUES('$invoice_insert_id',15,'$purchase_order_date')";
// $res_purchase_order_date = $con->query($custom_purchase_order_date);
$custom_driver = "INSERT INTO ip_invoice_custom(invoice_id,invoice_custom_fieldid,invoice_custom_fieldvalue)VALUES('$invoice_insert_id',58,'$driver')";
$res_driver = $con->query($custom_driver);
$custom_place = "INSERT INTO ip_invoice_custom(invoice_id,invoice_custom_fieldid,invoice_custom_fieldvalue)VALUES('$invoice_insert_id',10,'$place_of_supply')";
$res_place = $con->query($custom_place);
$insert_count = $insert_count + 1;
echo "success";
$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'] : "";
$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
if($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
if($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
if($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
if($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
if($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
if($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[0]['tax_rate_id'];
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[0]['tax_rate_id'];
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 ($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_sql = $Zohobook_model->customInsert($sku_data, 'ip_products');
$product_id = $sku_sql[0]['sku'];
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
{
if ($status == "void") {
$sql_invoice_update = "UPDATE ip_invoices SET invoice_status_id = 5 WHERE invoice_number='$invoice_number' AND invoice_date_created='$invoice_date'";
$sql_invoice_update = $con->query($sql_invoice_update);
echo "update-" . $sql_invoice_update;
if ($status == "void" || $status == "sent" || $status == "ovedue") {
$sql_invoice_update = array();
$sql_invoice_update['invoice_status_id'] = (($status == "sent" || $status == "ovedue") ? 2 : 5);
// echo 'script' . $invoice_number. $status;
// print_r( $sql_invoice_update);
// echo '<br>';
$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 . '/' . 'cancelled status updated count - ' . $update_count;
} else {
$invoice_id = $res->invoices[0]->invoice_id;
if ($invoice_id !== "") {
$url2 = 'https://books.zoho.com/api/v3/invoices/' . $invoice_id . '?organization_id=' . $organization_id;
curl_setopt($ch, CURLOPT_URL, $url2);
curl_setopt($ch, CURLOPT_HTTPHEADER, $headers);
curl_setopt($ch, CURLOPT_HEADER, 0);
$body2 = '{}';
curl_setopt($ch, CURLOPT_CUSTOMREQUEST, "GET");
curl_setopt($ch, CURLOPT_POSTFIELDS, $body2);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
$result2 = curl_exec($ch);
$res2 = json_decode($result2);
}
echo 'new invoice inserted count- ' . $insert_count . '/' . 'status updated count - ' . $update_count;
}else{
$err = 'invoice details not founded ( from '.$date_yesterday.' into '.$date_today.' )';
log_message('ERROR', $err);
echo $err;
throw new \Exception($err);
}
curl_close($ch);
// curl_close($ch);
// }
} catch (Exception $e) {
$data['err'] = $e->getMessage();
$data['last_query'] = $this->db->getLastQuery();
$Zohobook_model->customInsert($data, 'zohobook_api_err');
log_message('ERROR', "Data insertion failed : " . $e->getMessage());
}
}
// END zoho API
// END zoho API
}

View File

@ -143,6 +143,28 @@ if (!function_exists('get_shorten_financial_year')) {
}
}
if (!function_exists('add_one_hour_date')) {
function add_one_hour_date($dateString) {
$date = new DateTime($dateString);
$date->add(new DateInterval('PT1H'));
return $date->format('Y-m-d H:i:s');
}
}
if (!function_exists('get_date_days_ago')) {
function get_date_days_ago($date = null, $format = 'Y-m-d', $days = '-2 days') {
if (is_null($date)) {
$date = new \DateTime('now');
} else {
$date = new \DateTime($date);
}
$timestamp = $date->getTimestamp();
$newDate = date($format, strtotime($days, $timestamp));
return $newDate;
}
}
if (!function_exists('generate_pos_number')) {
function generate_pos_number($last_pono)
{

View File

@ -108,3 +108,67 @@ if (! function_exists('getheringInvoiceSubDetails')) {
}
?>
function generateNewToken()
{
$ch=curl_init();
$organization_id = '776847408';
$client_id = '1000.0WMDLCXAZV5DR60IKE9P49YTYGVL6C';
$refresh_token = '1000.0fcf314cc7b7b598df6e519461bbe9b8.f77688a2254137532ae33ad5e152a064';
$client_secret = '99da3a05cfa13cf91eb6476a3c44cfa3e21b6106a8';
$redirect_uri = 'https://resicoindustries.com/RIA/';
$accesstoken = '1000.095b66fc95fc81874c1cfc7d15b0904e.10bc9956d9b9ec14cce1350ee0cf8254';
$url_getauthtoken = 'https://accounts.zoho.com/oauth/v2/token?refresh_token='.$refresh_token.'&client_id='.$client_id.'&client_secret='.$client_secret.'&redirect_uri='.$redirect_uri.'&grant_type=refresh_token';
$headers=array('Authorization:Zoho-oauthtoken '.$accesstoken,'Content-Type:application/json');
curl_setopt($ch, CURLOPT_URL, $url_getauthtoken);
curl_setopt($ch, CURLOPT_HTTPHEADER, $headers);
curl_setopt($ch, CURLOPT_HEADER, 0);
$body = '{}';
curl_setopt($ch, CURLOPT_CUSTOMREQUEST, "POST");
curl_setopt($ch, CURLOPT_POSTFIELDS,$body);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
$res_token=curl_exec($ch);
$ress = json_decode($res_token);
return $ress->access_token;
}
function getheringInvoiceDetails($date_today , $date_yesterday , $accesstoken)
{
$ch=curl_init();
$organization_id = '776847408';
$url_org ="https://books.zoho.com/api/v3/invoices?";
$fields=array("usestate" => "true","organization_id" => $organization_id,"date_start" => $date_yesterday,"date_end" => $date_today);
$data_all = http_build_query($fields);
$headers=array('Authorization:Zoho-oauthtoken '.$accesstoken,'Content-Type:application/json');
$data_access = $url_org.$data_all;
curl_setopt($ch, CURLOPT_URL, $url_org.$data_access);
curl_setopt($ch, CURLOPT_HTTPHEADER, $headers);
curl_setopt($ch, CURLOPT_HEADER, 0);
$body = '{}';
curl_setopt($ch, CURLOPT_CUSTOMREQUEST, "GET");
curl_setopt($ch, CURLOPT_POSTFIELDS,$body);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
$result=curl_exec($ch);
$data['headers_new'] = $headers;
$data['data'] = curl_exec($ch);
return $data;
}
function getheringInvoiceSubDetails($invoice_id , $organization_id , $headers)
{
$ch=curl_init();
$url2 = 'https://books.zoho.com/api/v3/invoices/'.$invoice_id.'?organization_id='.$organization_id;
curl_setopt($ch, CURLOPT_URL, $url2);
curl_setopt($ch, CURLOPT_HTTPHEADER, $headers);
curl_setopt($ch, CURLOPT_HEADER, 0);
$body2 = '{}';
curl_setopt($ch, CURLOPT_CUSTOMREQUEST, "GET");
curl_setopt($ch, CURLOPT_POSTFIELDS,$body2);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
return curl_exec($ch);
}

View File

@ -39,7 +39,7 @@ $Adv='';
</div>
<div class="box-body">
<table id="example1" class="table table-bordered table-hover editableTable" style="font-size:12px;">
<thead>
<thead style="background-color: #ddd;">
<tr >
<th>SNO#</th>
<th>PONO#</th>

View File

@ -44,7 +44,7 @@
<div class="col-xs-12">
<table class="table table-bordered table-hover" id="datatable" style="background-color:#fff;font-size:11px !important;" >
<thead>
<thead style="background-color: #ddd;">
<tr>
<th>Supplier ID</th>
<th>Supplier Name</th>

View File

@ -42,7 +42,7 @@
<div class="col-xs-12">
<table class="table table-hover table-bordered" id="datatable" style="background-color:#fff;font-size:12px;" >
<thead>
<thead style="background-color: #ddd;">
<tr>
<th>User Id</th>
<th>User Name</th>

View File

@ -19,7 +19,7 @@
<!-- /.box-header -->
<div class="box-body">
<table id="viewfullpo" class="table table-bordered table-hover editablTable">
<thead>
<thead style="background-color: #ddd;">
<tr >
<th>#</th>
<th>PONO#</th>

Binary file not shown.

After

Width:  |  Height:  |  Size: 17 KiB

BIN
public/uploads/spinner.gif Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 17 KiB