This commit is contained in:
Nicolas Bally 2020-03-23 13:35:43 +01:00
parent 90d7789b34
commit e27c3d8331
9 changed files with 360 additions and 156 deletions

View File

@ -18,11 +18,63 @@ class Admin::PDocumentsController < ApplicationController
end
def index
@p_documents = PDocument.order("created_at DESC")
@p_documents = PDocument.includes(:p_customer)
params[:p_document_type_ids] = params[:p_document_type_ids] || []
@p_documents = @p_documents.where(:p_document_type_id => params[:p_document_type_ids]) if params[:p_document_type_ids].size > 0
date_regex = /^(0[1-9]|[12][0-9]|3[01])[\/](0[1-9]|1[012])[\/](19|20)\d\d$/i
params[:start] = Date.today.beginning_of_month.strftime('%d/%m/%Y') if !params[:start]
if params[:start] and params[:start] =~ date_regex
@start = Date.parse(params[:start]).beginning_of_day
params[:start]= @start.strftime('%d/%m/%Y')
else
@start = nil
end
if true
params[:stop] = Date.today.end_of_month.strftime('%d/%m/%Y') if !params[:stop]
if params[:stop].to_s != "" # and params[:stop] =~ date_regex
@stop = Date.parse(params[:stop]).end_of_day
params[:stop]= @stop.strftime('%d/%m/%Y')
else
@stop = nil
end
end
if params[:amount_min].to_s != ""
@p_documents = @p_documents.where("cache_total_ttc >= ?", params[:amount_min])
end
if params[:amount_max].to_s != ""
@p_documents = @p_documents.where("cache_total_ttc <= ?", params[:amount_max])
end
@p_documents = @p_documents.where("p_documents.created_at >= ?", @start) if @start
@p_documents = @p_documents.where("p_documents.created_at <= ?", @stop.end_of_day) if @stop
@p_documents = sort_by_sorting(@p_documents, "created_at DESC")
per_page = (params[:search][:per_page] and params[:search][:per_page] != "") ? params[:search][:per_page] : 50
page = (params[:search][:page] and params[:search][:page] != "") ? params[:search][:page] : 1
@p_documents = @p_documents.page(page).per(per_page)
@p_documents = @p_documents.where(:p_document_type_id => params[:p_document_type_id]) if params[:p_document_type_id]
@p_documents = @p_documents.all
render :layout => "admin"
end
def detail

View File

@ -11,7 +11,64 @@ class Admin::PPaymentsController < ApplicationController
end
def index
@p_payments = PPayment.order("created_at DESC").all
@p_payments = PPayment.includes(:p_payment_type)
params[:p_payment_type_ids] = params[:p_payment_type_ids] || []
@p_payments = @p_payments.where(:p_payment_type_id => params[:p_payment_type_ids]) if params[:p_payment_type_ids].size > 0
date_regex = /^(0[1-9]|[12][0-9]|3[01])[\/](0[1-9]|1[012])[\/](19|20)\d\d$/i
params[:start] = Date.today.beginning_of_month.strftime('%d/%m/%Y') if !params[:start]
if params[:start] and params[:start] =~ date_regex
@start = Date.parse(params[:start]).beginning_of_day
params[:start]= @start.strftime('%d/%m/%Y')
else
@start = nil
end
if true
params[:stop] = Date.today.end_of_month.strftime('%d/%m/%Y') if !params[:stop]
if params[:stop].to_s != "" # and params[:stop] =~ date_regex
@stop = Date.parse(params[:stop]).end_of_day
params[:stop]= @stop.strftime('%d/%m/%Y')
else
@stop = nil
end
end
if params[:amount_min].to_s != ""
@p_payments = @p_payments.where("amount >= ?", params[:amount_min])
end
if params[:amount_max].to_s != ""
@p_payments = @p_payments.where("amount <= ?", params[:amount_max])
end
@p_payments = @p_payments.where("p_payments.created_at >= ?", @start) if @start
@p_payments = @p_payments.where("p_payments.created_at <= ?", @stop.end_of_day) if @stop
@p_payments = sort_by_sorting(@p_payments, "created_at DESC")
per_page = (params[:search][:per_page] and params[:search][:per_page] != "") ? params[:search][:per_page] : 50
page = (params[:search][:page] and params[:search][:page] != "") ? params[:search][:page] : 1
@p_payments = @p_payments.page(page).per(per_page)
end

View File

