NAME
Business::DPD::Label - one DPD label
SYNOPSIS
use
Business::DPD::Label;
my
$label
= Business::DPD::Label->new(
$dpd
, {
zip
=>
'12555'
,
country
=>
'DE'
,
depot
=>
'1090'
,
serial
=>
'50123456%0878'
,
service_code
=>
'101'
,
weight
=>
'6 kg'
,
});
$label
->calc_fields;
say
$label
->tracking_number;
say
$label
->d_sort;
use
Business::DPD::Label;
my
$label2
= Business::DPD::Label->new(
$dpd
, {
address
=> Business::DPD::Address->new(
$dpd
, {
name1
=>
'Hans Mustermann GmbH'
,
street
=>
'Musterstr. 12a'
,
postal
=>
'63741'
,
city
=>
'Aschaffenburg'
,
country
=>
'DE'
,
phone
=>
'06021/112'
,
}),
serial
=>
'9700001010'
,
service_code
=>
'101'
,
shipment_count_this
=> 1,
shipment_count_total
=> 2,
reference_number
=> [
'Testpaket2'
],
weight_g
=> 6000,
});
DESCRIPTION
Calculate the data that's needed for a valid addresse label.
METHODS
Public Methods
new
my
$label
= Business::DPD::Label->new(
$dpd
, {
zip
=>
'12555'
,
country
=>
'DE'
,
depot
=>
'1090'
,
serial
=>
'5012345678'
,
service_code
=>
'101'
,
});
TODO?: take a Business::DPD::Address as an agrument (instead of zip & country)
calc_fields
$label
->calc_fields;
Calculate all caluclatable fields from the provided data using the DPD database from $schema
:
target_country
calc_tracking_number
$label
->calc_tracking_number;
Calulates the tracking number and stores it in tracking_number
. tracking_number
consists of
DDDDXXLLLLLLLLP
| | | |
| | | +-> iso7064_mod37_36_checksum L
| | +----> serial 12345678
| +----------> first two positions of serial 50
+------------> depot 1090
We additionally store the checksum in checksum_tracking_number
and the tracking_number_without_checksum
calc_routing
$label
->calc_routing;
$label
->o_sort
Calculates the following fields:
o_sort d_sort d_depot barcode_id
calc_target_country_code
$label
->calc_target_country_code;
Store the numeric country code from the alpha2 target country (i.e.: 'DE' -> 276) into target_country_code
service_text
$label
->service_text
Returns the service text for the given service code
calc_barcode
$label
->calc_barcode;
Generate the various parts of the barcode, which are:
code
PPPPPPPTTTTTTTTTTTTTTSSSCCC
code_human
PPPPPPPTTTTTTTTTTTTTTSSSCCCP
code_barcode
IPPPPPPPTTTTTTTTTTTTTTSSSCCC
And here's the explanation of those strange letter:
IPPPPPPPTTTTTTTTTTTTTTSSSCCCP
| | | | | |
| | | | | +-> iso7064_mod37_36_checksum Z
| | | | +---> target_country_code 276
| | | +------> service_code 101
| | +--------------> tracking_number_without_checksum 01905002345615
| +-------------------------> zip (zero padded) 0012555
+-----------------------------> barcode_id %
TODO
* weiters:
kennzeichnung (kleingewicht, Express) Servicetext Servicecode
needed methods
* one object for one address * required fields ** target country ** target zipcode ** laufende nummer ** depot number ** service code * semi-required ** address data * optional ** referenznummer ** auftragsnummer ** gewicht ** n of m ** template
AUTHOR
RevDev <we {at} revdev.at>
SEE ALSO
LICENSE
This library is free software; you can redistribute it and/or modify it under the same terms as Perl itself.