diff --git a/app/Controllers/User.php b/app/Controllers/User.php index 59ab3187..170fa718 100755 --- a/app/Controllers/User.php +++ b/app/Controllers/User.php @@ -15,6 +15,7 @@ use App\Models\Ipinvoice_model; use App\Models\Ipattachment_model; use App\Models\Zohobooks_api_model; use App\Models\CreditNoteModel; +use App\Models\IpCreditNotesItemsModel; require_once 'vendor/autoload.php'; @@ -36,6 +37,7 @@ class User extends BaseController protected $ipinvoice_model; protected $ipattachment_model; protected $CreditNoteModel; + protected $CreditNotesItemsModel; protected $session; /** @@ -53,6 +55,7 @@ class User extends BaseController $this->ipinvoice_model = new Ipinvoice_model(); $this->ipattachment_model = new Ipattachment_model(); $this->CreditNoteModel = new CreditNoteModel(); + $this->CreditNotesItemsModel = new IpCreditNotesItemsModel(); $this->session = session(); helper('form'); //$this->load->library('form_validation'); $this->isLoggedIn(); @@ -1382,13 +1385,14 @@ class User extends BaseController $tokenWithCreditNoteScope = generateNewTokenForCreditNoteScope(); $cteditNotesRes = getAllCreditNotes($date_today, $date_yesterday, $tokenWithCreditNoteScope); - $cteditNotesData = json_decode($cteditNotesRes['data'],true); + $cteditNotesData = json_decode($cteditNotesRes['data'],true); + if(count($cteditNotesData['creditnotes'])) { - $this->saveOrUpdateCreditNote($cteditNotesData['creditnotes']); + $this->saveOrUpdateCreditNote($cteditNotesData['creditnotes'] , $tokenWithCreditNoteScope); } - + // dd($cteditNotesData); foreach ($inv_array as $inv) { @@ -1714,7 +1718,7 @@ class User extends BaseController } // END zoho API - public function saveOrUpdateCreditNote($data) + public function saveOrUpdateCreditNote($data , $tokenWithCreditNoteScope ) { foreach ($data as $key => $value) { @@ -1730,6 +1734,36 @@ class User extends BaseController $this->CreditNoteModel->insert($value); } + + //credit note line item api call + $cteditNotesLineItemsRes = getCreditNotesItemDetails($value['creditnote_id'], $tokenWithCreditNoteScope); + + $lineItemData = json_decode($cteditNotesLineItemsRes['data'],true); + + if(count($lineItemData['creditnote']['line_items'])) + { + foreach ($lineItemData['creditnote']['line_items'] as $itemkey => $itemvalue) + { + $itemvalue['creditnote_id'] = $value['creditnote_id']; + + + + $existingCreditNoteItems = $this->CreditNotesItemsModel->where('line_item_id', $itemvalue['line_item_id'])->first(); + + if ($existingCreditNoteItems) { + // Update existing record + $this->CreditNotesItemsModel->update($itemvalue['line_item_id'], $itemvalue); + + } else { + // Insert new record + $this->CreditNotesItemsModel->insert($itemvalue); + + } + + + } + + } } } diff --git a/app/Helpers/zohobook_helper.php b/app/Helpers/zohobook_helper.php index c92a8c99..8d8be658 100755 --- a/app/Helpers/zohobook_helper.php +++ b/app/Helpers/zohobook_helper.php @@ -185,6 +185,58 @@ if (! function_exists('getAllCreditNotes')) { 'headers_new' => $headers, 'data' => $result ]; + + + + + } + +} + + + +if (! function_exists('getCreditNotesItemDetails')) { + function getCreditNotesItemDetails($creditNoteId, $accesstoken) + { + // Initialize cURL + $ch = curl_init(); + + // Zoho API credentials + $organization_id = '776847408'; + $url_org = "https://www.zohoapis.com/books/v3/creditnotes/".$creditNoteId."?organization_id=$organization_id"; + + + // Set headers + $headers = array( + 'Authorization: Zoho-oauthtoken ' . $accesstoken, + // 'Content-Type: application/json' + ); + + // Set cURL options + curl_setopt($ch, CURLOPT_URL, $url_org ); + curl_setopt($ch, CURLOPT_HTTPHEADER, $headers); + curl_setopt($ch, CURLOPT_CUSTOMREQUEST, "GET"); + curl_setopt($ch, CURLOPT_RETURNTRANSFER, true); + + // Execute cURL request + $result = curl_exec($ch); + + // Check for errors + if ($result === false) { + return ['error' => curl_error($ch)]; + } + + // Close cURL session + curl_close($ch); + + return [ + 'headers_new' => $headers, + 'data' => $result + ]; + + + + } } diff --git a/app/Models/CreditNoteModel.php b/app/Models/CreditNoteModel.php index 5bcd0406..a202f7a3 100644 --- a/app/Models/CreditNoteModel.php +++ b/app/Models/CreditNoteModel.php @@ -47,14 +47,25 @@ class CreditNoteModel extends Model /** * Fetch all credit notes */ - public function getAllCreditNotes($fromDate,$toDate) + // public function getAllCreditNotes($fromDate,$toDate) + // { + // return $this->where('date >=', $fromDate ) + // ->where('date <=', $toDate ) + // ->orderBy('date', 'DESC') + // ->findAll(); + // } + + public function getAllCreditNotes($fromDate, $toDate) { - return $this->where('date >=', $fromDate ) - ->where('date <=', $toDate ) - ->orderBy('date', 'DESC') + return $this->select('ip_credit_notes.*, ip_credit_notes_items.name as item_name') + ->join('ip_credit_notes_items', 'ip_credit_notes.creditnote_id = ip_credit_notes_items.creditnote_id', 'left') + ->where('ip_credit_notes.date >=', $fromDate) + ->where('ip_credit_notes.date <=', $toDate) + ->orderBy('ip_credit_notes.date', 'DESC') ->findAll(); } + /** * Fetch a single credit note by ID */ diff --git a/app/Models/IpCreditNotesItemsModel.php b/app/Models/IpCreditNotesItemsModel.php new file mode 100644 index 00000000..09a61944 --- /dev/null +++ b/app/Models/IpCreditNotesItemsModel.php @@ -0,0 +1,71 @@ +where('creditnote_id', $creditnoteId)->findAll(); + } +} diff --git a/app/Views/credit_notes.php b/app/Views/credit_notes.php index d6fab6ce..5f66e39e 100644 --- a/app/Views/credit_notes.php +++ b/app/Views/credit_notes.php @@ -238,6 +238,7 @@ Credit Note Invoice Client + Item Name Item Price Item qty Sub Total @@ -257,6 +258,7 @@ +