"MikroDB_V16_TBM", "Uid" => "", "PWD" => "", "CharacterSet" => "UTF-8" ); $conn = sqlsrv_connect($serverName, $connectionOptions); if (!$conn) { die(print_r(sqlsrv_errors(), true)); } // Belirtilen URL'den JSON verisini çekme $json_url = 'http://217.195.197.91/main/checkeddoviz/serbestkur/'; $ch = curl_init($json_url); curl_setopt($ch, CURLOPT_RETURNTRANSFER, true); $json_response = curl_exec($ch); curl_close($ch); // JSON verisini diziye çevirme $doviz_data = json_decode($json_response, true); // Döviz verilerini bir değişkene atama $usd_to_try = $doviz_data[0]['Usd']; $eur_to_try = $doviz_data[0]['Euro']; // Shopify API bilgileri $api_key = 'eff5108d4f4cf4d939d35d768b59b641'; $password = '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'; $store_url = 'https://kagitciniz.myshopify.com'; $api_url = $store_url . '/admin/api/2024-07/products.json'; // API isteği için başlıklar $headers = array( 'Content-Type: application/json', 'Authorization: Basic ' . base64_encode($api_key . ':' . $password) ); // Veritabanından stok bilgilerini çek $sql = " SELECT TOP 100 PERCENT sto_Guid AS [#msg_S_0088] /* KAYIT NO */ , sto_isim AS [msg_S_0870] /* ADI */, sto_kod AS [msg_S_0078] /* KODU */, ISNULL(sfiyat_fiyati,0) AS [msg_S_0006] /* FİYAT */, Kur_adi AS [msg_S_1173] /* DVZ */, sto_perakende_vergi AS [KDV Oranı] /* KDV */, dbo.fn_EldekiMiktar(sto_kod) AS [msg_S_0165], /* MİKTAR */ dbo.fn_DepodakiMiktar(sto_kod,1,GETDATE())*sto_birim2_katsayi as [Birim 2 Miktar], sto_birim4_katsayi as [Birim 4 Miktar], sto_birim4_agirlik as [Birim 4 Ağırlık], sto_birim4_en as [Birim 4 En], sto_birim4_boy as [Birim 4 Boy], sto_birim4_dara as [Birim 4 Gramaj], (SELECT TOP(1) dbo.fn_StokHareketNetDeger(sth_tutar, sth_iskonto1, sth_iskonto2, sth_iskonto3,sth_iskonto4,sth_iskonto5,sth_iskonto6, sth_masraf1,sth_masraf2,sth_masraf3,sth_masraf4, sth_otvtutari, sth_oivtutari ,sth_tip, 0, sth_har_doviz_kuru, sth_alt_doviz_kuru,sth_stok_doviz_kuru) /sth_miktar/sth_stok_doviz_kuru AS Expr1 FROM STOK_HAREKETLERI where (sth_tip=0) AND (NOT(sth_cins IN (15,9)))AND (sth_stok_kod = dbo.STOKLAR.sto_kod) AND (sth_normal_iade = 0) ORDER BY sth_tarih DESC) AS [SON GİRİŞ FİYATI], (SELECT TOP(1) dbo.fn_StokHareketNetDeger(sth_tutar, sth_iskonto1, sth_iskonto2, sth_iskonto3,sth_iskonto4,sth_iskonto5,sth_iskonto6, sth_masraf1,sth_masraf2,sth_masraf3,sth_masraf4, sth_otvtutari, sth_oivtutari ,sth_tip, 0, sth_har_doviz_kuru, sth_alt_doviz_kuru,sth_stok_doviz_kuru) /sth_miktar/sth_stok_doviz_kuru*1.20 AS Expr1 FROM STOK_HAREKETLERI where (sth_tip=0) AND (NOT(sth_cins IN (15,9)))AND (sth_stok_kod = dbo.STOKLAR.sto_kod) AND (sth_normal_iade = 0) ORDER BY sth_tarih DESC) AS [İLK GİRİŞ KURUNA GÖRE SATIŞ FİYATI %20], (SELECT TOP(1) dbo.fn_StokHareketNetDeger(sth_tutar, sth_iskonto1, sth_iskonto2, sth_iskonto3,sth_iskonto4,sth_iskonto5,sth_iskonto6, sth_masraf1,sth_masraf2,sth_masraf3,sth_masraf4, sth_otvtutari, sth_oivtutari ,sth_tip, 0, sth_har_doviz_kuru, sth_alt_doviz_kuru,sth_stok_doviz_kuru) /sth_miktar/sth_alt_doviz_kuru*dbo.fn_KurBul(GETDATE(),2,4) AS TEST FROM STOK_HAREKETLERI where (sth_tip=0) AND (NOT(sth_cins IN (15,9)))AND (sth_stok_kod = dbo.STOKLAR.sto_kod) AND (sth_normal_iade = 0) ORDER BY sth_tarih DESC) AS [GÜNCEL KURA GÖRE SON GİRİŞ FİYATI], (SELECT TOP(1) dbo.fn_StokHareketNetDeger(sth_tutar, sth_iskonto1, sth_iskonto2, sth_iskonto3,sth_iskonto4,sth_iskonto5,sth_iskonto6, sth_masraf1,sth_masraf2,sth_masraf3,sth_masraf4, sth_otvtutari, sth_oivtutari ,sth_tip, 0, sth_har_doviz_kuru, sth_alt_doviz_kuru,sth_stok_doviz_kuru) /sth_miktar/sth_alt_doviz_kuru*dbo.fn_KurBul(GETDATE(),2,4)*1.20 AS TEST FROM STOK_HAREKETLERI where (sth_tip=0) AND (NOT(sth_cins IN (15,9)))AND (sth_stok_kod = dbo.STOKLAR.sto_kod) AND (sth_normal_iade = 0) ORDER BY sth_tarih DESC) AS [GÜNCEL KURA GÖRE SATIŞ FİYATI %20], (SELECT TOP(1) dbo.fn_StokHareketNetDeger(sth_tutar, sth_iskonto1, sth_iskonto2, sth_iskonto3,sth_iskonto4,sth_iskonto5,sth_iskonto6, sth_masraf1,sth_masraf2,sth_masraf3,sth_masraf4, sth_otvtutari, sth_oivtutari ,sth_tip, 0, sth_har_doviz_kuru, sth_alt_doviz_kuru,sth_stok_doviz_kuru) /sth_miktar/dbo.fn_KurBul(sth_tarih,2,4) AS TEST FROM STOK_HAREKETLERI where (sth_tip=0) AND (NOT(sth_cins IN (15,9)))AND (sth_stok_kod = dbo.STOKLAR.sto_kod) AND (sth_normal_iade = 0) ORDER BY sth_tarih DESC) AS [SON EURO GİRİŞ FİYATI], (SELECT TOP(1) dbo.fn_StokHareketNetDeger(sth_tutar, sth_iskonto1, sth_iskonto2, sth_iskonto3,sth_iskonto4,sth_iskonto5,sth_iskonto6, sth_masraf1,sth_masraf2,sth_masraf3,sth_masraf4, sth_otvtutari, sth_oivtutari ,sth_tip, 0, sth_har_doviz_kuru, sth_alt_doviz_kuru,sth_stok_doviz_kuru) /sth_miktar/dbo.fn_KurBul(sth_tarih,1,4) AS TEST FROM STOK_HAREKETLERI where (sth_tip=0) AND (NOT(sth_cins IN (15,9)))AND (sth_stok_kod = dbo.STOKLAR.sto_kod) AND (sth_normal_iade = 0) ORDER BY sth_tarih DESC) AS [SON DOLAR GİRİŞ FİYATI], (SELECT TOP(1) dbo.fn_StokHareketNetDeger(sth_tutar, sth_iskonto1, sth_iskonto2, sth_iskonto3,sth_iskonto4,sth_iskonto5,sth_iskonto6, sth_masraf1,sth_masraf2,sth_masraf3,sth_masraf4, sth_otvtutari, sth_oivtutari ,sth_tip, 0, sth_har_doviz_kuru, sth_alt_doviz_kuru,sth_stok_doviz_kuru) /sth_miktar/dbo.fn_KurBul(sth_tarih,2,4)*1.20 AS TEST FROM STOK_HAREKETLERI where (sth_tip=0) AND (NOT(sth_cins IN (15,9)))AND (sth_stok_kod = dbo.STOKLAR.sto_kod) AND (sth_normal_iade = 0) ORDER BY sth_tarih DESC) AS [%20 EURO SATIŞ FİYATI], (SELECT TOP(1) dbo.fn_StokHareketNetDeger(sth_tutar, sth_iskonto1, sth_iskonto2, sth_iskonto3,sth_iskonto4,sth_iskonto5,sth_iskonto6, sth_masraf1,sth_masraf2,sth_masraf3,sth_masraf4, sth_otvtutari, sth_oivtutari ,sth_tip, 0, sth_har_doviz_kuru, sth_alt_doviz_kuru,sth_stok_doviz_kuru) /sth_miktar/dbo.fn_KurBul(sth_tarih,1,4)*1.20 AS TEST FROM STOK_HAREKETLERI where (sth_tip=0) AND (NOT(sth_cins IN (15,9)))AND (sth_stok_kod = dbo.STOKLAR.sto_kod) AND (sth_normal_iade = 0) ORDER BY sth_tarih DESC) AS [%20 DOLAR SATIŞ FİYATI] FROM dbo.STOKLAR WITH (NOLOCK) LEFT OUTER JOIN dbo.STOK_SATIS_FIYATLARI_F1_D0_VIEW on sfiyat_stokkod = sto_kod AND sfiyat_satirno = 1 LEFT OUTER JOIN MikroDB_V16.dbo.KUR_ISIMLERI on Kur_No = ISNULL(sfiyat_doviz,0) ORDER BY sto_kod "; $result = sqlsrv_query($conn, $sql); if (!$result) { die(print_r(sqlsrv_errors(), true)); } // Stok kodları listesini oluştur $sql_stok_kodu_list = array(); while ($row = sqlsrv_fetch_array($result, SQLSRV_FETCH_ASSOC)) { $msg_S_0165 = round($row['msg_S_0165']); // Yuvarlama işlemi $sql_stok_kodu_list[$row['msg_S_0078']] = array( 'msg_S_0165' => $row['msg_S_0165'], 'msg_S_0006' => $row['msg_S_0006'], 'msg_S_1173' => $row['msg_S_1173'], // Döviz bilgisini ekle 'birim_miktar' => $row['Birim 4 Miktar'], // Döviz bilgisini ekle 'kdv_orani' => $row['KDV Oranı'], // Döviz bilgisini ekle 'birim_agirlik' => $row['Birim 4 Ağırlık'], // Birim 4 Ağırlık bilgisini ekle 'birim_eni' => $row['Birim 4 En'], // Birim 4 En bilgisini ekle 'birim_boyu' => $row['Birim 4 Boy'], // Birim 4 Boy bilgisini ekle 'birim_gramaji' => $row['Birim 4 Gramaj'], // Birim 4 Gramaj bilgisini ekle 'euro_satis_fiyati_20' => $row['%20 EURO SATIŞ FİYATI'], // %20 Euro Satış Fiyatı bilgisini ekle 'dolar_satis_fiyati_20' => $row['%20 DOLAR SATIŞ FİYATI'], // %20 Dolar Satış Fiyatı bilgisini ekle ); } // Shopify'dan ürünleri al ve sayfalama yap $products_per_page = 250; // Her sayfada gösterilecek ürün sayısı $page_info = null; // Başlangıçta sayfa bilgisi yok $updated_products_count = 0; do { $ch = curl_init(); $page_url = $api_url . '?limit=' . $products_per_page; if ($page_info) { $page_url .= '&page_info=' . $page_info; } curl_setopt($ch, CURLOPT_URL, $page_url); curl_setopt($ch, CURLOPT_RETURNTRANSFER, true); curl_setopt($ch, CURLOPT_HTTPHEADER, $headers); $response = curl_exec($ch); if (curl_errno($ch)) { die('Error: ' . curl_error($ch)); } curl_close($ch); $response_data = json_decode($response, true); if (isset($response_data['errors'])) { die('API Error: ' . json_encode($response_data['errors'])); } if (!isset($response_data['products']) || empty($response_data['products'])) { echo 'No products found on this page.' . "\n"; break; // Ürün bulunmuyor, döngüyü bitir } // Shopify ürünlerini stok kodları ile eşleştir $shopify_products = $response_data['products']; $shopify_products_map = []; foreach ($shopify_products as $product) { foreach ($product['variants'] as $variant) { $shopify_products_map[$variant['sku']] = [ 'product_id' => $product['id'], 'variant_id' => $variant['id'] ]; } } // Eşleştirme ve fiyat güncelleme foreach ($sql_stok_kodu_list as $sku => $data) { if (isset($shopify_products_map[$sku])) { $doviz_bilgisi = $data['msg_S_1173']; $sql_fiyat = $data['msg_S_0006']; $sql_fiyat_euro = $data['euro_satis_fiyati_20']; $sql_fiyat_dolar = $data['dolar_satis_fiyati_20']; $birim4 = abs(floatval($data['birim_miktar'])); $kdv_oran = $data['kdv_orani']; $birim_ag = $data['birim_agirlik']; $birim_en = $data['birim_eni']; $birim_boy = $data['birim_boyu']; $birim_gramaj = $data['birim_gramaji']; $urun_agirlik_son_iki_ondalik = number_format($birim_ag, 2, '.', ''); $sql_fiyat_son_iki_ondalik = number_format($sql_fiyat, 2, '.', ''); $sql_fiyat_euro_son_iki_ondalik = number_format($sql_fiyat_euro, 2, '.', ''); $sql_fiyat_dolar_son_iki_ondalik = number_format($sql_fiyat_dolar, 2, '.', ''); // Fiyat çarpımı ve döviz kontrolü if (isset($shopify_products_map[$sku]['product_id'])) { $product_id = $shopify_products_map[$sku]['product_id']; $variant_id = $shopify_products_map[$sku]['variant_id']; // Fiyat çarpımı faktörünü hesapla if ($doviz_bilgisi === 'Euro') { if ($kdv_oran === 8) { if ($birim_gramaj > 0.000) { $kdv_oran = 1.20; $fiyat_carpim_faktoru = ($urun_agirlik_son_iki_ondalik / $birim_en / $birim_boy / $birim_gramaj * 1000000000) * ($sql_fiyat_euro * $kdv_oran) * $eur_to_try; } else { $kdv_oran = 1.20; $fiyat_carpim_faktoru = ($birim4 * $sql_fiyat_euro * $kdv_oran) * $eur_to_try; } } elseif ($kdv_oran === 7) { if ($birim_gramaj > 0.000) { $kdv_oran = 1.10; $fiyat_carpim_faktoru = ($urun_agirlik_son_iki_ondalik / $birim_en / $birim_boy / $birim_gramaj * 1000000000) * ($sql_fiyat_euro * $kdv_oran) * $eur_to_try; } else { $kdv_oran = 1.10; $fiyat_carpim_faktoru = ($birim4 * $sql_fiyat_euro * $kdv_oran) * $eur_to_try; } } } elseif ($doviz_bilgisi === 'Dolar') { if ($kdv_oran === 8) { if ($birim_gramaj > 0.000) { $kdv_oran = 1.20; $fiyat_carpim_faktoru = ($urun_agirlik_son_iki_ondalik / $birim_en / $birim_boy / $birim_gramaj * 1000000000) * ($sql_fiyat_dolar * $kdv_oran) * $usd_to_try; } else { $kdv_oran = 1.20; $fiyat_carpim_faktoru = ($birim4 * $sql_fiyat_dolar * $kdv_oran) * $usd_to_try; } } elseif ($kdv_oran === 7) { if ($birim_gramaj > 0.000) { $kdv_oran = 1.10; $fiyat_carpim_faktoru = ($urun_agirlik_son_iki_ondalik / $birim_en / $birim_boy / $birim_gramaj * 1000000000) * ($sql_fiyat_dolar * $kdv_oran) * $usd_to_try; } else { $kdv_oran = 1.10; $fiyat_carpim_faktoru = ($birim4 * $sql_fiyat_dolar * $kdv_oran) * $usd_to_try; } } } elseif ($doviz_bilgisi === 'Türk Lirası') { if ($kdv_oran === 8) { if ($birim_gramaj > 0.000) { $kdv_oran = 1.20; $fiyat_carpim_faktoru = ($urun_agirlik_son_iki_ondalik / $birim_en / $birim_boy / $birim_gramaj * 1000000000) * ($sql_fiyat * $kdv_oran); } else { $kdv_oran = 1.20; $fiyat_carpim_faktoru = ($birim4 * $sql_fiyat * $kdv_oran); } } elseif ($kdv_oran === 7) { if ($birim_gramaj > 0.000) { $kdv_oran = 1.10; $fiyat_carpim_faktoru = ($urun_agirlik_son_iki_ondalik / $birim_en / $birim_boy / $birim_gramaj * 1000000000) * ($sql_fiyat * $kdv_oran); } else { $kdv_oran = 1.10; $fiyat_carpim_faktoru = ($birim4 * $sql_fiyat * $kdv_oran); } } } // Shopify'daki ürünün fiyatını güncelle $update_url = $store_url . "/admin/api/2024-07/products/{$product_id}/variants/{$variant_id}.json"; $update_data = array( 'variant' => array( 'id' => $variant_id, 'price' => number_format($fiyat_carpim_faktoru, 2, '.', '') ) ); $ch = curl_init(); curl_setopt($ch, CURLOPT_URL, $update_url); curl_setopt($ch, CURLOPT_RETURNTRANSFER, true); curl_setopt($ch, CURLOPT_CUSTOMREQUEST, "PUT"); curl_setopt($ch, CURLOPT_POSTFIELDS, json_encode($update_data)); curl_setopt($ch, CURLOPT_HTTPHEADER, $headers); $update_response = curl_exec($ch); if (curl_errno($ch)) { echo 'Error: ' . curl_error($ch) . "\n"; } else { echo 'Product ' . $sku . ' updated successfully.' . "\n"; $updated_products_count++; } curl_close($ch); } } } // Sayfa bilgisi güncelle $page_info = isset($response_data['next_page_info']) ? $response_data['next_page_info'] : null; } while ($page_info); // Toplam güncellenmiş ürün sayısını yazdır echo 'Toplam güncellenmiş ürün sayısı: ' . $updated_products_count . "\n"; ?>