Czyszczenie bazy ze zbędnych danych w magento

Pora na wyczyszczenie bazy danych magento, najlepiej zrobić to poprzez bezpośrednie zapytania sql. Czyścimy po kolei:
1. Produkty

SET FOREIGN_KEY_CHECKS = 0;
TRUNCATE TABLE `catalog_product_bundle_option`;
TRUNCATE TABLE `catalog_product_bundle_option_value`;
TRUNCATE TABLE `catalog_product_bundle_selection`;
TRUNCATE TABLE `catalog_product_entity_datetime`;
TRUNCATE TABLE `catalog_product_entity_decimal`;
TRUNCATE TABLE `catalog_product_entity_gallery`;
TRUNCATE TABLE `catalog_product_entity_int`;
TRUNCATE TABLE `catalog_product_entity_media_gallery`;
TRUNCATE TABLE `catalog_product_entity_media_gallery_value`;
TRUNCATE TABLE `catalog_product_entity_text`;
TRUNCATE TABLE `catalog_product_entity_tier_price`;
TRUNCATE TABLE `catalog_product_entity_varchar`;
TRUNCATE TABLE `catalog_product_flat_1`;
TRUNCATE TABLE `catalog_product_link`;
TRUNCATE TABLE `catalog_product_link_attribute`;
TRUNCATE TABLE `catalog_product_link_attribute_decimal`;
TRUNCATE TABLE `catalog_product_link_attribute_int`;
TRUNCATE TABLE `catalog_product_link_attribute_varchar`;
TRUNCATE TABLE `catalog_product_link_type`;
TRUNCATE TABLE `catalog_product_option`;
TRUNCATE TABLE `catalog_product_option_price`;
TRUNCATE TABLE `catalog_product_option_title`;
TRUNCATE TABLE `catalog_product_option_type_price`;
TRUNCATE TABLE `catalog_product_option_type_title`;
TRUNCATE TABLE `catalog_product_option_type_value`;
TRUNCATE TABLE `catalog_product_super_attribute_label`;
TRUNCATE TABLE `catalog_product_super_attribute_pricing`;
TRUNCATE TABLE `catalog_product_super_attribute`;
TRUNCATE TABLE `catalog_product_super_link`;
TRUNCATE TABLE `catalog_product_enabled_index`;
TRUNCATE TABLE `catalog_product_website`;
TRUNCATE TABLE `catalog_product_relation`;
TRUNCATE TABLE `catalog_category_product_index`;
TRUNCATE TABLE `catalog_category_product`;
TRUNCATE TABLE `cataloginventory_stock_item`;
TRUNCATE TABLE `cataloginventory_stock_status`;
TRUNCATE TABLE `cataloginventory_stock_status_idx`;
TRUNCATE TABLE `cataloginventory_stock`;
TRUNCATE TABLE `core_url_rewrite`;
INSERT INTO `catalog_product_link_type`(`link_type_id`,`code`) VALUES (1,'relation'),(2,'bundle'),(3,'super'),(4,'up_sell'),(5,'cross_sell');
INSERT INTO `catalog_product_link_attribute`(`product_link_attribute_id`,`link_type_id`,`product_link_attribute_code`,`data_type`) VALUES (1,2,'qty','decimal'),(2,1,'position','int'),(3,4,'position','int'),(4,5,'position','int'),(6,1,'qty','decimal'),(7,3,'position','int'),(8,3,'qty','decimal');
INSERT INTO `cataloginventory_stock`(`stock_id`,`stock_name`) VALUES (1,'Default');
TRUNCATE TABLE `catalog_product_entity`;
SET FOREIGN_KEY_CHECKS = 1;

2. Zamówienia i powiązane z nimi dane jak faktury, zamówienia itp.

SET FOREIGN_KEY_CHECKS=0;

