Example #1
0
 public function filter()
 {
     \Bitrix\Main\Loader::includeModule('sale');
     $daysDontBuy = $this->getFieldValue('DAYS_DONT_BUY');
     if (!is_numeric($daysDontBuy)) {
         $daysDontBuy = 90;
     }
     $dateFrom = new \Bitrix\Main\Type\DateTime();
     $dateTo = new \Bitrix\Main\Type\DateTime();
     $dateFrom->setTime(0, 0, 0)->add('-' . $daysDontBuy . ' days');
     $dateTo->setTime(0, 0, 0)->add('1 days')->add('-' . $daysDontBuy . ' days');
     if ($this->isRunForOldData()) {
         $filter = array('<MAX_DATE_INSERT' => $dateTo->format(\Bitrix\Main\UserFieldTable::MULTIPLE_DATETIME_FORMAT));
     } else {
         $filter = array('>MAX_DATE_INSERT' => $dateFrom->format(\Bitrix\Main\UserFieldTable::MULTIPLE_DATETIME_FORMAT), '<MAX_DATE_INSERT' => $dateTo->format(\Bitrix\Main\UserFieldTable::MULTIPLE_DATETIME_FORMAT));
     }
     $filter = $filter + array('=LID' => $this->getSiteId());
     $userListDb = \Bitrix\Sale\OrderTable::getList(array('select' => array('BUYER_USER_ID' => 'BUYER.ID', 'EMAIL' => 'BUYER.EMAIL', 'BUYER_USER_NAME' => 'BUYER.NAME'), 'filter' => $filter, 'runtime' => array(new \Bitrix\Main\Entity\ExpressionField('MAX_DATE_INSERT', 'MAX(%s)', 'DATE_INSERT')), 'order' => array('USER_ID' => 'ASC')));
     if ($userListDb->getSelectedRowsCount() > 0) {
         $userListDb->addFetchDataModifier(array($this, 'getFetchDataModifier'));
         $this->recipient = $userListDb;
         return true;
     } else {
         return false;
     }
 }
Example #2
0
 static function getMap()
 {
     $parent = parent::getMap();
     $child = array(
         'UPDATED_1C' => array(
             'data_type' => 'boolean',
             'values' => array('N', 'Y')
         ),
         'COMMENTS' => array(
             'data_type' => 'string'
         )
     );
     return array_merge($parent, $child);
 }
Example #3
0
 /** @return \CDBResult */
 public function getData()
 {
     $runtime = array();
     $filter = array();
     if ($this->getFieldValue('LID')) {
         $filter['=LID'] = $this->getFieldValue('LID', null);
     }
     if ($this->getFieldValue('ID')) {
         $filter['=ID'] = $this->getFieldValue('ID', 0);
     }
     if ($this->getFieldValue('USER_ID')) {
         $filter['=USER_ID'] = $this->getFieldValue('USER_ID', 0);
     }
     if ($this->getFieldValue('BASKET_PRODUCT_ID')) {
         $filter['=BASKET.PRODUCT_ID'] = $this->getFieldValue('BASKET_PRODUCT_ID', 0);
         $runtime['BASKET'] = array('data_type' => 'Bitrix\\Sale\\Basket', 'reference' => array('=this.ID' => 'ref.ORDER_ID'));
     }
     $resultDb = \Bitrix\Sale\OrderTable::getList(array('select' => array('USER_ID', 'NAME' => 'BUYER.NAME', 'EMAIL' => 'BUYER.EMAIL'), 'filter' => $filter, 'runtime' => $runtime, 'group' => array('USER_ID', 'NAME', 'EMAIL'), 'order' => array('USER_ID' => 'ASC')));
     return new \CDBResult($resultDb);
 }
