<?

require "/usr/lib/cherry/dbaccess";
require "/usr/lib/cherry/dateutils";

use Data::Dumper;

my $where;
$where="AND descr LIKE '%client_id=\"$client_id\"%' " if($client_id);
$where="AND ($action) " if ($action);


my $sql="SELECT operator,date,action,descr FROM base_history WHERE 1=1 $where ORDER BY date";
my $sth=$dbh->prepare($sql);
$sth->execute;

my %hc;
my %service_edit;
my %hdiff;
my %payments;
my %bills;
my %clients;

while(my($operator,$date,$action,$descr) = $sth->fetchrow_array ) {
	
	my $str=$descr;
	my %h;
	while ($str=~ s/(\w+)="([^"]+)//) {
		my $key=$1;
		my $value=$2;
		$h{$key}=$value;

	}



        if($action=~/base/) {

                my %lh= %{ $clients{ $h{client_id} } };
                my %changes;
                foreach my $key (%lh) {
                                if(! ($lh{$key} eq $h{$key}) ) {
                                        $changes{$key}=$h{$key};
                                }
                }
                if(%changes) {
                        $changes{client_id} = $h{client_id};
                        $hdiff{$date}{$operator}{$action}={%changes};
                }

                $clients{ $h{client_id} } = {%h};

        }



        if($action=~/bill\/(given_service_(edit|delete)_commit|bill_(edit|delete)_commit).tpl/) {

                my %lh= %{ $bills{ $h{bill_id} } };
                my %changes;
                foreach my $key (%lh) {
                                if(! ($lh{$key} eq $h{$key}) ) {
                                        $changes{$key}=$h{$key};
                                }
                }
                if(%changes) {
                        $changes{bill_id} = $h{bill_id};
                        $hdiff{$date}{$operator}{$action}={%changes};
                }

                $bills{ $h{bill_id} } = {%h};

        }


	if($action=~/payment_(edit|delete)_commit.tpl/) {

                my %lh= %{ $payments{ $h{payment_id} } };
                my %changes;
                foreach my $key (%lh) {
                                if(! ($lh{$key} eq $h{$key}) ) {
                                        $changes{$key}=$h{$key};
                                }
                }
		if(%changes) {
                	$changes{client_id} = $h{client_id};
                	$hdiff{$date}{$operator}{$action}={%changes};
		}

                $payments{ $h{payment_id} } = {%h};

	}

	if($action=~/\/service_(edit|lock|delete)_commit/) {
		my %lh= %{ $service_edit{ $h{user_id} } };
		my %changes;
		foreach my $key (%lh) {
		
				if(! ($lh{$key} eq $h{$key}) ) {
					$changes{$key}=$h{$key};
				}
		}

		if(%changes) {
			$changes{user_id} = $h{user_id};
			$hdiff{$date}{$operator}{$action}={%changes};
		}

		$service_edit{ $h{user_id} } = {%h};
	}
		
}

?>
<TABLE width="98%">
<COL width="80px"><COL width="80px"><COL width="250px"><COL>
<THEAD>
	<TD></TD>
	<TD></TD>
	<TD></TD>
	<TD></TD>
</THEAD>
<?

$da{'payment/payment_edit_commit.tpl'}='/ ';
$da{'payment/payment_delete_commit.tpl'}=' ';
$da{'bill/given_service_edit_commit.tpl'}='/ ';
$da{'base/change_bookkeeper_balance_commit.tpl'}=' ';
$da{'bill/given_service_delete_commit.tpl'} = ' ';
$da{'dry_pair/service_edit_commit.tpl'} = '.  - / ';

foreach my $date (sort keys %hdiff) {
		foreach my $operator (sort keys %{ $hdiff{$date} } ) {
			foreach my $action (sort keys %{ $hdiff{$date}{$operator} } ) {
				$date_=convert_date($date,'YYYY-MM-DD');
				if($da{$action}) {
					$action_descr=$da{$action};	
				} else {
					$action_descr=$action;
				}
				$param_descr=Dumper ($hdiff{$date}{$operator}{$action});
?>
<TR>
	<TD>$date_</TD>
        <TD>$operator</TD>
        <TD>$action_descr</TD>
        <TD>$param_descr</TD>
</TR>
<?
			}
		}

}
?>

</TABLE>
