X-Git-Url: http://wagnertech.de/git?a=blobdiff_plain;f=SL%2FCT.pm;h=a4eb0b216b83f9f705822bf0c3df8f5e90f0e8a6;hb=8815371268e0e1f627835d5f8344f04730cbf0af;hp=a96420c6d71a003faf2f18ac86edebfb3e664099;hpb=4dbb09950c9f5596646537c12d991c99086fe7c1;p=kivitendo-erp.git diff --git a/SL/CT.pm b/SL/CT.pm index a96420c6d..a4eb0b216 100644 --- a/SL/CT.pm +++ b/SL/CT.pm @@ -36,25 +36,25 @@ #====================================================================== package CT; - +use Data::Dumper; +use SL::DBUtils; sub get_tuple { $main::lxdebug->enter_sub(); 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 shipto_id, shiptoname, shiptodepartment_1 + 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 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; + $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)); + + %tmp = (); + + $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->{GREETINGS}} = sort(keys(%tmp)); + @{ $form->{COMPANY_GREETINGS} } = sort(keys(%tmp)); %tmp = (); - $query = "SELECT DISTINCT(c.cp_title) FROM contacts c WHERE c.cp_title LIKE '%'"; + $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)); + @{ $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->{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,141 @@ 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->{payment_id} *= 1; + $form->{taxzone_id} *= 1; $form->{creditlimit} = $form->parse_amount($myconfig, $form->{creditlimit}); - - my ($query, $sth); + + my ($query, $sth, $f_id); if ($form->{id}) { + + $query = qq|SELECT id FROM customer + WHERE customernumber = '$form->{customernumber}'|; + $sth = $dbh->prepare($query); + $sth->execute || $form->dberror($query); + (${f_id}) = $sth->fetchrow_array; + $sth->finish; + if ((${f_id} ne $form->{id}) and (${f_id} ne "")) { + + $main::lxdebug->leave_sub(); + return 3; + } $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); + if (!$form->{customernumber} && $form->{business}) { + $form->{customernumber} = + $form->update_business($myconfig, $form->{business}); + } + if (!$form->{customernumber}) { + $form->{customernumber} = + $form->update_defaults($myconfig, "customernumber"); + } + + $query = qq|SELECT c.id FROM customer c + WHERE c.customernumber = '$form->{customernumber}'|; + $sth = $dbh->prepare($query); + $sth->execute || $form->dberror($query); + (${f_id}) = $sth->fetchrow_array; + $sth->finish; + if (${f_id} ne "") { + $main::lxdebug->leave_sub(); + return 3; + } $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); @@ -268,19 +437,11 @@ sub save_customer { ($form->{id}) = $sth->fetchrow_array; $sth->finish; - if (!$form->{customernumber} && $form->{business}) { - $form->{customernumber} = $form->update_business($myconfig, $form->{business}); - } - if (!$form->{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 +471,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 = | . conv_i($form->{language_id}, "NULL") . qq|, + 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 +517,15 @@ sub save_customer { $dbh->do($query) || $form->dberror($query); } } - # 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 +534,46 @@ 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->{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 +582,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 +621,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 = | . conv_i($form->{language_id}, "NULL") . qq|, username = '$form->{username}', user_password = '$form->{user_password}', v_customer_id = '$form->{v_customer_id}' @@ -441,7 +631,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 +641,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"}) { @@ -468,15 +659,14 @@ sub save_vendor { } # 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 delete { $main::lxdebug->enter_sub(); @@ -495,7 +685,6 @@ sub delete { $main::lxdebug->leave_sub(); } - sub search { $main::lxdebug->enter_sub(); @@ -506,7 +695,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 +742,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 +754,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 +771,7 @@ sub search { LEFT JOIN business b ON (ct.business_id = b.id) WHERE $where AND o.quotation = '0'|; - + $union = qq| UNION|; } @@ -620,6 +809,84 @@ 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.shipto_id = $form->{shipto_id}|; + #WHERE s.shipto_id = $form->{shipto_id} order by s.shipto_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); + $tabelle = ($form->{db} eq "vendor") ? "ap" : "ar"; + + $where = " WHERE 1=1 "; + if ($form->{shipto_id} && $tabelle eq "ar") { + $where .= "AND $tabelle.shipto_id=$form->{shipto_id} "; + } else { + $where .="AND $tabelle.$form->{db}_id=$form->{id} "; + } + if ($form->{from}) { + $where .= "AND $tabelle.transdate >= '$form->{from}' "; + } + if ($form->{to}) { + $where .= "AND $tabelle.transdate <= '$form->{to}' "; + } + my $query = qq|select shiptoname, $tabelle.transdate, $tabelle.invnumber, $tabelle.ordnumber, invoice.description, qty, invoice.unit FROM $tabelle LEFT JOIN shipto ON |; + $query .= ($tabelle eq "ar") ? qq|($tabelle.shipto_id=shipto.shipto_id) |:qq|($tabelle.id=shipto.trans_id) |; + $query .=qq|LEFT join invoice on ($tabelle.id=invoice.trans_id) LEFT join parts ON (parts.id=invoice.parts_id) $where ORDER BY $tabelle.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(); +} 1;