Compare commits
10 Commits
3f87692a69
...
0368b94967
Author | SHA1 | Date | |
---|---|---|---|
0368b94967 | |||
a99dbfde83 | |||
7f71e82f74 | |||
5f3d435cc8 | |||
31c0f673d4 | |||
d90713a8e7 | |||
f2496c36a8 | |||
d9a8bbefed | |||
f9d656b0cb | |||
|
5238a52533 |
@ -338,56 +338,58 @@ class Admin::ProductOrdersController < ApplicationController
|
||||
end
|
||||
if @product_order.bl_number?
|
||||
|
||||
if true
|
||||
|
||||
@temp_file = "#{Rails.root}/pdf/bl/BL_#{@product_order.id}_temp.pdf"
|
||||
@final_file = "#{Rails.root}/pdf/bl/BL_#{@product_order.id}.pdf"
|
||||
|
||||
|
||||
@temp_file = "#{Rails.root}/pdf/bl/BL_#{@product_order.id}_temp.pdf"
|
||||
@final_file = "#{Rails.root}/pdf/bl/BL_#{@product_order.id}.pdf"
|
||||
view = ActionView::Base.new(Rails.root.join('app/views'))
|
||||
view.class.include ApplicationHelper
|
||||
view.class.include Rails.application.routes.url_helpers
|
||||
|
||||
pdf = view.render(
|
||||
:pdf => "#{@product_order.id}",
|
||||
:template => "admin/product_orders/bl.html.haml",
|
||||
|
||||
:locals => {:@product_order => @product_order})
|
||||
|
||||
# then save to a file
|
||||
pdf = WickedPdf.new.pdf_from_string(pdf, :margin => { top: 0, # default 10 (mm)
|
||||
bottom: 0,
|
||||
left: 0,
|
||||
right: 0 })
|
||||
|
||||
save_path = @temp_file
|
||||
File.open(save_path, 'wb') do |file|
|
||||
file << pdf
|
||||
end
|
||||
|
||||
|
||||
view = ActionView::Base.new(Rails.root.join('app/views'))
|
||||
view.class.include ApplicationHelper
|
||||
view.class.include Rails.application.routes.url_helpers
|
||||
|
||||
pdf = view.render(
|
||||
:pdf => "#{@product_order.id}",
|
||||
:template => "admin/product_orders/bl.html.haml",
|
||||
|
||||
:locals => {:@product_order => @product_order})
|
||||
require 'posix/spawn'
|
||||
|
||||
# then save to a file
|
||||
pdf = WickedPdf.new.pdf_from_string(pdf, :margin => { top: 0, # default 10 (mm)
|
||||
bottom: 0,
|
||||
left: 0,
|
||||
right: 0 })
|
||||
::POSIX::Spawn::Child.new 'pdftk', @temp_file, 'background', Rails.root.join('pdf_stamp', "bl#{(@product_order.reseaux_id if @product_order.reseaux_id == 19)}.pdf").to_s, 'output', @final_file
|
||||
|
||||
save_path = @temp_file
|
||||
File.open(save_path, 'wb') do |file|
|
||||
file << pdf
|
||||
#pdftk /Users/nico/Desktop/Sanstitre4.pdf background /Users/nico/Dev/negos_app/pdf_stamp/bl.pdf output sortie.pdf
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
@data_to_send = File.open( @final_file).read
|
||||
|
||||
send_data @data_to_send, :filename =>"#{@product_order.bl_number}.pdf" , :type => 'application/pdf',:disposition => (params[:inline] ? 'inline' : "attachment")
|
||||
|
||||
|
||||
else
|
||||
render :layout => false
|
||||
end
|
||||
|
||||
|
||||
|
||||
|
||||
require 'posix/spawn'
|
||||
|
||||
::POSIX::Spawn::Child.new 'pdftk', @temp_file, 'background', Rails.root.join('pdf_stamp', 'bl.pdf').to_s, 'output', @final_file
|
||||
|
||||
#pdftk /Users/nico/Desktop/Sanstitre4.pdf background /Users/nico/Dev/negos_app/pdf_stamp/bl.pdf output sortie.pdf
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
@data_to_send = File.open( @final_file).read
|
||||
|
||||
send_data @data_to_send, :filename =>"#{@product_order.bl_number}.pdf" , :type => 'application/pdf',:disposition => (params[:inline] ? 'inline' : "attachment")
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
else
|
||||
render :inline => "Aucun BL disponnible"
|
||||
end
|
||||
|
@ -17,6 +17,12 @@ class Public::ProductOrdersController < ApplicationController
|
||||
|
||||
def my_cart
|
||||
get_reseaux
|
||||
|
||||
if !@product_order.reseaux
|
||||
@product_order.reseaux = @reseaux
|
||||
@product_order.save
|
||||
end
|
||||
|
||||
end
|
||||
|
||||
def vourcher
|
||||
|
@ -3,7 +3,15 @@ class ProductOrdersMails < ActionMailer::Base
|
||||
layout 'mail'
|
||||
|
||||
default from: "Negos <contact@negos.pro>"
|
||||
|
||||
def fournisseur(product_order, fournisseur)
|
||||
@product_order = product_order
|
||||
@fournisseur = fournisseur
|
||||
@email = @fournisseur.email
|
||||
@title = "Commande achat via Négos"
|
||||
if @fournisseur.send_email
|
||||
mail(:to => @email, :bcc => "info@nicolasbally.com,daniel@videlier.fr", :subject => @title)
|
||||
end
|
||||
end
|
||||
|
||||
def confirmation_cheque(product_order, options = {})
|
||||
@options = options
|
||||
|
@ -1,9 +1,12 @@
|
||||
class ProductOrder < ActiveRecord::Base
|
||||
belongs_to :reseaux
|
||||
|
||||
has_many :payments, :as => :element
|
||||
|
||||
has_many :product_order_products
|
||||
|
||||
|
||||
|
||||
has_many :sub_products, :through => :product_order_products
|
||||
|
||||
has_many :fournisseurs, :through => :sub_products
|
||||
@ -199,7 +202,7 @@ class ProductOrder < ActiveRecord::Base
|
||||
|
||||
|
||||
last_number = 0
|
||||
last_number = ProductOrder.where("paid_at is not null").where(:bill_year => self.bill_year ).order("bill_index DESC").first.bill_index if ProductOrder.where("paid_at is not null").where(:bill_year => self.bill_year ).first
|
||||
last_number = ProductOrder.where("paid_at is not null").where(:bill_year => self.bill_year, :reseaux_id => self.reseaux_id ).order("bill_index DESC").first.bill_index if ProductOrder.where("paid_at is not null").where(:bill_year => self.bill_year, :reseaux_id => self.reseaux_id ).first
|
||||
self.bill_index = last_number+1
|
||||
self.bill_number = "NG"+self.bill_year.to_s+('%04d' % self.bill_index)
|
||||
self.save(:validate => false)
|
||||
@ -251,11 +254,16 @@ class ProductOrder < ActiveRecord::Base
|
||||
|
||||
|
||||
last_number = 0
|
||||
last_number = ProductOrder.where("bl_number is not null").where(:bl_year => self.bl_year ).order("bl_index DESC").first.bl_index if ProductOrder.where("bl_number is not null").where(:bl_year => self.bl_year ).first
|
||||
last_number = ProductOrder.where("bl_number is not null").where(:bl_year => self.bl_year, :reseaux_id => self.reseaux_id ).order("bl_index DESC").first.bl_index if ProductOrder.where("bl_number is not null").where(:bl_year => self.bl_year, :reseaux_id => self.reseaux_id ).first
|
||||
self.bl_index = last_number+1
|
||||
self.bl_number = self.bl_ap+self.bl_year.to_s+('%05d' % self.bl_index)
|
||||
self.save(:validate => false)
|
||||
|
||||
|
||||
self.fournisseurs.uniq.each do |fournisseur|
|
||||
ProductOrdersMails.fournisseur(self, fournisseur).deliver
|
||||
end
|
||||
|
||||
end
|
||||
end
|
||||
|
||||
|
@ -98,70 +98,77 @@
|
||||
#main
|
||||
|
||||
%div{:style => "position:absolute;top:4.4cm;right:1cm;text-align:right;"}
|
||||
Bon de commande n°
|
||||
-if @product_order.reseaux_id == 19
|
||||
Commande achats n°
|
||||
-else
|
||||
Bon de commande n°
|
||||
=@product_order.bl_number
|
||||
%br
|
||||
=l @product_order.created_at, :format => :date
|
||||
|
||||
|
||||
%div{:style => "height:350px;"}
|
||||
-if @product_order.reseaux_id != 19
|
||||
%div{:style => "height:350px;"}
|
||||
-else
|
||||
%div{:style => "height:140px;"}
|
||||
|
||||
|
||||
-if @product_order.reseaux_id != 19
|
||||
%table.table{:style => "position:absolute;right:1cm;top:220px"}
|
||||
%tr
|
||||
%td{:style => "width:5.5cm;border:0"}
|
||||
%h3 Adresse de facturation
|
||||
|
||||
%table.table{:style => "position:absolute;right:1cm;top:220px"}
|
||||
%tr
|
||||
%td{:style => "width:5.5cm;border:0"}
|
||||
%h3 Adresse de facturation
|
||||
|
||||
%strong=@product_order.particular_bill.organisation
|
||||
%br
|
||||
=@product_order.particular_bill.firstname
|
||||
|
||||
=@product_order.particular_bill.name
|
||||
%br
|
||||
=@product_order.particular_bill.address_2
|
||||
|
||||
-if @product_order.particular_bill.address_3?
|
||||
%strong=@product_order.particular_bill.organisation
|
||||
%br
|
||||
=@product_order.particular_bill.address_3
|
||||
%br
|
||||
=@product_order.particular_bill.cp
|
||||
=@product_order.particular_bill.firstname
|
||||
|
||||
=@product_order.particular_bill.city
|
||||
%br
|
||||
=@product_order.particular_bill.country
|
||||
%br
|
||||
%br
|
||||
=@product_order.particular_bill.tel
|
||||
|
||||
|
||||
%td{:style => "width:5.5cm;border:0"}
|
||||
%h3 Adresse de livraison
|
||||
|
||||
%strong=@product_order.particular_bill.organisation
|
||||
%br
|
||||
=@product_order.particular_send.firstname
|
||||
|
||||
=@product_order.particular_send.name
|
||||
%br
|
||||
=@product_order.particular_send.address_2
|
||||
|
||||
-if @product_order.particular_send.address_3?
|
||||
=@product_order.particular_bill.name
|
||||
%br
|
||||
=@product_order.particular_send.address_3
|
||||
%br
|
||||
=@product_order.particular_send.cp
|
||||
=@product_order.particular_bill.address_2
|
||||
|
||||
=@product_order.particular_send.city
|
||||
%br
|
||||
=@product_order.particular_send.country
|
||||
%br
|
||||
%br
|
||||
=@product_order.particular_bill.tel
|
||||
-if @product_order.particular_bill.address_3?
|
||||
%br
|
||||
=@product_order.particular_bill.address_3
|
||||
%br
|
||||
=@product_order.particular_bill.cp
|
||||
|
||||
=@product_order.particular_bill.city
|
||||
%br
|
||||
=@product_order.particular_bill.country
|
||||
%br
|
||||
%br
|
||||
=@product_order.particular_bill.tel
|
||||
|
||||
|
||||
%td{:style => "width:5.5cm;border:0"}
|
||||
%h3 Adresse de livraison
|
||||
|
||||
%strong=@product_order.particular_bill.organisation
|
||||
%br
|
||||
=@product_order.particular_send.firstname
|
||||
|
||||
=@product_order.particular_send.name
|
||||
%br
|
||||
=@product_order.particular_send.address_2
|
||||
|
||||
-if @product_order.particular_send.address_3?
|
||||
%br
|
||||
=@product_order.particular_send.address_3
|
||||
%br
|
||||
=@product_order.particular_send.cp
|
||||
|
||||
=@product_order.particular_send.city
|
||||
%br
|
||||
=@product_order.particular_send.country
|
||||
%br
|
||||
%br
|
||||
=@product_order.particular_bill.tel
|
||||
|
||||
%table.table{:style => "width:100%;margin:1cm 0;"}
|
||||
%tr
|
||||
%th
|
||||
-if @product_order.reseaux_id != 19
|
||||
%th
|
||||
%th
|
||||
Description
|
||||
%th{:style => "text-align:right;width:100px"}
|
||||
@ -173,57 +180,88 @@
|
||||
-@product_order.product_order_products.order(:product_id).each do |product_order_product|
|
||||
|
||||
%tr
|
||||
%td{:style => "width:135px;padding:0;vertical-align:middle"}
|
||||
=image_tag "http://negos.pro"+product_order_product.product.default_image.image_file.file.large.medium.small.thumb.url, :style => "width:130px;" if product_order_product.product.default_image
|
||||
%td
|
||||
-if @product_order.reseaux_id != 19
|
||||
%td{:style => "width:135px;padding:0;vertical-align:middle"}
|
||||
=image_tag "http://negos.pro"+product_order_product.product.default_image.image_file.file.large.medium.small.thumb.url, :style => "width:130px;" if product_order_product.product.default_image
|
||||
%td{:style => ""+("border-bottom: 0;padding-bottom:0;"if @product_order.reseaux_id == 19).to_s}
|
||||
=simple_format product_order_product.archived_product.lang(:fr).bl_title
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
=# product_order_product.archived_product_size.name if product_order_product.archived_product_size
|
||||
|
||||
|
||||
=# product_order_product.archived_product_option.lang(I18n.locale).name if product_order_product.archived_product_option
|
||||
|
||||
%td{:style => "text-align:right;"}
|
||||
%td{:style => "text-align:right;"+("border-bottom: 0;"if @product_order.reseaux_id == 19).to_s}
|
||||
= number_to_currency(product_order_product.archived_product.final_price_ht.to_f, locale: :fr) if product_order_product.archived_product
|
||||
%td{:style => "text-align:right;"}
|
||||
|
||||
%td{:style => "text-align:right;"+("border-bottom: 0;"if @product_order.reseaux_id == 19).to_s}
|
||||
=product_order_product.qty
|
||||
%td{:style => "text-align:right;"}
|
||||
%td{:style => "text-align:right;"+("border-bottom: 0;"if @product_order.reseaux_id == 19).to_s}
|
||||
= number_to_currency(product_order_product.archived_final_price_ht_with_qty, locale: :fr) if product_order_product.archived_product
|
||||
|
||||
-if @product_order.reseaux_id == 19
|
||||
%tr
|
||||
%td{:colspan => 3, :style => "border-top:0;padding-top:0"}
|
||||
%table.sub_products{:style => "width:100%;margin-bottom:20px;margin-top:5px;"}
|
||||
%tr
|
||||
%th Référence
|
||||
%th Nom
|
||||
|
||||
%th Prix U.
|
||||
%th Nbr
|
||||
%th Prix HT
|
||||
|
||||
-product_order_product.sub_products.each do |sub_product|
|
||||
%tr
|
||||
%td
|
||||
=sub_product.reference
|
||||
%td
|
||||
=sub_product.name
|
||||
|
||||
%td
|
||||
=number_to_currency sub_product.price_ht_with_qte
|
||||
|
||||
%td
|
||||
=sub_product.qte_tot
|
||||
%td
|
||||
=number_to_currency sub_product.price_tot_with_qte
|
||||
%td
|
||||
|
||||
|
||||
|
||||
%tr
|
||||
%td{:colspan => 3, :rowspan => 3, :style => "border:0;text-align:left;"}
|
||||
%p
|
||||
%br
|
||||
Mode de paiment :
|
||||
-if @product_order.product_order_payment_type_ok_id == 3
|
||||
CB
|
||||
-elsif @product_order.product_order_payment_type_ok_id == 1
|
||||
Chèque
|
||||
-elsif @product_order.product_order_payment_type_ok_id == 2
|
||||
Virement
|
||||
-elsif @product_order.product_order_payment_type_ok_id == 4
|
||||
Mandat administratif
|
||||
%br
|
||||
%br
|
||||
Franco de port pour le Pays Voironnais
|
||||
%td Total HT :
|
||||
%td{:style => "text-align:right;"}= number_to_currency(@product_order.archived_total_ht, locale: :fr)
|
||||
%td{:colspan => (@product_order.reseaux_id != 19 ? 3 : 2), :rowspan => 3, :style => "border:0;text-align:left;"}
|
||||
-if @product_order.reseaux_id != 19
|
||||
%p
|
||||
%br
|
||||
Mode de paiment :
|
||||
-if @product_order.product_order_payment_type_ok_id == 3
|
||||
CB
|
||||
-elsif @product_order.product_order_payment_type_ok_id == 1
|
||||
Chèque
|
||||
-elsif @product_order.product_order_payment_type_ok_id == 2
|
||||
Virement
|
||||
-elsif @product_order.product_order_payment_type_ok_id == 4
|
||||
Mandat administratif
|
||||
%br
|
||||
%br
|
||||
Franco de port pour le Pays Voironnais
|
||||
%td Total HT :
|
||||
%td{:style => "text-align:right;"}= number_to_currency(@product_order.archived_total_ht, locale: :fr)
|
||||
-if @product_order.reseaux_id != 19
|
||||
%tr
|
||||
|
||||
%tr
|
||||
%td TVA :
|
||||
%td{:style => "text-align:right;"}= number_to_currency(@product_order.archived_total_tva, locale: :fr)
|
||||
|
||||
%td TVA :
|
||||
%td{:style => "text-align:right;"}= number_to_currency(@product_order.archived_total_tva, locale: :fr)
|
||||
%tr
|
||||
|
||||
%tr
|
||||
|
||||
%td Total TTC :
|
||||
%td{:style => "text-align:right;"}= number_to_currency(@product_order.archived_total_ttc, locale: :fr)
|
||||
%td Total TTC :
|
||||
%td{:style => "text-align:right;"}= number_to_currency(@product_order.archived_total_ttc, locale: :fr)
|
||||
|
||||
|
||||
|
||||
@ -231,7 +269,7 @@
|
||||
|
||||
|
||||
|
||||
%br
|
||||
%br
|
||||
|
||||
<!---
|
||||
.fdp
|
||||
|
@ -116,6 +116,7 @@
|
||||
%br
|
||||
|
||||
%hr
|
||||
|
||||
%h3 Détail des sous produits
|
||||
%table.table
|
||||
%tr
|
||||
|
@ -4,15 +4,15 @@
|
||||
|
||||
%p Bonjour,
|
||||
|
||||
%p Nous vous remercions pour votre pré-commande.
|
||||
%p Nous vous remercions pour votre commande.
|
||||
-if @product_order.reseaux_id != 19
|
||||
%p Nous vous confirmerons prochainement la date de livraison.
|
||||
|
||||
%p Nous vous confirmerons prochainement la date de livraison.
|
||||
%p Par ailleurs, celle-ci vous sera expédiée dès que nous aurons reçu votre règlement.
|
||||
|
||||
%p Par ailleurs, celle-ci vous sera expédiée dès que nous aurons reçu votre règlement.
|
||||
|
||||
%p
|
||||
Pour cela, vous pouvez contacter LA VOUISIENNE au 04 76 55 30 94 ou par mail:
|
||||
=link_to "contact@lavouisienne.fr.", "mailto:contact@lavouisienne.fr"
|
||||
%p
|
||||
Pour cela, vous pouvez contacter LA VOUISIENNE au 04 76 55 30 94 ou par mail:
|
||||
=link_to "contact@lavouisienne.fr.", "mailto:contact@lavouisienne.fr"
|
||||
|
||||
%p Vous trouverez ci-dessous le récapitulatif de votre commande :
|
||||
|
||||
|
58
app/views/product_orders_mails/fournisseur.html.haml
Normal file
58
app/views/product_orders_mails/fournisseur.html.haml
Normal file
@ -0,0 +1,58 @@
|
||||
:scss
|
||||
.table{
|
||||
width:100%;
|
||||
border-collapse:collapse;
|
||||
td, th{
|
||||
border:1px solid rgba(0,0,0,0.4);
|
||||
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
%p
|
||||
Pour information, et suite à l’accord avec l’association Vouis’star veuillez trouver ci-joint le récapitulatif de la commande établie ce jour :
|
||||
|
||||
|
||||
%table.table
|
||||
%tr
|
||||
%th Fournisseur
|
||||
%th Prix HT
|
||||
|
||||
-fournisseur = @fournisseur
|
||||
%tr
|
||||
%td=fournisseur.name
|
||||
%td
|
||||
-i = 0.0
|
||||
-@product_order.sub_products.where(:fournisseur_id => fournisseur.id).each do |sub_product|
|
||||
-i += sub_product.price_tot_with_qte
|
||||
=number_to_currency i
|
||||
|
||||
%br
|
||||
%br
|
||||
|
||||
%table.table
|
||||
%tr
|
||||
%th Fournisseur
|
||||
%th Référence
|
||||
%th Nom
|
||||
%th Nbr
|
||||
|
||||
|
||||
-@product_order.sub_products.group(:reference).where(:fournisseur_id => @fournisseur.id).each do |sub_product_group|
|
||||
%tr
|
||||
%td
|
||||
= sub_product_group.fournisseur.name if sub_product_group.fournisseur
|
||||
%td= sub_product_group.reference
|
||||
%td= sub_product_group.name
|
||||
|
||||
-sub_products = @product_order.sub_products.where(:reference => sub_product_group.reference)
|
||||
|
||||
|
||||
%td
|
||||
-i = 0.0
|
||||
-sub_products.each do |sub_product|
|
||||
-i += sub_product.qte_tot
|
||||
=i
|
||||
|
||||
|
||||
|
@ -106,10 +106,12 @@
|
||||
clearInterval(countup);
|
||||
}
|
||||
}, 0);}
|
||||
%div{:style => "padding:10px 15px;display:inline-block;text-transform:uppercase;font-weight:bold;font-size:30px;line-height:35px;position:relative;top:-10px;padding-left:3px;"}
|
||||
%div{:style => "padding:10px 15px;display:inline-block;text-transform:uppercase;font-weight:bold;font-size:25px;line-height:30px;position:relative;top:-10px;padding-left:3px;"}
|
||||
déjà
|
||||
%br
|
||||
commandés
|
||||
%br
|
||||
depuis 2018
|
||||
|
||||
|
||||
:coffeescript
|
||||
|
@ -0,0 +1,5 @@
|
||||
class AddReseauxIdToProductOrders < ActiveRecord::Migration
|
||||
def change
|
||||
add_column :product_orders, :reseaux_id, :integer
|
||||
end
|
||||
end
|
6
db/migrate/20180326193718_add_email_to_fournisseurs.rb
Normal file
6
db/migrate/20180326193718_add_email_to_fournisseurs.rb
Normal file
@ -0,0 +1,6 @@
|
||||
class AddEmailToFournisseurs < ActiveRecord::Migration
|
||||
def change
|
||||
add_column :fournisseurs, :email, :string
|
||||
add_column :fournisseurs, :send_email, :boolean
|
||||
end
|
||||
end
|
@ -11,7 +11,7 @@
|
||||
#
|
||||
# It's strongly recommended that you check this file into your version control system.
|
||||
|
||||
ActiveRecord::Schema.define(version: 20180301225428) do
|
||||
ActiveRecord::Schema.define(version: 20180326193718) do
|
||||
|
||||
create_table "abonnements", force: :cascade do |t|
|
||||
t.integer "abonnement_type_id", limit: 4
|
||||
@ -378,6 +378,8 @@ ActiveRecord::Schema.define(version: 20180301225428) do
|
||||
t.string "bic", limit: 255
|
||||
t.datetime "created_at", null: false
|
||||
t.datetime "updated_at", null: false
|
||||
t.string "email", limit: 255
|
||||
t.boolean "send_email", limit: 1
|
||||
end
|
||||
|
||||
create_table "gallery_contents", force: :cascade do |t|
|
||||
@ -899,6 +901,7 @@ ActiveRecord::Schema.define(version: 20180301225428) do
|
||||
t.integer "bl_index", limit: 4
|
||||
t.integer "bl_year", limit: 4
|
||||
t.boolean "shiped", limit: 1
|
||||
t.integer "reseaux_id", limit: 4
|
||||
end
|
||||
|
||||
create_table "product_product_sizes", force: :cascade do |t|
|
||||
|
BIN
pdf_stamp/bl19.pdf
Normal file
BIN
pdf_stamp/bl19.pdf
Normal file
Binary file not shown.
Loading…
x
Reference in New Issue
Block a user