##############################
# SALES RELATED TABLES
##############################
TRUNCATE `sales_flat_creditmemo`;
TRUNCATE `sales_flat_creditmemo_comment`;
TRUNCATE `sales_flat_creditmemo_grid`;
TRUNCATE `sales_flat_creditmemo_item`;
TRUNCATE `sales_flat_invoice`;
TRUNCATE `sales_flat_invoice_comment`;
TRUNCATE `sales_flat_invoice_grid`;
TRUNCATE `sales_flat_invoice_item`;
TRUNCATE `sales_flat_order`;
TRUNCATE `sales_flat_order_address`;
TRUNCATE `sales_flat_order_grid`;
TRUNCATE `sales_flat_order_item`;
TRUNCATE `sales_flat_order_payment`;
TRUNCATE `sales_flat_order_status_history`;
TRUNCATE `sales_flat_quote`;
TRUNCATE `sales_flat_quote_address`;
TRUNCATE `sales_flat_quote_address_item`;
TRUNCATE `sales_flat_quote_item`;
TRUNCATE `sales_flat_quote_item_option`;
TRUNCATE `sales_flat_quote_payment`;
TRUNCATE `sales_flat_quote_shipping_rate`;
TRUNCATE `sales_flat_shipment`;
TRUNCATE `sales_flat_shipment_comment`;
TRUNCATE `sales_flat_shipment_grid`;
TRUNCATE `sales_flat_shipment_item`;
TRUNCATE `sales_flat_shipment_track`;
TRUNCATE `sales_invoiced_aggregated`;
TRUNCATE `sales_invoiced_aggregated_order`;
TRUNCATE `log_quote`;

ALTER TABLE `sales_flat_creditmemo_comment` AUTO_INCREMENT=1;
ALTER TABLE `sales_flat_creditmemo_grid` AUTO_INCREMENT=1;
ALTER TABLE `sales_flat_creditmemo_item` AUTO_INCREMENT=1;
ALTER TABLE `sales_flat_invoice` AUTO_INCREMENT=1;
ALTER TABLE `sales_flat_invoice_comment` AUTO_INCREMENT=1;
ALTER TABLE `sales_flat_invoice_grid` AUTO_INCREMENT=1;
ALTER TABLE `sales_flat_invoice_item` AUTO_INCREMENT=1;
ALTER TABLE `sales_flat_order` AUTO_INCREMENT=1;
ALTER TABLE `sales_flat_order_address` AUTO_INCREMENT=1;
ALTER TABLE `sales_flat_order_grid` AUTO_INCREMENT=1;
ALTER TABLE `sales_flat_order_item` AUTO_INCREMENT=1;
ALTER TABLE `sales_flat_order_payment` AUTO_INCREMENT=1;
ALTER TABLE `sales_flat_order_status_history` AUTO_INCREMENT=1;
ALTER TABLE `sales_flat_quote` AUTO_INCREMENT=1;
ALTER TABLE `sales_flat_quote_address` AUTO_INCREMENT=1;
ALTER TABLE `sales_flat_quote_address_item` AUTO_INCREMENT=1;
ALTER TABLE `sales_flat_quote_item` AUTO_INCREMENT=1;
ALTER TABLE `sales_flat_quote_item_option` AUTO_INCREMENT=1;
ALTER TABLE `sales_flat_quote_payment` AUTO_INCREMENT=1;
ALTER TABLE `sales_flat_quote_shipping_rate` AUTO_INCREMENT=1;
ALTER TABLE `sales_flat_shipment` AUTO_INCREMENT=1;
ALTER TABLE `sales_flat_shipment_comment` AUTO_INCREMENT=1;
ALTER TABLE `sales_flat_shipment_grid` AUTO_INCREMENT=1;
ALTER TABLE `sales_flat_shipment_item` AUTO_INCREMENT=1;
ALTER TABLE `sales_flat_shipment_track` AUTO_INCREMENT=1;
ALTER TABLE `sales_invoiced_aggregated` AUTO_INCREMENT=1;
ALTER TABLE `sales_invoiced_aggregated_order` AUTO_INCREMENT=1;
ALTER TABLE `log_quote` AUTO_INCREMENT=1;

