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 --> <!-- ================================================================= --> _______________________________________________ commit-gnue mailing list commit-gnue@gnu.org http://lists.gnu.org/mailman/listinfo/commit-gnue