Перейти к содержанию

Рекомендуемые сообщения

Привет всем!

 

как реализовать сумму прописью в пдф счете?

нашел здесь на форуме такой код:

 

function num2str($inn, $stripkop=false) {
$nol = 'ноль';
$str[100]= array('','сто','двести','триста','четыреста','пятьсот','шестьсот', 'семьсот', 'восемьсот','девятьсот');
$str[11] = array('','десять','одиннадцать','двенадцать','тринадцать', 'четырнадцать','пятнадцать','шестнадцать','семнадцать', 'восемнадцать','девятнадцать','двадцать');
$str[10] = array('','десять','двадцать','тридцать','сорок','пятьдесят', 'шестьдесят','семьдесят','восемьдесят','девяносто');
$sex = array(
array('','один','два','три','четыре','пять','шесть','семь', 'восемь','девять'),// m
array('','одна','две','три','четыре','пять','шесть','семь', 'восемь','девять') // f
);
$forms = array(
array('копейка', 'копейки', 'копеек', 1), // 10^-2
array('рубль', 'рубля', 'рублей', 0), // 10^ 0
array('тысяча', 'тысячи', 'тысяч', 1), // 10^ 3
array('миллион', 'миллиона', 'миллионов', 0), // 10^ 6
array('миллиард', 'миллиарда', 'миллиардов', 0), // 10^ 9
array('триллион', 'триллиона', 'триллионов', 0), // 10^12
);
$out = $tmp = array();
// Поехали!
$tmp = explode('.', str_replace(',','.', $inn));
$rub = number_format($tmp[ 0], 0,'','-');
if ($rub== 0) $out[] = $nol;
// нормализация копеек
$kop = isset($tmp[1]) ? substr(str_pad($tmp[1], 2, '0', STR_PAD_RIGHT), 0,2) : '00';
$segments = explode('-', $rub);
$offset = sizeof($segments);
if ((int)$rub== 0) { // если 0 рублей
$o[] = $nol;
$o[] = morph( 0, $forms[1][ 0],$forms[1][1],$forms[1][2]);
}
else {
foreach ($segments as $k=>$lev) {
$sexi= (int) $forms[$offset][3]; // определяем род
$ri = (int) $lev; // текущий сегмент
if ($ri== 0 && $offset>1) {// если сегмент==0 & не последний уровень(там Units)
$offset--;
continue;
}
// нормализация
$ri = str_pad($ri, 3, '0', STR_PAD_LEFT);
// получаем циферки для анализа
$r1 = (int)substr($ri, 0,1); //первая цифра
$r2 = (int)substr($ri,1,1); //вторая
$r3 = (int)substr($ri,2,1); //третья
$r22= (int)$r2.$r3; //вторая и третья
// разгребаем порядки
if ($ri>99) $o[] = $str[100][$r1]; // Сотни
if ($r22>20) {// >20
$o[] = $str[10][$r2];
$o[] = $sex[ $sexi ][$r3];
}
else { // <=20
if ($r22>9) $o[] = $str[11][$r22-9]; // 10-20
elseif($r22> 0) $o[] = $sex[ $sexi ][$r3]; // 1-9
}
// Рубли
$o[] = morph($ri, $forms[$offset][ 0],$forms[$offset][1],$forms[$offset][2]);
$offset--;
}
}
// Копейки
if (!$stripkop) {
$o[] = $kop;
$o[] = morph($kop,$forms[ 0][ 0],$forms[ 0][1],$forms[ 0][2]);
}
return preg_replace("/\s{2,}/",' ',implode(' ',$o));
}

/**
* Склоняем словоформу
*/
function morph($n, $f1, $f2, $f5) {
$n = abs($n) % 100;
$n1= $n % 10;
if ($n>10 && $n<20) return $f5;
if ($n1>1 && $n1<5) return $f2;
if ($n1==1) return $f1;
return $f5;
}
 

как его прикрутить к модулю пдф счета в ocStore 2.1.0.2

