#!/usr/bin/perl -w
#
#  File:         lsmb02-cli-example.pl
#  Environment:  Ledger-SMB 1.2.0+
#  Author:       Louis B. Moore
#
#  Copyright (C)   2006  Louis B. Moore
#
#  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., 59 Temple Place - Suite 330, Boston, MA  02111-1307, USA.
#
#  Revision:
#       $Id$
#
#

use File::chdir;
use HTML::Entities;


print "\n\nLedger-SMB login: ";
my $login = <STDIN>;
chomp($login);


print "\nLedger-SMB password: ";
system("stty -echo");
my $pwd = <STDIN>;
system("stty echo");
chomp($pwd);
print "\n\n";

$cmd = "login=" . $login . '&password=' . $pwd . '&path=bin&action=login';

$signin = runLScmd("./login.pl",$cmd);

if ( $signin =~ m/Error:/ ) {

	print "\nLogin error\n";
	exit;

}


while (<main::DATA>) {

	chomp;
	@rec = split(/\|/);

	$arg = 'path=bin/mozilla&login=' . $login . '&password=' . $pwd .
		'&action='       . escape(substr($rec[0],0,35)) .
		'&db='           . $rec[1] .
		'&name='         . escape(substr($rec[2],0,35)) .
		'&vendornumber=' . $rec[3] .
		'&address1='     . escape(substr($rec[4],0,35)) .
		'&address2='     . escape(substr($rec[5],0,35)) .
		'&city='         . escape(substr($rec[6],0,35)) .
		'&state='        . escape(substr($rec[7],0,35)) .
		'&zipcode='      . escape(substr($rec[8],0,35)) .
		'&country='      . escape(substr($rec[9],0,35)) .
		'&phone='        . escape(substr($rec[10],0,20)) .
		'&tax_2150=1' .
		'&taxaccounts=2150' .
		'&taxincluded=0' .
		'&terms=0';

	$rc=runLScmd("./ct.pl",$arg);

	if ($rc =~ m/Vendor saved!/) {

		print "$rec[2] SAVED\n";

	} else {

		print "$rec[2] ERROR\n";

	}

}


$cmd = "login=" . $login . '&password=' . $pwd . '&path=bin&action=logout';

$signin = runLScmd("./login.pl",$cmd);

if ( $signin =~ m/Error:/ ) {

    print "\nLogout error\n";

}

exit;


#*******************************************************
# Subroutines
#*******************************************************


sub runLScmd {

    my $cmd  = shift;
    my $args = shift;
    my $i    = 0;
    my $results;

    local $CWD = "/usr/local/ledger-smb/";

    $cmd = $cmd . " \"" . $args . "\"";

    $results = `$cmd 2>&1`;

    return $results;

}

sub escape {

    my $str = shift;

    if ($str) {

	decode_entities($str);
	$str =~ s/([^a-zA-Z0-9_.-])/sprintf("%%%02x", ord($1))/ge;
    }

    return $str;

}


#*******************************************************
# Record Format
#*******************************************************
#
# action | db | name | vendornumber | address1 | address2 | city | state | zipcode | country | phone
#

__END__
save|vendor|Parts are Us|1377|238 Riverview|Suite 11|Cheese Head|WI|56743|USA|555-123-3322|
save|vendor|Widget Heaven|1378|41 S. Riparian Way||Show Me|MO|39793|USA|555-231-3309|
save|vendor|Consolidated Spackle|1379|1010 Binary Lane|Dept 1101|Beverly Hills|CA|90210|USA|555-330-7639 x772|