• Kontakt
  • O systemie
  • Strona główna
Pomoc
  • Założenia systemu
  • Praca z systemem
  • Opcje
  • Szablony
  • Moduły
  • Edytor HTML
  • E-commerce - sprzedaż online
  • Inne zagadnienia
  • Przykłady rozwiązań

E-commerce - sprzedaż online


Ogólne zasady rabatów i cen produktów w systemie Actualizer CMS:

  1. Cena produktu (wg grupy dostępu)
    Nazwa pola zawierającą cenę domyślną jest zdefiniowana w ustawieniach systemu w zmiennej (typu hasz)  "scart_fields" (prefix "scart" jest domyślny - można definiować kilka zestawów ustawień w ramach jednej instalacji) wg zasady:

    price => nazwa_pola_z_ceną
    przykład:



    Dla poszczególnych grup użytkowników można dodatkowo definiować osobne pola zawierające cenę.
    Pola definiujemy w zmiennej typu hasz "scart_price_fields" - wg zasady:

    nr_grupy_użytkowników => nazwa pola
    przykład:



    Cena produktu może zależeć również od wybranej opcji produktu


  2. Rabaty na produkt (wg grupy dostępu)
    pole w bazie produktowej zawierające wartość procentową rabatu, dla poszczególnych grup użytkowników można definiować osobne pola.

    Pole rabatu podobnie jak dla pole ceny określone jest w zmiennej systemowej scart_fields wg zasady:

    rabat  => nazwa_pola_z_ceną

    Podobnie jak dla pól określających cenę, definiuje się nazwy pól z rabatami dla poszczególnych grup użytkowników. W zmiennej scart_rabat_fields definiujemy wg zasady:

    nr_grupy_użytkowników => nazwa pola z rabatem procentowym

  3. Rabaty użytkowników
    Stały rabat procentowy na określoną grupę produktów przypisany do danego użytkownika - definiowane w opcji Narzędzia > Sprzedaż on-line > Rabaty dla użytkowników.
    Rabat taki jest stosowany jeśli jest wyższy niż np. rabat przypisany do produktu (nie jest sumowany)

    Użytkownik może mieć również zdefiniowany dodatkowy rabat procentowy na wszystkie produkty, w polu w bazie użytkowników (o nazwie zdefiniowanej w zmiennej scart_irabat_field). Rabat ten jest sumowany z innymi rabatami.

  4. Widełki ilościowe
    Cena produktu w koszyku może zależeć od ilości dodanych produktów - można to zdefiniować za pomocą dodatkowego pola w bazie produktowej zawierającego tzw widełki cenowe - na zasadzie:
    [minimalna ilość produktu w koszyku] => Cena

    Definiowanie pola w bazie zawierającego widełki cenowe:





    zasada definiowania widełek cenowych (pole typu hash):




  5. Rabaty warunkowe
    Naliczane tylko w koszyku, zależne od warunku rabatu, np:
    - ilości określonych produktów w koszyku
    - ilości produktów w koszyku posiadające określoną cechę
    - kuponu rabatowego dołączonego do koszyka
    Rabaty warunkowe mogą się sumować lub zastępować mniej korzystne rabaty w zależności od ustawienia danego rabatu.
    Rabatom warunkowym można zdefiniować priorytet - kolejność sprawdzania, okres ważności, prawa dostępu.
    Rabat może być kwotowy lub procentowy, naliczany do zamówienia, wybranych produktów w koszyku lub na koszty dostawy.

    więcej o rabatach warunkowych

  6. Kupony rabatowe
    Kupon może być jedno lub wielokrotnego użytku. W systemie definiuje się grupy kuponów o określonej nazwie (identyfikatorze) oraz ilości - system automatycznie generuje kupony w definiowanej bazie "coupons".

    Kupon w najprostszej postaci posiada wartość kwotową i tak przygotowany wystarczy do naliczenia kwotowego rabatu stałej wysokości. (wartość kuponu pomniejsza wartość towarów).

    Kupon może posiadać zerową wartość kwotową - takie ustawienie ma sens jeśli "uruchamia" on rabat warunkowy - tj w warunku zastosowania rabatu warunkowego możemy użyć formuły $this->order['coupon']['nazwa_grupy_kuponów'] jako warunku zastosowania danego rabatu.

    więcej o kuponach rabatowych

