Files
CdsConnector/src/Helper/Hiltes.php
2023-09-29 10:31:39 +02:00

299 lines
12 KiB
PHP
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
<?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');
}
}
}