Strony:

waga cena netto i wymiary dodatkowe pola dla produktu?

caros

Avatar: caros

2011-05-25 14:09

Witam , jak zrobić dodatkowe pola przy opisie produktu (poprzez panel admina) waga cena netto i wymiary

» Quick.Cart v3.x

Caros

Makaron

Avatar: Makaron

2011-05-25 16:20

Jeśli te pola nie mają robić nic innego, jak po prostu wyświetlać się na stronie to wszystko można wstawić w krótki czy pełny opis..
Jeśli jednak zależy Ci, żeby fizycznie były to inne pola w bazie danych to przejrzyj ten artykuł: http://opensolution.org/Quick.Cart/forum/?p=readTopic&nr=5320
Jest tu wytłumaczony sposób dodawania pól do bazy danych (w tym przypadku akurat do bazy danych zamówień, ale robi się to analogicznie).

I helped? Like it: www.facebook.com/makwebpl

ravrav

Avatar: ravrav

2011-05-31 21:57

Ja chcę wpisywać cenę netto (lub np. wagę) w panelu admina w liście produktów, opis krótki czy pełny jest dość problematyczny.
Z tego opisu po angielsku dotyczącego dodawania produktów do bazy niestety niewiele wiem, dodatkowo dotyczy on pola-listy wyboru.
Zacząłem to "męczyć" i wygląda to w tej chwili tak:

W pliku templates/product.tpl
pod:
<td class="price">
<input type="text" name="aPrices[$aData[iProduct]]" value="$aData[mPrice]" class="inputr" size="8" />
</td>
wklejam:
<td class="price">
<input type="text" name="aPricesnetto[$aData[iProduct]]" value="$aData[mPricenetto]" class="inputr" size="8" />
</td>

następnie poniżej:
<td class="price"><a href="?p=$p&amp;sSort=price">$lang[Price] brutto</a> [$config[currency_symbol]]</td>

wklejam:
<td class="price"><a href="?p=$p&amp;sSort=price">$lang[Price] netto</a> [$config[currency_symbol]]</td>
Zmienam jeszcze w dwóch miejscach <td colspan="6"> na <td colspan="7">
Tyle w pliku templates/product.tpl. Od teraz w panelu admina mam dodatkową kolumnę z polem do wpisania ceny netto.

eby stworzyć pole Pricenetto w bazie to w pliku db/_products.def.php zmieniam:
<?php
$aFieldsNames = Array( 'iProduct' => 0, 'sName' => 1, 'sNameUrl' => 2, 'mPrice' => 3, 'iStatus' => 4, 'iPosition' => 5, 'sAvailable' => 6,

'sDescriptionShort' => 7 );
$aFieldsSort = Array( 'iPosition', 'sName', 'sNameUrl', 'iProduct', 'sAvailable', 'mPrice', 'sDescriptionShort', 'iStatus' );

function products( $aExp ){
return Array( 'iProduct' => $aExp[0], 'sName' => $aExp[1], 'sNameUrl' => $aExp[2], 'mPrice' => $aExp[3], 'iStatus' => $aExp[4], 'iPosition' => $aExp[5],

'sAvailable' => $aExp[6], 'sDescriptionShort' => $aExp[7] );
}
?>

na takie coś, czyli na końcu dodaję wszędzie Pricenetto:
<?php
$aFieldsNames = Array( 'iProduct' => 0, 'sName' => 1, 'sNameUrl' => 2, 'mPrice' => 3, 'iStatus' => 4, 'iPosition' => 5, 'sAvailable' => 6,

'sDescriptionShort' => 7, 'sPricenetto' => 8 );
$aFieldsSort = Array( 'iPosition', 'sName', 'sNameUrl', 'iProduct', 'sAvailable', 'mPrice', 'sDescriptionShort', 'iStatus', 'iPricenetto' );

function products( $aExp ){
return Array( 'iProduct' => $aExp[0], 'sName' => $aExp[1], 'sNameUrl' => $aExp[2], 'mPrice' => $aExp[3], 'iStatus' => $aExp[4], 'iPosition' => $aExp[5],

'sAvailable' => $aExp[6], 'sDescriptionShort' => $aExp[7], 'sPricenetto' => $aExp[8] );
}
?>

Dalej już nie wiem i potzrebuję pomocy, czyli jak zrobić, aby się to pięknie zapisało i wyświetlało w panelu admina, a dodatkowo w opisie produktu w sklepie?

boboo

Avatar: boboo

2011-05-31 22:18