Dostępność cen z uwzględnieniem rabatów w szablonach

Moduły standardowe takie jak:
  • xbase
  • wbase
  • dbox
  • sql_query
mają w ustawieniach opcję:



Co skutkuje tym, że do pól pobieranych rekordów dodawane są pola wyliczające rzeczywistą cenę sprzedaży (bez uwzględnienia jedynie rabatów warunkowych, które zależne są od zawartości koszyka), opis pól
 
  • _discount - rabat prcentowy
  • _price_nd - cena bez rabatu
  • _price_nd_vat - cena bez rabatu + vat jeśli operujemy na cenach netto
  • _price - cena z uwzględnieniem rabatu
  • _price_vat - cena z uwzględnieniem rabatu + vat jeśli operujemy na cenach netto
Czyli w szablonie, jeśli w zmiennej  $item znajduje się zastaw pól danego produktu w zmiennej $item._price znajduje się cena z rabatem.

Waluty

W opcji Administracja > Waluty należy zdefiniować walutę lub wiele walut sprzedaży. Waluta w której następuje definiowanie cen to ta która ma kurs równy 1.0000



Dla poszczególnych wersji językowych należy zdefiniować domyślną walutę wpisując kod ISO:



Waluta wybierana jest wg priorytetów:
  • kod ISO waluty, w polu o nazwie "currency", w bazie użytkowników, zgodny z kodem ISO waluty, ustawia daną walutę jako aktywną dla danego użytkownika
  • kod kraju, w polu o nazwie "sh_country", w bazie użytkowników,  zgodny z kodem kraju zdefiniowanym dla danej waluty, ustawia daną walutę jako aktywną dla danego użytkownika
  • kod ISO waluty w aktywnej wersji językowej, ustawia daną walutę jako domyślną
Kod bieżącej waluty jest dostępny w szablonie w zmiennej {$currency}
Aby pokazać w szablonie cenę produktu w danej walucie stosujemy modyfikator "cc", przykład:

  • {$item._price|cc}  (zwraca kwotę sformatowaną, z przecinkiem jako separatorem dziesiętnym oraz znakiem waluty)
lub
  • {$item._price|cc:0:0}  (zwraca kwotę niesformatowaną, z kropką jako separatorem dziesiętnym bez znaku waluty)

modyfikator przeliczy cenę na wartość w bieżącej walucie.
aby dodać do wartości znak waluty można zastosować funkcję smarty "cc_sign"

  • {$item._price}{cc_sign}
    aby dodać znak wktywnej waluty
lub
  • {$item._price}{cc_sign c="EUR"}
    aby dodać znak waluty zdefiniowanej jako parametr "c"
Wartości w koszyku są przeliczane na aktywną walutę przez moduł xcart - dlatego kwoty z koszyka nie wymagają użycia modyfikatora "cc" aby pokazać wartość w odpowiedniej walucie.


VAT

Domyślnie cenę produktu/usługi definiuje się w systemie jako cenę brutto - w tej opcji cenę netto oraz stawkę VAT można zdefiniować w systemie jako pola dodatkowe - informacyjnie eksponowane w sklepie.

Jeśli cena bazowa produktu/usługi ma być ceną netto, do której system ma doliczyć stawkę vat, wówczas należy:
  • w ustawieniach systemu zaznaczyć (wartość 1) zmienną typu checkbox o nazwie "scart_calcVat"  - przeliczaj Vat
  • w zmiennej scart_fields określić które pole w bazie produktów zawiera stawkę vat:

Stawkę VAT w polu w bazie definiujemy numerycznie - procentowo, np: 0, 23, 8 itp
wówczas w szablonie cena brutto będzie dostępna w: {$item._price_vat}, natomist w {$item._price} będzie cena netto

Moduł sprzedaży xCart