@ -26,6 +26,26 @@ class PDocument < ActiveRecord::Base
belongs_to :element, :polymorphic => true
acts_as_sorting :fields => {
:created_at => {:name => "Date", :reorder => true},
:p_customer_sheet => {:name => "Offre", :reorder => false},
:p_customer => {:name => "Client", :reorder => false},
:label => {:name => "Type", :reorder => true},
:d_number => {:name => "Numéro", :reorder => true},
:cache_total_ht => {:name => "Total HT", :reorder => true},
:cache_total_ttc => {:name => "Total TTC", :reorder => true},
:paid => {:name => "Payée", :reorder => true},
:cache_to_paid => {:name => "Solde", :reorder => true},
:echeance_date => {:name => "Echéance", :reorder => false},
:echeance_days => {:name => "Jours de retard ", :reorder => false},
:actions => {:name => "Actions", :reorder => false}
}
attr_accessor :sheet_id, :skip_update_caches
before_save do

View File

@ -12,6 +12,21 @@ class PPayment < ActiveRecord::Base
has_one :p_compta_element, :as => :element, :dependent => :destroy
acts_as_sorting :fields => {
:paid_at => {:name => "Date de paiement", :reorder => true},
:p_customer => {:name => "Client", :reorder => false},
:payment_type => {:name => "Type de paiement", :reorder => false},
:amount => {:name => "Montant", :reorder => true},
:solde => {:name => "Solde", :reorder => false},
:actions => {:name => "Actions", :reorder => false}
}
before_validation do

View File

@ -1,3 +1,3 @@
%li= link_to "Tous", admin_p_documents_path, :class => ("active" if !params[:p_document_type_id])
- PDocumentType.order("position").all.each do |p_document_type|
%li= link_to p_document_type.name, admin_p_documents_path(:p_document_type_id => p_document_type.id), :class => ("active" if p_document_type.id.to_s == params[:p_document_type_id].to_s)
%li= link_to p_document_type.name, admin_p_documents_path("p_document_type_ids[]" => p_document_type.id), :class => ("active" if p_document_type.id.to_s == params[:p_document_type_id].to_s)

View File

@ -1,146 +1,76 @@
-if false
%tr
%tr#p_document{:id => p_document.id}
-tr = {}
-tr[:created_at] = capture do
%td
=l p_document.created_at, :format => :date
-if @p_documents
%td
=link_to "##{p_document.element.id}", admin_p_customer_sheet_path(p_document.element)
%td
=p_document.element.p_customer.show_name if p_document.element and p_document.element.p_customer
%td
=p_document.label
%td
=link_to p_document.d_number, admin_p_document_path(p_document.token)
-totals = PSheetLine.totals(p_document.p_sheet_lines)
%td
= number_to_currency totals[:total]
HT
%td
= number_to_currency totals[:total_ttc]
TTC
-if params[:p_document_type_id].to_i == 4
%th
="oui" if p_document.theo_paid
%th
="oui" if p_document.paid
-if false
%table
%tr
%td
Paid
%td
=p_document.paid
%tr
%td
TH Paid
%td
=p_document.theo_paid
-p_document.p_payment_documents.each do |pp|
%tr
%td
=pp.amount
%td
=pp.paid
=pp.p_payment.paid
%td.actions
-if p_document.label == "Facture" and !@relances
-#if p_document.relative_docs.where(:label => "Avoir").count == 0
=link_to "Créer un avoir", create_avoir_admin_p_document_path(p_document) #, :data => {:confirm => "Voulez-vous vraiment créer un avoir ?"}
&nbsp;&nbsp;
=link_to i(:eye), detail_admin_p_document_path(p_document)
-skip_bill_details = skip_bill_details || false
%tr#p_document{:id => p_document.id}
-if @case_multiple
%td
=check_box_tag "ids[]", p_document.token
%td
=l p_document.created_at, :format => :date
-if !@p_customer_sheet or true
-tr[:p_customer_sheet] = capture do
%td
=link_to "##{p_document.element.id}", admin_p_customer_sheet_path(p_document.element)
-if p_document.p_customer
-tr[:p_customer] = capture do
%td
=link_to p_document.p_customer.show_name, [:admin, p_document.p_customer]
-if p_document.p_customer
=link_to p_document.p_customer.show_name, [:admin, p_document.p_customer]
-tr[:label] = capture do
%td
=p_document.label
-tr[:d_number] = capture do
%td
=link_to p_document.d_number, admin_p_document_path(p_document.token)
-tr[:cache_total_ht] = capture do
%td.numeraire
= number_to_currency p_document.cache_total_ht
%td
=p_document.label
%td
=link_to p_document.d_number, admin_p_document_path(p_document.token)
%td.numeraire
= number_to_currency p_document.cache_total_ht
%td.numeraire
= number_to_currency p_document.cache_total_ttc
-tr[:cache_total_ttc] = capture do
%td.numeraire
= number_to_currency p_document.cache_total_ttc
-if (!skip_bill_details)
-tr[:paid] = capture do
%td
=ic(:check) if p_document.paid
-tr[:cache_to_paid] = capture do
%td.numeraire
-if p_document.cache_to_paid?
=number_to_currency p_document.cache_to_paid
-tr[:echeance_date] = capture do
%td
=l p_document.echeance_date, :format => :date if p_document.echeance_date
-tr[:echeance_days] = capture do
%td
-if p_document.label == "Facture" or p_document.label == "Facture Acompte"
-if p_document.echeance_date and !p_document.paid
-j = (Date.today - p_document.echeance_date).to_i
-if j > 0
%span{:style => "color:red;"}
=j
-else
%span{:style => "color:green;"}
=j
-tr[:actions] = capture do
%td.actions
-if p_document.label == "Facture" and !@relances
-if p_document.relative_docs.where(:label => "Avoir").count == 0 or true
=link_to "Créer un avoir", create_avoir_admin_p_document_path(p_document), :data => {:confirm => "Voulez-vous vraiment créer un avoir ?"}
&nbsp;&nbsp;
=link_to i(:eye), detail_admin_p_document_path(p_document), :remote => false
=link_to i(:envelope), send_by_mail_admin_p_document_path(p_document), :remote => false
-if false
@ -148,8 +78,10 @@
=ic :lock
-else
=link_to i(:pencil), edit_admin_p_document_path(p_document), :remote => true
=render :partial => "qi/qi_ordered_table_object", :locals => {:tr => tr, :object => p_document}

