mirror of
https://github.com/bigcapitalhq/bigcapital.git
synced 2026-02-18 22:00:31 +00:00
refactor(nestjs): bank transactions matching
This commit is contained in:
@@ -13,6 +13,7 @@ import {
|
||||
CreateWarehouseTransferDto,
|
||||
EditWarehouseTransferDto,
|
||||
} from './dtos/WarehouseTransfer.dto';
|
||||
import { GetWarehouseTransfersQueryDto } from '../Warehouses/dtos/GetWarehouseTransfersQuery.dto';
|
||||
|
||||
@Injectable()
|
||||
export class WarehouseTransferApplication {
|
||||
@@ -86,7 +87,7 @@ export class WarehouseTransferApplication {
|
||||
* @returns {Promise<IWarehouseTransfer>}
|
||||
*/
|
||||
public getWarehousesTransfers = (
|
||||
filterDTO: IGetWarehousesTransfersFilterDTO,
|
||||
filterDTO: GetWarehouseTransfersQueryDto,
|
||||
) => {
|
||||
return this.getWarehousesTransfersService.getWarehouseTransfers(filterDTO);
|
||||
};
|
||||
|
||||
@@ -15,6 +15,7 @@ import {
|
||||
CreateWarehouseTransferDto,
|
||||
EditWarehouseTransferDto,
|
||||
} from './dtos/WarehouseTransfer.dto';
|
||||
import { GetWarehouseTransfersQueryDto } from '../Warehouses/dtos/GetWarehouseTransfersQuery.dto';
|
||||
|
||||
@Controller('warehouse-transfers')
|
||||
@ApiTags('warehouse-transfers')
|
||||
@@ -129,7 +130,7 @@ export class WarehouseTransfersController {
|
||||
description:
|
||||
'The warehouse transfer transactions have been retrieved successfully.',
|
||||
})
|
||||
async getWarehousesTransfers(@Query() query: any) {
|
||||
async getWarehousesTransfers(@Query() query: GetWarehouseTransfersQueryDto) {
|
||||
const { warehousesTransfers, pagination, filter } =
|
||||
await this.warehouseTransferApplication.getWarehousesTransfers(query);
|
||||
|
||||
|
||||
@@ -1,18 +1,18 @@
|
||||
import { ToNumber } from '@/common/decorators/Validators';
|
||||
import { ApiProperty } from '@nestjs/swagger';
|
||||
import { Type } from 'class-transformer';
|
||||
import {
|
||||
IsArray,
|
||||
IsBoolean,
|
||||
IsDate,
|
||||
IsDecimal,
|
||||
IsInt,
|
||||
IsNotEmpty,
|
||||
IsNumber,
|
||||
IsOptional,
|
||||
IsPositive,
|
||||
IsString,
|
||||
ValidateNested,
|
||||
ArrayMinSize,
|
||||
IsDateString,
|
||||
} from 'class-validator';
|
||||
|
||||
export class WarehouseTransferEntryDto {
|
||||
@@ -39,6 +39,7 @@ export class WarehouseTransferEntryDto {
|
||||
|
||||
export class CommandWarehouseTransferDto {
|
||||
@IsNotEmpty()
|
||||
@ToNumber()
|
||||
@IsInt()
|
||||
@ApiProperty({
|
||||
description: 'The id of the warehouse to transfer from',
|
||||
@@ -47,6 +48,7 @@ export class CommandWarehouseTransferDto {
|
||||
fromWarehouseId: number;
|
||||
|
||||
@IsNotEmpty()
|
||||
@ToNumber()
|
||||
@IsInt()
|
||||
@ApiProperty({
|
||||
description: 'The id of the warehouse to transfer to',
|
||||
@@ -55,7 +57,7 @@ export class CommandWarehouseTransferDto {
|
||||
toWarehouseId: number;
|
||||
|
||||
@IsNotEmpty()
|
||||
@IsDate()
|
||||
@IsDateString()
|
||||
@ApiProperty({
|
||||
description: 'The date of the warehouse transfer',
|
||||
example: '2021-01-01',
|
||||
|
||||
@@ -0,0 +1,70 @@
|
||||
|
||||
function StatusFieldFilterQuery(query, role) {
|
||||
query.modify('filterByStatus', role.value);
|
||||
}
|
||||
|
||||
export const WarehouseTransferMeta = {
|
||||
defaultFilterField: 'name',
|
||||
defaultSort: {
|
||||
sortField: 'name',
|
||||
sortOrder: 'DESC',
|
||||
},
|
||||
columns: {
|
||||
date: {
|
||||
name: 'warehouse_transfer.field.date',
|
||||
type: 'date',
|
||||
exportable: true,
|
||||
},
|
||||
transaction_number: {
|
||||
name: 'warehouse_transfer.field.transaction_number',
|
||||
type: 'text',
|
||||
exportable: true,
|
||||
},
|
||||
status: {
|
||||
name: 'warehouse_transfer.field.status',
|
||||
fieldType: 'enumeration',
|
||||
options: [
|
||||
{ key: 'draft', label: 'Draft' },
|
||||
{ key: 'in-transit', label: 'In Transit' },
|
||||
{ key: 'transferred', label: 'Transferred' },
|
||||
],
|
||||
sortable: false,
|
||||
},
|
||||
created_at: {
|
||||
name: 'warehouse_transfer.field.created_at',
|
||||
column: 'created_at',
|
||||
columnType: 'date',
|
||||
fieldType: 'date',
|
||||
},
|
||||
},
|
||||
fields: {
|
||||
date: {
|
||||
name: 'warehouse_transfer.field.date',
|
||||
column: 'date',
|
||||
columnType: 'date',
|
||||
fieldType: 'date',
|
||||
},
|
||||
transaction_number: {
|
||||
name: 'warehouse_transfer.field.transaction_number',
|
||||
column: 'transaction_number',
|
||||
fieldType: 'text',
|
||||
},
|
||||
status: {
|
||||
name: 'warehouse_transfer.field.status',
|
||||
fieldType: 'enumeration',
|
||||
options: [
|
||||
{ key: 'draft', label: 'Draft' },
|
||||
{ key: 'in-transit', label: 'In Transit' },
|
||||
{ key: 'transferred', label: 'Transferred' },
|
||||
],
|
||||
filterCustomQuery: StatusFieldFilterQuery,
|
||||
sortable: false,
|
||||
},
|
||||
created_at: {
|
||||
name: 'warehouse_transfer.field.created_at',
|
||||
column: 'created_at',
|
||||
columnType: 'date',
|
||||
fieldType: 'date',
|
||||
},
|
||||
},
|
||||
};
|
||||
@@ -2,7 +2,10 @@ import { Model, mixin } from 'objection';
|
||||
import { TenantBaseModel } from '@/modules/System/models/TenantBaseModel';
|
||||
import { Warehouse } from '@/modules/Warehouses/models/Warehouse.model';
|
||||
import { WarehouseTransferEntry } from './WarehouseTransferEntry';
|
||||
import { InjectModelMeta } from '@/modules/Tenancy/TenancyModels/decorators/InjectModelMeta.decorator';
|
||||
import { WarehouseTransferMeta } from './WarehouseTransfer.meta';
|
||||
|
||||
@InjectModelMeta(WarehouseTransferMeta)
|
||||
export class WarehouseTransfer extends TenantBaseModel {
|
||||
public date!: Date;
|
||||
public transferInitiatedAt!: Date;
|
||||
@@ -14,7 +17,6 @@ export class WarehouseTransfer extends TenantBaseModel {
|
||||
public fromWarehouse!: Warehouse;
|
||||
public toWarehouse!: Warehouse;
|
||||
|
||||
|
||||
/**
|
||||
* Table name.
|
||||
*/
|
||||
@@ -104,7 +106,7 @@ export class WarehouseTransfer extends TenantBaseModel {
|
||||
},
|
||||
|
||||
/**
|
||||
*
|
||||
*
|
||||
*/
|
||||
fromWarehouse: {
|
||||
relation: Model.BelongsToOneRelation,
|
||||
@@ -126,27 +128,13 @@ export class WarehouseTransfer extends TenantBaseModel {
|
||||
};
|
||||
}
|
||||
|
||||
/**
|
||||
* Model settings.
|
||||
*/
|
||||
// static get meta() {
|
||||
// return WarehouseTransferSettings;
|
||||
// }
|
||||
|
||||
// /**
|
||||
// * Retrieve the default custom views, roles and columns.
|
||||
// */
|
||||
// static get defaultViews() {
|
||||
// return DEFAULT_VIEWS;
|
||||
// }
|
||||
|
||||
/**
|
||||
* Model search roles.
|
||||
*/
|
||||
static get searchRoles() {
|
||||
return [
|
||||
// { fieldKey: 'name', comparator: 'contains' },
|
||||
// { condition: 'or', fieldKey: 'code', comparator: 'like' },
|
||||
{ fieldKey: 'name', comparator: 'contains' },
|
||||
{ condition: 'or', fieldKey: 'code', comparator: 'like' },
|
||||
];
|
||||
}
|
||||
}
|
||||
|
||||
@@ -6,6 +6,7 @@ import { TransformerInjectable } from '../../Transformer/TransformerInjectable.s
|
||||
import { DynamicListService } from '../../DynamicListing/DynamicList.service';
|
||||
import { TenantModelProxy } from '../../System/models/TenantBaseModel';
|
||||
import { WarehouseTransfer } from '../models/WarehouseTransfer';
|
||||
import { GetWarehouseTransfersQueryDto } from '@/modules/Warehouses/dtos/GetWarehouseTransfersQuery.dto';
|
||||
|
||||
@Injectable()
|
||||
export class GetWarehouseTransfers {
|
||||
@@ -30,16 +31,19 @@ export class GetWarehouseTransfers {
|
||||
|
||||
/**
|
||||
* Retrieves warehouse transfers paginated list.
|
||||
* @param {number} tenantId
|
||||
* @param {IGetWarehousesTransfersFilterDTO} filterDTO
|
||||
* @returns {}
|
||||
* @param {IGetWarehousesTransfersFilterDTO} filterDTO
|
||||
*/
|
||||
public getWarehouseTransfers = async (
|
||||
filterDTO: IGetWarehousesTransfersFilterDTO,
|
||||
filterDTO: GetWarehouseTransfersQueryDto,
|
||||
) => {
|
||||
// Parses stringified filter roles.
|
||||
const filter = this.parseListFilterDTO(filterDTO);
|
||||
|
||||
const filter = this.parseListFilterDTO({
|
||||
sortOrder: 'desc',
|
||||
columnSortBy: 'created_at',
|
||||
page: 1,
|
||||
pageSize: 12,
|
||||
...filterDTO,
|
||||
});
|
||||
// Dynamic list service.
|
||||
const dynamicFilter = await this.dynamicListService.dynamicList(
|
||||
this.warehouseTransferModel(),
|
||||
|
||||
Reference in New Issue
Block a user