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.