View File

@ -5,30 +5,84 @@
Liste des documents
.qi_row
.qi_pannel.qi_plain.padding
%table.table
%tr
%th Date
%th Offre
%th Client
%th Type
%th Numéro
%th Total HT
%th Total TTC
%th
Payée
%th Solde
%th Echéance
.qi_search_row
=form_tag "", :method => "get", :onsubmit => "" do
-params[:search] =params[:search] || {}
%th Jours de retard
%th
%table
%table.search_table
%tr
%td
Début
%td
.input-group
=text_field_tag :start, params[:start],:class => "form-control datepicker", :placeholder => "Début"
%span.input-group-addon.btn{:onclick => "$(this).prev('input').val('');"}
=ic(:times)
%br
-if @start and @stop
=link_to "< Mois précédent",request.query_parameters.merge({start: ((@start - 1.month).beginning_of_month.strftime('%d/%m/%Y')), stop: ((@stop - 1.month).end_of_month.strftime('%d/%m/%Y'))}), :class => "btn btn-default"
%td
Fin
%td
.input-group
=text_field_tag :stop, params[:stop],:class => "form-control datepicker", :placeholder => "Fin"
%span.input-group-addon.btn{:onclick => "$(this).prev('input').val('');"}
=ic(:times)
%br
-if @start and @stop
=link_to "Mois suivant >",request.query_parameters.merge({start: ((@start + 1.month).beginning_of_month.strftime('%d/%m/%Y')), stop: ((@stop + 1.month).end_of_month.strftime('%d/%m/%Y'))}), :class => "btn btn-default"
-params[:p_document_type_ids] = params[:p_document_type_ids] || []
%td
Type de document :
%td
-PDocumentType.where(:enabled => true).order("position").each do |pdt|
%p
= check_box_tag :"p_document_type_ids[]", pdt.id, (true if params[:p_document_type_ids].include?(pdt.id.to_s)), {:id => "p_document_type_ids_#{pdt.id}"}
= label_tag "p_document_type_ids_"+pdt.id.to_s, pdt.name
%td
%td
%td
%td
Montant :
%td
de
%td
=number_field_tag :amount_min, params[:amount_min],:class => "form-control", :placeholder => "Min", :step => 0.01
%td
à
%td
=number_field_tag :amount_max, params[:amount_max],:class => "form-control", :placeholder => "Max", :step => 0.01
%td
=render :partial => "qi/qi_ordered_table_search_footer", :locals => {:collection_object => @p_documents}
=render :partial => "qi/qi_ordered_table", :locals => {:qi_ordered_table_collection => @p_documents}
%tbody#p_customer_sheets_rows
=render @p_documents
:scss
.qi_search_row{
td{
vertical-align:top;
}
p{
margin:0;
}
}

View File

