Skip to content

Commit

Permalink
fix(inventory): use bhAccountSelect for accounts
Browse files Browse the repository at this point in the history
This commit improves the inventory configuration page by using
`bhAccountSelect` since it is the easiest way to test it.  It also
improves performance slightly.
  • Loading branch information
jniles committed Dec 3, 2017
1 parent bb7233b commit fd61c67
Show file tree
Hide file tree
Showing 11 changed files with 106 additions and 185 deletions.
8 changes: 4 additions & 4 deletions client/src/modules/cash/cashboxes/cashboxes.list.html
Original file line number Diff line number Diff line change
Expand Up @@ -3,18 +3,18 @@

<!-- List available cashboxes -->
<div class="col-md-6">
<table class="table table-striped table-bordered table-condensed" style="max-height:80vh; overflow:auto;">
<table class="table table-striped table-bordered table-condensed" style="max-height:80vh; overflow: auto;">
<thead>
<tr>
<th colspan="2">{{ "TABLE.COLUMNS.NAME" | translate }}</th>
<th colspan="2" translate>TABLE.COLUMNS.NAME</th>
</tr>
</thead>
<tbody>
<tr ng-repeat="box in CashCtrl.cashboxes track by box.id">
<tr ng-repeat="box in CashCtrl.cashboxes track by box.id" data-cashbox="{{ box.label }}">
<td>{{ box.label}}</td>
<td class="text-right">
<a class="btn btn-xs btn-default" ui-sref="cashboxes.edit({ uuid : box.id })">
<i class="fa fa-pencil-square-o"></i> {{ "FORM.BUTTONS.EDIT" | translate }}
<i class="fa fa-pencil-square-o"></i> <span translate>FORM.BUTTONS.EDIT</span>
</a>
</td>
</tr>
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -26,6 +26,7 @@
account-id="CashboxModalCtrl.data.account_id"
label="FORM.LABELS.CASH_ACCOUNT"
name="account_id"
exclude-title-accounts="true"
on-select-callback="CashboxModalCtrl.onSelectCashAccount(account)">
</bh-account-select>

Expand All @@ -34,6 +35,7 @@
account-id="CashboxModalCtrl.data.transfer_account_id"
label="FORM.LABELS.TRANSFER_ACCOUNT"
name="transfer_account_id"
exclude-title-accounts="true"
on-select-callback="CashboxModalCtrl.onSelectTransferAccount(account)">
</bh-account-select>
</div>
Expand Down
14 changes: 9 additions & 5 deletions client/src/modules/inventory/configuration/groups/groups.js
Original file line number Diff line number Diff line change
Expand Up @@ -45,11 +45,15 @@ function InventoryGroupsController($translate, InventoryGroup, Account, Notify,
var request = { action : 'edit', identifier : uuid };

Modal.openInventoryGroupActions(request)
.then(function (res) {
Notify.success('FORM.INFO.UPDATE_SUCCESS');
})
.then(startup)
.catch(Notify.handleError);
.then(function (res) {
Notify.success('FORM.INFO.UPDATE_SUCCESS');
})
.then(startup)
.catch(function (err) {
if (err) {
Notify.handleError(err);
}
});
}

/** delete inventory group */
Expand Down
Original file line number Diff line number Diff line change
@@ -1,20 +1,24 @@
angular.module('bhima.controllers')
.controller('InventoryGroupsActionsModalController', InventoryGroupsActionsModalController);
.controller('InventoryGroupsActionsModalController', InventoryGroupsActionsModalController);

InventoryGroupsActionsModalController.$inject = [
'AccountService', 'InventoryGroupService', 'NotifyService', '$uibModalInstance', 'data', 'bhConstants'
'InventoryGroupService', 'NotifyService', '$uibModalInstance', 'data',
];

