diff --git a/upgrade/data/db_schema.json b/upgrade/data/db_schema.json index 5484bc0b..31427fdd 100644 --- a/upgrade/data/db_schema.json +++ b/upgrade/data/db_schema.json @@ -70961,6 +70961,17 @@ "Extra": "", "Privileges": "select,insert,update,references", "Comment": "" + }, + { + "Field": "sprache", + "Type": "varchar(32)", + "Collation": "utf8mb3_general_ci", + "Null": "NO", + "Key": "", + "Default": null, + "Extra": "", + "Privileges": "select,insert,update,references", + "Comment": "" } ], "keys": [ diff --git a/www/lib/class.erpapi.php b/www/lib/class.erpapi.php index d758f98a..25968da1 100644 --- a/www/lib/class.erpapi.php +++ b/www/lib/class.erpapi.php @@ -25361,6 +25361,7 @@ function MailSendFinal($from,$from_name,$to,$to_name,$betreff,$text,$files="",$p $uebersetzung['dokument_lieferschein']['deutsch'] = "Lieferschein"; $uebersetzung['dokument_retoure']['deutsch'] = "Retoure"; $uebersetzung['dokument_kommissionierschein']['deutsch'] = "Kommissionierschein"; + $uebersetzung['dokument_produktion']['deutsch'] = "Produktion"; $uebersetzung['dokument_ansprechpartner']['deutsch'] = "Ansprechpartner"; $uebersetzung['dokument_rechnungsdatum']['deutsch'] = "Rechnungsdatum"; $uebersetzung['dokument_proformarechnungsdatum']['deutsch'] = "Datum"; diff --git a/www/pages/content/produktion_edit.tpl b/www/pages/content/produktion_edit.tpl index 3befb3d3..0d926ba7 100644 --- a/www/pages/content/produktion_edit.tpl +++ b/www/pages/content/produktion_edit.tpl @@ -29,9 +29,9 @@
{|Allgemein|} - + - +
{|Kunde|}:
{|Kunde|}:
{|Projekt|}:
{|Auftrag|}:
{|Auftrag|}:
{|Interne Bezeichnung|}:
diff --git a/www/pages/produktion.php b/www/pages/produktion.php index d97f22a9..7c329792 100644 --- a/www/pages/produktion.php +++ b/www/pages/produktion.php @@ -26,6 +26,7 @@ class Produktion { $this->app->ActionHandler("copy", "produktion_copy"); $this->app->ActionHandler("minidetail", "produktion_minidetail"); $this->app->ActionHandler("delete", "produktion_delete"); + $this->app->ActionHandler("pdf", "produktion_pdf"); $this->app->DefaultActionHandler("list"); $this->app->ActionHandlerListen($app); @@ -54,9 +55,7 @@ class Produktion { CONCAT('',internebezeichnung,'') )"; - $adresse = "(SELECT name FROM adresse WHERE kundennummer = p.kundennummer AND p.kundennummer != 0 LIMIT 1)"; - - $findcols = array('p.id','p.id','p.belegnr','p.kundennummer',$adresse,'p.datum',$bezeichnung,'soll','ist', 'zeit_geplant','zeit_geplant', 'projekt','p.status','icons','id'); + $findcols = array('p.id','p.id','p.belegnr','adresse.kundennummer','adresse.name','p.datum',$bezeichnung,'soll','ist', 'zeit_geplant','zeit_geplant', 'projekt','p.status','icons','id'); $searchsql = array('p.belegnr','p.kundennummer','p.name',$bezeichnung); @@ -69,16 +68,18 @@ class Produktion { "Conf->WFconf['defaulttheme']}/images/edit.svg\" border=\"0\"> ". "Conf->WFconf['defaulttheme']}/images/delete.svg\" border=\"0\">" . "Conf->WFconf['defaulttheme']}/images/copy.svg\" border=\"0\">" . + "Conf->WFconf['defaulttheme']}/images/pdf.svg\" border=\"0\">". ""; + // $sql = "SELECT SQL_CALC_FOUND_ROWS p.id, $dropnbox, p.datum, p.art, p.projekt, p.belegnr, p.internet, p.bearbeiter, p.angebot, p.freitext, p.internebemerkung, p.status, p.adresse, p.name, p.abteilung, p.unterabteilung, p.strasse, p.adresszusatz, p.ansprechpartner, p.plz, p.ort, p.land, p.ustid, p.ust_befreit, p.ust_inner, p.email, p.telefon, p.telefax, p.betreff, p.kundennummer, p.versandart, p.vertrieb, p.zahlungsweise, p.zahlungszieltage, p.zahlungszieltageskonto, p.zahlungszielskonto, p.bank_inhaber, p.bank_institut, p.bank_blz, p.bank_konto, p.kreditkarte_typ, p.kreditkarte_inhaber, p.kreditkarte_nummer, p.kreditkarte_pruefnummer, p.kreditkarte_monat, p.kreditkarte_jahr, p.firma, p.versendet, p.versendet_am, p.versendet_per, p.versendet_durch, p.autoversand, p.keinporto, p.keinestornomail, p.abweichendelieferadresse, p.liefername, p.lieferabteilung, p.lieferunterabteilung, p.lieferland, p.lieferstrasse, p.lieferort, p.lieferplz, p.lieferadresszusatz, p.lieferansprechpartner, p.packstation_inhaber, p.packstation_station, p.packstation_ident, p.packstation_plz, p.packstation_ort, p.autofreigabe, p.freigabe, p.nachbesserung, p.gesamtsumme, p.inbearbeitung, p.abgeschlossen, p.nachlieferung, p.lager_ok, p.porto_ok, p.ust_ok, p.check_ok, p.vorkasse_ok, p.nachnahme_ok, p.reserviert_ok, p.bestellt_ok, p.zeit_ok, p.versand_ok, p.partnerid, p.folgebestaetigung, p.zahlungsmail, p.stornogrund, p.stornosonstiges, p.stornorueckzahlung, p.stornobetrag, p.stornobankinhaber, p.stornobankkonto, p.stornobankblz, p.stornobankbank, p.stornogutschrift, p.stornogutschriftbeleg, p.stornowareerhalten, p.stornomanuellebearbeitung, p.stornokommentar, p.stornobezahlt, p.stornobezahltam, p.stornobezahltvon, p.stornoabgeschlossen, p.stornorueckzahlungper, p.stornowareerhaltenretour, p.partnerausgezahlt, p.partnerausgezahltam, p.kennen, p.logdatei, p.bezeichnung, p.datumproduktion, p.anschreiben, p.usereditid, p.useredittimestamp, p.steuersatz_normal, p.steuersatz_zwischen, p.steuersatz_ermaessigt, p.steuersatz_starkermaessigt, p.steuersatz_dienstleistung, p.waehrung, p.schreibschutz, p.pdfarchiviert, p.pdfarchiviertversion, p.typ, p.reservierart, p.auslagerart, p.projektfiliale, p.datumauslieferung, p.datumbereitstellung, p.unterlistenexplodieren, p.charge, p.arbeitsschrittetextanzeigen, p.einlagern_ok, p.auslagern_ok, p.mhd, p.auftragmengenanpassen, p.internebezeichnung, p.mengeoriginal, p.teilproduktionvon, p.teilproduktionnummer, p.parent, p.parentnummer, p.bearbeiterid, p.mengeausschuss, p.mengeerfolgreich, p.abschlussbemerkung, p.auftragid, p.funktionstest, p.seriennummer_erstellen, p.unterseriennummern_erfassen, p.datumproduktionende, p.standardlager, p.id FROM produktion p"; // $sql = "SELECT SQL_CALC_FOUND_ROWS p.id, $dropnbox, p.belegnr, p.kundennummer, p.name, p.datum, \"SUBSELECT\", \"SUBSELECT\", p.mengeerfolgreich, \"-\", \"-\", p.projekt, p.status, p.status, p.id FROM produktion p"; $sql = "SELECT SQL_CALC_FOUND_ROWS p.id, $dropnbox, p.belegnr, - p.kundennummer, - ".$adresse." as name, + adresse.kundennummer, + adresse.name as name, DATE_FORMAT(datum,'%d.%m.%Y') as datum, ".$bezeichnung." as bezeichnung, @@ -92,6 +93,7 @@ class Produktion { (" . $app->YUI->IconsSQL_produktion('p') . ") AS `icons`, p.id FROM produktion p + LEFT JOIN adresse ON adresse.id = p.adresse "; $where = "0"; @@ -422,6 +424,10 @@ class Produktion { $input['datumbereitstellung'] = $this->app->erp->ReplaceDatum(true,$input['datumbereitstellung'],true); $input['datumproduktion'] = $this->app->erp->ReplaceDatum(true,$input['datumproduktion'],true); $input['datumproduktionende'] = $this->app->erp->ReplaceDatum(true,$input['datumproduktionende'],true); + + $input['adresse'] = $this->app->erp->ReplaceKunde(true,$input['adresse'],true); + $input['auftragid'] = $this->app->erp->ReplaceAuftrag(true,$input['auftrag'],true); + unset($input['auftrag']); $input['projekt'] = $this->app->erp->ReplaceProjekt(true,$input['projekt'],true); $columns = "id, "; @@ -438,6 +444,7 @@ class Produktion { } $sql = "INSERT INTO produktion (".$columns.") VALUES (".$values.") ON DUPLICATE KEY UPDATE ".$update; + $this->app->DB->Update($sql); if ($id == 'NULL') { @@ -861,6 +868,7 @@ class Produktion { case 'etikettendrucken': $menge_drucken = $this->app->Secure->GetPOST('menge_produzieren'); + if ($menge_drucken) { $sql = "SELECT artikel FROM produktion_position pp WHERE produktion=$id AND stuecklistestufe=1"; $produktionsartikel_position = $this->app->DB->SelectArr($sql)[0]; @@ -881,12 +889,13 @@ class Produktion { ); } } - } + } else { + $msg .= "
Ungültige Menge.
"; + } break; } } - // Load values again from database // toDo: cleanup @@ -1082,10 +1091,12 @@ class Produktion { } $this->app->Tpl->Set('PROJEKT',$this->app->erp->ReplaceProjekt(false,$produktion_from_db['projekt'],false)); + $this->app->Tpl->Set('ADRESSE',$this->app->erp->ReplaceKunde(false,$produktion_from_db['adresse'],false)); + $this->app->Tpl->Set('AUFTRAG',$this->app->erp->ReplaceAuftrag(false,$produktion_from_db['auftragid'],false)); $this->app->YUI->AutoComplete("projekt", "projektname", 1); - $this->app->YUI->AutoComplete("kundennummer", "kunde", 1); - $this->app->YUI->AutoComplete("auftragid", "auftrag", 1); + $this->app->YUI->AutoComplete("adresse", "kunde", 1); + $this->app->YUI->AutoComplete("auftrag", "auftrag", 1); $this->app->YUI->AutoComplete("artikel_planen", "stuecklistenartikel"); $this->app->YUI->AutoComplete("artikel_hinzu", "artikelnummer"); @@ -1284,9 +1295,10 @@ class Produktion { public function GetInput(): array { $input = array(); - $input['kundennummer'] = $this->app->Secure->GetPOST('kundennummer'); - $input['projekt'] = $this->app->Secure->GetPOST('projekt'); - $input['auftragid'] = $this->app->Secure->GetPOST('auftragid'); + $input['adresse'] = $this->app->Secure->GetPOST('adresse'); + $input['projekt'] = $this->app->Secure->GetPOST('projekt'); + $input['auftrag'] = $this->app->Secure->GetPOST('auftrag'); + $input['internebezeichnung'] = $this->app->Secure->GetPOST('internebezeichnung'); $input['datum'] = $this->app->Secure->GetPOST('datum'); @@ -1668,7 +1680,7 @@ class Produktion { $produktion_neu['art'] = $produktion_alt['art']; $produktion_neu['projekt'] = $produktion_alt['projekt']; $produktion_neu['angebot'] = $produktion_alt['angebot']; - $produktion_neu['kundennummer'] = $produktion_alt['kundennummer']; + $produktion_neu['adresse'] = $produktion_alt['adresse']; $produktion_neu['auftragid'] = $produktion_alt['auftragid']; $produktion_neu['freitext'] = $produktion_alt['freitext']; $produktion_neu['internebemerkung'] = $produktion_alt['internebemerkung']; @@ -1745,6 +1757,13 @@ class Produktion { $tmp->DisplayNew($parsetarget,'Protokoll','noAction'); } + function produktion_pdf() { + $id = $this->app->Secure->GetGET('id'); + $Brief = new ProduktionPDF($this->app, styleData: Array('herstellernummerimdokument' => 1, 'ohne_steuer' => true, 'artikeleinheit' => false, 'abstand_boxrechtsoben' => -70, 'abstand_artikeltabelleoben' => -80, 'abstand_betreffzeileoben' => -70, 'preise_ausblenden' => true, 'hintergrund' => 'none')); + $Brief->GetProduktion($id); + $Brief->displayDocument(false); + exit(); + } }