No, daleko zaszedłeś ;-)
ale masz babole. Dlaczego mieszasz/zmieniasz sPricenetto na iPricenetto i na mPricenetto?
w .tpl, value bierze dane z pola $aData[mPricenetto], ale w definicji bazy masz sPricenetto, a w sorcie iPricenetto. W ten sposób, to oni się nie dogadają.
Jak już się zdecydujesz na jedną wartość (odradzam iPricenetto, bo będzie obcinać część ceny po przecinku, odradzam też sPricenetto, bo 's' na początku sugeruje 'string', weź albo 'f' - float, albo 'm' - mixed. Stawianie tych literek po $ bardzo ułatwie życie podczas przyglądania się zmiennym. Wtedy wiesz co w sobie mają),
to teraz przyjrzyj się w core/products-admin.php
funkcji saveProducts
i zobacz co ona robi np. z
$aForm['aPrices'][$iProduct]
i podobnie postąp z 'aPricenetto'

http://it-service.kimla.de QC- & QCMS-plugins

ravrav

Avatar: ravrav

2011-06-01 00:26

No faktycznie - pomieszałem zmienne. Już poprawiłem i mam mPricenetto, zmodyfikowałem też saveProducts dodając:
if( is_numeric( str_replace( ',', '.', $aForm['aPricesnetto'][$iProduct] ) ) )
$aForm['aPricesnetto'][$iProduct] = normalizePrice( trim( $aForm['aPricesnetto'][$iProduct] ) );
else
$aForm['aPricesnetto'][$iProduct] = trim( $aForm['aPricesnetto'][$iProduct] );

oraz parę linijek poniżej:
if( is_numeric( str_replace( ',', '.', $aForm['mPricenetto'] ) ) )
$aForm['mPricenetto'] = normalizePrice( $aForm['mPricenetto'] );

boboo

Avatar: boboo

2011-06-01 09:11

Echhh, to jeszcze napisz czy działa ;-)

http://it-service.kimla.de QC- & QCMS-plugins

ravrav

Avatar: ravrav

2011-06-01 11:53

:( No niestety coś nie działa, jak coś wpiszę w pole netto - to po kliku na "zapisz" znika, a w bazie na samym początku w pliku db/_products.def wrzuca mi całe mnóstwo znaczków $. Coś chyba jest jednak nie tak z tym zdefiniowaniem w bazie.
W tym opisie po angielsku dotyczącym dodawania pola do bazy jest napisane takie coś:
After this changes in file db/orders.php add to every single record character "$".
Tego nigdzie nie zrobiłem, jak mam dodawać do rekordów tego $?

boboo

Avatar: boboo

2011-06-01 12:26

Bo widzisz, ilość '$' w bazie (w każdej linijce!!!) musi się zgadzać z ilością pól w danym plku .def.
Jeśli się nie zgadza: rozkaszani się.
Recepta: albo ręcznie z mozołem liczyć '$' i poprawiać, albo skasować wszystkie produkty i zacząć zapełniać bazę od nowa.

http://it-service.kimla.de QC- & QCMS-plugins

ravrav

Avatar: ravrav

2011-06-01 13:33

No to będę miał trochę roboty, od nowa zapełnianie bazy odpada, będę więc dodawał te $.
Rozumiem, że ma być on na końcu każdego wiersza.

boboo

Avatar: boboo

2011-06-01 14:34

Ojojoj,
dlaczego kombinujecie nowe wynalazki na 'żywym organizmie'?
Przecież to się robi na jakiejś względnie mało zapełnionej produktami kopii aż bezbłędnie zadziała. A potem przenosi się zmiany do głównego skryptu.

http://it-service.kimla.de QC- & QCMS-plugins

Makaron

Avatar: Makaron

2011-06-01 15:14

Jeśli chodzi o dodawanie do każdego wiersza znaku $ (lub jego wielokrotności) to doskonale sprawdza się do tego aplikacja Notepad++ i funkcja Zamień. Należy włączyć opcję rozszerzonego przeszukiwania i utworzyć regułę:
Szukany tekst: \n
Zamień na: $\n

Oczywiście jeśli dodane zostało więcej pól i ma być dodanych więcej znaków $ to w drugim polu trzeba umieścić ich odpowiednio więcej.

I helped? Like it: www.facebook.com/makwebpl

ravrav

Avatar: ravrav

2011-06-01 15:38

Nic na "żywym organizmie" nie robię :) Ryzykowna zabawa.
Mam testowy sklep na lokalnym serwerze. To "dużo roboty" tyczyło się docelowych zmian na właściwej bazie, które mnie pewnie nie miną, ale dzięki radzie Makarona ujrzałem światełko w tunelu :)
Jak podziałam to dam znać co i jak.

