Plugin Directory

Changeset 3220107


Ignore:
Timestamp:
01/10/2025 10:25:45 AM (15 months ago)
Author:
blpaczka
Message:

tagging version 1.1.0

Location:
blpaczka
Files:
12 edited
9 copied

Legend:

Unmodified
Added
Removed
  • blpaczka/tags/1.1.0/README.md

    r3203142 r3220107  
    55Requires at least: 5.3
    66Tested up to: 6.6.1
    7 Stable tag: 1.0.3
     7Stable tag: 1.1.0
    88Requires PHP: 7.0
    99License: GPLv2 or later
     
    7575* Kosmetyczne zmiany
    7676
     77= 1.1.0 =
     78* Szablony paczek
     79* Poprawa mapy dla Paczkomat Eco
     80* Poprawa rozdzielania adresów zamówień
     81* Drobne poprawki
     82
    7783== English ==
    7884
     
    134140* Added support for different types of links (added wp-api)
    135141* Cosmetic changes
     142
     143= 1.1.0 =
     144* Package templates
     145* Map improvement for Paczkomat Eco
     146* Improved order address separation
     147* Minor fixes
  • blpaczka/tags/1.1.0/assets/blpaczka-admin-parcel-send.js

    r3173443 r3220107  
    2525    });
    2626
     27    $('.blpaczka-shipment-form-list').on('click', function (event) {
     28        event.stopPropagation();
     29    });
     30    $('.selectize-control').on('click', function (event) {
     31        event.stopPropagation();
     32    });
     33
     34    $('.blpaczka-shipment-form-list').on('click', function (event) {
     35        event.stopPropagation();
     36    });
     37
     38    $('.blpaczka-column').find('*').on('click', function (event) {
     39        event.stopPropagation();
     40    });
     41
     42    $('.column-blpaczka-column').on('click', function (event) {
     43        event.stopPropagation()
     44        event.preventDefault()
     45    })
     46
    2747    $('#create-order').on('click', function (e) {
    2848        e.preventDefault();
     
    7393        )
    7494            .fail((jqXHR) => {
    75                 createOrderButton.replaceWith('<button class="button-primary" style="border-color: red; background-color: #ff6a6a;">Wystąpiły błędy</button><div>Przejdź do edycji zamówienia, aby nadać paczkę</div>');
     95                let errorMessage = "Wystąpił błąd.";
     96                if (jqXHR.responseJSON && jqXHR.responseJSON.message) {
     97                    errorMessage = jqXHR.responseJSON.message;
     98                }
     99
     100                createOrderButton.replaceWith(
     101                    '<div  style="border-color: red; padding:10px; color:white; background-color: #ff6a6a;">Wystąpił błąd. Przejdź do edycji zamówienia, aby nadać paczkę</div>' +
     102                    '<div>' + errorMessage + '</div>'
     103                );
    76104            });
    77105    })
     
    259287        return JSON.stringify(object);
    260288    }
     289
     290
     291        if ($('.column-blpaczka-column .template_select').length) {
     292            $('.column-blpaczka-column .template_select').selectize({
     293                placeholder: 'Wybierz szablon',
     294                onChange: function (value) {
     295                    if (!value || typeof blpaczkaTemplates === 'undefined') {
     296                        console.warn('Nie wybrano szablonu lub brak danych szablonów.');
     297                        return;
     298                    }
     299
     300                    const template = blpaczkaTemplates[value];
     301                    if (template) {
     302                        const form = $(this.$input).parents('form');
     303                        form.find('#type').val(template['Typ paczki'] || 'package').trigger('change');
     304                        form.find('#weight').val(template['Waga paczki (kg)'] || '');
     305                        form.find('#side_x').val(template['Długość paczki (cm)'] || '');
     306                        form.find('#side_y').val(template['Szerokość paczki (cm)'] || '');
     307                        form.find('#side_z').val(template['Wysokość paczki (cm)'] || '');
     308                        form.find('#sortable').prop('checked', template['Paczka sortowalna (paczka o&nbsp;kształcie prostopadłościanu)'] || false);
     309                        form.find('#no_pickup').prop('checked', template['Nie zamawiaj podjazdu'] || false);
     310
     311                        console.log('Dane formularza zaktualizowane na podstawie szablonu:', template);
     312                    } else {
     313                        console.warn('Nie znaleziono szablonu o wartości:', value);
     314                    }
     315                }
     316            });
     317        }
     318
     319
     320
    261321});
  • blpaczka/tags/1.1.0/assets/shipment-form.js

    r3203142 r3220107  
    55    const blpaczkaMapUrl = blpaczkaData['apiUrl'];
    66    const nonce = blpaczkaData['nonce'];
     7    const paczkomatyCodes = [
     8        'paczkomaty',
     9        'paczkomaty_allegro_smart',
     10        'paczkomaty_eco',
     11        'paczkomaty_to_door',
     12        'inpost_eco',
     13    ];
    714
    815    $.ajaxSetup({
     
    8188                            type: 'button'
    8289                        });
    83                         var BLPACZKA_map_address = blpaczkaMapUrl + '/pudo-map?api_type=' + response['courier'] + '&postalCode=' + postalCode;
     90
     91                        var courierCode = getCourierCode(response['courier']);
     92
     93                        var BLPACZKA_map_address = blpaczkaMapUrl + '/pudo-map?api_type=' + courierCode + '&postalCode=' + postalCode;
    8494
    8595                        window.addEventListener('message', function (event) {
     
    170180                var postalCodeSelector = $('#ship-to-different-address-checkbox').is(':checked') ? $('#shipping_postcode') : $('#billing_postcode');
    171181                var postalCode = postalCodeSelector.val().replace('-', '');
    172                 var BLPACZKA_map_address = blpaczkaApiUrl + '/pudo-map?api_type=' + $('.blpaczka-selected-courier-code').val() + '&postalCode=' + postalCode;
     182                var courierCode = getCourierCode($('.blpaczka-selected-courier-code').val());
     183
     184                var BLPACZKA_map_address = blpaczkaApiUrl + '/pudo-map?api_type=' + courierCode + '&postalCode=' + postalCode;
    173185                var BLPACZKA_modal = `
    174186                                    <div id="blpaczka-point-checkout-modal">
     
    211223        return parts.slice(-2).join('.');
    212224    }
     225
     226    function getCourierCode(courierCode) {
     227        if (paczkomatyCodes.includes(courierCode)) {
     228            courierCode = 'paczkomaty';
     229        }
     230
     231        return courierCode;
     232    }
    213233});
  • blpaczka/tags/1.1.0/blpaczka.php

    r3203142 r3220107  
    33 * Plugin Name:       BLPaczka
    44 * Description:       Tanie przesyłki prosto z Twojego sklepu
    5  * Version:           1.0.3
     5 * Version:           1.1.0
    66 * Author:            BLPaczka
    77 * Author URI:        https://blpaczka.com
     
    4444require_once __DIR__ . '/src/settings.php';
    4545require_once __DIR__ . '/src/BLPaczkaRestRoutes.php';
     46
     47if (is_admin())
     48require_once __DIR__ . '/src/BLPaczkaTemplates.php';
     49
     50
    4651
    4752use BLPaczka\BLPaczkaWoocommerce\BLPaczkaWooBlocks;
     
    284289}
    285290
     291function parseAddress(string $address): array {
     292    $street = '';
     293    $houseNumber = '';
     294    $apartmentNumber = '';
     295
     296    $address = trim(preg_replace('/\s+/', ' ', $address));
     297
     298    $pattern = '/^([\p{L}\d\s.,-]+?)\s+(\d+[a-zA-Z\-]*)\s*(?:[\/\s]*(lok\.?|m\.?|)(\d*[a-zA-Z]*))?$/u';
     299
     300    if (preg_match($pattern, $address, $matches)) {
     301        $street = trim($matches[1] ?? '');
     302        $houseNumber = trim($matches[2] ?? '');
     303        $apartmentNumber = trim($matches[4] ?? '');
     304    } else {
     305        if (function_exists('wc_get_logger')) {
     306            $logger = wc_get_logger();
     307            $logger->error("Nie udało się rozpoznać adresu: $address", ['source' => 'parseAddress']);
     308        }
     309    }
     310
     311    return [
     312        'street' => $street,
     313        'houseNumber' => $houseNumber,
     314        'apartmentNumber' => $apartmentNumber,
     315    ];
     316}
     317
    286318function BLPACZKA_blpaczka_shipment_meta_box( $post ) {
    287319    $order = wc_get_order( BLPACZKA_get_order_id( $post ) );
     
    298330    $orderSum = $orderTotal - $shippingTotal;
    299331
    300     $patternToExplodeAddress = '/^(.*?)\s+(\d+(?:\s*m)?)(?:\s*(?:m|\/)\.?(\w+))?(?:,\s*(\w+))?\s*$/';
    301     $street                  = '';
    302     $houseNumber             = '';
    303     $apartmentNumber         = '';
    304 
    305     $address = $orderData['shipping']['address_1'] . ' ' . $orderData['shipping']['address_2'];
    306 
    307     if ( preg_match( $patternToExplodeAddress, trim( $address ), $matches ) ) {
    308         $street          = $matches[1] ?? '';
    309         $houseNumber     = $matches[2] ?? '';
    310         $apartmentNumber = $matches[3] ?? '';
    311     }
    312 
    313     if ( BLPACZKA_is_HPOS() ) {
     332    $address = $orderData['shipping']['address_1'] . ' ' . $orderData['shipping']['address_2'];
     333    $result = parseAddress($address);
     334
     335    $street          = $result['street'] ?? '';
     336    $houseNumber     = $result['houseNumber'] ?? '';
     337    $apartmentNumber = $result['apartmentNumber'] ?? '';
     338
     339
     340
     341    if ( BLPACZKA_is_HPOS() ) {
    314342        $blpaczkaOrderId = $order->get_meta( 'BLPACZKA_blpaczka_order_id' );
    315343    } else {
     
    452480                $shipping_settings = get_option( $option_key );
    453481
    454                 $patternToExplodeAddress = '/^(.*?)\s+(\d+(?:\s*m)?)(?:\s*(?:m|\/)\.?(\w+))?(?:,\s*(\w+))?\s*$/';
    455                 $street                  = '';
    456                 $houseNumber             = '';
    457                 $apartmentNumber         = '';
    458 
    459482                $orderData = BLPACZKA_get_order_data( $order );
    460483
     
    466489                $address = $orderData['shipping']['address_1'] . ' ' . $orderData['shipping']['address_2'];
    467490
    468                 if ( preg_match( $patternToExplodeAddress, trim( $address ), $matches ) ) {
    469                     $street          = $matches[1] ?? '';
    470                     $houseNumber     = $matches[2] ?? '';
    471                     $apartmentNumber = $matches[3] ?? '';
    472                 }
     491                $result = parseAddress($address);
     492
     493                $street          = $result['street'] ?? '';
     494                $houseNumber     = $result['houseNumber'] ?? '';
     495                $apartmentNumber = $result['apartmentNumber'] ?? '';
    473496
    474497                if ( BLPACZKA_is_HPOS() ) {
     
    623646    return $flat_rate_instances;
    624647}
     648
     649function BLPACZKA_calculate_insurance($orderSum, $isCod) {
     650    $autoPrepaidInsurance = get_option('blpaczka_auto_prepaid_insurance') === 'yes';
     651    $fixedPrepaidInsurance =  get_option('blpaczka_fixed_prepaid_insurance', 0);
     652    $autoCodInsurance = get_option('blpaczka_auto_cod_insurance') === 'yes';
     653    $fixedCodInsurance = get_option('blpaczka_fixed_cod_insurance', 0);
     654
     655    if (!$isCod) {
     656        return $autoPrepaidInsurance ? $orderSum : $fixedPrepaidInsurance;
     657    }
     658
     659    return $autoCodInsurance ? $orderSum : $fixedCodInsurance;
     660}
     661
  • blpaczka/tags/1.1.0/readme.txt

    r3203142 r3220107  
    44Requires at least: 5.3
    55Tested up to: 6.6.1
    6 Stable tag: 1.0.3
     6Stable tag: 1.1.0
    77Requires PHP: 7.0
    88License: GPLv2 or later
     
    7676* Kosmetyczne zmiany
    7777
     78= 1.1.0 =
     79* Szablony paczek
     80* Poprawa mapy dla Paczkomat Eco
     81* Poprawa rozdzielania adresów zamówień
     82* Drobne poprawki
  • blpaczka/tags/1.1.0/src/BLPaczkaRestRoutes.php

    r3203142 r3220107  
    22/**
    33 * @package BLPaczka
    4  * @version 1.0.3
     4 * @version 1.1.0
    55 */
    66if ( ! defined( 'ABSPATH' ) ) {
     
    6161        unset($requestBody['pickup_close_time']);
    6262    }
     63    if (!empty($requestBody['CourierSearch']['sortable'])) {
     64        $requestBody['CourierSearch']['sortable'] = $requestBody['CourierSearch']['sortable'] === 'false' ? false : true;
     65    }
     66    if (!empty($requestBody['CourierSearch']['no_pickup'])) {
     67        $requestBody['CourierSearch']['no_pickup'] = $requestBody['CourierSearch']['no_pickup'] === 'false' ? false : true;
     68    }
    6369
    6470    $postId = $requestBody['post_id'];
     
    109115    $url = BLPACZKA_API_URL . '/api/getValuation.json';
    110116    $requestBody = json_decode($request->get_body(), true);
     117
     118    if (!empty($requestBody['CourierSearch']['sortable'])) {
     119        $requestBody['CourierSearch']['sortable'] = $requestBody['CourierSearch']['sortable'] === 'false' ? false : true;
     120    }
     121    if (!empty($requestBody['CourierSearch']['no_pickup'])) {
     122        $requestBody['CourierSearch']['no_pickup'] = $requestBody['CourierSearch']['no_pickup'] === 'false' ? false : true;
     123    }
    111124
    112125    $requestBody['CourierSearch']['postal_delivery'] = $requestBody['Cart'][0]['Order']['taker_postal'];
  • blpaczka/tags/1.1.0/src/BLPaczkaWooBlocks.php

    r3203142 r3220107  
    22/**
    33 * @package BLPaczka
    4  * @version 1.0.3
     4 * @version 1.1.0
    55 */
    66namespace BLPaczka\BLPaczkaWoocommerce;
  • blpaczka/tags/1.1.0/src/settings.php

    r3203142 r3220107  
    11<?php
     2
    23/**
    34 * @package BLPaczka
    4  * @version 1.0.3
     5 * @version 1.1.0
    56 */
    67if ( ! defined( 'ABSPATH' ) ) {
     
    253254                'id'   => 'custom_settings_overview',
    254255            ],
     256
     257            [
     258                'title' => 'Ustawienia ubezpieczeń',
     259                'type'  => 'title',
     260                'id'    => 'blpaczka_insurance_settings',
     261            ],
     262            [
     263                'title'   => 'Ubezpieczenie przesyłki przedpłaconej',
     264                'type'    => 'checkbox',
     265                'id'      => 'blpaczka_auto_prepaid_insurance',
     266                'default' => 'no',
     267                'desc'    => 'Zaznacz, aby automatycznie ustawić ubezpieczenie przesyłki przedpłaconej na sumę produktów zamówienia',
     268            ],
     269            [
     270                'title'   => 'Stała wartość ubezpieczenia przesyłki przedpłaconej (zł)',
     271                'type'    => 'number',
     272                'id'      => 'blpaczka_fixed_prepaid_insurance',
     273                'default' => '0',
     274                'custom_attributes' => ['step' => '0.01', 'min' => '0'],
     275                'desc'    => 'Wprowadź stałą wartość ubezpieczenia dla przesyłki przedpłaconej, jeśli opcja automatyczna jest wyłączona',
     276            ],
     277            [
     278                'title'   => 'Ubezpieczenie przesyłki pobraniowej',
     279                'type'    => 'checkbox',
     280                'id'      => 'blpaczka_auto_cod_insurance',
     281                'default' => 'no',
     282                'desc'    => 'Zaznacz, aby automatycznie ustawić ubezpieczenie przesyłki pobraniowej na sumę produktów zamówienia',
     283            ],
     284            [
     285                'title'   => 'Stała wartość ubezpieczenia przesyłki pobraniowej (zł)',
     286                'type'    => 'number',
     287                'id'      => 'blpaczka_fixed_cod_insurance',
     288                'css'     => 'min-width:300px;',
     289                'default' => '0',
     290                'custom_attributes' => ['step' => '0.01', 'min' => '0'],
     291                'desc'    => 'Wprowadź stałą wartość ubezpieczenia dla przesyłki pobraniowej, jeśli opcja automatyczna jest wyłączona',
     292            ],
     293            [
     294                'type' => 'sectionend',
     295                'id'   => 'blpaczka_insurance_settings',
     296            ],
     297
    255298        ];
    256299    }
     
    263306
    264307    WC_Admin_Settings::output_fields( $settings );
     308    ?>
     309<script>
     310    document.addEventListener('DOMContentLoaded', function () {
     311        const prepaidCheckbox = document.querySelector('#blpaczka_auto_prepaid_insurance');
     312        const prepaidInput = document.querySelector('#blpaczka_fixed_prepaid_insurance');
     313        const codCheckbox = document.querySelector('#blpaczka_auto_cod_insurance');
     314        const codInput = document.querySelector('#blpaczka_fixed_cod_insurance');
     315
     316        function toggleInputState(checkbox, input) {
     317            if (checkbox.checked) {
     318                input.disabled = true;
     319                input.value = '';
     320            } else {
     321                input.disabled = false;
     322            }
     323        }
     324
     325        prepaidCheckbox.addEventListener('change', function () {
     326            toggleInputState(prepaidCheckbox, prepaidInput);
     327        });
     328
     329        codCheckbox.addEventListener('change', function () {
     330            toggleInputState(codCheckbox, codInput);
     331        });
     332
     333        toggleInputState(prepaidCheckbox, prepaidInput);
     334        toggleInputState(codCheckbox, codInput);
     335    });
     336
     337
     338    </script>
     339<?php
    265340}
    266341
     
    339414            'nonce'               => wp_create_nonce( 'wp_rest' ),
    340415        ] );
     416
    341417    }
    342 }
    343 
    344 add_filter( 'woocommerce_shipping_instance_form_fields_flat_rate', 'BLPACZKA_add_custom_shipping_option' );
     418
     419    wp_enqueue_script('selectize-js', 'https://cdnjs.cloudflare.com/ajax/libs/selectize.js/0.12.6/js/standalone/selectize.min.js', array('jquery'), null, true);
     420    wp_enqueue_style('selectize-css', 'https://cdnjs.cloudflare.com/ajax/libs/selectize.js/0.12.6/css/selectize.min.css', array(), null);
     421
     422}
     423
     424add_action( 'woocommerce_init', function () {
     425    $shipping_methods = WC()->shipping->get_shipping_methods();
     426    foreach ( $shipping_methods as $shipping_method ) {
     427        add_filter( 'woocommerce_shipping_instance_form_fields_' . $shipping_method->id,
     428            'BLPACZKA_add_custom_shipping_option' );
     429    }
     430} );
     431
     432
     433
     434
    345435add_action( 'woocommerce_sections_blpaczka_settings', 'BLPACZKA_action_woocommerce_sections_blpaczka_settings', 10 );
    346436add_action( 'woocommerce_settings_blpaczka_settings', 'BLPACZKA_action_woocommerce_settings_blpaczka_settings', 10 );
     
    349439add_filter( 'woocommerce_settings_tabs_array', 'BLPACZKA_filter_woocommerce_settings_tabs_array', 99 );
    350440add_action( 'admin_enqueue_scripts', 'blpaczka_enqueue_admin_scripts' );
    351 
    352 
    353 
    354 
    355 
    356 
    357 
    358 
    359 
    360 
    361 
  • blpaczka/tags/1.1.0/templates/list-shipment-form.php

    r3173443 r3220107  
    1919$is_cod_payment = $orderData['payment_method'] === 'cod';
    2020$cod_amount = $is_cod_payment ? $orderSum : 0;
     21$insuranceValue = BLPACZKA_calculate_insurance($orderSum, $is_cod_payment);
    2122?>
    2223
     
    133134
    134135        <input type="text" class="form-control" id="blpaczka_package_content"
    135                name="Cart.0.Order.package_content" min="0"
    136                value="<?php echo esc_attr(get_option( 'blpaczka_package_content' )); ?>">
    137 
    138         <input type="number" class="form-control" id="orderSum" name="CourierSearch.cover" min="0"
    139                value="<?php echo esc_attr($orderSum); ?>">
    140 
    141         <input type="number" class="form-control" id="uptake" name="CourierSearch.uptake" min="0"
    142                min="0"
    143                value="<?php echo esc_attr($cod_amount); ?>">
    144 
     136               name="Cart.0.Order.package_content"
     137               value="<?php
     138               $packageContent = get_option('blpaczka_package_content');
     139               echo esc_attr(!empty($packageContent) ? $packageContent : 'Zamówienie: #'.$orderId); ?>">
     140
     141
     142        <input type="number" class="form-control" id="orderSum" name="CourierSearch.cover" min="0" step="0.01"
     143               value="<?php echo esc_attr($insuranceValue); ?>">
     144
     145        <?php if  ($cod_amount > 0): ?>
     146        <input type="number" class="form-control" id="uptake" name="CourierSearch.uptake"
     147               min="0" step="0.01"
     148               value="<?php echo esc_attr(number_format((float)$cod_amount??0, 2, '.', '')); ?>">
     149        <?php endif; ?>
     150
     151        <input type="hidden" name="CourierSearch.sortable" value="false">
    145152        <input class="form-check-input" type="checkbox" id="sortable"
    146153               name="CourierSearch.sortable" <?php echo get_option( 'blpaczka_package_sortable' ) === 'yes' ? 'checked' : ''; ?>
    147154        >
    148155
     156        <input type="hidden" name="CourierSearch.no_pickup" value="false">
    149157        <input class="form-check-input" type="checkbox" id="no_pickup"
    150158               name="CourierSearch.no_pickup" <?php echo get_option( 'blpaczka_package_no_pickup' ) === 'yes' ? 'checked' : ''; ?>
     
    154162               value="<?php echo esc_attr( gmdate( 'Y-m-d', strtotime( '+1 day' ) ) ); ?>"
    155163        >
    156         <input class="form-control" type="number" id="pickup_ready_time"
    157                name="Cart.0.Order.pickup_ready_time"
     164        <input class="form-control" type="time" id="pickup_ready_time"
     165               name="pickup_ready_time"
    158166               value="<?php echo esc_attr(get_option( 'blpaczka_package_pickup_ready_time' )) ?: ''; ?>"
    159167        >
    160         <input class="form-control" type="number" id="pickup_ready_time_minute"
    161                name="Cart.0.Order.pickup_ready_time_minute"
    162                value="<?php echo esc_attr(get_option( 'blpaczka_package_pickup_ready_time_minute' )) ?: ''; ?>"
    163         >
    164         <input class="form-control" type="number" id="pickup_close_time"
    165                name="Cart.0.Order.pickup_close_time"
     168<!--        <input class="form-control" type="number" id="pickup_ready_time_minute"-->
     169<!--               name="Cart.0.Order.pickup_ready_time_minute"-->
     170<!--               value="--><?php //echo esc_attr(get_option( 'blpaczka_package_pickup_ready_time_minute' )) ?: ''; ?><!--"-->
     171<!--        >-->
     172        <input class="form-control" type="time" id="pickup_close_time"
     173               name="pickup_close_time"
    166174               value="<?php echo esc_attr(get_option( 'blpaczka_package_pickup_close_time' )) ?: ''; ?>"
    167175        >
    168176
    169         <input class="form-control" type="number" id="pickup_close_time_minute"
    170                name="Cart.0.Order.pickup_close_time_minute"
    171                value="<?php echo esc_attr(get_option( 'blpaczka_package_pickup_close_time_minute' )) ?: ''; ?>"
    172         >
     177<!--        <input class="form-control" type="number" id="pickup_close_time_minute"-->
     178<!--               name="Cart.0.Order.pickup_close_time_minute"-->
     179<!--               value="--><?php //echo esc_attr(get_option( 'blpaczka_package_pickup_close_time_minute' )) ?: ''; ?><!--"-->
     180<!--        >-->
    173181
    174182        <input type="text" class="form-control" id="sender_name" name="Cart.0.Order.name"
     
    207215        >
    208216        <input type="text" class="form-control" id="sender_name" name="Cart.0.Order.taker_phone"
    209                value="<?php echo esc_attr($orderData['billing']['phone']); ?>">
     217               value="<?php echo esc_attr(str_replace(' ', '', $orderData['billing']['phone'])); ?>">
     218
    210219        <input type="text" class="form-control" id="sender_name" name="Cart.0.Order.taker_email"
    211220               value="<?php echo esc_attr($orderData['billing']['email']); ?>">
     
    235244    </div>
    236245    <?php
     246
     247    $templates = get_option('blpaczka_templates', []);
     248    if (!empty($templates)): ?>
     249    <select  name="template_select" class=" template_select">
     250        <?php if (!empty($templates)): ?>
     251            <option value=""><?php esc_html_e('Domyślnie', 'blpaczka'); ?></option>
     252            <?php foreach ($templates as $slug => $template): ?>
     253                <option value="<?php echo esc_attr($slug); ?>">
     254                    <?php echo esc_html($template['Nazwa szablonu'] ?? $slug); ?>
     255                </option>
     256            <?php endforeach; ?>
     257        <?php else: ?>
     258            <option value=""><?php esc_html_e('Brak stworzonych szablonów', 'blpaczka'); ?></option>
     259        <?php endif; ?>
     260    </select>
     261
     262
     263    <?php
     264        endif;
     265
    237266   if (!empty($shipping_settings['blpaczka_settings_courier'])): ?>
    238         <button type="submit" class="create-order-list-button button-secondary">Szybkie zamówienie
     267        <button type="submit" class="create-order-list-button button-secondary">Zamów
    239268            - <?php echo esc_html(ucfirst($shipping_settings['blpaczka_settings_courier'])); ?> 🚚
    240269        </button>
  • blpaczka/tags/1.1.0/templates/shipment-form.php

    r3203142 r3220107  
    1919
    2020$is_cod_payment = $orderData['payment_method'] === 'cod';
     21$insuranceValue = BLPACZKA_calculate_insurance($orderSum, $is_cod_payment);
    2122$cod_amount = $is_cod_payment ? $orderSum : 0;
    2223?>
     
    3132            <?php
    3233            if ( empty( get_option( 'blpaczka_auth_key' ) ) || empty( get_option( 'blpaczka_auth_login' ) ) ) {
    33                 echo '<p style="color: #4285F4;">Możesz ustawić autoryzację w ustawieniach wtyczki BLPaczka</p>';
     34                echo '<p style="color: #4285F4;">Musisz ustawić autoryzację w ustawieniach wtyczki BLPaczka</p>';
    3435            }
    3536            ?>
     
    4546                    <div class="col col-6">
    4647                        <h1 class="py-1">Dane przesyłki📦:</h1>
     48                        <div class="form-group">
     49                            <?php
     50                            $templates = get_option('blpaczka_templates', []);
     51                            if (!empty($templates)): ?>
     52                                <select  name="template_select" class=" template_select">
     53                                    <?php if (!empty($templates)): ?>
     54                                        <option value=""><?php esc_html_e('Domyślnie', 'blpaczka'); ?></option>
     55                                        <?php foreach ($templates as $slug => $template): ?>
     56                                            <option value="<?php echo esc_attr($slug); ?>">
     57                                                <?php echo esc_html($template['Nazwa szablonu'] ?? $slug); ?>
     58                                            </option>
     59                                        <?php endforeach; ?>
     60                                    <?php else: ?>
     61                                        <option value=""><?php esc_html_e('Brak stworzonych szablonów', 'blpaczka'); ?></option>
     62                                    <?php endif; ?>
     63                                </select>
     64                            <?php endif; ?>
     65
     66                            <script>
     67                                jQuery(document).ready(function($) {
     68                                    const templates = <?php echo json_encode(get_option('blpaczka_templates', [])); ?>;
     69
     70                                    $('.template_select').selectize({
     71                                        placeholder: 'Wybierz szablon',
     72                                        onChange: function(value) {
     73                                            if (templates[value]) {
     74                                                const template = templates[value];
     75                                                $('#type').val(template['Typ paczki'] || 'package').trigger('change');
     76                                                $('#weight').val(template['Waga paczki (kg)'] || '');
     77                                                $('#side_x').val(template['Długość paczki (cm)'] || '');
     78                                                $('#side_y').val(template['Szerokość paczki (cm)'] || '');
     79                                                $('#side_z').val(template['Wysokość paczki (cm)'] || '');
     80                                                $('#sortable').prop('checked', template['Paczka sortowalna (paczka o&nbsp;kształcie prostopadłościanu)'] || false);
     81                                                $('#no_pickup').prop('checked', template['Nie zamawiaj podjazdu'] || false);
     82                                            }
     83                                        }
     84                                    });
     85                                });
     86
     87                            </script>
     88                        </div>
    4789
    4890                        <div class="form-group row py-1">
     
    5193                                kuriera:</label>
    5294                            <div class="col-sm-8 ">
    53                                 <?php if ( ! empty( $shipping_settings['blpaczka_settings_courier'] ) && $shipping_settings['blpaczka_settings_courier'] !== 'dowolny' ): ?>
     95                                <?php if ( ! empty( $shipping_settings['blpaczka_settings_courier'] && $shipping_settings['blpaczka_settings_courier'] !== 'dowolny' ) ): ?>
    5496                                    <input type="text" class="form-control" id="courier_code"
    5597                                           name="CourierSearch.courier_code"
     
    204246                                <input type="text" class="form-control" id="blpaczka_package_content"
    205247                                       name="Cart.0.Order.package_content" min="0"
    206                                        value="<?php echo esc_attr(get_option( 'blpaczka_package_content' )); ?>" required>
     248                                       value="<?php echo esc_attr(get_option( 'blpaczka_package_content' )?get_option( 'blpaczka_package_content' ):('Zamówienie: #'.$orderId)); ?>
     249                                " required>
    207250                            </div>
    208251                        </div>
     
    212255                                   for="orderSum">Ubezpieczenie (w zł):</label>
    213256                            <div class="col-sm-8">
    214                                 <input type="number" class="form-control" id="orderSum" name="CourierSearch.cover"
    215                                        min="0"
    216                                        value="<?php echo esc_attr($orderSum); ?>">
     257                                <input type="text" class="form-control" id="orderSum" name="CourierSearch.cover"
     258                                       min="0" step="0.01"
     259                                       value="<?php echo esc_attr($insuranceValue); ?>">
    217260                            </div>
    218261                        </div>
     
    234277                            <div class="col-sm-8">
    235278                                <div class="form-check">
     279                                    <input type="hidden" name="CourierSearch.sortable" value="false">
    236280                                    <input class="form-check-input" type="checkbox" id="sortable"
    237281                                           name="CourierSearch.sortable" <?php echo esc_html(get_option( 'blpaczka_package_sortable' ) === 'yes' ? 'checked' : ''); ?>
     
    246290                            <div class="col-sm-8">
    247291                                <div class="form-check">
     292                                    <input type="hidden" name="CourierSearch.no_pickup" value="false">
    248293                                    <input class="form-check-input" type="checkbox" id="no_pickup"
    249294                                           name="CourierSearch.no_pickup" <?php echo esc_html(get_option( 'blpaczka_package_no_pickup' ) === 'yes' ? 'checked' : ''); ?>
     
    423468                            <div class="col-sm-8">
    424469                                <input type="text" class="form-control" id="sender_name" name="Cart.0.Order.taker_phone"
    425                                        value="<?php echo esc_attr($orderData['billing']['phone']); ?>" required>
     470                                       value="<?php echo esc_attr(str_replace(' ', '', $orderData['billing']['phone'])); ?>" required>
    426471                            </div>
    427472                        </div>
  • blpaczka/trunk/README.md

    r3203142 r3220107  
    55Requires at least: 5.3
    66Tested up to: 6.6.1
    7 Stable tag: 1.0.3
     7Stable tag: 1.1.0
    88Requires PHP: 7.0
    99License: GPLv2 or later
     
    7575* Kosmetyczne zmiany
    7676
     77= 1.1.0 =
     78* Szablony paczek
     79* Poprawa mapy dla Paczkomat Eco
     80* Poprawa rozdzielania adresów zamówień
     81* Drobne poprawki
     82
    7783== English ==
    7884
     
    134140* Added support for different types of links (added wp-api)
    135141* Cosmetic changes
     142
     143= 1.1.0 =
     144* Package templates
     145* Map improvement for Paczkomat Eco
     146* Improved order address separation
     147* Minor fixes
  • blpaczka/trunk/assets/blpaczka-admin-parcel-send.js

    r3173443 r3220107  
    2525    });
    2626
     27    $('.blpaczka-shipment-form-list').on('click', function (event) {
     28        event.stopPropagation();
     29    });
     30    $('.selectize-control').on('click', function (event) {
     31        event.stopPropagation();
     32    });
     33
     34    $('.blpaczka-shipment-form-list').on('click', function (event) {
     35        event.stopPropagation();
     36    });
     37
     38    $('.blpaczka-column').find('*').on('click', function (event) {
     39        event.stopPropagation();
     40    });
     41
     42    $('.column-blpaczka-column').on('click', function (event) {
     43        event.stopPropagation()
     44        event.preventDefault()
     45    })
     46
    2747    $('#create-order').on('click', function (e) {
    2848        e.preventDefault();
     
    7393        )
    7494            .fail((jqXHR) => {
    75                 createOrderButton.replaceWith('<button class="button-primary" style="border-color: red; background-color: #ff6a6a;">Wystąpiły błędy</button><div>Przejdź do edycji zamówienia, aby nadać paczkę</div>');
     95                let errorMessage = "Wystąpił błąd.";
     96                if (jqXHR.responseJSON && jqXHR.responseJSON.message) {
     97                    errorMessage = jqXHR.responseJSON.message;
     98                }
     99
     100                createOrderButton.replaceWith(
     101                    '<div  style="border-color: red; padding:10px; color:white; background-color: #ff6a6a;">Wystąpił błąd. Przejdź do edycji zamówienia, aby nadać paczkę</div>' +
     102                    '<div>' + errorMessage + '</div>'
     103                );
    76104            });
    77105    })
     
    259287        return JSON.stringify(object);
    260288    }
     289
     290
     291        if ($('.column-blpaczka-column .template_select').length) {
     292            $('.column-blpaczka-column .template_select').selectize({
     293                placeholder: 'Wybierz szablon',
     294                onChange: function (value) {
     295                    if (!value || typeof blpaczkaTemplates === 'undefined') {
     296                        console.warn('Nie wybrano szablonu lub brak danych szablonów.');
     297                        return;
     298                    }
     299
     300                    const template = blpaczkaTemplates[value];
     301                    if (template) {
     302                        const form = $(this.$input).parents('form');
     303                        form.find('#type').val(template['Typ paczki'] || 'package').trigger('change');
     304                        form.find('#weight').val(template['Waga paczki (kg)'] || '');
     305                        form.find('#side_x').val(template['Długość paczki (cm)'] || '');
     306                        form.find('#side_y').val(template['Szerokość paczki (cm)'] || '');
     307                        form.find('#side_z').val(template['Wysokość paczki (cm)'] || '');
     308                        form.find('#sortable').prop('checked', template['Paczka sortowalna (paczka o&nbsp;kształcie prostopadłościanu)'] || false);
     309                        form.find('#no_pickup').prop('checked', template['Nie zamawiaj podjazdu'] || false);
     310
     311                        console.log('Dane formularza zaktualizowane na podstawie szablonu:', template);
     312                    } else {
     313                        console.warn('Nie znaleziono szablonu o wartości:', value);
     314                    }
     315                }
     316            });
     317        }
     318
     319
     320
    261321});
  • blpaczka/trunk/assets/shipment-form.js

    r3203142 r3220107  
    55    const blpaczkaMapUrl = blpaczkaData['apiUrl'];
    66    const nonce = blpaczkaData['nonce'];
     7    const paczkomatyCodes = [
     8        'paczkomaty',
     9        'paczkomaty_allegro_smart',
     10        'paczkomaty_eco',
     11        'paczkomaty_to_door',
     12        'inpost_eco',
     13    ];
    714
    815    $.ajaxSetup({
     
    8188                            type: 'button'
    8289                        });
    83                         var BLPACZKA_map_address = blpaczkaMapUrl + '/pudo-map?api_type=' + response['courier'] + '&postalCode=' + postalCode;
     90
     91                        var courierCode = getCourierCode(response['courier']);
     92
     93                        var BLPACZKA_map_address = blpaczkaMapUrl + '/pudo-map?api_type=' + courierCode + '&postalCode=' + postalCode;
    8494
    8595                        window.addEventListener('message', function (event) {
     
    170180                var postalCodeSelector = $('#ship-to-different-address-checkbox').is(':checked') ? $('#shipping_postcode') : $('#billing_postcode');
    171181                var postalCode = postalCodeSelector.val().replace('-', '');
    172                 var BLPACZKA_map_address = blpaczkaApiUrl + '/pudo-map?api_type=' + $('.blpaczka-selected-courier-code').val() + '&postalCode=' + postalCode;
     182                var courierCode = getCourierCode($('.blpaczka-selected-courier-code').val());
     183
     184                var BLPACZKA_map_address = blpaczkaApiUrl + '/pudo-map?api_type=' + courierCode + '&postalCode=' + postalCode;
    173185                var BLPACZKA_modal = `
    174186                                    <div id="blpaczka-point-checkout-modal">
     
    211223        return parts.slice(-2).join('.');
    212224    }
     225
     226    function getCourierCode(courierCode) {
     227        if (paczkomatyCodes.includes(courierCode)) {
     228            courierCode = 'paczkomaty';
     229        }
     230
     231        return courierCode;
     232    }
    213233});
  • blpaczka/trunk/blpaczka.php

    r3203142 r3220107  
    33 * Plugin Name:       BLPaczka
    44 * Description:       Tanie przesyłki prosto z Twojego sklepu
    5  * Version:           1.0.3
     5 * Version:           1.1.0
    66 * Author:            BLPaczka
    77 * Author URI:        https://blpaczka.com
     
    4444require_once __DIR__ . '/src/settings.php';
    4545require_once __DIR__ . '/src/BLPaczkaRestRoutes.php';
     46
     47if (is_admin())
     48require_once __DIR__ . '/src/BLPaczkaTemplates.php';
     49
     50
    4651
    4752use BLPaczka\BLPaczkaWoocommerce\BLPaczkaWooBlocks;
     
    284289}
    285290
     291function parseAddress(string $address): array {
     292    $street = '';
     293    $houseNumber = '';
     294    $apartmentNumber = '';
     295
     296    $address = trim(preg_replace('/\s+/', ' ', $address));
     297
     298    $pattern = '/^([\p{L}\d\s.,-]+?)\s+(\d+[a-zA-Z\-]*)\s*(?:[\/\s]*(lok\.?|m\.?|)(\d*[a-zA-Z]*))?$/u';
     299
     300    if (preg_match($pattern, $address, $matches)) {
     301        $street = trim($matches[1] ?? '');
     302        $houseNumber = trim($matches[2] ?? '');
     303        $apartmentNumber = trim($matches[4] ?? '');
     304    } else {
     305        if (function_exists('wc_get_logger')) {
     306            $logger = wc_get_logger();
     307            $logger->error("Nie udało się rozpoznać adresu: $address", ['source' => 'parseAddress']);
     308        }
     309    }
     310
     311    return [
     312        'street' => $street,
     313        'houseNumber' => $houseNumber,
     314        'apartmentNumber' => $apartmentNumber,
     315    ];
     316}
     317
    286318function BLPACZKA_blpaczka_shipment_meta_box( $post ) {
    287319    $order = wc_get_order( BLPACZKA_get_order_id( $post ) );
     
    298330    $orderSum = $orderTotal - $shippingTotal;
    299331
    300     $patternToExplodeAddress = '/^(.*?)\s+(\d+(?:\s*m)?)(?:\s*(?:m|\/)\.?(\w+))?(?:,\s*(\w+))?\s*$/';
    301     $street                  = '';
    302     $houseNumber             = '';
    303     $apartmentNumber         = '';
    304 
    305     $address = $orderData['shipping']['address_1'] . ' ' . $orderData['shipping']['address_2'];
    306 
    307     if ( preg_match( $patternToExplodeAddress, trim( $address ), $matches ) ) {
    308         $street          = $matches[1] ?? '';
    309         $houseNumber     = $matches[2] ?? '';
    310         $apartmentNumber = $matches[3] ?? '';
    311     }
    312 
    313     if ( BLPACZKA_is_HPOS() ) {
     332    $address = $orderData['shipping']['address_1'] . ' ' . $orderData['shipping']['address_2'];
     333    $result = parseAddress($address);
     334
     335    $street          = $result['street'] ?? '';
     336    $houseNumber     = $result['houseNumber'] ?? '';
     337    $apartmentNumber = $result['apartmentNumber'] ?? '';
     338
     339
     340
     341    if ( BLPACZKA_is_HPOS() ) {
    314342        $blpaczkaOrderId = $order->get_meta( 'BLPACZKA_blpaczka_order_id' );
    315343    } else {
     
    452480                $shipping_settings = get_option( $option_key );
    453481
    454                 $patternToExplodeAddress = '/^(.*?)\s+(\d+(?:\s*m)?)(?:\s*(?:m|\/)\.?(\w+))?(?:,\s*(\w+))?\s*$/';
    455                 $street                  = '';
    456                 $houseNumber             = '';
    457                 $apartmentNumber         = '';
    458 
    459482                $orderData = BLPACZKA_get_order_data( $order );
    460483
     
    466489                $address = $orderData['shipping']['address_1'] . ' ' . $orderData['shipping']['address_2'];
    467490
    468                 if ( preg_match( $patternToExplodeAddress, trim( $address ), $matches ) ) {
    469                     $street          = $matches[1] ?? '';
    470                     $houseNumber     = $matches[2] ?? '';
    471                     $apartmentNumber = $matches[3] ?? '';
    472                 }
     491                $result = parseAddress($address);
     492
     493                $street          = $result['street'] ?? '';
     494                $houseNumber     = $result['houseNumber'] ?? '';
     495                $apartmentNumber = $result['apartmentNumber'] ?? '';
    473496
    474497                if ( BLPACZKA_is_HPOS() ) {
     
    623646    return $flat_rate_instances;
    624647}
     648
     649function BLPACZKA_calculate_insurance($orderSum, $isCod) {
     650    $autoPrepaidInsurance = get_option('blpaczka_auto_prepaid_insurance') === 'yes';
     651    $fixedPrepaidInsurance =  get_option('blpaczka_fixed_prepaid_insurance', 0);
     652    $autoCodInsurance = get_option('blpaczka_auto_cod_insurance') === 'yes';
     653    $fixedCodInsurance = get_option('blpaczka_fixed_cod_insurance', 0);
     654
     655    if (!$isCod) {
     656        return $autoPrepaidInsurance ? $orderSum : $fixedPrepaidInsurance;
     657    }
     658
     659    return $autoCodInsurance ? $orderSum : $fixedCodInsurance;
     660}
     661
  • blpaczka/trunk/readme.txt

    r3203142 r3220107  
    44Requires at least: 5.3
    55Tested up to: 6.6.1
    6 Stable tag: 1.0.3
     6Stable tag: 1.1.0
    77Requires PHP: 7.0
    88License: GPLv2 or later
     
    7676* Kosmetyczne zmiany
    7777
     78= 1.1.0 =
     79* Szablony paczek
     80* Poprawa mapy dla Paczkomat Eco
     81* Poprawa rozdzielania adresów zamówień
     82* Drobne poprawki
  • blpaczka/trunk/src/BLPaczkaRestRoutes.php

    r3203142 r3220107  
    22/**
    33 * @package BLPaczka
    4  * @version 1.0.3
     4 * @version 1.1.0
    55 */
    66if ( ! defined( 'ABSPATH' ) ) {
     
    6161        unset($requestBody['pickup_close_time']);
    6262    }
     63    if (!empty($requestBody['CourierSearch']['sortable'])) {
     64        $requestBody['CourierSearch']['sortable'] = $requestBody['CourierSearch']['sortable'] === 'false' ? false : true;
     65    }
     66    if (!empty($requestBody['CourierSearch']['no_pickup'])) {
     67        $requestBody['CourierSearch']['no_pickup'] = $requestBody['CourierSearch']['no_pickup'] === 'false' ? false : true;
     68    }
    6369
    6470    $postId = $requestBody['post_id'];
     
    109115    $url = BLPACZKA_API_URL . '/api/getValuation.json';
    110116    $requestBody = json_decode($request->get_body(), true);
     117
     118    if (!empty($requestBody['CourierSearch']['sortable'])) {
     119        $requestBody['CourierSearch']['sortable'] = $requestBody['CourierSearch']['sortable'] === 'false' ? false : true;
     120    }
     121    if (!empty($requestBody['CourierSearch']['no_pickup'])) {
     122        $requestBody['CourierSearch']['no_pickup'] = $requestBody['CourierSearch']['no_pickup'] === 'false' ? false : true;
     123    }
    111124
    112125    $requestBody['CourierSearch']['postal_delivery'] = $requestBody['Cart'][0]['Order']['taker_postal'];
  • blpaczka/trunk/src/BLPaczkaWooBlocks.php

    r3203142 r3220107  
    22/**
    33 * @package BLPaczka
    4  * @version 1.0.3
     4 * @version 1.1.0
    55 */
    66namespace BLPaczka\BLPaczkaWoocommerce;
  • blpaczka/trunk/src/settings.php

    r3203142 r3220107  
    11<?php
     2
    23/**
    34 * @package BLPaczka
    4  * @version 1.0.3
     5 * @version 1.1.0
    56 */
    67if ( ! defined( 'ABSPATH' ) ) {
     
    253254                'id'   => 'custom_settings_overview',
    254255            ],
     256
     257            [
     258                'title' => 'Ustawienia ubezpieczeń',
     259                'type'  => 'title',
     260                'id'    => 'blpaczka_insurance_settings',
     261            ],
     262            [
     263                'title'   => 'Ubezpieczenie przesyłki przedpłaconej',
     264                'type'    => 'checkbox',
     265                'id'      => 'blpaczka_auto_prepaid_insurance',
     266                'default' => 'no',
     267                'desc'    => 'Zaznacz, aby automatycznie ustawić ubezpieczenie przesyłki przedpłaconej na sumę produktów zamówienia',
     268            ],
     269            [
     270                'title'   => 'Stała wartość ubezpieczenia przesyłki przedpłaconej (zł)',
     271                'type'    => 'number',
     272                'id'      => 'blpaczka_fixed_prepaid_insurance',
     273                'default' => '0',
     274                'custom_attributes' => ['step' => '0.01', 'min' => '0'],
     275                'desc'    => 'Wprowadź stałą wartość ubezpieczenia dla przesyłki przedpłaconej, jeśli opcja automatyczna jest wyłączona',
     276            ],
     277            [
     278                'title'   => 'Ubezpieczenie przesyłki pobraniowej',
     279                'type'    => 'checkbox',
     280                'id'      => 'blpaczka_auto_cod_insurance',
     281                'default' => 'no',
     282                'desc'    => 'Zaznacz, aby automatycznie ustawić ubezpieczenie przesyłki pobraniowej na sumę produktów zamówienia',
     283            ],
     284            [
     285                'title'   => 'Stała wartość ubezpieczenia przesyłki pobraniowej (zł)',
     286                'type'    => 'number',
     287                'id'      => 'blpaczka_fixed_cod_insurance',
     288                'css'     => 'min-width:300px;',
     289                'default' => '0',
     290                'custom_attributes' => ['step' => '0.01', 'min' => '0'],
     291                'desc'    => 'Wprowadź stałą wartość ubezpieczenia dla przesyłki pobraniowej, jeśli opcja automatyczna jest wyłączona',
     292            ],
     293            [
     294                'type' => 'sectionend',
     295                'id'   => 'blpaczka_insurance_settings',
     296            ],
     297
    255298        ];
    256299    }
     
    263306
    264307    WC_Admin_Settings::output_fields( $settings );
     308    ?>
     309<script>
     310    document.addEventListener('DOMContentLoaded', function () {
     311        const prepaidCheckbox = document.querySelector('#blpaczka_auto_prepaid_insurance');
     312        const prepaidInput = document.querySelector('#blpaczka_fixed_prepaid_insurance');
     313        const codCheckbox = document.querySelector('#blpaczka_auto_cod_insurance');
     314        const codInput = document.querySelector('#blpaczka_fixed_cod_insurance');
     315
     316        function toggleInputState(checkbox, input) {
     317            if (checkbox.checked) {
     318                input.disabled = true;
     319                input.value = '';
     320            } else {
     321                input.disabled = false;
     322            }
     323        }
     324
     325        prepaidCheckbox.addEventListener('change', function () {
     326            toggleInputState(prepaidCheckbox, prepaidInput);
     327        });
     328
     329        codCheckbox.addEventListener('change', function () {
     330            toggleInputState(codCheckbox, codInput);
     331        });
     332
     333        toggleInputState(prepaidCheckbox, prepaidInput);
     334        toggleInputState(codCheckbox, codInput);
     335    });
     336
     337
     338    </script>
     339<?php
    265340}
    266341
     
    339414            'nonce'               => wp_create_nonce( 'wp_rest' ),
    340415        ] );
     416
    341417    }
    342 }
    343 
    344 add_filter( 'woocommerce_shipping_instance_form_fields_flat_rate', 'BLPACZKA_add_custom_shipping_option' );
     418
     419    wp_enqueue_script('selectize-js', 'https://cdnjs.cloudflare.com/ajax/libs/selectize.js/0.12.6/js/standalone/selectize.min.js', array('jquery'), null, true);
     420    wp_enqueue_style('selectize-css', 'https://cdnjs.cloudflare.com/ajax/libs/selectize.js/0.12.6/css/selectize.min.css', array(), null);
     421
     422}
     423
     424add_action( 'woocommerce_init', function () {
     425    $shipping_methods = WC()->shipping->get_shipping_methods();
     426    foreach ( $shipping_methods as $shipping_method ) {
     427        add_filter( 'woocommerce_shipping_instance_form_fields_' . $shipping_method->id,
     428            'BLPACZKA_add_custom_shipping_option' );
     429    }
     430} );
     431
     432
     433
     434
    345435add_action( 'woocommerce_sections_blpaczka_settings', 'BLPACZKA_action_woocommerce_sections_blpaczka_settings', 10 );
    346436add_action( 'woocommerce_settings_blpaczka_settings', 'BLPACZKA_action_woocommerce_settings_blpaczka_settings', 10 );
     
    349439add_filter( 'woocommerce_settings_tabs_array', 'BLPACZKA_filter_woocommerce_settings_tabs_array', 99 );
    350440add_action( 'admin_enqueue_scripts', 'blpaczka_enqueue_admin_scripts' );
    351 
    352 
    353 
    354 
    355 
    356 
    357 
    358 
    359 
    360 
    361 
  • blpaczka/trunk/templates/list-shipment-form.php

    r3173443 r3220107  
    1919$is_cod_payment = $orderData['payment_method'] === 'cod';
    2020$cod_amount = $is_cod_payment ? $orderSum : 0;
     21$insuranceValue = BLPACZKA_calculate_insurance($orderSum, $is_cod_payment);
    2122?>
    2223
     
    133134
    134135        <input type="text" class="form-control" id="blpaczka_package_content"
    135                name="Cart.0.Order.package_content" min="0"
    136                value="<?php echo esc_attr(get_option( 'blpaczka_package_content' )); ?>">
    137 
    138         <input type="number" class="form-control" id="orderSum" name="CourierSearch.cover" min="0"
    139                value="<?php echo esc_attr($orderSum); ?>">
    140 
    141         <input type="number" class="form-control" id="uptake" name="CourierSearch.uptake" min="0"
    142                min="0"
    143                value="<?php echo esc_attr($cod_amount); ?>">
    144 
     136               name="Cart.0.Order.package_content"
     137               value="<?php
     138               $packageContent = get_option('blpaczka_package_content');
     139               echo esc_attr(!empty($packageContent) ? $packageContent : 'Zamówienie: #'.$orderId); ?>">
     140
     141
     142        <input type="number" class="form-control" id="orderSum" name="CourierSearch.cover" min="0" step="0.01"
     143               value="<?php echo esc_attr($insuranceValue); ?>">
     144
     145        <?php if  ($cod_amount > 0): ?>
     146        <input type="number" class="form-control" id="uptake" name="CourierSearch.uptake"
     147               min="0" step="0.01"
     148               value="<?php echo esc_attr(number_format((float)$cod_amount??0, 2, '.', '')); ?>">
     149        <?php endif; ?>
     150
     151        <input type="hidden" name="CourierSearch.sortable" value="false">
    145152        <input class="form-check-input" type="checkbox" id="sortable"
    146153               name="CourierSearch.sortable" <?php echo get_option( 'blpaczka_package_sortable' ) === 'yes' ? 'checked' : ''; ?>
    147154        >
    148155
     156        <input type="hidden" name="CourierSearch.no_pickup" value="false">
    149157        <input class="form-check-input" type="checkbox" id="no_pickup"
    150158               name="CourierSearch.no_pickup" <?php echo get_option( 'blpaczka_package_no_pickup' ) === 'yes' ? 'checked' : ''; ?>
     
    154162               value="<?php echo esc_attr( gmdate( 'Y-m-d', strtotime( '+1 day' ) ) ); ?>"
    155163        >
    156         <input class="form-control" type="number" id="pickup_ready_time"
    157                name="Cart.0.Order.pickup_ready_time"
     164        <input class="form-control" type="time" id="pickup_ready_time"
     165               name="pickup_ready_time"
    158166               value="<?php echo esc_attr(get_option( 'blpaczka_package_pickup_ready_time' )) ?: ''; ?>"
    159167        >
    160         <input class="form-control" type="number" id="pickup_ready_time_minute"
    161                name="Cart.0.Order.pickup_ready_time_minute"
    162                value="<?php echo esc_attr(get_option( 'blpaczka_package_pickup_ready_time_minute' )) ?: ''; ?>"
    163         >
    164         <input class="form-control" type="number" id="pickup_close_time"
    165                name="Cart.0.Order.pickup_close_time"
     168<!--        <input class="form-control" type="number" id="pickup_ready_time_minute"-->
     169<!--               name="Cart.0.Order.pickup_ready_time_minute"-->
     170<!--               value="--><?php //echo esc_attr(get_option( 'blpaczka_package_pickup_ready_time_minute' )) ?: ''; ?><!--"-->
     171<!--        >-->
     172        <input class="form-control" type="time" id="pickup_close_time"
     173               name="pickup_close_time"
    166174               value="<?php echo esc_attr(get_option( 'blpaczka_package_pickup_close_time' )) ?: ''; ?>"
    167175        >
    168176
    169         <input class="form-control" type="number" id="pickup_close_time_minute"
    170                name="Cart.0.Order.pickup_close_time_minute"
    171                value="<?php echo esc_attr(get_option( 'blpaczka_package_pickup_close_time_minute' )) ?: ''; ?>"
    172         >
     177<!--        <input class="form-control" type="number" id="pickup_close_time_minute"-->
     178<!--               name="Cart.0.Order.pickup_close_time_minute"-->
     179<!--               value="--><?php //echo esc_attr(get_option( 'blpaczka_package_pickup_close_time_minute' )) ?: ''; ?><!--"-->
     180<!--        >-->
    173181
    174182        <input type="text" class="form-control" id="sender_name" name="Cart.0.Order.name"
     
    207215        >
    208216        <input type="text" class="form-control" id="sender_name" name="Cart.0.Order.taker_phone"
    209                value="<?php echo esc_attr($orderData['billing']['phone']); ?>">
     217               value="<?php echo esc_attr(str_replace(' ', '', $orderData['billing']['phone'])); ?>">
     218
    210219        <input type="text" class="form-control" id="sender_name" name="Cart.0.Order.taker_email"
    211220               value="<?php echo esc_attr($orderData['billing']['email']); ?>">
     
    235244    </div>
    236245    <?php
     246
     247    $templates = get_option('blpaczka_templates', []);
     248    if (!empty($templates)): ?>
     249    <select  name="template_select" class=" template_select">
     250        <?php if (!empty($templates)): ?>
     251            <option value=""><?php esc_html_e('Domyślnie', 'blpaczka'); ?></option>
     252            <?php foreach ($templates as $slug => $template): ?>
     253                <option value="<?php echo esc_attr($slug); ?>">
     254                    <?php echo esc_html($template['Nazwa szablonu'] ?? $slug); ?>
     255                </option>
     256            <?php endforeach; ?>
     257        <?php else: ?>
     258            <option value=""><?php esc_html_e('Brak stworzonych szablonów', 'blpaczka'); ?></option>
     259        <?php endif; ?>
     260    </select>
     261
     262
     263    <?php
     264        endif;
     265
    237266   if (!empty($shipping_settings['blpaczka_settings_courier'])): ?>
    238         <button type="submit" class="create-order-list-button button-secondary">Szybkie zamówienie
     267        <button type="submit" class="create-order-list-button button-secondary">Zamów
    239268            - <?php echo esc_html(ucfirst($shipping_settings['blpaczka_settings_courier'])); ?> 🚚
    240269        </button>
  • blpaczka/trunk/templates/shipment-form.php

    r3203142 r3220107  
    1919
    2020$is_cod_payment = $orderData['payment_method'] === 'cod';
     21$insuranceValue = BLPACZKA_calculate_insurance($orderSum, $is_cod_payment);
    2122$cod_amount = $is_cod_payment ? $orderSum : 0;
    2223?>
     
    3132            <?php
    3233            if ( empty( get_option( 'blpaczka_auth_key' ) ) || empty( get_option( 'blpaczka_auth_login' ) ) ) {
    33                 echo '<p style="color: #4285F4;">Możesz ustawić autoryzację w ustawieniach wtyczki BLPaczka</p>';
     34                echo '<p style="color: #4285F4;">Musisz ustawić autoryzację w ustawieniach wtyczki BLPaczka</p>';
    3435            }
    3536            ?>
     
    4546                    <div class="col col-6">
    4647                        <h1 class="py-1">Dane przesyłki📦:</h1>
     48                        <div class="form-group">
     49                            <?php
     50                            $templates = get_option('blpaczka_templates', []);
     51                            if (!empty($templates)): ?>
     52                                <select  name="template_select" class=" template_select">
     53                                    <?php if (!empty($templates)): ?>
     54                                        <option value=""><?php esc_html_e('Domyślnie', 'blpaczka'); ?></option>
     55                                        <?php foreach ($templates as $slug => $template): ?>
     56                                            <option value="<?php echo esc_attr($slug); ?>">
     57                                                <?php echo esc_html($template['Nazwa szablonu'] ?? $slug); ?>
     58                                            </option>
     59                                        <?php endforeach; ?>
     60                                    <?php else: ?>
     61                                        <option value=""><?php esc_html_e('Brak stworzonych szablonów', 'blpaczka'); ?></option>
     62                                    <?php endif; ?>
     63                                </select>
     64                            <?php endif; ?>
     65
     66                            <script>
     67                                jQuery(document).ready(function($) {
     68                                    const templates = <?php echo json_encode(get_option('blpaczka_templates', [])); ?>;
     69
     70                                    $('.template_select').selectize({
     71                                        placeholder: 'Wybierz szablon',
     72                                        onChange: function(value) {
     73                                            if (templates[value]) {
     74                                                const template = templates[value];
     75                                                $('#type').val(template['Typ paczki'] || 'package').trigger('change');
     76                                                $('#weight').val(template['Waga paczki (kg)'] || '');
     77                                                $('#side_x').val(template['Długość paczki (cm)'] || '');
     78                                                $('#side_y').val(template['Szerokość paczki (cm)'] || '');
     79                                                $('#side_z').val(template['Wysokość paczki (cm)'] || '');
     80                                                $('#sortable').prop('checked', template['Paczka sortowalna (paczka o&nbsp;kształcie prostopadłościanu)'] || false);
     81                                                $('#no_pickup').prop('checked', template['Nie zamawiaj podjazdu'] || false);
     82                                            }
     83                                        }
     84                                    });
     85                                });
     86
     87                            </script>
     88                        </div>
    4789
    4890                        <div class="form-group row py-1">
     
    5193                                kuriera:</label>
    5294                            <div class="col-sm-8 ">
    53                                 <?php if ( ! empty( $shipping_settings['blpaczka_settings_courier'] ) && $shipping_settings['blpaczka_settings_courier'] !== 'dowolny' ): ?>
     95                                <?php if ( ! empty( $shipping_settings['blpaczka_settings_courier'] && $shipping_settings['blpaczka_settings_courier'] !== 'dowolny' ) ): ?>
    5496                                    <input type="text" class="form-control" id="courier_code"
    5597                                           name="CourierSearch.courier_code"
     
    204246                                <input type="text" class="form-control" id="blpaczka_package_content"
    205247                                       name="Cart.0.Order.package_content" min="0"
    206                                        value="<?php echo esc_attr(get_option( 'blpaczka_package_content' )); ?>" required>
     248                                       value="<?php echo esc_attr(get_option( 'blpaczka_package_content' )?get_option( 'blpaczka_package_content' ):('Zamówienie: #'.$orderId)); ?>
     249                                " required>
    207250                            </div>
    208251                        </div>
     
    212255                                   for="orderSum">Ubezpieczenie (w zł):</label>
    213256                            <div class="col-sm-8">
    214                                 <input type="number" class="form-control" id="orderSum" name="CourierSearch.cover"
    215                                        min="0"
    216                                        value="<?php echo esc_attr($orderSum); ?>">
     257                                <input type="text" class="form-control" id="orderSum" name="CourierSearch.cover"
     258                                       min="0" step="0.01"
     259                                       value="<?php echo esc_attr($insuranceValue); ?>">
    217260                            </div>
    218261                        </div>
     
    234277                            <div class="col-sm-8">
    235278                                <div class="form-check">
     279                                    <input type="hidden" name="CourierSearch.sortable" value="false">
    236280                                    <input class="form-check-input" type="checkbox" id="sortable"
    237281                                           name="CourierSearch.sortable" <?php echo esc_html(get_option( 'blpaczka_package_sortable' ) === 'yes' ? 'checked' : ''); ?>
     
    246290                            <div class="col-sm-8">
    247291                                <div class="form-check">
     292                                    <input type="hidden" name="CourierSearch.no_pickup" value="false">
    248293                                    <input class="form-check-input" type="checkbox" id="no_pickup"
    249294                                           name="CourierSearch.no_pickup" <?php echo esc_html(get_option( 'blpaczka_package_no_pickup' ) === 'yes' ? 'checked' : ''); ?>
     
    423468                            <div class="col-sm-8">
    424469                                <input type="text" class="form-control" id="sender_name" name="Cart.0.Order.taker_phone"
    425                                        value="<?php echo esc_attr($orderData['billing']['phone']); ?>" required>
     470                                       value="<?php echo esc_attr(str_replace(' ', '', $orderData['billing']['phone'])); ?>" required>
    426471                            </div>
    427472                        </div>
Note: See TracChangeset for help on using the changeset viewer.