Skip to content
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

Merged

Conversation

lomamech
Copy link
Collaborator

  • 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

@kwilu kwilu added the size: L label Jul 13, 2019
// 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];
Copy link

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) {
Copy link

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) {
Copy link

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}'))`;
Copy link

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}'))`;
Copy link

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) {
Copy link

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) {
Copy link

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

@lomamech
Copy link
Collaborator Author

lomamech commented Jul 13, 2019

@jniles @mbayopanda can you review this PR

image

Copy link
Collaborator

@jniles jniles left a 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.

@@ -402,6 +402,7 @@
"ERROR_404": "Error 404",
"EXCHANGE_RATE": "Exchange Rate",
"EXPENSE": "Expenses",
"EXTRANCT_EMPLOYEE_STANDINGS": "Extract from Employee Standing of period",
Copy link
Collaborator

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"

@@ -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",
Copy link
Collaborator

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];
Copy link
Collaborator

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) {
Copy link
Collaborator

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';

@lomamech lomamech force-pushed the improveEmployeeStanding branch from c36b416 to ab77945 Compare July 27, 2019 16:01
@kwilu kwilu added size: XL and removed size: L labels Jul 27, 2019

data.dates = {
dateFrom: options.dateFrom,
dateTo: options.dateTo,
Copy link

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,
Copy link

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 };
Copy link

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],
Copy link

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,
Copy link

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,
Copy link

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',
Copy link

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 });
Copy link

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)] :
Copy link

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) ?
Copy link

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

@lomamech
Copy link
Collaborator Author

image

@lomamech
Copy link
Collaborator Author

@jniles all test pass

@mbayopanda
Copy link
Collaborator

@jniles could you review this PR again please

Copy link
Collaborator

@jniles jniles left a 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)
Copy link
Collaborator

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}}
Copy link
Collaborator

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
@lomamech lomamech force-pushed the improveEmployeeStanding branch from 89a7468 to 01893e9 Compare August 6, 2019 19:04
balance(creditorUuid),
])
.spread((transactions, aggs) => {
const tabSQL = [ db.exec(sql, [uid, uid]), balance(creditorUuid) ];
Copy link

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

@lomamech
Copy link
Collaborator Author

lomamech commented Aug 6, 2019

@jniles all things is okay

@jniles
Copy link
Collaborator

jniles commented Aug 7, 2019

Looks good to me. Well done.

bors r+

bors bot added a commit that referenced this pull request Aug 7, 2019
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>
@bors
Copy link
Contributor

bors bot commented Aug 7, 2019

Build succeeded

@bors bors bot merged commit 95f1e93 into Third-Culture-Software:master Aug 7, 2019
@jniles jniles mentioned this pull request Aug 20, 2019
bors bot added a commit that referenced this pull request Aug 20, 2019
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>
@lomamech lomamech deleted the improveEmployeeStanding branch September 10, 2019 12:12
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

Improvement of Employees Standings report
4 participants