Compare commits

...

10 Commits

Author SHA1 Message Date
0368b94967 suite 2018-03-27 10:32:02 +02:00
a99dbfde83 suite 2018-03-26 22:49:10 +02:00
7f71e82f74 suite 2018-03-26 22:32:39 +02:00
5f3d435cc8 suite 2018-03-26 22:22:04 +02:00
31c0f673d4 suite 2018-03-26 21:14:48 +02:00
d90713a8e7 suite 2018-03-26 00:38:10 +02:00
f2496c36a8 suite 2018-03-26 00:34:10 +02:00
d9a8bbefed suite 2018-03-26 00:26:30 +02:00
f9d656b0cb suite 2018-03-26 00:25:20 +02:00
Nicolas Bally
5238a52533 suite 2018-03-25 23:36:03 +02:00
13 changed files with 259 additions and 122 deletions

View File

@ -338,56 +338,58 @@ class Admin::ProductOrdersController < ApplicationController
end end
if @product_order.bl_number? 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" view = ActionView::Base.new(Rails.root.join('app/views'))
@final_file = "#{Rails.root}/pdf/bl/BL_#{@product_order.id}.pdf" 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 ::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
pdf = WickedPdf.new.pdf_from_string(pdf, :margin => { top: 0, # default 10 (mm)
bottom: 0,
left: 0,
right: 0 })
save_path = @temp_file #pdftk /Users/nico/Desktop/Sanstitre4.pdf background /Users/nico/Dev/negos_app/pdf_stamp/bl.pdf output sortie.pdf
File.open(save_path, 'wb') do |file|
file << 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 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 else
render :inline => "Aucun BL disponnible" render :inline => "Aucun BL disponnible"
end end

View File

@ -17,6 +17,12 @@ class Public::ProductOrdersController < ApplicationController
def my_cart def my_cart
get_reseaux get_reseaux
if !@product_order.reseaux
@product_order.reseaux = @reseaux
@product_order.save
end
end end
def vourcher def vourcher

View File

@ -3,7 +3,15 @@ class ProductOrdersMails < ActionMailer::Base
layout 'mail' layout 'mail'
default from: "Negos <contact@negos.pro>" 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 = {}) def confirmation_cheque(product_order, options = {})
@options = options @options = options

View File

@ -1,9 +1,12 @@
class ProductOrder < ActiveRecord::Base class ProductOrder < ActiveRecord::Base
belongs_to :reseaux
has_many :payments, :as => :element has_many :payments, :as => :element
has_many :product_order_products has_many :product_order_products
has_many :sub_products, :through => :product_order_products has_many :sub_products, :through => :product_order_products
has_many :fournisseurs, :through => :sub_products has_many :fournisseurs, :through => :sub_products
@ -199,7 +202,7 @@ class ProductOrder < ActiveRecord::Base
last_number = 0 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_index = last_number+1
self.bill_number = "NG"+self.bill_year.to_s+('%04d' % self.bill_index) self.bill_number = "NG"+self.bill_year.to_s+('%04d' % self.bill_index)
self.save(:validate => false) self.save(:validate => false)
@ -251,11 +254,16 @@ class ProductOrder < ActiveRecord::Base
last_number = 0 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_index = last_number+1
self.bl_number = self.bl_ap+self.bl_year.to_s+('%05d' % self.bl_index) self.bl_number = self.bl_ap+self.bl_year.to_s+('%05d' % self.bl_index)
self.save(:validate => false) self.save(:validate => false)
self.fournisseurs.uniq.each do |fournisseur|
ProductOrdersMails.fournisseur(self, fournisseur).deliver
end
end end
end end

View File

