Cum să treci magazinul WooCommerce la TVA 21% și să actualizezi automat toate prețurile

YouTube Logo Urmărește canalul nostru de YouTube

Cum să treci magazinul WooCommerce la TVA 21% și să actualizezi automat toate prețurile


YouTube Logo
Vezi tutorialul pe YouTube 🎬

✅ Partea 1: Modificarea TVA în WooCommerce

1. Intră în admin: WooCommerce > Setări > TVA

Dacă nu vezi „TVA”, activează opțiunea:
WooCommerce > Setări > General > Activează taxele

2. Mergi în tabul „Rate de taxă standard”

3. Modifică valoarea:

  • Dacă ai România setată:

    • Găsește rândul cu codul „RO” și la „Rată TVA” schimbă din 19 în 21

    • Salvează modificările

🔥 Acum toate produsele care folosesc această rată vor avea automat aplicat TVA 21% (inclusiv în checkout și facturi)

✅ Partea 2: Creșterea prețurilor cu 2% automat

1. Adaugă codul magic în fișierul functions.php sau într-un plugin personalizat

Codul complet îl ai aici (inserat mai jos), include:

<?php

/*────────  Meniu sub WooCommerce  ────────*/
add_action( 'admin_menu', function () {
    add_submenu_page(
        'woocommerce', 'Ajustează Prețuri', 'Ajustează Prețuri',
        'manage_woocommerce', 'ajusteaza-preturi', 'micadan_page_price_adjust', 56
    );
});

