EAFDSS
view release on metacpan or search on metacpan
lib/EAFDSS/Dummy.pm view on Meta::CPAN
sub PROTO_IssueReport {
my($self) = shift @_;
my(%reply, $replyCode, $status1, $status2, $dailySigns, $lastZ, $i, $z, $data, $time, $date, $totalSigns);
$self->debug(" [PROTO] Issue Report");
my($dummy) = Config::IniFiles->new(-file => $self->{FILENAME});
my($sec, $min, $hour, $mday, $mon, $year) = localtime();
$date = sprintf("%02d%02d%02d", $mday, $mon+1, $year - 100);
$time = sprintf("%02d%02d%02d", $hour, $min, $sec);
$totalSigns = $dummy->val('MAIN', 'TOTAL_SIGN');
$dailySigns = $dummy->val('MAIN', 'CUR_SIGN');
$lastZ = $dummy->val('MAIN', 'CUR_FISCAL');
$dummy->newval('MAIN', 'CUR_FISCAL', $dummy->val('MAIN', 'CUR_FISCAL') + 1);
$data = "";
for ($i=1; $i < $dummy->val('MAIN', 'CUR_SIGN'); $i++) {
$data .= $dummy->val('SIGNS', $i);
}
$z = uc(sha1_hex($data));
for ($i=1; $i < $dummy->val('MAIN', 'CUR_SIGN'); $i++) {
$dummy->delval('SIGNS', $i);
}
my($z_entry) = sprintf("%s,%s,%s,%s,%s", $date, $time, $dailySigns, $totalSigns, $z);
$dummy->newval('FISCAL', $lastZ, $z_entry);
$dummy->newval('MAIN', 'CUR_SIGN', 1);
$dummy->RewriteConfig();
return (0);
}
=head2 errMessage
=cut
sub errMessage {
my($self) = shift @_;
my($errCode) = shift @_;
switch ($errCode) {
case 00+0x00 { return "No errors - success"}
case 00+0x01 { return "Wrong number of fields"}
case 00+0x02 { return "Field too long"}
case 00+0x03 { return "Field too small"}
case 00+0x04 { return "Field fixed size mismatch"}
case 00+0x05 { return "Field range or type check failed"}
case 00+0x06 { return "Bad request code"}
case 00+0x09 { return "Printing type bad"}
case 00+0x0A { return "Cannot execute with day open"}
case 00+0x0B { return "RTC programming requires jumper"}
case 00+0x0C { return "RTC date or time invalid"}
case 00+0x0D { return "No records in fiscal period"}
case 00+0x0E { return "Device is busy in another task"}
case 00+0x0F { return "No more header records allowed"}
case 00+0x10 { return "Cannot execute with block open"}
case 00+0x11 { return "Block not open"}
case 00+0x12 { return "Bad data stream"}
case 00+0x13 { return "Bad signature field"}
case 00+0x14 { return "Z closure time limit"}
case 00+0x15 { return "Z closure not found"}
case 00+0x16 { return "Z closure record bad"}
case 00+0x17 { return "User browsing in progress"}
case 00+0x18 { return "Signature daily limit reached"}
case 00+0x19 { return "Printer paper end detected"}
case 00+0x1A { return "Printer is offline"}
case 00+0x1B { return "Fiscal unit is offline"}
case 00+0x1C { return "Fatal hardware error"}
case 00+0x1D { return "Fiscal unit is full"}
case 00+0x1E { return "No data passed for signature"}
case 00+0x1F { return "Signature does not exist"}
case 00+0x20 { return "Battery fault detected"}
case 00+0x21 { return "Recovery in progress"}
case 00+0x22 { return "Recovery only after CMOS reset"}
case 00+0x23 { return "Real-Time Clock needs programming"}
case 00+0x24 { return "Z closure date warning"}
case 00+0x25 { return "Bad character in stream"}
case 00+0x26 { return ""}
case 00+0x01 { return "Device not accessible"}
case 64+0x01 { return "Device not accessible"}
case 64+0x02 { return "No such file"}
case 64+0x03 { return "Device Sync Failed"}
case 64+0x04 { return "Function not supported"}
else { return undef}
}
}
=head2 UTIL_devStatus
=cut
sub UTIL_devStatus {
my($self) = shift @_;
my($status) = sprintf("%08b", shift);
my(@status) = split(//, $status);
my($busy, $fatal, $paper, $cmos, $printer, $user, $fiscal, $battery) =
($status[7],$status[6],$status[5],$status[4],$status[3],$status[2],$status[1],$status[0]);
return ($busy, $fatal, $paper, $cmos, $printer, $user, $fiscal, $battery);
}
=head2 UTIL_appStatus
=cut
sub UTIL_appStatus {
my($self) = shift @_;
my($status) = sprintf("%08b", shift);
my(@status) = split(//, $status);
my($day, $signature, $recovery, $fiscalWarn, $dailyFull, $fiscalFull) =
($status[6],$status[5],$status[4],$status[2],$status[1],$status[0]);
return ($day, $signature, $recovery, $fiscalWarn, $dailyFull, $fiscalFull);
}
=head2 UTIL_date6ToHost
=cut
sub UTIL_date6ToHost {
my($self) = shift @_;
my($var) = shift @_;
$var =~ s/(\d\d)(\d\d)(\d\d)/$3$2$1/;
return $var;
}
=head2 UTIL_time6toHost
=cut
sub UTIL_time6toHost {
my($self) = shift @_;
my($var) = shift @_;
$var =~ s/(\d\d)(\d\d)(\d\d)/$1$2/;
return $var;
}
sub _SetCMOSError {
my($self) = shift @_;
my($i);
$self->debug(" [SPECIAL] Setting CMOS to error");
my($dummy) = Config::IniFiles->new(-file => $self->{FILENAME});
$dummy->newval('MAIN', 'CMOS_ERROR', 1);
for ($i=1; $i < $dummy->val('MAIN', 'CUR_SIGN'); $i++) {
$dummy->delval('SIGNS', $i);
}
$dummy->newval('MAIN', 'CUR_SIGN', 1);
$dummy->RewriteConfig();
}
( run in 2.365 seconds using v1.01-cache-2.11-cpan-75ffa21a3d4 )