Erstellt vor 7 Jahren
Zuletzt geändert vor 14 Monaten
#799 new Verbesserung/Featurewunsch
Barcode-Module zur Aufnahme ins nächste Release
| Erstellt von: | ra@… | Verantwortlicher: | m.bunkus@… |
|---|---|---|---|
| Priorität: | normal | Meilenstein: | |
| Komponente: | kivitendo ERP | Version: | 2.6.2 unstable |
| Schweregrad: | Verbesserung | Stichworte: | Lager |
| Beobachter: | hli@…, ra@… |
Beschreibung
mithilfe der GD und GD::Barcode CPAN-Pakete entwickelt (nicht Bestandteil des
aktuellen lx-office releases). In den "Stammdaten/Waren? erfassen" Dialog einen
entsprechenden Button zum anstoßen des Barcode-Etiketten Druckvorgangs gesetzt.
Die Koordinaten für die Positionierung der Elemente, bestehend aus EAN8-Barcode
(nur innerbetrieblich verwendbar), Preis- und Kurztexte-Auszeichnung sind
hardcodiert. Gleiches gilt für den Drucker!
# hier ist alles hartcodiert!
# Nachdem GD , GD::Barcode und perldoc von CPAN installiert ist, kann mit
# "perldoc GD" ... weiteres nachgelesen werden
#
package Barcode;
#
use GD;
use GD::Barcode;
sub new {
$main::lxdebug->enter_sub();
my ($type) = @_;
my $self = {};
$main::lxdebug->leave_sub();
bless $self, $type;
}
sub generate2print {
$main::lxdebug->enter_sub();
my ($self, $myconfig, $form) = @_;
### Rectangle
my $im = new GD::Image(180,80);
$white = $im->colorAllocate(255,255,255);
$black = $im->colorAllocate(0,0,0);
$red = $im->colorAllocate(255,0,0);
$blue = $im->colorAllocate(0,0,255);
#$im->transparent($white);
#$im->interlaced("true");
#$im->rectangle(0,0,159,69,$black);
### Preis
my $imP = new GD::Image(90,70);
$white = $imP->colorAllocate(255,255,255);
$imP->string(gdSmallFont,0,0,"$form->{sellprice} EUR",$black);
#$imP->rectangle(0,0,60,50,$black);
### Bezeichnung
my $imB = new GD::Image(160,20);
$white = $imB->colorAllocate(255,255,255);
$imB->string(gdTinyFont,0,0,"$form->{description}",$black);
#$imB->rectangle(0,0,60,50,$black);
### Barcode
my $sType = "EAN8";
#my $oGdBar = GD::Barcode->new($sType, '1234567');
my $oGdBar = GD::Barcode->new($sType, $form->{partnumber});
my $oGd = $oGdBar->plot([Height => 20, NoText? => 0]);
### Merge
$im->copy($oGdBar->plot,0,24,0,0,70,70);
$im->copy($imP,75,50,0,0,80,70);
$im->copy($imB,0,72,0,0,160,30);
#print $im->jpeg;
open(OUT, '>/tmp/barcode.jpeg');
print OUT $im->jpeg;
close OUT;
for(my $i = $form->{label}; $i > 0; $i--){
`jpeg2ps -r 70 -o /tmp/barcode.ps /tmp/barcode.jpeg && lp -d QL-500 -h
localhost:631 /tmp/barcode.ps`;
}
#`jpeg2ps -r 80 -o /tmp/barcode.ps /tmp/barcode.jpeg && lp -d QL-500 -h
localhost:631 -n $form->{label} /tmp/barcode.ps`;
$main::lxdebug->leave_sub();
}
1;
Änderungshistorie (4)
comment:1 Geändert vor 7 Jahren durch m.bunkus@…
comment:2 Geändert vor 5 Jahren durch hli@…
- Beobachter hli@… hinzugefügt
Habe für einen Kunden einen Barcodedruck in die Stammdatenmaske gebaut. Erzeugt ein PDF aus Tex. Alle Warenstammdaten stehen zur Verfügung.
Jetzt kann auf jeden Drucker gedruckt werden.
Ist allerdings nicht in perl. Einchecken?
comment:3 Geändert vor 2 Jahren durch m.bunkus@…
- Typ von defect nach Fehler geändert
comment:4 Geändert vor 14 Monaten durch grichardson@…
- Typ von Fehler nach Verbesserung/Featurewunsch geändert

Durchaus eine gute Idee, leider in der Umsetzung noch nicht für die Aufnahme
geeignet. Die ganzen hardcodierten Einstellungen müssen unbedingt
konfigurierbar sein. Zusätzlich ist das Benutzen von hardcodierten Dateinamen
für temporäre Dateien nicht akzeptabel (siehe "perldoc File::Temp").