aisa/scripts/pdf/label_pdf.pl

220 lines
5.8 KiB
Perl
Raw Normal View History

2025-11-26 09:31:54 +00:00
#!/usr/bin/perl
BEGIN { use lib '/usr/home/cfg' ; require push_inc ; }
require cfg ;
use DBI;
use CGI::Carp qw(fatalsToBrowser);
# use Date::Calc qw(:all);
use POSIX;
use PDF::API2::Lite;
use constant mm => 25.4/72;
use constant in => 1/72;
use constant pt => 1;
# use GD::Barcode::UPCE;
# use GD::Barcode::Image;
#------------------------------------------------------------------------------------------
@ARGV = split(/\\*\&/, $ENV{'QUERY_STRING'});
my $waybillno = $ARGV[0] ;
#------------------------------------------------------------------------------------------
print "Content-type: text/html\n\n";
&today ;
&db_load_airports ;
&db_load_waybill($waybillno) ;
&db_load_parcels($waybillno) ;
&build_pdf ;
&screen2 ;
exit ;
#------------------------------------------------------------------------------------------
sub build_pdf {
my $wbpdfpath = "$pdfpath/label" ;
our $pdfname = 'WB-LABEL-' . $waybillno . '-' . $now_ccyymmdd . '.pdf' ;
$layout = 'label' ;
&pdf_delete_previous_pdf($wbpdfpath) ;
&pdf_initialise($wbpdfpath,$pdfname,'Film Freight Waybill Label') ; ;
&waybill_out_to_label_pdf ;
&finish_pdf ;
} #------------------------------------------------------------------------------------------
sub label_line {
&pdf_black_line (5,$up,95,$up) ;
&pdf_nl_gap_2 ;
} #------------------------------------------------------------------------------------------
sub label_header {
$top = 5 ;
# end 107.5mm (label 100mm x 100mm)
&pdf_xx_large_text (5,$up,"Film Freight CC") ;
# binmode(STDOUT);
# print "Content-Type: image/png\n\n";
# my $barcode_png = GD::Barcode->new('EAN13', '123456789012')->plot->png;
# my $image1 = $page->gfx(1) ;
# my $image1_thumb = $barcode_png ;
# $pdf_image1_file = $pdf->image_jpeg($image1_thumb);
# $image1->image($pdf_image1_file, 50/mm, $up/mm, 20/mm, 5/mm);
&pdf_medium_text (67,$up,"Wb No. : $wb{'waybillno'}") ;
&pdf_nl_gap_2 ;
} #-------------------------------------------------------------------------------
sub label_row_2 {
my $print_sender = uc $wb{'sender'} ;
# if ($wb{'originopshub'}){ $block_length = 28 ; } else { $block_length = 50 ; }
if ($airport_code{$wb{originid}}){ $block_length = 26 ; } else { $block_length = 34 ; }
&pdf_xx_large_bold_text (82,$up,$airport_code{$wb{originid}}) ;
&pdf_medium_text (5,$up,"From :") ;
&pdf_text_block (16,$print_sender,$block_length,3) ;
} #-------------------------------------------------------------------------------
sub label_row_3 {
my $print_receiver = uc $wb{'receiver'} ;
&pdf_medium_text (5,$up,"To :") ;
# &pdf_medium_text (12,$up,$print_receiver) ;
&pdf_text_block (12,$print_receiver,38,3) ;
$get_inline_address = 1 ;
&common_get_addresses ;
# &pdf_nl ;
@receiveraddresses = split(/<br>/,$address_for_email{'receiver'}) ;
foreach (@receiveraddresses) {
&pdf_medium_text (12,$up,$_) ;
&pdf_nl;
}
my $print_receiver_contact = '' ;
my $print_receiver_cellno = '' ;
my $print_receiver_cellno_2 = '' ;
if ($wb{'reccellno'}) { $print_receiver_cellno = ' or ' . $wb{'reccellno'} ; }
if ($wb{'reccellno'}) { $print_receiver_cellno_2 = ' : ' . $wb{'reccellno'} ; }
if (($wb{'reccontact'}) and ($wb{'recphone'})) {
$print_receiver_contact = $wb{'reccontact'} . " : " . $wb{'recphone'} . $print_receiver_cellno ;
}
elsif ($wb{'recphone'}) {
$print_receiver_contact = $wb{'recphone'} . $print_receiver_cellno ;
}
elsif ($wb{'reccontact'}) {
$print_receiver_contact = $wb{'reccontact'} . $print_receiver_cellno_2 ;
}
if ($print_receiver_contact) {
&pdf_medium_text (12,$up,$print_receiver_contact) ;
&pdf_nl ;
}
$up=$up+4 ;
&pdf_xx_large_bold_text (82,$up,$airport_code{$wb{destid}}) ;
&pdf_nl ;
} #-------------------------------------------------------------------------------
sub label_row_4 {
my ($colccyy,$colmm,$coldd) = split(/\-/,$wb{'coldate'}) ;
$date_to_text = "$coldd-$colmm-$colccyy";
# $date_to_text = Date_to_Text($colccyy,$colmm,$coldd);
# $date_to_text =~ s/\-/ /g ;
# $date_to_text = substr($date_to_text,4) ;
&pdf_medium_text (5,$up,"Date : $date_to_text") ;
&pdf_medium_text (70,$up,"Pcs :") ;
&pdf_xx_large_bold_text (80,$up,"$pccnt - $wb{'pcs'}") ;
&pdf_nl ;
&pdf_medium_text (5,$up,"Service : $wb{'service'}") ;
&pdf_nl_gap_2 ;
&pdf_medium_text (5,$up,"Wb No. :") ;
&pdf_xx_large_bold_text (20,$up,$wb{'waybillno'}) ;
&pdf_medium_text (70,$up,"Kgs :") ;
# &pdf_xx_large_bold_text (80,$up,$kgs) ;
if ($wb{volmass} > $wb{actmass}) { $chgmass = ceil($wb{volmass}); } else { $chgmass = ceil($wb{actmass}); }
# my $chgmass = sprintf("%.0f",($wb{chgmass})) ;
&pdf_xx_large_bold_text (80,$up,$chgmass) ;
} #-------------------------------------------------------------------------------
sub waybill_out_to_label_pdf {
$label = 1 ;
foreach (@parcels) {
($pcs,$desc,$kgs) = split(/\|/) ;
for (1 .. $pcs) {
$pccnt++ ;
$up = 90 ;
&pdf_initialise_page ;
&label_header ;
&label_line ;
&label_row_2 ;
&label_line ;
&label_row_3 ;
&label_line ;
&label_row_4 ;
&pdf_nl_gap_1 ;
}
}
} #------------------------------------------------------------------------------------------
sub screen2 {
print <<ENDOFTEXT;
$dialog{'common'}{'head'}
<div id="content" class="col-lg-12 col-sm-12">
<CENTER>
<table height='100%' width='100%'>
<tr>
<td align='center'>
<iframe src='$useropts{'$domain'}/pdf/label/$pdfname' width='100%' height='100%' frameborder='0'></iframe>
</td>
</tr>
</table>
</div>
</body>
</html>
ENDOFTEXT
#
} #------------------------------------------------------------------------------------------
use db ;
use dialog ;
use today ;
use common ;
use pdf ;
1;