Правка счёта (инвойса)

JoKeR_13

Создатель
Регистрация
4 Июн 2013
Сообщения
35
Реакции
22
Доброго времени!
Подскажите где исправить в счёте "доступность счета" перед номером.
В шаблоне (header.tpl) переменная $title. Где она формируется/переводится?
 
Версия престы????

А вообще полистай темку может найдёшь для себя что то полезное и нужное.
Для просмотра ссылки Войди или Зарегистрируйся
 
Последнее редактирование модератором:
Последнее редактирование модератором:
1.6.0.9


Не устанавливается модуль
В файлике pss_pdfinvoiceplus.php меняем со строки 539
Код:
    public static function isPs15x()
    {
        return self::checkPsVersion('1.5');
    }
на
Код:
    public static function isPs15x()
    {
        return self::checkPsVersion('1.6');
    }
сохраняем и инсталируем модуль.
 
спасибо katyc1, модуль установился. но править invoice не получается. просто белое поле открывается вместо текущего инвойса.

вопрос не совсем по теме, но близко: есть цена 100, есть скидка 10. в счете $order_detail.unit_price_tax_excl выдает цену 90 и рядом скидку -10. может, кто знает как сделать вывод цены 100 в счете?
PS: может кому понадобится или будет повод поправить меня, но пока для решения моего вопроса заменил $order_detail.unit_price_tax_exc на $order_detail.product_price
 
Последнее редактирование:
Попробую подсказать. Переменная $title и "все еже с ними" данные нужно смотреть в:
classes/pdf/HTMLTemplateInvoice.php

Там ты увидишь, что TITLE = Invoice, а, следовательно, идём в переводы счетов и присваиваем перевод соответствующему элементу.

Я в своё время весь счёт переделал под Товарный чек, на мой взгляд самое удобное и необходимое для работы интернет-магазина.
То, что Преста представляет под счётом PDF по умолчанию, это тихий ужас даже со стороны разметки и дизайна документа...

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

Успехов!
Будут вопросы, задавайте, постараюсь помочь.
 
По поводу присвоения цены всего заказа - правильно делаешь, смотри на переменные, что прописаны в PHP или к нему подключены.
Либо подключай сам. Например, для счёта Адрес - это одна переменная, которая генерится по функции в одном из классов.
Генерится она по вертикали (в столбик), и это, думаю, не одного меня бесит в отображении адресов доставки в Престе.

В итоге я в PHP добавил отдельно все переменные адреса, как город, регион, телефон и т.д. И в шаблоне счёта их вывел в нормальном порядке, в отдельных полях, чтобы красиво было.

На самом деле, я уже сделал прилично магазинов, но так до конца не понял, как между собой вяжуться классы, контроллеры и tpl. Точнее, tpl привязывается к классам внутри них самих же.
Поэтому, если кто подскажет, что можно почитать, так сказать "для чайников" в вопросе взаимосвязей в Престе, буду благодарен! ))
 
Попробую подсказать. Переменная $title и "все еже с ними" данные нужно смотреть в:
classes/pdf/HTMLTemplateInvoice.php

Там ты увидишь, что TITLE = Invoice, а, следовательно, идём в переводы счетов и присваиваем перевод соответствующему элементу.

Я в своё время весь счёт переделал под Товарный чек, на мой взгляд самое удобное и необходимое для работы интернет-магазина.
То, что Преста представляет под счётом PDF по умолчанию, это тихий ужас даже со стороны разметки и дизайна документа...

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

Успехов!
Будут вопросы, задавайте, постараюсь помочь.
А не поделитесь каким-нибудь готовым шаблоном счетов для престы 1.6? А лучше сразу несколько выкладывать :)
 
А не поделитесь каким-нибудь готовым шаблоном счетов для престы 1.6? А лучше сразу несколько выкладывать :)

Не вопрос, только для 1.5.0.6, для 1.6 пока не делал, но уверен, всё тоже самое... т.к. код в tpl стандартный HTML+PHP.
Во вложении архив, в котором invoice.tpl (выложить в /pdf/) + Для просмотра ссылки Войди или Зарегистрируйся (выложить в /classes/pdf/). Перед тем, как выложить, сохраните старые версии файлов, если вдруг возникнет ситуация "Что-то пошло не так!" :)

