-
Notifications
You must be signed in to change notification settings - Fork 105
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
improvement(Improve Employees Standings report) #3799
improvement(Improve Employees Standings report) #3799
Conversation
// also be the employee's balance for the search period | ||
if(options.extractEmployee) { | ||
if (creditorOperations.transactions.length) { | ||
data.lastCum = creditorOperations.transactions[creditorOperations.transactions.length-1]; |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Infix operators must be spaced space-infix-ops
// provides the latest element of the table, | ||
// as the request is ordered by date, the last line item will | ||
// also be the employee's balance for the search period | ||
if(options.extractEmployee) { |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Expected space(s) after "if" keyword-spacing
let report; | ||
options.extractEmployee = parseInt(options.extractEmployee, 10); | ||
|
||
if(!options.extractEmployee) { |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Expected space(s) after "if" keyword-spacing
const transDateTo = moment(dateTo).format('YYYY-MM-DD'); | ||
|
||
filterBydatePosting = ` AND (DATE(p.trans_date) >= DATE('${transDateFrom}') AND DATE(p.trans_date) <= DATE('${transDateTo}'))`; | ||
filterBydateLegder = ` AND (DATE(g.trans_date) >= DATE('${transDateFrom}') AND DATE(g.trans_date) <= DATE('${transDateTo}'))`; |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Line 118 exceeds the maximum line length of 120 max-len
const transDateFrom = moment(dateFrom).format('YYYY-MM-DD'); | ||
const transDateTo = moment(dateTo).format('YYYY-MM-DD'); | ||
|
||
filterBydatePosting = ` AND (DATE(p.trans_date) >= DATE('${transDateFrom}') AND DATE(p.trans_date) <= DATE('${transDateTo}'))`; |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Line 117 exceeds the maximum line length of 120 max-len
// provides the latest element of the table, | ||
// as the request is ordered by date, the last line item will | ||
// also be the employee's balance for the search period | ||
if(options.extractEmployee) { |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Expected space(s) after "if" keyword-spacing
let report; | ||
options.extractEmployee = parseInt(options.extractEmployee, 10); | ||
|
||
if(!options.extractEmployee) { |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Expected space(s) after "if" keyword-spacing
@jniles @mbayopanda can you review this PR |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
@lomamech, the code looks pretty good. I've just made a few comments on naming things.
I'm a bit concerned about opening balances - It seems like, if we filter by date, we should remember the debtor's opening balance at the start of the filtering. Right now, it seems like it is always 0. For example, if we have the following transactions:
Txn ID | Debit | Credit | Date | cumsum |
---|---|---|---|---|
HBB123 | 0 | 50 | 1-Jan-2019 | -50 |
HBB150 | 25 | 0 | 2-Jan-2019 | -25 |
HBB231 | 0 | 30 | 3-Jan-2019 | -55 |
HBB232 | 0 | 80 | 4-Jan-2019 | -135 |
HBB301 | 15 | 0 | 5-Jan-2019 | -120 |
If we choose the dates from 3-Jan-2019 to 30-Jan-2019, it looks like this code will produce:
Txn ID | Debit | Credit | Date | cumsum |
---|---|---|---|---|
HBB231 | 0 | 30 | 3-Jan-2019 | -30 |
HBB232 | 0 | 80 | 4-Jan-2019 | -110 |
HBB301 | 15 | 0 | 5-Jan-2019 | -95 |
When we should actually have:
Txn ID | Debit | Credit | Date | cumsum |
---|---|---|---|---|
Balance at 3-Jan-2019 | 25 | 50 | - | -25 |
HBB231 | 0 | 30 | 3-Jan-2019 | -55 |
HBB232 | 0 | 80 | 4-Jan-2019 | -135 |
HBB301 | 15 | 0 | 5-Jan-2019 | -120 |
Can you confirm that this is the expected behavior? It seems important to me that we carry forward the balance, even if we filter out the transactions.
client/src/i18n/en/form.json
Outdated
@@ -402,6 +402,7 @@ | |||
"ERROR_404": "Error 404", | |||
"EXCHANGE_RATE": "Exchange Rate", | |||
"EXPENSE": "Expenses", | |||
"EXTRANCT_EMPLOYEE_STANDINGS": "Extract from Employee Standing of period", |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
This should be "Extract of the Employee Standing by Period"
client/src/i18n/en/table.json
Outdated
@@ -103,6 +103,7 @@ | |||
"EXCHANGE_RATE": "Exchange Rate", | |||
"EXPIRATION_DATE": "Expiration Date", | |||
"EXPIRE_IN":"Expire In", | |||
"EXTRACT_EMPLOYEE_STANDINGS": "View extract of the employee's standings by date range", |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
This is almost perfect! You just need to change "standings" -> "standing". It isn't plural in English.
// also be the employee's balance for the search period | ||
if (options.extractEmployee) { | ||
if (creditorOperations.transactions.length) { | ||
data.lastCum = creditorOperations.transactions[creditorOperations.transactions.length - 1]; |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Let's call this lastTransaction
or lastTxn
or something like that since it has the entire transaction and not just the cumsum.
// as the request is ordered by date, the last line item will | ||
// also be the employee's balance for the search period | ||
if (options.extractEmployee) { | ||
if (creditorOperations.transactions.length) { |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
You can clean this code up a bit by using lodash's _.last()
.
const lastTxn = _.last(creditorOperations.transactions);
data.lastCum = lastTxn || { cumsum : 0 };
data.extratCreditorText = data.lastCum.cumsum >= 0
? 'FORM.LABELS.CREDIT_BALANCE' : 'FORM.LABELS.DEBIT_BALANCE';
c36b416
to
ab77945
Compare
|
||
data.dates = { | ||
dateFrom: options.dateFrom, | ||
dateTo: options.dateTo, |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Missing space after key 'dateTo' key-spacing
? 'FORM.LABELS.CREDIT_BALANCE' : 'FORM.LABELS.DEBIT_BALANCE'; | ||
|
||
data.dates = { | ||
dateFrom: options.dateFrom, |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Missing space after key 'dateFrom' key-spacing
if (options.extractEmployee) { | ||
|
||
const lastTxn = _.last(creditorOperations.transactions); | ||
data.lastTransaction = lastTxn || { cumsum: 0 }; |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Missing space after key 'cumsum' key-spacing
}); | ||
|
||
if (creditorOperations.openingBalance) { | ||
_.extend(data, { | ||
creditoropeningBalance: creditorOperations.openingBalance[0], |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Missing space after key 'creditoropeningBalance' key-spacing
creditorTransactions: creditorOperations.transactions, | ||
creditorAggregates: creditorOperations.aggregates, | ||
debtorTransactions: debtorOperations.transactions, | ||
debtorAggregates: debtorOperations.aggregates, |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Missing space after key 'debtorAggregates' key-spacing
creditorAggregates : creditorOperations.aggregates, | ||
debtorTransactions : debtorOperations.transactions, | ||
debtorAggregates : debtorOperations.aggregates, | ||
creditorTransactions: creditorOperations.transactions, |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Missing space after key 'creditorTransactions' key-spacing
@@ -18,7 +18,7 @@ const db = require('../../../lib/db'); | |||
const TEMPLATE = './server/controllers/finance/reports/financial.employee.handlebars'; | |||
|
|||
const PDF_OPTIONS = { | |||
filename : 'FORM.LABELS.FINANCIAL_STATUS', | |||
filename: 'FORM.LABELS.FINANCIAL_STATUS', |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Missing space after key 'filename' key-spacing
if (!aggs.length) { | ||
aggs.push({ debit : 0, credit : 0, balance : 0 }); | ||
aggs.push({ debit: 0, credit: 0, balance: 0 }); |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Missing space after key 'balance' key-spacing
Missing space after key 'credit' key-spacing
Missing space after key 'debit' key-spacing
]) | ||
.spread((transactions, aggs) => { | ||
const tabSql = (dateFrom && dateTo) ? | ||
[db.exec(sql, [uid, uid]), balance(creditorUuid), openingBalanceCreditor(creditorUuid, dateFrom)] : |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
':' should be placed at the beginning of the line operator-linebreak
balance(creditorUuid), | ||
]) | ||
.spread((transactions, aggs) => { | ||
const tabSql = (dateFrom && dateTo) ? |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
'?' should be placed at the beginning of the line operator-linebreak
@jniles all test pass |
@jniles could you review this PR again please |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
@lomamech this looks pretty good to me. Just two small code clarity changes and we can merge.
balance(creditorUuid), | ||
]) | ||
.spread((transactions, aggs) => { | ||
const tabSql = (dateFrom && dateTo) |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
I think this representation might be cleaner:
const tabSQL = [ db.exec(sql, [uid, uid]), balance(creditorUuid) ];
if (dateFrom && dateTo) { tabSQL.push(openingBalanceCreditor(creditorUuid, dateFrom)); }
<tr> | ||
<td colspan="4" class="text-right"><b>{{translate "TABLE.COLUMNS.BALANCE_AT" }} {{date dates.dateFrom }} </b></td> | ||
<td class="text-right"> | ||
{{debcred creditoropeningBalance.debit metadata.enterprise.currency_id}} |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Can you capitalize each word here? creditorOpeningBalance
is better than creditoropeningbalance
.
- Add the possibility to visualize the employees standings by range of date, by the adding of component date by bh-date-interval - Add filter by range of date closes Third-Culture-Software#3796
- Refactor and Sanitaze code
- Fix and Upgrate the translation key - Adding opening balance until a date from - Adding new function openingBlanceCreditor with parameters like creditorUuid and datefrom
- clean the representation of tabSQL - Capitalize creditoropeningbalance
89a7468
to
01893e9
Compare
balance(creditorUuid), | ||
]) | ||
.spread((transactions, aggs) => { | ||
const tabSQL = [ db.exec(sql, [uid, uid]), balance(creditorUuid) ]; |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
There should be no space after '[' array-bracket-spacing
There should be no space before ']' array-bracket-spacing
@jniles all things is okay |
Looks good to me. Well done. bors r+ |
3799: improvement(Improve Employees Standings report) r=jniles a=lomamech - Add the possibility to visualize the employees standings by range of date, by the adding of component date by bh-date-interval - Add filter by range of date closes #3796 Co-authored-by: Chris Lomame <lomamech@gmail.com>
Build succeeded |
3853: Release v1.2.0 r=jniles a=jniles 🚀 Let's release bhima (currently at 1.1.1) Changelog: * chore: use release-it for releases (f4efd33) * chore: rename migration path (37fe3b4) * chore: dump dependencies before release (492ac19) * Merge #3846 (c2f27c8) * Merge #3849 (7a41977) * bug(Cash box translation) - Fix untranslation key for user deactivated (b0f4fbe) * Merge #3836 (f20d459) * refactor(Make Exchange Rates human readable) - Addition of the minimum value of the exchange rate to prevent the exchange rate equal to zero - Show exchange rates less than 0.1 as a fraction for example 1/1630 instead of 0.0006134 (c21e24a) * Merge #3829 (28fdd28) * test: run client unit tests on AppVeyor (a1c8968) * chore: refactor testing code (64b3c96) * test: remove server-unit from TravisCI (0357ec2) * test: add appveyor to bors (b790a45) * ci: add initial appveyor support (c235a97) * Merge #3840 (8d3010a) * fix: bump unit ids in the migration file (9bf73ee) * chore(package): update eslint-config-airbnb-base to version 14.0.0 (6fbde6a) * Merge #3834 (8774b09) * handle negative values in stock report (57380f1) * Merge #3833 (217d0d1) * add translation in employee report (aee91f6) * Merge #3832 (3578b7f) * fix(Calcul Sum Distributed) - Around the sum distributed for escape error when percent as decimal (30dbc83) * Merge #3799 (852b220) * clean code (95f1e93) * improvement(Employee Standing) - clean the representation of tabSQL - Capitalize creditoropeningbalance (01893e9) * Sanitaze code (7268cad) * improvement(Employee Standing) - Fix and Upgrate the translation key - Adding opening balance until a date from - Adding new function openingBlanceCreditor with parameters like creditorUuid and datefrom (3588ff8) * Sanitaze code (b914bca) * refactor(Employee Standing) - Refactor and Sanitaze code (e115407) * improvement(Improve Employees Standings report) - Add the possibility to visualize the employees standings by range of date, by the adding of component date by bh-date-interval - Add filter by range of date (f4c4774) * Merge #3827 (f1a7e6f) * Merge #3828 (19f0753) * fix(tests): no async forEach in merge patients (c4b257a) * feat(report) debtor summary report (a835fb3) * chore: update depends (b78ab2a) * Merge #3825 (1326302) * Merge #3794 (7ae875f) * (cron job) add cron email componet to main reports (438b1ac) * improvement(Invoicing Bug) - Restoring the old debtor balance request and modifying the hasCreditorBalance calculation by analyzing whether the balance is greater than 0.01 (b289a4e) * Merge #3815 (d115442) * improve(Monthly Balance) - Rename Monthly Balance instead Monthly Balance Analysis - Sanitaze code and refactor Report Design (0ae1f6a) * Merge #3820 (64497cc) * improvement(MonthlyBalance) - Sanitaze code and improve report and translate key (58cb1d0) * Sanitaze code (1167990) * Sanitaze code (9455a3d) * feature(Monthly Balance Analysis) - Add new report for Analysis Monthly Balance of accounts (06d9f60) * Merge #3801 (87edd98) * remove toggle required (7c0f583) * Improve and sanitaze code (b613b29) * fix (Invoicing Bug) - resolution of the problem when calling the Debtors.balance function with rounding to two ranks after the decimal point of the total credit and debit values (1edfd7b) * rename cashboxId to cashboxAccountId (f895692) * fix component require condition for validation (00869ad) * Enhance caution filter and fix cashflow by service report (a6bfc8b) * Merge #3821 (2973736) * fix stock adjustment deletion (ab9db1d) * Sanitaze html form (3494521) * improvement(Cash Flow Reports) - Adding Possibilty to view the detailed cashflow report (946e278) * Merge #3813 (21d19d3) * chore(package): update cz-conventional-changelog to version 3.0.0 (6c941a5) * Merge #3808 (34fe9fc) * Merge #3809 (f5d7fb2) * chore(package): update commitizen to version 4.0.0 (2dfc6cb) * chore(package): update gulp-if to version 3.0.0 (6af28e8) * Merge #3797 (cda7c86) * chore(package): update karma-chrome-launcher to version 3.0.0 (d3be817) * Merge #3795 (0d5adeb) * fix cron table on migration (8ad64ba) * Merge #3767 (84b5af0) * Merge remote-tracking branch 'upstream/master' into auto-email-reporting (ada6cd6) * Merge #3775 (ce8af95) * Merge #3785 (f50b9c6) * fix e2e tests for cron emailing (e39aa2a) * Merge #3777 (e30235b) * fix(Payslip) - Restaure the management of off days in payslip - fix the displaying of daily rate for Holidays periods and offdays - Exted the periode of definition of offdays (713c4bf) * Merge #3782 (14ae5ba) * fix: .snyk & package.json to reduce vulnerabilities (b3c8d1a) * Merge #3779 (47ba601) * Merge #3780 (ad5115c) * fix integration test (cd531cb) * chore(package): update lockfile yarn.lock (3ef4a2d) * chore(package): update del to version 5.0.0 (72c68d7) * fix label index length (45e6dc3) * improve(Employee Standing) - Adding option to include medical care provided to the employee - Update Report, display Employee Standing Status in Report closes #3778 (331d9c1) * fix column length (bf3259c) * fix: restaure old file (e2e1e4a) * feature(Bhima User) - Complete Bhima User Manual (18a0514) * fix entity parent (852144d) * update report id length (842b864) * fix: migration script typo (bf1157a) * fix translations and unit test for bhMoment (8109ab7) * fix migration file (e1edfba) * dev environment (bb2b5ba) * fix ui and integration tests for cron email report (d68d383) * instant email send for reports (2bbd820) * ohada_balance_sheet, ohada_income_expense, exploitation, balance emailing (ea4fac0) * Form reset after submission and cron job fixing (7ab8b44) * handle deletion and job stop (2101165) * balance report by email and use of async await (b9cec59) * sending email (af4b449) * cron job for email report (54fc906) * load report details (c8c9115) * simple crud for cron email report (46d7a34) * contact group management (f3c040f) * feature(Bhima User Manual) - References accounts User Manual - Fee Center User Manual - Payroll User Manual (0aacc6a) * Merge #3772 (78a657a) * fix: rubrics config tests (c31beee) * fix: flaky role management test (90a6fcb) * Merge #3768 (a18c9f5) * Merge #3770 (c65a8d5) * chore: bump dependencies (96207a2) * Merge #3724 (b244207) * fix purchase reference (5f0dc18) * Merge branch 'master' of https://github.com/IMA-WorldHealth/bhima into report-stock-entry (efc5e43) * chore(package): update lockfile yarn.lock (c0f80d7) * chore(package): update eslint to version 6.0.0 (e90a2e7) * fix stock sheet report (ef42f3b) * Capitalize report description and use of reportDetails correctly (0af0ec8) * stock entry report (9b7f65c) * Merge #3762 (d2bc25a) * Merge branch 'master' into fix-depot-path (75ca9e2) * Merge #3760 (c13c5a4) * fix depot path (18d2eee) * feat(component) bhperiod, use period translate_key as label (d061ecc) * Merge #3759 (b7cc0d3) * Merge #3736 (f95255b) * Merge #3751 (30ea36d) * add warning message for employees patients merge (3236947) * Merge branch 'master' of https://github.com/IMA-WorldHealth/bhima into merge-patient-records (ff4f7da) * chore(package): update lockfile yarn.lock (aef66b2) * chore(package): update mochawesome to version 4.0.0 (21fe8dd) * Merge #3752 (9880ae8) * Merge #3757 (fc69b92) * update action link column (200d0a7) * updates integration and e2e tests (ce256bc) * Split hospitalization indicators by projects (18d659b) * count services by project (995a746) * add project in service (8a9b6bd) * Merge #3755 (752723a) * Merge #3756 (480f324) * fix: typos in migration script setup (3c9ed3e) * Reset Numbers of vouchers in E2E test (f3345be) * Restore number of vouchers in Ui grid (d9319af) * Reset defaut number of vouchers (dde4bb0) * test(Voucher Registry) - Update number of vouchers (6b7683a) * improvement(Payroll Configuration) - Update the max length of abbreviation of rubrics - remove unused require - Before we had to prevent the edition of all the headings which were taxes, but it can be made that there are taxes which is not calculated expressed as a percentage, to allow the edition of this kind of tax, it would be enough to exclude the only tax which is expressed as a percentage neither and which is not nor éditable reason why we had excluded the IPR - closes #3754 (b70ef8d) * improvement(Payroll) - Sanitaze code remove unused require employees - Use the date to instead the current days for commitment of paiement in accounting (c62c98f) * Merge #3753 (80e2607) * fix(invoice): primary key collision invoicing_fees (df82dad) * fix selection list (b6681a6) * Merge #3743 (1a3d919) * reload page before each tests (a939788) * fix price list report (b4471b5) * integration tests and e2e tests of patients merge fetaure (93bd991) * merge patients tool (a6ca2de) * merge patients (5dc2a0b) * chore(package): update merge-stream to version 2.0.0 (e8005ec) * Merge #3732 (54212b3) * Merge #3733 #3734 (b2eec0b) * chore: combine date/username lines on receipt head (52fdbdb) * Merge #3735 (b68bd3f) * Merge #3737 (4886914) * Merge #3739 (f2b3983) * feat(unpaid invoice) add filter by service (e14ed21) * fix indicator report missing value (4bfac9a) * fix: parse <head> contents from XLS renderer (f15481a) * fix: dismiss fiscal loading indicator once loaded (6b5bd8f) * fix: account reference dropdown header links (f40a358) * fix: display correct currency in account footer (9642e6f) * Merge #3730 (c33886f) Co-authored-by: Jonathan Niles <jonathanwniles@gmail.com>
date, by the adding of component date by bh-date-interval
closes #3796