[Top][All Lists]
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[gnue-contrib] r262 - in address: forms schema
From: |
reinhard |
Subject: |
[gnue-contrib] r262 - in address: forms schema |
Date: |
Sat, 31 Mar 2007 18:23:27 -0500 (CDT) |
Author: reinhard
Date: 2007-03-31 18:23:27 -0500 (Sat, 31 Mar 2007)
New Revision: 262
Modified:
address/forms/address.gfd
address/schema/schema.gsd
Log:
More work on address database.
Modified: address/forms/address.gfd
===================================================================
--- address/forms/address.gfd 2007-03-26 13:27:27 UTC (rev 261)
+++ address/forms/address.gfd 2007-03-31 23:23:27 UTC (rev 262)
@@ -20,28 +20,35 @@
<datasource name="dts_salutation" connection="address" table="salutation"
prequery="Y"/>
+ <datasource name="dts_company_quick" connection="address" table="company"
+ prequery="Y">
+ <sortorder>
+ <sortfield name="name1" descending="N" ignorecase="Y"/>
+ </sortorder>
+ </datasource>
+
<logic>
<block name="blk_company" datasource="dts_company" startup="full">
- <field name="search" datatype="text" length="64"
case="upper"/>
- <field name="eMatchcode" field="matchcode" datatype="text" length="20"
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="64"/>
- <field name="eZIP" field="zip" datatype="text"
length="10"/>
- <field name="eVAT" field="vatid" datatype="text"
length="18"/>
- <field name="eCRG" field="compreg" datatype="text"
length="32"/>
+ <field name="id" field="id" datatype="number"
length="8"/>
+ <field name="eMatchcode" field="matchcode" datatype="text"
length="16" 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="64"/>
+ <field name="eZIP" field="zip" datatype="text"
length="8"/>
+ <field name="eVAT" field="vatid" datatype="text"
length="18"/>
+ <field name="eCRG" field="compreg" datatype="text"
length="32"/>
- <field name="ePhone" field="phone" datatype="text"
length="50"/>
- <field name="eFax" field="fax" datatype="text"
length="50"/>
- <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="20"/>
- <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="64"
fk_key="id" fk_description="text" fk_source="dts_category"/>
+ <field name="ePhone" field="phone" datatype="text"
length="64"/>
+ <field name="eFax" field="fax" datatype="text"
length="64"/>
+ <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="32"/>
+ <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="64" fk_key="id" fk_description="text" fk_source="dts_category"/>
<field name="eMemo" field="memo" datatype="text"/>
<field name="eMemoAvailable" datatype="boolean"
editable="N"/>
@@ -52,10 +59,11 @@
</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="15"
fk_key="id" fk_description="text" fk_source="dts_salutation"/>
- <field name="eTitle" field="title" datatype="text"
length="21"/>
- <field name="eFirstname" field="firstname" datatype="text"
length="26"/>
- <field name="eSurname" field="surname" datatype="text"
length="31"/>
+ <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="32"/>
<field name="ePhone1" field="phone1" datatype="text"
length="32"/>
@@ -70,6 +78,16 @@
]]>
</trigger>
</block>
+
+ <block name="blk">
+ <field name="company" datatype="text" length="32" fk_key="id"
fk_description="name1" 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.value = None
+ </trigger>
+ </field>
+ </block>
</logic>
<layout tabbed="none">
@@ -77,83 +95,40 @@
<vbox>
<hbox block="blk_company" label="Firmen">
<vbox>
- <hbox label="Suche:">
- <entry field="search"/>
+ <button label="Suche">
+ <trigger type="ON-ACTION">
+ 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'])
+ </trigger>
+ </button>
- <button label="Suche">
- <trigger type="ON-ACTION"><![CDATA[
- def u (v):
- return unicode (v, 'utf-8')
-
- def build (aval, last = 0):
- cmap = {u('ö'): u('Ö'), u('Ö'): u('ö'),
- u('ä'): u('Ä'), u('Ä'): u('ä'),
- u('ü'): u('Ü'), u('Ü'): u('ü')}
-
- 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:]
-
- xres = build (newval, ix + 1)
- result.extend (xres)
-
- result.append (aval)
- return result
-
- def buildPattern (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]], \
- ['exist', 'contact', 'id', 'company', \
- ['or',
- ['like', ['upper', ['field', 'firstname']],
- ['const', item]],
- ['like', ['upper', ['field', 'surname']],
- ['const', item]]]]])
-
- result.insert (0, 'or')
- return result
-
- val = blk_company.search.value
- pattern = "%%%s%%" % val
-
- cond = buildPattern(pattern)
-
- blk_company.query(cond)
- ]]>
- </trigger>
- </button>
- </hbox>
-
<entry field="eMatchcode" label="Match:"/>
<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="Stadt:"/>
+ <entry field="eCity" label="Ort:"/>
<entry field="eCountry" label="Land:"/>
<entry field="eVAT" label="UID:"/>
<entry field="eCRG" label="FNr:"/>
- <entry field="eMemoAvailable" label="Memo verfügbar"/>
- <button label="Memo">
- <trigger type="ON-ACTION"><![CDATA[
- params = {'prm_memo': blk_company.eMemo.value}
- activateDialog('editMemo', params, True)
- if params.get('prm_mres'):
- value = params['prm_memo']
- blk_company.eMemo.value = value
- blk_company.eMemoAvailable.value = bool(value)
- ]]>
- </trigger>
- </button>
+ <hbox>
+ <entry field="eMemoAvailable" label="Memo verfügbar"/>
+
+ <button label="Memo">
+ <trigger type="ON-ACTION"><![CDATA[
+ params = {'prm_memo': blk_company.eMemo.value}
+ activateDialog('editMemo', params, True)
+ if params.get('prm_mres'):
+ value = params['prm_memo']
+ blk_company.eMemo.value = value
+ blk_company.eMemoAvailable.value = bool(value)
+ ]]>
+ </trigger>
+ </button>
+ </hbox>
</vbox>
<vbox>
@@ -167,10 +142,23 @@
<entry field="eShipment" label="Versandart:"/>
<entry field="eCategory" label="Kategorie:"/>
</vbox>
+
+ <entry block="blk" field="company" label="Schnellaufruf:"
+ style="dropdown"/>
</hbox>
<hbox block="blk_contact" label="Ansprechpersonen">
<vbox>
+ <button label="Suche">
+ <trigger type="ON-ACTION">
+ 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'])
+ </trigger>
+ </button>
+
<entry field="eSalutation" label="Anrede:"/>
<entry field="eTitle" label="Titel:"/>
<entry field="eFirstname" label="Vorname:"/>
@@ -184,47 +172,48 @@
<entry field="ePhone2" label="Telefon 2:"/>
<entry field="eFax" label="Fax:"/>
<entry field="eMail" label="E-Mail:"/>
- <entry field="eMemoAvailable" label="Memo verfügbar"/>
- <button label="Memo">
- <trigger type="ON-ACTION"><![CDATA[
- params = {'prm_memo': blk_contact.eMemo.value}
- activateDialog('editMemo', params, True)
- if params.get('prm_mres'):
- value = params['prm_memo']
- blk_contact.eMemo.value = value
- blk_contact.eMemoAvailable.value = bool(value)
- ]]>
- </trigger>
- </button>
+ <hbox>
+ <entry field="eMemoAvailable" label="Memo verfügbar"/>
+
+ <button label="Memo">
+ <trigger type="ON-ACTION"><![CDATA[
+ params = {'prm_memo': blk_contact.eMemo.value}
+ activateDialog('editMemo', params, True)
+ if params.get('prm_mres'):
+ value = params['prm_memo']
+ blk_contact.eMemo.value = value
+ blk_contact.eMemoAvailable.value = bool(value)
+ ]]>
+ </trigger>
+ </button>
+ </hbox>
</vbox>
</hbox>
</vbox>
</page>
</layout>
+ <!-- ==================================================================== -->
+ <!-- Edit memo -->
+ <!-- ==================================================================== -->
+
<dialog name="editMemo" title="Memo bearbeiten">
-
<parameter name="prm_memo" datatype="text"/>
<parameter name="prm_mres" datatype="boolean"/>
- <trigger type="On-Startup">
- form.setFeature ('GUI:MENUBAR:SUPPRESS', 1)
- form.setFeature ('GUI:TOOLBAR:SUPPRESS', 1)
- form.setFeature ('GUI:STATUSBAR:SUPPRESS', 1)
- </trigger>
+ <trigger type="On-Activation">act_init.run()</trigger>
- <trigger type="On-Activation">
- blk.memo.value = prm_memo.value
- setFocus(blk.memo)
- </trigger>
+ <!-- ================================================================== -->
<logic>
<block name="blk">
- <field name="memo"/>
+ <field name="memo" datatype="text"/>
</block>
</logic>
+ <!-- ================================================================== -->
+
<layout>
<page name="Page">
<vbox block="blk">
@@ -233,25 +222,247 @@
</hbox>
<hbox>
- <button label="Ok" >
- <trigger type="ON-ACTION"><![CDATA[
- prm_memo.value = blk.memo.value
- prm_mres.value = True
- close()
- ]]>
- </trigger>
- </button>
-
- <button label="Abbrechen" >
- <trigger type="ON-ACTION"><![CDATA[
- prm_mres.value = False
- close ()
- ]]>
- </trigger>
- </button>
+ <button label="Ok" action="act_ok"/>
+ <button label="Abbrechen" action="act_cancel"/>
</hbox>
</vbox>
</page>
</layout>
+
+ <!-- ================================================================== -->
+
+ <action name="act_init">
+ blk.memo.value = prm_memo.value
+ setFocus(blk.memo)
+ </action>
+
+ <action name="act_ok">
+ prm_memo.value = blk.memo.value
+ prm_mres.value = True
+ form.close()
+ </action>
+
+ <action name="act_cancel">
+ prm_mres.value = False
+ form.close()
+ </action>
</dialog>
+
+ <!-- ==================================================================== -->
+ <!-- Search by company -->
+ <!-- ==================================================================== -->
+
+ <dialog name="dlg_search_company" title="Suche nach Firma">
+ <parameter name="prm_result" datatype="number" length="8" scale="0"/>
+
+ <trigger type="ON-ACTIVATION">act_initialize.run()</trigger>
+
+ <datasource name="dts_company" connection="address" table="company">
+ <sortorder>
+ <sortfield name="name1" descending="N" ignorecase="Y"/>
+ </sortorder>
+ </datasource>
+
+ <!-- ================================================================== -->
+
+ <logic>
+ <block name="blk">
+ <field name="search" datatype="text" length="64" case="upper">
+ <trigger type="POST-CHANGE">act_filter.run()</trigger>
+ </field>
+ </block>
+
+ <block name="blk_company" datasource="dts_company" startup="empty">
+ <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>
+
+ <!-- ================================================================== -->
+
+ <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"/>
+ <entry field="matchcode" label="Match"/>
+ <entry field="name1" label="Firma-1"/>
+ <entry field="name2" label="Firma-2"/>
+ <entry field="street" label="Straße"/>
+ <entry field="city" label="Ort"/>
+ </gridline>
+ </grid>
+ </vbox>
+ </page>
+ </layout>
+
+ <!-- ================================================================== -->
+
+ <action name="act_initialize">
+ blk.search.value = None
+ setFocus(blk.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'ü'}
+
+ 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:]
+
+ xres = build(newval, ix + 1)
+ result.extend(xres)
+
+ result.append(aval)
+ return result
+
+ 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]]])
+
+ result.insert(0, 'or')
+ return result
+
+ val = blk.search.value
+
+ if val is not None:
+ blk_company.query(build_pattern("%%" + val + "%%"))
+ else:
+ blk_company.clear()
+ </action>
+
+ <action name="act_select">
+ prm_result.value = blk_company.id.value
+ form.close()
+ </action>
+ </dialog>
+
+ <!-- ==================================================================== -->
+ <!-- Search by contact -->
+ <!-- ==================================================================== -->
+
+ <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"/>
+
+ <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">
+ <trigger type="POST-CHANGE">act_filter.run()</trigger>
+ </field>
+ </block>
+
+ <block name="blk_contact" datasource="dts_contact" startup="empty">
+ <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>
+
+ <!-- ================================================================== -->
+
+ <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"/>
+ <entry field="surname" label="Nachname"/>
+ <entry field="firstname" label="Vorname"/>
+ <entry field="name1" label="Firma-1"/>
+ <entry field="name2" label="Firma-2"/>
+ <entry field="city" label="Ort"/>
+ </gridline>
+ </grid>
+ </vbox>
+ </page>
+ </layout>
+
+ <!-- ================================================================== -->
+
+ <action name="act_initialize">
+ blk.search.value = None
+ setFocus(blk.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'ü'}
+
+ 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:]
+
+ xres = build(newval, ix + 1)
+ result.extend(xres)
+
+ result.append(aval)
+ return result
+
+ def build_pattern(pattern):
+ result = []
+
+ for item in build(pattern):
+ result.extend ([['like', ['upper', ['field', 'surname']], ['const',
item]]])
+
+ result.insert(0, 'or')
+ return result
+
+ val = blk.search.value
+
+ if val is not None:
+ blk_contact.query(build_pattern("%%" + val + "%%"))
+ else:
+ blk_contact.clear()
+ </action>
+
+ <action name="act_select">
+ prm_company.value = blk_contact.company.value
+ prm_contact.value = blk_contact.id.value
+ form.close()
+ </action>
+ </dialog>
</form>
Modified: address/schema/schema.gsd
===================================================================
--- address/schema/schema.gsd 2007-03-26 13:27:27 UTC (rev 261)
+++ address/schema/schema.gsd 2007-03-31 23:23:27 UTC (rev 262)
@@ -16,8 +16,8 @@
<field name="city" type="string" length="64" />
<field name="vatid" type="string" length="18" />
<field name="compreg" type="string" length="32" />
- <field name="phone" type="string" length="50" />
- <field name="fax" type="string" length="50" />
+ <field name="phone" type="string" length="64" />
+ <field name="fax" type="string" length="64" />
<field name="web" type="string" length="64" />
<field name="email" type="string" length="64" />
<field name="customer" type="string" length="20" />
@@ -48,8 +48,8 @@
<field name="salutation" type="number" length="8" />
<field name="title" type="string" length="21" />
- <field name="firstname" type="string" length="26" />
- <field name="surname" type="string" length="31" />
+ <field name="firstname" type="string" length="32" />
+ <field name="surname" type="string" length="32" />
<field name="department" type="string" length="32" />
<field name="duty" type="string" length="32" />
<field name="phone1" type="string" length="32" />
[Prev in Thread] |
Current Thread |
[Next in Thread] |
- [gnue-contrib] r262 - in address: forms schema,
reinhard <=