Witamy!

Forum dla profesjonalistów i entuzjastów systemu Odoo. Dyskusje, porady, opinie, komentarze.

0

Modyfikacja pola "Quick search" [Zamknięte]

przez
Dr.One
na 16.12.2014, 12:08 2504 odsłony

- Pytanie został zamknięty z powodu: niezwiązane z tematem lub nieaktualne

przez
Dr.One
na 19.04.2015 12:09:49

Witam serdecznie wszystkich,

Od niedawna próbuję wdrożyć OpenERP w mojej firmie, podjąłem się tego bo zauważyłem, że ten własnie system posiada bardzo dobrze rozwinięty interface, jest przy tym dość czytelny i ogromną bazę dodatków/rozszerzeń.

Oczywiście nie da się wszystkiego bezpośrednio zastosować z uwagi na specyfikę danej działalności/firmy. Dlatego staram się o ile to możliwe modyfikować istniejące moduły i tworzę własne uwzgledniając indywidualne potrzeby mojej firmy.

Poszukuję podpowiedzi jak o ile to możliwe można rozszerzyć zakres pól spośród których wyszukuję określone informacje.

Precyzyjniej mówiąc (chodzi mi szczególnie o wyszukiwanie Produktów według innych pól a nie tylko z pierwszego pola "Item".

Ponieważ moja firma zajmuje się handlem sprzętem komputerowym, postanowiłem nieco rozwinąć istniejący moduł "Product". Zbudowałem prosty moduł dodający kilka kolejnych pól do tego formularza np: prędkość procesora, wielkość obudowy i kilka innych. Problem zaczyna się gdy chciałbym wyszukać określone produkty w/g któregoś z tych parametrów z "quick search" ponieważ niestety "QS" pozwala wyszukiwać jedynie w/g pierwszego pola "Item".

Jak więc o ile to możliwe dodać np pole "wielkość lub "procesor" do wyszukiwania ?

Sprawa jakby to powiedzieć .... dość pilna :)

Pozdrawiam

Robert

Która wersja systemu Cię interesuje?

Dariusz Żbikowski
na 16.12.2014, 13:30

Co prawda już napisałem jaka wersja systemu (OpenERP 7.0 / Ubuntu), dla porządku napiszę jeszcze raz :) tylko dlatego, że znalazłem moduł komunikacyjny więc go przetestuję :)
Ponieważ dopiero zaczynam się zagłębiać w programowanie obiektowe potrzebuję trochę podpowiedzi, przykładu jak to powinno wyglądać. Potrafię dodać pola, potrafie zorganizować interface. Modyfikacja klas czy obiektów to jednak nieco wyższy poziom :)
Jeśli mogę oczekiwać bardziej szczegółowego opisu jak to zrobić, co zmienić ... będę dozgonnie wdzięczny.

Dr.One
na 18.12.2014, 09:19

Widzę, że kolega się doskonale orientuje w OpenERP :)
Też chcialbym tyle wiedzieć, dlatego pytam czytam i stawiam powoli coraz większe kroki.
Czy istnieje gdzieś całkowicie po polsku manual do OpenERP ? a przynajmniej do podstawowych funkcji (w tym obsluga magazynu) ?
Pytam bo za diabła nie potrafie w sensowny sposob przedstawić drogi od przyjęcia towaru do wrzucenia go na stan. Ponieważ jest to pierwszy tego typu system, sprawia mi troche problemów jego organizacja.
Np tworzę magazyn wejsciowy(takie jest założenie) do którego wędrują towary przyjęte/dostarczone i sub-magazyny (produkcja/sprzedaż/hurtownia). Wiem, może się to wydawać dziwne ale tak mam zorganizowany magazyn. W chwili gdy wrzucę coś do magazynu wejściowego - nazwijmy go "Przyjęcia" i próbuje zrobić przesunięcie wewnątrz magazynowe - teoretycznie wiem gdzie to ląduje ale nie potrzfię tego później znaleźć. Gdy zrobie iventory dla danej lokalizacji dopiero mogę to zobaczyć. Albo coś takiego, po wprowadzeniu na stan do magazynu głównego robie przesunięcie do innego magazynu, miałem nadzieję zobaczyć oddzielny produkt na liście z nowa lokalizacją a niczego takiego nie ma. Jakby stan pokazywany był bez względu na lokalizację.
Jak powinna wyglądać prawidłowa droga od przyjęcia do umieszczenia na magazynie ?
Takie pytania i wiele innych mi się nasuwają :) Wszystko to jednak zrzucam na brak doświadczenia w temacie magazynowania i drogi jaką powinny przejść towary przed pojawieniem sie na magazynie :):)
Tak czy siak, nie poddaje się i wgryzam ...

