commit-gnue
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[gnue-contrib] r278 - hotline/forms


From: reinhard
Subject: [gnue-contrib] r278 - hotline/forms
Date: Wed, 20 Jun 2007 05:12:25 -0500 (CDT)

Author: reinhard
Date: 2007-06-20 05:12:24 -0500 (Wed, 20 Jun 2007)
New Revision: 278

Modified:
   hotline/forms/hotline.gfd
Log:
Added feature to call customer/contact with ekiga.


Modified: hotline/forms/hotline.gfd
===================================================================
--- hotline/forms/hotline.gfd   2007-06-04 15:40:35 UTC (rev 277)
+++ hotline/forms/hotline.gfd   2007-06-20 10:12:24 UTC (rev 278)
@@ -85,77 +85,6 @@
     setFocus (blkAuswahl.fldKunde)
   </trigger>
 
-  <trigger name="kunde_pruefen" type="NAMED">
-    # Dieser Trigger versucht, eine Kundennummer für den aktuellen Wert des
-    # Feldes Kunde zu finden
-    import datetime
-    value     = blkAuswahl.fldKunde.get ()
-    selected  = False
-    selTicket = True
-    updGrund  = True
-
-    if value is not None:
-      # Kundennummer eingegeben?
-      dtsKunde.simpleQuery ({'hotline_nummer': value})
-      if not blkKunde.isEmpty () and dtsKunde.count () == 1:
-        selected = True
-      else:
-        # Matchcode eingegeben?
-        value += "%"
-        dtsKunde.simpleQuery ({'hotline_matchcode': value})
-        if blkKunde.isEmpty ():
-          abort ("Keine Kunden fuer '%s' gefunden." % blkAuswahl.fldKunde)
-
-        # Matchcode eindeutig?
-        if dtsKunde.count () == 1:
-          selected = True
-    else:
-      res = dtsOpenTickets.createResultSet(query = True)
-      if res.getRecordCount():
-        params = {}
-        activateDialog('selectTicket', params, True)
-        if params['prm_ticket'] is not None:
-          dtsKunde.simpleQuery({'gnue_id': params['prm_kunde']})
-          dtsTicket.simpleQuery({'gnue_id': params['prm_ticket']})
-          
-          selected  = True
-          selTicket = False
-          updGrund  = False
-
-    # Nicht eindeutiger Matchcode oder leere Eingabe
-    if not selected:
-      params = {'prm_matchcode': blkAuswahl.fldKunde.value}
-      activateDialog('selectKunde', params, True)
-      if params['prm_nummer'] is None:
-        # Leeres Resultset erzeugen, damit die Anzeige gelöscht wird
-        dtsKunde.simpleQuery ({'gnue_id': None})
-        return
-      # Auswahl aktivieren
-      dtsKunde.simpleQuery ({'hotline_nummer': params['prm_nummer']})
-
-    # Kundennummer ins Auswahlfeld setzen
-    blkAuswahl.fldKunde.set (blkKunde.fldHotlineNummer)
-
-    # Focus auf den Kontakt
-    setFocus (blkTicket.fldKontaktName)
-
-    # Gibt's für diesen Kunden offene Tickets?
-    if selTicket and blkKunde.fldOffene.value:
-      # Ja: Auswahldialog öffnen
-      params = {'prm_kunde': blkKunde.fldKundeId.value}
-      activateDialog('selectTicket', params, 1)
-      if params['prm_ticket'] is not None:
-        dtsTicket.simpleQuery({'gnue_id': params['prm_ticket']})
-        updGrund = False
-
-    blkAuswahl.fldStart.set (datetime.datetime.now ())
-
-    # FIXME: Das gehört in die Initialisierung der hotline_ticket Klasse
-    if updGrund and blkKunde.fldVertrag.get ():
-      wvgrund = blkParameter.fldWartungsvertrag.get ()
-      blkTicket.fldHotlineGrund.set (wvgrund)
-  </trigger>
-
   <trigger name="save_all" type="NAMED">
     if not blkLeistung.isPending ():
       showMessage ('Leistung ist bereits gespeichert oder nicht geaendert!?')
@@ -238,21 +167,29 @@
   <layout xmlns:s="GNUe:Layout:Sizer">
     <page name="Hotline">
       <vbox>
-        <entry name="inpMitarbeiter" label="Mitarbeiter:" block="blkAuswahl" 
field="fldMitarbeiter"/>
-        <hbox label="Kunde">
-          <vbox s:stretch="1">
-            <entry name="inpKunde"   label="Kunde:"   block="blkAuswahl" 
field="fldKunde"/>
-            <entry name="inpName1"   label="Name-1:"  block="blkKunde"   
field="fldHotlineName1"/>
-            <entry name="inpOrt"     label="Ort:"     block="blkKunde"   
field="fldHotlineOrt"/>
-            <entry name="inpTelefon" label="Telefon:" block="blkKunde"   
field="fldTelefon"/>
+        <vbox>
+          <entry name="inpMitarbeiter" label="Mitarbeiter:" block="blkAuswahl" 
field="fldMitarbeiter"/>
+        </vbox>
+        <hbox label="Kunde" block="blkKunde">
+          <vbox>
+            <hbox label="Kunde:" block="blkAuswahl">
+              <entry name="inpKunde" field="fldKunde"/>
+              <button name="btnKunde" label="Suchen" 
action="act_kunde_pruefen"/>
+            </hbox>
+            <entry name="inpName1"   label="Name-1:"  field="fldHotlineName1"/>
+            <entry name="inpOrt"     label="Ort:"     field="fldHotlineOrt"/>
+            <hbox label="Telefon:">
+              <entry name="inpTelefon" field="fldTelefon"/>
+              <button name="btnKundeAnrufen" label="Anrufen" 
action="act_kunde_anrufen" navigable="N"/>
+            </hbox>
           </vbox>
