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@…

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").

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
Hinweis: Hilfe zur Verwendung von Tickets finden Sie in TracTickets.