@procxo/shared 1.0.2 → 1.0.4

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.
Files changed (510) hide show
  1. package/package.json +4 -2
  2. package/src/config/index.ts +5 -0
  3. package/src/config/ormconfig.factory.ts +102 -0
  4. package/src/config/typeorm.config.ts +22 -0
  5. package/src/core/constant/index.ts +1 -0
  6. package/src/core/constant/notification-preference.ts +113 -0
  7. package/src/core/json/core-data/currency.json +8 -0
  8. package/{dist → src}/core/json/core-data/department.json +38 -38
  9. package/{dist → src}/core/json/core-data/permission.json +898 -898
  10. package/src/core/json/core-data/role.json +30 -0
  11. package/src/core/json/core-data/user.json +12 -0
  12. package/src/core/json/geographic-data/cities.json +54693 -0
  13. package/src/core/json/geographic-data/countries.json +31 -0
  14. package/src/database/entities/activity-logs.entity.ts +31 -0
  15. package/src/database/entities/address.entity.ts +31 -0
  16. package/src/database/entities/alert.entity.ts +139 -0
  17. package/src/database/entities/approval-condition.entity.ts +48 -0
  18. package/src/database/entities/approval-hierarchy-role.entity.ts +24 -0
  19. package/src/database/entities/approval-hierarchy-user.entity.ts +24 -0
  20. package/src/database/entities/approval-hierarchy.entity.ts +59 -0
  21. package/src/database/entities/approval-journey.entity.ts +75 -0
  22. package/src/database/entities/approval-level-escalation-user.entity.ts +23 -0
  23. package/src/database/entities/approval-level-escalation.entity.ts +45 -0
  24. package/src/database/entities/approval-level-user.entity.ts +25 -0
  25. package/src/database/entities/approval-level.entity.ts +51 -0
  26. package/src/database/entities/base.entity.ts +31 -0
  27. package/src/database/entities/chat.entity.ts +36 -0
  28. package/src/database/entities/city.entity.ts +25 -0
  29. package/src/database/entities/client.entity.ts +91 -0
  30. package/src/database/entities/contact.entity.ts +27 -0
  31. package/src/database/entities/country.entity.ts +69 -0
  32. package/src/database/entities/credit-note.entity.ts +88 -0
  33. package/src/database/entities/currency.entity.ts +21 -0
  34. package/src/database/entities/department.entity.ts +21 -0
  35. package/src/database/entities/entitlement.entity.ts +64 -0
  36. package/src/database/entities/expense.entity.ts +141 -0
  37. package/src/database/entities/file.entity.ts +22 -0
  38. package/src/database/entities/fixed-invoice-item.entity.ts +29 -0
  39. package/src/database/entities/group.entity.ts +21 -0
  40. package/src/database/entities/gst.entity.ts +32 -0
  41. package/src/database/entities/holiday.entity.ts +51 -0
  42. package/{dist/database/entities/index.d.ts → src/database/entities/index.ts} +79 -78
  43. package/src/database/entities/invoice-template-footer.entity.ts +70 -0
  44. package/src/database/entities/invoice-template-header.entity.ts +34 -0
  45. package/src/database/entities/invoice-template-table.entity.ts +83 -0
  46. package/src/database/entities/invoice-template.entity.ts +119 -0
  47. package/src/database/entities/invoice.entity.ts +139 -0
  48. package/src/database/entities/invoice_item.entity.ts +69 -0
  49. package/src/database/entities/leave-balance.entity.ts +118 -0
  50. package/src/database/entities/leave-request.entity.ts +155 -0
  51. package/src/database/entities/leave-type.entity.ts +37 -0
  52. package/src/database/entities/matter-tag.entity.ts +21 -0
  53. package/src/database/entities/matter-task-view-filter.entity.ts +21 -0
  54. package/src/database/entities/matter-team-member.entity.ts +30 -0
  55. package/src/database/entities/matter.entity.ts +156 -0
  56. package/src/database/entities/payment.entity.ts +72 -0
  57. package/src/database/entities/permission.entity.ts +27 -0
  58. package/src/database/entities/quickbooks-connection.entity.ts +35 -0
  59. package/src/database/entities/quickbooks-sync-log.entity.ts +79 -0
  60. package/src/database/entities/role-permission.entity.ts +30 -0
  61. package/src/database/entities/role-shift.entity.ts +43 -0
  62. package/src/database/entities/role.entity.ts +30 -0
  63. package/src/database/entities/sequence-generator.entity.ts +40 -0
  64. package/src/database/entities/shift.entity.ts +72 -0
  65. package/src/database/entities/sub-task-tag.entity.ts +22 -0
  66. package/src/database/entities/subtask-user.entity.ts +21 -0
  67. package/src/database/entities/subtask.entity.ts +125 -0
  68. package/src/database/entities/summary-task-status.entity.ts +15 -0
  69. package/src/database/entities/superset.entity.ts +38 -0
  70. package/src/database/entities/tag.entity.ts +19 -0
  71. package/src/database/entities/task-comment.entity.ts +41 -0
  72. package/src/database/entities/task-milestone.entity.ts +14 -0
  73. package/src/database/entities/task-remainder.entity.ts +29 -0
  74. package/src/database/entities/task-tag.entity.ts +22 -0
  75. package/src/database/entities/task-type.entity.ts +14 -0
  76. package/src/database/entities/task-user.entity.ts +21 -0
  77. package/src/database/entities/task.entity.ts +176 -0
  78. package/src/database/entities/template-task.entity.ts +25 -0
  79. package/src/database/entities/template.entity.ts +28 -0
  80. package/src/database/entities/timesheet-comment.entity.ts +45 -0
  81. package/src/database/entities/timesheet-event.entity.ts +256 -0
  82. package/src/database/entities/timesheet-summary.entity.ts +101 -0
  83. package/src/database/entities/timesheet.entity.ts +76 -0
  84. package/src/database/entities/transfer-ownership.entity.ts +39 -0
  85. package/src/database/entities/upload-log.entity.ts +78 -0
  86. package/src/database/entities/user-notification-channel.entity.ts +43 -0
  87. package/src/database/entities/user-notification-preference.entity.ts +50 -0
  88. package/src/database/entities/user-role.entity.ts +25 -0
  89. package/src/database/entities/user-session-history.entity.ts +45 -0
  90. package/src/database/entities/user-shift.entity.ts +109 -0
  91. package/src/database/entities/user.entity.ts +198 -0
  92. package/src/database/index.ts +1 -0
  93. package/{dist/database/migrations/1770706648232-initialMigration.js → src/database/migrations/1770706648232-initialMigration.ts} +9 -9
  94. package/src/database/seeder/base.seed.ts +104 -0
  95. package/src/database/seeder/config/seeder.config.ts +26 -0
  96. package/src/database/seeder/errors/seeder.error.ts +20 -0
  97. package/src/database/seeder/seed-runner.ts +200 -0
  98. package/src/database/seeder/seeds/city.seed.ts +70 -0
  99. package/src/database/seeder/seeds/country.seed.ts +58 -0
  100. package/src/database/seeder/seeds/currency.seed.ts +52 -0
  101. package/src/database/seeder/seeds/department.seed.ts +47 -0
  102. package/src/database/seeder/seeds/permission.seed.ts +54 -0
  103. package/src/database/seeder/seeds/role-permission.seed.ts +58 -0
  104. package/src/database/seeder/seeds/role.seed.ts +52 -0
  105. package/src/database/seeder/seeds/user-role.seed.ts +72 -0
  106. package/src/database/seeder/seeds/user.seed.ts +87 -0
  107. package/{dist/index.d.ts → src/index.ts} +5 -1
  108. package/src/scripts/create-schema.ts +94 -0
  109. package/dist/config/index.d.ts +0 -2
  110. package/dist/config/index.d.ts.map +0 -1
  111. package/dist/config/index.js +0 -7
  112. package/dist/config/index.js.map +0 -1
  113. package/dist/config/ormconfig.factory.d.ts +0 -10
  114. package/dist/config/ormconfig.factory.d.ts.map +0 -1
  115. package/dist/config/ormconfig.factory.js +0 -47
  116. package/dist/config/ormconfig.factory.js.map +0 -1
  117. package/dist/config/typeorm.config.d.ts +0 -4
  118. package/dist/config/typeorm.config.d.ts.map +0 -1
  119. package/dist/config/typeorm.config.js +0 -22
  120. package/dist/config/typeorm.config.js.map +0 -1
  121. package/dist/core/constant/index.d.ts +0 -2
  122. package/dist/core/constant/index.d.ts.map +0 -1
  123. package/dist/core/constant/index.js +0 -18
  124. package/dist/core/constant/index.js.map +0 -1
  125. package/dist/core/constant/notification-preference.d.ts +0 -29
  126. package/dist/core/constant/notification-preference.d.ts.map +0 -1
  127. package/dist/core/constant/notification-preference.js +0 -81
  128. package/dist/core/constant/notification-preference.js.map +0 -1
  129. package/dist/core/json/core-data/currency.json +0 -8
  130. package/dist/core/json/core-data/role.json +0 -30
  131. package/dist/core/json/core-data/user.json +0 -12
  132. package/dist/core/json/geographic-data/cities.json +0 -54693
  133. package/dist/core/json/geographic-data/countries.json +0 -31
  134. package/dist/database/entities/activity-logs.entity.d.ts +0 -11
  135. package/dist/database/entities/activity-logs.entity.d.ts.map +0 -1
  136. package/dist/database/entities/activity-logs.entity.js +0 -56
  137. package/dist/database/entities/activity-logs.entity.js.map +0 -1
  138. package/dist/database/entities/address.entity.d.ts +0 -13
  139. package/dist/database/entities/address.entity.d.ts.map +0 -1
  140. package/dist/database/entities/address.entity.js +0 -63
  141. package/dist/database/entities/address.entity.js.map +0 -1
  142. package/dist/database/entities/alert.entity.d.ts +0 -37
  143. package/dist/database/entities/alert.entity.d.ts.map +0 -1
  144. package/dist/database/entities/alert.entity.js +0 -171
  145. package/dist/database/entities/alert.entity.js.map +0 -1
  146. package/dist/database/entities/approval-condition.entity.d.ts +0 -16
  147. package/dist/database/entities/approval-condition.entity.d.ts.map +0 -1
  148. package/dist/database/entities/approval-condition.entity.js +0 -66
  149. package/dist/database/entities/approval-condition.entity.js.map +0 -1
  150. package/dist/database/entities/approval-hierarchy-role.entity.d.ts +0 -10
  151. package/dist/database/entities/approval-hierarchy-role.entity.d.ts.map +0 -1
  152. package/dist/database/entities/approval-hierarchy-role.entity.js +0 -47
  153. package/dist/database/entities/approval-hierarchy-role.entity.js.map +0 -1
  154. package/dist/database/entities/approval-hierarchy-user.entity.d.ts +0 -10
  155. package/dist/database/entities/approval-hierarchy-user.entity.d.ts.map +0 -1
  156. package/dist/database/entities/approval-hierarchy-user.entity.js +0 -47
  157. package/dist/database/entities/approval-hierarchy-user.entity.js.map +0 -1
  158. package/dist/database/entities/approval-hierarchy.entity.d.ts +0 -22
  159. package/dist/database/entities/approval-hierarchy.entity.d.ts.map +0 -1
  160. package/dist/database/entities/approval-hierarchy.entity.js +0 -80
  161. package/dist/database/entities/approval-hierarchy.entity.js.map +0 -1
  162. package/dist/database/entities/approval-journey.entity.d.ts +0 -32
  163. package/dist/database/entities/approval-journey.entity.d.ts.map +0 -1
  164. package/dist/database/entities/approval-journey.entity.js +0 -125
  165. package/dist/database/entities/approval-journey.entity.js.map +0 -1
  166. package/dist/database/entities/approval-level-escalation-user.entity.d.ts +0 -10
  167. package/dist/database/entities/approval-level-escalation-user.entity.d.ts.map +0 -1
  168. package/dist/database/entities/approval-level-escalation-user.entity.js +0 -47
  169. package/dist/database/entities/approval-level-escalation-user.entity.js.map +0 -1
  170. package/dist/database/entities/approval-level-escalation.entity.d.ts +0 -14
  171. package/dist/database/entities/approval-level-escalation.entity.d.ts.map +0 -1
  172. package/dist/database/entities/approval-level-escalation.entity.js +0 -65
  173. package/dist/database/entities/approval-level-escalation.entity.js.map +0 -1
  174. package/dist/database/entities/approval-level-user.entity.d.ts +0 -10
  175. package/dist/database/entities/approval-level-user.entity.d.ts.map +0 -1
  176. package/dist/database/entities/approval-level-user.entity.js +0 -49
  177. package/dist/database/entities/approval-level-user.entity.js.map +0 -1
  178. package/dist/database/entities/approval-level.entity.d.ts +0 -17
  179. package/dist/database/entities/approval-level.entity.d.ts.map +0 -1
  180. package/dist/database/entities/approval-level.entity.js +0 -76
  181. package/dist/database/entities/approval-level.entity.js.map +0 -1
  182. package/dist/database/entities/base.entity.d.ts +0 -12
  183. package/dist/database/entities/base.entity.d.ts.map +0 -1
  184. package/dist/database/entities/base.entity.js +0 -63
  185. package/dist/database/entities/base.entity.js.map +0 -1
  186. package/dist/database/entities/chat.entity.d.ts +0 -13
  187. package/dist/database/entities/chat.entity.d.ts.map +0 -1
  188. package/dist/database/entities/chat.entity.js +0 -67
  189. package/dist/database/entities/chat.entity.js.map +0 -1
  190. package/dist/database/entities/city.entity.d.ts +0 -11
  191. package/dist/database/entities/city.entity.d.ts.map +0 -1
  192. package/dist/database/entities/city.entity.js +0 -53
  193. package/dist/database/entities/city.entity.js.map +0 -1
  194. package/dist/database/entities/client.entity.d.ts +0 -40
  195. package/dist/database/entities/client.entity.d.ts.map +0 -1
  196. package/dist/database/entities/client.entity.js +0 -146
  197. package/dist/database/entities/client.entity.js.map +0 -1
  198. package/dist/database/entities/contact.entity.d.ts +0 -12
  199. package/dist/database/entities/contact.entity.d.ts.map +0 -1
  200. package/dist/database/entities/contact.entity.js +0 -57
  201. package/dist/database/entities/contact.entity.js.map +0 -1
  202. package/dist/database/entities/country.entity.d.ts +0 -26
  203. package/dist/database/entities/country.entity.d.ts.map +0 -1
  204. package/dist/database/entities/country.entity.js +0 -127
  205. package/dist/database/entities/country.entity.js.map +0 -1
  206. package/dist/database/entities/credit-note.entity.d.ts +0 -35
  207. package/dist/database/entities/credit-note.entity.d.ts.map +0 -1
  208. package/dist/database/entities/credit-note.entity.js +0 -144
  209. package/dist/database/entities/credit-note.entity.js.map +0 -1
  210. package/dist/database/entities/currency.entity.d.ts +0 -10
  211. package/dist/database/entities/currency.entity.d.ts.map +0 -1
  212. package/dist/database/entities/currency.entity.js +0 -47
  213. package/dist/database/entities/currency.entity.js.map +0 -1
  214. package/dist/database/entities/department.entity.d.ts +0 -10
  215. package/dist/database/entities/department.entity.d.ts.map +0 -1
  216. package/dist/database/entities/department.entity.js +0 -47
  217. package/dist/database/entities/department.entity.js.map +0 -1
  218. package/dist/database/entities/entitlement.entity.d.ts +0 -24
  219. package/dist/database/entities/entitlement.entity.d.ts.map +0 -1
  220. package/dist/database/entities/entitlement.entity.js +0 -106
  221. package/dist/database/entities/entitlement.entity.js.map +0 -1
  222. package/dist/database/entities/expense.entity.d.ts +0 -47
  223. package/dist/database/entities/expense.entity.d.ts.map +0 -1
  224. package/dist/database/entities/expense.entity.js +0 -221
  225. package/dist/database/entities/expense.entity.js.map +0 -1
  226. package/dist/database/entities/file.entity.d.ts +0 -9
  227. package/dist/database/entities/file.entity.d.ts.map +0 -1
  228. package/dist/database/entities/file.entity.js +0 -46
  229. package/dist/database/entities/file.entity.js.map +0 -1
  230. package/dist/database/entities/fixed-invoice-item.entity.d.ts +0 -9
  231. package/dist/database/entities/fixed-invoice-item.entity.d.ts.map +0 -1
  232. package/dist/database/entities/fixed-invoice-item.entity.js +0 -52
  233. package/dist/database/entities/fixed-invoice-item.entity.js.map +0 -1
  234. package/dist/database/entities/group.entity.d.ts +0 -9
  235. package/dist/database/entities/group.entity.d.ts.map +0 -1
  236. package/dist/database/entities/group.entity.js +0 -45
  237. package/dist/database/entities/group.entity.js.map +0 -1
  238. package/dist/database/entities/gst.entity.d.ts +0 -6
  239. package/dist/database/entities/gst.entity.d.ts.map +0 -1
  240. package/dist/database/entities/gst.entity.js +0 -44
  241. package/dist/database/entities/gst.entity.js.map +0 -1
  242. package/dist/database/entities/holiday.entity.d.ts +0 -14
  243. package/dist/database/entities/holiday.entity.d.ts.map +0 -1
  244. package/dist/database/entities/holiday.entity.js +0 -79
  245. package/dist/database/entities/holiday.entity.js.map +0 -1
  246. package/dist/database/entities/index.d.ts.map +0 -1
  247. package/dist/database/entities/index.js +0 -94
  248. package/dist/database/entities/index.js.map +0 -1
  249. package/dist/database/entities/invoice-template-footer.entity.d.ts +0 -24
  250. package/dist/database/entities/invoice-template-footer.entity.d.ts.map +0 -1
  251. package/dist/database/entities/invoice-template-footer.entity.js +0 -118
  252. package/dist/database/entities/invoice-template-footer.entity.js.map +0 -1
  253. package/dist/database/entities/invoice-template-header.entity.d.ts +0 -14
  254. package/dist/database/entities/invoice-template-header.entity.d.ts.map +0 -1
  255. package/dist/database/entities/invoice-template-header.entity.js +0 -68
  256. package/dist/database/entities/invoice-template-header.entity.js.map +0 -1
  257. package/dist/database/entities/invoice-template-table.entity.d.ts +0 -35
  258. package/dist/database/entities/invoice-template-table.entity.d.ts.map +0 -1
  259. package/dist/database/entities/invoice-template-table.entity.js +0 -143
  260. package/dist/database/entities/invoice-template-table.entity.js.map +0 -1
  261. package/dist/database/entities/invoice-template.entity.d.ts +0 -39
  262. package/dist/database/entities/invoice-template.entity.d.ts.map +0 -1
  263. package/dist/database/entities/invoice-template.entity.js +0 -157
  264. package/dist/database/entities/invoice-template.entity.js.map +0 -1
  265. package/dist/database/entities/invoice.entity.d.ts +0 -46
  266. package/dist/database/entities/invoice.entity.d.ts.map +0 -1
  267. package/dist/database/entities/invoice.entity.js +0 -212
  268. package/dist/database/entities/invoice.entity.js.map +0 -1
  269. package/dist/database/entities/invoice_item.entity.d.ts +0 -22
  270. package/dist/database/entities/invoice_item.entity.d.ts.map +0 -1
  271. package/dist/database/entities/invoice_item.entity.js +0 -89
  272. package/dist/database/entities/invoice_item.entity.js.map +0 -1
  273. package/dist/database/entities/leave-balance.entity.d.ts +0 -38
  274. package/dist/database/entities/leave-balance.entity.d.ts.map +0 -1
  275. package/dist/database/entities/leave-balance.entity.js +0 -166
  276. package/dist/database/entities/leave-balance.entity.js.map +0 -1
  277. package/dist/database/entities/leave-request.entity.d.ts +0 -64
  278. package/dist/database/entities/leave-request.entity.d.ts.map +0 -1
  279. package/dist/database/entities/leave-request.entity.js +0 -219
  280. package/dist/database/entities/leave-request.entity.js.map +0 -1
  281. package/dist/database/entities/leave-type.entity.d.ts +0 -15
  282. package/dist/database/entities/leave-type.entity.d.ts.map +0 -1
  283. package/dist/database/entities/leave-type.entity.js +0 -72
  284. package/dist/database/entities/leave-type.entity.js.map +0 -1
  285. package/dist/database/entities/matter-tag.entity.d.ts +0 -10
  286. package/dist/database/entities/matter-tag.entity.d.ts.map +0 -1
  287. package/dist/database/entities/matter-tag.entity.js +0 -45
  288. package/dist/database/entities/matter-tag.entity.js.map +0 -1
  289. package/dist/database/entities/matter-task-view-filter.entity.d.ts +0 -11
  290. package/dist/database/entities/matter-task-view-filter.entity.d.ts.map +0 -1
  291. package/dist/database/entities/matter-task-view-filter.entity.js +0 -42
  292. package/dist/database/entities/matter-task-view-filter.entity.js.map +0 -1
  293. package/dist/database/entities/matter-team-member.entity.d.ts +0 -11
  294. package/dist/database/entities/matter-team-member.entity.d.ts.map +0 -1
  295. package/dist/database/entities/matter-team-member.entity.js +0 -56
  296. package/dist/database/entities/matter-team-member.entity.js.map +0 -1
  297. package/dist/database/entities/matter.entity.d.ts +0 -62
  298. package/dist/database/entities/matter.entity.d.ts.map +0 -1
  299. package/dist/database/entities/matter.entity.js +0 -249
  300. package/dist/database/entities/matter.entity.js.map +0 -1
  301. package/dist/database/entities/payment.entity.d.ts +0 -26
  302. package/dist/database/entities/payment.entity.d.ts.map +0 -1
  303. package/dist/database/entities/payment.entity.js +0 -127
  304. package/dist/database/entities/payment.entity.js.map +0 -1
  305. package/dist/database/entities/permission.entity.d.ts +0 -11
  306. package/dist/database/entities/permission.entity.d.ts.map +0 -1
  307. package/dist/database/entities/permission.entity.js +0 -52
  308. package/dist/database/entities/permission.entity.js.map +0 -1
  309. package/dist/database/entities/quickbooks-connection.entity.d.ts +0 -14
  310. package/dist/database/entities/quickbooks-connection.entity.d.ts.map +0 -1
  311. package/dist/database/entities/quickbooks-connection.entity.js +0 -71
  312. package/dist/database/entities/quickbooks-connection.entity.js.map +0 -1
  313. package/dist/database/entities/quickbooks-sync-log.entity.d.ts +0 -34
  314. package/dist/database/entities/quickbooks-sync-log.entity.d.ts.map +0 -1
  315. package/dist/database/entities/quickbooks-sync-log.entity.js +0 -116
  316. package/dist/database/entities/quickbooks-sync-log.entity.js.map +0 -1
  317. package/dist/database/entities/role-permission.entity.d.ts +0 -10
  318. package/dist/database/entities/role-permission.entity.d.ts.map +0 -1
  319. package/dist/database/entities/role-permission.entity.js +0 -49
  320. package/dist/database/entities/role-permission.entity.js.map +0 -1
  321. package/dist/database/entities/role-shift.entity.d.ts +0 -8
  322. package/dist/database/entities/role-shift.entity.d.ts.map +0 -1
  323. package/dist/database/entities/role-shift.entity.js +0 -48
  324. package/dist/database/entities/role-shift.entity.js.map +0 -1
  325. package/dist/database/entities/role.entity.d.ts +0 -13
  326. package/dist/database/entities/role.entity.d.ts.map +0 -1
  327. package/dist/database/entities/role.entity.js +0 -58
  328. package/dist/database/entities/role.entity.js.map +0 -1
  329. package/dist/database/entities/sequence-generator.entity.d.ts +0 -8
  330. package/dist/database/entities/sequence-generator.entity.d.ts.map +0 -1
  331. package/dist/database/entities/sequence-generator.entity.js +0 -64
  332. package/dist/database/entities/sequence-generator.entity.js.map +0 -1
  333. package/dist/database/entities/shift.entity.d.ts +0 -18
  334. package/dist/database/entities/shift.entity.d.ts.map +0 -1
  335. package/dist/database/entities/shift.entity.js +0 -110
  336. package/dist/database/entities/shift.entity.js.map +0 -1
  337. package/dist/database/entities/sub-task-tag.entity.d.ts +0 -10
  338. package/dist/database/entities/sub-task-tag.entity.d.ts.map +0 -1
  339. package/dist/database/entities/sub-task-tag.entity.js +0 -45
  340. package/dist/database/entities/sub-task-tag.entity.js.map +0 -1
  341. package/dist/database/entities/subtask-user.entity.d.ts +0 -10
  342. package/dist/database/entities/subtask-user.entity.d.ts.map +0 -1
  343. package/dist/database/entities/subtask-user.entity.js +0 -45
  344. package/dist/database/entities/subtask-user.entity.js.map +0 -1
  345. package/dist/database/entities/subtask.entity.d.ts +0 -47
  346. package/dist/database/entities/subtask.entity.d.ts.map +0 -1
  347. package/dist/database/entities/subtask.entity.js +0 -185
  348. package/dist/database/entities/subtask.entity.js.map +0 -1
  349. package/dist/database/entities/summary-task-status.entity.d.ts +0 -7
  350. package/dist/database/entities/summary-task-status.entity.d.ts.map +0 -1
  351. package/dist/database/entities/summary-task-status.entity.js +0 -37
  352. package/dist/database/entities/summary-task-status.entity.js.map +0 -1
  353. package/dist/database/entities/superset.entity.d.ts +0 -15
  354. package/dist/database/entities/superset.entity.d.ts.map +0 -1
  355. package/dist/database/entities/superset.entity.js +0 -73
  356. package/dist/database/entities/superset.entity.js.map +0 -1
  357. package/dist/database/entities/tag.entity.d.ts +0 -10
  358. package/dist/database/entities/tag.entity.d.ts.map +0 -1
  359. package/dist/database/entities/tag.entity.js +0 -43
  360. package/dist/database/entities/tag.entity.js.map +0 -1
  361. package/dist/database/entities/task-comment.entity.d.ts +0 -15
  362. package/dist/database/entities/task-comment.entity.d.ts.map +0 -1
  363. package/dist/database/entities/task-comment.entity.js +0 -67
  364. package/dist/database/entities/task-comment.entity.js.map +0 -1
  365. package/dist/database/entities/task-milestone.entity.d.ts +0 -7
  366. package/dist/database/entities/task-milestone.entity.d.ts.map +0 -1
  367. package/dist/database/entities/task-milestone.entity.js +0 -36
  368. package/dist/database/entities/task-milestone.entity.js.map +0 -1
  369. package/dist/database/entities/task-remainder.entity.d.ts +0 -12
  370. package/dist/database/entities/task-remainder.entity.d.ts.map +0 -1
  371. package/dist/database/entities/task-remainder.entity.js +0 -57
  372. package/dist/database/entities/task-remainder.entity.js.map +0 -1
  373. package/dist/database/entities/task-tag.entity.d.ts +0 -10
  374. package/dist/database/entities/task-tag.entity.d.ts.map +0 -1
  375. package/dist/database/entities/task-tag.entity.js +0 -45
  376. package/dist/database/entities/task-tag.entity.js.map +0 -1
  377. package/dist/database/entities/task-type.entity.d.ts +0 -7
  378. package/dist/database/entities/task-type.entity.d.ts.map +0 -1
  379. package/dist/database/entities/task-type.entity.js +0 -36
  380. package/dist/database/entities/task-type.entity.js.map +0 -1
  381. package/dist/database/entities/task-user.entity.d.ts +0 -10
  382. package/dist/database/entities/task-user.entity.d.ts.map +0 -1
  383. package/dist/database/entities/task-user.entity.js +0 -45
  384. package/dist/database/entities/task-user.entity.js.map +0 -1
  385. package/dist/database/entities/task.entity.d.ts +0 -53
  386. package/dist/database/entities/task.entity.d.ts.map +0 -1
  387. package/dist/database/entities/task.entity.js +0 -259
  388. package/dist/database/entities/task.entity.js.map +0 -1
  389. package/dist/database/entities/template-task.entity.d.ts +0 -11
  390. package/dist/database/entities/template-task.entity.d.ts.map +0 -1
  391. package/dist/database/entities/template-task.entity.js +0 -53
  392. package/dist/database/entities/template-task.entity.js.map +0 -1
  393. package/dist/database/entities/template.entity.d.ts +0 -13
  394. package/dist/database/entities/template.entity.d.ts.map +0 -1
  395. package/dist/database/entities/template.entity.js +0 -58
  396. package/dist/database/entities/template.entity.js.map +0 -1
  397. package/dist/database/entities/timesheet-comment.entity.d.ts +0 -11
  398. package/dist/database/entities/timesheet-comment.entity.d.ts.map +0 -1
  399. package/dist/database/entities/timesheet-comment.entity.js +0 -65
  400. package/dist/database/entities/timesheet-comment.entity.js.map +0 -1
  401. package/dist/database/entities/timesheet-event.entity.d.ts +0 -48
  402. package/dist/database/entities/timesheet-event.entity.d.ts.map +0 -1
  403. package/dist/database/entities/timesheet-event.entity.js +0 -328
  404. package/dist/database/entities/timesheet-event.entity.js.map +0 -1
  405. package/dist/database/entities/timesheet-summary.entity.d.ts +0 -27
  406. package/dist/database/entities/timesheet-summary.entity.d.ts.map +0 -1
  407. package/dist/database/entities/timesheet-summary.entity.js +0 -161
  408. package/dist/database/entities/timesheet-summary.entity.js.map +0 -1
  409. package/dist/database/entities/timesheet.entity.d.ts +0 -32
  410. package/dist/database/entities/timesheet.entity.d.ts.map +0 -1
  411. package/dist/database/entities/timesheet.entity.js +0 -112
  412. package/dist/database/entities/timesheet.entity.js.map +0 -1
  413. package/dist/database/entities/transfer-ownership.entity.d.ts +0 -15
  414. package/dist/database/entities/transfer-ownership.entity.d.ts.map +0 -1
  415. package/dist/database/entities/transfer-ownership.entity.js +0 -75
  416. package/dist/database/entities/transfer-ownership.entity.js.map +0 -1
  417. package/dist/database/entities/upload-log.entity.d.ts +0 -31
  418. package/dist/database/entities/upload-log.entity.d.ts.map +0 -1
  419. package/dist/database/entities/upload-log.entity.js +0 -111
  420. package/dist/database/entities/upload-log.entity.js.map +0 -1
  421. package/dist/database/entities/user-notification-channel.entity.d.ts +0 -8
  422. package/dist/database/entities/user-notification-channel.entity.d.ts.map +0 -1
  423. package/dist/database/entities/user-notification-channel.entity.js +0 -63
  424. package/dist/database/entities/user-notification-channel.entity.js.map +0 -1
  425. package/dist/database/entities/user-notification-preference.entity.d.ts +0 -10
  426. package/dist/database/entities/user-notification-preference.entity.d.ts.map +0 -1
  427. package/dist/database/entities/user-notification-preference.entity.js +0 -72
  428. package/dist/database/entities/user-notification-preference.entity.js.map +0 -1
  429. package/dist/database/entities/user-role.entity.d.ts +0 -10
  430. package/dist/database/entities/user-role.entity.d.ts.map +0 -1
  431. package/dist/database/entities/user-role.entity.js +0 -45
  432. package/dist/database/entities/user-role.entity.js.map +0 -1
  433. package/dist/database/entities/user-session-history.entity.d.ts +0 -16
  434. package/dist/database/entities/user-session-history.entity.d.ts.map +0 -1
  435. package/dist/database/entities/user-session-history.entity.js +0 -78
  436. package/dist/database/entities/user-session-history.entity.js.map +0 -1
  437. package/dist/database/entities/user-shift.entity.d.ts +0 -24
  438. package/dist/database/entities/user-shift.entity.d.ts.map +0 -1
  439. package/dist/database/entities/user-shift.entity.js +0 -153
  440. package/dist/database/entities/user-shift.entity.js.map +0 -1
  441. package/dist/database/entities/user.entity.d.ts +0 -74
  442. package/dist/database/entities/user.entity.d.ts.map +0 -1
  443. package/dist/database/entities/user.entity.js +0 -280
  444. package/dist/database/entities/user.entity.js.map +0 -1
  445. package/dist/database/index.d.ts +0 -2
  446. package/dist/database/index.d.ts.map +0 -1
  447. package/dist/database/index.js +0 -18
  448. package/dist/database/index.js.map +0 -1
  449. package/dist/database/migrations/1770706648232-initialMigration.d.ts +0 -7
  450. package/dist/database/migrations/1770706648232-initialMigration.d.ts.map +0 -1
  451. package/dist/database/migrations/1770706648232-initialMigration.js.map +0 -1
  452. package/dist/database/seeder/base.seed.d.ts +0 -19
  453. package/dist/database/seeder/base.seed.d.ts.map +0 -1
  454. package/dist/database/seeder/base.seed.js +0 -83
  455. package/dist/database/seeder/base.seed.js.map +0 -1
  456. package/dist/database/seeder/config/seeder.config.d.ts +0 -7
  457. package/dist/database/seeder/config/seeder.config.d.ts.map +0 -1
  458. package/dist/database/seeder/config/seeder.config.js +0 -21
  459. package/dist/database/seeder/config/seeder.config.js.map +0 -1
  460. package/dist/database/seeder/errors/seeder.error.d.ts +0 -11
  461. package/dist/database/seeder/errors/seeder.error.d.ts.map +0 -1
  462. package/dist/database/seeder/errors/seeder.error.js +0 -27
  463. package/dist/database/seeder/errors/seeder.error.js.map +0 -1
  464. package/dist/database/seeder/seed-runner.d.ts +0 -2
  465. package/dist/database/seeder/seed-runner.d.ts.map +0 -1
  466. package/dist/database/seeder/seed-runner.js +0 -157
  467. package/dist/database/seeder/seed-runner.js.map +0 -1
  468. package/dist/database/seeder/seeds/city.seed.d.ts +0 -8
  469. package/dist/database/seeder/seeds/city.seed.d.ts.map +0 -1
  470. package/dist/database/seeder/seeds/city.seed.js +0 -62
  471. package/dist/database/seeder/seeds/city.seed.js.map +0 -1
  472. package/dist/database/seeder/seeds/country.seed.d.ts +0 -8
  473. package/dist/database/seeder/seeds/country.seed.d.ts.map +0 -1
  474. package/dist/database/seeder/seeds/country.seed.js +0 -54
  475. package/dist/database/seeder/seeds/country.seed.js.map +0 -1
  476. package/dist/database/seeder/seeds/currency.seed.d.ts +0 -8
  477. package/dist/database/seeder/seeds/currency.seed.d.ts.map +0 -1
  478. package/dist/database/seeder/seeds/currency.seed.js +0 -50
  479. package/dist/database/seeder/seeds/currency.seed.js.map +0 -1
  480. package/dist/database/seeder/seeds/department.seed.d.ts +0 -8
  481. package/dist/database/seeder/seeds/department.seed.d.ts.map +0 -1
  482. package/dist/database/seeder/seeds/department.seed.js +0 -48
  483. package/dist/database/seeder/seeds/department.seed.js.map +0 -1
  484. package/dist/database/seeder/seeds/permission.seed.d.ts +0 -8
  485. package/dist/database/seeder/seeds/permission.seed.d.ts.map +0 -1
  486. package/dist/database/seeder/seeds/permission.seed.js +0 -54
  487. package/dist/database/seeder/seeds/permission.seed.js.map +0 -1
  488. package/dist/database/seeder/seeds/role-permission.seed.d.ts +0 -8
  489. package/dist/database/seeder/seeds/role-permission.seed.d.ts.map +0 -1
  490. package/dist/database/seeder/seeds/role-permission.seed.js +0 -47
  491. package/dist/database/seeder/seeds/role-permission.seed.js.map +0 -1
  492. package/dist/database/seeder/seeds/role.seed.d.ts +0 -8
  493. package/dist/database/seeder/seeds/role.seed.d.ts.map +0 -1
  494. package/dist/database/seeder/seeds/role.seed.js +0 -52
  495. package/dist/database/seeder/seeds/role.seed.js.map +0 -1
  496. package/dist/database/seeder/seeds/user-role.seed.d.ts +0 -8
  497. package/dist/database/seeder/seeds/user-role.seed.d.ts.map +0 -1
  498. package/dist/database/seeder/seeds/user-role.seed.js +0 -66
  499. package/dist/database/seeder/seeds/user-role.seed.js.map +0 -1
  500. package/dist/database/seeder/seeds/user.seed.d.ts +0 -8
  501. package/dist/database/seeder/seeds/user.seed.d.ts.map +0 -1
  502. package/dist/database/seeder/seeds/user.seed.js +0 -110
  503. package/dist/database/seeder/seeds/user.seed.js.map +0 -1
  504. package/dist/index.d.ts.map +0 -1
  505. package/dist/index.js.map +0 -1
  506. package/dist/scripts/create-schema.d.ts +0 -2
  507. package/dist/scripts/create-schema.d.ts.map +0 -1
  508. package/dist/scripts/create-schema.js +0 -77
  509. package/dist/scripts/create-schema.js.map +0 -1
  510. package/dist/tsconfig.build.tsbuildinfo +0 -1
