Ejemplo n.º 1
0
    public static function getEdit(Order $order, \CUser $user, $showCancel, $showSaveButton)
    {
        $data = self::prepareData($order);
        if ($showCancel) {
            $bUserCanCancelOrder = \CSaleOrder::CanUserCancelOrder($order->getId(), $user->GetUserGroupArray(), $user->GetID());
        } else {
            $bUserCanCancelOrder = false;
        }
        $result = '
			<table border="0" cellspacing="0" cellpadding="0" width="100%" class="adm-detail-content-table edit-table">
				<tbody>
					<tr>
						<td class="adm-detail-content-cell-l" width="40%">' . Loc::getMessage("SALE_ORDER_STATUS_CREATED") . ':</td>
						<td class="adm-detail-content-cell-r">
							<div>' . $data["DATE_INSERT"] . '&nbsp;<a href="/bitrix/admin/user_edit.php?lang=' . LANGUAGE_ID . '&ID=' . $data["CREATOR_USER_ID"] . '">' . htmlspecialcharsbx($data["CREATOR_USER_NAME"]) . '</a>
							</div>
						</td>
					</tr>
					<tr>
						<td class="adm-detail-content-cell-l">' . Loc::getMessage("SALE_ORDER_STATUS_LAST_MODIF") . ':</td>
						<td class="adm-detail-content-cell-r"><div>' . $data["DATE_UPDATE"] . '</div></td>
					</tr>
					<tr>
						<td class="adm-detail-content-cell-l">' . Loc::getMessage("SALE_ORDER_STATUS_SITE") . ':</td>
						<td class="adm-detail-content-cell-r"><div>' . htmlspecialcharsbx(\Bitrix\Sale\Helpers\Admin\OrderEdit::getSiteName($order->getSiteId())) . '</div></td>
					</tr>';
        if (strlen($data['SOURCE_NAME']) > 0) {
            $result .= '<tr>' . '<td class="adm-detail-content-cell-l">' . Loc::getMessage("SALE_ORDER_STATUS_SOURCE") . ':</td>' . '<td class="adm-detail-content-cell-r">' . $data['SOURCE_NAME'] . '</td>' . '</tr>';
        }
        $result .= '<tr>
						<td class="adm-detail-content-cell-l">' . Loc::getMessage("SALE_ORDER_STATUS") . ':</td>
						<td class="adm-detail-content-cell-r">' . \Bitrix\Sale\Helpers\Admin\OrderEdit::makeSelectHtml("STATUS_ID", self::getStatusesList($user->GetID(), $data["STATUS_ID"]), $data["STATUS_ID"], false, array("class" => "adm-bus-select", "id" => "STATUS_ID"));
        if ($showSaveButton) {
            $result .= '
									&nbsp;
									<span id="save_status_button" class="adm-btn" onclick="BX.Sale.Admin.OrderEditPage.onSaveStatusButton(\'' . $order->getId() . '\',\'STATUS_ID\');">
										' . Loc::getMessage("SALE_ORDER_STATUS_SAVE") . '
									</span>';
        }
        $result .= '</td>
			</tr>';
        if ($showCancel && $bUserCanCancelOrder) {
            $result .= self::getCancelBlockHtml($order, $data);
        }
        $result .= '</tbody>
			</table>
			';
        return $result;
    }
Ejemplo n.º 2
0
if ($boolLocked && $saleModulePermissions >= 'W')
{
	$aMenu[] = array(
		"TEXT" => GetMessage("SOE_TO_UNLOCK"),
		"LINK" => "/bitrix/admin/sale_order_new.php?ID=".$ID."&unlock=Y&lang=".LANGUAGE_ID.GetFilterParams("filter_"),
	);
}

$link = urlencode(DeleteParam(array("mode")));
$link = urlencode($APPLICATION->GetCurPage())."?mode=settings".($link <> "" ? "&".$link: "");

