From cd3c0f21133dd63a34df31d4aa8b5a9ebd4a0c7d Mon Sep 17 00:00:00 2001 From: OpenXE <> Date: Fri, 28 Apr 2023 12:45:06 +0200 Subject: [PATCH] stueckliste import moved to importvorlage --- www/pages/artikel.php | 6 +- www/pages/content/importvorlage_formate.tpl | 80 ++++++++++++++++++- www/pages/content/stuecklisteuebersicht.tpl | 6 -- .../content/stuecklisteuebersicht_edit.tpl | 4 +- www/pages/importvorlage.php | 78 +++++++++++++++++- www/widgets/_gen/widget.gen.importvorlage.php | 1 + 6 files changed, 162 insertions(+), 13 deletions(-) diff --git a/www/pages/artikel.php b/www/pages/artikel.php index b36e4491..9b6c947e 100644 --- a/www/pages/artikel.php +++ b/www/pages/artikel.php @@ -6090,7 +6090,7 @@ class Artikel extends GenArtikel { $stueck = $this->app->erp->ArtikelAnzahlLagerStueckliste($id); - $this->ArtikelStuecklisteImport('TAB3'); +// $this->ArtikelStuecklisteImport('TAB3'); $url = 'index.php?module=artikel&action=stueckliste&cmd=getbaum&id='.$id; $this->app->Tpl->Set('URL',$url); $this->app->Tpl->Add('TAB1',"
"); @@ -6255,8 +6255,8 @@ class Artikel extends GenArtikel { { $id = $this->app->Secure->GetGET('id'); if($id > 0){ - $result = $this->app->DB->SelectArr("SELECT a.nummer, a.name_de, a.hersteller,a.herstellernummer, REPLACE(TRIM(s.menge)+0,'.',',') as menge, s.referenz, s.place, s.layer, s.wert, s.bauform, s.zachse,s.xpos, s.ypos, s.art FROM stueckliste s - LEFT JOIN artikel a ON a.id=s.artikel WHERE s.stuecklistevonartikel='$id'"); + $sql = "SELECT avon.nummer as stuecklistevon, a.nummer, a.name_de, a.hersteller,a.herstellernummer, REPLACE(TRIM(s.menge)+0,'.',',') as menge, s.referenz, s.place, s.layer, s.wert, s.bauform, s.zachse,s.xpos, s.ypos, s.art FROM stueckliste s LEFT JOIN artikel a ON a.id=s.artikel LEFT JOIN artikel avon ON avon.id=s.stuecklistevonartikel WHERE s.stuecklistevonartikel='$id'"; + $result = $this->app->DB->SelectArr($sql); } header('Content-type: text/csv'); header('Content-Disposition: attachment; filename=file.csv'); diff --git a/www/pages/content/importvorlage_formate.tpl b/www/pages/content/importvorlage_formate.tpl index 1de615f1..57fe60da 100644 --- a/www/pages/content/importvorlage_formate.tpl +++ b/www/pages/content/importvorlage_formate.tpl @@ -8,6 +8,7 @@
  • {|Notizen|}
  • {|Kontenrahmen|}
  • {|Kontoauszug|}
  • +
  • {|Stückliste|}
  • @@ -612,6 +613,83 @@
    - + +
    +
    +
    +
    +
    {|Stückliste|} + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    VariableBeschreibungKommentar
    stuecklistevonartikelHauptartikel (muss eine Stückliste sein)Artikelnummer
    artikelArtikelnummer
    mengeZahl
    referenzTextFür Bestückungen
    placeLeer oder 'DNP' = Nicht platzierenFür Bestückungen
    layer"top" oder "bottom"Für Bestückungen
    wertTextFür Bestückungen
    bauformTextFür Bestückungen
    zachseZahlFür Bestückungen
    xposZahlFür Bestückungen
    yposZahlFür Bestückungen
    artEinkaufsteil "et",Informationsteil "it" oder Beistellung "bt"Alternativposition?
    +
    +
    +
    +
    +
    diff --git a/www/pages/content/stuecklisteuebersicht.tpl b/www/pages/content/stuecklisteuebersicht.tpl index d1909bab..115e11ec 100644 --- a/www/pages/content/stuecklisteuebersicht.tpl +++ b/www/pages/content/stuecklisteuebersicht.tpl @@ -3,12 +3,6 @@
    - -
    [MESSAGE] diff --git a/www/pages/content/stuecklisteuebersicht_edit.tpl b/www/pages/content/stuecklisteuebersicht_edit.tpl index dda0748a..e7c6f2a4 100644 --- a/www/pages/content/stuecklisteuebersicht_edit.tpl +++ b/www/pages/content/stuecklisteuebersicht_edit.tpl @@ -5,7 +5,7 @@ @@ -26,4 +26,4 @@
    - \ No newline at end of file + diff --git a/www/pages/importvorlage.php b/www/pages/importvorlage.php index c676a4ae..a096fb1d 100644 --- a/www/pages/importvorlage.php +++ b/www/pages/importvorlage.php @@ -5084,7 +5084,6 @@ class Importvorlage extends GenImportvorlage { $allowed_fields = array('konto','buchung','betrag','betrag2','waehrung','buchungstext','buchungstext2','buchungstext3','buchungstext4'); $error = false; - // Create a row dataset (without checked and cmd) $update_sql = ""; $row = array(); @@ -5165,6 +5164,60 @@ class Importvorlage extends GenImportvorlage { } break; + case 'stueckliste': + + $allowed_fields = array('stuecklistevonartikel','artikel','menge','art','referenz','layer','wert','bauform','xpos','ypos','zachse','place'); + + // Create a row dataset (without checked and cmd) + $row = array(); + $error_text = ""; + + $error = $this->create_row_set($tmp, $i, $allowed_fields, $row, $error_text); + + if ($error !== false) { + $sql = "SELECT id FROM artikel WHERE stueckliste = 1 AND nummer = '".$row['stuecklistevonartikel']."'"; + $von_id = $this->app->DB->SelectArr($sql); + if (empty($von_id)) { + $msg .= "Fehlerhafter 'Stueckliste von'-Artikel \"".$row['stuecklistevonartikel']."\"
    "; + break; + } + $row['stuecklistevonartikel'] = $von_id[0]['id']; + + $sql = "SELECT id FROM artikel WHERE nummer = '".$row['artikel']."'"; + $artikel_id = $this->app->DB->SelectArr($sql); + if (empty($artikel_id)) { + $msg .= "Fehlerhafter Artikel \"".$row['artikel']."\"
    "; + break; + } + $row['artikel'] = $artikel_id[0]['id']; + + if(empty($row['menge'])) { + $row['menge'] = 1; + } + if(empty($row['art'])) { + $row['art'] = 'et'; + } + + if(empty($row['place']) || $row['place'] == 'DNP') { + $row['place'] = 'DNP'; + } else { + $row['place'] = 'DP'; + } + + $sql = "INSERT INTO stueckliste (". + implode(", ",array_keys($row)). + ") VALUES ('". + implode("', '",array_values($row)). + "')"; + + $result = $this->app->DB->Update($sql); + + } else if(!$first_checked) { + $first_checked = true; + $msg .= $error_text; + } + + break; } // HERE END OF PROCESSING THE ROWS switch($ziel); @@ -6252,5 +6305,28 @@ class Importvorlage extends GenImportvorlage { return $normalizedDate; } + +/* +* Create a cleaned row set +* Return true if ok, else see error_message +*/ + private function create_row_set(array $tmp, $pos, array $allowed_fields, array &$result_row, string &$error_message) : bool { + $result_ok = true; + $result_row = array(); + $error_message = ""; + foreach ($tmp as $key => $value) { + if ($key != 'cmd' && $key != 'checked') { + if (in_array($key,$allowed_fields)) { + $result_row[$key] = $value[$pos]; + } else { + $error_message .= "Feld nicht korrekt: ".$key.".
    "; + $result_ok = false; + } + } + } + return($result_ok); + } + + } diff --git a/www/widgets/_gen/widget.gen.importvorlage.php b/www/widgets/_gen/widget.gen.importvorlage.php index ffcb8cfe..afb8729b 100644 --- a/www/widgets/_gen/widget.gen.importvorlage.php +++ b/www/widgets/_gen/widget.gen.importvorlage.php @@ -80,6 +80,7 @@ class WidgetGenimportvorlage $field->AddOption('Notizen (min. Angabe: datum,kundennummer,mitarbeiternummer,betreff)','notizen'); $field->AddOption('Kontenrahmen (min. Angabe: sachkonto,beschriftung,art)','kontorahmen'); $field->AddOption('Kontoauszug','kontoauszug'); + $field->AddOption('Stückliste','stueckliste'); $this->form->NewField($field); $field = new HTMLInput("importerstezeilenummer","text","","15","","","","","","","","0","","");