summaryrefslogtreecommitdiff
path: root/src/services/tranfers.service.ts
diff options
context:
space:
mode:
Diffstat (limited to 'src/services/tranfers.service.ts')
-rw-r--r--src/services/tranfers.service.ts81
1 files changed, 0 insertions, 81 deletions
diff --git a/src/services/tranfers.service.ts b/src/services/tranfers.service.ts
deleted file mode 100644
index e36e4f9..0000000
--- a/src/services/tranfers.service.ts
+++ /dev/null
@@ -1,81 +0,0 @@
-import { Application } from '@feathersjs/express';
-import { HookContext } from '@feathersjs/feathers';
-import service from 'feathers-mongoose';
-import { populate, alterItems } from 'feathers-hooks-common';
-import Bluebird from 'bluebird';
-import _ from 'lodash';
-import moment from 'moment';
-import Model from '../models/waybill/waybill.model';
-import { WaybillSchema } from '../models/waybill/waybill.schema';
-
-const waybills = service({ Model });
-
-const populateSchema = {
- include: [
- {
- service: 'contractors',
- nameAs: 'contractor',
- parentField: 'contractorId',
- childField: '_id'
- },
- {
- service: 'products',
- nameAs: 'product',
- parentField: 'productId',
- childField: '_id'
- },
- ]
-};
-
-const reflectStatus = async (context: HookContext): Promise<HookContext> => {
- const { status } = context.data;
- if (['cancelled', 'executed'].includes(status) && context.id) {
- const waybill: WaybillSchema = await context.service.get(context.id);
-
- const signMultiplier = (waybill.operation === 'in' ? 1 : -1) * (status === 'cancelled' ? -1 : 1);
- const total = waybill.records.reduce((sum, record) => sum + record.price * record.quantity, 0);
-
- await Bluebird.map(waybill.records, record => {
- return context.app.service('products').patch(record.productId, {
- $inc: {
- quantity: record.quantity * signMultiplier
- }
- });
- });
-
- await context.app.service('contractors').patch(waybill.contractorId, {
- $inc: {
- debt: total * signMultiplier * (-1)
- }
- });
- }
- return context;
-};
-
-
-
-const addFields = (item: WaybillSchema) => {
- const { operation, records, date } = item;
- const total = item.records.reduce((sum, record) => sum + record.price * record.quantity, 0);
- const op = operation === 'in' ? 'приход' : 'расход';
- const name = `Накладная: ${op} $${total}`;
- const formattedDate = moment(date).format('YYYY-MM-DD');
- return { ...item, name, total, date: formattedDate };
-};
-
-export default (app: Application): void => {
- app.use('/waybills', waybills);
-
- app.service('waybills').hooks({
- after: {
- all: [
- populate({ schema: populateSchema }),
- alterItems(addFields)
- ],
- },
- before: {
- patch: reflectStatus,
- },
- })
-};
-