Como adicionar a página de checkout do número de IVA do WooCommerce

Publicados: 2020-12-17

Check-out do número de IVA do WooCommerce Deseja adicionar um campo de número de IVA na página de checkout do WooCommerce? O WooCommerce não possui funcionalidade integrada para adicionar um campo de número de IVA. No entanto, criei um script PHP personalizado que adicionará um campo de IVA na página de checkout e na página da minha conta.

Check-out do número de IVA do WooCommerce

A venda de produtos na União Européia é muito específica, principalmente pelos aspectos legais. No entanto, o WooCommerce às vezes não leva isso em consideração, por isso é necessário ajustar a loja às condições europeias.

É essencial que a sua loja suporte o número de identificação de IVA para emissão de fatura. Neste tutorial, você aprenderá como adicionar um campo de IVA na página de checkout.

Etapas para adicionar um campo de IVA na página de checkout

Aqui estão os passos que você precisa seguir:

  1. Faça login no seu site WordPress e acesse o painel como usuário administrador.
  2. No menu do painel, clique no Menu Aparência > Menu Editor de Temas . Quando a página do editor de temas for aberta, procure o arquivo de funções do tema com a extensão functions.php. Abra este arquivo de funções para adicionar a função para adicionar um campo de IVA na página de checkout.
  3. Adicione o seguinte código ao arquivo functions.php:
 /***************************** A PARTE DIANTEIRA ******************* *********************/

/****************************

Filtre para adicionar um campo de IVA a:
- Minha conta - Editar formulário - Campos de cobrança
- Checkout - Editar formulário - Campos de cobrança
Esta função também está reordenando os campos do formulário.
***************************/

function add_woocommerce_billing_fields($billing_fields){

            //reordenar os campos do formulário de endereço de cobrança
            $billing_fields2['billing_first_name'] = $billing_fields['billing_first_name'];
            $billing_fields2['billing_last_name'] = $billing_fields['billing_last_name'];

            $billing_fields2['billing_vat'] = array(
                        'tipo' => 'texto',
                        'label' => __('Número de IVA', 'keyelp-shop-customization' ),
                        'class' => array('form-row-wide'),
                        'obrigatório' => falso,
                        'claro' => verdadeiro
            );
                
            $merged_billing_fields = $billing_fields2 + $billing_fields;


            return $merged_billing_fields;

}

add_filter('woocommerce_billing_fields', 'add_woocommerce_billing_fields');


/************
Filtros para adicionar IVA ao imprimir o endereço de cobrança em:
- (1) Minha conta 
- (2) Checkout - Pedido Recebido (após a conclusão do checkout),
+++ Filtros adicionais para formatar a saída impressa.
********/

// (1) Imprimindo o endereço de cobrança em minha conta

add_filter( 'woocommerce_my_account_my_address_formatted_address', 'njengah_my_account_my_address_formatted_address', 10, 3 );

function njengah_my_account_my_address_formatted_address( $campos, $customer_id, $type) {

            if ( $type == 'faturamento' ) {
                        $fields['vat'] = get_user_meta( $customer_id, 'billing_vat', true);
            }
            retornar $ campos;
}


// (2) Checkout -- Pedido Recebido (impresso após concluir o checkout)

add_filter( 'woocommerce_order_formatted_billing_address', 'njengah_add_vat_formatted_billing_address', 10, 2 );

function njengah_add_vat_formatted_billing_address( $ campos, $ pedido ) {

            $fields['vat'] = $order->billing_vat;

            retornar $ campos;

}



// Criando variáveis ​​de IVA de fusão para formatação de impressão

add_filter( 'woocommerce_formatted_address_replacements', 'njengah_formatted_address_replacements', 10, 2 );

function njengah_formatted_address_replacements( $endereço, $args) {

            $endereço['{vat}'] = '';
            $address['{vat_upper}']='';

            if ( ! empty( $args['vat'] ) ) {
                        $address['{vat}'] = $args['vat'];
                        $address['{vat_upper}'] = strtoupper($args['vat']);
            }

            retornar $endereço;

}


//Definindo a formatação em espanhol para imprimir o endereço, incluindo IVA.

add_filter( 'woocommerce_localisation_address_formats', 'njengah_localisation_address_format' );

function njengah_localisation_address_format( $formats ) {

            $formats['ES'] = "{nome}\n{empresa}\n{vat_upper}\n{endereço_1}\n{endereço_2}\n{código postal} {cidade}\n{estado}\n{país} ";

            retornar $formatos;

}


/******************************** PÁGINA DE PERFIL DO USUÁRIO ADMIN **************** ************************/

/****************

Filtre para adicionar metacampos de cliente de IVA (campo de perfil de usuário no agrupamento de endereços de cobrança)

*****************/

add_filter('woocommerce_customer_meta_fields', 'njengah_customer_meta_fields');

function njengah_customer_meta_fields( $fields ) {

            $fields['billing']['fields']['billing_vat'] = array(

                        'label' => __( 'Número de IVA', 'njengah')

            );


            retornar $ campos;

}


/**************************** PÁGINA DE PEDIDO DE ADMIN ******************** *********************/


/************ 

Filtre para adicionar o IVA à página Editar formulário no pedido -- Admin

*********/

add_filter('woocommerce_admin_billing_fields', 'njengah_admin_billing_fields');

function njengah_admin_billing_fields( $fields ) {

            $campos['vat'] = array(
                        'label' => __( 'Número do IVA', 'njengah' ),
                        'mostrar' => verdadeiro
            );

            retornar $ campos;

}

/****************

Filtre para copiar o campo IVA dos metacampos do usuário para o formulário Admin do pedido (depois de clicar no botão dedicado na página de administração)

******************/


add_filter('woocommerce_found_customer_details', 'njengah_found_customer_details');

function njengah_found_customer_details( $customer_data) {

            $customer_data['billing_vat'] = get_user_meta( $_POST['user_id'], 'billing_vat', true);

            retornar $customer_data;

}
  1. Este é o resultado no front-end: Campo de checkout de IVA
  2. Este é o resultado do lado do administrador: Número de IVA

Conclusão

Em resumo, você aprendeu como adicionar um campo de checkout de número de IVA na página de checkout do WooCommerce. Eu recomendo adicionar os trechos de código no arquivo functions.php do seu tema filho para que as alterações feitas não sejam perdidas durante uma atualização. O snippet de código exibe automaticamente o número do IVA nas faturas emitidas.

Artigos semelhantes