{"version":3,"file":"UdpTransactionCustomPage.mjs","names":["React","useCallback","useMemo","useState","PageContainer","useTransactionEngine","TransactionUiActionTypeEnums","Form","FormSpy","ConfigService","apiMutate","useHandleAxiosSnackbar","useTranslation","UdpTransactionCustomPage","props","pageId","transactionTypeId","transactionUiActionType","formRef","refetchTransaction","transaction","transactionTypeTransactionActionId","setHasUnsavedChanges","onSubmitSuccess","refreshGridData","additionalPageParms","pageOnSubmitSuccess","setPageOnSubmitSuccess","getUiActionRenderParameters","getHiddenFields","getRequiredFields","getDisabledFields","handleErrorSnackbar","handleSuccessSnackbar","t","executeCreateTransactionAction","data","productV1ApiUrl","method","executeSaveChanges","transactionId","executeCreateRevision","executeSubmitCustomAction","executeSubmitActionApi","actionApiId","onSubmit","values","request","response","message","errorMessage","Render_Create_Transaction_Page","defaultValue","Render_Transaction_Details_Page","Render_Create_Revision_Page","status","apiResult","actionApiResult","isSuccessful","success","Error","error","current","form","restart","isFieldRequired","fieldName","requiredFields","includes","isFieldHidden","hiddenFields","isFieldDisabled","disabledFields","transactionPageId","dirty","refreshTransactionGrid","setOnSubmitSuccess"],"sources":["../../../../../src/udp/pages/UdpTransactionsPage/components/UdpTransactionCustomPage.jsx"],"sourcesContent":["import React, { useCallback, useMemo, useState } from 'react';\nimport { PageContainer } from '../../../../page/PageContainer';\nimport { useTransactionEngine } from '../../../../utilities/transactions/useTransactionEngine';\nimport { TransactionUiActionTypeEnums } from '../../../../enums';\nimport { Form, FormSpy } from '../../../../utilities/form';\nimport { ConfigService } from '@univerus/udp-react-stencil-component-library';\nimport { apiMutate } from '../../../../utilities';\nimport { useHandleAxiosSnackbar } from '../../../../utilities/apiHelpers';\nimport { useTranslation } from 'react-i18next';\n\nconst UdpTransactionCustomPage = (props) => {\n  const {\n    pageId,\n    transactionTypeId,\n    transactionUiActionType,\n    formRef,\n    refetchTransaction,\n    transaction,\n    transactionTypeTransactionActionId,\n    setHasUnsavedChanges,\n    onSubmitSuccess,\n    refreshGridData,\n    additionalPageParms = {}\n  } = props;\n\n  const [pageOnSubmitSuccess, setPageOnSubmitSuccess] = useState(null);\n\n  const {\n    getUiActionRenderParameters,\n    getHiddenFields,\n    getRequiredFields,\n    getDisabledFields\n  } = useTransactionEngine(transactionTypeId);\n\n  const { handleErrorSnackbar, handleSuccessSnackbar } =\n    useHandleAxiosSnackbar();\n  const { t } = useTranslation();\n\n  const executeCreateTransactionAction = useCallback(\n    async (data) =>\n      apiMutate(\n        ConfigService.productV1ApiUrl,\n        `udpTransaction/transactionType/${transactionTypeId}/create`,\n        {\n          method: 'post'\n        },\n        data\n      ),\n    [transactionTypeId]\n  );\n\n  const executeSaveChanges = useCallback(\n    async (data) =>\n      apiMutate(\n        ConfigService.productV1ApiUrl,\n        `udpTransaction/${transaction?.transactionId}/saveChanges`,\n        {\n          method: 'put'\n        },\n        data\n      ),\n    [transaction?.transactionId]\n  );\n\n  const executeCreateRevision = useCallback(\n    async (data) =>\n      apiMutate(\n        ConfigService.productV1ApiUrl,\n        `udpTransaction/${transaction?.transactionId}/createRevision`,\n        {\n          method: 'post'\n        },\n        data\n      ),\n    [transaction?.transactionId]\n  );\n\n  const executeSubmitCustomAction = useCallback(\n    async (data) =>\n      apiMutate(\n        ConfigService.productV1ApiUrl,\n        `udptransactiontypeTransactionAction/${transactionTypeTransactionActionId}/transaction/${transaction.transactionId}/submit`,\n        {\n          method: 'post'\n        },\n        data\n      ),\n    [transactionTypeTransactionActionId, transaction?.transactionId]\n  );\n\n  const executeSubmitActionApi = useCallback(\n    async (data, actionApiId) =>\n      apiMutate(\n        ConfigService.productV1ApiUrl,\n        `udpTransactionWorkflowActionApi/${actionApiId}/transaction/${transaction.transactionId}/submit`,\n        {\n          method: 'post'\n        },\n        data\n      ),\n    [transaction?.transactionId]\n  );\n\n  const onSubmit = useCallback(\n    async (values) => {\n      try {\n        const request = { data: values };\n        const actionApiId = transactionUiActionType\n          ? getUiActionRenderParameters(transactionUiActionType)?.actionApiId\n          : null;\n        let response = null;\n        let message = '';\n        let errorMessage = '';\n        if (\n          transactionUiActionType ===\n          TransactionUiActionTypeEnums.Render_Create_Transaction_Page\n        ) {\n          if (actionApiId) {\n            response = await executeSubmitActionApi(request, actionApiId);\n          } else {\n            response = await executeCreateTransactionAction(request);\n          }\n          message = t('transactions.sidesheet.createSuccess', {\n            defaultValue: 'Transaction has been created successfully'\n          });\n          errorMessage = t('transactions.sidesheet.createError', {\n            defaultValue: 'Error creating Transaction. Please try again later.'\n          });\n        } else if (\n          transactionUiActionType ===\n          TransactionUiActionTypeEnums.Render_Transaction_Details_Page\n        ) {\n          if (actionApiId) {\n            response = await executeSubmitActionApi(request, actionApiId);\n          } else {\n            response = await executeSaveChanges(request);\n          }\n          message = t('transactions.sidesheet.saveSuccess', {\n            defaultValue: 'Transaction has been saved successfully'\n          });\n          errorMessage = t('transactions.sidesheet.saveError', {\n            defaultValue: 'Error saving Transaction. Please try again later.'\n          });\n        } else if (\n          transactionUiActionType ===\n          TransactionUiActionTypeEnums.Render_Create_Revision_Page\n        ) {\n          if (actionApiId) {\n            response = await executeSubmitActionApi(request, actionApiId);\n          } else {\n            response = await executeCreateRevision(request);\n          }\n          message = t('transactions.sidesheet.revisionCreateSuccess', {\n            defaultValue: 'Revision has been created successfully'\n          });\n          errorMessage = t('transactions.sidesheet.revisionCreateError', {\n            defaultValue:\n              'Error creating revision for Transaction. Please try again later.'\n          });\n        } else if (!!transactionTypeTransactionActionId) {\n          response = await executeSubmitCustomAction(request);\n          message = t('transactions.sidesheet.actionSubmitSuccess', {\n            defaultValue: 'Action has been submitted successfully'\n          });\n          errorMessage = t('transactions.sidesheet.actionSubmitError', {\n            defaultValue:\n              'Error submitting action for Transaction. Please try again later.'\n          });\n        }\n\n        const { status, data } = response || {};\n        const apiResult = data?.actionApiResult;\n\n        if (status === 200) {\n          // Success condition: No actionApiResult OR actionApiResult says success is true\n          const isSuccessful = !apiResult || apiResult.success;\n\n          if (isSuccessful) {\n            handleSuccessSnackbar(message);\n            onSubmitSuccess?.(response);\n            pageOnSubmitSuccess?.(data);\n          } else if (apiResult?.errorMessage) {\n            handleErrorSnackbar(new Error(apiResult.errorMessage));\n          }\n        } else {\n          // Handle non-200 status codes\n          handleErrorSnackbar(new Error(errorMessage));\n        }\n      } catch (error) {\n        handleErrorSnackbar(error);\n      } finally {\n        if (setHasUnsavedChanges) {\n          formRef.current?.form?.restart(values);\n          setHasUnsavedChanges(false);\n        }\n        if (refetchTransaction) {\n          refetchTransaction();\n        }\n      }\n    },\n    [\n      executeCreateTransactionAction,\n      executeSaveChanges,\n      executeCreateRevision,\n      handleErrorSnackbar,\n      handleSuccessSnackbar,\n      transactionUiActionType,\n      executeSubmitCustomAction,\n      t,\n      transactionTypeTransactionActionId,\n      setHasUnsavedChanges,\n      formRef,\n      onSubmitSuccess,\n      refetchTransaction,\n      pageOnSubmitSuccess,\n      executeSubmitActionApi,\n      getUiActionRenderParameters\n    ]\n  );\n\n  const isFieldRequired = useCallback(\n    (fieldName) => {\n      const requiredFields = getRequiredFields(transaction);\n      return requiredFields?.includes(fieldName);\n    },\n    [getRequiredFields, transaction]\n  );\n\n  const isFieldHidden = useCallback(\n    (fieldName) => {\n      const hiddenFields = getHiddenFields(transaction);\n      return hiddenFields?.includes(fieldName);\n    },\n    [getHiddenFields, transaction]\n  );\n\n  const isFieldDisabled = useCallback(\n    (fieldName) => {\n      const disabledFields = getDisabledFields(transaction);\n      return disabledFields?.includes(fieldName);\n    },\n    [getDisabledFields, transaction]\n  );\n\n  const transactionPageId = useMemo(() => {\n    if (pageId) {\n      return pageId;\n    }\n    return getUiActionRenderParameters(transactionUiActionType)?.pageId;\n  }, [getUiActionRenderParameters, transactionUiActionType, pageId]);\n\n  if (!transactionPageId) {\n    return null;\n  }\n\n  return (\n    <Form onSubmit={onSubmit} ref={formRef}>\n      <FormSpy subscription={{ dirty: true }}>\n        {({ dirty }) => {\n          if (setHasUnsavedChanges) {\n            setHasUnsavedChanges(dirty);\n          }\n        }}\n      </FormSpy>\n      <PageContainer\n        pageId={transactionPageId}\n        updateLocationState={false}\n        widgetParams={{\n          transaction,\n          isFieldRequired,\n          isFieldHidden,\n          isFieldDisabled,\n          refreshTransactionGrid: refreshGridData,\n          setOnSubmitSuccess: setPageOnSubmitSuccess,\n          ...additionalPageParms\n        }}\n      />\n    </Form>\n  );\n};\n\nexport default UdpTransactionCustomPage;\n"],"mappings":";;;;;;;;;;;AAUA,MAAMa,4BAA4BC,UAAU;CAC1C,MAAM,EACJC,QACAC,mBACAC,yBACAC,SACAC,oBACAC,aACAC,oCACAC,sBACAC,iBACAC,iBACAC,sBAAsB,EAAC,KACrBX;CAEJ,MAAM,CAACY,qBAAqBC,0BAA0BxB,SAAS,KAAK;CAEpE,MAAM,EACJyB,6BACAC,iBACAC,mBACAC,sBACE1B,qBAAqBW,kBAAkB;CAE3C,MAAM,EAAEgB,qBAAqBC,0BAC3BtB,wBAAwB;CAC1B,MAAM,EAAEuB,MAAMtB,gBAAgB;CAE9B,MAAMuB,iCAAiClC,YACrC,OAAOmC,SACL1B,UACED,cAAc4B,iBACd,kCAAkCrB,kBAAiB,UACnD,EACEsB,QAAQ,QACT,EACDF,KACD,EACH,CAACpB,kBACH,CAAC;CAED,MAAMuB,qBAAqBtC,YACzB,OAAOmC,WACL1B,UACED,cAAc4B,iBACd,kBAAkBjB,aAAaoB,cAAa,eAC5C,EACEF,QAAQ,OACT,EACDF,OACD,EACH,CAAChB,aAAaoB,cAChB,CAAC;CAED,MAAMC,wBAAwBxC,YAC5B,OAAOmC,WACL1B,UACED,cAAc4B,iBACd,kBAAkBjB,aAAaoB,cAAa,kBAC5C,EACEF,QAAQ,QACT,EACDF,OACD,EACH,CAAChB,aAAaoB,cAChB,CAAC;CAED,MAAME,4BAA4BzC,YAChC,OAAOmC,WACL1B,UACED,cAAc4B,iBACd,uCAAuChB,mCAAkC,eAAgBD,YAAYoB,cAAa,UAClH,EACEF,QAAQ,QACT,EACDF,OACD,EACH,CAACf,oCAAoCD,aAAaoB,cACpD,CAAC;CAED,MAAMG,yBAAyB1C,YAC7B,OAAOmC,QAAMQ,gBACXlC,UACED,cAAc4B,iBACd,mCAAmCO,YAAW,eAAgBxB,YAAYoB,cAAa,UACvF,EACEF,QAAQ,QACT,EACDF,OACD,EACH,CAAChB,aAAaoB,cAChB,CAAC;CAED,MAAMK,WAAW5C,YACf,OAAO6C,WAAW;AAChB,MAAI;GACF,MAAMC,UAAU,EAAEX,MAAMU,QAAQ;GAChC,MAAMF,gBAAc3B,0BAChBW,4BAA4BX,wBAAwB,EAAE2B,cACtD;GACJ,IAAII,WAAW;GACf,IAAIC,UAAU;GACd,IAAIC,eAAe;AACnB,OACEjC,4BACAX,6BAA6B6C,gCAC7B;AACA,QAAIP,cACFI,YAAW,MAAML,uBAAuBI,SAASH,cAAY;QAE7DI,YAAW,MAAMb,+BAA+BY,QAAQ;AAE1DE,cAAUf,EAAE,wCAAwC,EAClDkB,cAAc,6CACf,CAAC;AACFF,mBAAehB,EAAE,sCAAsC,EACrDkB,cAAc,uDACf,CAAC;cAEFnC,4BACAX,6BAA6B+C,iCAC7B;AACA,QAAIT,cACFI,YAAW,MAAML,uBAAuBI,SAASH,cAAY;QAE7DI,YAAW,MAAMT,mBAAmBQ,QAAQ;AAE9CE,cAAUf,EAAE,sCAAsC,EAChDkB,cAAc,2CACf,CAAC;AACFF,mBAAehB,EAAE,oCAAoC,EACnDkB,cAAc,qDACf,CAAC;cAEFnC,4BACAX,6BAA6BgD,6BAC7B;AACA,QAAIV,cACFI,YAAW,MAAML,uBAAuBI,SAASH,cAAY;QAE7DI,YAAW,MAAMP,sBAAsBM,QAAQ;AAEjDE,cAAUf,EAAE,gDAAgD,EAC1DkB,cAAc,0CACf,CAAC;AACFF,mBAAehB,EAAE,8CAA8C,EAC7DkB,cACE,oEACH,CAAC;cACO,CAAC,CAAC/B,oCAAoC;AAC/C2B,eAAW,MAAMN,0BAA0BK,QAAQ;AACnDE,cAAUf,EAAE,8CAA8C,EACxDkB,cAAc,0CACf,CAAC;AACFF,mBAAehB,EAAE,4CAA4C,EAC3DkB,cACE,oEACH,CAAC;;GAGJ,MAAM,EAAEG,QAAQnB,MAAAA,WAASY,YAAY,EAAE;GACvC,MAAMQ,YAAYpB,QAAMqB;AAExB,OAAIF,WAAW;QAEQ,CAACC,aAAaA,UAAUG,SAE3B;AAChB1B,2BAAsBgB,QAAQ;AAC9B1B,uBAAkByB,SAAS;AAC3BtB,2BAAsBU,OAAK;eAClBoB,WAAWN,aACpBlB,qBAAoB,IAAI4B,MAAMJ,UAAUN,aAAa,CAAC;SAIxDlB,qBAAoB,IAAI4B,MAAMV,aAAa,CAAC;WAEvCW,OAAO;AACd7B,uBAAoB6B,MAAM;YAClB;AACR,OAAIvC,sBAAsB;AACxBJ,YAAQ4C,SAASC,MAAMC,QAAQlB,OAAO;AACtCxB,yBAAqB,MAAM;;AAE7B,OAAIH,mBACFA,qBAAoB;;IAI1B;EACEgB;EACAI;EACAE;EACAT;EACAC;EACAhB;EACAyB;EACAR;EACAb;EACAC;EACAJ;EACAK;EACAJ;EACAO;EACAiB;EACAf;EAEJ,CAAC;CAED,MAAMqC,kBAAkBhE,aACrBiE,cAAc;AAEb,SADuBpC,kBAAkBV,YAAY,EAC9BgD,SAASF,UAAU;IAE5C,CAACpC,mBAAmBV,YACtB,CAAC;CAED,MAAMiD,gBAAgBpE,aACnBiE,gBAAc;AAEb,SADqBrC,gBAAgBT,YAAY,EAC5BgD,SAASF,YAAU;IAE1C,CAACrC,iBAAiBT,YACpB,CAAC;CAED,MAAMmD,kBAAkBtE,aACrBiE,gBAAc;AAEb,SADuBnC,kBAAkBX,YAAY,EAC9BgD,SAASF,YAAU;IAE5C,CAACnC,mBAAmBX,YACtB,CAAC;CAED,MAAMqD,oBAAoBvE,cAAc;AACtC,MAAIa,OACF,QAAOA;AAET,SAAOa,4BAA4BX,wBAAwB,EAAEF;IAC5D;EAACa;EAA6BX;EAAyBF;EAAO,CAAC;AAElE,KAAI,CAAC0D,kBACH,QAAO;AAGT,QACE,sBAAA,cAAC,MAAD;EAAgB5B;EAAU,KAAK3B;EAqBxB,EApBL,sBAAA,cAAC,SAAD,EAAS,cAAc,EAAEwD,OAAO,MAAM,EAM7B,GALL,EAAEA,YAAY;AACd,MAAIpD,qBACFA,sBAAqBoD,MAAM;GAGxB,EACT,sBAAA,cAAC,eAAD;EACE,QAAQD;EACR,qBAAqB;EACrB,cAAc;GACZrD;GACA6C;GACAI;GACAE;GACAI,wBAAwBnD;GACxBoD,oBAAoBjD;GACpB,GAAGF;GACJ;EAAC,CAAA,CAEC"}