@stssocialst-stp/fe-payroll 0.3.4 → 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.",
@@ -932,10 +937,8 @@ function makePaymentForPayroll(payroll, clientMutationLabel) {
932
937
  return PERFORM_MUTATION(MUTATION_SERVICE.PAYROLL.MAKE_PAYMENT, payrollUuids, ACTION_TYPE.MAKE_PAYMENT_PAYROLL, clientMutationLabel);
933
938
  }
934
939
  function fetchBistpSummary(payrollId) {
935
- var query = "\n query ResumoPagamentos($payrollId: UUID!) {\n total: benefitConsumptionByPayroll(payrollUuid: $payrollId, first: 0) { totalCount }\n pendentes: benefitConsumptionByPayroll(payrollUuid: $payrollId, status: ACCEPTED, first: 0) { totalCount }\n enviados: benefitConsumptionByPayroll(payrollUuid: $payrollId, status: APPROVE_FOR_PAYMENT, first: 0) { totalCount }\n confirmados: benefitConsumptionByPayroll(payrollUuid: $payrollId, status: RECONCILED, first: 0) { totalCount }\n rejeitados: benefitConsumptionByPayroll(payrollUuid: $payrollId, status: REJECTED, first: 0) { totalCount }\n }\n ";
936
- return feCore.graphql(query, ACTION_TYPE.GET_BISTP_SUMMARY, {
937
- payrollId: payrollId
938
- });
940
+ var query = "\n {\n total: benefitConsumptionByPayroll(payrollUuid: \"".concat(payrollId, "\", first: 0) { totalCount }\n pendentes: benefitConsumptionByPayroll(payrollUuid: \"").concat(payrollId, "\", status: ACCEPTED, first: 0) { totalCount }\n enviados: benefitConsumptionByPayroll(payrollUuid: \"").concat(payrollId, "\", status: APPROVE_FOR_PAYMENT, first: 0) { totalCount }\n confirmados: benefitConsumptionByPayroll(payrollUuid: \"").concat(payrollId, "\", status: RECONCILED, first: 0) { totalCount }\n rejeitados: benefitConsumptionByPayroll(payrollUuid: \"").concat(payrollId, "\", status: REJECTED, first: 0) { totalCount }\n }\n ");
941
+ return feCore.graphql(query, ACTION_TYPE.GET_BISTP_SUMMARY);
939
942
  }
940
943
 
941
944
  var pageTitle = function pageTitle(item) {
@@ -3213,6 +3216,99 @@ var mapDispatchToProps$b = function mapDispatchToProps(dispatch) {
3213
3216
  };
3214
3217
  var PaymentApproveForPaymentSummary = reactRedux.connect(mapStateToProps$b, mapDispatchToProps$b)(PaymentApproveForPaymentDialog);
3215
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
+
3216
3312
  var useStyles$b = styles$7.makeStyles(function (theme) {
3217
3313
  return {
3218
3314
  paper: theme.paper.paper,
@@ -3259,12 +3355,64 @@ function PayrollTab(_ref) {
3259
3355
  var modulesManager = feCore.useModulesManager();
3260
3356
  var _useTranslations = feCore.useTranslations(MODULE_NAME, modulesManager),
3261
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]);
3262
3381
  var downloadPayrollData = function downloadPayrollData(payrollUuid, payrollName) {
3263
3382
  downloadPayroll(payrollUuid, payrollName);
3264
3383
  };
3265
3384
  return /*#__PURE__*/React__default["default"].createElement(core.Paper, {
3266
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
+ }
3267
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, {
3268
3416
  container: true,
3269
3417
  className: "".concat(classes.tableTitle, " ").concat(classes.tabs)
3270
3418
  }, /*#__PURE__*/React__default["default"].createElement("div", {
@@ -3315,7 +3463,8 @@ function PayrollTab(_ref) {
3315
3463
  payrollUuid: payrollUuid,
3316
3464
  isInTask: isInTask,
3317
3465
  isPayrollFromFailedInvoices: isPayrollFromFailedInvoices,
3318
- payroll: payroll
3466
+ payroll: payroll,
3467
+ refreshBenefitsKey: refreshBenefitsKey
3319
3468
  }));
3320
3469
  }
3321
3470
 
@@ -5708,13 +5857,15 @@ function BenefitConsumptionsTabPanel(_ref2) {
5708
5857
  var value = _ref2.value,
5709
5858
  rights = _ref2.rights,
5710
5859
  payrollUuid = _ref2.payrollUuid,
5711
- isPayrollFromFailedInvoices = _ref2.isPayrollFromFailedInvoices;
5860
+ isPayrollFromFailedInvoices = _ref2.isPayrollFromFailedInvoices,
5861
+ refreshBenefitsKey = _ref2.refreshBenefitsKey;
5712
5862
  return /*#__PURE__*/React__default["default"].createElement(feCore.PublishedComponent, {
5713
5863
  pubRef: "policyHolder.TabPanel",
5714
5864
  module: "payroll",
5715
5865
  index: BENEFIT_CONSUMPTION_LIST_TAB_VALUE,
5716
5866
  value: value
5717
5867
  }, rights.includes(RIGHT_PAYROLL_SEARCH) && payrollUuid && /*#__PURE__*/React__default["default"].createElement(BenefitConsumptionSearcher$1, {
5868
+ key: refreshBenefitsKey,
5718
5869
  rights: rights,
5719
5870
  payrollUuid: payrollUuid,
5720
5871
  isPayrollFromFailedInvoices: isPayrollFromFailedInvoices