$bUserCanViewOrder = CSaleOrder::CanUserViewOrder($ID, $arUserGroups, $intUserID);
$bUserCanEditOrder = CSaleOrder::CanUserUpdateOrder($ID, $arUserGroups, $LID);
$bUserCanDeleteOrder = CSaleOrder::CanUserDeleteOrder($ID, $arUserGroups, $intUserID);
$bUserCanCancelOrder = CSaleOrder::CanUserCancelOrder($ID, $arUserGroups, $intUserID);
$bUserCanDeductOrder = CSaleOrder::CanUserChangeOrderFlag($ID, "PERM_DEDUCTION", $arUserGroups);
$bUserCanMarkOrder = CSaleOrder::CanUserMarkOrder($ID, $arUserGroups, $intUserID);
$bUserCanPayOrder = CSaleOrder::CanUserChangeOrderFlag($ID, "P", $arUserGroups);
$bUserCanDeliverOrder = CSaleOrder::CanUserChangeOrderFlag($ID, "D", $arUserGroups);

if ($bUserCanViewOrder && $ID > 0)
{
	$aMenu[] = array(
		"TEXT" => GetMessage("NEWO_DETAIL"),
		"TITLE"=>GetMessage("NEWO_DETAIL_TITLE"),
		"LINK" => "/bitrix/admin/sale_order_detail.php?ID=".$ID."&lang=".LANGUAGE_ID.GetFilterParams("filter_")
	);
}

if ($ID > 0)
Ejemplo n.º 3
0
 /**
  * Filling the order data from request
  *
  * @internal
  *
  * @param Sale\Order $order		Entity order.
  * @param array $fields			An array of request data.
  *
  * @return Sale\Result
  */
 public static function fillOrderFromRequest(Sale\Order $order, array $fields)
 {
     global $USER;
     $result = new Sale\Result();
     if (isset($fields['CANCELED'])) {
         if ($order->getId() > 0 && $order->getField('CANCELED') != $fields['CANCELED']) {
             if (!\CSaleOrder::CanUserCancelOrder($order->getId(), $USER->GetUserGroupArray(), $USER->GetID())) {
                 $result->addError(new Sale\ResultError(Main\Localization\Loc::getMessage('SALE_COMPATIBLE_ORDER_CANCEL_NO_PERMISSION'), 'SALE_COMPATIBLE_ORDER_CANCEL_NO_PERMISSION'));
                 return $result;
             }
             /** @var Sale\Result $r */
             $r = $order->setField('CANCELED', $fields['CANCELED']);
             if (!$r->isSuccess()) {
                 $result->addErrors($r->getErrors());
             }
         }
     }
     if (isset($fields['MARKED'])) {
         if ($order->getId() > 0 && $order->getField('MARKED') != $fields['MARKED']) {
             /** @var Sale\Result $r */
             $r = $order->setField('MARKED', $fields['MARKED']);
             if (!$r->isSuccess()) {
                 $result->addErrors($r->getErrors());
             }
         }
     }
     if ($order->getId() > 0 && !empty($fields['ACCOUNT_NUMBER']) && !empty($fields['SITE_ID'])) {
         $filter = array('filter' => array('ACCOUNT_NUMBER' => $fields['ACCOUNT_NUMBER'], '!ID' => $order->getId()), 'select' => array('ID'));
         if (($res = OrderTable::getList($filter)) && $res->fetch()) {
             $result->addError(new Sale\ResultError(Main\Localization\Loc::getMessage('SALE_COMPATIBLE_ORDER_ACCOUNT_NUMBER_ALREADY_EXISTS'), 'SALE_COMPATIBLE_ORDER_ACCOUNT_NUMBER_ALREADY_EXISTS'));
         }
     }
     return $result;
 }
