jQuery( function( $ ) { $( '#doaction, #doaction2' ).on( 'click', function( e ) { let actionselected = $( this ).attr( "id" ).substr( 2 ); let action = $( 'select[name="' + actionselected + '"]' ).val(); if ( $.inArray( action, wpo_wcpdf_ajax.bulk_actions ) !== -1 ) { e.preventDefault(); let document_type = action; let checked = []; let xml_output = false; // is XML action if ( action.indexOf( 'xml' ) != -1 ) { document_type = document_type.replace( '_xml', '' ); xml_output = true; } $( 'tbody th.check-column input[type="checkbox"]:checked' ).each( function() { checked.push( $( this ).val() ); } ); if ( ! checked.length ) { alert( wpo_wcpdf_ajax.select_orders ); return; } let partial_url = ''; let full_url = ''; if ( wpo_wcpdf_ajax.ajaxurl.indexOf ("?" ) != -1 ) { partial_url = wpo_wcpdf_ajax.ajaxurl+'&action=generate_wpo_wcpdf&document_type='+document_type+'&bulk&_wpnonce='+wpo_wcpdf_ajax.nonce; } else { partial_url = wpo_wcpdf_ajax.ajaxurl+'?action=generate_wpo_wcpdf&document_type='+document_type+'&bulk&_wpnonce='+wpo_wcpdf_ajax.nonce; } // xml if ( xml_output ) { // Credit Note: get refund IDs first if ( 'credit-note' === document_type ) { $.ajax( { url: wpo_wcpdf_ajax.ajaxurl, type: 'POST', dataType: 'json', data: { action: 'wpo_ips_get_refund_order_ids', order_ids: checked, security: wpo_wcpdf_ajax.nonce }, success: function( response ) { if ( response && response.success && response.data && response.data.refund_ids && response.data.refund_ids.length ) { $.each( response.data.refund_ids, function( i, refund_id ) { full_url = partial_url + '&order_ids='+refund_id+'&output=xml'; window.open( full_url, '_blank' ); } ); } else { let msg = ( response && response.data && response.data.message ) ? response.data.message : wpo_wcpdf_ajax.error_no_refunds_found; alert( msg ); } }, error: function() { alert( wpo_wcpdf_ajax.error_fetching_refund_ids ); } } ); // stop normal XML processing return; } // default xml $.each( checked, function( i, order_id ) { full_url = partial_url + '&order_ids='+order_id+'&output=xml'; window.open( full_url, '_blank' ); } ); // pdf } else { let order_ids = checked.join( 'x' ); full_url = partial_url + '&order_ids='+order_ids; window.open( full_url, '_blank' ); } } } ); if ( wpo_wcpdf_ajax.sticky_document_data_metabox ) { $( '#wpo_wcpdf-data-input-box' ).insertAfter('#woocommerce-order-data'); } // enable invoice number edit if user initiated $( '#wpo_wcpdf-data-input-box' ).on( 'click', '.wpo-wcpdf-set-date-number, .wpo-wcpdf-edit-date-number, .wpo-wcpdf-edit-document-notes', function() { let $form = $(this).closest('.wcpdf-data-fields'); let edit = $(this).data( 'edit' ); // check visibility toggle_edit_mode( $form, edit ); } ); // cancel edit $( '#wpo_wcpdf-data-input-box' ).on( 'click', '.wpo-wcpdf-cancel', function() { let $form = $(this).closest('.wcpdf-data-fields'); toggle_edit_mode( $form ); } ); // save, regenerate and delete document $( '#wpo_wcpdf-data-input-box' ).on( 'click', '.wpo-wcpdf-save-document, .wpo-wcpdf-regenerate-document, .wpo-wcpdf-delete-document', function( e ) { e.preventDefault(); let $form = $( this ).closest( '.wcpdf-data-fields' ); let action = $( this ).data( 'action' ); let nonce = $( this ).data( 'nonce' ); let data = $form.data(); let serialized = $form.find( ":input:visible:not(:disabled)" ).serialize(); // regenerate specific if ( 'regenerate' === action ) { if ( window.confirm( wpo_wcpdf_ajax.confirm_regenerate ) === false ) { return; // having second thoughts } $form.find( '.wpo-wcpdf-regenerate-document' ).addClass( 'wcpdf-regenerate-spin' ); // delete specific } else if ( 'delete' === action ) { if ( window.confirm( wpo_wcpdf_ajax.confirm_delete ) === false ) { return; // having second thoughts } // hide regenerate button $form.find('.wpo-wcpdf-regenerate-document').hide(); } // Remove previous notice if exists. const $previous_notice = $( this ).closest( '#wpo_wcpdf-data-input-box' ).find( '.notice' ); if ( $previous_notice.length ) { $previous_notice.remove(); } // block ui $form.block( { message: null, overlayCSS: { background: '#fff', opacity: 0.6 } } ); // request $.ajax( { url: wpo_wcpdf_ajax.ajaxurl, data: { action: 'wpo_wcpdf_'+action+'_document', security: nonce, form_data: serialized, order_id: data.order_id, document_type: data.document, action_type: action, wpcdf_document_data_notice: action+'d', }, type: 'POST', context: $form, success: function( response ) { // update document DOM data $form.closest('#wpo_wcpdf-data-input-box').load( document.URL + ' #wpo_wcpdf-data-input-box .postbox-header, #wpo_wcpdf-data-input-box .inside', function() { toggle_edit_mode( $form ); const notice_type = response.success ? 'success' : 'error'; const $target_field = $( this ).find( '.wcpdf-data-fields[data-document="' + data.document + '"][data-order_id="' + data.order_id + '"]' ); if ( $target_field.length ) { $target_field.before( '
' + '

' + response.data.message + '

' + '
' ); } if( action === 'regenerate' ) { $form.find('.wpo-wcpdf-regenerate-document').removeClass('wcpdf-regenerate-spin'); toggle_edit_mode( $form ); } // unblock ui $form.unblock(); } ); } } ); } ); function toggle_edit_mode( $form, mode = null ) { // check visibility if ( $form.find( '.read-only' ).is( ':visible' ) ) { if ( mode === 'notes' ) { $form.find( '.editable-notes :input' ).attr( 'disabled', false ); } else { $form.find( '.editable' ).show(); $form.find( ':input' ).attr( 'disabled', false ); } $form.find( '.read-only' ).hide(); $form.find( '.editable-notes' ).show(); $form.closest( '.wcpdf-data-fields' ).find( '.wpo-wcpdf-document-buttons' ).show(); // re-initialize WooCommerce tooltips $( '.wcpdf-data-fields .woocommerce-help-tip' ).tipTip( { attribute: 'data-tip', fadeIn: 50, fadeOut: 50, delay: 200, keepAlive: true, } ) .css( 'cursor', 'help' ); // re-initialize datepicker $( '.wcpdf-data-fields .date-picker-field, .date-picker' ).datepicker( { dateFormat: 'yy-mm-dd', numberOfMonths: 1, showButtonPanel: true, } ); } else { $form.find( '.read-only' ).show(); $form.find( '.editable' ).hide(); $form.find( '.editable-notes' ).hide(); $form.find( ':input' ).attr( 'disabled', true ); $form.closest( '.wcpdf-data-fields' ).find( '.wpo-wcpdf-document-buttons' ).hide(); } } $( '#wpo_wcpdf-data-input-box' ).on( 'click', '.view-more, .hide-details', function( e ) { e.preventDefault(); $( this ).hide(); $( '.pdf-more-details' ).slideToggle( 'slow' ); if ( $( this ).hasClass( 'view-more' ) ) { $( '.hide-details' ).show(); } else { $( '.view-more' ).show(); } } ); function updatePreviewNumber( $table ) { let prefix = $table.find( 'input[name$="_number_prefix"]' ).val(); let suffix = $table.find( 'input[name$="_number_suffix"]' ).val(); let padding = $table.find( 'input[name$="_number_padding"]' ).val(); let plain = $table.find( 'input[name$="_number_plain"]' ).val(); let document = $table.data( 'document' ); let orderId = $table.data( 'order_id' ); $.ajax( { url: wpo_wcpdf_ajax.ajaxurl, method: 'POST', data: { action: 'wpo_wcpdf_preview_formatted_number', security: wpo_wcpdf_ajax.nonce, prefix: prefix, suffix: suffix, padding: padding, plain: plain, document: document, order_id: orderId, }, success: function( response ) { if ( response.success && response.data.formatted ) { let $preview = $table.find( '.formatted-number' ); let current = $preview.data( 'current' ); let updated = response.data.formatted; $preview.val( updated ); if ( current !== updated ) { $preview.addClass( 'changed' ); } else { $preview.removeClass( 'changed' ); } } }, error: function( xhr, status, error ) { console.error( 'AJAX error:', status, error ); $table.find( '.formatted-number' ).value( wpo_wcpdf_ajax.error_loading_number_preview ); } } ); } let previewTimer; $( document ).on( 'input', '.wcpdf-data-fields input', function () { const $table = $( this ).closest( '.wcpdf-data-fields' ); clearTimeout( previewTimer ); previewTimer = setTimeout( () => { updatePreviewNumber( $table ); }, 300 ); } ); // Edi identifiers const root = '#wpo_ips-edi-box .edi-customer-identifiers'; $( document.body ).on( 'click', root + ' td.collapse > a', function( e ) { e.preventDefault(); let $this = $( this ); let $tbody = $this.closest( 'table' ).find( 'tbody' ); if ( $tbody.is( ':visible' ) ) { $tbody.slideUp( 'fast' ); $this.text( wpo_wcpdf_ajax.edi_metabox.show ); } else { $tbody.slideDown( 'fast' ); $this.text( wpo_wcpdf_ajax.edi_metabox.hide ); } } ); // Peppol identifiers const peppolRoot = `${root}.peppol`; // Edit $( document.body ).on( 'click', peppolRoot + ' thead .editable a', function ( e ) { e.preventDefault(); $( this ).closest( 'table' ).addClass( 'is-editing' ); } ); // Cancel $( document.body ).on( 'click', peppolRoot + ' tfoot .button.cancel', function ( e ) { e.preventDefault(); $( this ).closest( 'table' ).removeClass( 'is-editing' ); } ); // Save (AJAX) $( document.body ).on( 'click', peppolRoot + ' tfoot .button-primary', function ( e ) { e.preventDefault(); const $btn = $( this ); const orderId = $btn.data( 'order_id' ); const $table = $btn.closest( 'table' ); const $box = $table.closest( peppolRoot ); const pairs = $box.find( 'tbody input[type="text"]' ).serializeArray(); const values = {}; $.each( pairs, function ( _, p ) { values[p.name] = p.value; } ); const data = { action: 'wpo_ips_edi_save_order_customer_peppol_identifiers', security: wpo_wcpdf_ajax.nonce, order_id: orderId, values: values }; $btn.prop( 'disabled', true ); $.post( wpo_wcpdf_ajax.ajaxurl, data ) .done( function ( response ) { $box.find( 'tbody tr' ).each( function () { const row = $( this ); const val = row.find( 'td.edit input[type="text"]' ).val(); row.find( 'td.display' ).text( val || '—' ); } ); $table.removeClass( 'is-editing' ); const msg = ( response && response.data && response.data.message ) || wpo_wcpdf_ajax.saved; if ( window.wp && wp.a11y && wp.a11y.speak ) { wp.a11y.speak( msg ); } else { alert( msg ); } } ) .fail( function ( jqXHR ) { const msg = ( jqXHR.responseJSON && jqXHR.responseJSON.data && jqXHR.responseJSON.data.message ) || wpo_wcpdf_ajax.fail; alert( msg ); } ) .always( function () { $btn.prop( 'disabled', false ); } ); } ); } );