/*────────  CSS frumos  ────────*/
add_action( 'admin_enqueue_scripts', function ( $hook ) {
    if ( $hook === 'woocommerce_page_ajusteaza-preturi' ) {
        wp_add_inline_style( 'wp-admin', '
          .micadan-wrap{max-width:740px;margin-top:30px;background:#fff;border-radius:16px;padding:40px 50px;box-shadow:0 12px 30px rgba(0,0,0,.06);font-family:sans-serif}
          .micadan-wrap h1{font-size:28px;margin-bottom:20px;font-weight:700;display:flex;align-items:center;gap:10px;color:#111}
          .micadan-intro{background:#f1f1f1;border-left:5px solid #7f54b3;padding:20px;border-radius:8px;margin-bottom:30px}
          .micadan-intro p{margin:0;font-size:15px;line-height:1.6}
          .micadan-wrap label{font-weight:600;margin-bottom:6px;display:block}
          .micadan-wrap input,.micadan-wrap select{padding:10px;border-radius:6px;border:1px solid #ccd0d4;font-size:15px}
          .micadan-wrap .row{margin-bottom:20px}
          .micadan-btn{padding:12px 26px;border:none;border-radius:6px;font-weight:700;font-size:16px;color:#fff;cursor:pointer;transition:.2s}
          .btn-primary{background:#7f54b3}.btn-primary:hover{background:#68459c}
          .btn-danger{background:#d63638}.btn-danger:hover{background:#b32d2f}
        ' );
    }
});

/*────────  Pagina propriu-zisă  ────────*/
function micadan_page_price_adjust() {

    // Procesare formular
    if ( isset($_POST['micadan_action']) && check_admin_referer('micadan_price_nonce') ) {
        $action  = sanitize_text_field( $_POST['micadan_action'] );
        $percent = isset($_POST['procent']) ? floatval($_POST['procent']) : 0;

        $args = [ 'limit' => -1, 'status' => ['publish','private','draft'], 'type' => ['simple','variable'] ];
        $products = wc_get_products( $args );

        if ( $action === 'reset' ) {
            foreach ( $products as $p ) restore_price( $p );
            echo '<div class="notice notice-warning is-dismissible"><p><span class="dashicons dashicons-update"></span> Prețurile au fost resetate la valorile inițiale.</p></div>';

        } elseif ( $percent > 0 && in_array( $action, ['crestere','scadere'], true ) ) {
            $factor = ( $action === 'crestere' ) ? ( 1 + $percent/100 ) : ( 1 - $percent/100 );
            foreach ( $products as $p ) {
                backup_price_if_needed( $p );
                update_price_recursive( $p, $factor );
            }
            printf('<div class="notice notice-success is-dismissible"><p><span class="dashicons dashicons-yes"></span> Prețurile au fost %s cu <strong>%s%%</strong>.</p></div>',
                ( $action === 'crestere' ? 'majorate' : 'reduse' ), esc_html($percent));
        } else {
            echo '<div class="notice notice-error"><p>Introdu un procent > 0 și alege o acțiune validă.</p></div>';
        }
    }

    // UI
    ?>
    <div class="wrap"><div class="micadan-wrap">
        <h1><span class="dashicons dashicons-cart"></span> Ajustează Prețurile la Produse</h1>

        <div class="micadan-intro">
            <p><strong>Ce face acest panou?</strong></p>
            <p>✔ Poți <strong>crește</strong> sau <strong>scădea</strong> toate prețurile produselor WooCommerce cu un procent ales de tine.<br>
            ✔ La prima modificare, sistemul salvează automat prețurile originale (backup).<br>
            ✔ Apăsând <strong>RESET</strong>, revii la prețurile inițiale.<br>
            ✔ Funcționează cu produse simple și variabile.</p>
        </div>

        <form method="post">
            <?php wp_nonce_field('micadan_price_nonce'); ?>

            <div class="row">
                <label for="procent">Procent (%):</label>
                <input type="number" name="procent" step="0.01" min="0.01" style="width:120px">
            </div>

            <div class="row">
                <label for="actiune">Alege acțiunea:</label>
                <select name="micadan_action" required style="width:180px">
                    <option value="">— Selectează —</option>
                    <option value="crestere">Crește prețurile</option>
                    <option value="scadere">Scade prețurile</option>
                    <option value="reset">RESET la prețul inițial</option>
                </select>
            </div>

            <button type="submit" class="micadan-btn btn-primary">Execută</button>
            <button type="submit" name="micadan_action" value="reset" class="micadan-btn btn-danger" style="margin-left:12px">Reset</button>
        </form>
    </div></div>
    <?php
}

/*────────  Helpers  ────────*/
function backup_price_if_needed( $product ) {
    if ( ! metadata_exists( 'post', $product->get_id(), '_price_backup' ) ) {
        update_post_meta( $product->get_id(), '_price_backup', [
            'regular' => $product->get_regular_price(),
            'sale'    => $product->get_sale_price()
        ] );
    }
    if ( $product->is_type('variable') ) {
        foreach ( $product->get_children() as $vid ) {
            $var = wc_get_product( $vid );
            if ( ! metadata_exists( 'post', $vid, '_price_backup' ) ) {
                update_post_meta( $vid, '_price_backup', [
                    'regular' => $var->get_regular_price(),
                    'sale'    => $var->get_sale_price()
                ] );
            }
        }
    }
}

function update_price_recursive( $product, $factor ) {
    if ( $product->is_type('variable') ) {
        foreach ( $product->get_children() as $vid ) {
            $v = wc_get_product( $vid );
            if ( $v->get_regular_price() ) $v->set_regular_price( round( $v->get_regular_price() * $factor, 2 ) );
            if ( $v->get_sale_price() )    $v->set_sale_price(    round( $v->get_sale_price()    * $factor, 2 ) );
            $v->save();
        }
    } else {
        if ( $product->get_regular_price() ) $product->set_regular_price( round( $product->get_regular_price() * $factor, 2 ) );
        if ( $product->get_sale_price() )    $product->set_sale_price(    round( $product->get_sale_price()    * $factor, 2 ) );
        $product->save();
    }
}

function restore_price( $product ) {
    $backup = get_post_meta( $product->get_id(), '_price_backup', true );
    if ( $backup ) {
        $product->set_regular_price( $backup['regular'] );
        $product->set_sale_price(    $backup['sale'] );
        $product->save();
        delete_post_meta( $product->get_id(), '_price_backup' );
    }
    if ( $product->is_type('variable') ) {
        foreach ( $product->get_children() as $vid ) {
            $b = get_post_meta( $vid, '_price_backup', true );
            if ( $b ) {
                $v = wc_get_product( $vid );
                $v->set_regular_price( $b['regular'] );
                $v->set_sale_price(    $b['sale'] );
                $v->save();
                delete_post_meta( $vid, '_price_backup' );
            }
        }
    }
}

  • Buton nou în meniu WooCommerce

  • Interfață frumoasă

  • Creștere, scădere și RESET

  • Salvează automat prețurile originale

📌 Exemplu de folosire:

  • Vrei să compensezi diferența de TVA? Scrii 2 și apeși „Crește prețurile”

  • Ai făcut reducere? Scrii -5 și apeși „Scade prețurile”

  • Vrei să revii la ce era? Apeși pe RESET

× YouTube Logo

🔔 Abonează-te la canalul nostru!

Primește cele mai noi tutoriale WordPress direct pe YouTube!

×