Dr.One
na 18.12.2014, 13:41

Choćby z powodów o których piszesz polecam wersję 8. Tam lepiej są pewne rzeczy zorganizowane i bardziej przejrzyste. Niestety podręcznika w naszym języku nie znam. PS. W wersji 7, na karcie produktu, kliknij sobie na button "więcej" i zobacz co tam masz - chyba Ci pomoże :)

Dariusz Żbikowski
na 18.12.2014, 14:42

Faktycznie, w menu "Więcej" jest coś czego wczesniej nie zauważyłem. Dziekuje za podpowiedź :)

Dr.One
na 18.12.2014, 15:31

Doszedłem do wniosku, że zdecydowanie zmienię 7.0 na 8.0. Jest faktycznie sporo rzeczy lepiej działających w odniesieniu do moich potrzeb. Dlaczego nikt mi nie podpowiedział, że mogę wyszukiwać w QS z użyciem wildcardów :) ? Okazalo się, że wiele informacji mogę wrzucić do nazwy (Name) i spokojnie wyszukiwać: nazwa % costam I to mi w sumie wystarczy chociaz TAGi bedą bardzo pomocne do bardziej szczegółowego wyszukiwania :) Jednakże jest jedna rzecz która mnie nurtuje. Mianowicie zmiana listy pól dodatkowych związana z np typem urządzenia/produktu. Szkoda, że nie moge umieścić obrazków bezpośrednio ale chodzi mo mniej więcej o cos takiego: Grupujemy produkty w/g kategorii, w związku z tym ponieważ każdy z nich ma dość specyficzne wymagania chciałbym aby w chwili wybrania kategorii zmieniały się pola dodatkowe na zakładce "Informacje" np: jeśli to jest kategoria komputer rozwija się lista pól z ta kategorią związana :) Chodzi o to, że mój dział sprzedaży potrzebuje czasem tych własnie dodatkowych informacji a nie chcę tworzyć setki pól i wypełniać wszystkie je podczas wprowadzania do bazy jednie te które wiążą się z danym typem produktu :) Czy myślisz, że takie rozwiązanie będzie trudne do zrealizowania ? Zastanawiam sie tylko jak to zrobić, można by spróbować JS i zmieniać atrybuty bloków o okreslonym id. Masz jakąś koncepcję jak cos takiego zrobić ?

Dr.One
na 19.12.2014, 13:43

Jeśli dobrze rozumiem zamysł to chyba lepiej używać do tego celu zakładki Warianty produktu. Przypisanie klasycznej kategorii (nie tagów) danemu produktowi służy raczej innym celom, głównie księgowym.

Dariusz Żbikowski
na 19.12.2014, 15:39

Być może ale w moim przypadku doskonale sie sprawdza bez kombinowania i dodatkowo daje możliwośćrozszerzonego wyszukiwania o co mi w zasadzie chodziło. Zobaczę jak sie to będzie sprawdzało. A co myślisz o dalszej części odnośnie rozwijania/wyświetlania pól z dodatkowymi informacjami zależnie od wybranej kategorii ? Mam nadzieję, że wiesz co mam na myśli.

Dr.One
na 19.12.2014, 17:02

Jest to możliwe, tylko nie wiem czy potrzebne :). Musisz zdefiniować wszystkie dodatkowe pola a potem uzależnić widok ogólny od kategorii (poprzez ukrywanie zbędnych pól). Jednak to już chyba temat na oddzielny wątek.

Admin Odoo.co.pl
na 19.12.2014, 17:23

