X-Git-Url: http://wagnertech.de/git?a=blobdiff_plain;f=SL%2FCT.pm;h=c61f5a4501b03c64695213d83c08ce792b608612;hb=c62ddafe32128a30ea9247568858d344ed6d5655;hp=a96420c6d71a003faf2f18ac86edebfb3e664099;hpb=4dbb09950c9f5596646537c12d991c99086fe7c1;p=kivitendo-erp.git diff --git a/SL/CT.pm b/SL/CT.pm index a96420c6d..c61f5a450 100644 --- a/SL/CT.pm +++ b/SL/CT.pm @@ -36,6 +36,7 @@ #====================================================================== package CT; +use Data::Dumper; sub get_tuple { @@ -43,18 +44,17 @@ sub get_tuple { my ($self, $myconfig, $form) = @_; - my $dbh = $form->dbconnect($myconfig); - my $query = qq|SELECT ct.*, b.id AS business, s.*, cp.* + my $dbh = $form->dbconnect($myconfig); + my $query = qq|SELECT ct.*, b.id AS business, cp.* FROM $form->{db} ct LEFT JOIN business b on ct.business_id = b.id - LEFT JOIN shipto s on ct.id = s.trans_id LEFT JOIN contacts cp on ct.id = cp.cp_cv_id WHERE ct.id = $form->{id} order by cp.cp_id limit 1|; my $sth = $dbh->prepare($query); $sth->execute || $form->dberror($query); - + my $ref = $sth->fetchrow_hashref(NAME_lc); - + map { $form->{$_} = $ref->{$_} } keys %$ref; $sth->finish; @@ -64,12 +64,12 @@ sub get_tuple { WHERE ct.id = $form->{salesman_id}|; my $sth = $dbh->prepare($query); $sth->execute || $form->dberror($query); - + my ($ref) = $sth->fetchrow_array(); - + $form->{salesman} = $ref; - - $sth->finish; + + $sth->finish; } # check if it is orphaned @@ -85,12 +85,11 @@ sub get_tuple { WHERE ct.id = $form->{id}|; $sth = $dbh->prepare($query); $sth->execute || $form->dberror($query); - + unless ($sth->fetchrow_array) { $form->{status} = "orphaned"; } $sth->finish; - # get tax labels $query = qq|SELECT c.accno, c.description @@ -103,7 +102,7 @@ sub get_tuple { while ($ref = $sth->fetchrow_hashref(NAME_lc)) { $form->{taxaccounts} .= "$ref->{accno} "; - $form->{tax}{$ref->{accno}}{description} = $ref->{description}; + $form->{tax}{ $ref->{accno} }{description} = $ref->{description}; } $sth->finish; chop $form->{taxaccounts}; @@ -117,7 +116,7 @@ sub get_tuple { $sth->execute || $form->dberror($query); while ($ref = $sth->fetchrow_hashref(NAME_lc)) { - $form->{tax}{$ref->{accno}}{taxable} = 1; + $form->{tax}{ $ref->{accno} }{taxable} = 1; } $sth->finish; @@ -127,12 +126,74 @@ sub get_tuple { ORDER BY 1|; $sth = $dbh->prepare($query); $sth->execute || $form->dberror($query); - + while ($ref = $sth->fetchrow_hashref(NAME_lc)) { push @{ $form->{all_business} }, $ref; } $sth->finish; - + + # get tax zones + $query = qq|SELECT id, description + FROM tax_zones|; + $sth = $dbh->prepare($query); + $sth->execute || $form->dberror($query); + + + while (my $ref = $sth->fetchrow_hashref(NAME_lc)) { + push @{ $form->{TAXZONE} }, $ref; + } + $sth->finish; + + + # get shipto address + $query = qq|SELECT id, shiptoname + FROM shipto WHERE trans_id=$form->{id}|; + $sth = $dbh->prepare($query); + $sth->execute || $form->dberror($query); + + + while (my $ref = $sth->fetchrow_hashref(NAME_lc)) { + push @{ $form->{SHIPTO} }, $ref; + } + $sth->finish; + + + # get contacts + $query = qq|SELECT cp_id, cp_name + FROM contacts WHERE cp_cv_id=$form->{id}|; + $sth = $dbh->prepare($query); + $sth->execute || $form->dberror($query); + + + while (my $ref = $sth->fetchrow_hashref(NAME_lc)) { + push @{ $form->{CONTACTS} }, $ref; + } + $sth->finish; + + # get languages + $query = qq|SELECT id, description + FROM language + ORDER BY 1|; + $sth = $dbh->prepare($query); + $sth->execute || $form->dberror($query); + + while ($ref = $sth->fetchrow_hashref(NAME_lc)) { + push @{ $form->{languages} }, $ref; + } + $sth->finish; + + # get languages + $query = qq|SELECT id, description + FROM payment_terms + ORDER BY 1|; + $sth = $dbh->prepare($query); + $sth->execute || $form->dberror($query); + + while ($ref = $sth->fetchrow_hashref(NAME_lc)) { + push @{ $form->{payment_terms} }, $ref; + } + $sth->finish; + $dbh->disconnect; $main::lxdebug->leave_sub(); @@ -143,33 +204,62 @@ sub query_titles_and_greetings { $main::lxdebug->enter_sub(); my ($self, $myconfig, $form) = @_; - my (%tmp, $ref); + my (%tmp, $ref); my $dbh = $form->dbconnect($myconfig); - $query = "SELECT DISTINCT(c.cp_greeting) FROM contacts c WHERE c.cp_greeting LIKE '%'"; + $query = + "SELECT DISTINCT(c.cp_greeting) FROM contacts c WHERE c.cp_greeting LIKE '%'"; $sth = $dbh->prepare($query); $sth->execute() || $form->dberror($query); while ($ref = $sth->fetchrow_hashref(NAME_lc)) { next unless ($ref->{cp_greeting} =~ /[a-zA-Z]/); - $tmp{$ref->{cp_greeting}} = 1; + $tmp{ $ref->{cp_greeting} } = 1; } $sth->finish(); - @{$form->{GREETINGS}} = sort(keys(%tmp)); + @{ $form->{GREETINGS} } = sort(keys(%tmp)); %tmp = (); - $query = "SELECT DISTINCT(c.cp_title) FROM contacts c WHERE c.cp_title LIKE '%'"; + $query = + "SELECT greeting FROM customer UNION select greeting FROM vendor"; + $sth = $dbh->prepare($query); + $sth->execute() || $form->dberror($query); + while ($ref = $sth->fetchrow_hashref(NAME_lc)) { + next unless ($ref->{greeting} =~ /[a-zA-Z]/); + $tmp{ $ref->{greeting} } = 1; + } + $sth->finish(); + + @{ $form->{COMPANY_GREETINGS} } = sort(keys(%tmp)); + + %tmp = (); + + $query = + "SELECT DISTINCT(c.cp_title) FROM contacts c WHERE c.cp_title LIKE '%'"; $sth = $dbh->prepare($query); $sth->execute() || $form->dberror($query); while ($ref = $sth->fetchrow_hashref(NAME_lc)) { next unless ($ref->{cp_title} =~ /[a-zA-Z]/); - $tmp{$ref->{cp_title}} = 1; + $tmp{ $ref->{cp_title} } = 1; + } + $sth->finish(); + + @{ $form->{TITLES} } = sort(keys(%tmp)); + + %tmp = (); + + $query = + "SELECT DISTINCT(c.cp_abteilung) FROM contacts c WHERE c.cp_abteilung LIKE '%'"; + $sth = $dbh->prepare($query); + $sth->execute() || $form->dberror($query); + while ($ref = $sth->fetchrow_hashref(NAME_lc)) { + $tmp{ $ref->{cp_abteilung} } = 1; } $sth->finish(); - @{$form->{TITLES}} = sort(keys(%tmp)); + @{ $form->{DEPARTMENT} } = sort(keys(%tmp)); $dbh->disconnect(); $main::lxdebug->leave_sub(); @@ -195,7 +285,7 @@ sub taxaccounts { my $ref = (); while ($ref = $sth->fetchrow_hashref(NAME_lc)) { $form->{taxaccounts} .= "$ref->{accno} "; - $form->{tax}{$ref->{accno}}{description} = $ref->{description}; + $form->{tax}{ $ref->{accno} }{description} = $ref->{description}; } $sth->finish; chop $form->{taxaccounts}; @@ -205,62 +295,110 @@ sub taxaccounts { FROM business|; $sth = $dbh->prepare($query); $sth->execute || $form->dberror($query); - + while ($ref = $sth->fetchrow_hashref(NAME_lc)) { push @{ $form->{all_business} }, $ref; } $sth->finish; - + # get languages + $query = qq|SELECT id, description + FROM language + ORDER BY 1|; + $sth = $dbh->prepare($query); + $sth->execute || $form->dberror($query); + + while ($ref = $sth->fetchrow_hashref(NAME_lc)) { + push @{ $form->{languages} }, $ref; + } + $sth->finish; + + # get payment terms + $query = qq|SELECT id, description + FROM payment_terms + ORDER BY 1|; + $sth = $dbh->prepare($query); + $sth->execute || $form->dberror($query); + + while ($ref = $sth->fetchrow_hashref(NAME_lc)) { + push @{ $form->{payment_terms} }, $ref; + } + $sth->finish; + + # get taxkeys and description + $query = qq|SELECT id, description + FROM tax_zones|; + $sth = $dbh->prepare($query); + $sth->execute || $form->dberror($query); + + + while (my $ref = $sth->fetchrow_hashref(NAME_lc)) { + push @{ $form->{TAXZONE} }, $ref; + } + $sth->finish; + + $dbh->disconnect; $main::lxdebug->leave_sub(); } - sub save_customer { $main::lxdebug->enter_sub(); - my ($self, $myconfig, $form) = @_; - + + # set pricegroup to default + if ($form->{klass}) { } + else { $form->{klass} = 0; } + # connect to database my $dbh = $form->dbconnect($myconfig); ##LINET - map({ $form->{"cp_${_}"} = $form->{"selected_cp_${_}"} if ($form->{"selected_cp_${_}"}); } qw(title greeting)); + map({ + $form->{"cp_${_}"} = $form->{"selected_cp_${_}"} + if ($form->{"selected_cp_${_}"}); + } qw(title greeting abteilung)); + $form->{"greeting"} = $form->{"selected_company_greeting"} + if ($form->{"selected_company_greeting"}); + # # escape ' - map { $form->{$_} =~ s/\'/\'\'/g } qw(customernumber name street zipcode city country homepage contact notes cp_title cp_greeting language); + map { $form->{$_} =~ s/\'/\'\'/g } + qw(customernumber name street zipcode city country homepage contact notes cp_title cp_greeting language pricegroup); ##/LINET # assign value discount, terms, creditlimit $form->{discount} = $form->parse_amount($myconfig, $form->{discount}); $form->{discount} /= 100; - $form->{terms} *= 1; + $form->{terms} *= 1; $form->{taxincluded} *= 1; - $form->{obsolete} *= 1; - $form->{business} *= 1; + $form->{obsolete} *= 1; + $form->{business} *= 1; $form->{salesman_id} *= 1; + $form->{language_id} *= 1; + $form->{payment_id} *= 1; + $form->{taxzone_id} *= 1; $form->{creditlimit} = $form->parse_amount($myconfig, $form->{creditlimit}); - + my ($query, $sth); if ($form->{id}) { $query = qq|DELETE FROM customertax WHERE customer_id = $form->{id}|; $dbh->do($query) || $form->dberror($query); - - $query = qq|DELETE FROM shipto - WHERE trans_id = $form->{id}|; - $dbh->do($query) || $form->dberror($query); - } else { - my $uid = rand().time; + +# $query = qq|DELETE FROM shipto +# WHERE trans_id = $form->{id} AND module = 'CT'|; +# $dbh->do($query) || $form->dberror($query); + } else { + my $uid = rand() . time; $uid .= $form->{login}; - $uid = substr($uid,2,75); + $uid = substr($uid, 2, 75); $query = qq|INSERT INTO customer (name) VALUES ('$uid')|; $dbh->do($query) || $form->dberror($query); - + $query = qq|SELECT c.id FROM customer c WHERE c.name = '$uid'|; $sth = $dbh->prepare($query); @@ -269,18 +407,20 @@ sub save_customer { ($form->{id}) = $sth->fetchrow_array; $sth->finish; if (!$form->{customernumber} && $form->{business}) { - $form->{customernumber} = $form->update_business($myconfig, $form->{business}); - } + $form->{customernumber} = + $form->update_business($myconfig, $form->{business}); + } if (!$form->{customernumber}) { - $form->{customernumber} = $form->update_defaults($myconfig, "customernumber"); + $form->{customernumber} = + $form->update_defaults($myconfig, "customernumber"); } } - $query = qq|UPDATE customer SET customernumber = '$form->{customernumber}', name = '$form->{name}', + greeting = '$form->{greeting}', department_1 = '$form->{department_1}', department_2 = '$form->{department_2}', street = '$form->{street}', @@ -310,24 +450,39 @@ sub save_customer { ustid = '$form->{ustid}', username = '$form->{username}', salesman_id = '$form->{salesman_id}', - user_password = '$form->{user_password}', - c_vendor_id = '$form->{c_vendor_id}' + language_id = '$form->{language_id}', + payment_id = '$form->{payment_id}', + taxzone_id = '$form->{taxzone_id}', + user_password = | . $dbh->quote($form->{user_password}) . qq|, + c_vendor_id = '$form->{c_vendor_id}', + klass = '$form->{klass}' WHERE id = $form->{id}|; $dbh->do($query) || $form->dberror($query); - + if ($form->{cp_id}) { - $query = qq|UPDATE contacts SET + $query = qq|UPDATE contacts SET cp_greeting = '$form->{cp_greeting}', cp_title = '$form->{cp_title}', cp_givenname = '$form->{cp_givenname}', cp_name = '$form->{cp_name}', cp_email = '$form->{cp_email}', cp_phone1 = '$form->{cp_phone1}', - cp_phone2 = '$form->{cp_phone2}' - WHERE cp_id = $form->{cp_id}|; + cp_phone2 = '$form->{cp_phone2}', + cp_abteilung = | . $dbh->quote($form->{cp_abteilung}) . qq|, + cp_fax = | . $dbh->quote($form->{cp_fax}) . qq|, + cp_mobile1 = | . $dbh->quote($form->{cp_mobile1}) . qq|, + cp_mobile2 = | . $dbh->quote($form->{cp_mobile2}) . qq|, + cp_satphone = | . $dbh->quote($form->{cp_satphone}) . qq|, + cp_satfax = | . $dbh->quote($form->{cp_satfax}) . qq|, + cp_project = | . $dbh->quote($form->{cp_project}) . qq|, + cp_privatphone = | . $dbh->quote($form->{cp_privatphone}) . qq|, + cp_privatemail = | . $dbh->quote($form->{cp_privatemail}) . qq|, + cp_birthday = | . $dbh->quote($form->{cp_birthday}) . qq| + WHERE cp_id = $form->{cp_id}|; } elsif ($form->{cp_name} || $form->{cp_givenname}) { - $query = qq|INSERT INTO contacts ( cp_cv_id, cp_greeting, cp_title, cp_givenname, cp_name, cp_email, cp_phone1, cp_phone2) - VALUES ($form->{id}, '$form->{cp_greeting}','$form->{cp_title}','$form->{cp_givenname}','$form->{cp_name}','$form->{cp_email}','$form->{cp_phone1}','$form->{cp_phone2}')|; + $query = + qq|INSERT INTO contacts ( cp_cv_id, cp_greeting, cp_title, cp_givenname, cp_name, cp_email, cp_phone1, cp_phone2, cp_abteilung, cp_fax, cp_mobile1, cp_mobile2, cp_satphone, cp_satfax, cp_project, cp_privatphone, cp_privatemail, cp_birthday) + VALUES ($form->{id}, '$form->{cp_greeting}','$form->{cp_title}','$form->{cp_givenname}','$form->{cp_name}','$form->{cp_email}','$form->{cp_phone1}','$form->{cp_phone2}', '$form->{cp_abteilung}', | . $dbh->quote($form->{cp_fax}) . qq|,| . $dbh->quote($form->{cp_mobile1}) . qq|,| . $dbh->quote($form->{cp_mobile2}) . qq|,| . $dbh->quote($form->{cp_satphone}) . qq|,| . $dbh->quote($form->{cp_satfax}) . qq|,| . $dbh->quote($form->{cp_project}) . qq|,| . $dbh->quote($form->{cp_privatphone}) . qq|,| . $dbh->quote($form->{cp_privatemail}) . qq|,| . $dbh->quote($form->{cp_birthday}) . qq|)|; } $dbh->do($query) || $form->dberror($query); @@ -341,16 +496,16 @@ sub save_customer { $dbh->do($query) || $form->dberror($query); } } - + print(STDERR "SHIPTO_ID $form->{shipto_id}\n"); # add shipto - $form->add_shipto($dbh, $form->{id}); + $form->add_shipto($dbh, $form->{id}, "CT"); - $dbh->disconnect; + $rc = $dbh->disconnect; $main::lxdebug->leave_sub(); + return $rc; } - sub save_vendor { $main::lxdebug->enter_sub(); @@ -359,36 +514,47 @@ sub save_vendor { # connect to database my $dbh = $form->dbconnect($myconfig); ##LINET - map({ $form->{"cp_${_}"} = $form->{"selected_cp_${_}"} if ($form->{"selected_cp_${_}"}); } qw(title greeting)); + map({ + $form->{"cp_${_}"} = $form->{"selected_cp_${_}"} + if ($form->{"selected_cp_${_}"}); + } qw(title greeting abteilung)); + $form->{"greeting"} = $form->{"selected_company_greeting"} + if ($form->{"selected_company_greeting"}); # escape ' - map { $form->{$_} =~ s/\'/\'\'/g } qw(vendornumber name street zipcode city country homepage contact notes cp_title cp_greeting language); + map { $form->{$_} =~ s/\'/\'\'/g } + qw(vendornumber name street zipcode city country homepage contact notes cp_title cp_greeting language); ##/LINET $form->{discount} = $form->parse_amount($myconfig, $form->{discount}); $form->{discount} /= 100; - $form->{terms} *= 1; + $form->{terms} *= 1; $form->{taxincluded} *= 1; - $form->{obsolete} *= 1; - $form->{business} *= 1; + $form->{obsolete} *= 1; + $form->{business} *= 1; + $form->{payment_id} *= 1; + $form->{language_id} *= 1; + $form->{taxzone_id} *= 1; $form->{creditlimit} = $form->parse_amount($myconfig, $form->{creditlimit}); - + my $query; - + if ($form->{id}) { $query = qq|DELETE FROM vendortax WHERE vendor_id = $form->{id}|; $dbh->do($query) || $form->dberror($query); $query = qq|DELETE FROM shipto - WHERE trans_id = $form->{id}|; - $dbh->do($query) || $form->dberror($query); - } else { + WHERE trans_id = $form->{id} AND module = 'CT'|; + $dbh->do($query) || $form->dberror($query); + } else { my $uid = time; $uid .= $form->{login}; - + my $uid = rand() . time; + $uid .= $form->{login}; + $uid = substr($uid, 2, 75); $query = qq|INSERT INTO vendor (name) VALUES ('$uid')|; $dbh->do($query) || $form->dberror($query); - + $query = qq|SELECT v.id FROM vendor v WHERE v.name = '$uid'|; $sth = $dbh->prepare($query); @@ -397,15 +563,17 @@ sub save_vendor { ($form->{id}) = $sth->fetchrow_array; $sth->finish; if (!$form->{vendornumber}) { - $form->{vendornumber} = $form->update_defaults($myconfig, "vendornumber"); + $form->{vendornumber} = + $form->update_defaults($myconfig, "vendornumber"); } } - + ##LINET $query = qq|UPDATE vendor SET vendornumber = '$form->{vendornumber}', name = '$form->{name}', + greeting = '$form->{greeting}', department_1 = '$form->{department_1}', department_2 = '$form->{department_2}', street = '$form->{street}', @@ -434,6 +602,9 @@ sub save_vendor { bank = '$form->{bank}', obsolete = '$form->{obsolete}', ustid = '$form->{ustid}', + payment_id = '$form->{payment_id}', + taxzone_id = '$form->{taxzone_id}', + language_id = '$form->{language_id}', username = '$form->{username}', user_password = '$form->{user_password}', v_customer_id = '$form->{v_customer_id}' @@ -441,7 +612,7 @@ sub save_vendor { $dbh->do($query) || $form->dberror($query); if ($form->{cp_id}) { - $query = qq|UPDATE contacts SET + $query = qq|UPDATE contacts SET cp_greeting = '$form->{cp_greeting}', cp_title = '$form->{cp_title}', cp_givenname = '$form->{cp_givenname}', @@ -451,11 +622,12 @@ sub save_vendor { cp_phone2 = '$form->{cp_phone2}' WHERE cp_id = $form->{cp_id}|; } elsif ($form->{cp_name} || $form->{cp_givenname}) { - $query = qq|INSERT INTO contacts ( cp_cv_id, cp_greeting, cp_title, cp_givenname, cp_name, cp_email, cp_phone1, cp_phone2) + $query = + qq|INSERT INTO contacts ( cp_cv_id, cp_greeting, cp_title, cp_givenname, cp_name, cp_email, cp_phone1, cp_phone2) VALUES ($form->{id}, '$form->{cp_greeting}','$form->{cp_title}','$form->{cp_givenname}','$form->{cp_name}','$form->{cp_email}','$form->{cp_phone1}','$form->{cp_phone2}')|; } $dbh->do($query) || $form->dberror($query); - + # save taxes foreach $item (split / /, $form->{taxaccounts}) { if ($form->{"tax_$item"}) { @@ -470,13 +642,12 @@ sub save_vendor { # add shipto $form->add_shipto($dbh, $form->{id}); - $dbh->disconnect; + $rc = $dbh->disconnect; $main::lxdebug->leave_sub(); + return $rc; } - - sub delete { $main::lxdebug->enter_sub(); @@ -495,7 +666,6 @@ sub delete { $main::lxdebug->leave_sub(); } - sub search { $main::lxdebug->enter_sub(); @@ -506,7 +676,7 @@ sub search { my $where = "1 = 1"; $form->{sort} = "name" unless ($form->{sort}); - + if ($form->{"$form->{db}number"}) { my $companynumber = $form->like(lc $form->{"$form->{db}number"}); $where .= " AND lower(ct.$form->{db}number) LIKE '$companynumber'"; @@ -553,9 +723,9 @@ sub search { $query = ""; if ($form->{l_invnumber}) { - $ar = ($form->{db} eq 'customer') ? 'ar' : 'ap'; - $module = ($ar eq 'ar') ? 'is' : 'ir'; - + $ar = ($form->{db} eq 'customer') ? 'ar' : 'ap'; + $module = ($ar eq 'ar') ? 'is' : 'ir'; + $query = qq|SELECT ct.*, b.description AS business, a.invnumber, a.ordnumber, a.quonumber, a.id AS invid, '$module' AS module, 'invoice' AS formtype, @@ -565,12 +735,12 @@ sub search { LEFT JOIN business b ON (ct.business_id = b.id) WHERE $where AND a.invoice = '1'|; - + $union = qq| UNION|; - + } - + if ($form->{l_ordnumber}) { $query .= qq|$union SELECT ct.*, b.description AS business, @@ -582,7 +752,7 @@ sub search { LEFT JOIN business b ON (ct.business_id = b.id) WHERE $where AND o.quotation = '0'|; - + $union = qq| UNION|; } @@ -620,6 +790,108 @@ sub search { $main::lxdebug->leave_sub(); } +sub get_contact { + $main::lxdebug->enter_sub(); + + my ($self, $myconfig, $form) = @_; + my $dbh = $form->dbconnect($myconfig); + my $query = qq|SELECT c.* + FROM contacts c + WHERE c.cp_id = $form->{cp_id} order by c.cp_id limit 1|; + my $sth = $dbh->prepare($query); + $sth->execute || $form->dberror($query); + + my $ref = $sth->fetchrow_hashref(NAME_lc); + + map { $form->{$_} = $ref->{$_} } keys %$ref; + + $sth->finish; + $dbh->disconnect; + + $main::lxdebug->leave_sub(); +} + + +sub get_shipto { + $main::lxdebug->enter_sub(); + + my ($self, $myconfig, $form) = @_; + my $dbh = $form->dbconnect($myconfig); + my $query = qq|SELECT s.* + FROM shipto s + WHERE s.id = $form->{shipto_id} order by s.id limit 1|; + my $sth = $dbh->prepare($query); + $sth->execute || $form->dberror($query); + + my $ref = $sth->fetchrow_hashref(NAME_lc); + + map { $form->{$_} = $ref->{$_} } keys %$ref; + + $sth->finish; + $dbh->disconnect; + + $main::lxdebug->leave_sub(); +} + +sub get_delivery { + $main::lxdebug->enter_sub(); + + my ($self, $myconfig, $form) = @_; + my $dbh = $form->dbconnect($myconfig); + $where = " WHERE 1=1 "; + if ($form->{shipto_id}) { + $where .= "AND ar.shipto_id=$form->{shipto_id} "; + } + if ($form->{from}) { + $where .= "AND ar.transdate >= '$form->{from}' "; + } + if ($form->{to}) { + $where .= "AND ar.transdate <= '$form->{to}' "; + } + + my $query = qq|select shiptoname, adr_code, ar.transdate, ar.invnumber, ar.ordnumber, invoice.description, qty, invoice.unit FROM ar LEFT join shipto ON (ar.shipto_id=shipto.id) LEFT join invoice on (ar.id=invoice.trans_id) LEFT join parts ON (parts.id=invoice.parts_id) LEFT join adr ON (parts.adr_id=adr.id) $where ORDER BY ar.transdate DESC LIMIT 15|; + my $sth = $dbh->prepare($query); + $sth->execute || $form->dberror($query); + + + while (my $ref = $sth->fetchrow_hashref(NAME_lc)) { + push @{ $form->{DELIVERY} }, $ref; + } + $sth->finish; + $dbh->disconnect; + + $main::lxdebug->leave_sub(); +} + +sub adr { + $main::lxdebug->enter_sub(); + + my ($self, $myconfig, $form) = @_; + my $dbh = $form->dbconnect($myconfig); + $where = " WHERE 1=1 "; + if ($form->{from}) { + $where .= "AND ar.transdate >= '$form->{from}' "; + } + if ($form->{to}) { + $where .= "AND ar.transdate <= '$form->{to}' "; + } + if ($form->{year}) { + $where = " WHERE ar.transdate >= '$form->{year}-01-01' AND ar.transdate <= '$form->{year}-12-31' "; + } + + my $query = qq|select adr_code, adr_description, sum(base_qty), parts.unit from ar LEFT join invoice on (ar.id=invoice.trans_id) LEFT join parts ON (invoice.parts_id=parts.id) LEFT join adr ON (adr.id=parts.adr_id) $where GROUP BY adr_code,adr_description,parts.unit|; + my $sth = $dbh->prepare($query); + $sth->execute || $form->dberror($query); + + + while (my $ref = $sth->fetchrow_hashref(NAME_lc)) { + push @{ $form->{ADR} }, $ref; + } + $sth->finish; + $dbh->disconnect; + + $main::lxdebug->leave_sub(); +} 1;