Skocz do zawartości

Rekomendowane odpowiedzi

Witam serdecznie.

Zduplikowałem moduł odpowiedzialny za wybieranie przy zamówieniu czy klient chce paragon i fakturę. Chciałem go zduplikować jako osobny moduł aby dodać jeszcze opcję wyboru Wniosku NFZ. Co zrobiłem aby zduplikować moduł:

- Dodałem "2" do nazwy folderu oraz wszystkich plików które znajdują się w katalogu modułu (nie wliczając katalogów).
- Wyedytowałem odpowiednio wszystkie pliki zduplikowanego stylu np. główny plik php:

 

<?php


if (!defined('_PS_VERSION_'))
    exit;


class twParagonFaktura2 extends Module {
    
    const _PARAGON_FAKTURA2_ = 'tw_paragonfaktura2';
    
    public static $documentType2 = array();
    
    public function __construct() {
        
        $this->name = 'twparagonfaktura2';
        $this->tab = 'billing_invoicing'; //  front_office_features';  //
        $this->version = '1.0';
        $this->author = 'Tomek Witek';
        
        $this->need_instance = 0;
        $this->bootstrap = true;
        
        parent::__construct();
        
        self::$documentType = array('Yes' => $this->l('Yes'),
                                    'No' => $this->l('No')
                                    );
        
        $this->displayName = $this->l('Receipt or invoice?');
        $this->description = $this->l('The module allows you to choose the type of document confirming the purchase of goods (receipt or invoice)');
        
        $this->ps_versions_compliancy = array('min' => '1.6', 'max' => _PS_VERSION_);
        
    } // ------------------------------------------------------------------------------------------------- __construct()
    
    
    public function addOverride($classname) {
        if ( version_compare(_PS_VERSION_, '1.6.1.0', '<') ) {
            return parent::addOverride($classname);
        } else {
            return true;
        }
    } // ------------------------------------------------------------------------------------------------- addOverride()

    
    public function install() {
        reset(self::$documentType);
        
        $sql = 'CREATE TABLE IF NOT EXISTS`'._DB_PREFIX_.self::_PARAGON_FAKTURA2_.'` (
                `id_cart` int(11) NOT NULL,
                `document_type` ENUM(\''.implode("','", array_keys(self::$documentType) ).'\') NOT NULL DEFAULT \''.key(self::$documentType).'\',
                PRIMARY KEY(`id_cart`)
            ) ENGINE='._MYSQL_ENGINE_.' DEFAULT CHARSET=UTF8;';
        
        return( parent::install() &&
                $this->registerHook('displayShoppingCartFooter') &&
                $this->registerHook('displayReceiptInvoiceExtra') &&
                $this->registerHook('displayOrderDetail') &&
                $this->registerHook('displayAdminOrder') &&
                $this->registerHook('displayAdminOrderExtra') &&
                $this->registerHook('actionGetExtraMailTemplateVars') &&
                Configuration::updateValue('TW_PARAGON_FAKTURA2', key(self::$documentType)) &&
                Db::getInstance()->execute($sql)
        );
    } // ------------------------------------------------------------------------------------------------- install()
    
    
    public function removeOverride($classname) {
        if ( version_compare(_PS_VERSION_, '1.6.1.0', '<') ) {
            return parent::removeOverride($classname);
        } else {
            return true;
        }
    } // ------------------------------------------------------------------------------------------------- removeOverride()

    
    public function uninstall() {
        $sql = 'DROP TABLE IF EXISTS `'._DB_PREFIX_.self::_PARAGON_FAKTURA2_.'`;';
        
        return( parent::uninstall() &&
                $this->unregisterHook('displayShoppingCartFooter') &&
                $this->unregisterHook('displayReceiptInvoiceExtra') &&
                $this->unregisterHook('displayOrderDetail') &&
                $this->unregisterHook('displayAdminOrder') &&
                $this->unregisterHook('displayAdminOrderExtra') &&
                $this->unregisterHook('actionGetExtraMailTemplateVars') &&
                Configuration::deleteByName('TW_PARAGON_FAKTURA2') &&
                Db::getInstance()->execute($sql)
        );
    } // ------------------------------------------------------------------------------------------------- uninstall()
    
    
    public function getContent() {
        if (Tools::isSubmit('submitSaveConfiguration')) {
            Configuration::updateValue('TW_PARAGON_FAKTURA2', Tools::getValue('TW_PARAGON_FAKTURA2'));
        }
        return $this->renderConfigForm();
    } // ------------------------------------------------------------------------------------------------- getContent()
    
    
    public function renderConfigForm() {
        $fields_form = array(
            'form' => array(
                'legend' => array(
                    'title' => $this->l('Configuration'),
                    'icon' => 'icon-cogs'
                ),
                'input' => array(
                    array(
                        'type' => 'select',
                        'label' => $this->l('Default document'),
                        'name' => 'TW_PARAGON_FAKTURA2',
                        'desc' => $this->l('Set the default document confirming the purchase of goods'),
                        'options' => array(
                            'query' => $this->getDocumentTypes(),                          
                            'id' => 'id_option',
                            'name' => 'name'
                        ),
                    ),
                ),
            'submit' => array(
                'title' => $this->l('Save'),
                )
            ),
        );

        $helper = new HelperForm();
        $helper->show_toolbar = false;
        $helper->table =  $this->name;
        $lang = new Language((int)Configuration::get('PS_LANG_DEFAULT'));
        $helper->default_form_language = $lang->id;
        $helper->module = $this;
        $helper->allow_employee_form_lang = Configuration::get('PS_BO_ALLOW_EMPLOYEE_FORM_LANG') ? Configuration::get('PS_BO_ALLOW_EMPLOYEE_FORM_LANG') : 0;
        $helper->identifier = $this->identifier;
        $helper->submit_action = 'submitSaveConfiguration';
        $helper->currentIndex = $this->context->link->getAdminLink('AdminModules', false).'&configure='.$this->name.'&tab_module='.$this->tab.'&module_name='.$this->name;
        $helper->token = Tools::getAdminTokenLite('AdminModules');
        
        $helper->tpl_vars = array(
            'fields_value' => array(
                'TW_PARAGON_FAKTURA2' => Tools::getValue('TW_PARAGON_FAKTURA2', Configuration::get('TW_PARAGON_FAKTURA2')),
            ),
            'languages' => $this->context->controller->getLanguages(),
            'id_language' => $this->context->language->id
        );

        return $helper->generateForm(array($fields_form));
    } // --------------------------------------------------------------------------------------------------------- _renderConfigForm()
    
    
    public function getDocumentTypes() {
        $options = array();
        foreach( self::$documentType as $docType => $docName ) {
            $options[] = array( 'id_option' => $docType, 'name' => $docName );
        }
        return $options;
    } // --------------------------------------------------------------------------------------------------------- getDocumentTypes()
        
    
    public function getCurrentDocumentType($id_cart) {
        $sql = 'SELECT `document_type` FROM `'._DB_PREFIX_.self::_PARAGON_FAKTURA2_.'` WHERE `id_cart`='.$id_cart.';';

        $currentDocument = Db::getInstance()->getValue($sql);
        return ( array_key_exists($currentDocument, self::$documentType) ? $currentDocument : 'unknow' );
    } // --------------------------------------------------------------------------------------------------------- getCurrentDocumentType()
    
        
    public function getCurrentDocumentName($currentDocument, $unknow = 'unknow' ) {
        return ( array_key_exists($currentDocument, self::$documentType) ? self::$documentType[$currentDocument] : $unknow );
    } // --------------------------------------------------------------------------------------------------------- getCurrentDocumentName()
    
    
    public function _prepareHook() {
        
        $this->context->controller->addCSS(($this->_path).'views/css/twparagonfaktura2.css', 'all');
        $this->context->controller->addJS(($this->_path).'views/js/twparagonfaktura2.js');

        // --------------------------- dodaje rekord jezeli nie istnieje (z domyslnym typem dokumentu - klient nie wybral rodzaju dokumentu)
        // --------------------------- dla danego koszyka (id_cart) zostanie wykonane tylko JEDEN RAZ!
        $sql = 'INSERT IGNORE INTO `'._DB_PREFIX_.self::_PARAGON_FAKTURA2_.'`
                (`id_cart`, `document_type`)
                VALUES ('.$this->context->cart->id.', "'.Configuration::get('TW_PARAGON_FAKTURA2').'" )';
        Db::getInstance()->execute($sql);
        
        // --------------------------- odczytuje biezacy typ dokumentu, typ dokumentu moze byc inny niz po dodaniu rekordu
        // --------------------------- np po ponownym wejscu do koszyka - klient wczesniej zmienil typ dokumentu,
        // --------------------------- zobacz paragonfaktuta2.js, ajax2.php
        $currentDocument = $this->getCurrentDocumentType($this->context->cart->id);
        
        $this->smarty->assign(array(
            'documentType' => self::$documentType,
            'currentDocument' => $currentDocument,
            'id_cart' => $this->context->cart->id,
        ));
    } // --------------------------------------------------------------------------------------------------------- _prepareHook()
    
    
    public function hookdisplayReceiptInvoiceExtra($params) {
        $this->_prepareHook();
        return $this->display(__FILE__, 'views/templates/hook/paragonfaktura2.tpl');
    } // --------------------------------------------------------------------------------------------------------- hookdisplayReceiptInvoiceExtra()
    
    
    public function hookDisplayShoppingCartFooter($params){
        $this->_prepareHook();
        return $this->display(__FILE__, 'views/templates/hook/paragonfaktura2.tpl');
    } // --------------------------------------------------------------------------------------------------------- hookDisplayShoppingCartFooter()
    
    
    public function hookDisplayOrderDetail($params) {
        $currentDocument = $this->getCurrentDocumentType($params['order']->id_cart);
        
        if ($currentDocument == 'unknow')
            return false;
        
        $this->smarty->assign(array(
            'currentDocument' => $currentDocument,
            'currentDocumentTranslate' => $this->getCurrentDocumentName($currentDocument),
        ));
        return $this->display(__FILE__, 'views/templates/hook/order_detail2.tpl');
    } // --------------------------------------------------------------------------------------------------------- hookDisplayOrderDetail()
    
    
    public function _prepareAdminHook() {
        $currentDocument = $this->getCurrentDocumentType($this->context->cart->id);
        $this->smarty->assign(array(
            'currentDocument' => $currentDocument,
            'currentDocumentTranslate' => $this->getCurrentDocumentName($currentDocument),
        ));
    } // --------------------------------------------------------------------------------------------------------- _prepareAdminHook()
    
    
    public function hookDisplayAdminOrder($params) {
        $this->_prepareAdminHook();
        return $this->display(__FILE__, 'views/templates/admin/admin_orders2.tpl');
    } // ---------------------------------------------------------------------------------------------------------- hookDisplayAdminOrder()
    
    
    public function hookDisplayAdminOrderExtra($params) {
        $this->_prepareAdminHook();
        return $this->display(__FILE__, 'views/templates/admin/admin_orders2.tpl');
    } // ---------------------------------------------------------------------------------------------------------- hookDisplayAdminOrderExtra()
    
    
    public function hookActionGetExtraMailTemplateVars($params) {
        if ($params['template'] == 'order_conf' || $params['template'] == 'new_order') {
            $currentDocument = $this->getCurrentDocumentType($this->context->cart->id);
            $params['extra_template_vars']['{receipt_invoice}'] = $this->getCurrentDocumentName($currentDocument, '');
        }
    } // ---------------------------------------------------------------------------------------------------------- hookActionGetExtraMailTemplateVars()
        
    
    
  
}