function InventoryGroupsActionsModalController(Account, InventoryGroup, Notify, Instance, Data, bhConstants) {
var vm = this, session = vm.session = {};
function InventoryGroupsActionsModalController(InventoryGroups, Notify, Instance, Data) {
var vm = this;
var session = vm.session = {};

// map for actions
var map = { 'add' : addGroup, 'edit' : editGroup };
var map = { add : addGroup, edit : editGroup };

// expose to the view
vm.submit = submit;
vm.cancel = cancel;
vm.bhConstants = bhConstants;

vm.onSelectCOGSAccount = onSelectCOGSAccount;
vm.onSelectStockAccount = onSelectStockAccount;
vm.onSelectSalesAccount = onSelectSalesAccount;

// startup
startup();
Expand All @@ -27,50 +31,48 @@ function InventoryGroupsActionsModalController(Account, InventoryGroup, Notify,

var record = cleanForSubmit(vm.session);
map[vm.action](record, vm.identifier)
.then(function (res) {
Instance.close(res);
});
.then(function (res) {
Instance.close(res);
});
}

/** add inventory group */
/* add inventory group */
function addGroup(record) {
return InventoryGroup.create(record)
return InventoryGroups.create(record)
.catch(Notify.handleError);
}

/** edit inventory group */
/* edit inventory group */
function editGroup(record, uuid) {
return InventoryGroup.update(uuid, record)
return InventoryGroups.update(uuid, record)
.catch(Notify.handleError);
}

/** cancel action */
function onSelectCOGSAccount(account) {
session.cogs_account = account.id;
}

function onSelectStockAccount(account) {
session.stock_account = account.id;
}

function onSelectSalesAccount(account) {
session.sales_account = account.id;
}

/* cancel action */
function cancel() {
Instance.dismiss();
}

/** format data to data structure in the db */
function cleanForSubmit(session) {
return {
name : session.name,
code : session.code,
sales_account : session.salesAccount ? session.salesAccount.id : null,
stock_account : session.stockAccount ? session.stockAccount.id : null,
cogs_account : session.cogsAccount ? session.cogsAccount.id : null
};
}

/**
* essential Account Detail
* This function affect a correct object to the ui-select input text
*/
function essentialAccountDetail(account) {
function cleanForSubmit(o) {
return {
id : account.id,
number : account.number,
label : account.label,
locked : account.locked,
hrlabel : String(account.number).concat(' - ', account.label)
name : o.name,
code : o.code,
sales_account : o.sales_account,
stock_account : o.stock_account,
cogs_account : o.cogs_account,
};
}

Expand All @@ -79,53 +81,13 @@ function InventoryGroupsActionsModalController(Account, InventoryGroup, Notify,
vm.action = Data.action;
vm.identifier = Data.identifier;

Account.read()
.then(function (accounts) {
vm.accounts = accounts;
})
.catch(Notify.handleError);

if (vm.identifier) {
InventoryGroup.read(vm.identifier)
.then(function (group) {
vm.session = group[0];

// if the account Id is undefined or null the Account Service returns an array or account
// to fix it we assign a inexisting account Id 'undefinedIdentifier'
var sales_account = group[0].sales_account || undefined;
var stock_account = group[0].stock_account || undefined;
var cogs_account = group[0].cogs_account || undefined;

// sales accounts
if (sales_account) {
Account.read(sales_account)
.then(function (account) {
vm.session.salesAccount = essentialAccountDetail(account);
})
.catch(Notify.handleError);
}

// stock accounts
if (stock_account) {
Account.read(stock_account)
.then(function (account) {
vm.session.stockAccount = essentialAccountDetail(account);
})
.catch(Notify.handleError);
}

// cogs accounts
if (cogs_account) {
Account.read(cogs_account)
.then(function (account) {
vm.session.cogsAccount = essentialAccountDetail(account);
})
.catch(Notify.handleError);
}
})
.catch(Notify.handleError);
InventoryGroups.read(vm.identifier)
.then(function (groups) {
console.log(groups);
vm.session = groups[0];
})
.catch(Notify.handleError);
}

}

}
Original file line number Diff line number Diff line change
Expand Up @@ -37,78 +37,39 @@
</div>
</div>

<div class="form-group"
ng-class="{ 'has-error' : ActionForm.$submitted && ActionForm.salesAccount.$invalid }">
<label class="control-label">
<span translate>FORM.SELECT.ACCOUNT</span> (<span translate>FORM.LABELS.SALE</span>)
</label>

<ui-select
name="salesAccount"
ng-model="$ctrl.session.salesAccount">
<ui-select-match placeholder="{{ 'FORM.PLACEHOLDERS.ACCOUNT' | translate }}" allow-clear="true">
<span><strong>{{$select.selected.number}}</strong> {{$select.selected.label}}</span>
</ui-select-match>
<ui-select-choices
ui-select-focus-patch
ui-disable-choice="account.type_id === $ctrl.bhConstants.accounts.TITLE"
repeat="account in $ctrl.accounts | filter: { 'hrlabel' : $select.search } track by account.id">
<strong ng-bind-html="account.number | highlight:$select.search"></strong>
<span ng-bind-html="account.label | highlight:$select.search"></span>
</ui-select-choices>
</ui-select>
<bh-account-select
name="sales_account"
id="sales_account"
account-id="$ctrl.session.sales_account"
exclude-title-accounts="true"
on-select-callback="$ctrl.onSelectSalesAccount(account)">
(<span translate>FORM.LABELS.SALE</span>)
<bh-clear on-clear="$ctrl.session.sales_account = null;"></bh-clear>
</bh-account-select>

<div class="help-block" ng-messages="ActionForm.salesAccount.$error" ng-show="ActionForm.$submitted">
<div ng-messages-include="modules/templates/messages.tmpl.html"></div>
</div>
</div>
<bh-account-select
name="stock_account"
id="stock_account"
account-id="$ctrl.session.stock_account"
exclude-title-accounts="true"
on-select-callback="$ctrl.onSelectStockAccount(account)">
(<span translate>FORM.LABELS.STOCK</span>)
<bh-clear on-clear="$ctrl.session.stock_account = null;"></bh-clear>
</bh-account-select>

<div class="form-group">
<label class="control-label">
<span translate>FORM.SELECT.ACCOUNT</span> (<span translate>FORM.LABELS.STOCK</span>)
</label>
<ui-select
name="stockAccount"
ng-model="$ctrl.session.stockAccount">
<ui-select-match placeholder="{{ 'FORM.PLACEHOLDERS.ACCOUNT' | translate }}" allow-clear="true">
<span><strong>{{$select.selected.number}}</strong> {{$select.selected.label}}</span>
</ui-select-match>
<ui-select-choices
ui-select-focus-patch
ui-disable-choice="account.type_id === $ctrl.bhConstants.accounts.TITLE"
repeat="account in $ctrl.accounts | filter: { 'hrlabel' : $select.search } track by account.id">
<strong ng-bind-html="account.number | highlight:$select.search"></strong>
<span ng-bind-html="account.label | highlight:$select.search"></span>
</ui-select-choices>
</ui-select>
</div>

<div class="form-group">
<label class="control-label">
<span translate>FORM.SELECT.ACCOUNT</span> (<span translate>FORM.LABELS.CHARGE</span>)
</label>

<ui-select
name="cogsAccount"
ng-model="$ctrl.session.cogsAccount">
<ui-select-match placeholder="{{ 'FORM.PLACEHOLDERS.ACCOUNT' | translate }}" allow-clear="true">
<span><strong>{{$select.selected.number}}</strong> {{$select.selected.label}}</span>
</ui-select-match>
<ui-select-choices
ui-select-focus-patch
ui-disable-choice="account.type_id === $ctrl.bhConstants.accounts.TITLE"
repeat="account in $ctrl.accounts | filter: { 'hrlabel' : $select.search } track by account.id">
<strong ng-bind-html="account.number | highlight:$select.search"></strong>
<span ng-bind-html="account.label | highlight:$select.search"></span>
</ui-select-choices>
</ui-select>
</div>
<bh-account-select
name="cogs_account"
id="cogs_account"
account-id="$ctrl.session.cogs_account"
exclude-title-accounts="true"
on-select-callback="$ctrl.onSelectCOGSAccount(account)">
(<span translate>FORM.LABELS.CHARGE</span>)
<bh-clear on-clear="$ctrl.session.cogs_account = null;"></bh-clear>
</bh-account-select>
</div>

<div class="modal-footer">
<button type="button"
class="btn btn-default"
ng-click="$ctrl.cancel()" translate>
<button type="button" class="btn btn-default" ng-click="$ctrl.cancel()" translate>
FORM.BUTTONS.CANCEL
</button>

Expand Down
2 changes: 0 additions & 2 deletions server/app.js
Original file line number Diff line number Diff line change
Expand Up @@ -31,10 +31,8 @@ const dotEnv = require('dotenv');

configureEnvironmentVariables();


const http = require('http');
const express = require('express');

const debug = require('debug')('app');

const app = express();
Expand Down
4 changes: 2 additions & 2 deletions sh/build-database.sh
Original file line number Diff line number Diff line change
Expand Up @@ -34,10 +34,10 @@ mysql -u $DB_USER -p$DB_PASS $DB_NAME < server/models/admin.sql &> /dev/null

echo "[build] default data"
mysql -u $DB_USER -p$DB_PASS $DB_NAME < server/models/icd10.sql &> /dev/null
mysql -u $DB_USER -p$DB_PASS $DB_NAME < server/models/bhima.sql
mysql -u $DB_USER -p$DB_PASS $DB_NAME < server/models/bhima.sql &> /dev/null

echo "[build] test data"
mysql -u $DB_USER -p$DB_PASS $DB_NAME < test/data.sql
mysql -u $DB_USER -p$DB_PASS $DB_NAME < test/data.sql &> /dev/null

echo "[update] service uuid identifiers"
mysql -u $DB_USER -p$DB_PASS $DB_NAME < server/models/updates/service_uuid.sql &> /dev/null
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -14,7 +14,7 @@ describe('Account Statement Core', () => {
before(() => helpers.navigate(path));

const sample = {
account : 4111100,
account : 41111000,
comment : 'custom',
};

Expand Down
Loading

0 comments on commit fd61c67

Please sign in to comment.