$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' ); ?>