Kommissionierung mit Kommliste (SmartCenter, Konfiguration)
Hier wird die Konfiguration für den Bereich "Kommissionierung mit Kommliste" (Liefervorschlag) behandelt.
CONFIG.XML
Position in der CONFIG.XML

Einstellungen
Knoten | Mögliche Werte | Beschreibung |
|---|---|---|
StockNum | 1, 2, 100, ... | Abbuchungs-Lagernummer. |
CanChang | True, False | True (Standard) = Lagernummer kann in dem Fenster durch den Benutzer |
StockLocat | ann-nn-nn | Eingabemaske für Lagerortnamen. Wenn angegeben, dürfen nur Lagerorte in |
PrinterNa | \\COMPUTERNAME\Druckername | Standard-Drucker für alle Dokumente in der Kommissionierung. |
PrinterNa | \\COMPUTERNAME\Druckername | Druckername für Lieferscheine |
PrinterNa | \\COMPUTERNAME\Druckername | Druckername für Rechnungen |
PrinterNa | \\COMPUTERNAME\Druckername | Etiketten-Drucker. |
PrintDelive | True, False, [leer] | [leer] = Der Ausdruck wird automatisch angestossen, wenn ein LS/KS erstellt |
PrintInvoice | True, False, [leer] | [leer] = Der Rechnungsdruck wird automatisch durchgeführt, wenn eine |
PrintCopie | 1,2,3,8,... | Anzahl Exemplare für Lieferscheindruck - Wenn angegeben, wird diese Anzahl |
PrintCopie | 1,2,3,8,... | Anzahl Exemplare für Rechnungsdruck - Wenn angegeben, wird diese Anzahl |
PrintLayou | A,B,C,... | Druck-Layout für Drucken Kommissionsscheine - Wenn nicht angegeben, wird die |
PrintLayou | A,B,C,... | Druck-Layout für Drucken Lieferscheine - Wenn nicht angegeben, wird |
PrintLayou | A,B,C,... | Druck-Layout für Drucken Rechnungen - Wenn nicht angegeben, wird |
PrintLayou | A,B,C,... A0002.btw | Druck-Layout für die Artikel-Etiketten. |
AllowGene | True, False | True = Bei Artikel mit Seriennummernpflicht-Verkauf kann bei der Seriennummern- |
AllowQuan | True, False | True (Standard) = Mengeneingabe-Fenster wird angezeigt und die Menge kann |
ApplyRedu | True, False | True = Wenn die gescannte Menge auf die offene Menge reduziert wird, dann wird |
AutoClose | True, False | True = Das Fenster wird nach einer Kommissionierung geschlossen und kehrt |
AutoConfir | True, False | True = Der vorgeschlagene Lagerort wird automatisch übernommen ( keine |
Consignm | select distinct grafik2 from angebotspositionen | SQL-Statement, welches ausgeführt wird:
|
CreateInvo | True, False, [leer] | [leer] (Standard) = Die Rechnungserstellung wird automatisch durchgeführt, |
CreateSing | True, False | True = Wenn die Erstellung von Lieferschein(e)/Kommissionsschein(e) je Auftrag |
ForceCons | True, False | True = Bei Abschluss der Kommissionierung werden Kommissionsscheine statt |
ForceScan | True, False | True = D-Artikel müssen ebenfalls gescannt werden |
Mandatory | True, False | True = COLLI-Nummer wird abgefragt und ist verpflichtend einzugeben |
ScanOnly | True, False | True = Das Eingabefeld wird periodisch geleert, sodass eine Tastatur-Eingabe |
ScanOnlyT | 10, 20, 30, 100, 300, ... | Wert in "ms" für den Timer, der das Eingabefeld periodisch |
SelectCon | True, False | True = Vor Beginn der Erfassung muss der Kommissionslagerplatz ausgewählt |
SelectCon | True, False | True = Nach Abschluss der Kommissionierung wird das Fenster zur Auswahl des |
SelectNext | [leer], FollowingRow, FirstUnscannedRow | [leer] (Standard) = Die selektierte Zeile wird nicht verändert |
ShowCreat | True, False | True = wenn nach der Erstellung bzw. nach dem Drucken der Scheine (KS/LS/RE) |
SkipCreate | True, False | True = Wenn eine Rechnung erstellt werden soll ( CreateInvoice=True ), dann wird |
StockLocat | Allow, Accept, NotAllowed | Allow = Beliebige Lagerortauswahl möglich |
Suggested | Scanned, Open, Fixed | Scanned (Standard) = Es wird die Menge aus dem Barcode vorgeschlagen. Wenn |
Suggested | 1, 2, 3, ..., 15.5, ..., 100, ... | Vorgeschlagener Mengeneintrag in Mengenfeld.
|
Suggested | Scanned, Delivery, Stock | Gibt an, welche Mengeneinheit bei der Mengeneingabe primär/initial angezeigt wird. |
WithPackin | True, False | True = Aktiviere Packlisten-Funktionalität. Nach der Kommissionierung bzw. nach |
PackingE | BeforeScan, AfterScan | BeforeScan = Es muss, bevor die Kommissionierung beginnt, ein Packstück |
AutoPrintD | True, False | True = Automatischer Ausdruck der Kommissionierliste, wenn der Liefervorschlag |
PrinterNa | \\COMPUTERNAME\Druckername | Druckername für Kommissionierlisten, wenn der Ausdruck der Kommissionierliste |
PrintLayou | A,B,C,... | Drucklayout der Kommissionierliste, wenn der Ausdruck automatisch erfolgen soll |
Beispiel
<?xml version="1.0" encoding="utf-8" ?>
<Settings>
<StockManagement>
<PrinterName>\\server\HPLaser_Verrechnung</PrinterName>
<CanChangeStockNumber>True</CanChangeStockNumber>
<DeliveryProposalConsignment>
<StockNumber>2</StockNumber>
<PrinterName>\\server\EpsonStylus</PrinterName>
<PrinterNameDeliveryNotes></PrinterNameDeliveryNotes>
<PrintLayoutDeliveryNotes>A</PrintLayoutDeliveryNotes>
<PrintLayoutConsignmentNotes>A</PrintLayoutConsignmentNotes>
<PrintCopiesDeliveryNotes></PrintCopiesDeliveryNotes>
<PrinterNameInvoices></PrinterNameInvoices>
<PrintLayoutInvoices>A</PrintLayoutInvoices>
<PrintCopiesInvoices></PrintCopiesInvoices>
<ScanOnly>False</ScanOnly>
<ScanOnlyTime>300</ScanOnlyTime>
<CreateSingleNotes>True</CreateSingleNotes>
<PrintDeliveryNote>True</PrintDeliveryNote>
<ForceConsignmentNote>False</ForceConsignmentNote>
<SelectConsignmentLocation>False</SelectConsignmentLocation>
<SelectConsignmentLocationOnFinish>False</SelectConsignmentLocationOnFinish>
<CreateInvoice>False</CreateInvoice>
<SkipCreateInvoiceForBatchCustomers></SkipCreateInvoiceForBatchCustomers>
<PrintInvoice>False</PrintInvoice>
<SuggestedQuantitySelector>Scanned</SuggestedQuantitySelector>
<SuggestedQuantity>1</SuggestedQuantity>
<AllowQuantityInput>True</AllowQuantityInput>
<SuggestedQuantityUnit>Scanned</SuggestedQuantityUnit>
<ForceEnterQuantity>False</ForceEnterQuantity>
<MandatoryColliInput>True</MandatoryColliInput>
<AllowGenerateForSaleSerials>True</AllowGenerateForSaleSerials>
<StockLocationSelection>Accept</StockLocationSelection>
<ShowCreatedNotesSummary>False</ShowCreatedNotesSummary>
<AutoClose>False</AutoClose>
<ConsignmentInfoStatement>select distinct grafik2 from angebotspositionen where aposinx in (select aposinx from liefauf where taninx={DeliveryProposalNumber} and artnr='{ItemNumber}')</ConsignmentInfoStatement>
<ApplyReducedQuantityWithoutConfirmation>False</ApplyReducedQuantityWithoutConfirmation>
<SelectNextRowAfterScan>FollowingRow</SelectNextRowAfterScan>
<ForceScanDirectCostItems>False</ForceScanDirectCostItems>
<StockLocationNameInputMask>ann-nn-nn</StockLocationNameInputMask>
<WithPackingEmpties>False</WithPackingEmpties>
<AutoConfirmStockLocation>False</AutoConfirmStockLocation>
</DeliveryProposalConsignment>
</StockManagement>
</Settings>
LAYOUT.XML
-- ToDo --
Datenbankstruktur-Richtlinien
Aktuell sind dafür die "Lagerorte zwingend" notwendig, was in manchen Fällen verwendbar ist, in anderen aber unbrauchbar. Das System benötigt dann zumindest 2 Lagerorte (1 nomaler, 1 KommPlatz)
Schritt-für-Schritt
Lagerorte anlegen per SQL anhand einer Liste anlegen
Kommissionierlagerplatz anlegen (Lagerort mit der Eigenschaft "Kommissionierlagerplatz")
Lagerortbuchungen aktivieren (in Grundlageneinstellungen)
Trigger deaktivieren
SQL-Statements für alle Dokumente im System
Trigger aktivieren
Lagerbestand aktualisieren
Details
Lagerorte anlegen per SQL anhand einer Liste anlegen
Excel-Datei erstellen
Lagerorte anlegen per SQL anhand einer Liste des Kunden mit Lagernummer, Nummer, Sortierung und Name:
=VERKETTEN("insert into Lagerorte (Lagernummer, Nummer, Sortierung, Name) values (";A2;",";B2;",";D2;",'";C2;"');")
Lagerplätze anlegen
In den Lager-Einstellungen wird je gewünschtem Lager ein eigener Kommissionierlagerplatz und zumindest 1 "normaler" Lagerort angelegt:

insert into lagerorte (lagernummer, nummer, name, ko_platz) select nummer, 1, 'eins', 0 from lager where
nummer<1000000 and not exists(select '' from lagerorte where nummer=1 and lagerorte.lagernummer=lager.
nummer);
insert into lagerorte (lagernummer, nummer, name, ko_platz) select nummer, 9999, 'Kommissionierung', 1 from
lager where nummer<1000000 and not exists(select ''from lagerorte where ko_platz=1 and lagerorte.
lagernummer=lager.nummer);
commit;
Vorbereitungen zur Änderung der Lagerorte
Entfernen aller Einträge in INVM, ZAEHLLISTE, INVM_SN, INVM_CN, indem die bestehenden Einträge aus ALLEN aktuell im System
befindlichen Zähllisten gebucht (in die Inventur übertragen) oder gelöscht werden.Alle offenen Warenkörbe löschen
Lagerortbuchungen aktivieren

Trigger deaktivieren
Vorher DB Trigger deaktivieren auf ANGEBOTSPOSITIONEN und BESTELLPOSITIONEN
Oracle DB:
alter table Angebotspositionen disable all triggers;
alter table Bestellpositionen disable all triggers;
SQL DB
DISABLE TRIGGER ALL ON Angebotspositionen;
DISABLE TRIGGER ALL ON Bestellpositionen;
SQL-Statements für alle Dokumente
update artikelstamm set lagerort =1 where lager=1;
update defaultlager set lagerort=1 where lager=1;
insert into defaultlager (artikelnummer, lager, lagerort)
select a.artikelnummer, 1, 1 from artikelstamm a where a.lager=1 and not exists (select '' from defaultlager d where a.artikelnummer=d.artikelnummer and d.lager=1 and d.lagerort=1);
update defaultlager set lo_name=(select name from lagerorte where defaultlager.lagerort=lagerorte.nummer and defaultlager.lager=lagerorte.lagernummer);
commit;
update kartei set lagerort=1 where lager=1;
update angebotspositionen set lagerort=1 where lager=1;
update lspositionen set lagerort=1 where lager=1;
update repositionen set lagerort=1 where lager=1;
update bestellpositionen set lagerort=1 where lager=1;
update bestellvorschlag set lagerort=1 where lager=1;
update ls_wepositionen set lagerort=1 where lager=1;
update wepositionen set lagerort=1 where lager=1;
update invpositionen set lagerort=1 where lager=1;
update liefauf set lagerort=1 where lager=1;
update fpos set lagerort=1 where lager=1;
update rappositionen set lagerort=1 where lager=1;
update dwh_pos set lagerort=1 where lager=1;
update dwh_verkauf set lagerort=1 where lager=1;
update fapositionen set entnahme_lagerort=1 where dispo_lager=1;
update fapositionen set dispo_lagerort=1 where dispo_lager=1;
update fer set ziel_lagerort=1 where ziel_lager=1;
update schnellumbuchung set abbuchungslagerort=1 where abbuchungslager=1;
update schnellumbuchung set zubuchungslagerort=1 where zubuchungslager=1;
commit;
-- Wenn es Artikel mit Chargennummernpflicht gibt:
update chargennummer set lagerort=1 where lager=1;
update chargenbestand set lagerort=1 where lager=1;
-- Wenn es Artikel mit Seriennummernpflicht gibt:
update sernr set lagerort=1 where lager=1;
commit;
-- Optional kann mit folgenden Statements der Bestand manuell aktualisiert werden (ansonten nach Reaktivierung der Trigger die Programmfunktion nutzen):
insert into lagerbestand (artnr, lager, lagerort, bestand, verfuegbar) select artnr, lager, 1, 0, 0 from lagerbestand where lager=1 and lagerort is null
update lagerbestand b1 set bestand=(select b2.bestand from lagerbestand b2 where b2.lager=1 and b2.lagerort is null and b2.artnr=b1.artnr) where b2.lager=1 and b2.lagerort=1;
update lagerbestand set bestand=0 where lager=1 and lagerort is null;
update lagerbestand set verfuegbar=bestand where lager=1;
update lagerbestand set off_auf=0;
update lagerbestand set off_auf=isnull((select off_auf from v_off_auf where v_off_auf.artikelnummer=lagerbestand.artnr and v_off_auf.lager=lagerbestand.lager and isnull(v_off_auf.lagerort,-1)=isnull(lagerbestand.lagerort,-1)),0)
where artnr in (select artikelnummer from v_off_auf);
update lagerbestand set off_bes=0;
update lagerbestand set off_bes=isnull((select off_bes from v_off_bes where v_off_bes.artikelnummer=lagerbestand.artnr and v_off_bes.lager=lagerbestand.lager and isnull(v_off_bes.lagerort,-1)=isnull(lagerbestand.lagerort,-1)),0)
where artnr in (select artikelnummer from v_off_bes);
commit;
Trigger aktivieren
DB Trigger wieder aktivieren
Oracle DB:
alter table Angebotspositionen enable all triggers;
alter table Bestellpositionen enable all triggers;
SQL DB
ENABLE TRIGGER ALL ON Angebotspositionen;
ENABLE TRIGGER ALL ON Bestellpositionen;
Lagerort zwingend aktivieren

Beim umgestellten Lager bzw. bei den umgestellten Lagern muss "Lagerort zwingend" aktiviert werden, damit künftige Buchungen ohne Lagerort
verhindert werden.
Bereitstellungslagerort und Default-Lagerort je Lager
In den Lagereinstellungen gibt es die Spalten "Bereitstellungsplatz" (LAGER.BEREITST_LAGERORT) und "Lagerort" (LAGER.DEF_LAGERORT).
Diese sollten nun ebenfalls noch befüllt werden - der Bereitstellungsplatz mit dem Kommissionierlagerort des Lagers und der Lagerort mit dem
"Hauptlagerort".
Lagerbestände aktualisieren