@@ -0,0 +1,69 @@
1
+ // ivm-api-core/src/modules/invoice/entities/invoice-item.entity.ts
2
+ import { Entity, Column, ManyToOne, JoinColumn, Index } from 'typeorm';
3
+ import { BaseEntity } from './base.entity';
4
+ import { Invoice } from './invoice.entity';
5
+ import { CreditNoteEntity } from './credit-note.entity';
6
+
7
+ export enum InvoiceItemType {
8
+ TASK = 'task',
9
+ EXPENSE = 'expense',
10
+ SUMMARY = 'summary',
11
+ TIMESHEET_EVENT = 'timesheet_event',
12
+ FIXED_ITEM = 'fixed_item',
13
+ }
14
+
15
+ @Entity({ name: 'invoice_items', schema: 'core' })
16
+ @Index('idx_invoice_items_invoice_id', ['invoiceId'])
17
+ @Index('idx_invoice_items_item', ['itemType', 'itemId'])
18
+ export class InvoiceItem extends BaseEntity {
19
+ @Column({ name: 'invoice_id' })
20
+ invoiceId: number;
21
+
22
+ @Column({
23
+ name: 'item_type',
24
+ type: 'enum',
25
+ enum: InvoiceItemType
26
+ })
27
+ itemType: InvoiceItemType;
28
+
29
+ @Column({ name: 'item_id' })
30
+ itemId: number;
31
+
32
+ @Column({
33
+ type: 'decimal',
34
+ precision: 10,
35
+ scale: 2,
36
+ name: 'amount'
37
+ })
38
+ amount: number;
39
+
40
+ @Column({ type: 'decimal', name: 'credit_amount', nullable: true })
41
+ credit_amount: number | null;
42
+
43
+ @Column({ type: 'decimal', name: 'balance_amount', nullable: true })
44
+ balance_amount: number | null;
45
+
46
+ @Column({ type: 'int', name: 'credit_note_id', nullable: true })
47
+ credit_note_id: number | null;
48
+
49
+ @ManyToOne(() => CreditNoteEntity, (creditNote) => creditNote.invoiceItems)
50
+ @JoinColumn({ name: 'credit_note_id' })
51
+ creditNote: CreditNoteEntity;
52
+
53
+ // Relationships
54
+ @ManyToOne(() => Invoice, { onDelete: 'CASCADE' })
55
+ @JoinColumn({ name: 'invoice_id' })
56
+ invoice: Invoice;
57
+
58
+ // @ManyToOne(() => Task, { nullable: true, onDelete: 'CASCADE' })
59
+ // @JoinColumn({ name: 'item_id' })
60
+ // task?: Task;
61
+
62
+ // @ManyToOne(() => Expense, { nullable: true, onDelete: 'CASCADE' })
63
+ // @JoinColumn({ name: 'item_id' })
64
+ // expense?: Expense;
65
+
66
+ // @ManyToOne(() => TimesheetSummary, { nullable: true, onDelete: 'CASCADE' })
67
+ // @JoinColumn({ name: 'item_id' })
68
+ // summary?: TimesheetSummary;
69
+ }
@@ -0,0 +1,118 @@
1
+ import { Entity, Column, ManyToOne, JoinColumn, Index } from 'typeorm';
2
+ import { BaseEntity } from './base.entity';
3
+ import { User } from './user.entity';
4
+ import { LeaveType } from './leave-type.entity';
5
+ import { Entitlement } from './entitlement.entity';
6
+
7
+ export enum CreditFrequency {
8
+ MONTHLY = 'monthly',
9
+ QUARTERLY = 'quarterly',
10
+ HALF_YEARLY = 'half_yearly',
11
+ YEARLY = 'yearly',
12
+ }
13
+
14
+ @Entity({ name: 'leave_balances', schema: 'user' })
15
+ @Index(['userId', 'leaveTypeId', 'entitlementId'], { unique: true })
16
+ export class LeaveBalance extends BaseEntity {
17
+
18
+ @Column({ name: 'user_id' })
19
+ userId: number;
20
+
21
+ @Column({ name: 'leave_type_id' })
22
+ leaveTypeId: number;
23
+
24
+ @Column({ name: 'entitlement_id' })
25
+ entitlementId: number;
26
+
27
+ @Column({ name: 'total_entitled', type: 'decimal', precision: 10, scale: 2, default: 0 })
28
+ totalEntitled: number;
29
+
30
+ @Column({ name: 'balance', type: 'decimal', precision: 10, scale: 2, default: 0 })
31
+ balance: number;
32
+
33
+ @Column({ name: 'used_balance', type: 'decimal', precision: 10, scale: 2, default: 0 })
34
+ usedBalance: number;
35
+
36
+ @Column({ name: 'pending_balance', type: 'decimal', precision: 10, scale: 2, default: 0 })
37
+ pendingBalance: number;
38
+
39
+ @Column({ name: 'carried_forward', type: 'decimal', precision: 10, scale: 2, default: 0 })
40
+ carriedForward: number;
41
+
42
+ @Column({ name: 'accrual_rate', type: 'decimal', precision: 10, scale: 4 })
43
+ accrualRate: number; // entitlements/12 for monthly accrual
44
+
45
+ @Column({ name: 'credit_frequency', type: 'enum', enum: CreditFrequency, default: CreditFrequency.MONTHLY })
46
+ creditFrequency: CreditFrequency;
47
+
48
+ @Column({ name: 'last_credited_date', type: 'date', nullable: true })
49
+ lastCreditedDate: Date;
50
+
51
+ @Column({ name: 'next_credit_date', type: 'date' })
52
+ nextCreditDate: Date;
53
+
54
+ @Column({ name: 'policy_start_date', type: 'date' })
55
+ policyStartDate: Date;
56
+
57
+ @Column({ name: 'policy_end_date', type: 'date' })
58
+ policyEndDate: Date;
59
+
60
+ @Column({ name: 'is_active', default: true })
61
+ isActive: boolean;
62
+
63
+ @Column({ name: 'cron_enabled', default: true })
64
+ cronEnabled: boolean;
65
+
66
+ @Column({ name: 'last_cron_run', type: 'timestamp', nullable: true })
67
+ lastCronRun: Date;
68
+
69
+ // Relationships
70
+ @ManyToOne(() => User, user => user.id)
71
+ @JoinColumn({ name: 'user_id' })
72
+ user: User;
73
+
74
+ @ManyToOne(() => LeaveType, leaveType => leaveType.id)
75
+ @JoinColumn({ name: 'leave_type_id' })
76
+ leaveType: LeaveType;
77
+
78
+ @ManyToOne(() => Entitlement, entitlement => entitlement.id)
79
+ @JoinColumn({ name: 'entitlement_id' })
80
+ entitlement: Entitlement;
81
+
82
+ // Helper methods
83
+ calculateAvailableBalance(): number {
84
+ return this.balance - this.usedBalance - this.pendingBalance;
85
+ }
86
+
87
+ canTakeLeave(requestedDays: number): boolean {
88
+ return this.calculateAvailableBalance() >= requestedDays;
89
+ }
90
+
91
+ creditLeave(amount: number): void {
92
+ this.balance = Number((Number(this.balance) + Number(amount)).toFixed(2));
93
+ this.lastCreditedDate = new Date();
94
+ this.calculateNextCreditDate();
95
+ }
96
+
97
+ debitLeave(amount: number): void {
98
+ this.usedBalance += amount;
99
+ }
100
+
101
+ private calculateNextCreditDate(): void {
102
+ const currentDate = new Date();
103
+ switch (this.creditFrequency) {
104
+ case CreditFrequency.MONTHLY:
105
+ this.nextCreditDate = new Date(currentDate.getFullYear(), currentDate.getMonth() + 1, 1);
106
+ break;
107
+ case CreditFrequency.QUARTERLY:
108
+ this.nextCreditDate = new Date(currentDate.getFullYear(), currentDate.getMonth() + 3, 1);
109
+ break;
110
+ case CreditFrequency.HALF_YEARLY:
111
+ this.nextCreditDate = new Date(currentDate.getFullYear(), currentDate.getMonth() + 6, 1);
112
+ break;
113
+ case CreditFrequency.YEARLY:
114
+ this.nextCreditDate = new Date(currentDate.getFullYear() + 1, currentDate.getMonth(), 1);
115
+ break;
116
+ }
117
+ }
118
+ }
@@ -0,0 +1,155 @@
1
+ import { Entity, Column, ManyToOne, JoinColumn } from 'typeorm';
2
+ import { User } from './user.entity';
3
+ import { LeaveType } from './leave-type.entity';
4
+ import { LeaveBalance } from './leave-balance.entity';
5
+ import { BaseEntity } from './base.entity';
6
+
7
+ export enum LeaveRequestStatus {
8
+ PENDING = 'pending',
9
+ APPROVED = 'approved',
10
+ REJECTED = 'rejected',
11
+ CANCELLED = 'cancelled',
12
+ CANCELATION_REQUESTED = 'cancelation_requested',
13
+ }
14
+
15
+ export enum DaysType {
16
+ FULL_DAY = 'full_day',
17
+ FIRST_HALF = 'first_half',
18
+ SECOND_HALF = 'second_half',
19
+ }
20
+
21
+ export enum HalfDayPosition {
22
+ START_DATE = 'start_date',
23
+ END_DATE = 'end_date',
24
+ NONE = 'none',
25
+ }
26
+
27
+ export enum ApprovalFlowType {
28
+ REPORTING_MANAGER_BASED = 'REPORTING_MANAGER_BASED',
29
+ HIERARCHY_BASED='HIERARCHY_BASED'
30
+ }
31
+
32
+ @Entity({ name: 'leave_requests', schema: 'user' })
33
+ export class LeaveRequest extends BaseEntity {
34
+
35
+ @Column({ name: 'user_id' })
36
+ userId: number;
37
+
38
+ @Column({ name: 'leave_type_id' })
39
+ leaveTypeId: number;
40
+
41
+ @Column({ name: 'leave_balance_id', nullable: true })
42
+ leaveBalanceId: number;
43
+
44
+ @Column({ type: 'date', name: 'start_date' })
45
+ startDate: Date;
46
+
47
+ @Column({ type: 'date', name: 'end_date' })
48
+ endDate: Date;
49
+
50
+ @Column({ type: 'enum', enum: DaysType, name: 'start_date_type', default: DaysType.FULL_DAY })
51
+ startDateType: DaysType;
52
+
53
+ @Column({ type: 'enum', enum: DaysType, name: 'end_date_type', default: DaysType.FULL_DAY })
54
+ endDateType: DaysType;
55
+
56
+ @Column({ type: 'decimal', precision: 10, scale: 2, name: 'total_days' })
57
+ totalDays: number;
58
+
59
+ @Column({ type: 'enum', enum: DaysType, name: 'days_type', default: DaysType.FULL_DAY })
60
+ daysType: DaysType;
61
+
62
+ @Column({ type: 'varchar', length: 500, name: 'reason', nullable: true })
63
+ reason: string;
64
+
65
+ @Column({ type: 'varchar', length: 500, name: 'cancel_reason', nullable: true })
66
+ cancelReason: string;
67
+
68
+ @Column({ type: 'enum', enum: LeaveRequestStatus, name: 'status', default: LeaveRequestStatus.PENDING })
69
+ status: LeaveRequestStatus;
70
+
71
+ @Column({ name: 'approver_id', nullable: true })
72
+ approverId: number;
73
+
74
+ @Column({ type: 'varchar', length: 500, name: 'remarks', nullable: true })
75
+ remarks: string;
76
+
77
+ @Column({ name: 'attachment_url', nullable: true })
78
+ attachmentUrl: string;
79
+
80
+ @Column({ name: 'attachment_preview_url', nullable: true })
81
+ attachmentPreviewUrl: string;
82
+
83
+ @Column({ type: 'varchar', length: 500, name: 'reject_reason', nullable: true })
84
+ rejectReason: string;
85
+
86
+ @Column({ type: 'timestamp', name: 'applied_at', default: () => 'CURRENT_TIMESTAMP' })
87
+ appliedAt: Date;
88
+
89
+ @Column({ type: 'timestamp', name: 'approved_at', nullable: true })
90
+ approvedAt: Date;
91
+
92
+ @Column({ type: 'timestamp', name: 'cancelled_at', nullable: true })
93
+ cancelledAt: Date;
94
+
95
+ @Column({ type: 'timestamp', name: 'cancelation_requested_at', nullable: true })
96
+ cancelationRequestedAt: Date;
97
+
98
+ @Column({ type: 'timestamp', name: 'rejected_at', nullable: true })
99
+ rejectedAt: Date;
100
+
101
+ @Column({ type: 'boolean', name: 'is_balance_debited', default: false })
102
+ isBalanceDebited: boolean;
103
+
104
+ @Column({ type: 'enum', enum: HalfDayPosition, name: 'half_day_position', default: HalfDayPosition.NONE })
105
+ halfDayPosition: HalfDayPosition;
106
+
107
+ @Column({ type: 'enum', enum: ApprovalFlowType, name: 'approval_flow_type', nullable: true })
108
+ approvalFlowType: ApprovalFlowType | null;
109
+
110
+ // Relationships
111
+ @ManyToOne(() => User)
112
+ @JoinColumn({ name: 'user_id' })
113
+ user: User;
114
+
115
+ @ManyToOne(() => LeaveType, leaveType => leaveType.leaveRequests)
116
+ @JoinColumn({ name: 'leave_type_id' })
117
+ leaveType: LeaveType;
118
+
119
+ @ManyToOne(() => LeaveBalance)
120
+ @JoinColumn({ name: 'leave_balance_id' })
121
+ leaveBalance: LeaveBalance;
122
+
123
+ @ManyToOne(() => User)
124
+ @JoinColumn({ name: 'approver_id' })
125
+ approver: User;
126
+
127
+ // Helper methods
128
+ isPending(): boolean {
129
+ return this.status === LeaveRequestStatus.PENDING;
130
+ }
131
+
132
+ isApproved(): boolean {
133
+ return this.status === LeaveRequestStatus.APPROVED;
134
+ }
135
+
136
+ isRejected(): boolean {
137
+ return this.status === LeaveRequestStatus.REJECTED;
138
+ }
139
+
140
+ isCancelled(): boolean {
141
+ return this.status === LeaveRequestStatus.CANCELLED;
142
+ }
143
+
144
+ canBeApproved(): boolean {
145
+ return this.status === LeaveRequestStatus.PENDING;
146
+ }
147
+
148
+ canBeRejected(): boolean {
149
+ return this.status === LeaveRequestStatus.PENDING;
150
+ }
151
+
152
+ canBeCancelled(): boolean {
153
+ return this.status === LeaveRequestStatus.PENDING || this.status === LeaveRequestStatus.APPROVED;
154
+ }
155
+ }
@@ -0,0 +1,37 @@
1
+ import { Entity, Column, OneToMany } from 'typeorm';
2
+ import { LeaveRequest } from './leave-request.entity';
3
+ import { BaseEntity } from './base.entity';
4
+
5
+ @Entity({ name: 'leave_types', schema: 'user' })
6
+ export class LeaveType extends BaseEntity{
7
+
8
+ @Column({ unique: true, name: 'name', nullable: true })
9
+ name: string;
10
+
11
+ @Column({ name: 'leave_type_slug', nullable: true })
12
+ leaveTypeSlug: string;
13
+
14
+ @Column({ unique: true, name: 'code', nullable: true })
15
+ code: string;
16
+
17
+ @Column({ name: 'description', nullable: true })
18
+ description: string;
19
+
20
+ @Column({ default: true, name: 'is_active', nullable: true })
21
+ isActive: boolean;
22
+
23
+ @Column({ type: 'boolean', name: 'is_entitlement_situational', default: false, nullable: true })
24
+ isEntitlementSituational: boolean;
25
+
26
+ @Column({ type: 'varchar', length: 20, name: 'entitlement_frequency', nullable:true })
27
+ entitlementFrequency: string|null;
28
+
29
+ @Column({ type: 'int', name: 'no_of_leaves', nullable: true })
30
+ noOfLeaves: number;
31
+
32
+ @Column({ type: 'boolean', name: 'allow_carry_forward', default: false, nullable: true })
33
+ allowCarryForward: boolean;
34
+
35
+ @OneToMany(() => LeaveRequest, leaveRequest => leaveRequest.leaveType)
36
+ leaveRequests: LeaveRequest[];
37
+ }
@@ -0,0 +1,21 @@
1
+ import { Entity, Column, ManyToOne, JoinColumn } from 'typeorm';
2
+ import { Matter } from './matter.entity';
3
+ import { BaseEntity } from './base.entity';
4
+ import { Tag } from './tag.entity';
5
+
6
+ @Entity({ name: 'matters_tags', schema: 'core' })
7
+ export class MatterTag extends BaseEntity {
8
+ @Column({ name: 'matterId' })
9
+ matterId: number;
10
+
11
+ @Column({ name: 'tagId' })
12
+ tagId: number;
13
+
14
+ @ManyToOne(() => Matter, matter => matter.mattersLabel)
15
+ @JoinColumn({ name: 'matterId' })
16
+ matter: Matter;
17
+
18
+ @ManyToOne(() => Tag, tag => tag.mattersLabel)
19
+ @JoinColumn({ name: 'tagId' })
20
+ tag: Tag;
21
+ }
@@ -0,0 +1,21 @@
1
+ import { Entity, Column, Index } from 'typeorm';
2
+ import { BaseEntity } from './base.entity';
3
+
4
+ export enum VIEW_TYPE{
5
+ KANBAN_VIEW = 'kanban_view',
6
+ LIST_VIEW = 'list_view',
7
+ }
8
+
9
+ @Entity({ name: 'matter_task_view_filters', schema: 'core' })
10
+ @Index(['userId'], { unique: true })
11
+ export class MatterTaskViewFilter extends BaseEntity {
12
+ @Column({ name: 'user_id' })
13
+ userId: number;
14
+
15
+ @Column({ name: 'view_type', length: 100, nullable: false })
16
+ viewType: VIEW_TYPE;
17
+
18
+ @Column({ name: 'filters', type: 'jsonb', nullable: true })
19
+ filters: any;
20
+ }
21
+
@@ -0,0 +1,30 @@
1
+ import { Entity, Column, ManyToOne, JoinColumn } from 'typeorm';
2
+ import { Matter } from './matter.entity';
3
+ import { BaseEntity } from './base.entity';
4
+ import { User } from './user.entity';
5
+
6
+ @Entity({ name: 'matter_team_members', schema: 'core' })
7
+ export class MatterTeamMember extends BaseEntity{
8
+ @Column({ name: 'matter_id' })
9
+ matterId: number;
10
+
11
+ @Column({ name: 'user_id' })
12
+ userId: number;
13
+
14
+ @Column({
15
+ name: 'hourly_rate',
16
+ type: 'numeric',
17
+ precision: 10,
18
+ scale: 2,
19
+ nullable: true,
20
+ })
21
+ hourlyRate: number | null;
22
+
23
+ @ManyToOne(() => Matter, matter => matter.teamMembers)
24
+ @JoinColumn({ name: 'matter_id' })
25
+ matter: Matter;
26
+
27
+ @ManyToOne(() => User, user => user.teamMembers)
28
+ @JoinColumn({ name: 'user_id' })
29
+ user: User;
30
+ }
@@ -0,0 +1,156 @@
1
+ import { Entity, Column, ManyToOne, OneToMany, JoinColumn } from 'typeorm';
2
+ import { BaseEntity } from './base.entity';
3
+ import { Client } from './client.entity';
4
+ import { Task } from './task.entity';
5
+ import { MatterTeamMember } from './matter-team-member.entity';
6
+ import { MatterTag } from './matter-tag.entity';
7
+ import { Template } from './template.entity';
8
+ import { Invoice } from './invoice.entity';
9
+ import { User } from './user.entity';
10
+ import { TimesheetEvent } from './timesheet-event.entity';
11
+ import { Expense } from './expense.entity';
12
+ import { Currency } from './currency.entity';
13
+
14
+ export enum ApprovalStatus {
15
+ PENDING_APPROVAL = 'pending_approval',
16
+ APPROVED = 'approved',
17
+ REJECTED = 'rejected',
18
+ AUTO_REJECTED = 'auto_rejected',
19
+ }
20
+
21
+ export enum OvertimeFeeType {
22
+ HOURLY_RATE = 'hourly_rate',
23
+ FIXED_RATE = 'fixed_rate',
24
+ }
25
+ @Entity({ name: 'matters', schema: 'core' })
26
+ export class Matter extends BaseEntity {
27
+ @Column({ name: 'client_id' })
28
+ clientId: number;
29
+
30
+ @Column({ length: 200 })
31
+ title: string;
32
+
33
+ @Column('text', { array: true, name: 'billing_mode' })
34
+ billingMode: string[];
35
+
36
+ @Column({ type: 'decimal', precision: 10, scale: 2, name: 'standard_fee' })
37
+ standardFee: number;
38
+
39
+ @Column({ name: 'overtime_fee_type', nullable: true })
40
+ overtimeFeeType: OvertimeFeeType;
41
+
42
+ @Column({
43
+ type: 'decimal',
44
+ precision: 10,
45
+ scale: 2,
46
+ name: 'overtime_fixed_rate',
47
+ nullable: true,
48
+ })
49
+ overtimeFixedRate: number;
50
+
51
+ @Column({
52
+ type: 'decimal',
53
+ precision: 10,
54
+ scale: 2,
55
+ name: 'overtime_hourly_rate',
56
+ nullable: true,
57
+ })
58
+ overtimeHourlyRate: number;
59
+
60
+ @Column({ type: 'timestamp', name: 'startDate', nullable: true })
61
+ startDate: Date;
62
+
63
+ @Column({ type: 'timestamp', name: 'dueDate', nullable: true })
64
+ dueDate: Date;
65
+
66
+ @Column({ name: 'departmentId', nullable: true })
67
+ departmentId: number;
68
+
69
+ @Column({ name: 'userId', nullable: true })
70
+ userId: number;
71
+
72
+ @ManyToOne(() => User)
73
+ @JoinColumn({ name: 'userId' })
74
+ user: User;
75
+
76
+ @Column({ type: 'text', nullable: true })
77
+ notes: string;
78
+
79
+ @Column({ name: 'created_for', nullable: true })
80
+ createdFor: number;
81
+
82
+ @Column({ name: 'templateId', nullable: true })
83
+ templateId: number | null;
84
+
85
+ @Column({ name: 'fileId', nullable: true })
86
+ fileId: number;
87
+
88
+ @Column({ length: 20, nullable: true })
89
+ status: string;
90
+
91
+ @Column({ length: 20, nullable: true })
92
+ reason_for_matter: string;
93
+
94
+ @Column({ name: 'approval_status', nullable: true, enum: ApprovalStatus })
95
+ approvalStatus: ApprovalStatus;
96
+
97
+ @Column({ name: 'reject_reason', nullable: true })
98
+ rejectReason: string;
99
+
100
+ @Column({ length: 10, nullable: true })
101
+ priority: string;
102
+
103
+ @Column({ length: 10, nullable: true })
104
+ riskLevel: string;
105
+
106
+ @Column({ name: 'elId', nullable: true })
107
+ elId: number;
108
+
109
+ @Column({ name: 'signatureId', nullable: true })
110
+ signatureId: number;
111
+
112
+ @Column({ nullable: true })
113
+ progress: number;
114
+
115
+ @Column({ type: 'jsonb', nullable: true })
116
+ flowaceData: any;
117
+
118
+ @Column({ name: 'currency_id', nullable: true })
119
+ currencyId: number | null;
120
+
121
+ @Column({ name: 'is_archived', default: false })
122
+ isArchived: boolean;
123
+
124
+ @ManyToOne(() => Client)
125
+ @JoinColumn({ name: 'client_id' })
126
+ client: Client;
127
+
128
+ @Column({ name: 'partnerId', nullable: true })
129
+ partnerId: number;
130
+
131
+ @ManyToOne(() => Template)
132
+ @JoinColumn({ name: 'templateId' })
133
+ template: Template;
134
+
135
+ @OneToMany(() => MatterTeamMember, (teamMember) => teamMember.matter)
136
+ teamMembers: MatterTeamMember[];
137
+
138
+ @OneToMany(() => Task, (task) => task.matter)
139
+ tasks: Task[];
140
+
141
+ @OneToMany(() => MatterTag, (matterTag) => matterTag.matter)
142
+ mattersLabel: MatterTag[];
143
+
144
+ @OneToMany(() => Expense, (expense) => expense.matter)
145
+ expenses: Expense[];
146
+
147
+ @OneToMany(() => Invoice, (invoice) => invoice.matter)
148
+ invoices: Invoice[];
149
+
150
+ @ManyToOne(() => Currency, (currency) => currency.matters)
151
+ @JoinColumn({ name: 'currency_id' })
152
+ currency: Currency;
153
+
154
+ @OneToMany(() => TimesheetEvent, (timesheetEvent) => timesheetEvent.matter)
155
+ timesheetEvents: TimesheetEvent[];
156
+ }
@@ -0,0 +1,72 @@
1
+ import { Entity, Column, ManyToOne, JoinColumn, Check } from 'typeorm';
2
+ import { BaseEntity } from './base.entity';
3
+ import { Invoice } from './invoice.entity';
4
+ import { User } from './user.entity';
5
+
6
+ @Entity({ name: 'payments', schema: 'core'})
7
+ @Check(`payment_mode IN ('Bank Transfer', 'Card', 'Cash', 'Cheque')`)
8
+ @Check(`payment_status IN ('Partially Paid', 'Full Payment', 'Overdue', 'Cancelled', 'Refunded')`)
9
+ export class Payment extends BaseEntity {
10
+ @Column({ name: 'invoice_id', type: 'integer' })
11
+ invoiceId: number;
12
+
13
+ @Column({ name: 'amount', type: 'decimal', precision: 10, scale: 2, nullable: true })
14
+ amount: number;
15
+
16
+ @Column({ name: 'payment_date', type: 'timestamp' })
17
+ paymentDate: Date;
18
+
19
+ @Column({ name: 'confirmed_by', type: 'integer', nullable: true })
20
+ confirmedBy: number;
21
+
22
+ @Column({ name: 'transaction_reference_number', type: 'varchar', length: 255, nullable: true })
23
+ transactionReferenceNumber: string;
24
+
25
+ @Column({ name: 'account_holder_name', type: 'varchar', length: 255, nullable: true })
26
+ accountHolderName: string;
27
+
28
+ @Column({ name: 'account_number', type: 'varchar', length: 255, nullable: true })
29
+ accountNumber: string;
30
+
31
+ @Column({ name: 'received_amount', type: 'decimal', precision: 10, scale: 2, nullable: true })
32
+ receivedAmount: number;
33
+
34
+ @Column({ name: 'is_tds_applicable', type: 'boolean', default: false })
35
+ isTdsApplicable: boolean;
36
+
37
+ @Column({ name: 'tds_amount', type: 'decimal', precision: 10, scale: 2, nullable: true })
38
+ tdsAmount: number;
39
+
40
+ @Column({ name: 'tds_percentage', type: 'decimal', precision: 10, scale: 2, nullable: true })
41
+ tdsPercentage: number;
42
+
43
+ @Column({ name: 'total_payment_recorded', type: 'decimal', precision: 10, scale: 2, nullable: true })
44
+ totalPaymentRecorded: number;
45
+
46
+ @Column({ name: 'payment_mode', type: 'varchar', length: 50 })
47
+ paymentMode: 'Bank Transfer' | 'Card' | 'Cash' | 'Cheque';
48
+
49
+ @Column({ name: 'payment_status', type: 'varchar', length: 50 })
50
+ paymentStatus: 'Partially Paid' | 'Full Payment' | 'Overdue' | 'Cancelled' | 'Refunded';
51
+
52
+ @Column({ name: 'invoice_no', type: 'varchar', nullable: true })
53
+ invoiceNo: string;
54
+
55
+ // QuickBooks Integration Fields
56
+ @Column({ type: 'varchar', length: 255, nullable: true, name: 'quickbooks_id' })
57
+ quickbooksId: string;
58
+
59
+ @Column({ type: 'varchar', length: 50, nullable: true, name: 'quickbooks_sync_token' })
60
+ quickbooksSyncToken: string;
61
+
62
+ @Column({ type: 'timestamp', nullable: true, name: 'last_synced_at' })
63
+ lastSyncedAt: Date;
64
+
65
+ @ManyToOne(() => User, { onDelete: 'SET NULL', onUpdate: 'CASCADE' })
66
+ @JoinColumn({ name: 'confirmed_by' })
67
+ user: User;
68
+
69
+ @ManyToOne(() => Invoice, { onDelete: 'CASCADE', onUpdate: 'CASCADE' })
70
+ @JoinColumn({ name: 'invoice_id' })
71
+ invoice: Invoice;
72
+ }