Изменено пользователем shoputils
code в [code]

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

ручками.

своими / автора модуля pdf-счета / стороннего разработчика.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

ручками.

своими / автора модуля pdf-счета / стороннего разработчика.

 

если своими, то как?

если не в западло, то подскажите.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

модуль платный:

https://www.opencart.com/index.php?route=marketplace/extension/info&extension_id=22647

 

поделюсь модулем, кто поможет решить несколько задач по модулю

 

1. в мультиязычном сайте надо чтоб ПДФ счет генерировался только на одном языке по умолчанию, в настройках модуля есть опция язык по умолчанию, (разработчик реализовал но не полностью,(говорит что полностью реализовать невозможно, названию товара и опции товара нельзя установить язык по умолчанию, остальному может быть). Слабо в это верится что нельзя, ведь в БД есть и название товара и опции товара на всех языках сайта, значит должна быть возможность взять только нужный язык из базы.

 

часть переменных остается на другом языке, 

например: если сайт имеет русский и английский язык, (в настройках модуля язык счета по умолчанию русский) клиент заходит на английскую версию, делает заказ, и потом в админке, админка на русском языке, смотреть этот пдф счет то часть данных в счете остается на английском, а конкретно: название товара, опция товара, предварительная сумма и итоговая сумма) . надо сделать чтоб весь пдф счет и тот что отправляется клиенту на майл с письмом после заказа и тот что просматривается в админке был только на одном языке что выставлен в настройках по умолчанию.

 

2. итоговая сумма прописью на языке счета по умолчанию.

Изменено пользователем VjS

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

за фразу "поделюсь модулем" можно улететь на бан-ановые острова.

1. все правильно автор говорит - в базу о заказе пишется название только на одном языке, который стоит у покупателя в момент оформления заказа.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

за фразу "поделюсь модулем" можно улететь на бан-ановые острова.

1. все правильно автор говорит - в базу о заказе пишется название только на одном языке, который стоит у покупателя в момент оформления заказа.

 

немного не понял про "острова"

это же в знак благодарности, никого этой фразой обидеть и не думал даже.

 

1. да, в базу пишется название только на одном языке, на котором делал заказ клиент, но в самой базе есть же название товара на всех языках в таблице oc_product_description, разве нельзя както взять нужное название или указать ID_language или чтото в этом роде?

Изменено пользователем VjS

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты
$options = $this->model_sale_order->getOrderOptions($order_id, $product['order_product_id']);

language_id добавить в эту переменную как то можно?

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

к моменту, когда менеджер доберется до заказа, товар может быть уже переименован (или вовсе удален).

чтобы это не потревожило ранимую душу менеджера все данные берутся "из истории заказа".

сделать можно.

только не очень целесообразно.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

дело в том что по законам государства все счета должны быть на гос языке, а гос язык один, отсюда и необходимость счета на одном языке.

о менеджере государство не думает :)

 

так как все же это можно сделать?

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

понятно.

лучше для этого писать отдельные запросы в модели, чтобы не трогать остальной функционал.

это в частном порядке под конкретный магазин.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Для публикации сообщений создайте учётную запись или авторизуйтесь

Вы должны быть пользователем, чтобы оставить комментарий

Создать учетную запись

Зарегистрируйте новую учётную запись в нашем сообществе. Это очень просто!

Регистрация нового пользователя

Войти

Уже есть аккаунт? Войти в систему.

Войти

  • Последние посетители   0 пользователей онлайн

    Ни одного зарегистрированного пользователя не просматривает данную страницу

×

Важная информация

На нашем сайте используются файлы cookie и происходит обработка некоторых персональных данных пользователей, чтобы улучшить пользовательский интерфейс. Чтобы узнать для чего и какие персональные данные мы обрабатываем перейдите по ссылке. Если Вы нажмете «Я даю согласие», это означает, что Вы понимаете и принимаете все условия, указанные в этом Уведомлении о Конфиденциальности.