Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Original file line number Diff line number Diff line change
Expand Up @@ -61,7 +61,6 @@
{value: "translations", text: $translate.instant('Translation')}
]


$scope.CounterpartyTypes = [
{ value: "Customer", text: 'Customers' },
{ value: "Vendor", text: 'Vendors' },
Expand Down Expand Up @@ -114,7 +113,7 @@
if v.id == parseInt($scope.newRegister.counterparty_id)
$scope.counterpartiesWithoutPay.splice(k,1)
return
$scope.newRegister = {date: $scope.newRegister.date, currency: $scope.newRegister.currency}
$scope.newRegister = {date: $scope.newRegister.date, currency: $scope.newRegister.currency, vendor_id: $scope.vendor_id}
, (response) ->
$scope.newRegister.errors = response.data.errors
)
Expand Down
12 changes: 8 additions & 4 deletions app/assets/javascripts/angular/directives.js.coffee.erb
Original file line number Diff line number Diff line change
Expand Up @@ -106,6 +106,8 @@ app.config ['$translateProvider', ($translateProvider) ->
counterparty: "Counterparty"
articles: "Articles"
article: "Article"
customer: "Customer"
vendor: "Vendor"
register: "Register"
reports: "Reports"
charts: "Charts"
Expand All @@ -122,8 +124,8 @@ app.config ['$translateProvider', ($translateProvider) ->
Loan: "loan"
profit: "profit"
month: "Month"
totall: "Total"
totall_min: "Total(min)"
total: "Total"
total_min: "Total(min)"
clearForm: "Clear form"
searchFilter: "Search filter"
note: "Note"
Expand Down Expand Up @@ -292,6 +294,8 @@ app.config ['$translateProvider', ($translateProvider) ->
counterparty: "Контрагент"
articles: "Статті"
article: "Стаття"
customer: "Клієнт"
vendor: "Постачальник"
register: "Реєстр"
reports: "Звіти"
charts: "Графік"
Expand All @@ -308,8 +312,8 @@ app.config ['$translateProvider', ($translateProvider) ->
Loan: "позика"
profit: "прибуток"
month: "Місяць"
totall: "Сумма"
totall_min: "Сумма(min)"
total: "Сумма"
total_min: "Сумма(min)"
clearForm: "Очистити форму"
SearchFilter: "Пошук за фільтром"
notes: "Примітки"
Expand Down
36 changes: 27 additions & 9 deletions app/assets/templates/angular/shared/registers.html.slim
Original file line number Diff line number Diff line change
Expand Up @@ -5,8 +5,9 @@
tr
th translate="date"
th translate="article"
th translate="counterparty"
th translate="totall"
th translate="customer"
th translate="vendor"
th translate="total"
th translate="note"
tr
td
Expand All @@ -17,7 +18,11 @@
| {{article.name}} ({{article.type | translate}})
td
select.counterparty.clear_after_add ng-model="newRegister.counterparty_id"
option ng-repeat="counterparty in counterparties" value="{{counterparty.id}}"
option ng-repeat="counterparty in counterparties | filter: {type: 'Customer'}" value="{{counterparty.id}}"
| {{counterparty.name}}
td
select.counterparty.clear_after_add ng-model="newRegister.vendor_id"
option ng-repeat="counterparty in counterparties | filter: {type: 'Vendor'}" value="{{counterparty.id}}"
| {{counterparty.name}}
td ng-class=("{td_correction: sandbox, input_and_select: sandbox}")
input.value ng-model="newRegister.value" type="text"
Expand All @@ -43,7 +48,7 @@
span.rate_currency ng-show="sandbox"
| {{ 'rate_currency' | translate }}
input.value ng-change="changeValue()" ng-model="rateDollar" type="text"
a.show_list_count href="" ng-click="showlistCount = !showlistCount" ng-show="counterpartiesWithoutPay.length>0 && !showlistCount"
a.show_list_count href="" ng-click="showlistCount = !showlistCount" ng-show="counterpartiesWithoutPay.length > 0 && !showlistCount"
| {{ 'show' | translate }}: {{ 'count_without_pay' | translate }}
form.form-filter.ng-pristine.ng-valid ng-class="{open_form_filter: filter.active}" ng-submit="filter.fetchRegisters({initLoad: true})"
.head_filter ng-show="filter.active"
Expand Down Expand Up @@ -71,9 +76,11 @@
th
| {{ 'articles' | translate }}
th
| {{ 'counterparty' | translate }}
| {{ 'customer' | translate }}
th
| {{ 'totall_min' | translate }}
| {{ 'vendor' | translate }}
th
| {{ 'total_min' | translate }}
tr
td
input#dateFilter.input_data.ng-pristine.ng-valid ng-change="filter.data.month = undefined" ng-model="filter.data.date" type="text"
Expand All @@ -85,7 +92,11 @@
| {{article.name}} ({{article.type | translate}})
td
select.counterparty.search ng-model="filter.data.counterparty_id"
option ng-repeat="counterparty in counterparties" value="{{counterparty.id}}"
option ng-repeat="counterparty in counterparties | filter: {type: 'Customer'}" value="{{counterparty.id}}"
| {{counterparty.name}}
td
select.counterparty.search ng-model="filter.data.vendor_id"
option ng-repeat="counterparty in counterparties | filter: {type: 'Vendor'}" value="{{counterparty.id}}"
| {{counterparty.name}}
td
input.value.search ng-model="filter.data.value" type="text"
Expand Down Expand Up @@ -133,10 +144,13 @@
| {{ 'article' | translate }}
th
a href="" ng-class="{'up_arrow' : predicate=='counterparty.name' && reverse, 'down_arrow' : predicate=='counterparty.name' && !reverse}" ng-click="predicate='counterparty.name'; reverse=!reverse"
| {{ 'counterparty' | translate }}
| {{ 'customer' | translate }}
th
a href="" ng-class="{'up_arrow' : predicate=='vendor.name' && reverse, 'down_arrow' : predicate=='vendor.name' && !reverse}" ng-click="predicate='vendor.name'; reverse=!reverse"
| {{ 'vendor' | translate }}
th
a href="" ng-class="{'up_arrow' : predicate=='value_currency' && reverse, 'down_arrow' : predicate=='value_currency' && !reverse}" ng-click="predicate='value_currency'; reverse=!reverse"
| {{ 'totall' | translate }}
| {{ 'total' | translate }}
th translate="notes"
tr ng-repeat="register in registers | orderBy:(predicate || 'date_reverse'):reverse" repeat-complete="" style="background: {{ register.background }}"
td
Expand All @@ -155,6 +169,10 @@
span e-class="search-select" e-form="rowform" e-name="counterparty_id" e-ng-options="s.id as s.name for s in counterparties" editable-select="register.counterparty.id"
.buttons ng-show="!rowform.$visible"
| {{ register.counterparty.name }}
td
span e-class="search-select" e-form="rowform" e-name="vendor_id" e-ng-options="s.id as s.name for s in counterparties" editable-select="register.vendor.id"
.buttons ng-show="!rowform.$visible"
| {{ register.vendor.name }}
td.td_correction ng-class=("{input_and_select: sandbox}")
span e-class="value" e-form="rowform" e-name="value" e-ng-class="{value_plan: sandbox}" editable-text="register.value"
span.buttons ng-show="!rowform.$visible"
Expand Down
4 changes: 2 additions & 2 deletions app/controllers/registers_controller.rb
Original file line number Diff line number Diff line change
Expand Up @@ -4,7 +4,7 @@ class RegistersController < ApplicationController
before_action :set_model

def index
registers = @model.index_sort(params.slice(:month, :type, :article_id, :counterparty_id, :date, :value, :offset))
registers = @model.index_sort(params.slice(:month, :type, :article_id, :counterparty_id, :vendor_id, :date, :value, :offset))
json = ActiveModel::ArraySerializer.new(registers,
each_serializer: RegisterSerializer,
root: nil)
Expand Down Expand Up @@ -44,7 +44,7 @@ def set_model
end

def register_params
params.require(:register).permit(:date, :article_id, :counterparty_id, :value, :notes, :background, :currency)
params.require(:register).permit(:date, :article_id, :counterparty_id, :vendor_id, :value, :notes, :background, :currency)
end

def find_register
Expand Down
2 changes: 0 additions & 2 deletions app/helpers/counterparties_controller_helper.rb

This file was deleted.

8 changes: 4 additions & 4 deletions app/models/counterparties/customer.rb
Original file line number Diff line number Diff line change
@@ -1,11 +1,11 @@
class Customer < Counterparty
after_create :create_info_record

has_many :vendors
has_many :hours
has_one :client_info, dependent: :destroy
has_many :client_acts, dependent: :destroy
has_many :client_invoices, dependent: :destroy
has_many :hours

after_create :create_info_record

delegate :repr_name, :name, :address, :invoice_id, :agreement_number, :title_en, :title_ua, :agreement_date, to: :client_info, prefix: true

def create_info_record
Expand Down
11 changes: 5 additions & 6 deletions app/models/counterparties/vendor.rb
Original file line number Diff line number Diff line change
@@ -1,15 +1,14 @@
class Vendor < Counterparty
after_create :create_info_record
belongs_to :customer
has_many :hours
has_one :vendor_info, dependent: :destroy
has_many :counterparties, through: :registers
has_many :hours
has_many :registers, dependent: :destroy
has_many :vacations, dependent: :destroy
has_many :vendor_acts, dependent: :destroy
has_many :vendor_orders, dependent: :destroy
has_many :vacations, dependent: :destroy

before_create { generate_token(:auth_token) }

delegate :name, to: :customer, prefix: true
after_create :create_info_record

scope :by_missing_hours, lambda { |date = Date.current.at_beginning_of_month|
includes(:hours).active.reject do |v|
Expand Down
3 changes: 2 additions & 1 deletion app/models/counterparty.rb
Original file line number Diff line number Diff line change
@@ -1,6 +1,7 @@
class Counterparty < ActiveRecord::Base
has_many :registers
has_many :payment_histories, dependent: :destroy
has_many :registers, dependent: :destroy
has_many :vendors, through: :registers

module TYPES
CUSTOMER = 'Customer'
Expand Down
12 changes: 8 additions & 4 deletions app/models/register.rb
Original file line number Diff line number Diff line change
@@ -1,7 +1,8 @@
# frozen_string_literal: true
class Register < ActiveRecord::Base
belongs_to :counterparty
belongs_to :article
belongs_to :counterparty
belongs_to :vendor

module TYPES
FACT = 'Fact'
Expand All @@ -16,7 +17,10 @@ def plan?
type == TYPES::PLAN
end

validates :date, :article, :value, presence: true
validates :date, :article, :value, :counterparty_id, :vendor_id, presence: true
validates :counterparty_id, uniqueness: { scope: :vendor_id }

delegate :article_name, :type, to: :article

scope :revenues, lambda {
joins(:article).where(articles: { type: Article::TYPES::REVENUE })
Expand All @@ -40,6 +44,7 @@ def plan?
.by_type(params[:type])
.by_article(params[:article_id])
.by_counterparty(params[:counterparty_id])
.by_vendor(params[:vendor_id])
.by_date(params[:date])
.by_value(params[:value])
.limit(10)
Expand All @@ -66,6 +71,7 @@ def plan?

scope :by_date, -> (date) { where(date: Date.parse(date)) unless date.blank? }
scope :by_counterparty, -> (data) { where(counterparty_id: data) if data }
scope :by_vendor, -> (data) { where(vendor_id: data) if data }
scope :by_value, -> (data) { where('value >= ?', data) if data }
scope :by_type, -> (type) { send(type) if type }

Expand All @@ -82,8 +88,6 @@ def plan?
where('extract(year from date) = ?', year)
}

delegate :article_name, :type, to: :article

scope :group_by_month, lambda {
joins(:article).select(" month(date) as month,
sum(case when articles.type = '#{Article::TYPES::REVENUE}' then value else 0 end) as revenue,
Expand Down
6 changes: 5 additions & 1 deletion app/serializers/register_serializer.rb
Original file line number Diff line number Diff line change
@@ -1,10 +1,14 @@
class RegisterSerializer < ActiveModel::Serializer
attributes :id, :date, :counterparty, :article, :value, :notes, :background, :currency
attributes :id, :date, :counterparty, :vendor, :article, :value, :notes, :background, :currency

def counterparty
CounterpartyRegisterSerializer.new(object.counterparty)
end

def vendor
CounterpartyRegisterSerializer.new(object.vendor)
end

def article
ArticleSerializer.new(object.article)
end
Expand Down
2 changes: 1 addition & 1 deletion app/views/notification_mailer/vendor_add_hours.html.slim
Original file line number Diff line number Diff line change
Expand Up @@ -14,7 +14,7 @@ table
th
tr
td
= @vendor.customer_name
= @hour[:customer_name]
td
= @hour[:hours]
td
Expand Down
5 changes: 5 additions & 0 deletions db/migrate/20160909080732_add_vendor_id_to_registers.rb
Original file line number Diff line number Diff line change
@@ -0,0 +1,5 @@
class AddVendorIdToRegisters < ActiveRecord::Migration
def change
add_column :registers, :vendor_id, :integer, index: true
end
end
Loading