@tomei/finance 0.4.21 → 0.4.23
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/customer/customer.js +4 -4
- package/dist/customer/customer.js.map +1 -1
- package/dist/finance-company/finance-company.d.ts +1 -1
- package/dist/finance-company/finance-company.js +45 -5
- package/dist/finance-company/finance-company.js.map +1 -1
- package/dist/helpers/typeof.d.ts +1 -1
- package/dist/helpers/typeof.js +2 -1
- package/dist/helpers/typeof.js.map +1 -1
- package/dist/models/document.entity.d.ts +4 -0
- package/dist/models/document.entity.js +10 -0
- package/dist/models/document.entity.js.map +1 -1
- package/dist/models/payment.entity.d.ts +3 -0
- package/dist/models/payment.entity.js +15 -0
- package/dist/models/payment.entity.js.map +1 -1
- package/dist/payment/interfaces/payment-attr.interface.d.ts +1 -0
- package/dist/payment/interfaces/payment-attr.interface.js.map +1 -1
- package/dist/payment/payment.d.ts +1 -0
- package/dist/payment/payment.js +2 -0
- package/dist/payment/payment.js.map +1 -1
- package/dist/payment-item/payment-item.js +1 -1
- package/dist/payment-item/payment-item.js.map +1 -1
- package/dist/tsconfig.tsbuildinfo +1 -1
- package/migrations/finance-payment-migration.js +10 -0
- package/package.json +1 -1
- package/src/customer/customer.ts +1 -1
- package/src/finance-company/finance-company.ts +52 -4
- package/src/helpers/typeof.ts +1 -1
- package/src/models/document.entity.ts +8 -0
- package/src/models/payment.entity.ts +14 -0
- package/src/payment/interfaces/payment-attr.interface.ts +1 -0
- package/src/payment/payment.ts +2 -0
- package/src/payment-item/payment-item.ts +1 -1
|
@@ -61,6 +61,16 @@ module.exports = {
|
|
|
61
61
|
type: Sequelize.STRING(200),
|
|
62
62
|
allowNull: true,
|
|
63
63
|
},
|
|
64
|
+
ReceiptDocNo: {
|
|
65
|
+
type: Sequelize.STRING(30),
|
|
66
|
+
allowNull: true,
|
|
67
|
+
references: {
|
|
68
|
+
model: 'finance_Document',
|
|
69
|
+
key: 'DocNo',
|
|
70
|
+
},
|
|
71
|
+
onUpdate: 'CASCADE',
|
|
72
|
+
onDelete: 'CASCADE',
|
|
73
|
+
},
|
|
64
74
|
AccSystemRefId: {
|
|
65
75
|
type: Sequelize.STRING(30),
|
|
66
76
|
allowNull: true,
|
package/package.json
CHANGED
package/src/customer/customer.ts
CHANGED
|
@@ -11,7 +11,7 @@ import { FinanceCustomerRepository } from './finance-customer.repository';
|
|
|
11
11
|
import * as cuid from 'cuid';
|
|
12
12
|
import Account from '../account/account';
|
|
13
13
|
import { AccountRepository } from '../account/account.repository';
|
|
14
|
-
import type from '../helpers/typeof';
|
|
14
|
+
import { type } from '../helpers/typeof';
|
|
15
15
|
import * as FinanceDb from '../database';
|
|
16
16
|
|
|
17
17
|
// const AccountSystemEntity = import('../account-system-entity').then(({AccountSystemEntity}) => AccountSystemEntity);
|
|
@@ -32,6 +32,8 @@ import PaymentMethod from '../payment-method/payment-method';
|
|
|
32
32
|
import { AccountRepository } from '../account/account.repository';
|
|
33
33
|
import { PaymentPaidWithRepository } from '../payment-paid-with/payment-paid-with.repository';
|
|
34
34
|
import { MediasModel } from '@tomei/media';
|
|
35
|
+
import DocumentItem from '../document/document-item';
|
|
36
|
+
import { type } from 'src/helpers/typeof';
|
|
35
37
|
|
|
36
38
|
// eslint-disable-next-line @typescript-eslint/no-var-requires
|
|
37
39
|
const getConfig = require('../config');
|
|
@@ -1135,6 +1137,7 @@ export default class FinanceCompany extends ObjectBase {
|
|
|
1135
1137
|
* @param payment - The payment object containing payment details
|
|
1136
1138
|
* @param customer - The customer making the payment
|
|
1137
1139
|
* @param ctAccountNo - The account number of the customer's Account Receivable account to transact, else the default customer account payable receivable will be used
|
|
1140
|
+
* @param receiptNo - The document receipt number
|
|
1138
1141
|
*
|
|
1139
1142
|
* @returns {Payment} - Payment object representing the full detals of the payment collection recorded
|
|
1140
1143
|
*/
|
|
@@ -1144,6 +1147,7 @@ export default class FinanceCompany extends ObjectBase {
|
|
|
1144
1147
|
payment: Payment,
|
|
1145
1148
|
customer: FinanceCustomerBase,
|
|
1146
1149
|
ctAccountNo?: string,
|
|
1150
|
+
receiptNo?: string,
|
|
1147
1151
|
): Promise<Payment> {
|
|
1148
1152
|
try {
|
|
1149
1153
|
/*validation 1: Make sure that the payment has at least 1 payment item*/
|
|
@@ -1167,6 +1171,20 @@ export default class FinanceCompany extends ObjectBase {
|
|
|
1167
1171
|
payment.ReceivedBy = loginUser.ObjectId;
|
|
1168
1172
|
payment.IssuedBy = loginUser.ObjectId;
|
|
1169
1173
|
|
|
1174
|
+
const receiptDocuments: any =
|
|
1175
|
+
await FinanceCompany._DocumentRepository.findAll({
|
|
1176
|
+
where: {
|
|
1177
|
+
DocType: DocType.RECEIPT,
|
|
1178
|
+
CompanyId: config.financeCompanies['TXG-FS'].companyId,
|
|
1179
|
+
},
|
|
1180
|
+
});
|
|
1181
|
+
|
|
1182
|
+
if (receiptNo) {
|
|
1183
|
+
payment.ReceiptDocNo = receiptNo;
|
|
1184
|
+
} else {
|
|
1185
|
+
payment.ReceiptDocNo = `EZC-RCT-${receiptDocuments.length + 1}`;
|
|
1186
|
+
}
|
|
1187
|
+
|
|
1170
1188
|
await FinanceCompany._PaymentRepository.create(
|
|
1171
1189
|
{
|
|
1172
1190
|
PaymentId: payment.PaymentId,
|
|
@@ -1182,6 +1200,7 @@ export default class FinanceCompany extends ObjectBase {
|
|
|
1182
1200
|
Remarks: payment.Remarks,
|
|
1183
1201
|
RelatedObjectId: payment.RelatedObjectId,
|
|
1184
1202
|
RelatedObjectType: payment.RelatedObjectType,
|
|
1203
|
+
ReceiptDocNo: payment.ReceiptDocNo,
|
|
1185
1204
|
UpdatedAt: new Date(),
|
|
1186
1205
|
UpdatedBy: loginUser.ObjectId,
|
|
1187
1206
|
CreatedAt: new Date(),
|
|
@@ -1231,6 +1250,33 @@ export default class FinanceCompany extends ObjectBase {
|
|
|
1231
1250
|
);
|
|
1232
1251
|
}
|
|
1233
1252
|
|
|
1253
|
+
/*Generating the receipt*/
|
|
1254
|
+
const receipt = new Document(dbTransaction);
|
|
1255
|
+
|
|
1256
|
+
receipt.DocNo = payment.ReceiptDocNo;
|
|
1257
|
+
receipt.DocType = DocType.RECEIPT;
|
|
1258
|
+
receipt.DocDate = new Date();
|
|
1259
|
+
receipt.CompanyId = config.financeCompanies['TXG-FS'].companyId;
|
|
1260
|
+
receipt.Currency = payment.Currency;
|
|
1261
|
+
receipt.Description = 'Payment Received';
|
|
1262
|
+
receipt.IssuedById = loginUser.ObjectId;
|
|
1263
|
+
receipt.IssuedToId = customer.CustomerId;
|
|
1264
|
+
receipt.IssuedToType = type(customer);
|
|
1265
|
+
receipt.RelatedObjectId = payment.RelatedObjectId;
|
|
1266
|
+
receipt.RelatedObjectType = payment.RelatedObjectType;
|
|
1267
|
+
receipt.UseAccSystemDocYN = 'N';
|
|
1268
|
+
|
|
1269
|
+
for (const paymentItem of paymentItems) {
|
|
1270
|
+
const receiptItem = new DocumentItem(dbTransaction, receipt);
|
|
1271
|
+
receiptItem.Name = `Payment for ${paymentItem.PayForObjectType} No. ${paymentItem.PayForObjectId}`;
|
|
1272
|
+
receiptItem.NameBM = `Bayaran untuk ${paymentItem.PayForObjectType} No. ${paymentItem.PayForObjectId}`;
|
|
1273
|
+
receiptItem.Amount = paymentItem.Amount;
|
|
1274
|
+
receiptItem.Currency = paymentItem.Currency;
|
|
1275
|
+
await receipt.newDocumentItem(receiptItem);
|
|
1276
|
+
}
|
|
1277
|
+
|
|
1278
|
+
await receipt.generateReceipt(receipt.IssuedById, customer);
|
|
1279
|
+
|
|
1234
1280
|
/*Registering the Journal Entries for the transaction*/
|
|
1235
1281
|
const transactionDate = new Date();
|
|
1236
1282
|
|
|
@@ -1263,10 +1309,11 @@ export default class FinanceCompany extends ObjectBase {
|
|
|
1263
1309
|
debitLT.Currency = paymentPaidWith.Currency;
|
|
1264
1310
|
debitLT.DebitAmount = paymentPaidWith.Amount;
|
|
1265
1311
|
debitLT.Date = transactionDate;
|
|
1266
|
-
debitLT.Description = customer.FullName;
|
|
1312
|
+
debitLT.Description = 'Payment Received'; //customer.FullName;
|
|
1267
1313
|
debitLT.Name = customer.FullName;
|
|
1268
|
-
debitLT.RelatedObjectId =
|
|
1314
|
+
debitLT.RelatedObjectId = receipt.RelatedObjectId;
|
|
1269
1315
|
debitLT.RelatedObjectType = payment.RelatedObjectType;
|
|
1316
|
+
debitLT.RelatedPaymentId = payment.PaymentId;
|
|
1270
1317
|
|
|
1271
1318
|
const creditLT = await journalEntry.newLedgerTransaction(
|
|
1272
1319
|
TransactionTypeOptions.CREDIT,
|
|
@@ -1280,10 +1327,11 @@ export default class FinanceCompany extends ObjectBase {
|
|
|
1280
1327
|
creditLT.Currency = paymentPaidWith.Currency;
|
|
1281
1328
|
creditLT.CreditAmount = paymentPaidWith.Amount;
|
|
1282
1329
|
creditLT.Date = transactionDate;
|
|
1283
|
-
creditLT.Description = paymentMethodType.Name;
|
|
1330
|
+
creditLT.Description = 'Payment Received'; //paymentMethodType.Name;
|
|
1284
1331
|
creditLT.Name = paymentMethodType.Name;
|
|
1285
|
-
creditLT.RelatedObjectId =
|
|
1332
|
+
creditLT.RelatedObjectId = receipt.RelatedObjectId;
|
|
1286
1333
|
creditLT.RelatedObjectType = payment.RelatedObjectType;
|
|
1334
|
+
creditLT.RelatedPaymentId = payment.PaymentId;
|
|
1287
1335
|
|
|
1288
1336
|
await this.postJournal(dbTransaction, journalEntry, loginUser);
|
|
1289
1337
|
}
|
package/src/helpers/typeof.ts
CHANGED
|
@@ -13,6 +13,8 @@ import {
|
|
|
13
13
|
import { DocType, DocumentStatus } from '../enum';
|
|
14
14
|
import FinanceCompanyModel from './finance-company.entity';
|
|
15
15
|
import DocumentItemModel from './document-item.entity';
|
|
16
|
+
import LedgerTransactionModel from './ledger-transaction.entity';
|
|
17
|
+
import PaymentModel from './payment.entity';
|
|
16
18
|
|
|
17
19
|
@Table({
|
|
18
20
|
tableName: 'finance_Document',
|
|
@@ -198,6 +200,12 @@ export default class DocumentModel extends Model {
|
|
|
198
200
|
@HasMany(() => DocumentItemModel)
|
|
199
201
|
DocumentItems: DocumentItemModel[];
|
|
200
202
|
|
|
203
|
+
@HasMany(() => LedgerTransactionModel)
|
|
204
|
+
LedgerTransactions: LedgerTransactionModel[];
|
|
205
|
+
|
|
206
|
+
@HasMany(() => PaymentModel)
|
|
207
|
+
Payments: PaymentModel[];
|
|
208
|
+
|
|
201
209
|
@BelongsTo(() => FinanceCompanyModel)
|
|
202
210
|
FinanceCompany: FinanceCompanyModel;
|
|
203
211
|
}
|
|
@@ -6,8 +6,11 @@ import {
|
|
|
6
6
|
Model,
|
|
7
7
|
Table,
|
|
8
8
|
UpdatedAt,
|
|
9
|
+
BelongsTo,
|
|
9
10
|
} from 'sequelize-typescript';
|
|
11
|
+
import { ForeignKey } from 'sequelize-typescript/dist/associations/foreign-key/foreign-key';
|
|
10
12
|
import { PaymentType, PaymentStatus } from '../enum';
|
|
13
|
+
import DocumentModel from './document.entity';
|
|
11
14
|
import PaymentItemModel from './payment-item.entity';
|
|
12
15
|
|
|
13
16
|
@Table({
|
|
@@ -102,6 +105,14 @@ export default class PaymentModel extends Model {
|
|
|
102
105
|
})
|
|
103
106
|
RelatedObjectType: string;
|
|
104
107
|
|
|
108
|
+
@ApiProperty({ type: String, description: 'DocNo' })
|
|
109
|
+
@ForeignKey(() => DocumentModel)
|
|
110
|
+
@Column({
|
|
111
|
+
allowNull: true,
|
|
112
|
+
type: DataType.STRING(30),
|
|
113
|
+
})
|
|
114
|
+
ReceiptDocNo: string;
|
|
115
|
+
|
|
105
116
|
@ApiProperty({
|
|
106
117
|
type: String,
|
|
107
118
|
description: 'Account Customer Id in API',
|
|
@@ -144,4 +155,7 @@ export default class PaymentModel extends Model {
|
|
|
144
155
|
|
|
145
156
|
@HasMany(() => PaymentItemModel)
|
|
146
157
|
PaymentItems: PaymentItemModel[];
|
|
158
|
+
|
|
159
|
+
@BelongsTo(() => DocumentModel)
|
|
160
|
+
Document: DocumentModel;
|
|
147
161
|
}
|
package/src/payment/payment.ts
CHANGED
|
@@ -30,6 +30,7 @@ export default class Payment extends AccountSystemEntity {
|
|
|
30
30
|
Remarks = '';
|
|
31
31
|
RelatedObjectId = '';
|
|
32
32
|
RelatedObjectType = '';
|
|
33
|
+
ReceiptDocNo = '';
|
|
33
34
|
|
|
34
35
|
private static _RepositoryBase = new PaymentRepository();
|
|
35
36
|
private static _PaymentItemRepository = new PaymentItemRepository();
|
|
@@ -103,6 +104,7 @@ export default class Payment extends AccountSystemEntity {
|
|
|
103
104
|
payment.Remarks = paymentData.Remarks;
|
|
104
105
|
payment.RelatedObjectId = paymentData.RelatedObjectId;
|
|
105
106
|
payment.RelatedObjectType = paymentData.RelatedObjectType;
|
|
107
|
+
payment.ReceiptDocNo = paymentData.ReceiptDocNo;
|
|
106
108
|
payment.AccSystemRefId = paymentData.AccSystemRefId;
|
|
107
109
|
payment.PostedToAccSystemYN = paymentData.PostedToAccSystemYN;
|
|
108
110
|
payment.PostedById = paymentData.PostedById;
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import { ObjectBase } from '@tomei/general';
|
|
2
2
|
import Payment from '../payment/payment';
|
|
3
|
-
import type from '../helpers/typeof';
|
|
3
|
+
import { type } from '../helpers/typeof';
|
|
4
4
|
import { QueryTypes } from 'sequelize';
|
|
5
5
|
import { FinanceDb } from '../';
|
|
6
6
|
import { Next } from '@nestjs/common/decorators';
|