fix: auto-increment settings.

This commit is contained in:
Ahmed Bouhuolia
2020-12-12 13:26:36 +02:00
parent 4c8346ac3d
commit e9e4ddaee0
6 changed files with 43 additions and 20 deletions

View File

@@ -49,7 +49,7 @@ export default () => {
app.use('/invite', Container.get(InviteUsers).nonAuthRouter()); app.use('/invite', Container.get(InviteUsers).nonAuthRouter());
app.use('/licenses', Container.get(Licenses).router()); app.use('/licenses', Container.get(Licenses).router());
app.use('/subscription', Container.get(Subscription).router()); app.use('/subscription', Container.get(Subscription).router());
app.use('/ping', Container.get(Ping).router());
app.use('/organization', Container.get(Organization).router()); app.use('/organization', Container.get(Organization).router());
// - Settings routes. // - Settings routes.
@@ -63,9 +63,9 @@ export default () => {
settings.use(EnsureTenantIsInitialized); settings.use(EnsureTenantIsInitialized);
settings.use(SettingsMiddleware); settings.use(SettingsMiddleware);
settings.use('/settings', Container.get(Settings).router()); settings.use('/', Container.get(Settings).router());
app.use('/', settings); app.use('/settings', settings);
// - Dashboard routes. // - Dashboard routes.
// --------------------------- // ---------------------------
@@ -81,6 +81,8 @@ export default () => {
dashboard.use(EnsureConfiguredMiddleware); dashboard.use(EnsureConfiguredMiddleware);
dashboard.use(EnsureTenantIsSeeded); dashboard.use(EnsureTenantIsSeeded);
dashboard.use('/ping', Container.get(Ping).router());
dashboard.use('/users', Container.get(Users).router()); dashboard.use('/users', Container.get(Users).router());
dashboard.use('/invite', Container.get(InviteUsers).authRouter()); dashboard.use('/invite', Container.get(InviteUsers).authRouter());
dashboard.use('/currencies', Container.get(Currencies).router()); dashboard.use('/currencies', Container.get(Currencies).router());

View File

@@ -11,7 +11,7 @@ export interface IMetadata {
export interface IMetaQuery { export interface IMetaQuery {
key: string, key: string,
group: string, group?: string,
}; };
export interface IMetableStore { export interface IMetableStore {

View File

@@ -4,6 +4,7 @@ import {
IMetableStoreStorage, IMetableStoreStorage,
} from 'interfaces'; } from 'interfaces';
import MetableStore from './MetableStore'; import MetableStore from './MetableStore';
import { isBlank } from 'utils';
export default class MetableDBStore extends MetableStore implements IMetableStoreStorage{ export default class MetableDBStore extends MetableStore implements IMetableStoreStorage{
model: Model; model: Model;
@@ -26,8 +27,27 @@ export default class MetableDBStore extends MetableStore implements IMetableStor
this.model = null; this.model = null;
this.extraQuery = (query, meta) => { this.extraQuery = (query, meta) => {
query.where('key', meta[this.KEY_COLUMN]); const whereQuery = {
key: meta[this.KEY_COLUMN],
...this.transfromMetaExtraColumns(meta),
}; };
query.where(whereQuery);
};
}
/**
* Transformes meta query.
* @param {IMetadata} meta
*/
private transfromMetaExtraColumns(meta: IMetadata) {
return this.extraColumns.reduce((obj, column) => {
const metaValue = meta[column];
if (!isBlank(metaValue)) {
obj[column] = metaValue;
}
return obj;
}, {});
} }
/** /**
@@ -116,14 +136,9 @@ export default class MetableDBStore extends MetableStore implements IMetableStor
const insertData = { const insertData = {
[this.KEY_COLUMN]: meta.key, [this.KEY_COLUMN]: meta.key,
[this.VALUE_COLUMN]: meta.value, [this.VALUE_COLUMN]: meta.value,
...this.transfromMetaExtraColumns(meta),
...this.extraColumns.reduce((obj, column) => {
if (typeof meta[column] !== 'undefined') {
obj[column] = meta[column];
}
return obj;
}, {}),
}; };
const insertOper = this.model.query() const insertOper = this.model.query()
.insert(insertData) .insert(insertData)
.then(() => { .then(() => {
@@ -155,7 +170,7 @@ export default class MetableDBStore extends MetableStore implements IMetableStor
* @param {String} valueType - * @param {String} valueType -
* @return {String|Number|Boolean} - * @return {String|Number|Boolean} -
*/ */
static formatMetaValue(value: string|number|boolean, valueType: striung|false) { static formatMetaValue(value: string|number|boolean, valueType: string|false) {
let parsedValue: string|number|boolean; let parsedValue: string|number|boolean;
switch (valueType) { switch (valueType) {

View File

@@ -19,7 +19,7 @@ export class ManualJournalSubscriber {
* @param {{ tenantId: number, manualJournal: IManualJournal }} * @param {{ tenantId: number, manualJournal: IManualJournal }}
*/ */
@On(events.manualJournals.onCreated) @On(events.manualJournals.onCreated)
public async onManualJournalCreated({ tenantId, manualJournal }) { public async handleWriteJournalEntries({ tenantId, manualJournal }) {
const manualJournalsService = Container.get(ManualJournalsService); const manualJournalsService = Container.get(ManualJournalsService);
await manualJournalsService await manualJournalsService
@@ -31,7 +31,7 @@ export class ManualJournalSubscriber {
* @param {{ tenantId: number, manualJournal: IManualJournal }} * @param {{ tenantId: number, manualJournal: IManualJournal }}
*/ */
@On(events.manualJournals.onEdited) @On(events.manualJournals.onEdited)
public async onManualJournalEdited({ tenantId, manualJournal }) { public async handleRewriteJournalEntries({ tenantId, manualJournal }) {
const manualJournalsService = Container.get(ManualJournalsService); const manualJournalsService = Container.get(ManualJournalsService);
await manualJournalsService await manualJournalsService
@@ -43,7 +43,7 @@ export class ManualJournalSubscriber {
* @param {{ tenantId: number, manualJournalId: number }} * @param {{ tenantId: number, manualJournalId: number }}
*/ */
@On(events.manualJournals.onDeleted) @On(events.manualJournals.onDeleted)
public async onManualJournalDeleted({ tenantId, manualJournalId, }) { public async handleRevertJournalEntries({ tenantId, manualJournalId, }) {
const manualJournalsService = Container.get(ManualJournalsService); const manualJournalsService = Container.get(ManualJournalsService);
await manualJournalsService await manualJournalsService
@@ -55,9 +55,10 @@ export class ManualJournalSubscriber {
*/ */
@On(events.manualJournals.onCreated) @On(events.manualJournals.onCreated)
public async handleJournalNextNumberIncrement({ tenantId }) { public async handleJournalNextNumberIncrement({ tenantId }) {
await this.settingsService.incrementNextNumber(tenantId, { const query = {
group: 'manual_journals', group: 'manual_journals',
key: 'next_number', key: 'next_number',
}); };
await this.settingsService.incrementNextNumber(tenantId, query);
} }
} }

View File

@@ -64,7 +64,7 @@ export default class SaleInvoiceSubscriber {
public async handleInvoiceNextNumberIncrement({ tenantId, saleInvoiceId, saleInvoice }) { public async handleInvoiceNextNumberIncrement({ tenantId, saleInvoiceId, saleInvoice }) {
await this.settingsService.incrementNextNumber(tenantId, { await this.settingsService.incrementNextNumber(tenantId, {
key: 'next_number', key: 'next_number',
group: 'sales_invoices' group: 'sales_invoices',
}); });
} }
} }

View File

@@ -223,6 +223,10 @@ const formatNumber = (balance, { noCents = false, divideOn1000 = false }) => {
return formattedBalance + ''; return formattedBalance + '';
}; };
const isBlank = (value) => {
return _.isEmpty(value) && !_.isNumber(value) || _.isNaN(value);
}
export { export {
hashPassword, hashPassword,
origin, origin,
@@ -241,5 +245,6 @@ export {
getDefinedOptions, getDefinedOptions,
entriesAmountDiff, entriesAmountDiff,
convertEmptyStringToNull, convertEmptyStringToNull,
formatNumber formatNumber,
isBlank
}; };