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

Тема в разделе "PrestaShop", создана пользователем JoKeR_13, 12 авг 2014.

Информация :
Хочешь в разделе без проблем общаться - прочти правила, чтобы потом с форумом на время не прощаться. Читать обязательно!
Внимание! Читайте внимательно правила!Предупреждения выдаются без всяких вопросов. Нарушил - получил. Будьте Внимательнее! Постинг нескольких постов подряд приравнивается к НАРУШЕНИЮ! Будьте вежливы и соблюдайте правила ;-)
Модераторы: ZiX
  1. JoKeR_13

    JoKeR_13 Создатель

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

    Gero Постоялец

    Регистр.:
    19 июл 2013
    Сообщения:
    100
    Симпатии:
    36
    Последнее редактирование модератором: 12 авг 2014
  3. JoKeR_13

    JoKeR_13 Создатель

    Регистр.:
    4 июн 2013
    Сообщения:
    34
    Симпатии:
    17
    Последнее редактирование модератором: 12 авг 2014
  4. kaktyc1

    kaktyc1

    Регистр.:
    30 апр 2008
    Сообщения:
    576
    Симпатии:
    310
    В файлике pss_pdfinvoiceplus.php меняем со строки 539
    Код:
        public static function isPs15x()
        {
            return self::checkPsVersion('1.5');
        }
    на
    Код:
        public static function isPs15x()
        {
            return self::checkPsVersion('1.6');
        }
    сохраняем и инсталируем модуль.
     
    carleb, Ph48 и JoKeR_13 нравится это.
  5. Ph48

    Ph48 Писатель

    Регистр.:
    17 июл 2014
    Сообщения:
    6
    Симпатии:
    0
    спасибо katyc1, модуль установился. но править invoice не получается. просто белое поле открывается вместо текущего инвойса.

    вопрос не совсем по теме, но близко: есть цена 100, есть скидка 10. в счете $order_detail.unit_price_tax_excl выдает цену 90 и рядом скидку -10. может, кто знает как сделать вывод цены 100 в счете?
    PS: может кому понадобится или будет повод поправить меня, но пока для решения моего вопроса заменил $order_detail.unit_price_tax_exc на $order_detail.product_price
     
    Последнее редактирование: 21 авг 2014
  6. LiTiNuM

    LiTiNuM Создатель

    Регистр.:
    23 янв 2014
    Сообщения:
    20
    Симпатии:
    7
    Попробую подсказать. Переменная $title и "все еже с ними" данные нужно смотреть в:
    classes/pdf/HTMLTemplateInvoice.php

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

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

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

    Успехов!
    Будут вопросы, задавайте, постараюсь помочь.
     
  7. LiTiNuM

    LiTiNuM Создатель

    Регистр.:
    23 янв 2014
    Сообщения:
    20
    Симпатии:
    7
    По поводу присвоения цены всего заказа - правильно делаешь, смотри на переменные, что прописаны в PHP или к нему подключены.
    Либо подключай сам. Например, для счёта Адрес - это одна переменная, которая генерится по функции в одном из классов.
    Генерится она по вертикали (в столбик), и это, думаю, не одного меня бесит в отображении адресов доставки в Престе.

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

    На самом деле, я уже сделал прилично магазинов, но так до конца не понял, как между собой вяжуться классы, контроллеры и tpl. Точнее, tpl привязывается к классам внутри них самих же.
    Поэтому, если кто подскажет, что можно почитать, так сказать "для чайников" в вопросе взаимосвязей в Престе, буду благодарен! ))
     
  8. Butch

    Butch

    Регистр.:
    16 мар 2014
    Сообщения:
    210
    Симпатии:
    12
    А не поделитесь каким-нибудь готовым шаблоном счетов для престы 1.6? А лучше сразу несколько выкладывать :)
     
  9. LiTiNuM

    LiTiNuM Создатель

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

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

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

    Вложения:

    • PDF.zip
      Размер файла:
      5,7 КБ
      Просмотров:
      90
    Butch нравится это.
  10. Demon90

    Demon90 Создатель

    Регистр.:
    29 янв 2015
    Сообщения:
    17
    Симпатии:
    3
    для перевода на украинский язык
    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>$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>&& $n<5) return $f2;
        if (
    $n==1) return $f1;
        return 
    $f5;
    }

     
    mr.stitch и fortuner нравится это.