Ecosyste.ms: Awesome
An open API service indexing awesome lists of open source software.
https://github.com/jonasbn/bdkpo
Business::DK::PO - Danish postal order code generator/validator
https://github.com/jonasbn/bdkpo
hacktoberfest perl perl5 validation
Last synced: 3 months ago
JSON representation
Business::DK::PO - Danish postal order code generator/validator
- Host: GitHub
- URL: https://github.com/jonasbn/bdkpo
- Owner: jonasbn
- Created: 2013-12-05T13:30:28.000Z (about 11 years ago)
- Default Branch: master
- Last Pushed: 2024-09-18T16:30:34.000Z (4 months ago)
- Last Synced: 2024-09-30T15:13:10.684Z (3 months ago)
- Topics: hacktoberfest, perl, perl5, validation
- Language: Perl
- Homepage:
- Size: 80.1 KB
- Stars: 0
- Watchers: 3
- Forks: 0
- Open Issues: 2
-
Metadata Files:
- Readme: README.md
- Changelog: Changes
- Contributing: CONTRIBUTING.md
- Code of conduct: CODE_OF_CONDUCT.md
Awesome Lists containing this project
README
# NAME
Business::DK::PO - Danish postal order number validator
# VERSION
This documentation describes version 0.07
# SYNOPSIS
use Business::DK::PO qw(validate);
my $rv;
eval {
$rv = validate(1234563891234562);
};if ($@) {
die "Code is not of the expected format - $@";
}if ($rv) {
print "Code is valid";
} else {
print "Code is not valid";
}use Business::DK::PO qw(calculate);
my $code = calculate(1234);
#Using with Params::Validate
use Params::Validate qw(:all);
use Business::DK::PO qw(validatePO);sub check_cpr {
validate( @_,
{ po =>
{ callbacks =>
{ 'validate_po' => sub { validatePO($_[0]); } } } } );print $_[1]." is a valid PO\n";
}
# DESCRIPTION
The postal orders and postal order codes are used by the danish postal service
**PostDanmark**.# SUBROUTINES/METHODS
## validate
The function takes a single argument, a 16 digit postal order code.
The function returns 1 (true) in case of a valid postal order code argument and
0 (false) in case of an invalid postal order code argument.The validation function goes through the following steps.
Validation of the argument is done using the functions (all described below in
detail):- \_argument
- \_content
- \_lengthIf the argument is a valid argument the sum is calculated by **\_calculate\_sum**
based on the argument and the controlcifers array.The sum returned is checked using a modulus caluculation and based on its
validity either 1 or 0 is returned.## validatePO
A wrapper for ["validate"](#validate) with a name more suitable for importing, it is less
common and therefor less intrusive.See ["validate"](#validate) for details.
## calculate
The function takes a single argument, an integer indicating a unique reference
number you can use to identify an order. Suggestions are invoice number,
order number or similar.The number provided must be between 1 and 15 digits long, meaning a number
between 1 and 999 trillions.The function returns a postal order code consisting of the number given as
argument appended with a control cifer to make the code valid (See: b<validate>The calculation function goes through the following steps.
Validation of the argument is done using the functions (all described below in
detail):- \_argument
- \_content
- \_lengthIf the argument is a valid argument the sum is calculated by **\_calculate\_sum**
based on the argument and the controlcifers array.Based on the sum the argument the controlcifer is calculated and appended so
that the argument becomes a valid postal order code.The calculated and valid code is then returned, left-padded with zeroes to make
it 16 digits long (SEE: validate).# PRIVATE SUBROUTINES/METHODS
## \_argument
This function is called from either **validate** or **calculate** if an argument
is not provided.It dies with an error message indicating the exceptional situation and attempts
to guide the user to providing a sensible input.The **\_argument** function takes two arguments:
- minimum length required of number (mandatory)
- maximum length required of number (optional)The arguments are used in the error message issued with **die**, since this
method always dies.## \_content
This function validates the content of the argument, it croaks if the argument
is not an integer (consisting of digits only).## \_length
This function validates the length of the argument, it dies if the argument
does not fit wihtin the boundaries specified by the arguments provided:The **\_length** function takes the following arguments:
- number (mandatory), the number to be validated
- minimum length required of number (mandatory)
- maximum length required of number (optional)## \_calculate\_sum
This function takes an integer and calculates the sum bases on the the
controlcifer array.# EXPORTS
Business::DK::PO exports on request:
- ["validate"](#validate)
- ["validatePO"](#validatepo)
- ["calculate"](#calculate)
- ["\_argument"](#_argument)
- ["\_content"](#_content)
- ["\_length"](#_length)
- ["\_calculate\_sum"](#_calculate_sum)# TESTS
Coverage of the test suite is at 100%
---------------------------- ------ ------ ------ ------ ------ ------ ------
File stmt bran cond sub pod time total
---------------------------- ------ ------ ------ ------ ------ ------ ------
blib/lib/Business/DK/PO.pm 100.0 100.0 n/a 100.0 100.0 100.0 100.0
Total 100.0 100.0 n/a 100.0 100.0 100.0 100.0
---------------------------- ------ ------ ------ ------ ------ ------ ------Test::Kwalitee passes
Test::Perl::Critic passes at severity 1, brutal, with many policies disabled
though, see `/perlcriticrc`.# BUGS
Please report issues via CPAN RT:
http://rt.cpan.org/NoAuth/Bugs.html?Dist=Business-DK-PO
or by sending mail to
# SEE ALSO
- [http://www.bgbank.dk/bfBlankethaandbog](http://www.bgbank.dk/bfBlankethaandbog)
- bin/calculate\_po.pl
- bin/validate\_po.pl# AUTHOR
Jonas B. Nielsen, (jonasbn) - ``
# COPYRIGHT
Business-DK-PO is (C) by Jonas B. Nielsen, (jonasbn) 2006-2014
Business-DK-PO is released under the artistic license
The distribution is licensed under the Artistic License, as specified
by the Artistic file in the standard perl distribution
(http://www.perl.com/language/misc/Artistic.html).