Zasadniczo zależy to od indywidualnych potrzeb użytkownika i w moim przypadku znacznie ułatwi wprowadzanie danych do bazy :) bez potrzeby lawirowania wśród specyficznych pól odpowiednich dla produktu w danej kategorii. Po co mi na przykład 30 pól na ekranie skoro potrzebuję 5 :) w przypadku jednego produktu i zupełnie innych 5 w przypadku drugiego :)
Program który napisałem kilka lat temu służył do tej pory. Coś takiego właśnie mam w programie magazynowym zrobione. Po wprowadzeniu kategorii otwiera się formularz z odpowiednimi dla danego produktu polami. Proszę mi wierzyć, sprawdzało się i sprawdza do dziś :)
Dlatego pytam i proszę o poradę jak to zrobić, wcześniej nie pisałem obiektowo. Wogóle raczej robiłem wszystko że tak powiem "na żywioł" :) ale działało :)
Więc ??
Bardzo proszę o podpowiedz - krok pierwszy. :)

Przy okazji, mój moduł nie działa w wersji 8.0 chociaż to tylko dopisywanie pól do obiektu 'product', czy aż tak zmieniona jest wersja 8.0 w stosunku do 7.0 ?

Dr.One
na 19.12.2014, 21:35

Jak już napisałem wcześniej lepiej podzielić Twoje pytania na różne wątki. To forum ma służyć pomocą także innym. Czym krótsze wątki tym łatwiej się je inny czyta i analizuje. Szczególnie gdy dotyczą całkiem odmiennych problemów. Twoje ostatnie pytanie to chyba, co najmniej 2 nowe wątki :)

Admin Odoo.co.pl
na 19.12.2014, 21:54

0

Dariusz Żbikowski

--Dariusz Żbikowski--

1280
| 4 3 3
LODZ, Polska
--Dariusz Żbikowski--
Dariusz Żbikowski
na 18.12.2014, 10:18

Generalnie, proponuję Ci jak najszybsze przejście na wersję 8. W przypadku zarządzania magazynem i produktami ma wiele nowych lepszych rozwiązań np. warianty produktu. Po drugie upgrade z 7 do 8 w przypadku rozbudowanego magazynu może sprawić wiele kłopotów. Poniżej przykład metody name_search, którą można wstawić bezposrednio do klasy product.product (tej z rozszerzenia product_tags), powinna raczej zadziałać (choc nie sprawdziłem tego w wersji 7). Zaznaczyłem to, co dodadno w stosunku do oryginalnej metody.

    def name_search(self, cr, user, name='', args=None, operator='ilike', context=None, limit=100):
        if not args:
            args = []
        if name:
            ids = self.search(cr, user, [('default_code','=',name)]+ args, limit=limit, context=context)
            if not ids:
                ids = self.search(cr, user, [('ean13','=',name)]+ args, limit=limit, context=context)
### TU DODANO DO ORYGINALU tag_ids i wyszukiwanie go na zasadzie ilike                
                if not ids:
                    ids = self.search(cr, user, [('tag_ids','ilike',name)]+ args, limit=limit, context=context)
###               
            if not ids:
                # Do not merge the 2 next lines into one single search, SQL search performance would be abysmal
                # on a database with thousands of matching products, due to the huge merge+unique needed for the
                # OR operator (and given the fact that the 'name' lookup results come from the ir.translation table
                # Performing a quick memory merge of ids in Python will give much better performance
                ids = set()
                ids.update(self.search(cr, user, args + [('default_code',operator,name)], limit=limit, context=context))
                if not limit or len(ids) < limit:
                    # we may underrun the limit because of dupes in the results, that's fine
                    ids.update(self.search(cr, user, args + [('name',operator,name)], limit=(limit and (limit-len(ids)) or False) , context=context))
                ids = list(ids)
            if not ids:
                ptrn = re.compile('(\[(.*?)\])')
                res = ptrn.search(name)
                if res:
                    ids = self.search(cr, user, [('default_code','=', res.group(2))] + args, limit=limit, context=context)
        else:
            ids = self.search(cr, user, args, limit=limit, context=context)
        result = self.name_get(cr, user, ids, context=context)
        return result

 

  • Oflaguj