Wszytko na pierwszy rzut oka powinno działać jednak gdy wybieram przy zamówieniu 1 pole (Paragon czy Faktura) to pod zarówno 1 jak i 2 polem na raz wyświetlają się błędy o uaktualnieniu i błędzie co skutkuje tym że 2 pole nie zmienia się po zakończeniu zamówienia (pozostaje domyslne - takie jakie jest ustawione w opcjach modułu) W bazie danych SQL tak samo widnieje tylko opcja domyślna, nie zmieniona.

Gdzie robię błąd ?

 

1.png

twparagonfaktura2.zip

Udostępnij tego posta


Odnośnik do posta
Udostępnij na innych stronach
11 godzin temu, endriu107 napisał:

Za pewne zapis odbywa się ajaxem więc musisz jeszcze zmienić nazwy id/klas w tpl i js, taka pierwsza myśl bez sprawdzania kodu.

Właśnie we wszystkich plikach pozmieniałem te klasy. Sprawdziłem jeszcze plik .js i tam pozmieniałem twparagonfaktura na twparagonfaktura2:

$(document).ready(function(){
    $('#paragonfaktura2_select').change(function(){
        
        $('.paragonfaktura2_status').removeClass('show-status');
        $('#paragonfaktura2_loader').addClass('loading-animate');
        
        var docType = $('#paragonfaktura2_select').val();
        $.ajax({
            type: "post",
            url: baseDir+'/modules/twparagonfaktura2/ajax2.php',
            dataType : 'json',
            data: { docType: docType },
            
            complete: function() {
                $('#paragonfaktura2_loader').removeClass('loading-animate');
            },
            
            success: function(response) {
                if (response.status == 'success') {
                    $('.paragonfaktura2_status.success').addClass('show-status');
                } else {
                    $('.paragonfaktura2_status.error').addClass('show-status');
                }
            }
        })
    })
});

