$tabelle,
'where' => $where
);
//
return json_encode($ArrDaten);
}
//
$e->register(
'fjTest01', // function name of the service
array( // input arguments
'tabelle' => 'string',
'where' => 'string'
),
array( // Test-Funktion
'return'=>'string'
),
'Das ist eine Dummy-Funktion :: fjTest01'
);
/////////////////////////////////////////////////////////
//
// getKunden
function getKunden() {
global $mssqlServer, $mssqlInstanz, $mssqlUser, $mssqlPass, $mssqlDB;
$serverName = $mssqlServer . "\\" . $mssqlInstanz;
$connectionInfo = array(
'Database' => $mssqlDB,
'UID' => $mssqlUser,
'PWD' => $mssqlPass,
'CharacterSet' => 'UTF-8',
);
$conn = sqlsrv_connect( $serverName, $connectionInfo);
if( !$conn ) die(log_msg( 'MSSQL Error: ' . print_r( sqlsrv_errors(), true) ));
//
$sql = "SELECT
KUNDEN_ID, CRM_AdressenID, Nummer,
Firma, Zusatz, Vorname, Name,
Strasse, PLZ, Ort, Land,
Telefon1, Telefon2, Email,
Passwort,
Gruppe,
Zahlungsbedingung,
Mahnsperre,
Preisgruppe,
PreisTyp,
Rabattgruppe,
Waehrung,
Sprache
FROM dbo.Kunden
WHERE Inaktiv = 0 AND ( ShopAktiv = 1 OR FreiesKennzeichen4 = 1 )";
// SQL-Abrage starten
$stmt = sqlsrv_query( $conn, $sql );
if(!$stmt) die(log_msg('MSSQL Error: ' . print_r( sqlsrv_errors(), true)));
// SQL-Felddefinitionen laden
$ArrFields = sqlsrv_field_metadata($stmt);
// Array für Daten erstellen
$ArrRS = array();
// Alle Datensätze abarbeiten
while( $row = sqlsrv_fetch_array( $stmt, SQLSRV_FETCH_NUMERIC) ) {
// Array für Datensatz
$tmpArray = array();
// Für jeden Datensatz -> Alle Felder (Spalten)
for ($i = 0; $i < count($ArrFields); $i++) {
$SpaltenName = $ArrFields[$i]['Name']; // Spaltenname (z.B. ART_ID, Bezeichung, etc.
$SpaltenTyp = $ArrFields[$i]['Type']; // Varchar, Date, etc.
$SpaltenWert = $row[$i]; // Datennsatz-Wert
// SpaltenTyp -2 (TimeStamp) ausschliessen, alle anderen abarbeiten
if ($SpaltenTyp != "-2") {
$tmpArray[ $SpaltenName ] = $SpaltenWert;
}
}
// Datensatz in Array für Daten laden
$ArrRS[] = $tmpArray;
}
// SQL-Verbindung trennen
sqlsrv_close($conn);
// JSON Array zurückgeben
return json_encode($ArrRS);
}
//
$e->register(
'getKunden', // function name of the service
array( // input arguments
),
array( // Test-Funktion
'return'=>'string'
),
'liefert Kundenliste (ohne Kontakte)'
);
/////////////////////////////////////////////////////////
//
// getZahlungsbedingungen
function getZahlungsbedingungen( $ZahlungsbedingungenID = "") {
// Array für Daten erstellen
$ArrRS = array();
if ( $ZahlungsbedingungenID != "" ) {
//
global $mssqlServer, $mssqlInstanz, $mssqlUser, $mssqlPass, $mssqlDB;
$serverName = $mssqlServer . "\\" . $mssqlInstanz;
$connectionInfo = array(
'Database' => $mssqlDB,
'UID' => $mssqlUser,
'PWD' => $mssqlPass,
'CharacterSet' => 'UTF-8',
);
$conn = sqlsrv_connect( $serverName, $connectionInfo);
if( !$conn ) die(log_msg( 'MSSQL Error: ' . print_r( sqlsrv_errors(), true) ));
//
$sql = "SELECT ZAHLBED_ID, ZB, Bezeichnung, Zahlungsziel FROM ZAHLBED WHERE ZB LIKE '" . $ZahlungsbedingungenID . "'";
// SQL-Abrage starten
$stmt = sqlsrv_query( $conn, $sql );
if(!$stmt) die(log_msg('MSSQL Error: ' . print_r( sqlsrv_errors(), true)));
// SQL-Felddefinitionen laden
$ArrFields = sqlsrv_field_metadata($stmt);
// Alle Datensätze abarbeiten
while( $row = sqlsrv_fetch_array( $stmt, SQLSRV_FETCH_NUMERIC) ) {
// Array für Datensatz
$tmpArray = array();
// Für jeden Datensatz -> Alle Felder (Spalten)
for ($i = 0; $i < count($ArrFields); $i++) {
$SpaltenName = $ArrFields[$i]['Name']; // Spaltenname (z.B. ART_ID, Bezeichung, etc.
$SpaltenTyp = $ArrFields[$i]['Type']; // Varchar, Date, etc.
$SpaltenWert = $row[$i]; // Datennsatz-Wert
// SpaltenTyp -2 (TimeStamp) ausschliessen, alle anderen abarbeiten
if ($SpaltenTyp != "-2") {
$tmpArray[ $SpaltenName ] = $SpaltenWert;
}
}
// Datensatz in Array für Daten laden
$ArrRS[] = $tmpArray;
}
// SQL-Verbindung trennen
sqlsrv_close($conn);
}
// JSON Array zurückgeben
return json_encode($ArrRS);
}
//
$e->register(
'getZahlungsbedingungen', // function name of the service
array( // input arguments
'ZahlungsbedingungenID' => 'string'
),
array(
'return'=>'string'
),
'Liefert bestimmte Zahlungsbedingungen zurück'
);
/////////////////////////////////////////////////////////
//
// getArtikelliste :: liefert alle Artikel inkl. Lagerbestand
function getArtikelliste() {
//
global $mssqlServer, $mssqlInstanz, $mssqlUser, $mssqlPass, $mssqlDB;
//
$ArrBezeichnungen = getArtikelFremdsprachen();
//
$ArrLagerbestand = getLagerbestand();
//
$serverName = $mssqlServer . "\\" . $mssqlInstanz;
$connectionInfo = array(
'Database' => $mssqlDB,
'UID' => $mssqlUser,
'PWD' => $mssqlPass,
'CharacterSet' => 'UTF-8',
);
$conn = sqlsrv_connect( $serverName, $connectionInfo);
if( !$conn ) die(log_msg( 'MSSQL Error: ' . print_r( sqlsrv_errors(), true) ));
//
$sql = "SELECT ART_ID, Artikelgruppe, Artikelnummer, EANNummer, Bezeichnung, Zusatz, Gewicht, Preiseinheit, LosgroesseVerkauf, Mengeneinheit, SSVerkauf
FROM ART
WHERE ShopAktiv = 1";
// SQL-Abrage starten
$stmt = sqlsrv_query( $conn, $sql );
if(!$stmt) die(log_msg('MSSQL Error: ' . print_r( sqlsrv_errors(), true)));
// SQL-Felddefinitionen laden
$ArrFields = sqlsrv_field_metadata($stmt);
// Array für Daten erstellen
$ArrRS = array();
// Alle Datensätze abarbeiten
while( $row = sqlsrv_fetch_array( $stmt, SQLSRV_FETCH_ASSOC) ) {
//
if ( array_key_exists( $row['Artikelnummer'], $ArrLagerbestand) ) {
$LB = $ArrLagerbestand[ $row['Artikelnummer'] ];
} else {
$LB = 0;
}
//
$ArrBezeichnungen[ $row['Artikelnummer'] ][ "DE" ] = array(
"Bezeichnung" => $row['Bezeichnung'],
"Zusatz" => $row['Zusatz'],
"Langtext" => getArtikelText( "AR", $row['Artikelnummer'] ), // getArtikelLangtext( $row['Artikelnummer'] )
"Bestelltext" => getArtikelText( "AS", $row['Artikelnummer'] ),
"Infotext" => getArtikelText( "AI", $row['Artikelnummer'] )
);
//
$ArrRS[] = array(
"ART_ID" => $row['ART_ID'],
"Artikelgruppe" => $row['Artikelgruppe'],
"Artikelnummer" => $row['Artikelnummer'],
"EANNummer" => $row['EANNummer'],
"Bezeichnung" => $ArrBezeichnungen[ $row['Artikelnummer'] ],
//"Bezeichnung" => $row['Bezeichnung'],
//"Zusatz" => $row['Zusatz'],
//"Langtext" => getArtikelText( "AR", $row['Artikelnummer'] ), // getArtikelLangtext( $row['Artikelnummer'] )
"Mengeneinheit" => $row['Mengeneinheit'],
"Gewicht" => $row['Gewicht'],
"Preiseinheit" => $row['Preiseinheit'],
"LosgroesseVerkauf" => $row['LosgroesseVerkauf'],
"AnzahlProPalett" => getAnzahlProPalett( $row['Artikelnummer'], $row['LosgroesseVerkauf'] ),
"PalettenGroesse" => getPalettenGroesse( $row['Artikelnummer'] ),
"SSVerkauf" => $row['SSVerkauf'],
"Lagerbestand" => $LB
);
}
// SQL-Verbindung trennen
sqlsrv_close($conn);
// JSON-Array zurückgeben
return json_encode($ArrRS);
}
/////////////////////////////////////////////////////////
// getArtikelFremdsprachen
// liefert Array mit Artikelfremdsprachen zurück
// return array(
// "Artikelnummer" => array(
// "Sprache" => array(
// "Bezeichnung" => "text",
// "Zusatz" => "text",
// "Langtext" => "text",
// "Infotext" => "text"
// )
// )
// )
function getArtikelFremdsprachen() {
global $mssqlServer, $mssqlInstanz, $mssqlUser, $mssqlPass, $mssqlDB;
$serverName = $mssqlServer . "\\" . $mssqlInstanz;
$connectionInfo = array(
'Database' => $mssqlDB,
'UID' => $mssqlUser,
'PWD' => $mssqlPass,
'CharacterSet' => 'UTF-8',
);
$conn = sqlsrv_connect( $serverName, $connectionInfo);
if( !$conn ) die(log_msg( 'MSSQL Error: ' . print_r( sqlsrv_errors(), true) ));
//
$sql = "SELECT Sprache, Artikelnummer, Bezeichnung, Zusatz, Langtext FROM ARTBEZ ORDER BY Artikelnummer";
// SQL-Abrage starten
$stmt = sqlsrv_query( $conn, $sql );
if(!$stmt) die(log_msg('MSSQL Error: ' . print_r( sqlsrv_errors(), true)));
// SQL-Felddefinitionen laden
//$ArrFields = sqlsrv_field_metadata($stmt);
// Array für Daten erstellen
$ArrRS = array();
// Alle Datensätze abarbeiten
while( $row = sqlsrv_fetch_array( $stmt, SQLSRV_FETCH_ASSOC) ) {
$ArrRS[ $row['Artikelnummer'] ][ $row['Sprache'] ] = array(
"Bezeichnung" => $row['Bezeichnung'],
"Zusatz" => $row['Zusatz'],
"Langtext" => $row['Langtext'],
"Infotext" => ""
);
}
// SQL-Verbindung trennen
sqlsrv_close($conn);
// Array zurückgeben
return $ArrRS;
}
/*
/////////////////////////////////////////////////////////
//
//
function getArtikelLangtext( $Artikelnummer = "" ) {
//
$strLangText = "";
//
if ( $Artikelnummer != "" ) {
global $mssqlServer, $mssqlInstanz, $mssqlUser, $mssqlPass, $mssqlDB;
$serverName = $mssqlServer . "\\" . $mssqlInstanz;
$connectionInfo = array(
'Database' => $mssqlDB,
'UID' => $mssqlUser,
'PWD' => $mssqlPass,
'CharacterSet' => 'UTF-8',
);
$conn = sqlsrv_connect( $serverName, $connectionInfo);
if( !$conn ) die(log_msg( 'MSSQL Error: ' . print_r( sqlsrv_errors(), true) ));
//
$sBlobKey = "AR" . $Artikelnummer;
$sql = "SELECT BLOBKEY, TEXT FROM TEXT WHERE BLOBKEY LIKE '" . $sBlobKey . "'";
// SQL-Abrage starten
$stmt = sqlsrv_query( $conn, $sql );
if(!$stmt) die(log_msg('MSSQL Error: ' . print_r( sqlsrv_errors(), true)));
//
$row = sqlsrv_fetch_array( $stmt, SQLSRV_FETCH_ASSOC);
//print_r( $row );
if ( $row ) {
$strLangText = $row["TEXT"];
}
// SQL-Verbindung trennen
sqlsrv_close($conn);
}
//
return( $strLangText );
}
*/
/////////////////////////////////////////////////////////
// liefert Artikelzusatztext aus Tabelle TEXT zurück
// $Type = AI (Info), AR (Langtext), AS (Bestelltext)
function getArtikelText( $Type = "", $Artikelnummer = "" ) {
//
$strText = "";
if ( $Type == "" ) {
return( "" );
}
//
if ( $Artikelnummer != "" ) {
global $mssqlServer, $mssqlInstanz, $mssqlUser, $mssqlPass, $mssqlDB;
$serverName = $mssqlServer . "\\" . $mssqlInstanz;
$connectionInfo = array(
'Database' => $mssqlDB,
'UID' => $mssqlUser,
'PWD' => $mssqlPass,
'CharacterSet' => 'UTF-8',
);
$conn = sqlsrv_connect( $serverName, $connectionInfo);
if( !$conn ) die(log_msg( 'MSSQL Error: ' . print_r( sqlsrv_errors(), true) ));
//
$sBlobKey = $Type . $Artikelnummer;
$sql = "SELECT BLOBKEY, TEXT FROM TEXT WHERE BLOBKEY LIKE '" . $sBlobKey . "'";
// SQL-Abrage starten
$stmt = sqlsrv_query( $conn, $sql );
if(!$stmt) die(log_msg('MSSQL Error: ' . print_r( sqlsrv_errors(), true)));
//
$row = sqlsrv_fetch_array( $stmt, SQLSRV_FETCH_ASSOC);
//print_r( $row );
if ( $row ) {
$strText = $row["TEXT"];
}
// SQL-Verbindung trennen
sqlsrv_close($conn);
}
//
return( $strText );
}
/////////////////////////////////////////////////////////
//
// Liefert die Anzahl pro Palette
function getAnzahlProPalett( $Artikelnummer = "", $LosgroesseVerkauf = 0 ) {
//
$iAnzahl = 0;
//
if ( $Artikelnummer != "" && $LosgroesseVerkauf > 0 ) {
global $mssqlServer, $mssqlInstanz, $mssqlUser, $mssqlPass, $mssqlDB;
$serverName = $mssqlServer . "\\" . $mssqlInstanz;
$connectionInfo = array(
'Database' => $mssqlDB,
'UID' => $mssqlUser,
'PWD' => $mssqlPass,
'CharacterSet' => 'UTF-8',
);
$conn = sqlsrv_connect( $serverName, $connectionInfo);
if( !$conn ) die(log_msg( 'MSSQL Error: ' . print_r( sqlsrv_errors(), true) ));
//
$sql = "SELECT * FROM MENGUM WHERE Artikel LIKE '" . $Artikelnummer . "'";
// SQL-Abrage starten
$stmt = sqlsrv_query( $conn, $sql );
if(!$stmt) die(log_msg('MSSQL Error: ' . print_r( sqlsrv_errors(), true)));
//
$row = sqlsrv_fetch_array( $stmt, SQLSRV_FETCH_ASSOC);
//print_r( $row );
if ( $row ) {
// $row["Basis"];
if ( $row["Basis"] > 0 && $row["Faktor"] > 0 ) {
$iAnzahl = $row["Basis"] / $row["Faktor"] / $LosgroesseVerkauf;
}
}
// SQL-Verbindung trennen
sqlsrv_close($conn);
}
//
return( $iAnzahl );
}
/////////////////////////////////////////////////////////
//
// Liefert die Grösse des Palettes
function getPalettenGroesse( $Artikelnummer = "" ) {
//
$dblGroesse = 0;
//
if ( $Artikelnummer != "" ) {
global $mssqlServer, $mssqlInstanz, $mssqlUser, $mssqlPass, $mssqlDB;
$serverName = $mssqlServer . "\\" . $mssqlInstanz;
$connectionInfo = array(
'Database' => $mssqlDB,
'UID' => $mssqlUser,
'PWD' => $mssqlPass,
'CharacterSet' => 'UTF-8',
);
$conn = sqlsrv_connect( $serverName, $connectionInfo);
if( !$conn ) die(log_msg( 'MSSQL Error: ' . print_r( sqlsrv_errors(), true) ));
//
//$sql = "SELECT * FROM MENGUM WHERE Artikel LIKE '" . $Artikelnummer . "' AND Shopmengenbasis = 1";
$sql = "SELECT * FROM MENGUM WHERE Artikel = '" . $Artikelnummer . "' AND Shopmengenbasis = 1";
// SQL-Abrage starten
$stmt = sqlsrv_query( $conn, $sql );
if(!$stmt) die(log_msg('MSSQL Error: ' . print_r( sqlsrv_errors(), true)));
//
$row = sqlsrv_fetch_array( $stmt, SQLSRV_FETCH_ASSOC);
//print_r( $row );
if ( $row ) {
// $row["Basis"];
if ( $row["Basis"] > 0 && $row["Faktor"] > 0 ) {
$dblGroesse = $row["Basis"] / $row["Faktor"];
}
}
// SQL-Verbindung trennen
sqlsrv_close($conn);
}
//
return( $dblGroesse );
}
/////////////////////////////////////////////////////////
// getLagerbestand
// liefert Array mit Lagerbestand über alle Artikel zurück
function getLagerbestand() {
global $mssqlServer, $mssqlInstanz, $mssqlUser, $mssqlPass, $mssqlDB;
$serverName = $mssqlServer . "\\" . $mssqlInstanz;
$connectionInfo = array(
'Database' => $mssqlDB,
'UID' => $mssqlUser,
'PWD' => $mssqlPass,
'CharacterSet' => 'UTF-8',
);
$conn = sqlsrv_connect( $serverName, $connectionInfo);
if( !$conn ) die(log_msg( 'MSSQL Error: ' . print_r( sqlsrv_errors(), true) ));
//
$sql = "SELECT Artikelnummer, sum(Bestand) AS LB FROM LAGERBESTAND WHERE Bestand > 0 GROUP BY Artikelnummer";
// SQL-Abrage starten
$stmt = sqlsrv_query( $conn, $sql );
if(!$stmt) die(log_msg('MSSQL Error: ' . print_r( sqlsrv_errors(), true)));
// SQL-Felddefinitionen laden
//$ArrFields = sqlsrv_field_metadata($stmt);
// Array für Daten erstellen
$ArrRS = array();
// Alle Datensätze abarbeiten
while( $row = sqlsrv_fetch_array( $stmt, SQLSRV_FETCH_ASSOC) ) {
$ArrRS[ $row['Artikelnummer'] ] = $row['LB'];
}
// SQL-Verbindung trennen
sqlsrv_close($conn);
// Array zurückgeben
return $ArrRS;
}
//
$e->register(
'getArtikelliste', // function name of the service
array( // input arguments
),
array( // Test-Funktion
'return'=>'string'
),
'liefert Artikelliste (inkl. Lagerbestand)'
);
/////////////////////////////////////////////////////////
//
// getArtikelZubehoer :: liefert alle Zubehör-Artikel inkl. "Vater"-Artikel (Bezugs-Artikel)
function getArtikelZubehoer() {
//
global $mssqlServer, $mssqlInstanz, $mssqlUser, $mssqlPass, $mssqlDB;
//
$ArrBezeichnungen = getArtikelFremdsprachen();
//
$serverName = $mssqlServer . "\\" . $mssqlInstanz;
$connectionInfo = array(
'Database' => $mssqlDB,
'UID' => $mssqlUser,
'PWD' => $mssqlPass,
'CharacterSet' => 'UTF-8',
);
$conn = sqlsrv_connect( $serverName, $connectionInfo);
if( !$conn ) die(log_msg( 'MSSQL Error: ' . print_r( sqlsrv_errors(), true) ));
//
$sqlArtikel = "SELECT
ZUBEHOER.ZUBEHOER_ID, ZUBEHOER.Mengenformel, ZUBEHOER.Einfuegemodus,
V.ART_ID AS Vater_ART_ID, V.Artikelnummer AS Vater_Artikelnummer,
C.ART_ID, C.Artikelnummer, ZUBEHOER.Mengeneinheit, C.Bezeichnung, C.Zusatz, C.Artikelgruppe, C.EANNummer, C.Gewicht, C.Preiseinheit, C.LosgroesseVerkauf, C.SSVerkauf
FROM ZUBEHOER
LEFT JOIN ART V ON V.Artikelnummer = ZUBEHOER.ArtArtikelnummer
LEFT JOIN ART C ON C.Artikelnummer = ZUBEHOER.Artikelnummer
WHERE V.ShopAktiv = 1";
// SQL-Abrage starten
$stmt = sqlsrv_query( $conn, $sqlArtikel );
if(!$stmt) die(log_msg('MSSQL Error: ' . print_r( sqlsrv_errors(), true)));
// Array für Daten erstellen
$ArrRS = array();
// Alle Datensätze abarbeiten
while( $row = sqlsrv_fetch_array( $stmt, SQLSRV_FETCH_ASSOC) ) {
//
$ArrBezeichnungen[ $row['Artikelnummer'] ][ "DE" ] = array(
"Bezeichnung" => $row['Bezeichnung'],
"Zusatz" => $row['Zusatz']
);
//
$ArrRS[] = array(
//
"Vater_ART_ID" => $row['Vater_ART_ID'],
"Vater_Artikelnummer" => $row['Vater_Artikelnummer'],
//
"ZUBEHOER_ID" => $row['ZUBEHOER_ID'],
"Mengenformel" => $row['Mengenformel'],
"Einfuegemodus" => $row['Einfuegemodus'],
//
"ART_ID" => $row['ART_ID'],
"Artikelnummer" => $row['Artikelnummer'],
"Artikelgruppe" => $row['Artikelgruppe'],
"Mengeneinheit" => $row['Mengeneinheit'],
"Bezeichnung" => $ArrBezeichnungen[ $row['Artikelnummer'] ],
"EANNummer" => $row['EANNummer'],
"Gewicht" => $row['Gewicht'],
"Preiseinheit" => $row['Preiseinheit'],
"LosgroesseVerkauf" => $row['LosgroesseVerkauf'],
"AnzahlProPalett" => getAnzahlProPalett( $row['Artikelnummer'], $row['LosgroesseVerkauf'] ),
"PalettenGroesse" => getPalettenGroesse( $row['Artikelnummer'] ),
"SSVerkauf" => $row['SSVerkauf'],
);
}
// SQL-Verbindung trennen
sqlsrv_close($conn);
// JSON-Array zurückgeben
return json_encode($ArrRS);
}
//
$e->register(
'getArtikelZubehoer', // function name of the service
array( // input arguments
),
array( // Test-Funktion
'return'=>'string'
),
'liefert Zubehör-Artikelliste'
);
/////////////////////////////////////////////////////////
// getArtikelgruppen
// liefert alle Artikelgruppen zurück
function getArtikelgruppen() {
//
global $mssqlServer, $mssqlInstanz, $mssqlUser, $mssqlPass, $mssqlDB;
//
$ArrBezeichnungen = getArtikelgruppenFremdsprachen();
$serverName = $mssqlServer . "\\" . $mssqlInstanz;
$connectionInfo = array(
'Database' => $mssqlDB,
'UID' => $mssqlUser,
'PWD' => $mssqlPass,
'CharacterSet' => 'UTF-8',
);
$conn = sqlsrv_connect( $serverName, $connectionInfo);
if( !$conn ) die(log_msg( 'MSSQL Error: ' . print_r( sqlsrv_errors(), true) ));
//
$sql = "SELECT * FROM GRUPPEN WHERE Id LIKE 'AG'";
// SQL-Abrage starten
$stmt = sqlsrv_query( $conn, $sql );
if(!$stmt) die(log_msg('MSSQL Error: ' . print_r( sqlsrv_errors(), true)));
// SQL-Felddefinitionen laden
$ArrFields = sqlsrv_field_metadata($stmt);
// Array für Daten erstellen
$ArrRS = array();
// Alle Datensätze abarbeiten
while( $row = sqlsrv_fetch_array( $stmt, SQLSRV_FETCH_ASSOC) ) {
//
$ArrBezeichnungen[ $row['Nummer'] ][ "DE" ] = array(
"Bezeichnung" => $row['Bezeichnung']
);
$ArrRS[] = array(
"GRUPPEN_ID" => $row['GRUPPEN_ID'],
"Nummer" => $row['Nummer'],
"Bezeichnung" => $ArrBezeichnungen[ $row['Nummer'] ],
//"Bezeichnung" => $row['Bezeichnung'],
"Parent" => $row['Parent']
);
}
// SQL-Verbindung trennen
sqlsrv_close($conn);
// JSON-Array zurückgeben
return json_encode($ArrRS);
}
//
$e->register(
'getArtikelgruppen', // function name of the service
array( // input arguments
),
array( // Test-Funktion
'return'=>'string'
),
'liefert Artikelgruppen zurück'
);
/////////////////////////////////////////////////////////
// getArtikelgruppenFremdsprachen
// liefert Array mit Artikelgruppenfremdsprachen zurück
// return array(
// "nummer" => array(
// "Sprache" => array(
// "Bezeichnung" => "Bezeichnung"
// )
// )
// )
function getArtikelgruppenFremdsprachen() {
global $mssqlServer, $mssqlInstanz, $mssqlUser, $mssqlPass, $mssqlDB;
$serverName = $mssqlServer . "\\" . $mssqlInstanz;
$connectionInfo = array(
'Database' => $mssqlDB,
'UID' => $mssqlUser,
'PWD' => $mssqlPass,
'CharacterSet' => 'UTF-8',
);
$conn = sqlsrv_connect( $serverName, $connectionInfo);
if( !$conn ) die(log_msg( 'MSSQL Error: ' . print_r( sqlsrv_errors(), true) ));
//
$sql = "SELECT Sprache, Nummer, Bezeichnung FROM FREMDBEZ WHERE Typ LIKE 'AG'";
// SQL-Abrage starten
$stmt = sqlsrv_query( $conn, $sql );
if(!$stmt) die(log_msg('MSSQL Error: ' . print_r( sqlsrv_errors(), true)));
// SQL-Felddefinitionen laden
//$ArrFields = sqlsrv_field_metadata($stmt);
// Array für Daten erstellen
$ArrRS = array();
// Alle Datensätze abarbeiten
while( $row = sqlsrv_fetch_array( $stmt, SQLSRV_FETCH_ASSOC) ) {
$ArrRS[ $row['Nummer'] ][ $row['Sprache'] ] = array(
"Bezeichnung" => $row['Bezeichnung']
);
}
// SQL-Verbindung trennen
sqlsrv_close($conn);
// Array zurückgeben
return $ArrRS;
}
/////////////////////////////////////////////////////////
// getKundenArtikelPreise();
// liefert alle Preise für Alle Artikel & Kunden als Json-Objekt zurück
function getKundenArtikelPreise() {
// Array für Daten erstellen
$ArrDaten = array();
global $mssqlServer, $mssqlInstanz, $mssqlUser, $mssqlPass, $mssqlDB;
$serverName = $mssqlServer . "\\" . $mssqlInstanz;
$connectionInfo = array(
'Database' => $mssqlDB,
'UID' => $mssqlUser,
'PWD' => $mssqlPass,
'CharacterSet' => 'UTF-8',
);
$conn = sqlsrv_connect( $serverName, $connectionInfo);
if( !$conn ) die(log_msg( 'MSSQL Error: ' . print_r( sqlsrv_errors(), true) ));
//
//$sqlPreise = "SELECT * FROM [dbo].[FiMA_GetArtikelShoppreise](DEFAULT) P";
$sqlPreise = "SELECT * FROM [dbo].[FiMA_GetArtikelShoppreise]('" . date('Y-m-d') . "T00:00:00') P";
//$sqlArtikel = "SELECT Artikelnummer FROM dbo.ART WHERE ShopAktiv = 1 AND Artikelnummer LIKE '1590.01'";
// SQL-Abrage starten
$stmtPreise = sqlsrv_query( $conn, $sqlPreise );
if(!$stmtPreise) die(log_msg('MSSQL Error: ' . print_r( sqlsrv_errors(), true)));
// Alle Preise
while( $Preise = sqlsrv_fetch_array( $stmtPreise, SQLSRV_FETCH_ASSOC) ) {
$ArrDaten[] = array(
"Kundennummer" => $Preise['Kundennummer'],
"Artikelnummer" => $Preise['Artikelnummer'],
"Menge" => $Preise['Menge'],
"Preis" => $Preise['Preis']
);
}
// SQL-Verbindung trennen
sqlsrv_close($conn);
//
//return $ArrDaten;
return json_encode($ArrDaten);
}
//
$e->register(
'getKundenArtikelPreise',
array(
),
array(
'return'=>'string'
),
'liefert alle Preise zurück'
);
/////////////////////////////////////////////////////////
//
// liefert alle Artikelpreise für Alle Kunden (ShopAktiv = 1) als Json-Objekt
// Achtung :: Funktion kann lange dauern >> TODO: Funktion wenn optimieren
function getKundenArtikelPreis( $ArtikelNr = "", $KundenNr = "" ) {
// Array für Daten erstellen
$ArrDaten = array();
global $mssqlServer, $mssqlInstanz, $mssqlUser, $mssqlPass, $mssqlDB;
$serverName = $mssqlServer . "\\" . $mssqlInstanz;
$connectionInfo = array(
'Database' => $mssqlDB,
'UID' => $mssqlUser,
'PWD' => $mssqlPass,
'CharacterSet' => 'UTF-8',
);
$conn = sqlsrv_connect( $serverName, $connectionInfo);
if( !$conn ) die(log_msg( 'MSSQL Error: ' . print_r( sqlsrv_errors(), true) ));
//
if ( $ArtikelNr != "" ) {
// Nur bestimmten Artikel
$sqlArtikel = "SELECT Artikelnummer FROM dbo.ART WHERE ShopAktiv = 1 AND Artikelnummer LIKE '" . $ArtikelNr . "'";
} else {
// Alle Artikel
$sqlArtikel = "SELECT Artikelnummer FROM dbo.ART WHERE ShopAktiv = 1";
}
//$sqlArtikel = "SELECT Artikelnummer FROM dbo.ART WHERE ShopAktiv = 1 AND Artikelnummer LIKE '1590.01'";
// SQL-Abrage starten
$stmtArtikel = sqlsrv_query( $conn, $sqlArtikel );
if(!$stmtArtikel) die(log_msg('MSSQL Error: ' . print_r( sqlsrv_errors(), true)));
// Alle ShopAktiv-Artikel abarbeiten
while( $Artikel = sqlsrv_fetch_array( $stmtArtikel, SQLSRV_FETCH_ASSOC) ) {
//
if ( $KundenNr != "" ) {
// Nur bestimmten Kunden
$sqlKunden = "SELECT Nummer AS Kundennummer FROM dbo.Kunden WHERE ShopAktiv = 1 AND Inaktiv = 0 AND Nummer LIKE '" . $KundenNr . "'";
} else {
// Alle Kunden
$sqlKunden = "SELECT Nummer AS Kundennummer FROM dbo.Kunden WHERE ShopAktiv = 1 AND Inaktiv = 0";
}
// SQL-Abrage starten
$stmtKunden = sqlsrv_query( $conn, $sqlKunden );
if(!$stmtKunden) die(log_msg('MSSQL Error: ' . print_r( sqlsrv_errors(), true)));
// Alle ShopAktiv-Kunden abarbeiten
while( $Kunde = sqlsrv_fetch_array( $stmtKunden, SQLSRV_FETCH_ASSOC) ) {
// Kunden-Artikel-Preis setzen :: Bester Preis
$ArrDaten[ $Artikel['Artikelnummer'] ][ $Kunde['Kundennummer'] ] = getPreis( $Artikel['Artikelnummer'], $Kunde['Kundennummer'] );
}
}
// SQL-Verbindung trennen
sqlsrv_close($conn);
//
//return $ArrDaten;
return json_encode($ArrDaten);
}
//
$e->register(
'getKundenArtikelPreis',
array(
'ArtikelNr' => 'string',
'KundenNr' => 'string'
),
array(
'return'=>'string'
),
'liefert Preise (zu bestimmten Artikel für bestimmten Kunden)'
);
/////////////////////////////////////////////////////////
//
// liefert Alle Artikelpreise für diesen Kunden und den ausgewählten Artikel
function getPreis( $ArtikelNr = "", $KundenNr = "" ) {
// Array für Daten erstellen
$ArrRS = array(
"Preis" => 0
);
if ( $ArtikelNr != "" AND $KundenNr != "" ) {
global $mssqlServer, $mssqlInstanz, $mssqlUser, $mssqlPass, $mssqlDB;
$serverName = $mssqlServer . "\\" . $mssqlInstanz;
$connectionInfo = array(
'Database' => $mssqlDB,
'UID' => $mssqlUser,
'PWD' => $mssqlPass,
'CharacterSet' => 'UTF-8',
);
$conn = sqlsrv_connect( $serverName, $connectionInfo);
if( !$conn ) die(log_msg( 'MSSQL Error: ' . print_r( sqlsrv_errors(), true) ));
//
$sql = "SELECT MIN(Endpreis) AS Preis
FROM dbo.FiMA_GetArtikelVerkaufspreis('" . $ArtikelNr . "', '" . $KundenNr . "', DEFAULT, DEFAULT)
WHERE Endpreis > 0 AND Menge = 0";
// SQL-Abrage starten
$stmt = sqlsrv_query( $conn, $sql );
if(!$stmt) die(log_msg('MSSQL Error: ' . print_r( sqlsrv_errors(), true)));
// Besten Preis zurückgeben
$ArrRS = sqlsrv_fetch_array( $stmt, SQLSRV_FETCH_ASSOC);
// SQL-Verbindung trennen
sqlsrv_close($conn);
}
//
return $ArrRS;
}
/////////////////////////////////////////////////////////
// getArtikelUVP();
// liefert alle UVP (Preise) zu allen Artikeln als Json-Objekt zurück
function getArtikelUVP() {
// Array für Daten erstellen
$ArrDaten = array();
global $mssqlServer, $mssqlInstanz, $mssqlUser, $mssqlPass, $mssqlDB;
$serverName = $mssqlServer . "\\" . $mssqlInstanz;
$connectionInfo = array(
'Database' => $mssqlDB,
'UID' => $mssqlUser,
'PWD' => $mssqlPass,
'CharacterSet' => 'UTF-8',
);
$conn = sqlsrv_connect( $serverName, $connectionInfo);
if( !$conn ) die(log_msg( 'MSSQL Error: ' . print_r( sqlsrv_errors(), true) ));
//
$sqlPreise = "SELECT Artikelnummer, Menge, Preis FROM [dbo].[FiMA_GetArtikelStandardShoppreise](DEFAULT)";
//$sqlArtikel = "SELECT Artikelnummer FROM dbo.ART WHERE ShopAktiv = 1 AND Artikelnummer LIKE '1590.01'";
// SQL-Abrage starten
$stmtPreise = sqlsrv_query( $conn, $sqlPreise );
if(!$stmtPreise) die(log_msg('MSSQL Error: ' . print_r( sqlsrv_errors(), true)));
// Alle Preise
while( $Preise = sqlsrv_fetch_array( $stmtPreise, SQLSRV_FETCH_ASSOC) ) {
$ArrDaten[] = array(
"Artikelnummer" => $Preise['Artikelnummer'],
"Menge" => $Preise['Menge'],
"Preis" => $Preise['Preis']
);
}
// SQL-Verbindung trennen
sqlsrv_close($conn);
//
//return $ArrDaten;
return json_encode($ArrDaten);
}
//
$e->register(
'getArtikelUVP',
array(
),
array(
'return'=>'string'
),
'liefert UVP (Preise) zurück'
);
/////////////////////////////////////////////////////////
// getArtikelDokumente
// liefert alle Artikeldokumente zurück (Array) :: Keine Dateien
function getArtikelDokumente() {
// Array für Daten erstellen
$ArrRS = array();
global $mssqlServer, $mssqlInstanz, $mssqlUser, $mssqlPass, $mssqlDB;
$serverName = $mssqlServer . "\\" . $mssqlInstanz;
$connectionInfo = array(
'Database' => $mssqlDB,
'UID' => $mssqlUser,
'PWD' => $mssqlPass,
'CharacterSet' => 'UTF-8',
);
$conn = sqlsrv_connect( $serverName, $connectionInfo);
if( !$conn ) die(log_msg( 'MSSQL Error: ' . print_r( sqlsrv_errors(), true) ));
//
$sql = "SELECT
xdateien.xdateien_ID, xdateien.nummer, xdateien._SPRACHE, ART.ART_ID,
xdateien._AUSGABEART, xBezeichnungAusgabeart.nummer AS DOK_UEBERSCHRIFT_NUMMER, xBezeichnungAusgabeart._BEZEICHNUNG1 AS DOK_UEBERSCHRIFT,
xdateien._Artikel, xdateien._DATEI, xdateien._MEDIATYPE, xdateien._BESCHREIBUNG, xdateien._AUSGABE
FROM xdateien
LEFT JOIN ART ON ART.Artikelnummer = xdateien._ARTIKEL
LEFT JOIN xBezeichnungAusgabeart ON xBezeichnungAusgabeart.nummer = xdateien._BEZEICHNUNG
WHERE ART_ID > 0";
//echo $sql;
// SQL-Abrage starten
$stmt = sqlsrv_query( $conn, $sql );
if(!$stmt) die(log_msg('MSSQL Error: ' . print_r( sqlsrv_errors(), true)));
// Alle Datensätze abarbeiten
while( $row = sqlsrv_fetch_array( $stmt, SQLSRV_FETCH_ASSOC) ) {
$ArrRS[] = array(
"ART_ID" => $row['ART_ID'],
"_Artikel" => $row['_Artikel'],
"xdateien_ID" => $row['xdateien_ID'],
"nummer" => $row['nummer'],
"_SPRACHE" => $row['_SPRACHE'],
"_DATEI" => $row['_DATEI'],
"_MEDIATYPE" => $row['_MEDIATYPE'],
"_AUSGABEART" => $row['_AUSGABEART'],
"DOK_UEBERSCHRIFT_NUMMER" => $row['DOK_UEBERSCHRIFT_NUMMER'],
"DOK_UEBERSCHRIFT" => $row['DOK_UEBERSCHRIFT'],
"_BESCHREIBUNG" => $row['_BESCHREIBUNG'],
"_AUSGABE" => $row['_AUSGABE']
);
}
// SQL-Verbindung trennen
sqlsrv_close($conn);
//
return json_encode($ArrRS);
}
//
$e->register(
'getArtikelDokumente', // function name of the service
array( // input arguments
),
array( //
'return'=>'string'
),
'liefert Liste mit Artikeldokumenten zurück'
);
/////////////////////////////////////////////////////////
// downloadDokument
// lädt ein Artikeldokument herunter :: Datei ist Base64 encodiert
function downloadDokument( $xDateienID = 0 ) {
// Array für Daten erstellen
$ArrRS = array();
//
if ( $xDateienID > 0 ) {
global $mssqlServer, $mssqlInstanz, $mssqlUser, $mssqlPass, $mssqlDB;
$serverName = $mssqlServer . "\\" . $mssqlInstanz;
$connectionInfo = array(
'Database' => $mssqlDB,
'UID' => $mssqlUser,
'PWD' => $mssqlPass,
'CharacterSet' => 'UTF-8',
);
$conn = sqlsrv_connect( $serverName, $connectionInfo);
if( !$conn ) die(log_msg( 'MSSQL Error: ' . print_r( sqlsrv_errors(), true) ));
//
$sql = "SELECT * FROM xdateien WHERE xdateien_ID = " . $xDateienID;
//echo $sql;
// SQL-Abrage starten
$stmt = sqlsrv_query( $conn, $sql );
if(!$stmt) die(log_msg('MSSQL Error: ' . print_r( sqlsrv_errors(), true)));
// Alle Datensätze abarbeiten
while( $row = sqlsrv_fetch_array( $stmt, SQLSRV_FETCH_ASSOC) ) {
$filename = iconv('utf-8', 'cp1252', $row["_DATEI"]);
if (file_exists( $filename )) {
$current = file_get_contents($filename);
$FILE_CONTENT = base64_encode($current);
$ArrRS[] = array(
"xdateien_ID" => $row['xdateien_ID'],
"_DATEI" => $row['_DATEI'],
"_MEDIATYPE" => $row['_MEDIATYPE'],
"_BESCHREIBUNG" => $row['_BESCHREIBUNG'],
"FILE_CONTENT" => $FILE_CONTENT
);
}
}
// SQL-Verbindung trennen
sqlsrv_close($conn);
}
//
return json_encode($ArrRS);
}
//
$e->register(
'downloadDokument', // function name of the service
array( // input arguments
'xdateien_ID' => 'string'
),
array( //
'return'=>'string'
),
'ladet Artikeldokumente eines bestimmten Artikels zurück (base64 encodiert)'
);
/////////////////////////////////////////////////////////
// getBilderByBlobkey
// liefert Bild(er) abhand vom Blobkey > Bilder sind Base64 encodiert
function getBilderByBlobkey($Blobkey = "") {
// Array für Daten erstellen
$ArrBilder = array();
global $mssqlServer, $mssqlInstanz, $mssqlUser, $mssqlPass, $mssqlDB;
log_msg(__FUNCTION__ . '($Blobkey="' . $Blobkey . '")' );
$serverName = $mssqlServer . "\\" . $mssqlInstanz;
$connectionInfo = array( "Database"=>$mssqlDB, "UID"=>$mssqlUser, "PWD"=>$mssqlPass, "CharacterSet"=>"UTF-8");
$conn = sqlsrv_connect( $serverName, $connectionInfo);
if( !$conn ) die(log_msg( 'MSSQL Error: ' . print_r( sqlsrv_errors(), true) ));
//
if ($Blobkey != "") {
// Nur bestimmtes Bild
$sql = "SELECT * FROM dbo.BILD WHERE Blobkey = '" . escapeMssqlValue($Blobkey) . "' ORDER BY Ordnung ASC";
// SQL-Abrage starten
$stmt = sqlsrv_query( $conn, $sql );
if(!$stmt) die(log_msg('MSSQL Error: ' . print_r( sqlsrv_errors(), true)));
// Alle Datensätze abarbeiten
while ($row = sqlsrv_fetch_array($stmt, SQLSRV_FETCH_ASSOC)) {
// Bild als Datei auf dem Server zwischenspeichern
$ArrBild = getImageContent( $row['Bild'] );
if ( $ArrBild ) {
//
$ArrBilder[] = array(
"BILD_ID" => $row['BILD_ID'],
"Blobkey" => $row['Blobkey'],
"Dateiname" => $row['Dateiname'],
"Beschreibung" => $row['Beschreibung'],
"Ordnung" => $row['Ordnung'],
"FILE_CONTENT" => base64_encode( $ArrBild["FILE_CONTENT"] ),
"resized" => $ArrBild["resized"],
"img_size" => $ArrBild["contentsize"],
"img_type" => $ArrBild["image_type"],
"contenttype" => $ArrBild["contenttype"]
);
}
}
}
// JSON Array zurückgeben
return json_encode($ArrBilder);
}
//
$e->register(
'getBilderByBlobkey',
array( // input arguments
'Blobkey' => 'string'
),
array( //
'return' => 'string'
),
'liefert Bilder (base64 encodiert)'
);
/////////////////////////////////////////////////////////
// getEcomBilderByBlobkey
// liefert Bild(er) von der ECOMBILD-Tabelle abhand vom Blobkey (AR, AG) & Schluessel > Bilder sind Base64 encodiert
function getEcomBilderByBlobkey($Blobkey = "", $Schluessel = "") {
// Array für Daten erstellen
$ArrBilder = array();
global $mssqlServer, $mssqlInstanz, $mssqlUser, $mssqlPass, $mssqlDB;
log_msg(__FUNCTION__ . '($Blobkey="' . $Blobkey . '", $Schluessel="' . $Schluessel . '")' );
$serverName = $mssqlServer . "\\" . $mssqlInstanz;
$connectionInfo = array( "Database"=>$mssqlDB, "UID"=>$mssqlUser, "PWD"=>$mssqlPass, "CharacterSet"=>"UTF-8");
$conn = sqlsrv_connect( $serverName, $connectionInfo);
if( !$conn ) die(log_msg( 'MSSQL Error: ' . print_r( sqlsrv_errors(), true) ));
//
if ($Blobkey != "" && $Schluessel != "") {
// Nur bestimmtes Bild
$sql = "SELECT * FROM dbo.ECOMBILD WHERE Blobkey = '" . escapeMssqlValue($Blobkey) . "' AND Schluessel = '" . escapeMssqlValue($Schluessel) . "'";
// SQL-Abrage starten
$stmt = sqlsrv_query( $conn, $sql );
if(!$stmt) die(log_msg('MSSQL Error: ' . print_r( sqlsrv_errors(), true)));
// Alle Datensätze abarbeiten
while ($row = sqlsrv_fetch_array($stmt, SQLSRV_FETCH_ASSOC)) {
// Bild als Datei auf dem Server zwischenspeichern
$ArrBild = getImageContent( $row['Bild'] );
if ( $ArrBild ) {
//
$ArrBilder[] = array(
"ECOMBILD_ID" => $row['ECOMBILD_ID'],
"Blobkey" => $row['BlobKey'] . $row['Schluessel'],
"Bildname" => $row['Bildname'],
"FILE_CONTENT" => base64_encode( $ArrBild["FILE_CONTENT"] ),
"resized" => $ArrBild["resized"],
"img_size" => $ArrBild["contentsize"],
"img_type" => $ArrBild["image_type"],
"contenttype" => $ArrBild["contenttype"]
);
}
}
}
// JSON Array zurückgeben
return json_encode($ArrBilder);
}
//
$e->register(
'getEcomBilderByBlobkey',
array( // input arguments
'Blobkey' => 'string',
'Schluessel' => 'string'
),
array( //
'return' => 'string'
),
'liefert Bilder (base64 encodiert)'
);
// liefert das Bild-Objekt zurück (inkl. Grössenanpassung)
function getImageContent( $img ) {
$tmpfname = tempnam(sys_get_temp_dir(), 'BILD');
file_put_contents($tmpfname, $img);
// Bild-Parameter von Original abrufen
$contentsize = filesize($tmpfname);
$contenttype = null;
if ( function_exists('finfo_open') ) {
$finfo = finfo_open( FILEINFO_MIME_TYPE );
$contenttype = finfo_file($finfo, $tmpfname);
finfo_close( $finfo );
} else if ( function_exists('mime_content_type') ) {
$contenttype = mime_content_type( $tmpfname );
} else {
$contenttype = 'application/octet-stream';
log_msg('Mime-Typ kann nicht ermittelt werden.');
}
//
list($width, $height, $image_type) = getimagesize($tmpfname);
// Bild verkleinern
if ( $width > IMG_MAX_WIDTH || $height > IMG_MAX_HEIGHT ) {
$resized_file = TEMP_PATH . DIRECTORY_SEPARATOR . basename($tmpfname);
resizeImage($tmpfname, $resized_file );
// Bild-Parameter von angepasstem Bild abrufen
$contentsize = filesize($resized_file);
$contenttype = null;
if ( function_exists('finfo_open') ) {
$finfo = finfo_open( FILEINFO_MIME_TYPE );
$contenttype = finfo_file($finfo, $resized_file);
finfo_close( $finfo );
} else if ( function_exists('mime_content_type') ) {
$contenttype = mime_content_type( $resized_file );
} else {
$contenttype = 'application/octet-stream';
log_msg('Mime-Typ kann nicht ermittelt werden.');
}
$imgSource = file_get_contents( $resized_file );
unlink( $resized_file ); // angepasstes Bild löschen
$resized = 1;
} else {
$imgSource = $img;
$resized = 0;
}
// Bild löschen
unlink($tmpfname); // Original-Bild löschen
// leere Temp-Verzeichnisse
cleanTempFolder( sys_get_temp_dir() );
cleanTempFolder( TEMP_PATH );
//
$ArrDaten = array(
"FILE_CONTENT" => $imgSource,
"resized" => $resized,
"img_size" => $contentsize,
"img_type" => $image_type,
//"contentsize" => $contentsize,
"contenttype" => $contenttype
);
return( $ArrDaten );
}
function resizeImage($OriginalImage, $ThumbImage, $max_width = 800, $max_height = 600) {
list($width, $height, $image_type) = getimagesize($OriginalImage);
switch ($image_type) {
case 1:
$img = imagecreatefromgif($OriginalImage);
break;
case 2:
$img = imagecreatefromjpeg($OriginalImage);
break;
case 3:
$img = imagecreatefrompng($OriginalImage);
break;
default:
return '';
break;
}
$x_ratio = $max_width / $width;
$y_ratio = $max_height / $height;
if( ($width <= $max_width) && ($height <= $max_height) ){
$tn_width = $width;
$tn_height = $height;
} elseif (($x_ratio * $height) < $max_height){
$tn_height = ceil($x_ratio * $height);
$tn_width = $max_width;
} else {
$tn_width = ceil($y_ratio * $width);
$tn_height = $max_height;
}
$tmp_img = imagecreatetruecolor($tn_width, $tn_height);
if(($image_type == 1) OR ($image_type == 3)) {
imagealphablending($tmp_img, false);
imagesavealpha($tmp_img, true);
$transparent = imagecolorallocatealpha($tmp_img, 255, 255, 255, 127);
imagefilledrectangle($tmp_img, 0, 0, $tn_width, $tn_height, $transparent);
}
imagecopyresampled($tmp_img, $img, 0, 0, 0, 0, $tn_width, $tn_height, $width, $height);
switch ($image_type) {
case 1:
imagegif($tmp_img, "{$ThumbImage}"); break;
case 2:
imagejpeg($tmp_img, "{$ThumbImage}", 95); // best quality
break;
case 3:
imagepng($tmp_img, "{$ThumbImage}", -1); // Default Compression
break;
default:
echo '';
break;
}
return( "$ThumbImage" );
}
/////////////////////////////////////////////////////////
//
//
function cleanTempFolder( $temp_path = "", $ArrFileTypes = array("tmp") ) {
//
if ( $temp_path == "" ) {
return( false );
}
if ( is_array($ArrFileTypes) == false ) {
return( false );
}
if (is_dir($temp_path) == false ) {
return( false );
}
if ( count($ArrFileTypes) == 0 ) {
return( false );
}
//
if ($dh = opendir($temp_path)) {
//
while (($file = readdir($dh)) !== false) {
if ( in_array( getFileExt($file), $ArrFileTypes) ) {
//echo $file . "
";
unlink($temp_path . DIRECTORY_SEPARATOR . $file);
}
}
closedir($dh);
}
}
/////////////////////////////////////////////////////////
//
// gibt Dateierweiterung zurück (z.b. jpg, gif, png, ...)
function getFileExt($filename = "") {
return strtolower(substr(strrchr($filename,'.'),1));
}
/////////////////////////////////////////////////////////
// Legt einen neuen Beleg vom Typ $BelegTyp an und fügt die Positionen hinzu.
// @param string $BelegTyp Belegtyp (A-Angebot, F-Auftrag, L-Lieferschein, R-Rechnung, B-Bestellung, E-Eingangsrechnung)
// @param string $data Daten für Positionen (json-enkodiert)
// @return string Json-Objekt (Array) (BELEG_ID, Belegnummer, status)
function createBelegMitPositionen( $BelegTyp, $data ) {
//
log_msg(__FUNCTION__ . '($BelegTyp=' . var_export($BelegTyp, true) . ', $data=[...])' );
//
if (empty($BelegTyp)) {
die(log_msg(__FUNCTION__ . '(): $BelegTyp ist nicht gesetzt.'));
}
//
if (empty($data)) {
die(log_msg(__FUNCTION__ . '(): $data ist nicht gesetzt.'));
}
// Daten in Array umwandeln
$aData = unserialize($data);
//
if (!is_array($aData)) {
die(log_msg(__FUNCTION__ . '(): $data ist kein (serialisiertes) Array.'));
}
// Erstellt das COM Object XFakt.App Selectline
$objFakt = com_getObjFakt();
// Legt Beleg an mit Belegnummer (A-Angebot, F-Auftrag, L-Lieferschein, R-Rechnung, B-Bestellung, E-Eingangsrechnung)
try {
$SelectLineAuftrag = $objFakt->NeuerBelegAuto($BelegTyp);
} catch (Exception $e) {
log_msg($e->getMessage());
$error_msg = $objFakt->LetzterFehler();
log_msg(print_r($error_msg->Meldung, true));
die();
}
//
$Belegnummer = $SelectLineAuftrag->GetField('Belegnummer');
// Beleg über Belegnummer und Belegtyp wieder holen
$mssqlBeleg = json_decode( getBelegByBelegnummer($Belegnummer, $BelegTyp) );
//
if (count($mssqlBeleg) != 1) {
die(log_msg(__FUNCTION__ . "(): Beleg (Typ {$BelegTyp}) mit Belegnummer <{$Belegnummer}> nicht gefunden (obwohl wir den grade angelegt haben sollten!)."));
}
//
$oBeleg = $mssqlBeleg[0];
//
$aRetBeleg = array(
'BELEG_ID' => $oBeleg->BELEG_ID,
'Belegnummer' => $Belegnummer,
'Belegtyp' => $oBeleg->Belegtyp,
);
//
log_msg(__FUNCTION__ . "(): Beleg angelegt mit BELEG_ID #{$oBeleg->BELEG_ID}# | Belegnummer <{$Belegnummer}>");
//
$iModifiedFields = 0;
// Auftrags-Attribute setzen
foreach($aData as $key => $val) {
//
if($val === null) continue;
//
switch($key) {
case 'benutzer':
log_msg(__FUNCTION__ . '(): '.$key.' = "'.$val.'"');
$SelectLineAuftrag->PutField('UnserZeichen', $val);
$iModifiedFields++;
break;
case 'status_id':
$EDIStatus='';
if($val == 1) $EDIStatus='O';
if($val == 2) $EDIStatus='B';
if($val == 3) $EDIStatus='V';
log_msg(__FUNCTION__ . '(): '.$key.' = "'.$EDIStatus.'"');
if( $EDIStatus != '') $SelectLineAuftrag->PutField('EDIStatus', $EDIStatus);
$iModifiedFields++;
break;
case 'freiezahl3':
log_msg(__FUNCTION__ . '(): '.$key.' = "'.$val.'"');
$SelectLineAuftrag->PutField('FreieZahl3', $val);
$iModifiedFields++;
break;
case 'kundennummer':
log_msg(__FUNCTION__ . '(): '.$key.' = "'.$val.'"');
//log_msg($SelectLineAuftrag->GetField('Adressnummer'));
if( $val != $SelectLineAuftrag->GetField('Adressnummer') )
$SelectLineAuftrag->SetAdresse($val);
$iModifiedFields++;
break;
case 'interessentennummer':
log_msg(__FUNCTION__ . '(): '.$key.' = "'.$val.'"');
//log_msg($SelectLineAuftrag->GetField('Adressnummer'));
if( $val != $SelectLineAuftrag->GetField('Adressnummer') )
$SelectLineAuftrag->SetAdresse($val);
$iModifiedFields++;
break;
case 'name':
log_msg(__FUNCTION__ . '(): '.$key.' = "'.$val.'"');
$SelectLineAuftrag->SetIhrAuftrag($val);
$iModifiedFields++;
break;
case 'ansprechpartner':
log_msg(__FUNCTION__ . '(): '.$key.' = "'.$val.'"');
$SelectLineAuftrag->PutField('IhrZeichen', $val);
$iModifiedFields++;
break;
default:
// log_msg(__FUNCTION__ . '(): NOT IMPLEMENTED '.$key.' = "'.$val.'"');
}
}
// Positionen anlegen
foreach( $aData['positions'] as $pos ) {
// Erstellt eine Belegposition
try {
if ( empty($pos['hauptkennung']) ) {
//
$SelectLineBelegpos = $SelectLineAuftrag->CreatePos($pos['zeilentyp']);
} else {
//
$oberPos = json_decode(getPosByKennung($pos['hauptkennung']));
if (count($oberPos) != 1) {
die(log_msg(__FUNCTION__ . '(): Parent-Position mit Kennung "' . $pos['hauptkennung'] . '" nicht gefunden.'));
}
//
$SelectLineBelegpos = $SelectLineAuftrag->CreateUnterPos($pos['zeilentyp'], $pos['hauptkennung']);
}
//
$SelectLineBelegpos->Save(1);
//
$Kennung = $SelectLineBelegpos->GetKennung();
// Position über die Kennung suchen
$mssqlPosition = json_decode(getPositionByKennung($Kennung));
if (count($mssqlPosition) != 1) {
die(log_msg(__FUNCTION__ . '(): Position mit Kennung "' . $Kennung . '" nicht gefunden.'));
}
//
$oPosition = $mssqlPosition[0];
//
log_msg(__FUNCTION__ . '(): Position angelegt mit BELEGP_ID=' . $oPosition->BELEGP_ID);
} catch (Exception $e) {
log_msg($e->getMessage());
$error_msg = $objFakt->LetzterFehler();
log_msg(print_r($error_msg->Meldung, true));
die();
}
//
$iModifiedFields = 0;
// Zuerst Artikelnummer setzen, falls nötig
if( isset($pos['erpArtikelnummer']) ) {
$key = 'erpArtikelnummer';
$val = $pos['erpArtikelnummer'];
unset($pos['erpArtikelnummer']);
log_msg(__FUNCTION__ . '(): '.$key.' = "'.$val.'"');
//
$SelectLineBelegpos->SetArtikel($val);
//
$iModifiedFields++;
}
// Positions-Attribute setzen
foreach( $pos as $key => $val ) {
//
if($val === null) continue;
//
switch($key) {
case 'name':
log_msg(__FUNCTION__ . '(): '.$key.' = "'.$val.'"');
$SelectLineBelegpos->SetBezeichnung( $val );
$iModifiedFields++;
break;
case 'zusatz':
log_msg(__FUNCTION__ . '(): '.$key.' = "'.$val.'"');
$SelectLineBelegpos->SetZusatz( $val );
$iModifiedFields++;
break;
case 'beschreibung':
log_msg(__FUNCTION__ . '(): '.$key.' = "'.$val.'"');
$SelectLineBelegpos->Langtext = $val;
$iModifiedFields++;
break;
case 'qty':
log_msg(__FUNCTION__ . '(): '.$key.' = "'.$val.'"');
$SelectLineBelegpos->SetEingabeMenge( round($val, 2) );
$iModifiedFields++;
break;
case 'dauerH':
log_msg(__FUNCTION__ . '(): '.$key.' = "'.$val.'"');
$SelectLineBelegpos->SetEingabeMenge( round($val, 2) );
$iModifiedFields++;
break;
case 'price':
log_msg(__FUNCTION__ . '(): '.$key.' = "'.$val.'"');
$SelectLineBelegpos->SetEinzelPreis( $val );
$iModifiedFields++;
break;
default:
// log_msg(__FUNCTION__ . '(): NOT IMPLEMENTED '.$key.' = "'.$val.'"');
}
}
//
$SelectLineBelegpos->Save(1);
$SelectLineAuftrag->Save();
}
//
//return serialize( $aRetBeleg );
return json_encode( $aRetBeleg );
}
//
$e->register('createBelegMitPositionen',
array(
'BelegTyp' => 'string',
'data' => 'string'
),
array(
'return' => 'string'
),
'Beleg inkl. Positionen erstellen'
);
?>