Postaram się po niedzieli zainstalować 8.0, zobaczymy co tam ciekawego, muszę tylko przygotować drugi serwer do zabawy na wszelki wypdadek żeby nie narobic sobie niepotrzebnej roboty. Odkręcanie zmian na serwerach linuksowych ...... jakoś mnie nie bawi :)

Dr.One
na 18.12.2014, 14:14

Tymczasem pomęczę jeszcze wersję 7.0 Bardzo mi przypadł do gustu ten system. Próbowałem wielu innych ale sposób dzialania, interfejs i stopien zamotania mnie zniechęciły. Testowałem OpenPRO, Apache OffBiz, OpenBravo i kilka innych ale .... ano to proste, ani czytelne a i z instalacja mialem tyle kombinowania, że sobie dałem spokój. OpenERP zrobił na mnie zdecydowanie lepsze wrażenie i dlatego zdecydowałem się go wdrożyć :) Chociaż wiele elementów wymaga zmian, sam system jako taki stanowi świetną podstawę i ma na moje oko bardzo duże możliwości.

Dr.One
na 18.12.2014, 14:23

Dokładnie z tego samego powodu, dośc już dawno, zdecydowałem się go nauczyć i wdrożyć. Moc systemu może naprawdę wielu zadowolić. Spotkałem się już z analizami porównawczymi w stosunku do SAP-a. Np tu: http://www.opentia.es/docus/OpenERP_evaluation_with_SAP_as_reference-CC2011_feridis.pdf Tutaj także ciekawe porównanie: http://erp-software.findthebest-sw.com/compare/218-246/SAP-vs-OpenERP

Dariusz Żbikowski
na 18.12.2014, 14:50

W międzyczasie zastosowałem sugerowany przez Janusza moduł dodający TAG'i do produktów. Okazuje się, że to bardzo fajne rozwiązanie które pozwala na wyszukiwanie nie tylko w/g nazwy ale w/g innych kryteriów, dodatkowo mozna wyszukiwać w/g kilku np produkt, tag1, tag2,... bardzo fajne choć początkowo lekko konfundujące :)

Dr.One
na 18.12.2014, 15:27

0
Janusz Stefaniak
na 17.12.2014, 11:17

Rozwiązaniem twojego problemu jest nadpisanie metody name_search()  w klasie product_product.

Standardowo działa ona w oparciu o nazwę produktu, kod wewnętrzny i ean13.

Ponieważ nie odpowiedziałeś na pytanie o wersję systemu zaproponuję Ci pewne moduły pasujące do wersji 7, które mogą Cię zainteresować. Nie wiem czy warto dodawać nowe pola, może to lepiej załatwiać w inny sposób, np. za pomocą tagów. Zobacz:

https://www.odoo.com/apps/modules/7.0/product_related/

oraz/lub 

https://www.odoo.com/apps/modules/7.0/product_tags/

W tym pierwszym module masz jeszcze przykład nieco innego sposobu nadpisania Quick Search.

  • Oflaguj

Przetestowałem moduł product_tags, muszę przyznać, że rozwiązanie nie jest złe. Chociaż każdorazowe wybieranie tagów przy wprowadzaniu może przyprawić o ból głowy ale raz wprowadzony produkt do bazy powiniej je już posiadać więc kolejne dostawy powinny już iść znacznie sprawniej :) Dziękuję, nie zmienia to jednak faktu, że w dalszym iągu będę chciał mój moduł rozszeżyć o możliwość wyszukiwania w/g pól :)

Dr.One
na 18.12.2014, 10:00

0
Dr.One
na 17.12.2014, 14:41

Hej witam,

Interesuje mnie wersja 7.0

 

  • Oflaguj

Bądź na bieżąco

O tym forum

Forum dla profesjonalistów i entuzjastów systemu Odoo. Dyskusje, porady, opinie, komentarze. Przeczytaj wytyczne

Narzędzia do pytań

3 obserwujący

Statystyki

Spytał/a: 16.12.2014, 12:08
Oglądano: 2504 razy
Ostatnia aktualizacja: 19.12.2014, 21:54