więcej informacji o ustawieniach modułu sprzedaży

Przykłady szablonów smarty

  1. lista produktów - cena, cena przekreślona, rabat procentowy, waluta
    http://demo2.heuristic.com.pl/pl/sklep/lampy/lampy_wiszace - waluta PLN
    http://demo2.heuristic.com.pl/en/sklep/lampy/lampy_wiszace - waluta EUR (kurs 4.00)

    {if $item._price < $item._price_nd}
      <span class="cena"><del>{$item._price_nd|cc}</del></span>
      <span class="cenapromo rounded-small">{$item._price|cc}<br/>rabat: {$item._discount|round}%</span>
    {else}
      <span class="cena rounded-small">{$item._price|cc}</span>
    {/if}

  2. produkt - opcje produktu + link dodaj do koszyka z opcjami, cena wy wybranej opcji
    http://demo2.heuristic.com.pl/sklep/lampy/lampy_wiszace/prd,massive-562793310,rid,1881.html

    <form action="/koszyk" method="get">

    <input type="hidden" name="add[{$item.id.value}]" value="1" />

    {capture name=doptions}{strip}
    {section name=foo start=1 loop=4 step=1}
    {assign var="i" value=$smarty.section.foo.index}
    {assign var="of" value="dopt`$i`"}
    {assign var="lf" value="label_dopt`$i`"}
    {if $item.$of.value|@count > 0 && $item.$of.value.0.0}
    {$item.$lf.value}:<br /><select id="option{$i}" name="option{$i}[{$item.id.value}]" class="product-option-select">
    {foreach key=k item=i from=$item.$of.value}
    <option value="{$k}" title="{$i.1|cc:0:0}">{$i.0}{if $i.1 > 0} (+ {$i.1|cc}){/if}</option>
    {/foreach}
    </select>
    <br /><br />
    {/if}
    {/section}
    {/strip}{/capture}

    {if $smarty.capture.doptions != ''}
    <fieldset><legend>Opcje</legend>{$smarty.capture.doptions}</fieldset>
    {/if}

    <div class="paddcart"><input type="image" src="/{$set.sub_root_path}img/modern_bgg/btn_add_cart.gif" alt="dodaj" /></div>

    </form>

    <script type="text/javascript">
    var produktCena = {$item._price.value|cc:0:0};

    function number_format(a, b, c, d) {
     if (b == null) b = 2;
     if (c == null) c = ',';
     if (d == null) d = ' ';
     a = Math.round(a * Math.pow(10, b)) / Math.pow(10, b);
     e = a + '';
     f = e.split('.');
     if (!f[0]) {
      f[0] = '0';
     }
     if (!f[1]) {
      f[1] = '';
     }
     if (f[1].length < b) {
      g = f[1];
      for (i=f[1].length + 1; i <= b; i++) {
       g += '0';
      }
      f[1] = g;
     }
     if(d != '' && f[0].length > 3) {
      h = f[0];
      f[0] = '';
      for(j = 3; j < h.length; j+=3) {
       i = h.slice(h.length - j, h.length - j + 3);
       f[0] = d + i +  f[0] + '';
      }
      j = h.substr(0, (h.length % 3 == 0) ? 3 : (h.length % 3));
      f[0] = j + f[0];
     }
     c = (b <= 0) ? '' : c;
     return f[0] + c + f[1];
    }


    $(function() {
        $('select.product-option-select').change(function(){
            produktCalcCena = produktCena;
           
            $('select.product-option-select').each(function(){
                produktCalcCena += parseFloat(this.options[this.selectedIndex].title);
            });
            $('#pcena').html(number_format(produktCalcCena));
        });
    });
    </script>

    <div class="cena-brutto">cena brutto:{if $item._price_nd.value > $item._price.value}<del>{$item._price_nd.value|cc}</del>  {/if} <span id="pcena">{$item._price.value|cc}</span></div>



Tagi:xcart, e-commerce, xbase, wbase, sql_query, dbox, waluty, rabaty, ceny

Powered by Actualizer CMS