В .php функция, которая прописью выводит сумму + добавленные переменные.
Сразу предупреждаю, что может попасть переменная, которая не подтянется, значит менял что-то ещё, кроме этих файлов, тут уже нужно подумать логически...)) В любом случае переменную можно подтянуть как минимум несколькими способами, в том числе через функции других классов. Используется выражение: $переменная = НАЗВ.КЛАССА::НАЗВ.ФУНКЦИИ();
Пример: $id_lang = Context::getContext()->language->id; - используется функция класса Contex.

Кстати, кто-то может пояснить, чем отличаются конструкции:
1. $переменная = ***
2. $this -> переменная = ***
3. $this->smarty->assign (переменная = ***), с/без использования параметра global $smarty ???
 

Вложения

  • PDF.zip
    5,7 KB · Просмотры: 124
для перевода на украинский язык
HTMLTemplateInvoice.php
PHP:
/**
* Возвращает сумму прописью
* @author runcore
* @uses morph(...)
*/
public static function num2str($num) {
    $nul='нуль';
    $ten=array(
        array('','одна','дві','три','чотири','п'ять','шість','сім','вісім','дев'ять'),
        array('','одна','дві','три','чотири','п'ять','шість','сім','вісім','дев'ять'),
    );
    $a20=array('десять','одинадцять','дванадцять','тринадцять','чотирнадцять','п'ятнадцять','шістнадцять','сімнадцять','вісімнадцять','дев'ятнадцять');
    $tens=array(2=>'двадцять','тридцять','сорок','п'ятдесят','шістдесят','сімдесят','вісімдесят','дев'яносто');
    $hundred=array('','сто','двісті','триста','чотириста','п'ятсот','шістсот','сімсот','вісімсот','дев'ятьсот');
    $unit=array( // Units
        array('копійка','копійки' ,'копійок',     1),
        array('гривня','гривні'   ,'гривень'    ,0),
        array('тисяча','тисячі','тисяч',1),
        array('мільйон','мільйона','мільйонів' ,0),
        array('мільярд','мільярда','мільярдів',0),
    );
    //
    list($rub,$kop) = explode('.',sprintf("%015.2f", floatval($num)));
    $out = array();
    if (intval($rub)>0) {
        foreach(str_split($rub,3) as $uk=>$v) { // by 3 symbols
            if (!intval($v)) continue;
            $uk = sizeof($unit)-$uk-1; // unit key
            $gender = $unit[$uk][3];
            list($i1,$i2,$i3) = array_map('intval',str_split($v,1));
            // mega-logic
            $out[] = $hundred[$i1]; # 1xx-9xx
            if ($i2>1) $out[]= $tens[$i2].' '.$ten[$gender][$i3]; # 20-99
            else $out[]= $i2>0 ? $a20[$i3] : $ten[$gender][$i3]; # 10-19 | 1-9
            // units without rub & kop
            if ($uk>1) $out[]= HTMLTemplateInvoice::morph($v,$unit[$uk][0],$unit[$uk][1],$unit[$uk][2]);
        } //foreach
    }
    else $out[] = $nul;
    $out[] = HTMLTemplateInvoice::morph(intval($rub), $unit[1][0],$unit[1][1],$unit[1][2]); // rub
$kop = 0;
   $out[] = $kop.'0 '.HTMLTemplateInvoice::morph($kop,$unit[0][0],$unit[0][1],$unit[0][2]);
// kop
    return trim(preg_replace('/ {2,}/', ' ', join(' ',$out)));
}

/**
* Склоняем словоформу
* @ author runcore
*/
public static function morph($n, $f1, $f2, $f5) {
    $n = abs(intval($n)) % 100;
    if ($n>10 && $n<20) return $f5;
    $n = $n % 10;
    if ($n>1 && $n<5) return $f2;
    if ($n==1) return $f1;
    return $f5;
}
 
Последнее редактирование:
Назад
Сверху