mirror of
https://github.com/OpenXE-org/OpenXE.git
synced 2024-12-27 07:00:29 +01:00
131 lines
6.6 KiB
PHP
131 lines
6.6 KiB
PHP
<?php
|
|
|
|
namespace Xentral\Modules\Article\Service;
|
|
use ApplicationCore;
|
|
use Xentral\Components\Database\Database;
|
|
|
|
class ArticleService
|
|
{
|
|
private ApplicationCore $app;
|
|
|
|
public function __construct(ApplicationCore $app)
|
|
{
|
|
$this->app = $app;
|
|
}
|
|
|
|
function CopyArticle(int $id, bool $purchasePrices, bool $sellingPrices, bool $files, bool $properties,
|
|
bool $instructions, bool $partLists, bool $customFields, string $newArticleNumber = '')
|
|
{
|
|
$this->app->DB->MysqlCopyRow('artikel','id',$id);
|
|
|
|
$idnew = $this->app->DB->GetInsertID();
|
|
|
|
$steuersatz = $this->app->DB->Select("SELECT steuersatz FROM artikel WHERE id = '$id' LIMIT 1");
|
|
if($steuersatz == ''){
|
|
$steuersatz = -1.00;
|
|
$this->app->DB->Update("UPDATE artikel SET steuersatz = '$steuersatz' WHERE id = '$idnew' LIMIT 1");
|
|
}
|
|
|
|
$this->app->DB->Update("UPDATE artikel SET nummer='$newArticleNumber' WHERE id='$idnew' LIMIT 1");
|
|
if($this->app->DB->Select("SELECT variante_kopie FROM artikel WHERE id = '$id' LIMIT 1"))
|
|
$this->app->DB->Update("UPDATE artikel SET variante = 1, variante_von = '$id' WHERE id = '$idnew' LIMIT 1");
|
|
|
|
if($partLists){
|
|
// wenn stueckliste
|
|
$stueckliste = $this->app->DB->Select("SELECT stueckliste FROM artikel WHERE id='$id' LIMIT 1");
|
|
if($stueckliste==1)
|
|
{
|
|
$artikelarr = $this->app->DB->SelectArr("SELECT * FROM stueckliste WHERE stuecklistevonartikel='$id'");
|
|
$cartikelarr = $artikelarr?count($artikelarr):0;
|
|
for($i=0;$i<$cartikelarr;$i++)
|
|
{
|
|
$sort = $artikelarr[$i]['sort'];
|
|
$artikel = $artikelarr[$i]['artikel'];
|
|
$referenz = $artikelarr[$i]['referenz'];
|
|
$place = $artikelarr[$i]['place'];
|
|
$layer = $artikelarr[$i]['layer'];
|
|
$stuecklistevonartikel = $idnew;
|
|
$menge = $artikelarr[$i]['menge'];
|
|
$firma = $artikelarr[$i]['firma'];
|
|
|
|
$this->app->DB->Insert("INSERT INTO stueckliste (id,sort,artikel,referenz,place,layer,stuecklistevonartikel,menge,firma) VALUES
|
|
('','$sort','$artikel','$referenz','$place','$layer','$stuecklistevonartikel','$menge','$firma')");
|
|
}
|
|
}
|
|
}
|
|
|
|
if($purchasePrices){
|
|
$einkaufspreise = $this->app->DB->SelectArr("SELECT id FROM einkaufspreise WHERE artikel = '$id'");
|
|
if($einkaufspreise){
|
|
foreach($einkaufspreise as $preis){
|
|
$neuereinkaufspreis = $this->app->DB->MysqlCopyRow("einkaufspreise", "id", $preis['id']);
|
|
$this->app->DB->Update("UPDATE einkaufspreise SET artikel = '$idnew' WHERE id = '$neuereinkaufspreis' LIMIT 1");
|
|
}
|
|
}
|
|
}
|
|
|
|
if($sellingPrices){
|
|
$verkaufspreise = $this->app->DB->SelectArr("SELECT id FROM verkaufspreise WHERE artikel = '$id'");
|
|
if($verkaufspreise){
|
|
foreach($verkaufspreise as $preis){
|
|
$neuerverkaufspreis = $this->app->DB->MysqlCopyRow("verkaufspreise", "id", $preis['id']);
|
|
$this->app->DB->Update("UPDATE verkaufspreise SET artikel = '$idnew' WHERE id = '$neuerverkaufspreis' LIMIT 1");
|
|
}
|
|
}
|
|
}
|
|
|
|
if($files){
|
|
$dateien = $this->app->DB->SelectArr("SELECT DISTINCT datei FROM datei_stichwoerter WHERE parameter = '$id' AND objekt = 'Artikel'");
|
|
$datei_stichwoerter = $this->app->DB->SelectArr("SELECT id,datei FROM datei_stichwoerter WHERE parameter = '$id' AND objekt = 'Artikel'");
|
|
|
|
if($dateien){
|
|
foreach($dateien as $datei){
|
|
$titel = $this->app->DB->Select("SELECT titel FROM datei WHERE id='".$datei['datei']."' LIMIT 1");
|
|
$beschreibung = $this->app->DB->Select("SELECT beschreibung FROM datei WHERE id='".$datei['datei']."' LIMIT 1");
|
|
$nummer = $this->app->DB->Select("SELECT nummer FROM datei WHERE id='".$datei['datei']."' LIMIT 1");
|
|
$name = $this->app->DB->Select("SELECT dateiname FROM datei_version WHERE datei='".$this->app->DB->real_escape_string($datei['datei'])."' ORDER by version DESC LIMIT 1");
|
|
$ersteller = $this->app->User->GetName();
|
|
$tmpnewdateiid = $this->app->erp->CreateDatei($name,$titel,$beschreibung,$nummer,$this->app->erp->GetDateiPfad($datei['datei']),$ersteller);
|
|
$datei_mapping[$datei['datei']] = $tmpnewdateiid;
|
|
}
|
|
}
|
|
|
|
if($datei_stichwoerter){
|
|
foreach($datei_stichwoerter as $datei){
|
|
$neuesstichwort = $this->app->DB->MysqlCopyRow("datei_stichwoerter", "id", $datei['id']);
|
|
$newdatei = $datei_mapping[$datei['datei']];
|
|
$this->app->DB->Update("UPDATE datei_stichwoerter SET datei='$newdatei', parameter = '$idnew', objekt = 'Artikel' WHERE id = '$neuesstichwort' LIMIT 1");
|
|
}
|
|
}
|
|
}
|
|
|
|
if($properties){
|
|
$aeigenschaften = $this->app->DB->SelectArr("SELECT id FROM artikeleigenschaftenwerte WHERE artikel = '$id'");
|
|
if($aeigenschaften){
|
|
foreach($aeigenschaften as $eigenschaft){
|
|
$neue_eigenschaft = $this->app->DB->MysqlCopyRow("artikeleigenschaftenwerte", "id", $eigenschaft['id']);
|
|
$this->app->DB->Update("UPDATE artikeleigenschaftenwerte SET artikel = '$idnew' WHERE id = '$neue_eigenschaft' LIMIT 1");
|
|
}
|
|
}
|
|
}
|
|
|
|
if($instructions){
|
|
$arbeitsanweisungen = $this->app->DB->SelectArr("SELECT id FROM artikel_arbeitsanweisung WHERE artikel = '$id'");
|
|
if($arbeitsanweisungen){
|
|
foreach($arbeitsanweisungen as $anweisung){
|
|
$neue_anweisung = $this->app->DB->MysqlCopyRow("artikel_arbeitsanweisung", "id", $anweisung['id']);
|
|
$this->app->DB->Update("UPDATE artikel_arbeitsanweisung SET artikel = '$idnew' WHERE id = '$neue_anweisung' LIMIT 1");
|
|
}
|
|
}
|
|
}
|
|
|
|
if($customFields){
|
|
$freifelderuebersetzungen = $this->app->DB->SelectArr("SELECT id FROM artikel_freifelder WHERE artikel = '$id'");
|
|
if($freifelderuebersetzungen){
|
|
$this->app->DB->Insert("INSERT INTO artikel_freifelder (artikel, sprache, nummer, wert) SELECT '$idnew', sprache, nummer, wert FROM artikel_freifelder WHERE artikel = '$id'");
|
|
}
|
|
}
|
|
|
|
return $idnew;
|
|
}
|
|
} |