299 lines
12 KiB
PHP
299 lines
12 KiB
PHP
<?php
|
||
|
||
namespace App\Helper;
|
||
|
||
use Symfony\Component\Filesystem\Exception\IOExceptionInterface;
|
||
use Symfony\Component\Filesystem\Filesystem;
|
||
use Symfony\Component\Finder\Finder;
|
||
|
||
|
||
class Hiltes
|
||
{
|
||
// init file system
|
||
protected $fsObject;
|
||
protected $current_dir_path;
|
||
protected $apiKey;
|
||
protected $hiltesApiHash = '';
|
||
protected $hiltesUsr = 'admin';
|
||
protected $hiltesPass = '1996';
|
||
protected $hiltesApiUrl = 'https://api.orangejungle.eu';
|
||
|
||
public function __construct()
|
||
{
|
||
$this->fsObject = new Filesystem();
|
||
$this->current_dir_path = getcwd();
|
||
|
||
}
|
||
|
||
/**
|
||
* Aufbau des Dateinamens:
|
||
* WU + Datum(TTMM) + Fortlaufendenummer (x2) + “.“ +Filialnummer(x4)
|
||
* Beispieldateiname : WU220401.0001
|
||
*/
|
||
public function createFileName() :String
|
||
{
|
||
$date = date('dm');
|
||
$number = '01';
|
||
$filial = '0001';
|
||
return 'WU'.$date.$number.'.'.$filial;
|
||
}
|
||
|
||
|
||
public function import()
|
||
{
|
||
|
||
$finder = new Finder();
|
||
$finder->files()->in($this->current_dir_path . "/hiltes/h2c/");
|
||
|
||
foreach ($finder as $file) {
|
||
$contents = $file->getContents();
|
||
|
||
var_dump($contents);
|
||
}
|
||
|
||
}
|
||
|
||
/**
|
||
* @param string $data
|
||
* @return void
|
||
*/
|
||
public function export(string $data)
|
||
{
|
||
try {
|
||
$new_file_path = $this->current_dir_path . "/hiltes/c2h/".$this->createFileName();
|
||
|
||
if (!$this->fsObject->exists($new_file_path))
|
||
{
|
||
$this->fsObject->touch($new_file_path);
|
||
$this->fsObject->chmod($new_file_path, 0777);
|
||
$this->fsObject->dumpFile($new_file_path, $data);
|
||
}
|
||
} catch (IOExceptionInterface $exception) {
|
||
echo "Error creating file at". $exception->getPath();
|
||
}
|
||
}
|
||
|
||
public function checkData($data)
|
||
{
|
||
$umsatz = [
|
||
'EtikettKz' => 'E', // E = EAN, I = Ident, W = Warengruppe
|
||
'Etikettnummer'=> $data['sku'], // mit führenden Nullen bei Satzart „W“ die Warengruppennummer
|
||
'Warengruppennummer'=> '0000', // mit führenden Nullen
|
||
'Groessenbez'=> '',
|
||
'Kundennummer'=> '00000000000000000000',
|
||
'Nachlassart'=> '0',
|
||
'Menge'=> '00000000000000000000', //7 Vor – und 2 Nachkommastellen (Darstellung ohne Komma mit führenden Nullen).
|
||
'Kalk-VkPreis'=> '00000000000000000000', //7 Vor – und 2 Nachkommastellen (Darstellung ohne Komma mit führenden Nullen).
|
||
'Vorgangsart'=> 'v', // u = Umtausch, v = Verkauf
|
||
'Belegnummer'=> '00000000000000000000', // mit führenden Nullen
|
||
'Verkaufsdatum'=> '00000000', // YYYYMMTT
|
||
'Verkaufszeit'=> '000000', // HHMM
|
||
'Zahlungsart'=>2, // 1 = Kreditkarte, 2 = Rechnung, 3 = Lastschrift, 4 = Gutschein, 5 = Gutschrift, 6 = Mischzahlung
|
||
'Währung'=> 'EUR', // EUR
|
||
'Einheit'=> 'S', // S= Stück, M = Meter
|
||
'Vertriebskanal'=> '0000', // Vertriebskanäle werden über das Stammdatenprogramm angelegt und müssen mit der hinterlegten Nummer aus dem Webshop übergeben werden
|
||
];
|
||
|
||
$kunde = [
|
||
'Kunden-Nummer'=> '00000000000000000000', // mit führenden Nullen
|
||
'Kartennummer'=> '00000000000000000000', // mit führenden Nullen
|
||
'Nachname'=> '00000000000000000000', // mit führenden Nullen
|
||
'Vorname'=> '00000000000000000000', // mit führenden Nullen
|
||
'Ort'=> '00000000000000000000', // mit führenden Nullen
|
||
'PLZ'=> '00000000000000000000', // mit führenden Nullen
|
||
'Straße'=> '00000000000000000000', // mit führenden Nullen
|
||
'Land'=> '00000000000000000000', // mit führenden Nullen
|
||
'Postfach'=> '00000000000000000000', // mit führenden Nullen
|
||
'PostfachPLZ'=> '00000000000000000000', // mit führenden Nullen
|
||
'Titel'=> '00000000000000000000', // mit führenden Nullen
|
||
'Telefon1'=> '00000000000000000000', // mit führenden Nullen
|
||
'Telefon2'=> '00000000000000000000', // mit führenden Nullen
|
||
'Telefax'=> '00000000000000000000', // mit führenden Nullen
|
||
'Geburtsdatum'=> '00000000', // YYYYMMDD
|
||
'Geschlecht'=> '00000000000000000000', // s = sonstiges, m = männlich, w = weiblich
|
||
'Email'=> '00000000000000000000', // mit führenden Nullen
|
||
'Rabatt'=> '00000000000000000000', // mit führenden Nullen
|
||
'Limit'=> '00000000000000000000', // mit führenden Nullen
|
||
'Sperr Kennzeichen'=> '0', // 0 = nicht gesperrt, 1 = gesperrt
|
||
'Dubios Kennzeichen'=> '0', // 0 = nicht dubios, 1 = dubios
|
||
'Bankeinzug'=> '0', // 0 = kein Bankeinzug, 1 = Bankeinzug
|
||
'BankName1'=> '00000000000000000000', // mit führenden Nullen
|
||
'Konto1'=> '00000000000000000000', // mit führenden Nullen
|
||
'BLZ1'=> '00000000000000000000', // mit führenden Nullen
|
||
'BankName2'=> '00000000000000000000', // mit führenden Nullen
|
||
'Konto2'=> '00000000000000000000', // mit führenden Nullen
|
||
'BLZ2'=> '00000000000000000000', // mit führenden Nullen
|
||
'BankName3'=> '00000000000000000000', // mit führenden Nullen
|
||
'Konto3'=> '00000000000000000000', // mit führenden Nullen
|
||
'BLZ3'=> '00000000000000000000', // mit führenden Nullen
|
||
'Kreditkartennummer Kreditkarte1'=> '', // mit führenden Nullen
|
||
'Kreditkartennummer Kreditkarte2'=> '', // mit führenden Nullen
|
||
'Kreditkartennummer Kreditkarte3'=> '', // mit führenden Nullen
|
||
'Kreditkartennummer Kreditkarte4'=> '', // mit führenden Nullen
|
||
'Änderungskennzeichen'=> '0', // 0 = Kunde ist OK, 1 = Änderung
|
||
'Newsletter'=> '0', // 0 = kein Newsletter, 1 = Newsletter
|
||
'Passwort'=> '', //
|
||
'Werbesperre'=> '0', // 0 = keine Werbung, 1 = Werbung
|
||
];
|
||
}
|
||
public function createJson($data){
|
||
$arr = array(
|
||
'File' => array(
|
||
"BranchNumber" => $data['BranchNumber'], #Die Filialnummer
|
||
"ShopNumber" => $data['ShopNumber'], #Die Shopnummer
|
||
"SalesDate" => $data['SalesDate'], #Das Umsatzdatu
|
||
"DistributionChannel" => $data['DistributionChannel'] #Der Vertriebskanal
|
||
),
|
||
'SaleList' => array(
|
||
),
|
||
'CustomerList' => array(
|
||
),
|
||
);
|
||
#*** Sale List
|
||
if(!empty($data['SaleList'])){
|
||
foreach ($data['SaleList'] as $v){
|
||
$arr['SaleList'][] = array(
|
||
"SalesLabel" => $v['SalesLabel'], #Das Etikettkennzeichen
|
||
"SalesLabelNumber" => $v['SalesLabelNumber'], #Etikettennummer
|
||
"SalesGoodsGroupNumber" => $v['SalesGoodsGroupNumber'],
|
||
#"SizeDescription" => $v['SizeDescription'],
|
||
#"CustomerNumber" => $v['CustomerNumber'],
|
||
#"TypeOfEstate" => $v['TypeOfEstate'],
|
||
"Amount" => $v['Amount'],
|
||
"CalculatedSellingPrice" => $v['CalculatedSellingPrice'],
|
||
"AchievedSalesPrice" => $v['AchievedSalesPrice'],
|
||
"TransactionType" => $v['TransactionType'],
|
||
#"ReceiptNumber" => $v['ReceiptNumber'],
|
||
"DateOfSale" => $data['SalesDate'],#"2023-09-14T11:54:26.708Z",
|
||
"PaymentMethod" => $v['PaymentMethod'],
|
||
"Currency" => $v['Currency'],
|
||
"Unit" => $v['Unit'],
|
||
"DistributionChannel" => $v['DistributionChannel']
|
||
);
|
||
}
|
||
}
|
||
#*** Sale List
|
||
if(true){
|
||
foreach ($data['CustomerList'] as $v){
|
||
$arr['CustomerList'][] = array(
|
||
"CustomerNumber" => $v['CustomerNumber'],
|
||
#"CardNumber" => $v['CardNumber'],
|
||
#"SalutionNumber" => $v['SalutionNumber'],
|
||
"Surname" => $v['Surname'],
|
||
"Forename" => $v['Forename'],
|
||
"AddressCity" => $v['AddressCity'],
|
||
"AddressZipCode" => $v['AddressZipCode'],
|
||
"AddressStreet" => $v['AddressStreet'],
|
||
"AddressCountry" => $v['AddressCountry'],
|
||
#"PostOfficeBox" => $v['PostOfficeBox'],
|
||
#"PostOfficeBoxZipCode" => $v['PostOfficeBoxZipCode'],
|
||
#"Title" => $v['Title'],
|
||
#"PhoneNumber1" => $v['PhoneNumber1'],
|
||
#"PhoneNumber2" => $v['PhoneNumber2'],
|
||
#"FaxNumber" => $v['FaxNumber'],#"string",
|
||
#"BirthDay" => $v['BirthDay'],
|
||
#"Gender" => $v['Gender'],
|
||
#"EmailAddress" => $v['EmailAddress'],
|
||
#"Discount" => $v['Discount'],
|
||
#"Limit" => $v['Limit'],
|
||
#"LockMark" => $v['LockMark'],
|
||
#"DubiousMark" => $v['DubiousMark'],
|
||
#"DubiousText" => $v['DubiousText'],
|
||
#"DirectDebit" => $v['DirectDebit'],
|
||
#"BankName1" => $v['BankName1'],#"string",
|
||
#"BankAccountNumber1" => $v['BankAccountNumber1'],#"string",
|
||
#"BankCodeNumber1" => $v['BankCodeNumber1'],#"string",
|
||
#"BankName2" => $v['BankName2'],#"string",
|
||
#"BankAccountNumber2" => $v['BankAccountNumber2'],#"string",
|
||
#"BankCodeNumber2" => $v['BankCodeNumber2'],#"string",
|
||
#"BankName3" => $v['BankName3'],#"string",
|
||
#"BankAccountNumber3" => $v['BankAccountNumber3'],#"string",
|
||
#"BankCodeNumber3" => $v['BankCodeNumber3'],#"string",
|
||
#"CreditcardNumber1" => $v['CreditcardNumber1'],#"string",
|
||
#"CreditcardNumber2" => $v['CreditcardNumber2'],#"string",
|
||
#"CreditcardNumber3" => $v['CreditcardNumber3'],#"string",
|
||
#"CreditcardNumber4" => $v['CreditcardNumber4'],#"string",
|
||
#"ChangeIndicator" => $v['ChangeIndicator'],
|
||
#"Newsletter" => $v['Newsletter'],
|
||
#"Password" => $v['Password'],
|
||
#"AdBan" => $v['AdBan']
|
||
);
|
||
}
|
||
}
|
||
#dump($arr);
|
||
return $arr;
|
||
}
|
||
public function sendToHiltes($url,$param,$auth=false){
|
||
if($auth){
|
||
#var_export($this->hiltesApiHash);
|
||
#var_export($url);
|
||
#var_export($param);
|
||
|
||
}
|
||
|
||
$ch = curl_init($url);
|
||
if($auth){
|
||
$authorization = "Authorization: Bearer ".$this->hiltesApiHash;
|
||
}else{
|
||
$authorization = false;
|
||
}
|
||
#dump($param);
|
||
# Setup request to send json via POST.
|
||
$payload = json_encode( $param );
|
||
#dump($payload);
|
||
curl_setopt( $ch, CURLOPT_HTTPHEADER, array('Content-Type:application/json',$authorization));
|
||
curl_setopt( $ch, CURLOPT_POSTFIELDS, $payload );
|
||
# Return response instead of printing.
|
||
curl_setopt( $ch, CURLOPT_RETURNTRANSFER, true );
|
||
# Send request.
|
||
$result = curl_exec($ch);
|
||
curl_close($ch);
|
||
return $result;
|
||
}
|
||
public function loginToHiltes($usr,$pass){
|
||
$url = $this->hiltesApiUrl.'/api/Authentication/authenticate';
|
||
/*
|
||
{
|
||
"Username": "string",
|
||
"Password": "string"
|
||
}
|
||
*/
|
||
$param = array(
|
||
'Username' => (!empty($usr) ? $usr : $this->hiltesUsr),
|
||
'Password' => (!empty($pass) ? $pass : $this->hiltesPass),
|
||
# 'parse_mode' => 'html',
|
||
# 'disable_notification' => $disable_notification,
|
||
# 'text' => $message_text
|
||
);
|
||
$r = $this->sendToHiltes($url,$param);
|
||
$t = json_decode($r,true);
|
||
if($t['Success']){
|
||
$this->hiltesApiHash = $t['Data'];
|
||
return true;
|
||
}else{
|
||
dump($r);
|
||
dump('Login Error');
|
||
return false;
|
||
}
|
||
}
|
||
public function sendOrderToHiltes($data){
|
||
$url = $this->hiltesApiUrl.'/api/WebSale/import';
|
||
/*
|
||
{
|
||
"Username": "string",
|
||
"Password": "string"
|
||
}
|
||
*/
|
||
$param = $data;
|
||
dump($param);
|
||
$r = $this->sendToHiltes($url,$param,true);
|
||
$t = json_decode($r,true);
|
||
if($t['Success']){
|
||
$this->hiltesApiHash = $t['Data'];
|
||
}else{
|
||
dump($r);
|
||
dd('Login Error');
|
||
}
|
||
}
|
||
|
||
} |