1 #=====================================================================
 
   4 # Based on SQL-Ledger Version 2.1.9
 
   5 # Web http://www.lx-office.org
 
   7 #=====================================================================
 
   8 # SQL-Ledger Accounting
 
  11 #  Author: Philip Reetz
 
  12 #   Email: p.reetz@linet-services.de
 
  13 #     Web: http://www.linet-services.de/
 
  16 # This program is free software; you can redistribute it and/or modify
 
  17 # it under the terms of the GNU General Public License as published by
 
  18 # the Free Software Foundation; either version 2 of the License, or
 
  19 # (at your option) any later version.
 
  21 # This program is distributed in the hope that it will be useful,
 
  22 # but WITHOUT ANY WARRANTY; without even the implied warranty of
 
  23 # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
 
  24 # GNU General Public License for more details.
 
  25 # You should have received a copy of the GNU General Public License
 
  26 # along with this program; if not, write to the Free Software
 
  27 # Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
 
  28 #======================================================================
 
  30 # Software license module
 
  32 #======================================================================
 
  39   $main::lxdebug->enter_sub();
 
  41   my ($self, $myconfig, $form) = @_;
 
  43   $dbh = $form->dbconnect($myconfig);
 
  46     qq| INSERT INTO license (licensenumber) VALUES ('$form->{licensenumber}')|;
 
  47   $sth = $dbh->prepare($query);
 
  48   $sth->execute || $form->dberror($query);
 
  52     qq|SELECT l.id FROM license l WHERE l.licensenumber = '$form->{licensenumber}'|;
 
  53   $sth = $dbh->prepare($query);
 
  54   $sth->execute || $form->dberror($query);
 
  55   ($license_id) = $sth->fetchrow_array;
 
  59   $query = qq|UPDATE license SET
 
  60               validuntil = '$form->{validuntil}',
 
  61               licensenumber = '$form->{licensenumber}',
 
  62               parts_id = $form->{parts_id},
 
  63               customer_id = $form->{customer_id},
 
  64               comment = '$form->{comment}',
 
  65               quantity = $form->{quantity}
 
  66               WHERE id=$license_id|;
 
  67   $sth = $dbh->prepare($query);
 
  68   $sth->execute || $form->dberror($query);
 
  71   if ($form->{own_product}) {
 
  72     $form->update_balance($dbh, "parts", "onhand", qq|id = ?|,
 
  73                           1, $form->{parts_id});
 
  78   $main::lxdebug->leave_sub();
 
  84   $main::lxdebug->enter_sub();
 
  86   my ($self, $myconfig, $form) = @_;
 
  89   my $dbh = $form->dbconnect($myconfig);
 
  91   my $f     = $dbh->quote('%' . $form->{"customer_name"} . '%');
 
  92   my $query = qq|SELECT * FROM customer WHERE name ilike $f|;
 
  93   my $sth   = $dbh->prepare($query);
 
  94   $sth->execute || $form->dberror($query);
 
  95   $form->{"all_customers"} = [];
 
  96   while ($ref = $sth->fetchrow_hashref(NAME_lc)) {
 
  97     push(@{ $form->{"all_customers"} }, $ref);
 
 101   $main::lxdebug->leave_sub();
 
 105   $main::lxdebug->enter_sub();
 
 107   my ($self, $myconfig, $form) = @_;
 
 108   my ($ref, $sth, $f, $s, $query);
 
 109   my $dbh = $form->dbconnect($myconfig);
 
 111   if ($form->{"partnumber"} || $form->{"description"}) {
 
 112     $f = "(parts_id IN (SELECT id FROM parts WHERE ";
 
 113     if ($form->{"partnumber"}) {
 
 116         . $dbh->quote('%' . $form->{"partnumber"} . '%') . ")";
 
 118     if ($form->{"description"}) {
 
 119       $f .= " AND " if ($form->{"partnumber"});
 
 121         "(description ILIKE "
 
 122         . $dbh->quote('%' . $form->{"description"} . '%') . ")";
 
 127   if ($form->{"customer_name"}) {
 
 128     $f .= " AND " if ($f);
 
 130       "(l.customer_id IN (SELECT id FROM customer WHERE name ILIKE "
 
 131       . $dbh->quote('%' . $form->{"customer_name"} . '%') . "))";
 
 134   if (!$form->{"all"} && $form->{"expiring_in"}) {
 
 135     $f .= " AND " if ($f);
 
 137       "(validuntil < now() + "
 
 138       . $dbh->quote("" . $form->{"expiring_in"} . " months") . ")";
 
 141   if (!$form->{"show_expired"}) {
 
 142     $f .= " AND " if ($f);
 
 143     $f .= "(validuntil >= now())";
 
 147     $f = "WHERE (inventory_accno_id notnull) AND $f";
 
 149     $f = "WHERE (inventory_accno_id notnull)";
 
 152   if ($form->{"sortby"} eq "partnumber") {
 
 154   } elsif ($form->{"sortby"} eq "description") {
 
 155     $s = "p.description";
 
 156   } elsif ($form->{"sortby"} eq "name") {
 
 158   } elsif ($form->{"sortby"} eq "validuntil") {
 
 163   if ($form->{"sortasc"}) {
 
 170       "SELECT l.*, p.partnumber, p.description, c.name, a.invnumber "
 
 172     . "LEFT JOIN parts p ON (p.id = l.parts_id) "
 
 173     . "LEFT JOIN customer c ON (c.id = l.customer_id) "
 
 174     . "LEFT JOIN ar a ON "
 
 175     . "(a.id = (SELECT i.trans_id FROM invoice i WHERE i.id = "
 
 176     . "(SELECT li.trans_id FROM licenseinvoice li WHERE li.license_id = l.id))) "
 
 179   $sth = $dbh->prepare($query);
 
 180   $sth->execute() || $form->dberror($query);
 
 181   $form->{"licenses"} = [];
 
 182   while ($ref = $sth->fetchrow_hashref(NAME_lc)) {
 
 183     push(@{ $form->{"licenses"} }, $ref);
 
 188   $main::lxdebug->leave_sub();
 
 192   $main::lxdebug->enter_sub();
 
 194   my ($self, $myconfig, $form) = @_;
 
 195   my ($ref, $sth, $query);
 
 196   my $dbh = $form->dbconnect($myconfig);
 
 199       "SELECT l.*, p.partnumber, p.description, c.name, c.street, "
 
 200     . "c.zipcode, c.city, c.country, c.contact, c.phone, c.fax, c.homepage, "
 
 201     . "c.email, c.notes, c.customernumber, c.language, a.invnumber "
 
 203     . "LEFT JOIN parts p ON (p.id = l.parts_id) "
 
 204     . "LEFT JOIN customer c ON (c.id = l.customer_id) "
 
 205     . "LEFT JOIN ar a ON "
 
 206     . "(a.id = (SELECT i.trans_id FROM invoice i WHERE i.id = "
 
 207     . "(SELECT li.trans_id FROM licenseinvoice li WHERE li.license_id = l.id))) "
 
 208     . "LEFT JOIN invoice i ON "
 
 210     . "(SELECT li.trans_id FROM licenseinvoice li WHERE li.license_id = l.id)) "
 
 213   $sth = $dbh->prepare($query);
 
 214   $sth->execute() || $form->dberror($query);
 
 215   $form->{"license"} = $sth->fetchrow_hashref(NAME_lc);
 
 218   $main::lxdebug->leave_sub();