ravrav

Avatar: ravrav

2011-06-01 19:33

Podziałałem :) W pliku core/products-admin.php zamieniłem jeszcze (poprzednio to przegapiłem):
if( $iStatus != $aData['iStatus'] ){
$aChange[$iProduct]['iStatus'] = $iStatus;
}
na taki wpis:
if( $aForm['aPricesnetto'][$iProduct] != $aData['mPricenetto'] ){
$aChange[$iProduct]['mPricenetto'] = $aForm['aPricesnetto'][$iProduct];
}

Dodałem na końcach wierszy $ i już zapisywanie poprawnie działa. Baza jest ok.

Teraz w pliku templates/pages_default.tpl poniżej wpisu:
<!-- BEGIN PRODUCTS_PRICE -->
wstawiam:
<strong>$aData[sPricenetto]</strong><span>$config[currency_symbol]</span>
Pozostaje to za pomocą css dopasować tak, aby to jakoś wyglądało na stronie.

Jeszcze jest kwestia dodania pola do wprowadzania ceny netto w oknie produktu w panelu admina.
To zrobiłem w pliku templates/admin/products.tpl

Wpis:

<input type="text" name="mPrice" value="$aData[mPrice]" class="inputr" size="10" /> $config[currency_symbol]

zastąpiłem:

<input type="text" name="mPrice" value="$aData[mPrice]" class="inputr" size="10" /> $config[currency_symbol]&nbsp;brutto
<input type="text" name="mPricenetto" value="$aData[mPricenetto]" class="inputr" size="10" /> $config[currency_symbol]&nbsp;netto

Teraz w końcu działa wpisanie ceny i wyświetlanie jej w opisie. Tutaj trzeba niestety to ręcznie wyliczać i wpisywać, a jak wyliczyć wartość mPricenetto, aby samo wyliczyło z wpisanej wartości mPrice i wrzuciło na stronę. Gdzie można robić takie działania?

boboo

Avatar: boboo

2011-06-01 21:25

Wrzuć w config/lang_xx.php
$config['fVAT']=0.23;
W funkcjach masz dostęp do tego przez:
$GLOBALS['config']['fVAT']
A z ceny brutto cenę netto obliczasz:
netto=brutto/(1+$GLOBALS['config']['fVAT'])
Tę wyliczankę wkładasz (po podstawieniu odpowiednich $aData['mPricenetto'] i ['mPrice']) w funkcje, które to wyświetlają (listProducts..., throwProduct)
Wtedy w ogóle nie potrzebujesz dodatkowego pola w bazie na takie coś. To się wylicza samo 'onTheFly'.

http://it-service.kimla.de QC- & QCMS-plugins

ravrav

Avatar: ravrav

2011-06-02 14:05

Jedynie z config/lang_pl.php dałem radę, dalszy opis i wykonanie stwarza mi już problem... Gdzie w funkcjach?

niwciu

Avatar: niwciu

2011-08-12 18:48

No to teraz chyba admini mnie wywalą :/ Nie zrobiłem tego celowo co jest powyżej

caros

Avatar: caros

2011-08-16 14:36

NIWCIU wez to popraw bo nic z tego nie zrozumialem :)

Makaron

Avatar: Makaron

2011-08-16 16:06

Usunąć ten topic i dodasz go jeszcze raz? Napisz pod spodem, wtedy usunę ten problematyczny.

I helped? Like it: www.facebook.com/makwebpl

niwciu

Avatar: niwciu

2011-08-17 17:57

Makaron usuń tylko mój wpis jeśli masz taką możliwość. Jeśli natomiast chcesz usunąć cały temat... mhm... może komuś się to jeszcze kiedyś przyda... ?

Jeśli usuniesz mój wpis opiszę swój problem raz jeszcze opiszę co i jak zrobiłem (być może komuś innemu też się to przyda) i poproszę o pomoc raz jeszcze :) (tyle że tym razem postaram się do tego bardziej przyłożyć)

Jeśli musisz usunąć cały temat... założę go na nowo jak sugerowałeś.

Makaron

Avatar: Makaron

2011-08-18 16:23

Nie mówiłem wcale o usunięciu całego tematu, cały czas była mowa o konkretnym poście. Staraj się nie używać tekstów przeklejonych z jakiś stron, bo podejrzewam, że były to doklejone kody jakiegoś edytora html.

I helped? Like it: www.facebook.com/makwebpl

Strony:
Do góry
o nas | kontakt