НАША РАЗРАБОТКА RUSSIAN-INVOICES

Гем для генерации различных документов в формате pdf для rails приложения.

Зачастую при разработке серьезных проектов довольно часто возникает необходимость формирования таких документов как счет-фактура, договор, акт выполненных работ. Все это безусловно необходимо как для того, чтобы облегчить жизнь нашим любимым пользователям, так и для автоматизации документооборота вцелом. Все частоповторяющиеся задачи как известно лучше всего выносить в отдельные модули, для того, чтобы их можно было использовать в других проектах повторно. Что собственно мы и решили сделать.

Представляем вашему вниманию нашу разработку - RussianInvoices.

На этапе проектирвоания данного гема перед нами стоял выбор средств реализации гема. Было 2 варианта: prawn, или wicked_pdf. Решили остановиться на последнем, т.к. производить верстку макетов на haml гораздо проще и быстрее, чем средствами prawn. Все это в итоге дает возможность довольно активного развития гема, а так же гибкости при его использовании.
RussianInvoices был опробован и гарантированно работает с rails 4.

Инструкция по использованию:

Для того, чтобы подключить гем в приложение, необходимо добавить в свой Gemfile следующую строку:

gem 'russian_invoices'

Далее все действия осуществляются в методе контроллера вашего приложения. Нужно передать гему информацию соответствующего документа и далее, либо отрендерить на месте документ, либо отдать его пользователю в виде файла.

Пример:

Тип документа - “Договор”

doc = RussianInvoices::Contract.create(
       name: 'На оказание консалтинговых услуг',
       number: 1,
       city: 'Воронеж',
       from_date: '"01" января 2015г.',
       body: '<p>Очень длинный текст договора &mdash; Без конца и края...</p>'*10,
       customer_details: 'Никулин Александр Юрьевич<br />
                          Паспорт XXXX XXXXXX<br />
                          Выдан в городе Воронеже 01.01.1812, код подразделения 000-001, проживающий по адресу г.Воронеж, ул.Безымянная, д. 1, кв.111
                          Тел.: 8-000-000-00-00',
       performer_details: 'http://rubyruby.ru',
       customer_position: 'Заказчик',
       performer_position: 'Разработчик',
       customer_signature: Rails.root.join('public', 'signature.png'),
       performer_signature: Rails.root.join('public', 'signature.png'),
       customer_stamp: Rails.root.join('public', 'stamp.png'),
       performer_stamp: Rails.root.join('public', 'stamp.png')
)

Доступные методы:

render_pdf_document(doc) - отобразить документ в браузере пользователя
download_pdf_document(doc) - отдать документ на скачку пользователю
generate_document(doc) - tempfile со сгенерированным документом
generate_document_str(doc) - сгенерированный документ(String), который вы можете записать в файл.

Примеры использования других документов можно увидеть здесь

Гем построен таким образом, чтобы можно его было легко дополнить новым типом документа. Сделать это можно как внеся лепту в развитие гема, так и прямо в своем приложении.
Для того чтобы добавить новый тип документа у себя в проекте, допустим, “фиговый лист”, нужно:

создать модель app/models/russian_invoices/fig_leaf.rb

class RussianInvoices::FigLeaf < RussianInvoices::BaseModel

    attr_accessor :number, :body
    validates :number, numericality: true
    validates_presence_of :number, :body

    def custom_method
      number.to_s + ‘ - ’ + body
    end

end

добавить файл представления:

app/views/russian_invoices/documents/fig_leaf.html.haml
%h1= @doc.number
%p= @doc.body
%p= @doc.custom_method

Собственно, вот и все. теперь можно этим воспользоваться

doc = RussianInvoices::FigLeaf.create(number: 1, body: ‘bla-bla-bla...’)
render_pdf_document(doc)

 
 

 

 

Напишите нам

Мы постараемся ответить в самый кратчайший срок!

Наши контакты

  • ООО «Айтимо» г. Воронеж
    ОГРН 1133668055080
  • (473) 229-51-56
  • info@rubyruby.ru
  • www.rubyruby.ru

Оставьте заявку

Ваша заявка принята! Необходимо заполнить адрес почты и имя!