google.charts.load('current', {'packages':['table']}); var system_cookie="viviendo_fingerprint" var finger_print = ""; var cookie_day = 3; var finger_print_components = []; var base_url = "https://www.interior-classica.com/viviendo"; var show_estimate_list = []; //見積もり商品表示 var estimate_show = () =>{ document.getElementById("title_id").innerHTML = "御見積"; document.getElementById("address_id").innerHTML = estimate_map['address']; document.getElementById("addressee_id").innerHTML = estimate_map['addressee'] +" 様"; for ( var r_key in estimate_map['row']) { var rowMap = estimate_map['row'][r_key]; var eRow = {}; eRow['mode']="estimate"; eRow['quantity']=rowMap['quantity']; eRow['element_id']=rowMap['element_id']; eRow['seq']=rowMap['seq']; eRow['remarks']=""; eRow['fixed']=''; eRow['img_real_path']=rowMap['img_real_path'];; eRow['product_name']=rowMap['product_name']; eRow['product_code']=rowMap['product_code']; eRow['size']=rowMap['size']; eRow['unit_price']=rowMap['unit_price']; eRow['amount_excluding_tax']=rowMap['amount_excluding_tax']-0; if((eRow['amount_excluding_tax']-0) < 0){ eRow['consumption_tax'] = "0"; }else{ eRow['consumption_tax'] = Math.floor((rowMap['amount_excluding_tax'] - 0) * (100 + (now_tax-0)) / 100) - (rowMap['amount_excluding_tax'] - 0); } eRow['amount_of_money']=(eRow['amount_excluding_tax'] - 0)+(eRow['consumption_tax'] - 0) show_estimate_list.push(eRow); } estimate_row_show(); } //登録商品表示 var customer_product_show = () =>{ document.getElementById("title_id").innerHTML = "御見積"; //端末情報からお客様情報を検索しない //document.getElementById("address_id").innerHTML = estimate_map['address']; //document.getElementById("addressee_id").innerHTML = estimate_map['addressee']; /* * id cusotomer_id terminal_id img_real_path element_id product_name product_code size quantity unit_price amount_of_money remarks expiration_date */ for ( var r_key in terminal_map['customer_product']) { var rowMap = terminal_map['customer_product'][r_key]; var eRow = {}; eRow['quantity']=rowMap['quantity']; eRow['element_id']=rowMap['element_id']; eRow['seq']=""; eRow['remarks']=rowMap['remarks']; eRow['fixed']=""; eRow['img_real_path']=rowMap['img_real_path'];; eRow['product_name']=rowMap['product_name']; eRow['product_code']=rowMap['product_code']; eRow['size']=rowMap['size']; eRow['unit_price']=rowMap['unit_price']; eRow['amount_excluding_tax']=(rowMap['unit_price']-0)*(rowMap['quantity']-0); if((eRow['amount_excluding_tax']-0) <0){ eRow['consumption_tax'] = "0"; }else{ eRow['consumption_tax'] = Math.floor((eRow['amount_excluding_tax'] - 0) * (100 + (now_tax-0)) / 100) - (eRow['amount_excluding_tax'] - 0); } eRow['amount_of_money']=(eRow['amount_excluding_tax'] - 0)+(eRow['consumption_tax'] - 0) show_estimate_list.push(eRow); } estimate_row_show(); } var estimate_row_show = () =>{ var row_element = document.getElementById("row_id"); var total_element = document.getElementById("total_id"); var total_amount_excluding_tax = 0; var total_consumption_tax = 0; var total_amount_of_money = 0; var total_delivery_fee = 0; var total_measurement = 0; for ( var r_key in show_estimate_list) { var rowMap = show_estimate_list[r_key]; total_amount_excluding_tax = total_amount_excluding_tax + (rowMap['amount_excluding_tax']-0); total_consumption_tax = total_consumption_tax + (rowMap['consumption_tax']-0); total_amount_of_money = total_amount_of_money + (rowMap['amount_of_money']-0); var productdisply_element = document.createElement('div'); productdisply_element.setAttribute('class', 'productdisply'); var productttle_element = document.createElement('div'); productttle_element.setAttribute('class', 'productttle'); productttle_element.innerHTML = rowMap['product_name']; productdisply_element.appendChild(productttle_element); var p_element = document.createElement('p'); p_element.innerHTML = rowMap['size']; productdisply_element.appendChild(p_element); var img_element = document.createElement('img'); img_element.setAttribute('class', 'img-fluid'); img_element.setAttribute('src', base_url+rowMap['img_real_path']); img_element.setAttribute('alt', ''); productdisply_element.appendChild(img_element); if(rowMap['mode']=="estimate"){ p_element = document.createElement('p'); p_element.setAttribute('class', 'qty'); var span_element = document.createElement('span'); span_element.innerHTML = "数量:"+rowMap['quantity']; p_element.appendChild(span_element); productdisply_element.appendChild(p_element); }else{ p_element = document.createElement('p'); p_element.setAttribute('class', 'qty'); var span_element = document.createElement('span'); span_element.innerHTML = "数量を選択"; p_element.appendChild(span_element); var qtystyle_element = document.createElement('select'); qtystyle_element.setAttribute('class', 'qtystyle'); qtystyle_element.setAttribute('onchange', 'change_quantity('+r_key+');'); qtystyle_element.setAttribute('id', 'select_quantity_'+r_key); for(var i = 0;i<8;i++){ var option_element = document.createElement('option'); option_element.setAttribute('value',i); option_element.innerHTML = i; qtystyle_element.appendChild(option_element); } p_element.appendChild(qtystyle_element); productdisply_element.appendChild(p_element); } p_element = document.createElement('p'); p_element.setAttribute('class', 'productprice'); if(rowMap['amount_of_money']>=0){ p_element.innerHTML = "¥"+separate(rowMap['amount_of_money'])+"(税込)"; }else{ p_element.innerHTML = "¥"+separate(rowMap['amount_of_money'])+""; } productdisply_element.appendChild(p_element); row_element.appendChild(productdisply_element); } /* */ var totalprice_element = document.createElement('div'); totalprice_element.setAttribute('class', 'totalprice'); var tableprice_element = document.createElement('table'); tableprice_element.setAttribute('class', 'tableprice'); var tbody_element = document.createElement('tbody'); var tr_element = document.createElement('tr'); var left_td_element = document.createElement('td'); left_td_element.setAttribute('class', 'text-left'); left_td_element.innerHTML = "商品の合計金額"; tr_element.appendChild(left_td_element); var right_td_element = document.createElement('td'); right_td_element.setAttribute('class', 'text-right'); right_td_element.innerHTML = "¥"+separate(total_amount_excluding_tax); tr_element.appendChild(right_td_element); tbody_element.appendChild(tr_element); /* tr_element = document.createElement('tr'); var left_td_element = document.createElement('td'); left_td_element.setAttribute('class', 'text-left'); left_td_element.innerHTML = "配送料"; tr_element.appendChild(left_td_element); var right_td_element = document.createElement('td'); right_td_element.setAttribute('class', 'text-right'); right_td_element.innerHTML = "¥"+total_delivery_fee; tr_element.appendChild(left_td_element); tbody_element.appendChild(tr_element); */ tr_element = document.createElement('tr'); var left_td_element = document.createElement('td'); left_td_element.setAttribute('class', 'text-left'); left_td_element.innerHTML = "消費税"; tr_element.appendChild(left_td_element); var right_td_element = document.createElement('td'); right_td_element.setAttribute('class', 'text-right'); right_td_element.innerHTML = "¥"+separate(total_consumption_tax); tr_element.appendChild(right_td_element); tbody_element.appendChild(tr_element); tr_element = document.createElement('tr'); var left_td_element = document.createElement('td'); left_td_element.setAttribute('class', 'text-left'); left_td_element.innerHTML = "ご請求額"; tr_element.appendChild(left_td_element); var right_td_element = document.createElement('td'); right_td_element.setAttribute('class', 'text-right text-danger'); right_td_element.innerHTML = "¥"+separate(total_amount_of_money); tr_element.appendChild(right_td_element); tbody_element.appendChild(tr_element); tbody_element.appendChild(tr_element); tableprice_element.appendChild(tbody_element); totalprice_element.appendChild(tableprice_element); var button_element = document.createElement('button'); button_element.setAttribute('class', 'btn btn-lg btncontinue'); button_element.setAttribute('type', 'button'); button_element.setAttribute('onclick', "location.href = \"./addressee_input.php?id=" + e_estimate_id + "\""); button_element.innerHTML = "ご購入手続き"; totalprice_element.appendChild(button_element); total_element.appendChild(totalprice_element); } var getEstimate = (callbackFunction)=>{ $.ajax({ type : "GET", url : "./ra/get_estimate_e/", data : { e_estimate_id : e_estimate_id }, dataType : "json", cache : false, success : function(data) { callbackFunction(data); } }); } var setTerminal = (callbackFunction)=>{ setCookie(system_cookie,finger_print,cookie_day); $.ajax({ type : "POST", url : "./ra/set_terminal/", data : { finger_print : finger_print, os:os, terminal_type:terminal_type, browser:userAgent, token:document.getElementById("token").value }, dataType : "json", cache : false, success : function(data) { callbackFunction(data); }, error : function(XMLHttpRequest, textStatus, errorThrown) { //alert(XMLHttpRequest.status); //alert(errorThrown.message); } }); } var getTerminal = (callbackFunction)=>{ if(getCookie(system_cookie)==null){ $.ajax({ type : "GET", url : "./ra/get_terminal/", data : { finger_print : finger_print }, dataType : "json", cache : false, success : function(data) { callbackFunction(data); }, error : function(XMLHttpRequest, textStatus, errorThrown) { //alert(XMLHttpRequest.status); //alert(errorThrown.message); } }); }else{ $.ajax({ type : "GET", url : "./ra/get_terminal/", data : { finger_print : getCookie(system_cookie) }, dataType : "json", cache : false, success : function(data) { callbackFunction(data); }, error:function(data) { }, }); } } var access_history = false; var estimate_mode = false; var terminal_map = {}; var customer_product_history = false; var customer_product = false; var estimate_map = {}; var settlement_step = ""; var fastFunc = function (){ //一通り取得系 //var class_id = document.getElementById("test_id").innerHTML = document.cookie +"
" +finger_print; //アクセス歴 getTerminal((data) => { for ( var r_key in data["data"]) { var rowMap = data["data"][r_key]; terminal_map = rowMap; access_history = true; for ( var r_key in terminal_map["customer_product"]) { customer_product=true; break; } for ( var r_key in terminal_map["customer_product_history"]) { customer_product_history=true; break; } break; } //見積もりIDの正当性チェック if(validity_of_id){ getEstimate((data =>{ if(data["data"]==null){ estimate_mode = false; }else{ estimate_map = data["data"]; settlement_step = estimate_map['settlement_step']; estimate_mode = true; } action_selection(); })) }else{ action_selection(); } }) } var action_selection = function(){ if(access_history){ if(estimate_mode){ if(settlement_step=="見積未入力"){ if(customer_product){ if(customer_product_history){ //メッセージに見積もり入力中と表示しつつ登録済み商品を表示。履歴ページへのリンク var msg = "申し訳ございません。ただいま見積もり入力中でございます。
" + "しばらくお待ちいただき、再度アクセスお願いします。
"; // "商品読込履歴"; ""; document.getElementById("msg_id").innerHTML = msg; }else{ //メッセージに見積もり入力中と表示しつつ登録済み商品を表示。 var msg = "申し訳ございません。ただいま見積もり入力中でございます。
" + "しばらくお待ちいただき、再度アクセスお願いします。
"; document.getElementById("msg_id").innerHTML = msg; } }else{ if(customer_product_history){ var msg = "申し訳ございません。ただいま見積もり入力中でございます。
" + "しばらくお待ちいただき、再度アクセスお願いします。
" + "商品読込履歴"; document.getElementById("msg_id").innerHTML = msg; }else{ //メッセージに見積もり入力中と表示 var msg = "申し訳ございません。ただいま見積もり入力中でございます。
" + "しばらくお待ちいただき、再度アクセスお願いします。
"; document.getElementById("msg_id").innerHTML = msg; } } }else if(settlement_step=="見積入力済"){ if(customer_product){ if(customer_product_history){ //アクセス歴更新、見積もりと商品合算表示。履歴ページへのリンク //var msg = "商品読込履歴"; //document.getElementById("msg_id").innerHTML = msg; setTerminal(function(){}); estimate_show(); //customer_product_show(); }else{ //アクセス歴更新、見積もりと商品合算表示。 setTerminal(function(){}); estimate_show(); //customer_product_show(); } }else{ if(customer_product_history){ //アクセス歴更新、見積もり表示。 setTerminal(function(){}); estimate_show(); }else{ //アクセス歴更新、見積もり表示。履歴ページへのリンク //var msg = "商品読込履歴"; //document.getElementById("msg_id").innerHTML = msg; setTerminal(function(){}); estimate_show(); } } }else if(settlement_step=="期限切れ"||settlement_step=="購入済み"){ if(customer_product){ if(customer_product_history){ //メッセージに無効理由を表示しつつ登録済み商品を表示。履歴ページへのリンク var msg = "こちらの見積もりは"+settlement_step+"でございます。
"; //"商品読込履歴"; ""; document.getElementById("msg_id").innerHTML = msg; }else{ //メッセージに無効理由を表示しつつ登録済み商品を表示 var msg = "こちらの見積もりは"+settlement_step+"でございます。
"; document.getElementById("msg_id").innerHTML = msg; //customer_product_show(); } }else{ if(customer_product_history){ //メッセージに無効理由を表示しつつ履歴ページへのリンク var msg = "こちらの見積もりは"+settlement_step+"でございます。
" + //"商品読込履歴"; ""; document.getElementById("msg_id").innerHTML = msg; }else{ //メッセージに無効理由を表示しつつクラシカへのリンク var msg = "こちらの見積もりは"+settlement_step+"でございます。
" + "CLASSICAホームへ"; document.getElementById("msg_id").innerHTML = msg; } } }else{ if(customer_product){ if(customer_product_history){ //メッセージに無効理由を表示しつつ登録済み商品を表示。履歴ページへのリンク var msg = "こちらの見積もりは利用できません
" + "QR登録済みの商品を購入できます。
" + //"商品読込履歴"; ""; document.getElementById("msg_id").innerHTML = msg; customer_product_show(); }else{ //メッセージに無効理由を表示しつつ登録済み商品を表示 var msg = "こちらの見積もりは利用できません
" + "QR登録済みの商品を購入できます。
"; document.getElementById("msg_id").innerHTML = msg; customer_product_show(); } }else{ if(customer_product_history){ //メッセージに無効理由を表示しつつ履歴ページへのリンク var msg = "こちらの見積もりは利用できません
" + //"商品読込履歴"; ""; document.getElementById("msg_id").innerHTML = msg; }else{ //メッセージに無効理由を表示しつつクラシカへのリンク var msg = "こちらの見積もりは利用できません
" + "CLASSICAホームへ"; document.getElementById("msg_id").innerHTML = msg; } } } }else{ if(customer_product){ if(customer_product_history){ //読み込み商品をのみを見積として表示。履歴ページへのリンク var msg = "商品読込履歴"; document.getElementById("msg_id").innerHTML = msg; customer_product_show(); }else{ //読み込み商品をのみを見積として表示 customer_product_show(); } }else{ if(customer_product_history){ //履歴ページにリダイレクト location.href='https://www.interior-classica.com'; }else{ //クラシカにリダイレクト location.href='https://www.interior-classica.com'; } } } }else{ if(estimate_mode){ if(settlement_step=="見積未入力"){ //メッセージに見積もり入力中と表示 var msg = "申し訳ございません。ただいま見積もり入力中でございます。
" + "しばらくお待ちいただき、再度アクセスお願いします。
" + "CLASSICAホームへ"; document.getElementById("msg_id").innerHTML = msg; }else if(settlement_step=="見積入力済"){ //アクセス歴保存、見積もり表示 setTerminal(function(){}); estimate_show(); }else if(settlement_step=="期限切れ"||settlement_step=="購入済み"){ //メッセージに無効理由を表示 var msg = "こちらの見積もりは"+settlement_step+"でございます。
" + "CLASSICAホームへ"; document.getElementById("msg_id").innerHTML = msg; }else { //メッセージに無効理由を表示 var msg = "こちらの見積もりは利用できません
" + "CLASSICAホームへ"; document.getElementById("msg_id").innerHTML = msg; } }else{ //クラシカにリダイレクト location.href='https://www.interior-classica.com'; } } } //端末取得 var os=""; var terminal_type=""; var userAgent = ""; if (window.requestIdleCallback) { requestIdleCallback(function () { Fingerprint2.get(function (components) { finger_print = Fingerprint2.x64hash128(components.map(function (pair) { return pair.value }).join(), 31); finger_print_components = components; console.log(components) // an array of components: {key: ..., // value: ...} for ( var r_key in components) { var rowMap = components[r_key]; if(rowMap['key']=="platform"){ os = rowMap['value']; } if(rowMap['key']=="userAgent"){ userAgent = rowMap['value']; } } if(userAgent.indexOf('iPhone') > 0 || userAgent.indexOf('iPod') > 0 || userAgent.indexOf('Android') > 0 && userAgent.indexOf('Mobile') > 0){ terminal_type = 'sp'; }else if(userAgent.indexOf('iPad') > 0 || userAgent.indexOf('Android') > 0){ terminal_type = 'tab'; }else{ terminal_type = 'other'; } fastFunc(); }) }) } else { setTimeout(function () { Fingerprint2.get(function (components) { finger_print = Fingerprint2.x64hash128(components.map(function (pair) { return pair.value }).join(), 31); finger_print_components = components; console.log(components) // an array of components: {key: ..., // value: ...} for ( var r_key in components) { var rowMap = components[r_key]; if(rowMap['key']=="platform"){ os = rowMap['value']; } if(rowMap['key']=="userAgent"){ userAgent = rowMap['value']; } } fastFunc(); }) }, 500) } var getCookie = function( name ){ var result = null; var cookieName = name + '='; var allcookies = document.cookie; var position = allcookies.indexOf( cookieName ); if( position != -1 ) { var startIndex = position + cookieName.length; var endIndex = allcookies.indexOf( ';', startIndex ); if( endIndex == -1 ){ endIndex = allcookies.length; } result = decodeURIComponent( allcookies.substring( startIndex, endIndex ) ); } return result; } var setCookie = function(name,value,day){ var expire = new Date(); expire.setTime( expire.getTime() + 1000 * 3600 * 24 *day); document.cookie = name+'=' + encodeURIComponent( value )+';expires=' + expire.toUTCString(); } function isInteger(x) { return Math.round(x) === x; } function separate(num){ // 文字列にする num = String(num); var len = num.length; // 再帰的に呼び出すよ if(len > 3){ // 前半を引数に再帰呼び出し + 後半3桁 return separate(num.substring(0,len-3))+','+num.substring(len-3); } else { return num; } } function swap(a,x,y){ a[x]=[a[y],a[y]=a[x]][0]; return a; } //読み込み終わったら実行 //google.charts.setOnLoadCallback(fastFunc);