PluginProbe
Welcart e-Commerce / 2.12.3
Welcart e-Commerce v2.12.3
2.12.3 2.11.35 2.12.2 2.12.1 2.11.34 2.11.33 2.11.32 2.11.31 2.11.30 1.3.16 1.3.17 1.3.2 1.3.3 1.3.4 1.3.5 1.3.6 1.3.7 1.3.8 1.3.9 1.4.0 1.4.1 1.4.10 1.4.11 1.4.12 1.4.13 All 291 releases
usc-e-shop / includes / delivery_info_script.php

delivery_info_script.php in Welcart e-Commerce 2.12.3, at includes/delivery_info_script.php

339 lines 14.7 KB
No matching file
Up and down to move Enter to open Esc to close
Raw Download Zip
1 <?php
2 /**
3 * Delivery and Payment Method Script.
4 *
5 * @package Welcart
6 */
7
8 $sendout = usces_get_send_out_date();
9 $no_preference = apply_filters( 'usces_filter_label_delivery_date_no_preference', __( 'No preference', 'usces' ) );
10 $not_a_choice = apply_filters( 'usces_filter_label_delivery_date_not_a_choice', __( 'There is not a choice.', 'usces' ) );
11
12 if ( isset( $this ) ) {
13 $usces = &$this;
14 }
15
16 $html = '';
17
18 /* Delivery Script */
19 if ( wel_have_shipped() ) {
20 $html = '
21 <script type="text/javascript">
22 var toDoubleDigits = function(num) {
23 num += "";
24 if( num.length === 1 ) num = "0".concat(num);
25 return num;
26 };
27 var selected_delivery_method = \'\';
28 var selected_delivery_date = \'\';
29 var selected_delivery_time = \'\';
30 var add_shipping = new Array();
31
32 function addDate(year, month, day, add) {
33 var date = new Date( Number(year), (Number(month)-1), Number(day) );
34 var baseSec = date.getTime();
35 var addSec = Number(add)*86400000;
36 var targetSec = baseSec+addSec;
37 date.setTime(targetSec);
38
39 var yy = date.getFullYear()+"";
40 var mm = toDoubleDigits(date.getMonth()+1);
41 var dd = toDoubleDigits(date.getDate());
42
43 var newdate = new Array();
44 newdate["year"] = yy;
45 newdate["month"] = mm;
46 newdate["day"] = dd;
47 return(newdate);
48 }
49
50 jQuery( function($) {';
51
52 /* Selectable delivery method(選択可能な�
53 �送方法) */
54 $default_deli = array_values( apply_filters( 'usces_filter_get_available_delivery_method', $usces->get_available_delivery_method() ) );
55
56 if ( ! isset( $usces_entries['order']['delivery_method'] ) || '' == $usces_entries['order']['delivery_method'] || ! in_array( $usces_entries['order']['delivery_method'], $default_deli, true ) ) {
57 $selected_delivery_method = $default_deli[0];
58 } else {
59 $selected_delivery_method = $usces_entries['order']['delivery_method'];
60 }
61 $html .= '
62 selected_delivery_method = \'' . $selected_delivery_method . '\';';
63 if ( isset( $usces_entries['order']['delivery_date'] ) ) {
64 $html .= '
65 selected_delivery_date = \'' . $usces_entries['order']['delivery_date'] . '\';';
66 }
67
68 /* ItemShipping of goods that are in the cart.(カートに�
69 �っている商品の発送日目安) */
70 $shipping = 0;
71 $cart = $usces->cart->get_cart();
72 $cart_count = ( $cart && is_array( $cart ) ) ? count( $cart ) : 0;
73 $shipping_rule_ex = apply_filters( 'usces_filter_item_shipping_rule_ex', 9 );
74 for ( $i = 0; $i < $cart_count; $i++ ) {
75 $cart_row = $cart[ $i ];
76 $item_shipping = $usces->getItemShipping( $cart_row['post_id'] );
77 if ( 0 === (int) $item_shipping || $shipping_rule_ex === (int) $item_shipping ) {
78 $shipping = 0;
79 break;
80 }
81 if ( $shipping < $item_shipping ) {
82 $shipping = $item_shipping;
83 }
84 }
85 $html .= "\n\t" . 'var shipping = ' . (string) $shipping . ';';
86 /* �
87 �送業務締時間 */
88 $hour = ( ! empty( $usces->options['delivery_time_limit']['hour'] ) ) ? $usces->options['delivery_time_limit']['hour'] : '00';
89 $min = ( ! empty( $usces->options['delivery_time_limit']['min'] ) ) ? $usces->options['delivery_time_limit']['min'] : '00';
90 $html .= "\n\t" . 'var delivery_time_limit_hour = "' . $hour . '";';
91 $html .= "\n\t" . 'var delivery_time_limit_min = "' . $min . '";';
92 /* 最短�
93
94 �時間帯 */
95 $html .= "\n\t" . 'var shortest_delivery_time = ' . (int) $usces->options['shortest_delivery_time'] . ';';
96 /* �
97 �送希望日を何日後まで表示するか */
98 $delivery_after_days = ( ! empty( $usces->options['delivery_after_days'] ) ) ? (int) $usces->options['delivery_after_days'] : 15;
99 $html .= "\n\t" . 'var delivery_after_days = ' . $delivery_after_days . ';';
100 /* �
101 �送�
102 �県(customer) */
103 $html .= "\n\t" . 'var customer_pref = "' . esc_js( $usces_entries['customer']['pref'] ) . '";';
104 /* �
105 �送�
106 �県(customer/delivery) */
107 $delivery_pref = ( isset( $usces_entries['delivery']['pref'] ) && ! empty( $usces_entries['delivery']['pref'] ) ) ? $usces_entries['delivery']['pref'] : $usces_entries['customer']['pref'];
108 $html .= "\n\t" . 'var delivery_pref = "' . esc_js( $delivery_pref ) . '";';
109 $delivery_country = ( isset( $usces_entries['delivery']['country'] ) && ! empty( $usces_entries['delivery']['country'] ) ) ? $usces_entries['delivery']['country'] : $usces_entries['customer']['country'];
110 $html .= "\n\t" . 'var delivery_country = "' . esc_js( $delivery_country ) . '";';
111 /* 選択可能な�
112 �送方法に設定されている�
113 �達日数 */
114 $html_days = "\n\t" . 'var delivery_days = [];';
115 foreach ( (array) $default_deli as $deli_id ) {
116 $index = $usces->get_delivery_method_index( $deli_id );
117 if ( 0 <= $index ) {
118 $html_days .= "\n\t" . 'delivery_days[' . $deli_id . '] = [];';
119 $html_days .= "\n\t" . 'delivery_days[' . $deli_id . '].push("' . $usces->options['delivery_method'][ $index ]['days'] . '");';
120 }
121 }
122 /* �
123 �達日数に設定されている県毎の日数 */
124 $target_market = ( isset( $usces->options['system']['target_market'] ) && ! empty( $usces->options['system']['target_market'] ) ) ? $usces->options['system']['target_market'] : usces_get_local_target_market();
125 foreach ( (array) $target_market as $tm ) {
126 $prefs[ $tm ] = get_usces_states( $tm );
127 array_shift( $prefs[ $tm ] );
128 }
129 $delivery_days = $usces->options['delivery_days'];
130 $delivery_days_count = ( $delivery_days && is_array( $delivery_days ) ) ? count( $delivery_days ) : 0;
131 $html_days .= "\n\t" . 'var delivery_days_value = [];';
132 foreach ( (array) $default_deli as $key => $deli_id ) {
133 $index = $usces->get_delivery_method_index( $deli_id );
134 if ( 0 <= $index ) {
135 $days = (int) $usces->options['delivery_method'][ $index ]['days'];
136 if ( 0 <= $days ) {
137 for ( $i = 0; $i < $delivery_days_count; $i++ ) {
138 if ( (int) $delivery_days[ $i ]['id'] == $days ) {
139 $html_days .= "\n\t" . 'delivery_days_value[' . $days . '] = [];';
140 foreach ( (array) $target_market as $tm ) {
141 $html_days .= "\n\t" . 'delivery_days_value[' . $days . ']["' . $tm . '"] = [];';
142 foreach ( (array) $prefs[ $tm ] as $pref ) {
143 $pref = esc_js( $pref );
144 $html_days .= "\n\t" . 'delivery_days_value[' . $days . ']["' . $tm . '"]["' . $pref . '"] = [];';
145 if ( isset( $delivery_days[ $i ][ $tm ][ $pref ] ) ) {
146 $html_days .= "\n\t" . 'delivery_days_value[' . $days . ']["' . $tm . '"]["' . $pref . '"].push("' . (int) $delivery_days[ $i ][ $tm ][ $pref ] . '");';
147 }
148 }
149 }
150 }
151 }
152 }
153 }
154 }
155 $html .= apply_filters( 'usces_filter_delivery_days_value', $html_days, $cart, $default_deli, $prefs );
156 $business_days = 0;
157 list( $yy, $mm, $dd ) = getToday();
158 $business = ( isset( $usces->options['business_days'][ $yy ][ $mm ][ $dd ] ) ) ? $usces->options['business_days'][ $yy ][ $mm ][ $dd ] : 1;
159 while ( 1 !== (int) $business ) {
160 $business_days++;
161 list( $yy, $mm, $dd ) = getNextDay( $yy, $mm, $dd );
162 $business = $usces->options['business_days'][ $yy ][ $mm ][ $dd ];
163 }
164 $html .= "\n\t" . 'var business_days = ' . $business_days . ';';
165
166 $html .= "\n\t" . 'selected_delivery_time = \'' . esc_js( $usces_entries['order']['delivery_time'] ) . '\';';
167
168 $html_time = "\n\t" . 'var delivery_time = [];delivery_time[0] = [];';
169 foreach ( (array) $usces->options['delivery_method'] as $dmid => $dm ) {
170 $dm['time'] = usces_change_line_break( $dm['time'] );
171 $lines = explode( "\n", $dm['time'] );
172 $html_time .= "\n\t" . 'delivery_time[' . $dm['id'] . '] = [];';
173 foreach ( (array) $lines as $line ) {
174 if ( '' !== trim( $line ) ) {
175 $html_time .= "\n\t" . 'delivery_time[' . $dm['id'] . '].push("' . trim( $line ) . '");';
176 }
177 }
178 }
179 $html .= apply_filters( 'usces_filter_delivery_time_value', $html_time, $cart, $default_deli, $prefs );
180
181 $cart_delivery_script = "\n
182 $(document).on( 'change', '#delivery_method_select', function() {
183 orderfunc.make_delivery_date(($('#delivery_method_select option:selected').val()-0));
184 orderfunc.make_delivery_time(($('#delivery_method_select option:selected').val()-0));
185 });
186 $(document).on( 'click', '#delivery_flag1', function() {
187 if( customer_pref != delivery_pref ) {
188 delivery_pref = customer_pref;
189 orderfunc.make_delivery_date(($('#delivery_method_select option:selected').val()-0));
190 }
191 });
192 $(document).on( 'click', '#delivery_flag2', function() {
193 if( $('#delivery_flag2').prop('checked') && undefined != $('#delivery_pref').get(0) && 0 < $('#delivery_pref').get(0).selectedIndex ) {
194 delivery_pref = $('#delivery_pref').val();
195 orderfunc.make_delivery_date(($('#delivery_method_select option:selected').val()-0));
196 }
197 });
198 $(document).on( 'change', '#delivery_pref', function() {
199 if( $('#delivery_flag2').prop('checked') && undefined != $('#delivery_pref').get(0) && 0 < $('#delivery_pref').get(0).selectedIndex ) {
200 delivery_pref = $('#delivery_pref').val();
201 orderfunc.make_delivery_date(($('#delivery_method_select option:selected').val()-0));
202 }
203 });
204 $(document).on( 'blur', '#search_zipcode', function() {
205 if( $('#delivery_flag2').prop('checked') && undefined != $('#delivery_pref').get(0) && 0 < $('#delivery_pref').get(0).selectedIndex ) {
206 $('#search_zipcode_change').val($('#zipcode').val());
207 delivery_pref = $('#delivery_pref').val();
208 orderfunc.make_delivery_date(($('#delivery_method_select option:selected').val()-0));
209 }
210 });
211
212 orderfunc = {
213 make_delivery_date : function(selected) {
214 var option = '';
215 var message = '';
216 if( delivery_days[selected] != undefined && 0 <= delivery_days[selected] ) {
217 switch(shipping) {
218 case 0:
219 case 9:
220 break;
221 default:
222 var date = new Array();
223 date['year'] = '" . $sendout['sendout_date']['year'] . "';
224 date['month'] = '" . $sendout['sendout_date']['month'] . "';
225 date['day'] = '" . $sendout['sendout_date']['day'] . "';
226 if( delivery_days_value[delivery_days[selected]] != undefined ) {
227 if( delivery_days_value[delivery_days[selected]][delivery_country][delivery_pref] != undefined ) {
228 date = addDate(date[\"year\"], date[\"month\"], date[\"day\"], delivery_days_value[delivery_days[selected]][delivery_country][delivery_pref] );
229 }
230 }
231 var date_str = date[\"year\"]+\"-\"+date[\"month\"]+\"-\"+date[\"day\"];
232 switch(shortest_delivery_time) {
233 case 0:
234 //message = '最短 '+date_str+' からご指定いただけます。';
235 break;
236 case 1:
237 message = '最短 '+date_str+' の午前中からご指定いただけます。';
238 break;
239 case 2:
240 message = '最短 '+date_str+' の午後からご指定いただけます。';
241 break;
242 }";
243 $delivery_after_days_script = "
244 option += '<option value=\"" . $no_preference . "\">" . $no_preference . "</option>';
245 for( var i = 0; i < delivery_after_days; i++ ) {
246 date_str = date[\"year\"]+\"-\"+date[\"month\"]+\"-\"+date[\"day\"];
247 if( date_str == selected_delivery_date ) {
248 option += '<option value=\"'+date_str+'\" selected>'+date_str+'</option>';
249 } else {
250 option += '<option value=\"'+date_str+'\">'+date_str+'</option>';
251 }
252 date = addDate( date[\"year\"], date[\"month\"], date[\"day\"], 1 );
253 }";
254 $cart_delivery_script .= apply_filters( 'usces_delivery_after_days_script', $delivery_after_days_script );
255 $cart_delivery_script .= "
256 break;
257 }
258 }
259 if( option == '' ) {
260 option = '<option value=\"" . $not_a_choice . "\">'+'" . $not_a_choice . "'+'</option>';
261 }
262 $(\"#delivery_date_select\").html(option);
263 $(\"#delivery_time_limit_message\").html(message);
264 },
265
266 make_delivery_time : function(selected) {
267 var option = '';
268 if( delivery_time[selected] != undefined ) {
269 for( var i = 0; i < delivery_time[selected].length; i++ ) {
270 if( delivery_time[selected][i] == selected_delivery_time ) {
271 option += '<option value=\"'+delivery_time[selected][i]+'\" selected=\"selected\">'+delivery_time[selected][i]+'</option>';
272 } else {
273 option += '<option value=\"'+delivery_time[selected][i]+'\">'+delivery_time[selected][i]+'</option>';
274 }
275 }
276 }
277 if( option == '' ) {
278 option = '<option value=\"" . __( 'There is not a choice.', 'usces' ) . "\">'+'" . __( 'There is not a choice.', 'usces' ) . "'+'</option>';
279 }
280 $(\"#delivery_time_select\").html( option );
281 }
282 };";
283
284 if ( 1 !== (int) $usces_entries['delivery']['delivery_flag'] ) {
285 $cart_delivery_script .= "\n\t$(\"#delivery_table\").css({\"display\":\"none\"});";
286 }
287 $cart_delivery_script .= "\n\t" . 'orderfunc.make_delivery_date(selected_delivery_method);';
288 $cart_delivery_script .= "\n\t" . 'orderfunc.make_delivery_time(selected_delivery_method);';
289 $html .= apply_filters( 'usces_filter_cart_delivery_script', $cart_delivery_script, $usces_entries, $sendout );
290 }
291
292 /* Payment Method Script */
293 if ( empty( $html ) ) {
294 $html = '
295 <script type="text/javascript">
296 jQuery( function($) {';
297 }
298 $payments_str = '';
299 $payments_arr = array();
300 $payments = usces_get_system_option( 'usces_payment_method', 'sort' );
301 $payments = apply_filters( 'usces_filter_available_payment_method', $payments );
302 foreach ( (array) $payments as $array ) {
303 switch ( $array['settlement'] ) {
304 case 'acting_remise_card':
305 $paymod_base = 'remise';
306 if ( 'on' == $usces->options['acting_settings'][ $paymod_base ]['card_activate'] &&
307 'on' == $usces->options['acting_settings'][ $paymod_base ]['howpay'] &&
308 'on' == $usces->options['acting_settings'][ $paymod_base ]['activate'] ) {
309 $payments_str .= "'" . $array['name'] . "': '" . $paymod_base . "', ";
310 $payments_arr[] = $paymod_base;
311 }
312 break;
313 }
314 $payments_str = apply_filters( 'usces_filter_payments_str', $payments_str, $array );
315 $payments_arr = apply_filters( 'usces_filter_payments_arr', $payments_arr, $array );
316 }
317 $payments_str = rtrim( $payments_str, ', ' );
318 $html .= "\n\tvar uscesPaymod = { " . $payments_str . " };
319 $(document).on( 'click', \"input[name='offer\\[payment_name\\]']\", function() {";
320 foreach ( $payments_arr as $pm ) {
321 $html .= "\n\t\t$(\"#" . $pm . "\").css({\"display\":\"none\"});\n";
322 }
323 $html .= "\n\t\tvar chk_pay = $(\"input[name='offer\\[payment_name\\]']:checked\").val();
324 if( uscesPaymod[chk_pay] != '' ) {
325 $(\"#\"+uscesPaymod[chk_pay]).css({\"display\":\"table\"});
326 }
327 });";
328 foreach ( $payments_arr as $pn => $pm ) {
329 $html .= "\n\t$(\"#" . $pm . "\").css({\"display\":\"none\"});";
330 $howpay = '';
331 $html .= apply_filters( 'usces_filter_howpay', $howpay, $pm, $payments_arr );
332 }
333 $html .= "\n\tch_pay = $(\"input[name='offer\\[payment_name\\]']:checked\").val();
334 if( uscesPaymod[ch_pay] != '' ) {
335 $(\"#\"+uscesPaymod[ch_pay]).css({\"display\":\"\"});
336 }";
337 $html .= "\n});
338 </script>\n";
339