Witamy!
Forum dla profesjonalistów i entuzjastów systemu Odoo. Dyskusje, porady, opinie, komentarze.
Dodawanie elementów z innego modelu [Zamknięte]
- Pytanie został zamknięty z powodu: niezwiązane z tematem lub nieaktualne
przezPotrzebuję wyświetlić element z innego modelu, a dokładniej w modelu "stock" istnieje w nim pole o nazwie location_id (nazwa magazynu). Nie mogę dodać tego pola bo nie wiem jak dodać/za importować go do mojego modułu/widoku.
Mam nadzieję, że dobrze to określiłem ;)
Rozwiązałem niektóre z moich problemów, wciąż jednak nie mogę zrozumieć dlaczego jeśli dodaję pole do istniejącego widoku nie pokazuje mi wartości zapisanej w tym polu.
Na przyklad:
Umieściłem w widoku "stock_move_form" pole "product_qty", teoretycznie wartość w tym polu powinna pokazywać istniejącą ilość produktu, niestety nie pokazuje. DLACZEGO ?
Jeśli system dopuszcza umieszczenie pola (znajduje sie ono na liście pól dla danego widoku) powinien być w stanie tę wartość pokazać prawda ?
Jeśli dla danego widoku nie zostało zdefiniowane pole nie pozwoli go dopisać wyświetlając błąd.
Dlaczego więc w tym wypadku nie wyświetla zawartości tego pola ?
Mam nadzieję, że rozumiecie o co mi chodzi ? :)
Podpowiedzcie, gdzie tkwi błąd ?
Nie mówimy o ogólnej ilości danego produktu w magazynie/magazynach tylko w określonej lokalizacji. Zdaję sobie sprawę, że ogólna ilość może się znacząco różnić od ilości w ściśle określonym miejscu, chyba że to jedyne miejsce :) w którym się dany produkt znajduje :)
pole "product_qty" w modelu stock.move oddaje, mniej więcej, akurat przesuwaną ilość produktu, i nie ma żadnego związku z ilością w danej lokalizacji.
Usilnie staram się znaleźć jakiś sposób na pokazanie tej wartości, okazuje sie jednak, że to nie takie proste. Nawet jesli chciałbym pobierać te dane bezpośrednio z bazy ...... za chiny nie mogę ich zlokalizować. Przekopalem chyba wszystkie możliwe miejsca i ani śladu ... :(
Osobiście niezbyt rozumiem której wartości szukasz. Jeśli szukasz globalnej ilości to w szukaj w modelu product.product (w module stock). Jeśli szczegółowych danych to szukaj w modelu stock.quant.
Hej Darku, pomyślałem ... usunę zdefiniowane pole stock_id i location_id z głównego widoku produktu i w to miejsce wstawię nowe pole które będzie pokazywało aktualną lokalizację wraz z ilością .... ale tak jak sobie to umyślilem nie chciało działac. Wróciłem więc do wcześniej rozpoczętego tematu importowania danych z innego modelu. Podoba mi sie przykład który pokazałeś, działa zgodnie z oczekiwaniami (mam na myśli zliczanie ilości w lokalizacjach) czy mógłbym jeszcze prosić o lekkie skomentowanie na potwierdzenie moich przemyśleń o konstrukcji i sposobie dziania ? Co skąd i dlaczego ....
Przypuszczam, że potrzebne ci pole typu feilds.related, przeanalizuj dokumentację (nowe lub stare api) i przykłady w kodzie, np. coś w stylu (dość złożone, stare api, pochodzi z stock.py):
'location_name': fields.related('location_id', 'complete_name', type='char', string='Location Name', store={
'stock.location': (_get_location_change, ['name', 'location_id', 'active'], 20),
'stock.inventory.line': (lambda self, cr, uid, ids, c={}: ids, ['location_id'], 20),}),
lub nieco inny, drugi przykład (z tego samego pliku):
'product_id': fields.related('move_lines', 'product_id', type='many2one', relation='product.product', string='Product'),
Oczywiście pierwsze co spróbowałem to dodać tę linię do py i pole do xml'a :( niestety od razu błąd serwera. :) Naiwnie myślałem że zadziała :)
Jak napisałem, przykład dość złożony, store można ew. wywalić całkiem, jednak .... poczytaj i pokombinuj :)))
OK jak to się ma do wyciągnięcia elementu z innego modelu ? Jeszcze nie bardzo rozumiem filozofię tego API. Powoli co prawda zaczynam to łapać ale ...... powoli ;) Ale nic to ..... nie zniechęcamy się :) jedziemy dalej :)
W końcu po kilku godzinach "walk" cos jednak zaczęło mi tu działać. Jeszcze nie tak jak bym tego chciał ale zawsze .... Doszedłem jak wstawić piękne "buttony", doszedłem także jak wyświetlić element z innego modelu. Wciąż nie jest doskonale, na przykład chciałbym na buttonie ikonkę i np wartość wybranego pola (location_id) wszystko mi się rozjeżdża. Przekopałem pół internetu, znalazłem opis jak powinien wyglądać "Smart button" .... ale wciąż nie mogę uzyskać zadowalającego efektu. :(
Jeśli chodzi o dodanie samego pola z innego modelu, wystarczyło dopisać tę linę: 'code': fields.many2one('stock.location', 'Location'), Nie jest to jednak najlepsze rozwiązanie ponieważ to dodaje pole a nie jego istniejącą wartość. Jak to zrobić aby pokazywana była jedynie zapisana w tym polu informacja ? Czy trzeba dodać jakiś parametr ? W chwili uruchomienia "edycji" rozwija się pole wyboru a tego nie potrzebuję :(
Ciekawostką jest, ze pole utworzone pobiera dane z modelu stock, kiedy edytuję rekord mogę wybierać istniejące i dodawać nowe wpisy na listę ale nie wiem jeszcze jak się zachowa informacja o lokalizacji w przypadku przesunięcia między magazynami.
Kolejna sprawa to czy kiedy kliknę na lokalizację w okreslonym magazynie czy powinienem zobaczyć na liście co się tam aktualnie znajduje ?
Ponieważ nowy moduł jest nowym API postanowiłem spróbować podpiąć pole "location_id" i wrzucić do niego informację o lokalizacji i ilosci :) Jak to się pieknie zazębiło :)
Bądź na bieżąco
O tym forum
Narzędzia do pytań
Statystyki
Spytał/a: 31.01.2015, 17:39 |
Oglądano: 1255 razy |
Ostatnia aktualizacja: 24.02.2015, 10:34 |
pole "product_qty" w modelu stock.move nie ma związku z generalną ilością produktów w magazynie