[Top][All Lists]
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[gnue-contrib] r285 - in address: forms schema
From: |
johannes |
Subject: |
[gnue-contrib] r285 - in address: forms schema |
Date: |
Tue, 29 Jul 2008 03:44:28 -0500 (CDT) |
Author: johannes
Date: 2008-07-29 03:44:27 -0500 (Tue, 29 Jul 2008)
New Revision: 285
Modified:
address/forms/address.gfd
address/schema/schema.gsd
Log:
Neue Flags aufgenommen
Datenexport nur noch f?\195?\188r aktuellen Filter
Modified: address/forms/address.gfd
===================================================================
--- address/forms/address.gfd 2007-11-08 08:09:34 UTC (rev 284)
+++ address/forms/address.gfd 2008-07-29 08:44:27 UTC (rev 285)
@@ -1,782 +1,868 @@
<?xml version="1.0" encoding="UTF-8"?>
<form title="Studiokonzept Adressdatenbank">
- <options>
- <author>BYTEWISE Software GmbH</author>
- <version>$Rev$</version>
- <description>Adressenverwaltung</description>
- </options>
+ <options>
+ <author>BYTEWISE Software GmbH</author>
+ <version>$Rev$</version>
+ <description>Adressenverwaltung</description>
+ </options>
- <datasource name="dts_company" connection="address" table="company">
- <sortorder>
- <sortfield name="name1" descending="N" ignorecase="Y"/>
- </sortorder>
- </datasource>
+ <datasource name="dts_company" connection="address" table="company">
+ <sortorder>
+ <sortfield name="name1" descending="N" ignorecase="Y"/>
+ </sortorder>
+ </datasource>
- <datasource name="dts_contact" connection="address" table="contact"
master="dts_company" masterlink="id" detaillink="company">
- <sortorder>
- <sortfield name="surname" descending="N" ignorecase="Y"/>
- </sortorder>
- </datasource>
+ <datasource name="dts_contact" connection="address" table="contact"
master="dts_company" masterlink="id" detaillink="company">
+ <sortorder>
+ <sortfield name="surname" descending="N" ignorecase="Y"/>
+ </sortorder>
+ </datasource>
- <datasource name="dts_category" connection="address" table="category"
prequery="Y">
- <sortorder>
- <sortfield name="text" descending="N" ignorecase="Y"/>
- </sortorder>
- </datasource>
+ <datasource name="dts_category" connection="address" table="category"
prequery="Y">
+ <sortorder>
+ <sortfield name="text" descending="N" ignorecase="Y"/>
+ </sortorder>
+ </datasource>
- <datasource name="dts_salutation" connection="address" table="salutation"
prequery="Y">
- <sortorder>
- <sortfield name="text" descending="N" ignorecase="Y"/>
- </sortorder>
- </datasource>
+ <datasource name="dts_salutation" connection="address" table="salutation"
prequery="Y">
+ <sortorder>
+ <sortfield name="text" descending="N" ignorecase="Y"/>
+ </sortorder>
+ </datasource>
- <datasource name="dts_company_quick" connection="address" table="company"
prequery="Y">
- <sortorder>
- <sortfield name="matchcode" descending="N" ignorecase="Y"/>
- </sortorder>
- <condition>
- <eq><cfield name="quicksearch"/><cconst value="1"/></eq>
- </condition>
- </datasource>
+ <datasource name="dts_company_quick" connection="address" table="company"
prequery="Y">
+ <sortorder>
+ <sortfield name="matchcode" descending="N" ignorecase="Y"/>
+ </sortorder>
+ <condition>
+ <eq><cfield name="quicksearch"/><cconst value="1"/></eq>
+ </condition>
+ </datasource>
- <datasource name="dts_csv" connection="address" table="contact left outer
join company on contact.company = company.id" primarykey="contact.id">
- <sortorder>
- <sortfield name="company.name1" ignorecase="Y"/>
- <sortfield name="contact.surname" ignorecase="Y"/>
- </sortorder>
- </datasource>
+ <datasource name="dts_csv" connection="address" table="contact left outer
join company on contact.company = company.id" primarykey="contact.id">
+ <sortorder>
+ <sortfield name="company.name1" ignorecase="Y"/>
+ <sortfield name="contact.surname" ignorecase="Y"/>
+ </sortorder>
+ </datasource>
- <!-- ==================================================================== -->
+ <!-- ==================================================================== -->
- <logic>
- <block name="blk_company" datasource="dts_company" startup="full">
- <field name="id" field="id" datatype="number"
length="8"/>
- <field name="eMatchcode" field="matchcode" datatype="text"
length="25" case="upper"/>
- <field name="eName1" field="name1" datatype="text"
length="64"/>
- <field name="eName2" field="name2" datatype="text"
length="64"/>
- <field name="eCountry" field="country" datatype="text"
length="4"/>
- <field name="eStreet" field="street" datatype="text"
length="64"/>
- <field name="eCity" field="city" datatype="text"
length="32"/>
- <field name="eZIP" field="zip" datatype="text"
length="12"/>
- <field name="eVAT" field="vatid" datatype="text"
length="16"/>
- <field name="eCRG" field="compreg" datatype="text"
length="32"/>
- <field name="ePhone" field="phone" datatype="text"
length="64">
- <trigger type="POST-CHANGE">
- if blk_company.ePhone.value is not None:
- blk_company.ePhonex.value = ''.join([c for c in
blk_company.ePhone.value if c in '0123456789'])
- else:
- blk_company.ePhonex.value = None
- </trigger>
- </field>
- <field name="ePhonex" field="phonex" datatype="text"
length="32"/>
- <field name="eFax" field="fax" datatype="text"
length="32"/>
- <field name="eWeb" field="web" datatype="text"
length="64"/>
- <field name="eMail" field="email" datatype="text"
length="64"/>
- <field name="eCustomer" field="customer" datatype="text"
length="25"/>
- <field name="eBWCustomer" field="bwcustomer" datatype="text"
length="16"/>
- <field name="eBWSupplier" field="bwsupplier" datatype="text"
length="16"/>
- <field name="eShipment" field="shipment" datatype="text"
length="64"/>
- <field name="eCategory" field="category" datatype="text"
length="32" fk_key="id" fk_description="text" fk_source="dts_category"/>
- <field name="eMemoAvailable" datatype="boolean"
editable="N"/>
- <field name="eMemo" field="memo" datatype="text"/>
- <field name="eQuicksearch" field="quicksearch" datatype="boolean"/>
- <field name="eFilter1" field="filter1" datatype="boolean"/>
- <field name="eFilter2" field="filter2" datatype="boolean"/>
- <field name="eFilter3" field="filter3" datatype="boolean"/>
- <field name="contact_count" datatype="number"
length="4" editable="N"/>
+ <logic>
+ <block name="blk_company" datasource="dts_company" startup="full">
+ <field name="id" field="id" datatype="number"
length="8"/>
+ <field name="eMatchcode" field="matchcode" datatype="text"
length="25" case="upper"/>
+ <field name="eName1" field="name1" datatype="text"
length="64"/>
+ <field name="eName2" field="name2" datatype="text"
length="64"/>
+ <field name="eCountry" field="country" datatype="text"
length="4"/>
+ <field name="eStreet" field="street" datatype="text"
length="64"/>
+ <field name="eCity" field="city" datatype="text"
length="32"/>
+ <field name="eZIP" field="zip" datatype="text"
length="12"/>
+ <field name="eVAT" field="vatid" datatype="text"
length="16"/>
+ <field name="eCRG" field="compreg" datatype="text"
length="32"/>
+ <field name="ePhone" field="phone" datatype="text"
length="64">
+ <trigger type="POST-CHANGE">
+ if blk_company.ePhone.value is not None:
+ blk_company.ePhonex.value = ''.join([c for c in
blk_company.ePhone.value if c in '0123456789'])
+ else:
+ blk_company.ePhonex.value = None
+ </trigger>
+ </field>
+ <field name="ePhonex" field="phonex" datatype="text"
length="32"/>
+ <field name="eFax" field="fax" datatype="text"
length="32"/>
+ <field name="eWeb" field="web" datatype="text"
length="64"/>
+ <field name="eMail" field="email" datatype="text"
length="64"/>
+ <field name="eCustomer" field="customer" datatype="text"
length="25"/>
+ <field name="eBWCustomer" field="bwcustomer" datatype="text"
length="16"/>
+ <field name="eBWSupplier" field="bwsupplier" datatype="text"
length="16"/>
+ <field name="eShipment" field="shipment" datatype="text"
length="64"/>
+ <field name="eCategory" field="category" datatype="text"
length="32" fk_key="id" fk_description="text" fk_source="dts_category"/>
+ <field name="eMemoAvailable" datatype="boolean"
editable="N"/>
+ <field name="eMemo" field="memo" datatype="text"/>
+ <field name="eQuicksearch" field="quicksearch" datatype="boolean"/>
+ <field name="eFilter1" field="filter1" datatype="boolean"/>
+ <field name="eFilter2" field="filter2" datatype="boolean"/>
+ <field name="eFilter3" field="filter3" datatype="boolean"/>
+ <field name="contact_count" datatype="number"
length="4" editable="N"/>
- <trigger type="ON-RECORDLOADED">
- blk_company.eMemoAvailable.value = (blk_company.eMemo.value is not
None and len(blk_company.eMemo.value.strip()) > 0)
- </trigger>
+ <trigger type="ON-RECORDLOADED">
+ blk_company.eMemoAvailable.value = (blk_company.eMemo.value is not None
and len(blk_company.eMemo.value.strip()) > 0)
+ </trigger>
- <trigger type="POST-FOCUSIN">
- blk_company.contact_count.value = blk_contact.get_record_count()
- </trigger>
+ <trigger type="POST-FOCUSIN">
+ blk_company.contact_count.value = blk_contact.get_record_count()
+ </trigger>
- <trigger type="PRE-DELETE">
- # TODO: This should be solved using the already existing blocks
- backend = globals().get('address')
- if backend is not None:
- cid = blk_company.id.value
- cmd = 'DELETE FROM contact WHERE company=%d' % cid
- backend.sql(cmd);
- </trigger>
- </block>
+ <trigger type="PRE-DELETE">
+ # TODO: This should be solved using the already existing blocks
+ backend = globals().get('address')
+ if backend is not None:
+ cid = blk_company.id.value
+ cmd = 'DELETE FROM contact WHERE company=%d' % cid
+ backend.sql(cmd);
+ </trigger>
+ </block>
- <block name="blk_contact" datasource="dts_contact">
- <field name="id" field="id" datatype="number"
length="8"/>
- <field name="eSalutation" field="salutation" datatype="text" length="16"
fk_key="id" fk_description="text" fk_source="dts_salutation"/>
- <field name="eTitle" field="title" datatype="text"
length="32"/>
- <field name="eFirstname" field="firstname" datatype="text"
length="32"/>
- <field name="eSurname" field="surname" datatype="text"
length="32"/>
- <field name="eDepartment" field="department" datatype="text"
length="32"/>
- <field name="eDuty" field="duty" datatype="text"
length="40"/>
- <field name="ePhone1" field="phone1" datatype="text" length="40">
- <trigger type="POST-CHANGE">
- if blk_contact.ePhone1.value is not None:
- blk_contact.ePhone1x.value = ''.join([c for c in
blk_contact.ePhone1.value if c in '0123456789'])
- else:
- blk_contact.ePhone1x.value = None
- </trigger>
- </field>
- <field name="ePhone2" field="phone2" datatype="text" length="40">
- <trigger type="POST-CHANGE">
- if blk_contact.ePhone2.value is not None:
- blk_contact.ePhone2x.value = ''.join([c for c in
blk_contact.ePhone2.value if c in '0123456789'])
- else:
- blk_contact.ePhone2x.value = None
- </trigger>
- </field>
- <field name="ePhone1x" field="phone1x" datatype="text"
length="32"/>
- <field name="ePhone2x" field="phone2x" datatype="text"
length="32"/>
- <field name="eFax" field="fax" datatype="text"
length="40"/>
- <field name="eMail" field="email" datatype="text"
length="64"/>
- <field name="eMemo" field="memo" datatype="text"/>
- <field name="eMemoAvailable" datatype="boolean"
editable="N"/>
- <field name="eFilter1" field="filter1" datatype="boolean"/>
- <field name="eFilter2" field="filter2" datatype="boolean"/>
- <field name="eFilter3" field="filter3" datatype="boolean"/>
+ <block name="blk_contact" datasource="dts_contact">
+ <field name="id" field="id" datatype="number"
length="8"/>
+ <field name="eSalutation" field="salutation" datatype="text" length="16"
fk_key="id" fk_description="text" fk_source="dts_salutation"/>
+ <field name="eTitle" field="title" datatype="text" length="32"/>
+ <field name="eFirstname" field="firstname" datatype="text" length="32"/>
+ <field name="eSurname" field="surname" datatype="text" length="32"/>
+ <field name="eDepartment" field="department" datatype="text" length="32"/>
+ <field name="eDuty" field="duty" datatype="text" length="40"/>
+ <field name="ePhone1" field="phone1" datatype="text" length="40">
+ <trigger type="POST-CHANGE">
+ if blk_contact.ePhone1.value is not None:
+ blk_contact.ePhone1x.value = ''.join([c for c in
blk_contact.ePhone1.value if c in '0123456789'])
+ else:
+ blk_contact.ePhone1x.value = None
+ </trigger>
+ </field>
+ <field name="ePhone2" field="phone2" datatype="text" length="40">
+ <trigger type="POST-CHANGE">
+ if blk_contact.ePhone2.value is not None:
+ blk_contact.ePhone2x.value = ''.join([c for c in
blk_contact.ePhone2.value if c in '0123456789'])
+ else:
+ blk_contact.ePhone2x.value = None
+ </trigger>
+ </field>
+ <field name="ePhone1x" field="phone1x" datatype="text" length="32"/>
+ <field name="ePhone2x" field="phone2x" datatype="text" length="32"/>
+ <field name="eFax" field="fax" datatype="text" length="40"/>
+ <field name="eMail" field="email" datatype="text" length="64"/>
+ <field name="eMemo" field="memo" datatype="text"/>
+ <field name="eMemoAvailable" datatype="boolean"
editable="N"/>
+ <field name="eFilter1" field="filter1" datatype="boolean"/>
+ <field name="eFilter2" field="filter2" datatype="boolean"/>
+ <field name="eFilter3" field="filter3" datatype="boolean"/>
- <trigger type="ON-RECORDLOADED">
- blk_contact.eMemoAvailable.value = (blk_contact.eMemo.value is not
None and len(blk_contact.eMemo.value.strip()) > 0)
- </trigger>
+ <field name="eCorp_film" field="corp_film" datatype="boolean" />
+ <field name="eEvent" field="event" datatype="boolean" />
+ <field name="eWerbung" field="werbung" datatype="boolean" />
+ <field name="ePproduct" field="pproduct" datatype="boolean" />
+ <field name="eAdaptionen" field="adaptionen" datatype="boolean" />
+ <field name="eVermietung" field="vermietung" datatype="boolean" />
+ <field name="eTV" field="tv" datatype="boolean" />
+ <field name="eReserve" field="reserve" datatype="boolean" />
- <trigger type="POST-FOCUSIN">
- blk_company.contact_count.value = blk_contact.get_record_count()
- </trigger>
- </block>
+ <trigger type="ON-RECORDLOADED">
+ blk_contact.eMemoAvailable.value = (blk_contact.eMemo.value is not None
and len(blk_contact.eMemo.value.strip()) > 0)
+ </trigger>
- <block name="blk">
- <field name="company" datatype="text" length="16" required="Y"
- fk_key="id" fk_description="matchcode" fk_source="dts_company_quick">
- <trigger type="POST-CHANGE">
- if blk.company.value is not None:
- blk_company.search_record(id=int(blk.company.get()))
- blk_company.contact_count.value = blk_contact.get_record_count()
- </trigger>
- <trigger type="POST-FOCUSOUT">
- # Reset value so the cursor disappears.
- blk.company.value = None
- </trigger>
- </field>
- </block>
+ <trigger type="POST-FOCUSIN">
+ blk_company.contact_count.value = blk_contact.get_record_count()
+ </trigger>
+ </block>
- <block name="blk_csv" datasource="dts_csv">
- <field name="FA/Firma1" field="company.name1"/>
- <field name="FA/Firma2" field="company.name2"/>
- <field name="FA/Straße" field="company.street"/>
- <field name="FA/PLZ" field="company.zip"/>
- <field name="FA/Ort" field="company.city"/>
- <field name="FA/Telefon" field="company.phone"/>
- <field name="FA/Kategorie" field="company.category"/>
- <field name="FA/Filter1" field="company.filter1"/>
- <field name="FA/Filter2" field="company.filter2"/>
- <field name="FA/Filter3" field="company.filter3"/>
- <field name="ASP/Anrede" field="contact.salutation" fk_key="id"
fk_description="text" fk_source="dts_salutation"/>
- <field name="ASP/Titel" field="contact.title"/>
- <field name="ASP/Vorname" field="contact.firstname"/>
- <field name="ASP/Nachname" field="contact.surname"/>
- <field name="ASP/Abteilung" field="contact.department"/>
- <field name="ASP/Funktion" field="contact.duty"/>
- <field name="ASP/Telefon" field="contact.phone1"/>
- <field name="ASP/Mobil" field="contact.phone2"/>
- <field name="ASP/Filter1" field="contact.filter1"/>
- <field name="ASP/Filter2" field="contact.filter2"/>
- <field name="ASP/Filter3" field="contact.filter3"/>
- </block>
- </logic>
+ <block name="blk">
+ <field name="company" datatype="text" length="16" required="Y"
+ fk_key="id" fk_description="matchcode" fk_source="dts_company_quick">
+ <trigger type="POST-CHANGE">
+ if blk.company.value is not None:
+ blk_company.search_record(id=int(blk.company.get()))
+ blk_company.contact_count.value = blk_contact.get_record_count()
+ </trigger>
+ <trigger type="POST-FOCUSOUT">
+ # Reset value so the cursor disappears.
+ blk.company.value = None
+ </trigger>
+ </field>
+ </block>
- <!-- ==================================================================== -->
+ <block name="blk_csv" datasource="dts_csv">
+ <field name="FID" field="company.id" />
+ <field name="FA/Firma1" field="company.name1"/>
+ <field name="FA/Firma2" field="company.name2"/>
+ <field name="FA/Straße" field="company.street"/>
+ <field name="FA/PLZ" field="company.zip"/>
+ <field name="FA/Ort" field="company.city"/>
+ <field name="FA/Telefon" field="company.phone"/>
+ <field name="FA/Kategorie" field="company.category"/>
+ <field name="FA/Filter1" field="company.filter1"/>
+ <field name="FA/Filter2" field="company.filter2"/>
+ <field name="FA/Filter3" field="company.filter3"/>
+ <field name="ASP/Anrede" field="contact.salutation" fk_key="id"
fk_description="text" fk_source="dts_salutation"/>
+ <field name="ASP/Titel" field="contact.title"/>
+ <field name="ASP/Vorname" field="contact.firstname"/>
+ <field name="ASP/Nachname" field="contact.surname"/>
+ <field name="ASP/Abteilung" field="contact.department"/>
+ <field name="ASP/Funktion" field="contact.duty"/>
+ <field name="ASP/Telefon" field="contact.phone1"/>
+ <field name="ASP/Mobil" field="contact.phone2"/>
+ <field name="ASP/EMail" field="contact.email"/>
+ <field name="ASP/Filter1" field="contact.filter1"/>
+ <field name="ASP/Filter2" field="contact.filter2"/>
+ <field name="ASP/Filter3" field="contact.filter3"/>
+ </block>
+ </logic>
- <layout tabbed="none">
- <page name="pg">
- <hbox>
- <vbox>
- <hbox block="blk_company" label="Firmen">
- <vbox>
- <hbox label="Match:">
- <entry field="eMatchcode"/>
- <button action="act_search_company" label="Suche"/>
- </hbox>
- <entry field="eName1" label="Firma-1:"/>
- <entry field="eName2" label="Firma-2:"/>
- <entry field="eStreet" label="Straße:"/>
- <entry field="eZIP" label="PLZ:"/>
- <entry field="eCity" label="Ort:"/>
- <entry field="eCountry" label="Land:"/>
- <entry field="eVAT" label="UID:"/>
- <entry field="eCRG" label="FNr:"/>
- <entry field="eQuicksearch" label="Schnellaufruf"/>
- <hbox label="Memo:">
- <entry field="eMemoAvailable" label="verfügbar"/>
- <button action="act_memo_company" label="Bearbeiten"/>
- </hbox>
- </vbox>
+ <!-- ==================================================================== -->
- <vbox>
- <entry field="ePhone" label="Tel.allg.:"/>
- <entry field="eFax" label="Fax allg.:"/>
- <entry field="eWeb" label="Internet:"/>
- <entry field="eMail" label="E-Mail:"/>
- <entry field="eCustomer" label="unsere KdNr:"/>
- <entry field="eBWCustomer" label="BW KdNr:"/>
- <entry field="eBWSupplier" label="BW LiNr:"/>
- <entry field="eShipment" label="Versandart:"/>
- <entry field="eCategory" label="Kategorie:"/>
- <entry field="eFilter1" label="Filter-1"/>
- <entry field="eFilter2" label="Filter-2"/>
- <entry field="eFilter3" label="Filter-3"/>
- </vbox>
- </hbox>
+ <layout tabbed="none">
+ <page name="pg">
+ <hbox>
+ <vbox>
+ <hbox block="blk_company" label="Firmen">
+ <vbox>
+ <hbox label="Match:">
+ <entry field="eMatchcode"/>
+ <button action="act_search_company" label="Suche"/>
+ </hbox>
+ <entry field="eName1" label="Firma-1:"/>
+ <entry field="eName2" label="Firma-2:"/>
+ <entry field="eStreet" label="Straße:"/>
+ <entry field="eZIP" label="PLZ:"/>
+ <entry field="eCity" label="Ort:"/>
+ <entry field="eCountry" label="Land:"/>
+ <entry field="eVAT" label="UID:"/>
+ <entry field="eCRG" label="FNr:"/>
+ <button action="to_clipboard" label="In Zwischenablage kopieren"/>
+ <entry field="eQuicksearch" label="Schnellaufruf"/>
+ <hbox label="Memo:">
+ <entry field="eMemoAvailable" label="verfügbar"/>
+ <button action="act_memo_company" label="Bearbeiten"/>
+ </hbox>
+ </vbox>
- <vbox block="blk_contact" label="Ansprechpersonen">
- <hbox>
- <vbox>
- <hbox label="Anrede:">
- <entry field="eSalutation"/>
- <button action="act_search_contact" label="Suche"/>
- </hbox>
- <entry field="eTitle" label="Titel:"/>
- <entry field="eFirstname" label="Vorname:"/>
- <entry field="eSurname" label="Nachname:"/>
- <entry field="eDepartment" label="Abteilung:"/>
- <entry field="eDuty" label="Funktion:"/>
- <hbox label="Memo:">
- <entry field="eMemoAvailable" label="verfügbar"/>
- <button action="act_memo_contact" label="Bearbeiten"/>
- </hbox>
- </vbox>
+ <vbox>
+ <entry field="ePhone" label="Tel.allg.:"/>
+ <entry field="eFax" label="Fax allg.:"/>
+ <entry field="eWeb" label="Internet:"/>
+ <entry field="eMail" label="E-Mail:"/>
+ <entry field="eCustomer" label="unsere KdNr:"/>
+ <entry field="eBWCustomer" label="BW KdNr:"/>
+ <entry field="eBWSupplier" label="BW LiNr:"/>
+ <entry field="eShipment" label="Versandart:"/>
+ <entry field="eCategory" label="Kategorie:"/>
+ <entry field="eFilter1" label="SKMT Kunde"/>
+ <entry field="eFilter2" label="DMG Kunde"/>
+ <entry field="eFilter3" label="DMG Interessent"/>
+ </vbox>
+ </hbox>
- <vbox>
- <entry field="ePhone1" label="Telefon:"/>
- <entry field="ePhone2" label="Mobil:"/>
- <entry field="eFax" label="Fax:"/>
- <entry field="eMail" label="E-Mail:"/>
- <entry field="eFilter1" label="Filter-1"/>
- <entry field="eFilter2" label="Filter-2"/>
- <entry field="eFilter3" label="Filter-3"/>
- </vbox>
- </hbox>
- <hbox>
- <button label="<<">
- <trigger type="ON-ACTION">blk_contact.first_record()</trigger>
- </button>
- <button label="<">
- <trigger type="ON-ACTION">blk_contact.prev_record()</trigger>
- </button>
- <button label=">">
- <trigger type="ON-ACTION">blk_contact.next_record()</trigger>
- </button>
- <button label=">>">
- <trigger type="ON-ACTION">blk_contact.last_record()</trigger>
- </button>
- <entry block="blk_company" field="contact_count"/>
- </hbox>
- </vbox>
- </vbox>
- <vbox>
- <hbox>
- <entry block="blk" field="company" label="Schnellaufruf:"
style="listbox"/>
- </hbox>
- <button action="act_search_phone" label="Telefonnummernsuche"/>
- <button action="act_export" label="Datenexport"/>
- </vbox>
- </hbox>
- </page>
- </layout>
+ <vbox block="blk_contact" label="Ansprechpersonen">
+ <hbox>
+ <vbox>
+ <hbox label="Anrede:">
+ <entry field="eSalutation"/>
+ <button action="act_search_contact" label="Suche"/>
+ </hbox>
+ <entry field="eTitle" label="Titel:"/>
+ <entry field="eFirstname" label="Vorname:"/>
+ <entry field="eSurname" label="Nachname:"/>
+ <entry field="eDepartment" label="Abteilung:"/>
+ <entry field="eDuty" label="Funktion:"/>
+ <hbox label="Memo:">
+ <entry field="eMemoAvailable" label="verfügbar"/>
+ <button action="act_memo_contact" label="Bearbeiten"/>
+ </hbox>
+ </vbox>
- <!-- ==================================================================== -->
+ <vbox>
+ <entry field="ePhone1" label="Telefon:"/>
+ <entry field="ePhone2" label="Mobil:"/>
+ <entry field="eFax" label="Fax:"/>
+ <entry field="eMail" label="E-Mail:"/>
+ <hbox>
+ <vbox label="SKMT">
+ <entry field="eFilter1" label="SKMT-Temp"/>
+ <entry field="eFilter2" label="SKMT-Mailing"/>
+ <entry field="eFilter3" label="SKMT-dScope"/>
+ </vbox>
+ <hbox label="DMG">
+ <vbox>
+ <entry field="eCorp_film" label="Corporate Film"/>
+ <entry field="eEvent" label="Event"/>
+ <entry field="eWerbung" label="Werbung"/>
+ <entry field="ePproduct" label="Post Production"/>
+ </vbox>
+ <vbox>
+ <entry field="eAdaptionen" label="Adaption"/>
+ <entry field="eVermietung" label="Vermietung"/>
+ <entry field="eTV" label="TV"/>
+ <entry field="eReserve" label="Reserve"/>
+ </vbox>
+ </hbox>
+ </hbox>
+ </vbox>
+ </hbox>
+ <hbox>
+ <button label="<<">
+ <trigger type="ON-ACTION">blk_contact.first_record()</trigger>
+ </button>
+ <button label="<">
+ <trigger type="ON-ACTION">blk_contact.prev_record()</trigger>
+ </button>
+ <button label=">">
+ <trigger type="ON-ACTION">blk_contact.next_record()</trigger>
+ </button>
+ <button label=">>">
+ <trigger type="ON-ACTION">blk_contact.last_record()</trigger>
+ </button>
+ <entry block="blk_company" field="contact_count"/>
+ </hbox>
+ </vbox>
+ </vbox>
+ <vbox>
+ <hbox>
+ <entry block="blk" field="company" label="Schnellaufruf:"
style="listbox"/>
+ </hbox>
+ <button action="act_search_phone" label="Telefonnummernsuche"/>
+ <button action="act_export" label="Datenexport"/>
+ </vbox>
+ </hbox>
+ </page>
+ </layout>
- <action name="act_search_company">
- params = {}
- activateDialog('dlg_search_company', params, True)
- if params.has_key('prm_result') and params['prm_result'] is not None:
- blk_company.search_record(id=params['prm_result'])
- </action>
+ <!-- ==================================================================== -->
- <action name="act_search_contact">
- params = {}
- activateDialog('dlg_search_contact', params, True)
- if params.has_key('prm_company') and params['prm_company'] is not None:
- blk_company.search_record(id=params['prm_company'])
- blk_contact.search_record(id=params['prm_contact'])
- </action>
+ <action name="act_search_company">
+ params = {}
+ activateDialog('dlg_search_company', params, True)
+ if params.has_key('prm_result') and params['prm_result'] is not None:
+ blk_company.search_record(id=params['prm_result'])
+ </action>
- <action name="act_search_phone">
- params = {}
- activateDialog('dlg_search_phone', params, True)
- if params.has_key('prm_company') and params['prm_company'] is not None:
- blk_company.search_record(id=params['prm_company'])
- blk_contact.search_record(id=params['prm_contact'])
- blk_company.contact_count.value = blk_contact.get_record_count()
- </action>
+ <action name="act_search_contact">
+ params = {}
+ activateDialog('dlg_search_contact', params, True)
+ if params.has_key('prm_company') and params['prm_company'] is not None:
+ blk_company.search_record(id=params['prm_company'])
+ blk_contact.search_record(id=params['prm_contact'])
+ </action>
- <action name="act_memo_company">
- params = {'prm_memo': blk_company.eMemo.value}
- activateDialog('dlg_memo', params, True)
- if params.get('prm_mres'):
- value = params['prm_memo']
- blk_company.eMemo.value = value
- blk_company.eMemoAvailable.value = bool(value)
- </action>
+ <action name="act_search_phone">
+ params = {}
+ activateDialog('dlg_search_phone', params, True)
+ if params.has_key('prm_company') and params['prm_company'] is not None:
+ blk_company.search_record(id=params['prm_company'])
+ blk_contact.search_record(id=params['prm_contact'])
+ blk_company.contact_count.value = blk_contact.get_record_count()
+ </action>
- <action name="act_memo_contact">
- params = {'prm_memo': blk_contact.eMemo.value}
- activateDialog('dlg_memo', params, True)
- if params.get('prm_mres'):
- value = params['prm_memo']
- blk_contact.eMemo.value = value
- blk_contact.eMemoAvailable.value = bool(value)
- </action>
+ <action name="act_memo_company">
+ params = {'prm_memo': blk_company.eMemo.value}
+ activateDialog('dlg_memo', params, True)
+ if params.get('prm_mres'):
+ value = params['prm_memo']
+ blk_company.eMemo.value = value
+ blk_company.eMemoAvailable.value = bool(value)
+ </action>
- <action name="act_export">
- import wx
- fname = wx.FileSelector("Daten exportieren", default_extension="txt",
- wildcard="*.txt", flags=wx.SAVE | wx.OVERWRITE_PROMPT)
- if not fname:
- return
- form.status_message("Daten werden exportiert...")
- blk_csv.set_filter()
- from gnue.common.utils import ucsv
- fieldnames = [
- u"FA/Firma1",
- u"FA/Firma2",
- u"FA/Straße",
- u"FA/PLZ",
- u"FA/Ort",
- u"FA/Telefon",
- u"FA/Kategorie",
- u"FA/Filter1",
- u"FA/Filter2",
- u"FA/Filter3",
- u"ASP/Anrede",
- u"ASP/Titel",
- u"ASP/Vorname",
- u"ASP/Nachname",
- u"ASP/Abteilung",
- u"ASP/Funktion",
- u"ASP/Telefon",
- u"ASP/Mobil",
- u"ASP/Filter1",
- u"ASP/Filter2",
- u"ASP/Filter3"]
- ucsv.write_file(fieldnames, blk_csv.get_data(fieldnames), fname,
- dialect="excel-tab", encoding="cp1250")
- form.status_message("")
- form.show_message("Datenexport beendet")
- </action>
+ <action name="act_memo_contact">
+ params = {'prm_memo': blk_contact.eMemo.value}
+ activateDialog('dlg_memo', params, True)
+ if params.get('prm_mres'):
+ value = params['prm_memo']
+ blk_contact.eMemo.value = value
+ blk_contact.eMemoAvailable.value = bool(value)
+ </action>
- <!-- ==================================================================== -->
- <!-- Edit memo -->
- <!-- ==================================================================== -->
+ <action name="act_export">
+ import wx
+ fname = wx.FileSelector("Daten exportieren", default_extension="txt",
+ wildcard="*.txt", flags=wx.SAVE | wx.OVERWRITE_PROMPT)
+ if not fname:
+ return
+ form.status_message("Daten werden exportiert...")
+ blk_csv.set_filter()
+ from gnue.common.utils import ucsv
+ fieldnames = [
+ u"FID",
+ u"FA/Firma1",
+ u"FA/Firma2",
+ u"FA/Straße",
+ u"FA/PLZ",
+ u"FA/Ort",
+ u"FA/Telefon",
+ u"FA/Kategorie",
+ u"FA/Filter1",
+ u"FA/Filter2",
+ u"FA/Filter3",
+ u"ASP/Anrede",
+ u"ASP/Titel",
+ u"ASP/Vorname",
+ u"ASP/Nachname",
+ u"ASP/Abteilung",
+ u"ASP/Funktion",
+ u"ASP/Telefon",
+ u"ASP/Mobil",
+ u"ASP/EMail",
+ u"ASP/Filter1",
+ u"ASP/Filter2",
+ u"ASP/Filter3"]
- <dialog name="dlg_memo" title="Memo bearbeiten">
- <parameter name="prm_memo" datatype="text"/>
- <parameter name="prm_mres" datatype="boolean"/>
+ master = blk_company.get_data(['id'])
+ detail = blk_csv.get_data(fieldnames)
- <trigger type="On-Activation">act_init.run()</trigger>
+ neu = []
+ for row in master:
+ mid = int(row['id'])
- <!-- ================================================================== -->
+ # haben wir ein Detail
+ for drow in detail:
+ if int(drow['FID']) == mid:
+ neu.append(drow)
- <logic>
- <block name="blk">
- <field name="memo" datatype="text"/>
- </block>
- </logic>
+ ucsv.write_file(fieldnames, neu, fname,
+ dialect="excel-tab", encoding="cp1250")
+ form.status_message("")
+ form.show_message("Datenexport beendet")
+ </action>
- <!-- ================================================================== -->
+ <!-- ==================================================================== -->
- <layout xmlns:s="GNUe:Layout:Sizer">
- <page name="Page">
- <vbox block="blk">
- <hbox>
- <entry field="memo" label="Memo:" style="multiline"
s:def_width="60" s:def_height="20" s:max_height="100"/>
- </hbox>
+ <action name="to_clipboard">
+ import wx
+ import os
+ clp = wx.TheClipboard
- <hbox>
- <button label="Ok" action="act_ok"/>
- <button label="Abbrechen" action="act_cancel"/>
- </hbox>
- </vbox>
- </page>
- </layout>
+ if clp.Open():
+ try:
+ zeilen = []
+ clp.Clear()
- <!-- ================================================================== -->
+ if blk_company.eName1.value:
+ zeilen.append(blk_company.eName1.value)
- <action name="act_init">
- blk.memo.value = prm_memo.value
- setFocus(blk.memo)
- </action>
+ if blk_company.eName2.value:
+ zeilen.append(blk_company.eName2.value)
- <action name="act_ok">
- prm_memo.value = blk.memo.value
- prm_mres.value = True
- form.close()
- </action>
+ if blk_company.eStreet.value:
+ zeilen.append(blk_company.eStreet.value)
- <action name="act_cancel">
- prm_mres.value = False
- form.close()
- </action>
- </dialog>
+ teil = []
+ if blk_company.eZIP.value:
+ teil.append(blk_company.eZIP.value)
- <!-- ==================================================================== -->
- <!-- Search by company -->
- <!-- ==================================================================== -->
+ if blk_company.eCity.value:
+ teil.append(blk_company.eCity.value)
- <dialog name="dlg_search_company" title="Suche nach Firma">
- <parameter name="prm_result" datatype="number" length="8" scale="0"/>
- <parameter name="prm_search" datatype="text" length="100" />
+ if teil:
+ zeilen.append(' '.join(teil))
- <trigger type="ON-ACTIVATION">act_initialize.run()</trigger>
+ txt = wx.TextDataObject()
+ txt.SetText(os.linesep.join(zeilen))
+ clp.AddData(txt)
- <datasource name="dts_company" connection="address" table="company">
- <sortorder>
- <sortfield name="name1" descending="N" ignorecase="Y"/>
- </sortorder>
- </datasource>
+ clp.Flush()
- <!-- ================================================================== -->
+ finally:
+ clp.Close()
+ </action>
- <logic>
- <block name="blk">
- <field name="search" datatype="text" length="64" case="upper"/>
- </block>
+ <!-- ==================================================================== -->
+ <!-- Edit memo -->
+ <!-- ==================================================================== -->
- <block name="blk_company" datasource="dts_company" startup="empty"
editable="N" deletable="N">
- <field name="id" field="id" datatype="number"
length="8"/>
- <field name="matchcode" field="matchcode" datatype="text"
length="20"/>
- <field name="name1" field="name1" datatype="text"
length="64"/>
- <field name="name2" field="name2" datatype="text"
length="64"/>
- <field name="street" field="street" datatype="text"
length="64"/>
- <field name="city" field="city" datatype="text"
length="64"/>
- </block>
- </logic>
+ <dialog name="dlg_memo" title="Memo bearbeiten">
+ <parameter name="prm_memo" datatype="text"/>
+ <parameter name="prm_mres" datatype="boolean"/>
- <!-- ================================================================== -->
+ <trigger type="On-Activation">act_init.run()</trigger>
- <layout>
- <page name="pg">
- <vbox>
- <entry block="blk" field="search" label="Suchbegriff:"/>
+ <!-- ================================================================== -->
- <grid block="blk_company" rows="20">
- <gridline>
- <button label="Auswählen" action="act_select">
- <trigger type="POST-FOCUSIN">act_button_focus.run()</trigger>
- </button>
- <entry field="matchcode" label="Match" navigable="N"/>
- <entry field="name1" label="Firma-1" navigable="N"/>
- <entry field="name2" label="Firma-2" navigable="N"/>
- <entry field="street" label="Straße" navigable="N"/>
- <entry field="city" label="Ort" navigable="N"/>
- </gridline>
- </grid>
- </vbox>
- </page>
- </layout>
+ <logic>
+ <block name="blk">
+ <field name="memo" datatype="text"/>
+ </block>
+ </logic>
- <!-- ================================================================== -->
+ <!-- ================================================================== -->
- <action name="act_initialize">
- blk.search.value = None
- blk_company.clear()
- setFocus(blk.search)
- setParameter('prm_search', '')
- </action>
+ <layout xmlns:s="GNUe:Layout:Sizer">
+ <page name="Page">
+ <vbox block="blk">
+ <hbox>
+ <entry field="memo" label="Memo:" style="multiline"
s:def_width="60" s:def_height="20" s:max_height="100"/>
+ </hbox>
- <action name="act_filter">
- # This is a workaround for SQLite3 not knowing that UPPER('ä') = 'Ä'.
- def build(aval, last=0):
- cmap = {u'ö': u'Ö', u'Ö': u'ö',
- u'ä': u'Ä', u'Ä': u'ä',
- u'ü': u'Ü', u'Ü': u'ü'}
+ <hbox>
+ <button label="Ok" action="act_ok"/>
+ <button label="Abbrechen" action="act_cancel"/>
+ </hbox>
+ </vbox>
+ </page>
+ </layout>
- result = []
+ <!-- ================================================================== -->
- for ix in range(last, len(aval)):
- if aval[ix] in cmap:
- cc = aval[ix]
- newval = aval[0:ix] + cmap[cc] + aval[ix + 1:]
+ <action name="act_init">
+ blk.memo.value = prm_memo.value
+ setFocus(blk.memo)
+ </action>
- xres = build(newval, ix + 1)
- result.extend(xres)
+ <action name="act_ok">
+ prm_memo.value = blk.memo.value
+ prm_mres.value = True
+ form.close()
+ </action>
- result.append(aval)
- return result
+ <action name="act_cancel">
+ prm_mres.value = False
+ form.close()
+ </action>
+ </dialog>
- def build_pattern(pattern):
- result = []
+ <!-- ==================================================================== -->
+ <!-- Search by company -->
+ <!-- ==================================================================== -->
- for item in build(pattern):
- result.extend ([ \
- ['like', ['upper', ['field', 'matchcode']], ['const', item]], \
- ['like', ['upper', ['field', 'name1']], ['const', item]], \
- ['like', ['upper', ['field', 'name2']], ['const', item]]])
+ <dialog name="dlg_search_company" title="Suche nach Firma">
+ <parameter name="prm_result" datatype="number" length="8" scale="0"/>
+ <parameter name="prm_search" datatype="text" length="100" />
- result.insert(0, 'or')
- return result
+ <trigger type="ON-ACTIVATION">act_initialize.run()</trigger>
- val = blk.search.value
- old = getParameter('prm_search')
+ <datasource name="dts_company" connection="address" table="company">
+ <sortorder>
+ <sortfield name="name1" descending="N" ignorecase="Y"/>
+ </sortorder>
+ </datasource>
- if old != val:
- if val is not None:
- blk_company.query(build_pattern("%%" + val + "%%"))
- else:
- blk_company.clear()
+ <!-- ================================================================== -->
- setParameter('prm_search', val)
- </action>
+ <logic>
+ <block name="blk">
+ <field name="search" datatype="text" length="64" case="upper"/>
+ </block>
- <action name="act_button_focus">
- act_filter.run()
- # FIXME: get_record_count not available before gnue-forms 0.6-pre1
- # if blk_company.get_record_count() == 1 and
blk_company.get_record_status() == 'clean':
- if blk_company.getResultSet().getRecordCount() == 1 and
blk_company.get_record_status() == 'clean':
- act_select.run()
- </action>
+ <block name="blk_company" datasource="dts_company" startup="empty"
editable="N" deletable="N">
+ <field name="id" field="id" datatype="number"
length="8"/>
+ <field name="matchcode" field="matchcode" datatype="text"
length="20"/>
+ <field name="name1" field="name1" datatype="text"
length="64"/>
+ <field name="name2" field="name2" datatype="text"
length="64"/>
+ <field name="street" field="street" datatype="text"
length="64"/>
+ <field name="city" field="city" datatype="text"
length="64"/>
+ </block>
+ </logic>
- <action name="act_select">
- prm_result.value = blk_company.id.value
- # Workaround for a bug in wx: setting the focus in ON-ACTIVATION does not
- # work for modal dialogs. So we reset the focus here before closing.
- setFocus(blk.search)
- form.close()
- </action>
- </dialog>
+ <!-- ================================================================== -->
- <!-- ==================================================================== -->
- <!-- Search by contact -->
- <!-- ==================================================================== -->
+ <layout>
+ <page name="pg">
+ <vbox>
+ <entry block="blk" field="search" label="Suchbegriff:"/>
- <dialog name="dlg_search_contact" title="Suche nach Ansprechperson">
- <parameter name="prm_company" datatype="number" length="8" scale="0"/>
- <parameter name="prm_contact" datatype="number" length="8" scale="0"/>
- <parameter name="prm_search" datatype="text" length="120" />
+ <grid block="blk_company" rows="20">
+ <gridline>
+ <button label="Auswählen" action="act_select">
+ <trigger type="POST-FOCUSIN">act_button_focus.run()</trigger>
+ </button>
+ <entry field="matchcode" label="Match" navigable="N"/>
+ <entry field="name1" label="Firma-1" navigable="N"/>
+ <entry field="name2" label="Firma-2" navigable="N"/>
+ <entry field="street" label="Straße" navigable="N"/>
+ <entry field="city" label="Ort" navigable="N"/>
+ </gridline>
+ </grid>
+ </vbox>
+ </page>
+ </layout>
- <trigger type="ON-ACTIVATION">act_initialize.run()</trigger>
+ <!-- ================================================================== -->
- <datasource name="dts_contact" connection="address"
- table="contact left outer join company on contact.company = company.id"
- primarykey="contact.id">
- <sortorder>
- <sortfield name="surname" descending="N" ignorecase="Y"/>
- </sortorder>
- </datasource>
+ <action name="act_initialize">
+ blk.search.value = None
+ blk_company.clear()
+ setFocus(blk.search)
+ setParameter('prm_search', '')
+ </action>
- <!-- ================================================================== -->
+ <action name="act_filter">
+ # This is a workaround for SQLite3 not knowing that UPPER('ä') = 'Ä'.
+ def build(aval, last=0):
+ cmap = {u'ö': u'Ö', u'Ö': u'ö',
+ u'ä': u'Ä', u'Ä': u'ä',
+ u'ü': u'Ü', u'Ü': u'ü'}
- <logic>
- <block name="blk">
- <field name="search" datatype="text" length="64" case="upper"/>
- </block>
+ result = []
- <block name="blk_contact" datasource="dts_contact" startup="empty"
editable="N" deletable="N">
- <field name="id" field="contact.id" datatype="number"
length="8"/>
- <field name="company" field="company" datatype="number"
length="8"/>
- <field name="surname" field="surname" datatype="text"
length="32"/>
- <field name="firstname" field="firstname" datatype="text"
length="32"/>
- <field name="name1" field="name1" datatype="text"
length="64"/>
- <field name="name2" field="name2" datatype="text"
length="64"/>
- <field name="city" field="city" datatype="text"
length="64"/>
- </block>
- </logic>
+ for ix in range(last, len(aval)):
+ if aval[ix] in cmap:
+ cc = aval[ix]
+ newval = aval[0:ix] + cmap[cc] + aval[ix + 1:]
- <!-- ================================================================== -->
+ xres = build(newval, ix + 1)
+ result.extend(xres)
- <layout>
- <page name="pg">
- <vbox>
- <entry block="blk" field="search" label="Suchbegriff:"/>
+ result.append(aval)
+ return result
- <grid block="blk_contact" rows="20">
- <gridline>
- <button label="Auswählen" action="act_select">
- <trigger type="POST-FOCUSIN">act_button_focus.run()</trigger>
- </button>
- <entry field="surname" label="Nachname" navigable="N"/>
- <entry field="firstname" label="Vorname" navigable="N"/>
- <entry field="name1" label="Firma-1" navigable="N"/>
- <entry field="name2" label="Firma-2" navigable="N"/>
- <entry field="city" label="Ort" navigable="N"/>
- </gridline>
- </grid>
- </vbox>
- </page>
- </layout>
+ def build_pattern(pattern):
+ result = []
- <!-- ================================================================== -->
+ for item in build(pattern):
+ result.extend ([ \
+ ['like', ['upper', ['field', 'matchcode']], ['const', item]], \
+ ['like', ['upper', ['field', 'name1']], ['const', item]], \
+ ['like', ['upper', ['field', 'name2']], ['const', item]]])
- <action name="act_initialize">
- blk.search.value = None
- blk_contact.clear()
- setFocus(blk.search)
- setParameter('prm_search', None)
- </action>
+ result.insert(0, 'or')
+ return result
- <action name="act_filter">
- # This is a workaround for SQLite3 not knowing that UPPER('ä') = 'Ä'.
- def build(aval, last=0):
- cmap = {u'ö': u'Ö', u'Ö': u'ö',
- u'ä': u'Ä', u'Ä': u'ä',
- u'ü': u'Ü', u'Ü': u'ü'}
+ val = blk.search.value
+ old = getParameter('prm_search')
- result = []
+ if old != val:
+ if val is not None:
+ blk_company.query(build_pattern("%%" + val + "%%"))
+ else:
+ blk_company.clear()
- for ix in range(last, len(aval)):
- if aval[ix] in cmap:
- cc = aval[ix]
- newval = aval[0:ix] + cmap[cc] + aval[ix + 1:]
+ setParameter('prm_search', val)
+ </action>
- xres = build(newval, ix + 1)
- result.extend(xres)
+ <action name="act_button_focus">
+ act_filter.run()
+ # FIXME: get_record_count not available before gnue-forms 0.6-pre1
+ # if blk_company.get_record_count() == 1 and
blk_company.get_record_status() == 'clean':
+ if blk_company.getResultSet().getRecordCount() == 1 and
blk_company.get_record_status() == 'clean':
+ act_select.run()
+ </action>
- result.append(aval)
- return result
+ <action name="act_select">
+ prm_result.value = blk_company.id.value
+ # Workaround for a bug in wx: setting the focus in ON-ACTIVATION does not
+ # work for modal dialogs. So we reset the focus here before closing.
+ setFocus(blk.search)
+ form.close()
+ </action>
+ </dialog>
- def build_pattern(pattern):
- result = []
+ <!-- ==================================================================== -->
+ <!-- Search by contact -->
+ <!-- ==================================================================== -->
- for item in build(pattern):
- result.extend ([['like', ['upper', ['field', 'surname']], ['const',
item]],
- ['like', ['upper', ['field', 'firstname']],
['const', item]]])
+ <dialog name="dlg_search_contact" title="Suche nach Ansprechperson">
+ <parameter name="prm_company" datatype="number" length="8" scale="0"/>
+ <parameter name="prm_contact" datatype="number" length="8" scale="0"/>
+ <parameter name="prm_search" datatype="text" length="120" />
- result.insert(0, 'or')
- return result
+ <trigger type="ON-ACTIVATION">act_initialize.run()</trigger>
- val = blk.search.value
- old = getParameter('prm_search')
- if old != val:
- if val is not None:
- blk_contact.query(build_pattern("%%" + val + "%%"))
- else:
- blk_contact.clear()
+ <datasource name="dts_contact" connection="address"
+ table="contact left outer join company on contact.company = company.id"
+ primarykey="contact.id">
+ <sortorder>
+ <sortfield name="surname" descending="N" ignorecase="Y"/>
+ </sortorder>
+ </datasource>
- setParameter('prm_search', val)
- </action>
+ <!-- ================================================================== -->
- <action name="act_button_focus">
- act_filter.run()
- # FIXME: get_record_count not available before gnue-forms 0.6-pre1
- # if blk_contact.get_record_count() == 1 and
blk_contact.get_record_status() == 'clean':
- if blk_contact.getResultSet().getRecordCount() == 1 and
blk_contact.get_record_status() == 'clean':
- act_select.run()
- </action>
+ <logic>
+ <block name="blk">
+ <field name="search" datatype="text" length="64" case="upper"/>
+ </block>
- <action name="act_select">
- prm_company.value = blk_contact.company.value
- prm_contact.value = blk_contact.id.value
- # Workaround for a bug in wx: setting the focus in ON-ACTIVATION does not
- # work for modal dialogs. So we reset the focus here before closing.
- setFocus(blk.search)
- form.close()
- </action>
- </dialog>
+ <block name="blk_contact" datasource="dts_contact" startup="empty"
editable="N" deletable="N">
+ <field name="id" field="contact.id" datatype="number"
length="8"/>
+ <field name="company" field="company" datatype="number"
length="8"/>
+ <field name="surname" field="surname" datatype="text"
length="32"/>
+ <field name="firstname" field="firstname" datatype="text"
length="32"/>
+ <field name="name1" field="name1" datatype="text"
length="64"/>
+ <field name="name2" field="name2" datatype="text"
length="64"/>
+ <field name="city" field="city" datatype="text"
length="64"/>
+ </block>
+ </logic>
- <!-- ==================================================================== -->
- <!-- Search by phone number -->
- <!-- ==================================================================== -->
+ <!-- ================================================================== -->
- <dialog name="dlg_search_phone" title="Suche nach Telefonnummer">
- <parameter name="prm_company" datatype="number" length="8" scale="0"/>
- <parameter name="prm_contact" datatype="number" length="8" scale="0"/>
- <parameter name="prm_search" datatype="text" length="120" />
+ <layout>
+ <page name="pg">
+ <vbox>
+ <entry block="blk" field="search" label="Suchbegriff:"/>
- <trigger type="ON-ACTIVATION">act_initialize.run()</trigger>
+ <grid block="blk_contact" rows="20">
+ <gridline>
+ <button label="Auswählen" action="act_select">
+ <trigger type="POST-FOCUSIN">act_button_focus.run()</trigger>
+ </button>
+ <entry field="surname" label="Nachname" navigable="N"/>
+ <entry field="firstname" label="Vorname" navigable="N"/>
+ <entry field="name1" label="Firma-1" navigable="N"/>
+ <entry field="name2" label="Firma-2" navigable="N"/>
+ <entry field="city" label="Ort" navigable="N"/>
+ </gridline>
+ </grid>
+ </vbox>
+ </page>
+ </layout>
- <datasource name="dts_contact" connection="address"
- table="contact left outer join company on contact.company = company.id"
- primarykey="contact.id">
- <sortorder>
- <sortfield name="surname" descending="N" ignorecase="Y"/>
- </sortorder>
- </datasource>
+ <!-- ================================================================== -->
- <!-- ================================================================== -->
+ <action name="act_initialize">
+ blk.search.value = None
+ blk_contact.clear()
+ setFocus(blk.search)
+ setParameter('prm_search', None)
+ </action>
- <logic>
- <block name="blk">
- <field name="search" datatype="text" length="64" case="upper"/>
- </block>
+ <action name="act_filter">
+ # This is a workaround for SQLite3 not knowing that UPPER('ä') = 'Ä'.
+ def build(aval, last=0):
+ cmap = {u'ö': u'Ö', u'Ö': u'ö',
+ u'ä': u'Ä', u'Ä': u'ä',
+ u'ü': u'Ü', u'Ü': u'ü'}
- <block name="blk_contact" datasource="dts_contact" startup="empty"
editable="N" deletable="N">
- <field name="id" field="contact.id" datatype="number"
length="8"/>
- <field name="company" field="company" datatype="number"
length="8"/>
- <field name="surname" field="surname" datatype="text"
length="16"/>
- <field name="firstname" field="firstname" datatype="text"
length="16"/>
- <field name="phone1" field="phone1" datatype="text"
length="16"/>
- <field name="phone2" field="phone2" datatype="text"
length="16"/>
- <field name="name1" field="name1" datatype="text"
length="32"/>
- <field name="phone" field="phone" datatype="text"
length="16"/>
- </block>
- </logic>
+ result = []
- <!-- ================================================================== -->
+ for ix in range(last, len(aval)):
+ if aval[ix] in cmap:
+ cc = aval[ix]
+ newval = aval[0:ix] + cmap[cc] + aval[ix + 1:]
- <layout>
- <page name="pg">
- <vbox>
- <entry block="blk" field="search" label="Suchbegriff:"/>
+ xres = build(newval, ix + 1)
+ result.extend(xres)
- <grid block="blk_contact" rows="20">
- <gridline>
- <button label="Auswählen" action="act_select">
- <trigger type="POST-FOCUSIN">act_button_focus.run()</trigger>
- </button>
- <entry field="surname" label="Nachname" navigable="N"/>
- <entry field="firstname" label="Vorname" navigable="N"/>
- <entry field="phone1" label="Telefon 1" navigable="N"/>
- <entry field="phone2" label="Telefon 2" navigable="N"/>
- <entry field="name1" label="Firma-1" navigable="N"/>
- <entry field="phone" label="Telefon" navigable="N"/>
- </gridline>
- </grid>
- </vbox>
- </page>
- </layout>
+ result.append(aval)
+ return result
- <!-- ================================================================== -->
+ def build_pattern(pattern):
+ result = []
- <action name="act_initialize">
- blk.search.value = None
- blk_contact.clear()
- setFocus(blk.search)
- setParameter('prm_search', None)
- </action>
+ for item in build(pattern):
+ result.extend ([['like', ['upper', ['field', 'surname']], ['const',
item]],
+ ['like', ['upper', ['field', 'firstname']], ['const',
item]]])
- <action name="act_filter">
- val = blk.search.value
- old = getParameter('prm_search')
- if old != val:
- if val is not None:
- item = "%" + val + "%"
- blk_contact.query(['or',
- ['like', ['field', 'phone1x'], ['const', item]],
- ['like', ['field', 'phone2x'], ['const', item]],
- ['like', ['field', 'phonex'], ['const', item]]])
- else:
- blk_contact.clear()
+ result.insert(0, 'or')
+ return result
- setParameter('prm_search', val)
- </action>
+ val = blk.search.value
+ old = getParameter('prm_search')
+ if old != val:
+ if val is not None:
+ blk_contact.query(build_pattern("%%" + val + "%%"))
+ else:
+ blk_contact.clear()
- <action name="act_button_focus">
- act_filter.run()
- # FIXME: get_record_count not available before gnue-forms 0.6-pre1
- # if blk_contact.get_record_count() == 1 and
blk_contact.get_record_status() == 'clean':
- if blk_contact.getResultSet().getRecordCount() == 1 and
blk_contact.get_record_status() == 'clean':
- act_select.run()
- </action>
+ setParameter('prm_search', val)
+ </action>
- <action name="act_select">
- prm_company.value = blk_contact.company.value
- prm_contact.value = blk_contact.id.value
- # Workaround for a bug in wx: setting the focus in ON-ACTIVATION does not
- # work for modal dialogs. So we reset the focus here before closing.
- setFocus(blk.search)
- form.close()
- </action>
- </dialog>
+ <action name="act_button_focus">
+ act_filter.run()
+ # FIXME: get_record_count not available before gnue-forms 0.6-pre1
+ # if blk_contact.get_record_count() == 1 and
blk_contact.get_record_status() == 'clean':
+ if blk_contact.getResultSet().getRecordCount() == 1 and
blk_contact.get_record_status() == 'clean':
+ act_select.run()
+ </action>
+
+ <action name="act_select">
+ prm_company.value = blk_contact.company.value
+ prm_contact.value = blk_contact.id.value
+ # Workaround for a bug in wx: setting the focus in ON-ACTIVATION does not
+ # work for modal dialogs. So we reset the focus here before closing.
+ setFocus(blk.search)
+ form.close()
+ </action>
+ </dialog>
+
+ <!-- ==================================================================== -->
+ <!-- Search by phone number -->
+ <!-- ==================================================================== -->
+
+ <dialog name="dlg_search_phone" title="Suche nach Telefonnummer">
+ <parameter name="prm_company" datatype="number" length="8" scale="0"/>
+ <parameter name="prm_contact" datatype="number" length="8" scale="0"/>
+ <parameter name="prm_search" datatype="text" length="120" />
+
+ <trigger type="ON-ACTIVATION">act_initialize.run()</trigger>
+
+ <datasource name="dts_contact" connection="address"
+ table="contact left outer join company on contact.company = company.id"
+ primarykey="contact.id">
+ <sortorder>
+ <sortfield name="surname" descending="N" ignorecase="Y"/>
+ </sortorder>
+ </datasource>
+
+ <!-- ================================================================== -->
+
+ <logic>
+ <block name="blk">
+ <field name="search" datatype="text" length="64" case="upper"/>
+ </block>
+
+ <block name="blk_contact" datasource="dts_contact" startup="empty"
editable="N" deletable="N">
+ <field name="id" field="contact.id" datatype="number"
length="8"/>
+ <field name="company" field="company" datatype="number"
length="8"/>
+ <field name="surname" field="surname" datatype="text"
length="16"/>
+ <field name="firstname" field="firstname" datatype="text"
length="16"/>
+ <field name="phone1" field="phone1" datatype="text"
length="16"/>
+ <field name="phone2" field="phone2" datatype="text"
length="16"/>
+ <field name="name1" field="name1" datatype="text"
length="32"/>
+ <field name="phone" field="phone" datatype="text"
length="16"/>
+ </block>
+ </logic>
+
+ <!-- ================================================================== -->
+
+ <layout>
+ <page name="pg">
+ <vbox>
+ <entry block="blk" field="search" label="Suchbegriff:"/>
+
+ <grid block="blk_contact" rows="20">
+ <gridline>
+ <button label="Auswählen" action="act_select">
+ <trigger type="POST-FOCUSIN">act_button_focus.run()</trigger>
+ </button>
+ <entry field="surname" label="Nachname" navigable="N"/>
+ <entry field="firstname" label="Vorname" navigable="N"/>
+ <entry field="phone1" label="Telefon 1" navigable="N"/>
+ <entry field="phone2" label="Telefon 2" navigable="N"/>
+ <entry field="name1" label="Firma-1" navigable="N"/>
+ <entry field="phone" label="Telefon" navigable="N"/>
+ </gridline>
+ </grid>
+ </vbox>
+ </page>
+ </layout>
+
+ <!-- ================================================================== -->
+
+ <action name="act_initialize">
+ blk.search.value = None
+ blk_contact.clear()
+ setFocus(blk.search)
+ setParameter('prm_search', None)
+ </action>
+
+ <action name="act_filter">
+ val = blk.search.value
+ old = getParameter('prm_search')
+ if old != val:
+ if val is not None:
+ item = "%" + val + "%"
+ blk_contact.query(['or',
+ ['like', ['field', 'phone1x'], ['const', item]],
+ ['like', ['field', 'phone2x'], ['const', item]],
+ ['like', ['field', 'phonex'], ['const', item]]])
+ else:
+ blk_contact.clear()
+
+ setParameter('prm_search', val)
+ </action>
+
+ <action name="act_button_focus">
+ act_filter.run()
+ # FIXME: get_record_count not available before gnue-forms 0.6-pre1
+ # if blk_contact.get_record_count() == 1 and
blk_contact.get_record_status() == 'clean':
+ if blk_contact.getResultSet().getRecordCount() == 1 and
blk_contact.get_record_status() == 'clean':
+ act_select.run()
+ </action>
+
+ <action name="act_select">
+ prm_company.value = blk_contact.company.value
+ prm_contact.value = blk_contact.id.value
+ # Workaround for a bug in wx: setting the focus in ON-ACTIVATION does not
+ # work for modal dialogs. So we reset the focus here before closing.
+ setFocus(blk.search)
+ form.close()
+ </action>
+ </dialog>
</form>
Modified: address/schema/schema.gsd
===================================================================
--- address/schema/schema.gsd 2007-11-08 08:09:34 UTC (rev 284)
+++ address/schema/schema.gsd 2008-07-29 08:44:27 UTC (rev 285)
@@ -62,6 +62,14 @@
<field name="filter1" type="boolean"/>
<field name="filter2" type="boolean"/>
<field name="filter3" type="boolean"/>
+ <field name="corp_film" type="boolean" />
+ <field name="event" type="boolean" />
+ <field name="werbung" type="boolean" />
+ <field name="pproduct" type="boolean" />
+ <field name="adaptionen" type="boolean" />
+ <field name="vermietung" type="boolean" />
+ <field name="tv" type="boolean" />
+ <field name="reserve" type="boolean" />
</fields>
<primarykey name="pk_contact">
[Prev in Thread] |
Current Thread |
[Next in Thread] |
- [gnue-contrib] r285 - in address: forms schema,
johannes <=