SET FOREIGN_KEY_CHECKS = 1;

3. Klientów

SET FOREIGN_KEY_CHECKS=0;
##############################
# CUSTOMER RELATED TABLES
##############################
TRUNCATE `customer_address_entity`;
TRUNCATE `customer_address_entity_datetime`;
TRUNCATE `customer_address_entity_decimal`;
TRUNCATE `customer_address_entity_int`;
TRUNCATE `customer_address_entity_text`;
TRUNCATE `customer_address_entity_varchar`;
TRUNCATE `customer_entity`;
TRUNCATE `customer_entity_datetime`;
TRUNCATE `customer_entity_decimal`;
TRUNCATE `customer_entity_int`;
TRUNCATE `customer_entity_text`;
TRUNCATE `customer_entity_varchar`;
TRUNCATE `tag`;
TRUNCATE `tag_relation`;
TRUNCATE `tag_summary`;
TRUNCATE `tag_properties`;
TRUNCATE `wishlist`;
TRUNCATE `log_customer`;

ALTER TABLE `customer_address_entity` AUTO_INCREMENT=1;
ALTER TABLE `customer_address_entity_datetime` AUTO_INCREMENT=1;
ALTER TABLE `customer_address_entity_decimal` AUTO_INCREMENT=1;
ALTER TABLE `customer_address_entity_int` AUTO_INCREMENT=1;
ALTER TABLE `customer_address_entity_text` AUTO_INCREMENT=1;
ALTER TABLE `customer_address_entity_varchar` AUTO_INCREMENT=1;
ALTER TABLE `customer_entity` AUTO_INCREMENT=1;
ALTER TABLE `customer_entity_datetime` AUTO_INCREMENT=1;
ALTER TABLE `customer_entity_decimal` AUTO_INCREMENT=1;
ALTER TABLE `customer_entity_int` AUTO_INCREMENT=1;
ALTER TABLE `customer_entity_text` AUTO_INCREMENT=1;
ALTER TABLE `customer_entity_varchar` AUTO_INCREMENT=1;
ALTER TABLE `tag` AUTO_INCREMENT=1;
ALTER TABLE `tag_relation` AUTO_INCREMENT=1;
ALTER TABLE `tag_summary` AUTO_INCREMENT=1;
ALTER TABLE `tag_properties` AUTO_INCREMENT=1;
ALTER TABLE `wishlist` AUTO_INCREMENT=1;
ALTER TABLE `log_customer` AUTO_INCREMENT=1;

SET FOREIGN_KEY_CHECKS = 1;

4. Zbędne logi

SET FOREIGN_KEY_CHECKS=0;
##############################
# ADDITIONAL LOGS
##############################
TRUNCATE `log_url`;
TRUNCATE `log_url_info`;
TRUNCATE `log_visitor`;
TRUNCATE `log_visitor_info`;
TRUNCATE `report_event`;
TRUNCATE `report_viewed_product_index`;
TRUNCATE `sendfriend_log`;
### ??? TRUNCATE `log_summary`

ALTER TABLE `log_url` AUTO_INCREMENT=1;
ALTER TABLE `log_url_info` AUTO_INCREMENT=1;
ALTER TABLE `log_visitor` AUTO_INCREMENT=1;
ALTER TABLE `log_visitor_info` AUTO_INCREMENT=1;
ALTER TABLE `report_event` AUTO_INCREMENT=1;
ALTER TABLE `report_viewed_product_index` AUTO_INCREMENT=1;
ALTER TABLE `sendfriend_log` AUTO_INCREMENT=1;

SET FOREIGN_KEY_CHECKS = 1;

Dodawanie strony cms w magento

Jeśli chcemy stworzyć jednorazowo wiele stron cms w magento wystarczy użyć kodu:

$cmsPageData = array(
    'title' => '',
    'root_template' => '',
    'meta_keywords' => '',
    'meta_description' => '',
    'identifier' => 'url',
    'content_heading' => '',
    'stores' => array(0),//id sklepu
    'content' => ''
);

