Bestellung \"$name\" ($belegnr) kann nicht wieder freigegeben werden, da sie nicht storniert ist.
");
}
//header("Location: ".$_SERVER['HTTP_REFERER']."&msg=$msg");
$this->app->Location->execute('index.php?module=bestellung&action=list&msg='.$msg);
}
function BestellungEinlagern($id = null, $lagerplatz = null)
{
if($id === null)
{
$intern = false;
$id = (int)$this->app->Secure->GetGET('id');
}else{
$intern = true;
}
if($id)
{
$arr = $this->app->DB->SelectRow("SELECT projekt,belegnr,status FROM bestellung WHERE id = '$id' LIMIT 1");
if(!empty($arr)){
$projekt = $arr['projekt'];
$belegnr = $arr['belegnr'];
$status = $arr['status'];
if(($status === 'versendet' || $status === 'freigegeben')){
$standardlager = $this->app->DB->Select("SELECT id FROM lager_platz WHERE geloescht <> 1 AND sperrlager <> 1 AND poslager <> 1 ORDER BY id LIMIT 1");
$positionen = $this->app->DB->SelectArr("SELECT id,artikel,menge,geliefert FROM bestellung_position WHERE geliefert < menge AND bestellung='$id'");
if($positionen){
foreach ($positionen as $position) {
if($lagerplatz){
$lager = $lagerplatz;
}else{
$lager = $this->app->DB->Select("SELECT lager_platz FROM artikel WHERE id = '" . $position['artikel'] . "' LIMIT 1");
if(!$this->app->DB->Select("SELECT id FROM lager_platz WHERE id = '$lager' AND geloescht <> 1 LIMIT 1")) {
$lager = $standardlager;
}
if(!$lager) {
$lager = $standardlager;
}
}
if($lager){
$this->app->erp->LagerEinlagern(
$position['artikel'], $position['menge'] - $position['geliefert'], $lager, $projekt,
'Wareneingang von Bestellung ' . $belegnr,'','','bestellung',$id
);
$this->app->DB->Update("UPDATE bestellung_position SET geliefert = menge WHERE id = '" . $position['id'] . "' LIMIT 1");
} else {
$dataartikel = $this->app->DB->SelectRow("SELECT nummer,name_de FROM artikel WHERE id='".$position['artikel']."'");
$msg = $this->app->erp->base64_url_encode("
Abbruch beim Einlagern da für den Artikel \"".$dataartikel['nummer']." ".$dataartikel['name_de']."\" kein Standard Lagerplatz definiert wurde oder alle Lager Sperr- oder POS-Lager sind!
'));
}
$this->app->ExitXentral();
}
if($cmd === 'zuordnungAuftragZuBestellung')
{
$bid = $this->app->Secure->GetGet("id");
$belegnummer = $this->app->DB->Select("SELECT belegnr FROM bestellung WHERE id='$bid'");
$auftragPost = explode(" ",$this->app->Secure->GetPOST("auftrag"));
$auftragsnummer = $auftragPost[0];
$auftrag_positionen = $this->app->DB->SelectArr("SELECT ap.id,ap.artikel,ap.menge FROM auftrag_position ap LEFT JOIN auftrag a on a.id=ap.auftrag WHERE a.belegnr='$auftragsnummer' AND a.belegnr!=''");
foreach($auftrag_positionen as $value){
$a_positionen[$value['artikel']]['id'] = $value['id'];
$a_positionen[$value['artikel']]['menge'] = $value['menge'];
}
//jetzt holen wir alle Bestellpositonen für diese Bestellung
$bestellung_positionen = $this->app->DB->SelectArr("SELECT bp.id,bp.artikel,bp.menge FROM bestellung_position bp WHERE bp.bestellung='$bid'");
foreach($bestellung_positionen as $position){
// prüfen ob beide artikel gleich sind und ob die menge passt
if( (is_array($a_positionen[$position['artikel']])) && ($position['menge'] == $a_positionen[$position['artikel']]['menge']) ) {
// wenn wir den Artikel haben und die Anzahl passt
$wert = $a_positionen[$position['artikel']]['id'];
$this->app->DB->Update("UPDATE bestellung_position SET auftrag_position_id='$wert' WHERE id='{$position['id']}' AND bestellung='$bid' LIMIT 1");
} else{
// wenn wir den Artikel haben aber die Anzahl nicht passt nehmen wir die Position vom ersten Auffinden des Artikel
if($position['artikel'] == $a_positionen[$position['artikel']]){
$wert = $a_positionen[$position['artikel']]['id'];
$this->app->DB->Update("UPDATE bestellung_position SET auftrag_position_id='$wert' WHERE id='{$position['id']}' AND bestellung='$bid' LIMIT 1");
}else{
// wenn wir keinen Artikel haben nehmen wir den ersten Artikel zum verknüpfen
$wert = $a_positionen[0]['id'];
$this->app->DB->Update("UPDATE bestellung_position SET auftrag_position_id='$wert' WHERE id='{$position['id']}' AND bestellung='$bid' LIMIT 1");
}
}
}
$zugeordnet = $this->app->DB->Select("SELECT count(id) FROM bestellung_position WHERE bestellung='$bid' AND auftrag_position_id != '0'");;
$nichtzugeordnet = $this->app->DB->Select("SELECT count(id) FROM bestellung_position WHERE bestellung='$bid' AND auftrag_position_id = '0'");
$gesamtpositionen = $this->app->DB->Select("SELECT count(id) FROM bestellung_position WHERE bestellung='$bid'");
$data['gesamtpositionen'] = $gesamtpositionen;
$data['belegnummer'] = $belegnummer;
$data['zugeordnet'] = $zugeordnet;
$data['nichtzugeordnet'] = $nichtzugeordnet;
$data['error'] = false;
echo json_encode($data);
$this->app->ExitXentral();
}
if($cmd === 'checkmenge')
{
$bpid = $this->app->Secure->GetPOST("bp");
$ab_menge = round(str_replace(',','.',$this->app->Secure->GetPOST("ab_menge")),8);
$data = $this->app->DB->SelectArr("SELECT *, TRIM(menge)+0 as menge FROM bestellung_position WHERE id = '$bpid' LIMIT 1");
if($data)
{
$data = reset($data);
$bestellung = $data['bestellung'];
$adresse = $this->app->DB->Select("SELECT adresse FROM bestellung WHERE id = '$bestellung' LIMIT 1");
$ek = $this->app->erp->GetEinkaufspreisArr($data['artikel'], $ab_menge, $adresse, $data['waehrung']);
if($ek)
{
$data = array('menge'=>$ab_menge, 'ab_menge'=>round($ek['ab_menge'],8));
}else{
$data = array('menge'=>$ab_menge, 'ab_menge'=>$ab_menge);
}
}
echo json_encode($data);
$this->app->ExitXentral();
}
if($cmd === 'getpreis')
{
$bpid = $this->app->Secure->GetPOST("bp");
$data = $this->app->DB->SelectArr("SELECT *, TRIM(menge)+0 as menge FROM bestellung_position WHERE id = '$bpid' LIMIT 1");
if($data)
{
$data = reset($data);
$data['menge'] = round((float)$data['menge'], 8);
$bestellung = $data['bestellung'];
$adresse = $this->app->DB->Select("SELECT adresse FROM bestellung WHERE id = '$bestellung' LIMIT 1");
$ek = $this->app->erp->GetEinkaufspreisArr($data['artikel'], $data['menge'], $adresse, $data['waehrung']);
if($ek)$data['ab_menge'] = round($ek['ab_menge'], 8);
$data['preis'] = number_format(round($data['preis'],8),2,',','.');
$data['auchinstammdaten'] = $this->app->User->GetParameter('bestellung_auchinstammdaten')?1:0;
}
echo json_encode($data);
$this->app->ExitXentral();
}
if($cmd === 'savepreis')
{
$bpid = (int)$this->app->Secure->GetPOST('bp');
$bpRow = $this->app->DB->SelectRow(
sprintf(
'SELECT artikel, bestellung FROM bestellung_position WHERE id = %d LIMIT 1'
,$bpid
)
);
$artikel = $bpRow['artikel'];
$preis = str_replace(',','.',$this->app->Secure->GetPOST('preis'));
$auchinstammdaten = $this->app->Secure->GetPOST('auchinstammdaten');
$this->app->User->SetParameter('bestellung_auchinstammdaten', $auchinstammdaten);
$waehrung = $this->app->Secure->GetPOST('waehrung');
$bestellnummer = $this->app->Secure->GetPOST('bestellnummer');
$bezeichnung = $this->app->Secure->GetPOST('bezeichnung');
$ab_menge = str_replace(',','.',$this->app->Secure->GetPOST('ab_menge'));
$menge = str_replace(',','.',$this->app->Secure->GetPOST('menge'));
$bestellung = $bpRow['bestellung'];
// Schreibschutz entfernen
$this->app->DB->Update("UPDATE bestellung SET schreibschutz=0 WHERE id='$bestellung' LIMIT 1");
$bRow = $this->app->DB->SelectRow(
sprintf(
'SELECT schreibschutz, adresse FROM bestellung WHERE id=%d LIMIT 1',
(int)$bestellung
)
);
$schreibschutz = $bRow['schreibschutz'];
$adresse = $bRow['adresse'];
if(!$schreibschutz)
{
$this->app->DB->Update(
sprintf(
'UPDATE bestellung_position SET preis = %f WHERE id = %d LIMIT 1',
(float)$preis, $bpid
)
);
if((String)$bestellnummer !== '') {
$this->app->DB->Update(
sprintf(
"UPDATE bestellung_position SET bestellnummer = '%s' WHERE id = %d LIMIT 1",
$bestellnummer, $bpid
)
);
}
if((String)$bezeichnung !== '') {
$this->app->DB->Update(
sprintf(
"UPDATE bestellung_position SET bezeichnunglieferant = '%s' WHERE id = %d LIMIT 1",
$bezeichnung, $bpid
)
);
}
if($menge) {
$this->app->DB->Update(
sprintf(
"UPDATE bestellung_position SET menge = %f WHERE id = %d LIMIT 1",
(float)$menge, $bpid
)
);
}
$this->app->erp->ANABREGSNeuberechnen($bestellung,'bestellung');
}
if($auchinstammdaten && $artikel && $adresse)
{
$this->app->erp->AddEinkaufspreis($artikel,$ab_menge,$adresse,$bestellnummer,$bezeichnung, $preis, $waehrung);
}
$data = $this->app->DB->SelectRow(
sprintf(
'SELECT id, %s as preis, bestellnummer, trim(menge)+0 as menge
FROM bestellung_position
WHERE id = %d
LIMIT 1',
$this->app->erp->FormatPreis('preis'),$bpid
)
);
if(!empty($data))
{
$data['menge'] = round($data['menge'], 8);
$data['preis'] .= ' ';
}
echo json_encode($data);
$this->app->ExitXentral();
}
$bestRow = $this->app->DB->SelectRow(
sprintf(
'SELECT belegnr, name, status, zahlungsweise, adresse, verbindlichkeiteninfo,preisanfrageid,
DATE_FORMAT(gewuenschteslieferdatum,\'%%d.%%m.%%Y\') as gewuenschteslieferdatum, bestellungbestaetigtabnummer,
DATE_FORMAT(bestaetigteslieferdatum,\'%%d.%%m.%%Y\') as bestaetigteslieferdatum, datum, projekt
FROM bestellung
WHERE id=%d
LIMIT 1',
$id
)
);
$belegnr = $bestRow['belegnr'];
$name = $bestRow['name'];
$status = $bestRow['status'];
//$schreibschutz = $this->app->DB->Select("SELECT schreibschutz FROM bestellung WHERE id='$id' LIMIT 1");
$zahlweise = $bestRow['zahlungsweise'];
$bestaetigteslieferdatum = $bestRow['bestaetigteslieferdatum'];
$wunschlieferdatum = $bestRow['gewuenschteslieferdatum'];
$ablieferant = $bestRow['bestellungbestaetigtabnummer'];
$verbindlichkeiteninfo = $bestRow['verbindlichkeiteninfo'];
$preisanfrageid = $bestRow['preisanfrageid'];
$preisanfrage = $this->app->DB->Select("SELECT belegnr FROM preisanfrage WHERE id = '$preisanfrageid' LIMIT 1");
$adresse = (int)$bestRow['adresse'];
$lieferantennummer = $this->app->DB->Select("SELECT lieferantennummer FROM adresse WHERE id = '$adresse' LIMIT 1");
$datum = (int)$bestRow['datum'];
$projekt = (int)$bestRow['projekt'];
$this->app->Tpl->Set('VERBINDLICHKEITENINFO',$verbindlichkeiteninfo);
if($belegnr=='0' || $belegnr=='') {
$belegnr = 'ENTWURF';
}
$this->app->Tpl->Set('BELEGNR',$belegnr);
$this->app->Tpl->Set('LIEFERANT',"".$lieferantennummer." ".$name);
$this->app->Tpl->Set('STATUS',$status);
$this->app->Tpl->Set('ZAHLWEISE',$zahlweise);
$this->app->Tpl->Set('BESTELLUNGID',$id);
if($preisanfrageid > 0)
{
$this->app->Tpl->Set('PREISANFRAGE',''.$preisanfrage.'');
}
if($bestaetigteslieferdatum=="00.00.0000") $bestaetigteslieferdatum="warte auf Datum";
$this->app->Tpl->Set('BESTAETIGTESLIEFERDATUM',$bestaetigteslieferdatum);
if($wunschlieferdatum=="00.00.0000") $wunschlieferdatum="warte auf Datum";
$this->app->Tpl->Set('WUNSCHLIEFERDATUM',$wunschlieferdatum);
$this->app->Tpl->Set('ABLIEFERANT',$ablieferant);
$nettogewicht = $this->app->erp->BestellungNettoGewicht($id);
if($nettogewicht!='') {
$nettogewicht = number_format($nettogewicht, 2, ',','.');
$gewichtbezeichnung = $this->app->erp->Firmendaten('gewichtbezeichnung');
if($gewichtbezeichnung == '') {
$gewichtbezeichnung = 'Kg';
}
$this->app->Tpl->Set("GEWICHT", $nettogewicht . " ".$gewichtbezeichnung);
}
$projektabkuerzung = $this->app->DB->Select("SELECT abkuerzung FROM projekt WHERE id='$projekt' LIMIT 1");
if($this->app->erp->RechteVorhanden("projekt","dashboard"))
$this->app->Tpl->Set('PROJEKT',"$projektabkuerzung");
else
$this->app->Tpl->Set('PROJEKT',$projekt);
$md5 = md5(microtime(true));
$table = new EasyTable($this->app);
$anzahlzeichen = 200;
$artikelIdList = [];
$artikelArr = $this->app->DB->SelectArr(sprintf('SELECT DISTINCT artikel FROM bestellung_position WHERE bestellung = %d', $id));
if(!empty($artikelArr))
{
foreach($artikelArr as $row)
{
$artikelIdList[] = $row['artikel'];
}
}
$table->Query("SELECT CONCAT(SUBSTRING(ap.bezeichnunglieferant,1,$anzahlzeichen),' Best-Nr.:',ap.bestellnummer,'') as artikel,
CONCAT('',a.nummer,'') as nummer,
CONCAT('',(TRIM(ap.menge)+0),'') as Menge,
TRIM(ap.geliefert)+0 as geliefert,
IF(a.lagerartikel = 1,CONCAT( ".$this->app->erp->FormatMenge('IFNULL(lag.menge,0)').",'lagermehr(',ap.artikel,')'),'-') as Lager,
if(ap.lieferdatum!='0000-00-00',DATE_FORMAT(ap.lieferdatum,'%d.%m.%Y'),'sofort') as lieferdatum,
concat('',FORMAT(ap.preis,2,'de_DE'),'".
" app->Conf->WFconf['defaulttheme']}/images/edit.svg\" border=\"0\">"
."','') as preis
FROM bestellung_position AS ap
INNER JOIN artikel AS a ON ap.artikel = a.id
LEFT JOIN (
SELECT SUM(lpi.menge) as menge, lpi.artikel
FROM lager_platz_inhalt AS lpi
INNER JOIN lager_platz AS lp ON lpi.lager_platz = lp.id AND IFNULL(lp.sperrlager,0) = 0 AND IFNULL(lp.autolagersperre,0) = 0
".(!empty($artikelIdList)?' AND lpi.artikel IN ('.implode(',', $artikelIdList).')':'')."
GROUP BY lpi.artikel
) as lag ON a.id = lag.artikel
WHERE ap.bestellung='$id'
ORDER by ap.sort");
foreach($table->datasets as $tablerowKey => $tableRow)
{
foreach($tableRow as $columName => $columnValue)
{
if(preg_match_all('/^(.*)lagermehr\((.*)\)(.*)$/', $columnValue, $matches,PREG_OFFSET_CAPTURE))
{
$table->datasets[$tablerowKey][$columName] = $matches[1][0][0].' '.$this->app->YUI->ContentTooltip('return','index.php?module=auftrag&action=minidetail&cmd=lager&id='.$matches[2][0][0],'url').$matches[3][0][0];
}
}
}
foreach($table->datasets as $k => $row)
{
if(strip_tags($table->datasets[$k]['geliefert']) == strip_tags($table->datasets[$k]['Menge']))
{
$table->datasets[$k]['geliefert'] = ''.$table->datasets[$k]['geliefert'].'';
$table->datasets[$k]['Menge'] = ''.$table->datasets[$k]['Menge'].'';
} else {
$table->datasets[$k]['geliefert'] = ''.$table->datasets[$k]['geliefert'].'';
$table->datasets[$k]['Menge'] = ''.$table->datasets[$k]['Menge'].'';
}
$table->datasets[$k]['preis'] = '
'.$table->datasets[$k]['preis'];
if(preg_match("/&id=([0-9]*)/",$row['nummer'],$treffer)){
$artid = (int)$treffer[1];
if($epreise = $this->app->DB->SelectArr("SELECT ab_menge, preis FROM einkaufspreise WHERE artikel='".$artid."' AND adresse='$adresse' AND (gueltig_bis>='".$datum."' OR gueltig_bis='0000-00-00') and (preis_anfrage_vom = '0000-00-00' or preis_anfrage_vom <= '".$datum."') and ab_menge > ".(int)strip_tags($row['Menge'])." order by ab_menge"))
{
$table->datasets[$k]['preis'] .= '
';
foreach($epreise as $key => $pr)
{
$table->datasets[$k]['preis'] .= "
");
$this->app->Location->execute('index.php?module=bestellung&action=list&msg='.$msg);
}
function BestellungFreigegeben($id = '')
{
if($id<=0){
$intern = false;
$id = (int)$this->app->Secure->GetGET('id');
}else{
$intern = true;
}
if($id)
{
if($this->app->DB->Select("SELECT id FROM bestellung WHERE status = 'abgeschlossen' AND id = '$id' LIMIT 1"))
{
$this->app->DB->Update("UPDATE bestellung SET status = 'freigegeben', schreibschutz = 0 WHERE id = '$id' LIMIT 1");
$msg = $this->app->erp->base64_url_encode("
");
$this->app->Location->execute("index.php?module=bestellung&action=edit&id=$id&msg=$msg");
}
if($showDefault){
$name = $this->app->DB->Select("SELECT a.name FROM bestellung b LEFT JOIN adresse a ON a.id=b.adresse WHERE b.id='$id' LIMIT 1");
$summe = $this->app->DB->Select("SELECT SUM(menge*preis) FROM bestellung_position
WHERE bestellung='$id'");
$waehrung = $this->app->DB->Select("SELECT waehrung FROM bestellung_position
WHERE bestellung='$id' LIMIT 1");
$summe = $this->app->erp->EUR($summe);
$extra = $this->app->erp->CheckboxEntwurfsmodus("bestellung", $id);
if($this->app->erp->Firmendaten("oneclickrelease")=="1" && $extra=="")
{
$this->app->Location->execute("index.php?module=bestellung&action=freigabe&id=$id&freigabe=$id");
} else {
$this->app->Tpl->Set('TAB1', "
Soll die Bestellung an $name im Wert von $summe $waehrung
jetzt freigegeben werden? $extra
");
}
}
$this->BestellungMenu();
$this->app->Tpl->Parse('PAGE','tabview.tpl');
}
function BestellungCopy()
{
$id = $this->app->Secure->GetGET('id');
$newid = $this->app->erp->CopyBestellung($id);
$this->app->Location->execute('Location: index.php?module=bestellung&action=edit&id='.$newid);
}
function AdresseBestellungCopy()
{
$id = $this->app->Secure->GetGET('id');
$newid = $this->app->erp->CopyBestellung($id);
echo json_encode(array('status'=>1, 'newid'=>$newid));
$this->app->ExitXentral();
}
function BestellungLiveTabelle()
{
$id = (int)$this->app->Secure->GetGET('id');
$status = $this->app->DB->Select("SELECT status FROM bestellung WHERE id='$id' LIMIT 1");
$table = new EasyTable($this->app);
if($status==='freigegeben')
{
$anzahlzeichen = 200;
$table->Query("SELECT SUBSTRING(ap.bezeichnung,1,$anzahlzeichen) as artikel, ap.nummer as Nummer, ap.menge as M,
if(a.porto,'-',if((SELECT SUM(l.menge) FROM lager_platz_inhalt l WHERE l.artikel=ap.artikel) > ap.menge,(SELECT SUM(l.menge) FROM lager_platz_inhalt l WHERE l.artikel=ap.artikel),
if((SELECT SUM(l.menge) FROM lager_platz_inhalt l WHERE l.artikel=ap.artikel)>0,CONCAT('',(SELECT SUM(l.menge) FROM lager_platz_inhalt l WHERE l.artikel=ap.artikel),''),
'aus'))) as L
FROM bestellung_position ap, artikel a WHERE ap.bestellung='$id' AND a.id=ap.artikel");
$artikel = $table->DisplayNew("return","A","noAction");
} else {
$table->Query("SELECT SUBSTRING(ap.bezeichnung,1,$anzahlzeichen) as artikel, ap.nummer as Nummer, ap.menge as M
FROM bestellung_position ap, artikel a WHERE ap.bestellung='$id' AND a.id=ap.artikel");
$artikel = $table->DisplayNew("return","Menge","noAction");
}
echo $artikel;
$this->app->ExitXentral();
}
function BestellungAuftrag()
{
$id = $this->app->Secure->GetGET('id');
$newid = $this->app->erp->WeiterfuehrenBestellungZuAuftrag($id);
$this->app->Location->execute('index.php?module=auftrag&action=edit&id='.$newid);
}
function BestellungAbschicken()
{
$this->BestellungMenu();
$this->app->erp->DokumentAbschicken();
}
function BestellungDelete()
{
$id = $this->app->Secure->GetGET("id");
$belegnr = $this->app->DB->Select("SELECT belegnr FROM bestellung WHERE id='$id' LIMIT 1");
$name = $this->app->DB->Select("SELECT name FROM bestellung WHERE id='$id' LIMIT 1");
$status = $this->app->DB->Select("SELECT status FROM bestellung WHERE id='$id' LIMIT 1");
if($belegnr=='0' || $belegnr=='')
{
$this->app->erp->DeleteBestellung($id);
$belegnr='ENTWURF';
$msg = $this->app->erp->base64_url_encode("
Die Bestellung \"$name\" ($belegnr) wurde gelöscht!
");
//header("Location: ".$_SERVER['HTTP_REFERER']."&msg=$msg");
$this->app->Location->execute('index.php?module=bestellung&action=list&msg='.$msg);
}
if($status==='storniert')
{
$maxbelegnr = $this->app->DB->Select("SELECT MAX(belegnr) FROM bestellung");
if(0)//$maxbelegnr == $belegnr)
{
$this->app->DB->Delete("DELETE FROM bestellung_position WHERE bestellung='$id'");
$this->app->DB->Delete("DELETE FROM bestellung_protokoll WHERE bestellung='$id'");
$this->app->DB->Delete("DELETE FROM bestellung WHERE id='$id'");
$msg = $this->app->erp->base64_url_encode("
Die Bestellung ist noch nicht archiviert! Bitte versenden oder manuell archivieren.
");
}elseif(!$this->app->DB->Select("SELECT versendet FROM bestellung WHERE id = '$id' LIMIT 1"))
{
$this->app->Tpl->Add('MESSAGE',"
Die Bestellung wurde noch nicht versendet!
");
}
}
if($schreibschutz!="1")// && $this->app->erp->RechteVorhanden("bestellung","schreibschutz")) {
{
$this->app->erp->AnsprechpartnerButton($adresse);
$this->app->erp->LieferadresseButton($adresse);
$this->app->erp->AnsprechpartnerAlsLieferadresseButton($adresse);
$this->app->erp->AdresseAlsLieferadresseButton($adresse);
}
$this->app->Tpl->Set('ICONMENU',$this->BestellungIconMenu($id));
$this->app->Tpl->Set('ICONMENU2',$this->BestellungIconMenu($id,2));
if($nummer!="")
{
$this->app->Tpl->Set('NUMMER',$nummer);
if($this->app->erp->RechteVorhanden("adresse","edit"))
$this->app->Tpl->Set('LIEFERANT'," Lf-Nr. ".$lieferantennummer."");
else
$this->app->Tpl->Set('LIEFERANT'," Lf-Nr. ".$lieferantennummer);
}
$check = $this->app->DB->SelectArr("SELECT a.belegnr, a.id, a.name
FROM bestellung_position bp
INNER JOIN auftrag_position ap ON ap.id = bp.auftrag_position_id
INNER JOIN auftrag a ON ap.auftrag = a.id
WHERE bp.bestellung='$id' GROUP BY a.belegnr, a.id ORDER BY a.belegnr, a.id");
if($check)
{
$this->app->Tpl->Add('MESSAGE',"
Zu dieser Bestellung gehör".(count($check) == 1?'t der Auftrag':'en die Aufträge:'));
foreach($check as $row)
{
$this->app->Tpl->Add('MESSAGE',' ');
}
$this->app->Tpl->Add('MESSAGE',"
");
}
if($this->app->Secure->GetPOST("speichern")!="")
{
$abweichenderechnungsadresse = $this->app->Secure->GetPOST("abweichenderechnungsadresse");
$abweichendelieferadresse = $this->app->Secure->GetPOST("abweichendelieferadresse");
} else {
$abweichenderechnungsadresse = $this->app->DB->Select("SELECT abweichende_rechnungsadresse FROM adresse WHERE id='$adresse' LIMIT 1");
$abweichendelieferadresse = $this->app->DB->Select("SELECT abweichendelieferadresse FROM bestellung WHERE id='$id' LIMIT 1");
}
if($abweichenderechnungsadresse) $this->app->Tpl->Set('RECHNUNGSADRESSE',"visible"); else $this->app->Tpl->Set('RECHNUNGSADRESSE',"none");
if($abweichendelieferadresse) $this->app->Tpl->Set('LIEFERADRESSE',"visible"); else $this->app->Tpl->Set('LIEFERADRESSE',"none");
if($belegnr=="" || $belegnr=="0")
{
$this->app->Tpl->Set('LOESCHEN',"");
}
$status= $this->app->DB->Select("SELECT status FROM bestellung WHERE id='$id' LIMIT 1");
if($status=="")
$this->app->DB->Update("UPDATE bestellung SET status='angelegt' WHERE id='$id' LIMIT 1");
if($schreibschutz=="1" && $this->app->erp->RechteVorhanden("bestellung","schreibschutz"))
{
$this->app->Tpl->Add('MESSAGE',"
Diese Bestellung ist schreibgeschützt und darf daher nicht mehr bearbeitet werden!
");
// $this->app->erp->CommonReadonly();
}
if($schreibschutz=="1")
{
$this->app->erp->RemoveReadonly("bestellung_bestaetigt");
$this->app->erp->RemoveReadonly("bestaetigteslieferdatum");
$this->app->erp->RemoveReadonly("bestellungbestaetigtabnummer");
$this->app->erp->RemoveReadonly("bestellungbestaetigtper");
$speichern = $this->app->Secure->GetPOST("speichern");
if($speichern!="")
{
$bestellung_bestaetigt = $this->app->Secure->GetPOST("bestellung_bestaetigt");
$bestaetigteslieferdatum = $this->app->Secure->GetPOST("bestaetigteslieferdatum");
$bestellungbestaetigtabnummer = $this->app->Secure->GetPOST("bestellungbestaetigtabnummer");
$bestellungbestaetigtper = $this->app->Secure->GetPOST("bestellungbestaetigtper");
if($bestellung_bestaetigt!="1") $bestellung_bestaetigt="0";
$bestaetigteslieferdatum = $this->app->String->Convert($bestaetigteslieferdatum,"%1.%2.%3","%3-%2-%1");
$this->app->DB->Update("UPDATE bestellung SET bestellung_bestaetigt='$bestellung_bestaetigt',bestaetigteslieferdatum='$bestaetigteslieferdatum',
bestellungbestaetigtabnummer='$bestellungbestaetigtabnummer',bestellungbestaetigtper='$bestellungbestaetigtper' WHERE id='$id' LIMIT 1");
// alle positonen ebenso anpassen
$this->app->DB->Update("UPDATE bestellung_position SET lieferdatum='$bestaetigteslieferdatum' WHERE bestellung='$id' AND lieferdatum='0000-00-00'");
}
$this->app->erp->CommonReadonly();
} else {
$portofreilieferant_aktiv = $this->app->DB->Select("SELECT portofreilieferant_aktiv FROM adresse WHERE id='$adresse' LIMIT 1");
$portofreiablieferant = $this->app->DB->Select("SELECT portofreiablieferant FROM adresse WHERE id='$adresse' LIMIT 1");
$gesamtsumme = $this->app->erp->BEGesamtsummeOhnePorto($id,"bestellung");
if($portofreilieferant_aktiv == 1 && $portofreiablieferant > 0 && $gesamtsumme <= $portofreiablieferant)
{
$this->app->Tpl->Add('MESSAGE',"
Die Lieferung wird ab ".number_format($portofreiablieferant,2,',','.')." EUR (netto) Portofrei.
Aktuell sind nur ".number_format($gesamtsumme,2,',','.')." EUR (netto) in der Bestellung.
");
}
}
if($schreibschutz != '1'){
if($this->app->erp->Firmendaten("schnellanlegen") == "1"){
$this->app->Tpl->Set('BUTTON_UEBERNEHMEN', '
');
}else{
$this->app->Tpl->Set('BUTTON_UEBERNEHMEN', '
');
}
}
// immer wenn sich der lieferant genändert hat standartwerte setzen
if($this->app->Secure->GetPOST("adresse")!="")
{
$tmp = $this->app->Secure->GetPOST("adresse");
$lieferantennummer = $this->app->erp->FirstTillSpace($tmp);
//$name = substr($tmp,6);
$filter_projekt = $this->app->DB->Select("SELECT projekt FROM bestellung WHERE id = '$id' LIMIT 1");
//if($filter_projekt)$filter_projekt = $this->app->DB->Select("SELECT id FROM projekt WHERE id= '$filter_projekt' and eigenernummernkreis = 1 LIMIT 1");
$adresse = $this->app->DB->Select("SELECT a.id FROM adresse a
LEFT JOIN adresse_rolle ar ON a.id = ar.adresse AND ar.projekt > 0 ".$this->app->erp->ProjektRechte("ar.projekt")."
WHERE a.lieferantennummer='$lieferantennummer' AND a.geloescht=0 AND
(1 ".$this->app->erp->ProjektRechte("a.projekt")." OR not isnull(ar.id))
ORDER by ".($filter_projekt?" a.projekt = '$filter_projekt' DESC, ":"")." a.projekt LIMIT 1");
$uebernehmen =$this->app->Secure->GetPOST("uebernehmen");
if($schreibschutz != '1' && $uebernehmen=="1" && $adresse > 0) // nur neuladen bei tastendruck auf uebernehmen // FRAGEN!!!!
{
$this->app->erp->LoadBestellungStandardwerte($id,$adresse);
$this->app->Location->execute('index.php?module=bestellung&action=edit&id='.$id);
}
}
/*
$table = new EasyTable($this->app);
$table->Query("SELECT a.bezeichnung as artikel, a.nummer as Nummer, b.menge, b.vpe as VPE, FORMAT(b.preis,4) as preis
FROM bestellung_position b LEFT JOIN artikel a ON a.id=b.artikel
WHERE b.bestellung='$id'");
$table->DisplayNew(POSITIONEN,"Preis","noAction");
*/
$arr = $this->app->DB->SelectArr("SELECT bearbeiter, belegnr, status, zahlungsweise,abweichendelieferadresse FROM bestellung WHERE id = '$id' LIMIT 1");
if($arr){
$arr = reset($arr);
$bearbeiter = $arr['bearbeiter'];
$status = $arr['status'];
$bestellung = $arr['belegnr'];
$zahlungsweise = $arr['zahlungsweise'];
$abweichendelieferadresse = $arr['abweichendelieferadresse'];
}
$this->app->Tpl->Set('BEARBEITER',"app->erp->GetAdressName($bearbeiter)."\" readonly>");
$this->app->Tpl->Set('STATUS',"");
if($bestellung!='') $bestellung="keine Nummer";
$this->app->Tpl->Set('ANGEBOT',"");
if($this->app->Secure->GetPOST("zahlungsweise")!="") $zahlungsweise = $this->app->Secure->GetPOST("zahlungsweise");
$zahlungsweise = strtolower($zahlungsweise);
$this->app->Tpl->Set('RECHNUNG',"none");
$this->app->Tpl->Set('KREDITKARTE',"none");
$this->app->Tpl->Set('VORKASSE',"none");
$this->app->Tpl->Set('PAYPAL',"none");
$this->app->Tpl->Set('EINZUGSERMAECHTIGUNG',"none");
if($zahlungsweise=="rechnung") $this->app->Tpl->Set('RECHNUNG',"");
if($zahlungsweise=="paypal") $this->app->Tpl->Set('PAYPAL',"");
if($zahlungsweise=="kreditkarte") $this->app->Tpl->Set('KREDITKARTE',"");
if($zahlungsweise=="einzugsermaechtigung" || $zahlungsweise=="lastschrift") $this->app->Tpl->Set('EINZUGSERMAECHTIGUNG',"");
if($zahlungsweise=="vorkasse" || $zahlungsweise=="kreditkarte" || $zahlungsweise=="paypal" || $zahlungsweise=="bar") $this->app->Tpl->Set('VORKASSE',"");
if($this->app->Secure->GetPOST("abweichendelieferadresse")!="") $versandart = $this->app->Secure->GetPOST("abweichendelieferadresse");
$this->app->Tpl->Set('ABWEICHENDELIEFERADRESSESTYLE',"none");
if($abweichendelieferadresse=="1") $this->app->Tpl->Set('ABWEICHENDELIEFERADRESSESTYLE',"");
$this->app->Tpl->Set('AKTIV_TAB1',"selected");
parent::BestellungEdit();
$this->app->erp->MessageHandlerStandardForm();
/*
if($this->app->Secure->GetPOST("speichern")!="" && $storno=="")
{
if($this->app->Secure->GetGET("msg")=="")
{
$msg = $this->app->Tpl->Get(MESSAGE);
$msg = $this->app->erp->base64_url_encode($msg);
} else {
$msg = $this->app->erp->base64_url_encode($msg);
}
header("Location: index.php?module=bestellung&action=edit&id=$id&msg=$msg");
exit;
}
*/
/*
$summe = $this->app->DB->Select("SELECT SUM(menge*preis) FROM bestellung_position
WHERE bestellung='$id'");
$waehrung = $this->app->DB->Select("SELECT waehrung FROM bestellung_position
WHERE bestellung='$id' LIMIT 1");
$ust_befreit_check = $this->app->DB->Select("SELECT ust_befreit FROM bestellung WHERE id='$id' LIMIT 1");
$summebrutto = $summe *1.19;
if($ust_befreit_check==0)
$tmp = "Kunde zahlt mit UST";
else if($ust_befreit_check==1)
$tmp = "Kunde ist UST befreit";
else
$tmp = "Kunde zahlt keine UST";
if($summe > 0)
$this->app->Tpl->Add(POSITIONEN, "
Zu zahlen: $summe (netto) $summebrutto (brutto) $waehrung ($tmp) ");
*/
if($this->app->Secure->GetPOST('weiter')!='')
{
$this->app->Location->execute('index.php?module=bestellung&action=positionen&id='.$id);
}
$this->BestellungMenu();
}
function BestellungCreate()
{
//$this->app->Tpl->Add(TABS,"
Offene Bestellunge, die durch andere Mitarbeiter in Bearbeitung sind.
[ANGEBOTE]");
$this->app->Tpl->Set('AKTIV_TAB1',"selected");
$this->app->YUI->TableSearch('ANGEBOTE',"bestellungeninbearbeitung");
/*
$table = new EasyTable($this->app);
$table->Query("SELECT DATE_FORMAT(datum,'%d.%m.%y') as vom, if(belegnr,belegnr,'ohne Nummer') as beleg, name, status, id
FROM bestellung WHERE status='angelegt' order by datum DESC, id DESC");
$table->DisplayNew(ANGEBOTE, "
");
*/
$this->app->Tpl->Set('TABTEXT',"Bestellung anlegen");
$this->app->Tpl->Parse('PAGE',"tabview.tpl");
//parent::BestellungCreate();
}
function BestellungListMenu()
{
$backurl = $this->app->Secure->GetGET("backurl");
$backurl = $this->app->erp->base64_url_decode($backurl);
//$this->app->Tpl->Add(TABS,"
Allgemein
");
$this->app->erp->MenuEintrag("index.php?module=bestellung&action=list","Übersicht");
$this->app->erp->MenuEintrag("index.php?module=bestellung&action=create","Neue Bestellung anlegen");
$this->app->erp->MenuEintrag("index.php?module=bestellung&action=offenepositionen","Offene Positionen");
//$this->app->erp->MenuEintrag("index.php?module=bestellvorschlag&action=ausgehend","Bestellvorschlag");
if(strlen($backurl)>5){
$this->app->erp->MenuEintrag((string)$backurl, 'Zurück zur Übersicht');
}
else{
$this->app->erp->MenuEintrag('index.php', 'Zurück zur Übersicht');
}
}
function BestellungList()
{
// $this->app->Tpl->Set(UEBERSCHRIFT,"Bestellungssuche");
// $this->app->Tpl->Set(KURZUEBERSCHRIFT,"Bestellungssuche");
if($this->app->Secure->GetPOST('ausfuehren') && $this->app->erp->RechteVorhanden('bestellung', 'edit'))
{
$drucker = $this->app->Secure->GetPOST('seldrucker');
$aktion = $this->app->Secure->GetPOST('sel_aktion');
$auswahl = $this->app->Secure->GetPOST('auswahl');
if($drucker > 0) $this->app->erp->BriefpapierHintergrundDisable($drucker);
if(is_array($auswahl))
{
switch($aktion)
{
case 'mail':
foreach($auswahl as $v)
{
$v = (int)$v;
if($v){
$bestellungarr = $this->app->DB->SelectRow("SELECT email,adresse,projekt,name,sprache FROM bestellung WHERE id = '$v' LIMIT 1");
if(!empty($bestellungarr))
{
$email = (String)$bestellungarr['email'];//$this->app->DB->Select("SELECT email FROM auftrag WHERE id = '$v' LIMIT 1");
$adresse = $bestellungarr['adresse'];//$this->app->DB->Select("SELECT adresse FROM auftrag WHERE id = '$v' LIMIT 1");
$projekt = $bestellungarr['projekt'];//$this->app->DB->Select("SELECT projekt FROM auftrag WHERE id = '$v' LIMIT 1");
$name = $bestellungarr['name'];// $this->app->DB->Select("SELECT name FROM auftrag WHERE id = '$v' LIMIT 1");
$sprache = $bestellungarr['sprache'];// $this->app->DB->Select("SELECT sprache FROM auftrag WHERE id='$v' LIMIT 1");
}else{
$email = '';
$adresse = 0;
$projekt = 0;
$name = '';
$sprache = '';
}
if($sprache==''){
$sprache = $this->app->DB->Select("SELECT sprache FROM adresse WHERE id='$adresse' AND geloescht=0 LIMIT 1");
}
if($sprache=='') {
$sprache='de';
}
$emailtext = $this->app->erp->Geschaeftsbriefvorlage($sprache,'bestellung',$projekt,$name,$v);
if($email === '')
{
$email = (String)$this->app->DB->Select("SELECT email FROM adresse WHERE id = '$adresse' LIMIT 1");
}
if($email !== '')
{
$this->app->erp->BriefpapierHintergrunddisable = !$this->app->erp->BriefpapierHintergrunddisable;
if(class_exists('BestellungPDFCustom'))
{
$Brief = new BestellungPDFCustom($this->app,$projekt);
}else{
$Brief = new BestellungPDF($this->app,$projekt);
}
$Brief->GetBestellung($v);
$_tmpfile = $Brief->displayTMP();
$Brief->ArchiviereDocument();
unlink($_tmpfile);
$this->app->erp->BriefpapierHintergrunddisable = !$this->app->erp->BriefpapierHintergrunddisable;
if(class_exists('BestellungPDFCustom'))
{
$Brief = new BestellungPDFCustom($this->app,$projekt);
}else{
$Brief = new BestellungPDF($this->app,$projekt);
}
$Brief->GetBestellung($v);
$tmpfile = $Brief->displayTMP();
$Brief->ArchiviereDocument();
$fileid = $this->app->erp->CreateDatei($Brief->filename,'bestellung','','',$tmpfile,$this->app->User->GetName());
$this->app->erp->AddDateiStichwort($fileid,'bestellung','bestellung',$v);
$this->app->erp->DokumentSend($adresse,'bestellung', $v, 'email',$emailtext['betreff'],$emailtext['text'],array($tmpfile),"","",$projekt,$email, $name);
$ansprechpartner = $name." <".$email.">";
$this->app->DB->Insert("INSERT INTO dokumente_send
(id,dokument,zeit,bearbeiter,adresse,parameter,art,betreff,text,projekt,ansprechpartner,versendet,dateiid) VALUES ('','bestellung',NOW(),'".$this->app->DB->real_escape_string($this->app->User->GetName())."',
'$adresse','$v','email','".$this->app->DB->real_escape_string($emailtext['betreff'])."','".$this->app->DB->real_escape_string($emailtext['text'])."','$projekt','$ansprechpartner',1,'$fileid')");
$tmpid = $this->app->DB->GetInsertID();
unlink($tmpfile);
$this->app->DB->Update("UPDATE bestellung SET versendet=1, versendet_am=NOW(),
versendet_per='email',versendet_durch='".$this->app->DB->real_escape_string($this->app->User->GetName())."',schreibschutz='1' WHERE id='$v' LIMIT 1");
$this->app->erp->BestellungProtokoll($v,'Bestellung versendet');
}
}
}
break;
case 'freigeben':
foreach($auswahl as $v)
{
$v = (int)$v;
if($v){
if($this->app->DB->Select("SELECT id FROM bestellung WHERE id = '$v' AND status <> 'storniert' LIMIT 1")){
$this->BestellungFreigegeben($v);
}
}
}
break;
case 'versendet':
foreach($auswahl as $v)
{
$v = (int)$v;
if($v) {
$projekt = $this->app->DB->Select("SELECT projekt FROM bestellung WHERE id='$v' LIMIT 1");
if(class_exists('BestellungPDFCustom'))
{
$Brief = new BestellungPDFCustom($this->app,$projekt);
}else{
$Brief = new BestellungPDF($this->app,$projekt);
}
$Brief->GetBestellung($v);
$tmpfile = $Brief->displayTMP();
$Brief->ArchiviereDocument();
$this->app->erp->BestellungProtokoll($v,"Bestellung versendet");
$this->app->erp->closeInvoice($v);
$this->app->DB->Update("UPDATE bestellung SET schreibschutz=1, versendet = 1, status='versendet' WHERE id = '$v' LIMIT 1");
}
}
break;
case 'abgeschlossen':
foreach($auswahl as $v)
{
$v = (int)$v;
if($v){
if($this->app->DB->Select("SELECT id FROM bestellung WHERE id = '$v' AND status != 'angelegt' AND status != 'abgeschlossen' LIMIT 1")){
$this->BestellungAbschliessen($v);
}
}
}
break;
case 'drucken':
if($drucker)
{
foreach($auswahl as $v)
{
$v = (int)$v;
if($v){
$bestellungsdaten = $this->app->DB->Select("SELECT projekt, adresse FROM bestellung WHERE id='$v' LIMIT 1");
$projekt = $bestellungsdaten['projekt'];
$adressId = $bestellungsdaten['adresse'];
$this->app->erp->BriefpapierHintergrunddisable = !$this->app->erp->BriefpapierHintergrunddisable;
if(class_exists('BestellungPDFCustom'))
{
$Brief = new BestellungPDFCustom($this->app,$projekt);
}else{
$Brief = new BestellungPDF($this->app,$projekt);
}
$Brief->GetBestellung($v);
$_tmpfile = $Brief->displayTMP();
$Brief->ArchiviereDocument();
unlink($_tmpfile);
$this->app->erp->BriefpapierHintergrunddisable = !$this->app->erp->BriefpapierHintergrunddisable;
if(class_exists('BestellungPDFCustom'))
{
$Brief = new BestellungPDFCustom($this->app,$projekt);
}else{
$Brief = new BestellungPDF($this->app,$projekt);
}
$Brief->GetBestellung($v);
$tmpfile = $Brief->displayTMP();
$Brief->ArchiviereDocument();
$this->app->printer->Drucken($drucker,$tmpfile);
$doctype = 'bestellung';
$this->app->erp->RunHook('dokumentsend_ende', 5, $doctype, $v, $projekt, $adressId, $aktion);
$this->app->erp->BestellungProtokoll($v,"Bestellung versendet");
unlink($tmpfile);
}
}
}
break;
case 'pdf':
foreach($auswahl as $v)
{
$v = (int)$v;
if($v){
$projekt = $this->app->DB->Select("SELECT projekt FROM bestellung WHERE id='$v' LIMIT 1");
$this->app->erp->BriefpapierHintergrunddisable = !$this->app->erp->BriefpapierHintergrunddisable;
if(class_exists('BestellungPDFCustom'))
{
$Brief = new BestellungPDFCustom($this->app,$projekt);
}else{
$Brief = new BestellungPDF($this->app,$projekt);
}
$Brief->GetBestellung($v);
$_tmpfile = $Brief->displayTMP();
$Brief->ArchiviereDocument();
unlink($_tmpfile);
$this->app->erp->BriefpapierHintergrunddisable = !$this->app->erp->BriefpapierHintergrunddisable;
if(class_exists('BestellungPDFCustom'))
{
$Brief = new BestellungPDFCustom($this->app,$projekt);
}else{
$Brief = new BestellungPDF($this->app,$projekt);
}
$Brief->GetBestellung($v);
$tmpfile[] = $Brief->displayTMP();
//$Brief->ArchiviereDocument();
}
}
if(count($tmpfile) > 0){
try {
/** @var PdfMerger $pdfMerger */
$pdfMerger = $this->app->Container->get('PdfMerger');
$mergeOutputPath = realpath($this->app->erp->GetTMP()) . '/' . uniqid('sammelpdf_', true) . '.pdf';
$pdfMerger->merge($tmpfile, $mergeOutputPath);
foreach($tmpfile as $key=>$value) {
unlink($value);
}
header('Content-type:application/pdf');
header('Content-Disposition: attachment;filename='.md5(microtime(true)).'.pdf');
readfile($mergeOutputPath);
$this->app->ExitXentral();
} catch (PdfComponentExceptionInterface $exception) {
echo 'Fehler beim Generieren der Sammelpdf: ' . htmlspecialchars($exception->getMessage());
$this->app->ExitXentral();
}
}
break;
}
}
}
$speichern = $this->app->Secure->GetPOST("speichern");
$verbindlichkeiteninfo = $this->app->Secure->GetPOST("verbindlichkeiteninfo");
$bestellungid = $this->app->Secure->GetPOST("bestellungid");
if($this->app->erp->Firmendaten("bestellungabschliessen"))
{
$offene = $this->app->DB->SelectArr("SELECT id FROM bestellung WHERE status='freigegeben' OR status='versendet'");
foreach($offene as $order)
{
$this->checkAbschliessen($order['id']);
}
}
if($verbindlichkeiteninfo!="" && $speichern!="" && $bestellungid > 0)
$this->app->DB->Update("UPDATE bestellung SET verbindlichkeiteninfo='$verbindlichkeiteninfo' WHERE id='$bestellungid' LIMIT 1");
$this->BestellungListMenu();
$zahlungsweisen = $this->app->DB->SelectArr('
SELECT
zahlungsweise
FROM
bestellung
GROUP BY
zahlungsweise
');
$zahlungsweiseStr = '';
if ($zahlungsweisen) {
foreach ($zahlungsweisen as $zahlungsweise) {
if (empty($zahlungsweise['zahlungsweise'])) {
continue;
}
$zahlungsweiseStr .= '';
}
}
$status = $this->app->DB->SelectArr('
SELECT
status
FROM
bestellung
GROUP BY
status
');
$statusStr = '';
if ($status) {
foreach ($status as $statusE) {
if (empty($statusE['status'])) {
continue;
}
$statusStr .= '';
}
}
$versandarten = $this->app->DB->SelectArr('
SELECT
versandart
FROM
bestellung
GROUP BY
versandart
');
$versandartenStr = '';
if ($versandarten) {
foreach ($versandarten as $versandart) {
if (empty($versandart['versandart'])) {
continue;
}
$versandartenStr .= '';
}
}
$laender = $this->app->erp->GetSelectLaenderliste();
$laenderStr = '';
foreach ($laender as $landKey => $land) {
$laenderStr .= '';
}
$this->app->Tpl->Set('AKTIV_TAB1',"selected");
$this->app->Tpl->Set('INHALT',"");
// $this->app->Tpl->Add(STATUS,$statusStr);
// $this->app->Tpl->Add(VERSANDARTEN,$versandartenStr);
$this->app->YUI->DatePicker("datumVon");
$this->app->YUI->DatePicker("datumBis");
$this->app->YUI->AutoComplete("projekt", "projektname", 1);
$this->app->YUI->AutoComplete("lieferantennummer", "lieferant", 1);
$this->app->YUI->AutoComplete("artikel", "artikelnummer", 1);
$this->app->YUI->AutoComplete("bestellungnummer", "bestellung", 1);
$this->app->Tpl->Add('ZAHLUNGSWEISEN',$zahlungsweiseStr);
$this->app->Tpl->Add('STATUS',$statusStr);
$this->app->Tpl->Add('VERSANDARTEN',$versandartenStr);
$this->app->Tpl->Add('LAENDER',$laenderStr);
$this->app->Tpl->Parse('TAB1',"bestellung_table_filter.tpl");
$this->app->YUI->TableSearch('TAB1',"bestellungen");
$this->app->YUI->TableSearch('TAB2',"bestellungeninbearbeitung");
$this->app->Tpl->Set('SELDRUCKER', $this->app->erp->GetSelectDrucker($this->app->User->GetParameter('rechnung_list_drucker')));
$this->app->Tpl->Parse('PAGE',"bestellunguebersicht.tpl");
return;
/*
// suche
$sql = $this->app->erp->BestellungSuche();
// offene Bestellungen
$this->app->Tpl->Set(SUBSUBHEADING,"Offene Bestellunge");
$table = new EasyTable($this->app);
$table->Query($sql,$_SESSION[bestellungtreffer]);
//$table->Query("SELECT DATE_FORMAT(a.datum,'%d.%m.%Y') as vom, if(a.belegnr,a.belegnr,'ohne Nummer') as Bestellung, a.name, p.abkuerzung as projekt, a.id
// FROM bestellung a, projekt p WHERE (a.status='freigegeben' OR a.status='versendet') AND p.id=a.projekt order by a.datum DESC, a.id DESC",10);
$table->DisplayOwn(INHALT, "
");
$this->app->Tpl->Parse(TAB1,"rahmen70.tpl");
$this->app->Tpl->Set(INHALT,"");
// wartende Bestellungen
$table = new EasyTable($this->app);
$table->Query("SELECT DATE_FORMAT(a.datum,'%d.%m.%y') as vom, if(a.belegnr,a.belegnr,'ohne Nummer') as Bestellung, ad.lieferantennummer as kunde, a.name, p.abkuerzung as projekt, a.id
FROM bestellung a, projekt p, adresse ad WHERE (a.status='freigegeben' OR a.status='versendet') AND p.id=a.projekt AND a.adresse=ad.id order by a.datum DESC, a.id DESC");
$table->DisplayNew(INHALT, "
");
$this->app->Tpl->Parse(TAB2,"rahmen70.tpl");
$this->app->Tpl->Set(INHALT,"");
// In Bearbeitung
$this->app->Tpl->Set(SUBSUBHEADING,"In Bearbeitung");
$table = new EasyTable($this->app);
$table->Query("SELECT DATE_FORMAT(datum,'%d.%m.%y') as vom, if(belegnr,belegnr,'ohne Nummer') as auftrag, name, vertrieb, status, id
FROM bestellung WHERE status='angelegt' order by datum DESC, id DESC");
$table->DisplayNew(INHALT, "
");
$this->app->Tpl->Parse(TAB3,"rahmen70.tpl");
*/
/*
$this->app->Tpl->Set(TAB2,"lieferant, bestellung, waehrung, sprache, liefertermin, steuersatz, einkäufer, freigabe
Bestellung (NR),Bestellart (NB), Bestelldatum
Projekt
Kostenstelle pro Position
Terminbestellung (am xx.xx.xxxx raus damit)
vorschlagsdaten für positionen
proposition reinklicken zum ändern und reihenfolge tabelle
Bestellung muss werden wie bestellung (bestellung beschreibung = allgemein)
Positionen (wie stueckliste)
Wareneingang / Rückstand
Etiketten
Freigabe
Dokument direkt faxen
");
*/
}
function BestellungRechnungsLieferadresse($auftragid)
{
$data = $this->app->DB->SelectArr("SELECT * FROM bestellung WHERE id='$auftragid' LIMIT 1");
foreach($data[0] as $key=>$value)
{
if($data[0][$key]!='' && $key!=='abweichendelieferadresse' && $key!=='land' && $key!=='plz' && $key!=='lieferland' && $key!=='lieferplz') {
$data[0][$key] = $data[0][$key].' ';
}
}
$rechnungsadresse = $data[0]['name']."".$data[0]['ansprechpartner']."".$data[0]['abteilung']."".$data[0]['unterabteilung'].
"".$data[0]['strasse']."".$data[0]['adresszusatz']."".$data[0]['land']."-".$data[0]['plz']." ".$data[0]['ort'];
if($data[0]['abweichendelieferadresse']!=0){
$lieferadresse = $data[0]['liefername']."".$data[0]['lieferansprechpartner']."".$data[0]['lieferabteilung']."".$data[0]['lieferunterabteilung'].
"".$data[0]['lieferstrasse']."".$data[0]['lieferadresszusatz']."".$data[0]['lieferland']."-".$data[0]['lieferplz']." ".$data[0]['lieferort'];
} else {
$lieferadresse = "keine abweichende Lieferadresse";
}
return "
Bestellt bei:
$rechnungsadresse
Lieferadresse:
$lieferadresse
";
}
public function BestellungNeuberechnen($id)
{
$summeV = $this->app->DB->Select(
"SELECT IFNULL(SUM(menge*preis), 0)
FROM bestellung_position
WHERE umsatzsteuer!='ermaessigt' AND umsatzsteuer!='befreit' AND bestellung='$id' AND (isnull(steuersatz) OR steuersatz < 0)"
);
$summeR = $this->app->DB->Select("SELECT IFNULL(SUM(menge*preis), 0) FROM bestellung_position WHERE umsatzsteuer='ermaessigt' AND bestellung='$id' AND (isnull(steuersatz) OR steuersatz < 0)");
$summeS = (float)$this->app->DB->Select("SELECT
IFNULL(
SUM(menge*preis *
if(umsatzsteuer = 'befreit',
0,
IF(steuersatz < 0 OR isnull(steuersatz),0,steuersatz / 100)
)
)
,0)
FROM bestellung_position WHERE bestellung='$id' AND umsatzsteuer!='ermaessigt' AND umsatzsteuer!='normal'
AND ((steuersatz IS NOT NULL AND steuersatz >= 0) OR umsatzsteuer='befreit')");
$summeNetto = $this->app->DB->Select("SELECT IFNULL(SUM(menge*preis),0) FROM bestellung_position WHERE bestellung='$id'");
$ust_befreit = $this->app->DB->Select("SELECT ust_befreit FROM bestellung WHERE id='$id' LIMIT 1");
if($ust_befreit>0)
{
$rechnungsbetrag = $summeNetto;
} else {
$rechnungsbetrag = $summeNetto + ($summeV*$this->app->erp->GetSteuersatzNormal(true,$id,'bestellung')-$summeV)+ ($summeR*$this->app->erp->GetSteuersatzErmaessigt(true,$id,'bestellung')-$summeR)+$summeS;
}
$this->app->DB->Update("UPDATE bestellung SET gesamtsumme='$rechnungsbetrag' WHERE id='$id' LIMIT 1");
}
public function DeleteBestellung($id)
{
if($id <= 0)
{
return;
}
$belegnr = $this->app->DB->Select("SELECT belegnr FROM bestellung WHERE id='$id' LIMIT 1");
if($belegnr=='' || $belegnr=='0')
{
$this->app->DB->Delete("DELETE FROM bestellung_position WHERE bestellung='$id'");
$this->app->DB->Delete("DELETE FROM bestellung_protokoll WHERE bestellung='$id'");
$this->app->DB->Delete("DELETE FROM bestellung WHERE id='$id' LIMIT 1");
}
}
public function CreateBestellung($adresse='')
{
$projekt = $this->app->erp->GetCreateProjekt($adresse);
$belegmax = '';
$ohnebriefpapier = $this->app->erp->Firmendaten('bestellung_ohnebriefpapier');
$bestellungohnepreis = $this->app->erp->Firmendaten('bestellungohnepreis');
$eigenartikelnummer = $this->app->erp->Firmendaten('bestellungeigeneartikelnummer');
$bestellunglangeartikelnummern = $this->app->erp->Firmendaten('bestellunglangeartikelnummern');
$this->app->DB->Insert("INSERT INTO bestellung (datum,bearbeiter,firma,belegnr,adresse,status,artikelnummerninfotext,ohne_briefpapier,bestellungohnepreis,projekt,langeartikelnummern)
VALUES (NOW(),'".$this->app->User->GetName()."','".$this->app->User->GetFirma()."','$belegmax','$adresse','angelegt',".($eigenartikelnummer?'1':'0').",'".$ohnebriefpapier."','".$bestellungohnepreis."','".$projekt."',".($bestellunglangeartikelnummern?'1':'0').')');
$id = $this->app->DB->GetInsertID();
$this->app->erp->ObjektProtokoll('bestellung',$id,'bestellung_create','Bestellung angelegt');
$this->app->erp->SchnellFreigabe('bestellung',$id);
$this->app->erp->LoadSteuersaetzeWaehrung($id,'bestellung');
$this->app->erp->EventAPIAdd('EventBestellungCreate',$id,'bestellung','create');
return $id;
}
public function AddBestellungPosition($bestellung, $einkauf,$menge,$datum, $beschreibung = '',$artikel='',$einheit='', $waehrung = '')
{
$beschreibung = $this->app->DB->real_escape_string($beschreibung);
if($artikel<=0)
{
if($einkauf > 0){
$einkaufarr = $this->app->DB->SelectRow("SELECT * FROM einkaufspreise WHERE id='$einkauf' LIMIT 1");
}
if(!empty($einkaufarr))
{
$artikel = $einkaufarr['artikel'];
$article = $this->app->DB->SelectRow(
"SELECT `nummer`, `name_de`, `name_en`, `umsatzsteuer`
FROM `artikel` WHERE `id` = {$artikel}"
);
$preis = $einkaufarr['preis'];
$projekt = $einkaufarr['projekt'];
$waehrung = $einkaufarr['waehrung'];
$vpe = $einkaufarr['vpe'];
$bezeichnunglieferant = $this->app->DB->real_escape_string($einkaufarr['bezeichnunglieferant']);
$bestellnummer = $this->app->DB->real_escape_string($einkaufarr['bestellnummer']);
}else{
$artikel = 0;
$preis = 0;
$projekt = 0;
$waehrung = '';
$vpe = '';
$bezeichnunglieferant = '';
$bestellnummer = '';
}
}else{
$article = $this->app->DB->SelectRow(
"SELECT `nummer`, `name_de`, `name_en`, `umsatzsteuer`
FROM `artikel` WHERE `id` = {$artikel}"
);
$bestellnummer = $article['nummer'];
$bezeichnunglieferant = $this->app->DB->real_escape_string($article['name_de']);
$projekt = $projekt = $this->app->DB->Select("SELECT projekt FROM bestellung WHERE id='$bestellung' LIMIT 1");
$preis = 0;
}
if($projekt <= 0) {
$projekt = $this->app->DB->Select("SELECT projekt FROM bestellung WHERE id='$bestellung' LIMIT 1");
}
if($bezeichnunglieferant==''){
$languageIso = $this->app->erp->GetSpracheBelegISO('bestellung', $bestellung);
if($languageIso === 'EN'){
$bezeichnunglieferant = $this->app->DB->real_escape_string($article['name_en']);
}
if(empty($bezeichnunglieferant)){
$bezeichnunglieferant = $this->app->DB->real_escape_string($article['name_de']);
}
}
$umsatzsteuer = $article['umsatzsteuer'];
if($umsatzsteuer=='') {
$umsatzsteuer='normal';
}
$sort = $this->app->DB->Select("SELECT MAX(sort) FROM bestellung_position WHERE bestellung='$bestellung' LIMIT 1");
$sort++;
$this->app->DB->Insert("INSERT INTO bestellung_position (bestellung,artikel,bezeichnunglieferant,bestellnummer,menge,preis, waehrung, sort,lieferdatum, umsatzsteuer, status,projekt,vpe, beschreibung,einheit)
VALUES ('$bestellung','$artikel','$bezeichnunglieferant','$bestellnummer','$menge','$preis','$waehrung','$sort','$datum','$umsatzsteuer','angelegt','$projekt','$vpe','$beschreibung','$einheit')");
return $this->app->DB->GetInsertID();
}
public function CopyBestellung($id)
{
$this->app->DB->Insert('INSERT INTO bestellung (id) VALUES (NULL)');
$newid = $this->app->DB->GetInsertID();
$arr = $this->app->DB->SelectRow("SELECT NOW() as datum,projekt,bodyzusatz,freitext,adresse,name,abteilung,unterabteilung,strasse,adresszusatz,plz,ort,land,ustid,email,telefon,telefax,betreff,kundennummer,versandart,einkaeufer,zahlungsweise,zahlungszieltage,'angelegt' as status,typ,
zahlungszieltageskonto,zahlungszielskonto,firma,'angelegt' as status,abweichendelieferadresse,liefername,lieferabteilung,lieferunterabteilung,ust_befreit,
lieferland,lieferstrasse,lieferort,lieferplz,lieferadresszusatz,lieferansprechpartner,sprache,anzeigesteuer,waehrung,kostenstelle FROM bestellung WHERE id='$id' LIMIT 1");
$arr['bundesstaat'] = $this->app->DB->Select("SELECT bundesstaat FROM bestellung WHERE id='$id' LIMIT 1");
$this->app->DB->UpdateArr('bestellung',$newid,'id',$arr, true);
$pos = $this->app->DB->SelectArr("SELECT * FROM bestellung_position WHERE bestellung='$id'");
$cpos = !empty($pos)?count($pos):0;
for($i=0;$i<$cpos;$i++){
$this->app->DB->Insert("INSERT INTO bestellung_position (bestellung) VALUES ($newid)");
$newposid = $this->app->DB->GetInsertID();
$pos[$i]['bestellung']=$newid;
$pos[$i]['auftrag_position_id']=0;
$this->app->DB->UpdateArr('bestellung_position',$newposid,'id',$pos[$i], true);
if(is_null($pos[$i]['steuersatz'])){
$this->app->DB->Update("UPDATE bestellung_position SET steuersatz = null WHERE id = '$newposid' LIMIT 1");
}
}
$this->app->erp->CheckFreifelder('bestellung',$newid);
$this->app->erp->CopyBelegZwischenpositionen('bestellung',$id,'bestellung',$newid);
$this->app->DB->Update("UPDATE bestellung_position SET geliefert=0, mengemanuellgeliefertaktiviert=0,abgeschlossen='0',abgerechnet='0' WHERE bestellung='$newid'");
$this->app->erp->LoadSteuersaetzeWaehrung($newid,'bestellung');
$this->app->erp->SchnellFreigabe('bestellung',$newid);
return $newid;
}
public function LoadBestellungStandardwerte($id,$adresse)
{
// standard adresse von lieferant
$arr = $this->app->DB->SelectArr("SELECT * FROM adresse WHERE id='$adresse' AND geloescht=0 LIMIT 1");
$rolle_projekt = $this->app->DB->Select("SELECT parameter FROM adresse_rolle WHERE adresse='$adresse' AND subjekt='Lieferant' AND objekt='Projekt' AND (bis ='0000-00-00' OR bis <= NOW()) LIMIT 1");
if($rolle_projekt > 0)
{
$arr[0]['projekt'] = $rolle_projekt;
}
$field = array('anschreiben','name','abteilung','unterabteilung','strasse','adresszusatz','plz','ort','land','ustid','email','telefon','telefax','lieferantennummer','projekt','ust_befreit','titel','lieferbedingung','ansprechpartner');
foreach($field as $key=>$value)
{
if($value==='projekt' && $this->app->Secure->POST[$value]!=''&&0)
{
$uparr[$value] = $this->app->Secure->POST[$value];
} else {
$this->app->Secure->POST[$value] = str_replace("'", ''',$arr[0][$value]);
$uparr[$value] = str_replace("'", ''',$arr[0][$value]);
}
//$this->app->Secure->POST[$value] = $arr[0][$value];
//$uparr[$value] = $arr[0][$value];
}
$uparr['adresse'] = $adresse;
$this->app->DB->UpdateArr('bestellung',$id,'id',$uparr);
$uparr=null;
//liefernantenvorlage
$arr = $this->app->DB->SelectArr("SELECT
kundennummerlieferant as kundennummer,
zahlungsweiselieferant as zahlungsweise,
zahlungszieltagelieferant as zahlungszieltage,
zahlungszieltageskontolieferant as zahlungszieltageskonto,
zahlungszielskontolieferant as zahlungszielskonto,
versandartlieferant as versandart,
waehrung
FROM adresse WHERE id='$adresse' LIMIT 1");
// falls von Benutzer projekt ueberladen werden soll
$projekt_bevorzugt=$this->app->DB->Select("SELECT projekt_bevorzugen FROM user WHERE id='".$this->app->User->GetID()."' LIMIT 1");
if($projekt_bevorzugt=='1')
{
$uparr['projekt'] = $this->app->DB->Select("SELECT projekt FROM user WHERE id='".$this->app->User->GetID()."' LIMIT 1");
$arr[0]['projekt'] = $uparr['projekt'];
$this->app->Secure->POST['projekt']=$this->app->DB->Select("SELECT abkuerzung FROM projekt WHERE id='".$arr[0]['projekt']."' AND id > 0 LIMIT 1");
}
$field = array('kundennummer','zahlungsweise','zahlungszieltage','zahlungszieltageskonto','zahlungszielskonto','versandart','waehrung');
foreach($field as $key=>$value)
{
$uparr[$value] = $arr[0][$value];
$this->app->Secure->POST[$value] = $arr[0][$value];
}
$this->app->DB->UpdateArr('bestellung',$id,'id',$uparr);
//standardprojekt
//$projekt = $this->app->DB->Select("SELECT projekt FROM adresse WHERE id='$adresse' AND geloescht=0 LIMIT 1");
//$this->app->Secure->POST[projekt] = $projekt;
$this->app->erp->LoadAdresseStandard('bestellung',$id,$adresse);
}
public function BestellungEAN()
{
$id=$this->app->Secure->GetGET("id");
$scanner=$this->app->Secure->GetPOST("scanner");
$menge=$this->app->Secure->GetPOST("menge");
$posAdd = $this->app->Secure->GetPOST('posadd');
$posDel = $this->app->Secure->GetPost('posdel');
/** @var ScanArticleService $scanArticleService */
$scanArticleService = $this->app->Container->get('ScanArticleService');
$this->BestellungMenu();
$schreibschutz = $this->app->DB->Select("SELECT schreibschutz FROM bestellung WHERE id='$id' LIMIT 1");
if($scanner!="" && $schreibschutz!="1")
{
if(!is_numeric($menge)){
$menge=1;
}
$adresse = $this->app->DB->Select("SELECT adresse FROM bestellung WHERE id='$id' LIMIT 1");
try{
$scanArticleService->writeArticleToSession('bestellung',$scanner,$menge,$id);
} catch(ArticleNotFoundException $e){
$this->app->Tpl->Set('TAB1',"
{|Der Artikel wurde nicht gefunden|}: ".$scanner."