Блог Bingam

Сен/25

23

Формат цен в 1С-БУС

Эта запись для меня в будущем. Ну и для всех желающих. Допустим у нас есть код «PRICE» => $order[«PRICE»], который выводит цену в формате 1234.5678, а нам надо 1234,57. Тогда надо использовать функцию `number_format` для форматирования цены.
`number_format($order[«PRICE»], 2, ‘,’, ‘ ‘)`, где:
— `2` — количество знаков после запятой.
— `’,’` — разделитель десятичных знаков (запятая).
— `’ ‘` — разделитель тысяч (пробел).
Получаем:
«PRICE» => number_format($order[«PRICE»], 2, ‘,’, ‘ ‘),
Теперь она будет отображаться как `1 234,57`.

Мне понадобилось создать страницу для отображения заказов 2025 года с чеком отгрузки более одного.

```php
< ?php
require($_SERVER["DOCUMENT_ROOT"]."/bitrix/header.php");
$APPLICATION-> SetTitle("Список оплаченных заказов за 2025 год");
// Проверяем, подключен ли модуль интернет-магазина
if (!\Bitrix\Main\Loader::includeModule('sale')) {
    echo "Модуль интернет-магазина не установлен.";
    require($_SERVER["DOCUMENT_ROOT"]."/bitrix/footer.php");
    exit;
}
// Устанавливаем параметры фильтра
$filter = [
    ">=DATE_INSERT" => "01.01.2025 00:00:00",
    "< =DATE_INSERT" => "31.12.2025 23:59:59",
    "PAYED" => "Y" // Только оплаченные заказы
];
// Получаем заказы
$orderList = [];
$orderIterator = \Bitrix\Sale\Order::getList([
    "filter" => $filter,
    "select" => ["ID", "USER_ID", "PRICE", "ACCOUNT_NUMBER"],
    "order" => ["DATE_INSERT" => "ASC"]
]);
while ($order = $orderIterator-> fetch()) {
    // Получаем чеки для заказа
    $checkIterator = \Bitrix\Sale\Cashbox\CheckManager::getList([
        "filter" => ["ORDER_ID" => $order["ID"]],
        "select" => ["ID", "TYPE"]
    ]);
    $checkIds = [];
    $hasFullPaymentCheck = false;
    while ($check = $checkIterator->fetch()) {
        $checkIds[] = $check["ID"];
        // Проверяем тип чека: полный приход (обычно TYPE = 1)
        if ($check["TYPE"] == 1) { // Здесь 1 — это тип полного прихода
            $hasFullPaymentCheck = true;
        }
    }
    // Условие: либо есть чек полного прихода, либо больше двух чеков
    if ($hasFullPaymentCheck || count($checkIds) > 2) {
        // Получаем данные пользователя
        $user = \Bitrix\Main\UserTable::getById($order["USER_ID"])->fetch();
        $orderList[] = [
            "ORDER_NUMBER" => $order["ACCOUNT_NUMBER"],
            "USER_NAME" => $user["LAST_NAME"] . " " . $user["NAME"] . " " . $user["SECOND_NAME"],
            "PRICE" => number_format($order["PRICE"], 2, ',', ' '), // Форматируем сумму
            "CHECK_IDS" => $checkIds
        ];
    }
}
// Выводим данные
if (!empty($orderList)) {
    echo "
";
    echo "
 
Номер заказа
 ФИО покупателя
Сумма
Номера чеков
 
";
    foreach ($orderList as $order) {
        echo "
";
        echo "
" . htmlspecialchars($order["ORDER_NUMBER"]) . "
";
        echo "
" . htmlspecialchars($order["USER_NAME"]) . "
";
        echo "
" . htmlspecialchars($order["PRICE"]) . "
";
        echo "
" . implode(", ", $order["CHECK_IDS"]) . "
";
        echo "
";
    }
    echo "
";
} else {
    echo "Нет заказов, соответствующих заданным критериям.";
}
require($_SERVER["DOCUMENT_ROOT"]."/bitrix/footer.php");
?>

Поделиться в соц. сетях

Опубликовать в Google Buzz
Опубликовать в Google Plus
Опубликовать в LiveJournal
Опубликовать в Мой Мир
Опубликовать в Одноклассники

·

Еще нет комментариев.

Написать коммент

«

»

© 2010-2024 Bingam personal site

Theme Design by devolux.nh2.me

Статистика

Locations of visitors to this page
Яндекс.Метрика

Баннеры

Valid Robots.txt
Наверх