Mage::getModel('cms/page')->setData($cmsPageData)->save();

Aktualizacja cen wszystkich produktów w magento

Zdarza się, że potrzebujemy zaktualizować wszystkie ceny produktów w wybranym sklepie, np. w przypadku podwyżki cen. Używając czystego magento, taka operacja na setkach produktów będzie trwać wieki, dlatego polecam skorzystać z kodu:

<?php

$priceToAdd = 10;
$storeId = 1;

$write = Mage::getSingleton('core/resource')->getConnection('core_write');
$write->query("
  UPDATE catalog_product_entity_decimal val
  SET  val.value = (val.value + $priceToAdd)
  WHERE  val.attribute_id = (
     SELECT attribute_id FROM eav_attribute eav
     WHERE eav.entity_type_id = 4 
       AND eav.attribute_code = 'price'
    )
    AND val.store_id = $storeId
");
?>

Dropshipping – plusy i minusy

Skąd przywędrował dropshipping?

Dropshipping jako bardzo ciekawy model biznesowy przywędrował do nas z zachodu i funkcjonuje w Polsce pod dwoma modelowymi postaciami. Pierwszy model de facto, polega na samej wysyłce towaru do klienta bezpośrednio z danej hurtowni krajowej lub zagranicznej. W drugim modelu hurtownia dostarcza zazwyczaj towar do sklepu i stamtąd trafia on do zainteresowanych i kupujących klientów. Jest on obecnie jednym z najciekawszych zjawisk na Allegro .

Biznes dla niewymagających

Na pewno jest to świetny pomysł na biznes na początku, dla niewymagających. Tłumacząc pojęcie dropshippingu docieramy do tego, że jest to rodzaj logistycznego modelu, który oparty jest na typowej sprzedaży przez internet, który polega na tym, że proces wysyłki towaru jest zwyczajnie przeniesiony na dostawcę. Wygląda to w ten sposób, że polski podmiot najczęściej przedsiębiorca lub mała firma uczestniczy w transakcji sprzedaży poprzez zbieranie zamówień, które kolejno realizują hurtownie (głównie zagraniczne). Jest to bardzo wygodne rozwiązanie dla Allegro, jak i wielu innych sklepów internetowych. Sklep internetowy w tego rodzaju modelu logistycznym pełni rolę tego , który zbiera zamówienia i przesyła je do dostawcy, który jest zobowiązany do wysyłki towaru do samego klienta. Dla wielu handlowców drospshipping jest bardzo wygodnym rozwiązaniem, bo nie potrzeba do niego wielkich hal magazynowych, a zarobek opiera się na tym, że sprzedawca osiąga tradycyjny zysk z różnicy, pomiędzy ceną hurtową a detaliczną, dzieje się dokładnie tak samo jak w handlu detalicznym. Należy również pamiętać o tym, że według prawa polskiego odnośnie płacenia podatków dropshipping kwalifikuje się przeważnie pod prowadzenie działalności gospodarczej, co jest związane z reguły z wykonywaniem sprzedaży w sposób ciągły, o czym nie każdy wie, czy zdaje się pamięta.

Dropshipping okno na świat i oszczędność czasu

Dropshipping jest również o tyle ciekawym rozwiązaniem w ekonomii, który nie pozwala na mrożenie kapitału, bo nie inwestuje się tutaj nigdy w towar, który zalega na magazynie. Płatności tutaj odbywają się po zapłaceniu za towar przez klienta. Dzięki transakcjom w systemie Drop shipping, zaoszczędza się wiele cennego swojego czasu, który można z powodzeniem wykorzystać przecież na coś innego(zazwyczaj wysyłkę prowadzi za Ciebie współpracująca z Tobą hurtownia polska lub ta z zagranicy, przeważnie z krajów azjatyckich)

Dropshipping wielu przedsiębiorców uważa za coś wspaniałego i otwarte okno na świat, bo pomaga rozwinąć im skrzydła, ponieważ sprawia , że sprzedawca nie musi być ograniczony sam w sobie do swojego rynku lokalnego, ale sięga zdecydowanie dalej po rynek regionalny, krajowy, a nawet globalny. Tak naprawdę to tylko od Ciebie, jeśli jesteś przedsiębiorcą, będzie zależało czy będziesz chciał np. prowadzić międzynarodową firmę ze swojego pokoju w mieszkaniu! Tak, to nie żarty , bo dropshipping kreuje nowe podejście do procesu sprzedaży i ukazuje wiele nowych obiecujących horyzontów, zwiększając przy tym niesamowicie skalę i zakres naszych osobistych działań. Wiele działań w dropshippingu o czym należy pamiętać w tym modelu logistycznym jest po prostu również zautomatyzowanych, od złożenia samego zamówienia po samą wysyłkę, wystarczy bowiem tylko, że produkty ze współpracującej hurtowni dodać do oferty swojego kanału sprzedaży, aby zarabiać na towarze, którego się nie posiada, bo klienci wcale nie muszą o tym wszystkim przecież wiedzieć.!

Zalety i minusy dropshippingu

Podsumowując dropshipping ma więcej zalet niż wad i jest świetnym rozwiązaniem dla nieco mniejszych sklepów , które nie chcą zamrażać swoich środków na zamówienia zapasów oraz pozwala na w miarę regularny przypływ gotówki. Po za tym nie trzeba się martwić o swoje magazyny. Ogranicza również wydatki na ochronę mienia jak i transport, oszczędza czas, a dla przeciętnego konsumenta wielu towarów oznacza on ogromne oszczędności w nabywaniu swoich towarów, bo dzięki niemu może kupić swoje towary o kilkadziesiąt procent taniej.

Natomiast tą ciemniejszą i negatywną stroną dropshippingu jest utrata stu procentowej pewności, że każde zamówienie uda się zrealizować w odpowiednio zagwarantowanym czasie, dzieje się tak np. gdy produkt zostanie całkowicie wyprzedany. Jednak ten problem można łatwo rozwiązać poprzez dobrą i fachową komunikację ze swoimi klientami jak i dostawcami.

Co zmieniło się w e-handlu po 25 grudnia?

Grudzień to od kilku lat czas, w którym sklepy internetowe tradycyjnie przeżywają najgorętszy okres w całym roku. Przedświąteczny zakupowy szał z galerii handlowych, supermarketów, sklepów z zabawkami i odzieżą przenosi się do Internetu. Wszyscy chcą kupować szybko, tanio i bezpiecznie. Taka sytuacja może tylko cieszyć właścicieli sklepów internetowych, jednak końcówka ubiegłego roku poza tradycyjną już zakupową gorączką, stała pod znakiem poważnych zmian w prawie, co dla e-sklepów miało wielkie znaczenie. 25 grudnia ubiegłego roku weszła bowiem w życie nowelizacja ustawy o prawach konsumenta. Co to oznacza dla branży e-commerce?

Zadbaj o informację

Wiele sklepów internetowych zaczęło wprowadzać zmiany odpowiednio wcześniej, w okolicach września i października, aby podczas zakupowego świątecznego boomu być już w pełnej gotowości i nie marnować czasu na dostosowywanie swoich witryn do wchodzącego w życie prawa. Było to posunięcie ze wszech miar słuszne, gdyż w ten sposób udało się w porę wyrobić z koniecznymi poprawkami. A tych było do wykonania naprawdę sporo. Najważniejsze zmiany jakie niesie ze sobą znowelizowana ustawa z dnia 30 maja 2014 roku o prawach konsumenta to:

zwiększenie obowiązku informacyjnego – handlujący ma obowiązek pełnego poinformowania klienta o wszystkich zasadach zawierania transakcji najpóźniej w chwili zawarcia umowy (dokonania zakupu „na odległość”). Mówiąc prościej, na stronie internetowej sklepu muszą być zamieszczone wszelkie informacje dotyczące procedury zakupu, terminu dostawy, sposobu zapłaty za zakupiony towar, możliwości odstąpienia od umowy a także formularz takiego odstąpienia. Konieczne jest także podawanie szczegółowych informacji na temat składania reklamacji za zakupione produkty lub usługi, a także pełnych danych sprzedawcy, w tym danych kontaktowych takich jak numer linii telefonicznej i adres e-mail, które posłużą klientowi do kontaktu ze sprzedawcą. Także cena produktu lub usługi powinna być podana wraz ze wszystkimi podatkami i opłatami dodatkowymi.

Już powyższy zestaw wymaganych informacji pokazuje jak ważne jest posiadanie profesjonalnego i pełnego regulaminu na swojej stronie internetowej. To właśnie w regulaminie zawarta będzie większość informacji wymaganych przez ustawodawcę.

Kolejnym obowiązkiem przedsiębiorcy jest przesłanie klientowi potwierdzenia zawarcia umowy na odległość na trwałym nośniku. Musi to nastąpić w rozsądnym czasie, czyli najpóźniej w dniu dostarczenia towaru bądź przed rozpoczęciem dostarczania usługi. Czym dla ustawodawcy jest ów trwały nośnik? Ustawa przygotowywana była w oparciu o dyrektywę unijną, która jako trwałe nośniki wymienia między innymi: papier, płytę CD/DVD, pamięć USB, a także pocztę elektroniczną. Ta ostatnia forma z pewnością będzie dla sprzedawców najwygodniejsza. Oznacza to, że potwierdzenie zawarcia umowy na odległość będziemy mogli przesłać klientowi mailem. W jakim terminie? Najpóźniej w dniu dostarczenia produktu. Warto zrobić to np. wysyłając klientom potwierdzenia zakupu/zamówienia usługi. Za niewypełnienie tego obowiązku grozi kara grzywny.

Znowelizowana ustawa wydłuża termin odstąpienia od umowy zawartej na odległość z 10 do 14 dni. To jedna z najistotniejszych zmian jakie obowiązują od 25 grudnia. Przedsiębiorca ma także obowiązek poinformowania kupującego o możliwości odstąpienia od umowy a także stworzenia i udostępnienia wzoru takiego odstąpienia. Najpóźniej 14 dni po ewentualnym odstąpieniu (liczone od otrzymania przez sprzedawcę oświadczenia) sprzedawca ma obowiązek dokonania całkowitego zwrotu środków na konto klienta, jednak jeżeli klient odesłał towar w inny sposób niż najtańszą przesyłką pocztową, sprzedawca musi zwrócić mu jedynie równowartość najtańszej formy przesyłki.

Warto podejść poważnie do obowiązku poinformowania kupującego o jego prawie odstąpienia od umowy, gdyż zaniechanie tego obowiązku może nas sporo kosztować. Klient w takim przypadku nabywa prawo do 12-miesięcznego terminu odstąpienia od umowy, bez ponoszenia kosztów zużycia danego produktu. Obowiązkiem sprzedawcy jest także poinformowanie klienta, że w przypadku odstąpienia od umowy to klient ponosi koszty zwrotu towaru. Należy to zrobić przed zawarciem umowy. Jeśli takiej informacji zabraknie – koszt zwrotu produktu pokrywa sprzedawca.

Istotne jest także poinformowanie kupującego, że transakcja obciążona jest obowiązkiem zapłaty. Można to spełnić, umieszczając na stronie konkretnego produktu przycisk o treści z przykładową treścią: „Kup produkt z obowiązkiem zapłaty”.

Jak widzimy, nowelizacja ustawy przynosi właścicielom sklepów internetowych cały szereg obowiązków do spełnienia. Niektóre z nich wiążą się z uzupełnieniem regulaminu, inne zmuszają sprzedawców do przebudowy stron internetowych. Nie należy jednak zwlekać z ich spełnieniem. Jak zwykle w biznesie, największą karą za zaniedbania, będą straty finansowe.