FPSMS-frontend
No puede seleccionar más de 25 temas Los temas deben comenzar con una letra o número, pueden incluir guiones ('-') y pueden tener hasta 35 caracteres de largo.
 
 
 

124 líneas
3.4 KiB

  1. import { QcItemWithChecks } from "@/app/api/qc";
  2. import useUploadContext from "../UploadProvider/useUploadContext";
  3. import {
  4. PickOrderQcInput,
  5. updateStockOutLine,
  6. UpdateStockOutLine,
  7. } from "@/app/api/pickOrder/actions";
  8. import { FormProvider, SubmitHandler, useForm } from "react-hook-form";
  9. import QcContent from "./QcContent";
  10. import { Box, Button, Modal, ModalProps, Stack } from "@mui/material";
  11. import { useCallback } from "react";
  12. import { useTranslation } from "react-i18next";
  13. import { Check } from "@mui/icons-material";
  14. import { StockOutLine } from "@/app/api/pickOrder";
  15. import dayjs from "dayjs";
  16. import { INPUT_DATE_FORMAT, OUTPUT_TIME_FORMAT } from "@/app/utils/formatUtil";
  17. const style = {
  18. position: "absolute",
  19. top: "50%",
  20. left: "50%",
  21. transform: "translate(-50%, -50%)",
  22. // overflow: "scroll",
  23. bgcolor: "background.paper",
  24. pt: 5,
  25. px: 5,
  26. pb: 10,
  27. display: "block",
  28. width: { xs: "60%", sm: "60%", md: "60%" },
  29. };
  30. interface Props extends Omit<ModalProps, "children"> {
  31. qc: QcItemWithChecks[];
  32. qcDefaultValues: StockOutLine & PickOrderQcInput;
  33. disabled: boolean;
  34. }
  35. const QcForm: React.FC<Props> = ({
  36. qc,
  37. qcDefaultValues,
  38. disabled,
  39. open,
  40. onClose,
  41. }) => {
  42. const { setIsUploading } = useUploadContext();
  43. const { t } = useTranslation("pickOrder");
  44. const formProps = useForm<PickOrderQcInput>({
  45. defaultValues: {
  46. qty: qcDefaultValues.qty,
  47. status: qcDefaultValues.status,
  48. },
  49. });
  50. const errors = formProps.formState.errors;
  51. const closeHandler = useCallback<NonNullable<ModalProps["onClose"]>>(
  52. (...args) => {
  53. onClose?.(...args);
  54. // reset();
  55. },
  56. [onClose],
  57. );
  58. const onSubmit = useCallback<SubmitHandler<PickOrderQcInput>>(
  59. async (data, event) => {
  60. console.log(data);
  61. console.log(qcDefaultValues);
  62. // checking later
  63. // post
  64. const postData: UpdateStockOutLine = {
  65. id: qcDefaultValues.id,
  66. itemId: qcDefaultValues.itemId,
  67. pickOrderLineId: qcDefaultValues.pickOrderLineId,
  68. inventoryLotLineId: qcDefaultValues.inventoryLotLineId,
  69. qty: data.qty,
  70. status: data.status,
  71. // pickTime: dayjs().format(`${INPUT_DATE_FORMAT} ${OUTPUT_TIME_FORMAT}`),
  72. };
  73. console.log(postData);
  74. // return
  75. const res = await updateStockOutLine(postData);
  76. if (res) {
  77. console.log(res);
  78. closeHandler({}, "backdropClick");
  79. } else {
  80. console.log(res);
  81. console.log("bug la");
  82. }
  83. },
  84. [closeHandler, qcDefaultValues],
  85. );
  86. return (
  87. <>
  88. <FormProvider {...formProps}>
  89. <Modal open={open} onClose={closeHandler}>
  90. <Box
  91. sx={style}
  92. component="form"
  93. onSubmit={formProps.handleSubmit(onSubmit)}
  94. >
  95. <QcContent
  96. qc={qc}
  97. qcDefaultValues={qcDefaultValues}
  98. disabled={disabled}
  99. />
  100. <Stack direction="row" justifyContent="flex-end" gap={1}>
  101. {!disabled ? (
  102. <Button
  103. name="submit"
  104. variant="contained"
  105. startIcon={<Check />}
  106. type="submit"
  107. >
  108. {t("submit")}
  109. </Button>
  110. ) : undefined}
  111. </Stack>
  112. </Box>
  113. </Modal>
  114. </FormProvider>
  115. </>
  116. );
  117. };
  118. export default QcForm;