mirror of
https://github.com/LaCasemate/fab-manager.git
synced 2025-01-18 07:52:23 +01:00
[ongoing] close period for max 1 year + force contiguous periods + fix totals
This commit is contained in:
parent
2a32bc4752
commit
4e7a62bc2b
@ -659,13 +659,14 @@ Application.Controllers.controller('ClosePeriodModalController', ['$scope', '$ui
|
||||
function ($scope, $uibModalInstance, $window, Invoice, AccountingPeriod, periods, lastClosingEnd, dialogs, growl, _t) {
|
||||
const YESTERDAY = moment.utc({ h: 0, m: 0, s: 0, ms: 0 }).subtract(1, 'day').toDate();
|
||||
const LAST_CLOSING = moment.utc(lastClosingEnd.last_end_date).toDate();
|
||||
const MAX_END = moment.utc(lastClosingEnd.last_end_date).add(1, 'year').toDate();
|
||||
|
||||
/* PUBLIC SCOPE */
|
||||
|
||||
// date pickers values are bound to these variables
|
||||
$scope.period = {
|
||||
start_at: LAST_CLOSING,
|
||||
end_at: YESTERDAY
|
||||
end_at: moment(YESTERDAY).isBefore(MAX_END) ? YESTERDAY : MAX_END,
|
||||
};
|
||||
|
||||
// any form errors will come here
|
||||
@ -684,7 +685,7 @@ Application.Controllers.controller('ClosePeriodModalController', ['$scope', '$ui
|
||||
startOpened: false,
|
||||
endOpened: false,
|
||||
minDate: LAST_CLOSING,
|
||||
maxDate: YESTERDAY,
|
||||
maxDate: moment(YESTERDAY).isBefore(MAX_END) ? YESTERDAY : MAX_END,
|
||||
options: {
|
||||
startingDay: Fablab.weekStartingDay
|
||||
}
|
||||
@ -693,10 +694,10 @@ Application.Controllers.controller('ClosePeriodModalController', ['$scope', '$ui
|
||||
/**
|
||||
* Callback to open the datepicker
|
||||
*/
|
||||
$scope.openDatePicker = function ($event, pickerId) {
|
||||
$scope.toggleDatePicker = function ($event) {
|
||||
$event.preventDefault();
|
||||
$event.stopPropagation();
|
||||
$scope.datePicker[`${pickerId}Opened`] = true;
|
||||
$scope.datePicker.endOpened = !$scope.datePicker.endOpened;
|
||||
};
|
||||
|
||||
/**
|
||||
|
@ -15,10 +15,10 @@
|
||||
datepicker-options="datePicker.options"
|
||||
is-open="datePicker.startOpened"
|
||||
min-date="datePicker.minDate"
|
||||
max-date="datePicker.maxDate"
|
||||
max-date="datePicker.minDate"
|
||||
init-date="period.start_at"
|
||||
placeholder="{{datePicker.format}}"
|
||||
ng-click="openDatePicker($event, 'start')"
|
||||
readonly
|
||||
required/>
|
||||
</div>
|
||||
<span class="help-block" ng-show="closePeriodForm.start_at.$dirty && closePeriodForm.start_at.$error.required" translate>{{ 'invoices.start_date_is_required' }}</span>
|
||||
@ -39,7 +39,7 @@
|
||||
max-date="datePicker.maxDate"
|
||||
init-date="period.end_at"
|
||||
placeholder="{{datePicker.format}}"
|
||||
ng-click="openDatePicker($event, 'end')"
|
||||
ng-click="toggleDatePicker($event)"
|
||||
required/>
|
||||
</div>
|
||||
<span class="help-block" ng-show="closePeriodForm.end_at.$dirty && closePeriodForm.end_at.$error.required" translate>{{ 'invoices.end_date_is_required' }}</span>
|
||||
|
@ -21,7 +21,7 @@ class AccountingPeriod < ActiveRecord::Base
|
||||
end
|
||||
|
||||
def invoices
|
||||
Invoice.where('created_at >= :start_date AND created_at < :end_date', start_date: start_at, end_date: end_at)
|
||||
Invoice.where('created_at >= :start_date AND created_at <= :end_date', start_date: start_at, end_date: end_at)
|
||||
end
|
||||
|
||||
def archive_file
|
||||
@ -70,8 +70,9 @@ class AccountingPeriod < ActiveRecord::Base
|
||||
end
|
||||
|
||||
def compute_totals
|
||||
self.period_total = invoices.all.map(&:total).reduce(:+)
|
||||
self.perpetual_total = Invoice.where('created_at < :end_date', end_date: end_at).all.map(&:total).reduce(:+)
|
||||
self.period_total = invoices.all.map(&:total).reduce(:+) || 0
|
||||
self.perpetual_total = Invoice.where('created_at <= :end_date AND type IS NULL', end_date: end_at)
|
||||
.all.map(&:total).reduce(:+) || 0
|
||||
self.footprint = compute_footprint
|
||||
end
|
||||
|
||||
|
@ -5,7 +5,7 @@ class DateRangeValidator < ActiveModel::Validator
|
||||
def validate(record)
|
||||
the_end = record.start_at
|
||||
the_start = record.end_at
|
||||
return unless the_end.present? && the_end >= the_start
|
||||
return unless the_end.present? && the_end > the_start
|
||||
|
||||
record.errors[:end_at] << "The end date can't be before the start date. Pick a date after #{the_start}"
|
||||
end
|
||||
|
Loading…
x
Reference in New Issue
Block a user