Ejemplo n.º 4
0
$bVarsFromForm = false;
$PARTIAL_SUBMIT = $PARTIAL_SUBMIT == "Y" ? "Y" : "N";
if ($PARTIAL_SUBMIT == "Y") {
    $bVarsFromForm = true;
    $arInd = array();
    $ids = array();
    $allIDs = array();
    $arIDs = explode(",", trim($_POST["BASKET_IDS"]));
    foreach ($arIDs as $v) {
        $ids[] = $v;
        $allIDs[] = $v;
    }
}
$bUserCanViewOrder = CSaleOrder::CanUserViewOrder($ID, $GLOBALS["USER"]->GetUserGroupArray(), $GLOBALS["USER"]->GetID());
$bUserCanEditOrder = CSaleOrder::CanUserUpdateOrder($ID, $GLOBALS["USER"]->GetUserGroupArray());
$bUserCanCancelOrder = CSaleOrder::CanUserCancelOrder($ID, $GLOBALS["USER"]->GetUserGroupArray(), $GLOBALS["USER"]->GetID());
$bUserCanPayOrder = CSaleOrder::CanUserChangeOrderFlag($ID, "P", $GLOBALS["USER"]->GetUserGroupArray());
$bUserCanDeliverOrder = CSaleOrder::CanUserChangeOrderFlag($ID, "D", $GLOBALS["USER"]->GetUserGroupArray());
$bUserCanDeleteOrder = CSaleOrder::CanUserDeleteOrder($ID, $GLOBALS["USER"]->GetUserGroupArray(), $GLOBALS["USER"]->GetID());
$simpleForm = COption::GetOptionString("sale", "lock_catalog", "Y");
$bSimpleForm = $simpleForm == "Y" ? True : False;
if ($action == "update" && $saleModulePermissions >= "U" && $_SERVER["REQUEST_METHOD"] == "POST" && check_bitrix_sessid() && $bUserCanEditOrder && $PARTIAL_SUBMIT != "Y" && empty($dontsave)) {
    // *****************************************************************
    // *****  Preparing  ***********************************************
    // *****************************************************************
    $bTrabsactionStarted = False;
    // Order params
    $currentDate = Date(CDatabase::DateFormatToPHP(CLang::GetDateFormat("FULL", LANG)));
    $dbOrderTmp = CSaleOrder::GetList(array(), array("ID" => $ID));
    //GetByID($ID);
    $arOrder = $dbOrderTmp->Fetch();
Ejemplo n.º 5
0
							preventHide: true,
							min_width: 250,
							hint: '".CUtil::JSEscape($fieldValueTmp)."'
						});
				";
			}
		}
	}
	$row->AddField("PAYED", $fieldValue);
	$row->AddField("PAY_VOUCHER_NUM", $f_PAY_VOUCHER_NUM);
	$row->AddField("PAY_VOUCHER_DATE", $f_PAY_VOUCHER_DATE);
	$row->AddField("DELIVERY_DOC_NUM", $f_DELIVERY_DOC_NUM);
	$row->AddField("DELIVERY_DOC_DATE", $f_DELIVERY_DOC_DATE);

	if ($row->bEditMode != true
		|| $row->bEditMode == true && !CSaleOrder::CanUserCancelOrder($f_ID, $arUserGroups, $intUserID))
	{
		$fieldValue = "";
		if (in_array("CANCELED", $arVisibleColumns))
		{
			$fieldValue .= "<span id=\"cancel_".$arOrder["ID"]."\">".(($arOrder["CANCELED"] == "Y") ? GetMessage("SO_YES") : GetMessage("SO_NO"))."</span>";
			$fieldValueTmp = $arOrder["DATE_CANCELED"];
			if (IntVal($arOrder["DATE_CANCELED"]) > 0)
			{
				if (IntVal($arOrder["EMP_CANCELED_ID"]) > 0)
				{
					if (!isset($LOCAL_PAYED_USER_CACHE[$arOrder["EMP_CANCELED_ID"]])
						|| empty($LOCAL_PAYED_USER_CACHE[$arOrder["EMP_CANCELED_ID"]]))
					{
						$dbUser = CUser::GetByID($arOrder["EMP_CANCELED_ID"]);
						if ($arUser = $dbUser->Fetch())
Ejemplo n.º 6
0
 protected function cancelOrderAction()
 {
     global $USER;
     $orderId = isset($this->request['orderId']) ? intval($this->request['orderId']) : 0;
     $canceled = isset($this->request['canceled']) ? $this->request['canceled'] : "N";
     $comment = isset($this->request['comment']) ? trim($this->request['comment']) : "";
     $errors = array();
     if (!\CSaleOrder::CanUserCancelOrder($orderId, $USER->GetUserGroupArray(), $this->userId)) {
         throw new UserMessageException("Insufficient rights to cancel order");
     }
     /** @var  \Bitrix\Sale\Order $saleOrder*/
     if (!($saleOrder = \Bitrix\Sale\Order::load($orderId))) {
         throw new UserMessageException("Can't load order with id: " . $orderId);
     }
     $state = $saleOrder->getField("CANCELED");
     if ($state != $canceled) {
         throw new UserMessageException($state == "Y" ? "Order already canceled." : "Order not canceled yet.");
     }
     /** @var \Bitrix\Sale\Result $res */
     $res = $saleOrder->setField("CANCELED", $canceled == "Y" ? "N" : "Y");
     if (!$res->isSuccess()) {
         $errors = array_merge($errors, $res->getErrorMessages());
     }
     $saleOrder->setField("REASON_CANCELED", $canceled == "N" ? $comment : "");
     if (!($res = $saleOrder->save())) {
         $errors = array_merge($errors, $res->getErrorMessages());
     }
     $canceled = $saleOrder->getField("CANCELED");
     $this->addResultData("CANCELED", $canceled);
     if ($canceled == "Y") {
         $userInfo = Admin\Blocks\OrderStatus::getUserInfo($saleOrder->getField("EMP_CANCELED_ID"));
         $this->addResultData("DATE_CANCELED", $saleOrder->getField("DATE_CANCELED")->toString());
         $this->addResultData("EMP_CANCELED_ID", $saleOrder->getField("EMP_CANCELED_ID"));
         $this->addResultData("EMP_CANCELED_NAME", $userInfo["NAME"] . " (" . $userInfo["LOGIN"] . ")");
     }
     if (!empty($errors)) {
         throw new UserMessageException(implode("<br>\n", $errors));
     }
 }
Ejemplo n.º 7
0
 /**
  * Cancel order
  *
  * @param int $orderId		Order ID.
  * @param string $value		The cancel key(Y/N).
  * @return Sale\Result
  * @throws \Bitrix\Main\ArgumentNullException
  */
 public static function cancel($orderId, $value)
 {
     global $USER;
     $result = new Sale\Result();
     if (intval($orderId) <= 0) {
         $result->addError(new Sale\ResultError(Main\Localization\Loc::getMessage('SALE_COMPATIBLE_ORDER_ID_NOT_FOUND'), 'SALE_COMPATIBLE_ORDER_ID_NOT_FOUND'));
         return $result;
     }
     if (!\CSaleOrder::CanUserCancelOrder($orderId, $USER->GetUserGroupArray(), $USER->GetID())) {
         $result->addError(new Sale\ResultError(Main\Localization\Loc::getMessage('SALE_COMPATIBLE_ORDER_CANCEL_NO_PERMISSION'), 'SALE_COMPATIBLE_ORDER_CANCEL_NO_PERMISSION'));
         return $result;
     }
     /** @var Sale\Order $order */
     if (!($order = Sale\Order::load($orderId))) {
         $result->addError(new Sale\ResultError(Main\Localization\Loc::getMessage('SALE_COMPATIBLE_ORDER_NOT_FOUND'), 'SALE_COMPATIBLE_ORDER_NOT_FOUND'));
         return $result;
     }
     /** @var Sale\Result $r */
     $r = $order->setField('CANCELED', $value);
     if (!$r->isSuccess()) {
         $result->addErrors($r->getErrors());
     }
     $r = $order->save();
     if (!$r->isSuccess()) {
         $result->addErrors($r->getErrors());
     }
     return $result;
 }
Ejemplo n.º 8
0
                 }
             }
             $fieldValueTmp .= "<br />[<a href=\"/bitrix/admin/user_edit.php?ID=" . $arOrder["EMP_PAYED_ID"] . "&lang=" . LANG . "\">" . $arOrder["EMP_PAYED_ID"] . "</a>] ";
             $fieldValueTmp .= $LOCAL_PAYED_USER_CACHE[$arOrder["EMP_PAYED_ID"]];
         }
         if (!$bExport) {
             $fieldValue .= "<script type=\"text/javascript\">\n\t\t\t\t\t\tnew top.BX.CHint({\n\t\t\t\t\t\t\tparent: top.BX('payed_" . $arOrder["ID"] . "'),\n\t\t\t\t\t\t\tshow_timeout: 10,\n\t\t\t\t\t\t\thide_timeout: 100,\n\t\t\t\t\t\t\tdx: 2,\n\t\t\t\t\t\t\tpreventHide: true,\n\t\t\t\t\t\t\tmin_width: 250,\n\t\t\t\t\t\t\thint: '" . CUtil::JSEscape($fieldValueTmp) . "'\n\t\t\t\t\t\t});\n\t\t\t\t\t</script>";
         }
     }
 }
 $row->AddField("PAYED", $fieldValue);
 $row->AddField("PAY_VOUCHER_NUM", $f_PAY_VOUCHER_NUM);
 $row->AddField("PAY_VOUCHER_DATE", $f_PAY_VOUCHER_DATE);
 $row->AddField("DELIVERY_DOC_NUM", $f_DELIVERY_DOC_NUM);
 $row->AddField("DELIVERY_DOC_DATE", $f_DELIVERY_DOC_DATE);
 if ($row->bEditMode != true || $row->bEditMode == true && !CSaleOrder::CanUserCancelOrder($f_ID, $GLOBALS["USER"]->GetUserGroupArray(), $GLOBALS["USER"]->GetID())) {
     $fieldValue = "";
     if (in_array("CANCELED", $arVisibleColumns)) {
         $fieldValue .= "<span id=\"cancel_" . $arOrder["ID"] . "\">" . ($arOrder["CANCELED"] == "Y" ? GetMessage("SO_YES") : GetMessage("SO_NO")) . "</span>";
         $fieldValueTmp = $arOrder["DATE_CANCELED"];
         if (IntVal($arOrder["DATE_CANCELED"]) > 0) {
             if (IntVal($arOrder["EMP_CANCELED_ID"]) > 0) {
                 if (!isset($LOCAL_PAYED_USER_CACHE[$arOrder["EMP_CANCELED_ID"]]) || empty($LOCAL_PAYED_USER_CACHE[$arOrder["EMP_CANCELED_ID"]])) {
                     $dbUser = CUser::GetByID($arOrder["EMP_CANCELED_ID"]);
                     if ($arUser = $dbUser->Fetch()) {
                         $LOCAL_PAYED_USER_CACHE[$arOrder["EMP_CANCELED_ID"]] = htmlspecialcharsEx($arUser["NAME"] . (strlen($arUser["NAME"]) <= 0 || strlen($arUser["LAST_NAME"]) <= 0 ? "" : " ") . $arUser["LAST_NAME"] . " (" . $arUser["LOGIN"] . ")");
                     }
                 }
                 $fieldValueTmp .= "<br />[<a href=\"/bitrix/admin/user_edit.php?ID=" . $arOrder["EMP_CANCELED_ID"] . "&lang=" . LANG . "\">" . $arOrder["EMP_CANCELED_ID"] . "</a>] ";
                 $fieldValueTmp .= $LOCAL_PAYED_USER_CACHE[$arOrder["EMP_CANCELED_ID"]];
             }
Ejemplo n.º 9
0
 $fieldValue = "";
 if (in_array("PAYED", $arVisibleColumns)) {
     $fieldValue .= '<span id="payed_' . $arOrder['ID'] . '">' . ($arOrder["PAYED"] == "Y" ? Loc::getMessage("SO_YES") : Loc::getMessage("SO_NO")) . "</span>";
     $fieldValueTmp = $arOrder["DATE_PAYED"];
     if (strlen($arOrder["DATE_PAYED"]) > 0) {
         if (IntVal($arOrder["EMP_PAYED_ID"]) > 0) {
             $fieldValueTmp .= '<br />' . $formattedUserNames[$arOrder["EMP_PAYED_ID"]];
         }
         if (!$bExport) {
             $sScript .= "\n\t\t\t\t\t\t\tnew top.BX.CHint({\n\t\t\t\t\t\t\t\tparent: top.BX('payed_" . $arOrder["ID"] . "'),\n\t\t\t\t\t\t\t\tshow_timeout: 10,\n\t\t\t\t\t\t\t\thide_timeout: 100,\n\t\t\t\t\t\t\t\tdx: 2,\n\t\t\t\t\t\t\t\tpreventHide: true,\n\t\t\t\t\t\t\t\tmin_width: 250,\n\t\t\t\t\t\t\t\thint: '" . CUtil::JSEscape($fieldValueTmp) . "'\n\t\t\t\t\t\t\t});\n\t\t\t\t\t";
         }
     }
 }
 $row->AddField("PAYED", $fieldValue);
 //CANCELED
 if ($row->bEditMode != true || $row->bEditMode == true && !CSaleOrder::CanUserCancelOrder($orderId, $arUserGroups, $intUserID)) {
     $fieldValue = "";
     if (in_array("CANCELED", $arVisibleColumns)) {
         $fieldValue .= '<span id="cancel_' . $arOrder['ID'] . '">' . ($arOrder["CANCELED"] == "Y" ? Loc::getMessage("SO_YES") : Loc::getMessage("SO_NO")) . "</span>";
         $fieldValueTmp = $arOrder["DATE_CANCELED"];
         if (IntVal($arOrder["DATE_CANCELED"]) > 0) {
             if (IntVal($arOrder["EMP_CANCELED_ID"]) > 0) {
                 $fieldValueTmp .= '<br />' . $formattedUserNames[$arOrder["EMP_CANCELED_ID"]];
             }
             if (!$bExport) {
                 $sScript .= "\n\t\t\t\t\t\t\tnew top.BX.CHint({\n\t\t\t\t\t\t\t\tparent: top.BX('cancel_" . $arOrder["ID"] . "'),\n\t\t\t\t\t\t\t\tshow_timeout: 10,\n\t\t\t\t\t\t\t\thide_timeout: 100,\n\t\t\t\t\t\t\t\tdx: 2,\n\t\t\t\t\t\t\t\tpreventHide: true,\n\t\t\t\t\t\t\t\tmin_width: 250,\n\t\t\t\t\t\t\t\thint: '" . CUtil::JSEscape($fieldValueTmp) . "'\n\t\t\t\t\t\t\t});\n\t\t\t\t\t\t";
             }
         }
     }
     $row->AddField("CANCELED", $fieldValue, true);
 } else {
Ejemplo n.º 10
0
 /**
  * Filling the order data from request
  *
  * @internal
  *
  * @param Sale\Order $order		Entity order.
  * @param array $fields			An array of request data.
  *
  * @return Sale\Result
  */
 public static function fillOrderFromRequest(Sale\Order $order, array $fields)
 {
     global $USER;
     $result = new Sale\Result();
     if (isset($fields['CANCELED'])) {
         if ($order->getId() > 0 && $order->getField('CANCELED') != $fields['CANCELED']) {
             if (!\CSaleOrder::CanUserCancelOrder($order->getId(), $USER->GetUserGroupArray(), $USER->GetID())) {
                 $result->addError(new Sale\ResultError(Main\Localization\Loc::getMessage('SALE_COMPATIBLE_ORDER_CANCEL_NO_PERMISSION'), 'SALE_COMPATIBLE_ORDER_CANCEL_NO_PERMISSION'));
                 return $result;
             }
             /** @var Sale\Result $r */
             $r = $order->setField('CANCELED', $fields['CANCELED']);
             if (!$r->isSuccess()) {
                 $result->addErrors($r->getErrors());
             }
         }
     }
     if (isset($fields['MARKED'])) {
         if ($order->getId() > 0 && $order->getField('MARKED') != $fields['MARKED']) {
             /** @var Sale\Result $r */
             $r = $order->setField('MARKED', $fields['MARKED']);
             if (!$r->isSuccess()) {
                 $result->addErrors($r->getErrors());
             }
         }
     }
     return $result;
 }