2016-07-28 10 views
1

Ich überschreibe Druckknopf im Lager. Voraussetzung ist jedoch, dass ein Popup mit einem Auswahlfeld als Sortierung angezeigt wird. Ergreifen Sie dann diesen Wert aus dem Benutzer- und Druckbericht basierend auf dem übergebenen Wert. Unten ist mein versuchte Code, aber es funktioniert nicht.Druck überschreiben mit Popup odoo

Überschrieben Funktion für Klick auf Druck Kommissionierliste Taste:

def do_print_picking(self, cr, uid, ids, context=None): 
    return { 
     'name':'input sort report', 
     'view_type':'form', 
     'view_mode':'form', 
     'res_model':'my.report', 
     'type':'ir.actions.act_window', 
     'target':'new', 
     'context':None, 
    } 

Es öffnet sich eine leere Seite. Wie erreicht man die unten angegebene Anforderung.

Dann möchte ich sortieren Wert aus diesem Popup und drucken Sie den Bericht durch Übergabe des Wertes. Ich bin in der Lage, den Bericht ohne Popup zu drucken. muss nur abgefangen werden, um Popup anzuzeigen und Eingaben vom Benutzer zu erhalten.

UPDATE:

Das Feld in dem Pop-up nicht in der Datenbank gespeichert ist. Nur brauchen Sie einen Wert der Sorte von Benutzer ausgewählt, um an den Bericht senden

Bitte helfen Sie mir. Danke,

+0

können Sie den Code von 'my.report' teilen? – danidee

+0

Hi danidee, das Szenario ist ich habe benutzerdefinierte Modul nur zum Drucken von Berichten erstellt. In diesem Modul habe ich eine Datei wie stock_picking.py, die die Stock-Picking-Modellfunktion (do_print_picking) überschreibt. Die zweite Datei ist das my.report-Modell, aber _auto = False, sodass keine Tabelle erstellt wird. Wenn der Benutzer jetzt auf die Schaltfläche klickt, ruft diese Funktion den Aufruf zum Anzeigen des Popup-Fensters mit der Auswahl zum Sortieren auf. Dann wählt der Benutzer die Sortierung aus. Und dann Drucke basierend auf dem Wert der Sortierung. Also im Grunde mein Bericht. habe keinen Code, nur eine Klassendeklaration mit _ auto = False. – user280960

Antwort

0

Odoo kann keine Formularansicht anzeigen, wenn es keine ID hat. Sie sollten res_id zu Ihrem Rückgabediktat hinzufügen.

zum Beispiel:

return { 
     'name':'input sort report', 
     'view_type':'form', 
     'view_mode':'form', 
     'res_model':'my.report', 
     'res_id : ids[0], 
     'type':'ir.actions.act_window', 
     'target':'new', 
     'context':None, 
    } 

Dieser Code könnte für Sie arbeiten. Wenn nicht, sollten Sie eine Methode finden, um die richtige ID zu erhalten.