mirror of
https://github.com/OpenXE-org/OpenXE.git
synced 2025-02-26 02:59:25 +01:00
seriennummern rework list view
This commit is contained in:
parent
a59e4a41e3
commit
ee12d9097a
@ -1,16 +1,10 @@
|
|||||||
<div id="tabs">
|
<div id="tabs">
|
||||||
<ul>
|
<ul>
|
||||||
<li><a href="#tabs-1">Artikel</a></li>
|
<li><a href="#tabs-1">[TABTEXT1]</a></li>
|
||||||
<li><a href="#tabs-2">Seriennummern</a></li>
|
|
||||||
</ul>
|
</ul>
|
||||||
<div id="tabs-1">
|
<div id="tabs-1">
|
||||||
[MESSAGE]
|
[MESSAGE]
|
||||||
[TAB1]
|
[TAB1]
|
||||||
[TAB1NEXT]
|
[TAB1NEXT]
|
||||||
</div>
|
</div>
|
||||||
<div id="tabs-2">
|
|
||||||
[MESSAGE]
|
|
||||||
[TAB2]
|
|
||||||
[TAB2NEXT]
|
|
||||||
</div>
|
|
||||||
</div>
|
</div>
|
||||||
|
99
www/pages/content/seriennummern_nummern_list.tpl
Normal file
99
www/pages/content/seriennummern_nummern_list.tpl
Normal file
@ -0,0 +1,99 @@
|
|||||||
|
<div id="tabs">
|
||||||
|
<ul>
|
||||||
|
<li><a href="#tabs-1">[TABTEXT1]</a></li>
|
||||||
|
</ul>
|
||||||
|
<div id="tabs-1">
|
||||||
|
[MESSAGE]
|
||||||
|
<form action="" method="post">
|
||||||
|
[FORMHANDLEREVENT]
|
||||||
|
<div class="row" [ARTIKEL_HIDDEN]>
|
||||||
|
<div class="row-height">
|
||||||
|
<div class="col-xs-14 col-md-12 col-md-height">
|
||||||
|
<div class="inside inside-full-height">
|
||||||
|
<fieldset>
|
||||||
|
<table width="100%" border="0" class="mkTableFormular">
|
||||||
|
<tr>
|
||||||
|
<td>
|
||||||
|
{|Lagermenge|}:
|
||||||
|
</td>
|
||||||
|
<td>
|
||||||
|
<input type="text" value="[ANZLAGER]" size="40" disabled>
|
||||||
|
</td>
|
||||||
|
</tr>
|
||||||
|
<tr>
|
||||||
|
<td>
|
||||||
|
{|Seriennummern verfügbar|}:
|
||||||
|
</td>
|
||||||
|
<td>
|
||||||
|
<input type="text" value="[ANZVORHANDEN]" size="40" disabled>
|
||||||
|
</td>
|
||||||
|
</tr>
|
||||||
|
<tr>
|
||||||
|
<td>
|
||||||
|
{|Seriennummern fehlen|}:
|
||||||
|
</td>
|
||||||
|
<td>
|
||||||
|
<input type="text" value="[ANZFEHLT]" size="40" disabled>
|
||||||
|
</td>
|
||||||
|
</tr>
|
||||||
|
</table>
|
||||||
|
</fieldset>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
<div class="col-xs-14 col-md-2 col-md-height">
|
||||||
|
<div class="inside inside-full-height">
|
||||||
|
<fieldset>
|
||||||
|
<legend>{|<!--Legend for this form area goes here>-->Aktionen|}</legend>
|
||||||
|
<table width="100%" border="0" class="mkTableFormular">
|
||||||
|
<tr>
|
||||||
|
<td>
|
||||||
|
<button onclick="window.location.href='index.php?module=seriennummern&action=enter&artikel=[ARTIKEL_ID]';" form="" class="ui-button-icon" style="width:100%;">Hinzufügen</button>
|
||||||
|
</td>
|
||||||
|
</tr>
|
||||||
|
</table>
|
||||||
|
</fieldset>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
<div class="filter-box filter-usersave">
|
||||||
|
<div class="filter-block filter-inline">
|
||||||
|
<div class="filter-title">{|Filter|}
|
||||||
|
</div>
|
||||||
|
<ul class="filter-list">
|
||||||
|
<li class="filter-item">
|
||||||
|
<label for="verfuegbar" class="switch">
|
||||||
|
<input type="checkbox" id="verfuegbar" />
|
||||||
|
<span class="slider round">
|
||||||
|
</span>
|
||||||
|
</label>
|
||||||
|
<label for="verfuegbar">
|
||||||
|
{|Nur verfügbare|}
|
||||||
|
</label>
|
||||||
|
</li>
|
||||||
|
<li class="filter-item">
|
||||||
|
<label for="versendet" class="switch">
|
||||||
|
<input type="checkbox" id="versendet" />
|
||||||
|
<span class="slider round">
|
||||||
|
</span>
|
||||||
|
</label>
|
||||||
|
<label for="versendet">
|
||||||
|
{|Nur versendete|}
|
||||||
|
</label>
|
||||||
|
</li>
|
||||||
|
</ul>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
<div class="row">
|
||||||
|
<div class="row-height">
|
||||||
|
<div class="col-xs-14 col-md-14 col-md-height">
|
||||||
|
<div class="inside inside-full-height">
|
||||||
|
[TAB1]
|
||||||
|
[TAB1NEXT]
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</form>
|
||||||
|
</div>
|
||||||
|
</div>
|
@ -16,7 +16,8 @@ class Seriennummern {
|
|||||||
return;
|
return;
|
||||||
|
|
||||||
$this->app->ActionHandlerInit($this);
|
$this->app->ActionHandlerInit($this);
|
||||||
$this->app->ActionHandler("list", "seriennummern_list");
|
$this->app->ActionHandler("list", "seriennummern_artikel_list");
|
||||||
|
$this->app->ActionHandler("nummern_list", "seriennummern_nummern_list");
|
||||||
$this->app->ActionHandler("enter", "seriennummern_enter");
|
$this->app->ActionHandler("enter", "seriennummern_enter");
|
||||||
$this->app->ActionHandler("delete", "seriennummern_delete");
|
$this->app->ActionHandler("delete", "seriennummern_delete");
|
||||||
$this->app->DefaultActionHandler("list");
|
$this->app->DefaultActionHandler("list");
|
||||||
@ -31,14 +32,14 @@ class Seriennummern {
|
|||||||
switch ($name) {
|
switch ($name) {
|
||||||
case "seriennummern_list":
|
case "seriennummern_list":
|
||||||
$allowed['seriennummern_list'] = array('list');
|
$allowed['seriennummern_list'] = array('list');
|
||||||
$heading = array('','','Nummer','Artikel', 'Seriennummer','Erzeugt am','Adresse','Lieferschein','Lieferdatum', 'Menü');
|
$heading = array('','','Nummer','Artikel', 'Seriennummer','Erfasst am','Adresse','Lieferschein','Lieferdatum', 'Menü');
|
||||||
$width = array('1%','1%','10%'); // Fill out manually later
|
$width = array('1%','1%','10%'); // Fill out manually later
|
||||||
|
|
||||||
// columns that are aligned right (numbers etc)
|
// columns that are aligned right (numbers etc)
|
||||||
// $alignright = array(4,5,6,7,8);
|
// $alignright = array(4,5,6,7,8);
|
||||||
|
|
||||||
$findcols = array('s.id','s.id', 'a.name_de', 'a.nummer', 's.seriennummer','s.logdatei','ad.name','l.belegnr','l.datum','s.id');
|
$findcols = array('s.id','s.id', 'a.nummer', 'a.name_de', 's.seriennummer','s.logdatei','ad.name','l.belegnr','l.datum','s.id');
|
||||||
$searchsql = array('a.name_de', 'a.name_de', 'a.nummer', 's.seriennummer');
|
$searchsql = array('a.nummer', 'a.name_de', 's.seriennummer');
|
||||||
|
|
||||||
$defaultorder = 1;
|
$defaultorder = 1;
|
||||||
$defaultorderdesc = 0;
|
$defaultorderdesc = 0;
|
||||||
@ -79,8 +80,45 @@ class Seriennummern {
|
|||||||
adresse ad ON ad.id = l.adresse
|
adresse ad ON ad.id = l.adresse
|
||||||
";
|
";
|
||||||
|
|
||||||
$where = "1";
|
$artikel_id = $app->User->GetParameter('seriennummern_artikel_id');
|
||||||
$count = "SELECT count(DISTINCT id) FROM seriennummern WHERE $where";
|
|
||||||
|
$where = "(a.id = '".$artikel_id."' OR '".$artikel_id."' = '')";
|
||||||
|
|
||||||
|
// Toggle filters
|
||||||
|
$app->Tpl->Add('JQUERYREADY', "$('#verfuegbar').click( function() { fnFilterColumn1( 0 ); } );");
|
||||||
|
$app->Tpl->Add('JQUERYREADY', "$('#versendet').click( function() { fnFilterColumn2( 0 ); } );");
|
||||||
|
|
||||||
|
for ($r = 1;$r <= 2;$r++) {
|
||||||
|
$app->Tpl->Add('JAVASCRIPT', '
|
||||||
|
function fnFilterColumn' . $r . ' ( i )
|
||||||
|
{
|
||||||
|
if(oMoreData' . $r . $name . '==1)
|
||||||
|
oMoreData' . $r . $name . ' = 0;
|
||||||
|
else
|
||||||
|
oMoreData' . $r . $name . ' = 1;
|
||||||
|
|
||||||
|
$(\'#' . $name . '\').dataTable().fnFilter(
|
||||||
|
\'\',
|
||||||
|
i,
|
||||||
|
0,0
|
||||||
|
);
|
||||||
|
}
|
||||||
|
');
|
||||||
|
}
|
||||||
|
|
||||||
|
$more_data1 = $app->Secure->GetGET("more_data1");
|
||||||
|
if ($more_data1 == 1) {
|
||||||
|
$where .= " AND s.lieferscheinpos = 0";
|
||||||
|
} else {
|
||||||
|
}
|
||||||
|
|
||||||
|
$more_data2 = $app->Secure->GetGET("more_data2");
|
||||||
|
if ($more_data2 == 1) {
|
||||||
|
$where .= " AND s.lieferscheinpos <> 0";
|
||||||
|
} else {
|
||||||
|
}
|
||||||
|
|
||||||
|
$count = "SELECT count(DISTINCT s.id) FROM seriennummern s LEFT JOIN artikel a on a.id = s.artikel WHERE $where";
|
||||||
// $groupby = "";
|
// $groupby = "";
|
||||||
|
|
||||||
break;
|
break;
|
||||||
@ -114,6 +152,11 @@ class Seriennummern {
|
|||||||
['sql' => 'a.id'],
|
['sql' => 'a.id'],
|
||||||
'">',
|
'">',
|
||||||
'<img src="./themes/'.$app->Conf->WFconf['defaulttheme'].'/images/add.png" title="Neue Seriennummern erfassen" border="0">',
|
'<img src="./themes/'.$app->Conf->WFconf['defaulttheme'].'/images/add.png" title="Neue Seriennummern erfassen" border="0">',
|
||||||
|
'</a>',
|
||||||
|
'<a href="index.php?module=seriennummern&action=nummern_list&artikel=',
|
||||||
|
['sql' => 'a.id'],
|
||||||
|
'">',
|
||||||
|
'<img src="./themes/'.$app->Conf->WFconf['defaulttheme'].'/images/lupe.svg" title="Seriennummern anzeigen" border="0">',
|
||||||
'</a>'
|
'</a>'
|
||||||
);
|
);
|
||||||
|
|
||||||
@ -229,31 +272,94 @@ class Seriennummern {
|
|||||||
return $erg;
|
return $erg;
|
||||||
}
|
}
|
||||||
|
|
||||||
function seriennummern_list() {
|
function seriennummern_menu() {
|
||||||
$this->app->erp->MenuEintrag("index.php?module=seriennummern&action=list", "Übersicht");
|
$this->app->erp->MenuEintrag("index.php?module=seriennummern&action=list", "Übersicht");
|
||||||
|
$this->app->erp->MenuEintrag("index.php?module=seriennummern&action=nummern_list", "Seriennummern");
|
||||||
|
// $this->app->erp->MenuEintrag("index.php", "Zurück");
|
||||||
|
}
|
||||||
|
|
||||||
$this->app->erp->MenuEintrag("index.php", "Zurück");
|
function seriennummern_check_and_message($artikel_id) {
|
||||||
|
$check_seriennummern = $this->seriennummern_check_serials($artikel_id);
|
||||||
$this->app->YUI->TableSearch('TAB1', 'seriennummern_artikel_list', "show", "", "", basename(__FILE__), __CLASS__);
|
|
||||||
$this->app->YUI->TableSearch('TAB2', 'seriennummern_list', "show", "", "", basename(__FILE__), __CLASS__);
|
|
||||||
|
|
||||||
$check_seriennummern = $this->seriennummern_check_serials();
|
|
||||||
|
|
||||||
if (!empty($check_seriennummern)) {
|
if (!empty($check_seriennummern)) {
|
||||||
$artikel_id_links = array();
|
$artikel_minus_id_links = array();
|
||||||
|
$artikel_plus_id_links = array();
|
||||||
foreach ($check_seriennummern as $artikel_id) {
|
foreach ($check_seriennummern as $artikel_id) {
|
||||||
if ($artikel_id['menge_nummern'] < $artikel_id['menge_auf_lager']) {
|
if ($artikel_id['menge_nummern'] < $artikel_id['menge_auf_lager']) {
|
||||||
$artikel_id_links[] = '<a href="index.php?module=seriennummern&action=enter&artikel='.$artikel_id['id'].'">'.$artikel_id['nummer'].'</a>';
|
$artikel_minus_id_links[] = '<a href="index.php?module=seriennummern&action=enter&artikel='.$artikel_id['id'].'">'.$artikel_id['nummer'].'</a>';
|
||||||
|
}
|
||||||
|
else if ($artikel_id['menge_nummern'] > $artikel_id['menge_auf_lager']) {
|
||||||
|
$artikel_plus_id_links[] = '<a href="index.php?module=seriennummern&action=nummern_list&artikel='.$artikel_id['id'].'">'.$artikel_id['nummer'].'</a>';
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
if (!empty($artikel_id_links)) {
|
if (!empty($artikel_minus_id_links)) {
|
||||||
$this->app->YUI->Message('warning','Seriennummern fehlen für Artikel: '.implode(', ',$artikel_id_links));
|
$this->app->YUI->Message('warning','Seriennummern fehlen für Artikel: '.implode(', ',$artikel_minus_id_links));
|
||||||
|
}
|
||||||
|
if (!empty($artikel_plus_id_links)) {
|
||||||
|
$this->app->YUI->Message('warning','Seriennummern Überschuss für Artikel: '.implode(', ',$artikel_plus_id_links));
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
function seriennummern_nummern_list() {
|
||||||
|
|
||||||
|
$this->seriennummern_menu();
|
||||||
|
|
||||||
|
// For transfer to tablesearch
|
||||||
|
$artikel_id = $this->app->Secure->GetGET('artikel');
|
||||||
|
$this->app->User->SetParameter('seriennummern_artikel_id', $artikel_id);
|
||||||
|
|
||||||
|
if (empty($artikel_id)) {
|
||||||
|
$this->app->Tpl->Set('ARTIKEL_HIDDEN', "hidden");
|
||||||
|
} else {
|
||||||
|
$artikel = $this->app->DB->SelectRow("SELECT name_de, nummer FROM artikel WHERE id ='".$artikel_id."'");
|
||||||
|
|
||||||
|
$check_seriennummern = $this->seriennummern_check_serials($artikel_id);
|
||||||
|
$check_seriennummern = $check_seriennummern[0];
|
||||||
|
|
||||||
|
$this->app->Tpl->SetText('KURZUEBERSCHRIFT1','Anzeigen');
|
||||||
|
$this->app->Tpl->SetText('KURZUEBERSCHRIFT2',$artikel['name_de']." (Artikel ".$artikel['nummer'].")");
|
||||||
|
|
||||||
|
$anzahl_fehlt = $check_seriennummern['menge_auf_lager']-$check_seriennummern['menge_nummern'];
|
||||||
|
|
||||||
|
if ($anzahl_fehlt == 0) {
|
||||||
|
$this->app->Tpl->addMessage('success', 'Seriennummern vollständig.');
|
||||||
|
}
|
||||||
|
|
||||||
|
if ($anzahl_fehlt < 0) {
|
||||||
|
$anzahl_fehlt = 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
$letzte_seriennummer = (string) $this->app->DB->Select("SELECT seriennummer FROM seriennummern WHERE artikel = '".$artikel_id."' ORDER BY id DESC LIMIT 1");
|
||||||
|
$this->app->Tpl->Set('LETZTE', $letzte_seriennummer);
|
||||||
|
|
||||||
|
$this->app->Tpl->Set('ANZAHL', $anzahl_fehlt);
|
||||||
|
$this->app->Tpl->Set('ARTIKEL_ID', $artikel_id);
|
||||||
|
|
||||||
|
$this->app->Tpl->Set('ARTIKELNUMMER', '<a href="index.php?module=artikel&action=edit&id='.$check_seriennummern['id'].'">'.$check_seriennummern['nummer'].'</a>');
|
||||||
|
$this->app->Tpl->Set('ARTIKEL', $check_seriennummern['name']);
|
||||||
|
$this->app->Tpl->Set('ANZLAGER', $check_seriennummern['menge_auf_lager']);
|
||||||
|
$this->app->Tpl->Set('ANZVORHANDEN', $check_seriennummern['menge_nummern']);
|
||||||
|
$this->app->Tpl->Set('ANZFEHLT', $anzahl_fehlt);
|
||||||
|
}
|
||||||
|
|
||||||
|
$this->seriennummern_check_and_message($artikel_id);
|
||||||
|
|
||||||
|
$this->app->YUI->TableSearch('TAB1', 'seriennummern_list', "show", "", "", basename(__FILE__), __CLASS__);
|
||||||
|
|
||||||
|
$this->app->Tpl->Parse('PAGE', "seriennummern_nummern_list.tpl");
|
||||||
|
}
|
||||||
|
|
||||||
|
function seriennummern_artikel_list() {
|
||||||
|
$this->seriennummern_menu();
|
||||||
|
$this->seriennummern_check_and_message(null);
|
||||||
|
|
||||||
|
$this->app->YUI->TableSearch('TAB1', 'seriennummern_artikel_list', "show", "", "", basename(__FILE__), __CLASS__);
|
||||||
|
|
||||||
$this->app->Tpl->Parse('PAGE', "seriennummern_list.tpl");
|
$this->app->Tpl->Parse('PAGE', "seriennummern_list.tpl");
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
public function seriennummern_delete() {
|
public function seriennummern_delete() {
|
||||||
$id = (int) $this->app->Secure->GetGET('id');
|
$id = (int) $this->app->Secure->GetGET('id');
|
||||||
|
|
||||||
|
36
www/themes/new/images/lupe.svg
Normal file
36
www/themes/new/images/lupe.svg
Normal file
@ -0,0 +1,36 @@
|
|||||||
|
<?xml version="1.0" encoding="UTF-8"?>
|
||||||
|
<svg width="5.56mm" height="5.56mm" fill-rule="evenodd" stroke-linejoin="round" stroke-width="28.222" preserveAspectRatio="xMidYMid" version="1.2" viewBox="0 0 556 556" xml:space="preserve" xmlns="http://www.w3.org/2000/svg">
|
||||||
|
<defs class="ClipPathGroup"><clipPath id="presentation_clip_path">
|
||||||
|
<rect width="556" height="556"/>
|
||||||
|
</clipPath></defs>
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
<g class="Master_Slide">
|
||||||
|
|
||||||
|
|
||||||
|
</g>
|
||||||
|
|
||||||
|
<g class="SlideGroup">
|
||||||
|
|
||||||
|
|
||||||
|
<g class="Slide" clip-path="url(#presentation_clip_path)">
|
||||||
|
<g class="Page">
|
||||||
|
<g class="com.sun.star.drawing.ClosedBezierShape">
|
||||||
|
|
||||||
|
<rect class="BoundingBox" x="175" y="80" width="302" height="302" fill="none"/>
|
||||||
|
<path d="m421 286c10-17 15-36 15-56 0-19-5-38-15-55s-23-30-40-40-36-15-56-15c-19 0-38 5-55 15s-30 23-40 40-15 36-15 56c0 19 5 38 15 55s23 30 40 40 36 15 56 15c19 0 38-5 55-15s30-23 40-40zm35 20c-13 23-32 42-55 55s-49 20-75 20c-27 0-53-7-76-20s-42-32-55-55-20-49-20-75c0-27 7-53 20-76s32-42 55-55 49-20 75-20c27 0 53 7 76 20s42 32 55 55 20 49 20 75c0 27-7 53-20 76z" fill="#929292"/>
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
<rect class="BoundingBox" x="78" y="286" width="190" height="191" fill="none"/>
|
||||||
|
<path d="m195 306c13 23 32 42 55 55 6 3 11 6 17 8l-102 102c-2 3-5 4-8 4h-67c-6 0-11-5-11-11v-67c0-3 1-6 4-8l103-103c2 7 6 14 9 20z" fill="#929292"/>
|
||||||
|
|
||||||
|
</g>
|
||||||
|
</g>
|
||||||
|
</g>
|
||||||
|
|
||||||
|
|
||||||
|
</g>
|
||||||
|
</svg>
|
After Width: | Height: | Size: 1.4 KiB |
Loading…
x
Reference in New Issue
Block a user