+++ /dev/null
-#=====================================================================
-# LX-Office ERP
-# Copyright (C) 2004
-# Based on SQL-Ledger Version 2.1.9
-# Web http://www.lx-office.org
-#
-#=====================================================================
-# SQL-Ledger Accounting
-# Copyright (C) 1998-2002
-#
-# Author: Dieter Simader
-# Email: dsimader@sql-ledger.org
-# Web: http://www.sql-ledger.org
-#
-# Contributors:
-#
-# This program is free software; you can redistribute it and/or modify
-# it under the terms of the GNU General Public License as published by
-# the Free Software Foundation; either version 2 of the License, or
-# (at your option) any later version.
-#
-# This program is distributed in the hope that it will be useful,
-# but WITHOUT ANY WARRANTY; without even the implied warranty of
-# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-# GNU General Public License for more details.
-# You should have received a copy of the GNU General Public License
-# along with this program; if not, write to the Free Software
-# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston,
-# MA 02110-1335, USA.
-#======================================================================
-#
-# Partsgroups and pricegroups
-#
-#======================================================================
-
-package PE;
-
-use Data::Dumper;
-
-use SL::DBUtils;
-use SL::DB;
-
-use strict;
-
-sub partsgroups {
- $main::lxdebug->enter_sub();
-
- my ($self, $myconfig, $form) = @_;
-
- # connect to database
- my $dbh = SL::DB->client->dbh;
-
- my ($where, @values);
-
- if ($form->{partsgroup}) {
- $where .= qq| AND partsgroup ILIKE ?|;
- push(@values, like($form->{partsgroup}));
- }
-
- if ($form->{status} eq 'orphaned') {
- $where .=
- qq| AND id NOT IN | .
- qq| (SELECT DISTINCT partsgroup_id FROM parts | .
- qq| WHERE NOT partsgroup_id ISNULL | .
- qq| UNION | .
- qq| SELECT DISTINCT partsgroup_id FROM custom_variable_config_partsgroups | .
- qq| WHERE NOT partsgroup_id ISNULL) |;
- }
-
- substr($where, 0, 4) = "WHERE " if ($where);
-
- my $sortorder = $form->{sort} ? $form->{sort} : "partsgroup";
- $sortorder =~ s/[^a-z_]//g;
-
- my $query =
- qq|SELECT id, partsgroup FROM partsgroup | .
- $where .
- qq|ORDER BY $sortorder|;
-
- $form->{item_list} = selectall_hashref_query($form, $dbh, $query, @values);
-
- $main::lxdebug->leave_sub();
-
- return scalar(@{ $form->{item_list} });
-}
-
-sub save_partsgroup {
- $main::lxdebug->enter_sub();
-
- my ($self, $myconfig, $form) = @_;
-
- # connect to database
- my $dbh = SL::DB->client->dbh;
-
- $form->{discount} /= 100;
-
- my @values = ($form->{partsgroup});
- my $query;
-
- if ($form->{id}) {
- $query = qq|UPDATE partsgroup SET partsgroup = ? WHERE id = ?|;
- push(@values, $form->{id});
- } else {
- $query = qq|INSERT INTO partsgroup (partsgroup) VALUES (?)|;
- }
- do_query($form, $dbh, $query, @values);
-
- $main::lxdebug->leave_sub();
-}
-
-sub get_partsgroup {
- $main::lxdebug->enter_sub();
-
- my ($self, $myconfig, $form) = @_;
-
- # connect to database
- my $dbh = SL::DB->client->dbh;
-
- my $query =
- qq|SELECT pg.*, | .
- qq|(SELECT COUNT(*) FROM parts WHERE partsgroup_id = ?) = 0 AS orphaned | .
- qq|FROM partsgroup pg | .
- qq|WHERE pg.id = ?|;
- my $sth = prepare_execute_query($form, $dbh, $query, $form->{id},
- $form->{id});
- my $ref = $sth->fetchrow_hashref("NAME_lc");
-
- map({ $form->{$_} = $ref->{$_} } keys(%{$ref}));
- $sth->finish;
-
- # also not orphaned if partsgroup is selected for a cvar filter
- if ($form->{orphaned}) {
- my $cvar_count = scalar( @{ SL::DB::PartsGroup->new(id => $form->{id})->custom_variable_configs } );
- $form->{orphaned} = !$cvar_count;
- }
-
- $main::lxdebug->leave_sub();
-}
-
-sub delete_tuple {
- $main::lxdebug->enter_sub();
-
- my ($self, $myconfig, $form) = @_;
-
- # connect to database
- SL::DB->client->with_transaction(sub {
- my $dbh = SL::DB->client->dbh;
-
- my $table = $form->{type} eq "pricegroup" ? "pricegroup" : "partsgroup";
-
- my $query = qq|DELETE FROM $table WHERE id = ?|;
- do_query($form, $dbh, $query, $form->{id});
- 1;
- }) or do { die SL::DB->client->error };
-
- $main::lxdebug->leave_sub();
-}
-
-##########################
-# get pricegroups from database
-#
-sub pricegroups {
- $main::lxdebug->enter_sub();
-
- my ($self, $myconfig, $form) = @_;
-
- # connect to database
- my $dbh = SL::DB->client->dbh;
-
- my ($where, @values);
-
- if ($form->{pricegroup}) {
- $where .= qq| AND pricegroup ILIKE ?|;
- push(@values, like($form->{pricegroup}));
- }
-
- if ($form->{status} eq 'orphaned') {
- my $first = 1;
-
- $where .= qq| AND id NOT IN (|;
- foreach my $table (qw(invoice orderitems prices)) {
- $where .= "UNION " unless ($first);
- $first = 0;
- $where .=
- qq|SELECT DISTINCT pricegroup_id FROM $table | .
- qq|WHERE NOT pricegroup_id ISNULL |;
- }
- $where .= qq|) |;
- }
-
- substr($where, 0, 4) = "WHERE " if ($where);
-
- my $sortorder = $form->{sort} ? $form->{sort} : "pricegroup";
- $sortorder =~ s/[^a-z_]//g;
-
- my $query =
- qq|SELECT id, pricegroup FROM pricegroup | .
- $where .
- qq|ORDER BY $sortorder|;
-
- $form->{item_list} = selectall_hashref_query($form, $dbh, $query, @values);
-
- $main::lxdebug->leave_sub();
-
- return scalar(@{ $form->{item_list} });
-}
-
-########################
-# save pricegruop to database
-#
-sub save_pricegroup {
- $main::lxdebug->enter_sub();
-
- my ($self, $myconfig, $form) = @_;
-
- SL::DB->client->with_transaction(sub {
- my $dbh = SL::DB->client->dbh;
- my $query;
-
- $form->{discount} /= 100;
-
- my @values = ($form->{pricegroup});
-
- if ($form->{id}) {
- $query = qq|UPDATE pricegroup SET pricegroup = ? WHERE id = ? |;
- push(@values, $form->{id});
- } else {
- $query = qq|INSERT INTO pricegroup (pricegroup) VALUES (?)|;
- }
- do_query($form, $dbh, $query, @values);
- 1;
- }) or do { die SL::DB->client->error };
-
- $main::lxdebug->leave_sub();
-}
-
-############################
-# get one pricegroup from database
-#
-sub get_pricegroup {
- $main::lxdebug->enter_sub();
-
- my ($self, $myconfig, $form) = @_;
-
- # connect to database
- my $dbh = SL::DB->client->dbh;
-
- my $query = qq|SELECT id, pricegroup FROM pricegroup WHERE id = ?|;
- my $sth = prepare_execute_query($form, $dbh, $query, $form->{id});
- my $ref = $sth->fetchrow_hashref("NAME_lc");
-
- map({ $form->{$_} = $ref->{$_} } keys(%{$ref}));
-
- $sth->finish;
-
- my $first = 1;
-
- my @values = ();
- $query = qq|SELECT |;
- foreach my $table (qw(invoice orderitems prices)) {
- $query .= " + " unless ($first);
- $first = 0;
- $query .= qq|(SELECT COUNT(*) FROM $table WHERE pricegroup_id = ?) |;
- push(@values, $form->{id});
- }
-
- ($form->{orphaned}) = selectrow_query($form, $dbh, $query, @values);
- $form->{orphaned} = !$form->{orphaned};
-
- $main::lxdebug->leave_sub();
-}
-
-1;
-
+++ /dev/null
-#=====================================================================
-# LX-Office ERP
-# Copyright (C) 2004
-# Based on SQL-Ledger Version 2.1.9
-# Web http://www.lx-office.org
-#
-#=====================================================================
-# SQL-Ledger Accounting
-# Copyright (c) 1998-2002
-#
-# Author: Dieter Simader
-# Email: dsimader@sql-ledger.org
-# Web: http://www.sql-ledger.org
-#
-#
-# This program is free software; you can redistribute it and/or modify
-# it under the terms of the GNU General Public License as published by
-# the Free Software Foundation; either version 2 of the License, or
-# (at your option) any later version.
-#
-# This program is distributed in the hope that it will be useful,
-# but WITHOUT ANY WARRANTY; without even the implied warranty of
-# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-# GNU General Public License for more details.
-# You should have received a copy of the GNU General Public License
-# along with this program; if not, write to the Free Software
-# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston,
-# MA 02110-1335, USA.
-#======================================================================
-#
-# partsgroup administration
-#
-#======================================================================
-
-use SL::PE;
-
-require "bin/mozilla/common.pl";
-
-use strict;
-
-1;
-
-# end of main
-
-sub add {
- $::lxdebug->enter_sub;
- $::auth->assert('config');
-
- $::form->{title} = "Add";
- $::form->{callback} ||= "$::form->{script}?action=add&type=$::form->{type}";
-
- call_sub("form_$::form->{type}");
-
- $::lxdebug->leave_sub;
-}
-
-sub edit {
- $::lxdebug->enter_sub;
- $::auth->assert('config');
-
- $::form->{title} = "Edit";
-
- if ($::form->{type} eq 'partsgroup') {
- PE->get_partsgroup(\%::myconfig, $::form);
- }
- call_sub("form_$::form->{type}");
-
- $::lxdebug->leave_sub;
-}
-
-sub search {
- $::lxdebug->enter_sub;
- $::auth->assert('config');
-
- $::form->header;
- print $::form->parse_html_template('pe/search', {
- is_pricegroup => $::form->{type} eq 'pricegroup',
- });
-
- $::lxdebug->leave_sub;
-}
-
-sub save {
- $::lxdebug->enter_sub;
- $::auth->assert('config');
-
- if ($::form->{type} eq 'partsgroup') {
- $::form->isblank("partsgroup", $::locale->text('Group missing!'));
- PE->save_partsgroup(\%::myconfig, $::form);
- $::form->redirect($::locale->text('Group saved!'));
- }
-
- # saving the history
- if(!exists $::form->{addition} && $::form->{id} ne "") {
- $::form->{snumbers} = qq|projectnumber_| . $::form->{projectnumber};
- $::form->{addition} = "SAVED";
- $::form->save_history;
- }
- # /saving the history
-
- $::lxdebug->leave_sub;
-}
-
-sub delete {
- $::lxdebug->enter_sub;
- $::auth->assert('config');
-
- PE->delete_tuple(\%::myconfig, $::form);
-
- if ($::form->{type} eq 'partsgroup') {
- $::form->redirect($::locale->text('Group deleted!'));
- }
- $::lxdebug->leave_sub;
-}
-
-sub continue { call_sub($::form->{nextsub}); }
-
-sub partsgroup_report {
- $::lxdebug->enter_sub;
- $::auth->assert('config');
-
- $::form->{$_} = $::form->unescape($::form->{$_}) for qw(partsgroup);
- PE->partsgroups(\%::myconfig, $::form);
-
- my $callback = build_std_url("action=partsgroup_report", qw(type status));
-
- my $option = '';
- $option .= $::locale->text('All') if $::form->{status} eq 'all';
- $option .= $::locale->text('Orphaned') if $::form->{status} eq 'orphaned';
-
- if ($::form->{partsgroup}) {
- $callback .= "&partsgroup=$::form->{partsgroup}";
- $option .= ", " . $::locale->text('Group') . " : $::form->{partsgroup}";
- }
-
- # escape callback
- $::form->{callback} = $callback;
-
- $::form->header;
- print $::form->parse_html_template('pe/partsgroup_report', {
- option => $option,
- callback => $callback,
- editlink => build_std_url('action=edit', qw(type status callback)),
- });
-
- $::lxdebug->leave_sub;
-}
-
-sub form_partsgroup {
- $::lxdebug->enter_sub;
- $::auth->assert('config');
-
- # $locale->text('Add Group')
- # $locale->text('Edit Group')
- $::form->{title} = $::locale->text("$::form->{title} Group");
-
- $::form->header;
- print $::form->parse_html_template('pe/partsgroup_form');
-
- $::lxdebug->leave_sub;
-}