-          <button name="btnKunde" label="Suchen" s:stretch="0">
-            <trigger type="ON-ACTION" src="kunde_pruefen"/>
-          </button>
         </hbox>
         <vbox label="Kontakt">
           <entry name="inpKontakt" label="Kontakt:" block="blkTicket"  
field="fldKontaktName"/>
-          <entry name="inpKTel"    label="Telefon:" block="blkKontakt" 
field="fldKontaktTelefon"/>
+          <hbox label="Telefon:">
+            <entry name="inpKTel"    block="blkKontakt" 
field="fldKontaktTelefon"/>
+            <button name="btnKontaktAnrufen" label="Anrufen" 
action="act_kontakt_anrufen" navigable="N"/>
+          </hbox>
           <entry name="inpMail"    label="E-Mail:"  block="blkKontakt" 
field="fldKontaktEmail"/>
           <entry name="inpProdukt" label="Produkt:" block="blkTicket"  
field="fldProdukt"/>
           <entry name="inpProblem" label="Problem:" block="blkTicket"  
field="fldHotlineText"/>
@@ -282,7 +219,98 @@
     </page>
   </layout>
 
+  <action name="act_kunde_pruefen">
+    # Dieser Trigger versucht, eine Kundennummer für den aktuellen Wert des
+    # Feldes Kunde zu finden
+    import datetime
+    value     = blkAuswahl.fldKunde.get ()
+    selected  = False
+    selTicket = True
+    updGrund  = True
 
+    if value is not None:
+      # Kundennummer eingegeben?
+      dtsKunde.simpleQuery ({'hotline_nummer': value})
+      if not blkKunde.isEmpty () and dtsKunde.count () == 1:
+        selected = True
+      else:
+        # Matchcode eingegeben?
+        value += "%"
+        dtsKunde.simpleQuery ({'hotline_matchcode': value})
+        if blkKunde.isEmpty ():
+          abort ("Keine Kunden fuer '%s' gefunden." % blkAuswahl.fldKunde)
+
+        # Matchcode eindeutig?
+        if dtsKunde.count () == 1:
+          selected = True
+    else:
+      res = dtsOpenTickets.createResultSet(query = True)
+      if res.getRecordCount():
+        params = {}
+        activateDialog('selectTicket', params, True)
+        if params['prm_ticket'] is not None:
+          dtsKunde.simpleQuery({'gnue_id': params['prm_kunde']})
+          dtsTicket.simpleQuery({'gnue_id': params['prm_ticket']})
+          
+          selected  = True
+          selTicket = False
+          updGrund  = False
+
+    # Nicht eindeutiger Matchcode oder leere Eingabe
+    if not selected:
+      params = {'prm_matchcode': blkAuswahl.fldKunde.value}
+      activateDialog('selectKunde', params, True)
+      if params['prm_nummer'] is None:
+        # Leeres Resultset erzeugen, damit die Anzeige gelöscht wird
+        dtsKunde.simpleQuery ({'gnue_id': None})
+        return
+      # Auswahl aktivieren
+      dtsKunde.simpleQuery ({'hotline_nummer': params['prm_nummer']})
+
+    # Kundennummer ins Auswahlfeld setzen
+    blkAuswahl.fldKunde.set (blkKunde.fldHotlineNummer)
+
+    # Focus auf den Kontakt
+    setFocus (blkTicket.fldKontaktName)
+
+    # Gibt's für diesen Kunden offene Tickets?
+    if selTicket and blkKunde.fldOffene.value:
+      # Ja: Auswahldialog öffnen
+      params = {'prm_kunde': blkKunde.fldKundeId.value}
+      activateDialog('selectTicket', params, 1)
+      if params['prm_ticket'] is not None:
+        dtsTicket.simpleQuery({'gnue_id': params['prm_ticket']})
+        updGrund = False
+
+    blkAuswahl.fldStart.set (datetime.datetime.now ())
+
+    # FIXME: Das gehört in die Initialisierung der hotline_ticket Klasse
+    if updGrund and blkKunde.fldVertrag.get ():
+      wvgrund = blkParameter.fldWartungsvertrag.get ()
+      blkTicket.fldHotlineGrund.set (wvgrund)
+  </action>
+
+  <action name="act_kunde_anrufen">
+    import os
+    number = ''.join([c for c in blkKunde.fldTelefon.value if c in 
'0123456789'])
+    if number.startswith('00'):
+        number = number[2:]
+    elif number.startswith('0'):
+        number = '43' + number[1:]
+    os.system("ekiga -c sip:address@hidden" % number)
+  </action>
+
+  <action name="act_kontakt_anrufen">
+    import os
+    number = ''.join([c for c in blkKontakt.fldKontaktTelefon.value if c in 
'0123456789'])
+    if number.startswith('00'):
+        number = number[2:]
+    elif number.startswith('0'):
+        number = '43' + number[1:]
+    os.system("ekiga -c sip:address@hidden" % number)
+  </action>
+
+
   <!-- ================================================================= -->
   <!-- Dialog zur Auswahl eines Kunden                                   -->
   <!-- ================================================================= -->





reply via email to

[Prev in Thread] Current Thread [Next in Thread]