Kommissionierung mit Kommliste (SmartCenter, Konfiguration)
Hier wird die Konfiguration für den Bereich "Kommissionierung mit Kommliste" (Liefervorschlag) behandelt.
Inhalt
CONFIG.XML
Position in der CONFIG.XML
Einstellungen
Knoten | Mögliche Werte | Beschreibung |
---|---|---|
StockNumber | 1, 2, 100, ... | Abbuchungs-Lagernummer. Ist hier kein Lager angegeben, wird das Lager aus dem Parent-Knoten verwendet |
CanChangeStockNumber | True, False | True (Standard) = Lagernummer kann in dem Fenster durch den Benutzer verändert werden. False = Die Lagernummer wird durch den Wert in "StockNumber" vorgegeben
|
StockLocationNameInputMask | ann-nn-nn | Eingabemaske für Lagerortnamen. Wenn angegeben, dürfen nur Lagerorte in diesem bestimmten Format eingegeben oder gescannt werden. Füllzeichen werden automatisch "aufgefüllt". Platzhalter: a = alphanumerisches Zeichen (Buchstabe oder Nummer) n = numerisches Zeichen (Nummer 0-9) Füllzeichen: ' ', '-', '_', ':', '.', ',', '#', '+' Beispiel: ann-nn-nn Zeichen 1 muss alphanumerisch sein Zeichen 2 muss numerisch sein Zeichen 3 muss numerisch sein Zeichen 4 muss ein "-" sein Zeichen 5 muss numerisch sein Zeichen 6 muss numerisch sein Zeichen 7 muss ein "-" sein Zeichen 8 muss numerisch sein Zeichen 9 muss numerisch sein |
PrinterName | \\COMPUTERNAME\Druckername | Standard-Drucker für alle Dokumente in der Kommissionierung. Wenn nicht angegeben, wird der "PrinterName" aus dem StockManagement-Hauptknoten verwendet. |
PrinterNameDeliveryNotes | \\COMPUTERNAME\Druckername | Druckername für Lieferscheine Wenn nicht angegeben, wird der "PrinterName" verwendet. Wenn "PrinterName" leer und der "PrinterName" aus dem StockManagement-Hauptknoten leer ist, dann wird der Drucker lt. TaskCenter-Druckerzuordnung ausgewählt |
PrinterNameInvoices | \\COMPUTERNAME\Druckername | Druckername für Rechnungen Wenn nicht angegeben, wird der "PrinterName" verwendet. Wenn "PrinterName" leer und der "PrinterName" aus dem StockManagement-Hauptknoten leer ist, dann wird der Drucker lt. TaskCenter-Druckerzuordnung ausgewählt |
PrinterNameItemLabels | \\COMPUTERNAME\Druckername | Etiketten-Drucker. Wenn nicht angegeben, wird der Etiketten-Drucker aus dem Parent-Knoten verwendet. |
PrintDeliveryNote | True, False, [leer] | [leer] = Der Ausdruck wird automatisch angestossen, wenn ein LS/KS erstellt wurde, beim Auftrag oder Kunden ein Sammelrechnungskennzeichen vorliegt und die Zahlungsbedingung nicht Nachnahme ist True = Kommissionsschein/Lieferschein wird nach Abschluß gedruckt. False = Es wird nur ein Lieferschein erstellt, es erfolgt kein Ausdruck. |
PrintInvoice | True, False, [leer] | [leer] = Der Rechnungsdruck wird automatisch durchgeführt, wenn eine Rechnung erstellt wurde und die Zahlungsbedingung NACHNAHME ist True = Die gegebenenfalls erstellte Rechnung wird zusätzlich ausgedruckt. Handelt es sich um einen "eInvoice"-Kunden, wird auch die eInvoice-Datei dazu erstellt (ab TaskCenter Version 4.91.6.0). False = Es erfolgt kein Rechnungsdruck und keine Erstelltung der eInvoice-Datei. |
PrintCopiesDeliveryNotes | 1,2,3,8,... | Anzahl Exemplare für Lieferscheindruck - Wenn angegeben, wird diese Anzahl verwendet, ansonsten wird die Anzahl aus Kunden- oder Druckprofil-Einstellung geladen |
PrintCopiesInvoices | 1,2,3,8,... | Anzahl Exemplare für Rechnungsdruck - Wenn angegeben, wird diese Anzahl verwendet, ansonsten wird die Anzahl aus Kunden- oder Druckprofil-Einstellung geladen |
PrintLayoutConsignmentNotes | A,B,C,... | Druck-Layout für Drucken Kommissionsscheine - Wenn nicht angegeben, wird die Auswahl über die Drucker-Zuordnung des angemeldeten Benutzers gesteuert |
PrintLayoutDeliveryNotes | A,B,C,... | Druck-Layout für Drucken Lieferscheine - Wenn nicht angegeben, wird "PrintLayoutDeliveryNotes" aus dem StockManagement-Hauptknoten verwendet - wenn dort ebenso kein Layout hinterlegt ist, wird die Auswahl über die Drucker-Zuordnung des angemeldeten Benutzers gesteuert |
PrintLayoutInvoices | A,B,C,... | Druck-Layout für Drucken Rechnungen - Wenn nicht angegeben, wird "PrintLayoutInvoices" aus dem StockManagement-Hauptknoten verwendet - wenn dort ebenso kein Layout hinterlegt ist, wird die Auswahl über die Drucker-Zuordnung des angemeldeten Benutzers gesteuert |
PrintLayoutItemLabels | A,B,C,... A0002.btw | Druck-Layout für die Artikel-Etiketten. |
AllowGenerateForSaleSerials | True, False | True = Bei Artikel mit Seriennummernpflicht-Verkauf kann bei der Seriennummern-Auswahl eine Seriennummer über einen Button generiert werden. Dazu muss es eine Seriennummer-Vorlage mit der Konstante1 <ITEMNUMBER> angelegt werden. Der Wert <ITEMNUMBER> wird dann durch die Artikelnummer ersetzt |
AllowQuantityInput | True, False | True (Standard) = Mengeneingabe-Fenster wird angezeigt und die Menge kann verändert werden False = Mengeneingabe-Fenster wird nicht angezeigt, sofern eine Vorschlagsmenge definiert wurde, oder die Menge bereits bestimmt werden konnte |
ApplyReducedQuantityWithoutConfirmation | True, False | True = Wenn die gescannte Menge auf die offene Menge reduziert wird, dann wird KEIN Bestätigungs-Mengeneingabefenster angezeigt False (Standard) = Wenn die gescannte Menge auf die offene Menge reduziert wird, dann muss die Menge bestätigt werden |
AutoClose | True, False | True = Das Fenster wird nach einer Kommissionierung geschlossen und kehrt wieder ins Hauptmenü zurück False (Standard) = Das Fenster wird nach der Erstellung der Kommissions-/Lieferscheine geleert und steht wieder in der Auswahl des nächsten Liefervorschlags |
AutoConfirmStockLocation | True, False | True = Der vorgeschlagene Lagerort wird automatisch übernommen ( keine Bestätigung, keine Änderung möglich ) False (Standard) = Der vorgeschlagene Lagerort muss manuell angegeben werden |
ConsignmentInfoStatement | select distinct grafik2 from angebotspositionen where aposinx in (select aposinx from liefauf where taninx={DeliveryProposalNumber} and artnr='{ItemNumber}') select distinct langtext from langtexte where typ=350 and posinx in (select aposinx from liefauf where taninx={DeliveryProposalNumber} and artnr='{ItemNumber}') | SQL-Statement, welches ausgeführt wird: * nach einem Barcode-Scan (wenn der Artikel vorhanden und offen ist) * vor Lager/ort-Eingabe * vor Mengen-Eingabe und eine Liste mit 1 Spalte und n Zeilen zurückliefert, die dann in einem PopUp-Fenster angezeigt werden. Mögliche Platzhalter (case-sensitiv) sind: {ItemNumber} ... Die gescannte Artikelnummer {DeliveryProposalNumber} ... Aktuelle Liefervorschlagsnummer {StockTransferNoteNumber} ... Aktuelle Umbuchungsnummer Bsp GRAFIK2 aus Angebotsposition anzeigen: select distinct grafik2 from angebotspositionen where aposinx in (select aposinx from liefauf where taninx={DeliveryProposalNumber} and artnr='{ItemNumber}') Bsp HINWEISTEXT aus Angebotspositionen anzeigen: select distinct langtext from langtexte where typ=350 and posinx in (select aposinx from liefauf where taninx={DeliveryProposalNumber} and artnr='{ItemNumber}') |
CreateInvoice | True, False, [leer] | [leer] (Standard) = Die Rechnungserstellung wird automatisch durchgeführt, aufgrund von LS (nicht KS), Keine Sammelrechnung, Zahlungsbedingung (NACHNAHME) True = Bei Abschluss der Kommissionierung wird, nachdem die Lieferscheine erstellt wurden, auch eine Rechnung erstellt |
CreateSingleNotes | True, False | True = Wenn die Erstellung von Lieferschein(e)/Kommissionsschein(e) je Auftrag erfolgen soll False (Standard) = Lieferscheine werden je Kunde und Trennkriterien zusammengefasst |
ForceConsignmentNote | True, False | True = Bei Abschluss der Kommissionierung werden Kommissionsscheine statt Lieferscheine erstellt False (Standard) = Bei Abschluss der Kommissionierung werden Lieferscheine erstellt |
ForceScanDirectCostItems | True, False | True = D-Artikel müssen ebenfalls gescannt werden False (Standard) = D-Artikel werden zwar angezeigt, diese werden aber automatisch mit IST=SOLL gebucht |
MandatoryColliInput | True, False | True = COLLI-Nummer wird abgefragt und ist verpflichtend einzugeben False (Standard) = Keine Abfrage der COLLI-Nummer |
ScanOnly | True, False | True = Das Eingabefeld wird periodisch geleert, sodass eine Tastatur-Eingabe nicht möglich ist, sondern der Wert NUR gescannt werden kann |
ScanOnlyTime | 10, 20, 30, 100, 300, ... | Wert in "ms" für den Timer, der das Eingabefeld periodisch nach dieser Zeit leert ( nur wenn ScanOnly = True ) |
SelectConsignmentLocation | True, False | True = Vor Beginn der Erfassung muss der Kommissionslagerplatz ausgewählt/gescannt werden False (Standard) = Der Kommissionierlagerplatz wird je Lager automatisch ermittelt |
SelectConsignmentLocationOnFinish | True, False | True = Nach Abschluss der Kommissionierung wird das Fenster zur Auswahl des Kommissionierlagerplatzes angezeigt und dieser kann bei Bedarf noch geändert werden False (Default) = Das Fenster wird nicht angezeigt |
SelectNextRowAfterScan | [leer], FollowingRow, FirstUnscannedRow | [leer] (Standard) = Die selektierte Zeile wird nicht verändert FollowingRow = Nach einem erfolgreichen Scan, wird die nächste Zeile mit offener Menge markiert |
ShowCreatedNotesSummary | True, False | True = wenn nach der Erstellung bzw. nach dem Drucken der Scheine (KS/LS/RE) eine Zusammenfassung angezeigt werden soll, welche Scheine erstellt wurden. False (Standard) = Es wird keine Nachricht angezeigt |
SkipCreateInvoiceForBatchCustomers | True, False | True = Wenn eine Rechnung erstellt werden soll ( CreateInvoice=True ), dann wird geprüft, ob False (Standard) = Es erfolgt keine Prüfung auf das Sammelrechnungs-Kennzeichen |
StockLocationSelection | Allow, Accept, NotAllowed | Allow = Beliebige Lagerortauswahl möglich Accept = Beliebige Lagerortauswahl möglich - ein anderer Lagerort als der Vorgeschlagene muss bestätigt werden (Logbuch) NotAllowed (Standard) = Der vorgeschlagene Lagerort MUSS ausgewählt werden |
SuggestedQuantitySelector | Scanned, Open, Fixed | Scanned (Standard) = Es wird die Menge aus dem Barcode vorgeschlagen. Wenn keine Menge im Barcode enthalten ist, wird die Fixe Menge in "SuggestedQuantity" vorgeschlagen - wenn dort auch nichts hinterlegt ist, wird die offene Menge vorgeschlagen. Open = Es wird immer die noch offene Menge vorgeschlagen Fixed = Es wird immer die fixe Menge in "SuggestedQuantity" vorgeschlagen |
SuggestedQuantity | 1, 2, 3, ..., 15.5, ..., 100, ... | Vorgeschlagener Mengeneintrag in Mengenfeld. * Wenn die Mengeneingabe erlaubt ist (AllowQuantityInput=True), kann die Menge verändert werden. * Wenn ein Barcode mit integrierter Menge gescannt wurde, wird die Menge aus dem Barcode angewendet |
SuggestedQuantityUnit | Scanned, Delivery, Stock | Gibt an, welche Mengeneinheit bei der Mengeneingabe primär/initial angezeigt wird. Scanned (Standard) = Es wird die Mengeneinheit vorgeschlagen, die im Barcode enthalten ist. Wenn keine MEH im Barcode, dann wird die Lagermengeneinheit vorgeschlagen. Delivery = Es wird die Liefermengeneinheit vorgeschlagen. Stock = Es wird die Lagermengeneinheit vorgeschlagen |
WithPackingEmpties | True, False | True = Aktiviere Packlisten-Funktionalität. Nach der Kommissionierung bzw. nach der Erstellung von Lieferscheinen, wird eine Versendung erstellt. Die Anzahl der Packstücke und deren Gewichte wird je nach "PackingEmptiesMode" ermittelt. |
PackingEmptiesMode Ab SmartCenter Version 2.2021.0607.0 | BeforeScan, AfterScan | BeforeScan = Es muss, bevor die Kommissionierung beginnt, ein Packstück ausgewählt werden. Mit dieser Funktion, wird jeder gescannte Artikel einem Packstück zugeordnet. Ist ein Packstück "voll", kann mit einer Funktion das nächste Packstück ausgewählt werden. AfterScan (ab TaskCenter 4.88.0.0) = Die Anzahl der verwendeten Packstücke, sowie deren Gewichte, erfolgt NACH der Kommissionierung. In diesem Fall ist keine eindeutige Zuordnung jeden Artikels zu einem Packstück möglich. |
AutoPrintDeliveryProposal Ab SmartCenter Version 2.2022.0531.0 Ab TaskCenter Version 4.102.0.0 | True, False | True = Automatischer Ausdruck der Kommissionierliste, wenn der Liefervorschlag über die "Nächste Kommissionierung" erstellt wurde False (Standard) = Es erfolgt kein Ausdruck |
PrinterNameDeliveryProposal Ab SmartCenter Version 2.2022.0531.0 Ab TaskCenter Version 4.102.0.0 | \\COMPUTERNAME\Druckername | Druckername für Kommissionierlisten, wenn der Ausdruck der Kommissionierliste automatisch erfolgen soll. Wenn nicht angegeben, wird der "PrinterName" verwendet. |
PrintLayoutDeliveryProposal Ab SmartCenter Version 2.2022.0531.0 Ab TaskCenter Version 4.102.0.0 | 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>
]] ></ac:plain-text-body></ac:structured-macro><p><br /></p><h1>LAYOUT.XML</h1><p>-- ToDo --</p><h1>Datenbankstruktur-Richtlinien</h1><p>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)</p><h2>Schritt-für-Schritt</h2><ul><li>Lagerorte anlegen per SQL anhand einer Liste anlegen</li><li><span style="letter-spacing: 0.0px;">Kommissionierlagerplatz anlegen (Lagerort mit der Eigenschaft "Kommissionierlagerplatz")</span></li><li><span style="letter-spacing: 0.0px;">Lagerortbuchungen aktivieren (in Grundlageneinstellungen)</span></li><li><span style="letter-spacing: 0.0px;">Trigger deaktivieren</span></li><li><span style="letter-spacing: 0.0px;">SQL-Statements für alle Dokumente im System</span></li><li><span style="letter-spacing: 0.0px;">Trigger aktivieren</span></li><li><span style="letter-spacing: 0.0px;">Lagerbestand aktualisieren</span></li></ul><h2>Details</h2><h3>Lagerorte anlegen per SQL anhand einer Liste anlegen</h3><p>Excel-Datei erstellen</p><p>Lagerorte anlegen per SQL anhand einer Liste des Kunden mit Lagernummer, Nummer, Sortierung und Name:</p><p>=VERKETTEN("insert into Lagerorte (Lagernummer, Nummer, Sortierung, Name) values (";A2;",";B2;",";D2;",'";C2;"');")</p><h3>Lagerplätze anlegen</h3><p>In den Lager-Einstellungen wird je gewünschtem Lager ein eigener Kommissionierlagerplatz und zumindest 1 "normaler" Lagerort angelegt:</p><p><ac:image><ri:attachment ri:filename="image2020-8-4_13-25-15.png" /></ac:image></p><ac:structured-macro ac:name="code" ac:schema-version="1" ac:macro-id="facc2ad5-f03e-4ee2-9fbf-1960ba63da5b"><ac:plain-text-body><![CDATA[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;]] ></ac:plain-text-body></ac:structured-macro><p><br /></p><h3>Vorbereitungen zur Änderung der Lagerorte</h3><ul><li>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.</li><li>Alle offenen Warenkörbe löschen</li></ul><h3>Lagerortbuchungen aktivieren</h3><p><ac:image><ri:attachment ri:filename="image2020-8-4_13-26-25.png" /></ac:image></p><h3>Trigger deaktivieren</h3><ac:structured-macro ac:name="warning" ac:schema-version="1" ac:macro-id="ae1f2b48-ccef-4712-a63c-3655d16fe70f"><ac:rich-text-body><p><strong><span style="color: rgb(255,0,0);">Vorher DB Trigger deaktivieren auf ANGEBOTSPOSITIONEN und BESTELLPOSITIONEN</span></strong></p></ac:rich-text-body></ac:structured-macro><p><span style="color: rgb(255,0,0);">Oracle DB:</span></p><p>alter table Angebotspositionen disable all triggers;</p><p>alter table Bestellpositionen disable all triggers;</p><p><span style="color: rgb(255,0,0);">SQL DB</span></p><p><span>DISABLE </span><span>TRIGGER</span> <span>ALL</span> <span>ON</span> <span>Angebotspositionen;</span></p><p><span>DISABLE </span><span>TRIGGER</span> <span>ALL</span> <span>ON</span><span> Bestell</span><span>positionen;</span></p><h3>SQL-Statements für alle Dokumente</h3><ac:structured-macro ac:name="code" ac:schema-version="1" ac:macro-id="11e1a7f9-8b9d-45a9-bd8c-fd14f2d27564"><ac:plain-text-body><![CDATA[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;]] ></ac:plain-text-body></ac:structured-macro><p><br /></p><h3>Trigger aktivieren</h3><ac:structured-macro ac:name="warning" ac:schema-version="1" ac:macro-id="834ed260-bcf2-4d68-a18d-aeb796a5b132"><ac:rich-text-body><p><strong><span style="color: rgb(255,0,0);">DB Trigger wieder aktivieren</span></strong></p></ac:rich-text-body></ac:structured-macro><p><span style="color: rgb(255,0,0);">Oracle DB:</span></p><p>alter table Angebotspositionen enable all triggers;</p><p>alter table Bestellpositionen enable all triggers;</p><p><span style="color: rgb(255,0,0);">SQL DB</span></p><p><span>ENABLE </span><span>TRIGGER</span> <span>ALL</span> <span>ON</span> <span>Angebotspositionen;</span></p><p><span>ENABLE </span><span>TRIGGER</span> <span>ALL</span> <span>ON</span><span> Bestell</span><span>positionen;</span></p><p><br /></p><h3>Lagerort zwingend aktivieren</h3><p><strong><ac:image ac:height="400"><ri:attachment ri:filename="image2021-1-22_11-3-20.png" /></ac:image></strong></p><p>Beim umgestellten Lager bzw. bei den umgestellten Lagern muss "Lagerort zwingend" aktiviert werden, damit künftige Buchungen ohne Lagerort verhindert werden.</p><p><br /></p><h3>Bereitstellungslagerort und Default-Lagerort je Lager</h3><p>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".</p><p><br /></p><h3>Lagerbestände aktualisieren</h3><p><ac:image><ri:attachment ri:filename="image2020-8-4_13-36-58.png" /></ac:image></p><p><br /></p><p><br /></p>