Compare commits
4 commits
demo
...
12_nkn_fil
Author | SHA1 | Date | |
---|---|---|---|
0ae1d6551e | |||
b1ec0fd2fc | |||
f8c91b46cd | |||
f9229034de |
15 changed files with 151 additions and 9 deletions
3
Gemfile
3
Gemfile
|
@ -23,7 +23,7 @@ gem 'bootsnap', require: false
|
||||||
gem 'mysql2'
|
gem 'mysql2'
|
||||||
gem 'prawn'
|
gem 'prawn'
|
||||||
gem 'prawn-table'
|
gem 'prawn-table'
|
||||||
gem 'haml'
|
gem 'haml', '~> 5.0'
|
||||||
gem 'haml-rails'
|
gem 'haml-rails'
|
||||||
gem 'kaminari'
|
gem 'kaminari'
|
||||||
gem 'simple_form'
|
gem 'simple_form'
|
||||||
|
@ -64,6 +64,7 @@ gem 'rswag-ui'
|
||||||
gem 'acts_as_versioned', git: 'https://github.com/technoweenie/acts_as_versioned.git'
|
gem 'acts_as_versioned', git: 'https://github.com/technoweenie/acts_as_versioned.git'
|
||||||
gem 'foodsoft_wiki', path: 'plugins/wiki'
|
gem 'foodsoft_wiki', path: 'plugins/wiki'
|
||||||
gem 'foodsoft_messages', path: 'plugins/messages'
|
gem 'foodsoft_messages', path: 'plugins/messages'
|
||||||
|
gem 'foodsoft_bnn_upload', path: 'plugins/bnn_upload'
|
||||||
gem 'foodsoft_documents', path: 'plugins/documents'
|
gem 'foodsoft_documents', path: 'plugins/documents'
|
||||||
gem 'foodsoft_discourse', path: 'plugins/discourse'
|
gem 'foodsoft_discourse', path: 'plugins/discourse'
|
||||||
gem 'foodsoft_links', path: 'plugins/links'
|
gem 'foodsoft_links', path: 'plugins/links'
|
||||||
|
|
15
Gemfile.lock
15
Gemfile.lock
|
@ -16,6 +16,13 @@ GIT
|
||||||
acts_as_versioned (0.6.0)
|
acts_as_versioned (0.6.0)
|
||||||
activerecord (>= 3.0.9)
|
activerecord (>= 3.0.9)
|
||||||
|
|
||||||
|
PATH
|
||||||
|
remote: plugins/bnn_upload
|
||||||
|
specs:
|
||||||
|
foodsoft_bnn_upload (0.0.1)
|
||||||
|
deface (~> 1.0)
|
||||||
|
rails
|
||||||
|
|
||||||
PATH
|
PATH
|
||||||
remote: plugins/discourse
|
remote: plugins/discourse
|
||||||
specs:
|
specs:
|
||||||
|
@ -234,9 +241,8 @@ GEM
|
||||||
rails (>= 4.0.0)
|
rails (>= 4.0.0)
|
||||||
globalid (1.0.0)
|
globalid (1.0.0)
|
||||||
activesupport (>= 5.0)
|
activesupport (>= 5.0)
|
||||||
haml (6.1.1)
|
haml (5.2.2)
|
||||||
temple (>= 0.8.2)
|
temple (>= 0.8.0)
|
||||||
thor
|
|
||||||
tilt
|
tilt
|
||||||
haml-rails (2.1.0)
|
haml-rails (2.1.0)
|
||||||
actionpack (>= 5.1)
|
actionpack (>= 5.1)
|
||||||
|
@ -618,6 +624,7 @@ DEPENDENCIES
|
||||||
exception_notification
|
exception_notification
|
||||||
factory_bot_rails
|
factory_bot_rails
|
||||||
faker
|
faker
|
||||||
|
foodsoft_bnn_upload!
|
||||||
foodsoft_discourse!
|
foodsoft_discourse!
|
||||||
foodsoft_documents!
|
foodsoft_documents!
|
||||||
foodsoft_links!
|
foodsoft_links!
|
||||||
|
@ -625,7 +632,7 @@ DEPENDENCIES
|
||||||
foodsoft_polls!
|
foodsoft_polls!
|
||||||
foodsoft_wiki!
|
foodsoft_wiki!
|
||||||
gaffe
|
gaffe
|
||||||
haml
|
haml (~> 5.0)
|
||||||
haml-rails
|
haml-rails
|
||||||
hashie (~> 3.4.6)
|
hashie (~> 3.4.6)
|
||||||
i18n-js (~> 3.0.0.rc8)
|
i18n-js (~> 3.0.0.rc8)
|
||||||
|
|
|
@ -0,0 +1,14 @@
|
||||||
|
OrdersController.class_eval do
|
||||||
|
def send_result_to_supplier
|
||||||
|
order = Order.find(params[:id])
|
||||||
|
options = { file_formats: params[:file_formats] }
|
||||||
|
order.send_to_supplier!(@current_user, options)
|
||||||
|
redirect_to order_path(order), notice: I18n.t('orders.send_to_supplier.notice')
|
||||||
|
# rescue => error
|
||||||
|
# redirect_to order, alert: I18n.t('errors.general_msg', :msg => error.message)
|
||||||
|
end
|
||||||
|
|
||||||
|
def send_result_to_supplier_modal
|
||||||
|
@order = Order.find(params[:id])
|
||||||
|
end
|
||||||
|
end
|
|
@ -0,0 +1,8 @@
|
||||||
|
Mailer.class_eval do
|
||||||
|
require 'foodsoft_bnn_upload/order_bnn'
|
||||||
|
def add_order_result_attachments(order, options = {})
|
||||||
|
# attachments['order.pdf'] = ::OrderFax.new(order, options).to_pdf if options[:file_formats][:pdf].present?
|
||||||
|
# attachments['order.csv'] = ::OrderCsv.new(order, options).to_csv if options[:file_formats][:csv].present?
|
||||||
|
attachments['order.bnn'] = FoodsoftBnnUpload::OrderBnn.new(order, options).to_csv if options[:file_formats][:bnn].present?
|
||||||
|
end
|
||||||
|
end
|
|
@ -0,0 +1,8 @@
|
||||||
|
Order.class_eval do
|
||||||
|
def send_to_supplier!(user, options = {})
|
||||||
|
Mailer.deliver_now_with_default_locale do
|
||||||
|
Mailer.order_result_supplier(user, self, options)
|
||||||
|
end
|
||||||
|
update!(last_sent_mail: Time.now)
|
||||||
|
end
|
||||||
|
end
|
|
@ -0,0 +1,3 @@
|
||||||
|
/ replace 'erb:contains("send_to_supplier")'
|
||||||
|
- if FoodsoftBnnUpload.enabled?
|
||||||
|
= link_to t('.send_to_supplier'), order_send_result_to_supplier_modal_path(@order), class: 'btn btn-primary', remote: true
|
|
@ -0,0 +1,14 @@
|
||||||
|
= form_with url: send_result_to_supplier_path(@order) do |f|
|
||||||
|
.modal-header
|
||||||
|
= close_button :modal
|
||||||
|
.h3="Choose file formats that will be attached to your Email"
|
||||||
|
.modal-body
|
||||||
|
= f.check_box 'file_formats[pdf]'
|
||||||
|
= f.label 'file_formats[pdf]', "PDF"
|
||||||
|
= f.check_box 'file_formats[csv]'
|
||||||
|
= f.label 'file_formats[csv]', "CSV"
|
||||||
|
= f.check_box 'file_formats[bnn]'
|
||||||
|
= f.label 'file_formats[bnn]', "BNN"
|
||||||
|
.modal-footer
|
||||||
|
= link_to t('ui.close'), '#', class: 'btn', data: {dismiss: 'modal'}
|
||||||
|
= f.submit class: 'btn btn-primary'
|
|
@ -0,0 +1,3 @@
|
||||||
|
$('#modalContainer').html('#{escape_javascript(render("send_result_to_supplier_modal"))}');
|
||||||
|
$('#modalContainer').modal();
|
||||||
|
$('#modalContainer').submit(function() {$('#modalContainer').modal('hide');});
|
6
plugins/bnn_upload/config/routes.rb
Normal file
6
plugins/bnn_upload/config/routes.rb
Normal file
|
@ -0,0 +1,6 @@
|
||||||
|
Rails.application.routes.draw do
|
||||||
|
scope '/:foodcoop' do
|
||||||
|
get '/order/:id/send_result_to_supplier_modal', controller: 'orders', action: :send_result_to_supplier_modal, as: :order_send_result_to_supplier_modal
|
||||||
|
post '/order/:id/send_result_to_supplier', controller: 'orders', action: :send_result_to_supplier, as: :send_result_to_supplier
|
||||||
|
end
|
||||||
|
end
|
18
plugins/bnn_upload/foodsoft_bnn_upload.gemspec
Normal file
18
plugins/bnn_upload/foodsoft_bnn_upload.gemspec
Normal file
|
@ -0,0 +1,18 @@
|
||||||
|
$:.push File.expand_path("../lib", __FILE__)
|
||||||
|
|
||||||
|
# Maintain your gem's version:
|
||||||
|
require "foodsoft_bnn_upload/version"
|
||||||
|
|
||||||
|
# Describe your gem and declare its dependencies:
|
||||||
|
Gem::Specification.new do |s|
|
||||||
|
s.name = "foodsoft_bnn_upload"
|
||||||
|
s.version = FoodsoftBnnUpload::VERSION
|
||||||
|
s.authors = ["fgu, viehlieb"]
|
||||||
|
s.email = ["foodsoft@local-it.org"]
|
||||||
|
s.summary = "Manually choose file to send to supplier. BNN file for NaturkostNord supported."
|
||||||
|
|
||||||
|
s.files = Dir["{app,config,db,lib}/**/*"] + ["Rakefile", "README.md"]
|
||||||
|
|
||||||
|
s.add_dependency "rails"
|
||||||
|
s.add_dependency "deface", "~> 1.0"
|
||||||
|
end
|
7
plugins/bnn_upload/lib/foodsoft_bnn_upload.rb
Normal file
7
plugins/bnn_upload/lib/foodsoft_bnn_upload.rb
Normal file
|
@ -0,0 +1,7 @@
|
||||||
|
require "deface"
|
||||||
|
require 'foodsoft_bnn_upload/engine'
|
||||||
|
module FoodsoftBnnUpload
|
||||||
|
def self.enabled?
|
||||||
|
FoodsoftConfig[:use_bnn_upload]
|
||||||
|
end
|
||||||
|
end
|
12
plugins/bnn_upload/lib/foodsoft_bnn_upload/engine.rb
Normal file
12
plugins/bnn_upload/lib/foodsoft_bnn_upload/engine.rb
Normal file
|
@ -0,0 +1,12 @@
|
||||||
|
module FoodsoftBnnUpload
|
||||||
|
class Engine < ::Rails::Engine
|
||||||
|
config.to_prepare do
|
||||||
|
Dir.glob(Rails.root + "app/decorators/**/*_decorator*.rb").each do |c|
|
||||||
|
require_dependency(c)
|
||||||
|
end
|
||||||
|
end
|
||||||
|
def default_foodsoft_config(cfg)
|
||||||
|
cfg[:use_bnn_upload] = true
|
||||||
|
end
|
||||||
|
end
|
||||||
|
end
|
42
plugins/bnn_upload/lib/foodsoft_bnn_upload/order_bnn.rb
Normal file
42
plugins/bnn_upload/lib/foodsoft_bnn_upload/order_bnn.rb
Normal file
|
@ -0,0 +1,42 @@
|
||||||
|
module FoodsoftBnnUpload
|
||||||
|
class OrderBnn < RenderCsv
|
||||||
|
def initialize(object, options = {})
|
||||||
|
super
|
||||||
|
@options[:col_sep] = ""
|
||||||
|
@options[:row_sep] = "\n"
|
||||||
|
@options[:encoding] = 'IBM850'
|
||||||
|
end
|
||||||
|
|
||||||
|
def header
|
||||||
|
customer_id = "000001"
|
||||||
|
delivery_date = Time.zone.now.strftime("%y%m%d")
|
||||||
|
pickup = " "
|
||||||
|
|
||||||
|
["D##{customer_id}#{delivery_date}#{pickup}#{@object.id}"]
|
||||||
|
end
|
||||||
|
|
||||||
|
def data
|
||||||
|
@object.order_articles.ordered.includes([:article, :article_price]).all.map do |oa|
|
||||||
|
yield [
|
||||||
|
pad_to_length(oa.article.order_number, 13),
|
||||||
|
"+",
|
||||||
|
pad_float_values(oa.units_to_order),
|
||||||
|
pad_to_length(oa.article.name, 30),
|
||||||
|
pad_float_values(oa.article.unit_quantity),
|
||||||
|
pad_to_length(oa.article.unit, 14),
|
||||||
|
pad_to_length(oa.article.manufacturer, 3),
|
||||||
|
pad_to_length("", 26)
|
||||||
|
]
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
|
def pad_float_values(number, digits_before=4, digits_after=3)
|
||||||
|
format_string = "%0#{digits_before + digits_after}d"
|
||||||
|
formatted_number = sprintf(format_string, (number * 10 ** digits_after).to_i)
|
||||||
|
end
|
||||||
|
|
||||||
|
def pad_to_length(string, length)
|
||||||
|
string.to_s.rjust(length, " ")[0, length]
|
||||||
|
end
|
||||||
|
end
|
||||||
|
end
|
3
plugins/bnn_upload/lib/foodsoft_bnn_upload/version.rb
Normal file
3
plugins/bnn_upload/lib/foodsoft_bnn_upload/version.rb
Normal file
|
@ -0,0 +1,3 @@
|
||||||
|
module FoodsoftBnnUpload
|
||||||
|
VERSION = "0.0.1"
|
||||||
|
end
|
|
@ -1,4 +0,0 @@
|
||||||
/ insert_after 'erb:contains("title t(\'.title\'")'
|
|
||||||
- content_for :actionbar do
|
|
||||||
- if FoodsoftMessages.enabled?
|
|
||||||
= link_to_new_message message_params: {order_id: @order.id}
|
|
Loading…
Reference in a new issue