diff --git a/www/pages/verbindlichkeit.php b/www/pages/verbindlichkeit.php index 9ff88523..b005c441 100644 --- a/www/pages/verbindlichkeit.php +++ b/www/pages/verbindlichkeit.php @@ -252,7 +252,7 @@ class Verbindlichkeit { $preise = array ( ' $this->app->erp->FormatMenge("COALESCE(bp.preis,0)",5)], '" min="0"', '"/>' ); diff --git a/www/pages/wareneingang.php b/www/pages/wareneingang.php index e933bfb5..9d5abc19 100644 --- a/www/pages/wareneingang.php +++ b/www/pages/wareneingang.php @@ -126,19 +126,30 @@ class Wareneingang { ) "; - $input_for_menge = "CONCAT( - '', - '' - )"; + $auswahl = array ( + ' 'bp.id'], + '" hidden/>', + ['sql' => 'bp.bestellnummer'] + ); + + $input_for_menge = array( + '', + '' + ); - if ($wareneingangauftragzubestellung) { + $input_for_bemerkung = array( + '', + '' + ); + + /* if ($wareneingangauftragzubestellung) { $heading = array('Lieferant-Art.-Nr.', 'Art.-Nummer', 'Bestellung', 'Beschreibung', 'Lieferdatum', 'Projekt', 'Menge', 'Geliefert', 'Offen', 'Auftrag', 'Menge', 'Eingabe', ''); $width = array('5%', '5%', '5%', '30%', '5%', '5%', '5%', '5%', '5%', '5%', '5%', '5%', '5%'); $findcols = array('bp.bestellnummer', 'art.nummer', 'b.belegnr', @@ -155,23 +166,147 @@ class Wareneingang { IF(b.bestellungbestaetigtabnummer != '' AND b.bestellungbestaetigtabnummer IS NOT NULL, CONCAT('
AB Nummer Lieferant: ',b.bestellungbestaetigtabnummer), ''), IF(b.bestaetigteslieferdatum != '' AND b.bestaetigteslieferdatum IS NOT NULL AND b.bestaetigteslieferdatum != '0000-00-00', CONCAT('
Best. Lieferdatum: ',DATE_FORMAT(b.bestaetigteslieferdatum, '%d.%m.%Y')),'') )", "if(bp.lieferdatum,DATE_FORMAT(bp.lieferdatum,'%d.%m.%Y'),'sofort')", 'p.abkuerzung', 'bp.menge', 'bp.geliefert', "if((SELECT COUNT(auf2.id) FROM auftrag auf2 INNER JOIN auftrag_position ap2 ON auf2.id = ap2.auftrag WHERE bp.auftrag_position_id = ap2.id ) > 0,(SELECT auf2.belegnr FROM auftrag auf2 INNER JOIN auftrag_position ap2 ON auf2.id = ap2.auftrag WHERE bp.auftrag_position_id = ap2.id ORDER BY belegnr LIMIT 1),'-' )"); - } else { - $heading = array('Lieferant-Art.-Nr.', 'Art.-Nummer', 'Bestellung', 'Beschreibung', 'Lieferdatum', 'Projekt', 'Menge', 'Geliefert', 'Offen', 'Eingabe', 'Aktion'); - $width = array('5%', '5%', '5%', '30%', '5%', '5%', '5%', '5%', '5%', '5%', '5%'); - $findcols = array('bp.bestellnummer', 'art.nummer', 'b.belegnr', - "CONCAT(art.name_de,'
Bei Lieferant: ',bp.bezeichnunglieferant, - IF(b.internebemerkung != '' AND b.internebemerkung IS NOT NULL, CONCAT('
Interne Bemerkung: ',b.internebemerkung),''), - IF(b.internebezeichnung != '' AND b.internebezeichnung IS NOT NULL, CONCAT('
Interne Bezeichnung: ',b.internebezeichnung), ''), - IF(b.bestellungbestaetigtabnummer != '' AND b.bestellungbestaetigtabnummer IS NOT NULL, CONCAT('
AB Nummer Lieferant: ',b.bestellungbestaetigtabnummer), ''), - IF(b.bestaetigteslieferdatum != '' AND b.bestaetigteslieferdatum IS NOT NULL AND b.bestaetigteslieferdatum != '0000-00-00', CONCAT('
Best. Lieferdatum: ',DATE_FORMAT(b.bestaetigteslieferdatum, '%d.%m.%Y')),'') - )", - "if(bp.lieferdatum,bp.lieferdatum,'sofort')", 'p.abkuerzung', 'bp.menge', 'bp.geliefert', $this->app->erp->FormatMenge("bp.menge - bp.geliefert"), 'bp.id','bp.id'); - $searchsql = array('bp.bestellnummer', 'art.nummer', 'b.belegnr', "CONCAT(art.name_de,'
Bei Lieferant: ',bp.bezeichnunglieferant, '', - IF(b.internebemerkung != '' AND b.internebemerkung IS NOT NULL, CONCAT('
Interne Bemerkung: ',b.internebemerkung),''), - IF(b.internebezeichnung != '' AND b.internebezeichnung IS NOT NULL, CONCAT('
Interne Bezeichnung: ',b.internebezeichnung), ''), - IF(b.bestellungbestaetigtabnummer != '' AND b.bestellungbestaetigtabnummer IS NOT NULL, CONCAT('
AB Nummer Lieferant: ',b.bestellungbestaetigtabnummer), ''), - IF(b.bestaetigteslieferdatum != '' AND b.bestaetigteslieferdatum IS NOT NULL AND b.bestaetigteslieferdatum != '0000-00-00', CONCAT('
Best. Lieferdatum: ',DATE_FORMAT(b.bestaetigteslieferdatum, '%d.%m.%Y')),'') - ,'
')", "if(bp.lieferdatum,DATE_FORMAT(bp.lieferdatum,'%d.%m.%Y'),'sofort')", 'p.abkuerzung', 'bp.menge', 'bp.geliefert', $this->app->erp->FormatMenge("bp.menge - bp.geliefert"), 'art.ean', 'art.herstellernummer'); + } else */ { + $heading = array('Lieferant-Art.-Nr.', + 'Art.-Nummer', + 'Bestellung', + 'Beschreibung', + 'Lieferdatum', + 'Projekt', + 'Menge', + 'Geliefert', + 'Offen', + 'Eingabe', + 'Bemerkung', + '' + ); + $width = array( + '1%', + '1%', + '1%', + '25%', + '1%', + '1%', + '1%', + '1%', + '1%', + '1%', + '10%', + '1%' + ); + $findcols = array( + 'bp.bestellnummer', + 'art.nummer', + 'b.belegnr', + "CONCAT( + art.name_de, + '
Bei Lieferant: ', + bp.bezeichnunglieferant, + IF( + b.internebemerkung != '' AND b.internebemerkung IS NOT NULL, + CONCAT( + '
Interne Bemerkung: ', + b.internebemerkung + ), + '' + ), + IF( + b.internebezeichnung != '' AND b.internebezeichnung IS NOT NULL, + CONCAT( + '
Interne Bezeichnung: ', + b.internebezeichnung + ), + '' + ), + IF( + b.bestellungbestaetigtabnummer != '' AND b.bestellungbestaetigtabnummer IS NOT NULL, + CONCAT( + '
AB Nummer Lieferant: ', + b.bestellungbestaetigtabnummer + ), + '' + ), + IF( + b.bestaetigteslieferdatum != '' AND b.bestaetigteslieferdatum IS NOT NULL AND b.bestaetigteslieferdatum != '0000-00-00', + CONCAT( + '
Best. Lieferdatum: ', + DATE_FORMAT( + b.bestaetigteslieferdatum, + '%d.%m.%Y' + ) + ), + '' + ) + )", + "if( + bp.lieferdatum, + bp.lieferdatum, + 'sofort' + )", 'p.abkuerzung', + 'bp.menge', + 'bp.geliefert', + $this->app->erp->FormatMenge("bp.menge - bp.geliefert"), + 'bp.id', + 'bp.id', + 'bp.id' + ); + $searchsql = array('bp.bestellnummer', + 'art.nummer', + 'b.belegnr', + "CONCAT( + art.name_de, + '
Bei Lieferant: ', + bp.bezeichnunglieferant, + '', + IF( + b.internebemerkung != '' AND b.internebemerkung IS NOT NULL, + CONCAT( + '
Interne Bemerkung: ', + b.internebemerkung + ), + '' + ), + IF( + b.internebezeichnung != '' AND b.internebezeichnung IS NOT NULL, + CONCAT( + '
Interne Bezeichnung: ', + b.internebezeichnung + ), + '' + ), + IF( + b.bestellungbestaetigtabnummer != '' AND b.bestellungbestaetigtabnummer IS NOT NULL, + CONCAT( + '
AB Nummer Lieferant: ', + b.bestellungbestaetigtabnummer + ), + '' + ), + IF( + b.bestaetigteslieferdatum != '' AND b.bestaetigteslieferdatum IS NOT NULL AND b.bestaetigteslieferdatum != '0000-00-00', + CONCAT( + '
Best. Lieferdatum: ', + DATE_FORMAT( + b.bestaetigteslieferdatum, + '%d.%m.%Y' + ) + ), + '' + ), + '
' + )", + "IF( + bp.lieferdatum, + DATE_FORMAT(bp.lieferdatum, '%d.%m.%Y'), + 'sofort' + )", + 'p.abkuerzung', + 'bp.menge', + 'bp.geliefert', + $this->app->erp->FormatMenge("bp.menge - bp.geliefert"), + 'art.ean', + 'art.herstellernummer' + ); } $alignright = array(7, 8, 9); @@ -216,19 +351,29 @@ class Wareneingang { )"; } // SQL statement - $sql = "SELECT SQL_CALC_FOUND_ROWS bp.id, bp.bestellnummer, CONCAT('',art.nummer,''), b.belegnr as `Bestellung`, - $colBeschreibung as beschreibung, - if(bp.lieferdatum,DATE_FORMAT(bp.lieferdatum,'%d.%m.%Y'),'sofort') as lieferdatum, p.abkuerzung as projekt, - " . $this->app->erp->FormatMenge('bp.menge') . ", " . $this->app->erp->FormatMenge('bp.geliefert') . ", - " . $this->app->erp->FormatMenge('bp.menge - bp.geliefert') . " as offen, - ".$input_for_menge.", - bp.id - FROM bestellung_position bp - INNER JOIN bestellung b ON bp.bestellung=b.id - $rdJoin - INNER JOIN artikel art ON art.id=bp.artikel $lagerartikel - LEFT JOIN projekt p ON b.projekt=p.id"; - if ($wareneingangauftragzubestellung) { + $sql = " + SELECT SQL_CALC_FOUND_ROWS + bp.id, + ".$this->app->erp->ConcatSQL($auswahl).", + CONCAT('',art.nummer,''), + b.belegnr as `Bestellung`, + $colBeschreibung as beschreibung, + if(bp.lieferdatum,DATE_FORMAT(bp.lieferdatum,'%d.%m.%Y'),'sofort') as lieferdatum, + p.abkuerzung as projekt, + ".$this->app->erp->FormatMenge('bp.menge').", + ".$this->app->erp->FormatMenge('bp.geliefert').", + ".$this->app->erp->FormatMenge('bp.menge-bp.geliefert')." as offen, + ".$this->app->erp->ConcatSQL($input_for_menge).", + ".$this->app->erp->ConcatSQL($input_for_bemerkung).", + bp.id + FROM bestellung_position bp + INNER JOIN bestellung b ON bp.bestellung=b.id + $rdJoin + INNER JOIN artikel art ON art.id=bp.artikel $lagerartikel + LEFT JOIN projekt p ON b.projekt=p.id + "; + + /* if ($wareneingangauftragzubestellung) { $sql = "SELECT SQL_CALC_FOUND_ROWS bp.id, bp.bestellnummer, art.nummer, b.belegnr as `Bestellung`, $colBeschreibung as beschreibung, if(bp.lieferdatum,DATE_FORMAT(bp.lieferdatum,'%d.%m.%Y'),'sofort') as lieferdatum, p.abkuerzung as projekt, @@ -241,7 +386,7 @@ class Wareneingang { $rdJoin INNER JOIN artikel art ON art.id=bp.artikel $lagerartikel LEFT JOIN projekt p ON b.projekt=p.id "; - } + }*/ $where = " b.adresse='$adresse' AND @@ -2007,68 +2152,72 @@ class Wareneingang { break; case 'hinzufuegen': - $menge_input = $this->app->Secure->GetPOSTArray(); - $mengen = array(); - + + $bestellposition_ids = $this->app->Secure->GetPOST('bestellposition_ids'); + $mengen = $this->app->Secure->GetPOST('mengen'); + $bemerkungen = $this->app->Secure->GetPOST('bemerkungen'); + $msg = ""; - foreach ($menge_input as $key => $menge) { - if ((strpos($key,'menge_') === 0) && ($menge !== '')) { - $bestellposition = substr($key,'6'); + foreach ($bestellposition_ids as $key => $bestellposition) { + $menge = $mengen[$key]; + $bemerkung = $bemerkungen[$key]; - if ($menge > 0) { - // Gather info bestellung - $bparr = $this->app->DB->SelectRow("SELECT bp.artikel, a.nummer, b.projekt, b.belegnr, bp.vpe, bp.menge FROM bestellung b INNER JOIN bestellung_position bp ON bp.bestellung = b.id INNER JOIN artikel a ON bp.artikel = a.id WHERE bp.id='$bestellposition' LIMIT 1"); - $artikel = $bparr['artikel']; - $artikel_nr = $bparr['nummer']; - $projekt = $bparr['projekt']; - $bestellung_belegnr = $bparr['belegnr']; - $vpe = $bparr['vpe']; - $menge_bestellung = $bparr['menge']; - - // Check existing preliminary value - $sql = "SELECT id, menge FROM paketdistribution WHERE paketannahme = ".$id." AND bestellung_position = ".$bestellposition." AND vorlaeufig = 1 LIMIT 1"; - $preliminary = $this->app->DB->SelectRow($sql); + if ($menge <= 0) { + continue; + } - if (empty($preliminary)) { - $sql = "INSERT INTO paketdistribution( - id, - bearbeiter, - zeit, - paketannahme, - adresse, - artikel, - menge, - vpe, - etiketten, - bemerkung, - bestellung_position, - vorlaeufig - ) - VALUES( - '', - '" . $this->app->User->GetName() . "', - NOW(), - '$id', - '', - '$artikel', - '$menge', - '$vpe', - '', - '', - '$bestellposition', - 1 - )"; - $this->app->DB->Insert($sql); - } else { - $menge = $menge + $preliminary['menge']; - if ($menge > $bparr['menge']-$bparr['geliefert']) { - $menge = $bparr['menge']-$bparr['geliefert']; - } - $sql = "UPDATE paketdistribution SET menge = ".$menge." WHERE id = ".$preliminary['id']; - $this->app->DB->Insert($sql); - } - } + // Gather info bestellung + $bparr = $this->app->DB->SelectRow("SELECT bp.artikel, a.nummer, b.projekt, b.belegnr, bp.vpe, bp.menge FROM bestellung b INNER JOIN bestellung_position bp ON bp.bestellung = b.id INNER JOIN artikel a ON bp.artikel = a.id WHERE bp.id='$bestellposition' LIMIT 1"); + $artikel = $bparr['artikel']; + $artikel_nr = $bparr['nummer']; + $projekt = $bparr['projekt']; + $bestellung_belegnr = $bparr['belegnr']; + $vpe = $bparr['vpe']; + $menge_bestellung = $bparr['menge']; + + // Check existing preliminary value + $sql = "SELECT id, menge FROM paketdistribution WHERE paketannahme = ".$id." AND bestellung_position = ".$bestellposition." AND vorlaeufig = 1 LIMIT 1"; + $preliminary = $this->app->DB->SelectRow($sql); + + if (empty($preliminary)) { + $sql = "INSERT INTO paketdistribution( + id, + bearbeiter, + zeit, + paketannahme, + adresse, + artikel, + menge, + vpe, + etiketten, + bemerkung, + bestellung_position, + vorlaeufig + ) + VALUES( + '', + '" . $this->app->User->GetName() . "', + NOW(), + '$id', + '', + '$artikel', + '$menge', + '$vpe', + '', + '".$this->app->DB->real_escape_string($bemerkung)."', + '$bestellposition', + 1 + )"; + $this->app->DB->Insert($sql); + } else { + $menge = $menge + $preliminary['menge']; + if ($menge > $bparr['menge']-$bparr['geliefert']) { + $menge = $bparr['menge']-$bparr['geliefert']; + } + + $sql = "UPDATE paketdistribution SET menge = ".$menge.", bemerkung = '".$this->app->DB->real_escape_string($bemerkung)."' WHERE id = ".$preliminary['id']; + $this->app->DB->Insert($sql); } } break;