wareneingang from bestellung with kommentar

This commit is contained in:
OpenXE 2024-01-16 11:06:05 +01:00
parent c0de40ac86
commit 5abde88596
2 changed files with 251 additions and 102 deletions

View File

@ -252,7 +252,7 @@ class Verbindlichkeit {
$preise = array ( $preise = array (
'<input type="number" name="preise[]" step="0.00001" value="', '<input type="number" name="preise[]" step="0.00001" value="',
['sql' => $this->app->erp->FormatMenge("COALESCE(bp.preis,0)",2)], ['sql' => $this->app->erp->FormatMenge("COALESCE(bp.preis,0)",5)],
'" min="0"', '" min="0"',
'"/>' '"/>'
); );

View File

@ -126,19 +126,30 @@ class Wareneingang {
) )
"; ";
$input_for_menge = "CONCAT( $auswahl = array (
'<input type=\"text\" name=\"bestellposition_ids[]\" value=\"',
['sql' => 'bp.id'],
'" hidden/>',
['sql' => 'bp.bestellnummer']
);
$input_for_menge = array(
'<input type = \"number\" min=\"0\"', '<input type = \"number\" min=\"0\"',
' value=\"', ' value=\"',
$vorschlag,
'\"', '\"',
' name=\"menge_', ' name=\"mengen[]\"',
bp.id, ' style=\"text-align:right; width:100%\">',
'\" value=\"',
'\" style=\"text-align:right; width:100%\">',
'</input>' '</input>'
)"; );
if ($wareneingangauftragzubestellung) { $input_for_bemerkung = array(
'<input type = \"text\"',
' name=\"bemerkungen[]\"',
' style=\"text-align:right; width:100%\">',
'</input>'
);
/* if ($wareneingangauftragzubestellung) {
$heading = array('Lieferant-Art.-Nr.', 'Art.-Nummer', 'Bestellung', 'Beschreibung', 'Lieferdatum', 'Projekt', 'Menge', 'Geliefert', 'Offen', 'Auftrag', 'Menge', 'Eingabe', ''); $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%'); $width = array('5%', '5%', '5%', '30%', '5%', '5%', '5%', '5%', '5%', '5%', '5%', '5%', '5%');
$findcols = array('bp.bestellnummer', 'art.nummer', 'b.belegnr', $findcols = array('bp.bestellnummer', 'art.nummer', 'b.belegnr',
@ -155,23 +166,147 @@ class Wareneingang {
IF(b.bestellungbestaetigtabnummer != '' AND b.bestellungbestaetigtabnummer IS NOT NULL, CONCAT('<br>AB Nummer Lieferant: ',b.bestellungbestaetigtabnummer), ''), IF(b.bestellungbestaetigtabnummer != '' AND b.bestellungbestaetigtabnummer IS NOT NULL, CONCAT('<br>AB Nummer Lieferant: ',b.bestellungbestaetigtabnummer), ''),
IF(b.bestaetigteslieferdatum != '' AND b.bestaetigteslieferdatum IS NOT NULL AND b.bestaetigteslieferdatum != '0000-00-00', CONCAT('<br>Best. Lieferdatum: ',DATE_FORMAT(b.bestaetigteslieferdatum, '%d.%m.%Y')),'') IF(b.bestaetigteslieferdatum != '' AND b.bestaetigteslieferdatum IS NOT NULL AND b.bestaetigteslieferdatum != '0000-00-00', CONCAT('<br>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),'-' )"); )", "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 { } else */ {
$heading = array('Lieferant-Art.-Nr.', 'Art.-Nummer', 'Bestellung', 'Beschreibung', 'Lieferdatum', 'Projekt', 'Menge', 'Geliefert', 'Offen', 'Eingabe', 'Aktion'); $heading = array('Lieferant-Art.-Nr.',
$width = array('5%', '5%', '5%', '30%', '5%', '5%', '5%', '5%', '5%', '5%', '5%'); 'Art.-Nummer',
$findcols = array('bp.bestellnummer', 'art.nummer', 'b.belegnr', 'Bestellung',
"CONCAT(art.name_de,'<br>Bei Lieferant: ',bp.bezeichnunglieferant, 'Beschreibung',
IF(b.internebemerkung != '' AND b.internebemerkung IS NOT NULL, CONCAT('<br>Interne Bemerkung: ',b.internebemerkung),''), 'Lieferdatum',
IF(b.internebezeichnung != '' AND b.internebezeichnung IS NOT NULL, CONCAT('<br>Interne Bezeichnung: ',b.internebezeichnung), ''), 'Projekt',
IF(b.bestellungbestaetigtabnummer != '' AND b.bestellungbestaetigtabnummer IS NOT NULL, CONCAT('<br>AB Nummer Lieferant: ',b.bestellungbestaetigtabnummer), ''), 'Menge',
IF(b.bestaetigteslieferdatum != '' AND b.bestaetigteslieferdatum IS NOT NULL AND b.bestaetigteslieferdatum != '0000-00-00', CONCAT('<br>Best. Lieferdatum: ',DATE_FORMAT(b.bestaetigteslieferdatum, '%d.%m.%Y')),'') '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,
'<br>Bei Lieferant: ',
bp.bezeichnunglieferant,
IF(
b.internebemerkung != '' AND b.internebemerkung IS NOT NULL,
CONCAT(
'<br>Interne Bemerkung: ',
b.internebemerkung
),
''
),
IF(
b.internebezeichnung != '' AND b.internebezeichnung IS NOT NULL,
CONCAT(
'<br>Interne Bezeichnung: ',
b.internebezeichnung
),
''
),
IF(
b.bestellungbestaetigtabnummer != '' AND b.bestellungbestaetigtabnummer IS NOT NULL,
CONCAT(
'<br>AB Nummer Lieferant: ',
b.bestellungbestaetigtabnummer
),
''
),
IF(
b.bestaetigteslieferdatum != '' AND b.bestaetigteslieferdatum IS NOT NULL AND b.bestaetigteslieferdatum != '0000-00-00',
CONCAT(
'<br>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'); "if(
$searchsql = array('bp.bestellnummer', 'art.nummer', 'b.belegnr', "CONCAT(art.name_de,'<br>Bei Lieferant: ',bp.bezeichnunglieferant, '<i style=color:#999>', bp.lieferdatum,
IF(b.internebemerkung != '' AND b.internebemerkung IS NOT NULL, CONCAT('<br>Interne Bemerkung: ',b.internebemerkung),''), bp.lieferdatum,
IF(b.internebezeichnung != '' AND b.internebezeichnung IS NOT NULL, CONCAT('<br>Interne Bezeichnung: ',b.internebezeichnung), ''), 'sofort'
IF(b.bestellungbestaetigtabnummer != '' AND b.bestellungbestaetigtabnummer IS NOT NULL, CONCAT('<br>AB Nummer Lieferant: ',b.bestellungbestaetigtabnummer), ''), )", 'p.abkuerzung',
IF(b.bestaetigteslieferdatum != '' AND b.bestaetigteslieferdatum IS NOT NULL AND b.bestaetigteslieferdatum != '0000-00-00', CONCAT('<br>Best. Lieferdatum: ',DATE_FORMAT(b.bestaetigteslieferdatum, '%d.%m.%Y')),'') 'bp.menge',
,'</i>')", "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'); '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,
'<br>Bei Lieferant: ',
bp.bezeichnunglieferant,
'<i style=color:#999>',
IF(
b.internebemerkung != '' AND b.internebemerkung IS NOT NULL,
CONCAT(
'<br>Interne Bemerkung: ',
b.internebemerkung
),
''
),
IF(
b.internebezeichnung != '' AND b.internebezeichnung IS NOT NULL,
CONCAT(
'<br>Interne Bezeichnung: ',
b.internebezeichnung
),
''
),
IF(
b.bestellungbestaetigtabnummer != '' AND b.bestellungbestaetigtabnummer IS NOT NULL,
CONCAT(
'<br>AB Nummer Lieferant: ',
b.bestellungbestaetigtabnummer
),
''
),
IF(
b.bestaetigteslieferdatum != '' AND b.bestaetigteslieferdatum IS NOT NULL AND b.bestaetigteslieferdatum != '0000-00-00',
CONCAT(
'<br>Best. Lieferdatum: ',
DATE_FORMAT(
b.bestaetigteslieferdatum,
'%d.%m.%Y'
)
),
''
),
'</i>'
)",
"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); $alignright = array(7, 8, 9);
@ -216,19 +351,29 @@ class Wareneingang {
)"; )";
} }
// SQL statement // SQL statement
$sql = "SELECT SQL_CALC_FOUND_ROWS bp.id, bp.bestellnummer, CONCAT('<a href=\"index.php?module=artikel&action=edit&id=',art.id,'\" tabindex=\"-1\">',art.nummer,'</a>'), b.belegnr as `Bestellung`, $sql = "
SELECT SQL_CALC_FOUND_ROWS
bp.id,
".$this->app->erp->ConcatSQL($auswahl).",
CONCAT('<a href=\"index.php?module=artikel&action=edit&id=',art.id,'\" tabindex=\"-1\">',art.nummer,'</a>'),
b.belegnr as `Bestellung`,
$colBeschreibung as beschreibung, $colBeschreibung as beschreibung,
if(bp.lieferdatum,DATE_FORMAT(bp.lieferdatum,'%d.%m.%Y'),'sofort') as lieferdatum, p.abkuerzung as projekt, if(bp.lieferdatum,DATE_FORMAT(bp.lieferdatum,'%d.%m.%Y'),'sofort') as lieferdatum,
" . $this->app->erp->FormatMenge('bp.menge') . ", " . $this->app->erp->FormatMenge('bp.geliefert') . ", 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->FormatMenge('bp.menge-bp.geliefert')." as offen,
".$input_for_menge.", ".$this->app->erp->ConcatSQL($input_for_menge).",
".$this->app->erp->ConcatSQL($input_for_bemerkung).",
bp.id bp.id
FROM bestellung_position bp FROM bestellung_position bp
INNER JOIN bestellung b ON bp.bestellung=b.id INNER JOIN bestellung b ON bp.bestellung=b.id
$rdJoin $rdJoin
INNER JOIN artikel art ON art.id=bp.artikel $lagerartikel INNER JOIN artikel art ON art.id=bp.artikel $lagerartikel
LEFT JOIN projekt p ON b.projekt=p.id"; LEFT JOIN projekt p ON b.projekt=p.id
if ($wareneingangauftragzubestellung) { ";
/* if ($wareneingangauftragzubestellung) {
$sql = "SELECT SQL_CALC_FOUND_ROWS bp.id, bp.bestellnummer, art.nummer, b.belegnr as `Bestellung`, $sql = "SELECT SQL_CALC_FOUND_ROWS bp.id, bp.bestellnummer, art.nummer, b.belegnr as `Bestellung`,
$colBeschreibung as beschreibung, $colBeschreibung as beschreibung,
if(bp.lieferdatum,DATE_FORMAT(bp.lieferdatum,'%d.%m.%Y'),'sofort') as lieferdatum, p.abkuerzung as projekt, if(bp.lieferdatum,DATE_FORMAT(bp.lieferdatum,'%d.%m.%Y'),'sofort') as lieferdatum, p.abkuerzung as projekt,
@ -241,7 +386,7 @@ class Wareneingang {
$rdJoin $rdJoin
INNER JOIN artikel art ON art.id=bp.artikel $lagerartikel INNER JOIN artikel art ON art.id=bp.artikel $lagerartikel
LEFT JOIN projekt p ON b.projekt=p.id "; LEFT JOIN projekt p ON b.projekt=p.id ";
} }*/
$where = " $where = "
b.adresse='$adresse' AND b.adresse='$adresse' AND
@ -2007,16 +2152,21 @@ class Wareneingang {
break; break;
case 'hinzufuegen': 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 = ""; $msg = "";
foreach ($menge_input as $key => $menge) { foreach ($bestellposition_ids as $key => $bestellposition) {
if ((strpos($key,'menge_') === 0) && ($menge !== '')) { $menge = $mengen[$key];
$bestellposition = substr($key,'6'); $bemerkung = $bemerkungen[$key];
if ($menge <= 0) {
continue;
}
if ($menge > 0) {
// Gather info bestellung // 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"); $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 = $bparr['artikel'];
@ -2055,7 +2205,7 @@ class Wareneingang {
'$menge', '$menge',
'$vpe', '$vpe',
'', '',
'', '".$this->app->DB->real_escape_string($bemerkung)."',
'$bestellposition', '$bestellposition',
1 1
)"; )";
@ -2065,12 +2215,11 @@ class Wareneingang {
if ($menge > $bparr['menge']-$bparr['geliefert']) { if ($menge > $bparr['menge']-$bparr['geliefert']) {
$menge = $bparr['menge']-$bparr['geliefert']; $menge = $bparr['menge']-$bparr['geliefert'];
} }
$sql = "UPDATE paketdistribution SET menge = ".$menge." WHERE id = ".$preliminary['id'];
$sql = "UPDATE paketdistribution SET menge = ".$menge.", bemerkung = '".$this->app->DB->real_escape_string($bemerkung)."' WHERE id = ".$preliminary['id'];
$this->app->DB->Insert($sql); $this->app->DB->Insert($sql);
} }
} }
}
}
break; break;
case 'manuell_hinzufuegen': case 'manuell_hinzufuegen':