';
// Itt azt kell megejelníteni, ami a még ki nem fizetett jutalékokból és a kifizetett előlegek és visszatartsások összegének különbségéből áll össze.
$this->drawCurrentBalance($user['rowid']);
$this->drawPayedRows($user['rowid'], 2);
$this->drawPayedRows($user['rowid'], 0);
print '
';
// Itt azt kell megejelníteni, ami a még ki nem fizetett jutalékokból és a kifizetett előlegek és visszatartsások összegének különbségéből áll össze.
$this->drawCurrentBalance($user['rowid']);
$this->drawPayedRows($user['rowid'], 2);
$this->drawPayedRows($user['rowid'], 0);
print '
';
$rownum++;
}
}
function generateRef($payment_type)
{
return $this->getTypeOfPayment($payment_type) . '_' . dol_now() . '_' . rand(1000000, 9999999);
}
/* function checkBalance($user_id, $date)
{
$sql = "SELECT invoices FROM " . MAIN_DB_PREFIX . "financialreport_userinvoice
WHERE user_id = {$user_id}
AND date_creation BETWEEN '{$date} 00:00:00' AND '{$date} 23:59:59'
AND payment_type = 2
";
$resultBalanceData = $this->db->query($sql);
$result = pg_fetch_all($resultBalanceData);
return is_array($result);
} */
function getOccassionOfThisPeriodByDateAndUserId($user_id, $from, $to)
{
return rand(100, 1000);
}
function createDataArrayForLoginLogotOccassionTable($results)
{
$array = [];
$i = 0;
foreach ($results as $record) {
if ($record->login_logout_status == 0) {
$array[$i]['login'] = date('Y-m-d H:i:s', $record->date_creation);
} else {
if (isset($record->date_creation)) {
$array[$i]['logout'] = date('Y-m-d H:i:s', $record->date_creation);
}
}
$i++;
}
return $array;
}
function createUserDataArray($array, $userOfGroups)
{
$userDataArray = [];
$count = count($array);
for ($k = 0; $k < $count; $k++) {
if (isset($array[$k]['login'])) {
if (!isset($userDataArray[$k - 1]['logout']) && $k != 0) {
$userDataArray[$k - 1]['logout'] = $array[$k]['login'] . '*';
}
$userDataArray[$k]['login'] = $array[$k]['login'];
}
if (isset($array[$k]['logout'])) {
$userDataArray[$k - 1]['logout'] = $array[$k]['logout'];
}
if ($k == $count - 1 && isset($deletedUsersArray[$userOfGroups['user_id']])) {
$userDataArray[$k]['logout'] = $array[$userOfGroups['user_id']];
}
}
return $userDataArray;
}
function updateUserDataArray($userDataArray, $deletedUsersArray, $userOfGroups, $commmissionhandler)
{
foreach ($userDataArray as $key => $period) {
$from = $period['login'];
$to = isset($period['logout']) ? $period['logout'] : (isset($deletedUsersArray[$userOfGroups['user_id']]) ? $deletedUsersArray[$userOfGroups['user_id']] : date('Y-m-d', dol_now()) . ' 23:59:59');
//print $from . ' - ' . $to . ' ';
if (isset($from)) {
$commission_HUF = $commmissionhandler->getOccassionOfThisPeriodByDateAndUserId_HUF($userOfGroups['user_id'], $from, $to);
$commission_EURToHUF = $commmissionhandler->getOccassionOfThisPeriodByDateAndUserId_EURToHUF($userOfGroups['user_id'], $from, $to);
$userDataArray[$key]['commission'] = $commission_HUF + $commission_EURToHUF;
}
}
return $userDataArray;
}
function getAmountOfCommissions($userDataArray)
{
$amount = 0;
foreach ($userDataArray as $record) {
$amount += intval($record);
}
return $amount;
}
function getAllFacturesOfThisUser($user_id, $from, $to)
{
$crossShoppingFacturesString = '';
$sql = "SELECT ref
FROM llx_facture AS f
WHERE fk_user_closing = {$user_id}
AND date_closing BETWEEN '{$from}' AND '{$to}'";
$result = $this->db->query($sql);
if ($this->db->num_rows($result) > 0) {
while ($row = $this->db->fetch_object($result)) {
if ($crossShoppingFacturesString == "") {
$crossShoppingFacturesString .= "'" . $row->ref . "'";
} else {
$crossShoppingFacturesString .= ",'" . $row->ref . "'";
}
}
}
return $crossShoppingFacturesString;
}
function getInvoicesRowidFromFacture($user_id, $from, $to)
{
$invocesRowidArray = [];
$sql = "SELECT rowid FROM " . MAIN_DB_PREFIX . "facture AS f WHERE fk_user_closing = {$user_id}
AND EXISTS (SELECT * FROM " . MAIN_DB_PREFIX . "bbus_bbticketinvoiceprinting as bbip WHERE bbip.fk_facture = f.rowid ORDER BY bbip.rowid DESC LIMIT 1)
AND date_closing BETWEEN '{$from}' AND '{$to}'";
$resultInvoicesData = $this->db->query($sql);
if ($this->db->num_rows($resultInvoicesData) != 0) {
$result = pg_fetch_all($resultInvoicesData);
foreach ($result as $value) {
$invocesRowidArray[] = $value['rowid'];
}
$invocesRowidString = implode(',', $invocesRowidArray);
}
$readyInvoices = $this->getAllComissionInvoicesOfUserInTheGroupFromUserInvoice($user_id, $from, $to);
if (!empty($readyInvoices)) {
$invocesRowidString = $this->giveMeTheDifferenceInString($readyInvoices, $invocesRowidString);
}
return $invocesRowidString;
}
function getCrossShoppingInvoicesRowidFromFacture($allFactures, $from, $to)
{
$facturesRowids = '';
$params = ["from" => $from, "to" => $to, "factures" => $allFactures];
$postFields = json_encode($params);
$crossShoppingFactures = $this->curlRunner('bookingapi/getPrintedFacturesRefs', $postFields, 'POST', true);
if (!empty($crossShoppingFactures)) {
$sql = "SELECT rowid FROM llx_facture WHERE ref IN ($crossShoppingFactures)";
$result = $this->db->query($sql);
if ($this->db->num_rows($result) > 0) {
while ($row = $this->db->fetch_object($result)) {
if ($facturesRowids == "") {
$facturesRowids .= $row->rowid;
} else {
$facturesRowids .= "," . $row->rowid;
}
}
}
}
return $facturesRowids;
}
function getInvoicesRowidFromFactureInAnIntervalByEveryUser($users, $from, $to, $exception)
{
$invocesRowidArray = [];
$sql = "SELECT f.rowid FROM " . MAIN_DB_PREFIX . "facture as f WHERE fk_user_closing IN({$users})";
if ($exception != '') {
$sql .= " AND rowid NOT IN({$exception})";
}
$sql .= " AND EXISTS (SELECT * FROM " . MAIN_DB_PREFIX . "bbus_bbticketinvoiceprinting as bbip WHERE bbip.fk_facture = f.rowid ORDER BY bbip.rowid DESC LIMIT 1)
AND date_closing BETWEEN '{$from}' AND '{$to}'";
//print $sql . "\r\n";
$resultInvoicesData = $this->db->query($sql);
if ($this->db->num_rows($resultInvoicesData) != 0) {
$result = pg_fetch_all($resultInvoicesData);
foreach ($result as $value) {
$invocesRowidArray[] = $value['rowid'];
}
$invocesRowidString = implode(',', $invocesRowidArray);
}
return $invocesRowidString;
}
function getInvoicesRowidFromFactureInAnIntervalByEveryUserWithoutInvoicePrinting($users, $from, $to, $exception)
{
$crossShoppingFacturesString = '';
$sql = "SELECT f.ref FROM " . MAIN_DB_PREFIX . "facture as f WHERE fk_user_closing IN({$users})";
if ($exception != '') {
$sql .= " AND rowid NOT IN({$exception})";
}
$sql .= " AND date_closing BETWEEN '{$from}' AND '{$to}'";
//print $sql . "\r\n";
$resultInvoicesData = $this->db->query($sql);
if ($this->db->num_rows($resultInvoicesData) > 0) {
while ($row = $this->db->fetch_object($resultInvoicesData)) {
if ($crossShoppingFacturesString == "") {
$crossShoppingFacturesString .= "'" . $row->ref . "'";
} else {
$crossShoppingFacturesString .= ",'" . $row->ref . "'";
}
}
}
return $crossShoppingFacturesString;
}
function getAllComissionInvoicesOfUserInTheGroupFromUserInvoice($user_id, $from, $to)
{
$arraytmp = [];
$invocesRowidString = '';
$userInvocesObj = new UserInvoice($this->db);
$result = $userInvocesObj->fetchAll('ASC', 'rowid', 0, 0, ['customsql' => "user_id = " . $user_id . " AND date_creation BETWEEN '" . $from . "' AND '" . $to . "'"]);
foreach ($result as $data) {
if (!empty($data->invoices) || $data->invoices != '') {
$array1 = explode(',', $data->invoices);
$arraytmp = array_merge($arraytmp, $array1);
}
}
$invocesRowidString = implode(',', $arraytmp);
return $invocesRowidString;
}
function giveMeTheDifferenceInString($readyInvoices, $invocesRowidString)
{
$string = '';
if ($readyInvoices != '' && $invocesRowidString != '') {
$array1 = explode(',', $readyInvoices);
$array2 = explode(',', $invocesRowidString);
/* print 'array1: ';
print_r($array1);
print ' ';
print 'array2: ';
print_r($array2);
print ' '; */
$arrayDiff = array_diff($array2, $array1);
//$arrayDiff = array_diff($array1, $array2);
/* print 'Diff: ';
print_r($arrayDiff);
print ' ';
print ' ';
print ' ';
*/
//$arrayDiff = count($array2) > count($array1) ? array_diff($array2, $array1) : array_diff($array1, $array2);
$string = implode(',', $arrayDiff);
return $string;
}
return $string;
}
function getHtmlForConfirmWindow($commission)
{
$userData = [];
$userObj = new User($this->db);
foreach ($commission as $value) {
$itemData = explode('_', $value);
$userdata = $userObj->fetch($itemData[0]);
//print_r($userObj);exit;
$userData[$userObj->id]['name'] = $userObj->lastname . ' ' . $userObj->firstname . ' (' . $userObj->login . ') ' . $userObj->array_options['options_nickname'];
$summaHUF += $itemData[2];
}
$uniformHUF = $summaHUF / count($commission);
$array[] = $userData;
$array[] = $uniformHUF;
return $array;
}
function azosszesElemEgyezik($tomb)
{
$szamlalo = array_count_values($tomb);
$kulonbozoErtekekSzama = count($szamlalo);
return $kulonbozoErtekekSzama === 1;
}
function getUsersArray($data)
{
foreach ($data as $item) {
$itemData = explode('_', $item);
$usersArray[] = $itemData[0];
}
return $usersArray;
}
function checkUserInvoiceRecordAvailability($user_id)
{
$userInvoiceObj = new UserInvoice($this->db);
$now = dol_now();
$result = $userInvoiceObj->fetchAll('DESC', 'date_creation', 1, 0, ['customsql' => "user_id = " . $user_id . " AND date_creation BETWEEN '" . date('Y-m-d', $now) . " 00:00:00' AND '" . date('Y-m-d', $now) . " 23:59:59'"]);
return $result;
}
function deleteUserFromUsersArrayTMPArray($key, $usersArrayTMP)
{
$index = array_search($key, $usersArrayTMP);
if ($index !== false) {
unset($usersArrayTMP[$index]);
}
return $usersArrayTMP;
}
function saveUserInvoiceRecord($usersArrayFilteredUsersFrom, $val, $uniformHUF, $settledInvoices)
{
global $user;
$userinvoice = new UserInvoice($this->db);
$currency = 0;
$userinvoice->ref = $this->generateRef(2);
$userinvoice->label = 'Jutalék/Commission ' . $usersArrayFilteredUsersFrom[$val];
$userinvoice->description = 'Összeg / Amount: ' . $uniformHUF . 'HUF.';
$userinvoice->user_id = $val;
$userinvoice->payment_type = 2;
$userinvoice->amount = $uniformHUF;
$userinvoice->currency = $currency;
$userinvoice->individual = 0;
$userinvoice->invoices = $settledInvoices;
$userinvoice->date_creation = strtotime($usersArrayFilteredUsersFrom[$val]);
$userinvoice->create($user);
}
function getAllDifferentDatesASC($from, $to)
{
foreach ($from as $fromvalue) {
foreach ($fromvalue as $value1) {
$allDates[] = $value1;
}
}
foreach ($to as $tovalue) {
foreach ($tovalue as $value1) {
$allDates[] = $value1;
}
}
$allDates = array_unique($allDates);
return $allDates;
}
function getQueryArray($from, $to)
{
$allDates = $this->getAllDifferentDatesASC($from, $to);
uasort($allDates, 'datumOsszehasonlitas');
$countAllDatesArray = count($allDates);
$allDates = array_values($allDates);
for ($i = 0; $i < $countAllDatesArray - 1; $i++) {
$queryArray[$i]['from'] = $allDates[$i];
$queryArray[$i]['to'] = $allDates[$i + 1];
}
return $queryArray;
}
function getAllComissionInvoicesOfUserInTheGroupFromUserInvoiceCreated($usersArray, $from, $to)
{
$userInvocesObj = new UserInvoice($this->db);
$result = $userInvocesObj->fetchAll('ASC', 'rowid', 0, 0, ['customsql' => "user_id IN(" . $usersArray . ") AND date_creation BETWEEN '" . $from . "' AND '" . $to . "'"]);
$all = [];
foreach ($result as $key => $value) {
//print $value->user_id . ' - ';
//print $value->invoices . "\r\n";
$arrayTmp = explode(',', $value->invoices);
$all = array_merge($all, $arrayTmp);
}
$all = array_unique($all);
$all = array_filter($all);
sort($all);
return implode(',', $all);
}
public function getGroupMemberHistory($user_id, $group_id, $date)
{
$groupMemberHistory = [];
$from = $date . ' 00:00:00';
$to = $date . ' 23:59:59';
$UserNaplo = new UserNaplo($this->db);
$result = $UserNaplo->fetchAll('ASC', 'rowid', 0, 0, ['customsql' => "user_id = {$user_id} AND group_user_id = {$group_id} AND date_creation BETWEEN '{$from}' AND '{$to}'"]);
foreach ($result as $record) {
if ($record->status == 1) {
$groupMemberHistory[]['added'] = date("Y-m-d H:i:s", $record->date_creation);
} else {
$groupMemberHistory[]['deleted'] = date("Y-m-d H:i:s", $record->date_creation);
}
}
return $groupMemberHistory;
}
function getUsersByIdFromGroupUsers($id)
{
global $db;
$usersOfGroup = [];
if (isset($id)) {
$sql = "SELECT gu.fk_user AS user_id, gu.date_creation, u.firstname as firstname, u.lastname as lastname, u.login as login FROM " . MAIN_DB_PREFIX . "settlements_groupusers as gu
INNER JOIN " . MAIN_DB_PREFIX . "user AS u ON u.rowid = gu.fk_user
WHERE gu.fk_Settlements_group = {$id}";
$data = $db->query($sql);
if (!$data) {
dol_syslog("No data found.", LOG_DEBUG | LOG_INFO | LOG_WARNING | LOG_ERR);
setEventMessage('A csoporthoz rendelt felhasználók naplózási lekérdezésébe valami hiba csúszott.', 'errors');
return $usersOfGroup;
}
while ($row = pg_fetch_assoc($data)) {
$usersOfGroup[] = $row;
}
}
return $usersOfGroup;
}
function getDeletedHotelUsers($id)
{
global $db;
$deletedUsersArray = [];
if (isset($id)) {
$sql = "SELECT user_id, date_creation as date
FROM " . MAIN_DB_PREFIX . "settlements_usernaplo
WHERE group_user_id = {$id}
AND status = 0 ORDER BY date_creation ASC";
//print $sql;exit;
$data = $db->query($sql);
$dataArray = pg_fetch_all($data);
if (empty($dataArray)) {
dol_syslog("No data found.", LOG_DEBUG | LOG_INFO | LOG_WARNING | LOG_ERR);
return $deletedUsersArray;
}
foreach ($dataArray as $row) {
$deletedUsersArray[$row['user_id']][] = $row['date'];
}
}
return $deletedUsersArray;
}
function getUserdataFromNaploByUaserId($user_id, $userGroupId)
{
global $db;
$date = '';
$sql = "SELECT date_creation as date FROM " . MAIN_DB_PREFIX . "settlements_usernaplo
WHERE user_id = {$user_id} AND group_user_id = {$userGroupId} AND status = 1
ORDER BY rowid ASC LIMIT 1";
//print $sql;
$data = $db->query($sql);
$dataArray = pg_fetch_all($data);
if (empty($dataArray)) {
dol_syslog("No data found.", LOG_DEBUG | LOG_INFO | LOG_WARNING | LOG_ERR);
return $date;
}
foreach ($dataArray as $row) {
return $row['date'];
}
}
function createDaterangeString($daterange)
{
$array = explode(' - ', $daterange);
return str_replace('-', '.', $array[0]) . ' - ' . str_replace('-', '.', $array[1]);
}
function getUsersOfHotelGroup2($id, $daterange)
{
global $db;
$dates = explode(' - ', $daterange);
$now = dol_now();
$to = $dates[1] > date('Y-m-d', $now) ? date('Y-m-d', $now) : $dates[1];
$sql = "SELECT u.rowid, u.firstname, u. lastname, ue.user_category FROM " . MAIN_DB_PREFIX . "settlements_usernaplo AS un
INNER JOIN " . MAIN_DB_PREFIX . "user as u ON u.rowid = un.user_id
INNER JOIN " . MAIN_DB_PREFIX . "user_extrafields AS ue ON ue.fk_object = u.rowid
WHERE un.date_creation BETWEEN '{$dates[0]} 00:00:00' AND '{$to} 23:59:59'
AND un.group_user_id = {$id}
GROUP BY u.firstname, u.lastname, ue.user_category, u.rowid";
$data = $db->query($sql);
$result = pg_fetch_all($data);
if (empty($result)) {
return [];
}
return $result;
}
function getUsersOfHotelGroup($id, $daterange, $entity)
{
global $db;
$array = [];
$dates = explode(' - ', $daterange);
$now = dol_now();
$to = $dates[1] > date('Y-m-d', $now) ? date('Y-m-d', $now) : $dates[1];
if (isset($id)) {
$sql = "SELECT u.rowid, u.firstname, u. lastname, ue.user_category FROM " . MAIN_DB_PREFIX . "facture AS f
INNER JOIN " . MAIN_DB_PREFIX . "user as u ON u.rowid = f.fk_user_closing
INNER JOIN " . MAIN_DB_PREFIX . "user_extrafields AS ue ON ue.fk_object = u.rowid
INNER JOIN " . MAIN_DB_PREFIX . "facture_extrafields as fe ON fe.fk_object = f.rowid
WHERE f.date_closing BETWEEN '{$dates[0]} 00:00:00' AND '{$to} 23:59:59'
AND f.entity = {$entity}
AND fe.react_facture = {$id}
GROUP BY u.rowid, u.firstname, u. lastname, ue.user_category";
//print $sql;
$data = $db->query($sql);
$array = pg_fetch_all($data);
if (empty($result)) {
return $array;
}
}
return $array;
}
function getUsersList($id, $daterange, $entity)
{
global $db;
$string = '';
$result = $this->getUsersOfHotelGroup($id, $daterange, $entity);
foreach ($result as $row) {
$string .= '