@ -1,14 +1,28 @@
%tr#p_payment_row{:id => p_payment.id}
%td= ic(:check) if p_payment.paid
%td= l(p_payment.paid_at, :format => :date) if p_payment.paid_at
%td= l(p_payment.theo_date, :format => :date) if p_payment.theo_date
%td=link_to(p_payment.p_customer.show_name, [:admin, p_payment.p_customer]) if p_payment.p_customer
%td= number_to_currency p_payment.amount
-tr = {}
%td= number_to_currency(p_payment.amount-p_payment.total_affected) if (p_payment.amount-p_payment.total_affected) > 0
%td.actions
= link_to i(:"trash-o"), [:admin, p_payment], method: :delete, data: { confirm: 'Voulez-vous vraiment supprimer cet auteur ? ' } , :remote => true
= link_to i(:pencil), edit_admin_p_payment_path(p_payment), :remote => true
-tr[:paid_at] = capture do
%td= l(p_payment.paid_at, :format => :date) if p_payment.paid_at
-tr[:p_customer] = capture do
%td=link_to(p_payment.p_customer.show_name, [:admin, p_payment.p_customer]) if p_payment.p_customer
-tr[:payment_type] = capture do
%td= p_payment.p_payment_type.name if p_payment.p_payment_type
-tr[:amount] = capture do
%td= number_to_currency p_payment.amount
-tr[:solde] = capture do
%td= number_to_currency(p_payment.amount-p_payment.total_affected) if (p_payment.amount-p_payment.total_affected) > 0
-tr[:actions] = capture do
%td.actions
= link_to i(:"trash-o"), [:admin, p_payment], method: :delete, data: { confirm: 'Voulez-vous vraiment supprimer cet auteur ? ' } , :remote => true
= link_to i(:pencil), edit_admin_p_payment_path(p_payment), :remote => true
=render :partial => "qi/qi_ordered_table_object", :locals => {:tr => tr, :object => p_payment}

View File

@ -6,21 +6,81 @@
Liste des paiements
.qi_row
.qi_pannel.qi_plain.padding
%table.table
%tr
%th
%th Date de paiement
%th Date théorique
.qi_search_row
=form_tag "", :method => "get", :onsubmit => "" do
-params[:search] =params[:search] || {}
%table
%table.search_table
%tr
%td
Début
%td
.input-group
=text_field_tag :start, params[:start],:class => "form-control datepicker", :placeholder => "Début"
%span.input-group-addon.btn{:onclick => "$(this).prev('input').val('');"}
=ic(:times)
%br
-if @start and @stop
=link_to "< Mois précédent",request.query_parameters.merge({start: ((@start - 1.month).beginning_of_month.strftime('%d/%m/%Y')), stop: ((@stop - 1.month).end_of_month.strftime('%d/%m/%Y'))}), :class => "btn btn-default"
%td
Fin
%td
.input-group
=text_field_tag :stop, params[:stop],:class => "form-control datepicker", :placeholder => "Fin"
%span.input-group-addon.btn{:onclick => "$(this).prev('input').val('');"}
=ic(:times)
%br
-if @start and @stop
=link_to "Mois suivant >",request.query_parameters.merge({start: ((@start + 1.month).beginning_of_month.strftime('%d/%m/%Y')), stop: ((@stop + 1.month).end_of_month.strftime('%d/%m/%Y'))}), :class => "btn btn-default"
-params[:p_payment_type_ids] = params[:p_payment_type_ids] || []
%td
Type de document :
%td
-PPaymentType.where(:enabled => true).order("name").each do |pdt|
%p
= check_box_tag :"p_payment_type_ids[]", pdt.id, (true if params[:p_payment_type_ids].include?(pdt.id.to_s)), {:id => "p_payment_type_ids_#{pdt.id}"}
= label_tag "p_payment_type_ids_"+pdt.id.to_s, pdt.name
%td
%td
Montant :
%td
de
%td
=number_field_tag :amount_min, params[:amount_min],:class => "form-control", :placeholder => "Min", :step => 0.01
%td
à
%td
=number_field_tag :amount_max, params[:amount_max],:class => "form-control", :placeholder => "Max", :step => 0.01
%td
%th Client
%th Montant
%th Montant à affecter
%th
=render :partial => "qi/qi_ordered_table_search_footer", :locals => {:collection_object => @p_payments}
=render :partial => "qi/qi_ordered_table", :locals => {:qi_ordered_table_collection => @p_payments}
%tbody#p_payments_rows
=render @p_payments
:scss
.qi_search_row{
td{
vertical-align:top;
}
p{
margin:0;
}
}