Jednak tyle co udało się zmienić to to co widać w załączniku, czyli nie pojawia się już "Uaktualnione" ale sam "Błąd" i dalej nic się nie zmienia.

Udostępnij tego posta


Odnośnik do posta
Udostępnij na innych stronach

Jeśli chcesz dodać odpowiedź, zaloguj się

Komentowanie zawartości tej strony możliwe jest po zalogowaniu



Zaloguj się



  • Podobna zawartość

    • Przez emil.m
      Witam,
      mam problem z modułem: https://addons.prestashop.com/en/legal/8734-eu-cookie-law-complies-gdpr-banner-cookie-blocker.html
       
      Mianowicie nie mogę go załadować i zainstalować na moim sklepie. Akcja za każdym razem kończy się errorem jak w załączniku.
      Z żadnym innym modułem nie miałem problemu, ale też ten waży najwiecej bo ponad 9MB. Czy wpływ na to mogą mieć limity wielkości wysyłanych danych? (załączam screen z moimi limitami). Jeśli tak jak je zwiększyć?
      Ewentualnie czy istnieje możliwość wysłania modułu bezpośrednio na server za pomocą command line? Jeśli tak, to jak "sprawić" aby był on później widoczny w modyłach Presta - próbowałem to już zrobić, wrzuciłem do katalogu z modułami, nadałem uprawnienia jak dla reszty modułów, ale w konsoli presty nie był widoczny moduł
      Będę bardzo wdzięczny za pomoc!
       


    • Przez Delanov
      Witam. 
      Posiadam problem z walidacją formularzy (wersja prestashop 1.7). Szukałem już informacji ale w większości jest jak dodawać dodatkowe pozycje do formularza albo jak usunąć walidacje. 
      Problem polega na tym, że w plikach jest kod odpowiedzialny za walidację Validate.php a mimo to w formularzu można wpisywać cokolwiek. Zależy mi na tym żeby w polu imię i nazwisko trzeba było wpisać conajmniej 3 litery bez liczb. W polu meil trzeba podać adres email wedle standardu expample@example.pl Hasło ma się składać z minimum 8 znaków i zawierać dużą literę, znak specjalny i cyfrę. 
      Chodzi mi o podstawową walidację, która obecnie nie działa w żaden sposób. Może gdzieś omyłkowo to wyłączyłem ale nie wydaje mi się.  
      W załączniku przesyłam zdjęcie formularza.

    • Przez kingbooker
      Dzień dobry,

      czy ktoś z forumowiczów orientuje się, gdzie jest zlokalizowany plik/luz.stronazen.pl/, który wytropiłem, bo zaciemniał mi slider?
       
      Będę wdzięczny za pomoc.
       
      Z poważaniem

    • Przez webbay.pl
      Założenie gotowego sklepu internetowego Prestashop 1.7 bez prowizji i bez dodatkowych opłat. Jeśli nie wiesz jak założyć własny sklep internetowy to zleć to specjalistom. Nie musisz przechodzić przez zawiłą konfigurację sklepu i rejestrację usług. Otrzymasz gotowe i nowoczesne narzędzie do sprzedaży swoich produktów z unikalnym szablonem w niskiej cenie.  
      Usługa obejmuje:
      gotowy responsywny sklep bez dodatkowych opłat i prowizji, sklep zgodny z wymaganiami RODO (wersja 1.7.x), utrzymanie sklepu na hostingu przez 1 rok *, rejestracja własnej domeny .PL *,  podpięcie wykupionego certyfikatu SSL, wdrożenie obowiązkowej informacji cookies,  instalację i konfigurację sklepu na serwerze,  bezpłatną instalację wybranego szablonu z naszego katalogu (szablon o wartości 299 zł w cenie) *, wgranie własnego logo, wstawienie do pięciu przykładowych produktów, wdrożenie grafiki w oprogramowanie Prestashop (banery),  instalację i konfigurację szybkich płatności (Dotpay, Pay-u, Przelewy24), konfigurację dostawców, konfigurację wielu języków i walut, wstawienie danych kontaktowych, wstawianie przygotowanego regulaminu sklepu, strony "O Nas" i "Polityki Prywatności", zwiększenie prędkości wczytania strony (kompresja HTML, CSS i JavaScript), skompresowanie zdjęcia i włączenie pamięci podręcznej sklepu (przyśpieszenie sklepu), pomoc w obsłudze i pomoc techniczną przez pierwszy miesiąc, zmianę koloru szablonu, czcionki lub pozycji wyświetlanego modułu (na życzenie), orientacyjny czas wykonania (2-5 dni roboczych od czasu dostarczenia materiałów),
      Otrzymasz sklep, który jest intuicyjny i łatwy w obsłudze i poprowadzi klienta za rękę przez cały proces zamawiania. Twój nowy sklep będzie bezpieczny i szybki poprzez zastosowane zabiegi optymalizacyjne. Jeśli chcesz wykorzystać szablon innego autora to proszę go przesłać. 

      * Jeśli posiadasz wykupiony hosting, własną domenę lub szablon innego autora to cena za usługę nie ulega zmianie.  

      Chętnie podejmiemy się realizacji tego projektu. Wystawiamy faktury VAT i dajemy gwarancję rzetelnego wykonania usługi. Gwarantujemy szybką realizację i profesjonalne podejście do tematu!
      Zaufało nam wielu zadowolonych klientów. 

      Zapraszam na oficjalną stronę:
      https://webbay.pl/pl/strona-glowna/197-1438-zalozenie-sklepu-prestashop.html#/40-_hosting-nie/51-_instalacja_modulu-nie
    • Przez Damianos87
      Witam,
      Mam dosyć spory problem, mianowicie nie otrzymuje na skrzynkę administratora powiadomień o nowych zamówieniach.
      Posiadam Prestashop w wersji 1.7.3.0, zainstalowałem moduł Mail Alerts, skonfigurowałem pocztę SMTP, skrzynka jest na serwerowa.
      Do klienta docierają ładnie wszystkie informacje o zamówieniach czy zmianie statusów zamówienia natomiast do administratora już nie.
      Próbowałem już wszystkiego i zero rezultatów.
      Bardzo proszę o pomoc i jakieś rozwiązanie, ponieważ dla mnie te powiadomienia są dość istotne.
      Z góry bardzo dziękuję za każdą pomoc. :)
  • Przeglądający

    Brak zarejestrowanych użytkowników, przeglądających tę stronę.

  • Aktywni użytkownicy

    Nikt jeszcze nie otrzymał reputacji w tym tygodniu.

  • Statystyki forum

    • Tematów
      7 778
    • Postów
      37 069
×