jamboljack

Customer

Jan 7th, 2026
62
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
PHP 2.92 KB | None | 0 0
  1. private function sync_customer_simple($invoice)
  2.     {
  3.         // Jika customer sudah ada Jurnal ID, pakai yang ada
  4.         if (!empty($invoice->pelanggan_jurnal_id)) {
  5.             return [
  6.                 'success'   => true,
  7.                 'jurnal_id' => $invoice->pelanggan_jurnal_id
  8.             ];
  9.         }
  10.        
  11.         // Cek apakah customer sudah ada di Mekari
  12.         $customer_name = trim($invoice->pelanggan_nama);
  13.         try {
  14.             $response = $this->mekari_jurnal->request(
  15.                 'GET',
  16.                 '/public/jurnal/api/v1/contacts',
  17.                 ['type' => 'customer', 'name' => urlencode($customer_name)]
  18.             );
  19.            
  20.             $contacts = $response['response']['contact_list']['contact_data'] ?? [];
  21.            
  22.             if (!empty($contacts)) {
  23.                 // Customer sudah ada, update database
  24.                 $jurnal_id      = $contacts[0]['id'];
  25.                 $jurnal_name    = $contacts[0]['display_name'];
  26.                
  27.                 $this->db->where('pelanggan_id', $invoice->pelanggan_id)->update('sid_pelanggan', [
  28.                     'pelanggan_jurnal_id' => $jurnal_id,
  29.                     'pelanggan_jurnal_nama' => $jurnal_name
  30.                 ]);
  31.                
  32.                 return ['success' => true, 'jurnal_id' => $jurnal_id];
  33.             }
  34.            
  35.             // Buat customer baru
  36.             $payload = [
  37.                 'person' => [
  38.                     'display_name'  => $customer_name,
  39.                     'is_customer'   => true,
  40.                     'people_type'   => 'customer',
  41.                     'email'         => !empty($invoice->pelanggan_email) ? $invoice->pelanggan_email : '[email protected]',
  42.                     'phone'         => $invoice->pelanggan_telp ?? '',
  43.                     'address'       => $invoice->pelanggan_alamat ?? ''
  44.                 ]
  45.             ];
  46.            
  47.             $create = $this->mekari_jurnal->request(
  48.                 'POST',
  49.                 '/public/jurnal/api/v1/contacts',
  50.                 $payload
  51.             );
  52.            
  53.             if (isset($create['response']['person']['id'])) {
  54.                 $jurnal_id      = $create['response']['person']['id'];
  55.                 $jurnal_name    = $create['response']['person']['display_name'];
  56.                
  57.                 $this->db->where('pelanggan_id', $invoice->pelanggan_id)->update('sid_pelanggan', [
  58.                     'pelanggan_jurnal_id'   => $jurnal_id,
  59.                     'pelanggan_jurnal_nama' => $jurnal_name
  60.                 ]);
  61.                
  62.                 return ['success' => true, 'jurnal_id' => $jurnal_id];
  63.             } else {
  64.                 return ['success' => false, 'message' => 'Gagal membuat customer di Mekari'];
  65.             }
  66.         } catch (Exception $e) {
  67.             return ['success' => false, 'message' => 'Customer sync error: ' . $e->getMessage()];
  68.         }
  69.     }
Advertisement
Add Comment
Please, Sign In to add comment