function valide_checkout_fields() { $billing_persontype = isset($_POST['billing_persontype']) ? $_POST['billing_persontype'] : 0; if ($billing_persontype == 1) { if (empty($_POST['billing_cpf'])) { wc_add_notice(sprintf('<strong>%s</strong> %s.', __('CPF', $domain), __('é um campo obrigatório', $domain)), 'error'); } if (!empty($_POST['billing_cpf']) && !WooCommerceNFe_Format::is_cpf($_POST['billing_cpf'])) { wc_add_notice(sprintf('<strong>%s</strong> %s.', __('CPF', $domain), __('informado não é válido', $domain)), 'error'); } } if ($billing_persontype == 2) { if (empty($_POST['billing_cnpj'])) { wc_add_notice(sprintf('<strong>%s</strong> %s.', __('CNPJ', $domain), __('é um campo obrigatório', $domain)), 'error'); } if (empty($_POST['billing_company'])) { wc_add_notice(sprintf('<strong>%s</strong> %s.', __('Empresa', $domain), __('é um campo obrigatório', $domain)), 'error'); } if (!empty($_POST['billing_cnpj']) && !WooCommerceNFe_Format::is_cnpj($_POST['billing_cnpj'])) { wc_add_notice(sprintf('<strong>%s</strong> %s.', __('CNPJ', $domain), __('informado não é válido', $domain)), 'error'); } } }
function order_data($post_id) { global $wpdb; $WooCommerceNFe_Format = new WooCommerceNFe_Format(); $order = new WC_Order($post_id); $coupons = $order->get_used_coupons(); $coupons_percentage = array(); $total_discount = 0; $data = array(); if ($coupons) { foreach ($coupons as $coupon_code) { $coupon_obj = new WC_Coupon($coupon_code); if ($coupon_obj->discount_type == 'percent') { $coupons_percentage[] = $coupon_obj->coupon_amount; } } } if ($order->get_fees()) { foreach ($order->get_fees() as $key => $item) { if ($item['line_total'] < 0) { $discount = $item['line_total'] * -1; $total_discount = $discount + $total_discount; } else { $codigo_ean = get_option('wc_settings_woocommercenfe_ean'); $codigo_ncm = get_option('wc_settings_woocommercenfe_ncm'); $codigo_cest = get_option('wc_settings_woocommercenfe_cest'); $origem = get_option('wc_settings_woocommercenfe_origem'); $imposto = get_option('wc_settings_woocommercenfe_imposto'); $data['produtos'][] = array('nome' => $item['name'], 'sku' => $product->get_sku(), 'ean' => $codigo_ean, 'ncm' => $codigo_ncm, 'cest' => $codigo_cest, 'quantidade' => 1, 'unidade' => 'UN', 'peso' => '0.100', 'origem' => (int) $origem, 'subtotal' => number_format($item['line_subtotal'], 2), 'total' => number_format($item['line_total'], 2), 'classe_imposto' => $imposto); } } } $total_discount = $order->get_total_discount() + $total_discount; // Order $data = array('ID' => $post_id, 'operacao' => 1, 'natureza_operacao' => get_option('wc_settings_woocommercenfe_natureza_operacao'), 'modelo' => 1, 'emissao' => 1, 'finalidade' => 1, 'ambiente' => (int) get_option('wc_settings_woocommercenfe_ambiente')); $data['pedido'] = array('pagamento' => 0, 'presenca' => 2, 'modalidade_frete' => 0, 'frete' => get_post_meta($order->id, '_order_shipping', true), 'desconto' => $total_discount, 'total' => $order->order_total); //Informações COmplementares ao Fisco $fiscoinf = get_option('wc_settings_woocommercenfe_fisco_inf'); if (!empty($fiscoinf) && strlen($fiscoinf) <= 2000) { $data['pedido']['informacoes_fisco'] = $fiscoinf; } //Informações Complementares ao Consumidor $consumidorinf = get_option('wc_settings_woocommercenfe_cons_inf'); if (!empty($consumidorinf) && strlen($consumidorinf) <= 2000) { $data['pedido']['informacoes_complementares'] = $consumidorinf; } // Customer $tipo_pessoa = get_post_meta($post_id, '_billing_persontype', true); if (!$tipo_pessoa) { $tipo_pessoa = 1; } if ($tipo_pessoa == 1) { $data['cliente'] = array('cpf' => $WooCommerceNFe_Format->cpf(get_post_meta($post_id, '_billing_cpf', true)), 'nome_completo' => get_post_meta($post_id, '_billing_first_name', true) . ' ' . get_post_meta($post_id, '_billing_last_name', true), 'endereco' => get_post_meta($post_id, '_shipping_address_1', true), 'complemento' => get_post_meta($post_id, '_shipping_address_2', true), 'numero' => get_post_meta($post_id, '_shipping_number', true), 'bairro' => get_post_meta($post_id, '_shipping_neighborhood', true), 'cidade' => get_post_meta($post_id, '_shipping_city', true), 'uf' => get_post_meta($post_id, '_shipping_state', true), 'cep' => $WooCommerceNFe_Format->cep(get_post_meta($post_id, '_shipping_postcode', true)), 'telefone' => get_user_meta($post_id, 'billing_phone', true), 'email' => get_post_meta($post_id, '_billing_email', true)); } if ($tipo_pessoa == 2) { $data['cliente'] = array('cnpj' => $WooCommerceNFe_Format->cnpj(get_post_meta($post_id, '_billing_cnpj', true)), 'razao_social' => get_post_meta($post_id, '_billing_company', true), 'ie' => get_post_meta($post_id, '_billing_ie', true), 'endereco' => get_post_meta($post_id, '_shipping_address_1', true), 'complemento' => get_post_meta($post_id, '_shipping_address_2', true), 'numero' => get_post_meta($post_id, '_shipping_number', true), 'bairro' => get_post_meta($post_id, '_shipping_neighborhood', true), 'cidade' => get_post_meta($post_id, '_shipping_city', true), 'uf' => get_post_meta($post_id, '_shipping_state', true), 'cep' => $WooCommerceNFe_Format->cep(get_post_meta($post_id, '_shipping_postcode', true)), 'telefone' => get_user_meta($post_id, 'billing_phone', true), 'email' => get_post_meta($post_id, '_billing_email', true)); } // Products foreach ($order->get_items() as $key => $item) { $product_id = $item['product_id']; $variation_id = $item['variation_id']; $ignorar_nfe = get_post_meta($product_id, '_nfe_ignorar_nfe', true); if ($ignorar_nfe == 1 || $order->get_item_subtotal($item, false, false) == 0) { $data['pedido']['total'] -= $item['line_subtotal']; if ($coupons_percentage) { foreach ($coupons_percentage as $percentage) { $data['pedido']['total'] += $percentage / 100 * $item['line_subtotal']; $data['pedido']['desconto'] -= $percentage / 100 * $item['line_subtotal']; } } $data['pedido']['total'] = number_format($data['pedido']['total'], 2); $data['pedido']['desconto'] = number_format($data['pedido']['desconto'], 2); continue; } $emitir = apply_filters('emitir_nfe_produto', true, $product_id); if ($variation_id) { $emitir = apply_filters('emitir_nfe_produto', true, $variation_id); } if ($emitir) { $product = $order->get_product_from_item($item); // Vars $codigo_ean = get_post_meta($product_id, '_nfe_codigo_ean', true); $codigo_ncm = get_post_meta($product_id, '_nfe_codigo_ncm', true); $codigo_cest = get_post_meta($product_id, '_nfe_codigo_cest', true); $origem = get_post_meta($product_id, '_nfe_origem', true); $imposto = get_post_meta($product_id, '_nfe_classe_imposto', true); $peso = $product->get_weight(); if (!$peso) { $peso = '0.100'; } if (!$codigo_ean) { $codigo_ean = get_option('wc_settings_woocommercenfe_ean'); } if (!$codigo_ncm) { $codigo_ncm = get_option('wc_settings_woocommercenfe_ncm'); } if (!$codigo_cest) { $codigo_cest = get_option('wc_settings_woocommercenfe_cest'); } if (!is_numeric($origem)) { $origem = get_option('wc_settings_woocommercenfe_origem'); } if (!$imposto) { $imposto = get_option('wc_settings_woocommercenfe_imposto'); } // Attributes $variacoes = ''; foreach (array_keys($item['item_meta']) as $meta) { if (strpos($meta, 'pa_') !== false) { $atributo = $item[$meta]; $nome_atributo = str_replace('pa_', '', $meta); $nome_atributo = $wpdb->get_var("SELECT attribute_label FROM {$wpdb->prefix}woocommerce_attribute_taxonomies WHERE attribute_name = '{$nome_atributo}'"); $valor = strtoupper($item[$meta]); $variacoes .= ' - ' . strtoupper($nome_atributo) . ': ' . $valor; } } $data['produtos'][] = array('nome' => $item['name'] . $variacoes, 'sku' => $product->get_sku(), 'ean' => $codigo_ean, 'ncm' => $codigo_ncm, 'cest' => $codigo_cest, 'quantidade' => $item['qty'], 'unidade' => 'UN', 'peso' => $peso, 'origem' => (int) $origem, 'subtotal' => number_format($order->get_item_subtotal($item, false, false), 2), 'total' => number_format($order->get_line_total($item, false, false), 2), 'classe_imposto' => $imposto); } } return $data; }