@stssocialst-stp/fe-payroll 0.3.5 → 0.3.6

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/index.js CHANGED
@@ -762,7 +762,12 @@ var messages_en = {
762
762
  "payroll.bistp.status.pending": "Sent to Bank",
763
763
  "payroll.bistp.status.skippedNib": "No NIB",
764
764
  "payroll.bistp.status.sendFailed": "Send Failed",
765
+ "payroll.bistp.status.enviados": "Sent to BISTP",
765
766
  "payroll.bistp.progress": "BISTP Progress",
767
+ "payroll.async.generating": "Generating beneficiaries in background...",
768
+ "payroll.async.createdSoFar": "{benefitCount} created so far",
769
+ "payroll.async.note": "This process may take a few minutes. You can close this page - the process continues in the background.",
770
+ "payroll.async.timedOut": "The background generation process took too long. Please refresh this page to check the current status.",
766
771
  "payroll.route.beneficiariesManagement": "Beneficiary Management",
767
772
  "payroll.beneficiaries.management.title": "Beneficiary Management",
768
773
  "payroll.beneficiaries.management.noPermission": "You do not have permission to manage beneficiaries.",
@@ -3211,6 +3216,99 @@ var mapDispatchToProps$b = function mapDispatchToProps(dispatch) {
3211
3216
  };
3212
3217
  var PaymentApproveForPaymentSummary = reactRedux.connect(mapStateToProps$b, mapDispatchToProps$b)(PaymentApproveForPaymentDialog);
3213
3218
 
3219
+ var POLL_INTERVAL_MS = 5000;
3220
+ var TIMEOUT_MS = 600000;
3221
+ var COUNT_QUERY = function COUNT_QUERY(payrollUuid) {
3222
+ return "\n {\n benefitConsumptionByPayroll(payrollUuid: \"".concat(payrollUuid, "\", first: 0, isDeleted: false) {\n totalCount\n }\n }\n");
3223
+ };
3224
+ function useAsyncPayrollProgress(_ref) {
3225
+ var payrollUuid = _ref.payrollUuid,
3226
+ payrollStatus = _ref.payrollStatus;
3227
+ var dispatch = reactRedux.useDispatch();
3228
+ var _useState = React.useState(0),
3229
+ _useState2 = _slicedToArray__default["default"](_useState, 2),
3230
+ benefitCount = _useState2[0],
3231
+ setBenefitCount = _useState2[1];
3232
+ var _useState3 = React.useState(false),
3233
+ _useState4 = _slicedToArray__default["default"](_useState3, 2),
3234
+ isGenerating = _useState4[0],
3235
+ setIsGenerating = _useState4[1];
3236
+ var _useState5 = React.useState(false),
3237
+ _useState6 = _slicedToArray__default["default"](_useState5, 2),
3238
+ timedOut = _useState6[0],
3239
+ setTimedOut = _useState6[1];
3240
+ var pollRef = React.useRef(null);
3241
+ var startTimeRef = React.useRef(null);
3242
+ var prevCountRef = React.useRef(0);
3243
+ var stableCountRounds = React.useRef(0);
3244
+ var stopPolling = React.useCallback(function () {
3245
+ if (pollRef.current) {
3246
+ clearInterval(pollRef.current);
3247
+ pollRef.current = null;
3248
+ }
3249
+ }, []);
3250
+ var fetchCount = React.useCallback(function () {
3251
+ if (!payrollUuid) return;
3252
+ dispatch(feCore.graphql(COUNT_QUERY(payrollUuid), 'POLL_BENEFIT_COUNT')).then(function (response) {
3253
+ var _response$payload$dat, _response$payload;
3254
+ var count = (_response$payload$dat = response === null || response === void 0 || (_response$payload = response.payload) === null || _response$payload === void 0 || (_response$payload = _response$payload.data) === null || _response$payload === void 0 || (_response$payload = _response$payload.benefitConsumptionByPayroll) === null || _response$payload === void 0 ? void 0 : _response$payload.totalCount) !== null && _response$payload$dat !== void 0 ? _response$payload$dat : 0;
3255
+ if (count === 0) {
3256
+ setBenefitCount(count);
3257
+ setIsGenerating(true);
3258
+ stableCountRounds.current = 0;
3259
+ prevCountRef.current = count;
3260
+ return;
3261
+ }
3262
+ setBenefitCount(count);
3263
+ if (count === prevCountRef.current) {
3264
+ stableCountRounds.current += 1;
3265
+ } else {
3266
+ stableCountRounds.current = 0;
3267
+ }
3268
+ prevCountRef.current = count;
3269
+ if (stableCountRounds.current >= 2) {
3270
+ setIsGenerating(false);
3271
+ stopPolling();
3272
+ }
3273
+ })["catch"](function () {
3274
+ setBenefitCount(function (c) {
3275
+ return Math.max(c, 0);
3276
+ });
3277
+ });
3278
+ }, [payrollUuid, dispatch, stopPolling]);
3279
+ React.useEffect(function () {
3280
+ var shouldPoll = payrollUuid && payrollStatus === 'PENDING_APPROVAL';
3281
+ if (shouldPoll && !pollRef.current) {
3282
+ setTimedOut(false);
3283
+ startTimeRef.current = Date.now();
3284
+ stableCountRounds.current = 0;
3285
+ prevCountRef.current = 0;
3286
+ fetchCount();
3287
+ pollRef.current = setInterval(function () {
3288
+ if (Date.now() - startTimeRef.current >= TIMEOUT_MS) {
3289
+ setIsGenerating(false);
3290
+ setTimedOut(true);
3291
+ stopPolling();
3292
+ return;
3293
+ }
3294
+ fetchCount();
3295
+ }, POLL_INTERVAL_MS);
3296
+ }
3297
+ if (!shouldPoll && pollRef.current) {
3298
+ setIsGenerating(false);
3299
+ stopPolling();
3300
+ }
3301
+ return function () {
3302
+ return stopPolling();
3303
+ };
3304
+ }, [payrollUuid, payrollStatus, fetchCount, stopPolling]);
3305
+ return {
3306
+ isGenerating: isGenerating,
3307
+ benefitCount: benefitCount,
3308
+ timedOut: timedOut
3309
+ };
3310
+ }
3311
+
3214
3312
  var useStyles$b = styles$7.makeStyles(function (theme) {
3215
3313
  return {
3216
3314
  paper: theme.paper.paper,
@@ -3257,12 +3355,64 @@ function PayrollTab(_ref) {
3257
3355
  var modulesManager = feCore.useModulesManager();
3258
3356
  var _useTranslations = feCore.useTranslations(MODULE_NAME, modulesManager),
3259
3357
  formatMessage = _useTranslations.formatMessage;
3358
+ var _useAsyncPayrollProgr = useAsyncPayrollProgress({
3359
+ payrollUuid: payrollUuid,
3360
+ payrollStatus: payroll === null || payroll === void 0 ? void 0 : payroll.status
3361
+ }),
3362
+ isGenerating = _useAsyncPayrollProgr.isGenerating,
3363
+ benefitCount = _useAsyncPayrollProgr.benefitCount,
3364
+ timedOut = _useAsyncPayrollProgr.timedOut;
3365
+ var _useState3 = React.useState(false),
3366
+ _useState4 = _slicedToArray__default["default"](_useState3, 2),
3367
+ generationComplete = _useState4[0],
3368
+ setGenerationComplete = _useState4[1];
3369
+ var _useState5 = React.useState(0),
3370
+ _useState6 = _slicedToArray__default["default"](_useState5, 2),
3371
+ refreshBenefitsKey = _useState6[0],
3372
+ setRefreshBenefitsKey = _useState6[1];
3373
+ React.useEffect(function () {
3374
+ if (!isGenerating && benefitCount > 0 && !generationComplete) {
3375
+ setGenerationComplete(true);
3376
+ setRefreshBenefitsKey(function (k) {
3377
+ return k + 1;
3378
+ });
3379
+ }
3380
+ }, [isGenerating, benefitCount, generationComplete]);
3260
3381
  var downloadPayrollData = function downloadPayrollData(payrollUuid, payrollName) {
3261
3382
  downloadPayroll(payrollUuid, payrollName);
3262
3383
  };
3263
3384
  return /*#__PURE__*/React__default["default"].createElement(core.Paper, {
3264
3385
  className: classes.paper
3386
+ }, (isGenerating || timedOut) && payrollUuid && !isPayrollFromFailedInvoices && /*#__PURE__*/React__default["default"].createElement(core.Grid, {
3387
+ container: true,
3388
+ spacing: 2,
3389
+ style: {
3390
+ padding: '16px'
3391
+ }
3265
3392
  }, /*#__PURE__*/React__default["default"].createElement(core.Grid, {
3393
+ item: true,
3394
+ xs: 12
3395
+ }, /*#__PURE__*/React__default["default"].createElement(core.Typography, {
3396
+ variant: "body1"
3397
+ }, timedOut ? formatMessage('payroll.async.timedOut') : formatMessage('payroll.async.generating')), !timedOut && /*#__PURE__*/React__default["default"].createElement(core.LinearProgress, {
3398
+ variant: "indeterminate",
3399
+ style: {
3400
+ marginTop: '8px'
3401
+ }
3402
+ }), /*#__PURE__*/React__default["default"].createElement(core.Typography, {
3403
+ variant: "caption",
3404
+ style: {
3405
+ display: 'block',
3406
+ marginTop: '4px'
3407
+ }
3408
+ }, !timedOut && formatMessage('payroll.async.createdSoFar', {
3409
+ benefitCount: benefitCount
3410
+ })), /*#__PURE__*/React__default["default"].createElement(core.Typography, {
3411
+ variant: "caption",
3412
+ style: {
3413
+ display: 'block'
3414
+ }
3415
+ }, !timedOut && formatMessage('payroll.async.note')))), /*#__PURE__*/React__default["default"].createElement(core.Grid, {
3266
3416
  container: true,
3267
3417
  className: "".concat(classes.tableTitle, " ").concat(classes.tabs)
3268
3418
  }, /*#__PURE__*/React__default["default"].createElement("div", {
@@ -3313,7 +3463,8 @@ function PayrollTab(_ref) {
3313
3463
  payrollUuid: payrollUuid,
3314
3464
  isInTask: isInTask,
3315
3465
  isPayrollFromFailedInvoices: isPayrollFromFailedInvoices,
3316
- payroll: payroll
3466
+ payroll: payroll,
3467
+ refreshBenefitsKey: refreshBenefitsKey
3317
3468
  }));
3318
3469
  }
3319
3470
 
@@ -5706,13 +5857,15 @@ function BenefitConsumptionsTabPanel(_ref2) {
5706
5857
  var value = _ref2.value,
5707
5858
  rights = _ref2.rights,
5708
5859
  payrollUuid = _ref2.payrollUuid,
5709
- isPayrollFromFailedInvoices = _ref2.isPayrollFromFailedInvoices;
5860
+ isPayrollFromFailedInvoices = _ref2.isPayrollFromFailedInvoices,
5861
+ refreshBenefitsKey = _ref2.refreshBenefitsKey;
5710
5862
  return /*#__PURE__*/React__default["default"].createElement(feCore.PublishedComponent, {
5711
5863
  pubRef: "policyHolder.TabPanel",
5712
5864
  module: "payroll",
5713
5865
  index: BENEFIT_CONSUMPTION_LIST_TAB_VALUE,
5714
5866
  value: value
5715
5867
  }, rights.includes(RIGHT_PAYROLL_SEARCH) && payrollUuid && /*#__PURE__*/React__default["default"].createElement(BenefitConsumptionSearcher$1, {
5868
+ key: refreshBenefitsKey,
5716
5869
  rights: rights,
5717
5870
  payrollUuid: payrollUuid,
5718
5871
  isPayrollFromFailedInvoices: isPayrollFromFailedInvoices