Re: [Ledger-smb-devel] Fix for customer search not working (trunk)

2011-05-23 Thread John Locke
Hi,

Did this one get committed? Didn't see the change in the last version
pulled down... Huge relief to have this working, good one.

One more change I'd suggest: s/like/ILIKE/ in the legal name searches,
anyway...

On 05/16/2011 06:06 AM, Erik Huelsmann wrote:
 Hi all,

 This afternoon I found the problem of trunk's customer search not
 working. Mailed the fix to Chris privately, but now I figure others
 may benefit from the fix as much as I do.

 The function 'company__search' needs a fix; fixed version inline below, with
 the changed line marked . The old version tests meta_number for
 nullity, where that should have been 'in_meta_number'.

 Thanks again!

 Regards,


 Erik.



 CREATE OR REPLACE FUNCTION company__search
 (in_account_class int, in_contact text, in_contact_info text[],
in_meta_number text, in_address text, in_city text, in_state text,
in_mail_code text, in_country text, in_date_from date, in_date_to date,
in_business_id int, in_legal_name text, in_control_code text)
 RETURNS SETOF company_search_result AS $$
 DECLARE
out_row company_search_result;
loop_count int;
t_contact_info text[];
 BEGIN
t_contact_info = in_contact_info;


FOR out_row IN
SELECT e.id, e.control_code, c.id, ec.id, ec.meta_number,
ec.description, ec.entity_class,
c.legal_name, c.sic_code, b.description , ec.curr::text
FROM (select * from entity where in_control_code = control_code
  union
  select * from entity where in_control_code is null) e
JOIN (SELECT * FROM company
   WHERE legal_name like  '%' || in_legal_name || '%'
  UNION ALL
  SELECT * FROM company
   WHERE in_legal_name IS NULL) c ON (e.id = c.entity_id)
JOIN (SELECT * FROM entity_credit_account
   WHERE meta_number = in_meta_number
  UNION ALL
  SELECT * from entity_credit_account
    WHERE in_meta_number IS NULL) ec ON
 (ec.entity_id = e.id)
LEFT JOIN business b ON (ec.business_id = b.id)
WHERE ec.entity_class = in_account_class
AND (c.id IN (select company_id FROM company_to_contact
WHERE contact LIKE ALL(t_contact_info))
OR '' LIKE ALL(t_contact_info))

AND (c.legal_name like '%' || in_legal_name || '%'
OR in_legal_name IS NULL)
AND ((in_address IS NULL AND in_city IS NULL
AND in_state IS NULL
AND in_country IS NULL)
OR (c.id IN
(select company_id FROM company_to_location
WHERE location_id IN
(SELECT id FROM location
WHERE line_one
ilike '%' ||
coalesce(in_address, 
 '')
|| '%'
AND city ILIKE
'%' ||
coalesce(in_city, '')
|| '%'
AND state ILIKE
'%' ||
coalesce(in_state, '')
|| '%'
AND mail_code ILIKE
'%' ||
coalesce(in_mail_code,
'')
|| '%'
AND country_id IN
(SELECT id FROM country
WHERE name LIKE '%' ||
in_country 
 ||'%'
OR short_name
ilike
in_country)
AND (ec.business_id =
coalesce(in_business_id, ec.business_id)
OR (ec.business_id IS NULL
  

Re: [Ledger-smb-devel] Fix for customer search not working (trunk)

2011-05-23 Thread Chris Travers
committed this, commenting out a partially done function for customer
history for now


On Mon, May 23, 2011 at 6:11 PM, John Locke m...@freelock.com wrote:
 Hi,

 Did this one get committed? Didn't see the change in the last version
 pulled down... Huge relief to have this working, good one.


--
vRanger cuts backup time in half-while increasing security.
With the market-leading solution for virtual backup and recovery, 
you get blazing-fast, flexible, and affordable data protection.
Download your free trial now. 
http://p.sf.net/sfu/quest-d2dcopy1
___
Ledger-smb-devel mailing list
Ledger-smb-devel@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/ledger-smb-devel


[Ledger-smb-devel] Fix for customer search not working (trunk)

2011-05-16 Thread Erik Huelsmann
Hi all,

This afternoon I found the problem of trunk's customer search not
working. Mailed the fix to Chris privately, but now I figure others
may benefit from the fix as much as I do.

The function 'company__search' needs a fix; fixed version inline below, with
the changed line marked . The old version tests meta_number for
nullity, where that should have been 'in_meta_number'.

Thanks again!

Regards,


Erik.



CREATE OR REPLACE FUNCTION company__search
(in_account_class int, in_contact text, in_contact_info text[],
   in_meta_number text, in_address text, in_city text, in_state text,
   in_mail_code text, in_country text, in_date_from date, in_date_to date,
   in_business_id int, in_legal_name text, in_control_code text)
RETURNS SETOF company_search_result AS $$
DECLARE
   out_row company_search_result;
   loop_count int;
   t_contact_info text[];
BEGIN
   t_contact_info = in_contact_info;


   FOR out_row IN
   SELECT e.id, e.control_code, c.id, ec.id, ec.meta_number,
   ec.description, ec.entity_class,
   c.legal_name, c.sic_code, b.description , ec.curr::text
   FROM (select * from entity where in_control_code = control_code
 union
 select * from entity where in_control_code is null) e
   JOIN (SELECT * FROM company
  WHERE legal_name like  '%' || in_legal_name || '%'
 UNION ALL
 SELECT * FROM company
  WHERE in_legal_name IS NULL) c ON (e.id = c.entity_id)
   JOIN (SELECT * FROM entity_credit_account
  WHERE meta_number = in_meta_number
 UNION ALL
 SELECT * from entity_credit_account
   WHERE in_meta_number IS NULL) ec ON
(ec.entity_id = e.id)
   LEFT JOIN business b ON (ec.business_id = b.id)
   WHERE ec.entity_class = in_account_class
   AND (c.id IN (select company_id FROM company_to_contact
   WHERE contact LIKE ALL(t_contact_info))
   OR '' LIKE ALL(t_contact_info))

   AND (c.legal_name like '%' || in_legal_name || '%'
   OR in_legal_name IS NULL)
   AND ((in_address IS NULL AND in_city IS NULL
   AND in_state IS NULL
   AND in_country IS NULL)
   OR (c.id IN
   (select company_id FROM company_to_location
   WHERE location_id IN
   (SELECT id FROM location
   WHERE line_one
   ilike '%' ||
   coalesce(in_address, '')
   || '%'
   AND city ILIKE
   '%' ||
   coalesce(in_city, '')
   || '%'
   AND state ILIKE
   '%' ||
   coalesce(in_state, '')
   || '%'
   AND mail_code ILIKE
   '%' ||
   coalesce(in_mail_code,
   '')
   || '%'
   AND country_id IN
   (SELECT id FROM country
   WHERE name LIKE '%' ||
   in_country ||'%'
   OR short_name
   ilike
   in_country)
   AND (ec.business_id =
   coalesce(in_business_id, ec.business_id)
   OR (ec.business_id IS NULL
   AND in_business_id IS NULL))
   AND (ec.startdate = coalesce(in_date_to,
   ec.startdate)
   OR (ec.startdate IS NULL))
   AND (ec.enddate = coalesce(in_date_from, ec.enddate)
   OR (ec.enddate IS