getRow('SELECT * FROM `'._DB_PREFIX_.'inpostship_cart` WHERE `id_cart` = '.(int)$id_cart); } /** * Dodanie informacji o koszyku do przesyłki * @param int $id_cart * @param string $point * @param int $courier * @param $week * @param $id_lang * @return bool result of add data to db */ public static function setInpostShip($id_cart, $point, $courier, $week, $id_lang) { $date = date('Y-m-d H:i:s'); $cod = 0; $carrier = new Carrier((int)$courier, (int)$id_lang); if ((int)$carrier->id_reference == Configuration::get('INPOSTSHIP_CARRIER_2') && Configuration::get('INPOSTSHIP_CARRIER_PACZKOMATY_COD_SHOW') == 0) { $cod = 1; } return Db::getInstance()->insert('inpostship_cart', array( 'id_cart' => (int)$id_cart, 'id_carrier' => (int)$courier, 'receiver_machine' => $point, 'cod' => $cod, 'week' => $week, 'created' => 0, 'date_add' => $date, 'date_upd' => $date, )); } /** * Aktualizacja informacji o koszyku do przesyłki * @param int $id_cart * @param string $point * @param $id_carrier * @param $week * @param $id_lang * @return bool result of add data to db */ public static function updateInpostShip($id_cart, $point, $id_carrier, $week, $id_lang) { $date = date('Y-m-d H:i:s'); $cod = 0; $carrier = new Carrier((int)$id_carrier, (int)$id_lang); if ((int)$carrier->id_reference == Configuration::get('INPOSTSHIP_CARRIER_2') && Configuration::get('INPOSTSHIP_INSTALL_CARRIER_2') == 1) { $cod = 1; } return Db::getInstance()->update('inpostship_cart', array( 'receiver_machine' => $point, 'id_carrier' => $id_carrier, 'date_upd' => $date, 'cod' => $cod, 'week' => $week, ), 'id_cart = '.(int)$id_cart); } /** * @param int $id_cart * @param int $courier * @param int $id_lang * @return bool */ public static function setInpostShipCourier($id_cart, $courier, $id_lang) { $date = date('Y-m-d H:i:s'); $cod = 0; $carrier = new Carrier((int)$courier, (int)$id_lang); if ((int)$carrier->id_reference == Configuration::get('INPOSTSHIP_CARRIER_4') && Configuration::get('INPOSTSHIP_INSTALL_CARRIER_4') == 1) { $cod = 1; } return (bool)Db::getInstance()->insert('inpostship_cart', array( 'id_cart' => (int)$id_cart, 'id_carrier' => $courier, 'receiver_machine' => '', 'cod' => (int)$cod, 'created' => 0, 'date_add' => $date, 'date_upd' => $date, )); } /** * @param int $id_cart * @param int $courier * @param int $id_lang * @return bool */ public static function updateInpostShipCourier($id_cart, $courier, $id_lang) { $date = date('Y-m-d H:i:s'); $cod = 0; $carrier = new Carrier((int)$courier, (int)$id_lang); if ((int)$carrier->id_reference == Configuration::get('INPOSTSHIP_CARRIER_4') && Configuration::get('INPOSTSHIP_INSTALL_CARRIER_4') == 1) { $cod = 1; } return (bool)Db::getInstance()->update('inpostship_cart', array( 'id_carrier' => (int)$courier, 'date_upd' => $date, 'cod' => (int)$cod, ), 'id_cart = '.(int)$id_cart); } /** * Pobranie paczkomatu wg ID koszyka * @param int $id_cart * @return string - name of point */ public static function getPointByCart($id_cart) { return Db::getInstance()->getValue('SELECT `receiver_machine` FROM `'._DB_PREFIX_.'inpostship_cart` WHERE `id_cart` = '.(int)$id_cart); } /** * Pobranie informacji o utworzonej przesyłce * @param type $id_cart * @return array of pack info */ public static function getInpostShip($id_cart) { return Db::getInstance()->getRow('SELECT * FROM `'._DB_PREFIX_.'inpostship` WHERE `id_cart` = '.(int)$id_cart); } /** * Pobranie informacji o utworzonej przesyłce * @param int $id_pack * @return array of pack info */ public static function getInpostShipByIdPack($id_pack) { return Db::getInstance()->getRow('SELECT * FROM `'._DB_PREFIX_.'inpostship` WHERE `id_pack` = '.(int)$id_pack); } /** * Pobranie informacji o dodanym koszyku * @param $id * @return array of cart */ public static function getInpostShipCart($id) { return Db::getInstance()->getRow('SELECT * FROM `'._DB_PREFIX_.'inpostship_cart` WHERE `id_cart` = '.(int)$id); } /** * Aktualizacja informacji o utworzonej paczce dla danego koszyka * @param int $id_cart - Shop cart ID * @return bool */ public static function updateCreatedCart($id_cart) { return (bool)Db::getInstance()->update('inpostship_cart', array( 'created' => 1, 'date_upd' => date('Y-m-d H:i:s'), ), 'id_cart = '.(int)$id_cart); } /** * Pobranie listy koszyków z niewygenerowanymi paczkami * @return array|bool|mysqli_result|PDOStatement|resource|null */ public static function getNewPack() { return Db::getInstance()->executeS('SELECT * FROM `'._DB_PREFIX_.'inpostship_cart` WHERE `created` = 0 ORDER BY `date_add` DESC'); } /** * Utworzenie przesyłki w bazie danych * @param int $id_order * @param string $email * @param number $phone * @param string $packtype * @param string $sendtype * @param string $machine * @param int $insurance * @param double $cod_value * @param array $sizes * @return bool */ public static function setInpostPackage($id_order, $email, $phone, $packtype, $sendtype, $machine, $insurance, $cod_value = null, $sizes = array()) { $cod_values = ''; $cod = 0; if ($cod_value != '') { $cod = 1; $cod_values = $cod_value; } $size = ''; if (!empty($sizes)) { $size = implode('x', $sizes); } return (bool)Db::getInstance()->insert('inpostship', array( 'id_order' => (int)$id_order, 'sendtype' => $sendtype, 'packtype' => $packtype, 'receiver_email' => $email, 'receiver_mobile' => $phone, 'receiver_machine' => $machine, 'insurance' => $insurance, 'executes' => 1, 'cod' => $cod, 'cod_value' => $cod_values, 'sizes' => $size, 'date_add' => date('Y-m-d H:i:s'), 'date_upd' => date('Y-m-d H:i:s'), )); } /** * Aktualizacja danych do przesyłki - status oraz kod paczki * @param int $id_pack * @param string $status * @param int $id * @return bool */ public static function updateInpostShipped($id_pack, $status, $id) { return (bool)Db::getInstance()->update('inpostship', array( 'status' => $status, 'packcode' => $id, 'executes' => 1, 'status_date' => date('Y-m-d H:i:s'), 'date_upd' => date('Y-m-d H:i:s'), ), 'id_pack = '.(int)$id_pack); } /** * Aktualizacja danych o przesyłce = status oraz ID oferty * @param type $id_pack * @param type $status * @param type $offer_id * @return bool */ public static function updateInpostOffer($id_pack, $status, $offer_id) { $date = date('Y-m-d H:i:s'); return (bool)Db::getInstance()->update('inpostship', array( 'status' => $status, 'offer_id' => $offer_id, 'executes' => 2, 'status_date' => $date, 'date_upd' => $date, ), 'id_pack = '.(int)$id_pack); } /** * Aktualizacja danych o przesyłce * @param int $id_pack * @param int $id_order * @param int $id_employee * @param string $status * @param number $tracking_number * @return bool */ public static function updateInpostBuy($id_pack, $id_order, $id_employee, $status, $tracking_number, $subject, $module) { $date = date('Y-m-d H:i:s'); if (Configuration::get('INPOSTSHIP_TRACKING_SAVE') == 1) { Db::getInstance()->update('order_carrier', array( 'tracking_number' => $tracking_number ), 'id_order = '.(int)$id_order); } if (Configuration::get('INPOSTSHIP_ORDER_STATUS_CHANGE') == 1) { $history = new OrderHistory(); $history->id_order = (int)$id_order; $history->id_employee = (int)$id_employee; $history->changeIdOrderState((int)Configuration::get('INPOSTSHIP_ORDER_STATUS'), $id_order); $history->addWithemail(true, array()); } if (Configuration::get('INPOSTSHIP_SEND_TRACKING') == 1) { InpostPack::sendTrackingEmail((int)$id_order, (int)$id_pack, $tracking_number, $subject, $module); } return (bool)Db::getInstance()->update('inpostship', array( 'status' => $status, 'reference_number' => $tracking_number, 'executes' => 3, 'status_date' => $date, 'date_upd' => $date, ), 'id_pack = '.(int)$id_pack); } /** * Zmiana statusu paczki * @param int $id_pack * @return bool */ public static function updateInpostBuyInfo($id_pack) { $date = date('Y-m-d H:i:s'); return (bool)Db::getInstance()->update('inpostship', array( 'executes' => 4, 'date_upd' => $date, ), 'id_pack = '.(int)$id_pack); } /** * Pobranie wsystkich paczek do zamówienia * @param int $id_order * @return array of package list */ public static function getOrderPackageList($id_order) { return Db::getInstance()->executeS('SELECT * FROM `'._DB_PREFIX_.'inpostship` WHERE `id_order` = '.(int)$id_order.' ORDER BY `date_add` DESC'); } /** * Pobranie wsystkich paczek * @return array of list */ public static function getAllPackageList() { return Db::getInstance()->executeS('SELECT * FROM `'._DB_PREFIX_.'inpostship` ORDER BY `date_add` DESC'); } /** * Pobieranie paczek, które mają status inny niż dostarczono/0 * @return mixed */ public static function getAllNotDeliveredPackageList($debug = false) { if ($debug) { return Db::getInstance()->executeS('SELECT * FROM `'._DB_PREFIX_.'inpostship` ORDER BY `date_add` DESC'); } return Db::getInstance()->executeS('SELECT * FROM `'._DB_PREFIX_.'inpostship` WHERE `statue` is null OR (`statue` != "delivered" AND `statue` != "--") ORDER BY `date_add` DESC'); } /** * Pobranie listy paczek - paginacja * @param $start * @param $limit * @return mixed */ public static function getPaginPackageList($start, $limit, $filter = array()) { if (empty($filter)) { return Db::getInstance()->executeS('SELECT * FROM `' . _DB_PREFIX_ . 'inpostship` ORDER BY `date_add` DESC LIMIT ' . (int)$start . ', ' . (int)$limit); } else { $filter_usluga = $filter['orderFilter_country_usluga']; $filter_nadanie = $filter['orderFilter_country_nadanie']; $filter_id = $filter['orderFilter_id_inpost']; $filter_order = $filter['orderFilter_id_order']; $filter_customer = $filter['orderFilter_customer']; $filter_tracking = $filter['orderFilter_tracking']; $where = array(); if (!empty($filter_id)) { $where[] = 'packcode = '.(int)$filter_id; } if (!empty($filter_order)) { $where[] = 'id_order = '.(int)$filter_order; } if (!empty($filter_customer)) { $ino = ''; $customers = Customer::searchByName($filter_customer); $idc = array(); if (!empty($customers)) { foreach ($customers as $customer) { $orders = Db::getInstance()->executeS('SELECT * FROM `'._DB_PREFIX_.'orders` WHERE `id_customer` = '.(int)$customer['id_customer']); if (!empty($orders)) { foreach ($orders as $order) { $idc[] = $order['id_order']; } } } if (!empty($idc)) { $ino = implode(',', $idc); } } $where[] = 'id_order IN ('.$ino.')'; } if (!empty($filter_tracking)) { $where[] = 'reference_number LIKE "%'.(int)$filter_tracking.'%"'; } if (!empty($filter_nadanie)) { $sendtype = 'parcel_locker'; switch ($filter_nadanie) { case 1:$sendtype = 'dispatch_order';break; case 2:$sendtype = 'parcel_locker';break; case 3:$sendtype = 'pop';break; default:$sendtype = 'parcel_locker';break; } $where[] = 'sendtype = "'.$sendtype.'"'; } $whereSql = ''; if (!empty($where)) { $whereSql = 'WHERE '; foreach ($where as $key => $w) { $whereSql .= ($key == 0 ? '' : ' AND ').$w; } } $result = Db::getInstance()->executeS('SELECT * FROM `' . _DB_PREFIX_ . 'inpostship` '.$whereSql.' ORDER BY `date_add` DESC LIMIT ' . (int)$start . ', ' . (int)$limit); if (!empty($result)) { foreach ($result as $key => $item) { if (!empty($filter_usluga)) { $order = new Order($item['id_order']); $id_cart = (int)$order->id_cart; $inpost_cart = InpostPack::getInpostShipCart((int)$id_cart); $c1 = Configuration::get('INPOSTSHIP_CARRIER_1'); $c1i = Configuration::get('INPOSTSHIP_INSTALL_CARRIER_1'); $c2 = Configuration::get('INPOSTSHIP_CARRIER_2'); $c2i = Configuration::get('INPOSTSHIP_INSTALL_CARRIER_2'); $c3 = Configuration::get('INPOSTSHIP_CARRIER_3'); $c3i = Configuration::get('INPOSTSHIP_INSTALL_CARRIER_3'); $c4 = Configuration::get('INPOSTSHIP_CARRIER_4'); $c4i = Configuration::get('INPOSTSHIP_INSTALL_CARRIER_4'); $c5 = Configuration::get('INPOSTSHIP_CARRIER_5'); $c6 = Configuration::get('INPOSTSHIP_CARRIER_6'); $service = 0; $c_type = 0; $id_carrier = (int)$inpost_cart['id_carrier']; if ($id_carrier != $order->id_carrier) { $id_carrier = (int)$order->id_carrier; } $carrier = new Carrier((int)$id_carrier); $cref = $carrier->id_reference; if ($c1i == 1) { if ($cref == $c1) { $service = 1; // Inpost paczkomaty } } if ($c2i == 1) { if ($cref == $c2) { $service = 1; // Inpost paczkomaty $c_type = 1; // za pobraniem } } if ($c3i == 1) { if ($c3 == $cref) { $service = 2; // kurier } } if ($c4i == 1) { if ($c4 == $cref) { $service = 2; // kurier $c_type = 1; // za pobraniem } } if ($c5 == $cref) { $service = 5; // Paczkomaty PwW } if ($c6 == $cref) { $service = 6; // Paczkomaty PwW $c_type = 1; // za pobraniem } switch ($filter_usluga) { case 1: // paczkomaty if ($service == 1 && $c_type == 0) { } else { unset($result[$key]); } break; case 2: // paczkomaty za pobraniem if ($service == 1 && $c_type == 1) { } else { unset($result[$key]); } break; case 3: // kurier if ($service == 2 && $c_type == 0) { } else { unset($result[$key]); } break; case 4: // kurier za pobraniem if ($service == 2 && $c_type == 1) { } else { unset($result[$key]); } break; case 5: // paczkomat pww if ($service == 5 && $c_type == 0) { } else { unset($result[$key]); } break; case 6: // paczkomaty pww za pobraniem if ($service == 6 && $c_type == 1) { } else { unset($result[$key]); } break; case 7: // brak danych if ($service == 0) { } else { unset($result[$key]); } break; } } } } return $result; } } /** * Usunięcie paczki z bazy * @param int $id_pack * @return bool */ public static function deletePackById($id_pack) { return (bool)Db::getInstance()->execute('DELETE FROM `'._DB_PREFIX_.'inpostship` WHERE `id_pack` = '.(int)$id_pack); } /** * Aktualizacja numeru zamówienia kuriera dla paczki * @param int $id_pack * @param int $dispatch_id * @return bool */ public static function updateDispatchId($id_pack, $dispatch_id) { return (bool)Db::getInstance()->execute('UPDATE `'._DB_PREFIX_.'inpostship` SET `dispatch_id` = "'.(int)$dispatch_id.'" WHERE `id_pack` = '.(int)$id_pack); } /** * Wysyłka wiadomości e-mail z numerem śledzenia zamówienia * @param int $id_order * @param number $tracking_number */ public static function sendTrackingEmail($id_order, $id_pack, $tracking_number, $subject, $module) { $order = new Order((int)$id_order); $ship = InpostPack::getInpostShipByIdPack((int)$id_pack); if (!empty($ship['receiver_machine'])) { $configuration = Configuration::getMultiple(array( 'PS_SHOP_EMAIL', 'PS_MAIL_METHOD', 'PS_MAIL_SERVER', 'PS_MAIL_USER', 'PS_MAIL_PASSWD', 'PS_SHOP_NAME' )); $customer = new Customer($order->id_customer); $point = InpostPoint::getPointInfo($ship['receiver_machine']); $id_lang = (int)Context::getContext()->language->id; $id_carrier = (int)$order->id_carrier; $carrier = new Carrier((int)$id_carrier, $id_lang); $template = 'tracking'; $template_vars = array( '{point_code}' => $point['point_code'], '{point_address}' => $point['point_address1'].', '.$point['point_address2'], '{point_description}' => $point['point_desc'], '{point_lat}' => $point['point_lat'], '{point_lng}' => $point['point_lng'], '{firstname}' => $customer->firstname, '{lastname}' => $customer->lastname, '{tracking_url}' => 'https://inpost.pl/sledzenie-przesylek?number='.$tracking_number, '{inpost_tracking_url}' => 'https://inpost.pl/sledzenie-przesylek', '{tracking_number}' => $tracking_number, '{carrier}' => $carrier->name, '{id_order}' => $order->id, '{order_reference}' => $order->reference, '{order_total}' => $order->total_paid ); $iso = Language::getIsoById($id_lang); if (file_exists(dirname(__FILE__).'/../mails/'.$iso.'/'.$template.'.txt') && file_exists(dirname(__FILE__).'/../mails/'.$iso.'/'.$template.'.html')) { Mail::Send($id_lang, $template, $subject, $template_vars, $customer->email, null, $configuration['PS_SHOP_EMAIL'], $configuration['PS_SHOP_NAME'], null, null, dirname(__FILE__).'/../mails/'); } } // end parcel_locker } /** * Wysyłka wiadomości e-mail z modułu * @param int $id_order */ public static function sendPointEmail($id_order, $subject, $module) { $order = new Order((int)$id_order); $ship = InpostPack::issetCart((int)$order->id_cart); if (!empty($ship['receiver_machine'])) { $configuration = Configuration::getMultiple(array( 'PS_SHOP_EMAIL', 'PS_MAIL_METHOD', 'PS_MAIL_SERVER', 'PS_MAIL_USER', 'PS_MAIL_PASSWD', 'PS_SHOP_NAME' )); $customer = new Customer($order->id_customer); $point = InpostPoint::getPointInfo($ship['receiver_machine']); $id_lang = (int)Context::getContext()->language->id; $id_carrier = (int)$order->id_carrier; $carrier = new Carrier((int)$id_carrier, $id_lang); $ion = Configuration::get('INPOSTSHIP_ORDER_NUMBER', 1); $order_number = $order->id; if ($ion == 2) { $order_number = $order->reference; } $template_vars = array( '{point_code}' => $point['point_code'], '{point_address}' => $point['point_address1'].', '.$point['point_address2'], '{point_description}' => $point['point_desc'], '{point_lat}' => $point['point_lat'], '{point_lng}' => $point['point_lng'], '{firstname}' => $customer->firstname, '{lastname}' => $customer->lastname, '{carrier}' => $carrier->name, '{id_order}' => $order->id, '{order_reference}' => $order->reference, '{order_total}' => $order->total_paid, '{order_number}' => $order_number ); $iso = Language::getIsoById($id_lang); if (Configuration::get('INPOSTSHIP_SEND_POINT_CUSTOMER') == 1) { $template = 'point_customer'; if (file_exists(dirname(__FILE__).'/../mails/'.$iso.'/'.$template.'.txt') && file_exists(dirname(__FILE__).'/../mails/'.$iso.'/'.$template.'.html')) { Mail::Send($id_lang, $template, $subject, $template_vars, $customer->email, null, $configuration['PS_SHOP_EMAIL'], $configuration['PS_SHOP_NAME'], null, null, dirname(__FILE__).'/../mails/'); } } if (Configuration::get('INPOSTSHIP_SEND_POINT_ADMIN') == 1) { $template2 = 'point_admin'; if (file_exists(dirname(__FILE__).'/../mails/'.$iso.'/'.$template2.'.txt') && file_exists(dirname(__FILE__).'/../mails/'.$iso.'/'.$template2.'.html')) { Mail::Send($id_lang, $template2, $subject, $template_vars, $configuration['PS_SHOP_EMAIL'], null, $configuration['PS_SHOP_EMAIL'], $configuration['PS_SHOP_NAME'], null, null, dirname(__FILE__).'/../mails/'); } } } // end receiver_machine } /** * @param $id_cart * @param $machineName * @param $order */ public static function changeReceiverMachine($id_cart, $machineName, $order) { if (!empty(InpostPack::issetCart((int)$id_cart))) { Db::getInstance()->update('inpostship_cart', array( 'receiver_machine' => $machineName ), '`id_cart` = '.(int)$id_cart); } else { Db::getInstance()->insert('inpostship_cart', array( 'id_cart' => (int)$id_cart, 'receiver_machine' => $machineName, 'id_carrier' => $order->id_carrier, 'cod' => 0, 'date_add' => date('Y-m-d H:i:s'), 'date_upd' => date('Y-m-d H:i:s'), )); } } /** * @param $id_customer * @return mixed */ public static function getCustomerPackage($id_customer) { return Db::getInstance()->executeS('SELECT i.* FROM `'._DB_PREFIX_.'inpostship` i LEFT JOIN `'._DB_PREFIX_.'orders` o ON o.`id_order` = i.`id_order` WHERE o.`id_customer` = '.(int)$id_customer); } public static function setCurrentStatePack($id_pack, $state) { return Db::getInstance()->update('inpostship', array( 'statue' => $state ), 'id_pack = '.(int)$id_pack); } }