Guest User

Untitled

a guest
Dec 9th, 2019
89
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. import React, { FC } from 'react';
  2. import { Col, Form, Row } from 'react-bootstrap';
  3. import useForm from 'react-hook-form';
  4. import { RouteComponentProps } from 'react-router';
  5. import {
  6. ACTION_EVENTS,
  7. alertManager,
  8. AlertProps,
  9. AlertType,
  10. EditForm,
  11. EditViewProps,
  12. ERROR,
  13. getSelectedItem,
  14. InputGroupInline,
  15. InputType,
  16. isEmpty,
  17. showToast,
  18. WindowComponent,
  19. } from 'summer';
  20. import { CLASS_NAME, Especie } from '../../../../models/dtos/ger/especie';
  21. import { MODELODOCUMENTOENUM_VALUES } from '../../../../models/enumerated/ger/modeloDocumentoEnum';
  22. import { findEspecieByModelo } from '../../../../services/mlf.service';
  23.  
  24. interface EspecieEditViewProps extends EditViewProps<Especie> {}
  25.  
  26. const EspecieEditView: FC<EspecieEditViewProps & RouteComponentProps> = props => {
  27. const selectedItem = getSelectedItem(props);
  28.  
  29. const { reset, ...formProps } = useForm<Especie>({ defaultValues: selectedItem, mode: 'onBlur' });
  30.  
  31. function verificarEspecie(formData: Especie): void {
  32. findEspecieByModelo(formData.modelo, false, {
  33. errorFunction: mensagem => {
  34. console.log(mensagem);
  35. showToast(mensagem, ERROR);
  36. },
  37. thenFunction: result => {
  38. showEspecieExistente(result);
  39. reset(result);
  40. },
  41. });
  42. }
  43.  
  44. function showEspecieExistente(especieResult: Especie): void {
  45. if (especieResult) {
  46. const params: AlertProps = {
  47. message: 'Modelo do Documento já está cadastrado em outra Espécie. Confirma a gravação?',
  48. type: AlertType.WARNING_YES_NO,
  49. };
  50. alertManager.emit(ACTION_EVENTS.SHOW, params);
  51. }
  52. }
  53.  
  54. const beforePersist = (formData: Especie, done) => {
  55. const params: AlertProps = {
  56. message: 'Modelo do Documento NÃO foi preenchido. Confirma a gravação',
  57. type: AlertType.WARNING_YES_NO,
  58. };
  59.  
  60. if (formData.modelo === null || isEmpty(formData.modelo)) {
  61. alertManager.emit(ACTION_EVENTS.SHOW, params);
  62. } else if (formData.modelo) {
  63. verificarEspecie(formData);
  64. }
  65. setTimeout(() => {
  66. return done(formData);
  67. }, 2000);
  68. return { async: true };
  69. };
  70.  
  71. return (
  72. <WindowComponent title="Manutenção de Espécie" showHeader={props.showHeader}>
  73. <EditForm formProps={formProps} editViewProps={props} dtoClassName={CLASS_NAME} beforePersist={beforePersist}>
  74. <Row>
  75. <Col>
  76. <InputGroupInline
  77. formProps={{ ...formProps, validation: { required: true, maxLength: 8 } }}
  78. id="abreviacao"
  79. isPrependLabel={true}
  80. label="Abreviação"
  81. placeholder="Informe a Abreviação da espécie."
  82. />
  83. <InputGroupInline
  84. formProps={{ ...formProps, validation: { required: true, maxLength: 120 } }}
  85. id="descricao"
  86. isPrependLabel={true}
  87. label="Descrição"
  88. placeholder="Informe a descrição"
  89. />
  90. <InputGroupInline
  91. formProps={{ ...formProps }}
  92. id="modelo"
  93. inputDropDownProps={{ optionsProvider: MODELODOCUMENTOENUM_VALUES }}
  94. isPrependLabel={true}
  95. label="Modelo do Documento"
  96. placeholder="Informe o Modelo do Documento"
  97. type={InputType.DROP_DOWN}
  98. />
  99. </Col>
  100. </Row>
  101. <Row>
  102. <Col>
  103. <Form.Check
  104. type="checkbox"
  105. label="Espécie para Cupom Fiscal ou Máquina Registradora (ECF, CF, CMR)"
  106. name="cupomFiscalMaqReg"
  107. ref={formProps.register}
  108. />
  109. <Form.Check type="checkbox" label="Habilitar intervalo de Notas Fiscais" name="sequenciarNotas" ref={formProps.register} />
  110. <Form.Check
  111. type="checkbox"
  112. label="Não exigir o preenchimento do Participante nos lançamentos de entrada/saída"
  113. name="naoValidarParticipante"
  114. ref={formProps.register}
  115. />
  116. <Form.Check type="checkbox" label="Habilitar aba do EFD-Reinf" name="habilitarReinf" ref={formProps.register} />
  117. </Col>
  118. </Row>
  119. </EditForm>
  120. </WindowComponent>
  121. );
  122. };
  123.  
  124. export default EspecieEditView;
RAW Paste Data