@ -98,70 +98,77 @@
#main #main
%div{:style => "position:absolute;top:4.4cm;right:1cm;text-align:right;"} %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 =@product_order.bl_number
%br %br
=l @product_order.created_at, :format => :date =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"} %strong=@product_order.particular_bill.organisation
%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?
%br %br
=@product_order.particular_bill.address_3 =@product_order.particular_bill.firstname
%br
=@product_order.particular_bill.cp
=@product_order.particular_bill.city =@product_order.particular_bill.name
%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 %br
=@product_order.particular_send.address_3 =@product_order.particular_bill.address_2
%br
=@product_order.particular_send.cp
=@product_order.particular_send.city -if @product_order.particular_bill.address_3?
%br %br
=@product_order.particular_send.country =@product_order.particular_bill.address_3
%br %br
%br =@product_order.particular_bill.cp
=@product_order.particular_bill.tel
=@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;"} %table.table{:style => "width:100%;margin:1cm 0;"}
%tr %tr
%th -if @product_order.reseaux_id != 19
%th
%th %th
Description Description
%th{:style => "text-align:right;width:100px"} %th{:style => "text-align:right;width:100px"}
@ -173,57 +180,88 @@
-@product_order.product_order_products.order(:product_id).each do |product_order_product| -@product_order.product_order_products.order(:product_id).each do |product_order_product|
%tr %tr
%td{:style => "width:135px;padding:0;vertical-align:middle"} -if @product_order.reseaux_id != 19
=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 => "width:135px;padding:0;vertical-align:middle"}
%td =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 =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_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 =# 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 = 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 =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 = 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 %tr
%td{:colspan => 3, :rowspan => 3, :style => "border:0;text-align:left;"} %td{:colspan => (@product_order.reseaux_id != 19 ? 3 : 2), :rowspan => 3, :style => "border:0;text-align:left;"}
%p -if @product_order.reseaux_id != 19
%br %p
Mode de paiment : %br
-if @product_order.product_order_payment_type_ok_id == 3 Mode de paiment :
CB -if @product_order.product_order_payment_type_ok_id == 3
-elsif @product_order.product_order_payment_type_ok_id == 1 CB
Chèque -elsif @product_order.product_order_payment_type_ok_id == 1
-elsif @product_order.product_order_payment_type_ok_id == 2 Chèque
Virement -elsif @product_order.product_order_payment_type_ok_id == 2
-elsif @product_order.product_order_payment_type_ok_id == 4 Virement
Mandat administratif -elsif @product_order.product_order_payment_type_ok_id == 4
%br Mandat administratif
%br %br
Franco de port pour le Pays Voironnais %br
%td Total HT : Franco de port pour le Pays Voironnais
%td{:style => "text-align:right;"}= number_to_currency(@product_order.archived_total_ht, locale: :fr) %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 : %tr
%td{:style => "text-align:right;"}= number_to_currency(@product_order.archived_total_tva, locale: :fr)
%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 .fdp

View File

@ -116,6 +116,7 @@
%br %br
%hr %hr
%h3 Détail des sous produits %h3 Détail des sous produits
%table.table %table.table
%tr %tr

View File

@ -4,15 +4,15 @@
%p Bonjour, %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:
%p =link_to "contact@lavouisienne.fr.", "mailto:contact@lavouisienne.fr"
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 : %p Vous trouverez ci-dessous le récapitulatif de votre commande :

View 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 à laccord avec lassociation Vouisstar 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

View File

@ -106,10 +106,12 @@
clearInterval(countup); clearInterval(countup);
} }
}, 0);} }, 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à déjà
%br %br
commandés commandés
%br
depuis 2018
:coffeescript :coffeescript

View File

@ -0,0 +1,5 @@
class AddReseauxIdToProductOrders < ActiveRecord::Migration
def change
add_column :product_orders, :reseaux_id, :integer
end
end

View File

@ -0,0 +1,6 @@
class AddEmailToFournisseurs < ActiveRecord::Migration
def change
add_column :fournisseurs, :email, :string
add_column :fournisseurs, :send_email, :boolean
end
end

View File

@ -11,7 +11,7 @@
# #
# It's strongly recommended that you check this file into your version control system. # 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| create_table "abonnements", force: :cascade do |t|
t.integer "abonnement_type_id", limit: 4 t.integer "abonnement_type_id", limit: 4
@ -378,6 +378,8 @@ ActiveRecord::Schema.define(version: 20180301225428) do
t.string "bic", limit: 255 t.string "bic", limit: 255
t.datetime "created_at", null: false t.datetime "created_at", null: false
t.datetime "updated_at", null: false t.datetime "updated_at", null: false
t.string "email", limit: 255
t.boolean "send_email", limit: 1
end end
create_table "gallery_contents", force: :cascade do |t| 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_index", limit: 4
t.integer "bl_year", limit: 4 t.integer "bl_year", limit: 4
t.boolean "shiped", limit: 1 t.boolean "shiped", limit: 1
t.integer "reseaux_id", limit: 4
end end
create_table "product_product_sizes", force: :cascade do |t| create_table "product_product_sizes", force: :cascade do |t|

BIN
pdf_stamp/bl19.pdf Normal file

Binary file not shown.