[gnue-contrib] r278 - hotline/forms

[email protected]
Newsgroups gmane.comp.cms.gnue.cvs
Message-ID <[email protected]>
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:%[email protected]" % 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:%[email protected]" % number)
+  </action>
+
+
   <!-- ================================================================= -->
   <!-- Dialog zur Auswahl eines Kunden                                   -->
   <!-- ================================================================= -->
lmpx.com only provides a reader for public news (NNTP) servers. It is not affiliated with the servers or forums shown here and is not responsible for the content of articles, which is written by their respective authors.