Example #4
0
 /**
  * Perform reading main data from database, no cache is used for it
  * @throws Main\SystemException
  * @return void
  */
 protected function obtainDataOrder()
 {
     global $USER;
     $select = array('ID', 'LID', 'PERSON_TYPE_ID', 'PAYED', 'DATE_PAYED', 'EMP_PAYED_ID', 'CANCELED', 'DATE_CANCELED', 'EMP_CANCELED_ID', 'REASON_CANCELED', 'MARKED', 'DATE_MARKED', 'EMP_MARKED_ID', 'REASON_MARKED', 'STATUS_ID', 'DATE_STATUS', 'EMP_STATUS_ID', 'PRICE_DELIVERY', 'PRICE', 'CURRENCY', 'DISCOUNT_VALUE', 'USER_ID', 'DATE_INSERT', 'DATE_INSERT_FORMAT', 'DATE_UPDATE', 'USER_DESCRIPTION', 'ADDITIONAL_INFO', 'COMMENTS', 'TAX_VALUE', 'STAT_GID', 'RECURRING_ID', 'RECOUNT_FLAG', 'ORDER_TOPIC', 'ACCOUNT_NUMBER', 'XML_ID');
     $sort = array("ID" => "ASC");
     $filter = array("USER_ID" => $USER->GetID(), "ACCOUNT_NUMBER" => $this->requestData["ID"]);
     $arOrder = false;
     if ($this->options['USE_ACCOUNT_NUMBER']) {
         $res = \Bitrix\Sale\OrderTable::getList(array('filter' => $filter, 'select' => $select));
         if ($arOrder = $res->fetch()) {
             $this->requestData["ID"] = $arOrder["ID"];
         }
     }
     if (!$arOrder) {
         $filter = array("USER_ID" => $USER->GetID(), "ID" => $this->requestData["ID"]);
         $res = \Bitrix\Sale\OrderTable::getList(array('filter' => $filter, 'select' => $select));
         $arOrder = $res->fetch();
     }
     if (empty($arOrder)) {
         throw new Main\SystemException(str_replace("#ID#", $this->requestData["ID"], Localization\Loc::getMessage("SPOD_NO_ORDER")), self::E_ORDER_NOT_FOUND);
     }
     $arOShipment = array();
     $dbShipment = \Bitrix\Sale\Internals\ShipmentTable::getList(array('select' => array('DELIVERY_NAME', 'DEDUCTED', 'DATE_DEDUCTED', 'EMP_DEDUCTED_ID', 'REASON_UNDO_DEDUCTED', 'SYSTEM', 'ID', 'DELIVERY_ID', 'TRACKING_NUMBER', 'TRACKING_STATUS', 'TRACKING_DESCRIPTION', 'ALLOW_DELIVERY', 'DATE_ALLOW_DELIVERY', 'EMP_ALLOW_DELIVERY_ID', 'RESERVED', 'DELIVERY_DOC_NUM', 'DELIVERY_DOC_DATE'), 'filter' => array('ORDER_ID' => $arOrder['ID'])));
     while ($arShipment = $dbShipment->fetch()) {
         if ($arShipment['SYSTEM'] == 'Y') {
             continue;
         }
         $dbShipmentItem = \Bitrix\Sale\Internals\ShipmentItemTable::getList(array('select' => array('BASKET_ID', 'QUANTITY'), 'filter' => array('ORDER_DELIVERY_ID' => $arShipment['ID'])));
         $shipmentItems = array();
         while ($shipmentItem = $dbShipmentItem->fetch()) {
             $shipmentItem['QUANTITY'] = \Bitrix\Sale\BasketItem::formatQuantity($shipmentItem['QUANTITY']);
             $shipmentItems[$shipmentItem['BASKET_ID']] = $shipmentItem;
         }
         $arShipment['ITEMS'] = $shipmentItems;
         $arShipment['TRACKING_STATUS'] = \Bitrix\Sale\Delivery\Tracking\Manager::getStatusName($arShipment['TRACKING_STATUS']);
         $arOShipment[] = $arShipment;
     }
     $arOrder['SHIPMENT'] = $arOShipment;
     // for compatibility
     if (!empty($this->compatibilityShipmentFields) && is_array($this->compatibilityShipmentFields)) {
         foreach ($this->compatibilityShipmentFields as $shipmentField) {
             if (isset($arOShipment[0][$shipmentField])) {
                 $setFieldValue = $arOShipment[0][$shipmentField];
                 if ($setFieldValue instanceof Main\Type\Date || $setFieldValue instanceof Main\Type\DateTime) {
                     $setFieldValue = $setFieldValue->toString();
                 }
                 $arOrder[$shipmentField] = $setFieldValue;
             }
         }
     }
     //		$arOrder['DELIVERY_ID'] = $arOShipment[0]['DELIVERY_ID'];
     //		$arOrder['TRACKING_NUMBER'] = $arOShipment[0]['TRACKING_NUMBER'];
     $dbPayment = \Bitrix\Sale\Internals\PaymentTable::getList(array('select' => array('PAY_SYSTEM_NAME', 'PAID', 'ID', 'DATE_PAID', 'PAY_SYSTEM_ID', 'SUM', 'PAY_VOUCHER_NUM', 'PAY_VOUCHER_DATE', 'PS_STATUS', 'PS_STATUS_CODE', 'PS_STATUS_DESCRIPTION', 'PS_STATUS_MESSAGE', 'PS_SUM', 'PS_CURRENCY', 'PS_RESPONSE_DATE', 'DATE_PAY_BEFORE', 'DATE_BILL'), 'filter' => array('ORDER_ID' => $arOrder['ID'])));
     $arOPayment = array();
     while ($arPayment = $dbPayment->fetch()) {
         $arPayment['PAY_SYSTEM_NAME'] = htmlspecialcharsbx($arPayment['PAY_SYSTEM_NAME']);
         $arOPayment[] = $arPayment;
     }
     $arOrder['PAYMENT'] = $arOPayment;
     // for compatibility
     //		$arOrder['PAY_SYSTEM_ID'] = $arOPayment[0]['PAY_SYSTEM_ID'];
     //		$arOrder['PAY_VOUCHER_NUM'] = $arOPayment[0]['PAY_VOUCHER_NUM'];
     if (!empty($this->compatibilityPaymentFields) && is_array($this->compatibilityPaymentFields)) {
         foreach ($this->compatibilityPaymentFields as $paymentName => $paymentField) {
             $findPaymentField = $paymentField;
             if (intval($paymentName) !== $paymentName) {
                 $findPaymentField = $paymentName;
             }
             if (isset($arOPayment[0][$findPaymentField])) {
                 $setFieldValue = $arOPayment[0][$findPaymentField];
                 if ($setFieldValue instanceof Main\Type\Date || $setFieldValue instanceof Main\Type\DateTime) {
                     $setFieldValue = $setFieldValue->toString();
                 }
                 $arOrder[$paymentField] = $setFieldValue;
             }
         }
     }
     $this->dbResult = $arOrder;
 }
Example #5
0
 public static function catchCatalogOrderPayment($orderId, $value)
 {
     if (!static::isOn()) {
         return;
     }
     if ($value == 'Y') {
         $data = static::getOrderInfo($orderId);
         // catalog items only
         if (empty($data['products'])) {
             return;
         }
         // add bxuid
         $data['bx_user_id'] = static::getBxUserId();
         if (empty($data['bx_user_id']) && OrderTable::getEntity()->hasField('BX_USER_ID')) {
             $order = OrderTable::getRow(array('select' => array('BX_USER_ID'), 'filter' => array('=ID' => $orderId)));
             if (!empty($order) && !empty($order['BX_USER_ID'])) {
                 $data['bx_user_id'] = $order['BX_USER_ID'];
             }
         }
         // add general info
         $data['paid'] = '1';
         $data['domain'] = Context::getCurrent()->getServer()->getHttpHost();
         $data['date'] = date(DATE_ISO8601);
         CounterDataTable::add(array('TYPE' => 'order_pay', 'DATA' => $data));
     }
 }