Informação adicional
| Peso | 0.019 kg |
|---|---|
| Dimensões | 4.5 × 13.5 cm |
Sem problema. São só três passos: 1. Clique no botão azul “Aplicar só no código”. No seu print, é o botão azul escuro do meio, com “CO-03054” já preenchido no campo “Código”. Deixe o campo “Categoria (slug)” vazio. 2. Espere a tela recarregar. Deve aparecer uma faixa verde no topo com a mensagem: “Faixas de preço, gravação e preço aplicados em 1 produtos.” 3. Veja o resultado na loja: limpe o cache do WP Rocket; abra a página do produto “Jogo de Xícaras de Cafezinho com Pires em Porcelana”; me mande o print. Isso só mexe neste produto, e dá para desfazer pelo botão “Voltar preços anteriores”. Os outros 1.316 produtos não são tocados. Sim, foi como comparei: o preço da Santa Brindes que aparece no print (R$ 411,58) é o unitário para 50 unidades, e a página já estava com a quantidade 50 selecionada. Na minha tabela, eu já comparei com a faixa de 50 un. do seu produto (R$ 267,16 hoje). Uma correção pequena: você escreveu 441,58, e no print o valor é 411,58. A conta certa é: 411,58 × 50 = R$ 20.579,00 Com 441,58 daria R$ 22.079,00. Confira qual é o valor que você viu, mas no print eu leio 411,58. Então, na mesma quantidade de 50 unidades: Santa Brindes: R$ 20.579,00 Você, com 40% de markup: 267,16 × 50 = R$ 13.358,00 Você, com 60% de markup: 305,32 × 50 = R$ 15.266,00, que ainda sai uns R$ 5.300 mais barato que ela. O que a página da Santa não mostra é o preço em quantidades menores (15 ou 30 unidades). Como o “pedido mínimo” dela é R$ 3.000, o menor pedido possível é de uns 8 unidades. O preço por unidade pode ser maior nessas quantidades, mas isso eu não consigo ver daqui. Com essa confirmação, a conclusão não muda: você tem espaço para uma margem maior. Qual markup você quer testar no produto de teste: 50% ou 60%? vou por 60 Antes de você mudar a margem, achei um problema no arquivo do motor que eu te mandei, e vou corrigir. Do jeito que está, os produtos da Só Marcas que ainda não passaram pelo “Aplicar” (os outros 1.316) podem ser tratados como “com preço” pelo motor e mostrar uma calculadora com a conta antiga, de percentual fixo. Eu quero que eles continuem como estão até você aplicar. Corrijo e testo. Editado dc-price-omnitek.php, executado um comando pode por para mim? Vou fixar a margem em 60% no snippet do importador e adicionar um botão “Salvar margem e imposto” para você atualizar isso quando precisar, sem tocar no resto do código. Editado sm_importer.php, executado um comando Sintaxe ok. Publico a atualização do importador com a margem fixada em 60%. Usou Divulgarcriacoes: Call Tool 60 aqui Você pediu “60 aqui”, e eu acabei de publicar a atualização que faz isso. Confiro se ela foi gravada direito. Verified margin-setting snippet update saved correctly Já salvei a margem em 60% com o snippet ativo; só pedir para recarregar a tela de Importar Só Marcas (F5) e, se ainda mostrar 40, usar o novo botão “Salvar margem e imposto” para corrigir. Antes de aplicar no produto de teste, encontrei e corrigi um defeito no dc-price-omnitek.php (produtos ainda não aplicados podiam ser tratados como “com preço”), então vou reenviar o arquivo corrigido para você trocar. dc-price-omnitek.php corrigido: a Só Marcas só entra no motor depois de "Aplicar". Substitui o anterior. php dc-price-omnitek.php 57,2 kB Sequência, nesta ordem: Troque o dc-price-omnitek.php no servidor pelo arquivo que acabei de enviar (de novo em wp-content/plugins/dc-price-engine/). Guarde uma cópia do atual. Recarregue a tela do importador e confirme que a margem mostra 60. Clique em “Aplicar só no código” com CO-03054, de novo. Isso recalcula o produto de teste com 60%. Limpe o cache do WP Rocket e abra a página. O que a página deve mostrar com 60% (faixa de 10 un. = custo R$ 218,33; imposto de 4%): Quantidade Unitário esperado 15 un. R$ 363,30 30 un. R$ 319,82 75 un. R$ 305,32 105 un. ou mais R$ 298,09 Me mande o print e eu confiro se bateu. Depois disso, se estiver certo, seguimos para uma categoria e então para todos. * recebe preço automático (continua orçamento normal). * ---------------------------------------------------------------------- */ function dcprice_categoria_map() { return array( 'chinelos' => array( 'sublimacao_chinelo' ), 'aluminio-canetas-brindes' => array( 'laser_canetas_lapiseiras' ), // canetas de metal 'canetas-brindes' => array( 'tampografia_caneta_plastica', 'digitaluv_caneta_plastica' ), // resto das canetas (plástico) 'mochilas-e-malas-brindes' => array( 'silk_mochila_mala' ), 'blocos-e-cadernetas-brindes' => array( 'silk_bloco_agenda' ), 'copos' => array( 'silk_garrafa_copo_180' ), 'chaveiros-brindes' => array( 'laser_chaveiro' ), 'canecas' => array( 'sublimacao_caneca_squeeze' ), 'carregadores-power-bank-brindes' => array( 'digitaluv_power_bloco' ), 'caixas-de-som-brindes' => array( 'digitaluv_caixa_som' ), // --- expansão (páginas extras do mesmo catálogo Omnitek) --- 'necessaires' => array( 'silk_necessaire_squeeze_dobravel' ), 'sacolas' => array( 'silk_sacola_ecobag_tecido' ), 'bolsa-termica' => array( 'silk_bolsa_termica_guardachuva' ), 'guarda-chuva-brindes' => array( 'silk_bolsa_termica_guardachuva' ), 'fones-de-ouvido' => array( 'digitaluv_pequenos_eletronicos' ), 'acessorios-p-celular' => array( 'digitaluv_pequenos_eletronicos' ), 'kit-vinho' => array( 'digitaluv_kit_vinho_porta_doc' ), 'agenda-2027' => array( 'digitaluv_kit_vinho_porta_doc' ), // mesma técnica de "mochilas-e-malas-brindes" (bolsas/malas em geral) 'mochilas' => array( 'silk_mochila_mala' ), 'malas' => array( 'silk_mochila_mala' ), 'mochilas-malas' => array( 'silk_mochila_mala' ), 'capa-para-notebook' => array( 'silk_mochila_mala' ), 'p-notebooks' => array( 'silk_mochila_mala' ), // mesma técnica de "copos" (garrafas/squeezes/térmicas usam a mesma silk 1 cor) 'squeezes-e-garrafas' => array( 'silk_garrafa_copo_180' ), 'garrafastermicas' => array( 'silk_garrafa_copo_180' ), 'termicos' => array( 'silk_garrafa_copo_180' ), 'termico' => array( 'silk_garrafa_copo_180' ), 'inox-copos' => array( 'silk_garrafa_copo_180' ), 'vidro-2' => array( 'silk_garrafa_copo_180' ), 'plastico' => array( 'silk_garrafa_copo_180' ), 'inox' => array( 'silk_garrafa_copo_180' ), ); } /* ------------------------------------------------------------------------- * Todas as opções de gravação Omnitek disponíveis pra um produto, olhando * as categorias dele (a mais específica primeiro — ex: "Alumínio" antes de * "Canetas" genérico). Cada opção: { key, label, row }. * ---------------------------------------------------------------------- */ function dcprice_omnitek_rows_for_product( $product_id ) { // Override manual (plugin "DC · Origem e Técnica de Gravação"): se o // admin marcou técnica(s) direto no produto, usa isso e ignora a // categoria por completo — resolve casos como categorias com produtos // de materiais diferentes (ex: Kit Viagem em cortiça x em couro). $manual = get_post_meta( $product_id, '_dc_technique_override', true ); if ( is_array( $manual ) && ! empty( $manual ) ) { $tabela_generica = dcprice_tecnica_generica_tabela(); $options = array(); foreach ( $manual as $tecnica_key ) { if ( ! isset( $tabela_generica[ $tecnica_key ] ) ) { continue; } $tiers = $tabela_generica[ $tecnica_key ]['tiers']; $options[] = array( 'key' => 'manual:' . $tecnica_key, 'label' => $tabela_generica[ $tecnica_key ]['label'], 'row' => array( 'tiers' => $tiers, 'minimo' => $tiers[0]['price'], ), ); } if ( ! empty( $options ) ) { return $options; } } $map = dcprice_categoria_map(); $terms = get_the_terms( $product_id, 'product_cat' ); if ( ! $terms || is_wp_error( $terms ) ) { return array(); } $slugs = wp_list_pluck( $terms, 'slug' ); // Sobe na árvore: produto só marcado numa subcategoria (ex.: "Metal // Esfero" dentro de "Canetas") também herda o mapeamento da categoria-mãe. foreach ( $terms as $term ) { foreach ( get_ancestors( $term->term_id, 'product_cat' ) as $ancestor_id ) { $ancestor = get_term( $ancestor_id, 'product_cat' ); if ( $ancestor && ! is_wp_error( $ancestor ) ) { $slugs[] = $ancestor->slug; } } } $slugs = array_unique( $slugs ); $tabela = dcprice_omnitek_tabela(); foreach ( $map as $slug => $tabela_keys ) { if ( ! in_array( $slug, $slugs, true ) ) { continue; } $options = array(); foreach ( (array) $tabela_keys as $key ) { if ( isset( $tabela[ $key ] ) ) { $options[] = array( 'key' => $key, 'label' => $tabela[ $key ]['label'], 'row' => $tabela[ $key ], ); } } if ( ! empty( $options ) ) { return $options; // primeira categoria (mais específica) que bater, já retorna } } // Nada na tabela curada da Omnitek pra essa categoria: cai pra técnica // genérica (dado real da Spot, sem ser específico do produto), pra não // deixar a categoria inteira sem preço automático. $generic = dcprice_tecnica_generica_for_product_by_slugs( $slugs ); if ( null !== $generic ) { return array( $generic ); } return array(); } /* ------------------------------------------------------------------------- * Fallback: técnica genérica por categoria (sem tabela Omnitek própria), * usando a curva REAL de preço por técnica da Spot (customizationTables, * opção 1 cor mais comum de cada técnica) — só pra não deixar a categoria * inteira sem preço automático. Menos preciso que a Omnitek/Spot real do * produto, mas evita "sem preço" pro resto do catálogo. * ---------------------------------------------------------------------- */ function dcprice_tecnica_generica_tabela() { $tabela = array( 'laser' => array( 'label' => 'Laser', 'tiers' => array( array( 'min_qty' => 1, 'price' => 63.0 ), array( 'min_qty' => 2, 'price' => 31.5 ), array( 'min_qty' => 3, 'price' => 20.97 ), array( 'min_qty' => 4, 'price' => 15.75 ), array( 'min_qty' => 5, 'price' => 11.87 ), array( 'min_qty' => 10, 'price' => 6.02 ), array( 'min_qty' => 25, 'price' => 2.99 ), array( 'min_qty' => 50, 'price' => 1.28 ), array( 'min_qty' => 100, 'price' => 0.86 ), array( 'min_qty' => 250, 'price' => 0.57 ), array( 'min_qty' => 500, 'price' => 0.51 ), array( 'min_qty' => 1000, 'price' => 0.46 ), array( 'min_qty' => 2500, 'price' => 0.45 ), array( 'min_qty' => 5000, 'price' => 0.43 ), ), ), 'tampografia' => array( 'label' => 'Tampografia', 'tiers' => array( array( 'min_qty' => 1, 'price' => 95.0 ), array( 'min_qty' => 2, 'price' => 52.5 ), array( 'min_qty' => 3, 'price' => 36.75 ), array( 'min_qty' => 4, 'price' => 26.25 ), array( 'min_qty' => 5, 'price' => 18.9 ), array( 'min_qty' => 10, 'price' => 9.45 ), array( 'min_qty' => 25, 'price' => 4.2 ), array( 'min_qty' => 50, 'price' => 2.1 ), array( 'min_qty' => 100, 'price' => 1.05 ), array( 'min_qty' => 250, 'price' => 0.53 ), array( 'min_qty' => 500, 'price' => 0.29 ), array( 'min_qty' => 1000, 'price' => 0.19 ), array( 'min_qty' => 2500, 'price' => 0.15 ), array( 'min_qty' => 5000, 'price' => 0.14 ), ), ), 'silk' => array( 'label' => 'Silk', 'tiers' => array( array( 'min_qty' => 1, 'price' => 105.0 ), array( 'min_qty' => 2, 'price' => 52.5 ), array( 'min_qty' => 3, 'price' => 35.18 ), array( 'min_qty' => 4, 'price' => 26.25 ), array( 'min_qty' => 5, 'price' => 21.0 ), array( 'min_qty' => 10, 'price' => 10.5 ), array( 'min_qty' => 25, 'price' => 4.62 ), array( 'min_qty' => 50, 'price' => 2.42 ), array( 'min_qty' => 100, 'price' => 1.21 ), array( 'min_qty' => 250, 'price' => 0.79 ), array( 'min_qty' => 500, 'price' => 0.62 ), array( 'min_qty' => 1000, 'price' => 0.58 ), array( 'min_qty' => 2500, 'price' => 0.49 ), array( 'min_qty' => 5000, 'price' => 0.48 ), ), ), 'silk_textil' => array( 'label' => 'Silk', 'tiers' => array( array( 'min_qty' => 1, 'price' => 100.0 ), array( 'min_qty' => 2, 'price' => 50.18 ), array( 'min_qty' => 3, 'price' => 33.45 ), array( 'min_qty' => 4, 'price' => 25.09 ), array( 'min_qty' => 5, 'price' => 20.07 ), array( 'min_qty' => 10, 'price' => 11.15 ), array( 'min_qty' => 25, 'price' => 6.2 ), array( 'min_qty' => 50, 'price' => 3.15 ), array( 'min_qty' => 100, 'price' => 1.68 ), array( 'min_qty' => 250, 'price' => 0.89 ), array( 'min_qty' => 500, 'price' => 0.65 ), array( 'min_qty' => 1000, 'price' => 0.48 ), array( 'min_qty' => 2500, 'price' => 0.42 ), array( 'min_qty' => 5000, 'price' => 0.4 ), ), ), 'transfer' => array( 'label' => 'DTF', 'tiers' => array( array( 'min_qty' => 1, 'price' => 95.0 ), array( 'min_qty' => 2, 'price' => 47.25 ), array( 'min_qty' => 3, 'price' => 31.5 ), array( 'min_qty' => 4, 'price' => 23.63 ), array( 'min_qty' => 5, 'price' => 18.9 ), array( 'min_qty' => 10, 'price' => 9.45 ), array( 'min_qty' => 25, 'price' => 4.41 ), array( 'min_qty' => 50, 'price' => 3.05 ), array( 'min_qty' => 100, 'price' => 1.7 ), array( 'min_qty' => 250, 'price' => 0.88 ), array( 'min_qty' => 500, 'price' => 0.58 ), array( 'min_qty' => 1000, 'price' => 0.44 ), array( 'min_qty' => 2500, 'price' => 0.36 ), array( 'min_qty' => 5000, 'price' => 0.32 ), ), ), 'hot_stamping' => array( 'label' => 'Hot stamping', 'tiers' => array( array( 'min_qty' => 1, 'price' => 227.0 ), array( 'min_qty' => 2, 'price' => 113.4 ), array( 'min_qty' => 3, 'price' => 75.6 ), array( 'min_qty' => 4, 'price' => 56.7 ), array( 'min_qty' => 5, 'price' => 45.36 ), array( 'min_qty' => 10, 'price' => 22.68 ), array( 'min_qty' => 25, 'price' => 9.07 ), array( 'min_qty' => 50, 'price' => 4.54 ), array( 'min_qty' => 100, 'price' => 2.52 ), array( 'min_qty' => 250, 'price' => 2.27 ), array( 'min_qty' => 500, 'price' => 1.58 ), array( 'min_qty' => 1000, 'price' => 1.26 ), array( 'min_qty' => 2500, 'price' => 1.2 ), array( 'min_qty' => 5000, 'price' => 1.13 ), ), ), ); // Técnicas novas (lista por material): o preço é 22% do custo (ver dcprice_omnitek_gravacao_pct); // a faixa abaixo só existe porque o restante do motor espera 'tiers'. $novas = array( 'uv_direto' => 'Digital UV', 'dtf_uv' => 'DTF UV', 'dtf_textil' => 'DTF têxtil', 'sublimacao' => 'Sublimação', 'bordado' => 'Bordado', 'baixo_relevo' => 'Baixo-relevo', 'impressao' => 'Impressão', ); foreach ( $novas as $k => $label ) { $tabela[ $k ] = array( 'label' => $label, 'tiers' => $tabela['transfer']['tiers'], ); } return $tabela; } /* ------------------------------------------------------------------------- * Categoria (site) => técnica genérica. Baseado no material típico de cada * categoria (metal → Laser, têxtil → Silk, madeira → Laser, etc.). Chute * educado, sem dado real do fornecedor pra essa categoria — REVISAR se * algum preço sair estranho. * ---------------------------------------------------------------------- */ function dcprice_tecnica_generica_map() { return array( 'camisetas' => 'silk_textil', 'masculino' => 'silk_textil', 'feminino' => 'silk_textil', 'unissex' => 'silk_textil', 'linha-ecologica' => 'silk', 'kit-churrasco' => 'laser', 'artigos-para-vinho' => 'laser', 'kit-queijo' => 'laser', 'pen-drives' => 'laser', 'ferramentas-brindes' => 'laser', 'bar-e-bebidas-brindes' => 'laser', 'cozinha-brindes' => 'laser', 'metalicas' => 'laser', 'eletronico' => 'tampografia', 'tabuas' => 'laser', 'lanternas-e-luminarias-brindes' => 'laser', 'canivetes' => 'laser',
Avaliações
Não há avaliações ainda.