{"version":3,"sources":["components/util/recipeFilters/recipeFilters.jsx","components/util/loading/Loading.jsx","middleware/auth.js","components/util/modal/Modal.js","assets/images/logo-caffenio-nuevo.png","components/Recetas/recipes/RecipeExtractos.jsx","components/Recetas/toppings/ToppingsExtractos.jsx","components/util/noitems/NoItems.js","constants.js","services/ExtraccionesCafe.js","services/ProyeccionFormula.js","components/util/pagination/Pagination.jsx","components/util/acceptModal/AcceptModal.js","components/util/tabletemplate/TableTemplate.js","components/util/hasAccess/HasAccess.jsx","components/util/BtnModoGuiado/BtnModoGuiado.jsx","services/CaffenioEmpresas/Empresas.js","components/util/searchform/SearchForm.js","components/ExtraccionesCafe/ExtraccionesCafeContainer.jsx","services/Recipe.js","services/Presentations.js","components/ProyeccionFormula/ProyeccionFormulaContainer.jsx","services/RecipeType.js","components/ExtraccionesCafe/ExtraccionesCafeComponent.jsx","services/Flavor.js","components/ProyeccionFormula/ProyeccionFormulaComponent.jsx","services/Milk.js","services/Grain.js","services/InventoryItem.js","components/modoGuiado/ModoGuiado.jsx","services/Classification.js","components/util/field/Field.jsx","services/Warehouse.js","util/validation-error-messages.js","components/util/textfield/TextField.js","registerServiceWorker.js","services/auth.js","util/HoverCard/HoverCard.jsx","components/home/Home.jsx","components/index/index.js","util/strings/roles.js","components/menuInterior/MenuInterior.js","components/menu/Menu.js","components/UserInfo/UserInfo.js","components/header/Header.js","components/Recetas/recipes/components/RecipeToppings.jsx","services/Units.js","util/expresiones-regulares.js","util/to.js","components/Recetas/recipes/components/NewRecipeDetail.jsx","components/Recetas/recipes/RecipeImageForm.jsx","components/Recetas/recipes/components/RecipeDetails.jsx","util/strings/sin-tipo-receta.js","components/Recetas/recipes/Recipes.jsx","components/Recetas/recipesImage/RecipeImageForm.jsx","components/Recetas/recipesImage/RecipeImageFilter.jsx","components/Recetas/recipesImage/RecipesImage.jsx","components/util/dropdown/Dropdown.js","components/Recetas/recipes/components/RecipeDrivesDetail.jsx","components/Recetas/recipes/components/RecipeForm.jsx","services/Sat.js","components/Recetas/classifications/ClassificationForm.jsx","components/Recetas/recipes/NewRecipe.jsx","util/validators.js","components/Recetas/classifications/Classifications.jsx","components/Recetas/classifications/NewClassification.jsx","components/Recetas/flavors/FlavorForm.jsx","components/Recetas/flavors/NewFlavor.jsx","components/Recetas/flavors/Flavors.jsx","components/Recetas/grains/GrainForm.jsx","components/Recetas/grains/NewGrain.jsx","components/Recetas/grains/Grains.jsx","components/Recetas/milks/MilkForm.jsx","components/Recetas/milks/NewMilk.jsx","components/Recetas/milks/Milks.jsx","components/Recetas/presentations/PresentationForm.jsx","components/Recetas/presentations/NewPresentation.jsx","components/Recetas/presentations/Presentations.jsx","services/PriceDrive.js","components/Recetas/InventoryItems/stepsForms/InventoryItemPTForm.jsx","components/Recetas/InventoryItems/stepsForms/InventoryItemUnitsForm.jsx","components/Recetas/InventoryItems/stepsForms/InventoryItemTypeForm.jsx","components/Recetas/InventoryItems/stepsForms/InventoryItemEndForm.jsx","components/Recetas/InventoryItems/InventoryItemForm.jsx","components/Recetas/InventoryItems/NewInventoryItem.jsx","components/Recetas/InventoryItems/InventoryItemImageForm.jsx","components/Recetas/InventoryItems/SyncInventoryItem.jsx","components/Recetas/InventoryItems/InventoryItems.jsx","components/Recetas/recipeTypes/RecipeTypeForm.jsx","components/Recetas/recipeTypes/RecipeTypes.jsx","components/Recetas/recipeTypes/NewRecipeType.jsx","components/Recetas/units/UnitForm.jsx","components/Recetas/units/NewUnit.jsx","components/Recetas/units/Units.jsx","services/InventoryType.js","components/InventoryType/InventoryTypeForm.jsx","components/InventoryType/NewInventoryType.jsx","components/InventoryType/InventoryTypes.jsx","components/warehouse/Warehouse.jsx","services/Remesa.js","components/remesas/Remesas.jsx","services/MenuDrive.js","components/menusDrive/MenuForm.jsx","services/caffenioDrive.js","components/menusDrive/MenuFilters.jsx","components/menusDrive/MenusDrive.jsx","components/menusDrive/NewMenu.jsx","components/menusDrive/MenuDetail.jsx","components/pricesDrives/PriceListForm.jsx","components/pricesDrives/components/SelectDriveForm.jsx","components/pricesDrives/PricesDrive.jsx","components/pricesDrives/NewPriceList.jsx","components/pricesDrives/PriceListFormDetail.jsx","components/pricesDrives/PricesDetail.jsx","components/util/privaterouter/PrivateRoute.js","services/SaldoRegalo.js","components/SaldoRegalo/SaldoRegaloFormFile.jsx","components/SaldoRegalo/SaldoRegaloForm.jsx","components/SaldoRegalo/SaldoRegaloErroFile.jsx","components/SaldoRegalo/SaldoRegaloGuideFile.jsx","components/SaldoRegalo/SaldoRegaloCheckFile.jsx","components/SaldoRegalo/SaldosRegalo.jsx","services/ConfigurationVP.js","services/ComboDatos.js","components/caffenioDrive/CaffenioForm.jsx","components/ConfiguracionVP/ConfiguracionVPComponent.jsx","components/ConfiguracionVP/ConfiguracionVPContainer.jsx","components/caffenioDrive/caffenioDrive.jsx","components/caffenioDrive/driveSteps/StepInfoDrive.jsx","components/caffenioDrive/driveSteps/StepFacturacionDrive.jsx","services/PlazaAdmin.js","services/SucursalAdmin.js","components/caffenioDrive/driveSteps/StepLocationDrive.jsx","components/caffenioDrive/NewCaffenio.jsx","components/Recetas/recipes/stepsItems/RecipeConfigurationStep.jsx","components/Recetas/recipes/stepsItems/RecipeComplementInfoStep.jsx","components/Recetas/recipes/components/SelectDriveForm.jsx","components/Recetas/recipes/stepsItems/RecipeItemsAndToppingStep.jsx","components/Recetas/recipes/components/RecipeCard.jsx","components/Recetas/recipes/stepsItems/RecipesConfigStep.jsx","components/Recetas/recipes/NewRecipeMulti.jsx","components/Recetas/toppings/Toppings.jsx","components/util/field/Field+Addons.jsx","components/Caffenio App/Segmentaciones/components/BuscarSegmentacion.jsx","components/util/pagination/ServerPagination.jsx","components/Caffenio App/Segmentaciones/components/TablaSegmentaciones.jsx","services/Caffenio App/Segmentacion.js","components/Caffenio App/Segmentaciones/Segmentaciones.jsx","components/Caffenio App/Segmentaciones/components/util/FilterLoading.jsx","components/util/checkbox/Checkbox.jsx","components/util/radioButton/RadioButton.jsx","components/Caffenio App/Segmentaciones/NuevaSegmentacion/components/SegmentacionForm.jsx","components/Caffenio App/Segmentaciones/NuevaSegmentacion/NuevaSegmentacion.jsx","util/hooks/useModal.jsx","components/Caffenio App/Segmentaciones/components/TablaValidarClientes.jsx","util/portals/PortalModal.jsx","components/Caffenio App/Segmentaciones/NuevaSegmentacion/components/SegmentacionFormExcel.jsx","services/Promotions.js","components/Promociones/NuevaPromocion/components/components/components/TablaValidarClientes.jsx","components/Promociones/NuevaPromocion/components/components/SegmentoDataForm.jsx","util/hooks/useForm.jsx","components/Caffenio App/Segmentaciones/NuevaSegmentacion/NuevaSegmentacionUsuario.jsx","components/util/searchform/SearchFormV2.jsx","components/Caffenio App/Notificaciones/components/TablaNotificaciones.jsx","services/Caffenio App/Notificacion.js","components/Caffenio App/Notificaciones/Notificaciones.jsx","components/util/chip/Chip.js","components/Caffenio App/Notificaciones/NuevaNotificacion/components/components/NotificacionDataForm.jsx","util/util.js","components/Caffenio App/Notificaciones/NuevaNotificacion/components/components/DetalleDescriptionForm.jsx","components/Caffenio App/Notificaciones/NuevaNotificacion/components/components/SaldoForm.jsx","components/Caffenio App/Notificaciones/NuevaNotificacion/components/components/NumVisitasForm.jsx","components/Caffenio App/Notificaciones/NuevaNotificacion/components/components/TipoNotificacionForm.jsx","components/Caffenio App/Notificaciones/NuevaNotificacion/components/components/InfoGeneralForm.jsx","components/Caffenio App/Notificaciones/NuevaNotificacion/components/components/AccionNotificacionForm.jsx","components/Caffenio App/Notificaciones/NuevaNotificacion/components/NuevaNotificacionForm.jsx","components/Caffenio App/Notificaciones/NuevaNotificacion/NuevaNotificacion.jsx","components/Caffenio App/Agenda/Agenda.jsx","components/Caffenio App/Notificaciones/DetalleNotificacion/components/ResumenNotificacion.jsx","components/Caffenio App/Notificaciones/DetalleNotificacion/components/components/AgendarNotificacionForm.jsx","components/Caffenio App/Notificaciones/DetalleNotificacion/components/AgendarNotificacion.jsx","components/Caffenio App/Notificaciones/DetalleNotificacion/components/components/TablaEventosAgenda.jsx","components/Caffenio App/Notificaciones/DetalleNotificacion/components/components/AgendarHeader.jsx","components/Caffenio App/Notificaciones/DetalleNotificacion/components/components/PruebaNotificacion.jsx","components/Caffenio App/Notificaciones/DetalleNotificacion/components/components/TablaHistorial.jsx","components/Caffenio App/Notificaciones/DetalleNotificacion/DetalleNotificacion.jsx","services/Caffenio App/Menu.js","components/util/searchform/SearchFormV3.jsx","components/Caffenio App/Menu/Orden/components/TablaMenuApp.jsx","components/Caffenio App/Menu/Orden/DetalleClasificacionApp/DetalleClasificacionApp.jsx","components/Caffenio App/Menu/Orden/OrdenMenuApp.jsx","components/Caffenio App/Menu/Orden/EditarClasificacionApp/EditarClasificacionApp.jsx","components/Caffenio App/Menu/Orden/OrdernarMenu/components/ClassificationCard.jsx","components/Caffenio App/Menu/Orden/OrdernarMenu/OrdernarMenu.jsx","services/ubereats.js","components/ubereats/NewRestaurant.jsx","components/ubereats/restaurantes.jsx","components/ubereats/InfoOrderRestaurant.jsx","components/ubereats/components/RecipesRestaurantTable.jsx","components/ubereats/components/ToppingsRestaurantTable.jsx","components/ubereats/components/UberEatsMenuRestaurantTable.jsx","components/ubereats/RestaurantDetail.jsx","components/asignacionLiderSupervisor/ModalAsignacion.js","services/Empleados.js","services/Sucursales.js","components/asignacionLiderSupervisor/AsignacionLiderSupervisor.js","services/HistorialMovimientos.js","components/historialMovimientos/HistorialMovimientos.js","services/FichaDeposito.js","components/util/pagination/PaginationReports.jsx","components/reportes/reporteCorte.jsx","components/reportes/caffenioReporteTabla.jsx","components/productoDestacado/newFeatured.jsx","services/Plazas.js","components/CatalogoPlazas/ModalPlaza.js","components/CatalogoPlazas/CatalogoPlazas.js","components/CatalogoSucursales/ModalSucursal.js","components/CatalogoSucursales/CatalogoSucursales.js","components/AdminUsuarios/ModalEditUsuario.js","components/util/searchform/SearchFormV5.jsx","services/Users.js","components/AdminUsuarios/AdminUsuarios.js","components/Promos/components/PromoCopyForm.js","components/Promos/components/PromoComentsForm.js","services/DrivePromotions.js","services/DrivePromotionsStatus.js","services/DrivePromotionComments.js","services/DrivePromotionsType.js","components/Promos/Promos.js","components/Promos/BasePromo.js","components/Promos/components/PromoDetailReembolsoProducto.js","components/Promos/components/PromoDetailReembolsoRecarga.js","components/Promos/components/PromoDetailDescuento.js","util/strings/tipo-promos.js","components/Promos/DetallePromo.js","components/Promos/components/PromoProductsTable.js","components/Promos/ProductosPromo.js","components/Promos/DrivesPromo.js","services/DrivePromotionRestrictions.js","components/Promos/RestriccionesPromo.js","services/DrivePromotionsRefundType.js","services/DrivePromotionsTipoRegalos.js","services/DrivePromoDiscountTypes.js","components/Promos/NuevaPromo.js","components/TasaImpuesto/ModalTasaImpuesto.js","services/TaxRate.js","components/TasaImpuesto/TasaImpuesto.js","services/Reportes/ReportesConciliacion.js","components/reportes/reporteConciliacion/reporteConciliacion.jsx","services/Reportes/ReportesArqueo.js","components/reportes/reporteArqueo/reporteArqueo.jsx","services/Reportes/ReportesRetiro.js","components/reportes/reporteRetiros/ReporteRetiros.jsx","services/Reportes/ReportesCancelacion.js","components/reportes/reporteCancelaciones/ReporteCancelaciones.jsx","components/util/searchform/SearchFormV4.jsx","components/Promociones/components/TablaPromociones.jsx","components/Promociones/Promociones.jsx","components/Promociones/NuevaPromocion/components/components/PromocionDataForm.jsx","components/Promociones/NuevaPromocion/components/components/TipoPromocionDataForm.jsx","components/Promociones/NuevaPromocion/components/components/TipoQRDataForm.jsx","components/Promociones/NuevaPromocion/components/components/MostrarAppDataForm.jsx","components/Promociones/NuevaPromocion/components/components/AgendarNotificacionDataForm.jsx","components/Promociones/NuevaPromocion/components/components/CantidadCuponesDataForm.jsx","components/Promociones/NuevaPromocion/components/NuevaPromocionForm.jsx","components/Promociones/NuevaPromocion/NuevaPromocion.jsx","components/Promociones/DetallePromocion/components/ResumenPromocion.jsx","components/Promociones/DetallePromocion/components/components/TablaCodigoRelacionado.jsx","components/Promociones/DetallePromocion/DetallePromocion.jsx","components/Promociones/PrefijoCampana/components/components/NuevoPrefijoCampanaDataForm.jsx","components/Promociones/PrefijoCampana/components/NuevoPrefijoCampanaForm.jsx","components/Promociones/PrefijoCampana/NuevoPrefijoCampana.jsx","components/ReporteExtractos/ReporteExtractosComponent.jsx","services/ReporteExtractos.js","components/ReporteExtractos/ReporteExtractosContainer.jsx","components/util/searchform/SearchFormV6.jsx","components/util/pagination/ServerPagination2.jsx","components/miCaffenioEmpresas/ModalEditarEmpresa.js","components/Caffenio App/Empresas/TablaEmpresas.jsx","components/miCaffenioEmpresas/empresas.jsx","services/ProductionProyection.js","components/ProyeccionProductos/DrivesProyeccion.jsx","components/ProyeccionProductos/ProyeccionForm.jsx","components/ProyeccionProductos/proyeccionProductos.jsx","components/ProyeccionProductos/NewProyeccion.jsx","components/ReporteProyeccion/ReporteProyeccionComponent.jsx","services/ReporteProduccionAdelantado.js","components/ReporteProyeccion/ReporteProyeccionContainer.jsx","services/ComunicadosVP.js","components/ComunicadosVP/ComunicadosVP.jsx","components/ComunicadosVP/DrivesComunicado.jsx","components/ComunicadosVP/ComunicadoForm.jsx","components/ComunicadosVP/NewComunicado.jsx","services/PagosBancos.js","components/PagosBancos/pagosBancos.jsx","services/AdministrarEmpleados.js","components/coordinadoresSupervisores/ModalListaSupervisores.jsx","components/coordinadoresSupervisores/EditCoordinadoresSupervisores.jsx","components/coordinadoresSupervisores/CoordinadoresSupervisores.jsx","components/coordinadoresSupervisores/NewCoordinadoresSupervisores.jsx","components/movimientosMenu/MovimientosMenu.jsx","components/historialVersion/HistorialVersion.jsx","components/app-container/app-container.js","components/login/Login.js","index.js"],"names":["RecipeFilters","props","_this","Object","C_CAFFENI_sprint_SAG_front_node_modules_babel_preset_react_app_node_modules_babel_runtime_helpers_esm_classCallCheck__WEBPACK_IMPORTED_MODULE_1__","this","C_CAFFENI_sprint_SAG_front_node_modules_babel_preset_react_app_node_modules_babel_runtime_helpers_esm_possibleConstructorReturn__WEBPACK_IMPORTED_MODULE_3__","C_CAFFENI_sprint_SAG_front_node_modules_babel_preset_react_app_node_modules_babel_runtime_helpers_esm_getPrototypeOf__WEBPACK_IMPORTED_MODULE_4__","call","origRecipeTypesList","origFlavorsList","origGrainsList","origMilksList","origPresentationList","componentDidMount","state","C_CAFFENI_sprint_SAG_front_node_modules_babel_preset_react_app_node_modules_babel_runtime_helpers_esm_objectSpread__WEBPACK_IMPORTED_MODULE_0__","RecipeTypesAPI","getAll","then","response","temp","data","map","obj","RecipeName","push","value","RecipeTypeId","label","Description","sort","compare","recipeTypeList","lodash","cloneDeep","PresentationsAPI","tempPresentationList","Active","PresentationId","Name","presentationsList","MilksAPI","tempMilkList","MilkTypeId","milksList","GrainsAPI","tempGrainList","GrainTypeId","grainsList","FlavorsAPI","tempFlavorsList","FlavorTypeId","flavorsList","ClasificacionesAPI","tempClassificationList","ClassificationId","classificationList","EmpresasAPI","getAllFilterSegments","tempSegmentsList","SegmentId","segmentationList","setState","catch","err","isLoading","toast","error","Message","ErrorMessages","SinConexion","handleClassificationChange","arr","selectedClassificationList","selectedRecipes","filterOptionsByClasification","handleSelectChange","selectedListLabel","sendFilters","selectedFilters","selectedRecipeTypesList","selectedPresentationsList","selectedMilksList","selectedGrainsList","selectedFlavorsList","selectedSegmentationList","onChange","clasificaciones","length","stateFiltros","getByClasification","tempRecipeTypesList","tempSegmentationList","objA","objB","labelA","toUpperCase","labelB","comparison","noMulti","noRecipeType","noFlavorType","noGrainType","noMilkType","noPresentation","disabledByFamily","_this2","react__WEBPACK_IMPORTED_MODULE_6___default","a","createElement","Fragment","className","react_select__WEBPACK_IMPORTED_MODULE_14__","id","isMulti","placeholder","name","noOptionsMessage","options","isClearable","isDisabled","getOptionLabel","segment","React","Component","loading_style","position","margin","width","height","zIndex","circle_style","strokeDasharray","strokeDashoffset","animation","strokeLinecap","Loading","_this$props","component","children","_this$props2","style","strokeWidth","isFullscreen","svg_style","transformOrigin","top","bottom","left","right","assign","react__WEBPACK_IMPORTED_MODULE_5___default","viewBox","cx","cy","r","fill","strokeMiterlimit","defaultProps","target","varArgs","TypeError","to","index","arguments","nextSource","nextKey","prototype","hasOwnProperty","__webpack_exports__","hasAuth","request","localStorage","getItem","Date","now","clear","window","location","reload","Modal","escFunction","event","keyCode","cancel","document","addEventListener","removeEventListener","showModal","customClass","onClick","modalTitle","aria-label","expand","espand","borderBottomLeftRadius","footer","borderBottomRightRadius","footerButtons","module","exports","RecipeExtractos","C_CAFFENI_sprint_SAG_front_node_modules_babel_preset_react_app_node_modules_babel_runtime_helpers_esm_classCallCheck__WEBPACK_IMPORTED_MODULE_2__","C_CAFFENI_sprint_SAG_front_node_modules_babel_preset_react_app_node_modules_babel_runtime_helpers_esm_possibleConstructorReturn__WEBPACK_IMPORTED_MODULE_4__","C_CAFFENI_sprint_SAG_front_node_modules_babel_preset_react_app_node_modules_babel_runtime_helpers_esm_getPrototypeOf__WEBPACK_IMPORTED_MODULE_5__","recipes","handleSearchInput","text","filterText","handleSearchMultipleFieldInput","filter","recipe","includes","trim","KiwiId","toLowerCase","normalize","replace","C_CAFFENI_sprint_SAG_front_node_modules_babel_preset_react_app_node_modules_babel_runtime_helpers_esm_objectSpread__WEBPACK_IMPORTED_MODULE_1__","auxCount","findIndex","selectedRecipe","RecipeId","statusCheck","checkAll","objFilters","selectAllCheck","_checkAll","_selectedRecipes","C_CAFFENI_sprint_SAG_front_node_modules_babel_preset_react_app_node_modules_babel_runtime_helpers_esm_toConsumableArray__WEBPACK_IMPORTED_MODULE_0__","pageRecipes","forEach","indexRecipe","item","splice","changeRecipePage","recipesChecked","selectAllCheckBox","elementsPage","element","editing","syncModal","syncMultiModal","manageToppingModal","addToppingModal","toppings","toppingError","menuRecetaModal","menuRecetaModalTitle","menuRecetaModalBody","menuRecetaCurrent","manageInventoryItemsModal","addInventoryItems","inventoryItems","inventoryItemsTemp","recipesToAddItems","inventoryItemsError","showInventoryItemsInfo","RecipesAPI","console","log","_this3","react__WEBPACK_IMPORTED_MODULE_7___default","_modoGuiado_ModoGuiado__WEBPACK_IMPORTED_MODULE_22__","ruta","tipoModoGuiado","anterior","mensaje","_util_searchform_SearchForm__WEBPACK_IMPORTED_MODULE_8__","onInput","t","itemName","placeholderText","_util_recipeFilters_recipeFilters__WEBPACK_IMPORTED_MODULE_25__","display","_util_tabletemplate_TableTemplate__WEBPACK_IMPORTED_MODULE_9__","columns","columnsNames","noActions","checkbox","showView","rowClickable","_util_noitems_NoItems__WEBPACK_IMPORTED_MODULE_10__","_util_pagination_Pagination__WEBPACK_IMPORTED_MODULE_11__","items","onChangePage","cancelRecipesModal","disabled","saveRecipes","e","_util_loading_Loading__WEBPACK_IMPORTED_MODULE_14__","_util_BtnModoGuiado_BtnModoGuiado__WEBPACK_IMPORTED_MODULE_23__","ToppingsExtractos","FilterProcess","inventoryItemsArray","InventoryCode","selectedToppingsObjList","selectedTopping","InventoryItemId","buttonSelectAll","selectAllCheckBoxPage","_selectedToppingsObjList","pageInventoryItems","topping","indexTopping","updateMasive","counter","_toppings","_buttonSelectAll","isNumericDecimal","val","decimalPlaces","substring","objRegExp","RegExp","test","updateTable","precioVenta","PrecioVenta","inventoryItem","removeModal","Caffenios","selectedOption","selectedOptionC","selectedOptionD","OptionSelect","OptionSelectCity","OptionSelectDrive","drivesArr","confirmModalUpdatePrice","priceMassive","selectedToppings","modalUpdatePrice","InventoryItemsAPI","getToppings","JSON","parse","stringify","_modoGuiado_ModoGuiado__WEBPACK_IMPORTED_MODULE_17__","siguiente","canEdit","canDelete","_util_pagination_Pagination__WEBPACK_IMPORTED_MODULE_13__","checkAllTemp","class","cancelToppingsModal","saveToppings","_util_BtnModoGuiado_BtnModoGuiado__WEBPACK_IMPORTED_MODULE_18__","NoItems","react__WEBPACK_IMPORTED_MODULE_5__","concat","__webpack_require__","d","url","apiUrl","caffenioAuthId","axios","create","baseURL","headers","Authorization","Content-Type","ExtraccionesCafeAPI","get","formulaData","post","put","ProyeccionFormulaAPI","Pagination","pager","setPage","initialPage","prevProps","prevState","page","pageSize","totalPages","getPager","pageOfItems","slice","startIndex","endIndex","totalItems","currentPage","startPage","endPage","Math","ceil","min","pages","Array","keys","i","key","AcceptModal","C_CAFFENI_sprint_SAG_front_node_modules_babel_preset_react_app_node_modules_babel_runtime_helpers_esm_classCallCheck__WEBPACK_IMPORTED_MODULE_0__","C_CAFFENI_sprint_SAG_front_node_modules_babel_preset_react_app_node_modules_babel_runtime_helpers_esm_possibleConstructorReturn__WEBPACK_IMPORTED_MODULE_2__","C_CAFFENI_sprint_SAG_front_node_modules_babel_preset_react_app_node_modules_babel_runtime_helpers_esm_getPrototypeOf__WEBPACK_IMPORTED_MODULE_3__","showAccept","showCancel","hideAccept","isActive","modalBody","preventDefault","willSave","done","TableTemplate","ontrClick","row","details","data-tooltip","checked","type","column","objColumnStyle","columnStyle","find","stopPropagation","j","disableCheck","htmlFor","changeOrderRelease","changeStatus","undefined","lastName","edit","remove","canSync","sync","canDownload","download","extraButtons","HasAccess","roles","split","permissions","intersection","BtnModoGuiado","ultimaRuta","removeItem","divContenedor","getElementsByClassName","react_router_dom__WEBPACK_IMPORTED_MODULE_7__","href","title","handleClickExit","search","segmento","activo","middleware","idBusiness","idEmpresa","Activo","infoUpdated","patch","businessCreated","businessDeleted","delete","SearchForm","onSubmit","ref","autoFocus","onKeyUp","keyPressEnter","currentTarget","ExtraccionesCafeContainer","C_CAFFENI_sprint_SAG_front_node_modules_babel_preset_react_app_node_modules_babel_runtime_helpers_esm_classCallCheck__WEBPACK_IMPORTED_MODULE_6__","C_CAFFENI_sprint_SAG_front_node_modules_babel_preset_react_app_node_modules_babel_runtime_helpers_esm_possibleConstructorReturn__WEBPACK_IMPORTED_MODULE_8__","C_CAFFENI_sprint_SAG_front_node_modules_babel_preset_react_app_node_modules_babel_runtime_helpers_esm_getPrototypeOf__WEBPACK_IMPORTED_MODULE_9__","saveFormula","initialFormula","formula","newState","update","$set","showModalEditFormula","formulaWasModified","formulaIsValid","success","addElementFormula","addElementFormulaIsDisabled","_formula","f","toString","isDraggableDisabled","removeElementFormulaIsDisabled","removeElementFormula","indexToRemoveFormula","showModalRemoveElementFormula","toggleModalRemoveElementFormula","cancelModalRemoveElementFormula","checkDraggableStatus","getFormulaData","C_CAFFENI_sprint_SAG_front_node_modules_babel_preset_react_app_node_modules_babel_runtime_helpers_esm_asyncToGenerator__WEBPACK_IMPORTED_MODULE_5__","C_CAFFENI_sprint_SAG_front_node_modules_babel_preset_react_app_node_modules_babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_3___default","mark","_callee2","_newState3","_newState4","wrap","_context2","prev","next","GetFormulaData","sent","auxFormulaString","FormulaText","auxFormulaObject","C_CAFFENI_sprint_SAG_front_node_modules_babel_preset_react_app_node_modules_babel_runtime_helpers_esm_objectSpread__WEBPACK_IMPORTED_MODULE_4__","isNaN","isFinishLoading","t0","_callee","_newState5","newState2","_context","stop","saveModule","invalidFieldTiempoVida","invalidFieldFrecuencia","auxFormula","join","_callee3","_newState6","_context3","UpdateFormulaData","C_CAFFENI_sprint_SAG_front_node_modules_babel_preset_react_app_node_modules_babel_runtime_helpers_esm_toConsumableArray__WEBPACK_IMPORTED_MODULE_2__","changeToppingPage","pageToppings","removeRecipeFromList","_recipes","Recetas","recipeToRemove","showModalRemoveRecipe","toggleModalRemoveRecipe","closeModalRemoveRecipe","removeToppingFromList","Toppings","toppingToRemove","showModalRemoveTopping","toggleModalRemoveTopping","closeModalRemoveTopping","checkedRecipes","showModalEditRecipes","checkedToppings","showModalEditToppings","handleChangeFormula","C_CAFFENI_sprint_SAG_front_node_modules_babel_preset_react_app_node_modules_babel_runtime_helpers_esm_defineProperty__WEBPACK_IMPORTED_MODULE_1__","cancelEditFormulaModal","resetState","baseState","checkHasInvalidFields","hasInvalidFields","changeLoading","handleChangeTiempoVida","auxTiempoVidaIsEmpty","auxTiempoVidaIsZero","auxTiempoVidaIsMax","auxInvalidFieldTiempoVida","valueAsNumber","tiempoVidaIsEmpty","tiempoVidaIsZero","tiempoVidaIsMax","handleChangeFrecuencia","auxFrecuenciaIsEmpty","auxFrecuenciaIsZero","auxFrecuenciaIsMax","auxInvalidFieldFrecuencia","frecuenciaIsEmpty","frecuenciaIsZero","frecuenciaIsMax","toggleEditFormulaModal","toggleEditRecipesModal","toggleEditToppingsModal","toggleModalInfo","showModalInfo","cancelModalInfo","closeAcceptModal","showModalConfirmationMessage","closeModal","checkFormula","_newState","TiempoVida","tiempoVida","Frecuencia","frecuencia","VentaHistorica","result","eval","onDragEnd","destination","reorder","source","list","from","_result$splice","removed","C_CAFFENI_sprint_SAG_front_node_modules_babel_preset_react_app_node_modules_babel_runtime_helpers_esm_slicedToArray__WEBPACK_IMPORTED_MODULE_0__","getItemStyle","isDragging","draggableStyle","userSelect","padding","grid","background","getListStyle","isDraggingOver","overflow","isEditing","isSubmitting","bind","C_CAFFENI_sprint_SAG_front_node_modules_babel_preset_react_app_node_modules_babel_runtime_helpers_esm_assertThisInitialized__WEBPACK_IMPORTED_MODULE_11__","which","keyValue","String","fromCharCode","getAttribute","react__WEBPACK_IMPORTED_MODULE_12___default","_ExtraccionesCafeComponent__WEBPACK_IMPORTED_MODULE_14__","onKeyPressNumber","onKeyDown","handleChange","submit","IdFormulaExtractos","Access-Control-Allow-Origin","Recipe","imagen","fd","FormData","append","Image","lstIds","Recipes","recipeId","params","prop","ids","Presentation","Position","SegmentationId","NombreApp","File","idSegmento","ProyeccionFormulaContainer","setFormulaData","proyeccion","formulaDataTmp","Formula","IdFormulaProduccionAdelantado","IdProduccionAdelantado","C_CAFFENI_sprint_SAG_front_node_modules_babel_preset_react_app_node_modules_babel_runtime_helpers_esm_objectSpread__WEBPACK_IMPORTED_MODULE_5__","C_CAFFENI_sprint_SAG_front_node_modules_babel_preset_react_app_node_modules_babel_runtime_helpers_esm_asyncToGenerator__WEBPACK_IMPORTED_MODULE_4__","_newFormulaData","_newState7","CreateFormulaData","newFormulaData","handleGoBack","history","back","_ProyeccionFormulaComponent__WEBPACK_IMPORTED_MODULE_14__","RecipesTypesAPI","TypeRecipe","ExtraccionesCafeComponent","_ref","_React$createElement","_React$createElement2","_React$createElement3","_React$createElement4","C_CAFFENI_sprint_SAG_front_node_modules_babel_preset_react_app_node_modules_babel_runtime_helpers_esm_objectWithoutProperties__WEBPACK_IMPORTED_MODULE_1__","react__WEBPACK_IMPORTED_MODULE_2___default","_util_modal_Modal__WEBPACK_IMPORTED_MODULE_5__","cursor","color","marginLeft","fontSize","C_CAFFENI_sprint_SAG_front_node_modules_babel_preset_react_app_node_modules_babel_runtime_helpers_esm_defineProperty__WEBPACK_IMPORTED_MODULE_0__","_util_field_Field__WEBPACK_IMPORTED_MODULE_3__","isHorizontal","maxLength","max","onKeyPress","react_beautiful_dnd__WEBPACK_IMPORTED_MODULE_15__","droppableId","direction","droppableProvided","snapshot","droppableProps","innerRef","draggableId","isDragDisabled","draggableProvided","draggableProps","dragHandleProps","readOnly","onMouseDown","_util_acceptModal_AcceptModal__WEBPACK_IMPORTED_MODULE_6__","_util_tabletemplate_TableTemplate__WEBPACK_IMPORTED_MODULE_16__","_util_noitems_NoItems__WEBPACK_IMPORTED_MODULE_8__","_util_pagination_Pagination__WEBPACK_IMPORTED_MODULE_9__","keepPage","_Recetas_recipes_RecipeExtractos__WEBPACK_IMPORTED_MODULE_13__","_Recetas_toppings_ToppingsExtractos__WEBPACK_IMPORTED_MODULE_14__","_util_loading_Loading__WEBPACK_IMPORTED_MODULE_4__","_util_BtnModoGuiado_BtnModoGuiado__WEBPACK_IMPORTED_MODULE_10__","FlavorType","ShortName","ProyeccionFormulaComponent","Nombre","MilkType","GrainType","lista","codeProvider","priceListId","listaArticuloDrive","ModoGuiado","setItem","react_router_dom__WEBPACK_IMPORTED_MODULE_6__","Classification","IVAApply","clasificacionGrupo","Background","Icon","Field","alingLefth","showTooltip","textTooltip","isVertical","hasError","marginTop","msgError","showLeftSpaces","childInfo","WarehouseAPI","textoFiltro","warehouse","arrObjects","smallName","smallestName","shortName","menuPosition","menuPositionMax","recipeName","smallRecipeName","smallestRecipeName","urlIcono","ErrorInesperado","AlfanumericoSinEspecialesError","AalfanumericoSinEspaciosError","AlfanumericoConCaracteresError","SoloNumerosError","PngFormatError","PngJpegFormatError","TextField","isLocalhost","Boolean","hostname","match","registerValidSW","swUrl","navigator","serviceWorker","register","registration","onupdatefound","installingWorker","installing","onstatechange","controller","Auth","login","username","password","grant_type","client_id","querystring","HoverCard","react_default","handleClickClick","titulo","descripcion","Home","classCallCheck","possibleConstructorReturn","getPrototypeOf","nombre","rol","Link","HoverCard_HoverCard_HoverCard","aria-hidden","Index","home_Home","ADMIN","SUPERADMIN","MKT","MKT_OS","MKT_REGIONAL","COORDINADOR_DISTRIBUCION","SUPERVISOR_VENTA_DRIVE","ESPECIALISTA_DE_PRODUCTO","ESTRATEGIA_DIGITAL","ESPECIALISTA_DE_GESTION","COORDINADOR_GESTION_OPERACIONES","CRM","USUARIO","OPERADOR","CDS","DRIVE","SUCURSAL","SOPORTE","COORDINADOR_SERVICIOS","ASESOR","ADMINDRIVE","ADMINBARRA","SAP","CAT","CCH","FAT_OS","FAT_R","ADMIN_APP","ADMIN_UBER_EATS","REPORTES","MICAFFENIO_EMPRESAS","LIDER_DRIVE","ENCARGADO_DE_TURNO","CONFIGURACION_VP","CRM_EMPRESARIAL","COORD_OPER_DRIVE","MenuInterior","selected","alt","src","logo","selectedArticulos","selectedRecetas","selectedConf","Menu","MenuInterior_MenuInterior","UserInfo","_useState","useState","listVisible","_useState2","slicedToArray","useEffect","userInfo","token","base64","jsonPayload","decodeURIComponent","atob","c","charCodeAt","parseJwt","fullname","role","maxWidth","marginRight","whiteSpace","textOverflow","defineProperty","textAlign","Header","justifyContent","UserInfo_UserInfo","data-target","RecipeToppings","detail","errorCantidad","Number","MinQuantity","MaxQuantity","CodeProvider","step","quantityChanged","UnitSaleStr","removeDetail","mostrarDrives","onMostrarDrives","checkForError","UnitsAPI","unit","ExpresionesRegulares","ErrorInputNumDecimal","ErrorInputNumero","CodigoProveedor","AlfanumericoSinEspeciales","AlfanumericoConCaracteres","AalfanumericoSinEspacios","SoloNumeros","promise","NewRecipeDetail","searchText","searchResultDetails","units","showThead","setUnitDetail","objectSpread","UnitsId","body","Search","Total","ItemInventoryIds","currentDetails","soloToppings","Results","unidad","UnitSale","isTopping","isDetail","Amount","onPaste","clipboardData","getData","toConsumableArray","warn","addDetail","SUPPORTED_FORMATS","RecipeImageForm","VALIDATION_SCHEMA_EDIT_WITH_IMG","Yup","required","UrlImage","matches","message","formik_esm","initialValues","validationSchema","values","save","touched","errors","handleBlur","handleSubmit","setFieldValue","setFieldTouched","onBlur","accept","reader","file","files","FileReader","readAsDataURL","onload","getElementById","setAttribute","getTime","MobileApply","WelcomeGiftApply","ClassificationSatId","CodeSatId","Details","GiftWelcomeActive","RecipeDetails","driveList","viewDrivesDetail","DriveNombre","nombresSinTipo","pathname","classifications","presentations","flavors","milks","segments","segmentsList","grains","recipeTypes","lstRecipes","handleRecipeTypeChange","tempSelectedRecipeTypesList","pageRecipe","handleFlavorChange","tempSelectedFlavorList","handlePresentationChange","handleMilkChange","tempMilksList","handleGrainChange","presentationList","handleMenuRecetaModalBody","getMenu","tablaMenus","syncRecipe","syncRecipeMulti","syncMulti","_pageRecipes","checkForToppingErrors","errorTopping","addToppingsToRecipes","payloadRecipes","addToppings","addInventoryItemsToRecipes","getInventoryItemsCommon","lstInventoryItems","completed","findCommon","arrayUnion","reduce","some","l","InventoryItem","idDrive","x","anyUncomplete","s","nombreEsSinTipo","indexOf","recipeFilters","flexWrap","imageFormModal","components_RecipeToppings","labelQuantity","NewRecipeDetail_NewRecipeDetail","det","components_RecipeDetails","itemToUpdate","itemToRm","customclassName","dismiss","recipes_RecipeImageForm","editImageRecipe","finally","columna","RecipeImageFilter","oringClassificationList","handleSelectChangeSegmentation","react_select_esm","RecipesImage","RecipeImageFilter_RecipeImageFilter","action","imageViewModal","p","recipesImage_RecipeImageForm","image","editPresentacionWithFormData","indx","editTipoRecetaWithFormData","editTipoSaborWithFormData","fontWeight","URLTipoReceta","URLPresentacion","Dropdown","selectedIndex","single","onSelect","disabledFirstSelect","labelKey","RecipeDrivesDetail","allData","indexToRemoveArray","itemToRemove","onSearch","eliminarDiacriticos","driveNombre","driveEstado","DriveEstado","driveMunicipio","DriveMunicipio","selectItem","onRemoveSelected","itemsToRemove","removeMany","onRemoveAction","indexToRm","onRemoveByIndex","all","idCaffenio","texto","detailList","drive","caffenios","dr","State","Municipality","idEstado","idMunicipio","newResult","recipeDetailId","RecipeDetailId","PropTypes","array","isRequired","func","isNewRecipe","bool","RecipeForm","handleDropdownChange","propName","diferencia","innerHTML","idRecipeDetail","DetailsGroupBy","removeDriveDetail","group","dl","nuevaCantidad","itemsToUpdate","parseFloat","getDrives","asyncToGenerator","regenerator_default","_yield$to","_yield$to2","getCaffenios","optionDrive","select_Drive","changeSelectEstado","estado","objCaffenios","listaCiudades","listaDrives","StateId","Municipalityid","eliminarDuplicados","eliminarObjDuplicados","idCiudad","ciudad","NombreNuevo","select_city","changeSelectCiudad","changeSelectDrive","nuevoArray","lookup","satClassifications","satCodes","detailModal","mostrarDrivesModal","recipeDetail","toppingModal","optionState","optionCity","newArray","lookupObject","itemA","itemB","clas","option","getOptionValue","MobileActive","Code","modalDrive","gp","detailDrivesModal","recipeDetailDrives","HasMenuAssigned","DriveId","dri","classNamePrefix","RecipeDrivesDetail_RecipeDrivesDetail","SatAPI","ClassificationForm","getNextMaxPosition","maxPosition","maxBy","o","VALIDATION_SCHEMA","classification","when","is","nullable","otherwise","notRequired","keyEvent","charCode","fileName","getAllClasificacionGrupo","clasificacionesGruposAux","idClasificacionGrupo","clasificacionesGrupos","formatValues","setFieldError","objSegment","itemClasificacion","Validators","presentation","flavor","grain","milk","recipeType","Classifications","pageClassifications","pressEnter","classifications_ClassificationForm","NewClassification","goBack","FlavorForm","NewFlavor","flavors_FlavorForm","Flavors","pageFlavors","GrainForm","NewGrain","grains_GrainForm","Grains","pageGrains","MilkForm","NewMilk","milks_MilkForm","Milks","pageMilks","MilkT","PresentationForm","modalConfirmChangeStatus","URLIcon","URLImagen","NewPresentation","presentations_PresentationForm","Presentations","searchSwitch","handleFilterData","u","pagePresentations","changuestatus","active","tabIndex","toChangeStatus","PriceDriveAPI","priceList","priceDetail","priceDetails","InventoryItemPTForm","getUnits","getByCodeProvider","setUnits","getUnitsAnSaveData","validData","UnitPurchase","StorageUnit","ConvFactorBuy","ConvFactorSale","FactorBuyMin","AmountMin","AmountMax","InventoryTypeId","CodeSat","IsTopping","ToppingPrice","ToppingWeight","InventoryItemUnitsForm","convFactorBuyDisabled","dropdown_Dropdown","unitsGP","unidadBase","UnidadBase","unidadAlmacenamiento","itemGP","unidadPedido","Equivalencia","InventoryItemTypeForm","parent","OrderTypeId","orderTypes","inventoryTypes","InventoryItemEndForm","IsPerecedero","VALIDATION_SCHEMA_WITH_TOPPING","URLimagen","VALIDATION_SCHEMA_WITH_TOPPINGPRICE","ShowToppingPrice","this_inventoryItem","InventoryItemForm","listaPrecios","handlePriceList","actualPricesList","selectedPricesList","getUnitsGP","getInventoryItems","assertThisInitialized","disableConvFactor","alertConvFactor","stepPtProgress","stepUnitsProgress","stepTypeProgress","stepEndProgress","stepPtCompleted","stepUnitsCompleted","stepTypeCompleted","formatUnits","sortBy","ts","getCodes","formatCodes","getInventoryTypes","formatTypes","getOrderTypes","formatOrTypes","PriceListId","stepEndCompleted","stepsForms_InventoryItemPTForm","currentItem","stepsForms_InventoryItemUnitsForm","stepsForms_InventoryItemTypeForm","stepsForms_InventoryItemEndForm","nextProps","NewInventoryItem","parseInt","CodeSatTopping","DateUpdate","objectWithoutProperties","getByList","InventoryItems_InventoryItemForm","show_info","show_info_equivalencias","show_info_clasificacion","show_info_end","data-content","InventoryItemImageForm","SyncInventoryItem","close","selectedOptionS","optionSegmento","listaSyncDrives","pageSyncDrives","CaffeniosAux","optionSegmentoAux","select_segmento","optionStateAux","select_state","optionCityAux","optionDriveAux","OptionSelectSegmento","Segmento","segmentacion","stateAux","listaEstados","eliminarDuplicadosCiudad","changeSelectSegmento","IdArticuloInventario","IdCaffenio","syncDrives","listaSyncDrivesAux","InventoryItems","tempInventoryItems","InventoryItems_InventoryItemImageForm","editImage","InventoryItems_SyncInventoryItem","RecipeTypeForm","URLImage","RecipeTypes","pageRecipeTypes","recipeTypes_RecipeTypeForm","NewRecipeType","UNITS_LIST","UnitForm","isValid","SatCode","getUnitCodes","Key","NewUnit","units_UnitForm","Units","pageUnits","loadingToast","info","autoClose","closeButton","InventoryTypesAPI","inventoryType","INVENTORY_TYPES_LIST","InventoryTypeForm","description","NewInventoryType","InventoryType_InventoryTypeForm","InventoryTypes","pageInventoryTypes","Warehouse","warehouseArr","buscarPorCodigoNombre","GetByIdArticulo","warehouseFilter","producto","ChangeStatus","WarehouseObj","status","handlePageChange","listDrives","listProduct","driveid","objCaffDrive","validarCombos","status_combo","driveIds","obj2","cleanCheckBoxs","elements","childVisible","switchAllInv","switchAllSug","seeSwitchInv","seeSwitchSug","buttonMesagge","cheked","applySwitchAll","estatus","arrProductosChange","Suggestible","Inventariable","editAll","selectAllPages","valueEstado","buttonSelecAll","evt","switchAllSugtemp","switchAllInvTemp","pageItems","wareSugges","wareInven","nombreDrive","RemesaAPI","remesa","Remesas","isWebServiceLoading","docNumberSearch","Remesa","Detalle","Status","actionsOnRemesa","Caffenio","Id","Accion","actions","selectedAction","selectedDrive","handleSelectedAction","handleSelectedDrive","warehouses","doAction","DOCNUMBR","idGPSucursal","IdGPWarehouse","getWarehouses","MenuDriveAPI","menu","menuId","detailMenu","idDrives","filtros","MenuForm","menus","MenuId","BaseOn","activeMenu","BaseMenuId","CaffenioDriveAPI","caffenioInfo","caffenio","newData","MenuFilters","origClassificationList","handleSegmentationChange","menuAux","IdSegmento","selectedSegmentation","tempSegmentation","familiasFiltro","classificationListAux","MenusDrive","estadoAsignacion","Todos","ConDrive","SinDrive","selectedMenus","selectedAsignacion","getMenusByIdDrives","menusFilter","filterSegmento","filterActivo","handleFilterSegmentoActivo","m","pageMenus","validarMenuSegmentacion","indexMenu","pageCheck","getCurrentPageCheck","activateMasive","switchAll","seeSwitch","changePage","syncMenu","postSync","syncAll","menusSeleccionadosActivos","syncAllModal","handleMenuDriveModalBody","tablaDrives","menuDrivesModalBody","selectAllResults","handleFiltroAsignacion","evento","getMenusWithoutDrives","filters","enabledApply","filterRecipes","postDetailUpdate","modalRecipesChange","arregloAux","filtroMenuAux","_loop","v","_ret","listaSegmentos","menuDrivesModal","menuDrivesModalTitle","optionsEstado","selectedEstado","optionsCiudad","selectedCiudad","optionsDrive","showPVFilters","showRecipeFilters","showModalInfoManu","getMenusWithSegmentation","value2","responseCaffenio","getAllSegments","alignItems","MenuFilters_MenuFilters","menusDrive_MenuForm","pageRecipesList","NewMenu","MenuDetail","menuDetailsFull","menuDetails","estatusReceta","Inactivo","_yield$to3","_yield$to4","_yield$to5","_yield$to6","_yield$to7","_yield$to8","_yield$to9","_yield$to10","_yield$to11","_yield$to12","_yield$to13","_yield$to14","getById","dataLoaded","filterDataOnPages","_selectedMenuDetails","selectedMenuDetails","_menuDetails","pageMenuDetails","menuDetail","indexMenuDetail","DetailMenuId","md","changeStatusDetail","infoService","selectedEstatus","handleFiltroEstatus","NombreSegmento","getDetails","switchAllTemp","PriceListForm","pricesList","fncActiveList","listas","arrListActive","activeList","PriceListBasedId","SelectDriveForm","newItem","setValuesToParent","setStateFunc","setCityFunc","setDriveFunc","PricesDrive","Label","pagePricesList","indexOri","handleSearchParamsChange","field","timeout","clearTimeout","setTimeout","idListaPrecio","floor","SalePrice","updateMasivePrices","confirmModalPriceChange","showModalInfoPricesList","components_SelectDriveForm","pricesDrives_PriceListForm","NewPriceList","PriceListFormDetail","ClassificationName","PresentationName","FlavorTypeName","RecipeTypeName","MilkTypeName","GrainTypeName","PricesDetail","priceListDetailsFull","priceListDetails","ConPrecio","SinPrecio","showDialogEditPrice","rt","g","updatePrice","pld","PriceDetailId","pagePriceListDetails","_selectedPricesDetail","selectedPricesDetail","indexPricesDetail","_pricesDetails","recetas","updatePrices","priceListDetail","getPrices","pricesDrives_PriceListFormDetail","PrivateRoute","rest","expiration","strToken","isAbletoEnter","Route","render","Redirect","SaldoRegaloAPI","list_clients","byLoyaltyAccount","SaldoRegaloFormFile","handleDateChange","date","attr","validateFile","sheet","is_valid_file","rows","file_index","validations_header","validationsHeader","is_valid","cell","_rows","temporary_row","getRowsFromFile","row_index","row_validation","validationsRow","updateSheet","validationsLoyaltyAccount","account","bold","fontColor","rgb","is_valid_headers","correct_headers","header_validation","validateHeaderName","file_header","correct_header","correct_name","Identifier","StarDate","EndDate","Deposit","ReasonDeposit","properties","column_index","_value","toFixed","results","validationsIdentifier","validationsDate","validationsDeposit","validationsReason","format","isBefore","is_valid_row","text_date","current_date","moment","regex","moment_date","XlsxPopulate","numberToDate","checkDateFormat","_i","downloadCheckedFile","workbook","outputAsync","blob","file_name","extension","msSaveOrOpenBlob","temporary_url_download","URL","createObjectURL","link_download_file","appendChild","click","revokeObjectURL","removeChild","validateExtensionFile","EXTENSIONS_ALLOWED","handleSelectedFile","EXTENSION","fromDataAsync","validation","isValidFile","validate","accountSelection","_this2$state","saldo","IsActive","SaldoRegaloForm","identifier","validationsAmount","amount","reason","buildSaldo","CustomerNumber","LoyalAccount","add","react_datepicker_min_default","popperPlacement","popperModifiers","offset","enabled","preventOverflow","escapeWithReference","boundariesElement","withPortal","dateFormat","minDate","maxDate","subtract","SaldoRegaloErrorFile","tableHeaders","tableBody","Data","Error","SaldoRegaloGuideFile","leftMenuOptions","menuOption","changeColorSelectedOption","selectedMenu","indexOption","getSelectedMenuDescription","menuOptionDescription","getTableHeaders","header","SaldoRegaloCheckFile","SaldosRegalo","saldos","handleFilterChange","handleStatusChange","handleDateChangeRaw","singleModalForm","typeModal","widthModal","validate_dateMayor","fechaInicial","fechaFinal","AnioI","MesI","DiaI","AnioF","MesF","DiaF","getSaldosFiltered","getFiltered","cleanFilters","LoyaltyAccount","saldosBackUp","loyaltyAccount","create_list","fileErrors","saldoIndex","pageSaldos","fileExcel","SaldoRegaloForm_SaldoRegaloForm","SaldoRegaloFormFile_SaldoRegaloFormFile","SaldoRegaloErroFile_SaldoRegaloErrorFile","SaldoRegaloGuideFile_SaldoRegaloGuideFile","SaldoRegaloCheckFile_SaldoRegaloCheckFile","autoComplete","locale","todayButton","minWidth","renderModalTitle","renderSwitch","ConfigurationVPAPI","NumConfiguracionVP","newVPConfiguration","numVP1","numVP2","ComboDatosAPI","pais","CaffenioForm","GPSucursalId","NewName","OpenDate","CloseDate","WarehouseGPCode","TaxRateId","PromoListId","FactDataId","RailsNumber","MobileSales","RefillRestrictions","Municipio","idColonia","Estado","BetStreets","ExtNumber","MainStreet","NumAlmacen","PostalCode","Segment","Suburb","setCaffenio","_useState3","arrMenus","arrListasPrecios","arrListaPromo","arrDatosFact","arrTasaImp","arrSegmento","arrState","arrCities","arrColonias","arrPostalCode","selectedListaPrecio","_useState4","lists","setLists","Promise","getPromoList","getFactData","getTaxRate","getSegment","getDirPostalCode","getDirState","getDirCity","getDirSuburb","_ref2","stringDate","numCarriles","ci","SocialReason","idPostalCode","postalCodeId","CityId","SuburbId","NumAlmacenGP","NumLanes","PromoList","RestRefill","OpeningDate","ClosingDate","FactData","City","ConfiguracionVPComponent","checkHasEmptyFields","handleTamLetra","handleNumVP","handleClickToggle","handleChangeTextInput","handleClickToggleArray","createDefaultConfigVP","setConfigurationVPActive","toggleDosLineasProduccion","handleDosLineasProduccion","activateDosLineasProduccion","deactivateDosLineasProduccion","getDefaultTamLetras","configurationVP","minLength","Pantalla","ConfigurationVPButtonisActive","ConfigurationVPIsActive","TamLetraConfiguracionVP","TamLetraEncabezado","TamLetraReceta","TamLetraToppings","TamLetraContador","TimerActualizacionOrdenes","NumPedidosSimultaneos","NumCarriles","ActualizacionAutomatica","DosLineasProduccion","showModalDosLineasProduccion","listaDosLineasProduccion","selectedOptionDosLineasProduccion","PedidosAuto","tipoDeSolicitudes","ConfiguracionVPContainer","getVPs","GetVPs","VPs","getConfigVP","configVP","_newState2","GetConfigVP","TiposSolicitudConfiguracionVP","idTipoSolicitud","_callee4","newTipoDeSolicitudes","newConfig","_context4","CreateDefaultConfigVP","newIdConfigurationVP","getNumConfigsVP","GetNumConfigsVP","numConfigsVP","ActivarDosLineasProduccion","DesactivarDosLineasProduccion","auxListaDosLineasProduccion","auxVPsDosLineasProduccionActiva","hasEmptyFields","auxHasEmptyFields","switchActiveTemp","isSubmiting","UpdateConfigurationVP","dosLineasProduccionisActive","activasVPDosLineasProduccion","NumOrdenes","idConfiguracionVP","DrivePSucursal","CaffenioDrive","pageDrives","CaffeniosFilter","activeAll","arrListMenu","arrListPrices","selectedMenuAll","tempAllMenu","tempAllList","selectedPricesAll","switchAllActive","showCaffenio","showConfigVP","drives","handleDropdown","nuevoValor","indexLista","copyItem","updateInformation","indexDrive","btnApply","newPageCaffenios","idMenu","finalPageCaffenios","tempItem","updatesInformation","pageCaffenios","menusList","finalData","GetTipoSolicitudes","selecMenuAll","selecListAll","switchAllActiveTemp","listaPrecio","ItemCaffenio","caffenioDrive_CaffenioForm","ConfiguracionVPContainer_ConfiguracionVPContainer","SCHEMA","isClosed","isWorking","StepInfoDrive","esm_extends","enableReinitialize","caffenioUpdated","StepFacturacionDrive","DatosFact","TasaImp","PlazasAdminsAPI","SucursalAdminAPI","Pais","Colonia","Sucursal","Plaza","hrWithLegend","marginBottom","border","borderTop","lineHeight","backgroundColor","paddingLeft","paddingRight","StepLocationDrive","arrCountries","arrStates","arrSuburbios","arrZipCodes","arrSucursales","arrPlazas","getDirCountry","idPlazaAdmin","AddressId","isSearchable","idSucursal","country","getStates","stateName","getCities","cityName","getSuburbios","onInputChange","inputValue","_ref3","NewCaffenio","showInfoModal","stepInfoDrive","stepFacturacionDrive","stepLocationDrive","stepInfoDriveComplete","stepFacturacionDriveComplete","stepLocationDriveComplete","PlazaAPI","getPlazas","idPlaza","SucursalAPI","getSucursales","getCaffenio","plz","suc","driveSteps_StepInfoDrive","driveSteps_StepFacturacionDrive","driveSteps_StepLocationDrive","showInfoConfirm","callback","createCaffenio","res","handleSave","updateCaffenio","CaffenioId","RecipeConfigurationStep","VALIDATION_SCHEMA_EDIT","loadFile","requiredImages","sintiposArray","formatValue","lstRecetasSinTipo","RecipeType","requiredImage","RecipeComplementInfoStep","RecipeItemsAndToppingStep","detalleToEdit","detailIndex","cities","estados","newValue","totalDrives","pushStates","pushCities","recipes_components_SelectDriveForm","caffenioId","RecipeCard","handleDetailChange","indexArticulo","tipoDetalleLabel","detalles","receta","currentDetailIndex","onDetailChange","handleDetailChangeTemporal","currentRecipeDetails","handleDetailChangeSave","handleDetailChangeClose","AmountTemporal","edicionTemporal","handleDetailRemoval","indexDetalle","labelType","handleToppingChange","tipoToppingLabel","onToppingChange","handleToppingChangeTemporal","handleToppingChangeSave","handleToppingRemoval","Detail","detailModalDetalle","currentDetailLabel","currentTipoLabel","detailModalTopping","_ref4","tituloCard","Nombres","Clasificacion","TipoPresentacion","TipoReceta","detalle","TipoSabor","sabor","hayError","errorDetail","errorMsgs","detallesTemporales","toppingsTemporal","TipoLeche","leche","TipoGrano","grano","detallesBase","apply","toppingsBase","RecipesConfigStep","cardsOpen","selectedCard","cards","tarjeta","indiceTarjeta","Propiedades","RecipeCard_RecipeCard","detallesActualizados","tipoLabel","indice","toppingsActualizados","NewRecipeMulti","getClassifications","getRecipe","detailRecipe","commonItems","ct","onlyUnique","ClassificationSat","clasificacion","modalGeneric","modalGenericTitle","modalGenericBody","modalGenericDone","crearTarjetas","datosReceta","lstTarjetasFinal","lstTarjetasTemp","objTemp","baseFormOpen","modalConfirm","cardsPreview","crearRecetasDesdeTarjetas","onTarjetaDetailChange","tarjetas","onTarjetaToppingChange","objBase","lstRecetasFinal","lstRecetasTarjeta","lstRecetasTemp","objTarjeta","lstTarjetas","truncatedName","indexTarjeta","driveId","_loop2","_loop3","substr","TruncatedName","guardarRecetasMulti","lstRecetas","formatItem","totalInventory","drivesIds","lastIndex","editWithFormData","recipesByFlavor","totalRecipes","Completed","createWithFormData","ImgResource","stepConfigRecipe","stepComplementInfo","stepCommonItemsAndToppings","stepCombineRecipes","stepConfigRecipeCompleted","stepComplementInfoCompleted","stepCommonItemsAndToppingsCompleted","stepCombineRecipesCompleted","self","stepsItems_RecipeConfigurationStep","flavorsImages","TiposDetalle","stepsItems_RecipeComplementInfoStep","stepsItems_RecipeItemsAndToppingStep","objTarjetaBase","ApplySync","stepsItems_RecipesConfigStep","articulos","Open","removeToppingFromPriceList","NombreListaPrecio","Drives","_pageToppings","indiceCompuesto","inventoryItemId","setAllPriceToppings","ExcludeSelectedToppings","ExcludeToppings","confirmModalUpdateExcludeToppings","getAllToppings","updateIndividual","ShowModalToppingsExclude","model","GetAllDrivesExcluded","modalSeeToppingsExclude","LstDrivesExcluded","RemoveAllExcludeToppings","lstDrives","removeAll","removeAllExcludedToppings","RemoveExcludeToppings","idArticuloInventario","ToppingExcluido","RemoveSingleExcludeToppings","itemRemoved","newList","CaffenioAPI","Topping","lstD","FieldAddons","addons","BuscarSegmentacion","timer","fetching","nameSearch","react","Field_Addons_FieldAddons","nuevaSegmentacion","nuevaSegmentacionUsuario","ciudades","rangoEdades","generos","nivelesLealtad","horarios","diasSemana","temperaturas","ServerPagination","goToPage","aria-current","require","TablaSegmentaciones","columnas","segmentacionVisible","IdTipoSegmentacion","duplicate","downloadFile","IdSegmentation","loading","segmentaciones","CreationDate","UpdateDate","TotalClients","pagination_ServerPagination","requestfile","responseType","SegmentacionAPI","States","idFilterFamilyProduct","Segmentaciones","getSegmentaciones","tableLoading","TotalPages","totalSegmentaciones","TotalResults","buscarSegmentaciones","editarSegmentacion","eliminarSegmentacion","removeSegmentation","currentSeg","confirmModal","changeStatusSegmentacion","currentStatus","openDuplicateModal","showDuplicateModal","copySegmentacion","duplicateName","downloading","downloadClientsInfo","Blob","link","duplicateNameValid","fileToDownload","sstate","createHistory","components_BuscarSegmentacion","TablaSegmentaciones_TablaSegmentaciones","seg","FilterLoading","react_content_loader_es","speed","primaryColor","secondaryColor","y","rx","ry","Checkbox","SegmentacionForm","clasificacionesC","clasificacionesA","nivelLealtadC","nivelLealtadA","segmentationHasNoFilters","rangoEdad","genero","nivelLealtad","horario","temperatura","dataIsValid","clients","daySelected","dia","IdFilterPurchaseDay","invalidate","validated","setClassification","IdFilterFamilyProduct","IdClassification","getTemperaturas","setLealtad","getNivelesLealtadPorSegmento","getCuentaLealtad","getActualizacionBySegmento","getEstadosPorSegmentacion","getEstados","getFamiliasPorSegmentacion","getFamilias","getCiudades","GetCiudades","Set","Cities","city","IdFilterTypeProductModel","TypesProducts","prepareSegmentacion","IdFilterAge","IdFilterPurchaseSchedule","Refill","refill","totalClients","LoyaltyAccounts","PurchaseDays","PurchaseSchedules","AgeRanges","Genders","MembershipTypes","membresias","invalidName","working","invalidSegment","bandera","_this4","getName","_this5","isOptionDisabled","IdGender","Checkbox_Checkbox","n","generoIndex","nivel","IdTypeLoyaltyAccount","nivelIndex","mem","IdMembresia","memIndex","FilterLoading_FilterLoading","NuevaSegmentacion","loadForEdit","temp_seg","_x","loadData","_yield$to15","_yield$to16","_yield$to17","_yield$to18","getRangoEdades","getGeneros","getHorarios","getDiasSemana","getMembresias","prepareSegmentationForEdit","classif","h","editSegmentacion","createSegmentacion","validarSegmentacion","countClients","getSegmentacion","components_SegmentacionForm","useModal","isShowing","setIsShowing","toggle","TablaValidarCliente","validClients","ClientId","LastName","TypeLoyaltyAccount","Reason","PortalModal","hide","ReactDOM","createPortal","SegmentacionFormExcel","setSegmentacion","_useState5","_useState6","setValidated","_useState7","_useState8","_useState9","_useState10","_useState11","_useState12","_useState13","_useState14","setConfirmModal","_useState15","_useState16","setInvalidName","_useState17","_useState18","setWorking","_useState19","_useState20","setSegments","_useState21","_useState22","setInvalidSegment","_useState23","_useState24","setSegment","_useState25","_useState26","_useState27","_useState28","validateExcel","setValidateExcel","_useState29","_useState30","setValidClients","_useState31","_useState32","setAmountCodes","_useState33","_useState34","excelFile","setExcelFile","_useState35","_useState36","loadingFullScreen","setLoadingFullScreen","_useState37","_useState38","setIsLoading","_useState39","_useState40","setValidData","clientValidatedModal","_useState41","_useState42","resetInputs","onClicValidarExcel","dataV","_validData","validateExcelBySegment","Validation","IsValid","Clients","TotalValidClients","finish","downloadTemplateExcel","templateExcel","validExcel","clientsArray","client","IdSegment","updatedSegmentacion","TotalNotValidClients","portals_PortalModal","PromocionAPI","idPromotion","SegmentoDataForm","inputs","setInput","typesSegmentation","setTypesSegmentation","segmentations","setSegmentations","isLoadingTypesSegmentation","setIsLoadingTypesSegmentation","isLoadingSegmentation","setIsLoadingSegmentation","setSelectedSegmentation","getTypesSegmentation","typeSegmentationRes","PromocionesAPI","getPromoTypeSegmentation","segmentationsRes","typeSegmentation","getSegmentations","segmentation","_ref5","onClicBorrarExcel","_ref6","_callee5","_context5","_ref7","_callee6","_context6","extension1","PromoTypeSegmentationId","TablaValidarClientes_TablaValidarCliente","useForm","setInputs","setErrors","handleInputChange","persist","replaceInputs","setError","getInputs","cleanInputs","NuevaSegmentacionUsuario","createFile","components_SegmentacionFormExcel","SearchFormV2","tooltip","newBtnTitle","TablaNotificaciones","setTotalPages","setCurrentPage","setLoading","notificaciones","NotificationId","TypeName","CategoryName","notificacion","oading","NotificacionAPI","typeId","category","starDate","endDate","start","end","notificationId","notifScheduleId","NotificationScheduleId","Notificaciones","statusModal","deleteModal","setNameSearch","setNotificaciones","currentNotif","setCurrentNotif","getNotificaciones","_args","CurrentPage","changeNotificationStatus","Success","searchform_SearchFormV2","notif","deleteNotification","Chip","small","dataTooltip","closeable","onDelete","NotificacionDataForm","notification","tags","setTags","Title","getTags","generatePreview","preview","tag","util_chip_Chip","Tag","splittedName","ext","DetalleDescriptionForm","fileURL","setFileURL","NotificationCategoryId","DetailDescription","UrlImageNotification","detailDescription","SaldoForm","BalanceInfo","localNotif","setLocalNotif","comparators","setComparators","balances","setBalances","selectedComparator","NotificationFilterTypeId","selectedBalance","NotificationBalanceTypeId","resFilters","resBalances","getComparators","getBalanceTypes","b","NumVisitasForm","periods","setPeriods","VisitInfo","Visits","selectedPeriod","NotificationVisitPeriodTimeId","resPeriods","getVisitPeriods","TipoNotificacionForm","types","categories","NotificationTypeId","InfoGeneralForm","AccionNotificacionFrom","idSegment","screens","setActions","fetchData","getActions","NotificationActionId","selectedScreen","NotificationScreenId","urlRegex","screen","NuevaNotificacionForm","setNotification","_useForm","saveNotification","setCategories","setIdSegment","setScreens","imageUrl","urlImg","uploadImageBySegment","ImagePath","updateNotification","getScreensBySegment","getCategoriesByType","selectedType","selectedCategorie","inputsAreValid","infoGeneralValid","tipoNotificacionValid","extraTipoNotifDataValid","accionNotifValid","dataNotifValid","NuevaNotificacion","setData","notifTypes","getNotificationTypes","getNotification","localizer","momentLocalizer","Agenda","events","setEvents","today","monthOffset","setMonthOffset","navigateContants","day","startOf","endOf","eventos","getEvents","_x2","react_big_calendar_esm","popup","startAccessor","endAccessor","views","month","culture","onSelectEvent","eventPropGetter","isSelected","hexColor","opacity","textColor","components","toolbar","onNavigate","charAt","dateCellWrapper","cloneElement","ResumenNotificacion","_notification","cat","act","getScreens","abrupt","typeLabel","categoryLabel","actionLabel","screenLabel","word-wrap","AgendarNotificacionForm","minTime","maxTime","days","setDays","setTypes","frequencies","setFrequencies","monthlies","setMonthlies","frequencyTypes","frequency","monthly","getFrequencyEventTypes","getFrequentTypes","getFrequentMonthlyTypes","NotificationScheduleTypeId","frecuency","NotificationScheduleFrequencyTypeId","toDate","onChangeRaw","es","date2","getFullYear","getMonth","getDate","getHours","getMinutes","showTimeSelect","showTimeSelectOnly","timeIntervals","startDate","dayOfMonth","timeCaption","showMonthYearPicker","formattedDate","dayArr","hoursArr","hours","NotificationScheduleMonthlyTypeId","hour","AgendarNotificacion","TablaEventosAgenda","agendando","paginationInfo","setPaginationInfo","columnNames","currentEvent","setCurrentEvent","getNotificationEvents","DateCreation","DescriptionScheduleType","DescriptionEvent","DescriptionScheduleFrequencyType","DateStart","DateEnd","changeNotificationEventStatus","deleteEvent","AgendarHeader","setAgendando","setProbando","PruebaNotificacion","probando","setIdentifier","formErr","setFormErr","SendTestNotification","TablaHistorial","getNotificationEventsHistory","DateExecution","Test","TotalNotifications","TotalPushSent","DescriptionStatus","DetalleNotificacion","DateHour","ScheduleUniqueEvent","Hour","ScheduleDailyEvent","hoursDays","Days","DayId","ScheduleWeeklyEvent","ScheduleMonthlyEvent","MenuAppAPI","DescriptionApp","Featured","IconFile","ImageFile","classificationId","SearchForm3","btnAction","icon","btnTitle","TablaMenuApp","feature","OrderIndex","UrlIcon","DetalleClasificacionApp","reloadData","fileIcon","setFileIcon","fileImage","setFileImage","featured","setFeatured","OrdenMenuApp","setClassifications","setFilterText","currentClassif","setCurrentClassif","getClasificacionesMenu","SearchFormV3_SearchForm3","featureClasificacionApp","EditarClasificacionApp","getClasificacionApp","updateClasificacionApp","ClassificationCard","SortableItem","SortableElement","gridStyles","SortableContainer","gridTemplateColumns","gridGap","gridItemStyles","GridItem","Grid","disableAutoscroll","OrdenarMenu","saveMenuOrder","axis","onSortEnd","oldIndex","newIndex","arrayMove","isFullScreen","UberEatsAPI","itemId","ItemId","IsRecipe","restaurante","NewRestaurant","driveChangeOption","restaurant","drivesAvalaibles","driveSelected","StoreId","getDrivesAvailables","for","Restaurantes","restaurants","getRestaurantes","Restaurante","deleteRestaurante","CaffenioRelRestauranteId","pageRestaurants","downloadMenuReport","changeStatusOrderRelease","EnableOrderRelease","Restaurant","indexP","RestaurantP","changeStatusCancelNotification","EnableCancelNotification","createRestaurante","toDetails","ubereats_NewRestaurant","InfoOrderRestaurant","RecipesRestaurantTable","collapsed","loadingChangingStatus","activateCaffenioRecipe","ToppingsRestaurantTable","ToppingId","UberEatsMenuRestaurantTable","Type","Bold","activateUberEatsItem","RestaurantDetails","getRestaurantInfo","getRestaurante","getUberEatsRestaurantMenu","updateRestaurantInfo","loadingChangeIntegrationStatus","EnablePOSIntegration","inactivateRestaurant","activateRestaurant","loadingUberEatsItemChange","inactivateUberEatsItem","selectedTab","UberEatsMenu","loadingCaffenioRecipeChange","inactivateCaffenioRecipe","RecipesCaffenio","UberEatsMenuRestaurantTable_UberEatsMenuRestaurantTable","RecipesRestaurantTable_RecipesRestaurantTable","ToppingsRestaurantTable_ToppingsRestaurantTable","ToppingsCaffenio","ModalAsignacion","_ref$driveInfo","driveInfo","_ref$listLideres","listLideres","_ref$listSupervisores","listSupervisores","_ref$listEncargadas","listEncargadas","_ref$listCoordinadore","listCoordinadoresDrive","_ref$listIdsLideresPr","listIdsLideresPrevSelected","onClose","onSave","liderSelected","supervisorSelected","encargadaSelected","coordinadoresSelect","popupVisible","tempLider","lider","lid","Lider","supervisor","sup","Supervisor","encargada","enc","Encargada","coordinador","coor","CoordinadorDrive","handleChangeLider","handleChangeSupervisor","handleChangeEncargada","handleChangeCoordinadorDrive","driveData","updateLiderSupervisor","EmpleadosAPI","idCategoriaEmp","SucursalesAPI","sucursal","AsignacionLiderSupervisor","sucursales","listIdsSupervisoresPrevSelected","listIdsEncargadasPrevSelected","listIdsCoordinadoresDrivePrevSelected","detailVisible","pagesDirves","listSucursales","listIdsLideres","listIdsSupervisores","listIdsEncargadas","listIdsCoordinadores","CaffenioDrivesAPI","getCaffenioParaAsignacion","getEmpleados","idEmpleado","ApellidoP","ApellidoM","listSeted","tempSucursales","driveName","listIdsCoordinadoresDrive","ModalAsignacion_ModalAsignacion","updatedInfo","indexDriveToReplace","HistorialMovimientosAPI","filtro","ExcelFile","ExportExcel","ExcelSheet","ExcelColumn","DATE_OPTIONS","weekday","year","MOVIMIENTOS","MODULOS","HistorialMovimientos","listHistorial","historial","HistorialAPI","getHistorialMovimientos","hist","Fecha","toLocaleDateString","getFormatedDate","dateToFormat","handleChangeDate","fechaInicio","fechaFin","modulo","usuario","movimiento","filename","Movimiento","Modulo","Usuario","Descripcion","idMovimiento","movimientos","FichaDepositoAPI","fechas","PaginationReports","ReporteCorte","fecha","modoImprimir","rowSpan","numConvenio","num","numRef","totalEfectivo","CaffenioReporteTabla","fichas","fichasFilter","fichaSelect","pageFichas","fichasChecked","selectedOptionB","OptionSelectBranch","optionBranch","creatingPDF","tipoFecha","ConsultarFichasPorFecha","changeSelectSucursal","objSucursal","objDrive","Branch","FechaInicio","FechaFin","getByDate","drivesSelected","ficha","indexCheck","DepositSlipId","onCreatePDF","createPDF","pdf","jsPDF","procesarFicha","finalIndex","html2canvas","querySelector","windowWidth","windowHeight","scrollX","scrollY","scale","canvas","imgData","toDataURL","numImgPag","posYImg","addPage","addImage","crearNombrePDF","pdfCompletado","esDriveUnico","fichaActual","idficha","selectAllBranchOffices","selectAllDrives","formatCoin","cash","Intl","NumberFormat","currency","scrollTo","select_branch","fechaHoy","closeMenuOnSelect","caffenioReporteTabla_ExcelFile","caffenioReporteTabla_ExcelSheet","caffenioReporteTabla_ExcelColumn","dateTime","DriveName","reference","ReferenceNumber","agreement","AgreementNumber","Cash","isChecked","indexFicha","pagination_PaginationReports","fichasPag","reporteCorte_ReporteCorte","totalDeposito","fichaId","fichaData","itemFicha","data-id","newFeatured","handleNewFeatured","PlazasAPI","plaza","idUser","asign","ModalPlaza","onUpdate","onInsert","titleModal","Estatus","dataToSave","updatePlaza","resp","createPlaza","CatalogoPlazas","listPlazas","plazaSelected","modalVisible","plazas","allPages","pla","ModalPlaza_ModalPlaza","oldList","ixd","handleUpdateList","ModalSucursal","updateSucursal","createSucursal","CatalogoSucursales","sucursalSelected","getAllSucursales","ModalSucursal_ModalSucursal","ModalEditUsuario","_ref$userInfo","initialListPlazas","userPlazas","pageUserPlazas","listPlazasSelected","pagePlazasSelected","tempListPlazas","getUserPlazas","UserId","tempPlazas","Email","Roles","listTempPlazas","handleChangePlaza","finalListPlazas","PlazaId","deleteUserPlaza","handleDeletePlaza","Plazas","updateUserPlazas","SearchFormV5","activate","activateSearch","UsersAPI","AdminUsuarios","users","userSelected","setActivate","listUsers","getUsers","searchform_SearchFormV5","handleFilterUsers","user","ModalEditUsuario_ModalEditUsuario","PromoCopyForm","promotions","IdPromocion","promo","PromoCommentsForm","CurrentComment","loadComments","Comments","CreatedAt","IdPromo","IdUser","toISOString","boxSizing","borderRadius","resize","minHeight","boxShadow","DrivePromotionsAPI","newStatus","DrivePromotionsStatusAPI","DrivePromotionCommentsAPI","idPromo","idComment","DrivePromotionsTypeAPI","registerLocale","PromosDrive","filterPromotions","selectedPromotion","arrStatusPromos","arrTypePromos","showModalConfirm","actionTitle","actionBody","actionOnConfirm","actionOnCancel","isAdmin","getPromotionsData","statusVencido","getByParams","formatData","IdStatusPromo","idEstatus","isVencido","InitDate","StatusColor","Color","StatusShortName","code","resetConfirmParams","onActionSelect","estatusActivo","updateStatus","estatusValidacion","showModalComments","estatusCancelado","filtersNotNULL","formatDt","statusPromo","typePromo","fromDatePromo","EditPromo","rolesStorage","IdTypePromo","statusPromo_selected","typePromo_selected","fromDatePromo_selected","Auto","borderColor","components_PromoCopyForm","objToSave","Promotion","PromoComentsForm","selectedpromo","estatusBorrador","BasePromo","idTipoPromo","getMinDate","initDate","copyDate","valueOf","setDate","listTipoPromos","setValues","handleNextStep","data-tip","data-for","index_es","place","effect","changeTypePromo","PromoDetailReembolsoProducto","isPercentageSelected","optionsTipoCantidad","quantity","isPercentage","PromoDetailReembolsoRecarga","isRecursiveSelected","Recursividad","quantityToRecharge","IsPercentage","PromoDetailDescuento","idTipoDescuento","listTipoDescuento","isRecursiveDescuentoSelected","RecursividadDescuento","checkCantidadMinima","minProducts","tipos","aplicaPara","DetallePromo","VALIDATION_SCHEMA_REEMBOLSO_RECARGA","idTipoReembolso","idTipoRegalo","VALIDATION_SCHEMA_REEMBOLSO_PRODUCTO","VALIDATION_SCHEMA_DESCUENTO","VALIDATION_SCHEMA_QR_CUSTOM","VALIDATION_SCHEMA_QR_REFUND","setByProducto","ByProduct","typePromotion","promotion","listReembolsoTipo","tipoRegalos","selectedApp","PromoDetailReembolsoProducto_PromoDetailReembolsoProducto","PromoDetailReembolsoRecarga_PromoDetailReembolsoRecarga","PromoDetailDescuento_PromoDetailDescuento","descripcionAPP","handleLastStep","PromoProductsTable","selectedProducts","handleDeleteProducto","isBaseApply","isBase","setIsBase","showImage","float","maxHeight","idTipoReceta","tipoReceta","idTipoSabor","Sabor","idTipoGrano","Grano","idTipoLeche","Leche","idPresentacion","Presentacion","getCadRecipesNumber","ProductosPromo","selectedRecipeTypes","selectedPresentations","selectedMilks","selectedGrains","selectedFlavors","selectedClassification","segmentos","segmentoSeleccionado","tempClassification","prod","fam","idClasificacion","segmentosAux","_objectSpread2","recipeTypeListByClass","flavorsListByClass","grainsListByClass","milksListByClass","presentationsListByClass","getRecipesNumber","PromoProductsTable_PromoProductsTable","tmp","selection","DrivesPromo","selectedOptionE","OptionSelectState","optionSegmentacion","drivesAsignados","CaffeniosActivos","segmentacionesAux","setValue","select_segmentacion","OptionSelectSegmentacion","nombreAux","changeSelectSegmentacion","eliminarDuplicadosEstado","drivesFiltered","drivesAll","index1","index2","pagedrivesAsignados","getDrivesNumber","drivesAllAssignados","handleRemoveDrives","DrivePromotionRestrictionsAPI","optionActive","RestriccionesPromo","listRestriccionTipo","restrictionsSelected","tipoRSelected","endDateRestriction","initDateRestriction","tipoRestriccionData","Order","PromoRestrictionTypeId","PromoRestrictions","idPromoRestriction","tipoR","tr","restriction","el","addRestriction","time","DrivePromotionsRefundTypeAPI","DrivePromotionsTipoRegalosAPI","DrivePromoDiscountTypesAPI","NuevaPromo","steps","base","productos","restricciones","currentStep","isRecursive","show_info_confirm","promoTypeData","reembolsoTypeData","listTipoDescuentoData","tipoRegaloData","DrivePromotionsTypesAPI","RefundTypeId","PromoDiscountTypeId","Productos","Restricciones","esTipoCombo","tipoPromo","esTipoDescuento","esReembolso","PromoStep","Promos_BasePromo","Promos_DetallePromo","DrivesPromo_DrivesPromo","RestriccionesPromo_RestriccionesPromo","sendToValidation","restriccionesResum","lst","restrictions","sendPromo","isRembolsoRecarga","show_detail","dataToSend","savePromotion","detail_confirm","inx","products_confirm","drives_confirm","restrictions_confirm","Percentage","TaxGP","ModalTasaImpuesto","impuesto","valuesToSave","TaxRateAPI","CatalogoImpuestos","listImpuestos","impuestoSelected","impuestos","ModalTasaImpuesto_ModalTasaImpuesto","handledSave","ReportesConcilicacionAPI","ReporteConciliacion","conciliaciones","conciliacionesFilter","conciliacioneSelect","pageConciliaciones","conciliacionesChecked","ConsultarConciliacionesPorFecha","conciliacion","idArqueoConciliacion","reporteConciliacion_ExcelFile","reporteConciliacion_ExcelSheet","reporteConciliacion_ExcelColumn","rowName","TotalEfectivoReal","TotalEfectivo","TotalEfectivoDiff","VoucherFijaReal","VoucherFija","VoucherFijaDiff","VoucherMovilReal","VoucherMovil","VoucherMovilDiff","TotalUberEatsReal","TotalUberEats","TotalUberEatsDiff","TotalRappiReal","TotalRappi","TotalRappiDiff","TotalMovilReal","TotalMovil","TotalMovilDiff","EstadoCuenta","Drive","Caja","conciliacionesPag","ReportesArqueoAPI","ReporteArqueo","arqueos","arqueosFilter","arqueoSelect","pageArqueos","arqueosChecked","ConsultarArqueosPorFecha","arqueo","reporteArqueo_ExcelFile","reporteArqueo_ExcelSheet","reporteArqueo_ExcelColumn","arqueosPag","ReportesRetiroAPI","ReporteRetiros","retiros","retirosFilter","retiroSelect","pageRetiros","retirosChecked","ConsultarRetirosPorFecha","retiro","idTipoMovimientoCaja","ReporteRetiros_ExcelFile","ReporteRetiros_ExcelSheet","ReporteRetiros_ExcelColumn","Cantidad","retirosPag","ReportesCancelacionAPI","ReporteCancelaciones","cancelaciones","cancelacionesFilter","cancelacioneSelect","pageCancelaciones","cancelacionesChecked","ConsultarCancelacionesPorFecha","cancelacion","idOrden","ReporteCancelaciones_ExcelFile","ReporteCancelaciones_ExcelSheet","ReporteCancelaciones_ExcelColumn","tiempoFin","Subtotal","IVAtotal","TipoSolicitud","rowMotivo","MotivoCancelacion","cancelacionesPag","SearchFormV4","onChangeCheckbox","TablaPromociones","promociones","PromoQRId","PromoTypeDescription","QRTypeName","ShowApp","DateCreated","PromoStatusId","downloadQrXlsx","downloadQrZip","deletePromotion","ShowPrefixCampaign","prefixCampaign","Promociones","setPromociones","currentPromo","setCurrentPromo","getPromociones","getPromoQR","namePromotion","_x3","_x4","searchform_SearchFormV4","PromocionDataForm","isLoadingPromotions","maxDateCupon","setMaxDateCupon","promotionObject","IdPromotion","validateMinCharecterNamePromotion","startDateCupon","endDateCupon","descriptionApp","showApp","restrictionsApp","TipoPromocionDataForm","typesPromotion","PromoTypeId","TipoQRDataForm","typesQR","QRType","Qr","QRTypeId","MostrarAppDataForm","scheduleNotification","appImage","AgendarNotificacionDataForm","minDateNotification","setMinDateNotification","notificationDate","titleNotification","content","contentNotification","amountCodes","cantidad","NuevaPromocionForm","typesQRTemp","setTypesQRTemp","uploadImage","getBodySave","saveUpdateCall","promotionId","dateStart","dateEnd","promoTypeId","qrTypeId","promoTypeSegmentationId","idSegmentation","promoDescriptionApp","promoRestrictionApp","notificationApp","notificationDateSend","notificationTitle","notificationDescription","imagePathApp","promotionData","typePromotionData","typeQRDataForm","showAppData","scheduleNotificationData","tempObject","_tempObject","CantidadCuponesDataForm_TipoPromocionDataForm","NuevaPromocion","setIsLoadingPromotions","getPromoFinished","getTypesPromoFinished","getQrTypeFinished","getPromotions","validateMultipleCalls","getPromoType","getQRType","wordBreak","ResumenPromocion","_promotion","PromotionName","DateStartFormat","DateEndFormat","PromoDescriptionApp","PromoRestrictionApp","AmountCodes","PromoTypeSegmentationDescription","SegmentationName","ImagePathApp","codesPromotion","PathFile","open","PromoQRDetailCodeId","IdClient","CodeCampaignApp","Redeem","Expires","LoyaltyAccountType","DetallePromocion","setPromotion","setCodesPromotion","getPromotionDetails","TablaCodigoRelacionado_TablaPromociones","NuevoPrefijoCampanaDataForm","validateMinCharecterPrefixCampaign","savePrefix","promoQRId","prefix","NuevoPrefijoCampana","NuevoPrefijoCampanaForm_NuevaPromocionForm","ReporteExtractosComponent","handleStartTimeChange","handleEndingTimeChange","getCaffenioListCalculations","activateFilter","selectedOptionCity","selectedOptionDrive","dist_es","selectedDate","subDays","startHour","minStartHourLimit","maxStartHourLimit","timeFormat","endingHour","minEndingHourLimit","maxEndingHourLimit","filterIsActive","calculationListFlatened","pageCalculationList","parseISO","HoraInicio","HoraFin","Calculo","CantidadVendida","calculations","ReporteExtractosAPI","filterData","ReporteExtractosContainer","GetCaffeniosWithCalculations","caffeniosFilter","caf","GetCaffeniosListCalculations","calculationList","flatten","nState","set","minute","second","millisecond","setHours","SearchFormV6","getSegmentos","listSegmentos","defaultSegment","handleChangeSegmento","segmentSearch","activeSearch","segmentSelected","marginBlock","ServerPagination2","ModalEditarEmpresas","isEditable","isCreated","_ref$empresa","empresa","_ref$segmentos","listaEmpresas","showEditable","NombreEmpresa","GiroEmpresa","Giro","ContactoEmpresa","Contacto","DireccionEmpresa","Direccion","handleSaveInfo","giro","contacto","direccion","businessData","updateInfoToBusiness","createNewBusiness","TablaEmpresas","actualEmpresa","setActualEmpresa","setListaSegmentos","setDetailVisible","setEditable","setCreated","editBusiness","TotalEmpleados","deleteBusiness","empresas","pagination_ServerPagination2","ModalEditarEmpresa_ModalEditarEmpresas","businessUpdated","indexBusinessToReplace","business","indexBusiness","updateBusiness","Empresas","setSegmentSearch","setActiveSearch","setEmpresas","setSegmentos","getEmpresas","getAllBusiness","createBusiness","changeBusinessStatus","searchform_SearchFormV6","activeBusiness","ProyeccionesAPI","proyeccionData","DrivesProyeccion","selectedOptionState","selectedDrives","_selectedDrives","changeDrivePage","drivesChecked","isLoadingP","GetActiveCaffenios","cancelDrivesModal","saveDrives","ProyeccionForm","handleClickPicker","opc","displayColorPickerFondo","displayColorPickerLetra","handleClosePicker","handleChangePickerFondo","hex","handleChangePickerLetra","ColorLetra","toggleEditDrivesModal","showModalEditDrives","showModalDrive","toggleModalRemoveDrive","showModalRemoveDrive","driveToRemove","removeDriveFromList","_drives","closeModalRemoveDrive","checkedDrives","proyeccionList","NombreCorto","Orden","positive","styles","reactCSS","default","colorLetra","swatch","popover","cover","react_color_es","ProyeccionProductos_DrivesProyeccion","ProyeccionProductos","pageProyecciones","Proyecciones","ProyeccionesFilter","UpdateProyeccionData","editProyeccion","configure","GetProyeccionesData","proyecciones","NewProyeccion","CreateProyeccionData","ProyeccionProductos_ProyeccionForm","ReporteProyeccionComponent","changeSelectProyeccion","selectedOptionProyeccion","optionProyeccion","ReporteProduccionAdelantadoAPI","ReporteProyeccionContainer","resProyecciones","select_Proyeccion","LstIdProducionAdelantado","OptionSelectProyeccion","ComunicadosVPAPI","tituloParam","estatusParam","drivesParam","Titulo","comunicadoData","idComunicado","strDate","comunicado","ini","fin","ComunicadosVP","styleAlert","Comunicados","pageComunicados","ComunicadosFilter","ComunicadosFilterBack","showModalRemoveComunicado","comunicadoToEdit","messageRemove","optionEstatus","selectedOptionEstatus","debouncedFilterProcess","changeSelectEstatus","comunicadoList","editComunicado","toggleModalRemoveComunicado","msg","GetEstatus","closeModalRemoveComunicado","removeComunicadoFromList","Eliminado","Posicion","UpdateEncComunicado","IdComunicado","pauseComunicadoFromList","comunicadoEdit","Pausado","activateComunicadoFromList","debounce","fun","filterProcess","estatusList","GetComunicadosData","GetPosiciones","resDrives","select_Estatus","flexGrow","FormatDate","comunicados","DrivesComunicado","ComunicadoForm","styleDriveMax","stylePreviewImage","changeSelectPosicion","validateMaxComunicados","GetMaxComunicadosDrives","responseDrives","idx","showModalMessageMaxComunicados","errDrives","removeComunicado","UrlImagen","size","positionOptions","FechaCreacion","FechaModificacion","imageStr","showModalImage","ComunicadosVP_DrivesComunicado","NewComunicado","getDrivesComunicado","GetDrivesComunicado","UpdateComunicadoData","CreateComunicadoData","com","ComunicadosVP_ComunicadoForm","PagosBancosAPI","GetPagosNetPay","GetFilterPagoNetPay","GetSucursales","ReintentarFolioPago","pago","ReactExport","formatoPrecio","listaTipoPago","idTipoPago","listaEstatusPago","PagosBancos","listaPagosNetPay","paginadoPagosNetPay","listaMunicipioFiltro","municipioFiltro","listaDriveFiltro","driveFiltro","tipoPagoFiltro","tipoEstatusFiltro","listaMunicipioFiltroAux","listaDriveFiltroAux","conversionTipoPago","tipoPago","municipio","fechaConvertida","listaMunicipios","tipoEstatus","pagosBancos_ExcelFile","FechaRegistro","pagosBancos_ExcelSheet","pagosBancos_ExcelColumn","NumTerminal","NombreCaffenio","MontoTotal","TipoPago","Folio","MensajeError","Batch","IdPagoNetPayGP","paginadoPagosNetPayAux","reintentarPago","AdministrarEmpleadosAPI","GetListaEmpleados","GetEmpleadosPorTipo","idTipoEmpleado","GetSupervisoresPorCoord","idCoordinador","DeleteEmpleado","empleado","PostSupervisorCoordinador","coordinadorSupervisores","DeleteCoordinadorSupervisor","supervisorCoordinador","GetGeneros","GetSegmentaciones","GetTiposEmpleado","PutEmpleado","PostEmpleado","GetSupervisoresDrive","GetSupervisoresDrivePorId","GetSupervisoresDisponibles","ModalListaSupervisors","coordinadorSeleccionado","supervisoresAsignados","listaSupervisores","supervisoresSelected","auxSupervisoresAsignados","auxlistaSupervisores","NombreCompleto","supervisores","idEmpleadoCoord","idEmpleadoSup","every","supAux","menuPlacement","handleEliminarRelSupervisor","EditCoordinadoresSupervisores","empleadoSeleccionado","handleOpenLoading","handleCloseLoading","handleActualizarEmpleado","listaGeneros","listaTiposEmpleado","listaDrivesAnterior","listaDrivesFiltrados","listaGenerosAux","listaSegmentosAux","listaTiposEmpleadoAux","listaDrivesAux","drivesAsignadosAux","idSexo","tipo","NumEmpleado","CorreoElectronico","email","tipoEmpleado","filtrarDrives","CoordinadoresSupervisores","paginadoEmpleados","modalListaSupervisores","modalEliminar","listaSupervisoresReasignar","listaCoordinadoresReasignar","coordinadorReasignar","modalEditar","listaEmpleadosFiltrados","listaEmpleados","nombreFiltro","listaTipoEmpleadoFiltro","tipoEmpleadoFiltro","listaSegmentacionFiltro","segmentacionFiltro","listaEstadoFiltro","estadoFiltro","listaDriveFiltroFiltrados","listaTodosDrive","handleFiltros","listaEmpleadosAux","listaTodosAux","todosAux","Puesto","handleEditarModal","handleEliminarModal","handleEmpleadoModal","listaSupervisoresValidar","eliminarEmpleado","ModalListaSupervisores_ModalListaSupervisors","EditCoordinadoresSupervisores_EditCoordinadoresSupervisores","empleadoActualizado","nuevaInformacion","emp","NewCoordinadoresSupervisores","SupervisoresAsignados","DrivesAsignados","CoordinadorAsignado","listaCoordinadores","listaCoordinadoresAux","listaSupervisoresAux","clienteEnviado","MovimientosMenu","listaMovimientosMenu","paginadoMovimientosMenu","listaSucursales","listaTiposMovimientosMenu","FiltroFechaRegistroInicio","FiltroFechaRegistroFin","FiltroFechaActualizacion","FiltroSegmento","FiltroEstado","FiltroCiudad","FiltroDrive","listaMovimientosMenuAux","listaSucursalesAux","listaTiposMovimientosMenuAux","GetRegistrosMovimientos","GetTiposMovimiento","obtenerInfoMovimiento","rellenarSegmentos","rellenarEstados","rellenarCiudades","listaTiposMovimientosAux","listaMovimientosMenuInfo","TipoMovimiento","tipoMovimiento","idTipoMovMenu","idFechaActualizacion","valor","FechaRegistroInicio","FechaRegistroFin","FechaActualizacion","movimientosFiltradosAux","MunicipalityId","MovimientosMenu_ExcelFile","MovimientosMenu_ExcelSheet","MovimientosMenu_ExcelColumn","movimientoMenu","idRegistroMovMenu","movimientosMenu","HistorialVersion","listaVersiones","listaNumVersiones","FiltroFechaInicio","FiltroFechaFin","FiltroVersion","FiltroTipoSistema","listaTipoSistemas","listaVersionesAux","listaTipoSistemasAux","ObtenerHistorialVersiones","ObtenerTipoSistemas","ObtenerNumVersionSync","listaNumVersionesAux","versionSync","version","tipoSistema","idTipoSistema","IdTipoSistema","HistorialVersion_ExcelFile","HistorialVersion_ExcelSheet","HistorialVersion_ExcelColumn","Sistema","Equipo","VersionSync","CreateDate","RunDate","RoutesContainer","posed","div","enter","delay","exit","AppContainer","Menu_Menu","Header_Header","react_pose_es","Switch","privaterouter_PrivateRoute","path","InventoryType","MenuDrives","PriceDetail","ProyeccionFormula","ReporteProyeccion","exact","PrefijoCampana","lib","Login","enterFunc","logueado","access_token","tokenObj","decode","expires_in","exp","uid","caches","names","_step","_iterator","_createForOfIteratorHelper","App","isLogged","HashRouter","AppLogin","Login_Login","src_App","process","origin","fetch","ready","unregister","checkValidServiceWorker","registerServiceWorker"],"mappings":"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","file":"static/js/main.63eaff79.chunk.js","sourcesContent":["import React from 'react';\r\nimport RecipeTypesAPI from '../../../services/RecipeType';\r\nimport PresentationsAPI from '../../../services/Presentations';\r\nimport MilksAPI from '../../../services/Milk';\r\nimport GrainsAPI from '../../../services/Grain';\r\nimport FlavorsAPI from '../../../services/Flavor';\r\nimport ClasificacionesAPI from '../../../services/Classification';\r\nimport { toast } from 'react-toastify';\r\n\r\nimport Select from 'react-select';\r\nimport lodash from 'lodash';\r\nimport ErrorMessages from '../../../util/validation-error-messages';\r\nimport EmpresasAPI from '../../../services/CaffenioEmpresas/Empresas';\r\n\r\nexport default class RecipeFilters extends React.Component{\r\n origRecipeTypesList = []; //Donde se va a guardar la lista original de tipos de receta\r\n origFlavorsList = []; //Donde se va a guardar la lista original de sabores\r\n origGrainsList = []; //Donde se va a guardar la lista original de granos\r\n origMilksList = []; //Donde se va a guardar la lista original de leches\r\n origPresentationList = []; //Donde se va a guardar la lista original de presentaciones\r\n\r\n constructor(props){\r\n super(props)\r\n this.state = {\r\n // Variables sonde se almacenaran los criterios de busqueda definitivos\r\n recipeTypeList: [],\r\n selectedRecipeTypesList: [],\r\n presentationsList: [],\r\n selectedPresentationsList: [],\r\n milksList: [],\r\n selectedMilksList: [],\r\n grainsList: [],\r\n selectedGrainsList: [],\r\n flavorsList: [],\r\n selectedFlavorsList: [],\r\n classificationList: [],\r\n selectedClassificationList: [],\r\n segmentationList: [],\r\n selectedSegmentationList: [],\r\n noMulti: this.props.noMulti || false,\r\n noRecipeType: this.props.noRecipeType || false,\r\n noFlavorType: this.props.noFlavorType || false,\r\n noGrainType: this.props.noGrainType || false,\r\n noMilkType: this.props.noMilkType || false,\r\n noPresentation: this.props.noPresentation || false,\r\n disabledByFamily: this.props.disabledByFamily || false,\r\n }\r\n }\r\n\r\n componentDidMount = () => {\r\n let state = {...this.state};\r\n RecipeTypesAPI.getAll().then(response => {\r\n let temp = [];\r\n \r\n response.data.map(obj => {\r\n if(obj.RecipeName) {\r\n temp.push({value: obj.RecipeTypeId, label: obj.RecipeName})\r\n }else{\r\n temp.push({value: obj.RecipeTypeId, label: obj.Description})\r\n }\r\n })\r\n temp.sort(this.compare); // Ordenar los labels para elegir\r\n state.recipeTypeList = temp;\r\n this.origRecipeTypesList = lodash.cloneDeep(temp)\r\n \r\n // Obtener todas las presentaciones\r\n return PresentationsAPI.getAll()\r\n }).then(response => {\r\n let tempPresentationList = [];\r\n response.data.map(obj => {\r\n if(obj.Active){\r\n tempPresentationList.push({value: obj.PresentationId, label: obj.Name})\r\n } \r\n })\r\n tempPresentationList.sort(this.compare); // Ordenar los labels\r\n state.presentationsList = tempPresentationList\r\n this.origPresentationList = lodash.cloneDeep(tempPresentationList)\r\n\r\n // Obtener los tipos de leche\r\n return MilksAPI.getAll()\r\n }).then(response => {\r\n let tempMilkList = [];\r\n response.data.map(obj => {\r\n tempMilkList.push({value: obj.MilkTypeId, label: obj.Description})\r\n })\r\n tempMilkList.sort(this.compare); // Ordenar los labels\r\n state.milksList = tempMilkList\r\n this.origMilksList = tempMilkList\r\n \r\n // Obtener los tipos de grano\r\n return GrainsAPI.getAll()\r\n }).then(response => {\r\n let tempGrainList = [];\r\n response.data.map(obj => {\r\n tempGrainList.push({value: obj.GrainTypeId, label: obj.Description})\r\n })\r\n tempGrainList.sort(this.compare); // Ordenar los labels\r\n state.grainsList = tempGrainList\r\n this.origGrainsList = lodash.cloneDeep(tempGrainList)\r\n \r\n // Obtener los sabores\r\n return FlavorsAPI.getAll()\r\n }).then(response => {\r\n let tempFlavorsList = [];\r\n response.data.map(obj => {\r\n tempFlavorsList.push({value: obj.FlavorTypeId, label:obj.Name})\r\n })\r\n tempFlavorsList.sort(this.compare); // Ordenar los labels \r\n state.flavorsList = tempFlavorsList\r\n this.origFlavorsList = tempFlavorsList\r\n \r\n // Obtener las clasificaciones\r\n return ClasificacionesAPI.getAll()\r\n }).then(response => {\r\n let tempClassificationList = [];\r\n response.data.map(obj => {\r\n tempClassificationList.push({value: obj.ClassificationId, label: obj.Name})\r\n })\r\n tempClassificationList.sort(this.compare); // Ordenar los labels\r\n state.classificationList = tempClassificationList\r\n \r\n return EmpresasAPI.getAllFilterSegments()\r\n }).then(response => {\r\n let tempSegmentsList = []\r\n response.data.map(obj => {\r\n tempSegmentsList.push({value: obj.SegmentId, label: obj.Name})\r\n })\r\n state.segmentationList = tempSegmentsList\r\n \r\n // Guardar el estado\r\n this.setState(state)\r\n }).catch(err => {\r\n this.setState({isLoading: false})\r\n if(err.response)\r\n toast.error(err.response.data.Message)\r\n else\r\n toast.error(ErrorMessages.SinConexion)\r\n })\r\n }\r\n\r\n /**\r\n *Modificar la lista de IDs con los que el usuario ha seleccionado. Aplica sobre las clasificaciones.\r\n * \r\n *@param: arr: arreglo de valores que crea el select multi de react\r\n *@return: nada\r\n */\r\n handleClassificationChange = (arr) => {\r\n let state = {...this.state}\r\n let tempClassificationList = [];\r\n arr.map(obj => {\r\n tempClassificationList.push(obj.value);\r\n })\r\n\r\n state.selectedClassificationList = tempClassificationList;\r\n state.selectedRecipes = []; \r\n\r\n this.setState(state, () => { \r\n this.filterOptionsByClasification();\r\n });\r\n }\r\n \r\n /**\r\n *Modificar la lista de IDs con los que el usuario ha seleccionado. Aplica sobre los tipos de granos.\r\n * \r\n *@param: arr: arreglo de valores que crea el select multi de react\r\n *@return: nada\r\n */\r\n handleSelectChange = (arr, selectedListLabel) => {\r\n let state = {...this.state}\r\n state[selectedListLabel] = arr.map(obj => obj.value);\r\n this.setState(state, () => {\r\n this.sendFilters();\r\n });\r\n }\r\n\r\n sendFilters = () => {\r\n let selectedFilters = {\r\n selectedRecipeTypesList: this.state.selectedRecipeTypesList,\r\n selectedPresentationsList: this.state.selectedPresentationsList,\r\n selectedMilksList: this.state.selectedMilksList,\r\n selectedGrainsList: this.state.selectedGrainsList,\r\n selectedFlavorsList: this.state.selectedFlavorsList,\r\n selectedClassificationList: this.state.selectedClassificationList,\r\n selectedSegmentationList: this.state.selectedSegmentationList,\r\n }\r\n /* console.log(this.state.selectedSegmentationList) */\r\n this.props.onChange(selectedFilters)\r\n }\r\n\r\n /**\r\n * Filtra las opciones de los filtros(hehe) según la Familia seleccionada.\r\n * Por ejemplo, seleccionó la Familia \"Chocolate\" entonces en el filtro de tipo de receta solo me tiene que aparecer \"Caliente\" y \"Frio\"\r\n */\r\n filterOptionsByClasification = () => {\r\n let clasificaciones = this.state.selectedClassificationList\r\n if(clasificaciones.length > 0 ){\r\n let stateFiltros = {}\r\n // Filtrar los tipos de receta\r\n RecipeTypesAPI.getByClasification(clasificaciones).then(response => { \r\n let temp = response.data.map(obj => {\r\n return {value: obj.RecipeTypeId, label: obj.RecipeName ? obj.RecipeName : obj.Description}\r\n })\r\n temp.sort(this.compare);\r\n stateFiltros.recipeTypeList = temp;\r\n this.tempRecipeTypesList = [];\r\n \r\n // Filtrar los sabores\r\n return FlavorsAPI.getByClasification(clasificaciones)\r\n }).then(response => { \r\n let tempFlavorsList = response.data.map(obj => {\r\n return {value: obj.FlavorTypeId, label:obj.Name}\r\n })\r\n tempFlavorsList.sort(this.compare); // Ordenar los labels \r\n stateFiltros.flavorsList = tempFlavorsList;\r\n this.tempFlavorsList = [];\r\n \r\n // Filtrar los granos de cafe\r\n return GrainsAPI.getByClasification(clasificaciones)\r\n }).then(response => {\r\n let tempGrainList = response.data.map(obj => {\r\n return {value: obj.GrainTypeId, label: obj.Description}\r\n })\r\n tempGrainList.sort(this.compare); // Ordenar los labels\r\n stateFiltros.grainsList = tempGrainList;\r\n this.tempGrainList = [];\r\n \r\n // Filtrar los tipos de leche\r\n return MilksAPI.getByClasification(clasificaciones)\r\n })\r\n .then(response => {\r\n let tempMilkList = response.data.map(obj => {\r\n return {value: obj.MilkTypeId, label: obj.Description}\r\n })\r\n tempMilkList.sort(this.compare); // Ordenar los labels\r\n stateFiltros.milksList = tempMilkList;\r\n this.tempMilkList = [];\r\n \r\n // Filtrar las presentaciones\r\n return PresentationsAPI.getByClasification(clasificaciones)\r\n }).then(response => {\r\n let tempPresentationList = response.data.map(obj => {\r\n return {value: obj.PresentationId, label: obj.Name}\r\n })\r\n tempPresentationList.sort(this.compare); // Ordenar los labels\r\n stateFiltros.presentationsList = tempPresentationList;\r\n this.tempPresentationList = [];\r\n\r\n this.setState(stateFiltros, () => this.sendFilters())\r\n }).catch(error => {\r\n this.setState(stateFiltros, () => this.sendFilters())\r\n });\r\n }else{ \r\n this.tempRecipeTypesList = [];\r\n this.tempFlavorsList = [];\r\n this.tempGrainList = [];\r\n this.tempMilkList = [];\r\n this.tempPresentationList = []; \r\n this.tempSegmentationList = []; \r\n this.setState({\r\n recipeTypeList: lodash.cloneDeep(this.origRecipeTypesList),\r\n flavorsList: lodash.cloneDeep(this.origFlavorsList),\r\n grainsList: lodash.cloneDeep(this.origGrainsList),//Donde se va a guardar la lista original de granos\r\n milksList: lodash.cloneDeep(this.origMilksList),//Donde se va a guardar la lista original de leches\r\n presentationsList: lodash.cloneDeep(this.origPresentationList),//Donde se va a guardar la lista original de presentaciones\r\n selectedRecipeTypesList:[],\r\n selectedFlavorsList:[],\r\n selectedGrainsList:[],\r\n selectedMilksList:[],\r\n selectedPresentationsList:[],\r\n selectedSegmentationList: [],\r\n \r\n }, () => this.sendFilters())\r\n }\r\n }\r\n\r\n /**\r\n * Funcion para ordenar lexicograficamente\r\n * @param objA. primer operando\r\n * @param objB. segundo operando\r\n */\r\n compare = (objA, objB) => {\r\n // Use toUpperCase() to ignore character casing\r\n const labelA = objA.label.toUpperCase();\r\n const labelB = objB.label.toUpperCase();\r\n\r\n let comparison = 0;\r\n if (labelA > labelB) {\r\n comparison = 1;\r\n } else if (labelA < labelB) {\r\n comparison = -1;\r\n }\r\n return comparison;\r\n }\r\n\r\n render(){\r\n return(\r\n \r\n
\r\n \r\n { \r\n if(this.state.noMulti){\r\n arr = arr ? [arr] : []\r\n }\r\n this.tempClassificationList = arr;\r\n this.handleClassificationChange(arr)\r\n }}\r\n noOptionsMessage={() => \"No hay opciones\"}\r\n options={this.state.classificationList}\r\n isClearable={true}\r\n />\r\n
\r\n\r\n
\r\n \r\n { \r\n if(this.state.noMulti){\r\n arr = arr ? [arr] : []\r\n }\r\n this.tempRecipeTypesList = arr;\r\n this.handleSelectChange(arr, \"selectedRecipeTypesList\") }}\r\n noOptionsMessage={() => \"No hay opciones\"}\r\n options={this.state.recipeTypeList}\r\n isClearable={true}\r\n isDisabled = { this.state.disabledByFamily && (!this.tempClassificationList || this.tempClassificationList.length === 0)}\r\n />\r\n
\r\n\r\n {!this.state.noRecipeType &&
\r\n \r\n { \r\n if(this.state.noMulti){\r\n arr = arr ? [arr] : []\r\n }\r\n this.tempFlavorsList = arr;\r\n this.handleSelectChange(arr, \"selectedFlavorsList\") }}\r\n noOptionsMessage={() => \"No hay opciones\"}\r\n options={this.state.flavorsList}\r\n isClearable={true}\r\n isDisabled = { this.state.disabledByFamily && (!this.tempClassificationList || this.tempClassificationList.length === 0)}\r\n />\r\n
}\r\n \r\n {!this.state.noGrainType &&
\r\n \r\n { \r\n if(this.state.noMulti){\r\n arr = arr ? [arr] : []\r\n }\r\n this.tempGrainList = arr;\r\n this.handleSelectChange(arr, \"selectedGrainsList\") }}\r\n noOptionsMessage={() => \"No hay opciones\"}\r\n options={this.state.grainsList}\r\n isClearable={true}\r\n isDisabled = { this.state.disabledByFamily && (!this.tempClassificationList || this.tempClassificationList.length === 0)}\r\n />\r\n
}\r\n \r\n {!this.state.noMilkType &&
\r\n \r\n { \r\n if(this.state.noMulti){\r\n arr = arr ? [arr] : []\r\n }\r\n this.tempMilkList = arr;\r\n this.handleSelectChange(arr, \"selectedMilksList\") }}\r\n noOptionsMessage={() => \"No hay opciones\"}\r\n options={this.state.milksList}\r\n isClearable={true}\r\n isDisabled = { this.state.disabledByFamily && (!this.tempClassificationList || this.tempClassificationList.length === 0)}\r\n />\r\n
}\r\n\r\n {!this.state.noPresentation &&
\r\n \r\n {\r\n if(this.state.noMulti){\r\n arr = arr ? [arr] : []\r\n } \r\n this.tempPresentationList = arr;\r\n this.handleSelectChange(arr, \"selectedPresentationsList\") }}\r\n noOptionsMessage={() => \"No hay opciones\"}\r\n options={this.state.presentationsList}\r\n isClearable={true}\r\n isDisabled = { this.state.disabledByFamily && (!this.tempClassificationList || this.tempClassificationList.length === 0)}\r\n />\r\n
}\r\n\r\n
\r\n \r\n {\r\n if(this.state.noMulti){\r\n arr = arr ? [arr] : []\r\n } \r\n this.tempSegmentationList = arr;\r\n this.handleSelectChange(arr, \"selectedSegmentationList\")\r\n }}\r\n noOptionsMessage={() => \"No hay opciones\"}\r\n options={this.state.segmentationList}\r\n isClearable={true}\r\n getOptionLabel={(segment) => segment.value === 1 ? \"Caffenio\" \r\n : segment.value === 9 ? \"Andatti\"\r\n : segment.value === 10 ? \"Momento Espresso\"\r\n : segment.value}\r\n />\r\n
\r\n
\r\n )\r\n }\r\n}","\r\nimport React from 'react';\r\nimport PropTypes from 'prop-types';\r\nimport './Loading.css';\r\n\r\n\r\nconst loading_style = {\r\n position: 'relative',\r\n margin: '0px auto',\r\n width: '40px',\r\n height: '40px',\r\n zIndex: '9999'\r\n};\r\n\r\n\r\n\r\nconst circle_style = {\r\n strokeDasharray: '1,200',\r\n strokeDashoffset: '0',\r\n animation: 'dash 1.5s ease-in-out infinite, color 6s ease-in-out infinite',\r\n strokeLinecap: 'round'\r\n};\r\n\r\n\r\nconst animation = `@keyframes rotate {\r\n 100% {\r\n transform: rotate(360deg);\r\n }\r\n}\r\n@keyframes dash {\r\n 0% {\r\n stroke-dasharray: 1,200;\r\n stroke-dashoffset: 0;\r\n }\r\n 50% {\r\n stroke-dasharray: 89,200;\r\n stroke-dashoffset: -35px;\r\n }\r\n 100% {\r\n stroke-dasharray: 89,200;\r\n stroke-dashoffset: -124px;\r\n }\r\n}\r\n@keyframes color {\r\n 100%, 0% {\r\n stroke: #9CB941;\r\n }\r\n 40% {\r\n stroke: #C23A3E;\r\n }\r\n 66% {\r\n stroke: #836141;\r\n }\r\n 80%, 90% {\r\n stroke: #F1B64C;\r\n }\r\n}`;\r\n\r\n\r\nclass Loading extends React.Component {\r\n render () {\r\n let { component, className, isLoading, children } = this.props;\r\n\r\n if (isLoading) {\r\n let { width, height, margin, style, strokeWidth, isFullscreen } = this.props;\r\n\r\n loading_style.width = width;\r\n loading_style.height = height;\r\n loading_style.margin = margin;\r\n\r\n let svg_style = {\r\n animation: 'rotate 2s linear infinite',\r\n height: height,\r\n transformOrigin: 'center center',\r\n width: width,\r\n position: 'absolute',\r\n top: 0,\r\n bottom: 0,\r\n left: 0,\r\n right: 0,\r\n margin: 'auto'\r\n };\r\n\r\n return React.createElement(\r\n component,\r\n { style: Object.assign({}, loading_style, style) },\r\n ,\r\n isFullscreen ? \r\n
\r\n \r\n \r\n \r\n
\r\n :\r\n \r\n \r\n \r\n );\r\n } else {\r\n return React.createElement(component, { className }, children || null);\r\n }\r\n }\r\n}\r\n\r\n\r\nLoading.propTypes = {\r\n className: PropTypes.string,\r\n isLoading: PropTypes.bool,\r\n style: PropTypes.object,\r\n width: PropTypes.string,\r\n height: PropTypes.string,\r\n margin: PropTypes.string,\r\n component: PropTypes.any,\r\n isFullscreen: PropTypes.bool\r\n};\r\n\r\n\r\nLoading.defaultProps = {\r\n className: '',\r\n isLoading: true,\r\n style: {},\r\n width: '40px',\r\n height: '40px',\r\n margin: '0 auto',\r\n component: 'div',\r\n strokeWidth: '7',\r\n isFullscreen: false\r\n};\r\n\r\n\r\nexport default Loading;\r\n\r\n\r\n// Polyfills\r\nif (typeof Object.assign !== 'function') {\r\n Object.assign = function(target, varArgs) { // .length of function is 2\r\n if (target === null) { // TypeError if undefined or null\r\n throw new TypeError('Cannot convert undefined or null to object');\r\n }\r\n\r\n var to = Object(target);\r\n\r\n for (var index = 1; index < arguments.length; index++) {\r\n var nextSource = arguments[index];\r\n\r\n if (nextSource != null) { // Skip over if undefined or null\r\n for (var nextKey in nextSource) {\r\n // Avoid bugs when hasOwnProperty is shadowed\r\n if (Object.prototype.hasOwnProperty.call(nextSource, nextKey)) {\r\n to[nextKey] = nextSource[nextKey];\r\n }\r\n }\r\n }\r\n }\r\n return to;\r\n };\r\n}","var hasAuth = (request) => {\r\n if(localStorage.getItem(\"token\") && localStorage.getItem(\"tokenExpiration\") > Date.now()/1000){\r\n return request();\r\n }else{\r\n localStorage.clear();\r\n window.location.reload();\r\n }\r\n};\r\n\r\nexport default {hasAuth};","import React from 'react';\r\nimport PropTypes from 'prop-types'\r\n\r\n/**\r\n * Componente de utilería encargado de mostrar un Modal en el cual es\r\n * posible insertar cualquier otro elemento como componentes hijos del mismo.\r\n */\r\n\r\nexport default class Modal extends React.Component{\r\n\r\n // Función que se efectuará cuando el usuario presione alguna tecla\r\n escFunction = (event) => {\r\n if(event.keyCode === 27) {\r\n this.props.cancel();\r\n }\r\n }\r\n\r\n // Se registra un escuchador en caso de que el usuario presione alguna tecla\r\n componentDidMount(){\r\n document.addEventListener(\"keydown\", this.escFunction, false);\r\n }\r\n // Se elimina el escuchador.\r\n componentWillUnmount(){\r\n document.removeEventListener(\"keydown\", this.escFunction, false);\r\n }\r\n\r\n render(){\r\n let width = this.props.width;\r\n return(\r\n
\r\n
this.props.cancel()}/>\r\n
\r\n
\r\n

{this.props.modalTitle}

\r\n \r\n
\r\n
\r\n {/*\r\n En esta parte se dibujan todos los elementos o componentes que se\r\n hayan puesto como hijos del Modal que vienen en la prop children\r\n */}\r\n {this.props.children}\r\n
\r\n {\r\n this.props.footer && \r\n
\r\n {/* \r\n */}\r\n {this.props.footerButtons}\r\n
\r\n }\r\n
\r\n
\r\n )\r\n }\r\n}\r\n\r\nModal.propTypes = {\r\n footer: PropTypes.bool,\r\n customClass: PropTypes.string\r\n}\r\n\r\nModal.defaultProps = {\r\n footer: false,\r\n customClass: \"\"\r\n}","module.exports = \"data:image/png;base64,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\"","import React, { Component } from 'react';\r\nimport SearchForm from \"../../util/searchform/SearchForm\";\r\nimport TableTemplate from \"../../util/tabletemplate/TableTemplate\";\r\nimport NoItems from \"../../util/noitems/NoItems\";\r\nimport Pagination from '../../util/pagination/Pagination';\r\nimport RecipesAPI from '../../../services/Recipe';\r\nimport { toast } from 'react-toastify';\r\nimport Loading from '../../util/loading/Loading';\r\nimport RecipeTypesAPI from '../../../services/RecipeType';\r\nimport PresentationsAPI from '../../../services/Presentations';\r\nimport MilksAPI from '../../../services/Milk';\r\nimport GrainsAPI from '../../../services/Grain';\r\nimport FlavorsAPI from '../../../services/Flavor';\r\nimport ClasificacionesAPI from '../../../services/Classification';\r\n\r\nimport lodash from 'lodash';\r\n\r\nimport ModoGuiado from \"../../modoGuiado/ModoGuiado\"\r\nimport BtnModoGuiado from '../../util/BtnModoGuiado/BtnModoGuiado'\r\n\r\nimport ErrorMessages from '../../../util/validation-error-messages';\r\nimport RecipeFilters from '../../util/recipeFilters/recipeFilters';\r\n\r\nclass RecipeExtractos extends Component {\r\n recipes = [];\r\n origRecipeTypesList = []; //Donde se va a guardar la lista original de tipos de receta\r\n origFlavorsList = []; //Donde se va a guardar la lista original de sabores\r\n origGrainsList = []; //Donde se va a guardar la lista original de granos\r\n origMilksList = []; //Donde se va a guardar la lista original de leches\r\n origPresentationList = []; //Donde se va a guardar la lista original de presentaciones\r\n\r\n // Variables donde se almacenaran los valores seleccionados en el select multi\r\n tempRecipeTypesList;\r\n tempPresentationList;\r\n tempMilkList;\r\n tempGrainList;\r\n tempFlavorsList;\r\n tempClassificationList;\r\n\r\n constructor(props){\r\n super(props);\r\n this.state = {\r\n recipes: [],\r\n filterText: \"\",\r\n recipe: null,\r\n pageRecipes: [],\r\n showModal: false,\r\n editing: false,\r\n isLoading: false,\r\n syncModal: false,\r\n selectedRecipes: [...this.props.selectedRecipes],\r\n checkAll: false,\r\n syncMultiModal: false,\r\n // Variables sonde se almacenaran los criterios de busqueda definitivos\r\n recipeTypeList: [],\r\n selectedRecipeTypesList: [],\r\n presentationsList: [],\r\n selectedPresentationsList: [],\r\n milksList: [],\r\n selectedMilksList: [],\r\n grainsList: [],\r\n selectedGrainsList: [],\r\n flavorsList: [],\r\n selectedFlavorsList: [],\r\n classificationList: [],\r\n selectedClassificationList: [],\r\n manageToppingModal: false,\r\n addToppingModal: false,\r\n toppings: [],\r\n toppingError: false,\r\n menuRecetaModal: false,\r\n menuRecetaModalTitle: \"\",\r\n menuRecetaModalBody: \"\",\r\n menuRecetaCurrent: null,\r\n //Agregar artículos\r\n manageInventoryItemsModal:false,\r\n addInventoryItems:false,\r\n inventoryItems: [], \r\n inventoryItemsTemp: [], \r\n recipesToAddItems:[],\r\n inventoryItemsError:false,\r\n showInventoryItemsInfo:false\r\n }\r\n }\r\n\r\n componentDidMount(){\r\n this.setState({isLoading: true})\r\n let state = {...this.state};\r\n RecipesAPI.getAll().then(response => {\r\n\r\n state.recipes = response.data\r\n let auxCount = 0;\r\n state.recipes.findIndex(obj => {\r\n let isSelected = this.state.selectedRecipes.findIndex(selectedRecipe => selectedRecipe.RecipeId === obj.RecipeId)\r\n if (isSelected != -1) {\r\n obj.statusCheck = true;\r\n auxCount++;\r\n }\r\n return auxCount == this.state.selectedRecipes.length;\r\n })\r\n this.recipes = lodash.cloneDeep(response.data);\r\n \r\n // Obtener todos los tipos de recetas\r\n return RecipeTypesAPI.getAll()\r\n }).then(response => {\r\n let temp = [];\r\n \r\n response.data.map(obj => {\r\n if(obj.RecipeName) {\r\n obj.value= obj.RecipeTypeId;\r\n obj.label= obj.RecipeName;\r\n \r\n }else{\r\n obj.value= obj.RecipeTypeId;\r\n obj.label= obj.Description;\r\n \r\n }\r\n \r\n temp.push(obj)\r\n return obj;\r\n })\r\n temp.sort(this.compare); // Ordenar los labels para elegir\r\n state.recipeTypeList = temp;\r\n this.origRecipeTypesList = lodash.cloneDeep(temp)\r\n \r\n // Obtener todas las presentaciones\r\n return PresentationsAPI.getAll()\r\n }).then(response => {\r\n let tempPresentationList = [];\r\n response.data.map(obj => {\r\n if(obj.Active){\r\n obj.value= obj.PresentationId;\r\n obj.label= obj.Name;\r\n tempPresentationList.push(obj)\r\n return obj\r\n //\r\n } \r\n })\r\n tempPresentationList.sort(this.compare); // Ordenar los labels\r\n state.presentationsList = tempPresentationList\r\n this.origPresentationList = lodash.cloneDeep(tempPresentationList)\r\n\r\n // Obtener los tipos de leche\r\n return MilksAPI.getAll()\r\n }).then(response => {\r\n let tempMilkList = [];\r\n response.data.map(obj => {\r\n obj.value= obj.MilkTypeId;\r\n obj.label= obj.Description;\r\n tempMilkList.push(obj)\r\n return obj;\r\n })\r\n tempMilkList.sort(this.compare); // Ordenar los labels\r\n state.milksList = tempMilkList\r\n this.origMilksList = tempMilkList\r\n \r\n // Obtener los tipos de grano\r\n return GrainsAPI.getAll()\r\n }).then(response => {\r\n let tempGrainList = [];\r\n response.data.map(obj => {\r\n obj.value= obj.GrainTypeId;\r\n obj.label= obj.Description;\r\n tempGrainList.push(obj)\r\n return obj;\r\n \r\n })\r\n tempGrainList.sort(this.compare); // Ordenar los labels\r\n state.grainsList = tempGrainList\r\n this.origGrainsList = lodash.cloneDeep(tempGrainList)\r\n \r\n // Obtener los sabores\r\n return FlavorsAPI.getAll()\r\n }).then(response => {\r\n let tempFlavorsList = [];\r\n response.data.map(obj => {\r\n obj.value= obj.FlavorTypeId;\r\n obj.label= obj.Name;\r\n tempFlavorsList.push(obj)\r\n return obj;\r\n \r\n })\r\n tempFlavorsList.sort(this.compare); // Ordenar los labels \r\n state.flavorsList = tempFlavorsList\r\n this.origFlavorsList = tempFlavorsList\r\n \r\n // Obtener las clasificaciones\r\n return ClasificacionesAPI.getAll()\r\n }).then(response => {\r\n let tempClassificationList = [];\r\n response.data.map(obj => {\r\n obj.value= obj.ClassificationId;\r\n obj.label= obj.Name;\r\n tempClassificationList.push(obj)\r\n return obj;\r\n })\r\n tempClassificationList.sort(this.compare); // Ordenar los labels\r\n state.classificationList = tempClassificationList\r\n \r\n console.log(\"El state recipes extractos >> \", state);\r\n // Guardar el estado\r\n this.setState(state);\r\n }).catch(err => {\r\n this.setState({isLoading: false})\r\n if(err.response)\r\n toast.error(err.response.data.Message)\r\n else\r\n toast.error(ErrorMessages.SinConexion)\r\n })\r\n }\r\n\r\n /**\r\n * Funcion para ordenar lexicograficamente\r\n * @param objA. primer operando\r\n * @param objB. segundo operando\r\n */\r\n compare = (objA, objB) => {\r\n // Use toUpperCase() to ignore character casing\r\n const labelA = objA.label.toUpperCase();\r\n const labelB = objB.label.toUpperCase();\r\n\r\n let comparison = 0;\r\n if (labelA > labelB) {\r\n comparison = 1;\r\n } else if (labelA < labelB) {\r\n comparison = -1;\r\n }\r\n return comparison;\r\n }\r\n\r\n // Método encargado de recibir el texto en el input de búsqueda y filtrar los elementos en\r\n // la tabla \r\n handleSearchInput = (text) => {\r\n let state = this.state;\r\n state.filterText = text;\r\n this.setState(state, this.handleSearchMultipleFieldInput);\r\n }\r\n\r\n /**\r\n *Realizar el filtrado sobre las recetas para desplegar solo los elementos\r\n *que cumplen con las caracteristicas que el usuario ingreso.\r\n * \r\n *@param: nada\r\n *@return: nada\r\n */\r\n handleSearchMultipleFieldInput = () => {\r\n let recipes = this.recipes.filter(\r\n recipe => ( \r\n (this.state.selectedRecipeTypesList.length > 0 ? \r\n this.state.selectedRecipeTypesList.includes(recipe.RecipeTypeId) : \r\n true) &&\r\n (this.state.selectedFlavorsList.length > 0 ? \r\n this.state.selectedFlavorsList.includes(recipe.FlavorTypeId) : \r\n true) &&\r\n (this.state.selectedPresentationsList.length > 0 ? \r\n this.state.selectedPresentationsList.includes(recipe.PresentationId) : \r\n true) &&\r\n (this.state.selectedMilksList.length > 0 ? \r\n this.state.selectedMilksList.includes(recipe.MilkTypeId) : \r\n true) &&\r\n (this.state.selectedGrainsList.length > 0 ? \r\n this.state.selectedGrainsList.includes(recipe.GrainTypeId) : \r\n true) &&\r\n (this.state.selectedClassificationList.length > 0 ? \r\n this.state.selectedClassificationList.includes(recipe.ClassificationId) : \r\n true) &&\r\n (this.state.filterText.trim() !== '' ?\r\n ( (recipe.KiwiId \r\n ? recipe.KiwiId.toLowerCase().normalize(\"NFD\").replace(/[\\u0300-\\u036f]/g, \"\").includes(this.state.filterText.trim().toLowerCase().normalize(\"NFD\").replace(/[\\u0300-\\u036f]/g, \"\")) \r\n : false) \r\n || recipe.Description.toLowerCase().normalize(\"NFD\").replace(/[\\u0300-\\u036f]/g, \"\").includes(this.state.filterText.trim().toLowerCase().normalize(\"NFD\").replace(/[\\u0300-\\u036f]/g, \"\")))\r\n : true)\r\n )\r\n );\r\n \r\n let state = {...this.state};\r\n state.recipes = lodash.cloneDeep(recipes);\r\n let auxCount = 0;\r\n state.recipes.findIndex(obj => {\r\n let isSelected = this.state.selectedRecipes.findIndex(selectedRecipe => selectedRecipe.RecipeId === obj.RecipeId)\r\n if (isSelected != -1) {\r\n obj.statusCheck = true;\r\n auxCount++;\r\n }\r\n return auxCount == this.state.selectedRecipes.length;\r\n })\r\n state.checkAll = false;\r\n this.setState(state);\r\n }\r\n\r\n\r\n handleSelectChange = (objFilters) => {\r\n this.setState(objFilters, () => {this.handleSearchMultipleFieldInput();})\r\n }\r\n\r\n /**\r\n * Funcion que se ejecuta al darle click al checkbox del header\r\n */\r\n selectAllCheck = () => {\r\n let _checkAll = !this.state.checkAll\r\n let _selectedRecipes = [...this.state.selectedRecipes]\r\n let _pageRecipes = this.state.pageRecipes\r\n _pageRecipes.forEach(recipe => {\r\n let indexRecipe = _selectedRecipes.findIndex(item => item.RecipeId === recipe.RecipeId)\r\n recipe.statusCheck = _checkAll\r\n if(_checkAll){\r\n if(indexRecipe === -1) _selectedRecipes.push(recipe)\r\n }else{\r\n if(indexRecipe !== -1) _selectedRecipes.splice(indexRecipe, 1)\r\n }\r\n\r\n })\r\n\r\n this.setState({checkAll: _checkAll, selectedRecipes: _selectedRecipes})\r\n }\r\n\r\n /**\r\n * Funcion que se ejecuta al cambiar la pagina del tablero\r\n */\r\n changeRecipePage = (recipes) => {\r\n let recipesChecked = 0\r\n let checkAll = false\r\n recipes.forEach(item => {\r\n if(this.state.selectedRecipes.findIndex(id => id.RecipeId === item.RecipeId) !== -1){\r\n recipesChecked++\r\n item.statusCheck = true;\r\n }\r\n else{\r\n item.statusCheck = false;\r\n }\r\n \r\n })\r\n if(recipesChecked === recipes.length) checkAll = true \r\n\r\n this.setState({ pageRecipes: recipes, checkAll: checkAll })\r\n }\r\n\r\n /*\r\n * Funcion que selecciona o des selecciona todas las \r\n * recetas de todas las paginas.\r\n */\r\n selectAllCheckBox = () => {\r\n let state = {...this.state};\r\n let elementsPage = state.recipes\r\n let selectedRecipes = []\r\n // Le asignamos el valor inverso de checkAll a todas las recetas actuales\r\n elementsPage.map(element=>{\r\n if(state.checkAll){\r\n element.statusCheck = false \r\n }else{\r\n element.statusCheck = true\r\n selectedRecipes.push(element)\r\n }\r\n\r\n return element\r\n })\r\n state.checkAll = !state.checkAll;\r\n state.recipes = elementsPage;\r\n state.selectedRecipes = selectedRecipes\r\n this.setState(state);\r\n }\r\n\r\n\r\n render() {\r\n return (\r\n
\r\n\r\n \r\n\r\n
\r\n
\r\n
\r\n
\r\n
\r\n \r\n
\r\n this.handleSearchInput(t)}\r\n itemName={'Receta'}\r\n placeholderText={\"Ingrese SKU o descripción de receta\"}\r\n />\r\n
\r\n
\r\n
\r\n
\r\n
\r\n
\r\n\r\n {/* Filtro multiple para recetas */}\r\n
\r\n
\r\n
\r\n {this.handleSelectChange(objFilters)}}\r\n />\r\n\r\n
\r\n
\r\n
\r\n\r\n
\r\n \r\n
\r\n
\r\n {/* Botones del header de la tabla */}\r\n \r\n {this.state.recipes.length !== 0 \r\n ? {\r\n let _selectedRecipes = [...this.state.selectedRecipes]\r\n let indexRecipe = this.state.selectedRecipes.findIndex(id => id.RecipeId === this.state.pageRecipes[index].RecipeId);\r\n if( indexRecipe === -1)\r\n _selectedRecipes.push(this.state.pageRecipes[index]);\r\n else\r\n _selectedRecipes.splice(indexRecipe, 1)\r\n this.setState({selectedRecipes: _selectedRecipes})\r\n }}\r\n checkAll={this.state.checkAll}\r\n //Controlador del checkbox del header\r\n selectAllCheck={this.selectAllCheck}\r\n rowClickable={false}\r\n /> \r\n : }\r\n this.changeRecipePage(recipes) } />\r\n
\r\n
\r\n\r\n
\r\n\r\n this.props.cancelRecipesModal()}\r\n >\r\n Cancelar\r\n \r\n\r\n \r\n\r\n\r\n \r\n
\r\n \r\n \r\n\r\n \r\n\r\n
\r\n );\r\n }\r\n}\r\n\r\nexport default RecipeExtractos;\r\n","import React, { Component } from 'react';\r\nimport SearchForm from \"../../util/searchform/SearchForm\";\r\nimport TableTemplate from \"../../util/tabletemplate/TableTemplate\";\r\nimport NoItems from \"../../util/noitems/NoItems\";\r\nimport Modal from '../../util/modal/Modal';\r\nimport AcceptModal from '../../util/acceptModal/AcceptModal';\r\nimport Pagination from '../../util/pagination/Pagination';\r\nimport Loading from '../../util/loading/Loading';\r\nimport InventoryItemsAPI from '../../../services/InventoryItem';\r\nimport { toast } from 'react-toastify';\r\nimport ModoGuiado from \"../../modoGuiado/ModoGuiado\"\r\nimport BtnModoGuiado from '../../util/BtnModoGuiado/BtnModoGuiado'\r\nimport Select from 'react-select';\r\nimport CaffenioAPI from '../../../services/Warehouse';//Obtenemos los Drives\r\nimport Field from '../../util/field/Field';\r\nimport ErrorMessages from '../../../util/validation-error-messages';\r\nimport TextField from '../../util/textfield/TextField';\r\nimport lodash from 'lodash';\r\n\r\n\r\nclass ToppingsExtractos extends Component {\r\n inventoryItems = [];\r\n\r\n constructor(props){\r\n super(props);\r\n this.state = {\r\n inventoryItems: [],\r\n pageInventoryItems: [],\r\n filterText: \"\",\r\n inventoryItem: null,\r\n showModal: false,\r\n editing: false,\r\n removeModal: false,\r\n isLoading: false,\r\n Caffenios: [],\r\n selectedOption: [],\r\n selectedOptionC: [],\r\n selectedOptionD: [],\r\n OptionSelect: [],\r\n OptionSelectCity: [],\r\n OptionSelectDrive: [],\r\n drivesArr: [],\r\n checkAll: false,\r\n updateMasive: false,\r\n confirmModalUpdatePrice: false,\r\n priceMassive: null,\r\n buttonSelectAll: false,\r\n selectedToppingsObjList: [...this.props.selectedToppings],\r\n //modal para actualizar precio individualmente \r\n modalUpdatePrice:false\r\n }\r\n }\r\n\r\n componentWillMount(){\r\n\r\n this.setState({isLoading: true});\r\n /**\r\n * Obtenemos todos los toppings\r\n */\r\n\r\n let state = {...this.state};\r\n InventoryItemsAPI.getToppings().then(response => {\r\n \r\n state.inventoryItems = response.data;\r\n state.inventoryItems.map(item => {\r\n item.statusCheck = false;\r\n })\r\n\r\n let auxCount = 0;\r\n state.inventoryItems.findIndex(obj => {\r\n let isSelected = this.state.selectedToppingsObjList.findIndex(selectedTopping => selectedTopping.InventoryItemId === obj.InventoryItemId)\r\n if (isSelected != -1) {\r\n obj.statusCheck = true;\r\n auxCount++;\r\n }\r\n // else {\r\n // obj.statusCheck = false;\r\n // }\r\n return auxCount == this.state.selectedToppingsObjList.length;\r\n })\r\n this.inventoryItems = lodash.cloneDeep(response.data);\r\n\r\n console.log(\"El state despues de la carga >>\", JSON.parse(JSON.stringify(state)));\r\n this.setState(state);\r\n\r\n\r\n\r\n }).catch(err => {\r\n this.setState({isLoading: false})\r\n if(err.response)\r\n toast.error(err.response.data.Message)\r\n else\r\n toast.error(ErrorMessages.SinConexion)\r\n });\r\n }\r\n /**\r\n * Método encargado de recibir el texto en el input de búsqueda\r\n * y filtrar los elementos en la tabla\r\n */\r\n handleSearchInput = (text) => {\r\n let state = {...this.state};\r\n state.filterText = text;\r\n this.setState(state, () => this.FilterProcess());\r\n }\r\n\r\n /**\r\n * Funcion para filtrar los articulos inventarios mediante\r\n * Estados, Ciudad y Drive\r\n */\r\n FilterProcess = () => {\r\n let state = {...this.state}\r\n\r\n let inventoryItemsArray = this.inventoryItems.filter(\r\n item => ( \r\n (this.state.filterText.trim() !== '' ?\r\n ( (item.Name \r\n ? item.Name.toLowerCase().normalize(\"NFD\").replace(/[\\u0300-\\u036f]/g, \"\").includes(this.state.filterText.trim().toLowerCase().normalize(\"NFD\").replace(/[\\u0300-\\u036f]/g, \"\")) \r\n : false) \r\n || item.InventoryCode.toLowerCase().normalize(\"NFD\").replace(/[\\u0300-\\u036f]/g, \"\").includes(this.state.filterText.trim().toLowerCase().normalize(\"NFD\").replace(/[\\u0300-\\u036f]/g, \"\")))\r\n : true)\r\n )\r\n );\r\n\r\n state.inventoryItems = lodash.cloneDeep(inventoryItemsArray);\r\n\r\n let auxCount = 0;\r\n state.inventoryItems.findIndex(obj => {\r\n let isSelected = this.state.selectedToppingsObjList.findIndex(selectedTopping => selectedTopping.InventoryItemId === obj.InventoryItemId)\r\n if (isSelected != -1) {\r\n obj.statusCheck = true;\r\n auxCount++;\r\n }\r\n return auxCount == this.state.selectedToppingsObjList.length;\r\n })\r\n //state.selectedRecipes = [];\r\n state.buttonSelectAll = false;\r\n this.setState(state);\r\n }\r\n\r\n /**\r\n * Funcion que se ejecuta al darle click al checkbox del header\r\n */\r\n selectAllCheck = () => {\r\n let _checkAll = !this.state.checkAll\r\n let _selectedRecipes = [...this.state.selectedRecipes]\r\n let _pageRecipes = this.state.pageRecipes\r\n _pageRecipes.forEach(recipe => {\r\n let indexRecipe = _selectedRecipes.findIndex(item => item.RecipeId === recipe.RecipeId)\r\n recipe.statusCheck = _checkAll\r\n if(_checkAll){\r\n if(indexRecipe === -1) _selectedRecipes.push(recipe)\r\n }else{\r\n if(indexRecipe !== -1) _selectedRecipes.splice(indexRecipe, 1)\r\n }\r\n\r\n })\r\n\r\n this.setState({checkAll: _checkAll, selectedRecipes: _selectedRecipes})\r\n }\r\n\r\n /*\r\n * Funcion seleccionar o des seleccionar todos las recetas\r\n * de la pagina actual.\r\n */\r\n selectAllCheckBoxPage = () => {\r\n let _checkAll = !this.state.checkAll\r\n let _selectedToppingsObjList = [...this.state.selectedToppingsObjList]\r\n let _pageToppings = this.state.pageInventoryItems\r\n\r\n _pageToppings.forEach(topping => {\r\n\r\n let indexTopping = _selectedToppingsObjList.findIndex(item => item.InventoryItemId === topping.InventoryItemId);\r\n topping.statusCheck = _checkAll;\r\n if (_checkAll) {\r\n if (indexTopping === -1) _selectedToppingsObjList.push(topping)\r\n }else {\r\n if (indexTopping !== -1) _selectedToppingsObjList.splice(indexTopping , 1)\r\n }\r\n })\r\n\r\n this.setState({\r\n selectedToppingsObjList: _selectedToppingsObjList, \r\n updateMasive: _selectedToppingsObjList.length > 0,\r\n checkAll: _checkAll,\r\n buttonSelectAll: _selectedToppingsObjList.length === this.state.inventoryItems.length\r\n })\r\n }\r\n /*\r\n * Funcion para saber si hay que mostrar\r\n * un switch y boton para aplicar cambios a las\r\n * recetas que hemos marcado.\r\n */\r\n showView = (index) => {\r\n // Utilizar indice compuesto InventoryItemId + \"-\" + idListaPrecio\r\n let _selectedToppingsObjList = [...this.state.selectedToppingsObjList];\r\n // let indexTopping = this.state.selectedToppingsObjList.findIndex(id => id === String(this.state.pageInventoryItems[index].InventoryItemId) + \"-\" + String(this.state.pageInventoryItems[index].idListaPrecio))\r\n let indexTopping = this.state.selectedToppingsObjList.findIndex(id => id.InventoryItemId === this.state.pageInventoryItems[index].InventoryItemId);\r\n\r\n if (indexTopping === -1) {\r\n //_selectedToppingsObjList.push(String(this.state.pageInventoryItems[index].InventoryItemId) + \"-\" + String(this.state.pageInventoryItems[index].idListaPrecio))\r\n _selectedToppingsObjList.push(this.state.pageInventoryItems[index]);\r\n } else {\r\n _selectedToppingsObjList.splice(indexTopping, 1)\r\n }\r\n\r\n let counter = 0; // variable para comparar los elementos seleccionados en la pagina con la cantidad de elementos por pagina\r\n this.state.pageInventoryItems.map(obj => {\r\n if (obj.statusCheck) counter++\r\n })\r\n\r\n this.setState({\r\n selectedToppingsObjList: _selectedToppingsObjList, \r\n updateMasive: _selectedToppingsObjList.length > 0,\r\n buttonSelectAll: _selectedToppingsObjList.length === this.state.inventoryItems.length,\r\n checkAll: counter === this.state.pageInventoryItems.length\r\n })\r\n }\r\n /*\r\n * Funcion que selecciona o des selecciona todas las\r\n * recetas de todas las paginas.\r\n */\r\n selectAllCheckBox = () => {\r\n let _selectedToppingsObjList = [...this.state.selectedToppingsObjList]\r\n let _toppings = this.state.inventoryItems\r\n let _buttonSelectAll = !this.state.buttonSelectAll;\r\n\r\n _toppings.forEach(topping => {\r\n // Ver si el elemento ya esta en la lista de seleccioandos\r\n let indexTopping = _selectedToppingsObjList.findIndex(item => item.InventoryItemId === topping.InventoryItemId)\r\n // Meter el elemento a la lista si no estaba previamente\r\n if (_buttonSelectAll && indexTopping === -1) {\r\n _selectedToppingsObjList.push(topping)\r\n // Sacar al elemento de la lista si ya estaba\r\n } else if (!_buttonSelectAll && indexTopping !== -1) {\r\n _selectedToppingsObjList.splice(indexTopping, 1)\r\n }\r\n\r\n topping.statusCheck = _buttonSelectAll;\r\n })\r\n\r\n let _checkAll = _buttonSelectAll;\r\n\r\n this.setState({\r\n selectedToppingsObjList: _selectedToppingsObjList, \r\n updateMasive: _selectedToppingsObjList.length > 0,\r\n checkAll: _checkAll,\r\n buttonSelectAll: _buttonSelectAll\r\n })\r\n }\r\n\r\n\r\n /**\r\n * Checa si es decimal un numero\r\n * @param {strin} val - precio a actualizar\r\n * @param {int} decimalPlaces - numero de decimales\r\n */\r\n isNumericDecimal = (val, decimalPlaces) => {\r\n // If the last digit is a . then add a 0 before testing so if they type 25. it will be accepted\r\n var lastChar = val.substring(val.length - 1);\r\n if (lastChar == \".\") val = val + \"0\";\r\n\r\n var objRegExp = new RegExp(\"^\\\\s*-?(\\\\d+(\\\\.\\\\d{1,\" + decimalPlaces + \"})?|\\\\.\\\\d{1,\" + decimalPlaces + \"})\\\\s*$\", \"g\");\r\n if (decimalPlaces == -1)\r\n objRegExp = new RegExp(\"^\\\\s*-?(\\\\d+(\\\\.\\\\d{1,25})?|\\\\.\\\\d{1,25})\\\\s*$\", \"g\");\r\n\r\n return objRegExp.test(val);\r\n };\r\n\r\n /**\r\n * Actualiza el objeto donde tenemos todos los drives seleccionados\r\n * @param {Object} obj - Contiene toda la informacion del select drive\r\n */\r\n updateTable = (precioVenta)=>{\r\n let state = {...this.state};\r\n this.state.inventoryItems.map(item=>{\r\n if(item.statusCheck){\r\n item.statusCheck = false;\r\n item.PrecioVenta = precioVenta;\r\n }\r\n });\r\n this.setState(state);\r\n }\r\n\r\n render() {\r\n return (\r\n
\r\n\r\n \r\n\r\n
\r\n
\r\n
\r\n
\r\n \r\n
\r\n this.handleSearchInput(t)}\r\n itemName={'por Nombre'}\r\n placeholderText={\"Ingrese código artículo o nombre de topping\"}\r\n />\r\n
\r\n
\r\n
\r\n
\r\n
\r\n
\r\n
\r\n\r\n\r\n
\r\n
\r\n {this.state.inventoryItems.length !== 0\r\n ?\r\n \r\n\r\n : }\r\n {\r\n let checkAllTemp = true;\r\n let cheked = false;\r\n\r\n inventoryItems.map(item => {\r\n if(item.statusCheck){\r\n cheked = true;\r\n } else {\r\n checkAllTemp = false;\r\n }\r\n })\r\n\r\n this.setState({ pageInventoryItems: inventoryItems, checkAll: checkAllTemp, updateMasive: this.state.selectedToppingsObjList.length > 0 })\r\n }\r\n }\r\n />\r\n
\r\n
\r\n \r\n\r\n
\r\n\r\n this.props.cancelToppingsModal()}\r\n >\r\n Cancelar\r\n \r\n\r\n \r\n \r\n
\r\n\r\n \r\n\r\n \r\n\r\n
\r\n );\r\n }\r\n}\r\n\r\nexport default ToppingsExtractos;\r\n","import * as React from 'react';\r\nimport PropTypes from 'prop-types'\r\n\r\n/**\r\n * Componente de utilería con el único fin de mostrar un mensaje indicando que\r\n * alguna lista de elementos está vacía.\r\n */\r\n\r\nclass NoItems extends React.Component {\r\n\r\n render(){\r\n return (\r\n
\r\n

{`No se encontraron ${this.props.itemName}`}

\r\n
\r\n )\r\n }\r\n}\r\n\r\n// Definición de los tipos y su dependencia de las distintas props que recibe el componente.\r\nNoItems.propTypes = {\r\n itemName: PropTypes.string.isRequired\r\n};\r\n\r\nexport default NoItems;","//Constantes a utilizar en la aplicación\r\n\r\n//PRUEBAS\r\n//export const url = \"http://auth.vasopinguino.com\";\r\n//export const apiUrl = \"http://sag.vasopinguino.com/api/v1\";\r\n//export const apiUrl = `http://localhost:58387/api/v1`;\r\n//http://sagnotificaciones.vasopinguino.com/\r\n//export const apiUrl = `http://198.168.20.13:7516/api/v1`;\r\n//export const apiUrl = `http://sagnotificaciones.vasopinguino.com/api/v1`;\r\n//export const caffenioAuthId = \"4AA1B304-E37F-4D53-BFA5-68791FF7F6D9\";\r\n\r\n//export const url = \"http://198.168.20.13:29001\";\r\n//export const apiUrl = \"http://198.168.20.13:9000/api/v1\";\r\n//export const caffenioAuthId = \"4AA1B304-E37F-4D53-BFA5-68791FF7F6D9\";\r\n\r\n// PREPRODUCTIVO\r\n//export const url = \"https://auth.caffenio.com\";\r\n// export const apiUrl = `http://localhost:58387/api/v1`;\r\n//export const caffenioAuthId = \"4AA1B304-E37F-4D53-BFA5-68791FF7F6D9\";\r\n\r\n//PRODUCTIVO\r\nexport const url = \"https://auth.caffenio.com\"\r\nexport const apiUrl = \"https://sag.caffenio.com/api/v1\";\r\nexport const caffenioAuthId = \"4AA1B304-E37F-4D53-BFA5-68791FF7F6D9\";","import {apiUrl} from '../constants';\r\nimport axios from 'axios';\r\nvar request = axios.create({\r\n baseURL: apiUrl,\r\n headers: {'Authorization':'Bearer ' +localStorage.getItem('token'),'Content-Type':'application/json'}\r\n})\r\n\r\nexport default class ExtraccionesCafeAPI {\r\n\r\n static GetFormulaData(){\r\n return request.get('FormulaExtracto/GetFormulaExtracto')\r\n }\r\n\r\n static CreateFormulaData(formulaData){\r\n return request.post('/FormulaExtracto/NewFormulaExtracto', formulaData);\r\n }\r\n\r\n static UpdateFormulaData(formulaData){\r\n return request.put('/FormulaExtracto/UpdateFormulaExtracto', formulaData);\r\n }\r\n}\r\n","import {apiUrl} from '../constants';\r\nimport axios from 'axios';\r\nvar request = axios.create({\r\n baseURL: apiUrl,\r\n headers: {'Authorization':'Bearer ' +localStorage.getItem('token'),'Content-Type':'application/json'}\r\n})\r\n\r\nexport default class ProyeccionFormulaAPI {\r\n\r\n // static GetFormulaData(){\r\n // return request.get('FormulaExtracto/GetFormulaExtracto')\r\n // }\r\n\r\n static CreateFormulaData(formulaData){\r\n return request.post('/FormulaProyeccion/NewFormulaProyeccion', formulaData);\r\n }\r\n\r\n static UpdateFormulaData(formulaData){\r\n return request.put('/FormulaProyeccion/UpdateFormulaProyeccion', formulaData);\r\n }\r\n}\r\n","import React from 'react';\r\n\r\n//Componente para manejo de paginación de elementos de una lista/tabla\r\nclass Pagination extends React.Component {\r\n constructor(props) {\r\n super(props);\r\n this.state = { pager: {}};\r\n }\r\n \r\n componentWillMount() {\r\n if (this.props.items && this.props.items.length) {\r\n this.setPage(this.props.initialPage);\r\n }\r\n }\r\n \r\n componentDidUpdate(prevProps, prevState) {\r\n if (this.props.items !== prevProps.items) {\r\n this.setPage(this.props.initialPage);\r\n }\r\n }\r\n \r\n // Se selecciona la página y se actualizan los elementos de la lista/tabla en el\r\n // componente padre por medio del método onChangePage que se recibió en props.\r\n setPage(page) {\r\n var { items, pageSize } = this.props;\r\n var pager = this.state.pager;\r\n \r\n if (page < 1 || page > pager.totalPages) {\r\n return;\r\n }\r\n \r\n pager = this.getPager(items.length, page, pageSize);\r\n \r\n var pageOfItems = items.slice(pager.startIndex, pager.endIndex + 1);\r\n \r\n this.setState({ pager: pager });\r\n \r\n this.props.onChangePage(pageOfItems);\r\n }\r\n \r\n // Se obtiene el paginador, es decir, cuantas páginas habrán\r\n // Se asigna la primera página como la actual\r\n // Se obtienen los elementos que serán mostrados en la primera página\r\n getPager(totalItems, currentPage, pageSize) {\r\n currentPage = currentPage || 1;\r\n \r\n pageSize = pageSize || 10;\r\n \r\n var totalPages = Math.ceil(totalItems / pageSize);\r\n \r\n var startPage, endPage;\r\n if (totalPages <= 10) {\r\n startPage = 1;\r\n endPage = totalPages;\r\n } else {\r\n if (currentPage <= 6) {\r\n startPage = 1;\r\n endPage = 10;\r\n } else if (currentPage + 4 >= totalPages) {\r\n startPage = totalPages - 9;\r\n endPage = totalPages;\r\n } else {\r\n startPage = currentPage - 5;\r\n endPage = currentPage + 4;\r\n }\r\n }\r\n \r\n var startIndex = (currentPage - 1) * pageSize;\r\n var endIndex = Math.min(startIndex + pageSize - 1, totalItems - 1);\r\n \r\n var pages = [...Array((endPage + 1) - startPage).keys()].map(i => startPage + i);\r\n \r\n return {\r\n totalItems: totalItems,\r\n currentPage: currentPage,\r\n pageSize: pageSize,\r\n totalPages: totalPages,\r\n startPage: startPage,\r\n endPage: endPage,\r\n startIndex: startIndex,\r\n endIndex: endIndex,\r\n pages: pages\r\n };\r\n }\r\n \r\n render() {\r\n var pager = this.state.pager;\r\n \r\n // Si no hay más de 10 elementos no se muestran los controles de páginas.\r\n if (!pager.pages || pager.pages.length <= 1) {\r\n return null;\r\n }\r\n \r\n return (\r\n \r\n );\r\n }\r\n}\r\n\r\nexport default Pagination;","import * as React from 'react'\r\n\r\n/**\r\n * Componente de utilería encargado de desplegar un modal con la única funcionalidad de\r\n * confirmar si desea o no realizar alguna acción especificada por el título del mismo.\r\n */\r\n\r\nclass AcceptModal extends React.Component {\r\n constructor(props){\r\n super(props);\r\n this.state={\r\n showAccept:true,\r\n showCancel:true\r\n }\r\n console.log(this.props.hideAccept)\r\n }\r\n\r\n render(){\r\n return (\r\n
\r\n
this.props.cancel(false)}/>\r\n
\r\n
\r\n

{this.props.modalTitle}

\r\n
\r\n {\r\n this.props.modalBody &&\r\n
\r\n {this.props.modalBody}\r\n
\r\n }\r\n
\r\n
\r\n { e.preventDefault(); this.props.cancel(false);}}\r\n >\r\n Cancelar\r\n \r\n {this.props.hideAccept==true ? false : true && { e.preventDefault(); this.props.done(true);}}\r\n >\r\n Aceptar\r\n }\r\n
\r\n
\r\n
\r\n
\r\n )\r\n }\r\n}\r\n\r\nexport default AcceptModal","import React from 'react';\r\nimport PropTypes from 'prop-types';\r\nimport './TableTemplate.css';\r\n\r\n/**\r\n * Componente de utilería de una tabla para su reutilización que recibe qué datos y qué columnas\r\n * mostrará, así como las acciones que puede realizar (editar, eliminar, detalles, más).\r\n */\r\nclass TableTemplate extends React.Component {\r\n\r\n render() {\r\n return (\r\n
\r\n \r\n \r\n \r\n \r\n {/* Se revisa si el componente padre asignó el nombre de las columnas\r\n en caso de que no, se utiliza el nombre de la llave del objeto\r\n */}\r\n { \r\n this.props.checkbox && \r\n \r\n }\r\n { !this.props.columnsNames ? this.props.columns.map(column => {\r\n\r\n return (\r\n \r\n )\r\n })\r\n :\r\n this.props.columnsNames.map(column => {\r\n let objColumnStyle = this.props.columnStyle && this.props.columnStyle.find(obj => obj.column === column)\r\n return (\r\n \r\n )\r\n })\r\n }\r\n {!this.props.noActions && }\r\n \r\n \r\n \r\n {/* \r\n Se mapea a través de los objetos dentro del arreglo para generar un elemento\r\n por cada uno de ellos\r\n */}\r\n {this.props.data.map((row, index) => {\r\n return (\r\n // Si el componente padre lo desea, el elemento será clickable y se ejecutará\r\n // lo que la prop details() indique.\r\n\r\n this.ontrClick(row)}>\r\n \r\n { \r\n this.props.checkbox && \r\n \r\n }\r\n\r\n {this.props.columns.map((column, j) => {\r\n //Si el objeto llega a tener un atributo de activo, se muestra un\r\n //switch para el cambio rápido de estatus mediante la prop changeStatus().\r\n if (column.toLowerCase() === \"active\" || column.toLowerCase() === \"isactive\" || column.toLowerCase() === \"enablecancelnotification\" || column.toLowerCase() === \"enableorderrelease\") {\r\n return (\r\n if(column.toLowerCase() === \"enableorderrelease\"){\r\n this.props.changeOrderRelease(row)\r\n }else{\r\n this.props.changeStatus(row)\r\n }\r\n }\r\n } />\r\n )\r\n }\r\n return (\r\n column === \"name\" && row.lastName !== undefined\r\n ? \r\n : \r\n\r\n )\r\n })}\r\n {/* \r\n Se insertan las acciones que lleguen desde props \r\n Siendo editar y eliminar unas ya preestablecidas que se pueden activar\r\n mediante las props canEdit y canDelete respectivamente\r\n */}\r\n {!this.props.noActions && }\r\n \r\n )\r\n })}\r\n \r\n
\r\n \r\n \r\n \r\n {column}{column}Acciones
\r\n {\r\n e.stopPropagation();\r\n row.statusCheck = !row.statusCheck;\r\n this.props.showView(index);\r\n }\r\n }\r\n />\r\n \r\n { }}\r\n />\r\n
{`${row[column]} ${row.lastName}`}{row[column]}\r\n {this.props.canEdit &&\r\n \r\n }\r\n {this.props.canDelete &&\r\n \r\n }\r\n {this.props.canSync &&\r\n \r\n }\r\n {this.props.canDownload &&\r\n \r\n }\r\n\r\n {this.props.extraButtons(row, index)}\r\n
\r\n
\r\n )\r\n }\r\n\r\n ontrClick = (row) => {\r\n if (this.props.rowClickable) {\r\n this.props.details(row)\r\n }\r\n }\r\n}\r\n\r\n// Definición de los tipos y su dependencia de las distintas props que recibe el componente.\r\nTableTemplate.defaultProps = {\r\n columns: [],\r\n data: [],\r\n canEdit: false,\r\n canDelete: false,\r\n rowClickable: false,\r\n noActions: false,\r\n disableCheck: false,\r\n checkbox:false,\r\n canDownload:false,\r\n extraButtons: ()=>{}\r\n}\r\n\r\n// Definición de los valores por default de las props en caso de no ser recibidas por el padre.\r\nTableTemplate.propTypes = {\r\n columns: PropTypes.arrayOf(PropTypes.string).isRequired,\r\n data: PropTypes.arrayOf(PropTypes.object).isRequired,\r\n columnsNames: PropTypes.arrayOf(PropTypes.string),\r\n canEdit: PropTypes.bool,\r\n canDelete: PropTypes.bool,\r\n canSync: PropTypes.bool,\r\n edit: PropTypes.func,\r\n remove: PropTypes.func,\r\n sync: PropTypes.func,\r\n rowClickable: PropTypes.bool,\r\n disableCheck: PropTypes.bool,\r\n details: PropTypes.func,\r\n changeStatus: PropTypes.func,\r\n changeOrderRelease: PropTypes.func,\r\n checkbox:PropTypes.bool,\r\n canDownload:PropTypes.bool,\r\n download: PropTypes.func,\r\n}\r\n\r\nexport default TableTemplate;","import React, { Component } from 'react'\r\nimport PropTypes from 'prop-types';\r\nimport lodash from 'lodash';\r\n\r\nclass HasAccess extends React.Component {\r\n render() {\r\n let roles = localStorage.getItem('role').split(',');\r\n let permissions = localStorage.getItem('permissions').split(',');\r\n let hasAccess = lodash.intersection(this.props.roles, roles).length > 0 || lodash.intersection(this.props.permissions, permissions).length > 0\r\n return (\r\n hasAccess ? this.props.children : null\r\n );\r\n }\r\n}\r\n\r\nHasAccess.propTypes = {\r\n roles: PropTypes.arrayOf(PropTypes.any),\r\n permissions: PropTypes.arrayOf(PropTypes.any)\r\n}\r\n\r\nexport default HasAccess;\r\n","import React from \"react\";\r\nimport \"./BtnModoGuiado.css\"\r\nimport {Link} from 'react-router-dom'\r\n\r\nclass BtnModoGuiado extends React.Component {\r\n constructor() {\r\n super();\r\n this.state = {\r\n display: null,\r\n ultimaRuta: null\r\n }\r\n }\r\n\r\n componentDidMount() {\r\n this.setState({\r\n display: localStorage.getItem(\"modoGuiado\"),\r\n ultimaRuta: localStorage.getItem(\"ultimaRuta\")\r\n })\r\n }\r\n\r\n handleClickExit() {\r\n localStorage.removeItem(\"modoGuiado\");\r\n localStorage.removeItem(\"tipoModoGuiado\");\r\n\r\n // Esconder los componentes del modo guiado al presionar la x\r\n //\r\n let divContenedor = document.getElementsByClassName(\"componenteModoGuiado\");\r\n for(var i = 0 ; i < divContenedor.length ; i++) {\r\n divContenedor[i].style.display = \"none\";\r\n }\r\n }\r\n\r\n render() {\r\n if(this.state.display === 'true') {\r\n return (\r\n
\r\n \r\n \r\n \r\n \r\n \r\n \r\n\r\n \r\n \r\n \r\n
\r\n )\r\n }else {\r\n return(null)\r\n }\r\n }\r\n}\r\n\r\nexport default BtnModoGuiado;","import { apiUrl } from \"../../constants\";\r\nimport axios from \"axios\";\r\nimport middleware from \"../../middleware/auth\";\r\nvar request = axios.create({\r\n baseURL: apiUrl,\r\n headers: {\r\n Authorization: \"Bearer \" + localStorage.getItem(\"token\"),\r\n \"Content-Type\": \"application/json\",\r\n },\r\n});\r\n\r\nexport default class EmpresasAPI {\r\n // Get all business with pagination.\r\n static getAllBusiness(search = \"\", page = 1, segmento = 0, activo = true) {\r\n return middleware.hasAuth(() =>\r\n request.get(\r\n `/CaffenioEmpresas/GetAllBusiness?search=${search}&page=${page}&segment=${segmento}&active=${activo}`\r\n )\r\n );\r\n }\r\n\r\n // Get All segments actives.\r\n static getAllSegments() {\r\n return middleware.hasAuth(() => request.get(`/GetAllSegments`));\r\n }\r\n\r\n static getAllFilterSegments() {\r\n return middleware.hasAuth(() => request.get(`/GetAllFilterSegments`));\r\n }\r\n\r\n // Get business by ID.\r\n static getBusiness(idBusiness) {\r\n return middleware.hasAuth(() => request.get(`Empresa/${idBusiness}`));\r\n }\r\n\r\n // Change status of business.\r\n static changeBusinessStatus(id, value) {\r\n return middleware.hasAuth(() =>\r\n request.put(`/CaffenioEmpresas/ActiveOrDeactivateBusiness`, {\r\n idEmpresa: id,\r\n Activo: value,\r\n })\r\n );\r\n }\r\n\r\n // Update information of the business.\r\n static updateInfoToBusiness(infoUpdated) {\r\n return middleware.hasAuth(() =>\r\n request.patch(\"/CaffenioEmpresas/UpdateBusiness\", infoUpdated)\r\n );\r\n }\r\n\r\n static createNewBusiness(businessCreated) {\r\n return middleware.hasAuth(() =>\r\n request.post(\"/CaffenioEmpresas/CreateBusiness\", businessCreated)\r\n );\r\n }\r\n\r\n // Delete business.\r\n static deleteBusiness(businessDeleted) {\r\n return middleware.hasAuth(() =>\r\n request.delete(\"CaffenioEmpresas/DeleteBusiness\", {\r\n data: businessDeleted,\r\n })\r\n );\r\n }\r\n}\r\n","import * as React from 'react';\r\n/**\r\n * Componente de utilería para un que su único fin sea la búsqueda de algún elemento en una lista\r\n */\r\nexport default class SearchForm extends React.Component{\r\n\r\n render(){\r\n return (\r\n
e.preventDefault()}>\r\n this.props.onInput(e.currentTarget.value)}\r\n />\r\n \r\n )\r\n }\r\n}","import React from \"react\"\r\nimport { toast } from 'react-toastify';\r\nimport { ExtraccionesCafeComponent } from \"./ExtraccionesCafeComponent\";\r\nimport ErrorMessages from '../../util/validation-error-messages';\r\nimport update from 'immutability-helper';\r\nimport ExtraccionesCafeAPI from '../../services/ExtraccionesCafe';\r\nimport lodash from 'lodash';\r\n\r\nclass ExtraccionesCafeContainer extends React.Component {\r\n\r\n constructor(props){\r\n super(props);\r\n this.state = {\r\n isEditing: false,\r\n isLoading: false, \r\n isSubmitting: false,\r\n hasInvalidFields: false,\r\n showModalEditFormula: false,\r\n showModalEditRecipes: false,\r\n showModalEditToppings: false,\r\n\r\n showModalRemoveRecipe: false,\r\n recipeToRemove: {},\r\n\r\n showModalRemoveElementFormula: false,\r\n indexToRemoveFormula: 0,\r\n\r\n showModalRemoveTopping: false,\r\n toppingToRemove: {},\r\n\r\n showModalInfo: false,\r\n\r\n showModal: false,\r\n formulaWasModified: false, \r\n formulaIsValid: false,\r\n\r\n tiempoVidaIsEmpty: false,\r\n tiempoVidaIsZero: false,\r\n tiempoVidaIsMax: false,\r\n\r\n frecuenciaIsEmpty: false,\r\n frecuenciaIsZero: false,\r\n frecuenciaIsMax: false,\r\n\r\n invalidFieldTiempoVida: false,\r\n invalidFieldFrecuencia: false,\r\n\r\n addElementFormulaIsDisabled: false,\r\n removeElementFormulaIsDisabled: false,\r\n\r\n formulaData: {...this.props.formulaData},\r\n formula: [...this.props.formula],\r\n\r\n pageRecipes: [],\r\n pageToppings: [],\r\n\r\n isFinishLoading : false\r\n\r\n // formula: [\r\n // {id: \"1\", isDraggableDisabled: false, text: \"TiempoVida\" },\r\n // {id: \"2\", isDraggableDisabled: true, text: \"/\" },\r\n // {id: \"3\", isDraggableDisabled: true, text: \"(\" },\r\n // {id: \"4\", isDraggableDisabled: false, text: \"Frecuencia\"},\r\n // {id: \"5\", isDraggableDisabled: true, text: \"/\" },\r\n // {id: \"6\", isDraggableDisabled: false, text: \"VentaHistorica\" },\r\n // {id: \"7\", isDraggableDisabled: true, text: \")\" },\r\n // ],\r\n \r\n // formulaData : {\r\n // IdFormulaExtractos: 1,\r\n // FormulaText: \"\",\r\n // Frecuencia: 1,\r\n // TiempoVida: 1,\r\n // Recetas: [],\r\n // Toppings: []\r\n // // }\r\n\r\n }\r\n this.initialFormula = []\r\n this.onDragEnd = this.onDragEnd.bind(this);\r\n this.baseState = this.state;\r\n this.grid = 6;\r\n \r\n }\r\n \r\n componentDidMount(){\r\n this.changeLoading();\r\n this.getFormulaData();\r\n }\r\n\r\n /**\r\n * Función que se encarga de guardar los cambios que se hacen el modal para editar la formula\r\n */\r\n\r\n\r\n saveFormula = () => {\r\n this.initialFormula = lodash.cloneDeep(this.state.formula);\r\n let newState = update(this.state, {\r\n showModal: {$set: false},\r\n showModalEditFormula: {$set: false},\r\n formulaWasModified: {$set: false},\r\n formulaIsValid: {$set: false},\r\n });\r\n this.setState(newState, () => {\r\n toast.success(`Se editó la fórmula con éxito`);\r\n });\r\n }\r\n\r\n /**\r\n * Funcion para agregar elemento a la formula cuando el usuario da click en botón \"Agregar elemento\"\r\n */\r\n\r\n addElementFormula = () => {\r\n\r\n if (this.state.formula.length > 10){\r\n toast.error(\"La formúla no puede tener más de 11 elementos\")\r\n let newState = update(this.state, {\r\n addElementFormulaIsDisabled: {$set: true}\r\n })\r\n this.setState(newState);\r\n }\r\n else {\r\n let _formula = this.state.formula;\r\n\r\n _formula.map((f,index) => {\r\n f.id = (index+1).toString();\r\n })\r\n\r\n _formula.push(\r\n {\r\n id: (this.state.formula.length+1).toString(),\r\n isDraggableDisabled: false,\r\n text: \"\"\r\n }\r\n )\r\n let newState = update(this.state, {\r\n formula: {$set: _formula},\r\n formulaWasModified: {$set: true},\r\n formulaIsValid: {$set: false},\r\n removeElementFormulaIsDisabled: {$set: false} \r\n })\r\n this.setState(newState);\r\n }\r\n }\r\n\r\n /**\r\n * Funcion para agregar eliminar un elemento de la fórmula\r\n */\r\n\r\n removeElementFormula = () => {\r\n\r\n if(this.state.formula[this.state.indexToRemoveFormula].isDraggableDisabled == true){\r\n toast.error(\"No se pueden eliminar las variables predeterminadas\")\r\n }\r\n else {\r\n let _formula = this.state.formula;\r\n\r\n _formula.splice(this.state.indexToRemoveFormula,1);\r\n\r\n _formula.map((f,index) => {\r\n f.id = (index+1).toString();\r\n })\r\n\r\n let newState = update(this.state, {\r\n formula: {$set: _formula},\r\n formulaWasModified: {$set: true},\r\n formulaIsValid: {$set: false},\r\n addElementFormulaIsDisabled: {$set: false},\r\n showModalRemoveElementFormula: {$set: false}\r\n })\r\n this.setState(newState, () => {\r\n toast.success(`Elemento de la fórmula eliminado con éxito.`);\r\n });\r\n }\r\n\r\n }\r\n\r\n /**\r\n * Funcion para mostrar el modal de confirmación para eliminar un elemento de la fórmula\r\n * @param index índice del elemento en el arreglo\r\n */\r\n\r\n toggleModalRemoveElementFormula = (index) => {\r\n let newState = update(this.state, {\r\n showModalRemoveElementFormula: {$set: true},\r\n indexToRemoveFormula: {$set: index}\r\n })\r\n this.setState(newState);\r\n }\r\n\r\n /**\r\n * Funcion para cerrar el modal de confirmación para eliminar un elemento de la fórmula\r\n */\r\n\r\n cancelModalRemoveElementFormula = () => {\r\n let newState = update(this.state, {\r\n showModalRemoveElementFormula: {$set: false},\r\n })\r\n this.setState(newState);\r\n }\r\n\r\n\r\n checkDraggableStatus = (e, index) => {\r\n e.stopPropagation();\r\n }\r\n\r\n /**\r\n * Funcion para obtener la información del módulo mediante un servicio\r\n */\r\n\r\n getFormulaData = async() => {\r\n try{\r\n let formulaData = await ExtraccionesCafeAPI.GetFormulaData();\r\n let newState = update(this.state, {\r\n isLoading: {$set: false},\r\n formulaData: {$set: formulaData.data},\r\n });\r\n this.setState(newState, () => {\r\n\r\n let auxFormulaString = this.state.formulaData.FormulaText.split(' ');\r\n let auxFormulaObject = []\r\n\r\n auxFormulaString.forEach((element, index) => {\r\n auxFormulaObject[index] = {...this.state.formula[index], text: element}\r\n })\r\n\r\n auxFormulaString.forEach((element, index) => {\r\n auxFormulaObject[index].id = (index + 1).toString();\r\n if(auxFormulaObject[index].text.length == 1 || isNaN(auxFormulaObject[index].text) == false ){\r\n auxFormulaObject[index].isDraggableDisabled = false;\r\n }\r\n else{\r\n auxFormulaObject[index].isDraggableDisabled = true;\r\n }\r\n\r\n })\r\n\r\n let newState = update(this.state, {\r\n formula: {$set: auxFormulaObject},\r\n isFinishLoading: {$set: true}\r\n });\r\n\r\n this.setState(newState, () => {\r\n this.initialFormula = lodash.cloneDeep(this.state.formula);\r\n }); \r\n });\r\n\r\n } catch (err) {\r\n let newState = update(this.state, {\r\n isLoading: {$set: false},\r\n });\r\n this.setState(newState, async() => {\r\n try{\r\n //En caso que no exista registro de formula, lo crea\r\n //let newFormulaData = await ExtraccionesCafeAPI.CreateFormulaData(this.state.formulaData);\r\n let newState = update(this.state, {\r\n isLoading: {$set: false},\r\n });\r\n this.setState(newState);\r\n }catch (err){\r\n if(err.response)\r\n toast.error(err.response.data.Message)\r\n else\r\n toast.error(ErrorMessages.SinConexion)\r\n }\r\n \r\n let newState2 = update(this.state, {\r\n isLoading: {$set: false}\r\n });\r\n this.setState(newState2); \r\n \r\n });\r\n \r\n } \r\n\r\n let newState = update(this.state, {\r\n isLoading: {$set: false}\r\n });\r\n this.setState(newState); \r\n \r\n }\r\n\r\n\r\n /**\r\n * Funcion que se ejecuta para guardar toda la información del módulo en base de datos\r\n */\r\n\r\n saveModule = () => {\r\n\r\n if((!this.state.invalidFieldTiempoVida) && (!this.state.invalidFieldFrecuencia)){\r\n let auxFormula = this.state.formula.map(e => e.text).join(' ');\r\n let newState = update(this.state, {\r\n isLoading: {$set: true}, \r\n formulaData: {\r\n FormulaText: {$set: auxFormula}\r\n }\r\n });\r\n this.setState(newState, async() => {\r\n\r\n try{\r\n let newFormulaData = await ExtraccionesCafeAPI.UpdateFormulaData(this.state.formulaData);\r\n let newState = update(this.state, {\r\n isLoading: {$set: false},\r\n });\r\n this.setState(newState, () => {\r\n toast.success(`Se guardó la información correctamente`);\r\n });\r\n }catch (err){\r\n if(err.response)\r\n toast.error(err.response.data.Message)\r\n else\r\n toast.error(ErrorMessages.SinConexion)\r\n }\r\n\r\n let newState2 = update(this.state, {\r\n isLoading: {$set: false}\r\n });\r\n this.setState(newState2); \r\n \r\n });\r\n }\r\n else{\r\n toast.error(\"Verifica que todos los campos sean válidos antes de guardar\")\r\n }\r\n\r\n }\r\n\r\n\r\n /**\r\n * Funcion que actualiza los elementos que se muestran en la paginación de las recetas a excluir\r\n * @param recipes arreglo con recetas de la página actual\r\n */\r\n\r\n changeRecipePage = (recipes) => {\r\n // let newState = update(this.state, {\r\n // pageRecipes: {$set: recipes}\r\n // })\r\n \r\n // this.setState(newState);\r\n\r\n this.setState({pageRecipes: [...recipes]})\r\n }\r\n\r\n /**\r\n * Funcion que actualiza los elementos que se muestran en la paginación de los toppings a excluir\r\n * @param recipes arreglo con toppings de la página actual\r\n */\r\n\r\n changeToppingPage = (toppings) => {\r\n // let newState = update(this.state, {\r\n // pageToppings: {$set: toppings}\r\n // })\r\n // this.setState(newState);\r\n this.setState({pageToppings: [...toppings]})\r\n }\r\n\r\n /**\r\n * Funcion que elimina un elemento de la lista de recetas a excluir\r\n */\r\n\r\n removeRecipeFromList = () => {\r\n let _recipes = this.state.formulaData.Recetas.filter( r => {\r\n return r.RecipeId !== this.state.recipeToRemove.RecipeId\r\n });\r\n\r\n let newState = update(this.state, {\r\n formulaData: {\r\n Recetas: {$set: _recipes},\r\n },\r\n showModalRemoveRecipe: {$set: false}\r\n });\r\n this.setState(newState, () => {\r\n toast.success(`Receta eliminada con éxito.`);\r\n });\r\n\r\n }\r\n\r\n /**\r\n * Funcion que muestra el modal de confirmación para remover una receta de la lista de recetas a excluir\r\n * @param recipe receta que se quiere eliminar de la lista\r\n */\r\n\r\n toggleModalRemoveRecipe = (recipe) => {\r\n let newState = update(this.state, {\r\n showModalRemoveRecipe: {$set: true},\r\n recipeToRemove: {$set: recipe}\r\n })\r\n this.setState(newState);\r\n }\r\n\r\n /**\r\n * Funcion que cierra el modal de confirmación para eliminar una receta de la lista\r\n */\r\n\r\n closeModalRemoveRecipe = () => {\r\n let newState = update(this.state, {\r\n showModalRemoveRecipe: {$set: false},\r\n })\r\n this.setState(newState);\r\n }\r\n\r\n /**\r\n * Funcion que elimina un elemento de la lista de toppings a excluir\r\n */\r\n\r\n removeToppingFromList = () => {\r\n let _toppings = this.state.formulaData.Toppings.filter( t => {\r\n return t.InventoryItemId !== this.state.toppingToRemove.InventoryItemId\r\n });\r\n let newState = update(this.state, {\r\n formulaData: {\r\n Toppings: {$set: _toppings}\r\n },\r\n showModalRemoveTopping: {$set: false}\r\n });\r\n this.setState(newState, () => {\r\n toast.success(`Topping eliminado con éxito.`)\r\n });\r\n\r\n }\r\n\r\n /**\r\n * Funcion que muestra el modal de confirmación para remover un topping de la lista de toppings a excluir\r\n * @param topping topping que se quiere eliminar de la lista\r\n */\r\n\r\n toggleModalRemoveTopping = (topping) => {\r\n let newState = update(this.state, {\r\n showModalRemoveTopping: {$set: true},\r\n toppingToRemove: {$set: topping}\r\n })\r\n this.setState(newState);\r\n }\r\n\r\n /**\r\n * Funcion que cierra el modal de confirmación para eliminar una receta de la lista\r\n */\r\n\r\n closeModalRemoveTopping = () => {\r\n let newState = update(this.state, {\r\n showModalRemoveTopping: {$set: false},\r\n })\r\n this.setState(newState);\r\n }\r\n\r\n /**\r\n * Funcion que guarda las recetas que se quieren excluir\r\n * @param checkedRecipes recetas que fueron seleccionadas\r\n */\r\n\r\n saveRecipes = (checkedRecipes) => {\r\n let newState = update(this.state, {\r\n showModal: {$set: false},\r\n showModalEditRecipes: {$set: false},\r\n formulaData: {\r\n Recetas: {$set: checkedRecipes}\r\n },\r\n \r\n });\r\n this.setState(newState, () => {\r\n toast.success(`Las recetas se actualizaron`);\r\n });\r\n }\r\n\r\n /**\r\n * Funcion que guarda las recetas que se quieren excluir\r\n * @param checkedToppings toppings que fueron seleccionados\r\n */\r\n\r\n saveToppings = (checkedToppings) => {\r\n let newState = update(this.state, {\r\n showModal: {$set: false},\r\n showModalEditToppings: {$set: false},\r\n formulaData: {\r\n Toppings: {$set: checkedToppings}\r\n },\r\n \r\n });\r\n this.setState(newState, () => {\r\n toast.success(`Los toppings se actualizaron`);\r\n });\r\n }\r\n\r\n /**\r\n * Funcion que guarda las recetas que se quieren excluir\r\n * @param e event\r\n * @param index índice del elemento de la fórmula que fue modificado\r\n */\r\n\r\n handleChangeFormula = (e, index) => {\r\n\r\n let filter = /^((\\+|-|\\/|\\*|\\(|\\)){1}|\\b([1-9]|[1-9][0-9]|100)\\b){0,1}$/;\r\n\r\n if(!filter.test(e.target.value)){\r\n return;\r\n }\r\n\r\n if(this.state.formula[index].isDraggableDisabled == true){\r\n return;\r\n }\r\n\r\n let newState = update(this.state, {\r\n\r\n formula: {\r\n [index]: {\r\n text : {$set: e.target.value}\r\n }\r\n },\r\n formulaWasModified: {$set: true},\r\n formulaIsValid: {$set: false}\r\n \r\n });\r\n this.setState(newState);\r\n }\r\n\r\n /**\r\n * Función que es llamada cuando se da cancel en el modal para editar la fórmula\r\n */\r\n\r\n cancelEditFormulaModal = () => {\r\n let newState = update(this.state, {\r\n showModal: {$set: false},\r\n showModalEditFormula: {$set: false},\r\n formulaWasModified: {$set: false},\r\n formulaIsValid: {$set: false},\r\n formula: {$set: this.initialFormula},\r\n addElementFormulaIsDisabled: {$set: false},\r\n });\r\n this.setState(newState);\r\n }\r\n\r\n /**\r\n * Función que se ejecuta para mostrar el modal para agregar/eliminar recetas de la\r\n * lista de recetas a excluir\r\n */\r\n\r\n cancelRecipesModal = () => {\r\n let newState = update(this.state, {\r\n showModal: {$set: false},\r\n showModalEditRecipes: {$set: false},\r\n });\r\n this.setState(newState);\r\n }\r\n\r\n /**\r\n * Función que se ejecuta para cancelar el modal para agregar/eliminar toppings de la\r\n * lista de toppings a excluir\r\n */\r\n\r\n cancelToppingsModal = () => {\r\n let newState = update(this.state, {\r\n showModal: {$set: false},\r\n showModalEditToppings: {$set: false},\r\n });\r\n this.setState(newState);\r\n }\r\n\r\n /**\r\n * Función que se encarga de regresar el estado a su estado inicial\r\n */\r\n resetState = () => {\r\n this.setState(this.baseState)\r\n }\r\n\r\n /**\r\n * Función que se encarga de checar si hay campos vacios en el modal\r\n */\r\n\r\n checkHasInvalidFields = () => {\r\n return !this.state.hasInvalidFields;\r\n }\r\n\r\n /**\r\n * Función que se encarga de cambiar el loading del state a su estado opuesto\r\n */\r\n\r\n changeLoading = () => {\r\n let newState = update(this.state, {\r\n isLoading: {$set : !this.state.isLoading}\r\n });\r\n this.setState(newState); \r\n }\r\n\r\n /**\r\n * Función que se encarga de hacer de manejar cambios en campo de Tiempo Vida\r\n */\r\n handleChangeTiempoVida = (e) => { \r\n\r\n let auxTiempoVidaIsEmpty = false, auxTiempoVidaIsZero = false, auxTiempoVidaIsMax = false, auxInvalidFieldTiempoVida = false;\r\n if ((isNaN(e.target.value)) || !(e.target.value)) { \r\n auxTiempoVidaIsEmpty = true;\r\n auxInvalidFieldTiempoVida = true;\r\n }\r\n if(e.target.valueAsNumber === 0){\r\n auxTiempoVidaIsZero = true;\r\n auxInvalidFieldTiempoVida = true;\r\n }\r\n if(e.target.valueAsNumber > 480){\r\n auxTiempoVidaIsMax = true;\r\n auxInvalidFieldTiempoVida = true;\r\n }\r\n\r\n let newState = update(this.state, {\r\n formulaData: {\r\n [e.target.name] : {$set: e.target.valueAsNumber},\r\n },\r\n tiempoVidaIsEmpty: {$set: auxTiempoVidaIsEmpty},\r\n tiempoVidaIsZero: {$set: auxTiempoVidaIsZero},\r\n tiempoVidaIsMax: {$set: auxTiempoVidaIsMax},\r\n invalidFieldTiempoVida: {$set: auxInvalidFieldTiempoVida} \r\n });\r\n this.setState(newState);\r\n }\r\n\r\n /**\r\n * Función que se encarga de hacer de manejar cambios en campo de Frecuencia\r\n */\r\n handleChangeFrecuencia = (e) => { \r\n\r\n let auxFrecuenciaIsEmpty = false, auxFrecuenciaIsZero = false, auxFrecuenciaIsMax = false ,auxInvalidFieldFrecuencia = false;\r\n if ((isNaN(e.target.value)) || !(e.target.value)) { \r\n auxFrecuenciaIsEmpty = true;\r\n auxInvalidFieldFrecuencia = true;\r\n }\r\n if(e.target.valueAsNumber === 0){\r\n auxFrecuenciaIsZero = true;\r\n auxInvalidFieldFrecuencia = true;\r\n }\r\n if(e.target.valueAsNumber > 480){\r\n auxFrecuenciaIsMax = true;\r\n auxInvalidFieldFrecuencia = true;\r\n }\r\n\r\n let newState = update(this.state, {\r\n formulaData: {\r\n [e.target.name] : {$set: e.target.valueAsNumber},\r\n },\r\n frecuenciaIsEmpty: {$set: auxFrecuenciaIsEmpty},\r\n frecuenciaIsZero: {$set: auxFrecuenciaIsZero},\r\n frecuenciaIsMax: {$set: auxFrecuenciaIsMax},\r\n invalidFieldFrecuencia: {$set: auxInvalidFieldFrecuencia} \r\n\r\n });\r\n this.setState(newState);\r\n }\r\n\r\n\r\n // Solo permite números, sin signos ni exponenciales\r\n onKeyPressNumber(event) {\r\n const keyCode = event.keyCode || event.which;\r\n const keyValue = String.fromCharCode(keyCode);\r\n if (/\\+|-|e|E|\\./.test(keyValue) || event.target.value.length >= event.target.getAttribute('maxLength'))\r\n event.preventDefault();\r\n }\r\n\r\n // No permite escribir en el ccampo\r\n onKeyDown(event) {\r\n event.preventDefault();\r\n } \r\n\r\n /**\r\n * Función que se ejecuta para mostrar el modal para editar la fórmula\r\n * @param e event\r\n */\r\n\r\n toggleEditFormulaModal = (e) => {\r\n e.stopPropagation();\r\n this.initialFormula = lodash.cloneDeep(this.state.formula);\r\n let newState = update(this.state, {\r\n showModalEditFormula: {$set: true},\r\n showModal: {$set: true}\r\n })\r\n this.setState(newState);\r\n }\r\n\r\n /**\r\n * Función que se ejecuta para mostrar el modal para agregar o eliminar recetas a excluir\r\n * @param e event\r\n */\r\n\r\n toggleEditRecipesModal = (e) => {\r\n e.stopPropagation();\r\n let newState = update(this.state, {\r\n showModalEditRecipes: {$set: true},\r\n showModal: {$set: true}\r\n\r\n })\r\n this.setState(newState);\r\n }\r\n\r\n /**\r\n * Función que se ejecuta para mostrar el modal para agregar o eliminar toppings a excluir \r\n * @param e event\r\n */\r\n\r\n toggleEditToppingsModal = (e) => {\r\n e.stopPropagation();\r\n let newState = update(this.state, {\r\n showModalEditToppings: {$set: true},\r\n showModal: {$set: true}\r\n })\r\n this.setState(newState);\r\n }\r\n\r\n /**\r\n * Función que se ejecuta para mostrar el modal que da información acerca del módulo\r\n * @param e event\r\n */\r\n\r\n toggleModalInfo = (e) => {\r\n e.stopPropagation();\r\n let newState = update(this.state, {\r\n showModalInfo: {$set: true}\r\n })\r\n this.setState(newState);\r\n }\r\n\r\n /**\r\n * Función que se ejecuta para mostrar el modal para cancelar el modal de información del módulo\r\n */\r\n\r\n cancelModalInfo = () => {\r\n let newState = update(this.state, {\r\n showModalInfo: {$set: false}\r\n })\r\n this.setState(newState);\r\n }\r\n\r\n /**\r\n * Función que se ejecuta al dar \"cancelar\" en el modal de \r\n * \"Confirmar desactivar dos lineas producción\"\r\n */\r\n closeAcceptModal = () => {\r\n let newState = update(this.state, {\r\n showModalConfirmationMessage: {$set: false}\r\n\r\n })\r\n this.setState(newState);\r\n }\r\n\r\n /**\r\n * Función que se encarga de cerrar el modal de la configuraciónVP\r\n */\r\n\r\n closeModal = () => {\r\n toast.success(\"Éxito\");\r\n this.props.cancel();\r\n }\r\n \r\n /**\r\n * Función que se ejecuta para verificar que la formula es válida\r\n */\r\n\r\n checkFormula = () => {\r\n let _newState = update(this.state, {\r\n isLoading: {$set : true}\r\n });\r\n this.setState(_newState, () => {\r\n let auxFormula = this.state.formula.map(e => e.text).join(' ');\r\n let TiempoVida = this.state.tiempoVida;\r\n let Frecuencia = this.state.frecuencia;\r\n let VentaHistorica = 1;\r\n \r\n try {\r\n let result = eval(auxFormula);\r\n let newState = update(this.state, {\r\n formulaIsValid: {$set: true},\r\n isLoading: {$set: false}\r\n })\r\n this.setState(newState, () => {\r\n toast.success(`La fórmula es válida`);\r\n });\r\n\r\n } catch (err) {\r\n let newState = update(this.state, {\r\n isLoading: {$set: false}\r\n })\r\n this.setState(newState, () => {\r\n toast.error(`La fórmula no es válida, revise los elementos de la fórmula`);\r\n });\r\n }\r\n\r\n }); \r\n\r\n }\r\n\r\n /**\r\n * Función que se ejecuta al soltar un elemento en el drag n drop\r\n * @param result objeto del drag n drop\r\n */\r\n\r\n onDragEnd = (result) => {\r\n // dropped outside the list\r\n if (!result.destination) {\r\n return;\r\n }\r\n \r\n var items = this.reorder(\r\n this.state.formula,\r\n result.source.index,\r\n result.destination.index\r\n );\r\n\r\n let newState = update(this.state, {\r\n\r\n formula: {$set: items},\r\n formulaWasModified: {$set: true},\r\n formulaIsValid: {$set: false}\r\n })\r\n this.setState(newState);\r\n\r\n }\r\n\r\n // a little function to help us with reordering the result\r\n reorder = (list, startIndex, endIndex) => {\r\n const result = Array.from(list);\r\n const [removed] = result.splice(startIndex, 1);\r\n result.splice(endIndex, 0, removed);\r\n // var b = result[y];\r\n // result[y] = result[x];\r\n // result[x] = b;\r\n \r\n return result;\r\n };\r\n \r\n getItemStyle = (isDragging, draggableStyle) => ({\r\n // some basic styles to make the items look a bit nicer\r\n userSelect: 'none',\r\n padding: this.grid * 2,\r\n margin: `0 ${this.grid}px 0 0`,\r\n \r\n // change background colour if dragging\r\n background: isDragging ? 'lightgreen' : 'lightgrey',\r\n \r\n // styles we need to apply on draggables\r\n ...draggableStyle,\r\n });\r\n \r\n getListStyle = isDraggingOver => ({\r\n background: isDraggingOver ? 'lightblue' : 'white',\r\n display: 'flex',\r\n padding: this.grid,\r\n overflow: 'auto',\r\n });\r\n\r\n\r\n render(){\r\n \r\n return (\r\n this.state.isFinishLoading &&\r\n \r\n );\r\n }\r\n\r\n\r\n}\r\n\r\nExtraccionesCafeContainer.defaultProps = {\r\n \r\n formula: [\r\n\r\n ],\r\n\r\n formulaData : {\r\n IdFormulaExtractos: 1,\r\n FormulaText: \"\",\r\n Frecuencia: 1,\r\n TiempoVida: 1,\r\n Recetas: [],\r\n Toppings: []\r\n }\r\n}\r\n\r\n\r\n\r\nexport { ExtraccionesCafeContainer };","import { apiUrl } from \"../constants\";\r\nimport axios from 'axios';\r\nimport { stringify } from 'querystring';\r\nvar request = axios.create({\r\n baseURL: apiUrl,\r\n headers: {'Authorization':'Bearer ' +localStorage.getItem('token'),'Content-Type':'application/json','Access-Control-Allow-Origin' : '*',}\r\n})\r\nexport default class RecipesAPI {\r\n static getAll() {\r\n return request.get('/Recipe');\r\n }\r\n\r\n static get(id) {\r\n return request.get(`/Recipe/${id}`);\r\n }\r\n\r\n static create(Recipe) {\r\n return request.post('/Recipe',Recipe);\r\n }\r\n\r\n /** Crea request con formdata, incluye si existe la imagen de la receta */\r\n static createWithFormData(Recipe, imagen){\r\n let fd = new FormData(); \r\n fd.append(\"modelo\", JSON.stringify(Recipe));\r\n imagen && fd.append(\"Image\", imagen);\r\n\r\n return request.post('/Recipe/multimedia', fd);\r\n }\r\n \r\n /**Crea recetas en conjunto */\r\n static createMulti(Recipe) {\r\n return request.post('/Recipe/Multi',Recipe);\r\n }\r\n\r\n\r\n static edit(Recipe){\r\n return request.put(`/Recipe`,Recipe);\r\n }\r\n\r\n /** Edita request con formdata, incluye si existe la imagen de la receta */\r\n static editWithFormData(Recipe, imagen){\r\n let fd = new FormData(); \r\n if(imagen !== null ){\r\n Recipe.Image = \"\";\r\n } \r\n fd.append(\"modelo\", JSON.stringify(Recipe));\r\n imagen && fd.append(\"Image\", imagen);\r\n\r\n\r\n return request.put('/Recipe/multimedia', fd);\r\n }\r\n\r\n /** Edita request con formdata, incluye si existe la imagen de la receta */\r\n static editTipoSaborWithFormData(Recipe, imagen){\r\n let fd = new FormData(); \r\n if(imagen !== null ){\r\n Recipe.Image = \"\";\r\n } \r\n fd.append(\"modelo\", JSON.stringify(Recipe));\r\n imagen && fd.append(\"Image\", imagen);\r\n\r\n\r\n return request.put('/Recipe/multimedia/tiposabor', fd);\r\n }\r\n\r\n /** Edita request con formdata, incluye si existe la imagen del tipo receta */\r\n static editTipoRecetaWithFormData(Recipe, imagen){\r\n let fd = new FormData(); \r\n if(imagen !== null ){\r\n Recipe.Image = \"\";\r\n } \r\n fd.append(\"modelo\", JSON.stringify(Recipe));\r\n imagen && fd.append(\"Image\", imagen);\r\n\r\n\r\n return request.put('/Recipe/multimedia/tiporeceta', fd);\r\n }\r\n\r\n /** Edita request con formdata, incluye si existe la imagen del tipo receta */\r\n static editPresentacionWithFormData(Recipe, imagen){\r\n let fd = new FormData(); \r\n if(imagen !== null ){\r\n Recipe.Image = \"\";\r\n } \r\n fd.append(\"modelo\", JSON.stringify(Recipe));\r\n imagen && fd.append(\"Image\", imagen);\r\n\r\n\r\n return request.put('/Recipe/multimedia/presentacion', fd);\r\n }\r\n\r\n static delete(id){\r\n return request.delete(`Recipe/${id}`);\r\n }\r\n\r\n static sync(id){\r\n return request.post(`/Recipe/Sync/${id}`);\r\n }\r\n\r\n static syncMulti(lstIds){\r\n return request.post(`/Recipe/SyncMulti/`, lstIds);\r\n }\r\n\r\n static addToppings(Recipes){\r\n return request.post(`/Recipe/AddToppings`, Recipes)\r\n }\r\n\r\n /**Función para agragar y/o actualizar cantidades de artículos inventarios de una receta */\r\n static addInventoryItems(Recipe){\r\n return request.post(`Recipe/AddInventoryItems`, Recipe)\r\n }\r\n\r\n static getMenu(recipeId){\r\n return request.get(`/Recipe/GetMenu/${recipeId}`)\r\n }\r\n\r\n static newFeatured(recipeId){\r\n return request.post(`/Featured/FeaturedSave`, recipeId)\r\n }\r\n\r\n /**\r\n * Obtienen listado de recetas por parametros\r\n */\r\n static getByParams(params){ \r\n return request.get(`/Recipe?${stringify({...params})}`);\r\n }\r\n \r\n /**\r\n * Actualiza la imagen y el nombre corto de la receta \r\n * @param {*} Recipe \r\n * @param {*} imagen \r\n * @returns \r\n */\r\n static editImageRecipe(Recipe){\r\n let fd = new FormData();\r\n for(var prop in Recipe){\r\n if(Recipe[prop] != null && Recipe[prop] != undefined)\r\n fd.append(prop, Recipe[prop])\r\n }\r\n\r\n\r\n return request.patch('/RecipeHeader/multimedia', fd);\r\n }\r\n}","import { apiUrl } from \"../constants\";\r\nimport axios from 'axios';\r\nimport middleware from '../middleware/auth';\r\n\r\nvar request = axios.create({\r\n baseURL: apiUrl,\r\n headers: {'Authorization':'Bearer ' +localStorage.getItem('token'),'Content-Type':'application/json'}\r\n})\r\nexport default class PresentationsAPI {\r\n static getAll() {\r\n return middleware.hasAuth(() => request.get('/Presentation'));\r\n }\r\n\r\n static get(id) {\r\n return middleware.hasAuth(() => request.get(`/Presentation/${id}`));\r\n }\r\n\r\n static getByClasification(ids){\r\n return middleware.hasAuth(() => request.post(`/Presentation/GetByClassification`, ids));\r\n }\r\n\r\n static create(Presentation) {\r\n let fd = new FormData();\r\n fd.append(\"Name\", Presentation.Name);\r\n fd.append(\"Position\", Presentation.Position);\r\n fd.append(\"RecipeName\", Presentation.RecipeName);\r\n fd.append(\"Active\", Presentation.Active)\r\n fd.append(\"SegmentId\", Presentation.SegmentationId.SegmentId)\r\n fd.append(\"NombreApp\", Presentation.NombreApp)\r\n Presentation.Image instanceof File && fd.append(\"Image\", Presentation.Image);\r\n return middleware.hasAuth(() => request.post('/Presentation', fd));\r\n }\r\n\r\n static edit(Presentation, id){\r\n let fd = new FormData();\r\n fd.append(\"PresentationId\", Presentation.PresentationId);\r\n fd.append(\"Name\", Presentation.Name);\r\n fd.append(\"Position\", Presentation.Position);\r\n fd.append(\"RecipeName\", Presentation.RecipeName);\r\n fd.append(\"Active\", Presentation.Active)\r\n fd.append(\"NombreApp\", Presentation.NombreApp)\r\n Presentation.idSegmento && fd.append(\"SegmentId\", Presentation.idSegmento)\r\n \r\n Presentation.Image instanceof File && fd.append(\"Image\", Presentation.Image);\r\n\r\n return middleware.hasAuth(() => request.put(`/Presentation`, fd));\r\n }\r\n\r\n static delete(id){\r\n return middleware.hasAuth(() => request.delete(`Presentation/${id}`));\r\n }\r\n}","import React from \"react\"\r\nimport { toast } from 'react-toastify';\r\nimport { ProyeccionFormulaComponent } from \"./ProyeccionFormulaComponent\";\r\nimport ErrorMessages from '../../util/validation-error-messages';\r\nimport update from 'immutability-helper';\r\nimport ProyeccionFormulaAPI from \"../../services/ProyeccionFormula\";\r\nimport lodash from 'lodash';\r\n\r\nclass ProyeccionFormulaContainer extends React.Component {\r\n\r\n constructor(props){\r\n super(props);\r\n this.state = {\r\n isEditing: false,\r\n isLoading: false, \r\n isSubmitting: false,\r\n hasInvalidFields: false,\r\n showModalEditFormula: false,\r\n showModalEditRecipes: false,\r\n showModalEditToppings: false,\r\n\r\n showModalRemoveRecipe: false,\r\n recipeToRemove: {},\r\n\r\n showModalRemoveElementFormula: false,\r\n indexToRemoveFormula: 0,\r\n\r\n showModalRemoveTopping: false,\r\n toppingToRemove: {},\r\n\r\n showModalInfo: false,\r\n\r\n showModal: false,\r\n formulaWasModified: false, \r\n formulaIsValid: false,\r\n\r\n tiempoVidaIsEmpty: false,\r\n tiempoVidaIsZero: false,\r\n tiempoVidaIsMax: false,\r\n\r\n frecuenciaIsEmpty: false,\r\n frecuenciaIsZero: false,\r\n frecuenciaIsMax: false,\r\n\r\n invalidFieldTiempoVida: false,\r\n invalidFieldFrecuencia: false,\r\n\r\n addElementFormulaIsDisabled: false,\r\n removeElementFormulaIsDisabled: false,\r\n\r\n // formulaData: {...this.props.formulaData},\r\n formula: [...this.props.formula],\r\n // proyeccion: {},\r\n pageRecipes: [],\r\n pageToppings: [],\r\n\r\n isFinishLoading : false\r\n\r\n // formula: [\r\n // {id: \"1\", isDraggableDisabled: false, text: \"TiempoVida\" },\r\n // {id: \"2\", isDraggableDisabled: true, text: \"/\" },\r\n // {id: \"3\", isDraggableDisabled: true, text: \"(\" },\r\n // {id: \"4\", isDraggableDisabled: false, text: \"Frecuencia\"},\r\n // {id: \"5\", isDraggableDisabled: true, text: \"/\" },\r\n // {id: \"6\", isDraggableDisabled: false, text: \"VentaHistorica\" },\r\n // {id: \"7\", isDraggableDisabled: true, text: \")\" },\r\n // ],\r\n \r\n // formulaData : {\r\n // IdFormulaExtractos: 1,\r\n // FormulaText: \"\",\r\n // Frecuencia: 1,\r\n // TiempoVida: 1,\r\n // Recetas: [],\r\n // Toppings: []\r\n // // }\r\n\r\n }\r\n this.initialFormula = []\r\n this.onDragEnd = this.onDragEnd.bind(this);\r\n this.baseState = this.state;\r\n this.grid = 6;\r\n \r\n }\r\n \r\n componentDidMount(){\r\n this.changeLoading();\r\n // this.getFormulaData();\r\n if (!this.props.location.state) {\r\n this.props.history.push(`/productos-proyeccion`);\r\n return;\r\n }\r\n this.setFormulaData();\r\n // this.setState({ proyeccionList: this.props.location.state.proyeccionList }, () =>{ console.log(\"El state de proyeccion >> \", this.state); });\r\n }\r\n\r\n /**\r\n * Función que se encarga de guardar los cambios que se hacen el modal para editar la formula\r\n */\r\n\r\n\r\n saveFormula = () => {\r\n this.initialFormula = lodash.cloneDeep(this.state.formula);\r\n let newState = update(this.state, {\r\n showModal: {$set: false},\r\n showModalEditFormula: {$set: false},\r\n formulaWasModified: {$set: false},\r\n formulaIsValid: {$set: false},\r\n });\r\n this.setState(newState, () => {\r\n toast.success(`Se editó la fórmula con éxito`);\r\n });\r\n }\r\n\r\n /**\r\n * Funcion para agregar elemento a la formula cuando el usuario da click en botón \"Agregar elemento\"\r\n */\r\n\r\n addElementFormula = () => {\r\n\r\n if (this.state.formula.length > 10){\r\n toast.error(\"La formúla no puede tener más de 11 elementos\")\r\n let newState = update(this.state, {\r\n addElementFormulaIsDisabled: {$set: true}\r\n })\r\n this.setState(newState);\r\n }\r\n else {\r\n let _formula = this.state.formula;\r\n\r\n _formula.map((f,index) => {\r\n f.id = (index+1).toString();\r\n })\r\n\r\n _formula.push(\r\n {\r\n id: (this.state.formula.length+1).toString(),\r\n isDraggableDisabled: false,\r\n text: \"\"\r\n }\r\n )\r\n let newState = update(this.state, {\r\n formula: {$set: _formula},\r\n formulaWasModified: {$set: true},\r\n formulaIsValid: {$set: false},\r\n removeElementFormulaIsDisabled: {$set: false} \r\n })\r\n this.setState(newState);\r\n }\r\n }\r\n\r\n /**\r\n * Funcion para agregar eliminar un elemento de la fórmula\r\n */\r\n\r\n removeElementFormula = () => {\r\n\r\n if(this.state.formula[this.state.indexToRemoveFormula].isDraggableDisabled == true){\r\n toast.error(\"No se pueden eliminar las variables predeterminadas\")\r\n }\r\n else {\r\n let _formula = this.state.formula;\r\n\r\n _formula.splice(this.state.indexToRemoveFormula,1);\r\n\r\n _formula.map((f,index) => {\r\n f.id = (index+1).toString();\r\n })\r\n\r\n let newState = update(this.state, {\r\n formula: {$set: _formula},\r\n formulaWasModified: {$set: true},\r\n formulaIsValid: {$set: false},\r\n addElementFormulaIsDisabled: {$set: false},\r\n showModalRemoveElementFormula: {$set: false}\r\n })\r\n this.setState(newState, () => {\r\n toast.success(`Elemento de la fórmula eliminado con éxito.`);\r\n });\r\n }\r\n\r\n }\r\n\r\n /**\r\n * Funcion para mostrar el modal de confirmación para eliminar un elemento de la fórmula\r\n * @param index índice del elemento en el arreglo\r\n */\r\n\r\n toggleModalRemoveElementFormula = (index) => {\r\n let newState = update(this.state, {\r\n showModalRemoveElementFormula: {$set: true},\r\n indexToRemoveFormula: {$set: index}\r\n })\r\n this.setState(newState);\r\n }\r\n\r\n /**\r\n * Funcion para cerrar el modal de confirmación para eliminar un elemento de la fórmula\r\n */\r\n\r\n cancelModalRemoveElementFormula = () => {\r\n let newState = update(this.state, {\r\n showModalRemoveElementFormula: {$set: false},\r\n })\r\n this.setState(newState);\r\n }\r\n\r\n\r\n checkDraggableStatus = (e, index) => {\r\n e.stopPropagation();\r\n }\r\n\r\n /**\r\n * Funcion para obtener la información del módulo mediante un servicio\r\n */\r\n\r\n // getFormulaData = async() => {\r\n // try{\r\n // let formulaData = await ExtraccionesCafeAPI.GetFormulaData();\r\n // let newState = update(this.state, {\r\n // isLoading: {$set: false},\r\n // formulaData: {$set: formulaData.data},\r\n // });\r\n // this.setState(newState, () => {\r\n\r\n // let auxFormulaString = this.state.formulaData.FormulaText.split(' ');\r\n // let auxFormulaObject = []\r\n\r\n // auxFormulaString.forEach((element, index) => {\r\n // auxFormulaObject[index] = {...this.state.formula[index], text: element}\r\n // })\r\n\r\n // auxFormulaString.forEach((element, index) => {\r\n // auxFormulaObject[index].id = (index + 1).toString();\r\n // if(auxFormulaObject[index].text.length == 1 || isNaN(auxFormulaObject[index].text) == false ){\r\n // auxFormulaObject[index].isDraggableDisabled = false;\r\n // }\r\n // else{\r\n // auxFormulaObject[index].isDraggableDisabled = true;\r\n // }\r\n\r\n // })\r\n\r\n // let newState = update(this.state, {\r\n // formula: {$set: auxFormulaObject},\r\n // isFinishLoading: {$set: true}\r\n // });\r\n\r\n // this.setState(newState, () => {\r\n // this.initialFormula = lodash.cloneDeep(this.state.formula);\r\n // }); \r\n // });\r\n\r\n // } catch (err) {\r\n // let newState = update(this.state, {\r\n // isLoading: {$set: false},\r\n // });\r\n // this.setState(newState, async() => {\r\n // try{\r\n // //En caso que no exista registro de formula, lo crea\r\n // //let newFormulaData = await ExtraccionesCafeAPI.CreateFormulaData(this.state.formulaData);\r\n // let newState = update(this.state, {\r\n // isLoading: {$set: false},\r\n // });\r\n // this.setState(newState);\r\n // }catch (err){\r\n // if(err.response)\r\n // toast.error(err.response.data.Message)\r\n // else\r\n // toast.error(ErrorMessages.SinConexion)\r\n // }\r\n \r\n // let newState2 = update(this.state, {\r\n // isLoading: {$set: false}\r\n // });\r\n // this.setState(newState2); \r\n \r\n // });\r\n \r\n // } \r\n\r\n // let newState = update(this.state, {\r\n // isLoading: {$set: false}\r\n // });\r\n // this.setState(newState); \r\n \r\n // }\r\n\r\n setFormulaData = () => {\r\n try{\r\n console.log(\"la proyeccion recibida >>\", this.props.location.state.proyeccion);\r\n let formulaDataTmp = {};\r\n if(this.props.location.state.proyeccion.Formula){\r\n formulaDataTmp = this.props.location.state.proyeccion.Formula;\r\n }\r\n else{\r\n formulaDataTmp = {\r\n IdFormulaProduccionAdelantado: 0,\r\n IdProduccionAdelantado: this.props.location.state.proyeccion.IdProduccionAdelantado,\r\n FormulaText: \"TiempoVida / ( Frecuencia - VentaHistorica )\",\r\n Frecuencia: 1,\r\n TiempoVida: 1,\r\n Recetas: [],\r\n Toppings: []\r\n }\r\n }\r\n let newState = update(this.state, {\r\n isLoading: {$set: false},\r\n formulaData: {$set: formulaDataTmp},\r\n proyeccion: {$set: this.props.location.state.proyeccion}\r\n });\r\n console.log(\"NEWSTATE >> \", newState);\r\n this.setState(newState, () => {\r\n console.log(\"la formulaData >>\", this.state.formulaData);\r\n\r\n let auxFormulaString = this.state.formulaData.FormulaText.split(' ');\r\n let auxFormulaObject = []\r\n\r\n auxFormulaString.forEach((element, index) => {\r\n auxFormulaObject[index] = {...this.state.formula[index], text: element}\r\n })\r\n\r\n auxFormulaString.forEach((element, index) => {\r\n auxFormulaObject[index].id = (index + 1).toString();\r\n if(auxFormulaObject[index].text.length == 1 || isNaN(auxFormulaObject[index].text) == false ){\r\n auxFormulaObject[index].isDraggableDisabled = false;\r\n }\r\n else{\r\n auxFormulaObject[index].isDraggableDisabled = true;\r\n }\r\n\r\n })\r\n\r\n let newState = update(this.state, {\r\n formula: {$set: auxFormulaObject},\r\n isFinishLoading: {$set: true}\r\n });\r\n\r\n this.setState(newState, () => {\r\n this.initialFormula = lodash.cloneDeep(this.state.formula);\r\n }); \r\n });\r\n\r\n } catch (err) {\r\n console.log(\"Error catch\");\r\n let newState = update(this.state, {\r\n isLoading: {$set: false},\r\n });\r\n this.setState(newState, async() => {\r\n try{\r\n //En caso que no exista registro de formula, lo crea\r\n //let newFormulaData = await ExtraccionesCafeAPI.CreateFormulaData(this.state.formulaData);\r\n let newState = update(this.state, {\r\n isLoading: {$set: false},\r\n });\r\n this.setState(newState);\r\n }catch (err){\r\n if(err.response)\r\n toast.error(err.response.data.Message)\r\n else\r\n toast.error(ErrorMessages.SinConexion)\r\n }\r\n \r\n let newState2 = update(this.state, {\r\n isLoading: {$set: false}\r\n });\r\n this.setState(newState2); \r\n \r\n });\r\n \r\n } \r\n\r\n let newState = update(this.state, {\r\n isLoading: {$set: false}\r\n });\r\n this.setState(newState); \r\n \r\n }\r\n\r\n\r\n /**\r\n * Funcion que se ejecuta para guardar toda la información del módulo en base de datos\r\n */\r\n\r\n saveModule = () => {\r\n\r\n if((!this.state.invalidFieldTiempoVida) && (!this.state.invalidFieldFrecuencia)){\r\n let auxFormula = this.state.formula.map(e => e.text).join(' ');\r\n let newState = update(this.state, {\r\n isLoading: {$set: true}, \r\n formulaData: {\r\n FormulaText: {$set: auxFormula}\r\n }\r\n });\r\n console.log(\"la formula a guardar >> \", this.state.formulaData );\r\n console.log(\"la proyección >> \", this.state.proyeccion );\r\n this.setState(newState, async() => {\r\n try{\r\n if(this.state.formulaData.IdFormulaProduccionAdelantado > 0){\r\n let newFormulaData = await ProyeccionFormulaAPI.UpdateFormulaData(this.state.formulaData);\r\n let newState = update(this.state, {\r\n isLoading: {$set: false},\r\n });\r\n this.setState(newState, () => {\r\n toast.success(`Se guardó la información correctamente`);\r\n });\r\n }\r\n else{\r\n let newFormulaData = await ProyeccionFormulaAPI.CreateFormulaData(this.state.formulaData);\r\n let newState = update(this.state, {\r\n isLoading: {$set: false},\r\n formulaData: {$set: newFormulaData.data}\r\n });\r\n this.setState(newState, () => {\r\n toast.success(`Se guardó la información correctamente`);\r\n });\r\n\r\n }\r\n }catch (err){\r\n if(err.response)\r\n toast.error(err.response.data.Message)\r\n else\r\n toast.error(ErrorMessages.SinConexion)\r\n }\r\n\r\n let newState2 = update(this.state, {\r\n isLoading: {$set: false}\r\n });\r\n this.setState(newState2); \r\n \r\n });\r\n }\r\n else{\r\n toast.error(\"Verifica que todos los campos sean válidos antes de guardar\")\r\n }\r\n\r\n }\r\n\r\n\r\n /**\r\n * Funcion que actualiza los elementos que se muestran en la paginación de las recetas a excluir\r\n * @param recipes arreglo con recetas de la página actual\r\n */\r\n\r\n changeRecipePage = (recipes) => {\r\n // let newState = update(this.state, {\r\n // pageRecipes: {$set: recipes}\r\n // })\r\n \r\n // this.setState(newState);\r\n\r\n this.setState({pageRecipes: [...recipes]})\r\n }\r\n\r\n /**\r\n * Funcion que actualiza los elementos que se muestran en la paginación de los toppings a excluir\r\n * @param recipes arreglo con toppings de la página actual\r\n */\r\n\r\n changeToppingPage = (toppings) => {\r\n // let newState = update(this.state, {\r\n // pageToppings: {$set: toppings}\r\n // })\r\n // this.setState(newState);\r\n this.setState({pageToppings: [...toppings]})\r\n }\r\n\r\n /**\r\n * Funcion que elimina un elemento de la lista de recetas a excluir\r\n */\r\n\r\n removeRecipeFromList = () => {\r\n let _recipes = this.state.formulaData.Recetas.filter( r => {\r\n return r.RecipeId !== this.state.recipeToRemove.RecipeId\r\n });\r\n\r\n let newState = update(this.state, {\r\n formulaData: {\r\n Recetas: {$set: _recipes},\r\n },\r\n showModalRemoveRecipe: {$set: false}\r\n });\r\n this.setState(newState, () => {\r\n toast.success(`Receta eliminada con éxito.`);\r\n });\r\n\r\n }\r\n\r\n /**\r\n * Funcion que muestra el modal de confirmación para remover una receta de la lista de recetas a excluir\r\n * @param recipe receta que se quiere eliminar de la lista\r\n */\r\n\r\n toggleModalRemoveRecipe = (recipe) => {\r\n let newState = update(this.state, {\r\n showModalRemoveRecipe: {$set: true},\r\n recipeToRemove: {$set: recipe}\r\n })\r\n this.setState(newState);\r\n }\r\n\r\n /**\r\n * Funcion que cierra el modal de confirmación para eliminar una receta de la lista\r\n */\r\n\r\n closeModalRemoveRecipe = () => {\r\n let newState = update(this.state, {\r\n showModalRemoveRecipe: {$set: false},\r\n })\r\n this.setState(newState);\r\n }\r\n\r\n /**\r\n * Funcion que elimina un elemento de la lista de toppings a excluir\r\n */\r\n\r\n removeToppingFromList = () => {\r\n let _toppings = this.state.formulaData.Toppings.filter( t => {\r\n return t.InventoryItemId !== this.state.toppingToRemove.InventoryItemId\r\n });\r\n let newState = update(this.state, {\r\n formulaData: {\r\n Toppings: {$set: _toppings}\r\n },\r\n showModalRemoveTopping: {$set: false}\r\n });\r\n this.setState(newState, () => {\r\n toast.success(`Topping eliminado con éxito.`)\r\n });\r\n\r\n }\r\n\r\n /**\r\n * Funcion que muestra el modal de confirmación para remover un topping de la lista de toppings a excluir\r\n * @param topping topping que se quiere eliminar de la lista\r\n */\r\n\r\n toggleModalRemoveTopping = (topping) => {\r\n let newState = update(this.state, {\r\n showModalRemoveTopping: {$set: true},\r\n toppingToRemove: {$set: topping}\r\n })\r\n this.setState(newState);\r\n }\r\n\r\n /**\r\n * Funcion que cierra el modal de confirmación para eliminar una receta de la lista\r\n */\r\n\r\n closeModalRemoveTopping = () => {\r\n let newState = update(this.state, {\r\n showModalRemoveTopping: {$set: false},\r\n })\r\n this.setState(newState);\r\n }\r\n\r\n /**\r\n * Funcion que guarda las recetas que se quieren excluir\r\n * @param checkedRecipes recetas que fueron seleccionadas\r\n */\r\n\r\n saveRecipes = (checkedRecipes) => {\r\n let newState = update(this.state, {\r\n showModal: {$set: false},\r\n showModalEditRecipes: {$set: false},\r\n formulaData: {\r\n Recetas: {$set: checkedRecipes}\r\n },\r\n \r\n });\r\n this.setState(newState, () => {\r\n toast.success(`Las recetas se actualizaron`);\r\n });\r\n }\r\n\r\n /**\r\n * Funcion que guarda las recetas que se quieren excluir\r\n * @param checkedToppings toppings que fueron seleccionados\r\n */\r\n\r\n saveToppings = (checkedToppings) => {\r\n let newState = update(this.state, {\r\n showModal: {$set: false},\r\n showModalEditToppings: {$set: false},\r\n formulaData: {\r\n Toppings: {$set: checkedToppings}\r\n },\r\n \r\n });\r\n this.setState(newState, () => {\r\n toast.success(`Los toppings se actualizaron`);\r\n });\r\n }\r\n\r\n /**\r\n * Funcion que guarda las recetas que se quieren excluir\r\n * @param e event\r\n * @param index índice del elemento de la fórmula que fue modificado\r\n */\r\n\r\n handleChangeFormula = (e, index) => {\r\n\r\n let filter = /^((\\+|-|\\/|\\*|\\(|\\)){1}|\\b([1-9]|[1-9][0-9]|100)\\b){0,1}$/;\r\n\r\n if(!filter.test(e.target.value)){\r\n return;\r\n }\r\n\r\n if(this.state.formula[index].isDraggableDisabled == true){\r\n return;\r\n }\r\n\r\n let newState = update(this.state, {\r\n\r\n formula: {\r\n [index]: {\r\n text : {$set: e.target.value}\r\n }\r\n },\r\n formulaWasModified: {$set: true},\r\n formulaIsValid: {$set: false}\r\n \r\n });\r\n this.setState(newState);\r\n }\r\n\r\n /**\r\n * Función que es llamada cuando se da cancel en el modal para editar la fórmula\r\n */\r\n\r\n cancelEditFormulaModal = () => {\r\n let newState = update(this.state, {\r\n showModal: {$set: false},\r\n showModalEditFormula: {$set: false},\r\n formulaWasModified: {$set: false},\r\n formulaIsValid: {$set: false},\r\n formula: {$set: this.initialFormula},\r\n addElementFormulaIsDisabled: {$set: false},\r\n });\r\n this.setState(newState);\r\n }\r\n\r\n /**\r\n * Función que se ejecuta para mostrar el modal para agregar/eliminar recetas de la\r\n * lista de recetas a excluir\r\n */\r\n\r\n cancelRecipesModal = () => {\r\n let newState = update(this.state, {\r\n showModal: {$set: false},\r\n showModalEditRecipes: {$set: false},\r\n });\r\n this.setState(newState);\r\n }\r\n\r\n /**\r\n * Función que se ejecuta para cancelar el modal para agregar/eliminar toppings de la\r\n * lista de toppings a excluir\r\n */\r\n\r\n cancelToppingsModal = () => {\r\n let newState = update(this.state, {\r\n showModal: {$set: false},\r\n showModalEditToppings: {$set: false},\r\n });\r\n this.setState(newState);\r\n }\r\n\r\n /**\r\n * Función que se encarga de regresar el estado a su estado inicial\r\n */\r\n resetState = () => {\r\n this.setState(this.baseState)\r\n }\r\n\r\n /**\r\n * Función que se encarga de checar si hay campos vacios en el modal\r\n */\r\n\r\n checkHasInvalidFields = () => {\r\n return !this.state.hasInvalidFields;\r\n }\r\n\r\n /**\r\n * Función que se encarga de cambiar el loading del state a su estado opuesto\r\n */\r\n\r\n changeLoading = () => {\r\n let newState = update(this.state, {\r\n isLoading: {$set : !this.state.isLoading}\r\n });\r\n this.setState(newState);\r\n }\r\n\r\n /**\r\n * Función que se encarga de hacer de manejar cambios en campo de Tiempo Vida\r\n */\r\n handleChangeTiempoVida = (e) => { \r\n\r\n let auxTiempoVidaIsEmpty = false, auxTiempoVidaIsZero = false, auxTiempoVidaIsMax = false, auxInvalidFieldTiempoVida = false;\r\n if ((isNaN(e.target.value)) || !(e.target.value)) { \r\n auxTiempoVidaIsEmpty = true;\r\n auxInvalidFieldTiempoVida = true;\r\n }\r\n if(e.target.valueAsNumber === 0){\r\n auxTiempoVidaIsZero = true;\r\n auxInvalidFieldTiempoVida = true;\r\n }\r\n if(e.target.valueAsNumber > 480){\r\n auxTiempoVidaIsMax = true;\r\n auxInvalidFieldTiempoVida = true;\r\n }\r\n\r\n let newState = update(this.state, {\r\n formulaData: {\r\n [e.target.name] : {$set: e.target.valueAsNumber},\r\n },\r\n tiempoVidaIsEmpty: {$set: auxTiempoVidaIsEmpty},\r\n tiempoVidaIsZero: {$set: auxTiempoVidaIsZero},\r\n tiempoVidaIsMax: {$set: auxTiempoVidaIsMax},\r\n invalidFieldTiempoVida: {$set: auxInvalidFieldTiempoVida} \r\n });\r\n this.setState(newState);\r\n }\r\n\r\n /**\r\n * Función que se encarga de hacer de manejar cambios en campo de Frecuencia\r\n */\r\n handleChangeFrecuencia = (e) => { \r\n\r\n let auxFrecuenciaIsEmpty = false, auxFrecuenciaIsZero = false, auxFrecuenciaIsMax = false ,auxInvalidFieldFrecuencia = false;\r\n if ((isNaN(e.target.value)) || !(e.target.value)) { \r\n auxFrecuenciaIsEmpty = true;\r\n auxInvalidFieldFrecuencia = true;\r\n }\r\n if(e.target.valueAsNumber === 0){\r\n auxFrecuenciaIsZero = true;\r\n auxInvalidFieldFrecuencia = true;\r\n }\r\n if(e.target.valueAsNumber > 480){\r\n auxFrecuenciaIsMax = true;\r\n auxInvalidFieldFrecuencia = true;\r\n }\r\n\r\n let newState = update(this.state, {\r\n formulaData: {\r\n [e.target.name] : {$set: e.target.valueAsNumber},\r\n },\r\n frecuenciaIsEmpty: {$set: auxFrecuenciaIsEmpty},\r\n frecuenciaIsZero: {$set: auxFrecuenciaIsZero},\r\n frecuenciaIsMax: {$set: auxFrecuenciaIsMax},\r\n invalidFieldFrecuencia: {$set: auxInvalidFieldFrecuencia} \r\n\r\n });\r\n this.setState(newState);\r\n }\r\n\r\n\r\n // Solo permite números, sin signos ni exponenciales\r\n onKeyPressNumber(event) {\r\n const keyCode = event.keyCode || event.which;\r\n const keyValue = String.fromCharCode(keyCode);\r\n if (/\\+|-|e|E|\\./.test(keyValue) || event.target.value.length >= event.target.getAttribute('maxLength'))\r\n event.preventDefault();\r\n }\r\n\r\n // No permite escribir en el ccampo\r\n onKeyDown(event) {\r\n event.preventDefault();\r\n } \r\n\r\n /**\r\n * Función que se ejecuta para mostrar el modal para editar la fórmula\r\n * @param e event\r\n */\r\n\r\n toggleEditFormulaModal = (e) => {\r\n e.stopPropagation();\r\n this.initialFormula = lodash.cloneDeep(this.state.formula);\r\n let newState = update(this.state, {\r\n showModalEditFormula: {$set: true},\r\n showModal: {$set: true}\r\n })\r\n this.setState(newState);\r\n }\r\n\r\n /**\r\n * Función que se ejecuta para mostrar el modal para agregar o eliminar recetas a excluir\r\n * @param e event\r\n */\r\n\r\n toggleEditRecipesModal = (e) => {\r\n e.stopPropagation();\r\n let newState = update(this.state, {\r\n showModalEditRecipes: {$set: true},\r\n showModal: {$set: true}\r\n\r\n })\r\n this.setState(newState);\r\n }\r\n\r\n /**\r\n * Función que se ejecuta para mostrar el modal para agregar o eliminar toppings a excluir \r\n * @param e event\r\n */\r\n\r\n toggleEditToppingsModal = (e) => {\r\n e.stopPropagation();\r\n let newState = update(this.state, {\r\n showModalEditToppings: {$set: true},\r\n showModal: {$set: true}\r\n })\r\n this.setState(newState);\r\n }\r\n\r\n /**\r\n * Función que se ejecuta para mostrar el modal que da información acerca del módulo\r\n * @param e event\r\n */\r\n\r\n toggleModalInfo = (e) => {\r\n e.stopPropagation();\r\n let newState = update(this.state, {\r\n showModalInfo: {$set: true}\r\n })\r\n this.setState(newState);\r\n }\r\n\r\n /**\r\n * Función que se ejecuta para mostrar el modal para cancelar el modal de información del módulo\r\n */\r\n\r\n cancelModalInfo = () => {\r\n let newState = update(this.state, {\r\n showModalInfo: {$set: false}\r\n })\r\n this.setState(newState);\r\n }\r\n\r\n /**\r\n * Función que se ejecuta al dar \"cancelar\" en el modal de \r\n * \"Confirmar desactivar dos lineas producción\"\r\n */\r\n closeAcceptModal = () => {\r\n let newState = update(this.state, {\r\n showModalConfirmationMessage: {$set: false}\r\n\r\n })\r\n this.setState(newState);\r\n }\r\n\r\n /**\r\n * Función que se encarga de cerrar el modal de la configuraciónVP\r\n */\r\n\r\n closeModal = () => {\r\n toast.success(\"Éxito\");\r\n this.props.cancel();\r\n }\r\n \r\n /**\r\n * Función que se ejecuta para verificar que la formula es válida\r\n */\r\n\r\n checkFormula = () => {\r\n let _newState = update(this.state, {\r\n isLoading: {$set : true}\r\n });\r\n this.setState(_newState, () => {\r\n let auxFormula = this.state.formula.map(e => e.text).join(' ');\r\n let TiempoVida = this.state.tiempoVida;\r\n let Frecuencia = this.state.frecuencia;\r\n let VentaHistorica = 1;\r\n \r\n try {\r\n let result = eval(auxFormula);\r\n let newState = update(this.state, {\r\n formulaIsValid: {$set: true},\r\n isLoading: {$set: false}\r\n })\r\n this.setState(newState, () => {\r\n toast.success(`La fórmula es válida`);\r\n });\r\n\r\n } catch (err) {\r\n let newState = update(this.state, {\r\n isLoading: {$set: false}\r\n })\r\n this.setState(newState, () => {\r\n toast.error(`La fórmula no es válida, revise los elementos de la fórmula`);\r\n });\r\n }\r\n\r\n }); \r\n\r\n }\r\n\r\n /**\r\n * Función que se ejecuta al soltar un elemento en el drag n drop\r\n * @param result objeto del drag n drop\r\n */\r\n\r\n onDragEnd = (result) => {\r\n // dropped outside the list\r\n if (!result.destination) {\r\n return;\r\n }\r\n \r\n var items = this.reorder(\r\n this.state.formula,\r\n result.source.index,\r\n result.destination.index\r\n );\r\n\r\n let newState = update(this.state, {\r\n\r\n formula: {$set: items},\r\n formulaWasModified: {$set: true},\r\n formulaIsValid: {$set: false}\r\n })\r\n this.setState(newState);\r\n\r\n }\r\n\r\n // a little function to help us with reordering the result\r\n reorder = (list, startIndex, endIndex) => {\r\n const result = Array.from(list);\r\n const [removed] = result.splice(startIndex, 1);\r\n result.splice(endIndex, 0, removed);\r\n // var b = result[y];\r\n // result[y] = result[x];\r\n // result[x] = b;\r\n \r\n return result;\r\n };\r\n \r\n getItemStyle = (isDragging, draggableStyle) => ({\r\n // some basic styles to make the items look a bit nicer\r\n userSelect: 'none',\r\n padding: this.grid * 2,\r\n margin: `0 ${this.grid}px 0 0`,\r\n \r\n // change background colour if dragging\r\n background: isDragging ? 'lightgreen' : 'lightgrey',\r\n \r\n // styles we need to apply on draggables\r\n ...draggableStyle,\r\n });\r\n \r\n getListStyle = isDraggingOver => ({\r\n background: isDraggingOver ? 'lightblue' : 'white',\r\n display: 'flex',\r\n padding: this.grid,\r\n overflow: 'auto',\r\n });\r\n\r\n /**\r\n * Regresa a la ruta anterior.\r\n */\r\n handleGoBack = () => {\r\n window.history.back();\r\n }\r\n\r\n\r\n render(){\r\n \r\n return (\r\n this.state.isFinishLoading &&\r\n \r\n );\r\n }\r\n\r\n\r\n}\r\n\r\nProyeccionFormulaContainer.defaultProps = {\r\n \r\n formula: [\r\n\r\n ],\r\n\r\n formulaData : {\r\n IdFormulaProduccionAdelantado: 0,\r\n IdProduccionAdelantado: 0,\r\n FormulaText: \"\",\r\n Frecuencia: 1,\r\n TiempoVida: 1,\r\n Recetas: [],\r\n Toppings: []\r\n }\r\n}\r\n\r\n\r\n\r\nexport { ProyeccionFormulaContainer };","import { apiUrl } from \"../constants\";\r\nimport axios from 'axios';\r\nimport middleware from '../middleware/auth';\r\n\r\nvar request = axios.create({\r\n baseURL: apiUrl,\r\n headers: {'Authorization':'Bearer ' +localStorage.getItem('token'),'Content-Type':'application/json'}\r\n})\r\nexport default class RecipesTypesAPI {\r\n static getAll() {\r\n return middleware.hasAuth(() => request.get('/TypeRecipe'));\r\n }\r\n\r\n static get(id) {\r\n return middleware.hasAuth(() => request.get(`/TypeRecipe/${id}`));\r\n }\r\n\r\n static getByClasification(ids){\r\n return middleware.hasAuth(() => request.post(`/TypeRecipe/GetByClassification`, ids));\r\n }\r\n\r\n static create(TypeRecipe) {\r\n console.log(TypeRecipe)\r\n let fd = new FormData();\r\n fd.append(\"Description\", TypeRecipe.Description);\r\n fd.append(\"Position\", TypeRecipe.Position);\r\n fd.append(\"RecipeName\", TypeRecipe.RecipeName); \r\n fd.append(\"Activo\", TypeRecipe.Activo);\r\n fd.append(\"SegmentId\", TypeRecipe.SegmentationId.SegmentId)\r\n TypeRecipe.Image && fd.append(\"Image\", TypeRecipe.Image);\r\n\r\n return request.post('/TypeRecipe',fd);\r\n }\r\n\r\n static edit(TypeRecipe){\r\n let fd = new FormData();\r\n\r\n fd.append(\"Description\", TypeRecipe.Description);\r\n fd.append(\"Position\", TypeRecipe.Position);\r\n fd.append(\"RecipeName\", TypeRecipe.RecipeName);\r\n fd.append(\"RecipeTypeId\", TypeRecipe.RecipeTypeId);\r\n fd.append(\"Activo\", TypeRecipe.Activo);\r\n TypeRecipe.idSegmento && fd.append(\"SegmentId\", TypeRecipe.idSegmento)\r\n\r\n TypeRecipe.Image instanceof File && fd.append(\"Image\", TypeRecipe.Image);\r\n\r\n return request.put(`/TypeRecipe`,fd);\r\n }\r\n\r\n static delete(id){\r\n return middleware.hasAuth(() => request.delete(`TypeRecipe/${id}`));\r\n }\r\n}","import React from \"react\";\r\nimport Field from \"../util/field/Field\";\r\nimport Loading from \"../util/loading/Loading\";\r\nimport Modal from '../util/modal/Modal';\r\nimport AcceptModal from '../util/acceptModal/AcceptModal';\r\nimport HasAccess from '../util/hasAccess/HasAccess';\r\nimport NoItems from \"../util/noitems/NoItems\";\r\nimport Select from 'react-select';\r\nimport Pagination from '../util/pagination/Pagination';\r\n\r\nimport BtnModoGuiado from '../util/BtnModoGuiado/BtnModoGuiado'\r\nimport ErrorMessages from '../../util/validation-error-messages';\r\nimport { size, truncate } from \"lodash\";\r\n\r\nimport RecipeExtractos from \"../Recetas/recipes/RecipeExtractos\"\r\nimport ToppingsExtractos from \"../Recetas/toppings/ToppingsExtractos\";\r\n\r\nimport { DragDropContext, Droppable, Draggable } from \"react-beautiful-dnd\";\r\n\r\nimport TableTemplate from \"../util/tabletemplate/TableTemplate\";\r\n\r\nexport function ExtraccionesCafeComponent({\r\n checkHasInvalidFields,\r\n onKeyPressNumber,\r\n onKeyDown,\r\n handleChange,\r\n submit,\r\n cancelEditFormulaModal,\r\n cancelRecipesModal,\r\n cancelToppingsModal,\r\n toggleEditFormulaModal,\r\n toggleEditRecipesModal,\r\n toggleEditToppingsModal,\r\n reorder,\r\n getItemStyle,\r\n getListStyle,\r\n onDragEnd,\r\n checkFormula,\r\n checkDraggableStatus,\r\n handleChangeFormula,\r\n saveFormula,\r\n saveModule,\r\n saveRecipes,\r\n saveToppings,\r\n handleChangeTiempoVida,\r\n handleChangeFrecuencia,\r\n addElementFormula,\r\n removeElementFormula,\r\n changeRecipePage,\r\n changeToppingPage,\r\n removeToppingFromList,\r\n removeRecipeFromList,\r\n toggleModalRemoveRecipe,\r\n closeModalRemoveRecipe,\r\n toggleModalRemoveTopping,\r\n closeModalRemoveTopping,\r\n toggleModalRemoveElementFormula,\r\n cancelModalRemoveElementFormula,\r\n toggleModalInfo,\r\n cancelModalInfo,\r\n ...props\r\n}) {\r\n return(\r\n
\r\n\r\n\r\n {/* Modal para visualizar la información del módulo */}\r\n {props.showModalInfo &&\r\n cancelModalInfo()}\r\n >\r\n
\r\n Módulo para configurar variables y fórmula que será utilizada para obtener la cantidad de extractos de café a producir por los operadores en el punto de venta, durante \r\n determinado periodo de tiempo.\r\n
\r\n
\r\n En los apartados se podrán realizar:\r\n
    \r\n
  1. Recetas a excluir: Las recetas seleccionadas y agregadas a esta sección, se excluirán de la consulta de venta histórica para no ser contempladas en el pronóstico de \r\n extractos de café.\r\n
  2. \r\n
  3. \r\n Toppings a excluir: Los toppings seleccionados y agregados a esta sección, se excluirán de la consulta de venta histórica para no ser contemplados en el pronóstico de\r\n extractos de café.\r\n
    \r\n
  4. \r\n \r\n
\r\n
\r\n \r\n }\r\n\r\n\r\n\r\n

Extractos Café\r\n \r\n toggleModalInfo(e)}\r\n >\r\n\r\n \r\n \r\n

\r\n {/* \r\n VARIABLES\r\n */}\r\n\r\n\r\n
\r\n\r\n
\r\n
\r\n
\r\n

Variables

\r\n
\r\n
\r\n\r\n {/* \r\n Tiempo de vida (minutos)\r\n */}\r\n\r\n \r\n handleChangeTiempoVida(e)}\r\n />\r\n \r\n {props.tiempoVidaIsEmpty &&\r\n

El campo es requerido

\r\n }\r\n {props.tiempoVidaIsZero &&\r\n

El campo no puede ser 0

\r\n }\r\n {props.tiempoVidaIsMax &&\r\n

El valor máximo para el campo es de 480

\r\n }\r\n\r\n
\r\n\r\n {/* \r\n Frecuencia a medir (minutos)\r\n */}\r\n\r\n \r\n handleChangeFrecuencia(e)}\r\n />\r\n \r\n {props.frecuenciaIsEmpty &&\r\n

El campo es requerido

\r\n }\r\n {props.frecuenciaIsZero &&\r\n

El campo no puede ser 0

\r\n }\r\n {props.frecuenciaIsMax &&\r\n

El valor máximo para el campo es de 480

\r\n }\r\n\r\n\r\n
\r\n
\r\n
\r\n\r\n {/* \r\n FORMULA\r\n */}\r\n\r\n
\r\n\r\n
\r\n
\r\n

Fórmula

\r\n
\r\n\r\n
\r\n\r\n
\r\n\r\n \r\n {props.formula.map(e => e.text).join(' ')}\r\n \r\n\r\n
\r\n
\r\n
\r\n\r\n
\r\n toggleEditFormulaModal(e)}>\r\n Editar\r\n \r\n
\r\n\r\n\r\n
\r\n
\r\n\r\n
\r\n\r\n
\r\n \r\n {/* \r\n MODAL DE FORMULA\r\n */}\r\n\r\n {props.showModalEditFormula && props.showModal && \r\n cancelEditFormulaModal()}\r\n >\r\n
\r\n
\r\n Operadores Permitidos:\r\n suma +\r\n resta -\r\n multiplicacion *\r\n división /\r\n paréntesis ( ) \r\n campo vacío \" \" \r\n
\r\n
\r\n\r\n
\r\n
\r\n Ejemplos:\r\n TiempoVida / (Frecuencia / VentaHistorica)\r\n Frecuencia * ( VentaHistorica + TiempoVida)\r\n VentaHistorica * TiempoVida - Frecuencia\r\n
\r\n\r\n
\r\n \r\n
\r\n
\r\n - En la siguiente sección se muestran las variables (resaltadas en verde) y operaciones que se incluyen en el algortimo.\r\n Las variables son fijas y las operaciones pueden ser modificadas, intercambiando solo con otra operación permitida utilizando el teclado del dispositivo.\r\n
\r\n\r\n
\r\n - Se puede modificar la fórmula, moviendo el orden de las variables o de las operaciones, utilizando el puntero, presionando \r\n sobre el elemento a mover y arrastrándolo hasta su nuevo lugar. \r\n
\r\n
\r\n\r\n
\r\n
\r\n\r\n
\r\n addElementFormula()}\r\n >\r\n Agregar elemento\r\n \r\n\r\n \r\n
\r\n \r\n
\r\n
\r\n\r\n \r\n onDragEnd(result)}>\r\n\r\n \r\n { (droppableProvided, snapshot) => \r\n
\r\n {props.formula.map((element, index) => (\r\n // \r\n \r\n {(draggableProvided, snapshot) => \r\n
\r\n
\r\n
\r\n\r\n checkDraggableStatus(e, index)}\r\n onChange={(e) => handleChangeFormula(e, index)}\r\n // onKeyPress={(e) => onKeyPressNumber(e)}\r\n />\r\n\r\n
\r\n\r\n
\r\n {(!props.formula[index].isDraggableDisabled) &&\r\n toggleModalRemoveElementFormula(index)}\r\n >\r\n X\r\n }\r\n
\r\n \r\n \r\n
\r\n\r\n
}\r\n\r\n \r\n\r\n\r\n
\r\n ))} \r\n\r\n\r\n {(props.showModalRemoveElementFormula) &&\r\n ¿Está seguro que deseas eliminar este elemento de la fórmula?

}\r\n isActive={props.showModalRemoveElementFormula}\r\n willSave={true}\r\n done={() => removeElementFormula()}\r\n cancel={() => cancelModalRemoveElementFormula()}\r\n />\r\n } \r\n\r\n\r\n {droppableProvided.placeholder}\r\n
\r\n }\r\n
\r\n\r\n
\r\n\r\n
\r\n\r\n
\r\n\r\n \r\n\r\n\r\n \r\n\r\n\r\n \r\n\r\n
\r\n\r\n \r\n } \r\n \r\n\r\n {/* \r\n RECETAS\r\n */}\r\n\r\n
\r\n
\r\n\r\n

Recetas a excluir

\r\n\r\n \r\n
\r\n toggleEditRecipesModal(e)}>\r\n Editar recetas\r\n \r\n\r\n \r\n
\r\n\r\n
\r\n \r\n\r\n\r\n
\r\n
\r\n\r\n
\r\n {/* \r\n TABLA DE RECETAS\r\n */}\r\n\r\n {(props.formulaData.Recetas.length !== 0) \r\n ? {}}\r\n //checkAll={this.state.checkAll}\r\n //Controlador del checkbox del header\r\n //selectAllCheck={this.selectAllCheck}\r\n rowClickable={false}\r\n extraButtons={(recipe) => {\r\n return \r\n }}\r\n /> \r\n \r\n : }\r\n\r\n {(props.showModalRemoveRecipe) &&\r\n ¿Está seguro que desea eliminar la receta de la lista a excluir?

}\r\n isActive={props.showModalRemoveRecipe}\r\n willSave={true}\r\n done={() => removeRecipeFromList()}\r\n cancel={() => closeModalRemoveRecipe()}\r\n />\r\n } \r\n\r\n\r\n changeRecipePage(recipes)} />\r\n
\r\n
\r\n
\r\n
\r\n\r\n\r\n
\r\n\r\n

Toppings a excluir

\r\n\r\n \r\n
\r\n toggleEditToppingsModal(e)}>\r\n Editar toppings\r\n \r\n\r\n \r\n
\r\n\r\n
\r\n \r\n\r\n\r\n
\r\n
\r\n\r\n
\r\n {/* \r\n TABLA DE TOPPINGS\r\n */}\r\n\r\n {(props.formulaData.Toppings.length !== 0) \r\n ? {}}\r\n //checkAll={this.state.checkAll}\r\n //Controlador del checkbox del header\r\n //selectAllCheck={this.selectAllCheck}\r\n rowClickable={false}\r\n extraButtons={(topping) => {\r\n return \r\n }}\r\n /> \r\n : }\r\n\r\n {(props.showModalRemoveTopping) &&\r\n ¿Está seguro que desea eliminar el topping de la lista a excluir?

}\r\n isActive={props.showModalRemoveTopping}\r\n willSave={true}\r\n done={() => removeToppingFromList()}\r\n cancel={() => closeModalRemoveTopping()}\r\n />\r\n } \r\n\r\n changeToppingPage(toppings)} />\r\n \r\n\r\n
\r\n
\r\n
\r\n
\r\n\r\n
\r\n\r\n {/* MODAL DE RECETAS */}\r\n\r\n {props.showModalEditRecipes && props.showModal && \r\n cancelRecipesModal()}\r\n >\r\n\r\n \r\n\r\n
\r\n\r\n \r\n }\r\n\r\n {/* MODAL DE TOPPINGS */}\r\n\r\n {props.showModalEditToppings && props.showModal && \r\n cancelToppingsModal()}\r\n >\r\n\r\n \r\n\r\n
\r\n\r\n \r\n }\r\n\r\n\r\n\r\n
\r\n saveModule()}\r\n >\r\n Guardar\r\n \r\n\r\n \r\n
\r\n\r\n\r\n \r\n \r\n
\r\n\r\n );\r\n}","import { apiUrl } from \"../constants\";\r\nimport axios from 'axios';\r\nvar request = axios.create({\r\n baseURL: apiUrl,\r\n headers: {'Authorization':'Bearer ' +localStorage.getItem('token'),'Content-Type':'application/json'}\r\n})\r\nexport default class FlavorsAPI {\r\n static getAll() {\r\n return request.get('/FlavorType');\r\n }\r\n\r\n static get(id) {\r\n return request.get(`/FlavorType/${id}`);\r\n }\r\n \r\n static getByClasification(ids){\r\n return request.post(`/FlavorType/GetByClassification`, ids);\r\n }\r\n\r\n static create(FlavorType) {\r\n let fd = new FormData();\r\n fd.append(\"Name\", FlavorType.Name);\r\n fd.append(\"ShortName\", FlavorType.ShortName);\r\n fd.append(\"Position\", FlavorType.Position);\r\n fd.append(\"RecipeName\", FlavorType.RecipeName);\r\n fd.append(\"Activo\", FlavorType.Activo);\r\n fd.append(\"SegmentId\", FlavorType.SegmentationId.SegmentId)\r\n FlavorType.Image && fd.append(\"Image\", FlavorType.Image);\r\n\r\n return request.post('/FlavorType',fd);\r\n }\r\n\r\n static edit(FlavorType){\r\n let fd = new FormData();\r\n\r\n fd.append(\"Name\", FlavorType.Name);\r\n fd.append(\"ShortName\", FlavorType.ShortName);\r\n fd.append(\"Position\", FlavorType.Position);\r\n fd.append(\"RecipeName\", FlavorType.RecipeName);\r\n fd.append(\"FlavorTypeId\", FlavorType.FlavorTypeId);\r\n fd.append(\"Activo\", FlavorType.Activo);\r\n FlavorType.idSegmento && fd.append(\"SegmentId\", FlavorType.idSegmento)\r\n \r\n FlavorType.Image instanceof File && fd.append(\"Image\", FlavorType.Image);\r\n\r\n return request.put(`/FlavorType`,fd);\r\n }\r\n\r\n static delete(id){\r\n return request.delete(`FlavorType/${id}`);\r\n }\r\n}","import React from \"react\";\r\nimport Field from \"../util/field/Field\";\r\nimport Loading from \"../util/loading/Loading\";\r\nimport Modal from '../util/modal/Modal';\r\nimport AcceptModal from '../util/acceptModal/AcceptModal';\r\nimport HasAccess from '../util/hasAccess/HasAccess';\r\nimport NoItems from \"../util/noitems/NoItems\";\r\nimport Select from 'react-select';\r\nimport Pagination from '../util/pagination/Pagination';\r\n\r\nimport BtnModoGuiado from '../util/BtnModoGuiado/BtnModoGuiado'\r\nimport ErrorMessages from '../../util/validation-error-messages';\r\nimport { size, truncate } from \"lodash\";\r\n\r\nimport RecipeExtractos from \"../Recetas/recipes/RecipeExtractos\"\r\nimport ToppingsExtractos from \"../Recetas/toppings/ToppingsExtractos\";\r\n\r\nimport { DragDropContext, Droppable, Draggable } from \"react-beautiful-dnd\";\r\n\r\nimport TableTemplate from \"../util/tabletemplate/TableTemplate\";\r\n\r\nexport function ProyeccionFormulaComponent({\r\n checkHasInvalidFields,\r\n onKeyPressNumber,\r\n onKeyDown,\r\n handleChange,\r\n submit,\r\n cancelEditFormulaModal,\r\n cancelRecipesModal,\r\n cancelToppingsModal,\r\n toggleEditFormulaModal,\r\n toggleEditRecipesModal,\r\n toggleEditToppingsModal,\r\n reorder,\r\n getItemStyle,\r\n getListStyle,\r\n onDragEnd,\r\n checkFormula,\r\n checkDraggableStatus,\r\n handleChangeFormula,\r\n saveFormula,\r\n saveModule,\r\n saveRecipes,\r\n saveToppings,\r\n handleChangeTiempoVida,\r\n handleChangeFrecuencia,\r\n addElementFormula,\r\n removeElementFormula,\r\n changeRecipePage,\r\n changeToppingPage,\r\n removeToppingFromList,\r\n removeRecipeFromList,\r\n toggleModalRemoveRecipe,\r\n closeModalRemoveRecipe,\r\n toggleModalRemoveTopping,\r\n closeModalRemoveTopping,\r\n toggleModalRemoveElementFormula,\r\n cancelModalRemoveElementFormula,\r\n toggleModalInfo,\r\n cancelModalInfo,\r\n handleGoBack,\r\n ...props\r\n}) {\r\n return(\r\n
\r\n\r\n\r\n {/* Modal para visualizar la información del módulo */}\r\n {props.showModalInfo &&\r\n cancelModalInfo()}\r\n >\r\n
\r\n Módulo para configurar variables y fórmula que será utilizada para obtener la cantidad de producto a producir por los operadores en el punto de venta, durante \r\n determinado periodo de tiempo.\r\n
\r\n
\r\n En los apartados se podrán realizar:\r\n
    \r\n
  1. Recetas a incluir: Las recetas seleccionadas y agregadas a esta sección, se incluirán en la consulta de venta histórica para ser contempladas en el pronóstico de \r\n el producto.\r\n
  2. \r\n
  3. \r\n Toppings a incluir: Los toppings seleccionados y agregados a esta sección, se incluirán en la consulta de venta histórica para ser contemplados en el pronóstico de\r\n el producto.\r\n
    \r\n
  4. \r\n \r\n
\r\n
\r\n \r\n }\r\n\r\n
\r\n
\r\n
\r\n \r\n \r\n \r\n \r\n
\r\n {props.proyeccion.Nombre}\r\n toggleModalInfo(e)}\r\n >\r\n
\r\n
\r\n
\r\n
\r\n \r\n\r\n\r\n {/*

{ props.proyeccion.Nombre }\r\n \r\n toggleModalInfo(e)}\r\n >\r\n\r\n \r\n \r\n

*/}\r\n {/* \r\n VARIABLES\r\n */}\r\n\r\n\r\n
\r\n\r\n
\r\n
\r\n
\r\n

Variables

\r\n
\r\n
\r\n\r\n {/* \r\n Tiempo de vida (minutos)\r\n */}\r\n\r\n \r\n handleChangeTiempoVida(e)}\r\n />\r\n \r\n {props.tiempoVidaIsEmpty &&\r\n

El campo es requerido

\r\n }\r\n {props.tiempoVidaIsZero &&\r\n

El campo no puede ser 0

\r\n }\r\n {props.tiempoVidaIsMax &&\r\n

El valor máximo para el campo es de 480

\r\n }\r\n\r\n
\r\n\r\n {/* \r\n Frecuencia a medir (minutos)\r\n */}\r\n\r\n \r\n handleChangeFrecuencia(e)}\r\n />\r\n \r\n {props.frecuenciaIsEmpty &&\r\n

El campo es requerido

\r\n }\r\n {props.frecuenciaIsZero &&\r\n

El campo no puede ser 0

\r\n }\r\n {props.frecuenciaIsMax &&\r\n

El valor máximo para el campo es de 480

\r\n }\r\n\r\n\r\n
\r\n
\r\n
\r\n\r\n {/* \r\n FORMULA\r\n */}\r\n\r\n
\r\n\r\n
\r\n
\r\n

Fórmula

\r\n
\r\n\r\n
\r\n\r\n
\r\n\r\n \r\n {props.formula.map(e => e.text).join(' ')}\r\n \r\n\r\n
\r\n
\r\n
\r\n\r\n
\r\n toggleEditFormulaModal(e)}>\r\n Editar\r\n \r\n
\r\n\r\n\r\n
\r\n
\r\n\r\n
\r\n\r\n
\r\n \r\n {/* \r\n MODAL DE FORMULA\r\n */}\r\n\r\n {props.showModalEditFormula && props.showModal && \r\n cancelEditFormulaModal()}\r\n >\r\n
\r\n
\r\n Operadores Permitidos:\r\n suma +\r\n resta -\r\n multiplicacion *\r\n división /\r\n paréntesis ( ) \r\n campo vacío \" \" \r\n
\r\n
\r\n\r\n
\r\n
\r\n Ejemplos:\r\n TiempoVida / (Frecuencia / VentaHistorica)\r\n Frecuencia * ( VentaHistorica + TiempoVida)\r\n VentaHistorica * TiempoVida - Frecuencia\r\n
\r\n\r\n
\r\n \r\n
\r\n
\r\n - En la siguiente sección se muestran las variables (resaltadas en verde) y operaciones que se incluyen en el algortimo.\r\n Las variables son fijas y las operaciones pueden ser modificadas, intercambiando solo con otra operación permitida utilizando el teclado del dispositivo.\r\n
\r\n\r\n
\r\n - Se puede modificar la fórmula, moviendo el orden de las variables o de las operaciones, utilizando el puntero, presionando \r\n sobre el elemento a mover y arrastrándolo hasta su nuevo lugar. \r\n
\r\n
\r\n\r\n
\r\n
\r\n\r\n
\r\n addElementFormula()}\r\n >\r\n Agregar elemento\r\n \r\n\r\n \r\n
\r\n \r\n
\r\n
\r\n\r\n \r\n onDragEnd(result)}>\r\n\r\n \r\n { (droppableProvided, snapshot) => \r\n
\r\n {props.formula.map((element, index) => (\r\n // \r\n \r\n {(draggableProvided, snapshot) => \r\n
\r\n
\r\n
\r\n\r\n checkDraggableStatus(e, index)}\r\n onChange={(e) => handleChangeFormula(e, index)}\r\n // onKeyPress={(e) => onKeyPressNumber(e)}\r\n />\r\n\r\n
\r\n\r\n
\r\n {(!props.formula[index].isDraggableDisabled) &&\r\n toggleModalRemoveElementFormula(index)}\r\n >\r\n X\r\n }\r\n
\r\n \r\n \r\n
\r\n\r\n
}\r\n\r\n \r\n\r\n\r\n
\r\n ))} \r\n\r\n\r\n {(props.showModalRemoveElementFormula) &&\r\n ¿Está seguro que deseas eliminar este elemento de la fórmula?

}\r\n isActive={props.showModalRemoveElementFormula}\r\n willSave={true}\r\n done={() => removeElementFormula()}\r\n cancel={() => cancelModalRemoveElementFormula()}\r\n />\r\n } \r\n\r\n\r\n {droppableProvided.placeholder}\r\n
\r\n }\r\n
\r\n\r\n
\r\n\r\n
\r\n\r\n
\r\n\r\n \r\n\r\n\r\n \r\n\r\n\r\n \r\n\r\n
\r\n\r\n \r\n } \r\n \r\n\r\n {/* \r\n RECETAS\r\n */}\r\n\r\n
\r\n
\r\n\r\n

Recetas a incluir

\r\n\r\n \r\n
\r\n toggleEditRecipesModal(e)}>\r\n Editar recetas\r\n \r\n\r\n \r\n
\r\n\r\n
\r\n \r\n\r\n\r\n
\r\n
\r\n\r\n
\r\n {/* \r\n TABLA DE RECETAS\r\n */}\r\n\r\n {(props.formulaData.Recetas.length !== 0) \r\n ? {}}\r\n //checkAll={this.state.checkAll}\r\n //Controlador del checkbox del header\r\n //selectAllCheck={this.selectAllCheck}\r\n rowClickable={false}\r\n extraButtons={(recipe) => {\r\n return \r\n }}\r\n /> \r\n \r\n : }\r\n\r\n {(props.showModalRemoveRecipe) &&\r\n ¿Está seguro que desea eliminar la receta de la lista a excluir?

}\r\n isActive={props.showModalRemoveRecipe}\r\n willSave={true}\r\n done={() => removeRecipeFromList()}\r\n cancel={() => closeModalRemoveRecipe()}\r\n />\r\n } \r\n\r\n\r\n changeRecipePage(recipes)} />\r\n
\r\n
\r\n
\r\n
\r\n\r\n\r\n
\r\n\r\n

Toppings a incluir

\r\n\r\n \r\n
\r\n toggleEditToppingsModal(e)}>\r\n Editar toppings\r\n \r\n\r\n \r\n
\r\n\r\n
\r\n \r\n\r\n\r\n
\r\n
\r\n\r\n
\r\n {/* \r\n TABLA DE TOPPINGS\r\n */}\r\n\r\n {(props.formulaData.Toppings.length !== 0) \r\n ? {}}\r\n //checkAll={this.state.checkAll}\r\n //Controlador del checkbox del header\r\n //selectAllCheck={this.selectAllCheck}\r\n rowClickable={false}\r\n extraButtons={(topping) => {\r\n return \r\n }}\r\n /> \r\n : }\r\n\r\n {(props.showModalRemoveTopping) &&\r\n ¿Está seguro que desea eliminar el topping de la lista a excluir?

}\r\n isActive={props.showModalRemoveTopping}\r\n willSave={true}\r\n done={() => removeToppingFromList()}\r\n cancel={() => closeModalRemoveTopping()}\r\n />\r\n } \r\n\r\n changeToppingPage(toppings)} />\r\n \r\n\r\n
\r\n
\r\n
\r\n
\r\n\r\n
\r\n\r\n {/* MODAL DE RECETAS */}\r\n\r\n {props.showModalEditRecipes && props.showModal && \r\n cancelRecipesModal()}\r\n >\r\n\r\n \r\n\r\n
\r\n\r\n \r\n }\r\n\r\n {/* MODAL DE TOPPINGS */}\r\n\r\n {props.showModalEditToppings && props.showModal && \r\n cancelToppingsModal()}\r\n >\r\n\r\n \r\n\r\n
\r\n\r\n \r\n }\r\n\r\n\r\n\r\n
\r\n saveModule()}\r\n >\r\n Guardar\r\n \r\n\r\n \r\n
\r\n\r\n
\r\n
\r\n\r\n \r\n \r\n
\r\n\r\n );\r\n}","import { apiUrl } from \"../constants\";\r\nimport axios from 'axios';\r\nvar request = axios.create({\r\n baseURL: apiUrl,\r\n headers: {'Authorization':'Bearer ' +localStorage.getItem('token'),'Content-Type':'application/json'}\r\n})\r\nexport default class MilksAPI {\r\n static getAll() {\r\n return request.get('/MilkType');\r\n }\r\n\r\n static get(id) {\r\n return request.get(`/MilkType/${id}`);\r\n }\r\n\r\n static getByClasification(ids){\r\n return request.post(`/MilkType/GetByClassification`, ids);\r\n }\r\n\r\n static create(MilkType) {\r\n let fd = new FormData();\r\n \r\n fd.append(\"Description\", MilkType.Description);\r\n fd.append(\"Position\", MilkType.Position);\r\n fd.append(\"RecipeName\", MilkType.RecipeName);\r\n fd.append(\"Activo\", MilkType.Activo);\r\n fd.append(\"SegmentId\", MilkType.SegmentationId.SegmentId)\r\n MilkType.Image && fd.append(\"Image\", MilkType.Image);\r\n\r\n return request.post('/MilkType',fd);\r\n }\r\n\r\n static edit(MilkType){\r\n let fd = new FormData();\r\n \r\n fd.append(\"Description\", MilkType.Description);\r\n fd.append(\"Position\", MilkType.Position);\r\n fd.append(\"RecipeName\", MilkType.RecipeName);\r\n fd.append(\"MilkTypeId\", MilkType.MilkTypeId);\r\n fd.append(\"Activo\", MilkType.Activo);\r\n MilkType.idSegmento && fd.append(\"SegmentId\", MilkType.idSegmento)\r\n \r\n MilkType.Image instanceof File && fd.append(\"Image\", MilkType.Image);\r\n\r\n return request.put(`/MilkType`,fd);\r\n }\r\n\r\n static delete(id){\r\n return request.delete(`MilkType/${id}`);\r\n }\r\n}","import { apiUrl } from \"../constants\";\r\nimport axios from 'axios';\r\nvar request = axios.create({\r\n baseURL: apiUrl,\r\n headers: {'Authorization':'Bearer ' +localStorage.getItem('token'),'Content-Type':'application/json'}\r\n})\r\nexport default class GrainsAPI {\r\n static getAll() {\r\n return request.get('/GrainType');\r\n }\r\n\r\n static get(id) {\r\n return request.get(`/GrainType/${id}`);\r\n }\r\n\r\n static getByClasification(ids){\r\n return request.post(`/GrainType/GetByClassification`, ids);\r\n }\r\n\r\n static create(GrainType) {\r\n let fd = new FormData();\r\n fd.append(\"Description\", GrainType.Description);\r\n fd.append(\"NombreApp\", GrainType.NombreApp);\r\n fd.append(\"Position\", GrainType.Position);\r\n fd.append(\"RecipeName\", GrainType.RecipeName);\r\n fd.append(\"Activo\", GrainType.Activo);\r\n fd.append(\"SegmentId\", GrainType.SegmentationId.SegmentId)\r\n GrainType.Image && fd.append(\"Image\", GrainType.Image);\r\n\r\n return request.post('/GrainType',fd);\r\n }\r\n\r\n static edit(GrainType){\r\n let fd = new FormData();\r\n\r\n fd.append(\"Description\", GrainType.Description);\r\n fd.append(\"NombreApp\", GrainType.NombreApp);\r\n fd.append(\"Position\", GrainType.Position);\r\n fd.append(\"RecipeName\", GrainType.RecipeName);\r\n fd.append(\"GrainTypeId\", GrainType.GrainTypeId);\r\n fd.append(\"Activo\", GrainType.Activo);\r\n GrainType.idSegmento && fd.append(\"SegmentId\", GrainType.idSegmento)\r\n\r\n GrainType.Image instanceof File && fd.append(\"Image\", GrainType.Image);\r\n\r\n return request.put(`/GrainType`,fd);\r\n }\r\n\r\n static delete(id){\r\n return request.delete(`GrainType/${id}`);\r\n }\r\n}","import { apiUrl } from \"../constants\";\r\nimport axios from 'axios';\r\nvar request = axios.create({\r\n baseURL: apiUrl,\r\n headers: {'Authorization':'Bearer ' +localStorage.getItem('token'),'Content-Type':'application/json'}\r\n})\r\nexport default class InventoryItemsAPI {\r\n static getAll() {\r\n return request.get('/inventoryItem');\r\n }\r\n\r\n static get(id) {\r\n return request.get(`/inventoryItem/${id}`);\r\n }\r\n static getByList(id,lista) {\r\n return request.get(`/inventoryItem/${id}/${lista}`);\r\n }\r\n static getByCodeProvider(codeProvider){\r\n return request.get(`/InventoryItemByCode/${codeProvider}`)\r\n }\r\n static create(inventoryItem) {\r\n let fd = new FormData();\r\n for(var prop in inventoryItem){\r\n fd.append(prop, inventoryItem[prop])\r\n }\r\n\r\n return request.post('/inventoryItem', fd);\r\n }\r\n\r\n static edit(inventoryItem){\r\n let fd = new FormData();\r\n for(var prop in inventoryItem){\r\n if(inventoryItem[prop] != null && inventoryItem[prop] != undefined)\r\n fd.append(prop, inventoryItem[prop])\r\n }\r\n \r\n return request.put(`/inventoryItemUpdate`, fd);\r\n }\r\n\r\n static editImage(inventoryItem){\r\n let fd = new FormData();\r\n for(var prop in inventoryItem){\r\n if(inventoryItem[prop] != null && inventoryItem[prop] != undefined)\r\n fd.append(prop, inventoryItem[prop])\r\n }\r\n \r\n return request.post(`/InventoryItemUpdate/Image`, fd);\r\n }\r\n\r\n static delete(id){\r\n return request.delete(`inventoryItem/${id}`);\r\n }\r\n\r\n static getInventoryTypes(){\r\n return request.get(`/InventoryType`);\r\n }\r\n\r\n static getOrderTypes(){\r\n return request.get(`/OrderType`);\r\n }\r\n\r\n static getToppings(){\r\n return request.get(`/InventoryItem/toppings`)\r\n }\r\n static getAllToppings(){\r\n return request.get(`/InventoryItem/GetAllToppings`)\r\n }\r\n static setAllPriceToppings(data){\r\n return request.post(`/InventoryItem/setAllPriceToppings`,data)\r\n }\r\n static deleteTopping(id){\r\n return request.put(`/InventoryItem/DeleteTopping/${id}`)\r\n }\r\n static removeToppingFromPriceList(id, priceListId){\r\n return request.put(`/InventoryItem/RemoveToppingFromPriceList/${id}/${priceListId}`)\r\n }\r\n\r\n static search(data){\r\n return request.post(`/inventoryItem/Search/`, data)\r\n }\r\n static GetAllDrivesExcluded(data){\r\n return request.get(`/InventoryItem/GetDrivesExclude/${data}`)\r\n }\r\n static ExcludeToppings(data){\r\n return request.post(`/InventoryItem/ExcludeToppings`,data)\r\n }\r\n static RemoveExcludeToppings(data){\r\n return request.post(`/InventoryItem/RemoveExcludeToppings`,data)\r\n }\r\n static syncDrives(listaArticuloDrive) {\r\n return request.post('/inventoryItem/SyncDrives', listaArticuloDrive);\r\n }\r\n}","import React from 'react';\r\n\r\nimport {Link} from 'react-router-dom'\r\n\r\nclass ModoGuiado extends React.Component {\r\n constructor() {\r\n super();\r\n this.state = {\r\n display: null,\r\n type: null\r\n }\r\n }\r\n\r\n componentDidMount() {\r\n this.setState({\r\n display: localStorage.getItem(\"modoGuiado\"),\r\n type: localStorage.getItem(\"tipoModoGuiado\")\r\n }, () => {\r\n if (this.props.tipoModoGuiado && this.props.tipoModoGuiado === this.state.type) {\r\n if(this.props.ruta) {\r\n localStorage.setItem(\"ultimaRuta\", this.props.ruta)\r\n }\r\n }\r\n \r\n })\r\n\r\n\r\n\r\n }\r\n\r\n render() {\r\n if (this.state.display === 'true' && \r\n this.props.tipoModoGuiado && \r\n this.props.tipoModoGuiado === this.state.type) {\r\n \r\n return (\r\n
\r\n\r\n
\r\n
\r\n
\r\n
\r\n {\r\n this.props.anterior &&\r\n \r\n \r\n \r\n }\r\n
\r\n \r\n
\r\n {\r\n this.props.mensaje &&\r\n

{this.props.mensaje}

\r\n }\r\n
\r\n \r\n
\r\n {\r\n this.props.siguiente &&\r\n \r\n \r\n \r\n }\r\n
\r\n
\r\n
\r\n
\r\n
\r\n
\r\n\r\n )\r\n }else {\r\n return (\r\n null\r\n )\r\n }\r\n }\r\n\r\n} \r\n\r\nexport default ModoGuiado;","import { apiUrl } from \"../constants\";\r\nimport axios from 'axios';\r\nvar request = axios.create({\r\n baseURL: apiUrl,\r\n headers: {'Authorization':'Bearer ' +localStorage.getItem('token'),'Content-Type':'application/json'}\r\n})\r\nexport default class ClasificacionesAPI {\r\n static getAll() {\r\n return request.get('/Classification');\r\n }\r\n\r\n static get(id) {\r\n return request.get(`/Classification/${id}`);\r\n }\r\n\r\n static create(Classification) {\r\n let fd = new FormData();\r\n fd.append(\"Name\", Classification.Name);\r\n fd.append(\"ShortName\", Classification.ShortName);\r\n fd.append(\"Position\", Classification.Position);\r\n fd.append(\"RecipeName\", Classification.RecipeName);\r\n fd.append(\"IVAApply\", Classification.IVAApply);\r\n fd.append(\"Activo\", Classification.Activo);\r\n fd.append(\"SegmentId\", Classification.SegmentationId.SegmentId)\r\n Classification.clasificacionGrupo && fd.append(\"IdClasificacionGrupo\", Classification.clasificacionGrupo.value)\r\n\r\n Classification.Image && fd.append(\"Image\", Classification.Image);\r\n Classification.Background && fd.append(\"Background\", Classification.Background);\r\n Classification.Icon && fd.append(\"Icon\", Classification.Icon);\r\n\r\n return request.post('/Classification',fd);\r\n }\r\n\r\n static edit(Classification){\r\n let fd = new FormData();\r\n console.log(Classification)\r\n fd.append(\"Name\", Classification.Name);\r\n fd.append(\"ShortName\", Classification.ShortName);\r\n fd.append(\"Position\", Classification.Position);\r\n fd.append(\"RecipeName\", Classification.RecipeName);\r\n fd.append(\"IVAApply\", Classification.IVAApply);\r\n fd.append(\"ClassificationId\", Classification.ClassificationId);\r\n fd.append(\"Activo\", Classification.Activo);\r\n Classification.idSegmento && fd.append(\"SegmentId\", Classification.idSegmento)\r\n Classification.clasificacionGrupo && fd.append(\"IdClasificacionGrupo\", Classification.clasificacionGrupo.value)\r\n\r\n Classification.Image instanceof File && fd.append(\"Image\", Classification.Image);\r\n Classification.Background instanceof File && fd.append(\"Background\", Classification.Background);\r\n Classification.Icon instanceof File && fd.append(\"Icon\", Classification.Icon);\r\n\r\n return request.put(`/Classification`,fd);\r\n }\r\n\r\n static delete(id){\r\n return request.delete(`Classification/${id}`);\r\n }\r\n static getAllClasificacionGrupo(){\r\n return request.get('/ClasificacionGrupo')\r\n }\r\n}","import React, { Component } from 'react'\r\nimport PropTypes from 'prop-types';\r\n\r\nexport default class Field extends Component {\r\n\r\n static propTypes = {\r\n isHorizontal: PropTypes.bool,\r\n alingRight : PropTypes.bool,\r\n isVertical: PropTypes.bool,\r\n label: PropTypes.string,\r\n showTooltip: PropTypes.bool,\r\n textTooltip: PropTypes.string,\r\n hasError: PropTypes.bool,\r\n msgError: PropTypes.string,\r\n showLeftSpaces: PropTypes.bool,\r\n childInfo: PropTypes.string,\r\n \r\n }\r\n\r\n static defaultProps = {\r\n isHorizontal: false,\r\n alingLefth : false,\r\n isVertical: false,\r\n label: \"\",\r\n showTooltip: false,\r\n textTooltip: '',\r\n hasError: false,\r\n msgError: \"\",\r\n showLeftSpaces: false,\r\n childInfo: \"\",\r\n \r\n }\r\n\r\n render() {\r\n return (\r\n
\r\n \r\n
\r\n {this.props.label !== \"\" &&\r\n\r\n
\r\n \r\n
\r\n }\r\n
\r\n {this.props.children}\r\n
\r\n\r\n
\r\n {\r\n this.props.hasError \r\n ?

{this.props.msgError}

\r\n : (this.props.showLeftSpaces\r\n ?

{this.props.childInfo}

\r\n : \"\" )\r\n }\r\n
\r\n\r\n )\r\n }\r\n}\r\n","import { apiUrl } from \"../constants\";\r\nimport axios from 'axios';\r\nvar request = axios.create({\r\n baseURL: apiUrl,\r\n headers: {'Authorization':'Bearer ' +localStorage.getItem('token'),'Content-Type':'application/json'}\r\n})\r\nexport default class WarehouseAPI {\r\n static getAll() {\r\n return request.get('/AlmArt');\r\n }\r\n\r\n static GetByIdArticulo(textoFiltro) {\r\n return request.get(`/AlmArt/GetByNombreCodigo/${textoFiltro}`);\r\n }\r\n\r\n static edit(warehouse){\r\n return request.put('/Almart',warehouse);\r\n }\r\n\r\n static editAll(arrObjects){\r\n return request.put('/Almarts',arrObjects);\r\n }\r\n\r\n static getCaffenios(){\r\n return request.get('/Caffenios');\r\n }\r\n\r\n /*static get(id) {\r\n return request.get(`/inventoryType/${id}`);\r\n } */\r\n\r\n /*static edit(inventoryType){\r\n return request.put(`/inventoryType`,inventoryType);\r\n } */\r\n\r\n}","let ErrorMessages = {\r\n name: \"Nombre debe de ser mayor de 2 y menor de 30 caracteres\",\r\n smallName: \"Nombre debe de ser mayor de 2 y menor de 25 caracteres\",\r\n smallestName: \"Nombre debe de ser mayor de 2 y menor de 20 caracteres\",\r\n shortName: \"Nombre Corto incorrecto, debe de ser mayor de 2 y menor de 15 caracteres\",\r\n menuPosition: \"Posición en Menú incorrecto, debe ser un valor numérico\",\r\n menuPositionMax: \"Ingrese una Posición en el Menú menor a 256\",\r\n recipeName: \"Nombre de Receta incorrecto, debe de ser mayor de 2 y menor de 30 caracteres\",\r\n smallRecipeName: \"Nombre de Receta incorrecto, debe de ser mayor de 2 y menor de 25 caracteres\",\r\n smallestRecipeName: \"Nombre de Receta incorrecto, debe de ser mayor de 2 y menor de 20 caracteres\",\r\n codeProvider: \"El Código debe de ser de al menos 9 caracteres\",\r\n urlIcono: \"URL de icono debe de ser mayor a 5 caracteres\",\r\n SinConexion: \"Error de conexión. Intente de nuevo.\",\r\n ErrorInesperado: \"Ocurrió un error inesperado, intente de nuevo.\" , \r\n AlfanumericoSinEspecialesError: \"Ingrese solo caracteres alfanuméricos\",\r\n AalfanumericoSinEspaciosError: \"Ingrese solo caracteres alfanuméricos, sin acentos, espacios, ni caracteres especiales.\",\r\n AlfanumericoConCaracteresError: \"EL campo permite ingresar caracteres alfanuméricos, guion(-), punto(.), parentesis, punto y coma(;), coma(,) o barra(/).\",\r\n SoloNumerosError: \"Ingrese solo números enteros y mayores a cero.\", \r\n PngFormatError:\"Solo se permite formato .PNG.\",\r\n PngJpegFormatError:\"Solo se permite formato .PNG o .JPG.\",\r\n}\r\n\r\nexport default ErrorMessages;\r\n","import React from 'react';\r\nimport PropTypes from 'prop-types';\r\n\r\n/**\r\n * Componente de utilería para la utilización de un campo de texto dentro de un Field\r\n * con el fin de mantener consistencia y a su vez facilitar uso y legibilidad de la\r\n * etiqueta \r\n */\r\n\r\nclass TextField extends React.Component{\r\n\r\n render(){\r\n return (\r\n
\r\n {this.props.label !== \"\" &&
\r\n \r\n
}\r\n
\r\n \r\n
\r\n
\r\n )\r\n }\r\n}\r\n\r\n// Definición de los tipos y su dependencia de las distintas props que recibe el componente.\r\nTextField.propTypes = {\r\n name: PropTypes.string.isRequired,\r\n type: PropTypes.string,\r\n onChange: PropTypes.func.isRequired,\r\n onKeyPress: PropTypes.func,\r\n placeholder: PropTypes.string,\r\n label: PropTypes.string,\r\n autoFocus: PropTypes.bool,\r\n value: PropTypes.any\r\n}\r\n\r\n// Definición de los valores por default de las props en caso de no ser recibidas por el padre.\r\nTextField.defaultProps = {\r\n type: \"text\",\r\n placeholder: \"\",\r\n label: \"\",\r\n autoFocus: false,\r\n value: \"\"\r\n}\r\n\r\nexport default TextField;","// In production, we register a service worker to serve assets from local cache.\r\n\r\n// This lets the app load faster on subsequent visits in production, and gives\r\n// it offline capabilities. However, it also means that developers (and users)\r\n// will only see deployed updates on the \"N+1\" visit to a page, since previously\r\n// cached resources are updated in the background.\r\n\r\n// To learn more about the benefits of this model, read https://goo.gl/KwvDNy.\r\n// This link also includes instructions on opting out of this behavior.\r\n\r\nconst isLocalhost = Boolean(\r\n window.location.hostname === 'localhost' ||\r\n // [::1] is the IPv6 localhost address.\r\n window.location.hostname === '[::1]' ||\r\n // 127.0.0.1/8 is considered localhost for IPv4.\r\n window.location.hostname.match(\r\n /^127(?:\\.(?:25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)){3}$/\r\n )\r\n);\r\n\r\nexport default function register() {\r\n if (process.env.NODE_ENV === 'production' && 'serviceWorker' in navigator) {\r\n // The URL constructor is available in all browsers that support SW.\r\n const publicUrl = new URL(process.env.PUBLIC_URL, window.location);\r\n if (publicUrl.origin !== window.location.origin) {\r\n // Our service worker won't work if PUBLIC_URL is on a different origin\r\n // from what our page is served on. This might happen if a CDN is used to\r\n // serve assets; see https://github.com/facebookincubator/create-react-app/issues/2374\r\n return;\r\n }\r\n\r\n window.addEventListener('load', () => {\r\n const swUrl = `${process.env.PUBLIC_URL}/service-worker.js`;\r\n\r\n if (isLocalhost) {\r\n // This is running on localhost. Lets check if a service worker still exists or not.\r\n checkValidServiceWorker(swUrl);\r\n\r\n // Add some additional logging to localhost, pointing developers to the\r\n // service worker/PWA documentation.\r\n navigator.serviceWorker.ready.then(() => {\r\n console.log(\r\n 'This web app is being served cache-first by a service ' +\r\n 'worker. To learn more, visit https://goo.gl/SC7cgQ'\r\n );\r\n });\r\n } else {\r\n // Is not local host. Just register service worker\r\n registerValidSW(swUrl);\r\n }\r\n });\r\n }\r\n}\r\n\r\nfunction registerValidSW(swUrl) {\r\n navigator.serviceWorker\r\n .register(swUrl)\r\n .then(registration => {\r\n registration.onupdatefound = () => {\r\n const installingWorker = registration.installing;\r\n installingWorker.onstatechange = () => {\r\n if (installingWorker.state === 'installed') {\r\n if (navigator.serviceWorker.controller) {\r\n // At this point, the old content will have been purged and\r\n // the fresh content will have been added to the cache.\r\n // It's the perfect time to display a \"New content is\r\n // available; please refresh.\" message in your web app.\r\n console.log('New content is available; please refresh.');\r\n } else {\r\n // At this point, everything has been precached.\r\n // It's the perfect time to display a\r\n // \"Content is cached for offline use.\" message.\r\n console.log('Content is cached for offline use.');\r\n }\r\n }\r\n };\r\n };\r\n })\r\n .catch(error => {\r\n console.error('Error during service worker registration:', error);\r\n });\r\n}\r\n\r\nfunction checkValidServiceWorker(swUrl) {\r\n // Check if the service worker can be found. If it can't reload the page.\r\n fetch(swUrl)\r\n .then(response => {\r\n // Ensure service worker exists, and that we really are getting a JS file.\r\n if (\r\n response.status === 404 ||\r\n response.headers.get('content-type').indexOf('javascript') === -1\r\n ) {\r\n // No service worker found. Probably a different app. Reload the page.\r\n navigator.serviceWorker.ready.then(registration => {\r\n registration.unregister().then(() => {\r\n window.location.reload();\r\n });\r\n });\r\n } else {\r\n // Service worker found. Proceed as normal.\r\n registerValidSW(swUrl);\r\n }\r\n })\r\n .catch(() => {\r\n console.log(\r\n 'No internet connection found. App is running in offline mode.'\r\n );\r\n });\r\n}\r\n\r\nexport function unregister() {\r\n if ('serviceWorker' in navigator) {\r\n navigator.serviceWorker.ready.then(registration => {\r\n registration.unregister();\r\n });\r\n }\r\n}\r\n","import { url, caffenioAuthId } from \"../constants\";\r\nimport axios from 'axios';\r\nimport * as querystring from 'querystring';\r\n\r\n// Objecto de axios con el único fin de realizar la autentificación con CaffenioAuth\r\nvar request = axios.create({\r\n baseURL: url,\r\n headers: {'Content-Type':'application/x-www-form-urlencoded'}\r\n})\r\n\r\n// Llamadas a la API para la autentificación\r\nclass Auth {\r\n static login = (username, password) => {\r\n let data = {\r\n username: username,\r\n password: password,\r\n grant_type: \"password\",\r\n client_id: caffenioAuthId\r\n };\r\n return request.post('/login',querystring.stringify(data));\r\n }\r\n}\r\n\r\nexport {Auth};","import React, {Component} from 'react'\r\nimport \"./HoverCard.css\"\r\n\r\nexport default class HoverCard extends Component{\r\n\r\n\r\n // handleClickClick() {\r\n // localStorage.setItem(\"modoGuiado\", true); // Establecer el modo guiado\r\n // if(this.props.tipoModoGuiado) {\r\n // localStorage.setItem(\"tipoModoGuiado\", this.props.tipoModoGuiado) // Establecer el tipo de modo guiado\r\n // console.log(localStorage.getItem(\"tipoModoGuiado\"))\r\n // }else {\r\n // console.log(\"No hay tipo de modo guiado\")\r\n // }\r\n // }\r\n\r\n render(){\r\n return(\r\n
\r\n
\r\n
\r\n
\r\n {this.props.titulo}\r\n
\r\n
\r\n
\r\n
\r\n {this.props.descripcion}\r\n
\r\n
\r\n
\r\n
\r\n )\r\n }\r\n}","import React, { Component } from 'react'\r\nimport {Link} from 'react-router-dom'\r\nimport HoverCard from '../../util/HoverCard/HoverCard';\r\nimport HasAccess from '../util/hasAccess/HasAccess';\r\n\r\nclass Home extends Component {\r\n constructor(props){\r\n super(props)\r\n this.state={\r\n nombre:undefined,\r\n rol:undefined\r\n }\r\n }\r\n render() {\r\n return (\r\n
\r\n \r\n
\r\n
\r\n \r\n \r\n
\r\n Crear Artículo\r\n
\r\n }\r\n descripcion=\"Comienza el modo guiado para dar de alta nuevos artículos.\"\r\n />\r\n \r\n
\r\n
\r\n \r\n \r\n {/*
*/}\r\n
\r\n Crear Receta \r\n
\r\n }\r\n descripcion=\"Comienza el modo guiado para dar de alta nuevas recetas.\"\r\n />\r\n \r\n
\r\n
\r\n \r\n
\r\n );\r\n }\r\n}\r\n\r\nexport default Home;","import React from 'react';\r\nimport '../home/Home';\r\nimport Home from '../home/Home';\r\n/**\r\n * Componente de la pantalla principal del sistema.\r\n */\r\nexport default class Index extends React.Component {\r\n\r\n render(){\r\n return (\r\n
\r\n {/*
\r\n
\r\n

Inicio

\r\n
\r\n
*/}\r\n \r\n \r\n
\r\n )\r\n }\r\n}","let roles = {\r\n ADMIN: \"Administrador\",\r\n SUPERADMIN: \"SuperAdmin\",\r\n MKT: \"MKT\",\r\n MKT_OS:\"Oficina Soporte Mercadotecnia\",\r\n MKT_REGIONAL:\"Regional Mercadotecnia\",\r\n COORDINADOR_DISTRIBUCION: \"Coordinador de Distribución\",\r\n SUPERVISOR_VENTA_DRIVE: \"Supervisor de punto de venta drive\",\r\n ESPECIALISTA_DE_PRODUCTO : \"Especialista de producto\",\r\n ESTRATEGIA_DIGITAL : \"Estrategia Digital\",\r\n ESPECIALISTA_DE_GESTION: \"Especialista de Gestión\",\r\n COORDINADOR_GESTION_OPERACIONES: \"Coordinador de Gestión de Operaciones\",\r\n CRM : \"CRM\",\r\n USUARIO: \"Usuario\",\r\n OPERADOR: \"Operador\",\r\n CDS: \"CDS\",\r\n DRIVE: \"Drive\",\r\n SUCURSAL: \"Sucursal\",\r\n SOPORTE: \"Soporte\",\r\n COORDINADOR_SERVICIOS: \"Coordinador de Servicios\",\r\n ASESOR: \"Asesor\",\r\n ADMINDRIVE: \"AdminDrive\",\r\n ADMINBARRA: \"AdminBarra\",\r\n SAP: \"SAP\",\r\n CAT: \"CAT\",\r\n CCH: \"CCH\",\r\n FAT_OS: \"FAT-OS\",\r\n FAT_R: \"FAT-R\",\r\n ADMIN_APP: \"Administrador App Movil\",\r\n ADMIN_UBER_EATS: \"Admin UberEats\",\r\n REPORTES: \"Reportes\",\r\n MICAFFENIO_EMPRESAS: \"CRM Empresarial\",\r\n LIDER_DRIVE: \"LiderDrive\", \r\n ENCARGADO_DE_TURNO: \"Encargado de Turno\",\r\n CONFIGURACION_VP: \"ConfiguracionVP\",\r\n CRM_EMPRESARIAL: \"CRM Empresarial\",\r\n COORD_OPER_DRIVE: \"Coordinador de Operaciones Drive\"\r\n\r\n}\r\n\r\nexport default roles;","import React from 'react';\r\nimport './MenuInterior.css';\r\nimport { Link } from 'react-router-dom';\r\nimport logo from '../../assets/images/logo-caffenio-nuevo.png';\r\nimport HasAccess from '../util/hasAccess/HasAccess';\r\nimport roles from '../../util/strings/roles';\r\n\r\n/**\r\n * Elementos del menú de la barra lateral izquierda \r\n */\r\nexport default class MenuInterior extends React.Component {\r\n constructor(props) {\r\n super(props);\r\n this.state = {\r\n selected: null\r\n }\r\n }\r\n // Preparando para un menú más grande\r\n // También se podría utilizar la navbar para eso, se verá cuando el proyecto crezca.\r\n\r\n render() {\r\n return (\r\n
\r\n
\r\n \"\"\r\n
\r\n
\r\n
    \r\n
  • Inicio
  • \r\n
\r\n {/* Administrar recetas */}\r\n \r\n

Administrar Recetas

\r\n \r\n
\r\n \r\n
  • Caffenio Drive
  • \r\n

    Proyección de productos

    \r\n
      \r\n
    • Productos
    • \r\n
    • Reporte proyecciones
    • \r\n
    \r\n

    Comunicados en VP

    \r\n
      \r\n
    • Comunicados
    • \r\n
    \r\n
    \r\n\r\n {/* Inventarios */}\r\n \r\n

    \r\n INVENTARIOS\r\n

    \r\n
      \r\n
    • Remesas
    • \r\n
    \r\n
    \r\n\r\n {/* CAFFENIO APP */}\r\n \r\n

    Caffenio App

    \r\n
      \r\n \r\n
    • Agenda
    • \r\n
    • Notificaciones
    • \r\n
      \r\n \r\n
    • Segmentaciones
    • \r\n
      \r\n \r\n
    • Orden de Menú
    • \r\n
      \r\n
    \r\n
    \r\n {/* INTEGRACIONES */}\r\n \r\n

    Integraciones

    \r\n
      \r\n
    • Uber Eats
    • \r\n {/*
    • Consulta de orden
    • */}\r\n
    \r\n
    \r\n {/* SALDOS */}\r\n \r\n

    \r\n Saldos\r\n

    \r\n
      \r\n
    • Saldo Regalo
    • \r\n
    \r\n
    \r\n {/* Promociones QR */}\r\n \r\n

    \r\n Promociones\r\n

    \r\n
      \r\n
    • Promociones QR
    • \r\n
    \r\n
    \r\n {/* Administración */}\r\n \r\n \r\n

    \r\n Administración\r\n

    \r\n
      \r\n \r\n
    • Coordinadores y Supervisores
    • \r\n{/*
    • Líderes y Supervisores
    • */}\r\n
      \r\n \r\n
    • Promociones
    • \r\n
      \r\n \r\n
    • Historial de Movimientos
    • \r\n
      \r\n \r\n
    • Catálogo Sucursales
    • \r\n
    • Catálogo Plazas
    • \r\n
    • Catálogo Tasa Impuestos
    • \r\n
    • Administración de Usuarios
    • \r\n
      \r\n
    \r\n
    \r\n
    \r\n\r\n {/* reportes */}\r\n \r\n

    \r\n Reportes\r\n

    \r\n
      \r\n \r\n
    • Movimientos SAG
    • \r\n
      \r\n \r\n
    • Historial Versiones
    • \r\n
      \r\n \r\n
    • Pagos Bancos
    • \r\n
    • Depósitos bancarios
    • \r\n
    • Conciliaciones
    • \r\n
    • Arqueos
    • \r\n
    • Retiros
    • \r\n
    • Cancelaciones
    • \r\n
      \r\n
    \r\n
    \r\n\r\n {/* CAFFENIO Empresas */}\r\n \r\n

    \r\n Mi CAFFENIO Empresas\r\n

    \r\n
      \r\n
    • Participantes
    • \r\n
    • Empresas
    • \r\n
    \r\n
    \r\n\r\n\r\n
    \r\n
      \r\n
    • Cerrar Sesión
    • \r\n
    \r\n
    \r\n )\r\n }\r\n}","import React from 'react';\r\nimport './Menu.css';\r\nimport MenuInterior from '../menuInterior/MenuInterior';\r\n\r\n/**\r\n * Componente que forma la barra lateral izquierda del sistema, donde está situado el menú\r\n */\r\nexport default class Menu extends React.Component{\r\n render(){\r\n return(\r\n \r\n )\r\n }\r\n}","import React, { useEffect, useState } from 'react';\r\n\r\n/**\r\n * Componente para mostrar la información y roles de un usuario.\r\n * @returns Component\r\n */\r\nexport const UserInfo = () => {\r\n\r\n const [ state, setState ] = useState({\r\n nombre: '',\r\n roles: [],\r\n listVisible: false\r\n });\r\n\r\n /**\r\n * Hace el decode del token.\r\n * @param {String} token - Token guardado en localStorage\r\n * @returns Object\r\n */\r\n const parseJwt = token => {\r\n var base64Url = token.split('.')[1];\r\n var base64 = base64Url.replace(/-/g, '+').replace(/_/g, '/');\r\n var jsonPayload = decodeURIComponent(atob(base64).split('').map(function(c) {\r\n return '%' + ('00' + c.charCodeAt(0).toString(16)).slice(-2);\r\n }).join(''));\r\n \r\n return JSON.parse(jsonPayload);\r\n };\r\n\r\n useEffect(() => {\r\n const token = localStorage.getItem('token');\r\n const userInfo = parseJwt(token);\r\n setState({\r\n nombre: userInfo.fullname || '',\r\n roles: userInfo.role || []\r\n });\r\n }, []);\r\n\r\n return (\r\n
    \r\n
    \r\n \r\n @{ state.nombre }\r\n \r\n
    \r\n
    \r\n \r\n { `Roles: ${ state.roles.toString().replace(/[,]+/g, ', ') }` }\r\n

    \r\n {\r\n state.listVisible &&\r\n
      \r\n { state.roles.map( ( rol, index ) =>
    • { rol }
    • ) }\r\n
    \r\n }\r\n
    \r\n
    \r\n )\r\n}","import React from 'react';\r\nimport { UserInfo } from '../UserInfo/UserInfo';\r\nimport './Header.css';\r\n\r\n/**\r\n * Componente del Header de la aplicación donde podrían haber acciones o información\r\n */\r\nexport default class Header extends React.Component{\r\n render(){\r\n return(\r\n \r\n )\r\n }\r\n}","import React, { Component } from 'react'\r\nimport PropTypes from 'prop-types'\r\n\r\nconst RecipeToppings = (props) => {\r\n return (\r\n
    0)? \"\" : \"recipe-details-empty\"}>\r\n \r\n { props.details.length > 0 &&\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n }\r\n \r\n {props.details != '' ? props.details.map((detail, i) => {\r\n let errorCantidad = Number(detail.MinQuantity) > Number(detail.MaxQuantity)\r\n\r\n return (\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n )\r\n }):\r\n \r\n }\r\n \r\n
    CódigoNombreNombre CortoMínimoMáximoUnidadAcción
    {detail.CodeProvider}{detail.Name}{detail.ShortName}\r\n {\r\n const keyCode = event.keyCode || event.which;\r\n const keyValue = String.fromCharCode(keyCode);\r\n // if (/\\+|-|[a-zA-Z]|\\d+(\\.\\d{3,})|\\d{4,}+(\\.\\d)/.test(keyValue) || event.target.value.length >= event.target.getAttribute('maxLength'))\r\n if (/\\+|-|e|E|\\./.test(keyValue) || event.target.value.length >= event.target.getAttribute('maxLength'))\r\n event.preventDefault();\r\n }}\r\n onChange={(e) => props.quantityChanged(e.currentTarget.value, i, \"MinQuantity\")}\r\n />\r\n \r\n {\r\n const keyCode = event.keyCode || event.which;\r\n const keyValue = String.fromCharCode(keyCode);\r\n if (/\\+|-|e|E|\\./.test(keyValue) || event.target.value.length >= event.target.getAttribute('maxLength'))\r\n event.preventDefault();\r\n }}\r\n onChange={(e) => props.quantityChanged(e.currentTarget.value, i, \"MaxQuantity\")}\r\n />\r\n {detail.UnitSaleStr}\r\n {\r\n e.stopPropagation();\r\n props.removeDetail(i)\r\n }\r\n }>\r\n \r\n \r\n \r\n \r\n
    No hay toppings.
    \r\n
    \r\n )\r\n}\r\n\r\nRecipeToppings.propTypes = {\r\n details: PropTypes.array.isRequired,\r\n quantityChanged: PropTypes.func.isRequired,\r\n removeDetail: PropTypes.func.isRequired,\r\n mostrarDrives: PropTypes.bool,\r\n onMostrarDrives: PropTypes.func,\r\n checkForError: PropTypes.func\r\n}\r\n\r\nRecipeToppings.defaultProps = {\r\n details: [],\r\n quantityChanged: () => {},\r\n removeDetail: () => {},\r\n mostrarDrives: false,\r\n onMostrarDrives: () => {},\r\n checkForError: () => {} \r\n}\r\n\r\nexport default RecipeToppings;\r\n","import { apiUrl } from \"../constants\";\r\nimport axios from 'axios';\r\nimport middleware from '../middleware/auth';\r\n\r\nvar request = axios.create({\r\n baseURL: apiUrl,\r\n headers: {'Authorization':'Bearer ' + localStorage.getItem('token'),'Content-Type':'application/json'}\r\n})\r\nexport default class UnitsAPI {\r\n static getAll() {\r\n return middleware.hasAuth(() => request.get('/units'));\r\n }\r\n\r\n static get(id) {\r\n return middleware.hasAuth(() => request.get(`/units/${id}`));\r\n }\r\n\r\n static getByCodeProvider(id) {\r\n return middleware.hasAuth(() => request.get(`/units/code/${id}`));\r\n }\r\n\r\n static create(unit) {\r\n return middleware.hasAuth(() => request.post('/units',unit));\r\n }\r\n\r\n static edit(unit, id){\r\n return middleware.hasAuth(() => request.put(`/units`,unit));\r\n }\r\n\r\n static delete(id){\r\n return middleware.hasAuth(() => request.delete(`units/${id}`));\r\n }\r\n\r\n static getSatUnits(){\r\n return request.get(`UnitsSat`);\r\n }\r\n}","let ExpresionesRegulares = {\r\n ErrorInputNumDecimal: /\\+|-|[a-zA-Z]|\\s/,\r\n ErrorInputNumero: /\\+|-|[a-zA-Z]|\\s|\\./,\r\n CodigoProveedor: /(PE|PT)(\\w{1,28})/i,\r\n // AlfanumericoSinEspeciales: /^[a-zA-Z0-9 áéíóúñÁÉÍÓÚÑ]*$/,\r\n AlfanumericoSinEspeciales: /^[^'\"/,]*$/,\r\n AlfanumericoConCaracteres: /^[a-zA-Z0-9 áéíóúñÁÉÍÓÚÑ )-./(,;]*$/,\r\n AalfanumericoSinEspacios: /^[a-zA-Z0-9]*$/,\r\n SoloNumeros: /^[+]?\\d*$/,\r\n}\r\n\r\nexport default ExpresionesRegulares;","// Función para poder manejar errores al usar async/wait para peticiones al API.\r\nexport default function to(promise) {\r\n return promise.then(response => {\r\n return [null, response.data];\r\n })\r\n .catch(err => [err]);\r\n}","import React, { Component } from 'react'\r\nimport PropTypes from 'prop-types'\r\nimport InventoryItemsAPI from '../../../../services/InventoryItem';\r\nimport { toast } from 'react-toastify';\r\nimport Loading from '../../../util/loading/Loading';\r\nimport UnitsAPI from '../../../../services/Units';\r\nimport ExpresionesRegulares from '../../../../util/expresiones-regulares';\r\nimport to from '../../../../util/to';\r\n\r\n/**\r\n * Componente para buscar y agregar articulos de inventario o toppings.\r\n * Por default busca articulos de inventario.\r\n * Si quieres solo los toppings entonces pon las propiedades soloToppings y isTopping a {true}\r\n */\r\nexport default class NewRecipeDetail extends Component {\r\n\r\n state = {\r\n searchText: \"\",\r\n searchResultDetails: [],\r\n isLoading: false,\r\n units: [],\r\n showThead: false\r\n }\r\n\r\n static propTypes = {\r\n currentDetails: PropTypes.array.isRequired,\r\n addDetail: PropTypes.func.isRequired,\r\n soloToppings: PropTypes.bool\r\n }\r\n\r\n componentDidMount(){\r\n UnitsAPI.getAll().then(response => {\r\n this.setState({units: response.data});\r\n }).catch(err => toast.error(err.response.data.Message));\r\n }\r\n\r\n\r\n setUnitDetail = (id) => {\r\n let state = {...this.state};\r\n let unitString = state.units.map(unit => {\r\n if(unit.UnitsId===id){\r\n return unit.Name\r\n }\r\n })\r\n\r\n return unitString;\r\n }\r\n\r\n search = () => {\r\n\r\n let body = {\r\n Search: this.state.searchText,\r\n Total: 10,\r\n ItemInventoryIds: this.props.currentDetails,\r\n Toppings: this.props.soloToppings\r\n };\r\n this.setState({isLoading: true,showThead:true});\r\n InventoryItemsAPI.search(body).then(response => {\r\n let lista = response.data.Results.map((item)=>{\r\n let unidad = this.state.units.find(unit => {\r\n if(unit.UnitsId===item.UnitSale){\r\n return unit.Name\r\n }\r\n return ''\r\n });\r\n item.UnitSaleStr=unidad.Name;\r\n return item\r\n })\r\n this.setState({isLoading: false, searchResultDetails: lista});\r\n }).catch(err => toast.error(err.response.data.Message));\r\n }\r\n\r\n render() {\r\n return (\r\n
    \r\n
    \r\n
    \r\n this.setState({searchText: e.currentTarget.value})}\r\n onKeyPress={(e) => {\r\n let keyCode = e.keyCode || e.which\r\n if(keyCode === 13){\r\n this.search()\r\n }\r\n }}\r\n />\r\n
    \r\n
    \r\n this.search()}>\r\n Buscar\r\n \r\n
    \r\n
    \r\n {!this.state.isLoading &&\r\n \r\n { this.state.showThead &&\r\n \r\n \r\n \r\n \r\n {this.props.isTopping && }\r\n \r\n \r\n \r\n \r\n \r\n }\r\n \r\n {this.state.searchResultDetails.map((detail, i) => {\r\n // Elementos que se muestran en el modal de detalles displonibles\r\n \r\n return (\r\n \r\n \r\n \r\n {this.props.isTopping && }\r\n \r\n {/* Unidad */}\r\n \r\n \r\n \r\n )\r\n })}\r\n \r\n
    CódigoNombreNombre CortoCantidadUnidadAcción
    {detail.CodeProvider}{detail.Name}{detail.ShortName}\r\n {\r\n // Validar si el modal es para detalles y establecer el campo\r\n // para el detalle\r\n this.props.isDetail &&\r\n {\r\n const keyCode = event.keyCode || event.which;\r\n const keyValue = String.fromCharCode(keyCode);\r\n // if (/\\+|-|[a-zA-Z]|\\d+(\\.\\d{3,})|\\d{4,}+(\\.\\d)/.test(keyValue) || event.target.value.length >= event.target.getAttribute('maxLength'))\r\n if (ExpresionesRegulares.ErrorInputNumDecimal.test(keyValue) || event.target.value.length >= event.target.getAttribute('maxLength'))\r\n event.preventDefault();\r\n }}\r\n onChange={(e) => {\r\n //if(e.target.value && e.target.value > 0){\r\n detail.Amount = e.target.value;\r\n \r\n let details = this.state.searchResultDetails;\r\n this.setState({searchResultDetails: details}); \r\n e.preventDefault();\r\n e.stopPropagation();\r\n //}\r\n // else if(e.target.value <= 0){\r\n // toast.warn(\"La cantidad debe ser mayor a cero.\")\r\n // }\r\n \r\n }}\r\n onPaste={(e) => {\r\n if (ExpresionesRegulares.ErrorInputNumDecimal.test(e.clipboardData.getData(\"Text\")) \r\n || (/\\./.test(e.target.value) && /\\./.test(e.clipboardData.getData(\"Text\")))){\r\n e.preventDefault();\r\n }\r\n }}\r\n />\r\n }\r\n \r\n {\r\n // Verificar si el modal es para toppings y poner\r\n // los campos para el valor minimo y maximo\r\n this.props.isTopping &&\r\n
    \r\n
    \r\n {\r\n const keyCode = event.keyCode || event.which;\r\n const keyValue = String.fromCharCode(keyCode);\r\n if (ExpresionesRegulares.ErrorInputNumDecimal.test(keyValue) || event.target.value.length >= event.target.getAttribute('maxLength'))\r\n event.preventDefault();\r\n }}\r\n onChange={(e) => {\r\n detail.MinQuantity = e.target.value;\r\n \r\n let details = this.state.searchResultDetails;\r\n this.setState({searchResultDetails: details}); \r\n e.preventDefault();\r\n e.stopPropagation();\r\n \r\n }}\r\n />\r\n
    \r\n\r\n
    \r\n {\r\n const keyCode = event.keyCode || event.which;\r\n const keyValue = String.fromCharCode(keyCode);\r\n if (ExpresionesRegulares.ErrorInputNumDecimal.test(keyValue) || event.target.value.length >= event.target.getAttribute('maxLength'))\r\n event.preventDefault();\r\n }}\r\n onChange={(e) => {\r\n detail.MaxQuantity = e.target.value;\r\n \r\n let details = this.state.searchResultDetails;\r\n this.setState({searchResultDetails: details}); \r\n e.preventDefault();\r\n e.stopPropagation();\r\n \r\n }}\r\n />\r\n
    \r\n
    \r\n }\r\n
    {detail.UnitSaleStr}\r\n {\r\n e.stopPropagation();\r\n let details = [...this.state.searchResultDetails];\r\n \r\n // Validar si se tiene un detalle o topping\r\n // para agregar valores dependiendo el caso\r\n if(this.props.isDetail){\r\n detail.Amount = detail.Amount || \"0\"; // Verificar que el detalle lleve una cantidad\r\n if(detail.Amount === \"0\"){\r\n toast.warn(\"La cantidad debe ser mayor que cero.\")\r\n return;\r\n }else{\r\n details.splice(i, 1);\r\n this.setState({searchResultDetails: details});\r\n } \r\n }else if(this.props.isTopping) {\r\n detail.MinQuantity = Number(detail.MinQuantity) || 0;\r\n detail.MaxQuantity = Number(detail.MaxQuantity) || 0;\r\n if (!Number.isNaN(detail.MinQuantity) && !Number.isNaN(detail.MaxQuantity) && detail.MinQuantity > detail.MaxQuantity) {\r\n toast.error(\"Límites no válidos para el topping\")\r\n return\r\n } else if(detail.MinQuantity === 0 && detail.MaxQuantity === 0){\r\n toast.error(\"Ingrese cantidad mínima y máxima.\")\r\n return;\r\n } else{\r\n details.splice(i, 1);\r\n this.setState({searchResultDetails: details});\r\n }\r\n }else{\r\n details.splice(i, 1);\r\n this.setState({searchResultDetails: details});\r\n }\r\n \r\n this.props.addDetail(detail)\r\n //toast.success(\"Detalle agregado\");\r\n \r\n \r\n }\r\n }>\r\n \r\n \r\n \r\n \r\n
    \r\n }\r\n
    \r\n
    \r\n \r\n
    \r\n
    \r\n
    \r\n )\r\n }\r\n}\r\n\r\nNewRecipeDetail.defaultProps = {\r\n soloToppings: false\r\n}","import React, { Component } from 'react';\r\nimport Field from '../../util/field/Field';\r\nimport { Formik } from 'formik';\r\nimport * as Yup from 'yup';\r\n\r\nimport ErrorMessages from '../../../util/validation-error-messages';\r\nimport ExpresionesRegulares from '../../../util/expresiones-regulares';\r\n\r\nconst SUPPORTED_FORMATS = [\r\n \"image/png\"\r\n];\r\n/**\r\n * Formulario para cargar y validar PT asignado a artículo inventario\r\n */\r\nclass RecipeImageForm extends Component {\r\n constructor(props) {\r\n super(props);\r\n this.state = {\r\n recipe: props.recipe\r\n }\r\n\r\n }\r\n\r\n /**Esquema para validar al editar receta con imagen*/\r\n VALIDATION_SCHEMA_EDIT_WITH_IMG = Yup.object({\r\n Image: Yup.mixed()\r\n .required(\"Campo Imagen es requerido.\")\r\n .test(\r\n \"fileFormat\",\r\n ErrorMessages.PngFormatError,\r\n value => value && SUPPORTED_FORMATS.includes(value.type) || (this.state.recipe.UrlImage !== null && this.state.recipe.UrlImage.length > 0)\r\n\r\n ),\r\n ShortName: Yup.string().trim()\r\n .matches(ExpresionesRegulares.AlfanumericoSinEspeciales, { message: ErrorMessages.AlfanumericoSinEspecialesError })\r\n .min(3, \"Nombre debe tener más de 2 caracteres.\")\r\n .max(40, \"Ha excedido el límite de 40 caracteres.\")\r\n .required(\"Campo Nombre Corto es requerido.\"),\r\n Description: Yup.string()\r\n });\r\n\r\n render() {\r\n return (\r\n {\r\n values.Description = values.ShortName;\r\n this.props.save(values)\r\n }}>\r\n {({ values, touched, errors, handleChange, handleBlur, handleSubmit, setFieldValue, setFieldTouched }) => (\r\n
    \r\n
    \r\n
    \r\n
    \r\n \r\n
    \r\n
    \r\n \r\n \r\n \r\n
    \r\n
    \r\n \r\n
    \r\n
    \r\n \r\n \r\n \r\n
    \r\n\r\n
    \r\n\r\n
    \r\n \r\n
    \r\n \r\n
    \r\n {values.Image !== null &&\r\n \r\n \r\n\r\n \r\n }\r\n
    \r\n
    \r\n
    \r\n
    \r\n {values.Image !== null\r\n && \r\n
    \r\n
    \r\n \"\"\r\n
    \r\n
    \r\n
    \r\n\r\n }\r\n {values.UrlImage && \r\n
    \r\n
    \r\n \"\"\r\n
    \r\n
    \r\n
    }\r\n\r\n
    \r\n \r\n\r\n\r\n\r\n
    \r\n\r\n
    \r\n
    \r\n
    \r\n \r\n\r\n
    \r\n
    \r\n
    \r\n
    \r\n \r\n
    \r\n
    \r\n\r\n \r\n )}\r\n\r\n \r\n\r\n )\r\n }\r\n}\r\n\r\n// Definición de los valores por default de las props en caso de no ser recibidas por el padre.\r\nRecipeImageForm.defaultProps = {\r\n\r\n recipe: {\r\n ShortName: \"\",\r\n Description: \"\",\r\n ClassificationId: null,\r\n PresentationId: null,\r\n FlavorTypeId: null,\r\n RecipeTypeId: null,\r\n MilkTypeId: null,\r\n GrainTypeId: null,\r\n IVAApply: true,\r\n KiwiId: 0,\r\n Active: true,\r\n MobileApply: true,\r\n WelcomeGiftApply: true,\r\n ClassificationSatId: 0,\r\n CodeSatId: 0,\r\n Details: [],\r\n GiftWelcomeActive: true,\r\n Image: null,\r\n UrlImage: \"\"\r\n }\r\n}\r\n\r\nexport default RecipeImageForm;","import React, { Component } from 'react'\r\nimport PropTypes from 'prop-types'\r\nimport ExpresionesRegulares from '../../../../util/expresiones-regulares'\r\n\r\nconst RecipeDetails = (props) => {\r\n return (\r\n
    0) ? \"\" : \"recipe-details-empty\"}>\r\n \r\n {props.details.length > 0 &&\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n {props.mostrarDrives && }\r\n \r\n \r\n }\r\n \r\n {props.details != '' && props.details.length > 0 \r\n ? props.details.map((detail, i) => {\r\n // Para el Detalle de Receta\r\n return (\r\n \r\n \r\n \r\n \r\n \r\n \r\n {props.mostrarDrives && }\r\n \r\n )\r\n }) : \r\n \r\n }\r\n \r\n
    CódigoNombreCantidadUnidadAcciónDrive
    {detail.CodeProvider}{detail.Name}\r\n {\r\n const keyCode = event.keyCode || event.which;\r\n const keyValue = String.fromCharCode(keyCode);\r\n // if (/\\+|-|[a-zA-Z]|\\d+(\\.\\d{3,})|\\d{4,}+(\\.\\d)/.test(keyValue) || event.target.value.length >= event.target.getAttribute('maxLength'))\r\n if (ExpresionesRegulares.ErrorInputNumDecimal.test(keyValue) || event.target.value.length >= event.target.getAttribute('maxLength'))\r\n event.preventDefault();\r\n }}\r\n onChange={(e) => props.quantityChanged(e.currentTarget.value, i)}\r\n />\r\n {detail.UnitSaleStr}\r\n {\r\n e.stopPropagation();\r\n props.removeDetail(i)\r\n }\r\n }>\r\n \r\n \r\n \r\n \r\n {\r\n detail.driveList && detail.driveList.length > 1 &&\r\n {\r\n e.stopPropagation();\r\n props.viewDrivesDetail(detail, i)\r\n }\r\n }>\r\n \r\n \r\n \r\n \r\n }\r\n {detail.DriveNombre ? detail.DriveNombre : \"\"}
    No hay artículos inventario.
    \r\n
    \r\n )\r\n}\r\n\r\nRecipeDetails.propTypes = {\r\n details: PropTypes.array.isRequired,\r\n quantityChanged: PropTypes.func.isRequired,\r\n removeDetail: PropTypes.func.isRequired,\r\n mostrarDrives: PropTypes.bool,\r\n onMostrarDrives: PropTypes.func,\r\n viewDrivesDetail: PropTypes.func\r\n}\r\n\r\nRecipeDetails.defaultProps = {\r\n details: [],\r\n quantityChanged: () => { },\r\n removeDetail: () => { },\r\n mostrarDrives: false,\r\n onMostrarDrives: () => { },\r\n viewDrivesDetail: () => { }\r\n}\r\n\r\nexport default RecipeDetails;\r\n","export const nombresSinTipo=['sin tipo', 'n/a', 'n / a', 'na', '', 'no aplica',\r\n 'sin sabor',\r\n 'sin tipo sabor',\r\n 'Sin sabor',\r\n 'Sin Sabor',\r\n 's/s',\r\n 's / s',\r\n 'sin grano',\r\n 'sin tipo grano',\r\n 's/g',\r\n 's / g',\r\n 'sin leche',\r\n 'sin tipo leche',\r\n 's/l',\r\n 's / l',\r\n 'sin presentación',\r\n 'sin presentacion',\r\n 'sin tipo presentación',\r\n 'sin tipo presentacion',\r\n 's/p',\r\n 's / p',\r\n 'sin clasificación',\r\n 'sin clasificacion',\r\n 'sin tipo clasificación',\r\n 'sin tipo clasificacion',\r\n 's/c',\r\n 's / c',\r\n 'sin receta',\r\n 'sin tipo receta',\r\n 's/r',\r\n 's / r'\r\n ]","import React, { Component } from 'react';\r\nimport SearchForm from \"../../util/searchform/SearchForm\";\r\nimport TableTemplate from \"../../util/tabletemplate/TableTemplate\";\r\nimport NoItems from \"../../util/noitems/NoItems\";\r\nimport AcceptModal from '../../util/acceptModal/AcceptModal';\r\nimport Pagination from '../../util/pagination/Pagination';\r\nimport RecipesAPI from '../../../services/Recipe';\r\nimport { toast } from 'react-toastify';\r\nimport Loading from '../../util/loading/Loading';\r\nimport RecipeTypesAPI from '../../../services/RecipeType';\r\nimport PresentationsAPI from '../../../services/Presentations';\r\nimport MilksAPI from '../../../services/Milk';\r\nimport GrainsAPI from '../../../services/Grain';\r\nimport FlavorsAPI from '../../../services/Flavor';\r\nimport ClasificacionesAPI from '../../../services/Classification';\r\n\r\nimport lodash from 'lodash';\r\n\r\nimport ModoGuiado from \"../../modoGuiado/ModoGuiado\"\r\nimport BtnModoGuiado from '../../util/BtnModoGuiado/BtnModoGuiado'\r\nimport Modal from '../../util/modal/Modal';\r\nimport RecipeToppings from './components/RecipeToppings';\r\nimport NewRecipeDetail from './components/NewRecipeDetail';\r\nimport RecipeImageForm from './RecipeImageForm';\r\nimport ErrorMessages from '../../../util/validation-error-messages';\r\nimport RecipeFilters from '../../util/recipeFilters/recipeFilters';\r\nimport RecipeDetails from './components/RecipeDetails';\r\nimport roles from '../../../util/strings/roles';\r\nimport {nombresSinTipo} from '../../../util/strings/sin-tipo-receta';\r\nimport EmpresasAPI from '../../../services/CaffenioEmpresas/Empresas';\r\n\r\nclass Recipes extends Component {\r\n recipes = [];\r\n origRecipeTypesList = []; //Donde se va a guardar la lista original de tipos de receta\r\n origFlavorsList = []; //Donde se va a guardar la lista original de sabores\r\n origGrainsList = []; //Donde se va a guardar la lista original de granos\r\n origMilksList = []; //Donde se va a guardar la lista original de leches\r\n origPresentationList = []; //Donde se va a guardar la lista original de presentaciones\r\n\r\n // Variables donde se almacenaran los valores seleccionados en el select multi\r\n tempRecipeTypesList;\r\n tempPresentationList;\r\n tempMilkList;\r\n tempGrainList;\r\n tempFlavorsList;\r\n tempClassificationList;\r\n\r\n constructor(props){\r\n super(props);\r\n this.state = {\r\n recipes: [],\r\n filterText: \"\",\r\n recipe: null,\r\n pageRecipes: [],\r\n showModal: false,\r\n editing: false,\r\n removeModal: false,\r\n isLoading: false,\r\n syncModal: false,\r\n selectedRecipes: [],\r\n checkAll: false,\r\n syncMultiModal: false,\r\n // Variables sonde se almacenaran los criterios de busqueda definitivos\r\n recipeTypeList: [],\r\n selectedRecipeTypesList: [],\r\n presentationsList: [],\r\n selectedPresentationsList: [],\r\n milksList: [],\r\n segmentsList: [],\r\n selectedSegmentationList: [],\r\n selectedMilksList: [],\r\n grainsList: [],\r\n selectedGrainsList: [],\r\n flavorsList: [],\r\n selectedFlavorsList: [],\r\n classificationList: [],\r\n selectedClassificationList: [],\r\n manageToppingModal: false,\r\n addToppingModal: false,\r\n toppings: [],\r\n toppingError: false,\r\n menuRecetaModal: false,\r\n menuRecetaModalTitle: \"\",\r\n menuRecetaModalBody: \"\",\r\n menuRecetaCurrent: null,\r\n //Agregar artículos\r\n manageInventoryItemsModal:false,\r\n addInventoryItems:false,\r\n inventoryItems: [], \r\n inventoryItemsTemp: [], \r\n recipesToAddItems:[],\r\n inventoryItemsError:false,\r\n showInventoryItemsInfo:false\r\n }\r\n }\r\n\r\n componentDidMount(){\r\n this.setState({isLoading: true})\r\n let state = {...this.state};\r\n RecipesAPI.getAll().then(response => {\r\n state.recipes = response.data\r\n this.recipes = lodash.cloneDeep(response.data);\r\n console.log(\"recetas en recetas >> \", response);\r\n // Obtener todos los tipos de recetas\r\n return RecipeTypesAPI.getAll()\r\n }).then(response => {\r\n let temp = [];\r\n \r\n response.data.map(obj => {\r\n if(obj.RecipeName) {\r\n obj.value= obj.RecipeTypeId;\r\n obj.label= obj.RecipeName;\r\n \r\n }else{\r\n obj.value= obj.RecipeTypeId;\r\n obj.label= obj.Description;\r\n \r\n }\r\n temp.push(obj)\r\n return obj;\r\n })\r\n temp.sort(this.compare); // Ordenar los labels para elegir\r\n state.recipeTypeList = temp;\r\n this.origRecipeTypesList = lodash.cloneDeep(temp)\r\n \r\n // Obtener todas las presentaciones\r\n return PresentationsAPI.getAll()\r\n }).then(response => {\r\n let tempPresentationList = [];\r\n response.data.map(obj => {\r\n if(obj.Active){\r\n obj.value= obj.PresentationId;\r\n obj.label= obj.Name;\r\n tempPresentationList.push(obj)\r\n return obj\r\n //\r\n } \r\n })\r\n tempPresentationList.sort(this.compare); // Ordenar los labels\r\n state.presentationsList = tempPresentationList\r\n this.origPresentationList = lodash.cloneDeep(tempPresentationList)\r\n\r\n // Obtener los tipos de leche\r\n return MilksAPI.getAll()\r\n }).then(response => {\r\n let tempMilkList = [];\r\n response.data.map(obj => {\r\n obj.value= obj.MilkTypeId;\r\n obj.label= obj.Description;\r\n tempMilkList.push(obj)\r\n return obj;\r\n })\r\n tempMilkList.sort(this.compare); // Ordenar los labels\r\n state.milksList = tempMilkList\r\n this.origMilksList = tempMilkList\r\n \r\n // Obtener los tipos de grano\r\n return GrainsAPI.getAll()\r\n }).then(response => {\r\n let tempGrainList = [];\r\n response.data.map(obj => {\r\n obj.value= obj.GrainTypeId;\r\n obj.label= obj.Description;\r\n tempGrainList.push(obj)\r\n return obj;\r\n \r\n })\r\n tempGrainList.sort(this.compare); // Ordenar los labels\r\n state.grainsList = tempGrainList\r\n this.origGrainsList = lodash.cloneDeep(tempGrainList)\r\n \r\n // Obtener los sabores\r\n return FlavorsAPI.getAll()\r\n }).then(response => {\r\n let tempFlavorsList = [];\r\n response.data.map(obj => {\r\n obj.value= obj.FlavorTypeId;\r\n obj.label= obj.Name;\r\n tempFlavorsList.push(obj)\r\n return obj;\r\n \r\n })\r\n tempFlavorsList.sort(this.compare); // Ordenar los labels \r\n state.flavorsList = tempFlavorsList\r\n this.origFlavorsList = tempFlavorsList\r\n \r\n // Obtener las clasificaciones\r\n return ClasificacionesAPI.getAll()\r\n }).then(response => {\r\n let tempClassificationList = [];\r\n response.data.map(obj => {\r\n obj.value= obj.ClassificationId;\r\n obj.label= obj.Name;\r\n tempClassificationList.push(obj)\r\n return obj;\r\n })\r\n tempClassificationList.sort(this.compare); // Ordenar los labels\r\n state.classificationList = tempClassificationList\r\n \r\n // Guardar el estado\r\n return EmpresasAPI.getAllFilterSegments()\r\n }).then(response => {\r\n let tempSegmentsList = []\r\n response.data.map(obj => {\r\n tempSegmentsList.push(obj)\r\n })\r\n state.segmentsList = tempSegmentsList\r\n \r\n // Guardar el estado\r\n this.setState(state)\r\n }).catch(err => {\r\n this.setState({isLoading: false})\r\n if(err.response)\r\n toast.error(err.response.data.Message)\r\n else\r\n toast.error(ErrorMessages.SinConexion)\r\n })\r\n }\r\n\r\n /**\r\n * Funcion para ordenar lexicograficamente\r\n * @param objA. primer operando\r\n * @param objB. segundo operando\r\n */\r\n compare = (objA, objB) => {\r\n // Use toUpperCase() to ignore character casing\r\n const labelA = objA.label.toUpperCase();\r\n const labelB = objB.label.toUpperCase();\r\n\r\n let comparison = 0;\r\n if (labelA > labelB) {\r\n comparison = 1;\r\n } else if (labelA < labelB) {\r\n comparison = -1;\r\n }\r\n return comparison;\r\n }\r\n\r\n // Método encargado de recibir el texto en el input de búsqueda y filtrar los elementos en\r\n // la tabla \r\n handleSearchInput = (text) => {\r\n let state = this.state;\r\n state.filterText = text;\r\n this.setState(state, this.handleSearchMultipleFieldInput);\r\n }\r\n\r\n /**\r\n *Realizar el filtrado sobre las recetas para desplegar solo los elementos\r\n *que cumplen con las caracteristicas que el usuario ingreso.\r\n * \r\n *@param: nada\r\n *@return: nada\r\n */\r\n handleSearchMultipleFieldInput = () => {\r\n let recipes = this.recipes.filter(\r\n recipe => ( \r\n (this.state.selectedRecipeTypesList.length > 0 ? \r\n this.state.selectedRecipeTypesList.includes(recipe.RecipeTypeId) : \r\n true) &&\r\n (this.state.selectedFlavorsList.length > 0 ? \r\n this.state.selectedFlavorsList.includes(recipe.FlavorTypeId) : \r\n true) &&\r\n (this.state.selectedPresentationsList.length > 0 ? \r\n this.state.selectedPresentationsList.includes(recipe.PresentationId) : \r\n true) &&\r\n (this.state.selectedMilksList.length > 0 ? \r\n this.state.selectedMilksList.includes(recipe.MilkTypeId) : \r\n true) &&\r\n (this.state.selectedGrainsList.length > 0 ? \r\n this.state.selectedGrainsList.includes(recipe.GrainTypeId) : \r\n true) &&\r\n (this.state.selectedClassificationList.length > 0 ? \r\n this.state.selectedClassificationList.includes(recipe.ClassificationId) : \r\n true) &&\r\n (this.state.selectedSegmentationList.length > 0 ?\r\n this.state.selectedSegmentationList.includes(recipe.idSegmento) :\r\n true )&&\r\n (this.state.filterText.trim() !== '' ?\r\n ( (recipe.ShortName \r\n ? recipe.ShortName.toLowerCase().normalize(\"NFD\").replace(/[\\u0300-\\u036f]/g, \"\").includes(this.state.filterText.trim().toLowerCase().normalize(\"NFD\").replace(/[\\u0300-\\u036f]/g, \"\")) \r\n : false) \r\n || recipe.Description.toLowerCase().normalize(\"NFD\").replace(/[\\u0300-\\u036f]/g, \"\").includes(this.state.filterText.trim().toLowerCase().normalize(\"NFD\").replace(/[\\u0300-\\u036f]/g, \"\")))\r\n : true)\r\n )\r\n );\r\n \r\n let state = {...this.state};\r\n state.recipes = lodash.cloneDeep(recipes);\r\n state.recipes.map(r => {\r\n r.statusCheck =false\r\n });\r\n state.selectedRecipes = [];\r\n state.checkAll = false;\r\n this.setState(state);\r\n }\r\n\r\n create = () => {\r\n this.props.history.push({pathname: '/recetas/nueva', state:{\r\n classifications: this.state.classificationList,\r\n presentations: this.state.presentationsList,\r\n flavors: this.state.flavorsList,\r\n milks: this.state.milksList,\r\n segments: this.state.segmentsList,\r\n grains: this.state.grainsList,\r\n recipeTypes: this.state.recipeTypeList,\r\n lstRecipes:this.recipes\r\n }});\r\n }\r\n\r\n edit = (recipe) => { \r\n this.props.history.push({pathname: `/recetas/editar/${recipe.RecipeId}`, state:{\r\n classifications: this.state.classificationList,\r\n presentations: this.state.presentationsList,\r\n flavors: this.state.flavorsList,\r\n milks: this.state.milksList,\r\n grains: this.state.grainsList,\r\n recipeTypes: this.state.recipeTypeList,\r\n lstRecipes:this.recipes\r\n }}); \r\n }\r\n\r\n /**\r\n *Modificar la lista de IDs con los que el usuario ha seleccionado. Aplica sobre los tipos de receta\r\n * \r\n *@param: arr: arreglo de valores que crea el select multi de react\r\n *@return: nada\r\n */\r\n handleRecipeTypeChange = (arr) => {\r\n let state = {...this.state}\r\n let tempSelectedRecipeTypesList = [];\r\n arr.map(obj => {\r\n tempSelectedRecipeTypesList.push(obj.value);\r\n })\r\n\r\n state.selectedRecipeTypesList = tempSelectedRecipeTypesList;\r\n state.selectedRecipes = [];\r\n state.pageRecipes.forEach(pageRecipe => pageRecipe.statusCheck = false);\r\n\r\n this.setState(state, () => {\r\n this.handleSearchMultipleFieldInput();\r\n });\r\n }\r\n\r\n /**\r\n *Modificar la lista de IDs con los que el usuario ha seleccionado. Aplica sobre los tipos de sabores\r\n * \r\n *@param: arr: arreglo de valores que crea el select multi de react\r\n *@return: nada\r\n */\r\n handleFlavorChange = (arr) => {\r\n let state = {...this.state}\r\n let tempSelectedFlavorList = [];\r\n arr.map(obj => {\r\n tempSelectedFlavorList.push(obj.value);\r\n })\r\n\r\n state.selectedFlavorsList = tempSelectedFlavorList;\r\n state.selectedRecipes = [];\r\n state.pageRecipes.forEach(pageRecipe => pageRecipe.statusCheck = false);\r\n\r\n this.setState(state, () => {\r\n this.handleSearchMultipleFieldInput();\r\n });\r\n }\r\n\r\n /**\r\n *Modificar la lista de IDs con los que el usuario ha seleccionado. Aplica sobre las presentaciones\r\n * \r\n *@param: arr: arreglo de valores que crea el select multi de react\r\n *@return: nada\r\n */\r\n handlePresentationChange = (arr) => {\r\n let state = {...this.state}\r\n let tempPresentationList = [];\r\n arr.map(obj => {\r\n tempPresentationList.push(obj.value);\r\n })\r\n\r\n state.selectedPresentationsList = tempPresentationList;\r\n state.selectedRecipes = [];\r\n state.pageRecipes.forEach(pageRecipe => pageRecipe.statusCheck = false);\r\n\r\n this.setState(state, () => {\r\n this.handleSearchMultipleFieldInput();\r\n });\r\n }\r\n\r\n /**\r\n *Modificar la lista de IDs con los que el usuario ha seleccionado. Aplica sobre los tipos de leche\r\n * \r\n *@param: arr: arreglo de valores que crea el select multi de react\r\n *@return: nada\r\n */\r\n handleMilkChange = (arr) => {\r\n let state = {...this.state}\r\n let tempMilksList = [];\r\n arr.map(obj => {\r\n tempMilksList.push(obj.value);\r\n })\r\n\r\n state.selectedMilksList = tempMilksList;\r\n state.selectedRecipes = [];\r\n state.pageRecipes.forEach(pageRecipe => pageRecipe.statusCheck = false);\r\n\r\n this.setState(state, () => {\r\n this.handleSearchMultipleFieldInput();\r\n });\r\n }\r\n\r\n /**\r\n *Modificar la lista de IDs con los que el usuario ha seleccionado. Aplica sobre los tipos de granos.\r\n * \r\n *@param: arr: arreglo de valores que crea el select multi de react\r\n *@return: nada\r\n */\r\n handleGrainChange = (arr) => {\r\n let state = {...this.state}\r\n let tempGrainList = [];\r\n arr.map(obj => {\r\n tempGrainList.push(obj.value);\r\n })\r\n\r\n state.selectedGrainsList = tempGrainList;\r\n state.selectedRecipes = [];\r\n state.pageRecipes.forEach(pageRecipe => pageRecipe.statusCheck = false);\r\n\r\n this.setState(state, () => {\r\n this.handleSearchMultipleFieldInput();\r\n });\r\n }\r\n\r\n /**\r\n *Modificar la lista de IDs con los que el usuario ha seleccionado. Aplica sobre las clasificaciones.\r\n * \r\n *@param: arr: arreglo de valores que crea el select multi de react\r\n *@return: nada\r\n */\r\n handleClassificationChange = (arr) => {\r\n let state = {...this.state}\r\n let tempClassificationList = [];\r\n arr.map(obj => {\r\n tempClassificationList.push(obj.value);\r\n })\r\n\r\n state.selectedClassificationList = tempClassificationList;\r\n state.selectedRecipes = [];\r\n // state.pageRecipes.forEach(pageRecipe => pageRecipe.statusCheck = false);\r\n\r\n this.setState(state, () => {\r\n this.handleSearchMultipleFieldInput();\r\n this.filterOptionsByClasification();\r\n });\r\n }\r\n\r\n /**\r\n * Filtra las opciones de los filtros(hehe) segun la clasificacion seleccionada.\r\n * Por ejemplo, seleccionó la Familia \"Chocolate\" entonces en el filtro de tipo de receta solo me tiene que aparecer \"Caliente\" y \"Frio\"\r\n */\r\n filterOptionsByClasification = () => {\r\n let clasificaciones = this.state.selectedClassificationList\r\n if(clasificaciones.length > 0 ){\r\n let stateFiltros = {}\r\n // Filtrar los tipos de receta\r\n RecipeTypesAPI.getByClasification(clasificaciones).then(response => {\r\n let temp = response.data.map(obj => {\r\n return {value: obj.RecipeTypeId, label: obj.RecipeName ? obj.RecipeName : obj.Description}\r\n })\r\n stateFiltros.recipeTypeList = temp\r\n \r\n // Filtrar los sabores\r\n return FlavorsAPI.getByClasification(clasificaciones)\r\n }).then(response => {\r\n let tempFlavorsList = response.data.map(obj => {\r\n return {value: obj.FlavorTypeId, label:obj.Name}\r\n })\r\n tempFlavorsList.sort(this.compare); // Ordenar los labels \r\n stateFiltros.flavorsList = tempFlavorsList\r\n \r\n // Filtrar los granos de cafe\r\n return GrainsAPI.getByClasification(clasificaciones)\r\n }).then(response => {\r\n let tempGrainList = response.data.map(obj => {\r\n return {value: obj.GrainTypeId, label: obj.Description}\r\n })\r\n tempGrainList.sort(this.compare); // Ordenar los labels\r\n stateFiltros.grainsList = tempGrainList\r\n \r\n // Filtrar los tipos de leche\r\n return MilksAPI.getByClasification(clasificaciones)\r\n })\r\n .then(response => {\r\n let tempMilkList = response.data.map(obj => {\r\n return {value: obj.MilkTypeId, label: obj.Description}\r\n })\r\n tempMilkList.sort(this.compare); // Ordenar los labels\r\n stateFiltros.milksList = tempMilkList\r\n \r\n // Filtrar las presentaciones\r\n return PresentationsAPI.getByClasification(clasificaciones)\r\n }).then(response => {\r\n let tempPresentationList = response.data.map(obj => {\r\n return {value: obj.PresentationId, label: obj.Name}\r\n })\r\n tempPresentationList.sort(this.compare); // Ordenar los labels\r\n stateFiltros.presentationsList = tempPresentationList\r\n\r\n this.setState(stateFiltros)\r\n })\r\n }else{\r\n this.setState({\r\n recipeTypeList: lodash.cloneDeep(this.origRecipeTypesList),\r\n flavorsList: lodash.cloneDeep(this.origFlavorsList),\r\n grainsList: lodash.cloneDeep(this.origGrainsList),//Donde se va a guardar la lista original de granos\r\n milksList: lodash.cloneDeep(this.origMilksList),//Donde se va a guardar la lista original de leches\r\n presentationList: lodash.cloneDeep(this.origPresentationList)//Donde se va a guardar la lista original de presentaciones\r\n })\r\n }\r\n }\r\n\r\n handleSelectChange = (objFilters) => {\r\n this.setState(objFilters, () => {this.handleSearchMultipleFieldInput();})\r\n }\r\n\r\n handleMenuRecetaModalBody = (recipeId) => {\r\n RecipesAPI.getMenu(recipeId)\r\n .then(result => {\r\n let tablaMenus = \r\n this.setState({menuRecetaModalBody:tablaMenus, isLoading: false})\r\n })\r\n .catch(error => {\r\n if(error){\r\n toast.error(error.response ? error.response.data.Message : \"Error al cargar los menús.\");\r\n }\r\n this.setState({menuRecetaModalBody:\"Error al cargar los menús.\", isLoading: false})\r\n })\r\n } \r\n\r\n remove = () => {\r\n this.setState({isLoading: true});\r\n RecipesAPI.delete(this.state.recipe.RecipeId).then(response => {\r\n let state = {...this.state};\r\n\r\n state.recipes.splice(state.recipes.findIndex(c => c.RecipeId === state.recipe.RecipeId), 1);\r\n state.pageRecipes.splice(state.pageRecipes.findIndex(c => c.RecipeId === state.recipe.RecipeId), 1);\r\n state.isLoading = false;\r\n state.removeModal = false;\r\n state.recipe = null;\r\n\r\n this.setState(state, () => toast.success(\"Receta eliminada\"));\r\n }).catch(err => {\r\n if(err){\r\n this.setState({isLoading: false, recipe: null, removeModal: false});\r\n if(err.response)\r\n toast.error(err.response.data.Message)\r\n else\r\n toast.error(ErrorMessages.SinConexion)\r\n }\r\n });\r\n }\r\n\r\n /**\r\n * Genera un movimiento de sincronizacion a los drives que tienen la receta seleccionada en su menu\r\n */\r\n syncRecipe = () => {\r\n this.setState({isLoading: true});\r\n RecipesAPI.sync(this.state.recipe.RecipeId).then(response => {\r\n this.setState({syncModal: false, isLoading: false, recipe: null}, () => toast.success(\"Orden de sincronización generado\"));\r\n }).catch(err => {\r\n if(err){\r\n this.setState({isLoading: false, recipe: null, syncModal: false});\r\n if(err.response)\r\n toast.error(err.response.data.Message)\r\n else\r\n toast.error(ErrorMessages.SinConexion)\r\n }\r\n });\r\n }\r\n\r\n /**\r\n * Genera un movimiento de sincronizacion a los drives que tienen almenos una de las recetas seleccionadas en su menu\r\n */\r\n syncRecipeMulti = () => {\r\n this.setState({isLoading: true});\r\n RecipesAPI.syncMulti(this.state.selectedRecipes).then(response => {\r\n let _pageRecipes = [...this.state.pageRecipes]\r\n _pageRecipes.forEach(pageRecipe => pageRecipe.statusCheck = false)\r\n this.setState({syncMultiModal: false, isLoading: false, selectedRecipes: [], pageRecipes: _pageRecipes}, () => toast.success(\"Orden de sincronización generado\"));\r\n }).catch(err => {\r\n if(err){\r\n this.setState({isLoading: false, syncMultiModal: false});\r\n if(err.response)\r\n toast.error(err.response.data.Message)\r\n else\r\n toast.error(ErrorMessages.SinConexion)\r\n }\r\n });\r\n }\r\n\r\n /**\r\n * Funcion que se ejecuta al darle click al checkbox del header\r\n */\r\n selectAllCheck = () => {\r\n let _checkAll = !this.state.checkAll\r\n let _selectedRecipes = [...this.state.selectedRecipes]\r\n let _pageRecipes = this.state.pageRecipes\r\n _pageRecipes.forEach(recipe => {\r\n let indexRecipe = _selectedRecipes.findIndex(item => item === recipe.RecipeId)\r\n recipe.statusCheck = _checkAll\r\n if(_checkAll){\r\n if(indexRecipe === -1) _selectedRecipes.push(recipe.RecipeId)\r\n }else{\r\n if(indexRecipe !== -1) _selectedRecipes.splice(indexRecipe, 1)\r\n }\r\n\r\n })\r\n\r\n this.setState({checkAll: _checkAll, selectedRecipes: _selectedRecipes})\r\n }\r\n\r\n /**\r\n * Funcion que se ejecuta al cambiar la pagina del tablero\r\n */\r\n changeRecipePage = (recipes) => {\r\n let recipesChecked = 0\r\n let checkAll = false\r\n recipes.forEach(item => {\r\n if(this.state.selectedRecipes.findIndex(id => id === item.RecipeId) !== -1)\r\n recipesChecked++\r\n })\r\n if(recipesChecked === recipes.length) checkAll = true \r\n\r\n this.setState({ pageRecipes: recipes, checkAll: checkAll })\r\n }\r\n\r\n /*\r\n * Funcion que selecciona o des selecciona todas las \r\n * recetas de todas las paginas.\r\n */\r\n selectAllCheckBox = () => {\r\n let state = {...this.state};\r\n let elementsPage = state.recipes\r\n let selectedRecipes = []\r\n // Le asignamos el valor inverso de checkAll a todas las recetas actuales\r\n elementsPage.map(element=>{\r\n if(state.checkAll){\r\n element.statusCheck = false \r\n }else{\r\n element.statusCheck = true\r\n selectedRecipes.push(element.RecipeId)\r\n }\r\n\r\n return element\r\n })\r\n state.checkAll = !state.checkAll;\r\n state.recipes = elementsPage;\r\n state.selectedRecipes = selectedRecipes\r\n this.setState(state);\r\n }\r\n\r\n /**\r\n * Función que checa que las cantidades de los toppings esten correctas.\r\n */\r\n checkForToppingErrors = () => {\r\n let errorTopping = false;\r\n this.state.toppings.findIndex(topping => {\r\n if(topping.MinQuantity > topping.MaxQuantity){\r\n errorTopping = true\r\n return true\r\n }\r\n return false\r\n })\r\n this.setState({toppingError: errorTopping})\r\n }\r\n\r\n /**\r\n * Función que realiza petición al server para añadir los toppings que estan en this.state.toppings a los toppings seleccionados\r\n */\r\n addToppingsToRecipes = () => {\r\n // Primero hay que crear el payload. En este caso sera una coleccion de {RecipeId: X, Toppings: [toppings en el estado]}\r\n let payloadRecipes = this.state.selectedRecipes.map(recipeId => {\r\n return {RecipeId: recipeId, Toppings: [...this.state.toppings]}\r\n })\r\n\r\n // Hacer la peticion\r\n RecipesAPI.addToppings(payloadRecipes)\r\n .then(result => {\r\n this.setState({manageToppingModal: false, toppings: [], toppingError: false, isLoading: false}, () => toast.success(\"Topping(s) agregado(s) exitosamente.\"))\r\n })\r\n .catch(error => {\r\n if(error){\r\n toast.error(error.response ? error.response.data.Message : \"Error al agregar topping(s).\");\r\n this.setState({isLoading: false});\r\n }\r\n })\r\n }\r\n\r\n /**Función para agregar artículos */\r\n addInventoryItemsToRecipes = () => {\r\n let recipesToAddItems = this.state.selectedRecipes.map(recipeId => {\r\n return {RecipeId: recipeId, Details: [...this.state.inventoryItems.filter(i => (i.Amount && i.Amount > 0) || !i.Activo )]}\r\n });\r\n\r\n RecipesAPI.addInventoryItems(recipesToAddItems)\r\n .then(result => {\r\n this.setState({manageInventoryItemsModal: false, inventoryItems: [], inventoryItemsError: false, isLoading: false, inventoryItemsTemp:[]}, () => toast.success(\"Artículo(s) agregado(s) y/o actualizados exitosamente.\"))\r\n })\r\n .catch(error => {\r\n if(error){\r\n toast.error(error.response ? error.response.data.Message : \"Error al agregar topping(s).\");\r\n this.setState({isLoading: false});\r\n }\r\n });\r\n }\r\n\r\n /** Obtiene los artículos inventarios que comparten\r\n * las recetas seleccionadas */\r\n getInventoryItemsCommon = () => {\r\n this.setState({isLoading: true, inventoryItems: [], inventoryItemsTemp:[]}, () => {\r\n //por cada receta se trae los artículos \r\n let lstInventoryItems = [];\r\n let selectedRecipes = this.state.recipes.filter(r => { \r\n if(r.statusCheck){\r\n r.completed = false;\r\n return r;\r\n }\r\n }); \r\n let findCommon = true;\r\n selectedRecipes.forEach((recipe) => {\r\n if(findCommon){\r\n RecipesAPI.get(recipe.RecipeId).then(response => { \r\n if(response.data && response.data.Details && response.data.Details.length > 0){ \r\n recipe.completed = true;\r\n let arrayUnion = []; \r\n let items = response.data.Details.reduce((lista, detail) => {\r\n if(!lista.some(l => l.InventoryItemId === detail.InventoryItem.InventoryItemId)){\r\n detail.InventoryItem.Amount = undefined;\r\n detail.InventoryItem.Activo = true;\r\n detail.InventoryItem.idDrive = [];\r\n lista.push(detail.InventoryItem); \r\n }\r\n return lista;\r\n \r\n }, []);\r\n arrayUnion = lstInventoryItems.length === 0 \r\n ? items \r\n : lstInventoryItems.filter(x => {\r\n if(items.some(l => l.InventoryItemId === x.InventoryItemId)){\r\n return x;\r\n }\r\n });\r\n \r\n if(arrayUnion.length > 0){\r\n lstInventoryItems = arrayUnion;\r\n } else{\r\n //resetea listado ya que no hay ningura coicidencia \r\n lstInventoryItems = [];\r\n findCommon = false; \r\n }\r\n let anyUncomplete = selectedRecipes.some(s => !s.completed);\r\n this.setState({ \r\n isLoading: anyUncomplete, \r\n manageInventoryItemsModal: !anyUncomplete,\r\n inventoryItems: lstInventoryItems , \r\n inventoryItemsTemp: lstInventoryItems\r\n }); \r\n } \r\n })\r\n .catch(error => { \r\n this.setState({ isLoading: false, }, () => { \r\n toast.error(\"Ocurrió un error al cargar artículos en común.\"); \r\n });\r\n });\r\n } \r\n }); \r\n \r\n });\r\n\r\n }\r\n\r\n /**\r\n * Función que analiza el nombre dado y determina si representa a la clasificacion sin tipo\r\n * @param nombre String. Nombre que se va analizar\r\n * @returns True si el nombre representa a la clasificación sin tipo. False en caso contrario\r\n */\r\n nombreEsSinTipo = (nombre) => { \r\n return nombresSinTipo.indexOf((nombre.trim().toLowerCase())) !== -1\r\n }\r\n\r\n render() {\r\n return (\r\n
    \r\n\r\n \r\n\r\n

    Recetas

    \r\n
    \r\n
    \r\n{/*
    \r\n
    \r\n
    \r\n
    \r\n this.handleSearchInput(t)}\r\n itemName={'Receta'}\r\n placeholderText={\"Ingrese descripción y nombre corto de receta\"}\r\n />\r\n
    \r\n
    \r\n
    \r\n
    */}\r\n
    \r\n\r\n
    \r\n
    \r\n
    \r\n {lodash.intersection(localStorage.getItem('role').split(\",\"), [roles.ADMIN, roles.ADMINDRIVE, roles.ESPECIALISTA_DE_PRODUCTO, roles.COORDINADOR_GESTION_OPERACIONES]).length > 0 &&\r\n this.create()}>\r\n \r\n \r\n \r\n Agregar Receta\r\n \r\n }\r\n
    \r\n
    \r\n
    \r\n
    \r\n\r\n {/* Filtro multiple para recetas */}\r\n
    \r\n
    \r\n
    \r\n \r\n {this.handleSelectChange(objFilters)}}\r\n />\r\n\r\n
    \r\n
    \r\n
    \r\n\r\n
    \r\n \r\n
    \r\n
    \r\n {/* Botones del header de la tabla */}\r\n
    \r\n {/* Todos los resultados */}\r\n \r\n\r\n {this.state.selectedRecipes.length > 0 &&\r\n
    \r\n \r\n {/* Agregar artículos */}\r\n {this.state.selectedClassificationList.length === 1 && this.state.selectedPresentationsList.length > 0\r\n && {\r\n this.getInventoryItemsCommon()\r\n }}\r\n data-tooltip=\"+ Agregar Artículos\"\r\n >\r\n \r\n \r\n \r\n Artículos\r\n \r\n }\r\n \r\n\r\n {/* Agregar toppings */}\r\n this.setState({manageToppingModal: true})}\r\n data-tooltip=\"+ Agregar Toppings\"\r\n >\r\n \r\n \r\n \r\n Toppings\r\n \r\n\r\n {/* Sincronizar seleccionados */}\r\n this.setState({syncMultiModal: true})}\r\n data-tooltip=\"Sincronizar seleccionados\">\r\n \r\n \r\n \r\n Sincronizar\r\n \r\n
    \r\n }\r\n
    \r\n {this.state.recipes.length !== 0 \r\n ? this.setState({showModal: true, recipe: recipe})} \r\n edit={(recipe) => this.edit(recipe)}\r\n remove={(recipe) => this.setState({removeModal: true, recipe: recipe})}\r\n sync={(recipe) => this.setState({syncModal: true, recipe: recipe})}\r\n //Controlar checkboxes \r\n showView={(index) => {\r\n let _selectedRecipes = [...this.state.selectedRecipes]\r\n let indexRecipe = this.state.selectedRecipes.findIndex(id => id === this.state.pageRecipes[index].RecipeId)\r\n if( indexRecipe === -1)\r\n _selectedRecipes.push(this.state.pageRecipes[index].RecipeId);\r\n else\r\n _selectedRecipes.splice(indexRecipe, 1)\r\n this.setState({selectedRecipes: _selectedRecipes})\r\n }}\r\n checkAll={this.state.checkAll}\r\n //Controlador del checkbox del header\r\n selectAllCheck={this.selectAllCheck}\r\n //Función que se ejecuta al renderizar un renglon de la tabla. La tabla te devuelve el objeto que representa al renglon.\r\n extraButtons={(row) => {\r\n // Creamos un botón que lanza un modal con información de que menus esta la receta seleccionada\r\n return
    \r\n \r\n \r\n\r\n { row.FlavorType !== null && !this.nombreEsSinTipo(row.FlavorType.Name) && \r\n }\r\n \r\n
    \r\n }}\r\n rowClickable={true}\r\n details={(recipe) => this.edit(recipe)}\r\n /> \r\n : }\r\n this.changeRecipePage(recipes) } />\r\n
    \r\n
    \r\n \r\n {/* Modales */}\r\n {this.state.removeModal && this.remove()}\r\n cancel={() => this.setState({removeModal: false})}\r\n modalTitle={\"Eliminar Receta\"}\r\n />}\r\n\r\n {this.state.syncModal && this.syncRecipe()}\r\n cancel={() => this.setState({syncModal: false})}\r\n modalTitle={\"Sincronizar \" + this.state.recipe.Description + \"?\"}\r\n />}\r\n\r\n {this.state.syncMultiModal && this.syncRecipeMulti()}\r\n cancel={() => this.setState({syncMultiModal: false})}\r\n modalTitle={\"Sincronizar recetas seleccionadas?\"}\r\n />}\r\n\r\n {/* Modal para consultar menus */}\r\n {this.state.menuRecetaModal && this.setState({menuRecetaModal: false})}\r\n modalTitle={this.state.menuRecetaModalTitle}\r\n >\r\n {this.state.menuRecetaModalBody}\r\n }\r\n\r\n {/* Modal de gestion de toppings */}\r\n {this.state.manageToppingModal && this.setState({manageToppingModal: false, toppings: [], toppingError: false})}\r\n footer={true}\r\n footerButtons={\r\n
    \r\n \r\n
    \r\n }\r\n width=\"50%\"\r\n >\r\n
    \r\n

    \r\n Agregar topping\r\n  \r\n this.setState({addToppingModal: true})}>\r\n \r\n \r\n \r\n \r\n

    \r\n
    \r\n { \r\n let toppings = [...this.state.toppings];\r\n toppings[index][labelQuantity] = value;\r\n this.setState({toppings: toppings}, this.checkForToppingErrors());\r\n }}\r\n removeDetail={(indexTopping) => {\r\n let toppings = [...this.state.toppings];\r\n toppings.splice(indexTopping,1);\r\n this.setState({toppings: toppings}, () => {\r\n toast.success(\"Topping eliminado\");\r\n this.checkForToppingErrors()\r\n });\r\n }}\r\n />\r\n }\r\n\r\n {/* Modal para agregar toppings */}\r\n {this.state.addToppingModal && \r\n this.setState({ addToppingModal: false })}\r\n width=\"75%\"\r\n >\r\n {\r\n let toppings = [...this.state.toppings];\r\n \r\n toppings.push({\r\n CodeProvider: detail.CodeProvider,\r\n Name: detail.Name,\r\n InventoryItemId: detail.InventoryItemId,\r\n MinQuantity: detail.MinQuantity || 0,\r\n MaxQuantity: detail.MaxQuantity || 0\r\n });\r\n this.setState({toppings: toppings});\r\n }}\r\n currentDetails = {this.state.toppings.map(det => det.InventoryItemId)}\r\n soloToppings={true}\r\n isTopping={true}\r\n />\r\n \r\n }\r\n\r\n {/* Modal de gestion de artículos */}\r\n {this.state.manageInventoryItemsModal && \r\n Gestionar artículos\r\n this.setState({ showInventoryItemsInfo: !this.state.showInventoryItemsInfo })} className=\"fa fa-question-circle\">\r\n \r\n
    }\r\n cancel={() => this.setState({manageInventoryItemsModal: false, \r\n inventoryItems: [], \r\n inventoryItemsTemp:[],\r\n inventoryItemsError:false, \r\n addInventoryItems: false})}\r\n footer={true}\r\n footerButtons={\r\n
    \r\n \r\n
    \r\n }\r\n width=\"50%\"\r\n >\r\n
    \r\n {this.state.showInventoryItemsInfo &&\r\n
    \r\n

    INSTRUCCIONES

    \r\n
      \r\n
    1. Los artículos cargados son los que las recetas seleccionadas tienen en común.
    2. \r\n
    3. Al editarse y confirmar, la cantidad, será actualizada en cada Receta.
    4. \r\n
    5. Si el artículo no existe será agregado a las recetas.
    6. \r\n
    7. Para no modificar el artículo no modifique la cantidad.
    8. \r\n
    9. Para eliminar el artículo de todas las recetas presione el icono eliminar.
    10. \r\n
    \r\n
    \r\n }\r\n

    \r\n Agregar artículos\r\n  \r\n this.setState({addInventoryItems: true})}>\r\n \r\n \r\n \r\n \r\n

    \r\n \r\n \r\n
    \r\n {\r\n if (value > 0) {\r\n let state = {...this.state};\r\n let itemToUpdate = state.inventoryItemsTemp[index];\r\n\r\n state.inventoryItems.map(item => {\r\n if(item.InventoryItemId === itemToUpdate.InventoryItemId){\r\n item.Amount = value;\r\n }\r\n return item;\r\n });\r\n\r\n state.inventoryItemsTemp[index].Amount = value;\r\n this.setState(state);\r\n } else {\r\n toast.warn(\"La cantidad debe ser mayor a cero.\")\r\n }\r\n\r\n }}\r\n removeDetail={(index) => {\r\n let state = {...this.state};\r\n let itemToRm = state.inventoryItemsTemp[index];\r\n\r\n state.inventoryItems = state.inventoryItems.map(item => {\r\n if(item.InventoryItemId === itemToRm.InventoryItemId){\r\n item.Activo = false;\r\n }\r\n return item;\r\n });\r\n\r\n state.inventoryItemsTemp.splice(index, 1); \r\n this.setState(state);\r\n }}\r\n mostrarDrives={false}\r\n \r\n />\r\n }\r\n\r\n {/**modal para agregar artículos */}\r\n {this.state.addInventoryItems &&\r\n this.setState({ addInventoryItems: false })}\r\n width=\"75%\"\r\n >\r\n
    \r\n \r\n {\r\n if(!this.state.inventoryItems.some(i=> i.InventoryItemId === detail.InventoryItemId )){\r\n //Actualiza inventario\r\n let state = {...this.state};\r\n detail.Activo = true;\r\n detail.idDrive = detail.idDrive ? [...detail.idDrive] : [];\r\n\r\n if(!state.inventoryItems.some(i => i.InventoryItemId === detail.InventoryItemId)){\r\n state.inventoryItems.push(detail);\r\n }\r\n if(!state.inventoryItemsTemp.some(i => i.InventoryItemId === detail.InventoryItemId)){\r\n state.inventoryItemsTemp.push(detail);\r\n }\r\n\r\n this.setState(state); \r\n }else{\r\n toast.dismiss()\r\n toast.warn(\"El artículo ya existe, fue removido.\")\r\n }\r\n }}\r\n currentDetails={[]}\r\n isDetail={true}\r\n />\r\n
    \r\n \r\n }\r\n\r\n {/* Modal para editar imagen del sabor de la receta y el nombre corto */}\r\n {this.state.imageFormModal && \r\n this.setState({ imageFormModal: false })}\r\n width=\"50%\"\r\n >\r\n this.setState({imageFormModal: false, selectedRecipe:null, isLoading: false})} \r\n save = {(values) => {\r\n this.setState({isLoading:true},() => {\r\n RecipesAPI.editImageRecipe({...values})\r\n .then(response => {\r\n toast.dismiss();\r\n toast.success(\"Receta actualizada correctamente\");\r\n \r\n })\r\n .catch(err => {\r\n toast.dismiss();\r\n if (err.response)\r\n toast.error(err.response.data.Message)\r\n else\r\n toast.error(ErrorMessages.SinConexion)\r\n\r\n })\r\n .finally(() => {\r\n this.setState({ selectedRecipe: null, imageFormModal: false, isLoading: false })\r\n window.location.reload();\r\n\r\n })\r\n\r\n })\r\n \r\n\r\n }} \r\n />\r\n \r\n }\r\n \r\n \r\n\r\n \r\n\r\n \r\n );\r\n }\r\n}\r\n\r\nexport default Recipes;\r\n","import React, { Component } from 'react';\r\nimport Field from '../../util/field/Field';\r\nimport { Formik } from 'formik';\r\nimport * as Yup from 'yup';\r\n\r\nimport ErrorMessages from '../../../util/validation-error-messages';\r\n\r\nconst SUPPORTED_FORMATS = [\r\n \"image/png\"\r\n];\r\n/**\r\n * Formulario para cargar y validar PT asignado a artículo inventario\r\n */\r\nclass RecipeImageForm extends Component {\r\n constructor(props) {\r\n super(props);\r\n this.state = {\r\n recipe: props.recipe,\r\n columna: props.columna, \r\n initialValues:{Image:null}\r\n }\r\n\r\n }\r\n\r\n /**Esquema para validar al editar receta con imagen*/\r\n VALIDATION_SCHEMA_EDIT_WITH_IMG = Yup.object({\r\n Image: Yup.mixed() \r\n .required(\"Campo Imagen es requerido.\") \r\n .test(\r\n \"fileFormat\",\r\n ErrorMessages.PngFormatError,\r\n value => value && SUPPORTED_FORMATS.includes(value.type) \r\n\r\n )\r\n ,\r\n \r\n });\r\n\r\n render() {\r\n return (\r\n { \r\n this.props.save(values.Image)\r\n }}>\r\n {({ values, touched, errors, handleChange, handleBlur, handleSubmit, setFieldValue, setFieldTouched }) => (\r\n
    \r\n
    \r\n
    \r\n
    \r\n
    \r\n
    \r\n
    \r\n

    \r\n {`Ingresa la imagen de ${this.state.columna}, que aparecerá en el PDV.`}\r\n

    \r\n
    \r\n
    \r\n
    \r\n
    \r\n
    \r\n \r\n
    \r\n \r\n
    \r\n \r\n
    \r\n {values.Image !== null &&\r\n \r\n \r\n\r\n \r\n }\r\n
    \r\n
    \r\n
    \r\n
    \r\n {values.Image !== null\r\n && \r\n
    \r\n
    \r\n \"\"\r\n
    \r\n
    \r\n
    \r\n\r\n }\r\n {values.UrlImage && \r\n
    \r\n
    \r\n \"\"\r\n
    \r\n
    \r\n
    }\r\n\r\n
    \r\n \r\n\r\n\r\n\r\n
    \r\n\r\n
    \r\n
    \r\n
    \r\n \r\n\r\n
    \r\n
    \r\n
    \r\n
    \r\n \r\n
    \r\n
    \r\n\r\n \r\n )}\r\n\r\n \r\n\r\n )\r\n }\r\n}\r\n\r\n// Definición de los valores por default de las props en caso de no ser recibidas por el padre.\r\nRecipeImageForm.defaultProps = {\r\n\r\n recipe: {\r\n ShortName: \"\",\r\n Description: \"\",\r\n ClassificationId: null,\r\n PresentationId: null,\r\n FlavorTypeId: null,\r\n RecipeTypeId: null,\r\n MilkTypeId: null,\r\n GrainTypeId: null,\r\n IVAApply: true,\r\n KiwiId: 0,\r\n Active: true,\r\n MobileApply: true,\r\n WelcomeGiftApply: true,\r\n ClassificationSatId: 0,\r\n CodeSatId: 0,\r\n Details: [],\r\n GiftWelcomeActive: true,\r\n Image: null,\r\n UrlImage: \"\"\r\n }\r\n}\r\n\r\nexport default RecipeImageForm;","import React from 'react';\r\nimport RecipeTypesAPI from '../../../services/RecipeType';\r\nimport PresentationsAPI from '../../../services/Presentations';\r\nimport MilksAPI from '../../../services/Milk';\r\nimport GrainsAPI from '../../../services/Grain';\r\nimport FlavorsAPI from '../../../services/Flavor';\r\nimport ClasificacionesAPI from '../../../services/Classification';\r\nimport { toast } from 'react-toastify';\r\n\r\nimport Select from 'react-select';\r\nimport lodash from 'lodash';\r\nimport ErrorMessages from '../../../util/validation-error-messages';\r\nimport EmpresasAPI from '../../../services/CaffenioEmpresas/Empresas';\r\n\r\nexport default class RecipeImageFilter extends React.Component{\r\n oringClassificationList = []; //Donde se va a guardar la lista original de las clasificaciones\r\n origRecipeTypesList = []; //Donde se va a guardar la lista original de tipos de receta\r\n origFlavorsList = []; //Donde se va a guardar la lista original de sabores\r\n origGrainsList = []; //Donde se va a guardar la lista original de granos\r\n origMilksList = []; //Donde se va a guardar la lista original de leches\r\n origPresentationList = []; //Donde se va a guardar la lista original de presentaciones\r\n\r\n constructor(props){\r\n super(props)\r\n this.state = {\r\n // Variables sonde se almacenaran los criterios de busqueda definitivos\r\n recipeTypeList: [],\r\n selectedRecipeTypesList: [],\r\n presentationsList: [],\r\n selectedPresentationsList: [],\r\n milksList: [],\r\n selectedMilksList: [],\r\n grainsList: [],\r\n selectedGrainsList: [],\r\n flavorsList: [],\r\n selectedFlavorsList: [],\r\n classificationList: [],\r\n selectedClassificationList: [],\r\n segmentationList: [],\r\n selectedSegmentationList: [],\r\n noMulti: this.props.noMulti || false,\r\n noRecipeType: this.props.noRecipeType || false,\r\n noFlavorType: this.props.noFlavorType || false,\r\n noGrainType: this.props.noGrainType || false,\r\n noMilkType: this.props.noMilkType || false,\r\n noPresentation: this.props.noPresentation || false,\r\n disabledByFamily: this.props.disabledByFamily || false,\r\n }\r\n }\r\n\r\n componentDidMount = () => {\r\n let state = {...this.state};\r\n RecipeTypesAPI.getAll().then(response => {\r\n let temp = [];\r\n \r\n response.data.map(obj => {\r\n if(obj.RecipeName) {\r\n temp.push({value: obj.RecipeTypeId, label: obj.RecipeName})\r\n }else{\r\n temp.push({value: obj.RecipeTypeId, label: obj.Description})\r\n }\r\n })\r\n temp.sort(this.compare); // Ordenar los labels para elegir\r\n state.recipeTypeList = temp;\r\n this.origRecipeTypesList = lodash.cloneDeep(temp)\r\n \r\n // Obtener todas las presentaciones\r\n return PresentationsAPI.getAll()\r\n }).then(response => {\r\n let tempPresentationList = [];\r\n response.data.map(obj => {\r\n if(obj.Active){\r\n tempPresentationList.push({value: obj.PresentationId, label: obj.Name})\r\n } \r\n })\r\n tempPresentationList.sort(this.compare); // Ordenar los labels\r\n state.presentationsList = tempPresentationList\r\n this.origPresentationList = lodash.cloneDeep(tempPresentationList)\r\n\r\n // Obtener los tipos de leche\r\n return MilksAPI.getAll()\r\n }).then(response => {\r\n let tempMilkList = [];\r\n response.data.map(obj => {\r\n tempMilkList.push({value: obj.MilkTypeId, label: obj.Description})\r\n })\r\n tempMilkList.sort(this.compare); // Ordenar los labels\r\n state.milksList = tempMilkList\r\n this.origMilksList = tempMilkList\r\n \r\n // Obtener los tipos de grano\r\n return GrainsAPI.getAll()\r\n }).then(response => {\r\n let tempGrainList = [];\r\n response.data.map(obj => {\r\n tempGrainList.push({value: obj.GrainTypeId, label: obj.Description})\r\n })\r\n tempGrainList.sort(this.compare); // Ordenar los labels\r\n state.grainsList = tempGrainList\r\n this.origGrainsList = lodash.cloneDeep(tempGrainList)\r\n \r\n // Obtener los sabores\r\n return FlavorsAPI.getAll()\r\n }).then(response => {\r\n let tempFlavorsList = [];\r\n response.data.map(obj => {\r\n tempFlavorsList.push({value: obj.FlavorTypeId, label:obj.Name})\r\n })\r\n tempFlavorsList.sort(this.compare); // Ordenar los labels \r\n state.flavorsList = tempFlavorsList\r\n this.origFlavorsList = tempFlavorsList\r\n \r\n // Obtener las clasificaciones\r\n return ClasificacionesAPI.getAll()\r\n }).then(response => {\r\n let tempClassificationList = [];\r\n response.data.map(obj => {\r\n tempClassificationList.push({value: obj.ClassificationId, label: obj.Name})\r\n })\r\n tempClassificationList.sort(this.compare); // Ordenar los labels\r\n state.classificationList = tempClassificationList\r\n this.oringClassificationList = tempClassificationList\r\n \r\n return EmpresasAPI.getAllFilterSegments()\r\n }).then(response => {\r\n let tempSegmentsList = []\r\n response.data.map(obj => {\r\n tempSegmentsList.push({value: obj.SegmentId, label: obj.Name})\r\n })\r\n state.segmentationList = tempSegmentsList\r\n \r\n // Guardar el estado\r\n this.setState(state)\r\n }).catch(err => {\r\n this.setState({isLoading: false})\r\n if(err.response)\r\n toast.error(err.response.data.Message)\r\n else\r\n toast.error(ErrorMessages.SinConexion)\r\n })\r\n }\r\n\r\n /**\r\n *Modificar la lista de IDs con los que el usuario ha seleccionado. Aplica sobre las clasificaciones.\r\n * \r\n *@param: arr: arreglo de valores que crea el select multi de react\r\n *@return: nada\r\n */\r\n handleClassificationChange = (arr) => {\r\n let state = {...this.state}\r\n let tempClassificationList = [];\r\n arr.map(obj => {\r\n tempClassificationList.push(obj.value);\r\n })\r\n\r\n state.selectedClassificationList = tempClassificationList;\r\n state.selectedRecipes = []; \r\n\r\n this.setState(state, () => { \r\n this.filterOptionsByClasification();\r\n });\r\n }\r\n \r\n /**\r\n *Modificar la lista de IDs con los que el usuario ha seleccionado. Aplica sobre los tipos de granos.\r\n * \r\n *@param: arr: arreglo de valores que crea el select multi de react\r\n *@return: nada\r\n */\r\n handleSelectChange = (arr, selectedListLabel) => {\r\n let state = {...this.state}\r\n state[selectedListLabel] = arr.map(obj => obj.value);\r\n this.setState(state, () => {\r\n this.sendFilters();\r\n });\r\n }\r\n\r\n /**\r\n *Modificar la lista de IDs con los que el usuario ha seleccionado. Aplica sobre los tipos de granos.\r\n * \r\n *@param: arr: arreglo de valores que crea el select multi de react\r\n *@return: nada\r\n */\r\n handleSelectChangeSegmentation = (arr, selectedListLabel) => {\r\n if(arr.length > 0){\r\n let state = {...this.state}\r\n state[selectedListLabel] = arr.map(obj => obj.value);\r\n this.setState(state, () => {\r\n this.sendFilters();\r\n });\r\n }else{\r\n this.tempClassificationList = [];\r\n this.tempRecipeTypesList = [];\r\n this.tempFlavorsList = [];\r\n this.tempGrainList = [];\r\n this.tempMilkList = [];\r\n this.tempPresentationList = [];\r\n this.setState({\r\n classificationList: lodash.cloneDeep(this.oringClassificationList),\r\n recipeTypeList: lodash.cloneDeep(this.origRecipeTypesList),\r\n flavorsList: lodash.cloneDeep(this.origFlavorsList),\r\n grainsList: lodash.cloneDeep(this.origGrainsList),//Donde se va a guardar la lista original de granos\r\n milksList: lodash.cloneDeep(this.origMilksList),//Donde se va a guardar la lista original de leches\r\n presentationsList: lodash.cloneDeep(this.origPresentationList),//Donde se va a guardar la lista original de presentaciones\r\n selectedRecipeTypesList: [],\r\n selectedFlavorsList: [],\r\n selectedGrainsList: [],\r\n selectedMilksList: [],\r\n selectedPresentationsList: [],\r\n selectedClassificationList: []\r\n\r\n }, () => this.sendFilters())\r\n }\r\n }\r\n\r\n sendFilters = () => {\r\n let selectedFilters = {\r\n selectedRecipeTypesList: this.state.selectedRecipeTypesList,\r\n selectedPresentationsList: this.state.selectedPresentationsList,\r\n selectedMilksList: this.state.selectedMilksList,\r\n selectedGrainsList: this.state.selectedGrainsList,\r\n selectedFlavorsList: this.state.selectedFlavorsList,\r\n selectedClassificationList: this.state.selectedClassificationList,\r\n selectedSegmentationList: this.state.selectedSegmentationList,\r\n }\r\n /* console.log(this.state.selectedSegmentationList) */\r\n this.props.onChange(selectedFilters)\r\n }\r\n\r\n /**\r\n * Filtra las opciones de los filtros(hehe) según la Familia seleccionada.\r\n * Por ejemplo, seleccionó la Familia \"Chocolate\" entonces en el filtro de tipo de receta solo me tiene que aparecer \"Caliente\" y \"Frio\"\r\n */\r\n filterOptionsByClasification = () => {\r\n let clasificaciones = this.state.selectedClassificationList\r\n if(clasificaciones.length > 0 ){\r\n let stateFiltros = {}\r\n // Filtrar los tipos de receta\r\n RecipeTypesAPI.getByClasification(clasificaciones).then(response => { \r\n let temp = response.data.map(obj => {\r\n return {value: obj.RecipeTypeId, label: obj.RecipeName ? obj.RecipeName : obj.Description}\r\n })\r\n temp.sort(this.compare);\r\n stateFiltros.recipeTypeList = temp;\r\n this.tempRecipeTypesList = [];\r\n \r\n // Filtrar los sabores\r\n return FlavorsAPI.getByClasification(clasificaciones)\r\n }).then(response => { \r\n let tempFlavorsList = response.data.map(obj => {\r\n return {value: obj.FlavorTypeId, label:obj.Name}\r\n })\r\n tempFlavorsList.sort(this.compare); // Ordenar los labels \r\n stateFiltros.flavorsList = tempFlavorsList;\r\n this.tempFlavorsList = [];\r\n \r\n // Filtrar los granos de cafe\r\n return GrainsAPI.getByClasification(clasificaciones)\r\n }).then(response => {\r\n let tempGrainList = response.data.map(obj => {\r\n return {value: obj.GrainTypeId, label: obj.Description}\r\n })\r\n tempGrainList.sort(this.compare); // Ordenar los labels\r\n stateFiltros.grainsList = tempGrainList;\r\n this.tempGrainList = [];\r\n \r\n // Filtrar los tipos de leche\r\n return MilksAPI.getByClasification(clasificaciones)\r\n })\r\n .then(response => {\r\n let tempMilkList = response.data.map(obj => {\r\n return {value: obj.MilkTypeId, label: obj.Description}\r\n })\r\n tempMilkList.sort(this.compare); // Ordenar los labels\r\n stateFiltros.milksList = tempMilkList;\r\n this.tempMilkList = [];\r\n \r\n // Filtrar las presentaciones\r\n return PresentationsAPI.getByClasification(clasificaciones)\r\n }).then(response => {\r\n let tempPresentationList = response.data.map(obj => {\r\n return {value: obj.PresentationId, label: obj.Name}\r\n })\r\n tempPresentationList.sort(this.compare); // Ordenar los labels\r\n stateFiltros.presentationsList = tempPresentationList;\r\n this.tempPresentationList = [];\r\n\r\n this.setState(stateFiltros, () => this.sendFilters())\r\n }).catch(error => {\r\n this.setState(stateFiltros, () => this.sendFilters())\r\n });\r\n }else{ \r\n this.tempRecipeTypesList = [];\r\n this.tempFlavorsList = [];\r\n this.tempGrainList = [];\r\n this.tempMilkList = [];\r\n this.tempPresentationList = []; \r\n this.setState({\r\n recipeTypeList: lodash.cloneDeep(this.origRecipeTypesList),\r\n flavorsList: lodash.cloneDeep(this.origFlavorsList),\r\n grainsList: lodash.cloneDeep(this.origGrainsList),//Donde se va a guardar la lista original de granos\r\n milksList: lodash.cloneDeep(this.origMilksList),//Donde se va a guardar la lista original de leches\r\n presentationsList: lodash.cloneDeep(this.origPresentationList),//Donde se va a guardar la lista original de presentaciones\r\n selectedRecipeTypesList:[],\r\n selectedFlavorsList:[],\r\n selectedGrainsList:[],\r\n selectedMilksList:[],\r\n selectedPresentationsList:[],\r\n \r\n }, () => this.sendFilters())\r\n }\r\n }\r\n\r\n /**\r\n * Funcion para ordenar lexicograficamente\r\n * @param objA. primer operando\r\n * @param objB. segundo operando\r\n */\r\n compare = (objA, objB) => {\r\n // Use toUpperCase() to ignore character casing\r\n const labelA = objA.label.toUpperCase();\r\n const labelB = objB.label.toUpperCase();\r\n\r\n let comparison = 0;\r\n if (labelA > labelB) {\r\n comparison = 1;\r\n } else if (labelA < labelB) {\r\n comparison = -1;\r\n }\r\n return comparison;\r\n }\r\n\r\n render(){\r\n return(\r\n \r\n\r\n
    \r\n \r\n {\r\n if (this.state.noMulti) {\r\n arr = arr ? [arr] : []\r\n }\r\n this.tempSegmentationList = arr;\r\n this.handleSelectChangeSegmentation(arr, \"selectedSegmentationList\")\r\n }}\r\n noOptionsMessage={() => \"No hay opciones\"}\r\n options={this.state.segmentationList}\r\n isClearable={true}\r\n getOptionLabel={(segment) => segment.value === 1 ? \"Caffenio\"\r\n : segment.value === 9 ? \"Andatti\"\r\n : segment.value === 10 ? \"Momento Espresso\"\r\n : segment.value}\r\n />\r\n
    \r\n\r\n
    \r\n \r\n { \r\n if(this.state.noMulti){\r\n arr = arr ? [arr] : []\r\n }\r\n this.tempClassificationList = arr;\r\n this.handleClassificationChange(arr)\r\n }}\r\n noOptionsMessage={() => \"No hay opciones\"}\r\n options={this.state.classificationList}\r\n isClearable={true}\r\n isDisabled={!this.tempSegmentationList || this.tempSegmentationList.length === 0}\r\n />\r\n
    \r\n\r\n
    \r\n \r\n { \r\n if(this.state.noMulti){\r\n arr = arr ? [arr] : []\r\n }\r\n this.tempRecipeTypesList = arr;\r\n this.handleSelectChange(arr, \"selectedRecipeTypesList\") }}\r\n noOptionsMessage={() => \"No hay opciones\"}\r\n options={this.state.recipeTypeList}\r\n isClearable={true}\r\n isDisabled = { this.state.disabledByFamily && (!this.tempClassificationList || this.tempClassificationList.length === 0)}\r\n />\r\n
    \r\n\r\n {!this.state.noRecipeType &&
    \r\n \r\n { \r\n if(this.state.noMulti){\r\n arr = arr ? [arr] : []\r\n }\r\n this.tempFlavorsList = arr;\r\n this.handleSelectChange(arr, \"selectedFlavorsList\") }}\r\n noOptionsMessage={() => \"No hay opciones\"}\r\n options={this.state.flavorsList}\r\n isClearable={true}\r\n isDisabled = { this.state.disabledByFamily && (!this.tempClassificationList || this.tempClassificationList.length === 0)}\r\n />\r\n
    }\r\n \r\n {!this.state.noGrainType &&
    \r\n \r\n { \r\n if(this.state.noMulti){\r\n arr = arr ? [arr] : []\r\n }\r\n this.tempGrainList = arr;\r\n this.handleSelectChange(arr, \"selectedGrainsList\") }}\r\n noOptionsMessage={() => \"No hay opciones\"}\r\n options={this.state.grainsList}\r\n isClearable={true}\r\n isDisabled = { this.state.disabledByFamily && (!this.tempClassificationList || this.tempClassificationList.length === 0)}\r\n />\r\n
    }\r\n \r\n {!this.state.noMilkType &&
    \r\n \r\n { \r\n if(this.state.noMulti){\r\n arr = arr ? [arr] : []\r\n }\r\n this.tempMilkList = arr;\r\n this.handleSelectChange(arr, \"selectedMilksList\") }}\r\n noOptionsMessage={() => \"No hay opciones\"}\r\n options={this.state.milksList}\r\n isClearable={true}\r\n isDisabled = { this.state.disabledByFamily && (!this.tempClassificationList || this.tempClassificationList.length === 0)}\r\n />\r\n
    }\r\n\r\n {!this.state.noPresentation &&
    \r\n \r\n {\r\n if(this.state.noMulti){\r\n arr = arr ? [arr] : []\r\n } \r\n this.tempPresentationList = arr;\r\n this.handleSelectChange(arr, \"selectedPresentationsList\") }}\r\n noOptionsMessage={() => \"No hay opciones\"}\r\n options={this.state.presentationsList}\r\n isClearable={true}\r\n isDisabled = { this.state.disabledByFamily && (!this.tempClassificationList || this.tempClassificationList.length === 0)}\r\n />\r\n
    }\r\n\r\n
    \r\n )\r\n }\r\n}","import React, { Component } from 'react';\r\nimport SearchForm from \"../../util/searchform/SearchForm\";\r\nimport TableTemplate from \"../../util/tabletemplate/TableTemplate\";\r\nimport NoItems from \"../../util/noitems/NoItems\";\r\nimport Pagination from '../../util/pagination/Pagination';\r\nimport RecipesAPI from '../../../services/Recipe';\r\nimport { toast } from 'react-toastify';\r\nimport Loading from '../../util/loading/Loading';\r\nimport RecipeTypesAPI from '../../../services/RecipeType';\r\nimport PresentationsAPI from '../../../services/Presentations';\r\nimport MilksAPI from '../../../services/Milk';\r\nimport GrainsAPI from '../../../services/Grain';\r\nimport FlavorsAPI from '../../../services/Flavor';\r\nimport ClasificacionesAPI from '../../../services/Classification';\r\nimport Field from '../../util/field/Field';\r\n\r\nimport lodash, { forEach } from 'lodash';\r\n\r\nimport BtnModoGuiado from '../../util/BtnModoGuiado/BtnModoGuiado'\r\nimport Modal from '../../util/modal/Modal';\r\nimport RecipeImageForm from './RecipeImageForm';\r\nimport ErrorMessages from '../../../util/validation-error-messages';\r\nimport RecipeImageFilter from './RecipeImageFilter';\r\n\r\nclass RecipesImage extends Component {\r\n recipes = [];\r\n origRecipeTypesList = []; //Donde se va a guardar la lista original de tipos de receta\r\n origFlavorsList = []; //Donde se va a guardar la lista original de sabores\r\n origGrainsList = []; //Donde se va a guardar la lista original de granos\r\n origMilksList = []; //Donde se va a guardar la lista original de leches\r\n origPresentationList = []; //Donde se va a guardar la lista original de presentaciones\r\n\r\n // Variables donde se almacenaran los valores seleccionados en el select multi\r\n tempRecipeTypesList;\r\n tempPresentationList;\r\n tempMilkList;\r\n tempGrainList;\r\n tempFlavorsList;\r\n tempClassificationList;\r\n\r\n constructor(props){\r\n super(props);\r\n this.state = {\r\n recipes: [],\r\n filterText: \"\",\r\n recipe: null,\r\n pageRecipes: [],\r\n showModal: false,\r\n editing: false,\r\n removeModal: false,\r\n isLoading: false,\r\n syncModal: false,\r\n selectedRecipes: [],\r\n checkAll: false,\r\n syncMultiModal: false,\r\n // Variables sonde se almacenaran los criterios de busqueda definitivos\r\n recipeTypeList: [],\r\n selectedRecipeTypesList: [],\r\n presentationsList: [],\r\n selectedPresentationsList: [],\r\n milksList: [],\r\n selectedMilksList: [],\r\n grainsList: [],\r\n selectedGrainsList: [],\r\n flavorsList: [],\r\n selectedFlavorsList: [],\r\n classificationList: [],\r\n selectedClassificationList: [],\r\n selectedSegmentationList: [],\r\n manageToppingModal: false,\r\n addToppingModal: false,\r\n toppings: [],\r\n toppingError: false,\r\n menuRecetaModal: false,\r\n menuRecetaModalTitle: \"\",\r\n menuRecetaModalBody: \"\",\r\n menuRecetaCurrent: null,\r\n //Agregar artículos\r\n manageInventoryItemsModal:false,\r\n addInventoryItems:false,\r\n inventoryItems: [], \r\n inventoryItemsTemp: [], \r\n recipesToAddItems:[],\r\n inventoryItemsError:false,\r\n showInventoryItemsInfo:false\r\n }\r\n }\r\n\r\n componentDidMount(){\r\n this.setState({isLoading: true})\r\n let state = {...this.state};\r\n RecipesAPI.getAll().then(response => {\r\n state.recipes = response.data\r\n this.recipes = lodash.cloneDeep(response.data);\r\n\r\n // Obtener todos los tipos de recetas\r\n return RecipeTypesAPI.getAll()\r\n }).then(response => {\r\n let temp = [];\r\n \r\n response.data.map(obj => {\r\n if(obj.RecipeName) {\r\n obj.value= obj.RecipeTypeId;\r\n obj.label= obj.RecipeName;\r\n \r\n }else{\r\n obj.value= obj.RecipeTypeId;\r\n obj.label= obj.Description;\r\n \r\n }\r\n temp.push(obj)\r\n return obj;\r\n })\r\n temp.sort(this.compare); // Ordenar los labels para elegir\r\n state.recipeTypeList = temp;\r\n this.origRecipeTypesList = lodash.cloneDeep(temp)\r\n \r\n // Obtener todas las presentaciones\r\n return PresentationsAPI.getAll()\r\n }).then(response => {\r\n let tempPresentationList = [];\r\n response.data.map(obj => {\r\n if(obj.Active){\r\n obj.value= obj.PresentationId;\r\n obj.label= obj.Name;\r\n tempPresentationList.push(obj)\r\n return obj\r\n //\r\n } \r\n })\r\n tempPresentationList.sort(this.compare); // Ordenar los labels\r\n state.presentationsList = tempPresentationList\r\n this.origPresentationList = lodash.cloneDeep(tempPresentationList) \r\n \r\n // Obtener los sabores\r\n return FlavorsAPI.getAll()\r\n }).then(response => {\r\n let tempFlavorsList = [];\r\n response.data.map(obj => {\r\n obj.value= obj.FlavorTypeId;\r\n obj.label= obj.Name;\r\n tempFlavorsList.push(obj)\r\n return obj;\r\n \r\n })\r\n tempFlavorsList.sort(this.compare); // Ordenar los labels \r\n state.flavorsList = tempFlavorsList\r\n this.origFlavorsList = tempFlavorsList\r\n \r\n // Obtener las clasificaciones\r\n return ClasificacionesAPI.getAll()\r\n }).then(response => {\r\n let tempClassificationList = [];\r\n response.data.map(obj => {\r\n obj.value= obj.ClassificationId;\r\n obj.label= obj.Name;\r\n tempClassificationList.push(obj)\r\n return obj;\r\n })\r\n tempClassificationList.sort(this.compare); // Ordenar los labels\r\n state.classificationList = tempClassificationList\r\n \r\n // Guardar el estado\r\n this.setState(state)\r\n }).catch(err => {\r\n this.setState({isLoading: false})\r\n if(err.response)\r\n toast.error(err.response.data.Message)\r\n else\r\n toast.error(ErrorMessages.SinConexion)\r\n })\r\n }\r\n\r\n /**\r\n * Funcion para ordenar lexicograficamente\r\n * @param objA. primer operando\r\n * @param objB. segundo operando\r\n */\r\n compare = (objA, objB) => {\r\n // Use toUpperCase() to ignore character casing\r\n const labelA = objA.label.toUpperCase();\r\n const labelB = objB.label.toUpperCase();\r\n\r\n let comparison = 0;\r\n if (labelA > labelB) {\r\n comparison = 1;\r\n } else if (labelA < labelB) {\r\n comparison = -1;\r\n }\r\n return comparison;\r\n }\r\n\r\n // Método encargado de recibir el texto en el input de búsqueda y filtrar los elementos en\r\n // la tabla \r\n handleSearchInput = (text) => {\r\n let state = this.state;\r\n state.filterText = text;\r\n this.setState(state, this.handleSearchMultipleFieldInput);\r\n }\r\n\r\n /**\r\n *Realizar el filtrado sobre las recetas para desplegar solo los elementos\r\n *que cumplen con las caracteristicas que el usuario ingreso.\r\n * \r\n *@param: nada\r\n *@return: nada\r\n */\r\n handleSearchMultipleFieldInput = () => {\r\n let recipes = this.recipes.filter(\r\n recipe => ( \r\n (this.state.selectedRecipeTypesList.length > 0 ? \r\n this.state.selectedRecipeTypesList.includes(recipe.RecipeTypeId) : \r\n true) &&\r\n (this.state.selectedFlavorsList.length > 0 ? \r\n this.state.selectedFlavorsList.includes(recipe.FlavorTypeId) : \r\n true) &&\r\n (this.state.selectedPresentationsList.length > 0 ? \r\n this.state.selectedPresentationsList.includes(recipe.PresentationId) : \r\n true) &&\r\n (this.state.selectedMilksList.length > 0 ? \r\n this.state.selectedMilksList.includes(recipe.MilkTypeId) : \r\n true) &&\r\n (this.state.selectedGrainsList.length > 0 ? \r\n this.state.selectedGrainsList.includes(recipe.GrainTypeId) : \r\n true) &&\r\n (this.state.selectedClassificationList.length > 0 ? \r\n this.state.selectedClassificationList.includes(recipe.ClassificationId) : \r\n true) &&\r\n (this.state.selectedSegmentationList.length > 0 ?\r\n this.state.selectedSegmentationList.includes(recipe.idSegmento) :\r\n true ) &&\r\n (this.state.filterText.trim() !== '' ?\r\n ( (recipe.ShortName \r\n ? recipe.ShortName.toLowerCase().normalize(\"NFD\").replace(/[\\u0300-\\u036f]/g, \"\").includes(this.state.filterText.trim().toLowerCase().normalize(\"NFD\").replace(/[\\u0300-\\u036f]/g, \"\")) \r\n : false) \r\n || recipe.Description.toLowerCase().normalize(\"NFD\").replace(/[\\u0300-\\u036f]/g, \"\").includes(this.state.filterText.trim().toLowerCase().normalize(\"NFD\").replace(/[\\u0300-\\u036f]/g, \"\")))\r\n : true)\r\n )\r\n );\r\n \r\n let state = {...this.state};\r\n state.recipes = lodash.cloneDeep(recipes);\r\n state.recipes.map(r => {\r\n r.statusCheck =false\r\n });\r\n state.selectedRecipes = [];\r\n state.checkAll = false;\r\n this.setState(state);\r\n }\r\n\r\n edit = (recipe) => { \r\n this.props.history.push({pathname: `/recetas/editar/${recipe.RecipeId}`, state:{\r\n classifications: this.state.classificationList,\r\n presentations: this.state.presentationsList,\r\n flavors: this.state.flavorsList,\r\n milks: this.state.milksList,\r\n grains: this.state.grainsList,\r\n recipeTypes: this.state.recipeTypeList,\r\n lstRecipes:this.recipes\r\n }}); \r\n }\r\n\r\n /**\r\n *Modificar la lista de IDs con los que el usuario ha seleccionado. Aplica sobre los tipos de receta\r\n * \r\n *@param: arr: arreglo de valores que crea el select multi de react\r\n *@return: nada\r\n */\r\n handleRecipeTypeChange = (arr) => {\r\n let state = {...this.state}\r\n let tempSelectedRecipeTypesList = [];\r\n arr.map(obj => {\r\n tempSelectedRecipeTypesList.push(obj.value);\r\n })\r\n\r\n state.selectedRecipeTypesList = tempSelectedRecipeTypesList;\r\n state.selectedRecipes = [];\r\n state.pageRecipes.forEach(pageRecipe => pageRecipe.statusCheck = false);\r\n\r\n this.setState(state, () => {\r\n this.handleSearchMultipleFieldInput();\r\n });\r\n }\r\n\r\n /**\r\n *Modificar la lista de IDs con los que el usuario ha seleccionado. Aplica sobre los tipos de sabores\r\n * \r\n *@param: arr: arreglo de valores que crea el select multi de react\r\n *@return: nada\r\n */\r\n handleFlavorChange = (arr) => {\r\n let state = {...this.state}\r\n let tempSelectedFlavorList = [];\r\n arr.map(obj => {\r\n tempSelectedFlavorList.push(obj.value);\r\n })\r\n\r\n state.selectedFlavorsList = tempSelectedFlavorList;\r\n state.selectedRecipes = [];\r\n state.pageRecipes.forEach(pageRecipe => pageRecipe.statusCheck = false);\r\n\r\n this.setState(state, () => {\r\n this.handleSearchMultipleFieldInput();\r\n });\r\n }\r\n\r\n /**\r\n *Modificar la lista de IDs con los que el usuario ha seleccionado. Aplica sobre las presentaciones\r\n * \r\n *@param: arr: arreglo de valores que crea el select multi de react\r\n *@return: nada\r\n */\r\n handlePresentationChange = (arr) => {\r\n let state = {...this.state}\r\n let tempPresentationList = [];\r\n arr.map(obj => {\r\n tempPresentationList.push(obj.value);\r\n })\r\n\r\n state.selectedPresentationsList = tempPresentationList;\r\n state.selectedRecipes = [];\r\n state.pageRecipes.forEach(pageRecipe => pageRecipe.statusCheck = false);\r\n\r\n this.setState(state, () => {\r\n this.handleSearchMultipleFieldInput();\r\n });\r\n }\r\n\r\n /**\r\n *Modificar la lista de IDs con los que el usuario ha seleccionado. Aplica sobre los tipos de leche\r\n * \r\n *@param: arr: arreglo de valores que crea el select multi de react\r\n *@return: nada\r\n */\r\n handleMilkChange = (arr) => {\r\n let state = {...this.state}\r\n let tempMilksList = [];\r\n arr.map(obj => {\r\n tempMilksList.push(obj.value);\r\n })\r\n\r\n state.selectedMilksList = tempMilksList;\r\n state.selectedRecipes = [];\r\n state.pageRecipes.forEach(pageRecipe => pageRecipe.statusCheck = false);\r\n\r\n this.setState(state, () => {\r\n this.handleSearchMultipleFieldInput();\r\n });\r\n }\r\n\r\n /**\r\n *Modificar la lista de IDs con los que el usuario ha seleccionado. Aplica sobre los tipos de granos.\r\n * \r\n *@param: arr: arreglo de valores que crea el select multi de react\r\n *@return: nada\r\n */\r\n handleGrainChange = (arr) => {\r\n let state = {...this.state}\r\n let tempGrainList = [];\r\n arr.map(obj => {\r\n tempGrainList.push(obj.value);\r\n })\r\n\r\n state.selectedGrainsList = tempGrainList;\r\n state.selectedRecipes = [];\r\n state.pageRecipes.forEach(pageRecipe => pageRecipe.statusCheck = false);\r\n\r\n this.setState(state, () => {\r\n this.handleSearchMultipleFieldInput();\r\n });\r\n }\r\n\r\n /**\r\n *Modificar la lista de IDs con los que el usuario ha seleccionado. Aplica sobre las clasificaciones.\r\n * \r\n *@param: arr: arreglo de valores que crea el select multi de react\r\n *@return: nada\r\n */\r\n handleClassificationChange = (arr) => {\r\n let state = {...this.state}\r\n let tempClassificationList = [];\r\n arr.map(obj => {\r\n tempClassificationList.push(obj.value);\r\n })\r\n\r\n state.selectedClassificationList = tempClassificationList;\r\n state.selectedRecipes = [];\r\n // state.pageRecipes.forEach(pageRecipe => pageRecipe.statusCheck = false);\r\n\r\n this.setState(state, () => {\r\n this.handleSearchMultipleFieldInput();\r\n this.filterOptionsByClasification();\r\n });\r\n }\r\n\r\n /**\r\n * Filtra las opciones de los filtros(hehe) segun la clasificacion seleccionada.\r\n * Por ejemplo, seleccionó la Familia \"Chocolate\" entonces en el filtro de tipo de receta solo me tiene que aparecer \"Caliente\" y \"Frio\"\r\n */\r\n filterOptionsByClasification = () => {\r\n let clasificaciones = this.state.selectedClassificationList\r\n if(clasificaciones.length > 0 ){\r\n let stateFiltros = {}\r\n // Filtrar los tipos de receta\r\n RecipeTypesAPI.getByClasification(clasificaciones).then(response => {\r\n let temp = response.data.map(obj => {\r\n return {value: obj.RecipeTypeId, label: obj.RecipeName ? obj.RecipeName : obj.Description}\r\n })\r\n stateFiltros.recipeTypeList = temp\r\n \r\n // Filtrar los sabores\r\n return FlavorsAPI.getByClasification(clasificaciones)\r\n }).then(response => {\r\n let tempFlavorsList = response.data.map(obj => {\r\n return {value: obj.FlavorTypeId, label:obj.Name}\r\n })\r\n tempFlavorsList.sort(this.compare); // Ordenar los labels \r\n stateFiltros.flavorsList = tempFlavorsList\r\n \r\n // Filtrar los granos de cafe\r\n return GrainsAPI.getByClasification(clasificaciones)\r\n }).then(response => {\r\n let tempGrainList = response.data.map(obj => {\r\n return {value: obj.GrainTypeId, label: obj.Description}\r\n })\r\n tempGrainList.sort(this.compare); // Ordenar los labels\r\n stateFiltros.grainsList = tempGrainList\r\n \r\n // Filtrar los tipos de leche\r\n return MilksAPI.getByClasification(clasificaciones)\r\n })\r\n .then(response => {\r\n let tempMilkList = response.data.map(obj => {\r\n return {value: obj.MilkTypeId, label: obj.Description}\r\n })\r\n tempMilkList.sort(this.compare); // Ordenar los labels\r\n stateFiltros.milksList = tempMilkList\r\n \r\n // Filtrar las presentaciones\r\n return PresentationsAPI.getByClasification(clasificaciones)\r\n }).then(response => {\r\n let tempPresentationList = response.data.map(obj => {\r\n return {value: obj.PresentationId, label: obj.Name}\r\n })\r\n tempPresentationList.sort(this.compare); // Ordenar los labels\r\n stateFiltros.presentationsList = tempPresentationList\r\n\r\n this.setState(stateFiltros)\r\n })\r\n }else{\r\n this.setState({\r\n recipeTypeList: lodash.cloneDeep(this.origRecipeTypesList),\r\n flavorsList: lodash.cloneDeep(this.origFlavorsList),\r\n grainsList: lodash.cloneDeep(this.origGrainsList),//Donde se va a guardar la lista original de granos\r\n milksList: lodash.cloneDeep(this.origMilksList),//Donde se va a guardar la lista original de leches\r\n presentationList: lodash.cloneDeep(this.origPresentationList)//Donde se va a guardar la lista original de presentaciones\r\n })\r\n }\r\n }\r\n\r\n handleSelectChange = (objFilters) => {\r\n this.setState(objFilters, () => {this.handleSearchMultipleFieldInput();})\r\n }\r\n\r\n /**\r\n * Funcion que se ejecuta al cambiar la pagina del tablero\r\n */\r\n changeRecipePage = (recipes) => {\r\n let recipesChecked = 0\r\n let checkAll = false\r\n // recipes.forEach(item => {\r\n // if(this.state.selectedRecipes.findIndex(id => id === item.RecipeId) !== -1)\r\n // recipesChecked++\r\n // })\r\n // if(recipesChecked === recipes.length) checkAll = true \r\n\r\n this.setState({ pageRecipes: recipes, checkAll: checkAll })\r\n }\r\n \r\n render() {\r\n return (\r\n
    \r\n

    Administrar Imágenes

    \r\n
    \r\n
    \r\n {/*
    \r\n
    \r\n
    \r\n
    \r\n this.handleSearchInput(t)}\r\n itemName={'Receta'}\r\n placeholderText={\"Ingrese descripción y nombre corto de receta\"}\r\n />\r\n
    \r\n
    \r\n
    \r\n
    */}\r\n
    \r\n
    \r\n\r\n {/* Filtro multiple para recetas */}\r\n
    \r\n
    \r\n
    \r\n
    \r\n
    \r\n \r\n
    \r\n
    \r\n
    \r\n {this.handleSelectChange(objFilters)}}\r\n />\r\n\r\n
    \r\n
    \r\n
    \r\n\r\n
    \r\n \r\n
    \r\n
    \r\n {/* Botones del header de la tabla */}\r\n
    \r\n {/* Todos los resultados */}\r\n
    \r\n {this.state.selectedClassificationList.length > 0 ? `Total de registros: ${this.state.recipes.length} Receta(s)` :''}\r\n
    \r\n\r\n {this.state.recipes.length > 0 &&\r\n
    \r\n {/* Imagenes por tamaño, sabor, tipo de receta */}\r\n { this.state.selectedClassificationList.length === 1\r\n && this.state.selectedRecipeTypesList.length > 0 \r\n && this.state.selectedPresentationsList.length > 0\r\n && this.setState({imageFormModal: true, action: \"Presentación\"})}\r\n data-tooltip=\"+ Imágenes presentación\"\r\n >\r\n \r\n \r\n \r\n Presentación\r\n \r\n }\r\n { this.state.selectedClassificationList.length === 1 \r\n && this.state.selectedRecipeTypesList.length > 0 \r\n && this.state.selectedFlavorsList.length > 0\r\n && this.setState({imageFormModal: true, action: \"Tipo Sabor\"})}\r\n data-tooltip=\"+ Imágenes tipo sabor\"\r\n >\r\n \r\n \r\n \r\n Tipo sabor\r\n \r\n }\r\n { this.state.selectedClassificationList.length === 1 \r\n && this.state.selectedRecipeTypesList.length > 0\r\n && this.setState({imageFormModal: true, action: \"Tipo Receta\"})}\r\n data-tooltip=\"+ Imágenes tipo receta\"\r\n >\r\n \r\n \r\n \r\n Tipo Receta\r\n \r\n }\r\n \r\n\r\n \r\n\r\n \r\n
    \r\n }\r\n
    \r\n {this.state.recipes.length !== 0 \r\n ? this.setState({imageViewModal:true, selectedRecipes:recipe})} \r\n /> \r\n : }\r\n this.changeRecipePage(recipes) } />\r\n
    \r\n
    \r\n \r\n {/* Modales */}\r\n\r\n\r\n {/* Modal para editar imagen del sabor de la receta y el nombre corto */}\r\n {this.state.imageFormModal && \r\n 0 \r\n ? this.state.classificationList.filter(c => c.ClassificationId == this.state.selectedClassificationList[0])[0].label \r\n :''\r\n } \r\n ${this.state.selectedRecipeTypesList.length > 0 \r\n ? this.origRecipeTypesList.filter(r => r.RecipeTypeId === this.state.selectedRecipeTypesList[0])[0].label : ''} \r\n ${this.state.selectedFlavorsList.length > 0\r\n ? this.origFlavorsList.filter(f => f.FlavorTypeId === this.state.selectedFlavorsList[0])[0].label:''}\r\n ${this.state.selectedPresentationsList.length > 0\r\n ? this.origPresentationList.filter(p => p.PresentationId === this.state.selectedPresentationsList[0] )[0].label: ''}`}\r\n cancel={() => this.setState({ imageFormModal: false })}\r\n width=\"50%\"\r\n >\r\n this.setState({imageFormModal: false, isLoading: false, action:\"\"})} \r\n save = {(image) => {\r\n this.setState({isLoading:true}, () => {\r\n switch(this.state.action){\r\n case \"Presentación\":\r\n RecipesAPI.editPresentacionWithFormData(this.state.recipes, image)\r\n .then(response => {\r\n \r\n // replace recipes , page recipes \r\n if (response.data) { \r\n let state = {...this.state};\r\n state.pageRecipes = response.data;\r\n state.recipes = response.data;\r\n\r\n response.data.forEach(item => { \r\n let index = -1;\r\n this.recipes.map((element, indx) => {\r\n if(element.RecipeId === item.RecipeId){\r\n index = indx\r\n }}); \r\n if(index > -1){\r\n this.recipes[index] = item;\r\n } \r\n })\r\n this.setState(state)\r\n }\r\n \r\n toast.dismiss();\r\n toast.success(\"Imágenes actualizada(s) correctamente.\");\r\n \r\n })\r\n .catch(err => {\r\n toast.dismiss();\r\n if (err.response)\r\n toast.error(err.response.data.Message)\r\n else\r\n toast.error(ErrorMessages.SinConexion)\r\n\r\n })\r\n .finally(() => {\r\n this.setState({ imageFormModal: false, isLoading: false, action:\"\" })\r\n })\r\n break;\r\n case \"Tipo Receta\":\r\n RecipesAPI.editTipoRecetaWithFormData(this.state.recipes, image)\r\n .then(response => {\r\n // replace recipes , page recipes \r\n if (response.data) { \r\n let state = {...this.state};\r\n state.pageRecipes = response.data;\r\n state.recipes = response.data;\r\n\r\n response.data.forEach(item => { \r\n let index = -1;\r\n this.recipes.map((element, indx) => {\r\n if(element.RecipeId === item.RecipeId){\r\n index = indx\r\n }}); \r\n if(index > -1){\r\n this.recipes[index] = item;\r\n } \r\n })\r\n this.setState(state)\r\n }\r\n toast.dismiss();\r\n toast.success(\"Imágenes actualizada(s) correctamente.\");\r\n \r\n })\r\n .catch(err => {\r\n toast.dismiss();\r\n if (err.response)\r\n toast.error(err.response.data.Message)\r\n else\r\n toast.error(ErrorMessages.SinConexion)\r\n\r\n })\r\n .finally(() => {\r\n this.setState({ imageFormModal: false, isLoading: false, action:\"\" })\r\n })\r\n break;\r\n case \"Tipo Sabor\":\r\n RecipesAPI.editTipoSaborWithFormData(this.state.recipes, image)\r\n .then(response => {\r\n // replace recipes , page recipes \r\n if (response.data) { \r\n let state = {...this.state};\r\n state.pageRecipes = response.data;\r\n state.recipes = response.data;\r\n\r\n response.data.forEach(item => { \r\n let index = -1;\r\n this.recipes.map((element, indx) => {\r\n if(element.RecipeId === item.RecipeId){\r\n index = indx\r\n }}); \r\n if(index > -1){\r\n this.recipes[index] = item;\r\n } \r\n })\r\n this.setState(state)\r\n }\r\n toast.dismiss();\r\n toast.success(\"Imágenes actualizada(s) correctamente.\");\r\n \r\n })\r\n .catch(err => {\r\n toast.dismiss();\r\n if (err.response)\r\n toast.error(err.response.data.Message)\r\n else\r\n toast.error(ErrorMessages.SinConexion)\r\n\r\n })\r\n .finally(() => {\r\n this.setState({ imageFormModal: false, isLoading: false, action:\"\" })\r\n })\r\n break;\r\n }\r\n \r\n\r\n })\r\n \r\n\r\n }} \r\n />\r\n \r\n }\r\n\r\n {this.state.imageViewModal && \r\n this.setState({ imageViewModal: false, selectedRecipes:null })}\r\n width=\"50%\"\r\n >\r\n
    \r\n\r\n
    \r\n {this.state.selectedRecipes.UrlImage && this.state.selectedRecipes.UrlImage.length > 0\r\n ? \r\n
    \r\n
    \r\n \"\"\r\n
    \r\n
    \r\n \r\n : }\r\n
    \r\n
    \r\n {this.state.selectedRecipes.URLTipoReceta && this.state.selectedRecipes.URLTipoReceta.length > 0\r\n ? \r\n
    \r\n
    \r\n \"\"\r\n
    \r\n
    \r\n
    \r\n : }\r\n
    \r\n
    \r\n {this.state.selectedRecipes.URLPresentacion && this.state.selectedRecipes.URLPresentacion.length > 0\r\n ? \r\n
    \r\n
    \r\n \"\"\r\n
    \r\n
    \r\n
    \r\n : }\r\n
    \r\n
    \r\n \r\n }\r\n \r\n \r\n\r\n \r\n\r\n
    \r\n );\r\n }\r\n}\r\n\r\nexport default RecipesImage;\r\n","import React from 'react';\r\nimport PropTypes from 'prop-types';\r\n\r\n/**\r\n * Componente de utilería que sirve para el desplegado de un input dropdown para la selección de uno \r\n * o más elemento de un arreglo.\r\n */\r\n\r\nclass Dropdown extends React.Component{\r\n render(){\r\n return (\r\n {\r\n let index = e.target.selectedIndex;\r\n if(!this.props.single) e.target.selectedIndex = 0;\r\n this.props.onSelect(index);\r\n }}>\r\n \r\n {this.props.items && this.props.items.map((item, index) => {\r\n return (\r\n \r\n )\r\n })}\r\n \r\n )\r\n }\r\n}\r\n\r\n// Definición de los tipos y su dependencia de las distintas props que recibe el componente.\r\nDropdown.propTypes = {\r\n items: PropTypes.arrayOf(PropTypes.object),\r\n labelKey: PropTypes.string.isRequired,\r\n onSelect: PropTypes.func.isRequired,\r\n id: PropTypes.string,\r\n single: PropTypes.bool,\r\n disabled: PropTypes.bool,\r\n disabledFirstSelect: PropTypes.bool\r\n}\r\n\r\n// Definición de los valores por default de las props en caso de no ser recibidas por el padre.\r\nDropdown.defaultProps = {\r\n items: [],\r\n labelKey: \"name\",\r\n id: \"id\",\r\n single: false,\r\n disabled: false,\r\n disabledFirstSelect: false\r\n}\r\n\r\nexport default Dropdown;\r\n","import React, { Component } from 'react'\r\nimport PropTypes from 'prop-types'\r\nimport Loading from '../../../util/loading/Loading';\r\nimport AcceptModal from '../../../util/acceptModal/AcceptModal';\r\nimport { toast } from 'react-toastify';\r\n\r\n\r\n\r\n/**\r\n * Componente para visualizar drives donde aplica el articulo inventario. \r\n */\r\nexport default class RecipeDrivesDetail extends Component {\r\n\r\n state = {\r\n searchText: \"\",\r\n searchResultDetails: [],\r\n allData: [],\r\n isLoading: false,\r\n showThead: true,\r\n checkAll: false,\r\n indexToRemoveArray : [],\r\n itemToRemove:{}\r\n }\r\n\r\n\r\n componentDidMount() {\r\n // Al iniciar empata el listado original al filtrado\r\n let detailList = this.props.detail.map(d => {\r\n let drive = this.props.caffenios.filter(dr=> dr.idCaffenio === d);\r\n return {\r\n idDrive: drive[0].idCaffenio,\r\n idCaffenio:drive[0].idCaffenio,\r\n checked:false,\r\n DriveEstado:drive[0].State,\r\n DriveMunicipio:drive[0].Municipality,\r\n DriveNombre:drive[0].Name ,\r\n idEstado: drive[0].idEstado,\r\n idMunicipio: drive[0].idMunicipio, \r\n }\r\n })\r\n this.setState({ searchResultDetails:detailList , allData: detailList, checkAll: false });\r\n }\r\n\r\n /** Función para filtrar por el texto ingresado */\r\n onSearch = () => {\r\n let state = { ...this.state };\r\n\r\n state.searchResultDetails = state.searchText == null || state.searchText.trim().length === 0\r\n ? state.allData\r\n : state.allData.filter(d => {\r\n d.checked = false;\r\n let searchText = this.eliminarDiacriticos(state.searchText ? state.searchText.trim() : \"\");\r\n let driveNombre = this.eliminarDiacriticos(d.DriveNombre ? d.DriveNombre.trim() : \"\");\r\n let driveEstado = this.eliminarDiacriticos(d.DriveEstado ? d.DriveEstado.trim(): \"\"); \r\n let driveMunicipio = this.eliminarDiacriticos(d.DriveMunicipio ? d.DriveMunicipio.trim() : \"\");\r\n return driveNombre.includes(searchText) ||\r\n driveEstado.includes(searchText) ||\r\n driveMunicipio.includes(searchText)\r\n });\r\n \r\n state.checkAll = false;\r\n state.isLoading = false;\r\n state.indexToRemoveArray = []; \r\n\r\n this.setState(state);\r\n }\r\n\r\n /**\r\n * Selecciona o des-seleccion un registro y actualiza el state\r\n */\r\n selectItem = (index) => { \r\n let state = { ...this.state };\r\n state.searchResultDetails[index].checked = !state.searchResultDetails[index].checked;\r\n state.indexToRemoveArray.push(index);\r\n this.setState(state);\r\n }\r\n\r\n /**\r\n * Quita los drives seleccionados de la relacion con el articulo inventario\r\n */\r\n onRemoveSelected = () => {\r\n let state = {...this.state};\r\n\r\n let itemsToRemove = state.searchResultDetails.filter(f => f.checked);\r\n state.searchResultDetails = state.searchResultDetails.filter(f => !f.checked);\r\n // state.allData = state.allData.filter(all => {\r\n // if(!itemsToRemove.some(toRm => toRm.RecipeDetailId === all.RecipeDetailId))\r\n // return all;\r\n\r\n // }); \r\n \r\n itemsToRemove.forEach(element => {\r\n this.props.removeDetail(element);\r\n }); \r\n \r\n state.removeMany = false;\r\n state.removeModal = false;\r\n state.checkAll = false;\r\n state.indexToRemoveArray=[];\r\n this.setState(state, () => toast.success(\"Detalle eliminado\")); \r\n }\r\n\r\n /**\r\n * Quita desde la selección del action\r\n */\r\n onRemoveAction = () => { \r\n let state = { ...this.state };\r\n state.removeModal = false; \r\n let indexToRm = state.searchResultDetails.indexOf(state.itemToRemove);\r\n state.searchResultDetails.splice(indexToRm, 1); \r\n\r\n this.setState(state, () => {\r\n try {\r\n this.props.removeDetail(state.itemToRemove);\r\n this.setState({itemToRemove:{}})\r\n toast.success(\"Detalle eliminado\");\r\n } catch (error) {\r\n toast.error(\"Ocurrió un error al quitar drive de listado.\")\r\n }\r\n });\r\n }\r\n\r\n /**\r\n * Elimina por indices, se ejecuta cuando la receta es nueva \r\n */\r\n onRemoveByIndex = () => {\r\n let state = {...this.state};\r\n state.removeModal = false;\r\n\r\n state.indexToRemoveArray.forEach(index => {\r\n let item = this.state.searchResultDetails[index]; \r\n state.allData = state.allData.filter(all => all.idCaffenio !== item.idCaffenio); \r\n state.searchResultDetails = state.searchResultDetails.filter(f => f.idCaffenio !== item.idCaffenio);\r\n \r\n this.props.removeDetail(item.idCaffenio); \r\n });\r\n \r\n state.indexToRemoveArray = [];\r\n state.checkAll = false;\r\n this.setState(state, () => toast.success(\"Drive eliminado\"));\r\n\r\n\r\n }\r\n\r\n eliminarDiacriticos= (texto) => {\r\n return texto.toLowerCase().normalize('NFD').replace(/[\\u0300-\\u036f]/g,\"\");\r\n }\r\n\r\n render() {\r\n return (\r\n
    \r\n
    \r\n
    \r\n this.setState({ searchText: e.currentTarget.value, isLoading: true, showThead: true }, () => this.onSearch())}\r\n />\r\n
    \r\n {\r\n //Botón eliminar seleccionado \r\n (this.state.checkAll || this.state.searchResultDetails.filter(s => s.checked).length > 0) &&\r\n \r\n }\r\n\r\n\r\n
    \r\n {!this.state.isLoading &&\r\n \r\n {this.state.showThead &&\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n }\r\n \r\n {this.state.searchResultDetails.map((detail, i) => {\r\n // Elementos que se muestran en el modal de detalles displonibles \r\n return (\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n )\r\n })}\r\n \r\n
    \r\n this.setState({ checkAll: !this.state.checkAll }, () => {\r\n let list = [];\r\n let newResult = this.state.searchResultDetails.map((r, index) => {\r\n r.checked = this.state.checkAll; \r\n if(r.checked){\r\n list.push(index);\r\n } \r\n return r;\r\n });\r\n\r\n this.setState({ searchResultDetails: newResult, indexToRemoveArray: this.state.checkAll ? list : [] })\r\n })}\r\n checked={this.state.checkAll} type=\"checkbox\" />EstadoCiudadDriveAcciones
    \r\n {\r\n e.stopPropagation();\r\n this.selectItem(i);\r\n }} />\r\n {detail.DriveEstado}{detail.DriveMunicipio}{detail.DriveNombre}{\r\n detail.checked\r\n ? \"\"\r\n : {\r\n e.stopPropagation(); \r\n // let new_list = this.state.indexToRemoveArray;\r\n // new_list.push(i);\r\n this.setState({ removeModal: true, recipeDetailId: detail.RecipeDetailId, itemToRemove : detail, removeMany: false\r\n // , indexToRemoveArray: new_list \r\n });\r\n }\r\n }>\r\n \r\n \r\n \r\n \r\n }\r\n\r\n
    \r\n }\r\n
    \r\n
    \r\n \r\n
    \r\n
    \r\n\r\n {this.state.removeModal && (this.state.removeMany ? this.onRemoveSelected() : this.onRemoveAction())\r\n // !this.props.isNewRecipe\r\n // ? (this.state.removeMany ? this.onRemoveSelected() : this.onRemoveAction())\r\n // : this.onRemoveByIndex()\r\n }\r\n cancel={() => this.setState({ removeModal: false , removeMany: false, itemToRemove:{} })}\r\n modalTitle={\"Eliminar artículo inventario\"}\r\n />}\r\n
    \r\n )\r\n }\r\n}\r\n\r\nRecipeDrivesDetail.defaultProps = {\r\n //listado de drives \r\n detail: PropTypes.array.isRequired,\r\n removeDetail: PropTypes.func.isRequired,\r\n isNewRecipe: PropTypes.bool,\r\n caffenios: PropTypes.array.isRequired\r\n\r\n}\r\n\r\nRecipeDrivesDetail.defaultProps = {\r\n detail: [],\r\n caffenios:[],\r\n removeDetail: () => { },\r\n isNewRecipe: false\r\n}","import React, { Component } from 'react';\r\nimport Modal from '../../../util/modal/Modal';\r\nimport Dropdown from '../../../util/dropdown/Dropdown';\r\nimport Field from '../../../util/field/Field';\r\n//import { toast } from 'react-toastify';\r\nimport Loading from '../../../util/loading/Loading';\r\nimport RecipeDetails from './RecipeDetails';\r\nimport NewRecipeDetail from './NewRecipeDetail';\r\nimport { toast } from 'react-toastify';\r\nimport AcceptModal from '../../../util/acceptModal/AcceptModal';\r\nimport './recipeFormStyle.css';\r\nimport WarehouseAPI from '../../../../services/Warehouse';\r\nimport to from '../../../../util/to'\r\nimport RecipeToppings from './RecipeToppings';\r\nimport Select from 'react-select';\r\nimport RecipeDrivesDetail from './RecipeDrivesDetail';\r\n\r\nclass RecipeForm extends Component {\r\n\r\n constructor(props) {\r\n super(props);\r\n this.state = {\r\n recipe: { ...this.props.recipe },\r\n isEditing: false,\r\n classifications: { ...this.props.recipe },\r\n flavors: { ...this.props.flavors },\r\n grains: { ...this.props.grains },\r\n milks: { ...this.props.milks },\r\n presentations: { ...this.props.presentations },\r\n recipeTypes: { ...this.props.recipeTypes },\r\n satClassifications: { ...this.props.satClassifications },\r\n satCodes: { ...this.props.satCodes },\r\n isLoading: false,\r\n detailModal: false,\r\n removeModal: false,\r\n details: [],\r\n units: [],\r\n idRecipeDetail: null,\r\n mostrarDrivesModal: false,\r\n recipeDetail: {},\r\n toppingModal: false,\r\n // Estados para el modal de drives\r\n Caffenios: { ...this.props.Caffenios },\r\n optionState: Object.values({ ...this.props.optionState }),\r\n optionCity: Object.values({ ...this.props.optionCity }),\r\n optionDrive: [],\r\n selectedOption: [],\r\n selectedOptionC: [],\r\n selectedOptionD: [],\r\n }\r\n //console.log(this.props);\r\n }\r\n\r\n componentDidMount() {\r\n this.getDrives()\r\n }\r\n\r\n componentDidUpdate(prevProps) {\r\n if (!prevProps.recipe.RecipeId && this.props.recipe.RecipeId) {\r\n let state = { ...this.state };\r\n state.recipe = { ...this.props.recipe }\r\n this.setState(state);\r\n }\r\n }\r\n\r\n handleDropdownChange = (index, itemName, propName) => {\r\n\r\n let item = this.props[itemName][index];\r\n let state = { ...this.state };\r\n state.recipe[propName] = index === 0 ? 0 : item[propName];\r\n this.setState(state/*, () => console.log(this.state.recipe)*/);\r\n }\r\n\r\n // Método para realizar los cambios en el estado del campo correspondiente a un \r\n handleChange = (e) => {\r\n let state = { ...this.state };\r\n state.recipe[e.target.name] = e.target.value;\r\n this.setState(state);\r\n\r\n if (e.target.name == \"ShortName\") {\r\n let diferencia = 30 - e.target.value.length;\r\n if (diferencia == 30) {\r\n document.getElementById(\"labelShortName\").style.display = \"none\";\r\n } else {\r\n document.getElementById(\"labelShortName\").style.display = \"block\";\r\n document.getElementById(\"labelShortName\").innerHTML = \"Te quedan \" + diferencia.toString() + \" caracteres para el nombre corto\";\r\n }\r\n }\r\n }\r\n\r\n onKeyPressNumber(event) {\r\n const keyCode = event.keyCode || event.which;\r\n const keyValue = String.fromCharCode(keyCode);\r\n if (/'/.test(keyValue) || event.target.value.length >= event.target.getAttribute('maxLength'))\r\n event.preventDefault();\r\n }\r\n\r\n /** Quita articulo inventario de todos los drives */\r\n removeDetail = () => {\r\n let state = { ...this.state };\r\n let index = state.idRecipeDetail;\r\n let itemToRemove = state.recipe.DetailsGroupBy[index];\r\n\r\n state.recipe.DetailsGroupBy.splice(index, 1);\r\n\r\n if(itemToRemove && itemToRemove.driveList){\r\n itemToRemove.driveList.forEach(element => {\r\n state.recipe.Details = state.recipe.Details.filter(d => d.RecipeDetailId !== element.RecipeDetailId);\r\n });\r\n } \r\n\r\n state.removeModal = false;\r\n state.idRecipeDetail = null;\r\n this.setState(state);\r\n toast.success(\"Detalle eliminado\");\r\n }\r\n\r\n /** Quita articulo inventario de los drive's seleccionados */\r\n removeDriveDetail = (recipeDetailId) => {\r\n \r\n let state = { ...this.state };\r\n state.recipe.Details = state.recipe.Details.filter(d => d.RecipeDetailId !== recipeDetailId);\r\n state.recipe.DetailsGroupBy = state.recipe.DetailsGroupBy.map(group =>{\r\n group.driveList = group.driveList.filter(dl => dl.RecipeDetailId !== recipeDetailId);\r\n\r\n return group;\r\n })\r\n this.setState(state); \r\n }\r\n\r\n /** Función para cambiar la cantidad de un articulo inventario a la receta */\r\n quantityChanged = (nuevaCantidad) => {\r\n let state = { ...this.state };\r\n let index = state.idRecipeDetail;\r\n let itemsToUpdate = state.recipe.DetailsGroupBy[index];\r\n\r\n state.recipe.DetailsGroupBy[index].Amount = nuevaCantidad;\r\n if (nuevaCantidad != null && nuevaCantidad.trim().length > 0 && parseFloat(nuevaCantidad.trim()) > 0) { \r\n if(itemsToUpdate && itemsToUpdate.driveList){\r\n state.recipe.Details.map(d => {\r\n if (itemsToUpdate.driveList.some(i => i.RecipeDetailId === d.RecipeDetailId)) {\r\n d.Amount = nuevaCantidad\r\n }\r\n return d;\r\n }); \r\n }\r\n \r\n state.idRecipeDetail = null;\r\n this.setState(state); \r\n toast.success(\"Cantidad modificada\"); \r\n } else if (nuevaCantidad === null || nuevaCantidad.trim().length === 0){\r\n this.setState(state); \r\n }\r\n }\r\n\r\n /*Funcion para obtenr las ciudades que se pone en el set stae */\r\n getDrives = async () => {\r\n let err, caffenios;\r\n [err, caffenios] = await to(WarehouseAPI.getCaffenios());\r\n\r\n this.setState({\r\n optionDrive: this.select_Drive(caffenios),\r\n })\r\n }\r\n\r\n select_state(Caffenios) { // Llenar el combo 'Estados' con todas las opciones \r\n var newArray = [];\r\n let OptionSelect = [];\r\n var lookupObject = {};\r\n\r\n Caffenios.map((item) => {\r\n OptionSelect.push({ value: item.StateId, label: item.State });\r\n });\r\n\r\n for (var i in OptionSelect) {\r\n lookupObject[OptionSelect[i][\"value\"]] = OptionSelect[i];\r\n }\r\n\r\n for (i in lookupObject) {\r\n newArray.push(lookupObject[i]);\r\n }\r\n\r\n return newArray;\r\n }\r\n\r\n select_city(Caffenios) { // Llenar el combo 'Ciudades' con todas las opciones \r\n var newArray = [];\r\n let OptionSelectCity = [];\r\n var lookupObject = {};\r\n\r\n Caffenios.map((item) => {\r\n OptionSelectCity.push({ value: item.Municipalityid, label: item.Municipality });\r\n });\r\n\r\n for (var i in OptionSelectCity) {\r\n lookupObject[OptionSelectCity[i][\"value\"]] = OptionSelectCity[i];\r\n }\r\n\r\n for (i in lookupObject) {\r\n newArray.push(lookupObject[i]);\r\n }\r\n\r\n return newArray;\r\n }\r\n\r\n select_Drive(Caffenios) { // Llenar el combo 'Drives' con todas las opciones \r\n var newArray = [];\r\n let OptionSelectDrive = [];\r\n var lookupObject = {};\r\n Caffenios.map((item) => {\r\n OptionSelectDrive.push({ value: item.idCaffenio, label: item.NombreNuevo });\r\n });\r\n\r\n for (var i in OptionSelectDrive) {\r\n lookupObject[OptionSelectDrive[i][\"value\"]] = OptionSelectDrive[i];\r\n }\r\n\r\n for (i in lookupObject) {\r\n newArray.push(lookupObject[i]);\r\n }\r\n\r\n return newArray;\r\n }\r\n\r\n changeSelectEstado = (obj) => {\r\n\r\n let state = { ...this.state }\r\n state[\"selectedOption\"] = obj;\r\n let idEstado = obj.map(estado => { return estado.value });\r\n let objCaffenios = Object.values(state.Caffenios);\r\n let listaCiudades = [];\r\n let listaDrives = [];\r\n\r\n // Recorrer objeto Caffenios y encontrar coincidencias sin eliminar duplicados\r\n objCaffenios.map(item => {\r\n for (var i = 0; i < idEstado.length; i++) {\r\n if (item.StateId === idEstado[i]) {\r\n listaCiudades.push({ \"value\": item.Municipalityid, \"label\": item.Municipality });\r\n }\r\n }\r\n })\r\n //Se eliminan las ciudades duplicadas\r\n let eliminarDuplicados = this.eliminarObjDuplicados(listaCiudades, \"value\");\r\n //Se obtiene un arreglo con los id de las ciudades\r\n let idCiudad = eliminarDuplicados.map(ciudad => { return ciudad.value });\r\n\r\n //Se buscan coincidencias entre ciudad y drive y se genera la lista de drives\r\n objCaffenios.map(item => {\r\n for (var i = 0; i < idCiudad.length; i++) {\r\n if (item.Municipalityid === idCiudad[i]) {\r\n listaDrives.push({ \"value\": item.idCaffenio, \"label\": item.NombreNuevo });\r\n }\r\n }\r\n })\r\n\r\n //Se limpian los combos 'Ciudades' y 'Drives'\r\n state[\"selectedOptionC\"] = [];\r\n state[\"selectedOptionD\"] = [];\r\n\r\n //Se valida que haya una opción seleccionada en combo 'Estados'\r\n if (obj.length === 0) {\r\n state[\"optionCity\"] = this.select_city(Object.values(state.Caffenios));\r\n state[\"optionDrive\"] = this.select_Drive(Object.values(state.Caffenios));\r\n\r\n } else {\r\n state[\"optionCity\"] = eliminarDuplicados;\r\n state[\"optionDrive\"] = listaDrives;\r\n }\r\n this.setState(state);\r\n /*\r\n if(state[\"selectedOptionD\"].length===0){\r\n driveIds = state[\"optionDrive\"].map(obj => {\r\n return obj.value;\r\n })\r\n } else{\r\n driveIds = state[\"selectedOptionD\"].map(obj => {\r\n return obj.value;\r\n })\r\n }*/\r\n\r\n //this.setState(state, () => this.FilterProcess());\r\n\r\n }\r\n\r\n changeSelectCiudad = (obj) => {\r\n let state = { ...this.state }\r\n let idCiudad = obj.map(ciudad => { return ciudad.value });\r\n let objCaffenios = Object.values(state.Caffenios);\r\n let listaDrives = [];\r\n\r\n //Se buscan coincidencias entre ciudad y drive y se genera la lista de drives\r\n objCaffenios.map(item => {\r\n for (var i = 0; i < idCiudad.length; i++) {\r\n if (item.Municipalityid === idCiudad[i]) {\r\n listaDrives.push({ \"value\": item.idCaffenio, \"label\": item.NombreNuevo });\r\n }\r\n }\r\n })\r\n\r\n //Se limpia el combo 'Drives'\r\n state[\"selectedOptionD\"] = [];\r\n\r\n //Se valida que haya una opción seleccionada en combo 'Ciudades'\r\n if (obj.length > 0) {\r\n state[\"selectedOptionC\"] = obj;\r\n state[\"optionDrive\"] = listaDrives;\r\n //this.setState(state, () => this.FilterProcess());\r\n } else {\r\n this.changeSelectEstado(state[\"selectedOption\"]);\r\n }\r\n this.setState(state);\r\n\r\n }\r\n\r\n changeSelectDrive = (obj) => {\r\n let state = { ...this.state };\r\n let Caffenios = Object.values(state.Caffenios);\r\n //Valida cada select (Estados,Ciudades,Drives) y realiza la acción correspondiente\r\n if (obj.length > 0) {\r\n state[\"selectedOptionD\"] = obj;\r\n //this.setState(state, () => this.FilterProcess());\r\n } else if (state[\"selectedOptionC\"].length === 0) {\r\n this.changeSelectEstado(state[\"selectedOption\"]);\r\n state[\"selectedOptionD\"] = [];\r\n } else if (state[\"selectedOptionC\"].length === 0 && state[\"selectedOption\"].length === 0) {\r\n this.select_Drive(Caffenios);\r\n this.select_Drive(Caffenios);\r\n this.select_Drive(Caffenios);\r\n state[\"selectedOptionD\"] = [];\r\n } else {\r\n this.changeSelectCiudad(state[\"selectedOptionC\"]);\r\n state[\"selectedOptionD\"] = [];\r\n }\r\n this.setState(state)\r\n }\r\n\r\n eliminarObjDuplicados = (arr, prop) => {\r\n var nuevoArray = [];\r\n var lookup = {};\r\n\r\n for (var i in arr) {\r\n lookup[arr[i][prop]] = arr[i];\r\n }\r\n\r\n for (i in lookup) {\r\n nuevoArray.push(lookup[i]);\r\n }\r\n\r\n return nuevoArray;\r\n }\r\n\r\n render() {\r\n return (\r\n
    \r\n
    \r\n
    \r\n \r\n this.handleChange(e)} />\r\n \r\n
    \r\n
    \r\n \r\n {/* \r\n this.handleChange(e)}/>\r\n */}\r\n
    \r\n
    \r\n \r\n
    \r\n itemA.Name === itemB.Name ? 0 : itemA.Name > itemB.Name ? 1 : -1)}\r\n value={this.props.classifications.find(clas => clas.ClassificationId === this.state.recipe.ClassificationId)}\r\n getOptionLabel={option => option.Name}\r\n getOptionValue={option => option.ClassificationId}\r\n noOptionsMessage={() => \"No hay opciones\"}\r\n onChange={(clas) => this.handleDropdownChange(this.props.classifications.findIndex(item => item.ClassificationId === clas.ClassificationId), \"classifications\", \"ClassificationId\")}\r\n />\r\n
    \r\n
    \r\n
    \r\n \r\n
    \r\n itemA.Description === itemB.Description ? 0 : itemA.Description > itemB.Description ? 1 : -1)}\r\n onChange={(value) => this.handleDropdownChange(this.props.recipeTypes.findIndex(item => item.RecipeTypeId === value.RecipeTypeId), \"recipeTypes\", \"RecipeTypeId\")}\r\n id=\"RecipeTypeId\"\r\n value={this.props.recipeTypes.find(item => item.RecipeTypeId === this.state.recipe.RecipeTypeId)}\r\n getOptionLabel={option => option.Description}\r\n getOptionValue={option => option.RecipeTypeId}\r\n noOptionsMessage={() => \"No hay opciones\"}\r\n />\r\n
    \r\n
    \r\n
    \r\n \r\n
    \r\n itemA.Name === itemB.Name ? 0 : itemA.Name > itemB.Name ? 1 : -1)}\r\n onChange={(value) => this.handleDropdownChange(this.props.flavors.findIndex(item => item.FlavorTypeId === value.FlavorTypeId), \"flavors\", \"FlavorTypeId\")}\r\n id=\"FlavorTypeId\"\r\n value={this.props.flavors.find(item => item.FlavorTypeId === this.state.recipe.FlavorTypeId)}\r\n getOptionLabel={option => option.Name}\r\n getOptionValue={option => option.FlavorTypeId}\r\n noOptionsMessage={() => \"No hay opciones\"}\r\n />\r\n
    \r\n
    \r\n
    \r\n \r\n
    \r\n itemA.Description === itemB.Description ? 0 : itemA.Description > itemB.Description ? 1 : -1)}\r\n onChange={(value) => this.handleDropdownChange(this.props.grains.findIndex(item => item.GrainTypeId === value.GrainTypeId), \"grains\", \"GrainTypeId\")}\r\n id=\"GrainTypeId\"\r\n value={this.props.grains.find(item => item.GrainTypeId === this.state.recipe.GrainTypeId)}\r\n getOptionLabel={option => option.Description}\r\n getOptionValue={option => option.GrainTypeId}\r\n noOptionsMessage={() => \"No hay opciones\"}\r\n />\r\n
    \r\n
    \r\n
    \r\n \r\n
    \r\n itemA.Description === itemB.Description ? 0 : itemA.Description > itemB.Description ? 1 : -1)}\r\n onChange={(value) => this.handleDropdownChange(this.props.milks.findIndex(item => item.MilkTypeId === value.MilkTypeId), \"milks\", \"MilkTypeId\")}\r\n id=\"MilkTypeId\"\r\n value={this.props.milks.find(item => item.MilkTypeId === this.state.recipe.MilkTypeId)}\r\n getOptionLabel={option => option.Description}\r\n getOptionValue={option => option.MilkTypeId}\r\n noOptionsMessage={() => \"No hay opciones\"}\r\n />\r\n
    \r\n
    \r\n
    \r\n \r\n
    \r\n itemA.Name === itemB.Name ? 0 : itemA.Name > itemB.Name ? 1 : -1)}\r\n onChange={(value) => this.handleDropdownChange(this.props.presentations.findIndex(item => item.PresentationId === value.PresentationId), \"presentations\", \"PresentationId\")}\r\n id=\"PresentationId\"\r\n value={this.props.presentations.find(item => item.PresentationId === this.state.recipe.PresentationId)}\r\n getOptionLabel={option => option.Name}\r\n getOptionValue={option => option.PresentationId}\r\n noOptionsMessage={() => \"No hay opciones\"}\r\n />\r\n
    \r\n
    \r\n
    \r\n
    \r\n
    \r\n \r\n { }}\r\n />\r\n \r\n
    \r\n
    \r\n \r\n { }}\r\n />\r\n \r\n
    \r\n
    \r\n \r\n { }}\r\n />\r\n \r\n
    \r\n
    \r\n\r\n
    \r\n
    \r\n
    \r\n \r\n
    \r\n itemA.Description === itemB.Description ? 0 : itemA.Description > itemB.Description ? 1 : -1)}\r\n onChange={(value) => this.handleDropdownChange(this.props.satClassifications.findIndex(item => item.ClassificationSatId === value.ClassificationSatId), \"satClassifications\", \"ClassificationSatId\")}\r\n id=\"ClassificationSatId\"\r\n value={this.props.satClassifications.find(item => item.ClassificationSatId === this.state.recipe.ClassificationSatId)}\r\n getOptionLabel={option => option.Description}\r\n getOptionValue={option => option.ClassificationSatId}\r\n noOptionsMessage={() => \"No hay opciones\"}\r\n />\r\n
    \r\n
    \r\n
    \r\n \r\n
    \r\n itemA.Description === itemB.Description ? 0 : itemA.Description > itemB.Description ? 1 : -1)}\r\n onChange={(value) => {\r\n let recipe = { ...this.state.recipe };\r\n let index = this.props.satCodes.findIndex(item => item.Code === value.Code)\r\n recipe.CodeSatId = index === -1 ? 0 : this.props.satCodes[index].Code;\r\n this.setState({ recipe: recipe });\r\n }}\r\n value={this.props.satCodes.find(item => item.Code === this.state.recipe.CodeSatId)}\r\n getOptionLabel={option => option.Description}\r\n getOptionValue={option => option.Code}\r\n noOptionsMessage={() => \"No hay opciones\"}\r\n />\r\n
    \r\n
    \r\n
    \r\n

    \r\n Artículo inventario\r\n  \r\n this.setState({ modalDrive: true })}>\r\n \r\n \r\n \r\n \r\n

    \r\n
    \r\n
    \r\n gp.driveList && gp.driveList.length > 1)}\r\n quantityChanged={(value, index) => {\r\n /*let recipe = {...this.state.recipe};\r\n recipe.Details[index].Amount = value;\r\n this.setState({recipe: recipe});*/\r\n\r\n this.setState({ idRecipeDetail: index }, () => this.quantityChanged(value));\r\n }}\r\n removeDetail={(recipe) => {\r\n this.setState({ removeModal: true, idRecipeDetail: recipe })\r\n }}\r\n viewDrivesDetail={(recipe) => {\r\n this.setState({ detailDrivesModal: true, recipeDetailDrives: recipe })\r\n }}\r\n mostrarDrives={true}\r\n onMostrarDrives={(recipe) => {\r\n this.setState({ mostrarDrivesModal: true, recipeDetail: recipe })\r\n }}\r\n />\r\n
    \r\n\r\n {/* Modulo de toppings */}\r\n
    \r\n

    \r\n Toppings generales\r\n  \r\n this.setState({ toppingModal: true })}>\r\n \r\n \r\n \r\n \r\n

    \r\n
    \r\n
    \r\n {\r\n let recipe = { ...this.state.recipe };\r\n recipe.Toppings[index][labelQuantity] = value;\r\n\r\n this.setState({ recipe: recipe });\r\n }}\r\n removeDetail={(recipe) => {\r\n let state = { ...this.state };\r\n state.recipe.Toppings.splice(recipe, 1);\r\n this.setState(state);\r\n toast.success(\"Topping eliminado\");\r\n }}\r\n />\r\n
    \r\n\r\n
    \r\n\r\n {/* Botones de guardado */}\r\n
    \r\n
    \r\n
    \r\n this.props.save(this.state.recipe, false)}>\r\n Guardar\r\n \r\n
    \r\n
    \r\n\r\n {this.props.recipe.HasMenuAssigned &&
    \r\n
    \r\n this.props.save(this.state.recipe, true)}>\r\n Guardar y Sincronizar\r\n \r\n
    \r\n
    \r\n }\r\n
    \r\n {/* Modales */}\r\n {/* Modal para agregar un articulo inventario */}\r\n {this.state.detailModal &&\r\n this.setState({\r\n detailModal: false,\r\n selectedOption: [],\r\n selectedOptionC: [],\r\n selectedOptionD: [],\r\n optionCity: this.select_city(Object.values(this.state.Caffenios)),\r\n optionDrive: this.select_Drive(Object.values(this.state.Caffenios))\r\n })}\r\n width=\"75%\"\r\n >\r\n {\r\n // let recipe = {...this.state.recipe};\r\n // recipe.Details.push(detail);\r\n // this.setState({recipe: recipe});\r\n // }}\r\n addDetail={(detail) => {\r\n let recipe = { ...this.state.recipe };\r\n detail.DriveId = this.state.selectedOptionD.length === 0 ? [...this.state.optionDrive] : [...this.state.selectedOptionD]\r\n detail.DriveNombre = this.state.selectedOptionD.length > 0 ? detail.DriveId.map(item => item.label).join(\", \")\r\n : (this.state.selectedOptionC.length > 0 ? this.state.selectedOptionC.map(item => item.label).join(\", \")\r\n : (this.state.selectedOption.length > 0 ? this.state.selectedOption.map(item => item.label).join(\", \")\r\n : \"Todos\"))\r\n recipe.Details.push(detail);\r\n recipe.DetailsGroupBy.push(detail);\r\n this.setState({ recipe: recipe });\r\n }}\r\n // currentDetails={this.state.recipe.Details.map(d => d.InventoryItemId)}\r\n currentDetails={this.state.recipe.Details.filter(det => {\r\n let caffenios = this.state.selectedOptionD.length === 0 ? [...this.state.optionDrive] : [...this.state.selectedOptionD]\r\n return caffenios.findIndex(dri => {\r\n // Si el articulo ya existia en la receta entonces checamos su idDrive\r\n if (det.idDrive) {\r\n return det.idDrive == dri.value\r\n }\r\n // Si el articulo se agregó en la misma sesión entonces checamos la propiedad DriveId \r\n // (que contiene una colección de los drives en donde se asigno el articulo)\r\n if (det.DriveId) {\r\n return det.DriveId.findIndex(id => id.value == dri.value) != -1\r\n } else {\r\n return false\r\n }\r\n }) != -1\r\n }).map(det => det.InventoryItemId)}\r\n isDetail={true}\r\n />\r\n \r\n }\r\n\r\n {/* Modal para eliminar un articulo inventario */}\r\n {this.state.removeModal && this.removeDetail()}\r\n cancel={() => this.setState({ removeModal: false })}\r\n modalTitle={\"Eliminar artículo inventario\"}\r\n />}\r\n\r\n {/* Modal para seleccionar drive */}\r\n {this.state.modalDrive &&\r\n this.setState({\r\n modalDrive: false,\r\n selectedOption: [],\r\n selectedOptionC: [],\r\n selectedOptionD: [],\r\n optionCity: this.select_city(Object.values(this.state.Caffenios)),\r\n optionDrive: this.select_Drive(Object.values(this.state.Caffenios))\r\n })\r\n }\r\n >\r\n
    \r\n
    \r\n \r\n
    \r\n \"No hay opciones\"}\r\n options={this.props.optionState}\r\n menuPosition=\"fixed\"\r\n />\r\n
    \r\n
    \r\n
    \r\n \r\n
    \r\n \"No hay opciones\"}\r\n options={this.state.optionCity}\r\n menuPosition=\"fixed\"\r\n />\r\n
    \r\n
    \r\n
    \r\n \r\n
    \r\n \"No hay opciones\"}\r\n options={this.state.optionDrive}\r\n menuPosition=\"fixed\"\r\n />\r\n
    \r\n
    \r\n
    \r\n
    \r\n
    \r\n {\r\n\r\n this.setState({ modalDrive: false, detailModal: true })\r\n }\r\n }>\r\n Siguiente\r\n \r\n
    \r\n
    \r\n\r\n\r\n \r\n }\r\n\r\n { this.setState({ mostrarDrivesModal: false })}\r\n >\r\n {\r\n this.state.recipeDetail.DriveId != null ? this.state.recipeDetail.DriveId.map(drive => {\r\n return
    {drive.label}
    \r\n }) :
    Todos
    \r\n }\r\n }\r\n\r\n {/* Modal para el modulo de toppings */}\r\n {this.state.toppingModal &&\r\n this.setState({ toppingModal: false })}\r\n width=\"75%\"\r\n >\r\n {\r\n let recipe = { ...this.state.recipe };\r\n\r\n recipe.Toppings.push({\r\n // CodeProvider: detail.CodeProvider,\r\n // Name: detail.Name,\r\n // InventoryItemId: detail.InventoryItemId,\r\n ...detail,\r\n MinQuantity: detail.MinQuantity || 0,\r\n MaxQuantity: detail.MaxQuantity || 0,\r\n // UnitSaleStr: detail.UnitSaleStr\r\n });\r\n this.setState({ recipe: recipe });\r\n }}\r\n currentDetails={this.state.recipe.Toppings.map(det => det.InventoryItemId)}\r\n soloToppings={true}\r\n isTopping={true}\r\n />\r\n \r\n }\r\n\r\n {/**Modal para ver el detalle de drives */}\r\n {this.state.detailDrivesModal &&\r\n this.setState({\r\n detailDrivesModal: false\r\n })}\r\n width=\"75%\"\r\n >\r\n this.removeDriveDetail(recipe)}\r\n />\r\n \r\n }\r\n\r\n \r\n
    \r\n );\r\n }\r\n}\r\n\r\nRecipeForm.defaultProps = {\r\n isEditing: false,\r\n recipe: {\r\n ShortName: \"\",\r\n Description: \"\",\r\n ClassificationId: 0,\r\n PresentationId: 0,\r\n FlavorTypeId: 0,\r\n RecipeTypeId: 0,\r\n IVAApply: true,\r\n KiwiId: 0,\r\n MilkTypeId: 0,\r\n GrainTypeId: 0,\r\n Active: true,\r\n MobileApply: true,\r\n WelcomeGiftApply: true,\r\n ClassificationSatId: 0,\r\n CodeSatId: 0,\r\n Details: []\r\n }\r\n}\r\n\r\nexport default RecipeForm;\r\n","import { apiUrl } from \"../constants\";\r\nimport axios from 'axios';\r\nvar request = axios.create({\r\n baseURL: apiUrl,\r\n headers: {'Authorization':'Bearer ' +localStorage.getItem('token'),'Content-Type':'application/json'}\r\n})\r\nexport default class SatAPI {\r\n\r\n static getUnitCodes(){\r\n return request.get(`/UnitsSat`);\r\n }\r\n\r\n static getCodes(){\r\n return request.get(`/CodesSat`);\r\n }\r\n\r\n static getClassifications(){\r\n return request.get(`/ClassificationSat`)\r\n }\r\n}","import React, { Component } from 'react';\r\nimport Field from '../../util/field/Field';\r\nimport ErrorMessages from '../../../util/validation-error-messages';\r\nimport ExpresionesRegulares from '../../../util/expresiones-regulares';\r\nimport '../../cssComponents.css';\r\nimport { Formik } from 'formik';\r\nimport * as Yup from 'yup';\r\nimport lodash from 'lodash';\r\nimport Select from 'react-select';\r\nimport EmpresasAPI from '../../../services/CaffenioEmpresas/Empresas';\r\nimport { toast } from 'react-toastify';\r\nimport ClasificacionesAPI from '../../../services/Classification';\r\nimport Loading from '../../util/loading/Loading';\r\n\r\nconst SUPPORTED_FORMATS = [\r\n \"image/png\",\r\n];\r\n\r\n\r\nclass ClassificationForm extends Component {\r\n\r\n constructor(props) {\r\n super(props);\r\n this.state = {\r\n classification: { ...this.props.classification },\r\n isEditing: this.props.isEditing,\r\n fileName: \"Archivo\"\r\n }\r\n }\r\n\r\n componentWillMount() {\r\n this.setState({ isLoading: true }, () => {\r\n let tempSegmentsList = []\r\n EmpresasAPI.getAllFilterSegments().then(response => {\r\n response.data.map(obj => {\r\n tempSegmentsList.push(obj)\r\n })\r\n return ClasificacionesAPI.getAllClasificacionGrupo()\r\n })\r\n .then(response => {\r\n let clasificacionesGruposAux = []\r\n response.data.map(obj => {\r\n if(this.state.classification.idClasificacionGrupo === obj.idClasificacionGrupo){\r\n this.state.classification.clasificacionGrupo = {value: obj.idClasificacionGrupo, label: obj.Nombre}\r\n }\r\n clasificacionesGruposAux.push({value: obj.idClasificacionGrupo, label: obj.Nombre})\r\n })\r\n this.setState({ segments: tempSegmentsList, clasificacionesGrupos: clasificacionesGruposAux, isLoading: false });\r\n })\r\n .catch(err => {\r\n this.setState({ isLoading: false })\r\n if (err.response)\r\n toast.error(err.response.data.Message)\r\n else\r\n toast.error(ErrorMessages.SinConexion)\r\n })\r\n })\r\n }\r\n\r\n /**Obtiene la posición máxima para recomendar la siguiente */\r\n getNextMaxPosition = () => {\r\n let maxPosition = lodash.maxBy(this.props.classifications, function (o) { return o.Position; });\r\n\r\n return maxPosition ? maxPosition.Position : 1;\r\n }\r\n\r\n VALIDATION_SCHEMA = Yup.object({\r\n Name: Yup.string()\r\n .trim()\r\n .matches(ExpresionesRegulares.AlfanumericoSinEspeciales, { message: ErrorMessages.AlfanumericoSinEspecialesError })\r\n .min(3, \"Nombre debe tener más de 2 caracteres.\")\r\n .max(50, \"Ha excedido el límite de 50 caracteres.\")\r\n .required(\"Campo Nombre es requerido.\"),\r\n // .test(\"validate-name\", \"El Nombre de Familia ya existe, favor de ingresar otro.\", (value) => {\r\n // let isValid = true;\r\n // let name = value ? value.toLowerCase().trim() : \"\";\r\n // if (this.props.classifications.some(u => u.Name.toLowerCase().trim() === name && u.ClassificationId !== this.state.classification.ClassificationId)) {\r\n // isValid = false;\r\n // }\r\n // return isValid;\r\n // }),\r\n ShortName: Yup.string()\r\n .trim()\r\n .matches(ExpresionesRegulares.AlfanumericoSinEspeciales, { message: ErrorMessages.AlfanumericoSinEspecialesError })\r\n .min(3, \"Nombre Corto debe tener más de 2 caracteres.\")\r\n .max(50, \"Ha excedido el límite de 50 caracteres.\")\r\n .required(\"Campo Nombre Corto es requerido.\"),\r\n // .test(\"validate-shorname\", \"El Nombre Corto de Familia ya existe, favor de ingresar otro.\", (value) => {\r\n // let isValid = true;\r\n // let shortName = value ? value.toLowerCase().trim() : \"\";\r\n // if (this.props.classifications.some(u => u.ShortName.toLowerCase().trim() === shortName && u.ClassificationId !== this.state.classification.ClassificationId)) {\r\n // isValid = false;\r\n // }\r\n // return isValid;\r\n // }),\r\n Position: Yup.number()\r\n .min(1, \"Ingrese valores mayores a 0.\")\r\n .max(999, \"Ha excedido el límite de caracteres.\")\r\n .required(\"Campo Posición es requerido.\"),\r\n Image: Yup.mixed()\r\n .required(\"Campo Imagen es requerido.\")\r\n .test(\r\n \"fileFormat\",\r\n \"Solo se permite formato .PNG\",\r\n value => value && SUPPORTED_FORMATS.includes(value.type) || (this.state.classification.UrlImage !== null && this.state.classification.UrlImage.length > 0)\r\n \r\n ),\r\n SegmentationId: Yup.string()\r\n .when([], {\r\n is: () => !this.state.isEditing,\r\n then: Yup.string().required(\"Segmentación es requerido.\").nullable(),\r\n otherwise: Yup.string().notRequired(),\r\n }),\r\n });\r\n\r\n /**\r\n * Previene el submit al dar enter\r\n * @param {*} keyEvent \r\n */\r\n onKeyDown = (keyEvent) => {\r\n if ((keyEvent.charCode || keyEvent.keyCode) === 13) {\r\n keyEvent.preventDefault();\r\n }\r\n }\r\n\r\n\r\n render() {\r\n return (\r\n <>\r\n {\r\n let formatValues = {...values}\r\n formatValues.Name = formatValues.Name.trim();\r\n formatValues.ShortName = formatValues.ShortName.trim();\r\n this.props.save(formatValues)\r\n }}\r\n >\r\n {({ values, touched, errors, handleChange, handleBlur, handleSubmit, setFieldValue, setFieldTouched, setFieldError }) => (\r\n
    \r\n {!this.state.isEditing &&\r\n \r\n
    \r\n \"No hay opciones\"}\r\n onChange={(val) => {\r\n setFieldValue('SegmentationId', val)\r\n }}\r\n onBlur={() => setFieldTouched('SegmentationId', true)}\r\n options={this.state.segments}\r\n getOptionLabel={(objSegment) => {\r\n switch (objSegment.Name) {\r\n case \"Andatti drive\":\r\n return \"Andatti\"\r\n case \"Drive\":\r\n return \"Caffenio\"\r\n case \"momento espresso\":\r\n return \"Momento Espresso\"\r\n default:\r\n return objSegment.Name\r\n }\r\n }}\r\n\r\n getOptionValue={(objSegment) => objSegment.SegmentId}\r\n />\r\n
    \r\n \r\n }\r\n
    \r\n \r\n \r\n \r\n
    \r\n \r\n \r\n \r\n
    \r\n \r\n { \r\n if(event.keyCode === 69 || \r\n event.keyCode === 109 || \r\n event.keyCode === 110 || \r\n event.keyCode === 107 ||\r\n event.keyCode === 189 ||\r\n event.keyCode === 187||\r\n event.keyCode === 190\r\n ){\r\n event.preventDefault();\r\n setFieldValue(\"Position\", values.Position);\r\n return false\r\n }else{\r\n return true \r\n }\r\n }} \r\n onBlur={handleBlur}\r\n placeholder={`La última posición registrada es ${this.getNextMaxPosition()}`}\r\n />\r\n \r\n
    \r\n \r\n
    \r\n \"No hay opciones\"}\r\n onChange={(val) => {\r\n setFieldValue('clasificacionGrupo', val)\r\n }}\r\n onBlur={() => setFieldTouched('ClasificacionGrupo', true)}\r\n options={this.state.clasificacionesGrupos}\r\n />\r\n
    \r\n \r\n
    \r\n \r\n
    \r\n \r\n
    \r\n {values.Image !== null && \r\n \r\n \r\n \r\n \r\n }\r\n
    \r\n {values.Image !== null \r\n && (values.UrlImage === null || values.UrlImage.length === 0) \r\n && \r\n
    \r\n
    \r\n \"\"\r\n
    \r\n
    \r\n
    \r\n \r\n }\r\n {values.UrlImage && \r\n
    \r\n
    \r\n \"\"\r\n
    \r\n
    \r\n
    }\r\n\r\n
    \r\n
    \r\n \r\n
    \r\n
    \r\n \r\n )}\r\n\r\n \r\n \r\n \r\n \r\n \r\n );\r\n }\r\n}\r\n\r\n// Definición de los valores por default de las props en caso de no ser recibidas por el padre.\r\nClassificationForm.defaultProps = {\r\n isEditing: false,\r\n classification: {\r\n ShortName: \"\",\r\n Name: \"\",\r\n Position: \"\",\r\n IVAApply: true,\r\n Image: null,\r\n Background: null,\r\n Icon: null,\r\n RecipeName: \"\",\r\n UrlImage:null\r\n },\r\n segments: []\r\n}\r\n\r\nexport default ClassificationForm;\r\n","import React, { Component } from 'react';\r\nimport { toast } from 'react-toastify'\r\nimport RecipeForm from './components/RecipeForm';\r\nimport RecipesAPI from '../../../services/Recipe';\r\nimport RecipesTypesAPI from '../../../services/RecipeType';\r\nimport ClasificacionesAPI from '../../../services/Classification';\r\nimport to from '../../../util/to';\r\nimport PresentationsAPI from '../../../services/Presentations';\r\nimport FlavorsAPI from '../../../services/Flavor';\r\nimport MilksAPI from '../../../services/Milk';\r\nimport GrainsAPI from '../../../services/Grain';\r\nimport SatAPI from '../../../services/Sat';\r\nimport '../../cssComponents.css';\r\nimport Loading from '../../util/loading/Loading';\r\nimport ErrorMessages from '../../../util/validation-error-messages';\r\nimport WarehouseAPI from '../../../services/Warehouse';\r\n\r\nclass NewRecipe extends Component {\r\n constructor(props){\r\n super(props);\r\n this.state = {\r\n recipe: {},\r\n classifications: [],\r\n presentations: [],\r\n flavors: [],\r\n recipeTypes: [],\r\n milks: [],\r\n grains: [],\r\n satClassifications: [],\r\n satCodes: [],\r\n dataLoaded: false,\r\n units: [],\r\n isLoading: false,\r\n //Estados para obtener estados, ciudades y drives\r\n optionState: [],\r\n optionCity: [],\r\n optionDrive: [],\r\n Caffenios: [],\r\n };\r\n }\r\n\r\n componentWillMount(){\r\n this.setState({isLoading: true})\r\n if(this.props.match.params.id){\r\n RecipesAPI.get(this.props.match.params.id).then(response => {\r\n \r\n let detailRecipe = {...response.data};\r\n detailRecipe.Details = detailRecipe.Details.map((item)=>{\r\n let newItem = {...item.InventoryItem};\r\n newItem.Amount = item.Amount;\r\n newItem.RecipeDetailId = item.RecipeDetailId;\r\n return newItem\r\n });\r\n detailRecipe.DetailsGroupBy = this.groupByRecipeDetail(detailRecipe.Details);\r\n \r\n // detailRecipe.Toppings = [];\r\n\r\n if(detailRecipe.CodeSatId){\r\n detailRecipe.CodeSatId = detailRecipe.CodeSatId.trim();\r\n }\r\n \r\n \r\n this.setState({recipe: detailRecipe}, () => {this.getData(); this.getDrives()})\r\n }).catch(err => {\r\n this.setState({isLoading: false})\r\n if(err.response)\r\n toast.error(err.response.data.Message)\r\n else\r\n toast.error(ErrorMessages.SinConexion)\r\n });\r\n }else{\r\n this.setState({recipe: {\r\n ShortName: \"\",\r\n Description: \"\",\r\n ClassificationId: 0,\r\n PresentationId: 0,\r\n FlavorTypeId: 0,\r\n RecipeTypeId: 0,\r\n IVAApply: true,\r\n KiwiId: 0,\r\n MilkTypeId: 0,\r\n GrainTypeId: 0,\r\n Active: true,\r\n MobileApply: true,\r\n WelcomeGiftApply: true,\r\n ClassificationSatId: 0,\r\n CodeSatId: 0,\r\n Details: [],\r\n Toppings: []}\r\n }, () => {this.getData(); this.getDrives()});\r\n \r\n }\r\n \r\n }\r\n\r\n\r\n /**\r\n * Agrupa por aticulo y cantidad el listado de articulos asignados a la receta \r\n */\r\n groupByRecipeDetail = (arrDetail) => {\r\n var resultArray = [];\r\n try {\r\n resultArray = arrDetail.reduce((listado , item) => {\r\n let drive = {\r\n RecipeDetailId : item.RecipeDetailId,\r\n idDrive : item.idDrive,\r\n DriveNombre : item.DriveNombre,\r\n DriveEstado : item.DriveEstado,\r\n DriveMunicipio : item.DriveMunicipio,\r\n idEstado : item.idEstado,\r\n idMunicipio: item.idMunicipio\r\n \r\n }\r\n \r\n let city = {\r\n DriveEstado : item.DriveEstado,\r\n DriveMunicipio : item.DriveMunicipio,\r\n idEstado : item.idEstado,\r\n idMunicipio: item.idMunicipio\r\n } \r\n \r\n let existe = listado.filter(a => {\r\n if(a.Amount === item.Amount && a.InventoryItemId === item.InventoryItemId){ \r\n a.driveList.push(drive);\r\n\r\n if(a.driveList.length > 1){\r\n let filtraDrives = a.driveList.reduce((lstDrives, dr) => {\r\n if(!lstDrives.includes(dr.DriveNombre)){\r\n lstDrives.push(dr.DriveNombre)\r\n }\r\n return lstDrives;\r\n }, []);\r\n\r\n if(filtraDrives.length <= 4){\r\n a.DriveNombre = filtraDrives.join(\", \");\r\n }else{\r\n let filtraCiudades = a.driveList.reduce((lstCiudades, city) => {\r\n if(!lstCiudades.includes(city.DriveMunicipio)){\r\n lstCiudades.push(city.DriveMunicipio)\r\n }\r\n return lstCiudades;\r\n }, []);\r\n \r\n if(filtraCiudades.length > 4){\r\n let filtraEstados = a.driveList.reduce((lstEstados, city) => {\r\n if(!lstEstados.includes(city.DriveEstado)){\r\n lstEstados.push(city.DriveEstado)\r\n }\r\n return lstEstados;\r\n }, []);\r\n a.DriveNombre = filtraEstados.join(\", \"); \r\n }else{\r\n a.DriveNombre = filtraCiudades.join(\", \");\r\n }\r\n } \r\n }\r\n else{\r\n a.DriveNombre = item.DriveNombre;\r\n }\r\n\r\n if(!a.cities.some(c=> c.idEstado === item.idEstado && c.idMunicipio === item.idMunicipio))\r\n a.cities.push(city); \r\n \r\n return a;\r\n } \r\n }); \r\n \r\n if (existe.length === 0) {\r\n item.driveList = [drive]; \r\n item.cities = [city]; \r\n listado.push(item);\r\n } \r\n \r\n return listado;\r\n }, []);\r\n } catch (error) {\r\n resultArray = arrDetail;\r\n }\r\n return resultArray;\r\n }\r\n\r\n getData = async () => {\r\n if (!this.props.location.state) {\r\n this.props.history.push(`/recetas`);\r\n return;\r\n }\r\n //let err, classifications, presentations, flavors, milks, grains, recipeTypes, satClassifications, satCodes;\r\n let err, satClassifications, satCodes;\r\n // [err,classifications] = await to(ClasificacionesAPI.getAll());\r\n // [err, presentations] = await to(PresentationsAPI.getAll());\r\n // [err, flavors] = await to(FlavorsAPI.getAll());\r\n // [err, milks] = await to(MilksAPI.getAll());\r\n // [err, grains] = await to(GrainsAPI.getAll());\r\n // [err, recipeTypes] = await to(RecipesTypesAPI.getAll());\r\n [err, satClassifications] = await to(SatAPI.getClassifications());\r\n [err, satCodes] = await to(SatAPI.getCodes());\r\n\r\n this.setState({\r\n classifications: this.props.location.state.classifications,\r\n presentations: this.props.location.state.presentations.filter(p=>p.Active),\r\n flavors: this.props.location.state.flavors,\r\n milks: this.props.location.state.milks,\r\n grains: this.props.location.state.grains,\r\n recipeTypes: this.props.location.state.recipeTypes,\r\n satClassifications: satClassifications,\r\n satCodes: satCodes,\r\n dataLoaded: true,\r\n isLoading: false\r\n })\r\n }\r\n\r\n /**\r\n * Valida y guarda la receta\r\n * @param recipe Objeto. La receta que se va a guardar\r\n * @param applySync Bool. Indica si se va a sincronizar la receta despues de guardarla.\r\n */\r\n save = (recipe, applySync) => {\r\n if(applySync === undefined) applySync = false;\r\n let data = {...recipe};\r\n let recipeInventoryItems = []\r\n data.Details.forEach(d => {\r\n if(d.DriveId){\r\n d.DriveId.forEach(driveId => {\r\n recipeInventoryItems.push({Amount: d.Amount, InventoryItem: {...d, idDrive: driveId.value, DriveId: []}});\r\n })\r\n }else{\r\n recipeInventoryItems.push({Amount: d.Amount, InventoryItem: {...d}});\r\n }\r\n })\r\n data.Details = recipeInventoryItems\r\n data.Description = data.Description.trim();\r\n data.ShortName = data.ShortName.trim();\r\n if(data.Description.length < 3){\r\n toast.error(\"Descripción debe de tener más de 2 caracteres\");\r\n return;\r\n }\r\n // if(data.ShortName.length < 3){\r\n // toast.error(\"Nombre Corto debe de tener más de 2 caracteres\");\r\n // return;\r\n // }\r\n if(data.ClassificationId === 0){\r\n toast.error(\"Selecciona una Familia\");\r\n return;\r\n }\r\n if(data.PresentationId === 0){\r\n toast.error(\"Selecciona una Presentación\");\r\n return;\r\n }\r\n if(data.FlavorTypeId === 0){\r\n toast.error(\"Selecciona un Tipo de Sabor\");\r\n return;\r\n }\r\n if(data.RecipeTypeId === 0){\r\n toast.error(\"Selecciona un Tipo de Receta\");\r\n return;\r\n }\r\n if(data.MilkTypeId === 0){\r\n toast.error(\"Selecciona un Tipo de Leche\");\r\n return;\r\n }\r\n if(data.GrainTypeId === 0){\r\n toast.error(\"Selecciona un Tipo de Grano\");\r\n return;\r\n }\r\n if(data.ClassificationSatId === 0){\r\n toast.error(\"Selecciona una Clasificación del SAT\");\r\n return;\r\n }\r\n if(data.CodeSatId === 0){\r\n toast.error(\"Selecciona un Código del SAT\");\r\n return;\r\n }\r\n if(data.Details.length>0){\r\n let validar = true;\r\n data.Details.map((item)=>{\r\n if(item.Amount == undefined){\r\n toast.error(\"Ingrese una Cantidad a detalle de \"+item.InventoryItem.Name)\r\n validar = false;\r\n }\r\n })\r\n\r\n if(validar===false){\r\n return;\r\n }\r\n }\r\n\r\n if(data.Toppings.length > 0){\r\n let validar = true;\r\n data.Toppings.map(item => {\r\n if(Number(item.MinQuantity) > Number(item.MaxQuantity)){\r\n toast.error(\"Cantidades incorrectas en Topping '\" + item.Name + \"'\")\r\n validar = false;\r\n }\r\n })\r\n\r\n if(validar === false){\r\n return;\r\n }\r\n }\r\n\r\n this.setState({isLoading: true}, () => {\r\n if(data.RecipeId){\r\n // Indicar si se va a sincronizar\r\n data.ApplySync = applySync\r\n RecipesAPI.edit(data).then(response => {\r\n this.setState({isLoading: false})\r\n toast.success(\"Receta actualizada\");\r\n this.props.history.goBack();\r\n }).catch(err => {\r\n this.setState({isLoading: false})\r\n if(err.response)\r\n toast.error(err.response.data.Message)\r\n else\r\n toast.error(ErrorMessages.SinConexion)\r\n });\r\n } else{\r\n RecipesAPI.create(data).then(response => {\r\n this.setState({isLoading: false})\r\n toast.success(\"Receta creada\");\r\n this.props.history.goBack();\r\n }).catch(err => {\r\n this.setState({isLoading: false})\r\n if(err.response)\r\n toast.error(err.response.data.Message)\r\n else\r\n toast.error(ErrorMessages.SinConexion)\r\n });\r\n }\r\n })\r\n }\r\n\r\n /*Función para obtener las ciudades que se pone en el set state */\r\n getDrives = async () =>{\r\n \r\n let err, caffenios;\r\n [err,caffenios] = await to(WarehouseAPI.getCaffenios());\r\n\r\n if(err){\r\n this.setState({isLoading: false})\r\n if(err.response)\r\n toast.error(err.response.data.Message)\r\n else\r\n toast.error(ErrorMessages.SinConexion)\r\n }else{\r\n this.setState({\r\n optionState: this.select_state(caffenios),\r\n optionCity: this.select_city(caffenios),\r\n optionDrive:this.select_Drive(caffenios),\r\n Caffenios:caffenios,\r\n isLoading: false\r\n })\r\n }\r\n }\r\n\r\n select_state(Caffenios) { // Llenar el combo 'Estados' con todas las opciones \r\n var newArray = [];\r\n let OptionSelect = [];\r\n var lookupObject = {};\r\n Caffenios.map((item) => {\r\n OptionSelect.push({value:item.StateId,label:item.State});\r\n });\r\n\r\n for(var i in OptionSelect) {\r\n lookupObject[OptionSelect[i][\"value\"]] = OptionSelect[i];\r\n }\r\n \r\n for(i in lookupObject) {\r\n newArray.push(lookupObject[i]);\r\n }\r\n \r\n return newArray;\r\n }\r\n\r\n select_city(Caffenios) { // Llenar el combo 'Ciudades' con todas las opciones \r\n var newArray = [];\r\n let OptionSelectCity = [];\r\n var lookupObject = {};\r\n Caffenios.map((item) => {\r\n OptionSelectCity.push({value:item.Municipalityid,label:item.Municipality});\r\n });\r\n\r\n for(var i in OptionSelectCity) {\r\n lookupObject[OptionSelectCity[i][\"value\"]] = OptionSelectCity[i];\r\n }\r\n \r\n for(i in lookupObject) {\r\n newArray.push(lookupObject[i]);\r\n }\r\n\r\n return newArray;\r\n }\r\n\r\n select_Drive(Caffenios) { // Llenar el combo 'Drives' con todas las opciones \r\n var newArray = [];\r\n let OptionSelectDrive = [];\r\n var lookupObject = {};\r\n Caffenios.map((item) => {\r\n OptionSelectDrive.push({value:item.idCaffenio,label:item.NombreNuevo});\r\n });\r\n\r\n for(var i in OptionSelectDrive) {\r\n lookupObject[OptionSelectDrive[i][\"value\"]] = OptionSelectDrive[i];\r\n }\r\n \r\n for(i in lookupObject) {\r\n newArray.push(lookupObject[i]);\r\n }\r\n\r\n return newArray;\r\n }\r\n\r\n render() {\r\n return (\r\n
    \r\n
    \r\n
    \r\n
    \r\n \r\n {this.props.history.goBack()}} className=\"fa fa-arrow-left\">\r\n \r\n {this.state.recipe.RecipeId ? \"Editar Receta\" : \"Nueva Receta\"}\r\n
    \r\n
    \r\n
    \r\n {this.state.dataLoaded && }\r\n
    \r\n
    \r\n\r\n \r\n
    \r\n );\r\n }\r\n}\r\n\r\nexport default NewRecipe;\r\n","import { toast } from \"react-toastify\";\r\nimport ErrorMessages from \"./validation-error-messages\";\r\n\r\nexport default class Validators {\r\n static SUPPORTED_FORMATS = [\r\n \"image/png\"\r\n ];\r\n\r\n static Classification(classification) {\r\n //console.log(classification);\r\n classification.Name = classification.Name.trim();\r\n classification.ShortName = classification.ShortName.trim();\r\n //classification.Position = classification.Position.trim();\r\n classification.RecipeName = classification.RecipeName.trim();\r\n if(classification.Name.length < 3 || classification.Name.length > 30){ \r\n toast.error(ErrorMessages.name);\r\n return false;\r\n }\r\n if(classification.ShortName.length < 3){ \r\n toast.error(ErrorMessages.shortName);\r\n return false;\r\n }\r\n if(classification.Position === \"\" || classification.Position < 0 || Number.isNaN(Number(classification.Position))){\r\n toast.error(ErrorMessages.menuPosition);\r\n return false;\r\n }\r\n if(classification.RecipeName.length < 3 || classification.RecipeName.length > 30){\r\n toast.error(ErrorMessages.recipeName);\r\n return false;\r\n }\r\n return true;\r\n }\r\n\r\n static Presentations(presentation) {\r\n \r\n if (presentation.Name) {\r\n presentation.Name = presentation.Name.trim();\r\n } else {\r\n toast.error(ErrorMessages.name);\r\n return false;\r\n }\r\n\r\n if (presentation.RecipeName) {\r\n presentation.RecipeName = presentation.RecipeName.trim();\r\n } else {\r\n toast.error(ErrorMessages.recipeName);\r\n return false;\r\n }\r\n\r\n if(presentation.Name.length < 3 || presentation.Name.length > 20){ \r\n toast.error(ErrorMessages.smallestName);\r\n return false;\r\n }\r\n \r\n if(presentation.Position === \"\" || presentation.Position < 0 || Number.isNaN(Number(presentation.Position))){\r\n toast.error(ErrorMessages.menuPosition);\r\n return false;\r\n }\r\n \r\n if(presentation.RecipeName.length < 3 || presentation.RecipeName.length > 20){\r\n toast.error(ErrorMessages.smallestRecipeName);\r\n return false;\r\n }\r\n return true;\r\n }\r\n\r\n static Flavor(flavor){\r\n flavor.Name = flavor.Name.trim();\r\n flavor.ShortName = flavor.ShortName.trim();\r\n //flavor.Position = flavor.Position.trim();\r\n flavor.RecipeName = flavor.RecipeName.trim();\r\n if(flavor.Name.length < 3 || flavor.Name.length > 50 ){ \r\n toast.error(ErrorMessages.smallName);\r\n return false;\r\n }\r\n if(flavor.ShortName.length < 3 || flavor.ShortName.length > 50){ \r\n toast.error(ErrorMessages.shortName);\r\n return false;\r\n }\r\n if(flavor.Position === \"\" || flavor.Position < 0 || Number.isNaN(Number(flavor.Position))){\r\n toast.error(ErrorMessages.menuPosition);\r\n return false;\r\n }\r\n if(flavor.RecipeName.length < 3 || flavor.RecipeName.length > 50){\r\n toast.error(ErrorMessages.recipeName);\r\n return false;\r\n }\r\n return true;\r\n }\r\n\r\n static Grain(grain){\r\n grain.Description = grain.Description.trim();\r\n grain.RecipeName = grain.RecipeName.trim();\r\n //grain.Position = grain.Position.trim();\r\n if(grain.Description.length < 3 || grain.Description.length > 50){ \r\n toast.error(ErrorMessages.name);\r\n return false;\r\n }\r\n if(grain.Position === \"\" || grain.Position < 0 || Number.isNaN(Number(grain.Position))){\r\n toast.error(ErrorMessages.menuPosition);\r\n return false;\r\n }\r\n if(grain.Position > 255){\r\n toast.error(ErrorMessages.menuPositionMax);\r\n return false;\r\n }\r\n if(grain.RecipeName.length < 1 || grain.RecipeName.length > 50 ){\r\n toast.error(ErrorMessages.recipeName);\r\n return false;\r\n }\r\n return true;\r\n }\r\n\r\n static Milk(milk){\r\n milk.Description = milk.Description.trim();\r\n milk.RecipeName = milk.RecipeName.trim();\r\n if(milk.Description.length < 3 || milk.Description.length > 25){ \r\n toast.error(ErrorMessages.smallName);\r\n return false;\r\n }\r\n if(milk.Position === \"\" || milk.Position < 0 || Number.isNaN(Number(milk.Position))){\r\n toast.error(ErrorMessages.menuPosition);\r\n return false;\r\n }\r\n if(milk.RecipeName.length < 3 || milk.RecipeName.length > 25 ){\r\n toast.error(ErrorMessages.smallRecipeName);\r\n return false;\r\n }\r\n return true;\r\n }\r\n\r\n static RecipeType(recipeType){\r\n recipeType.Description = recipeType.Description.trim();\r\n //recipeType.Position = recipeType.Position.trim();\r\n recipeType.RecipeName = recipeType.RecipeName.trim();\r\n if(recipeType.Description.length < 3 || recipeType.Description.length > 25){ \r\n toast.error(ErrorMessages.smallName);\r\n return false;\r\n }\r\n if(recipeType.Position === \"\" || recipeType.Position < 0 || Number.isNaN(Number(recipeType.Position))){\r\n toast.error(ErrorMessages.menuPosition);\r\n return false;\r\n }\r\n if(recipeType.RecipeName.length < 3 || recipeType.RecipeName.length > 25 ){\r\n toast.error(ErrorMessages.smallRecipeName);\r\n return false;\r\n }\r\n return true;\r\n }\r\n\r\n static InventoryItem(inventoryItem){\r\n inventoryItem.CodeProvider = inventoryItem.CodeProvider.trim();\r\n if(inventoryItem.CodeProvider.length < 9){\r\n toast.error(ErrorMessages.codeProvider);\r\n return false;\r\n }\r\n\r\n // TODO Validación de Artículo inventario.\r\n\r\n return true;\r\n }\r\n}","import React, { Component } from 'react';\r\nimport SearchForm from \"../../util/searchform/SearchForm\";\r\nimport TableTemplate from \"../../util/tabletemplate/TableTemplate\";\r\nimport NoItems from \"../../util/noitems/NoItems\";\r\nimport Modal from '../../util/modal/Modal';\r\nimport AcceptModal from '../../util/acceptModal/AcceptModal';\r\nimport ClassificationForm from './ClassificationForm';\r\nimport Pagination from '../../util/pagination/Pagination';\r\nimport ClasificacionesAPI from '../../../services/Classification';\r\nimport { toast } from 'react-toastify';\r\nimport Loading from '../../util/loading/Loading';\r\nimport Validators from '../../../util/validators';\r\n\r\n\r\nimport ModoGuiado from \"../../modoGuiado/ModoGuiado\"\r\nimport BtnModoGuiado from '../../util/BtnModoGuiado/BtnModoGuiado'\r\nimport ErrorMessages from '../../../util/validation-error-messages';\r\nimport roles from '../../../util/strings/roles';\r\nimport lodash from 'lodash';\r\n\r\nclass Classifications extends Component {\r\n classifications = [];\r\n\r\n constructor(props){\r\n super(props);\r\n this.state = {\r\n classifications: [],\r\n pageClassifications: [],\r\n filterText: \"\",\r\n classification: null,\r\n showModal: false,\r\n editing: false,\r\n removeModal: false,\r\n isLoading: false,\r\n \r\n }\r\n }\r\n\r\n componentWillMount(){\r\n this.setState({isLoading: true});\r\n ClasificacionesAPI.getAll().then(response => {\r\n this.setState({classifications: response.data, isLoading: false });\r\n this.classifications = response.data;\r\n }).catch(err => {\r\n toast.error(\"Ocurrió un error al obtener la información. Intenta más tarde\");\r\n this.setState({isLoading: false});\r\n })\r\n }\r\n\r\n // Método encargado de recibir el texto en el input de búsqueda y filtrar los elementos en\r\n // la tabla \r\n handleSearchInput = (text) => {\r\n let classifications = this.classifications.filter(classification => classification.Name.toLowerCase().normalize(\"NFD\").replace(/[\\u0300-\\u036f]/g, \"\")\r\n .includes(text.trim().toLowerCase().normalize(\"NFD\").replace(/[\\u0300-\\u036f]/g, \"\")));\r\n let state = this.state;\r\n state.filterText = text;\r\n state.classifications = classifications;\r\n this.setState(state);\r\n }\r\n\r\n create = () => {\r\n this.props.history.push({pathname: '/clasificaciones/nueva', \r\n state: { classifications: this.classifications }}); \r\n }\r\n\r\n edit = (classification) => {\r\n \r\n this.setState({isLoading: true}, ()=>{\r\n ClasificacionesAPI.edit(classification).then(response => {\r\n let state = {...this.state};\r\n //console.log(response);\r\n state.classifications[state.classifications.findIndex(c => c.ClassificationId === classification.ClassificationId)] = response.data;\r\n state.pageClassifications[state.pageClassifications.findIndex(c => c.ClassificationId === classification.ClassificationId)] = response.data;\r\n this.classifications[this.classifications.findIndex(c => c.ClassificationId === classification.ClassificationId)] = response.data;\r\n \r\n state.isLoading = false;\r\n state.showModal = false;\r\n state.classification = null;\r\n \r\n this.setState(state, () => toast.success(\"Familia actualizada\"));\r\n }).catch(err => {\r\n this.setState({isLoading: false});\r\n if(err.response)\r\n toast.error(err.response.data.Message);\r\n else\r\n toast.error(ErrorMessages.SinConexion);\r\n })\r\n });\r\n \r\n \r\n }\r\n\r\n remove = () => {\r\n this.setState({isLoading: true});\r\n ClasificacionesAPI.delete(this.state.classification.ClassificationId).then(response => {\r\n let state = {...this.state};\r\n\r\n state.classifications.splice(state.classifications.findIndex(c => c.ClassificationId === state.classification.ClassificationId), 1);\r\n state.pageClassifications.splice(state.pageClassifications.findIndex(c => c.ClassificationId === state.classification.ClassificationId), 1);\r\n this.classifications.splice(this.classifications.findIndex(c => c.ClassificationId === state.classification.ClassificationId), 1);\r\n state.isLoading = false;\r\n state.removeModal = false;\r\n state.classification = null;\r\n toast.success(\"Familia eliminada\");\r\n this.setState(state);\r\n }).catch(err => {\r\n toast.error(err.response.data.Message);\r\n this.setState({isLoading: false, classification: null, removeModal: false});\r\n })\r\n }\r\n\r\n pressEnter = (e) => {\r\n //debugger\r\n e.preventDefault();\r\n if(e.keyCode == 13){return false;}\r\n console.log(e);\r\n }\r\n\r\n render() {\r\n return (\r\n
    \r\n\r\n \r\n\r\n

    Familia

    \r\n
    \r\n
    \r\n
    \r\n
    \r\n\r\n
    \r\n
    \r\n this.handleSearchInput(t)}\r\n itemName={'Familia'}\r\n placeholderText ={\"Ingrese nombre de Familia\"}\r\n />\r\n
    \r\n
    \r\n
    \r\n
    \r\n
    \r\n\r\n
    \r\n
    \r\n
    \r\n {/* {localStorage.getItem('role').split(\",\").includes([roles.ADMIN, roles.ADMINDRIVE, roles.SUPERVISOR_VENTA_DRIVE, roles.LIDER_DRIVE]) && */}\r\n {lodash.intersection(localStorage.getItem('role').split(\",\"), [roles.ADMIN, roles.ADMINDRIVE, roles.ESPECIALISTA_DE_PRODUCTO, roles.COORDINADOR_GESTION_OPERACIONES]).length > 0 &&\r\n this.create()}>\r\n \r\n \r\n \r\n Agregar Familia\r\n \r\n }\r\n
    \r\n
    \r\n
    \r\n
    \r\n\r\n\r\n
    \r\n
    \r\n {this.state.classifications.length !== 0 \r\n ? this.setState({showModal: true, classification: classification})}\r\n canEdit canDelete \r\n edit={(classification) => this.setState({showModal: true, classification: classification})} \r\n remove={(classification) => this.setState({removeModal: true, classification: classification})}\r\n /> \r\n : }\r\n this.setState({ pageClassifications: classifications })} />\r\n
    \r\n
    \r\n {this.state.showModal && \r\n this.setState({showModal: false, unit: null})}\r\n >\r\n \r\n \r\n }\r\n {this.state.removeModal && this.remove()}\r\n cancel={() => this.setState({removeModal: false})}\r\n modalTitle={\"Eliminar Familia\"}\r\n />}\r\n \r\n\r\n \r\n\r\n
    \r\n );\r\n }\r\n}\r\n\r\nexport default Classifications;\r\n","import React, { Component } from 'react';\r\nimport {toast} from 'react-toastify';\r\nimport ClassificationForm from './ClassificationForm';\r\nimport ClasificacionesAPI from '../../../services/Classification';\r\nimport '../../cssComponents.css';\r\nimport Loading from '../../util/loading/Loading';\r\nimport Modal from '../../util/modal/Modal';\r\nimport ErrorMessages from '../../../util/validation-error-messages';\r\n\r\nclass NewClassification extends Component {\r\n constructor(props){\r\n super(props);\r\n this.state = {\r\n classification: {...this.props.classification},\r\n classifications :[],\r\n isLoading: false\r\n }\r\n }\r\n componentDidMount(){\r\n if (!this.props.location.state) {\r\n this.props.history.push(`/clasificaciones`);\r\n return;\r\n }\r\n this.setState({ classifications: this.props.location.state.classifications })\r\n }\r\n save = (classification) => {\r\n this.setState({isLoading: true}, () => {\r\n classification.Activo = true;\r\n classification.RecipeName = classification.ShortName;\r\n ClasificacionesAPI.create(classification).then(response => {\r\n this.setState({isLoading: false})\r\n this.props.history.goBack();\r\n toast.success(\"Familia creada\");\r\n }).catch(err => {\r\n this.setState({isLoading: false})\r\n if(err.response)\r\n toast.error(err.response.data.Message);\r\n else\r\n toast.error(ErrorMessages.SinConexion)\r\n })\r\n })\r\n }\r\n\r\n render() {\r\n return (\r\n
    \r\n
    \r\n
    \r\n
    \r\n \r\n {this.props.history.goBack()}} className=\"fa fa-arrow-left\">\r\n \r\n
    Nueva Familia\r\n this.setState({ showModal: true })} className=\"fa fa-question-circle\">\r\n
    \r\n
    \r\n
    \r\n
    \r\n \r\n
    \r\n
    \r\n {this.state.showModal &&\r\n this.setState({ showModal: false })}\r\n >\r\n
    \r\n \r\n Las clasificaciones están directamente relacionadas a las recetas, se usa para clasificar por familias \r\n las recetas.\r\n Según la familia asignada, se agrupan en los dispositivos del punto de venta, caja, pantalla drive y tablet.\r\n
    \r\n

    \r\n Nombre: es un campo requerido, \r\n debe tener una longitud mínima de 2 a 30 caracteres máximo\r\n y no se debe duplicar. \r\n

    \r\n

    \r\n Nombre corto: es un campo requerido, \r\n debe tener una longitud mínima de 2 a 15 caracteres máximo \r\n y no se debe duplicar.\r\n

    \r\n

    \r\n Posición en Menú: valor numérico que representa el orden de visualización en los dispositivos de izquierda a derecha.\r\n Debe ser mayor a 0, y no se aceptan duplicados.\r\n

    \r\n\r\n

    \r\n Imagen: la imagen será la que se muestre en los puntos de venta, debe ser formato png y es requerido.\r\n

    \r\n
    \r\n \r\n\r\n \r\n }\r\n \r\n
    \r\n );\r\n }\r\n}\r\n\r\nexport default NewClassification;\r\n","import React, { Component } from 'react';\r\nimport Field from '../../util/field/Field';\r\nimport ErrorMessages from '../../../util/validation-error-messages';\r\nimport ExpresionesRegulares from '../../../util/expresiones-regulares';\r\nimport Validators from '../../../util/validators';\r\nimport { Formik } from 'formik';\r\nimport * as Yup from 'yup';\r\nimport lodash from 'lodash';\r\nimport Select from 'react-select';\r\nimport EmpresasAPI from '../../../services/CaffenioEmpresas/Empresas';\r\nimport { toast } from 'react-toastify';\r\n\r\nclass FlavorForm extends Component {\r\n\r\n constructor(props) {\r\n super(props);\r\n this.state = {\r\n flavor: { ...this.props.flavor },\r\n isEditing: this.props.isEditing,\r\n segments: []\r\n }\r\n }\r\n \r\n componentWillMount() {\r\n this.setState({ isLoading: true }, () => {\r\n EmpresasAPI.getAllFilterSegments().then(response => {\r\n let tempSegmentsList = []\r\n response.data.map(obj => {\r\n tempSegmentsList.push(obj)\r\n })\r\n this.setState({ segments: tempSegmentsList });\r\n }).catch(err => {\r\n this.setState({ isLoading: false })\r\n if (err.response)\r\n toast.error(err.response.data.Message)\r\n else\r\n toast.error(ErrorMessages.SinConexion)\r\n })\r\n })\r\n }\r\n\r\n /**Obtiene la posición máxima para recomendar la siguiente */\r\n getNextMaxPosition = () => {\r\n let maxPosition = lodash.maxBy(this.props.flavors, function (o) { return o.Position; });\r\n\r\n return maxPosition ? maxPosition.Position : 1;\r\n }\r\n\r\n VALIDATION_SCHEMA = Yup.object({\r\n Name: Yup.string()\r\n .trim()\r\n .matches(ExpresionesRegulares.AlfanumericoSinEspeciales, { message: ErrorMessages.AlfanumericoSinEspecialesError })\r\n .min(3, \"Nombre debe tener más de 2 caracteres.\")\r\n .max(50, \"Ha excedido el límite de 50 caracteres.\")\r\n .required(\"Campo Nombre es requerido.\"),\r\n // .test(\"validate-name\", \"El Nombre de sabor ya existe, favor de ingresar otro.\", (value) => {\r\n // let isValid = true;\r\n // let name = value ? value.toLowerCase().trim() : \"\";\r\n // if (this.props.flavors.some(u => u.Name.toLowerCase().trim() === name && u.FlavorTypeId !== this.state.flavor.FlavorTypeId)) {\r\n // isValid = false;\r\n // }\r\n // return isValid;\r\n // }),\r\n ShortName: Yup.string()\r\n .trim()\r\n .matches(ExpresionesRegulares.AlfanumericoSinEspeciales, { message: ErrorMessages.AlfanumericoSinEspecialesError })\r\n .min(3, \"Nombre Corto debe tener más de 2 caracteres.\")\r\n .max(50, \"Ha excedido el límite de 50 caracteres.\")\r\n .required(\"Campo Nombre Corto es requerido.\"),\r\n // .test(\"validate-shorname\", \"El Nombre Corto de sabor ya existe, favor de ingresar otro.\", (value) => {\r\n // let isValid = true;\r\n // let shortName = value ? value.toLowerCase().trim() : \"\";\r\n // if (this.props.flavors.some(u => u.ShortName.toLowerCase().trim() === shortName && u.FlavorTypeId !== this.state.flavor.FlavorTypeId)) {\r\n // isValid = false;\r\n // }\r\n // return isValid;\r\n // }),\r\n Position: Yup.number()\r\n .min(1, \"Ingrese valores mayores a 0.\")\r\n .max(999, \"Ha excedido el límite de caracteres.\")\r\n .required(\"Campo Posición es requerido.\"),\r\n // Image: Yup.mixed()\r\n // .required(\"Campo Imagen es requerido.\")\r\n // .test(\r\n // \"fileFormat\",\r\n // ErrorMessages.PngFormatError,\r\n // value => value && Validators.SUPPORTED_FORMATS.includes(value.type) || (this.state.flavor.UrlImage !== null && this.state.flavor.UrlImage.length > 0)\r\n // )\r\n SegmentationId: Yup.string()\r\n .when([], {\r\n is: () => !this.state.isEditing,\r\n then: Yup.string().required(\"Segmentación es requerido.\").nullable(),\r\n otherwise: Yup.string().notRequired(),\r\n }),\r\n });\r\n\r\n /**\r\n * Previene el submit al dar enter\r\n * @param {*} keyEvent \r\n */\r\n onKeyDown = (keyEvent) => {\r\n if ((keyEvent.charCode || keyEvent.keyCode) === 13) {\r\n keyEvent.preventDefault();\r\n }\r\n }\r\n\r\n render() {\r\n return (\r\n {\r\n let formatValues = { ...values };\r\n formatValues.Name = formatValues.Name.trim();\r\n formatValues.ShortName = formatValues.ShortName.trim();\r\n this.props.save(formatValues)\r\n }}\r\n >\r\n {({ values, touched, errors, handleChange, handleBlur, handleSubmit, setFieldValue, setFieldTouched }) => (\r\n
    \r\n {!this.state.isEditing &&\r\n \r\n
    \r\n \"No hay opciones\"}\r\n onChange={(val) => {\r\n setFieldValue('SegmentationId', val)\r\n }}\r\n onBlur={() => setFieldTouched('SegmentationId', true)}\r\n options={this.state.segments}\r\n getOptionLabel={(objSegment) => {\r\n switch (objSegment.Name) {\r\n case \"Andatti drive\":\r\n return \"Andatti\"\r\n case \"Drive\":\r\n return \"Caffenio\"\r\n case \"momento espresso\":\r\n return \"Momento Espresso\"\r\n default:\r\n return objSegment.Name\r\n }\r\n }}\r\n\r\n getOptionValue={(objSegment) => objSegment.SegmentId}\r\n />\r\n
    \r\n \r\n }\r\n
    \r\n \r\n \r\n \r\n
    \r\n \r\n \r\n \r\n
    \r\n \r\n {\r\n if (event.keyCode === 69 || event.keyCode === 109 || event.keyCode === 110 || event.keyCode === 107\r\n || event.keyCode === 189 ||\r\n event.keyCode === 187||\r\n event.keyCode === 190) {\r\n event.preventDefault();\r\n setFieldValue(\"Position\", values.Position);\r\n return false\r\n } else {\r\n return true\r\n }\r\n }}\r\n onBlur={handleBlur}\r\n placeholder={`La última posición registrada es ${this.getNextMaxPosition() }`}\r\n />\r\n \r\n
    \r\n {/* \r\n
    \r\n \r\n
    \r\n {values.Image !== null &&\r\n\r\n \r\n \r\n\r\n \r\n }\r\n\r\n\r\n\r\n\r\n\r\n
    \r\n {values.Image !== null\r\n && (values.UrlImage === null || values.UrlImage.length === 0)\r\n && \r\n
    \r\n
    \r\n \"\"\r\n
    \r\n
    \r\n
    \r\n }\r\n {values.UrlImage && \r\n
    \r\n
    \r\n \r\n
    \r\n
    \r\n
    } */}\r\n\r\n
    \r\n
    \r\n \r\n Guardar\r\n \r\n
    \r\n
    \r\n \r\n )}\r\n\r\n \r\n );\r\n }\r\n}\r\n\r\n// Definición de los valores por default de las props en caso de no ser recibidas por el padre.\r\nFlavorForm.defaultProps = {\r\n isEditing: false,\r\n flavor: {\r\n ShortName: \"\",\r\n Name: \"\",\r\n Position: \"\",\r\n Image: null,\r\n RecipeName: \"\",\r\n UrlImage: null\r\n },\r\n segments: []\r\n}\r\n\r\nexport default FlavorForm;\r\n","import React, { Component } from 'react';\r\nimport {toast} from 'react-toastify';\r\nimport FlavorForm from './FlavorForm';\r\nimport FlavorsAPI from '../../../services/Flavor';\r\nimport '../../cssComponents.css';\r\nimport Loading from '../../util/loading/Loading';\r\nimport ErrorMessages from '../../../util/validation-error-messages';\r\nimport Modal from '../../util/modal/Modal';\r\n\r\nclass NewFlavor extends Component {\r\n constructor(props){\r\n super(props);\r\n this.state = {\r\n flavor: {...this.props.flavor},\r\n flavors:[],\r\n isLoading: false\r\n };\r\n }\r\n\r\n componentDidMount(){\r\n if (!this.props.location.state) {\r\n this.props.history.push(`/sabores`);\r\n return;\r\n }\r\n this.setState({ flavors: this.props.location.state.flavors })\r\n }\r\n\r\n /**Guarda un nuevo Tipo Sabor */\r\n save = (flavor) => {\r\n this.setState({isLoading: true}, () => { \r\n flavor.Activo = true;\r\n flavor.RecipeName = flavor.ShortName;\r\n FlavorsAPI.create(flavor).then(response => {\r\n this.setState({isLoading: false})\r\n this.props.history.goBack();\r\n toast.success(\"Sabor creado\");\r\n }).catch(err => {\r\n this.setState({isLoading: false})\r\n if(err.response)\r\n toast.error(err.response.data.Message)\r\n else\r\n toast.error(ErrorMessages.SinConexion)\r\n });\r\n \r\n })\r\n }\r\n\r\n render() {\r\n return (\r\n
    \r\n
    \r\n
    \r\n
    \r\n \r\n {this.props.history.goBack()}} className=\"fa fa-arrow-left\">\r\n \r\n
    Nuevo sabor\r\n this.setState({ showModal: true })} className=\"fa fa-question-circle\">\r\n
    \r\n
    \r\n
    \r\n
    \r\n \r\n
    \r\n
    \r\n {this.state.showModal &&\r\n this.setState({ showModal: false })}\r\n >\r\n
    \r\n \r\n Los sabores están directamente relacionadas a las recetas, se usa para identificar las \r\n recetas por sabor en caso de que se requiera.\r\n
    \r\n En los dispositivos del punto de venta se visualizan como una selección más antes de agregar el producto a la orden.\r\n
    \r\n

    \r\n Nombre: es un campo requerido, \r\n debe tener una longitud mínima de 2 a 30 caracteres máximo\r\n y no se debe duplicar. \r\n

    \r\n

    \r\n Nombre corto: es un campo requerido, \r\n debe tener una longitud mínima de 2 a 15 caracteres máximo \r\n y no se debe duplicar.\r\n

    \r\n

    \r\n Posición en Menú: valor numérico que representa el orden de visualización en los dispositivos de izquierda a derecha.\r\n Debe ser mayor a 0, y no se aceptan duplicados.\r\n

    \r\n\r\n

    \r\n Imagen: la imagen será la que se muestre en los puntos de venta, debe ser formato png y es requerido.\r\n

    \r\n
    \r\n \r\n\r\n \r\n }\r\n \r\n
    \r\n );\r\n }\r\n}\r\n\r\nexport default NewFlavor;\r\n","import React, { Component } from 'react';\r\nimport SearchForm from \"../../util/searchform/SearchForm\";\r\nimport TableTemplate from \"../../util/tabletemplate/TableTemplate\";\r\nimport NoItems from \"../../util/noitems/NoItems\";\r\nimport Modal from '../../util/modal/Modal';\r\nimport AcceptModal from '../../util/acceptModal/AcceptModal';\r\nimport FlavorForm from './FlavorForm';\r\nimport Pagination from '../../util/pagination/Pagination';\r\nimport FlavorsAPI from '../../../services/Flavor';\r\nimport { toast } from 'react-toastify';\r\nimport Loading from '../../util/loading/Loading';\r\nimport Validators from '../../../util/validators';\r\n\r\nimport ModoGuiado from \"../../modoGuiado/ModoGuiado\"\r\nimport BtnModoGuiado from '../../util/BtnModoGuiado/BtnModoGuiado'\r\nimport ErrorMessages from '../../../util/validation-error-messages';\r\nimport lodash from 'lodash';\r\nimport roles from '../../../util/strings/roles';\r\n\r\nclass Flavors extends Component {\r\n flavors = [];\r\n\r\n constructor(props){\r\n super(props);\r\n this.state = {\r\n flavors: [],\r\n pageFlavors: [],\r\n filterText: \"\",\r\n flavor: null,\r\n showModal: false,\r\n editing: false,\r\n removeModal: false,\r\n isLoading: false\r\n }\r\n }\r\n\r\n componentWillMount(){\r\n this.setState({isLoading: true})\r\n FlavorsAPI.getAll().then(response => {\r\n \r\n this.setState({flavors: response.data, isLoading: false});\r\n this.flavors = response.data;\r\n }).catch(err => {\r\n this.setState({isLoading: false})\r\n if(err.response)\r\n toast.error(err.response.data.Message)\r\n else\r\n toast.error(ErrorMessages.SinConexion)\r\n })\r\n }\r\n\r\n // Método encargado de recibir el texto en el input de búsqueda y filtrar los elementos en\r\n // la tabla \r\n handleSearchInput = (text) => {\r\n let flavors = this.flavors.filter(flavor => flavor.Name.toLowerCase().normalize(\"NFD\").replace(/[\\u0300-\\u036f]/g, \"\").includes(text.trim().toLowerCase().normalize(\"NFD\").replace(/[\\u0300-\\u036f]/g, \"\")));\r\n let state = this.state;\r\n state.filterText = text;\r\n state.flavors = flavors;\r\n this.setState(state);\r\n }\r\n\r\n /**Redirige a vista de formulario para crear nuevo tipo sabor */\r\n create = () => {\r\n this.props.history.push({pathname:'/sabores/nuevo', state:{flavors: this.flavors}});\r\n }\r\n\r\n edit = (flavor) => {\r\n \r\n this.setState({isLoading: true}, () => {\r\n FlavorsAPI.edit(flavor).then(response => {\r\n let state = {...this.state};\r\n state.flavors[state.flavors.findIndex(c => c.FlavorTypeId === flavor.FlavorTypeId)] = response.data;\r\n state.pageFlavors[state.pageFlavors.findIndex(c => c.FlavorTypeId === flavor.FlavorTypeId)] = response.data;\r\n this.flavors[this.flavors.findIndex(c => c.FlavorTypeId === flavor.FlavorTypeId)] = response.data;\r\n state.isLoading = false;\r\n state.showModal = false;\r\n state.flavor = null;\r\n \r\n this.setState(state, () => toast.success(\"Sabor actualizado\"));\r\n }).catch(err => {\r\n this.setState({isLoading: false});\r\n if(err.response)\r\n toast.error(err.response.data.Message);\r\n else\r\n toast.error(ErrorMessages.SinConexion);\r\n })\r\n });\r\n }\r\n\r\n remove = () => {\r\n this.setState({isLoading: true});\r\n FlavorsAPI.delete(this.state.flavor.FlavorTypeId).then(response => {\r\n let state = {...this.state};\r\n\r\n state.flavors.splice(state.flavors.findIndex(c => c.FlavorTypeId === state.flavor.FlavorTypeId), 1);\r\n state.pageFlavors.splice(state.pageFlavors.findIndex(c => c.FlavorTypeId === state.flavor.FlavorTypeId), 1);\r\n this.flavors.splice(this.flavors.findIndex(c => c.FlavorTypeId === state.flavor.FlavorTypeId), 1);\r\n state.isLoading = false;\r\n state.removeModal = false;\r\n state.flavor = null;\r\n toast.success(\"Sabor eliminado\");\r\n this.setState(state);\r\n }).catch(err => {\r\n this.setState({isLoading: false, flavor: null, removeModal: false});\r\n if(err.response)\r\n toast.error(err.response.data.Message)\r\n else\r\n toast.error(ErrorMessages.SinConexion)\r\n })\r\n }\r\n\r\n render() {\r\n return (\r\n
    \r\n\r\n \r\n\r\n

    Tipo de sabor

    \r\n
    \r\n
    \r\n
    \r\n
    \r\n
    \r\n
    \r\n this.handleSearchInput(t)}\r\n itemName={'Sabor'}\r\n placeholderText = {\"Ingrese nombre de tipo sabor.\"}\r\n />\r\n
    \r\n
    \r\n
    \r\n
    \r\n
    \r\n\r\n
    \r\n
    \r\n
    \r\n {lodash.intersection(localStorage.getItem('role').split(\",\"), [roles.ADMIN, roles.ADMINDRIVE, roles.ESPECIALISTA_DE_PRODUCTO, roles.COORDINADOR_GESTION_OPERACIONES]).length > 0 &&\r\n this.create()}>\r\n \r\n \r\n \r\n Agregar Sabor\r\n \r\n }\r\n
    \r\n
    \r\n
    \r\n
    \r\n \r\n
    \r\n
    \r\n {this.state.flavors.length !== 0 \r\n ? this.setState({showModal: true, flavor: flavor})}\r\n canEdit canDelete \r\n edit={(flavor) => this.setState({showModal: true, flavor: flavor})} \r\n remove={(flavor) => this.setState({removeModal: true, flavor: flavor})}\r\n /> \r\n : }\r\n this.setState({ pageFlavors: flavors })} />\r\n
    \r\n
    \r\n {this.state.showModal && \r\n this.setState({showModal: false, unit: null})}\r\n >\r\n \r\n \r\n }\r\n {this.state.removeModal && this.remove()}\r\n cancel={() => this.setState({removeModal: false})}\r\n modalTitle={\"Eliminar Sabor\"}\r\n />}\r\n \r\n\r\n \r\n\r\n
    \r\n );\r\n }\r\n}\r\n\r\nexport default Flavors;\r\n","import React, { Component } from 'react';\r\nimport Field from '../../util/field/Field';\r\nimport Validators from '../../../util/validators';\r\nimport ErrorMessages from '../../../util/validation-error-messages';\r\nimport ExpresionesRegulares from '../../../util/expresiones-regulares';\r\nimport { Formik } from 'formik';\r\nimport * as Yup from 'yup';\r\nimport lodash from 'lodash';\r\nimport Select from 'react-select';\r\nimport EmpresasAPI from '../../../services/CaffenioEmpresas/Empresas';\r\nimport { toast } from 'react-toastify';\r\n\r\nclass GrainForm extends Component {\r\n\r\n constructor(props) {\r\n super(props);\r\n this.state = {\r\n grain: { ...this.props.grain },\r\n isEditing: this.props.isEditing,\r\n segments: []\r\n }\r\n }\r\n\r\n componentWillMount() {\r\n this.setState({ isLoading: true }, () => {\r\n EmpresasAPI.getAllFilterSegments().then(response => {\r\n let tempSegmentsList = []\r\n response.data.map(obj => {\r\n tempSegmentsList.push(obj)\r\n })\r\n this.setState({ segments: tempSegmentsList });\r\n }).catch(err => {\r\n this.setState({ isLoading: false })\r\n if (err.response)\r\n toast.error(err.response.data.Message)\r\n else\r\n toast.error(ErrorMessages.SinConexion)\r\n })\r\n })\r\n }\r\n\r\n /**Obtiene la posición máxima para recomendar la siguiente */\r\n getNextMaxPosition = () => {\r\n let maxPosition = lodash.maxBy(this.props.grains, function (o) { return o.Position; });\r\n\r\n return maxPosition ? maxPosition.Position : 1;\r\n }\r\n\r\n VALIDATION_SCHEMA = Yup.object({\r\n Description: Yup.string()\r\n .trim()\r\n .matches(ExpresionesRegulares.AlfanumericoSinEspeciales, { message: ErrorMessages.AlfanumericoSinEspecialesError })\r\n .min(3, \"Nombre debe tener más de 2 caracteres.\")\r\n .max(50, \"Ha excedido el límite de 50 caracteres.\")\r\n .required(\"Campo Nombre es requerido.\"),\r\n NombreApp: Yup.string()\r\n .trim()\r\n .matches(ExpresionesRegulares.AlfanumericoSinEspeciales, { message: ErrorMessages.AlfanumericoSinEspecialesError })\r\n .min(3, \"Nombre debe tener más de 2 caracteres.\")\r\n .max(50, \"Ha excedido el límite de 50 caracteres.\")\r\n .required(\"Campo Nombre App es requerido.\"),\r\n // .test(\"validate-name\", \"El Nombre de tipo grano ya existe, favor de ingresar otro.\", (value) => {\r\n // let isValid = true;\r\n // let name = value ? value.toLowerCase().trim() : \"\";\r\n // if (this.props.grains.some(u => u.Description.toLowerCase().trim() === name && u.GrainTypeId !== this.state.grain.GrainTypeId)) {\r\n // isValid = false;\r\n // }\r\n // return isValid;\r\n // }),\r\n Position: Yup.number() \r\n .min(1, \"Ingrese valores mayores a 0.\")\r\n .max(999, \"Ha excedido el límite de caracteres.\")\r\n .required(\"Campo Posición es requerido.\"),\r\n Image: Yup.mixed()\r\n .required(\"Campo Imagen es requerido.\") \r\n .test(\r\n \"fileFormat\",\r\n ErrorMessages.PngFormatError,\r\n value => value && Validators.SUPPORTED_FORMATS.includes(value.type) || (this.state.grain.UrlImage !== null && this.state.grain.UrlImage.length > 0)\r\n ),\r\n SegmentationId: Yup.string()\r\n .when([], {\r\n is: () => !this.state.isEditing,\r\n then: Yup.string().required(\"Segmentación es requerido.\").nullable(),\r\n otherwise: Yup.string().notRequired(),\r\n }),\r\n });\r\n\r\n /**\r\n * Previene el submit al dar enter\r\n * @param {*} keyEvent \r\n */\r\n onKeyDown = (keyEvent) => {\r\n if ((keyEvent.charCode || keyEvent.keyCode) === 13) {\r\n keyEvent.preventDefault();\r\n }\r\n }\r\n\r\n\r\n render() {\r\n return (\r\n {\r\n let formatValues= {...values};\r\n formatValues.Description = formatValues.Description.trim();\r\n formatValues.NombreApp = formatValues.NombreApp.trim();\r\n this.props.save(formatValues)\r\n }}\r\n >\r\n {({ values, touched, errors, handleChange, handleBlur, handleSubmit, setFieldValue, setFieldTouched }) => (\r\n
    \r\n {!this.state.isEditing &&\r\n \r\n
    \r\n \"No hay opciones\"}\r\n onChange={(val) => {\r\n setFieldValue('SegmentationId', val)\r\n }}\r\n onBlur={() => setFieldTouched('SegmentationId', true)}\r\n options={this.state.segments}\r\n getOptionLabel={(objSegment) => {\r\n switch (objSegment.Name) {\r\n case \"Andatti drive\":\r\n return \"Andatti\"\r\n case \"Drive\":\r\n return \"Caffenio\"\r\n case \"momento espresso\":\r\n return \"Momento Espresso\"\r\n default:\r\n return objSegment.Name\r\n }\r\n }}\r\n\r\n getOptionValue={(objSegment) => objSegment.SegmentId}\r\n />\r\n
    \r\n \r\n }\r\n
    \r\n \r\n \r\n \r\n
    \r\n \r\n \r\n \r\n
    \r\n \r\n { \r\n if(event.keyCode === 69 || event.keyCode === 109 || event.keyCode === 110 || event.keyCode === 107\r\n || event.keyCode === 189 ||\r\n event.keyCode === 187||\r\n event.keyCode === 190){\r\n event.preventDefault();\r\n setFieldValue(\"Position\", values.Position);\r\n return false\r\n }else{\r\n return true \r\n }\r\n }}\r\n onBlur={handleBlur}\r\n placeholder={`La última posición registrada es ${this.getNextMaxPosition()}`}\r\n />\r\n \r\n
    \r\n \r\n
    \r\n \r\n
    \r\n {values.Image !== null &&\r\n\r\n \r\n \r\n \r\n }\r\n
    \r\n \r\n {values.Image !== null\r\n && (values.UrlImage === null || values.UrlImage.length === 0)\r\n && \r\n
    \r\n
    \r\n \"\"\r\n
    \r\n
    \r\n
    \r\n }\r\n {values.UrlImage && \r\n
    \r\n
    \r\n \"\"\r\n
    \r\n
    \r\n
    }\r\n\r\n
    \r\n
    \r\n \r\n Guardar\r\n \r\n
    \r\n
    \r\n \r\n )}\r\n\r\n \r\n );\r\n }\r\n}\r\n\r\n// Definición de los valores por default de las props en caso de no ser recibidas por el padre.\r\nGrainForm.defaultProps = {\r\n isEditing: false,\r\n grain: {\r\n Description: \"\",\r\n Position: \"\",\r\n Image: null,\r\n RecipeName: \"\",\r\n UrlImage:null,\r\n NombreApp: \"\"\r\n },\r\n segments: []\r\n}\r\n\r\nexport default GrainForm;\r\n","import React, { Component } from 'react';\r\nimport {toast} from 'react-toastify';\r\nimport GrainForm from './GrainForm';\r\nimport Validators from '../../../util/validators';\r\nimport GrainsAPI from '../../../services/Grain';\r\nimport '../../cssComponents.css';\r\nimport Loading from '../../util/loading/Loading';\r\nimport ErrorMessages from '../../../util/validation-error-messages';\r\nimport Modal from '../../util/modal/Modal';\r\n\r\nclass NewGrain extends Component {\r\n constructor(props){\r\n super(props);\r\n this.state = {\r\n grains:[],\r\n grain: {...this.props.grain},\r\n isLoading: false\r\n };\r\n }\r\n\r\n componentDidMount(){\r\n if (!this.props.location.state) {\r\n this.props.history.push(`/granos`);\r\n return;\r\n }\r\n this.setState({ grains: this.props.location.state.grains })\r\n }\r\n\r\n /**Guarda tipo grano */\r\n save = (grain) => {\r\n grain.Activo = true;\r\n grain.RecipeName = grain.Description;\r\n this.setState({isLoading: true}, () => {\r\n GrainsAPI.create(grain).then(response => {\r\n this.setState({isLoading: false})\r\n this.props.history.goBack();\r\n toast.success(\"Tipo Grano creado\");\r\n }).catch(err => {\r\n this.setState({isLoading: false})\r\n if(err.response)\r\n toast.error(err.response.data.Message)\r\n else\r\n toast.error(ErrorMessages.SinConexion)\r\n });\r\n })\r\n }\r\n\r\n render() {\r\n return (\r\n
    \r\n
    \r\n
    \r\n
    \r\n \r\n {this.props.history.goBack()}} className=\"fa fa-arrow-left\">\r\n \r\n
    Nuevo Tipo Grano\r\n this.setState({ showModal: true })} className=\"fa fa-question-circle\">\r\n
    \r\n \r\n
    \r\n
    \r\n
    \r\n \r\n
    \r\n
    \r\n {this.state.showModal &&\r\n this.setState({ showModal: false })}\r\n >\r\n
    \r\n \r\n Los tipos de grano están directamente relacionadas a las recetas, se usa para identificar las \r\n recetas por tipo de grano en caso de que se requiera.\r\n
    \r\n En los dispositivos del punto de venta se visualizan como una selección más antes de agregar el producto a la orden.\r\n
    \r\n

    \r\n Nombre: es un campo requerido, \r\n debe tener una longitud mínima de 2 a 30 caracteres máximo\r\n y no se debe duplicar. \r\n

    \r\n \r\n

    \r\n Posición en Menú: valor numérico que representa el orden de visualización en los dispositivos de izquierda a derecha.\r\n Debe ser mayor a 0, y no se aceptan duplicados.\r\n

    \r\n\r\n

    \r\n Imagen: la imagen será la que se muestre en los puntos de venta, debe ser formato png y es requerido.\r\n

    \r\n
    \r\n \r\n\r\n \r\n }\r\n \r\n
    \r\n );\r\n }\r\n}\r\n\r\nexport default NewGrain;\r\n","import React, { Component } from 'react';\r\nimport SearchForm from \"../../util/searchform/SearchForm\";\r\nimport TableTemplate from \"../../util/tabletemplate/TableTemplate\";\r\nimport NoItems from \"../../util/noitems/NoItems\";\r\nimport Modal from '../../util/modal/Modal';\r\nimport AcceptModal from '../../util/acceptModal/AcceptModal';\r\nimport GrainForm from './GrainForm';\r\nimport Pagination from '../../util/pagination/Pagination';\r\nimport GrainsAPI from '../../../services/Grain';\r\nimport { toast } from 'react-toastify';\r\nimport Loading from '../../util/loading/Loading';\r\nimport Validators from '../../../util/validators';\r\n\r\nimport ModoGuiado from \"../../modoGuiado/ModoGuiado\"\r\nimport BtnModoGuiado from '../../util/BtnModoGuiado/BtnModoGuiado'\r\nimport ErrorMessages from '../../../util/validation-error-messages';\r\nimport lodash from 'lodash';\r\nimport roles from '../../../util/strings/roles';\r\n\r\nclass Grains extends Component {\r\n grains = [];\r\n\r\n constructor(props){\r\n super(props);\r\n this.state = {\r\n grains: [],\r\n pageGrains: [],\r\n filterText: \"\",\r\n grain: null,\r\n showModal: false,\r\n editing: false,\r\n removeModal: false,\r\n isLoading: true\r\n }\r\n }\r\n\r\n componentWillMount(){\r\n this.setState({isLoading: true})\r\n GrainsAPI.getAll().then(response => {\r\n this.setState({isLoading: false, grains: response.data});\r\n this.grains = response.data;\r\n }).catch(err => {\r\n this.setState({isLoading: false})\r\n if(err.response)\r\n toast.error(err.response.data.Message)\r\n else\r\n toast.error(ErrorMessages.SinConexion)\r\n });\r\n }\r\n\r\n // Método encargado de recibir el texto en el input de búsqueda y filtrar los elementos en\r\n // la tabla \r\n handleSearchInput = (text) => {\r\n let grains = this.grains.filter(grain => grain.Description.toLowerCase().normalize(\"NFD\").replace(/[\\u0300-\\u036f]/g, \"\").includes(text.trim().toLowerCase().normalize(\"NFD\").replace(/[\\u0300-\\u036f]/g, \"\")));\r\n let state = this.state;\r\n state.filterText = text;\r\n state.grains = grains;\r\n this.setState(state);\r\n }\r\n\r\n /**\r\n * Redirecciona a vista para crear un nuevo tipo de grano \r\n */\r\n create = () => {\r\n this.props.history.push({pathname:'/granos/nuevo', state:{ grains : this.grains }});\r\n }\r\n\r\n /** Función para editar un tipo de grano */\r\n edit = (grain) => { \r\n this.setState({isLoading: true}, () => {\r\n GrainsAPI.edit(grain).then(response => {\r\n let state = {...this.state};\r\n state.grains[state.grains.findIndex(c => c.GrainTypeId === grain.GrainTypeId)] = response.data;\r\n state.pageGrains[state.pageGrains.findIndex(c => c.GrainTypeId === grain.GrainTypeId)] = response.data;\r\n this.grains[this.grains.findIndex(c => c.GrainTypeId === grain.GrainTypeId)] = response.data;\r\n state.isLoading = false;\r\n state.showModal = false;\r\n state.grain = null;\r\n this.setState(state, () => toast.success(\"Tipo Grano actualizado\"));\r\n }).catch(err => {\r\n this.setState({isLoading: false});\r\n if(err.response)\r\n toast.error(err.response.data.Message);\r\n else\r\n toast.error(ErrorMessages.SinConexion);\r\n })\r\n });\r\n \r\n }\r\n\r\n remove = () => {\r\n this.setState({isLoading: true});\r\n GrainsAPI.delete(this.state.grain.GrainTypeId).then(response => {\r\n let state = {...this.state};\r\n\r\n state.grains.splice(state.grains.findIndex(c => c.GrainTypeId === state.grain.GrainTypeId), 1);\r\n state.pageGrains.splice(state.pageGrains.findIndex(c => c.GrainTypeId === state.grain.GrainTypeId), 1);\r\n this.grains.splice(this.grains.findIndex(c => c.GrainTypeId === state.grain.GrainTypeId), 1);\r\n state.isLoading = false;\r\n state.removeModal = false;\r\n state.grain = null;\r\n\r\n this.setState(state, () => toast.success(\"Tipo Grano eliminado\"));\r\n }).catch(err => {\r\n this.setState({isLoading: false, grain: null, removeModal: false});\r\n if(err.response)\r\n toast.error(err.response.data.Message)\r\n else\r\n toast.error(ErrorMessages.SinConexion)\r\n })\r\n }\r\n\r\n render() {\r\n return (\r\n
    \r\n\r\n \r\n\r\n

    Tipo de grano

    \r\n
    \r\n
    \r\n
    \r\n
    \r\n
    \r\n
    \r\n this.handleSearchInput(t)}\r\n itemName={'Tipo Grano'}\r\n placeholderText={\"Ingrese nombre de tipo de grano.\"}\r\n />\r\n
    \r\n
    \r\n
    \r\n
    \r\n
    \r\n\r\n
    \r\n
    \r\n
    \r\n {lodash.intersection(localStorage.getItem('role').split(\",\"), [roles.ADMIN, roles.ADMINDRIVE, roles.COORDINADOR_GESTION_OPERACIONES, roles.ESPECIALISTA_DE_PRODUCTO]).length > 0 &&\r\n this.create()}>\r\n \r\n \r\n \r\n Agregar Tipo Grano\r\n \r\n }\r\n
    \r\n
    \r\n
    \r\n
    \r\n \r\n
    \r\n
    \r\n {this.state.grains.length !== 0 \r\n ? this.setState({showModal: true, grain: grain})}\r\n canEdit canDelete \r\n edit={(grain) => this.setState({showModal: true, grain: grain})} \r\n remove={(grain) => this.setState({removeModal: true, grain: grain})}\r\n /> \r\n : }\r\n this.setState({ pageGrains: grains })} />\r\n
    \r\n
    \r\n {this.state.showModal && \r\n this.setState({showModal: false, unit: null})}\r\n >\r\n \r\n \r\n }\r\n {this.state.removeModal && this.remove()}\r\n cancel={() => this.setState({removeModal: false})}\r\n modalTitle={\"Eliminar Tipo Grano\"}\r\n />}\r\n \r\n\r\n \r\n\r\n
    \r\n );\r\n }\r\n}\r\n\r\nexport default Grains;\r\n","import React, { Component } from 'react';\r\nimport Field from '../../util/field/Field';\r\nimport Validators from '../../../util/validators';\r\nimport ErrorMessages from '../../../util/validation-error-messages';\r\nimport ExpresionesRegulares from '../../../util/expresiones-regulares';\r\nimport { Formik } from 'formik';\r\nimport * as Yup from 'yup';\r\nimport lodash from 'lodash';\r\nimport Select from 'react-select';\r\nimport EmpresasAPI from '../../../services/CaffenioEmpresas/Empresas';\r\nimport { toast } from 'react-toastify';\r\n\r\nclass MilkForm extends Component {\r\n\r\n constructor(props) {\r\n super(props);\r\n this.state = {\r\n milk: { ...this.props.milk },\r\n isEditing: this.props.isEditing,\r\n segments: []\r\n }\r\n }\r\n\r\n componentWillMount() {\r\n this.setState({ isLoading: true }, () => {\r\n EmpresasAPI.getAllFilterSegments().then(response => {\r\n let tempSegmentsList = []\r\n response.data.map(obj => {\r\n tempSegmentsList.push(obj)\r\n })\r\n this.setState({ segments: tempSegmentsList });\r\n }).catch(err => {\r\n this.setState({ isLoading: false })\r\n if (err.response)\r\n toast.error(err.response.data.Message)\r\n else\r\n toast.error(ErrorMessages.SinConexion)\r\n })\r\n })\r\n }\r\n\r\n /**Obtiene la posición máxima para recomendar la siguiente */\r\n getNextMaxPosition = () => {\r\n let maxPosition = lodash.maxBy(this.props.milks, function (o) { return o.Position; });\r\n\r\n return maxPosition ? maxPosition.Position : 1;\r\n }\r\n\r\n VALIDATION_SCHEMA = Yup.object({\r\n Description: Yup.string()\r\n .trim()\r\n .matches(ExpresionesRegulares.AlfanumericoSinEspeciales, { message: ErrorMessages.AlfanumericoSinEspecialesError })\r\n .min(3, \"Nombre debe tener más de 2 caracteres.\")\r\n .max(50, \"Ha excedido el límite de 50 caracteres.\")\r\n .required(\"Campo Nombre es requerido.\"),\r\n // .test(\"validate-name\", \"El Nombre de tipo grano ya existe, favor de ingresar otro.\", (value) => {\r\n // let isValid = true;\r\n // let name = value ? value.toLowerCase().trim() : \"\";\r\n // if (this.props.milks.some(u => u.Description.toLowerCase().trim() === name && u.MilkTypeId !== this.state.milk.MilkTypeId)) {\r\n // isValid = false;\r\n // }\r\n // return isValid;\r\n // }),\r\n Position: Yup.number()\r\n .min(1, \"Ingrese valores mayores a 0.\")\r\n .max(999, \"Ha excedido el límite de caracteres.\")\r\n .required(\"Campo Posición es requerido.\"),\r\n Image: Yup.mixed()\r\n .required(\"Campo Imagen es requerido.\")\r\n // .test(\r\n // \"fileSize\",\r\n // \"El archivo es muy grade.\",\r\n // value => value && value.size >= FILE_SIZE\r\n // )\r\n .test(\r\n \"fileFormat\",\r\n ErrorMessages.PngFormatError,\r\n value => value && Validators.SUPPORTED_FORMATS.includes(value.type) || (this.state.milk.UrlImage !== null && this.state.milk.UrlImage.length > 0)\r\n ),\r\n SegmentationId: Yup.string()\r\n .when([], {\r\n is: () => !this.state.isEditing,\r\n then: Yup.string().required(\"Segmentación es requerido.\").nullable(),\r\n otherwise: Yup.string().notRequired(),\r\n }),\r\n });\r\n\r\n /**\r\n * Previene el submit al dar enter\r\n * @param {*} keyEvent \r\n */\r\n onKeyDown = (keyEvent) => {\r\n if ((keyEvent.charCode || keyEvent.keyCode) === 13) {\r\n keyEvent.preventDefault();\r\n }\r\n }\r\n render() {\r\n return (\r\n {\r\n let formatValues = { ...values };\r\n formatValues.Description = formatValues.Description.trim();\r\n this.props.save(formatValues)\r\n }}\r\n >\r\n {({ values, touched, errors, handleChange, handleBlur, handleSubmit, setFieldValue, setFieldTouched }) => (\r\n
    \r\n {!this.state.isEditing &&\r\n \r\n
    \r\n \"No hay opciones\"}\r\n onChange={(val) => {\r\n setFieldValue('SegmentationId', val)\r\n }}\r\n onBlur={() => setFieldTouched('SegmentationId', true)}\r\n options={this.state.segments}\r\n getOptionLabel={(objSegment) => {\r\n switch (objSegment.Name) {\r\n case \"Andatti drive\":\r\n return \"Andatti\"\r\n case \"Drive\":\r\n return \"Caffenio\"\r\n case \"momento espresso\":\r\n return \"Momento Espresso\"\r\n default:\r\n return objSegment.Name\r\n }\r\n }}\r\n\r\n getOptionValue={(objSegment) => objSegment.SegmentId}\r\n />\r\n
    \r\n \r\n } \r\n
    \r\n \r\n \r\n \r\n
    \r\n \r\n {\r\n if (event.keyCode === 69 || event.keyCode === 109 || event.keyCode === 110 || event.keyCode === 107\r\n || event.keyCode === 189 ||\r\n event.keyCode === 187 ||\r\n event.keyCode === 190) {\r\n event.preventDefault();\r\n setFieldValue(\"Position\", values.Position);\r\n return false\r\n } else {\r\n return true\r\n }\r\n }}\r\n onBlur={handleBlur}\r\n placeholder={`La última posición registrada es ${this.getNextMaxPosition()}`}\r\n />\r\n \r\n
    \r\n \r\n
    \r\n \r\n
    \r\n {values.Image !== null &&\r\n\r\n \r\n \r\n \r\n }\r\n
    \r\n {values.Image !== null\r\n && (values.UrlImage === null || values.UrlImage.length === 0)\r\n && \r\n
    \r\n
    \r\n \"\"\r\n
    \r\n
    \r\n
    \r\n }\r\n {values.UrlImage && \r\n
    \r\n
    \r\n \r\n
    \r\n
    \r\n
    }\r\n\r\n
    \r\n
    \r\n \r\n Guardar\r\n \r\n
    \r\n
    \r\n \r\n )}\r\n\r\n \r\n );\r\n }\r\n}\r\n\r\n// Definición de los valores por default de las props en caso de no ser recibidas por el padre.\r\nMilkForm.defaultProps = {\r\n isEditing: false,\r\n milk: {\r\n Description: \"\",\r\n Position: \"\",\r\n UrlImage: null,\r\n RecipeName: \"\",\r\n Image: null\r\n },\r\n segments: []\r\n}\r\n\r\nexport default MilkForm;\r\n","import React, { Component } from 'react';\r\nimport {toast} from 'react-toastify';\r\nimport MilkForm from './MilkForm';\r\nimport Validators from '../../../util/validators';\r\nimport MilksAPI from '../../../services/Milk';\r\nimport '../../cssComponents.css';\r\nimport Loading from '../../util/loading/Loading';\r\nimport ErrorMessages from '../../../util/validation-error-messages';\r\nimport Modal from '../../util/modal/Modal';\r\n\r\nclass NewMilk extends Component {\r\n constructor(props){\r\n super(props);\r\n this.state = {\r\n milks:[],\r\n milk: {...this.props.milk},\r\n isLoading: false\r\n };\r\n }\r\n\r\n componentDidMount(){\r\n if (!this.props.location.state) {\r\n this.props.history.push(`/leches`);\r\n return;\r\n }\r\n this.setState({ milks: this.props.location.state.milks })\r\n }\r\n\r\n /**Función para guardar nuevo tipo de leche */\r\n save = (milk) => { \r\n milk.Activo = true;\r\n milk.RecipeName = milk.Description; \r\n this.setState({isLoading: true}, () => {\r\n MilksAPI.create(milk).then(response => {\r\n this.setState({isLoading: false})\r\n this.props.history.goBack();\r\n toast.success(\"Tipo Leche creado\");\r\n }).catch(err => {\r\n this.setState({isLoading: false})\r\n if(err.response)\r\n toast.error(err.response.data.Message)\r\n else\r\n toast.error(ErrorMessages.SinConexion)\r\n });\r\n })\r\n \r\n }\r\n\r\n render() {\r\n return (\r\n
    \r\n
    \r\n
    \r\n
    \r\n \r\n {this.props.history.goBack()}} className=\"fa fa-arrow-left\">\r\n \r\n
    Nuevo Tipo Leche\r\n this.setState({ showModal: true })} className=\"fa fa-question-circle\">\r\n
    \r\n \r\n
    \r\n
    \r\n
    \r\n \r\n
    \r\n
    \r\n {this.state.showModal &&\r\n this.setState({ showModal: false })}\r\n >\r\n
    \r\n \r\n Los tipos de leche están directamente relacionadas a las recetas, se usa para identificar las \r\n recetas por tipo de leche en caso de que se requiera.\r\n
    \r\n En los dispositivos del punto de venta se visualizan como una selección más antes de agregar el producto a la orden.\r\n
    \r\n

    \r\n Nombre: es un campo requerido, \r\n debe tener una longitud mínima de 2 a 30 caracteres máximo\r\n y no se debe duplicar. \r\n

    \r\n \r\n

    \r\n Posición en Menú: valor numérico que representa el orden de visualización en los dispositivos de izquierda a derecha.\r\n Debe ser mayor a 0, y no se aceptan duplicados.\r\n

    \r\n\r\n

    \r\n Imagen: la imagen será la que se muestre en los puntos de venta, debe ser formato png y es requerido.\r\n

    \r\n
    \r\n \r\n\r\n \r\n }\r\n \r\n
    \r\n );\r\n }\r\n}\r\n\r\nexport default NewMilk;\r\n","import React, { Component } from 'react';\r\nimport SearchForm from \"../../util/searchform/SearchForm\";\r\nimport TableTemplate from \"../../util/tabletemplate/TableTemplate\";\r\nimport NoItems from \"../../util/noitems/NoItems\";\r\nimport Modal from '../../util/modal/Modal';\r\nimport AcceptModal from '../../util/acceptModal/AcceptModal';\r\nimport MilkForm from './MilkForm';\r\nimport Pagination from '../../util/pagination/Pagination';\r\nimport Loading from '../../util/loading/Loading';\r\nimport MilksAPI from '../../../services/Milk';\r\nimport { toast } from 'react-toastify';\r\nimport Validators from '../../../util/validators';\r\n\r\nimport ModoGuiado from \"../../modoGuiado/ModoGuiado\"\r\nimport BtnModoGuiado from '../../util/BtnModoGuiado/BtnModoGuiado'\r\nimport ErrorMessages from '../../../util/validation-error-messages';\r\nimport lodash from 'lodash';\r\nimport roles from '../../../util/strings/roles';\r\n\r\nclass Milks extends Component {\r\n milks = [];\r\n\r\n constructor(props){\r\n super(props);\r\n this.state = {\r\n milks: [],\r\n pageMilks: [],\r\n filterText: \"\",\r\n milk: null,\r\n showModal: false,\r\n editing: false,\r\n removeModal: false,\r\n isLoading: false\r\n }\r\n }\r\n\r\n componentWillMount(){\r\n this.setState({isLoading: true});\r\n MilksAPI.getAll().then(response => {\r\n this.setState({isLoading: false, milks: response.data});\r\n this.milks = response.data;\r\n }).catch(err => {\r\n this.setState({isLoading: false})\r\n if(err.response)\r\n toast.error(err.response.data.Message)\r\n else\r\n toast.error(ErrorMessages.SinConexion)\r\n });\r\n }\r\n\r\n // Método encargado de recibir el texto en el input de búsqueda y filtrar los elementos en\r\n // la tabla \r\n handleSearchInput = (text) => {\r\n let milks = this.milks.filter(milk => milk.Description.toLowerCase().normalize(\"NFD\").replace(/[\\u0300-\\u036f]/g, \"\").includes(text.trim().toLowerCase().normalize(\"NFD\").replace(/[\\u0300-\\u036f]/g, \"\")));\r\n let state = this.state;\r\n state.filterText = text;\r\n state.milks = milks;\r\n this.setState(state);\r\n\r\n }\r\n\r\n /**Redirige a la vista para crear un nuevo tipo de leche */\r\n create = () => {\r\n this.props.history.push({pathname: '/leches/nueva', state: {milks: this.milks}});\r\n }\r\n\r\n /** Función para editar tipo de leche */\r\n edit = (milk) => { \r\n this.setState({isLoading: true}, () => {\r\n MilksAPI.edit(milk).then(response => {\r\n let state = {...this.state};\r\n state.milks[state.milks.findIndex(c => c.MilkTypeId === milk.MilkTypeId)] = response.data;\r\n state.pageMilks[state.pageMilks.findIndex(c => c.MilkTypeId === milk.MilkTypeId)] = response.data;\r\n this.milks[this.milks.findIndex(c => c.MilkTypeId === milk.MilkTypeId)] = response.data;\r\n state.isLoading = false;\r\n state.showModal = false;\r\n state.milk = null;\r\n this.setState(state, () => toast.success(\"Tipo Leche actualizada\"));\r\n }).catch(err => {\r\n this.setState({isLoading: false});\r\n if(err.response)\r\n toast.error(err.response.data.Message); \r\n else\r\n toast.error(ErrorMessages.SinConexion); \r\n })\r\n });\r\n \r\n \r\n }\r\n\r\n remove = () => {\r\n this.setState({isLoading: true});\r\n MilksAPI.delete(this.state.milk.MilkTypeId).then(response => {\r\n let state = {...this.state};\r\n\r\n state.milks.splice(state.milks.findIndex(c => c.MilkTypeId === state.milk.MilkTypeId), 1);\r\n state.pageMilks.splice(state.pageMilks.findIndex(c => c.MilkTypeId === state.milk.MilkT), 1);\r\n this.milks.splice(this.milks.findIndex(c => c.MilkTypeId === state.milk.MilkTypeId), 1);\r\n \r\n state.isLoading = false;\r\n state.removeModal = false;\r\n state.milk = null;\r\n\r\n this.setState(state, () => toast.success(\"Tipo Leche eliminada\"));\r\n }).catch(err => {\r\n this.setState({isLoading: false, milk: null, removeModal: false});\r\n if(err.response)\r\n toast.error(err.response.data.Message)\r\n else\r\n toast.error(ErrorMessages.SinConexion)\r\n })\r\n }\r\n\r\n render() {\r\n return (\r\n
    \r\n\r\n \r\n\r\n

    Tipo de leche

    \r\n
    \r\n
    \r\n
    \r\n
    \r\n
    \r\n
    \r\n this.handleSearchInput(t)}\r\n itemName={'Tipo Leche'}\r\n placeholderText={\"Ingrese nombre de tipo de leche.\"}\r\n />\r\n
    \r\n
    \r\n
    \r\n
    \r\n
    \r\n\r\n
    \r\n
    \r\n
    \r\n {lodash.intersection(localStorage.getItem('role').split(\",\"), [roles.ADMIN, roles.ADMINDRIVE, roles.ESPECIALISTA_DE_PRODUCTO, roles.COORDINADOR_GESTION_OPERACIONES]).length > 0 &&\r\n this.create()}>\r\n \r\n \r\n \r\n Agregar Tipo Leche\r\n \r\n }\r\n
    \r\n
    \r\n
    \r\n
    \r\n \r\n
    \r\n
    \r\n {this.state.milks.length !== 0 \r\n ? this.setState({showModal: true, milk: milk})}\r\n canEdit canDelete \r\n edit={(milk) => this.setState({showModal: true, milk: milk})} \r\n remove={(milk) => this.setState({removeModal: true, milk: milk})}\r\n /> \r\n : }\r\n this.setState({ pageMilks: milks })} />\r\n
    \r\n
    \r\n {this.state.showModal && \r\n this.setState({showModal: false, unit: null})}\r\n >\r\n \r\n \r\n }\r\n {this.state.removeModal && this.remove()}\r\n cancel={() => this.setState({removeModal: false})}\r\n modalTitle={\"Eliminar Tipo Leche\"}\r\n />}\r\n \r\n\r\n \r\n\r\n
    \r\n );\r\n }\r\n}\r\n\r\nexport default Milks;\r\n","import React, { Component } from 'react';\r\nimport Field from '../../util/field/Field';\r\nimport Validators from '../../../util/validators';\r\nimport ErrorMessages from '../../../util/validation-error-messages';\r\nimport ExpresionesRegulares from '../../../util/expresiones-regulares';\r\nimport AcceptModal from '../../util/acceptModal/AcceptModal';\r\nimport { Formik } from 'formik';\r\nimport * as Yup from 'yup';\r\nimport lodash from 'lodash';\r\nimport Select from 'react-select';\r\nimport { toast } from 'react-toastify';\r\nimport EmpresasAPI from '../../../services/CaffenioEmpresas/Empresas';\r\n\r\nclass PresentationForm extends Component {\r\n\r\n constructor(props) {\r\n super(props);\r\n this.state = {\r\n presentation: { ...this.props.presentation },\r\n isEditing: this.props.isEditing,\r\n fileName: \"Archivo\",\r\n segments: []\r\n }\r\n }\r\n\r\n componentWillMount() {\r\n this.setState({ isLoading: true }, () => {\r\n EmpresasAPI.getAllFilterSegments().then(response => {\r\n let tempSegmentsList = []\r\n response.data.map(obj => {\r\n tempSegmentsList.push(obj)\r\n })\r\n this.setState({ segments: tempSegmentsList });\r\n }).catch(err => {\r\n this.setState({ isLoading: false })\r\n if (err.response)\r\n toast.error(err.response.data.Message)\r\n else\r\n toast.error(ErrorMessages.SinConexion)\r\n })\r\n })\r\n }\r\n\r\n /**Obtiene la posición máxima para recomendar la siguiente */\r\n getNextMaxPosition = () => {\r\n let maxPosition = lodash.maxBy(this.props.presentations, function (o) { return o.Position; });\r\n\r\n return maxPosition ? maxPosition.Position : 1;\r\n }\r\n\r\n VALIDATION_SCHEMA = Yup.object({\r\n Name: Yup.string()\r\n .trim()\r\n .matches(ExpresionesRegulares.AlfanumericoSinEspeciales, { message: ErrorMessages.AlfanumericoSinEspecialesError })\r\n .min(3, \"Nombre debe tener más de 2 caracteres.\")\r\n .max(50, \"Ha excedido el límite de 50 caracteres.\")\r\n .required(\"Campo Nombre es requerido.\"),\r\n // .test(\"validate-name\", \"El Nombre de presentación ya existe, favor de ingresar otro.\", (value) => {\r\n // let isValid = true;\r\n // let name = value ? value.toLowerCase().trim() : \"\";\r\n // if (this.props.presentations.some(u => u.Name.toLowerCase().trim() === name && u.PresentationId !== this.state.presentation.PresentationId)) {\r\n // isValid = false;\r\n // }\r\n // return isValid;\r\n // }),\r\n NombreApp: Yup.string()\r\n .trim()\r\n .matches(ExpresionesRegulares.AlfanumericoSinEspeciales, { message: ErrorMessages.AlfanumericoSinEspecialesError })\r\n .min(3, \"Nombre App debe tener más de 2 caracteres.\")\r\n .max(50, \"Ha excedido el límite de 50 caracteres.\")\r\n .required(\"Campo Nombre App es requerido.\"),\r\n Position: Yup.number()\r\n .min(1, \"Ingrese valores mayores a 0.\")\r\n .max(999, \"Ha excedido el límite de caracteres.\")\r\n .required(\"Campo Posición es requerido.\"),\r\n // Image: Yup.mixed()\r\n // .required(\"Campo Imagen es requerido.\")\r\n // .test(\r\n // \"fileFormat\",\r\n // ErrorMessages.PngFormatError,\r\n // value => value && Validators.SUPPORTED_FORMATS.includes(value.type) || (this.state.presentation.URLImagen !== null && this.state.presentation.URLImagen.length > 0)\r\n // )\r\n SegmentationId: Yup.string()\r\n .when([], {\r\n is: () => !this.state.isEditing,\r\n then: Yup.string().required(\"Segmentación es requerido.\").nullable(),\r\n otherwise: Yup.string().notRequired(),\r\n }),\r\n });\r\n\r\n /**\r\n * Previene el submit al dar enter\r\n * @param {*} keyEvent \r\n */\r\n onKeyDown = (keyEvent) => {\r\n if ((keyEvent.charCode || keyEvent.keyCode) === 13) {\r\n keyEvent.preventDefault();\r\n }\r\n }\r\n\r\n render() {\r\n return (\r\n\r\n {\r\n let formatValues = { ...values };\r\n formatValues.Name = formatValues.Name.trim()\r\n formatValues.NombreApp = formatValues.NombreApp.trim();\r\n this.props.save(formatValues)\r\n }}\r\n >\r\n {({ values, touched, errors, handleChange, handleBlur, handleSubmit, setFieldValue, setFieldTouched }) => (\r\n
    \r\n {!this.state.isEditing &&\r\n \r\n
    \r\n\r\n \"No hay opciones\"}\r\n onChange={(val) => {\r\n setFieldValue('SegmentationId', val)\r\n }}\r\n onBlur={() => setFieldTouched('SegmentationId', true)}\r\n options={this.state.segments}\r\n getOptionLabel={(objSegment) => {\r\n switch (objSegment.Name) {\r\n case \"Andatti drive\":\r\n return \"Andatti\"\r\n case \"Drive\":\r\n return \"Caffenio\"\r\n case \"momento espresso\":\r\n return \"Momento Espresso\"\r\n default:\r\n return objSegment.Name\r\n }\r\n }}\r\n\r\n getOptionValue={(objSegment) => objSegment.SegmentId}\r\n />\r\n
    \r\n \r\n }\r\n
    \r\n \r\n \r\n \r\n
    \r\n \r\n \r\n \r\n
    \r\n \r\n {\r\n if (event.keyCode === 69 || event.keyCode === 109 || event.keyCode === 110 || event.keyCode === 107\r\n || event.keyCode === 189 ||\r\n event.keyCode === 187 ||\r\n event.keyCode === 190) {\r\n event.preventDefault();\r\n setFieldValue(\"Position\", values.Position);\r\n return false\r\n } else {\r\n return true\r\n }\r\n }}\r\n onBlur={handleBlur}\r\n placeholder={`La última posición registrada es ${this.getNextMaxPosition()}`}\r\n />\r\n \r\n
    \r\n {this.state.isEditing &&\r\n \r\n \r\n \r\n }\r\n\r\n
    \r\n {/* \r\n
    \r\n \r\n
    \r\n {values.Image &&\r\n \r\n \r\n \r\n }\r\n\r\n\r\n\r\n
    \r\n {values.Image !== null\r\n && (values.URLImagen === null || values.URLImagen.length === 0)\r\n && \r\n
    \r\n
    \r\n \"\"\r\n
    \r\n
    \r\n
    \r\n\r\n }\r\n {values.URLImagen && \r\n
    \r\n
    \r\n \"\"\r\n
    \r\n
    \r\n
    } */}\r\n\r\n {\r\n this.state.modalConfirmChangeStatus && {\r\n setFieldValue('Active', !values.Active)\r\n this.setState({ modalConfirmChangeStatus: false }, () => setFieldValue('Active', !values.Active));\r\n }}\r\n cancel={() => this.setState({ modalConfirmChangeStatus: false })}\r\n modalTitle={\"Desactivar Presentación\"}\r\n modalBody={\"¿Está seguro(a) de desactivar la presentación?\"}\r\n />\r\n }\r\n
    \r\n
    \r\n \r\n Guardar\r\n \r\n
    \r\n
    \r\n \r\n )}\r\n\r\n \r\n );\r\n }\r\n}\r\n\r\n// Definición de los valores por default de las props en caso de no ser recibidas por el padre.\r\nPresentationForm.defaultProps = {\r\n isEditing: false,\r\n presentation: {\r\n Name: \"\",\r\n Position: \"\",\r\n URLIcon: \"\",\r\n RecipeName: \"\",\r\n Active: true,\r\n Image: null,\r\n URLImagen: null,\r\n NombreApp: \"\"\r\n },\r\n segments: []\r\n}\r\n\r\nexport default PresentationForm;\r\n","import React, { Component } from 'react';\r\nimport { toast } from 'react-toastify';\r\nimport PresentationForm from './PresentationForm';\r\nimport PresentationsAPI from '../../../services/Presentations';\r\nimport '../../cssComponents.css';\r\nimport Loading from '../../util/loading/Loading';\r\nimport Validators from '../../../util/validators';\r\nimport ErrorMessages from '../../../util/validation-error-messages';\r\n\r\nimport Modal from '../../util/modal/Modal';\r\n\r\nclass NewPresentation extends Component {\r\n constructor(props) {\r\n super(props);\r\n this.state = {\r\n presentation: { ...this.props.presentation },\r\n presentations:[],\r\n isLoading: false\r\n };\r\n }\r\n\r\n componentDidMount(){\r\n if (!this.props.location.state) {\r\n this.props.history.push(`/presentaciones`);\r\n return;\r\n }\r\n this.setState({ presentations: this.props.location.state.presentations })\r\n }\r\n\r\n /**Funcion para crear una nueva presentacion */\r\n save = (presentation) => {\r\n presentation.Active = !presentation.Active ? false : presentation.Active;\r\n presentation.RecipeName = presentation.Name;\r\n this.setState({ isLoading: true }, () => {\r\n PresentationsAPI.create(presentation).then(response => {\r\n this.setState({ isLoading: false })\r\n toast.success(\"Presentación creada\");\r\n this.props.history.goBack();\r\n }).catch(err => {\r\n this.setState({ isLoading: false })\r\n if (err.response)\r\n toast.error(err.response.data.Message);\r\n else\r\n toast.error(ErrorMessages.SinConexion);\r\n })\r\n })\r\n }\r\n\r\n render() {\r\n return (\r\n
    \r\n
    \r\n
    \r\n
    \r\n \r\n { this.props.history.goBack() }} className=\"fa fa-arrow-left\">\r\n \r\n
    Nueva presentación\r\n this.setState({ showModal: true })} className=\"fa fa-question-circle\">\r\n
    \r\n \r\n
    \r\n
    \r\n
    \r\n \r\n
    \r\n
    \r\n {this.state.showModal &&\r\n this.setState({ showModal: false })}\r\n >\r\n
    \r\n \r\n \r\n Las presentaciones están directamente relacionadas a las recetas, se usa para identificar las \r\n presentaciones que aplican para la receta.\r\n
    \r\n En los dispositivos del punto de venta se visualizan como la selección del tamaño antes de agregar el producto a la orden.\r\n
    \r\n

    \r\n Nombre: es un campo requerido, \r\n debe tener una longitud mínima de 2 a 30 caracteres máximo\r\n y no se debe duplicar. \r\n

    \r\n \r\n

    \r\n Posición en Menú: valor numérico que representa el orden de visualización en los dispositivos de izquierda a derecha.\r\n Debe ser mayor a 0, y no se aceptan duplicados.\r\n

    \r\n\r\n

    \r\n Imagen: la imagen será la que se muestre en los puntos de venta, debe ser formato png y es requerido.\r\n

    \r\n
    \r\n \r\n\r\n \r\n }\r\n \r\n
    \r\n );\r\n }\r\n}\r\n\r\n\r\n\r\nexport default NewPresentation;\r\n","import React, { Component } from 'react';\r\nimport SearchForm from \"../../util/searchform/SearchForm\";\r\nimport TableTemplate from \"../../util/tabletemplate/TableTemplate\";\r\nimport NoItems from \"../../util/noitems/NoItems\";\r\nimport { toast } from \"react-toastify\";\r\nimport Modal from '../../util/modal/Modal';\r\nimport AcceptModal from '../../util/acceptModal/AcceptModal';\r\nimport PresentationForm from './PresentationForm';\r\nimport PresentationsAPI from '../../../services/Presentations';\r\nimport Pagination from '../../util/pagination/Pagination';\r\n\r\nimport ModoGuiado from \"../../modoGuiado/ModoGuiado\"\r\nimport BtnModoGuiado from '../../util/BtnModoGuiado/BtnModoGuiado'\r\nimport ErrorMessages from '../../../util/validation-error-messages';\r\nimport Loading from '../../util/loading/Loading';\r\nimport Field from '../../util/field/Field';\r\nimport lodash from 'lodash';\r\nimport roles from '../../../util/strings/roles';\r\n\r\nclass Presentations extends Component {\r\n presentations = [];\r\n\r\n constructor(props) {\r\n super(props);\r\n this.state = {\r\n presentations: [],\r\n pagePresentations: [],\r\n filterText: \"\",\r\n searchSwitch: true,\r\n presentation: null,\r\n showModal: false,\r\n editing: false,\r\n removeModal: false,\r\n modalConfirmChangeStatus: false,\r\n isLoading: false\r\n }\r\n }\r\n\r\n componentWillMount() {\r\n this.setState({ isLoading: true }, () => {\r\n PresentationsAPI.getAll().then(response => {\r\n this.setState({ presentations: response.data, isLoading: false });\r\n this.presentations = response.data;\r\n console.log(response)\r\n }).catch(err => {\r\n this.setState({ isLoading: false })\r\n if (err.response)\r\n toast.error(err.response.data.Message)\r\n else\r\n toast.error(ErrorMessages.SinConexion)\r\n })\r\n })\r\n }\r\n\r\n // Método encargado de recibir el texto en el input de búsqueda y filtrar los elementos en\r\n // la tabla \r\n handleSearchInput = (text) => {\r\n let presentations = this.presentations.filter(presentation =>\r\n presentation.Name.toLowerCase().normalize(\"NFD\").replace(/[\\u0300-\\u036f]/g, \"\").includes(text.trim().toLowerCase().normalize(\"NFD\").replace(/[\\u0300-\\u036f]/g, \"\"))\r\n && presentation.Active === this.state.searchSwitch\r\n );\r\n let state = this.state;\r\n state.filterText = text;\r\n state.presentations = presentations;\r\n this.setState(state);\r\n }\r\n\r\n /**Función para actualizar el filtrado de la data */\r\n handleFilterData = () => {\r\n let presentations = this.presentations.filter(presentation =>\r\n presentation.Name.toLowerCase().normalize(\"NFD\").replace(/[\\u0300-\\u036f]/g, \"\").includes(this.state.filterText.trim().toLowerCase().normalize(\"NFD\").replace(/[\\u0300-\\u036f]/g, \"\"))\r\n && presentation.Active === this.state.searchSwitch\r\n );\r\n\r\n this.setState({ presentations: presentations });\r\n }\r\n\r\n /**Redirige a vista para crear nueva presentacion */\r\n create = () => {\r\n this.props.history.push({ pathname: '/presentaciones/nueva', state: { presentations: this.presentations } });\r\n }\r\n\r\n /** Funcion para editar una presentacion */\r\n edit = (presentation) => {\r\n this.setState({ isLoading: true }, () => {\r\n PresentationsAPI.edit(presentation, presentation.PresentationId).then(response => {\r\n let state = { ...this.state };\r\n state.presentations[state.presentations.findIndex(u => u.PresentationId === presentation.PresentationId)] = response.data;\r\n state.pagePresentations[state.pagePresentations.findIndex(u => u.PresentationId === presentation.PresentationId)] = response.data;\r\n this.presentations[this.presentations.findIndex(u => u.PresentationId === presentation.PresentationId)] = response.data;\r\n state.showModal = false;\r\n state.isLoading = false\r\n this.setState(state, () => {\r\n this.handleFilterData();\r\n toast.success(\"Presentación actualizada\");\r\n });\r\n }).catch(err => {\r\n this.setState({ isLoading: false });\r\n if (err.response)\r\n toast.error(err.response.data.Message);\r\n else\r\n toast.error(ErrorMessages.SinConexion);\r\n })\r\n });\r\n\r\n\r\n }\r\n\r\n /**Funcion para eliminar un tipo de presentacion */\r\n remove = () => {\r\n let presentation = this.state.presentation;\r\n this.setState({ isLoading: true })\r\n PresentationsAPI.delete(presentation.PresentationId).then(response => {\r\n let state = { ...this.state };\r\n state.presentations.splice(state.presentations.findIndex(u => u.PresentationId === presentation.PresentationId), 1);\r\n state.pagePresentations.splice(state.pagePresentations.findIndex(u => u.PresentationId === presentation.PresentationId), 1);\r\n this.presentations.splice(this.presentations.findIndex(u => u.PresentationId === presentation.PresentationId), 1);\r\n state.removeModal = false;\r\n state.isLoading = false\r\n this.setState(state, () => {\r\n toast.success(\"Presentación eliminada\");\r\n })\r\n }).catch(err => {\r\n this.setState({ isLoading: false })\r\n if (err.response)\r\n toast.error(err.response.data.Message);\r\n else\r\n toast.error(ErrorMessages.SinConexion);\r\n })\r\n }\r\n\r\n \r\n\r\n changuestatus = (row) => { // Cambiar el estado activo/inactivo\r\n row.Active ? row.Active = false : row.Active = true;\r\n\r\n PresentationsAPI.edit(row).then(response => {\r\n let active = this.state.presentations[row];\r\n this.setState({ active: row },()=>this.handleFilterData());\r\n toast.success(\"Estatus actualizado\");\r\n \r\n }).catch(err => toast.error(err.response.data.Message));\r\n }\r\n\r\n render() {\r\n return (\r\n
    \r\n\r\n \r\n\r\n

    Presentación/Tamaño producto

    \r\n
    \r\n
    \r\n
    \r\n
    \r\n
    \r\n
    \r\n \r\n
    \r\n this.handleSearchInput(t)}\r\n itemName={'Presentación'}\r\n placeholderText={\"Ingrese nombre de presentación.\"}\r\n />\r\n
    \r\n \r\n
    \r\n \r\n
    \r\n
    \r\n \r\n \r\n \r\n
    \r\n
    \r\n
    \r\n
    \r\n
    \r\n\r\n
    \r\n
    \r\n
    \r\n {lodash.intersection(localStorage.getItem('role').split(\",\"), [roles.ADMIN, roles.ADMINDRIVE, roles.ESPECIALISTA_DE_PRODUCTO, roles.COORDINADOR_GESTION_OPERACIONES]).length > 0 &&\r\n this.create()}>\r\n \r\n \r\n \r\n Agregar Presentación\r\n \r\n }\r\n
    \r\n
    \r\n
    \r\n
    \r\n\r\n\r\n\r\n
    \r\n
    \r\n {this.state.presentations.length !== 0\r\n ? this.setState({ showModal: true, presentation: presentation })}\r\n canEdit canDelete\r\n changeStatus={(row) => {\r\n if(!row.Active){\r\n this.changuestatus(row);\r\n }else{\r\n this.setState({modalConfirmChangeStatus: true, toChangeStatus: row})\r\n }\r\n \r\n }}\r\n edit={(presentation) => this.setState({ showModal: true, presentation: presentation })}\r\n remove={(presentation) => this.setState({ removeModal: true, presentation: presentation })}\r\n />\r\n : }\r\n this.setState({ pagePresentations: presentations })} />\r\n
    \r\n
    \r\n {this.state.showModal &&\r\n this.setState({ showModal: false, presentation: null })}\r\n >\r\n \r\n \r\n }\r\n {this.state.removeModal && this.remove()}\r\n cancel={() => this.setState({ removeModal: false })}\r\n modalTitle={\"Eliminar Presentación\"}\r\n />}\r\n\r\n {\r\n this.state.modalConfirmChangeStatus && {\r\n this.setState({modalConfirmChangeStatus: false},() => this.changuestatus(this.state.toChangeStatus))\r\n }}\r\n cancel={() => this.setState({modalConfirmChangeStatus: false, toChangeStatus:null})}\r\n modalTitle={\"Desactivar Presentación\"}\r\n modalBody={\"¿Está seguro(a) de desactivar la presentación?\"}\r\n />\r\n }\r\n\r\n \r\n\r\n \r\n
    \r\n\r\n\r\n );\r\n }\r\n}\r\n\r\nexport default Presentations;\r\n","import { apiUrl } from \"../constants\";\r\nimport axios from 'axios';\r\nvar request = axios.create({\r\n baseURL: apiUrl,\r\n headers: {'Authorization':'Bearer ' +localStorage.getItem('token'),'Content-Type':'application/json'}\r\n})\r\nexport default class PriceDriveAPI {\r\n \r\n static get() {\r\n return request.get(`/PriceList`);\r\n }\r\n\r\n static getById(id) {\r\n return request.get(`/PriceList/${id}`);\r\n }\r\n\r\n static post(priceList) {\r\n return request.post(`/PriceList`, priceList);\r\n }\r\n\r\n static put(priceList) {\r\n return request.put(`/PriceList`, priceList);\r\n }\r\n\r\n static getPrices(id) {\r\n return request.get(`/PriceDetail/${id}`)\r\n }\r\n\r\n static updatePrice(priceDetail) {\r\n return request.post(`/PriceDetail/PriceDetail`, priceDetail);\r\n }\r\n\r\n static updatePrices(priceDetails) {\r\n return request.post(`/PriceDetail/PriceDetails`, priceDetails);\r\n }\r\n\r\n /**Actualiza masivamente los precios de un conjunto de recetas */\r\n static updateMasivePrices(data){\r\n return request.put(`/PriceList/ChangePrice`, data);\r\n }\r\n\r\n}","import React, { Component } from 'react';\r\nimport Field from '../../../util/field/Field';\r\nimport UnitsAPI from '../../../../services/Units';\r\nimport ErrorMessages from '../../../../util/validation-error-messages';\r\nimport ExpresionesRegulares from '../../../../util/expresiones-regulares';\r\n\r\nimport { Formik } from 'formik';\r\nimport * as Yup from 'yup';\r\nimport { toast } from 'react-toastify';\r\nimport InventoryItemsAPI from '../../../../services/InventoryItem';\r\n\r\n/**\r\n * Formulario para cargar y validar PT asignado a artículo inventario\r\n */\r\nclass InventoryItemPTForm extends Component {\r\n constructor(props) {\r\n super(props);\r\n this.state = {\r\n inventoryItem: { ...this.props.inventoryItem },\r\n units:[],\r\n isEditing: false,\r\n isLoading: false\r\n }\r\n }\r\n\r\n componentDidMount(){\r\n if( this.state.inventoryItem.CodeProvider && this.state.inventoryItem.CodeProvider.length > 8){\r\n this.setState({isEditing:true}, () => {\r\n this.getUnits(this.state.inventoryItem.CodeProvider );\r\n })\r\n }\r\n }\r\n\r\n /** Obtiene las unidades relacionadas al código proveedor */\r\n getUnits = (value) => {\r\n UnitsAPI.getByCodeProvider(value)\r\n .then(response => { \r\n if(response.data && response.data.length > 0){\r\n this.props.setUnits(response.data) ; \r\n if(this.state.isEditing){\r\n this.setState({units: response.data})\r\n } \r\n }else{\r\n toast.error(\"El código de proveedor no tiene unidades relacionadas, contacte al administrador.\")\r\n } \r\n })\r\n .catch(err => {\r\n toast.error(\"Ocurrió un error al cargar unidades relacionadas, contacte al administrador..\")\r\n });\r\n }\r\n\r\n /** Obtiene unidades de medida relacionadas al código de proveedor, \r\n * si hay unidades relacionadas guarda la información */\r\n getUnitsAnSaveData = (value, validData) => {\r\n UnitsAPI.getByCodeProvider(value)\r\n .then(response => { \r\n if(response.data && response.data.length > 0){\r\n this.props.setUnits(response.data) ; \r\n this.props.save(validData);\r\n if(this.state.isEditing){\r\n this.setState({units: response.data})\r\n } \r\n }else{\r\n toast.error(\"El código de proveedor no tiene unidades relacionadas, contacte al administrador.\")\r\n } \r\n })\r\n .catch(err => {\r\n toast.error(\"Ocurrió un error al cargar unidades relacionadas, contacte al administrador..\")\r\n });\r\n }\r\n\r\n VALIDATION_SCHEMA = Yup.object({\r\n CodeProvider: Yup.string()\r\n .trim()\r\n .matches(ExpresionesRegulares.AlfanumericoSinEspeciales, { message: ErrorMessages.AlfanumericoSinEspecialesError })\r\n .min(9, \"Código de Proveedor debe tener más de 8 caracteres.\")\r\n .max(30, \"Ha excedido el límite de 30 caracteres.\")\r\n .required(\"Campo Código de Proveedor es requerido.\"),\r\n // .test(\"validate-pt\", \"El Código de Proveedor ya existe, favor de ingresar otro.\", (value) => { \r\n // let inventoryItems = this.props.getInventoryItems();\r\n // let isValid = true ;\r\n // if(value && value.length > 8){\r\n // let name = value ? value.toLowerCase().trim() : \"\";\r\n // if (inventoryItems.some(u => u.CodeProvider && u.CodeProvider.toLowerCase().trim() === name\r\n // && u.InventoryItemId !== this.state.inventoryItem.InventoryItemId)){\r\n // isValid = false; \r\n // } \r\n // }\r\n // return isValid;\r\n // }),\r\n Name: Yup.string()\r\n .trim()\r\n .matches(ExpresionesRegulares.AlfanumericoConCaracteres, { message: ErrorMessages.AlfanumericoConCaracteresError })\r\n .min(1, \"Nombre debe tener más de un caracter.\")\r\n .max(50, \"Ha excedido el límite de 50 caracteres.\")\r\n // .test(\"validate-name\", \"El Nombre ya existe, favor de ingresar otro.\", (value) => {\r\n // let isValid = true;\r\n // let inventoryItems = this.props.getInventoryItems();\r\n // let name = value ? value.toLowerCase().trim() : \"\";\r\n // if (inventoryItems.some(u => u.Name && u.Name.toLowerCase().trim() === name\r\n // && u.InventoryItemId !== this.state.inventoryItem.InventoryItemId)) {\r\n // isValid = false; \r\n // }\r\n // return isValid;\r\n // })\r\n .required(\"Campo Nombre es requerido.\"),\r\n ShortName: Yup.string()\r\n .trim()\r\n .matches(ExpresionesRegulares.AlfanumericoSinEspeciales, { message: ErrorMessages.AlfanumericoSinEspecialesError })\r\n .min(1, \"Nombre Topping debe tener más de un caracter.\")\r\n .max(30, \"Ha excedido el límite de 30 caracteres.\") \r\n // .test(\"validate-topping-name\", \"El Nombre Topping ya existe, favor de ingresar otro.\", (value) => {\r\n // let isValid = true;\r\n // let inventoryItems = this.props.getInventoryItems();\r\n // let name = value ? value.toLowerCase().trim() : \"\";\r\n // if (inventoryItems.some(u => u.ShortName && u.ShortName.toLowerCase().trim() === name\r\n // && u.InventoryItemId !== this.state.inventoryItem.InventoryItemId)) {\r\n // isValid = false; \r\n // }\r\n // return isValid;\r\n \r\n // })\r\n .required(\"Campo Nombre Topping es requerido.\"),\r\n });\r\n\r\n\r\n render() {\r\n return (\r\n {\r\n let formatValues = { ...values }\r\n if (this.state.isEditing && this.state.inventoryItem.CodeProvider === formatValues.CodeProvider) {\r\n let formatValues = { ...values }\r\n formatValues.CodeProvider = formatValues.CodeProvider.trim()\r\n formatValues.Name = formatValues.Name.trim()\r\n formatValues.ShortName = formatValues.ShortName.trim()\r\n\r\n this.getUnitsAnSaveData(values.CodeProvider, formatValues);\r\n } else {\r\n InventoryItemsAPI.getByCodeProvider(values.CodeProvider).then(value => {\r\n if (value.data) {\r\n toast.error(\"El código de proveedor ya se encuentra registrado.\")\r\n } else {\r\n let formatValues = { ...values }\r\n formatValues.CodeProvider = formatValues.CodeProvider.trim()\r\n formatValues.Name = formatValues.Name.trim()\r\n formatValues.ShortName = formatValues.ShortName.trim()\r\n\r\n this.getUnitsAnSaveData(values.CodeProvider, formatValues);\r\n }\r\n }).catch(err => {\r\n toast.error(ErrorMessages.SinConexion)\r\n })\r\n }\r\n }}>\r\n {({ values, touched, errors, handleChange, handleBlur, handleSubmit, setFieldValue, setFieldTouched, setFieldError }) => (\r\n
    \r\n \r\n \r\n \r\n
    \r\n \r\n \r\n \r\n
    \r\n \r\n \r\n \r\n\r\n
    \r\n\r\n
    \r\n \r\n
    \r\n \r\n
    \r\n
    \r\n \r\n
    \r\n )}\r\n \r\n \r\n\r\n )\r\n }\r\n}\r\n\r\n// Definición de los valores por default de las props en caso de no ser recibidas por el padre.\r\nInventoryItemPTForm.defaultProps = {\r\n isEditing: false,\r\n inventoryItem: {\r\n CodeProvider: \"\",\r\n InventoryCode: \"\",\r\n Name: \"\",\r\n ShortName: \"\",\r\n UnitPurchase: 0,\r\n StorageUnit: 0,\r\n UnitSale: 0,\r\n ConvFactorBuy: \"\",\r\n ConvFactorSale: \"\",\r\n FactorBuyMin: 0.95,\r\n AmountMin: 0,\r\n AmountMax: 0,\r\n InventoryTypeId: 0,\r\n CodeSat: null,\r\n IsTopping: false,\r\n ToppingPrice: 0,\r\n ToppingWeight: 0\r\n }\r\n}\r\n\r\nexport default InventoryItemPTForm;","import React, { Component } from 'react';\r\nimport Field from '../../../util/field/Field';\r\nimport Dropdown from '../../../util/dropdown/Dropdown';\r\n\r\nimport { Formik } from 'formik';\r\nimport * as Yup from 'yup';\r\nimport { toast } from 'react-toastify';\r\n\r\n/**\r\n * Formulario para cargar y validar PT asignado a artículo inventario\r\n */\r\nclass InventoryItemUnitsForm extends Component {\r\n constructor(props) {\r\n super(props);\r\n this.state = {\r\n inventoryItem: { ...this.props.inventoryItem },\r\n convFactorBuyDisabled:false,\r\n isEditing: false,\r\n isLoading: false\r\n }\r\n }\r\n\r\n VALIDATION_SCHEMA = Yup.object({\r\n UnitPurchase: Yup.string().required(\"Campo Unidad pedido a sucursal es requerido.\").nullable(),\r\n StorageUnit: Yup.string().required(\"Campo Unidad almacenamiento externo es requerido.\").nullable(),\r\n UnitSale: Yup.string().required(\"Campo Unidad para venta es requerido.\").nullable(), \r\n FactorBuyMin: Yup.number()\r\n .min(.00001,\"Ingrese valor mayor a cero.\")\r\n .required(\"Campo Múltiplos para pedido sucursal es requerido.\"),\r\n ConvFactorBuy: Yup.number()\r\n .min(.00001,\"Ingrese valor mayor a cero.\")\r\n .required(\"Campo Cantidad conversión almacén es requerido.\"),\r\n ConvFactorSale: Yup.number()\r\n .min(.00001,\"Ingrese valor mayor a cero.\")\r\n .required(\"Campo Equivalencia venta es requerido.\"),\r\n \r\n });\r\n\r\n render() {\r\n return (\r\n {\r\n \r\n this.props.save(values)\r\n \r\n }}>\r\n {({ values, touched, errors, handleChange, handleBlur, handleSubmit, setFieldValue, setFieldTouched,setFieldError }) => (\r\n
    \r\n
    \r\n
    \r\n \r\n { \r\n if(val > 0){\r\n let selected = this.props.unitsGP[val - 1].UnitsId;\r\n setFieldValue('UnitPurchase', selected) \r\n if(values.StorageUnit){ \r\n let unidadBase = this.props.unitsGP[0].UnidadBase;\r\n let unidadAlmacenamiento = this.props.unitsGP.find(itemGP => itemGP.UnitsId === values.StorageUnit);\r\n let unidadPedido = this.props.unitsGP.find(itemGP => itemGP.UnitsId === selected);\r\n if (unidadAlmacenamiento && unidadPedido) { \r\n if (unidadAlmacenamiento.Name === unidadBase) {\r\n setFieldValue('ConvFactorBuy', unidadPedido.Equivalencia) \r\n this.setState({\"convFactorBuyDisabled\": true}) \r\n }\r\n else if (unidadPedido.Name === unidadBase) {\r\n setFieldValue('ConvFactorBuy', unidadAlmacenamiento.Equivalencia) \r\n this.setState({\"convFactorBuyDisabled\": true});\r\n }\r\n else {\r\n this.setState({\"convFactorBuyDisabled\": false});\r\n setFieldValue('ConvFactorBuy', 0)\r\n toast.warn(\"No se encontró equivalencia en GP\")\r\n }\r\n }\r\n } \r\n } else{\r\n setFieldValue('UnitPurchase', null)\r\n } \r\n }}\r\n onBlur={() => setFieldTouched('UnitPurchase', true)}\r\n hasError={errors.UnitPurchase && touched.UnitPurchase}\r\n />\r\n \r\n
    \r\n \r\n \r\n \r\n
    \r\n
    \r\n \r\n \r\n { \r\n if(val > 0){\r\n let selected = this.props.unitsGP[val - 1].UnitsId;\r\n setFieldValue('StorageUnit', selected)\r\n if(values.UnitPurchase){ \r\n let unidadBase = this.props.unitsGP[0].UnidadBase;\r\n let unidadAlmacenamiento = this.props.unitsGP.find(itemGP => itemGP.UnitsId === selected);\r\n let unidadPedido = this.props.unitsGP.find(itemGP => itemGP.UnitsId === values.UnitPurchase);\r\n if (unidadAlmacenamiento && unidadPedido) { \r\n if (unidadAlmacenamiento.Name === unidadBase) {\r\n setFieldValue('ConvFactorBuy', unidadPedido.Equivalencia) \r\n this.setState({\"convFactorBuyDisabled\": true})\r\n }\r\n else if (unidadPedido.Name === unidadBase) {\r\n setFieldValue('ConvFactorBuy', unidadAlmacenamiento.Equivalencia) \r\n this.setState({\"convFactorBuyDisabled\": true})\r\n }\r\n else {\r\n this.setState({\"convFactorBuyDisabled\": false})\r\n setFieldValue('ConvFactorBuy', 0) \r\n toast.warn(\"No se encontró equivalencia en GP\") \r\n \r\n }\r\n }\r\n }\r\n } else{\r\n setFieldValue('StorageUnit', null)\r\n } \r\n }}\r\n onBlur={() => setFieldTouched('StorageUnit', true)}\r\n hasError={errors.StorageUnit && touched.StorageUnit}\r\n />\r\n \r\n
    \r\n\r\n \r\n \r\n \r\n
    \r\n
    \r\n \r\n { \r\n if(val > 0){\r\n let selected = this.props.units[val - 1].UnitsId;\r\n setFieldValue('UnitSale', selected)\r\n } else{\r\n setFieldValue('UnitSale', null)\r\n } \r\n }}\r\n onBlur={() => setFieldTouched('UnitSale', true)} \r\n labelKey={\"Name\"}\r\n hasError={errors.UnitSale && touched.UnitSale}\r\n />\r\n \r\n\r\n
    \r\n \r\n \r\n \r\n
    \r\n
    \r\n\r\n
    \r\n
    \r\n \r\n
    \r\n
    \r\n
    \r\n
    \r\n \r\n
    \r\n
    \r\n\r\n
    \r\n )}\r\n\r\n \r\n\r\n )\r\n }\r\n}\r\n\r\n// Definición de los valores por default de las props en caso de no ser recibidas por el padre.\r\nInventoryItemUnitsForm.defaultProps = {\r\n isEditing: false,\r\n inventoryItem: {\r\n CodeProvider: \"\",\r\n InventoryCode: \"\",\r\n Name: \"\",\r\n ShortName: \"\",\r\n UnitPurchase: 0,\r\n StorageUnit: 0,\r\n UnitSale: 0,\r\n ConvFactorBuy: \"\",\r\n ConvFactorSale: \"\",\r\n FactorBuyMin: 0.95,\r\n AmountMin: 0,\r\n AmountMax: 0,\r\n InventoryTypeId: 0,\r\n CodeSat: null,\r\n IsTopping: false,\r\n ToppingPrice: 0,\r\n ToppingWeight: 0\r\n }\r\n}\r\n\r\nexport default InventoryItemUnitsForm;","import React, { Component } from 'react';\r\nimport Field from '../../../util/field/Field';\r\nimport Dropdown from '../../../util/dropdown/Dropdown';\r\nimport Loading from '../../../util/loading/Loading';\r\nimport { Formik } from 'formik';\r\nimport * as Yup from 'yup';\r\n\r\n\r\n\r\n/**\r\n * Formulario para cargar y validar PT asignado a artículo inventario\r\n */\r\nclass InventoryItemTypeForm extends Component {\r\n constructor(props) {\r\n super(props);\r\n this.state = {\r\n inventoryItem: { ...this.props.inventoryItem },\r\n isEditing: false,\r\n isLoading: false\r\n }\r\n }\r\n\r\n VALIDATION_SCHEMA = Yup.object({\r\n AmountMax: Yup.number()\r\n .min(1, \"El valor mínimo es 1.\")\r\n .required(\"Campo Cantidad máxima para solicitar es requerido.\"),\r\n AmountMin: Yup.number()\r\n .min(1, \"El valor mínimo es 1.\")\r\n .required(\"Campo Cantidad Mínima para solicitar es requerido.\")\r\n .test('qyt-match', 'Cantidad mínima debe ser menor a cantidad máxima.', function (value) {\r\n return this.parent.AmountMax > value;\r\n }),\r\n InventoryTypeId: Yup.string().required(\"Campo Clasificación Inventario es requerido.\").nullable(),\r\n OrderTypeId: Yup.string().required(\"Campo Clasificación Pedido es requerido.\").nullable(),\r\n });\r\n\r\n render() {\r\n return (\r\n {\r\n this.props.save(values)\r\n }}>\r\n {({ values, touched, errors, handleChange, handleBlur, handleSubmit, setFieldValue, setFieldTouched }) => (\r\n
    \r\n
    \r\n
    \r\n \r\n {\r\n if (val > 0) {\r\n let selected = this.props.orderTypes[val - 1].OrderTypeId;\r\n setFieldValue('OrderTypeId', selected)\r\n\r\n } else {\r\n setFieldValue('OrderTypeId', null)\r\n }\r\n }}\r\n onBlur={() => setFieldTouched('OrderTypeId', true)}\r\n labelKey={\"Description\"}\r\n hasError={errors.OrderTypeId && touched.OrderTypeId}\r\n />\r\n \r\n
    \r\n
    \r\n \r\n \r\n \r\n
    \r\n
    \r\n \r\n \r\n \r\n
    \r\n\r\n
    \r\n \r\n {\r\n if (val > 0) {\r\n let selected = this.props.inventoryTypes[val - 1].InventoryTypeId;\r\n setFieldValue('InventoryTypeId', selected)\r\n\r\n } else {\r\n setFieldValue('InventoryTypeId', null)\r\n }\r\n }}\r\n labelKey={\"Description\"}\r\n hasError={errors.InventoryTypeId && touched.InventoryTypeId}\r\n />\r\n \r\n
    \r\n
    \r\n\r\n\r\n
    \r\n\r\n
    \r\n
    \r\n \r\n
    \r\n
    \r\n
    \r\n
    \r\n \r\n
    \r\n
    \r\n\r\n
    \r\n )\r\n }\r\n\r\n \r\n\r\n )\r\n }\r\n}\r\n\r\n// Definición de los valores por default de las props en caso de no ser recibidas por el padre.\r\nInventoryItemTypeForm.defaultProps = {\r\n isEditing: false,\r\n inventoryItem: {\r\n CodeProvider: \"\",\r\n InventoryCode: \"\",\r\n Name: \"\",\r\n ShortName: \"\",\r\n UnitPurchase: 0,\r\n StorageUnit: 0,\r\n UnitSale: 0,\r\n ConvFactorBuy: \"\",\r\n ConvFactorSale: \"\",\r\n FactorBuyMin: 0.95,\r\n AmountMin: 0,\r\n AmountMax: 0,\r\n InventoryTypeId: 0,\r\n CodeSat: null,\r\n IsTopping: false,\r\n ToppingPrice: 0,\r\n ToppingWeight: 0\r\n }\r\n}\r\n\r\nexport default InventoryItemTypeForm;","import React, { Component } from 'react';\r\nimport Field from '../../../util/field/Field';\r\nimport Dropdown from '../../../util/dropdown/Dropdown';\r\nimport { Formik } from 'formik';\r\nimport * as Yup from 'yup';\r\n\r\nconst SUPPORTED_FORMATS = [\r\n \"image/png\"\r\n];\r\n/**\r\n * Formulario para cargar y validar PT asignado a artículo inventario\r\n */\r\nclass InventoryItemEndForm extends Component {\r\n constructor(props) {\r\n super(props);\r\n this.state = {\r\n inventoryItem: { ...this.props.inventoryItem },\r\n isEditing: false,\r\n isLoading: false\r\n }\r\n }\r\n\r\n VALIDATION_SCHEMA = Yup.object({\r\n IsPerecedero: Yup.bool(),\r\n IsTopping: Yup.bool()\r\n });\r\n\r\n VALIDATION_SCHEMA_WITH_TOPPING = Yup.object({\r\n IsPerecedero: Yup.bool(),\r\n IsTopping: Yup.bool(),\r\n // ToppingPrice: Yup.number().min(0, \"Ingrese valores mayores a 0.\").required(\"El campo Precio es requerido.\"),\r\n ToppingWeight: Yup.number().min(0, \"Ingrese valores mayores a 0.\").required(\"El campo Gramos a descontar es requerido.\"),\r\n CodeSat: Yup.string().required(\"Campo Código SAT es requerido.\").nullable(),\r\n Image: Yup.mixed()\r\n .required(\"El campo Icono/Imagen es requerido.\") \r\n .test(\r\n \"fileFormat\",\r\n \"Solo se permite formato png.\",\r\n value => value && SUPPORTED_FORMATS.includes(value.type) \r\n || (this.state.inventoryItem.URLimagen !== null && this.state.inventoryItem.URLimagen.length > 0)\r\n )\r\n });\r\n VALIDATION_SCHEMA_WITH_TOPPINGPRICE = Yup.object({\r\n IsPerecedero: Yup.bool(),\r\n IsTopping: Yup.bool(),\r\n ToppingPrice: Yup.number().min(0, \"Ingrese valores mayores a 0.\").required(\"El campo Precio es requerido.\"),\r\n ToppingWeight: Yup.number().min(0, \"Ingrese valores mayores a 0.\").required(\"El campo Gramos a descontar es requerido.\"),\r\n CodeSat: Yup.string().required(\"Campo Código SAT es requerido.\").nullable(),\r\n Image: Yup.mixed()\r\n .required(\"El campo Icono/Imagen es requerido.\") \r\n .test(\r\n \"fileFormat\",\r\n \"Solo se permite formato png.\",\r\n value => value && SUPPORTED_FORMATS.includes(value.type) \r\n || (this.state.inventoryItem.URLimagen !== null && this.state.inventoryItem.URLimagen.length > 0)\r\n )\r\n });\r\n\r\n render() {\r\n return (\r\n {\r\n this.props.save(values)\r\n }}>\r\n {({ values, touched, errors, handleChange, handleBlur, handleSubmit, setFieldValue, setFieldTouched }) => (\r\n
    \r\n
    \r\n
    \r\n \r\n \r\n \r\n
    \r\n\r\n
    \r\n \r\n \r\n \r\n
    \r\n
    \r\n {\r\n this.state.inventoryItem.IsTopping &&\r\n\r\n
    \r\n {this.state.inventoryItem.ShowToppingPrice &&\r\n
    \r\n \r\n \r\n \r\n
    \r\n }\r\n
    \r\n 0)\r\n ? \" (\" + this.props.units.find(item => item.UnitsId === this.props.inventoryItem.UnitSale).Name + \")\"\r\n : \"\")}\r\n hasError={errors.ToppingWeight || touched.ToppingWeight}\r\n msgError={errors.ToppingWeight || touched.ToppingWeight ? errors.ToppingWeight : \"\"}\r\n >\r\n \r\n \r\n
    \r\n\r\n
    \r\n \r\n {return {...item, Description: `${item.Code} - ${item.Description}`}} )}\r\n value={values.CodeSat}\r\n id=\"Code\"\r\n labelKey={\"Description\"}\r\n onSelect={(val) => {\r\n if (val > 0) {\r\n\r\n let selected = this.props.satCodes[val - 1].Code.trim();\r\n setFieldValue('CodeSat', selected)\r\n\r\n } else {\r\n setFieldValue('CodeSat', null)\r\n }\r\n }}\r\n onBlur={() => setFieldTouched('CodeSat', true)}\r\n hasError={errors.CodeSat && touched.CodeSat}\r\n />\r\n \r\n
    \r\n\r\n\r\n
    \r\n \r\n
    \r\n \r\n
    \r\n {values.Image !== null &&\r\n \r\n \r\n\r\n \r\n }\r\n
    \r\n\r\n\r\n
    \r\n\r\n\r\n\r\n
    \r\n }\r\n
    \r\n\r\n {values.Image !== null\r\n //&& (values.URLimagen && (values.URLimagen === null || values.URLimagen.length === 0))\r\n && \r\n
    \r\n
    \r\n \"\"\r\n
    \r\n
    \r\n
    \r\n\r\n }\r\n {values.URLimagen && \r\n
    \r\n
    \r\n \"\"\r\n
    \r\n
    \r\n
    }\r\n
    \r\n
    \r\n \r\n\r\n
    \r\n
    \r\n
    \r\n
    \r\n \r\n
    \r\n
    \r\n\r\n \r\n )}\r\n\r\n \r\n\r\n )\r\n }\r\n}\r\n\r\n// Definición de los valores por default de las props en caso de no ser recibidas por el padre.\r\nInventoryItemEndForm.defaultProps = {\r\n isEditing: false,\r\n inventoryItem: {\r\n CodeProvider: \"\",\r\n InventoryCode: \"\",\r\n Name: \"\",\r\n ShortName: \"\",\r\n UnitPurchase: 0,\r\n StorageUnit: 0,\r\n UnitSale: 0,\r\n ConvFactorBuy: \"\",\r\n ConvFactorSale: \"\",\r\n FactorBuyMin: 0.95,\r\n AmountMin: 0,\r\n AmountMax: 0,\r\n InventoryTypeId: 0,\r\n CodeSat: null,\r\n IsTopping: false,\r\n ToppingPrice: 0,\r\n ToppingWeight: 0,\r\n Image:null,\r\n URLimagen: \"\"\r\n }\r\n}\r\n\r\nexport default InventoryItemEndForm;","import React, { Component } from 'react';\r\nimport UnitsAPI from '../../../services/Units';\r\nimport { toast } from 'react-toastify';\r\nimport Loading from '../../util/loading/Loading';\r\nimport SatAPI from '../../../services/Sat';\r\nimport InventoryItemsAPI from '../../../services/InventoryItem';\r\nimport PriceDriveAPI from '../../../services/PriceDrive';\r\nimport lodash from 'lodash';\r\nimport ErrorMessages from '../../../util/validation-error-messages';\r\n\r\n//Steps\r\nimport InventoryItemPTForm from './stepsForms/InventoryItemPTForm';\r\nimport InventoryItemUnitsForm from './stepsForms/InventoryItemUnitsForm';\r\nimport InventoryItemTypeForm from './stepsForms/InventoryItemTypeForm';\r\nimport InventoryItemEndForm from './stepsForms/InventoryItemEndForm';\r\n\r\n\r\n\r\nclass InventoryItemForm extends Component {\r\n\r\n listaPrecios = [];\r\n\r\n constructor(props) {\r\n super(props);\r\n this.state = {\r\n inventoryItem: {},\r\n inventoryItems: [],\r\n inventoryTypes: [],\r\n isEditing: false,\r\n isLoading: false,\r\n units: [],\r\n satCodes: [],\r\n orderTypes: [],\r\n listaPrecios: [],\r\n selectedPricesList: [],\r\n getUnitsGP: this.getUnitsGP.bind(this),\r\n unitsGP: [],\r\n disableConvFactor: false,\r\n alertConvFactor: null,\r\n\r\n stepPtProgress: true,\r\n stepUnitsProgress: false,\r\n stepTypeProgress: false,\r\n stepEndProgress: false,\r\n\r\n stepPtCompleted:false,\r\n stepUnitsCompleted: false,\r\n stepTypeCompleted: false,\r\n \r\n }\r\n }\r\n\r\n static getDerivedStateFromProps(nextProps, prevState) {\r\n if (!prevState.inventoryItem.InventoryItemId\r\n && prevState.inventoryItem.InventoryItemId !== nextProps.inventoryItem.InventoryItemId) {\r\n return { inventoryItem: nextProps.inventoryItem, isEditing: true, getUnitsGP: prevState.getUnitsGP(), isLoading: true };\r\n } else {\r\n return null;\r\n }\r\n\r\n }\r\n\r\n componentDidMount() {\r\n this.setState({ isLoading: true, inventoryItems: this.props.inventoryItems, inventoryItem: this.props.inventoryItem}, () => {\r\n let state = { ...this.state };\r\n \r\n UnitsAPI.getAll().then(response => {\r\n let formatUnits= lodash.sortBy(response.data, [ts => ts.Name.toLowerCase()], ['asc'] );\r\n state.units = formatUnits;\r\n return SatAPI.getCodes();\r\n }).then(response => {\r\n let formatCodes= lodash.sortBy(response.data, [ts => ts.Description.toLowerCase()], ['asc'] );\r\n state.satCodes = formatCodes;\r\n state.isLoading = false;\r\n return InventoryItemsAPI.getInventoryTypes();\r\n }).then(response => {\r\n let formatTypes = lodash.sortBy(response.data, [ts => ts.Description.toLowerCase()], ['asc'] );\r\n state.inventoryTypes = formatTypes;\r\n return InventoryItemsAPI.getOrderTypes();\r\n }).then(response => {\r\n let formatOrTypes = lodash.sortBy(response.data, [ts => ts.Description.toLowerCase()], ['asc'] );\r\n state.orderTypes = formatOrTypes;\r\n this.setState(state);\r\n }).catch(err => {\r\n this.setState({ isLoading: false })\r\n if (err.response)\r\n toast.error(err.response.data.Message)\r\n else\r\n toast.error(ErrorMessages.SinConexion)\r\n })\r\n\r\n // Obtener las listas de precios para las cuales sera asignado\r\n // el articulo en caso de ser topping\r\n PriceDriveAPI.get().then(response => {\r\n response.data.map(obj => {\r\n this.listaPrecios.push({ value: obj.PriceListId, label: obj.Description })\r\n })\r\n }).catch(err => {\r\n this.setState({ isLoading: false })\r\n if (err.response)\r\n toast.error(err.response.data.Message)\r\n else\r\n toast.error(ErrorMessages.SinConexion)\r\n });\r\n })\r\n let state = { ...this.state }\r\n\r\n // Variable para mostrar el campo de precio en caso que sea un nuevo articulo\r\n // establecido como topping\r\n if (typeof state.inventoryItem.ShowToppingPrice === 'undefined') {\r\n state.inventoryItem.ShowToppingPrice = true;\r\n }\r\n this.setState(state);\r\n }\r\n\r\n /**\r\n * Funcion para el multi select de listas de precios.\r\n * @param: arr: entidad que recibe del select multi con las opciones seleccionadas\r\n */\r\n handlePriceList = (arr) => {\r\n let state = { ...this.state }\r\n let actualPricesList = [];\r\n\r\n arr.map(obj => {\r\n actualPricesList.push(obj.value);\r\n })\r\n\r\n state.inventoryItem.selectedPricesList = actualPricesList;\r\n this.setState(state);\r\n }\r\n\r\n /**\r\n * Obtiene las unidades que estan relacionados con el codigo de proveedor\r\n */\r\n getUnitsGP = () => {\r\n if (this.state.inventoryItem.CodeProvider && this.state.inventoryItem.CodeProvider.trim() != \"\") {\r\n //console.log(\"Cargando unidades de GP => \", this.state.inventoryItem.CodeProvider)\r\n UnitsAPI.getByCodeProvider(this.state.inventoryItem.CodeProvider).then(response => {\r\n let units = response.data;\r\n this.setState({ unitsGP: units, isLoading: false }) \r\n })\r\n }\r\n }\r\n\r\n /**Obtiene listado de artículos */\r\n getInventoryItems = () => { \r\n return this.props.inventoryItems;\r\n }\r\n\r\n /** Asigna las unidades de PT o PE aasignadas en GP */\r\n setUnits = (units) =>{\r\n this.setState({ unitsGP: units})//, () => this.checkUnitsGP())\r\n }\r\n\r\n render() {\r\n return (\r\n
    \r\n
    \r\n
    \r\n
    1
    \r\n
    \r\n

    Datos generales

    \r\n

    Información general del artículo.

    \r\n
    \r\n
    \r\n
    \r\n
    2
    \r\n
    \r\n

    Equivalencias

    \r\n

    Configuración de equivalencias del artículo para su venta, almacenamiento y pedido.

    \r\n
    \r\n
    \r\n
    \r\n
    3
    \r\n
    \r\n

    Tipo Inventario

    \r\n

    Identifica la clasificación del artículo para el sistema de pedido sugerido e inventario.

    \r\n
    \r\n
    \r\n
    \r\n
    4
    \r\n
    \r\n

    Finalizar

    \r\n

    Información complementaria del artículo.

    \r\n
    \r\n
    \r\n
    \r\n
    \r\n {\r\n let currentItem = {...this.state.inventoryItem}\r\n currentItem.CodeProvider = values.CodeProvider;\r\n currentItem.Name = values.Name;\r\n currentItem.ShortName = values.ShortName;\r\n this.setState({inventoryItem:currentItem, stepPtCompleted:true, stepPtProgress: false, stepUnitsProgress: true })\r\n }}\r\n setUnits={(units) => this.setUnits(units)}\r\n getInventoryItems ={() => this.getInventoryItems()}\r\n \r\n />\r\n
    \r\n
    \r\n {\r\n let currentItem = {...this.state.inventoryItem}\r\n currentItem.UnitPurchase = values.UnitPurchase;\r\n currentItem.FactorBuyMin = values.FactorBuyMin;\r\n currentItem.StorageUnit = values.StorageUnit;\r\n currentItem.ConvFactorBuy=values.ConvFactorBuy;\r\n currentItem.UnitSale= values.UnitSale;\r\n currentItem.ConvFactorSale=values.ConvFactorSale;\r\n\r\n this.setState({inventoryItem:currentItem, stepUnitsCompleted:true, stepUnitsProgress: false, stepTypeProgress: true })\r\n }}\r\n back = {() => {\r\n this.setState({stepUnitsProgress: false, stepPtProgress: true })\r\n }}\r\n units = {this.state.units}\r\n unitsGP = {this.state.unitsGP}\r\n \r\n />\r\n
    \r\n
    \r\n {\r\n let currentItem = {...this.state.inventoryItem}\r\n currentItem.AmountMax= values.AmountMax;\r\n currentItem.AmountMin=values.AmountMin;\r\n currentItem.OrderTypeId=values.OrderTypeId;\r\n currentItem.InventoryTypeId = values.InventoryTypeId;\r\n\r\n this.setState({inventoryItem:currentItem, stepTypeCompleted:true, stepTypeProgress: false, stepEndProgress: true })\r\n }}\r\n back = {() => {\r\n this.setState({stepUnitsProgress: true, stepTypeProgress: false })\r\n }}\r\n />\r\n
    \r\n
    \r\n {\r\n let currentItem = {...this.state.inventoryItem} \r\n currentItem.IsPerecedero = values.IsPerecedero ? values.IsPerecedero : false;\r\n currentItem.IsTopping = values.IsTopping ? values.IsTopping : false; \r\n currentItem.ToppingPrice = values.ToppingPrice; \r\n currentItem.ToppingWeight = values.ToppingWeight;\r\n currentItem.CodeSat = values.CodeSat; \r\n currentItem.Image = values.Image; \r\n\r\n this.setState({inventoryItem:currentItem, stepEndCompleted:true, stepEndProgress: false }, () => this.props.save(this.state.inventoryItem))\r\n }}\r\n back = {() => {\r\n this.setState({stepTypeProgress: true, stepEndProgress: false })\r\n }}\r\n />\r\n
    \r\n
    \r\n
    \r\n \r\n
    \r\n );\r\n }\r\n}\r\n\r\n// Definición de los valores por default de las props en caso de no ser recibidas por el padre.\r\nInventoryItemForm.defaultProps = {\r\n isEditing: false,\r\n inventoryItem: {\r\n CodeProvider: \"\",\r\n InventoryCode: \"\",\r\n Name: \"\",\r\n ShortName: \"\",\r\n UnitPurchase: 0,\r\n StorageUnit: 0,\r\n UnitSale: 0,\r\n ConvFactorBuy: \"\",\r\n ConvFactorSale: \"\",\r\n FactorBuyMin: 0.95,\r\n AmountMin: 0,\r\n AmountMax: 0,\r\n InventoryTypeId: 0,\r\n CodeSat: null,\r\n IsTopping: false,\r\n ToppingPrice: 0,\r\n ToppingWeight: 0\r\n }\r\n}\r\n\r\nexport default InventoryItemForm;\r\n\r\n\r\n\r\n","import React, { Component } from 'react';\r\nimport { toast } from 'react-toastify';\r\nimport InventoryItemForm from './InventoryItemForm';\r\nimport InventoryItemsAPI from '../../../services/InventoryItem';\r\nimport '../../cssComponents.css';\r\nimport PriceDriveAPI from '../../../services/PriceDrive';\r\nimport Loading from '../../util/loading/Loading';\r\nimport ErrorMessages from '../../../util/validation-error-messages';\r\n\r\nimport Modal from '../../util/modal/Modal';\r\n\r\nclass NewInventoryItem extends Component {\r\n\r\n listaPrecios = [];\r\n\r\n constructor(props) {\r\n super(props);\r\n this.state = {\r\n\r\n inventoryItem: {},\r\n inventoryItems: this.props.location && this.props.location.state ? this.props.location.state.inventoryItems : [],\r\n isLoading: true\r\n }\r\n }\r\n\r\n componentDidMount() {\r\n if (this.props.match.params.id) {\r\n this.setState({ isLoading: true });\r\n\r\n if (this.props.match.params.lista) {\r\n InventoryItemsAPI.getByList(this.props.match.params.id, this.props.match.params.lista).then(response => {\r\n this.setState({ isLoading: false, inventoryItem: response.data });\r\n }).catch(err => toast.error(err.response.data.Message));\r\n } else {\r\n InventoryItemsAPI.get(this.props.match.params.id).then(response => {\r\n this.setState({ isLoading: false, inventoryItem: response.data });\r\n }).catch(err => toast.error(err.response.data.Message));\r\n }\r\n } else {\r\n this.setState({ isLoading: false })\r\n }\r\n\r\n // Obtener las listas de precios para asignarlas en caso que un articulo inventario\r\n // no las posea.\r\n PriceDriveAPI.get().then(response => {\r\n response.data.map(obj => {\r\n if (this.props.match.params.lista) {\r\n if (obj.PriceListId == this.props.match.params.lista) {\r\n this.listaPrecios.push({ value: obj.PriceListId, label: obj.Description })\r\n }\r\n } else {\r\n this.listaPrecios.push({ value: obj.PriceListId, label: obj.Description })\r\n }\r\n\r\n })\r\n }).catch(err => {\r\n console.log(err);\r\n });\r\n }\r\n\r\n save = (inventoryItem) => {\r\n if (inventoryItem.InventoryItemId) {\r\n\r\n\r\n inventoryItem.InventoryCode = inventoryItem.CodeProvider;\r\n inventoryItem.AmountMax = parseFloat(inventoryItem.AmountMax);\r\n inventoryItem.AmountMin = parseFloat(inventoryItem.AmountMin);\r\n inventoryItem.FactorBuyMin = parseFloat(inventoryItem.FactorBuyMin);\r\n inventoryItem.ConvFactorSale = parseInt(inventoryItem.ConvFactorSale, 10);\r\n inventoryItem.ConvFactorBuy = parseInt(inventoryItem.ConvFactorBuy, 10);\r\n \r\n if (inventoryItem.hasOwnProperty('IsTopping')) {\r\n if (inventoryItem.IsTopping) { // ES UN TOPPING\r\n inventoryItem.ToppingPrice = parseFloat(inventoryItem.ToppingPrice);\r\n inventoryItem.ToppingWeight = parseFloat(inventoryItem.ToppingWeight);\r\n }else{\r\n inventoryItem.ToppingPrice = \"\";\r\n inventoryItem.ToppingWeight = \"\"; \r\n inventoryItem.CodeSat=\"\"; \r\n }\r\n }\r\n\r\n let { CodeSatTopping, DateUpdate, ...body } = inventoryItem;\r\n this.setState({ isLoading: true });\r\n InventoryItemsAPI.edit(body).then(response => {\r\n this.props.history.goBack();\r\n this.setState({ isLoading: false });\r\n toast.success(\"Artículo inventario actualizado\");\r\n }).catch(err => {\r\n this.setState({ isLoading: false });\r\n if (err.response) {\r\n toast.error(err.response.data.Message)\r\n } else {\r\n toast.error(ErrorMessages.SinConexion)\r\n }\r\n });\r\n } else {\r\n\r\n inventoryItem.InventoryCode = inventoryItem.CodeProvider;\r\n inventoryItem.ShowToppingPrice = inventoryItem.IsTopping;\r\n inventoryItem.AmountMin = parseFloat(inventoryItem.AmountMin);\r\n inventoryItem.AmountMax = parseFloat(inventoryItem.AmountMax);\r\n inventoryItem.FactorBuyMin = parseFloat(inventoryItem.FactorBuyMin);\r\n inventoryItem.ConvFactorSale = parseInt(inventoryItem.ConvFactorSale, 10);\r\n inventoryItem.ConvFactorBuy = parseInt(inventoryItem.ConvFactorBuy, 10);\r\n\r\n // Si es un topping hacer la conversion explicita de su precio y cantidad a descontar\r\n // a cantidades flotantes. \r\n if (inventoryItem.hasOwnProperty('IsTopping')) {\r\n if (inventoryItem.IsTopping) { // ES UN TOPPING\r\n inventoryItem.ToppingPrice = parseFloat(inventoryItem.ToppingPrice);\r\n inventoryItem.ToppingWeight = parseFloat(inventoryItem.ToppingWeight);\r\n }else{\r\n inventoryItem.ToppingPrice = \"\";\r\n inventoryItem.ToppingWeight = \"\"; \r\n inventoryItem.CodeSat=\"\"; \r\n }\r\n }\r\n\r\n this.setState({ isLoading: true });\r\n InventoryItemsAPI.create(inventoryItem).then(response => {\r\n this.setState({ isLoading: false });\r\n this.props.history.goBack();\r\n toast.success(\"Artículo inventario creado\");\r\n }).catch(err => {\r\n this.setState({ isLoading: false });\r\n if (err.response) {\r\n console.log(err.response.data.Message)\r\n toast.error(err.response.data.Message)\r\n } else {\r\n toast.error(ErrorMessages.SinConexion);\r\n }\r\n\r\n\r\n });\r\n }\r\n }\r\n\r\n render() {\r\n return (\r\n
    \r\n
    \r\n
    \r\n
    \r\n \r\n { this.props.history.goBack() }} className=\"fa fa-arrow-left\">\r\n \r\n
    \r\n {this.state.inventoryItem.InventoryItemId ? \"Editar Artículo Inventario\" : \"Nuevo Artículo Inventario\"}\r\n this.setState({ showModal: true })} className=\"fa fa-question-circle\">\r\n
    \r\n\r\n
    \r\n
    \r\n
    \r\n {this.state.isLoading\r\n ? \"\" :\r\n (this.state.inventoryItem.InventoryItemId\r\n ?\r\n \r\n :\r\n )\r\n }\r\n\r\n
    \r\n
    \r\n \r\n {this.state.showModal &&\r\n this.setState({ showModal: false })}\r\n >\r\n
    \r\n\r\n Un artículo es una materia prima que compone una receta en el segmento Drive, este artículo requiere la siguiente información:\r\n
    \r\n
    \r\n
    this.setState({ show_info: !this.state.show_info, show_info_equivalencias:false , show_info_clasificacion:false, show_info_end : false})}>\r\n
    \r\n

    1. Datos generales

    \r\n
    \r\n
    \r\n
    \r\n

    \r\n Código de proveedor: es el PT o PE a asociar, debe tener configuradas\r\n de lado de GP su unidad de medida, de lo contrario no podrá continuar.\r\n El campo requiere al menos 8 caracteres, es obligatorio y no se debe haber creado previamente.\r\n

    \r\n

    \r\n Nombre: es un campo requerido,\r\n debe tener una longitud mínima de 1 a 50 caracteres máximo\r\n y no se debe duplicar.\r\n

    \r\n

    \r\n Nombre corto (Topping): es un campo requerido,\r\n debe tener una longitud mínima de 2 a 30 caracteres máximo\r\n y no se debe duplicar, en caso de marcar artículo como topping este será el nombre que\r\n aparezca en el punto de venta.\r\n

    \r\n
    \r\n
    \r\n
    \r\n
    this.setState({ show_info_equivalencias: !this.state.show_info_equivalencias, show_info:false, show_info_clasificacion:false, show_info_end : false})}>\r\n
    \r\n

    2. Equivalencias

    \r\n
    \r\n
    \r\n
    \r\n\r\n

    \r\n Unidad pedido sucursal: unidad con la que se solicitará a sucursal y se surtirá al punto de venta,\r\n las unidades son cargadas desde GP.\r\n

    \r\n

    \r\n Unidad almacenamiento externo pd: unidad con la cual el producto que se recibe de sucursal.\r\n

    \r\n

    \r\n Unidad para venta: unidad con la cual se va a vender un artículo en almacén interno.\r\n

    \r\n

    \r\n Múltiplos para pedido sucursal: múltiplos de equivalencia almacén para pedido a sucursal,\r\n esto significa la cantidad con la cual se puede solicitar a sucursal con cada producto.\r\n

    \r\n

    \r\n Equivalencia almacén: cantidad equivalente a una unidad para almacenamiento externo.\r\n

    \r\n

    \r\n Equivalencia venta: cantidad equivalente a una unidad de almacén externo a interno.\r\n

    \r\n
    \r\n
    \r\n
    \r\n
    this.setState({ show_info_clasificacion: !this.state.show_info_clasificacion , show_info:false, show_info_end : false, show_info_equivalencias:false})}>\r\n
    \r\n

    3. Tipo Inventario

    \r\n
    \r\n
    \r\n
    \r\n

    \r\n Clasificación Pedido: clasificación del artículo para el sistema de pedidos. \r\n

    \r\n

    \r\n Cantidad máxima para solicitar: cantidad máxima que se permite solicitar de producto a sucursal \r\n (basado en la Unidad de Medida asignada al producto).\r\n

    \r\n

    \r\n Cantidad Mínima para solicitar: cantidad máxima que se permite solicitar de producto a sucursal \r\n (basado en la Unidad de Medida asignada al producto).\r\n

    \r\n

    \r\n Clasificación Inventario: clasificación del artículo para el sistema de inventarios.\r\n

    \r\n
    \r\n
    \r\n
    \r\n
    this.setState({ show_info_end: !this.state.show_info_end, show_info:false, show_info_clasificacion: false, show_info_equivalencias:false })}>\r\n
    \r\n

    4. Información complementaria

    \r\n
    \r\n
    \r\n
    \r\n

    \r\n Es Perecedero: Se debe activar si el artículo tiene fecha de vencimiento.\r\n

    \r\n

    \r\n Es Topping: Se debe activar en caso que el artículo que estemos registrando aplique como topping.\r\n

    \r\n
    \r\n

    \r\n Precio: precio por cada topping que se ingrese a una receta.\r\n

    \r\n

    \r\n Cantidad a descontar: cada que se agregue un topping a una receta entonces va descontar la cantidad especificada (basado en la unidad de venta).\r\n

    \r\n

    \r\n Código SAT para facturar: código de facturación que aparece en la factura del cliente.\r\n

    \r\n

    \r\n Icono/Imagen: icono que se va mostrar en la pantalla drive al seleccionar el extra topping.\r\n

    \r\n
    \r\n
    \r\n
    \r\n
    \r\n\r\n\r\n\r\n\r\n
    \r\n\r\n\r\n \r\n }\r\n
    \r\n );\r\n }\r\n}\r\n\r\nexport default NewInventoryItem;\r\n","import React, { Component } from 'react';\r\nimport Field from '../../util/field/Field';\r\nimport Dropdown from '../../util/dropdown/Dropdown';\r\nimport { Formik } from 'formik';\r\nimport * as Yup from 'yup';\r\nimport { value } from 'popmotion';\r\n\r\nconst SUPPORTED_FORMATS = [\r\n \"image/png\"\r\n];\r\n/**\r\n * Formulario para cargar y validar PT asignado a artículo inventario\r\n */\r\nclass InventoryItemImageForm extends Component {\r\n constructor(props) {\r\n super(props);\r\n this.state = {\r\n inventoryItem: { ...this.props.inventoryItem },\r\n isEditing: false,\r\n isLoading: false\r\n }\r\n } \r\n\r\n VALIDATION_SCHEMA_WITH_TOPPING = Yup.object({ \r\n Image: Yup.mixed()\r\n .required(\"El campo Icono/Imagen es requerido.\") \r\n .test(\r\n \"fileFormat\",\r\n \"Solo se permite formato png.\",\r\n value => value && SUPPORTED_FORMATS.includes(value.type) \r\n || (this.state.inventoryItem.URLimagen !== null && this.state.inventoryItem.URLimagen.length > 0)\r\n )\r\n });\r\n\r\n render() {\r\n return (\r\n {\r\n this.props.save(values)\r\n }}>\r\n {({ values, touched, errors, handleChange, handleBlur, handleSubmit, setFieldValue, setFieldTouched }) => (\r\n
    \r\n
    \r\n
    \r\n \r\n
    \r\n \r\n
    \r\n {values.Image !== null &&\r\n \r\n \r\n\r\n \r\n }\r\n
    \r\n\r\n\r\n
    \r\n\r\n\r\n\r\n
    \r\n \r\n
    \r\n\r\n {values.Image !== null\r\n //&& (values.URLimagen && (values.URLimagen === null || values.URLimagen.length === 0))\r\n && \r\n
    \r\n
    \r\n \"\"\r\n
    \r\n
    \r\n
    \r\n\r\n }\r\n {values.URLimagen && \r\n
    \r\n
    \r\n \"\"\r\n
    \r\n
    \r\n
    }\r\n
    \r\n
    \r\n \r\n\r\n
    \r\n
    \r\n
    \r\n
    \r\n \r\n
    \r\n
    \r\n\r\n \r\n )}\r\n\r\n \r\n\r\n )\r\n }\r\n}\r\n\r\n// Definición de los valores por default de las props en caso de no ser recibidas por el padre.\r\nInventoryItemImageForm.defaultProps = {\r\n isEditing: false,\r\n inventoryItem: {\r\n CodeProvider: \"\",\r\n InventoryCode: \"\",\r\n Name: \"\",\r\n ShortName: \"\",\r\n UnitPurchase: 0,\r\n StorageUnit: 0,\r\n UnitSale: 0,\r\n ConvFactorBuy: \"\",\r\n ConvFactorSale: \"\",\r\n FactorBuyMin: 0.95,\r\n AmountMin: 0,\r\n AmountMax: 0,\r\n InventoryTypeId: 0,\r\n CodeSat: null,\r\n IsTopping: false,\r\n ToppingPrice: 0,\r\n ToppingWeight: 0,\r\n Image:null,\r\n URLimagen: \"\"\r\n }\r\n}\r\n\r\nexport default InventoryItemImageForm;","import React, { useEffect, useState } from 'react'\r\nimport Select from 'react-select';\r\nimport WarehouseAPI from '../../../services/Warehouse';\r\nimport lodash from 'lodash';\r\nimport InventoryItemsAPI from '../../../services/InventoryItem';\r\nimport { toast } from 'react-toastify';\r\nimport Loading from '../../util/loading/Loading';\r\nimport TableTemplate from '../../util/tabletemplate/TableTemplate';\r\nimport NoItems from '../../util/noitems/NoItems';\r\nimport Pagination from '../../util/pagination/Pagination';\r\n\r\nconst SyncInventoryItem = ({ inventoryItem, close }) => {\r\n\r\n const [state, setState] = useState({\r\n Caffenios: [], //Todas las sucursales\r\n selectedOptionS: null, //Segmentos seleccionados\r\n optionSegmento: [], //Los segmentos a partir de las sucursales\r\n selectedOption: [], //Estados seleccionados\r\n optionState: [], //Los estados a partir de las sucursales\r\n selectedOptionC: [], //Ciudades seleccionadas\r\n optionCity: [], //Las ciudades a partir de las sucursales\r\n selectedOptionD: [], //Drives seleccionados\r\n optionDrive: [], // Los drives seleccionados a partir de los criterios establecidos\r\n listaSyncDrives: [], //Lista de drives que se van a mandar a sincronizar\r\n pageSyncDrives: [], //Paginado para la tabla de los drives seleccionados\r\n isLoading: true\r\n })\r\n\r\n useEffect(() => {\r\n WarehouseAPI.getCaffenios().then(response => {\r\n let CaffeniosAux = response.data\r\n let optionSegmentoAux = lodash.sortBy(select_segmento(CaffeniosAux), [ts => ts.label.toLowerCase()], ['asc'])\r\n let optionStateAux = lodash.sortBy(select_state(CaffeniosAux), [ts => ts.label.toLowerCase()], ['asc'])\r\n let optionCityAux = lodash.sortBy(select_city(CaffeniosAux, state.selectedOptionS), [ts => ts.label.toLowerCase()], ['asc'])\r\n let optionDriveAux = lodash.sortBy(select_Drive(CaffeniosAux, null), [ts => ts.label.toLowerCase()], ['asc'])\r\n\r\n setState({\r\n ...state,\r\n Caffenios: CaffeniosAux,\r\n optionSegmento: optionSegmentoAux,\r\n optionState: optionStateAux,\r\n optionCity: optionCityAux,\r\n optionDrive: optionDriveAux,\r\n isLoading: false\r\n })\r\n })\r\n .catch(x => setState({ ...state, isLoading: false }))\r\n }, [])\r\n\r\n const select_segmento = (Caffenios) => { //Llenar el combo 'Segmentación' con todas las opciones\r\n var newArray = [];\r\n let OptionSelectSegmento = [];\r\n var lookupObject = {};\r\n Caffenios.map((item) => {\r\n OptionSelectSegmento.push({ value: item.idSegmento, label: item.Segmento });\r\n });\r\n\r\n for (var i in OptionSelectSegmento) {\r\n lookupObject[OptionSelectSegmento[i][\"value\"]] = OptionSelectSegmento[i];\r\n }\r\n\r\n for (i in lookupObject) {\r\n newArray.push(lookupObject[i]);\r\n }\r\n\r\n return newArray;\r\n }\r\n\r\n const select_state = (Caffenios) => { // Llenar el combo 'Estados' con todas las opciones \r\n var newArray = [];\r\n let OptionSelect = [];\r\n var lookupObject = {};\r\n Caffenios.map((item) => {\r\n OptionSelect.push({ value: item.StateId, label: item.State });\r\n });\r\n\r\n for (var i in OptionSelect) {\r\n lookupObject[OptionSelect[i][\"value\"]] = OptionSelect[i];\r\n }\r\n\r\n for (i in lookupObject) {\r\n newArray.push(lookupObject[i]);\r\n }\r\n\r\n return newArray;\r\n }\r\n\r\n const select_city = (Caffenios, segmentacion) => { // Llenar el combo 'Ciudades' con todas las opciones \r\n var newArray = [];\r\n let OptionSelectCity = [];\r\n var lookupObject = {};\r\n Caffenios.map((item) => {\r\n if (segmentacion === null) { //Se valida si hay segmentación seleccionada para prefiltar\r\n OptionSelectCity.push({ value: item.Municipalityid, label: item.Municipality });\r\n } else {\r\n if (item.idSegmento === segmentacion.value) {\r\n OptionSelectCity.push({ value: item.Municipalityid, label: item.Municipality });\r\n }\r\n }\r\n });\r\n\r\n for (var i in OptionSelectCity) {\r\n lookupObject[OptionSelectCity[i][\"value\"]] = OptionSelectCity[i];\r\n }\r\n\r\n for (i in lookupObject) {\r\n newArray.push(lookupObject[i]);\r\n }\r\n\r\n return newArray;\r\n }\r\n\r\n const select_Drive = (Caffenios, segmentacion) => { // Llenar el combo 'Drives' con todas las opciones \r\n var newArray = [];\r\n let OptionSelectDrive = [];\r\n var lookupObject = {};\r\n Caffenios.map((item) => {\r\n if (segmentacion === null) { //Se valida si hay segmentación seleccionada para prefiltar\r\n OptionSelectDrive.push({ value: item.idCaffenio, label: item.NombreNuevo });\r\n } else {\r\n if (item.idSegmento === segmentacion.value) {\r\n OptionSelectDrive.push({ value: item.idCaffenio, label: item.NombreNuevo });\r\n }\r\n }\r\n });\r\n\r\n for (var i in OptionSelectDrive) {\r\n lookupObject[OptionSelectDrive[i][\"value\"]] = OptionSelectDrive[i];\r\n }\r\n\r\n for (i in lookupObject) {\r\n newArray.push(lookupObject[i]);\r\n }\r\n\r\n return newArray;\r\n }\r\n\r\n const changeSelectSegmento = (obj) => {\r\n let stateAux = { ...state }\r\n stateAux[\"selectedOptionS\"] = obj;\r\n if (obj !== null) {\r\n let idSegmento = obj.value\r\n let objCaffenios = [...stateAux.Caffenios];\r\n let listaEstados = [];\r\n let listaCiudades = [];\r\n let listaDrives = [];\r\n // Recorrer objeto Caffenios y encontrar coincidencias sin eliminar duplicados\r\n objCaffenios.map(item => {\r\n if (item.idSegmento === idSegmento) {\r\n listaEstados.push({ \"value\": item.StateId, \"label\": item.State });\r\n }\r\n })\r\n\r\n //Se eliminan los estados duplicados\r\n let eliminarDuplicados = eliminarObjDuplicados(listaEstados, \"value\");\r\n //Se obtiene un arreglo con los id de los estados\r\n let idEstado = eliminarDuplicados.map(estado => { return estado.value });\r\n //Se buscan coincidencias entre estado y ciudad y se genera la lista de drives\r\n objCaffenios.map(item => {\r\n for (var i = 0; i < idEstado.length; i++) {\r\n if (item.StateId === idEstado[i] && item.idSegmento === idSegmento) {\r\n listaCiudades.push({ \"value\": item.Municipalityid, \"label\": item.Municipality });\r\n }\r\n }\r\n })\r\n //Se eliminan duplicados de ciudad\r\n let eliminarDuplicadosCiudad = eliminarObjDuplicados(listaCiudades, \"value\");\r\n //Se obtien un arreglo con los id de las ciudades\r\n let idCiudad = eliminarDuplicadosCiudad.map(ciudad => { return ciudad.value });\r\n\r\n //Se buscan coincidencias entre ciudad y drive y se genera la lista de drives\r\n objCaffenios.map(item => {\r\n for (var i = 0; i < idCiudad.length; i++) {\r\n if (item.Municipalityid === idCiudad[i] && item.idSegmento === idSegmento) {\r\n listaDrives.push({ \"value\": item.idCaffenio, \"label\": item.NombreNuevo });\r\n }\r\n }\r\n })\r\n stateAux[\"optionState\"] = eliminarDuplicados;\r\n stateAux[\"optionCity\"] = eliminarDuplicadosCiudad;\r\n stateAux[\"optionDrive\"] = listaDrives;\r\n } else {\r\n //En caso que se haya borrado la segmentación del select, se reinician\r\n //los demas filtros\r\n stateAux[\"optionState\"] = select_state(stateAux.Caffenios);\r\n stateAux[\"optionCity\"] = select_city(stateAux.Caffenios, stateAux[\"selectedOptionS\"]);\r\n stateAux[\"optionDrive\"] = select_Drive(stateAux.Caffenios, stateAux[\"selectedOptionS\"]);\r\n }\r\n //Se limpian las opciones del select 'Estado', 'Ciudades' y 'Drives'\r\n stateAux[\"selectedOption\"] = [];\r\n stateAux[\"selectedOptionC\"] = [];\r\n stateAux[\"selectedOptionD\"] = [];\r\n\r\n setState(stateAux);\r\n }\r\n\r\n const changeSelectEstado = (obj) => {\r\n let stateAux = { ...state }\r\n stateAux[\"selectedOption\"] = obj;\r\n let idEstado = obj.map(estado => { return estado.value });\r\n let objCaffenios = [...stateAux.Caffenios];\r\n let listaCiudades = [];\r\n let listaDrives = [];\r\n\r\n // Recorrer objeto Caffenios y encontrar coincidencias sin eliminar duplicados\r\n objCaffenios.map(item => {\r\n for (var i = 0; i < idEstado.length; i++) {\r\n if (item.StateId === idEstado[i]) {\r\n if (stateAux.selectedOptionS === null) { //Se valida si hay segmentación seleccionada para prefiltar\r\n listaCiudades.push({ \"value\": item.Municipalityid, \"label\": item.Municipality });\r\n } else {\r\n if (item.idSegmento === stateAux.selectedOptionS.value) {\r\n listaCiudades.push({ \"value\": item.Municipalityid, \"label\": item.Municipality });\r\n }\r\n }\r\n }\r\n }\r\n })\r\n\r\n //Se eliminan las ciudades duplicadas\r\n let eliminarDuplicados = eliminarObjDuplicados(listaCiudades, \"value\");\r\n //Se obtiene un arreglo con los id de las ciudades\r\n let idCiudad = eliminarDuplicados.map(ciudad => { return ciudad.value });\r\n\r\n //Se buscan coincidencias entre ciudad y drive y se genera la lista de drives\r\n objCaffenios.map(item => {\r\n for (var i = 0; i < idCiudad.length; i++) {\r\n if (item.Municipalityid === idCiudad[i]) {\r\n if (stateAux.selectedOptionS === null) { //Se valida si hay segmentación seleccionada para prefiltar\r\n listaDrives.push({ \"value\": item.idCaffenio, \"label\": item.NombreNuevo });\r\n } else {\r\n if (item.idSegmento === stateAux.selectedOptionS.value) {\r\n listaDrives.push({ \"value\": item.idCaffenio, \"label\": item.NombreNuevo });\r\n }\r\n }\r\n }\r\n }\r\n })\r\n\r\n //Se limpian los combos 'Ciudades' y 'Drives'\r\n stateAux[\"selectedOptionC\"] = [];\r\n stateAux[\"selectedOptionD\"] = [];\r\n\r\n //Se valida que haya una opción seleccionada en combo 'Estados'\r\n if (obj.length === 0) {\r\n stateAux[\"optionCity\"] = select_city(stateAux.Caffenios, stateAux[\"selectedOptionS\"]);\r\n stateAux[\"optionDrive\"] = select_Drive(stateAux.Caffenios, stateAux[\"selectedOptionS\"]);\r\n\r\n } else {\r\n stateAux[\"optionCity\"] = eliminarDuplicados;\r\n stateAux[\"optionDrive\"] = listaDrives;\r\n }\r\n\r\n setState(stateAux);\r\n }\r\n\r\n const changeSelectCiudad = (obj) => {\r\n let stateAux = { ...state }\r\n let idCiudad = obj.map(ciudad => { return ciudad.value });\r\n let objCaffenios = [...stateAux.Caffenios];\r\n let listaDrives = [];\r\n\r\n //Se buscan coincidencias entre ciudad y drive y se genera la lista de drives\r\n objCaffenios.map(item => {\r\n for (var i = 0; i < idCiudad.length; i++) {\r\n if (item.Municipalityid === idCiudad[i]) {\r\n if (stateAux.selectedOptionS === null) { //Se valida si hay segmentación seleccionada para prefiltar\r\n listaDrives.push({ \"value\": item.idCaffenio, \"label\": item.NombreNuevo });\r\n } else {\r\n if (item.idSegmento === stateAux.selectedOptionS.value) {\r\n listaDrives.push({ \"value\": item.idCaffenio, \"label\": item.NombreNuevo });\r\n }\r\n }\r\n }\r\n }\r\n })\r\n\r\n //Se limpia el combo 'Drives'\r\n stateAux[\"selectedOptionD\"] = [];\r\n\r\n //Se valida que haya una opción seleccionada en combo 'Ciudades'\r\n if (obj.length > 0) {\r\n stateAux[\"selectedOptionC\"] = obj;\r\n stateAux[\"optionDrive\"] = listaDrives;\r\n setState(stateAux);\r\n } else {\r\n changeSelectEstado(stateAux[\"selectedOption\"]);\r\n }\r\n }\r\n\r\n const changeSelectDrive = (obj) => {\r\n let stateAux = { ...state };\r\n let Caffenios = [...stateAux.Caffenios];\r\n\r\n //Valida cada select (Estados,Ciudades,Drives) y realiza la acción correspondiente\r\n if (obj.length > 0) {\r\n stateAux[\"selectedOptionD\"] = obj;\r\n //state[\"optionDrive\"] = obj;\r\n setState(stateAux);\r\n } else if (stateAux[\"selectedOptionC\"].length === 0) {\r\n changeSelectEstado(stateAux[\"selectedOption\"]);\r\n } else if (stateAux[\"selectedOptionC\"].length === 0 && stateAux[\"selectedOption\"].length === 0) {\r\n select_Drive(Caffenios, stateAux[\"selectedOptionS\"]);\r\n select_Drive(Caffenios, stateAux[\"selectedOptionS\"]);\r\n select_Drive(Caffenios, stateAux[\"selectedOptionS\"]);\r\n } else {\r\n changeSelectCiudad(stateAux[\"selectedOptionC\"]);\r\n }\r\n }\r\n\r\n const eliminarObjDuplicados = (arr, prop) => {\r\n var nuevoArray = [];\r\n var lookup = {};\r\n\r\n for (var i in arr) {\r\n lookup[arr[i][prop]] = arr[i];\r\n }\r\n\r\n for (i in lookup) {\r\n nuevoArray.push(lookup[i]);\r\n }\r\n\r\n return nuevoArray;\r\n }\r\n\r\n\r\n return (\r\n
    \r\n
    \r\n\r\n
    \r\n
    \r\n \r\n
    \r\n changeSelectSegmento(x)}\r\n noOptionsMessage={() => \"No hay opciones\"}\r\n options={state.optionSegmento}\r\n />\r\n
    \r\n
    \r\n\r\n
    \r\n \r\n
    \r\n changeSelectEstado(x)}\r\n noOptionsMessage={() => \"No hay opciones\"}\r\n options={state.optionState}\r\n />\r\n
    \r\n
    \r\n\r\n
    \r\n \r\n
    \r\n changeSelectCiudad(x)}\r\n noOptionsMessage={() => \"No hay opciones\"}\r\n options={state.optionCity}\r\n />\r\n
    \r\n
    \r\n\r\n
    \r\n \r\n
    \r\n changeSelectDrive(x)}\r\n noOptionsMessage={() => \"No hay opciones\"}\r\n options={state.optionDrive}\r\n />\r\n
    \r\n
    \r\n\r\n
    \r\n\r\n
    \r\n
    \r\n
    \r\n {\r\n if (state.selectedOptionD.length > 0) {\r\n setState({ ...state, listaSyncDrives: state.selectedOptionD, pageSyncDrives: state.selectedOptionD })\r\n console.log('state.optionDrive', state.selectedOptionD)\r\n } else {\r\n setState({ ...state, listaSyncDrives: state.optionDrive, pageSyncDrives: state.optionDrive })\r\n console.log('state.optionDrive', state.optionDrive)\r\n }\r\n\r\n }}\r\n className=\"button is-success\"\r\n style={{ marginRight: 5 }}\r\n >\r\n Seleccionar Drives\r\n \r\n setState({ ...state, listaSyncDrives: [] })}\r\n className=\"button is-danger\"\r\n >\r\n Eliminar\r\n \r\n
    \r\n
    \r\n\r\n
    \r\n
    \r\n
    \r\n {\r\n (state.listaSyncDrives && state.listaSyncDrives.length !== 0) ?\r\n {\r\n if (state.listaSyncDrives.length > 0) {\r\n setState({ ...state, isLoading: true })\r\n let listaArticuloDrive = state.listaSyncDrives.map(x => ({\r\n \"IdArticuloInventario\": inventoryItem.InventoryItemId,\r\n \"IdCaffenio\": x.value\r\n }))\r\n\r\n InventoryItemsAPI.syncDrives(listaArticuloDrive)\r\n .then(() => {\r\n toast.success('Artículo inventario sincronizado')\r\n setState({ ...state, isLoading: false })\r\n close()\r\n })\r\n .catch((x) => {\r\n setState({ ...state, isLoading: false })\r\n toast.error('Error al sincronizar artículo inventario')\r\n })\r\n } else {\r\n toast.error('No hay drives seleccionados')\r\n }\r\n }}\r\n className=\"button is-success\"\r\n >\r\n Aceptar\r\n \r\n : <>\r\n }\r\n\r\n
    \r\n
    \r\n\r\n
    \r\n {\r\n (state.listaSyncDrives && state.listaSyncDrives.length !== 0) ?\r\n
    \r\n {\r\n let listaSyncDrivesAux = [...state.listaSyncDrives]\r\n listaSyncDrivesAux.splice(listaSyncDrivesAux.findIndex(x => \r\n x.value === inventoryItem.value), 1)\r\n setState({...state, listaSyncDrives: listaSyncDrivesAux})\r\n }}\r\n data={state.pageSyncDrives}\r\n rowClickable={false}\r\n />\r\n setState({ ...state, pageSyncDrives: listaSyncDrives })}\r\n />\r\n
    \r\n :\r\n <>\r\n }\r\n
    \r\n
    \r\n \r\n
    \r\n )\r\n}\r\n\r\nexport default SyncInventoryItem","import React, { Component } from 'react';\r\nimport SearchForm from \"../../util/searchform/SearchForm\";\r\nimport TableTemplate from \"../../util/tabletemplate/TableTemplate\";\r\nimport NoItems from \"../../util/noitems/NoItems\";\r\nimport Modal from '../../util/modal/Modal';\r\nimport InventoryItemForm from './InventoryItemForm';\r\nimport InventoryItemImageForm from './InventoryItemImageForm';\r\nimport AcceptModal from '../../util/acceptModal/AcceptModal';\r\nimport Pagination from '../../util/pagination/Pagination';\r\nimport Loading from '../../util/loading/Loading';\r\nimport InventoryItemsAPI from '../../../services/InventoryItem';\r\nimport UnitsAPI from '../../../services/Units';\r\nimport SatAPI from '../../../services/Sat';\r\nimport { toast } from 'react-toastify';\r\n\r\nimport ModoGuiado from \"../../modoGuiado/ModoGuiado\"\r\nimport BtnModoGuiado from '../../util/BtnModoGuiado/BtnModoGuiado'\r\nimport ErrorMessages from '../../../util/validation-error-messages';\r\nimport lodash from 'lodash';\r\nimport roles from '../../../util/strings/roles';\r\nimport SyncInventoryItem from './SyncInventoryItem';\r\n\r\nclass InventoryItems extends Component {\r\n inventoryItems = [];\r\n\r\n constructor(props){\r\n super(props);\r\n this.state = {\r\n inventoryItems: [],\r\n pageInventoryItems: [],\r\n filterText: \"\",\r\n inventoryItem: null,\r\n showModal: false,\r\n editing: false,\r\n removeModal: false,\r\n isLoading: false,\r\n syncModal: false\r\n }\r\n }\r\n\r\n componentWillMount(){\r\n this.setState({isLoading: true}); \r\n \r\n InventoryItemsAPI.getAll()\r\n .then(response => {\r\n let tempInventoryItems = [];\r\n response.data.map(obj => {\r\n tempInventoryItems.push(obj)\r\n })\r\n this.setState({inventoryItems: tempInventoryItems, isLoading: false});\r\n this.inventoryItems = tempInventoryItems;\r\n }).catch(err => {\r\n this.setState({isLoading: false})\r\n if(err.response)\r\n toast.error(err.response.data.Message)\r\n else\r\n toast.error(ErrorMessages.SinConexion)\r\n });\r\n }\r\n\r\n // Método encargado de recibir el texto en el input de búsqueda y filtrar los elementos en\r\n // la tabla \r\n handleSearchInput = (text) => {\r\n let inventoryItems = this.inventoryItems.filter(\r\n inventoryItem => inventoryItem.Name.toLowerCase().normalize(\"NFD\").replace(/[\\u0300-\\u036f]/g, \"\").includes(text.trim().toLowerCase().normalize(\"NFD\").replace(/[\\u0300-\\u036f]/g, \"\")) || inventoryItem.CodeProvider.toLowerCase().normalize(\"NFD\").replace(/[\\u0300-\\u036f]/g, \"\").includes(text.trim().toLowerCase().normalize(\"NFD\").replace(/[\\u0300-\\u036f]/g, \"\")) \r\n );\r\n let state = this.state;\r\n state.filterText = text;\r\n state.inventoryItems = inventoryItems;\r\n this.setState(state);\r\n }\r\n\r\n create = () => {\r\n \r\n this.props.history.push({\r\n pathname: '/items-inventario/nuevo', \r\n state: { inventoryItems: this.inventoryItems }\r\n });\r\n \r\n }\r\n\r\n edit = (inventoryItem) => {\r\n this.props.history.push({\r\n pathname : `/items-inventario/${inventoryItem.InventoryItemId}/editar`,\r\n state : { inventoryItems: this.inventoryItems }\r\n })\r\n }\r\n\r\n remove = () => {\r\n this.setState({isLoading: true});\r\n InventoryItemsAPI.delete(this.state.inventoryItem.InventoryItemId).then(response => {\r\n let state = {...this.state};\r\n\r\n state.inventoryItems.splice(state.inventoryItems.findIndex(c => c.InventoryItemId === state.inventoryItem.InventoryItemId), 1);\r\n state.pageInventoryItems.splice(state.pageInventoryItems.findIndex(c => c.InventoryItemId === state.inventoryItem.InventoryItemId), 1);\r\n this.inventoryItems.splice(state.pageInventoryItems.findIndex(c => c.InventoryItemId === state.inventoryItem.InventoryItemId), 1)\r\n state.isLoading = false;\r\n state.removeModal = false;\r\n state.inventoryItem = null;\r\n\r\n this.setState(state, () => toast.success(\"Artículo Inventario eliminado\"));\r\n }).catch(err => {\r\n this.setState({isLoading: false, inventoryItem: null, removeModal: false});\r\n if(err.response)\r\n toast.error(err.response.data.Message);\r\n else\r\n toast.error(ErrorMessages.SinConexion);\r\n\r\n });\r\n }\r\n\r\n render() {\r\n return (\r\n
    \r\n\r\n \r\n\r\n

    Artículo inventario

    \r\n
    \r\n
    \r\n
    \r\n
    \r\n
    \r\n
    \r\n this.handleSearchInput(t)}\r\n itemName={'por Nombre/Nombre Corto/Código'}\r\n placeholderText={\"Ingrese Nombre o Código GP de artículo\"}\r\n />\r\n
    \r\n
    \r\n
    \r\n
    \r\n
    \r\n\r\n
    \r\n
    \r\n
    \r\n {lodash.intersection(localStorage.getItem('role').split(\",\"), [roles.ADMIN, roles.ADMINDRIVE, roles.ESPECIALISTA_DE_PRODUCTO, roles.COORDINADOR_GESTION_OPERACIONES]).length > 0 &&\r\n this.create()}>\r\n \r\n \r\n \r\n Agregar Artículo Inventario\r\n \r\n }\r\n
    \r\n
    \r\n
    \r\n\r\n
    \r\n \r\n
    \r\n
    \r\n {this.state.inventoryItems.length !== 0\r\n ? this.edit(inventoryItem)}\r\n canEdit canDelete canSync\r\n sync={(inventoryItem) => this.setState({ syncModal: true, inventoryItem: inventoryItem })}\r\n edit={(inventoryItem) => this.edit(inventoryItem)}\r\n remove={(inventoryItem) => this.setState({ removeModal: true, inventoryItem: inventoryItem })}\r\n extraButtons={(row) => {\r\n return (\r\n row.IsTopping\r\n ? \r\n : \"\"\r\n )\r\n }}\r\n \r\n /> \r\n : }\r\n this.setState({ pageInventoryItems: inventoryItems })} />\r\n
    \r\n
    \r\n\r\n {this.state.showModal && \r\n this.setState({showModal: false, inventoryItem: null})}\r\n >\r\n this.setState({isLoading: false, showModal:false,inventoryItem:null })} \r\n save = {(values) => {\r\n this.setState({isLoading:true})\r\n InventoryItemsAPI.editImage(values)\r\n .then(response => {\r\n toast.dismiss()\r\n toast.success(\"Imagen actualizada\");\r\n window.location.reload(false);\r\n\r\n })\r\n .catch(err => { \r\n toast.dismiss() \r\n if(err.response)\r\n toast.error(err.response.data)\r\n else\r\n toast.error(ErrorMessages.SinConexion)\r\n }).finally(() => {\r\n this.setState({isLoading: false, showModal:false,inventoryItem:null })\r\n\r\n })\r\n\r\n }} \r\n \r\n /> \r\n \r\n }\r\n\r\n {/* {this.state.showModal && \r\n this.setState({showModal: false, unit: null})}\r\n >\r\n \r\n \r\n } */}\r\n {this.state.removeModal && this.remove()}\r\n cancel={() => this.setState({removeModal: false})}\r\n modalTitle={\"Eliminar Artículo Inventario\"}\r\n />}\r\n \r\n\r\n \r\n\r\n\r\n {this.state.syncModal && \r\n this.setState({ syncModal: false })}\r\n width=\"80%\"\r\n >\r\n this.setState({ syncModal: false })}\r\n />\r\n \r\n }\r\n\r\n
    \r\n );\r\n }\r\n}\r\n\r\nexport default InventoryItems;\r\n","import React, { Component } from 'react';\r\nimport Field from '../../util/field/Field';\r\nimport ErrorMessages from '../../../util/validation-error-messages';\r\nimport ExpresionesRegulares from '../../../util/expresiones-regulares';\r\nimport { Formik } from 'formik';\r\nimport * as Yup from 'yup';\r\nimport lodash from 'lodash';\r\nimport Select from 'react-select';\r\nimport EmpresasAPI from '../../../services/CaffenioEmpresas/Empresas';\r\nimport { toast } from 'react-toastify';\r\n\r\nconst SUPPORTED_FORMATS = [\r\n \"image/png\",\r\n];\r\nclass RecipeTypeForm extends Component {\r\n\r\n constructor(props) {\r\n super(props);\r\n this.state = {\r\n recipeType: { ...this.props.recipeType },\r\n isEditing: this.props.isEditing\r\n } \r\n }\r\n \r\n componentWillMount() {\r\n this.setState({ isLoading: true }, () => {\r\n EmpresasAPI.getAllFilterSegments().then(response => {\r\n let tempSegmentsList = []\r\n response.data.map(obj => {\r\n tempSegmentsList.push(obj)\r\n })\r\n this.setState({ segments: tempSegmentsList });\r\n }).catch(err => {\r\n this.setState({ isLoading: false })\r\n if (err.response)\r\n toast.error(err.response.data.Message)\r\n else\r\n toast.error(ErrorMessages.SinConexion)\r\n })\r\n })\r\n }\r\n\r\n /**Obtiene la posición máxima para recomendar la siguiente */\r\n getNextMaxPosition = () => {\r\n let maxPosition = lodash.maxBy(this.props.recipeTypes, function (o) { return o.Position; });\r\n return maxPosition ? maxPosition.Position : 1;\r\n }\r\n\r\n VALIDATION_SCHEMA = Yup.object({\r\n Description: Yup.string()\r\n .trim()\r\n .matches(ExpresionesRegulares.AlfanumericoSinEspeciales, { message: ErrorMessages.AlfanumericoSinEspecialesError })\r\n .min(3, \"Nombre debe tener más de 2 caracteres.\")\r\n .max(50, \"Ha excedido el límite de 50 caracteres.\")\r\n .required(\"Campo Nombre es requerido.\"),\r\n // .test(\"validate-name\", \"El Nombre de tipo receta ya existe, favor de ingresar otro.\", (value) => {\r\n // let isValid = true;\r\n // let name = value ? value.toLowerCase().trim() : \"\";\r\n // if (this.props.recipeTypes.some(u => u.Description.toLowerCase().trim() === name && u.RecipeTypeId !== this.state.recipeType.RecipeTypeId)) {\r\n // isValid = false;\r\n // }\r\n // return isValid;\r\n // }),\r\n Position: Yup.number()\r\n .min(1, \"Ingrese valores mayores a 0.\")\r\n .max(999, \"Ha excedio el límite de caracteres.\")\r\n .required(\"Campo Posición es requerido.\"),\r\n // Image: Yup.mixed()\r\n // .required(\"Campo Imagen es requerido.\")\r\n // .test(\r\n // \"fileFormat\",\r\n // \"Solo se permite formato png.\",\r\n // value =>{\r\n // console.log(this.state.recipeType)\r\n // return value && SUPPORTED_FORMATS.includes(value.type) \r\n // || (this.state.recipeType.URLImage !== null && this.state.recipeType.URLImage.length > 0)\r\n // } \r\n // )\r\n SegmentationId: Yup.string()\r\n .when([], {\r\n is: () => !this.state.isEditing,\r\n then: Yup.string().required(\"Segmentación es requerido.\").nullable(),\r\n otherwise: Yup.string().notRequired(),\r\n }),\r\n });\r\n /**\r\n * Previene el submit al dar enter\r\n * @param {*} keyEvent \r\n */\r\n onKeyDown = (keyEvent) => {\r\n if ((keyEvent.charCode || keyEvent.keyCode) === 13) {\r\n keyEvent.preventDefault();\r\n }\r\n }\r\n render() {\r\n return (\r\n {\r\n let formatValues = {...values}\r\n formatValues.RecipeName = values.Description.trim();\r\n formatValues.Activo = true;\r\n formatValues.Description = values.Description.trim();\r\n this.props.save(formatValues)\r\n }}\r\n >\r\n {({ values, touched, errors, handleChange, handleBlur, handleSubmit, setFieldValue, setFieldTouched }) => (\r\n
    \r\n {!this.state.isEditing &&\r\n \r\n
    \r\n \"No hay opciones\"}\r\n onChange={(val) => {\r\n setFieldValue('SegmentationId', val)\r\n }}\r\n onBlur={() => setFieldTouched('SegmentationId', true)}\r\n options={this.state.segments}\r\n getOptionLabel={(objSegment) => {\r\n switch (objSegment.Name) {\r\n case \"Andatti drive\":\r\n return \"Andatti\"\r\n case \"Drive\":\r\n return \"Caffenio\"\r\n case \"momento espresso\":\r\n return \"Momento Espresso\"\r\n default:\r\n return objSegment.Name\r\n }\r\n }}\r\n\r\n getOptionValue={(objSegment) => objSegment.SegmentId}\r\n />\r\n
    \r\n \r\n }\r\n
    \r\n \r\n \r\n \r\n
    \r\n \r\n { \r\n if(event.keyCode === 69 || event.keyCode === 109 || event.keyCode === 110 || event.keyCode === 107\r\n || event.keyCode === 189 ||\r\n event.keyCode === 187||\r\n event.keyCode === 190){\r\n event.preventDefault();\r\n setFieldValue(\"Position\", values.Position);\r\n return false\r\n }else{\r\n return true \r\n }\r\n }} \r\n onBlur={handleBlur}\r\n placeholder={`La última posición registrada es ${this.getNextMaxPosition()}`}\r\n />\r\n \r\n
    \r\n {/* \r\n
    \r\n \r\n
    \r\n {values.Image !== null && \r\n \r\n \r\n \r\n \r\n }\r\n
    \r\n {values.Image !== null \r\n && (values.URLImage === null || values.URLImage.length === 0) \r\n && \r\n
    \r\n
    \r\n \"\"\r\n
    \r\n
    \r\n
    \r\n \r\n } \r\n {values.URLImage && \r\n
    \r\n
    \r\n \"\"\r\n
    \r\n
    \r\n
    }\r\n */}\r\n\r\n
    \r\n
    \r\n \r\n Guardar\r\n \r\n
    \r\n
    \r\n \r\n )}\r\n\r\n \r\n );\r\n }\r\n}\r\n\r\nRecipeTypeForm.defaultProps = {\r\n isEditing: false,\r\n recipeType: {\r\n Description: \"\",\r\n Position: \"\",\r\n Image: null,\r\n RecipeName: \"\",\r\n URLImage:null\r\n },\r\n segments: []\r\n}\r\n\r\nexport default RecipeTypeForm;\r\n","import React, { Component } from 'react';\r\nimport SearchForm from \"../../util/searchform/SearchForm\";\r\nimport TableTemplate from \"../../util/tabletemplate/TableTemplate\";\r\nimport NoItems from \"../../util/noitems/NoItems\";\r\nimport RecipeTypeForm from './RecipeTypeForm';\r\nimport Modal from '../../util/modal/Modal';\r\nimport AcceptModal from '../../util/acceptModal/AcceptModal';\r\nimport RecipeTypesAPI from '../../../services/RecipeType';\r\nimport { toast } from 'react-toastify';\r\nimport Pagination from '../../util/pagination/Pagination';\r\nimport Loading from '../../util/loading/Loading';\r\n\r\nimport ModoGuiado from \"../../modoGuiado/ModoGuiado\"\r\nimport BtnModoGuiado from '../../util/BtnModoGuiado/BtnModoGuiado'\r\nimport ErrorMessages from '../../../util/validation-error-messages';\r\nimport lodash from 'lodash';\r\nimport roles from '../../../util/strings/roles';\r\nclass RecipeTypes extends Component {\r\n recipeTypes = [];\r\n\r\n constructor(props){\r\n super(props);\r\n this.state = {\r\n recipeTypes: [],\r\n filterText: \"\",\r\n pageRecipeTypes: [],\r\n recipeType: null,\r\n showModal: false,\r\n editing: false,\r\n removeModal: false,\r\n isLoading: false\r\n }\r\n }\r\n\r\n componentWillMount(){\r\n this.setState({isLoading: true});\r\n RecipeTypesAPI.getAll().then(response => {\r\n this.setState({recipeTypes: response.data, isLoading: false});\r\n this.recipeTypes = response.data;\r\n }).catch(err => {\r\n this.setState({isLoading: false})\r\n if(err.response)\r\n toast.error(err.response.data.Message)\r\n else\r\n toast.error(ErrorMessages.SinConexion)\r\n })\r\n }\r\n\r\n // Método encargado de recibir el texto en el input de búsqueda y filtrar los elementos en\r\n // la tabla \r\n handleSearchInput = (text) => {\r\n let recipeTypes = this.recipeTypes.filter(recipeType => recipeType.Description.toLowerCase().normalize(\"NFD\").replace(/[\\u0300-\\u036f]/g, \"\").includes(text.trim().toLowerCase().normalize(\"NFD\").replace(/[\\u0300-\\u036f]/g, \"\")));\r\n let state = this.state;\r\n state.filterText = text;\r\n state.recipeTypes = recipeTypes;\r\n this.setState(state);\r\n }\r\n\r\n /** Redirige vista a crear nuevo tipo receta */\r\n create = () => {\r\n this.props.history.push({pathname: '/tipos-receta/nuevo', state:{recipeTypes: this.recipeTypes}});\r\n }\r\n\r\n edit = (recipeType) => {\r\n \r\n this.setState({isLoading: true}, ()=>{\r\n RecipeTypesAPI.edit(recipeType).then(response => {\r\n let state = {...this.state};\r\n \r\n state.recipeTypes[state.recipeTypes.findIndex(c => c.RecipeTypeId === recipeType.RecipeTypeId)] = response.data;\r\n state.pageRecipeTypes[state.pageRecipeTypes.findIndex(c => c.RecipeTypeId === recipeType.RecipeTypeId)] = response.data;\r\n this.recipeTypes[this.recipeTypes.findIndex(c => c.RecipeTypeId === recipeType.RecipeTypeId)] = response.data;\r\n state.isLoading = false;\r\n state.showModal = false;\r\n state.recipeType = null;\r\n this.setState(state, () => toast.success(\"Tipo Receta actualizada\"));\r\n }).catch(err => {\r\n //console.log(err);\r\n this.setState({isLoading: false});\r\n if(err.response)\r\n toast.error(err.response.data.Message);\r\n else\r\n toast.error(ErrorMessages.SinConexion);\r\n })\r\n });\r\n \r\n \r\n }\r\n\r\n remove = () => {\r\n this.setState({isLoading: true});\r\n RecipeTypesAPI.delete(this.state.recipeType.RecipeTypeId).then(response => {\r\n let state = {...this.state};\r\n\r\n state.recipeTypes.splice(state.recipeTypes.findIndex(c => c.RecipeTypeId === state.recipeType.RecipeTypeId), 1);\r\n state.pageRecipeTypes.splice(state.pageRecipeTypes.findIndex(c => c.RecipeTypeId === state.recipeType.RecipeTypeId), 1);\r\n this.recipeTypes.splice(this.recipeTypes.findIndex(c => c.RecipeTypeId === state.recipeType.RecipeTypeId), 1);\r\n state.isLoading = false;\r\n state.removeModal = false;\r\n state.recipeType = null;\r\n\r\n this.setState(state, () => toast.success(\"Tipo Receta eliminada\"));\r\n }).catch(err => {\r\n this.setState({isLoading: false, recipeType: null, removeModal: false});\r\n if(err.response)\r\n toast.error(err.response.data.Message)\r\n else\r\n toast.error(ErrorMessages.SinConexion)\r\n })\r\n }\r\n\r\n render() {\r\n return (\r\n
    \r\n\r\n \r\n\r\n

    Tipo de receta /sub categoría

    \r\n
    \r\n
    \r\n
    \r\n
    \r\n
    \r\n
    \r\n this.handleSearchInput(t)}\r\n itemName={'Tipo Receta'}\r\n placeholderText={\"Ingrese nombre de tipo receta.\"}\r\n />\r\n
    \r\n
    \r\n
    \r\n
    \r\n
    \r\n\r\n
    \r\n
    \r\n
    \r\n {lodash.intersection(localStorage.getItem('role').split(\",\"), [roles.ADMIN, roles.ADMINDRIVE, roles.ESPECIALISTA_DE_PRODUCTO, roles.COORDINADOR_GESTION_OPERACIONES]).length > 0 &&\r\n this.create()}>\r\n \r\n \r\n \r\n Agregar Tipo Receta\r\n \r\n }\r\n
    \r\n
    \r\n
    \r\n
    \r\n\r\n
    \r\n
    \r\n {this.state.recipeTypes.length !== 0 \r\n ? this.setState({showModal: true, recipeType: recipeType})}\r\n canEdit canDelete \r\n edit={(recipeType) => this.setState({showModal: true, recipeType: recipeType})} \r\n remove={(recipeType) => this.setState({removeModal: true, recipeType: recipeType})}\r\n /> \r\n : }\r\n this.setState({ pageRecipeTypes: recipeTypes })} />\r\n
    \r\n
    \r\n {this.state.showModal && \r\n this.setState({showModal: false, unit: null})}\r\n >\r\n \r\n \r\n }\r\n {this.state.removeModal && this.remove()}\r\n cancel={() => this.setState({removeModal: false})}\r\n modalTitle={\"Eliminar Tipo Receta\"}\r\n />}\r\n \r\n\r\n \r\n\r\n
    \r\n );\r\n }\r\n}\r\n\r\nexport default RecipeTypes;\r\n","import React, { Component } from 'react';\r\nimport PropTypes from 'prop-types';\r\nimport {toast} from 'react-toastify';\r\nimport RecipeTypeForm from './RecipeTypeForm';\r\nimport RecipesTypesAPI from '../../../services/RecipeType';\r\nimport '../../cssComponents.css';\r\nimport Loading from '../../util/loading/Loading';\r\nimport Modal from '../../util/modal/Modal';\r\nimport ErrorMessages from '../../../util/validation-error-messages';\r\n\r\nclass NewRecipeType extends Component {\r\n constructor(props){\r\n super(props);\r\n this.state = {\r\n recipeType: {...this.props.recipeType},\r\n recipeTypes:[],\r\n isLoading: false\r\n };\r\n }\r\n\r\n componentDidMount(){\r\n if (!this.props.location.state) {\r\n this.props.history.push(`/tipos-receta`);\r\n return;\r\n }\r\n this.setState({ recipeTypes: this.props.location.state.recipeTypes })\r\n }\r\n\r\n handleChange = (e) => {\r\n let state = {...this.state};\r\n state.recipeType[e.target.name] = e.target.value;\r\n this.setState(state);\r\n }\r\n\r\n save = (recipeType) => {\r\n this.setState({isLoading: true}, () => {\r\n RecipesTypesAPI.create(recipeType)\r\n .then(response => {\r\n this.props.history.goBack();\r\n this.setState({isLoading: false})\r\n toast.success(\"Tipo Receta creada\");\r\n }).catch(err => {\r\n this.setState({isLoading: false})\r\n if(err.response)\r\n toast.error(err.response.data.Message)\r\n else\r\n toast.error(ErrorMessages.SinConexion)\r\n });\r\n })\r\n }\r\n\r\n render() {\r\n return (\r\n
    \r\n
    \r\n
    \r\n
    \r\n \r\n {this.props.history.goBack()}} className=\"fa fa-arrow-left\">\r\n \r\n
    \r\n Nuevo Tipo Receta\r\n this.setState({ showModal: true })} className=\"fa fa-question-circle\">\r\n
    \r\n \r\n
    \r\n
    \r\n
    \r\n \r\n
    \r\n
    \r\n {this.state.showModal &&\r\n this.setState({ showModal: false })}\r\n >\r\n
    \r\n \r\n Los tipos de receta están directamente relacionadas a las recetas, se usa para agrupar las \r\n recetas por sub-categorías en los dispositivos del punto de venta de ser necesario.\r\n
    \r\n En los dispositivos del punto de venta se visualización como una selección más antes de agregar el producto a la orden.\r\n
    \r\n

    \r\n Nombre: es un campo requerido, \r\n debe tener una longitud mínima de 2 a 30 caracteres máximo\r\n y no se debe duplicar. \r\n

    \r\n\r\n

    \r\n Posición en Menú: valor numérico que representa el orden de visualización en los dispositivos de izquierda a derecha.\r\n Debe ser mayor a 0, y no se aceptan duplicados.\r\n

    \r\n\r\n

    \r\n Imagen: la imagen será la que se muestre en los puntos de venta, debe ser formato png y es requerido.\r\n

    \r\n
    \r\n \r\n\r\n \r\n }\r\n \r\n
    \r\n );\r\n }\r\n}\r\n\r\n// Definición de los tipos y su dependencia de las distintas props que recibe el componente.\r\nNewRecipeType.propTypes = {\r\n recipeType: PropTypes.object,\r\n isEditing: PropTypes.bool\r\n}\r\n\r\n// Definición de los valores por default de las props en caso de no ser recibidas por el padre.\r\nNewRecipeType.defaultProps = {\r\n isEditing: false,\r\n recipeType: {\r\n Description: \"\",\r\n Position: \"\",\r\n URLImage: \"\",\r\n RecipeName: \"\"\r\n }\r\n}\r\n\r\nexport default NewRecipeType;\r\n","import React, { Component } from 'react';\r\nimport Field from '../../util/field/Field';\r\nimport Dropdown from '../../util/dropdown/Dropdown';\r\nimport { toast } from 'react-toastify';\r\nimport Loading from '../../util/loading/Loading';\r\nimport SatAPI from '../../../services/Sat';\r\nimport ErrorMessages from '../../../util/validation-error-messages';\r\nimport ExpresionesRegulares from '../../../util/expresiones-regulares';\r\nimport { Formik } from 'formik';\r\nimport * as Yup from 'yup';\r\n\r\nlet UNITS_LIST = []; \r\n\r\nclass UnitForm extends Component {\r\n constructor(props) {\r\n super(props);\r\n this.state = {\r\n unit: { ...this.props.unit },\r\n isEditing: false,\r\n satCodes: [],\r\n isLoading: false,\r\n showModal: false\r\n }\r\n }\r\n\r\n componentDidMount() { \r\n this.setState({ isLoading: true });\r\n SatAPI.getUnitCodes().then(response => { \r\n UNITS_LIST = this.props.units; \r\n this.setState({ satCodes: response.data, isLoading: false });\r\n }).catch(err => {\r\n this.setState({ isLoading: false })\r\n if (err.response)\r\n toast.error(err.response.data.Message)\r\n else\r\n toast.error(ErrorMessages.SinConexion)\r\n });\r\n }\r\n\r\n VALIDATION_SCHEMA = Yup.object({\r\n Name: Yup.string()\r\n .trim()\r\n .matches(ExpresionesRegulares.AlfanumericoSinEspeciales, { message: ErrorMessages.AlfanumericoSinEspecialesError })\r\n .min(3, \"Nombre debe tener más de 2 caracteres.\")\r\n .max(20, \"Ha excedido el límite de 20 caracteres.\")\r\n .required(\"Campo Nombre es requerido.\")\r\n .test(\"validate-name\", \"El Nombre de unidad ya existe, favor de ingresar otro.\", (value) => {\r\n let isValid = true;\r\n let name = value ? value.toLowerCase().trim() : \"\";\r\n if (UNITS_LIST.some(u => u.Name.toLowerCase().trim() === name && u.UnitsId !== this.state.unit.UnitsId)) {\r\n isValid = false; \r\n }\r\n return isValid;\r\n }),\r\n ShortName: Yup.string()\r\n .trim()\r\n .matches(ExpresionesRegulares.AlfanumericoSinEspeciales, { message: ErrorMessages.AlfanumericoSinEspecialesError })\r\n .min(1, \"Nombre Corto debe tener más de un caracter.\")\r\n .max(10, \"Ha excedido el límite de 10 caracteres.\")\r\n .required(\"Campo Nombre Corto es requerido.\")\r\n .test(\"validate-shorname\", \"El Nombre Corto de unidad ya existe, favor de ingresar otro.\", (value) => {\r\n let isValid = true;\r\n let shortName = value ? value.toLowerCase().trim() : \"\";\r\n if (UNITS_LIST.some(u => u.ShortName.toLowerCase().trim() === shortName && u.UnitsId !== this.state.unit.UnitsId)) {\r\n isValid = false; \r\n }\r\n return isValid;\r\n }),\r\n SatCode: Yup.string().required(\"Campo Código SAT de unidad es requerido.\").nullable(),\r\n });\r\n\r\n render() {\r\n return (\r\n { \r\n let formatValues = {...values}\r\n formatValues.Name = formatValues.Name.trim();\r\n formatValues.ShortName = formatValues.ShortName.trim(); \r\n this.props.save(formatValues) \r\n }}\r\n >\r\n {({ values, touched, errors, handleChange, handleBlur, handleSubmit, setFieldValue, setFieldTouched }) => (\r\n
    \r\n
    \r\n \r\n \r\n \r\n
    \r\n \r\n \r\n \r\n
    \r\n \r\n {\r\n let selected = val === 0 ? 0 : this.state.satCodes[val - 1].Key;\r\n setFieldValue('SatCode', val === 0 ? null : selected)\r\n }}\r\n onBlur={() => setFieldTouched('SatCode', true)}\r\n labelKey={\"Label\"}\r\n hasError={errors.SatCode && touched.SatCode}\r\n />\r\n \r\n\r\n
    \r\n
    \r\n \r\n
    \r\n
    \r\n
    \r\n \r\n \r\n \r\n )}\r\n\r\n \r\n );\r\n }\r\n}\r\n\r\nUnitForm.defaultProps = {\r\n isEditing: false,\r\n unit: {\r\n ShortName: \"\",\r\n Name: \"\",\r\n SatCode: null\r\n }\r\n}\r\n\r\nexport default UnitForm;\r\n","import React, { Component } from 'react';\r\nimport PropTypes from 'prop-types';\r\nimport { toast } from 'react-toastify';\r\nimport UnitForm from './UnitForm';\r\nimport UnitsAPI from '../../../services/Units';\r\nimport '../../cssComponents.css';\r\nimport ErrorMessages from '../../../util/validation-error-messages';\r\nimport Loading from '../../util/loading/Loading';\r\nimport Modal from '../../util/modal/Modal';\r\n\r\nclass NewUnit extends Component {\r\n constructor(props) {\r\n super(props);\r\n this.state = {\r\n unit: { ...this.props.unit },\r\n units: [],\r\n isLoading: false\r\n };\r\n }\r\n\r\n componentDidMount() {\r\n if (!this.props.location.state) {\r\n this.props.history.push(`/unidades`);\r\n return;\r\n }\r\n this.setState({ units: this.props.location.state.units })\r\n }\r\n\r\n save = (unit) => {\r\n\r\n this.setState({ isLoading: true })\r\n\r\n UnitsAPI.create(unit).then(response => {\r\n this.setState({ isLoading: false })\r\n toast.success(\"Unidad creada\");\r\n this.props.history.goBack();\r\n }).catch(err => {\r\n this.setState({ isLoading: false })\r\n if (err.response) {\r\n console.log(err.response.data.Message)\r\n toast.error(ErrorMessages.ErrorInesperado)\r\n } else {\r\n toast.error(ErrorMessages.SinConexion);\r\n }\r\n })\r\n }\r\n\r\n\r\n\r\n render() {\r\n return (\r\n
    \r\n
    \r\n
    \r\n
    \r\n \r\n { this.props.history.goBack() }} className=\"fa fa-arrow-left\">\r\n \r\n
    Nueva Unidad\r\n this.setState({ showModal: true })} className=\"fa fa-question-circle\">\r\n
    \r\n
    \r\n
    \r\n
    \r\n \r\n
    \r\n
    \r\n {this.state.showModal &&\r\n this.setState({ showModal: false })}\r\n >\r\n
    \r\n \r\n Las unidades de medida están directamente relacionadas con artículos, ya que se especifica para cada\r\n artículo inventario su: unidad de pedido a sucursal, unidad de almacenamiento externo, y\r\n su unidad de medida para la venta.\r\n\r\n La unidad de medida solo se podrá eliminar en caso de no estar vinculada con ningún artículo.\r\n\r\n
    \r\n

    \r\n Nombre: es un campo requerido, \r\n debe tener una longitud mínima de 2 a 20 caracteres máximo\r\n y no se debe duplicar \r\n

    \r\n
    \r\n

    \r\n Nombre corto: es un campo requerido, \r\n debe tener una longitud mínima de 2 a 10 caracteres máximo \r\n y no se debe duplicar.\r\n

    \r\n
    \r\n

    \r\n Código SAT: es el código de facturación y es un campo requerido.\r\n

    \r\n
    \r\n \r\n\r\n \r\n }\r\n \r\n
    \r\n );\r\n }\r\n}\r\n\r\n// Definición de los tipos y su dependencia de las distintas props que recibe el componente.\r\nNewUnit.propTypes = {\r\n unit: PropTypes.object,\r\n isEditing: PropTypes.bool\r\n}\r\n\r\n// Definición de los valores por default de las props en caso de no ser recibidas por el padre.\r\nNewUnit.defaultProps = {\r\n isEditing: false,\r\n unit: {\r\n ShortName: \"\",\r\n Name: \"\",\r\n SatCode: \"\"\r\n }\r\n}\r\n\r\nexport default NewUnit;\r\n","import React, { Component } from 'react';\r\nimport SearchForm from \"../../util/searchform/SearchForm\";\r\nimport TableTemplate from \"../../util/tabletemplate/TableTemplate\";\r\nimport NoItems from \"../../util/noitems/NoItems\";\r\nimport UnitsAPI from '../../../services/Units';\r\nimport { toast } from 'react-toastify';\r\nimport Modal from '../../util/modal/Modal';\r\nimport UnitForm from './UnitForm';\r\nimport AcceptModal from '../../util/acceptModal/AcceptModal';\r\nimport Pagination from '../../util/pagination/Pagination';\r\nimport Loading from '../../util/loading/Loading';\r\n\r\nimport ModoGuiado from \"../../modoGuiado/ModoGuiado\"\r\nimport BtnModoGuiado from '../../util/BtnModoGuiado/BtnModoGuiado'\r\nimport ErrorMessages from '../../../util/validation-error-messages';\r\nimport lodash from 'lodash';\r\nimport roles from '../../../util/strings/roles';\r\n\r\n\r\nclass Units extends Component {\r\n units = [];\r\n\r\n constructor(props){\r\n super(props);\r\n this.state = {\r\n units: [],\r\n pageUnits: [],\r\n filterText: \"\",\r\n unit: null,\r\n showModal: false,\r\n removeModal: false,\r\n isLoading: false\r\n }\r\n }\r\n\r\n componentWillMount(){\r\n this.setState({isLoading: true}, () => {\r\n UnitsAPI.getAll().then(response => {\r\n this.setState({units: response.data, isLoading: false});\r\n this.units = response.data;\r\n }).catch(err => {\r\n this.setState({isLoading: false})\r\n if(err.response)\r\n toast.error(err.response.data.Message);\r\n else\r\n toast.error(ErrorMessages.SinConexion);\r\n })\r\n });\r\n }\r\n\r\n // Método encargado de recibir el texto en el input de búsqueda y filtrar los elementos en\r\n // la tabla \r\n handleSearchInput = (text) => {\r\n let units = this.units.filter(unit => unit.Name.toLowerCase().normalize(\"NFD\").replace(/[\\u0300-\\u036f]/g, \"\").includes(text.trim().toLowerCase().normalize(\"NFD\").replace(/[\\u0300-\\u036f]/g, \"\")));\r\n let state = this.state;\r\n state.filterText = text;\r\n state.units = units;\r\n this.setState(state);\r\n }\r\n\r\n create = () => {\r\n this.props.history.push({pathname: '/unidades/nueva', state: { units: this.state.units }});\r\n }\r\n\r\n edit = (unit) => {\r\n // unit.Name = unit.Name.trim();\r\n // unit.ShortName = unit.ShortName.trim();\r\n // if(unit.Name.length < 3){ \r\n // toast.error(\"Nombre debe de tener más de 2 caracteres\");\r\n // return;\r\n // }\r\n // if(unit.ShortName.length < 2){\r\n // toast.error(\"Nombre Corto debe de tener más de 1 carácter\");\r\n // return;\r\n // }\r\n // if(unit.SatCode===null || unit.SatCode===0){\r\n // toast.error(\"Selecciona un Código SAT\");\r\n // return;\r\n // }\r\n this.setState({isLoading: true});\r\n UnitsAPI.edit(unit, unit.UnitsId).then(response => {\r\n let state = {...this.state};\r\n state.units[state.units.findIndex(u => u.UnitsId === unit.UnitsId)] = unit;\r\n state.pageUnits[state.pageUnits.findIndex(u => u.UnitsId === unit.UnitsId)] = unit;\r\n state.showModal = false;\r\n state.isLoading = false;\r\n this.setState(state, () => {\r\n toast.success(\"Unidad actualizada\");\r\n });\r\n }).catch(err => {\r\n this.setState({isLoading: false});\r\n if (err.response) {\r\n console.log(err.response.data.Message)\r\n toast.error(ErrorMessages.ErrorInesperado)\r\n } else {\r\n toast.error(ErrorMessages.SinConexion);\r\n }\r\n })\r\n }\r\n\r\n remove = (unit) => {\r\n let state = {...this.state};\r\n const loadingToast = toast.info(\"Cargando...\", {autoClose: false, closeButton: false, className: \"has-background-primary has-text-weight-bold\"});\r\n UnitsAPI.delete(unit.UnitsId).then(response => {\r\n state.units.splice(state.units.findIndex(u => u.UnitsId === unit.UnitsId),1);\r\n state.pageUnits.splice(state.pageUnits.findIndex(u => u.UnitsId === unit.UnitsId),1);\r\n this.units.splice(this.units.findIndex(u => u.UnitsId === unit.UnitsId),1);\r\n state.removeModal = false;\r\n this.setState(state, () => {\r\n toast.dismiss(loadingToast);\r\n toast.success(\"Unidad eliminada\");\r\n })\r\n }).catch(err => {\r\n toast.dismiss(loadingToast);\r\n state.removeModal = false;\r\n if (err.response)\r\n toast.error(err.response.data.Message)\r\n else\r\n toast.error(ErrorMessages.SinConexion) \r\n \r\n this.setState(state);\r\n })\r\n }\r\n\r\n render() {\r\n return (\r\n
    \r\n\r\n \r\n\r\n

    Unidades

    \r\n
    \r\n
    \r\n
    \r\n
    \r\n
    \r\n
    \r\n this.handleSearchInput(t)}\r\n itemName={'Unidad'}\r\n placeholderText = {\"Ingrese nombre de unidad\"}\r\n />\r\n
    \r\n
    \r\n
    \r\n
    \r\n
    \r\n\r\n
    \r\n
    \r\n
    \r\n {lodash.intersection(localStorage.getItem('role').split(\",\"), [roles.ADMIN, roles.ADMINDRIVE, roles.ESPECIALISTA_DE_PRODUCTO, roles.COORDINADOR_GESTION_OPERACIONES]).length > 0 &&\r\n this.create()}>\r\n \r\n \r\n \r\n Agregar Unidad\r\n \r\n }\r\n
    \r\n
    \r\n
    \r\n\r\n
    \r\n\r\n
    \r\n
    \r\n {this.state.units.length !== 0 \r\n ? this.setState({showModal: true, unit: unit})}\r\n canEdit canDelete \r\n edit={(unit) => this.setState({showModal: true, unit: unit})} \r\n remove={(unit) => this.setState({removeModal: true, unit: unit})}\r\n \r\n /> \r\n : }\r\n \r\n this.setState({ pageUnits: units })} />\r\n \r\n \r\n
    \r\n
    \r\n {this.state.showModal && \r\n this.setState({showModal: false, unit: null})}\r\n >\r\n \r\n \r\n }\r\n {this.state.removeModal && this.remove(this.state.unit)}\r\n cancel={() => this.setState({removeModal: false, unit: null})}\r\n modalTitle={\"Eliminar Unidad\"}\r\n modalBody={\"¿Está seguro(a) de eliminar Unidad?\"}\r\n />}\r\n \r\n\r\n \r\n\r\n
    \r\n );\r\n }\r\n}\r\n\r\nexport default Units;\r\n","import { apiUrl } from \"../constants\";\r\nimport axios from 'axios';\r\nvar request = axios.create({\r\n baseURL: apiUrl,\r\n headers: {'Authorization':'Bearer ' +localStorage.getItem('token'),'Content-Type':'application/json'}\r\n})\r\nexport default class InventoryTypesAPI {\r\n static getAll() {\r\n return request.get('/inventoryType');\r\n }\r\n\r\n static get(id) {\r\n return request.get(`/inventoryType/${id}`);\r\n }\r\n\r\n static create(inventoryType) {\r\n //(inventoryType);\r\n return request.post('/inventoryType',inventoryType);\r\n }\r\n\r\n static edit(inventoryType){\r\n return request.put(`/inventoryType`,inventoryType);\r\n }\r\n\r\n static delete(inventoryType){\r\n return request.delete('/inventoryType',{ data: inventoryType });\r\n }\r\n\r\n /*static delete(id){\r\n return request.delete(`inventoryType/${id}`);\r\n }*/\r\n\r\n /*static getInventoryTypes(){\r\n return request.get(`/InventoryType`);\r\n } */\r\n\r\n /*static getOrderTypes(){\r\n return request.get(`/OrderType`);\r\n }\r\n\r\n static search(data){\r\n return request.post(`/inventoryItem/Search/`, data)\r\n }*/\r\n}","import React, { Component } from 'react';\r\nimport { toast } from 'react-toastify';\r\nimport Field from '../util/field/Field';\r\nimport ExpresionesRegulares from '../../util/expresiones-regulares';\r\nimport InventoryTypesAPI from '../../services/InventoryType';\r\nimport ErrorMessages from '../../util/validation-error-messages';\r\nimport { Formik } from 'formik';\r\nimport * as Yup from 'yup';\r\n\r\nlet INVENTORY_TYPES_LIST = [];\r\n\r\n\r\n\r\nclass InventoryTypeForm extends Component {\r\n\r\n constructor(props) {\r\n super(props);\r\n this.state = {\r\n inventoryType: { ...this.props.inventoryType },\r\n inventoryTypes: [],\r\n isEditing: false,\r\n isLoading: false\r\n }\r\n }\r\n\r\n componentDidMount() { \r\n this.setState({ isLoading: true }, () => {\r\n let state = { ...this.state };\r\n InventoryTypesAPI.getAll().then(response => {\r\n state.inventoryTypes = response.data;\r\n INVENTORY_TYPES_LIST = response.data;\r\n if(!this.props.inventoryType){\r\n state.inventoryType = {Description:null}\r\n }\r\n this.setState({ isLoading: false });\r\n }).catch(err => {\r\n this.setState({ isLoading: false }, () => {\r\n if (err.response){\r\n console.log(err.response.data.Message)\r\n toast.error(ErrorMessages.ErrorInesperado);\r\n }else\r\n toast.error(ErrorMessages.SinConexion)\r\n });\r\n })\r\n })\r\n }\r\n\r\n VALIDATION_SCHEMA = Yup.object({\r\n Description: Yup.string()\r\n .trim()\r\n .matches(ExpresionesRegulares.AlfanumericoSinEspeciales, { message: ErrorMessages.AlfanumericoSinEspecialesError })\r\n .min(3, \"Nombre debe tener más de 2 caracteres.\")\r\n .max(50, \"Ha excedido el límite de 50 caracteres.\")\r\n .required(\"Campo Nombre es requerido.\")\r\n .test(\"validate-name\", \"El Nombre de tipo inventario ya existe, favor de ingresar otro.\", (value) => {\r\n let isValid = true;\r\n let description = value ? value.toLowerCase().trim() : \"\";\r\n if (INVENTORY_TYPES_LIST.some(u => u.Description.toLowerCase().trim() === description && u.InventoryTypeId !== this.state.inventoryType.InventoryTypeId)) {\r\n isValid = false;\r\n }\r\n return isValid;\r\n }),\r\n });\r\n\r\n render() {\r\n return (\r\n {\r\n let formatValues = {...values};\r\n formatValues.Description = formatValues.Description.trim();\r\n this.props.save(formatValues)\r\n }}>\r\n {({ values, touched, errors, handleChange, handleBlur, handleSubmit, setFieldValue, setFieldTouched }) => (\r\n
    \r\n \r\n \r\n \r\n
    \r\n
    \r\n \r\n
    \r\n
    \r\n
    \r\n )}\r\n \r\n );\r\n }\r\n}\r\n\r\n// Definición de los valores por default de las props en caso de no ser recibidas por el padre.\r\nInventoryTypeForm.defaultProps = {\r\n isEditing: false,\r\n inventoryType: {\r\n Description: \"\",\r\n InventoryTypeId: 0\r\n }\r\n}\r\n\r\nexport default InventoryTypeForm;\r\n\r\n\r\n\r\n","import React, { Component } from 'react';\r\nimport { toast } from '../../../node_modules/react-toastify';\r\nimport InventoryTypeForm from './InventoryTypeForm';\r\nimport InventoryTypesAPI from '../../services/InventoryType';\r\nimport '../cssComponents.css';\r\nimport Loading from '../util/loading/Loading';\r\nimport ErrorMessages from '../../util/validation-error-messages';\r\nimport Modal from '../util/modal/Modal';\r\n\r\nclass NewInventoryType extends Component {\r\n constructor(props) {\r\n super(props);\r\n this.state = {\r\n inventoryType: {}, \r\n isLoading: false\r\n }\r\n }\r\n\r\n componentDidMount() { \r\n if (this.props.match.params.id) {\r\n this.setState({ isLoading: true });\r\n InventoryTypesAPI.get(this.props.match.params.id).then(response => {\r\n this.setState({ isLoading: false, inventoryType: response.data }, () => console.log(this.state));\r\n }).catch(err => {\r\n this.setState({isLoading: false})\r\n if(err.response)\r\n toast.error(err.response.data.Message)\r\n else\r\n toast.error(ErrorMessages.SinConexion)\r\n });\r\n }\r\n }\r\n\r\n save = (inventoryType) => {\r\n let { DateUpdate, ...body } = inventoryType;\r\n if (inventoryType.InventoryTypeId) {\r\n inventoryType.Description = inventoryType.Description.trim();\r\n if (inventoryType.Description.length < 3) {\r\n toast.error(\"Descripción debe de tener más de 2 caracteres\");\r\n return;\r\n }\r\n\r\n this.setState({isLoading: true}, () => {\r\n InventoryTypesAPI.edit(body).then(response => {\r\n this.props.history.goBack();\r\n toast.success(\"Tipo Inventario actualizado\");\r\n }).catch(err => {\r\n this.setState({isLoading: false})\r\n if(err.response)\r\n toast.error(err.response.data.Message)\r\n else\r\n toast.error(ErrorMessages.SinConexion)\r\n });\r\n })\r\n } else {\r\n if (inventoryType.hasOwnProperty('Description')) {\r\n inventoryType.Description = inventoryType.Description.trim();\r\n if (inventoryType.Description.length < 3) {\r\n toast.error(\"Descripción debe de tener más de 2 caracteres\");\r\n return;\r\n }\r\n } else {\r\n toast.error(\"Descripción debe de tener más de 2 caracteres\");\r\n return;\r\n }\r\n\r\n this.setState({isLoading: true}, () => {\r\n InventoryTypesAPI.create(inventoryType).then(response => {\r\n this.props.history.goBack();\r\n toast.success(\"Tipo Inventario creado\");\r\n }).catch(err => {\r\n this.setState({isLoading: false})\r\n if(err.response)\r\n toast.error(err.response.data.Message)\r\n else\r\n toast.error(ErrorMessages.SinConexion)\r\n });\r\n })\r\n }\r\n }\r\n\r\n render() {\r\n return (\r\n
    \r\n
    \r\n
    \r\n
    \r\n \r\n {this.props.history.goBack()}} className=\"fa fa-arrow-left\">\r\n \r\n
    \r\n {this.state.inventoryType.InventoryTypeId ? \"Editar Tipo Inventario\" : \"Nuevo Tipo Inventario\"}\r\n this.setState({ showModal: true })} className=\"fa fa-question-circle\">\r\n
    \r\n
    \r\n
    \r\n
    \r\n \r\n
    \r\n
    \r\n {this.state.showModal &&\r\n this.setState({ showModal: false })}\r\n >\r\n
    \r\n \r\n El tipo inventario se relaciona directamente con los artículos, impacta a las herramientas de inventarios en los puntos de venta.\r\n El tipo de inventario solo se podrá eliminar en caso de no estar vinculada con ningún artículo.\r\n\r\n
    \r\n

    \r\n Nombre: es un campo requerido, \r\n debe tener una longitud mínima de 2 a 50 caracteres máximo\r\n y no se debe duplicar. \r\n

    \r\n \r\n
    \r\n \r\n\r\n \r\n }\r\n \r\n
    \r\n );\r\n }\r\n}\r\n\r\nexport default NewInventoryType;\r\n","import React, { Component } from 'react';\r\nimport SearchForm from \"../util/searchform/SearchForm\";\r\nimport TableTemplate from \"../util/tabletemplate/TableTemplate\";\r\nimport NoItems from \"../util/noitems/NoItems\";\r\nimport Modal from '../util/modal/Modal';\r\nimport InventoryTypeForm from './InventoryTypeForm';\r\nimport AcceptModal from '../util/acceptModal/AcceptModal';\r\nimport Pagination from '../util/pagination/Pagination';\r\nimport Loading from '../util/loading/Loading';\r\nimport InventoryTypesAPI from '../../services/InventoryType';\r\nimport { toast } from 'react-toastify';\r\n\r\nimport ModoGuiado from \"../modoGuiado/ModoGuiado\"\r\nimport BtnModoGuiado from '../util/BtnModoGuiado/BtnModoGuiado'\r\nimport ErrorMessages from '../../util/validation-error-messages';\r\nimport lodash from 'lodash';\r\nimport roles from '../../util/strings/roles';\r\n\r\nclass InventoryTypes extends Component {\r\n inventoryTypes = [];\r\n\r\n constructor(props){\r\n super(props);\r\n this.state = {\r\n inventoryTypes: [],\r\n pageInventoryTypes: [],\r\n filterText: \"\",\r\n inventoryType: null,\r\n showModal: false,\r\n editing: false,\r\n removeModal: false,\r\n isLoading: false\r\n }\r\n }\r\n\r\n componentWillMount(){\r\n this.setState({isLoading: true});\r\n //this.inputCode.focus();\r\n InventoryTypesAPI.getAll().then(response => {\r\n this.setState({inventoryTypes: response.data, isLoading: false});\r\n this.inventoryTypes = response.data;\r\n }).catch(err => {\r\n this.setState({isLoading: false})\r\n if(err.response)\r\n toast.error(err.response.data.Message)\r\n else\r\n toast.error(ErrorMessages.SinConexion)\r\n });\r\n }\r\n\r\n // Método encargado de recibir el texto en el input de búsqueda y filtrar los elementos en\r\n // la tabla \r\n handleSearchInput = (text) => {\r\n let inventoryTypes = this.inventoryTypes.filter(inventoryType => inventoryType.Description.toLowerCase().normalize(\"NFD\").replace(/[\\u0300-\\u036f]/g, \"\").includes(text.trim().toLowerCase().normalize(\"NFD\").replace(/[\\u0300-\\u036f]/g, \"\")));\r\n let state = this.state;\r\n state.filterText = text;\r\n state.inventoryTypes = inventoryTypes;\r\n this.setState(state);\r\n }\r\n\r\n create = () => { \r\n this.props.history.push('/tipo-inventario/nuevo');\r\n }\r\n\r\n edit = (inventoryType) => {\r\n inventoryType.Description = inventoryType.Description.trim();\r\n if(inventoryType.Description.length < 3){ \r\n toast.error(\"Descripción debe de tener más de 2 caracteres\");\r\n return;\r\n }\r\n\r\n this.setState({isLoading: true});\r\n InventoryTypesAPI.edit(inventoryType/*, inventoryType.InventoryTypeId*/).then(response => {\r\n let state = {...this.state};\r\n state.inventoryTypes[state.inventoryTypes.findIndex(u => u.InventoryTypeId === inventoryType.InventoryTypeId)] = inventoryType;\r\n state.pageInventoryTypes[state.pageInventoryTypes.findIndex(u => u.InventoryTypeId === inventoryType.InventoryTypeId)] = inventoryType;\r\n this.inventoryTypes[this.inventoryTypes.findIndex(u => u.InventoryTypeId === inventoryType.InventoryTypeId)] = inventoryType;\r\n state.showModal = false;\r\n state.isLoading = false;\r\n this.setState(state, () => {\r\n toast.success(\"Tipo Inventario actualizado\");\r\n });\r\n }).catch(err => {\r\n this.setState({isLoading: false}, () => {toast.error(err.response.data.Message)})\r\n }) \r\n }\r\n\r\n remove = (inventoryType) => { \r\n let state = {...this.state};\r\n const loadingToast = toast.info(\"Cargando...\", \r\n { autoClose: false, \r\n closeButton: false, \r\n className: \"has-background-primary has-text-weight-bold\"\r\n });\r\n inventoryType.Description = inventoryType.Description.trim();\r\n InventoryTypesAPI.delete(inventoryType).then(response => {\r\n \r\n state.inventoryTypes.splice(state.inventoryTypes.findIndex(u => u === inventoryType),1);\r\n state.pageInventoryTypes.splice(state.pageInventoryTypes.findIndex(u => u === inventoryType),1);\r\n this.inventoryTypes.splice(this.inventoryTypes.findIndex(u => u === inventoryType),1);\r\n\r\n state.removeModal = false;\r\n this.setState(state, () => {\r\n toast.dismiss(loadingToast);\r\n toast.success(\"Tipo Inventario eliminado\");\r\n })\r\n }).catch(err => {\r\n toast.dismiss(loadingToast);\r\n state.removeModal = false;\r\n this.setState(state);\r\n if(err.response)\r\n toast.error(err.response.data.Message)\r\n else\r\n toast.error(ErrorMessages.SinConexion)\r\n \r\n })\r\n }\r\n\r\n render() {\r\n return (\r\n
    \r\n\r\n \r\n\r\n

    Tipo inventario / Clasificación Artículo

    \r\n
    \r\n
    \r\n
    \r\n
    \r\n
    \r\n
    \r\n this.handleSearchInput(t)}\r\n itemName={'Tipo Inventario'}\r\n placeholderText = {\"Ingrese nombre de tipo inventario\"}\r\n />\r\n
    \r\n
    \r\n
    \r\n
    \r\n
    \r\n\r\n
    \r\n
    \r\n
    \r\n {lodash.intersection(localStorage.getItem('role').split(\",\"), [roles.ADMIN, roles.ADMINDRIVE, roles.ESPECIALISTA_DE_PRODUCTO, roles.COORDINADOR_GESTION_OPERACIONES]).length > 0 &&\r\n this.create()}>\r\n \r\n \r\n \r\n Agregar Tipo Inventario\r\n \r\n }\r\n
    \r\n
    \r\n
    \r\n
    \r\n\r\n
    \r\n
    \r\n {this.state.inventoryTypes.length !== 0 \r\n ? this.setState({showModal: true, inventoryType: inventoryType})}\r\n canEdit canDelete \r\n edit={(inventoryType) => this.setState({showModal: true, inventoryType: inventoryType})}\r\n /*edit={(inventoryType) => this.props.history.push(`/tipo-inventario/${inventoryType.InventoryTypeId}/editar`)} */\r\n remove={(inventoryType) => this.setState({removeModal: true, inventoryType: inventoryType})}\r\n /> \r\n : }\r\n this.setState({ pageInventoryTypes: inventoryTypes })} />\r\n
    \r\n
    \r\n {this.state.showModal && \r\n this.setState({showModal: false, inventoryType: null})}\r\n >\r\n \r\n \r\n }\r\n {this.state.removeModal && this.remove(this.state.inventoryType)}\r\n cancel={() => this.setState({removeModal: false})}\r\n modalTitle={\"Eliminar Tipo Inventario\"}\r\n modalBody={\"¿Está seguro(a) de eliminar Tipo Inventario?\"}\r\n />}\r\n \r\n \r\n\r\n \r\n\r\n
    \r\n );\r\n } \r\n}\r\n\r\nexport default InventoryTypes;\r\n","import React, { Component } from 'react';\r\nimport WarehouseAPI from '../../services/Warehouse';\r\nimport NoItems from \"../util/noitems/NoItems\";\r\nimport Pagination from '../util/pagination/Pagination';\r\nimport Loading from '../util/loading/Loading';\r\nimport { toast } from 'react-toastify';\r\nimport Select from 'react-select';\r\nimport Field from '../util/field/Field';\r\n\r\nimport ModoGuiado from \"../modoGuiado/ModoGuiado\"\r\nimport BtnModoGuiado from '../util/BtnModoGuiado/BtnModoGuiado'\r\nimport ErrorMessages from '../../util/validation-error-messages';\r\n\r\nimport lodash from 'lodash';\r\n\r\n\r\nclass Warehouse extends Component {\r\n\r\n warehouseArr = [];\r\n constructor(props){\r\n super(props);\r\n this.state = {\r\n warehouseArr: [],\r\n warehouseFilter: [],\r\n isLoading: false,\r\n selectedOptionS: null,\r\n selectedOption: [],\r\n selectedOptionC: [],\r\n selectedOptionD: [],\r\n valueEstado: [],\r\n pageInventoryItems: [],\r\n Caffenios: [],\r\n OptionSelect: [],\r\n OptionSelectCity: [],\r\n OptionSelectDrive: [],\r\n filterText: \"\",\r\n optionSegmento: [],\r\n optionState: [],\r\n optionCity: [],\r\n optionDrive: [],\r\n childVisible: false,\r\n checkAll: false,\r\n switchAllSug: false,\r\n switchAllInv: false,\r\n seeSwitchSug: false,\r\n seeSwitchInv: false,\r\n buttonSelecAll: false,\r\n buttonMesagge:false\r\n }\r\n }\r\n\r\n /**\r\n * Método para filtrar por base de datos los Almart que coincidan con el nombre y/o código\r\n * de proveedor (ya no se carga en el useEffect todo, ahora primero se hace un prefiltrado)\r\n */\r\n buscarPorCodigoNombre = () => {\r\n if (this.state.filterText === null\r\n || this.state.filterText === undefined\r\n || this.state.filterText === '') {\r\n toast.error('Se debe ingresar el nombre o código de proveedor para la búsqueda')\r\n } else if (this.state.filterText.length < 3) {\r\n toast.error('Se debe ingresar un texto de por lo menos 3 caracteres')\r\n }\r\n else {\r\n this.setState({ isLoading: true }, () => {\r\n let state = { ...this.state }\r\n WarehouseAPI.getCaffenios()\r\n .then(response => {\r\n state.Caffenios = response.data;\r\n state.optionSegmento = lodash.sortBy(this.select_segmento(state.Caffenios), [ts => ts.label.toLowerCase()], ['asc'])\r\n state.optionState = lodash.sortBy(this.select_state(state.Caffenios), [ts => ts.label.toLowerCase()], ['asc']);\r\n state.optionCity = lodash.sortBy(this.select_city(state.Caffenios, state[\"selectedOptionS\"]), [ts => ts.label.toLowerCase()], ['asc']);\r\n state.optionDrive = lodash.sortBy(this.select_Drive(state.Caffenios, state[\"selectedOptionS\"]), [ts => ts.label.toLowerCase()], ['asc']);\r\n return WarehouseAPI.GetByIdArticulo(this.state.filterText.trim())\r\n }).then(response => {\r\n state.warehouseArr = response.data;\r\n state.warehouseFilter = state.warehouseArr;\r\n state.isLoading = false;\r\n state.warehouseFilter.map(producto => {\r\n producto.statusCheck = false;\r\n return producto\r\n })\r\n //Se limpian los filtros de localización\r\n /* state[\"selectedOptionS\"] = null;\r\n state[\"selectedOption\"] = [];\r\n state[\"selectedOptionC\"] = [];\r\n state[\"selectedOptionD\"] = []; */\r\n this.setState(state, () => {\r\n if (state[\"selectedOptionS\"] !== null) {\r\n this.changeSelectSegmento(state[\"selectedOptionS\"])\r\n }\r\n if (state[\"selectedOption\"].length > 0) {\r\n this.changeSelectEstado(state[\"selectedOption\"])\r\n }\r\n if (state[\"selectedOptionC\"].length > 0) {\r\n this.changeSelectCiudad(state[\"selectedOptionC\"])\r\n }\r\n if (state[\"selectedOptionD\"].length > 0) {\r\n this.changeSelectDrive(state[\"selectedOptionD\"])\r\n }\r\n });\r\n }).catch(err => {\r\n this.setState({ isLoading: false })\r\n if (err.response)\r\n toast.error(err.response.data)\r\n else\r\n toast.error(ErrorMessages.SinConexion)\r\n });\r\n })\r\n }\r\n }\r\n\r\n select_segmento(Caffenios) { //Llenar el combo 'Segmentación' con todas las opciones\r\n var newArray = [];\r\n let OptionSelectSegmento = [];\r\n var lookupObject = {};\r\n Caffenios.map((item) => {\r\n OptionSelectSegmento.push({ value: item.idSegmento, label: item.Segmento });\r\n });\r\n\r\n for (var i in OptionSelectSegmento) {\r\n lookupObject[OptionSelectSegmento[i][\"value\"]] = OptionSelectSegmento[i];\r\n }\r\n\r\n for (i in lookupObject) {\r\n newArray.push(lookupObject[i]);\r\n }\r\n\r\n return newArray;\r\n }\r\n\r\n select_state(Caffenios) { // Llenar el combo 'Estados' con todas las opciones \r\n var newArray = [];\r\n let OptionSelect = [];\r\n var lookupObject = {};\r\n Caffenios.map((item) => {\r\n OptionSelect.push({value:item.StateId,label:item.State});\r\n });\r\n\r\n for(var i in OptionSelect) {\r\n lookupObject[OptionSelect[i][\"value\"]] = OptionSelect[i];\r\n }\r\n \r\n for(i in lookupObject) {\r\n newArray.push(lookupObject[i]);\r\n }\r\n \r\n return newArray;\r\n }\r\n\r\n select_city(Caffenios, segmentacion) { // Llenar el combo 'Ciudades' con todas las opciones \r\n var newArray = [];\r\n let OptionSelectCity = [];\r\n var lookupObject = {};\r\n Caffenios.map((item) => {\r\n if (segmentacion === null) { //Se valida si hay segmentación seleccionada para prefiltar\r\n OptionSelectCity.push({value:item.Municipalityid,label:item.Municipality});\r\n } else {\r\n if (item.idSegmento === segmentacion.value) {\r\n OptionSelectCity.push({value:item.Municipalityid,label:item.Municipality});\r\n }\r\n }\r\n });\r\n\r\n for(var i in OptionSelectCity) {\r\n lookupObject[OptionSelectCity[i][\"value\"]] = OptionSelectCity[i];\r\n }\r\n \r\n for(i in lookupObject) {\r\n newArray.push(lookupObject[i]);\r\n }\r\n\r\n return newArray;\r\n }\r\n\r\n select_Drive(Caffenios, segmentacion) { // Llenar el combo 'Drives' con todas las opciones \r\n var newArray = [];\r\n let OptionSelectDrive = [];\r\n var lookupObject = {};\r\n Caffenios.map((item) => {\r\n if (segmentacion === null) { //Se valida si hay segmentación seleccionada para prefiltar\r\n OptionSelectDrive.push({value:item.idCaffenio,label:item.NombreNuevo});\r\n } else {\r\n if (item.idSegmento === segmentacion.value) {\r\n OptionSelectDrive.push({value:item.idCaffenio,label:item.NombreNuevo});\r\n }\r\n }\r\n });\r\n\r\n for(var i in OptionSelectDrive) {\r\n lookupObject[OptionSelectDrive[i][\"value\"]] = OptionSelectDrive[i];\r\n }\r\n \r\n for(i in lookupObject) {\r\n newArray.push(lookupObject[i]);\r\n }\r\n\r\n return newArray;\r\n }\r\n\r\n // Método encargado de recibir el texto en el input de búsqueda y filtrar los elementos en\r\n // la tabla \r\n handleSearchInput = (text) => {\r\n let state = {...this.state};\r\n state.filterText = text;\r\n this.setState(state);\r\n /* this.setState(state, () => this.FilterProcess());\r\n this.cleanCheckBoxs(); */\r\n }\r\n\r\n ChangeStatus = (WarehouseObj) => { // Cambiar el estado activo/inactivo para 'Sugestible' e 'Inventariable'\r\n WarehouseAPI.edit(WarehouseObj).then(response => {\r\n toast.success(\"Estatus actualizado\");\r\n }).catch(err => {\r\n // toast.error(err.response.data.Message)\r\n if(err.response.status) {\r\n toast.error(\"Error en la configuración del artículo\")\r\n }\r\n });\r\n }\r\n\r\n handlePageChange = (items) => { // Hacer la paginación en la tabla\r\n let checkAllTemp = true;\r\n let cheked = false;\r\n\r\n let listDrives = [...this.state.Caffenios];\r\n let listProduct = items.map(obj => { \r\n let driveid = obj.DriveId; \r\n let objCaffDrive = listDrives.find(obj => obj.idCaffenio === driveid) \r\n obj[\"nombreDrive\"] = objCaffDrive ? objCaffDrive.NombreNuevo : \"Sin asignar\"; \r\n \r\n if(obj.statusCheck){\r\n cheked = true;\r\n } else {\r\n checkAllTemp = false;\r\n } \r\n return obj\r\n } );\r\n\r\n this.setState({pageInventoryItems:listProduct, checkAll: checkAllTemp});\r\n }\r\n\r\n eliminarObjDuplicados = (arr,prop) => {\r\n var nuevoArray = [];\r\n var lookup = {};\r\n \r\n for (var i in arr) {\r\n lookup[arr[i][prop]] = arr[i];\r\n }\r\n \r\n for (i in lookup) {\r\n nuevoArray.push(lookup[i]);\r\n }\r\n \r\n return nuevoArray;\r\n }\r\n\r\n changeSelectSegmento = (obj) => {\r\n let state = { ...this.state }\r\n state[\"selectedOptionS\"] = obj;\r\n if (obj !== null) {\r\n let idSegmento = obj.value\r\n let objCaffenios = [...state.Caffenios];\r\n let listaEstados = [];\r\n let listaCiudades = [];\r\n let listaDrives = [];\r\n // Recorrer objeto Caffenios y encontrar coincidencias sin eliminar duplicados\r\n objCaffenios.map(item => {\r\n if (item.idSegmento === idSegmento) {\r\n listaEstados.push({ \"value\": item.StateId, \"label\": item.State });\r\n }\r\n })\r\n\r\n //Se eliminan los estados duplicados\r\n let eliminarDuplicados = this.eliminarObjDuplicados(listaEstados, \"value\");\r\n //Se obtiene un arreglo con los id de los estados\r\n let idEstado = eliminarDuplicados.map(estado => { return estado.value });\r\n //Se buscan coincidencias entre estado y ciudad y se genera la lista de drives\r\n objCaffenios.map(item => {\r\n for (var i = 0; i < idEstado.length; i++) {\r\n if (item.StateId === idEstado[i] && item.idSegmento === idSegmento) {\r\n listaCiudades.push({ \"value\": item.Municipalityid, \"label\": item.Municipality });\r\n }\r\n }\r\n })\r\n //Se eliminan duplicados de ciudad\r\n let eliminarDuplicadosCiudad = this.eliminarObjDuplicados(listaCiudades, \"value\");\r\n //Se obtien un arreglo con los id de las ciudades\r\n let idCiudad = eliminarDuplicadosCiudad.map(ciudad => { return ciudad.value });\r\n \r\n //Se buscan coincidencias entre ciudad y drive y se genera la lista de drives\r\n objCaffenios.map(item => {\r\n for (var i = 0; i < idCiudad.length; i++) {\r\n if (item.Municipalityid === idCiudad[i] && item.idSegmento === idSegmento) {\r\n listaDrives.push({ \"value\": item.idCaffenio, \"label\": item.NombreNuevo });\r\n }\r\n }\r\n })\r\n state[\"optionState\"] = eliminarDuplicados;\r\n state[\"optionCity\"] = eliminarDuplicadosCiudad;\r\n state[\"optionDrive\"] = listaDrives;\r\n } else {\r\n //En caso que se haya borrado la segmentación del select, se reinician\r\n //los demas filtros\r\n state[\"optionState\"] = this.select_state(state.Caffenios);\r\n state[\"optionCity\"] = this.select_city(state.Caffenios, state[\"selectedOptionS\"]);\r\n state[\"optionDrive\"] = this.select_Drive(state.Caffenios, state[\"selectedOptionS\"]);\r\n }\r\n //Se limpian las opciones del select 'Estado', 'Ciudades' y 'Drives'\r\n state[\"selectedOption\"] = [];\r\n state[\"selectedOptionC\"] = [];\r\n state[\"selectedOptionD\"] = [];\r\n\r\n\r\n this.setState(state, () => this.FilterProcess());\r\n }\r\n\r\n changeSelectEstado = (obj) => {\r\n let state = {...this.state}\r\n state[\"selectedOption\"] = obj;\r\n let idEstado = obj.map(estado => {return estado.value});\r\n let objCaffenios = [...state.Caffenios];\r\n let listaCiudades = [];\r\n let listaDrives = [];\r\n\r\n // Recorrer objeto Caffenios y encontrar coincidencias sin eliminar duplicados\r\n objCaffenios.map(item =>{\r\n for(var i=0; i {return ciudad.value});\r\n\r\n //Se buscan coincidencias entre ciudad y drive y se genera la lista de drives\r\n objCaffenios.map(item =>{\r\n for(var i=0; i this.FilterProcess());\r\n }\r\n\r\n changeSelectCiudad = (obj) =>{\r\n let state = {...this.state}\r\n let idCiudad = obj.map(ciudad => {return ciudad.value});\r\n let objCaffenios = [...state.Caffenios];\r\n let listaDrives = [];\r\n\r\n //Se buscan coincidencias entre ciudad y drive y se genera la lista de drives\r\n objCaffenios.map(item =>{\r\n for(var i=0; i0){\r\n state[\"selectedOptionC\"] = obj;\r\n state[\"optionDrive\"] = listaDrives;\r\n this.setState(state, () => this.FilterProcess());\r\n } else{\r\n this.changeSelectEstado(state[\"selectedOption\"]);\r\n }\r\n }\r\n\r\n changeSelectDrive = (obj) =>{\r\n let state = {...this.state};\r\n let Caffenios = [...state.Caffenios];\r\n\r\n //Valida cada select (Estados,Ciudades,Drives) y realiza la acción correspondiente\r\n if(obj.length>0){\r\n state[\"selectedOptionD\"] = obj;\r\n //state[\"optionDrive\"] = obj;\r\n this.setState(state, () => this.FilterProcess());\r\n } else if(state[\"selectedOptionC\"].length===0){\r\n this.changeSelectEstado(state[\"selectedOption\"]);\r\n } else if(state[\"selectedOptionC\"].length===0 && state[\"selectedOption\"].length===0){\r\n this.select_Drive(Caffenios, state[\"selectedOptionS\"]);\r\n this.select_Drive(Caffenios, state[\"selectedOptionS\"]);\r\n this.select_Drive(Caffenios, state[\"selectedOptionS\"]);\r\n } else{\r\n this.changeSelectCiudad(state[\"selectedOptionC\"]);\r\n }\r\n }\r\n\r\n validarCombos = (state) => {\r\n var status_combo = false; // Vacios\r\n\r\n if(state[\"selectedOption\"].length>0){\r\n status_combo = true; // Alguno con valor\r\n }\r\n\r\n if(state[\"selectedOptionC\"].length>0){\r\n status_combo = true; // Alguno con valor\r\n }\r\n\r\n if(state[\"selectedOptionD\"].length>0){\r\n status_combo = true; // Alguno con valor\r\n }\r\n\r\n return status_combo;\r\n }\r\n\r\n FilterProcess = () => {\r\n let state = {...this.state}\r\n let warehouseArr = state.warehouseArr;\r\n var status_combo; // Vacios\r\n let driveIds;\r\n\r\n if(state[\"selectedOptionD\"].length===0){\r\n driveIds = state[\"optionDrive\"].map(obj => {\r\n return obj.value;\r\n })\r\n } else{\r\n driveIds = state[\"selectedOptionD\"].map(obj => {\r\n return obj.value;\r\n })\r\n }\r\n\r\n status_combo = this.validarCombos(state);\r\n\r\n if(state.filterText.trim() !== ''){\r\n warehouseArr = warehouseArr.filter(obj => {\r\n return obj.InventoryItem.CodeProvider.toLowerCase().includes(state.filterText.trim().toLowerCase()) || obj.InventoryItem.Name.toLowerCase().normalize(\"NFD\").replace(/[\\u0300-\\u036f]/g, \"\").includes(state.filterText.trim().toLowerCase().normalize(\"NFD\").replace(/[\\u0300-\\u036f]/g, \"\"))\r\n });\r\n }\r\n\r\n warehouseArr = warehouseArr.filter((obj2)=>{\r\n if(driveIds.filter((item)=>{\r\n return item === obj2.DriveId\r\n }).length > 0){ return obj2 }\r\n })\r\n\r\n state.warehouseFilter = warehouseArr;\r\n this.setState(state); \r\n this.cleanCheckBoxs();\r\n }\r\n\r\n /**\r\n * Function que se utiliza para marcar todos los elementos de una pagina\r\n */\r\n selectAllCheck = () => {\r\n let state = {...this.state};\r\n let elementsPage = state.pageInventoryItems;\r\n\r\n elementsPage.map(element=>{\r\n state.checkAll ? element.statusCheck = false : element.statusCheck = true\r\n return element\r\n })\r\n\r\n // Revisar la cantida de elementos seleccionados en total\r\n let elements = state.warehouseArr;\r\n let counter = 0;\r\n elements.map(element=>{\r\n if (element.statusCheck){\r\n counter++;\r\n }\r\n })\r\n\r\n state.checkAll = !state.checkAll;\r\n state.childVisible = state.checkAll\r\n state.pageInventoryItems = elementsPage;\r\n if(state.checkAll === false){\r\n state.switchAllInv=false \r\n state.switchAllSug=false\r\n state.seeSwitchInv=false\r\n state.seeSwitchSug=false\r\n } \r\n state.buttonMesagge = counter === this.state.warehouseArr.length\r\n state.childVisible = counter !== 0\r\n this.setState(state);\r\n }\r\n\r\n /**\r\n * Función que se utiliza para marcar un elemento en particular\r\n */\r\n showView = () => {\r\n\r\n let state = {...this.state};\r\n let cheked = false;\r\n let checkAllTemp = true;\r\n state.pageInventoryItems.map(item=>{\r\n if(item.statusCheck){\r\n cheked = true;\r\n } else {\r\n checkAllTemp = false;\r\n }\r\n })\r\n\r\n // Revisar la cantida de elementos seleccionados en total\r\n let elements = state.warehouseArr;\r\n let counter = 0;\r\n elements.map(element=>{\r\n if (element.statusCheck){\r\n counter++;\r\n }\r\n })\r\n\r\n this.setState({childVisible: cheked, checkAll: checkAllTemp, buttonMesagge: counter === this.state.warehouseArr.length});\r\n }\r\n\r\n /**\r\n * Funcion que se comunica con la API para modificar el estatus de los items\r\n */\r\n applySwitchAll = (estatus) => {\r\n //Estatus 1 = Sugerible\r\n //Estatus 2 = Inventariable\r\n let state = {...this.state};\r\n let arrProductosChange = [];\r\n\r\n this.state.warehouseFilter.map(item=>{\r\n if(item.statusCheck) arrProductosChange.push(item)\r\n })\r\n\r\n if(estatus === 1){\r\n for(var i=0; i {\r\n toast.success(\"Estatus actualizados\");\r\n this.setState({checkAll: true, switchAllInv:false, switchAllSug:false, seeSwitchInv:false,seeSwitchSug:false},this.cleanCheckBoxs)\r\n }).catch(err => {\r\n if(err.response.status) {\r\n toast.error(\"Error en la configuración del artículo\")\r\n }\r\n });\r\n \r\n }\r\n\r\n /**\r\n * Funcion para seleccionar todos los articulos\r\n * de todas las paginas\r\n */\r\n selectAllPages = () =>{\r\n let state = {...this.state};\r\n let elements = state.warehouseArr;\r\n\r\n elements.map(element=>{\r\n state.buttonMesagge ? element.statusCheck = false : element.statusCheck = true\r\n return element\r\n })\r\n\r\n // state.checkAll = !state.checkAll;\r\n state.checkAll = !state.buttonMesagge;\r\n state.childVisible = state.checkAll\r\n state.warehouseArr = elements;\r\n state.buttonMesagge = !state.buttonMesagge;\r\n if(state.checkAll === false){\r\n state.switchAllInv=false \r\n state.switchAllSug=false\r\n state.seeSwitchInv=false\r\n state.seeSwitchSug=false\r\n } \r\n \r\n this.setState(state);\r\n }\r\n /**\r\n * Funcion para des seleccionar todos los checkbox\r\n */\r\n cleanCheckBoxs = () =>{\r\n this.state.warehouseFilter.map(item=>{\r\n if(item.statusCheck){\r\n item.statusCheck = false\r\n }\r\n });\r\n \r\n this.setState({\r\n checkAll:false,\r\n childVisible:false,\r\n buttonMesagge:false,\r\n switchAllInv:false,\r\n switchAllSug:false,\r\n seeSwitchInv:false,\r\n seeSwitchSug:false\r\n })\r\n }\r\n render(){\r\n return(\r\n
    \r\n\r\n \r\n \r\n

    Almacén

    \r\n
    \r\n
    \r\n
    \r\n
    \r\n
    \r\n \r\n
    \r\n this.handleSearchInput(e.currentTarget.value)}\r\n onKeyDown={evt => {\r\n if (evt.key === \"Enter\") {\r\n this.buscarPorCodigoNombre()\r\n }\r\n }}\r\n />\r\n
    \r\n
    \r\n
    \r\n {/* Se pone invisible para hacer el salto del label */}\r\n \r\n this.buscarPorCodigoNombre()}>\r\n Buscar\r\n \r\n
    \r\n
    \r\n {this.state.warehouseArr.length > 0 &&
    \r\n
    \r\n \r\n
    \r\n \"No hay opciones\"}\r\n options={this.state.optionSegmento}\r\n />\r\n
    \r\n
    \r\n
    \r\n \r\n
    \r\n \"No hay opciones\"}\r\n options={this.state.optionState}\r\n />\r\n
    \r\n
    \r\n
    \r\n \r\n
    \r\n \"No hay opciones\"}\r\n options={this.state.optionCity}\r\n />\r\n
    \r\n
    \r\n
    \r\n \r\n
    \r\n \"No hay opciones\"}\r\n options={this.state.optionDrive}\r\n />\r\n
    \r\n
    \r\n
    \r\n }\r\n
    \r\n
    \r\n
    \r\n\r\n {\r\n this.state.childVisible &&\r\n
    \r\n
    \r\n
    \r\n
    \r\n \r\n
    \r\n
    \r\n \r\n \r\n {}}\r\n />\r\n \r\n
    \r\n
    \r\n
    \r\n this.applySwitchAll(1)}>\r\n Aplicar\r\n \r\n
    \r\n
    \r\n {/* */}\r\n
    \r\n \r\n \r\n {}}\r\n />\r\n \r\n
    \r\n
    \r\n
    \r\n this.applySwitchAll(2)}>\r\n Aplicar\r\n \r\n
    \r\n
    \r\n
    \r\n
    \r\n
    \r\n }\r\n
    \r\n
    \r\n
    \r\n {this.state.warehouseFilter.length !== 0 \r\n ? \r\n
    \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n {this.state.pageInventoryItems.map((item, index) => {\r\n return (\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n )\r\n })}\r\n \r\n
    Código ProveedorNombrePedidoInventarioDrive
    {\r\n e.stopPropagation();\r\n let pageItems = this.state.pageInventoryItems[index];\r\n item.statusCheck = !item.statusCheck;\r\n this.setState({pageItems: item.statusCheck}, this.showView);\r\n }}/>{item.InventoryItem.CodeProvider}{item.InventoryItem.Name}\r\n \r\n {}}\r\n />\r\n \r\n \r\n \r\n {}}\r\n />\r\n \r\n {item.nombreDrive}
    \r\n
    \r\n : }\r\n {\r\n this.handlePageChange(items)\r\n }\r\n } />\r\n \r\n
    \r\n
    \r\n \r\n\r\n \r\n\r\n
    \r\n\r\n );\r\n }\r\n}\r\n\r\nexport default Warehouse;","import { apiUrl } from \"../constants\";\r\nimport axios from 'axios';\r\nimport middleware from '../middleware/auth';\r\n\r\nvar request = axios.create({\r\n baseURL: apiUrl,\r\n headers: {'Authorization': 'Bearer ' + localStorage.getItem('token'),'Content-Type':'application/json'}\r\n})\r\nexport default class RemesaAPI {\r\n \r\n static get(id) {\r\n return middleware.hasAuth(() => request.get(`/remesa/GetRemesa/${id}`));\r\n }\r\n\r\n static post(remesa) {\r\n return middleware.hasAuth(() => request.post(`/remesa/ProcesarRemesa`, remesa));\r\n }\r\n\r\n static getWarehouses() {\r\n return middleware.hasAuth(() => request.get(`/remesa/GetAlmacenes`));\r\n }\r\n}","import React, { Component } from 'react';\r\nimport RemesaAPI from '../../services/Remesa';\r\nimport {toast} from 'react-toastify';\r\nimport './Remesas.css';\r\nimport TableTemplate from '../util/tabletemplate/TableTemplate';\r\nimport Modal from '../util/modal/Modal';\r\nimport Dropdown from '../util/dropdown/Dropdown';\r\nimport HasAccess from '../util/hasAccess/HasAccess';\r\n\r\nimport BtnModoGuiado from '../util/BtnModoGuiado/BtnModoGuiado'\r\n\r\nclass Remesas extends Component {\r\n\r\n constructor(props){\r\n super(props);\r\n this.state = {\r\n docNumberSearch: \"\",\r\n remesa: [],\r\n details: [],\r\n warehouses: [],\r\n showModal: false,\r\n status: \"\",\r\n actions: [],\r\n selectedAction: null,\r\n selectedDrive: null,\r\n isWebServiceLoading: false\r\n }\r\n }\r\n\r\n componentWillMount(){\r\n RemesaAPI.getWarehouses().then(response => {\r\n this.setState({\r\n warehouses: response.data\r\n });\r\n }).catch(err => {\r\n //console.log(err);\r\n if(err && err.response && err.response.data && err.response.data.Message){\r\n toast.error(err.response.data.Message);\r\n }else if(err && err.response && err.response.data){\r\n toast.error(err.response.data);\r\n } else {\r\n toast.error('Ocurrió un error al cargar los almacenes');\r\n }\r\n });\r\n }\r\n\r\n search = () => {\r\n this.setState({\r\n isWebServiceLoading: true\r\n });\r\n\r\n const loadingToast = toast.info(\"Cargando...\", {autoClose: false, closeButton: false, className: \"has-background-primary has-text-weight-bold\"});\r\n RemesaAPI.get(this.state.docNumberSearch).then(response => {\r\n toast.dismiss(loadingToast);\r\n //console.log(response.data);\r\n this.setState({\r\n remesa: [response.data.Remesa], \r\n details: response.data.Detalle, \r\n status: response.data.Remesa.Status,\r\n isWebServiceLoading: false\r\n });\r\n\r\n if(response.data.Remesa.Status !== \"\" && response.data.Remesa.Status === \"Pendiente\")\r\n {\r\n let actionsOnRemesa = [];\r\n if(response.data.Remesa && response.data.Remesa.Caffenio.trim() === \"No asignado\")\r\n {\r\n actionsOnRemesa.push( { Id: 1, Accion: 'Asignar a almacén' } );\r\n }else{\r\n actionsOnRemesa.push( { Id: 2, Accion: 'Cambiar de almacén' } );\r\n actionsOnRemesa.push( { Id: 3, Accion: 'Desasignar de almacén' } );\r\n }\r\n this.setState({ \r\n actions: actionsOnRemesa,\r\n selectedAction: null,\r\n selectedDrive: null\r\n });\r\n }\r\n else\r\n {\r\n this.setState({\r\n actions: [],\r\n selectedAction: null,\r\n selectedDrive: null\r\n });\r\n }\r\n }).catch(err => {\r\n toast.dismiss(loadingToast);\r\n this.setState({\r\n remesa: [],\r\n details: [],\r\n status: \"\",\r\n isWebServiceLoading: false\r\n });\r\n if(err && err.response && err.response.data && err.response.data.Message){\r\n toast.error(err.response.data.Message);\r\n }\r\n })\r\n }\r\n\r\n handleSelectedAction = (index) => {\r\n if(index !== 0) {\r\n this.setState({ selectedAction: this.state.actions[ index -1 ] });\r\n } else {\r\n this.setState({ selectedAction: null });\r\n }\r\n }\r\n\r\n handleSelectedDrive = (index) => {\r\n if(index !== 0) {\r\n this.setState({ selectedDrive: this.state.warehouses[ index -1 ] });\r\n } else {\r\n this.setState({ selectedDrive: null });\r\n }\r\n }\r\n\r\n doAction = () => {\r\n if(this.state.selectedAction){\r\n //Si es Asignar o Cambiar\r\n if(this.state.selectedAction.Id === 1 || this.state.selectedAction.Id === 2)\r\n {\r\n if(!this.state.selectedDrive)\r\n {\r\n toast.error(\"Indique un almacén\");\r\n return;\r\n }\r\n }\r\n\r\n this.setState({\r\n showModal: false,\r\n isWebServiceLoading: true\r\n });\r\n\r\n let remesa = {\r\n DOCNUMBR: this.state.remesa[0].DOCNUMBR.trim(),\r\n idGPSucursal: (this.state.selectedDrive) ? this.state.selectedDrive.IdGPWarehouse : '',\r\n Warehouse : this.state.selectedDrive,\r\n Accion: this.state.selectedAction.Id\r\n }\r\n\r\n const loadingToast = toast.info(\"Procesando remesa...\", {autoClose: false, closeButton: false, className: \"has-background-primary has-text-weight-bold\"});\r\n RemesaAPI.post(remesa).then(response => {\r\n \r\n toast.dismiss(loadingToast);\r\n if(response && response.data && response.data.Message){\r\n toast.success(response.data.Message);\r\n }else if(response && response.data){\r\n toast.success(response.data);\r\n }\r\n\r\n this.setState({\r\n docNumberSearch: remesa.DOCNUMBR,\r\n isWebServiceLoading: false\r\n });\r\n this.search();\r\n\r\n }).catch(err => {\r\n toast.dismiss(loadingToast);\r\n //console.log(err.response.data);\r\n\r\n this.setState({\r\n isWebServiceLoading: false\r\n });\r\n\r\n if(err && err.response && err.response.data && err.response.data.Message){\r\n toast.error(err.response.data.Message);\r\n }else if(err && err.response && err.response.data){\r\n toast.error(err.response.data);\r\n }\r\n });\r\n\r\n }else{\r\n toast.error(\"Indica una acción\");\r\n }\r\n }\r\n\r\n render() {\r\n return (\r\n
    \r\n

    Remesas

    \r\n
    \r\n
    \r\n
    \r\n
    \r\n

    Buscar Remesa

    \r\n
    \r\n
    \r\n
    \r\n \r\n
    \r\n this.setState({docNumberSearch: e.target.value})}\r\n />\r\n
    \r\n
    \r\n
    \r\n this.search()}>\r\n Buscar\r\n \r\n
    \r\n
    \r\n
    \r\n
    \r\n
    \r\n
    \r\n
    \r\n

    \r\n Detalles Remesa    \r\n \r\n {this.state.status !== \"\" && this.state.status === \"Pendiente\" && !this.state.isWebServiceLoading && this.setState({showModal: true})}>\r\n \r\n }\r\n \r\n

    \r\n
    \r\n
    \r\n \r\n

    \r\n \r\n
    \r\n
    \r\n
    \r\n
    \r\n { (this.state.showModal) ?\r\n this.setState({showModal: false})}\r\n >\r\n
    \r\n
    \r\n \r\n
    \r\n
    \r\n this.handleSelectedAction(index)}\r\n />\r\n
    \r\n
    \r\n
    \r\n
    \r\n \r\n
    \r\n
    \r\n this.handleSelectedDrive(index)}\r\n />\r\n
    \r\n
    \r\n
    \r\n this.doAction()}>\r\n Procesar\r\n \r\n
    \r\n : ''\r\n }\r\n \r\n
    \r\n );\r\n }\r\n}\r\n\r\nexport default Remesas;\r\n","import { apiUrl } from \"../constants\";\r\nimport axios from 'axios';\r\nvar request = axios.create({\r\n baseURL: apiUrl,\r\n headers: {'Authorization':'Bearer ' +localStorage.getItem('token'),'Content-Type':'application/json'}\r\n})\r\nexport default class MenuDriveAPI {\r\n \r\n static get() {\r\n return request.get(`/Menu`);\r\n }\r\n\r\n static getById(id) {\r\n return request.get(`/Menu/${id}`);\r\n }\r\n\r\n static post(menu) {\r\n return request.post(`/Menu`, menu);\r\n }\r\n\r\n static postSync(menu) {\r\n return request.post(`/Menu/Sync`, menu);\r\n }\r\n\r\n static put(menu) {\r\n return request.put(`/Menu`, menu);\r\n }\r\n\r\n static delete(id) {\r\n return request.delete(`/Menu/${id}`);\r\n }\r\n \r\n static getDrives(menuId){\r\n return request.get(`/Menu/Drives/${menuId}`)\r\n }\r\n\r\n static getDetails(id) {\r\n return request.get(`/DetailMenu/${id}`)\r\n }\r\n\r\n static postDetailUpdate(detailMenu) {\r\n return request.post(`/DetailMenu`, detailMenu);\r\n }\r\n\r\n static getMenusByIdDrives(idDrives){\r\n return request.post(`/Menu/GetByDrives`, idDrives)\r\n }\r\n\r\n static getMenusWithoutDrives(){\r\n return request.get(`/Menu/GetMenusWithoutDrives`)\r\n }\r\n\r\n static getMenusWithSegmentation(){\r\n return request.get(`/Menu/MenusWithSegmentation`)\r\n }\r\n\r\n static GetRegistrosMovimientos(filtros){\r\n return request.post(`/Menu/RegistrosMovimientos`, filtros)\r\n }\r\n\r\n static GetTiposMovimiento(){\r\n return request.post(`/Menu/TiposMovimiento`)\r\n }\r\n\r\n}","import React, { Component } from 'react';\r\nimport TextField from '../util/textfield/TextField';\r\nimport Field from '../util/field/Field';\r\nimport Loading from '../util/loading/Loading';\r\nimport MenuDriveAPI from '../../services/MenuDrive';\r\nimport ErrorMessages from '../../util/validation-error-messages';\r\nimport ExpresionesRegulares from '../../util/expresiones-regulares';\r\nimport { Formik } from 'formik';\r\nimport * as Yup from 'yup';\r\nimport lodash from 'lodash';\r\nimport Select from 'react-select';\r\n\r\n\r\nclass MenuForm extends Component {\r\n\r\n constructor(props){\r\n super(props);\r\n this.state = {\r\n menu: {...this.props.menu},\r\n activeMenu: [],\r\n selectedOption: null,\r\n isEditing: false,\r\n isLoading: false\r\n }\r\n } \r\n\r\n componentDidMount(){\r\n MenuDriveAPI.get().then(response => {\r\n this.setState({activeMenu: response.data.map(item=> {\r\n item.label = item.Description;\r\n item.value= item.MenuId;\r\n return item;\r\n })})\r\n })\r\n }\r\n\r\n VALIDATION_SCHEMA = Yup.object({\r\n Description: Yup.string()\r\n .trim()\r\n .matches(ExpresionesRegulares.AlfanumericoConCaracteres, { message: ErrorMessages.AlfanumericoConCaracteresError })\r\n .min(3, \"Nombre debe tener más de 2 caracteres.\")\r\n .max(30, \"Ha excedido el límite de 50 caracteres.\")\r\n .required(\"Campo Descripción es requerido.\")\r\n .test(\"validate-name\", \"La Descripción ya existe, favor de ingresar otro.\", (value) => {\r\n let isValid = true;\r\n let name = value ? value.toLowerCase().trim() : \"\";\r\n if (this.props.menus.some(u => u.Description.toLowerCase().trim() === name && u.MenuId !== this.state.menu.MenuId)) {\r\n isValid = false;\r\n }\r\n return isValid;\r\n }),\r\n BaseOn: Yup.string().nullable(),\r\n Active: Yup.bool(),\r\n\r\n\r\n });\r\n\r\n render() {\r\n return (\r\n\r\n {\r\n let formatValues = { ...values }\r\n formatValues.MenuId = this.state.menu.MenuId === null ? 0 : this.state.menu.MenuId;\r\n formatValues.Description = formatValues.Description.trim();\r\n formatValues.BaseMenuId = values.BaseOn ? values.BaseOn.value : 0;\r\n this.props.save(formatValues)\r\n }}\r\n >\r\n {({ values, touched, errors, handleChange, handleBlur, handleSubmit, setFieldValue, setFieldTouched, setFieldError }) => (\r\n
    \r\n \r\n \r\n \r\n
    \r\n {this.state.menu.MenuId === null &&\r\n \r\n
    \r\n \r\n
    \r\n
    \r\n {\r\n setFieldValue('BaseOn', val);\r\n }}\r\n noOptionsMessage={() => \"No hay opciones\"}\r\n options={lodash.sortBy(this.state.activeMenu, [ts => ts.label.toLowerCase()], ['asc'])}\r\n />\r\n
    \r\n\r\n\r\n }\r\n\r\n
    \r\n \r\n { }}\r\n />\r\n \r\n
    \r\n
    \r\n
    \r\n \r\n Guardar\r\n \r\n
    \r\n
    \r\n \r\n \r\n )}\r\n \r\n );\r\n }\r\n}\r\n\r\nMenuForm.defaultProps = {\r\n isEditing: false,\r\n isLoading: false,\r\n menu: {\r\n MenuId: null,\r\n Description: \"\",\r\n Active: false\r\n }\r\n}\r\n\r\nexport default MenuForm;\r\n","\r\nimport {apiUrl} from '../constants';\r\nimport axios from 'axios';\r\nimport { stringify } from 'querystring';\r\nvar request = axios.create({\r\n baseURL: apiUrl,\r\n headers: {'Authorization':'Bearer ' +localStorage.getItem('token'),'Content-Type':'application/json'}\r\n})\r\n\r\nexport default class CaffenioDriveAPI{\r\n static getCaffenios(){\r\n return request.get('/Caffenios/');\r\n }\r\n\r\n /**\r\n * Crea un nuevo Caffenio.\r\n * @param { Object } caffenioInfo - Informacion del Caffenio\r\n * @returns Promise\r\n */\r\n static createCaffenio( caffenioInfo ) {\r\n return request.post( '/Caffenios/', caffenioInfo );\r\n }\r\n\r\n static updateInformation(caffenio){\r\n return request.post('/Caffenios/UpdateInformation',caffenio);\r\n }\r\n\r\n // Actualizar muchos drives \r\n static updatesInformation(caffenios){ \r\n return request.post('/Caffenios/UpdatesInformation',caffenios);\r\n }\r\n\r\n /**\r\n * Obtiene los Drives para asignar Líder y Supervisor.\r\n * @returns Promise\r\n */\r\n static getCaffenioParaAsignacion(params) {\r\n if (Object.toString(params) !== '{}')\r\n return request.get(`/CaffeniosAsignacion?${stringify({...params})}`);\r\n else\r\n return request.get(`/CaffeniosAsignacion/`);\r\n }\r\n\r\n /**\r\n * Actualiza al líder y supervisor del drive.\r\n * @param {Object} infoUpdated - Lider y Supervisor asignados.\r\n * @returns Promise\r\n */\r\n static updateLiderSupervisor(infoUpdated) {\r\n return request.patch('/CaffeniosAsignacion/UpdateInfo', infoUpdated);\r\n }\r\n\r\n /**\r\n * Obtiene caffenio por id\r\n * @param { Object } caffenioInfo - Informacion del Caffenio\r\n * @returns Promise\r\n */\r\n static getCaffenio( idCaffenio ) {\r\n return request.get( `/Caffenios/${idCaffenio}` );\r\n }\r\n\r\n /**\r\n * Actualiza caffenio id \r\n * @param { Object } idCaffenio - identificador del Caffenio\r\n * @param { Object } newData - información actualizada\r\n * @returns Promise\r\n */\r\n static updateCaffenio( idCaffenio, newData ) {\r\n return request.put( `/Caffenios/${idCaffenio}`,newData );\r\n }\r\n}","import React from 'react';\r\nimport RecipeTypesAPI from '../../services/RecipeType';\r\nimport PresentationsAPI from '../../services/Presentations';\r\nimport MilksAPI from '../../services/Milk';\r\nimport GrainsAPI from '../../services/Grain';\r\nimport FlavorsAPI from '../../services/Flavor';\r\nimport ClasificacionesAPI from '../../services/Classification';\r\nimport { toast } from 'react-toastify';\r\n\r\nimport Select from 'react-select';\r\nimport lodash from 'lodash';\r\nimport ErrorMessages from '../../util/validation-error-messages';\r\nimport EmpresasAPI from '../../services/CaffenioEmpresas/Empresas';\r\nimport Loading from '../util/loading/Loading';\r\n\r\nexport default class MenuFilters extends React.Component {\r\n origRecipeTypesList = []; //Donde se va a guardar la lista original de tipos de receta\r\n origFlavorsList = []; //Donde se va a guardar la lista original de sabores\r\n origGrainsList = []; //Donde se va a guardar la lista original de granos\r\n origMilksList = []; //Donde se va a guardar la lista original de leches\r\n origPresentationList = []; //Donde se va a guardar la lista original de presentaciones\r\n origClassificationList = []; //Se agregó para guardar la lista original de clasificaciones\r\n\r\n constructor(props) {\r\n super(props)\r\n this.state = {\r\n // Variables sonde se almacenaran los criterios de busqueda definitivos\r\n recipeTypeList: [],\r\n selectedRecipeTypesList: [],\r\n presentationsList: [],\r\n selectedPresentationsList: [],\r\n milksList: [],\r\n selectedMilksList: [],\r\n grainsList: [],\r\n selectedGrainsList: [],\r\n flavorsList: [],\r\n selectedFlavorsList: [],\r\n classificationList: [],\r\n selectedClassificationList: [],\r\n segmentationList: [],\r\n isLoading: false,\r\n selectedSegmentation: null, //Se paso de multi a solo una segmentación\r\n noMulti: this.props.noMulti || false,\r\n noRecipeType: this.props.noRecipeType || false,\r\n noFlavorType: this.props.noFlavorType || false,\r\n noGrainType: this.props.noGrainType || false,\r\n noMilkType: this.props.noMilkType || false,\r\n noPresentation: this.props.noPresentation || false,\r\n disabledByFamily: this.props.disabledByFamily || false,\r\n }\r\n }\r\n\r\n componentDidMount = () => {\r\n this.setState({ isLoading: true })\r\n let state = { ...this.state };\r\n RecipeTypesAPI.getAll().then(response => {\r\n let temp = [];\r\n\r\n response.data.map(obj => {\r\n if (obj.RecipeName) {\r\n temp.push({ value: obj.RecipeTypeId, label: obj.RecipeName })\r\n } else {\r\n temp.push({ value: obj.RecipeTypeId, label: obj.Description })\r\n }\r\n })\r\n temp.sort(this.compare); // Ordenar los labels para elegir\r\n state.recipeTypeList = temp;\r\n this.origRecipeTypesList = lodash.cloneDeep(temp)\r\n\r\n // Obtener todas las presentaciones\r\n return PresentationsAPI.getAll()\r\n }).then(response => {\r\n let tempPresentationList = [];\r\n response.data.map(obj => {\r\n if (obj.Active) {\r\n tempPresentationList.push({ value: obj.PresentationId, label: obj.Name })\r\n }\r\n })\r\n tempPresentationList.sort(this.compare); // Ordenar los labels\r\n state.presentationsList = tempPresentationList\r\n this.origPresentationList = lodash.cloneDeep(tempPresentationList)\r\n\r\n // Obtener los tipos de leche\r\n return MilksAPI.getAll()\r\n }).then(response => {\r\n let tempMilkList = [];\r\n response.data.map(obj => {\r\n tempMilkList.push({ value: obj.MilkTypeId, label: obj.Description })\r\n })\r\n tempMilkList.sort(this.compare); // Ordenar los labels\r\n state.milksList = tempMilkList\r\n this.origMilksList = tempMilkList\r\n\r\n // Obtener los tipos de grano\r\n return GrainsAPI.getAll()\r\n }).then(response => {\r\n let tempGrainList = [];\r\n response.data.map(obj => {\r\n tempGrainList.push({ value: obj.GrainTypeId, label: obj.Description })\r\n })\r\n tempGrainList.sort(this.compare); // Ordenar los labels\r\n state.grainsList = tempGrainList\r\n this.origGrainsList = lodash.cloneDeep(tempGrainList)\r\n\r\n // Obtener los sabores\r\n return FlavorsAPI.getAll()\r\n }).then(response => {\r\n let tempFlavorsList = [];\r\n response.data.map(obj => {\r\n tempFlavorsList.push({ value: obj.FlavorTypeId, label: obj.Name })\r\n })\r\n tempFlavorsList.sort(this.compare); // Ordenar los labels \r\n state.flavorsList = tempFlavorsList\r\n this.origFlavorsList = tempFlavorsList\r\n\r\n // Obtener las clasificaciones\r\n return ClasificacionesAPI.getAll()\r\n }).then(response => {\r\n let tempClassificationList = [];\r\n response.data.map(obj => {\r\n tempClassificationList.push({ value: obj.ClassificationId, label: obj.Name })\r\n })\r\n tempClassificationList.sort(this.compare); // Ordenar los labels\r\n state.classificationList = tempClassificationList\r\n this.origClassificationList = lodash.cloneDeep(response.data)\r\n\r\n return EmpresasAPI.getAllFilterSegments()\r\n }).then(response => {\r\n let tempSegmentsList = []\r\n response.data.map(obj => {\r\n tempSegmentsList.push({ value: obj.SegmentId, label: obj.Name })\r\n })\r\n state.segmentationList = tempSegmentsList\r\n\r\n // Guardar el estado\r\n this.setState(state,\r\n () => this.handleSegmentationChange(this.props.menuAux[0].IdSegmento))\r\n }).catch(err => {\r\n this.setState({ isLoading: false })\r\n if (err.response)\r\n toast.error(err.response.data.Message)\r\n else\r\n toast.error(ErrorMessages.SinConexion)\r\n })\r\n }\r\n\r\n /**\r\n *Modificar la lista de IDs con los que el usuario ha seleccionado. Aplica sobre las clasificaciones.\r\n * \r\n *@param: arr: arreglo de valores que crea el select multi de react\r\n *@return: nada\r\n */\r\n handleClassificationChange = (arr) => {\r\n let state = { ...this.state }\r\n let tempClassificationList = [];\r\n arr.map(obj => {\r\n tempClassificationList.push(obj.value);\r\n })\r\n\r\n state.selectedClassificationList = tempClassificationList;\r\n state.selectedRecipes = [];\r\n\r\n this.setState(state, () => {\r\n this.filterOptionsByClasification();\r\n });\r\n }\r\n\r\n /**\r\n *Modificar la lista de IDs con los que el usuario ha seleccionado. Aplica sobre los tipos de granos.\r\n * \r\n *@param: arr: arreglo de valores que crea el select multi de react\r\n *@return: nada\r\n */\r\n handleSelectChange = (arr, selectedListLabel) => {\r\n let state = { ...this.state }\r\n state[selectedListLabel] = arr.map(obj => obj.value);\r\n this.setState(state, () => {\r\n this.sendFilters();\r\n });\r\n }\r\n\r\n /**\r\n * Método que dependiendo el segmento seleccionado, seran las\r\n * familias/clasificaciones que se mostrarán en la lista de opciones\r\n * @param {*} segmento - Segmento seleccionado\r\n */\r\n handleSegmentationChange = (idSegmento) => {\r\n if (idSegmento === null || idSegmento === 2 ||\r\n idSegmento === 3 || idSegmento === 8 ||\r\n idSegmento === 4 || idSegmento === 7) {\r\n idSegmento = 1\r\n }\r\n let segmento = this.state.segmentationList.find(x => x.value === idSegmento)\r\n\r\n let state = { ...this.state }\r\n state.selectedSegmentation = segmento\r\n this.tempSegmentation = segmento\r\n //En caso de haber quitado la seleccion del segmento\r\n //o no tener segmento, se borran y deshabilitan las otras listas\r\n if (segmento === null) {\r\n this.tempClassificationList = []\r\n this.tempRecipeTypesList = [];\r\n this.tempFlavorsList = [];\r\n this.tempGrainList = [];\r\n this.tempMilkList = [];\r\n this.tempPresentationList = [];\r\n this.tempSegmentation = null;\r\n this.setState({\r\n recipeTypeList: lodash.cloneDeep(this.origRecipeTypesList),\r\n flavorsList: lodash.cloneDeep(this.origFlavorsList),\r\n grainsList: lodash.cloneDeep(this.origGrainsList),//Donde se va a guardar la lista original de granos\r\n milksList: lodash.cloneDeep(this.origMilksList),//Donde se va a guardar la lista original de leches\r\n presentationsList: lodash.cloneDeep(this.origPresentationList),//Donde se va a guardar la lista original de presentaciones\r\n classificationList: lodash.cloneDeep(this.origClassificationList),\r\n selectedRecipeTypesList: [],\r\n selectedFlavorsList: [],\r\n selectedGrainsList: [],\r\n selectedMilksList: [],\r\n selectedPresentationsList: [],\r\n selectedClassificationList: [],\r\n selectedSegmentation: null,\r\n\r\n }, () => this.sendFilters())\r\n } else {\r\n //Se buscan las clasificaciones/familias de ese segmento\r\n let familiasFiltro = this.origClassificationList.filter(x => x.idSegmento === segmento.value)\r\n //Se mapean conforme a la lista de clasificaciones\r\n let classificationListAux = [];\r\n familiasFiltro.map(obj => {\r\n classificationListAux.push({ value: obj.ClassificationId, label: obj.Name })\r\n })\r\n\r\n state.classificationList = classificationListAux\r\n\r\n this.setState(state, () => {\r\n this.sendFilters();\r\n })\r\n }\r\n }\r\n\r\n sendFilters = () => {\r\n let selectedFilters = {\r\n selectedRecipeTypesList: this.state.selectedRecipeTypesList,\r\n selectedPresentationsList: this.state.selectedPresentationsList,\r\n selectedMilksList: this.state.selectedMilksList,\r\n selectedGrainsList: this.state.selectedGrainsList,\r\n selectedFlavorsList: this.state.selectedFlavorsList,\r\n selectedClassificationList: this.state.selectedClassificationList,\r\n selectedSegmentation: this.state.selectedSegmentation,\r\n }\r\n this.props.onChange(selectedFilters)\r\n }\r\n\r\n /**\r\n * Filtra las opciones de los filtros(hehe) según la Familia seleccionada.\r\n * Por ejemplo, seleccionó la Familia \"Chocolate\" entonces en el filtro de tipo de receta solo me tiene que aparecer \"Caliente\" y \"Frio\"\r\n */\r\n filterOptionsByClasification = () => {\r\n let clasificaciones = this.state.selectedClassificationList\r\n if (clasificaciones.length > 0) {\r\n let stateFiltros = {}\r\n // Filtrar los tipos de receta\r\n RecipeTypesAPI.getByClasification(clasificaciones).then(response => {\r\n let temp = response.data.map(obj => {\r\n return { value: obj.RecipeTypeId, label: obj.RecipeName ? obj.RecipeName : obj.Description }\r\n })\r\n temp.sort(this.compare);\r\n stateFiltros.recipeTypeList = temp;\r\n this.tempRecipeTypesList = [];\r\n\r\n // Filtrar los sabores\r\n return FlavorsAPI.getByClasification(clasificaciones)\r\n }).then(response => {\r\n let tempFlavorsList = response.data.map(obj => {\r\n return { value: obj.FlavorTypeId, label: obj.Name }\r\n })\r\n tempFlavorsList.sort(this.compare); // Ordenar los labels \r\n stateFiltros.flavorsList = tempFlavorsList;\r\n this.tempFlavorsList = [];\r\n\r\n // Filtrar los granos de cafe\r\n return GrainsAPI.getByClasification(clasificaciones)\r\n }).then(response => {\r\n let tempGrainList = response.data.map(obj => {\r\n return { value: obj.GrainTypeId, label: obj.Description }\r\n })\r\n tempGrainList.sort(this.compare); // Ordenar los labels\r\n stateFiltros.grainsList = tempGrainList;\r\n this.tempGrainList = [];\r\n\r\n // Filtrar los tipos de leche\r\n return MilksAPI.getByClasification(clasificaciones)\r\n })\r\n .then(response => {\r\n let tempMilkList = response.data.map(obj => {\r\n return { value: obj.MilkTypeId, label: obj.Description }\r\n })\r\n tempMilkList.sort(this.compare); // Ordenar los labels\r\n stateFiltros.milksList = tempMilkList;\r\n this.tempMilkList = [];\r\n\r\n // Filtrar las presentaciones\r\n return PresentationsAPI.getByClasification(clasificaciones)\r\n }).then(response => {\r\n let tempPresentationList = response.data.map(obj => {\r\n return { value: obj.PresentationId, label: obj.Name }\r\n })\r\n tempPresentationList.sort(this.compare); // Ordenar los labels\r\n stateFiltros.presentationsList = tempPresentationList;\r\n this.tempPresentationList = [];\r\n\r\n this.setState(stateFiltros, () => this.sendFilters())\r\n }).catch(error => {\r\n this.setState(stateFiltros, () => this.sendFilters())\r\n });\r\n } else {\r\n this.tempRecipeTypesList = [];\r\n this.tempFlavorsList = [];\r\n this.tempGrainList = [];\r\n this.tempMilkList = [];\r\n this.tempPresentationList = [];\r\n this.setState({\r\n recipeTypeList: lodash.cloneDeep(this.origRecipeTypesList),\r\n flavorsList: lodash.cloneDeep(this.origFlavorsList),\r\n grainsList: lodash.cloneDeep(this.origGrainsList),//Donde se va a guardar la lista original de granos\r\n milksList: lodash.cloneDeep(this.origMilksList),//Donde se va a guardar la lista original de leches\r\n presentationsList: lodash.cloneDeep(this.origPresentationList),//Donde se va a guardar la lista original de presentaciones\r\n selectedRecipeTypesList: [],\r\n selectedFlavorsList: [],\r\n selectedGrainsList: [],\r\n selectedMilksList: [],\r\n selectedPresentationsList: [],\r\n }, () => this.sendFilters())\r\n }\r\n }\r\n\r\n /**\r\n * Funcion para ordenar lexicograficamente\r\n * @param objA. primer operando\r\n * @param objB. segundo operando\r\n */\r\n compare = (objA, objB) => {\r\n // Use toUpperCase() to ignore character casing\r\n const labelA = objA.label.toUpperCase();\r\n const labelB = objB.label.toUpperCase();\r\n\r\n let comparison = 0;\r\n if (labelA > labelB) {\r\n comparison = 1;\r\n } else if (labelA < labelB) {\r\n comparison = -1;\r\n }\r\n return comparison;\r\n }\r\n\r\n render() {\r\n return (\r\n \r\n\r\n
    \r\n \r\n {\r\n this.tempSegmentation = value;\r\n this.handleSegmentationChange(value, \"selectedSegmentation\")\r\n }}\r\n noOptionsMessage={() => \"No hay opciones\"}\r\n options={this.state.segmentationList}\r\n isClearable={true}\r\n getOptionLabel={(segment) => segment.value === 1 ? \"Caffenio\"\r\n : segment.value === 9 ? \"Andatti\"\r\n : segment.value === 10 ? \"Momento Espresso\"\r\n : segment.value}\r\n isDisabled\r\n />\r\n
    \r\n\r\n
    \r\n \r\n {\r\n if (this.state.noMulti) {\r\n arr = arr ? [arr] : []\r\n }\r\n this.tempClassificationList = arr;\r\n this.handleClassificationChange(arr)\r\n }}\r\n noOptionsMessage={() => \"No hay opciones\"}\r\n options={this.state.classificationList}\r\n isClearable={true}\r\n isDisabled={this.state.selectedSegmentation === null}\r\n />\r\n
    \r\n\r\n
    \r\n \r\n {\r\n if (this.state.noMulti) {\r\n arr = arr ? [arr] : []\r\n }\r\n this.tempRecipeTypesList = arr;\r\n this.handleSelectChange(arr, \"selectedRecipeTypesList\")\r\n }}\r\n noOptionsMessage={() => \"No hay opciones\"}\r\n options={this.state.recipeTypeList}\r\n isClearable={true}\r\n isDisabled={this.state.disabledByFamily\r\n && (!this.tempClassificationList || this.tempClassificationList.length === 0)\r\n || this.state.selectedClassificationList.length === 0}\r\n />\r\n
    \r\n\r\n {!this.state.noRecipeType &&
    \r\n \r\n {\r\n if (this.state.noMulti) {\r\n arr = arr ? [arr] : []\r\n }\r\n this.tempFlavorsList = arr;\r\n this.handleSelectChange(arr, \"selectedFlavorsList\")\r\n }}\r\n noOptionsMessage={() => \"No hay opciones\"}\r\n options={this.state.flavorsList}\r\n isClearable={true}\r\n isDisabled={this.state.disabledByFamily\r\n && (!this.tempClassificationList || this.tempClassificationList.length === 0)\r\n || this.state.selectedClassificationList.length === 0}\r\n />\r\n
    }\r\n\r\n {!this.state.noGrainType &&
    \r\n \r\n {\r\n if (this.state.noMulti) {\r\n arr = arr ? [arr] : []\r\n }\r\n this.tempGrainList = arr;\r\n this.handleSelectChange(arr, \"selectedGrainsList\")\r\n }}\r\n noOptionsMessage={() => \"No hay opciones\"}\r\n options={this.state.grainsList}\r\n isClearable={true}\r\n isDisabled={this.state.disabledByFamily\r\n && (!this.tempClassificationList || this.tempClassificationList.length === 0)\r\n || this.state.selectedClassificationList.length === 0}\r\n />\r\n
    }\r\n\r\n {!this.state.noMilkType &&
    \r\n \r\n {\r\n if (this.state.noMulti) {\r\n arr = arr ? [arr] : []\r\n }\r\n this.tempMilkList = arr;\r\n this.handleSelectChange(arr, \"selectedMilksList\")\r\n }}\r\n noOptionsMessage={() => \"No hay opciones\"}\r\n options={this.state.milksList}\r\n isClearable={true}\r\n isDisabled={this.state.disabledByFamily\r\n && (!this.tempClassificationList || this.tempClassificationList.length === 0)\r\n || this.state.selectedClassificationList.length === 0}\r\n />\r\n
    }\r\n\r\n {!this.state.noPresentation &&
    \r\n \r\n {\r\n if (this.state.noMulti) {\r\n arr = arr ? [arr] : []\r\n }\r\n this.tempPresentationList = arr;\r\n this.handleSelectChange(arr, \"selectedPresentationsList\")\r\n }}\r\n noOptionsMessage={() => \"No hay opciones\"}\r\n options={this.state.presentationsList}\r\n isClearable={true}\r\n isDisabled={this.state.disabledByFamily\r\n && (!this.tempClassificationList || this.tempClassificationList.length === 0)\r\n || this.state.selectedClassificationList.length === 0}\r\n />\r\n
    }\r\n \r\n
    \r\n )\r\n }\r\n}","import React, { Component } from 'react';\r\nimport MenuDriveAPI from '../../services/MenuDrive';\r\nimport {toast} from 'react-toastify';\r\nimport './MenusDrive.css';\r\nimport TableTemplate from '../util/tabletemplate/TableTemplate';\r\nimport Modal from '../util/modal/Modal';\r\nimport SearchForm from \"../util/searchform/SearchForm\";\r\nimport NoItems from \"../util/noitems/NoItems\";\r\nimport AcceptModal from '../util/acceptModal/AcceptModal';\r\nimport Pagination from '../util/pagination/Pagination';\r\nimport Loading from '../util/loading/Loading';\r\nimport MenuForm from './MenuForm';\r\nimport BtnModoGuiado from '../util/BtnModoGuiado/BtnModoGuiado'\r\nimport Select from 'react-select';\r\nimport ErrorMessages from '../../util/validation-error-messages';\r\nimport CaffenioDriveAPI from '../../services/caffenioDrive';\r\nimport Field from '../util/field/Field';\r\nimport lodash from 'lodash';\r\nimport RecipesAPI from '../../services/Recipe';\r\nimport MenuFilters from './MenuFilters';\r\nimport EmpresasAPI from '../../services/CaffenioEmpresas/Empresas';\r\n\r\nclass MenusDrive extends Component {\r\n menus = [];\r\n\r\n estadoAsignacion = {\r\n Todos: 1,\r\n ConDrive: 2,\r\n SinDrive: 3\r\n }\r\n\r\n constructor(props){\r\n super(props);\r\n this.state = {\r\n menus: [], // Lista de menus que utiliza el paginador y el filtro de texto.\r\n pageMenus: [], // Lista de menus de una pagina\r\n menusFilter: [], // Lista de menus filtrados utilizando los dropdowns\r\n filterText: \"\",\r\n filterSegmento: null,\r\n filterActivo: true,\r\n listaSegmentos: [],\r\n menu: null,\r\n showModal: false,\r\n removeModal: false,\r\n isLoading: false,\r\n checkAll: false,//para seleccionar todos los de una pagina (1er checkBox)\r\n activateMasive: false,//Activar o desactivar masivo (Apartado que se muestra o no dependiendo del estado)\r\n switchAll:false,//switch para activar o desactivar\r\n seeSwitch: false,//variable par mostrar switch\r\n syncModal: false,//modal que muestra mensaje de sincronizacion de un drice\r\n syncAllModal: false,//modal que muestra mensaje de sincronizacion de varios drives\r\n menuDrivesModal: false, //modal que muestra que drives tienen el menu seleccionado\r\n menuDrivesModalBody: \"\", //Cuerpo del modal de drives\r\n menuDrivesModalTitle: \"\", //Titulo del modal de drives\r\n selectedMenus: [],\r\n \r\n //Estados para los filtros\r\n selectedAsignacion: this.estadoAsignacion.Todos,\r\n caffenios: [],\r\n optionsEstado: [],\r\n selectedEstado: [],\r\n optionsCiudad: [],\r\n selectedCiudad: [],\r\n optionsDrive: [],\r\n selectedDrive: [],\r\n //Ocultar/Mostrar filtros\r\n showPVFilters: false,\r\n showRecipeFilters: false,\r\n showModalInfoManu:false,\r\n modalRecipesChange:false,\r\n //filtros de receta\r\n //filtros receta\r\n selectedRecipeTypesList: [],\r\n selectedPresentationsList: [],\r\n selectedMilksList: [],\r\n selectedGrainsList: [],\r\n selectedFlavorsList: [],\r\n selectedClassificationList: [],\r\n //actualizar masivo\r\n recipes: [],\r\n filterRecipes: [],\r\n };\r\n }\r\n\r\n /**\r\n * Función que se ejecuta al iniciar el componente\r\n */\r\n componentDidMount(){\r\n this.setState({isLoading: true});\r\n MenuDriveAPI.getMenusWithSegmentation().then(response => {\r\n //Paso para quitar duplicados por menus que traigan varios segmentos\r\n let menusFiltrados = response.data.filter((value, index, array) =>\r\n array.findIndex(value2 => (value2.MenuId === value.MenuId)) === index)\r\n\r\n //Mapaemaos los datos para agregar un estado de checado\r\n var info = menusFiltrados.map((item, index) => {\r\n return { \r\n MenuId: item.MenuId,\r\n Description: item.Description,\r\n DateUpdate: item.DateUpdate,\r\n Active: item.Active,\r\n IdSegmento: item.IdSegmento, //Se agregó el segmento para validación \r\n statusCheck:false//agregamos un estado para cada fila de si ha sido seleccionado no\r\n };\r\n });\r\n\r\n this.setState({menus: info, menusFilter: info});\r\n this.menus = info;\r\n \r\n return CaffenioDriveAPI.getCaffenios();\r\n })\r\n .then(responseCaffenio => {\r\n let state = {...this.state}\r\n state.Caffenios = responseCaffenio.data;\r\n state.Caffenios.map(producto => {\r\n producto.statusCheck = false;\r\n return producto\r\n })\r\n\r\n state.optionsEstado = this.select_state(state.Caffenios);\r\n state.optionsCiudad = this.select_city(state.Caffenios);\r\n state.optionsDrive = this.select_Drive(state.Caffenios);\r\n this.setState(state);\r\n return RecipesAPI.getAll();\r\n })\r\n .then(response =>{\r\n if (response.data) {\r\n this.setState({ recipes: response.data })\r\n }\r\n return EmpresasAPI.getAllSegments()\r\n })\r\n .then(response => {\r\n this.setState({ listaSegmentos: response.data, isLoading: false })\r\n })\r\n .catch(err => {\r\n this.setState({isLoading: false})\r\n if(err.response)\r\n toast.error(err.response.data.Message)\r\n else\r\n toast.error(ErrorMessages.SinConexion)\r\n });\r\n }\r\n\r\n //#region Configuracion de dropdowns\r\n /**\r\n * Determina los estados basandose en la lista de caffenios dada\r\n * @param Caffenios List. Lista de caffenios\r\n * @returns Una lista de estados\r\n */\r\n select_state(Caffenios) { // Llenar el combo 'Estados' con todas las opciones \r\n var newArray = [];\r\n let OptionSelect = [];\r\n var lookupObject = {};\r\n Caffenios.map((item) => {\r\n OptionSelect.push({value:item.StateId,label:item.State});\r\n return item\r\n });\r\n\r\n for(var i in OptionSelect) {\r\n lookupObject[OptionSelect[i][\"value\"]] = OptionSelect[i];\r\n }\r\n \r\n for(i in lookupObject) {\r\n newArray.push(lookupObject[i]);\r\n }\r\n \r\n return newArray;\r\n }\r\n\r\n /**\r\n * Determina las ciudades basandose en la lista de caffenios dada\r\n * @param Caffenios List. Lista de caffenios\r\n * @returns Una lista de ciudades\r\n */\r\n select_city(Caffenios) { // Llenar el combo 'Ciudades' con todas las opciones \r\n var newArray = [];\r\n let OptionSelectCity = [];\r\n var lookupObject = {};\r\n Caffenios.map((item) => {\r\n OptionSelectCity.push({value:item.Municipalityid,label:item.Municipality});\r\n return item\r\n });\r\n\r\n for(var i in OptionSelectCity) {\r\n lookupObject[OptionSelectCity[i][\"value\"]] = OptionSelectCity[i];\r\n }\r\n \r\n for(i in lookupObject) {\r\n newArray.push(lookupObject[i]);\r\n }\r\n\r\n return newArray;\r\n }\r\n\r\n /**\r\n * Determina los drives basandose en la lista de caffenios dada\r\n * @param Caffenios List. Lista de caffenios\r\n * @returns Una lista de drives\r\n */\r\n select_Drive(Caffenios) { // Llenar el combo 'Drives' con todas las opciones \r\n var newArray = [];\r\n let OptionSelectDrive = [];\r\n var lookupObject = {};\r\n Caffenios.map((item) => {\r\n OptionSelectDrive.push({value:item.idCaffenio,label:item.NombreNuevo});\r\n return item\r\n });\r\n\r\n for(var i in OptionSelectDrive) {\r\n lookupObject[OptionSelectDrive[i][\"value\"]] = OptionSelectDrive[i];\r\n }\r\n \r\n for(i in lookupObject) {\r\n newArray.push(lookupObject[i]);\r\n }\r\n\r\n return newArray;\r\n }\r\n\r\n eliminarObjDuplicados = (arr,prop) => {\r\n var nuevoArray = [];\r\n var lookup = {};\r\n \r\n for (var i in arr) {\r\n lookup[arr[i][prop]] = arr[i];\r\n }\r\n \r\n for (i in lookup) {\r\n nuevoArray.push(lookup[i]);\r\n }\r\n \r\n return nuevoArray;\r\n }\r\n\r\n /**\r\n * Función que se ejecuta al seleccionar un estado en el dropdown\r\n * @param obj Objeto que devuelve la propiedad onChange del componente Select\r\n */\r\n changeSelectEstado = (obj) => {\r\n let state = {...this.state}\r\n state[\"selectedEstado\"] = obj;\r\n let idEstado = obj.map(estado => {return estado.value});\r\n let objCaffenios = [...state.Caffenios];\r\n let listaCiudades = [];\r\n let listaDrives = [];\r\n\r\n // Recorrer objeto Caffenios y encontrar coincidencias sin eliminar duplicados\r\n objCaffenios.map(item =>{\r\n for(var i=0; i {return ciudad.value});\r\n\r\n //Se buscan coincidencias entre ciudad y drive y se genera la lista de drives\r\n objCaffenios.map(item =>{\r\n for(var i=0; i this.FilterProcess());\r\n }\r\n\r\n changeSelectCiudad = (obj) =>{\r\n let state = {...this.state}\r\n let idCiudad = obj.map(ciudad => {return ciudad.value});\r\n let objCaffenios = [...state.Caffenios];\r\n let listaDrives = [];\r\n\r\n //Se buscan coincidencias entre ciudad y drive y se genera la lista de drives\r\n objCaffenios.map(item =>{\r\n for(var i=0; i0){\r\n state[\"selectedCiudad\"] = obj;\r\n state[\"optionsDrive\"] = listaDrives;\r\n this.setState(state, () => this.FilterProcess());\r\n } else{\r\n this.changeSelectEstado(state[\"selectedEstado\"]);\r\n }\r\n }\r\n\r\n changeSelectDrive = (obj) =>{\r\n let state = {...this.state};\r\n let Caffenios = [...state.Caffenios];\r\n \r\n //Valida cada select (Estados,Ciudades,Drives) y realiza la acción correspondiente\r\n if(obj.length>0){\r\n state[\"selectedDrive\"] = obj;\r\n //state[\"optionsDrive\"] = obj;\r\n this.setState(state, () => this.FilterProcess());\r\n } else if(state[\"selectedCiudad\"].length===0){\r\n this.changeSelectEstado(state[\"selectedEstado\"]);\r\n } else if(state[\"selectedCiudad\"].length===0 && state[\"selectedEstado\"].length===0){\r\n this.select_Drive(Caffenios);\r\n this.select_Drive(Caffenios);\r\n this.select_Drive(Caffenios);\r\n } else{\r\n this.changeSelectCiudad(state[\"selectedCiudad\"]);\r\n }\r\n }\r\n\r\n FilterProcess = () => {\r\n let state = {...this.state}\r\n state.selectedMenus = []\r\n state.checkAll = false\r\n let Caffenios = state.Caffenios;\r\n let driveIds;\r\n\r\n switch (this.state.selectedAsignacion) {\r\n case this.estadoAsignacion.SinDrive:\r\n this.setState(state, () => {\r\n if(this.state.filterText.trim !== \"\")\r\n this.handleSearchInput(this.state.filterText)\r\n }) \r\n break;\r\n\r\n case this.estadoAsignacion.Todos:\r\n if(state[\"selectedEstado\"].length == 0 && state[\"selectedCiudad\"].length == 0 && state[\"selectedDrive\"].length == 0){\r\n state[\"menusFilter\"] = this.menus\r\n this.setState(state, () => {\r\n if(this.state.filterText.trim !== \"\")\r\n this.handleSearchInput(this.state.filterText)\r\n })\r\n break;\r\n }\r\n \r\n case this.estadoAsignacion.ConDrive:\r\n if(state[\"selectedDrive\"].length===0){\r\n driveIds = state[\"optionsDrive\"].map(obj => {\r\n return obj.value;\r\n })\r\n } else{\r\n driveIds = state[\"selectedDrive\"].map(obj => {\r\n return obj.value;\r\n })\r\n }\r\n \r\n this.setState(state, () => {\r\n MenuDriveAPI.getMenusByIdDrives(driveIds).then(response => {\r\n if(response.data){\r\n this.setState({menusFilter: response.data}, () => {\r\n if(this.state.filterText.trim !== \"\")\r\n this.handleSearchInput(this.state.filterText)\r\n })\r\n }\r\n })\r\n });\r\n break;\r\n }\r\n \r\n }\r\n //#endregion\r\n\r\n // Método encargado de recibir el texto en el input de búsqueda y filtrar los elementos en\r\n // la tabla \r\n handleSearchInput = (text) => {\r\n // let menuSource = this.state.selectedAsignacion === this.estadoAsignacion.Todos ? [...this.state.menus] : [...this.state.menusFilter]\r\n let menus = this.state.menusFilter.filter(menu => menu.Description.toLowerCase().normalize(\"NFD\").replace(/[\\u0300-\\u036f]/g, \"\").includes(text.trim().toLowerCase().normalize(\"NFD\").replace(/[\\u0300-\\u036f]/g, \"\")));\r\n //Se agregan los nuevos filtros para que se considere el segmento y el activo junto con el nombre\r\n if (this.state.filterSegmento !== null && this.state.filterSegmento !== undefined) {\r\n menus = menus.filter(menu => menu.IdSegmento === this.state.filterSegmento.SegmentId)\r\n }\r\n if (this.state.filterActivo !== null && this.state.filterActivo !== undefined) {\r\n menus = menus.filter(menu => menu.Active === this.state.filterActivo)\r\n }\r\n \r\n let state = this.state;\r\n state.filterText = text;\r\n state.menus = menus;\r\n this.setState(state);\r\n }\r\n /**\r\n * Método para filtrar mediante segmento o activo/inactivo\r\n */\r\n handleFilterSegmentoActivo = (activo, segmento) => {\r\n let state = this.state;\r\n //Primero se filtra por activo o inactivo\r\n let menus = this.state.menusFilter.filter(menu => menu.Active === activo)\r\n //Luego se filtra por el segmento seleccionado\r\n if (segmento !== null && segmento !== undefined) {\r\n menus = menus.filter(menu => menu.IdSegmento === segmento.SegmentId)\r\n }\r\n //Luego se filtra por el texto SOLO en caso de tener\r\n if(this.state.filterText !== null && this.state.filterText !== undefined){\r\n menus = menus.filter(menu => menu.Description.toLowerCase().normalize(\"NFD\").replace(/[\\u0300-\\u036f]/g, \"\").includes(this.state.filterText.trim().toLowerCase().normalize(\"NFD\").replace(/[\\u0300-\\u036f]/g, \"\")));\r\n }\r\n //Se limpian todos los checks de los menús en caso de tener\r\n menus.map(element=>{\r\n element.statusCheck = false \r\n })\r\n //Se pone en false para que se reinicien todos los checks y se vacian los seleccionados\r\n state.checkAll = false\r\n state.selectedMenus = []\r\n state.filterActivo = activo;\r\n state.filterSegmento = segmento\r\n state.menus = menus;\r\n this.setState(state);\r\n }\r\n \r\n create = () => {\r\n this.props.history.push({pathname:'/menus/nuevo', state: { menus: this.menus } });\r\n }\r\n\r\n edit = (menu) => {\r\n\r\n menu.Description = menu.Description.trim();\r\n if(menu.Description.length < 3){ \r\n toast.error(\"Descripción debe de tener más de 2 caracteres\");\r\n return;\r\n }\r\n \r\n this.setState({isLoading: true});\r\n MenuDriveAPI.put(menu).then(response => {\r\n let state = {...this.state};\r\n state.menus[state.menus.findIndex(m => m.MenuId === menu.MenuId)] = menu;\r\n state.pageMenus[state.pageMenus.findIndex(m => m.MenuId === menu.MenuId)] = menu;\r\n this.menus[this.menus.findIndex(m => m.MenuId === menu.MenuId)] = menu;\r\n state.showModal = false;\r\n state.isLoading = false;\r\n this.setState(state, () => {\r\n toast.success(\"Menú actualizado\");\r\n });\r\n }).catch(err => {\r\n this.setState({isLoading: false});\r\n if(err.response)\r\n toast.error(err.response.data.Message);\r\n else\r\n toast.error(ErrorMessages.SinConexion);\r\n })\r\n }\r\n\r\n remove = (menu) => {\r\n const loadingToast = toast.info(\"Cargando...\", {autoClose: false, closeButton: false, className: \"has-background-primary has-text-weight-bold\"});\r\n MenuDriveAPI.delete(menu.MenuId).then(response => {\r\n let state = {...this.state};\r\n state.menus.splice(state.menus.findIndex(m => m.MenuId === menu.MenuId),1);\r\n state.pageMenus.splice(state.pageMenus.findIndex(m => m.MenuId === menu.MenuId),1);\r\n this.menus.splice(this.menus.findIndex(m => m.MenuId === menu.MenuId),1);\r\n state.removeModal = false;\r\n this.setState(state, () => {\r\n toast.dismiss(loadingToast);\r\n toast.success(\"Menú eliminado\");\r\n })\r\n }).catch(err => {\r\n console.log(err);\r\n });\r\n }\r\n\r\n /*\r\n * Funcion seleccionar o des seleccionar todas las recetas \r\n * de la pagina actual.\r\n */\r\n selectAllCheck = () => {\r\n //console.log('Seleccionar todos por tabla')\r\n if(this.validarMenuSegmentacion(this.state.pageMenus)){\r\n return\r\n }\r\n \r\n let state = {...this.state};\r\n let elementsPage = state.pageMenus\r\n let indexMenu = 0\r\n let pageCheck = this.getCurrentPageCheck()\r\n elementsPage.map(element=>{\r\n indexMenu = state.selectedMenus.findIndex(menu => menu.MenuId === element.MenuId)\r\n if(pageCheck){\r\n element.statusCheck = false\r\n if(indexMenu !== -1) state.selectedMenus.splice(indexMenu, 1) \r\n }else{\r\n element.statusCheck = true\r\n if(indexMenu === -1) state.selectedMenus.push(element)\r\n }\r\n return element\r\n })\r\n\r\n state.checkAll = !pageCheck;\r\n state.activateMasive = state.checkAll\r\n // state.pageMenus = elementsPage;\r\n if(state.checkAll === false){\r\n state.switchAll=false \r\n state.seeSwitch=false\r\n } \r\n \r\n this.setState(state);\r\n }\r\n\r\n /*\r\n * Funcion para saber si hay que mostrar\r\n * un switch y boton para aplicar cambios a las \r\n * recetas que hemos marcado. \r\n */\r\n showView = (index) => {\r\n let state = {...this.state};\r\n let cheked = false;\r\n let checkAllTemp = true;\r\n let selectedMenus = [...state.selectedMenus]\r\n // Agregar/Quitar IdMenu del estado selectedMenus\r\n let indexMenu = selectedMenus.findIndex(menu => menu.MenuId === state.pageMenus[index].MenuId)\r\n if(indexMenu === -1){\r\n //Validación de checkbox para no permitir seleccionar menús de diferentes segmentos\r\n if (state.pageMenus[index].IdSegmento === 2 ||\r\n state.pageMenus[index].IdSegmento === 3 ||\r\n state.pageMenus[index].IdSegmento === 8) {\r\n state.pageMenus[index].IdSegmento = 1\r\n }\r\n if(selectedMenus.some(x => x.IdSegmento !== state.pageMenus[index].IdSegmento)){\r\n state.pageMenus[index].statusCheck = false\r\n toast.error(\"Solamente se pueden seleccionar Menús del mismo segmento\")\r\n }else{\r\n selectedMenus.push(state.pageMenus[index])\r\n }\r\n }else{\r\n selectedMenus.splice(indexMenu, 1)\r\n }\r\n\r\n state.pageMenus\r\n .map(item=>{\r\n if(item.statusCheck){\r\n cheked = true;\r\n } else {\r\n checkAllTemp = false;\r\n }\r\n });\r\n\r\n //console.log(\"StatusCheck => \", state.pageMenus[index].statusCheck)\r\n //console.log(selectedMenus)\r\n\r\n state.activateMasive = cheked\r\n state.checkAll = checkAllTemp\r\n state.selectedMenus = selectedMenus\r\n this.setState(state);\r\n }\r\n \r\n\r\n /** \r\n * Funcion que se ejecuta al cambiar de pagina\r\n * para marcar o des marcar el checkbox de checkAll\r\n * y que su valor sea por cada pagina.\r\n */\r\n changePage = (menus) =>{\r\n let cheked = false;\r\n let checkAllTemp = true;\r\n menus\r\n .map(item=>{\r\n if(item.statusCheck){\r\n cheked = true;\r\n }\r\n item.statusCheck = this.state.selectedMenus.findIndex(menu => menu.MenuId === item.MenuId) !== -1\r\n });\r\n\r\n this.setState({pageMenus: menus, activateMasive: cheked});\r\n \r\n }\r\n /**\r\n * Funcion para sincronizar las recetas de un drive en especfico\r\n */\r\n syncMenu = () =>{\r\n this.setState({isLoading: true});\r\n let menus = []; //lista de menus para sincronizar\r\n menus.push(this.state.menu)\r\n \r\n let state = {...this.state};\r\n \r\n MenuDriveAPI.postSync(menus).then(response => {\r\n state.showModal = false;\r\n state.syncModal = false;\r\n state.isLoading = false;\r\n state.activateMasive = false;\r\n this.setState(state, () => {\r\n toast.success(\"Menús sincronizados\");\r\n });\r\n }).catch(err => {\r\n state.isLoading = false;\r\n this.setState(state, () => {\r\n toast.error(\"Error al sincronizar menús\");\r\n });\r\n })\r\n }\r\n\r\n /**\r\n * Funcion para sincronizar las recetas de todos los drives\r\n */\r\n syncAll = () =>{\r\n\r\n if(this.validarMenuSegmentacion(this.state.selectedMenus)){\r\n return\r\n }\r\n \r\n this.setState({isLoading: true});\r\n let state = {...this.state};\r\n let menusSeleccionadosActivos = this.state.selectedMenus.filter(menu => menu.Active === true)\r\n MenuDriveAPI.postSync(menusSeleccionadosActivos).then(response => {\r\n state.showModal = false;\r\n state.syncAllModal = false;\r\n state.isLoading = false;\r\n this.cleanCheckBoxs();\r\n state.activateMasive = false;\r\n this.setState(state, () => {\r\n toast.success(\"Menús sincronizados\");\r\n });\r\n }).catch(err => {\r\n state.isLoading = false;\r\n this.setState(state, () => {\r\n toast.error(\"Error al sincronizar menús\");\r\n });\r\n })\r\n }\r\n /**\r\n * Funcion encargada de des seleccionar los checkbox\r\n */\r\n cleanCheckBoxs = () =>{\r\n //console.log('test5')\r\n this.state.menus.map(item=>{\r\n if(item.statusCheck){\r\n item.statusCheck = false\r\n } \r\n });\r\n }\r\n\r\n /**\r\n * Función que consulta a la API los drives que tienen el menu dado y luego los muestra en una tabla en el modal de drives.\r\n */\r\n handleMenuDriveModalBody = (menuId) => {\r\n MenuDriveAPI.getDrives(menuId)\r\n .then(result => {\r\n let tablaDrives = \r\n this.setState({menuDrivesModalBody:tablaDrives, isLoading: false})\r\n })\r\n .catch(error => {\r\n if(error){\r\n toast.error(error.response ? error.response.data.Message : \"Error al cargar los drives.\");\r\n }\r\n this.setState({menuDrivesModalBody:\"Error al cargar los drives.\", isLoading: false})\r\n })\r\n }\r\n\r\n /**\r\n * Función que selecciona todos los resultados de la busqueda\r\n */\r\n selectAllResults = () => {\r\n //console.log('Seleccionar todos los resultados botón')\r\n let state = {...this.state};\r\n let selectedMenus = []\r\n\r\n if(this.validarMenuSegmentacion(state.menus)){\r\n return\r\n }\r\n // Le asignamos el valor inverso de checkAll a todas las recetas actuales\r\n state.menus.map(element=>{\r\n if(state.checkAll){\r\n element.statusCheck = false \r\n }else{\r\n element.statusCheck = true\r\n selectedMenus.push(element)\r\n }\r\n\r\n return element\r\n })\r\n state.checkAll = !state.checkAll;\r\n state.selectedMenus = selectedMenus\r\n console.log(selectedMenus)\r\n this.setState(state);\r\n }\r\n\r\n /**\r\n * Función que analiza los registros de la pagina actual para ver si todos estan seleccionados\r\n * @returns Bool. True si todos estan seleccionados y false en caso contrario.\r\n */\r\n getCurrentPageCheck = () => {\r\n return this.state.pageMenus.findIndex(menu => {\r\n return !menu.statusCheck\r\n }) === -1\r\n }\r\n\r\n /**\r\n * Función para manejar los radiobuttons para el filtro de asignacion\r\n */\r\n handleFiltroAsignacion = (evento) => {\r\n if(this.state.selectedAsignacion !== Number(evento.currentTarget.value)){\r\n if(Number(evento.currentTarget.value) === this.estadoAsignacion.SinDrive){\r\n this.setState({selectedAsignacion: Number(evento.currentTarget.value)}, () => {\r\n MenuDriveAPI.getMenusWithoutDrives().then(response => {\r\n this.setState({menusFilter: response.data}, this.FilterProcess)\r\n })\r\n })\r\n\r\n }else{\r\n this.setState({selectedAsignacion: Number(evento.currentTarget.value)}, this.FilterProcess)\r\n }\r\n }\r\n }\r\n\r\n /**Setea al state los valores de los filtros de recetas */\r\n handleSelectChange = (filters) => {\r\n let state = { ...this.state };\r\n\r\n state.selectedClassificationList = filters.selectedClassificationList && filters.selectedClassificationList.length > 0 ? filters.selectedClassificationList : [];\r\n state.selectedRecipeTypesList = filters.selectedRecipeTypesList && filters.selectedRecipeTypesList.length > 0 ? filters.selectedRecipeTypesList : [];\r\n state.selectedFlavorsList = filters.selectedFlavorsList && filters.selectedFlavorsList.length > 0 ? filters.selectedFlavorsList : [];\r\n state.selectedMilksList = filters.selectedMilksList && filters.selectedMilksList.length > 0 ? filters.selectedMilksList : [];\r\n state.selectedGrainsList = filters.selectedGrainsList && filters.selectedGrainsList.length > 0 ? filters.selectedGrainsList : [];\r\n state.selectedPresentationsList = filters.selectedPresentationsList && filters.selectedPresentationsList.length > 0 ? filters.selectedPresentationsList : [];\r\n\r\n state.enabledApply = (filters.selectedClassificationList && filters.selectedClassificationList.length > 0) ||\r\n (filters.selectedRecipeTypesList && filters.selectedRecipeTypesList.length > 0) ||\r\n (filters.selectedFlavorsList && filters.selectedFlavorsList.length > 0) ||\r\n (filters.selectedMilksList && filters.selectedMilksList.length > 0 )||\r\n (filters.selectedGrainsList && filters.selectedGrainsList.length > 0) ||\r\n (filters.selectedPresentationsList && filters.selectedPresentationsList.length > 0);\r\n\r\n this.setState(state);\r\n\r\n }\r\n\r\n /**\r\n * Función para actualizar masivamente las recetas activas o inactivas para los menus seleccionados\r\n */\r\n updateMasive = () => {\r\n \r\n // Ponemos icono de cargando\r\n this.setState({ isLoading: true }, () => {\r\n console.log(\"Menús seleccionados\", this.state.selectedMenus);\r\n let selectedMenus = this.state.selectedMenus.map(s => {s.completed = false; return s});\r\n\r\n selectedMenus.forEach(item => {\r\n debugger\r\n let data = this.state.filterRecipes.map(f => {\r\n return {\r\n MenuId: item.MenuId,\r\n RecipeId: f.RecipeId,\r\n Active: f.Active\r\n }\r\n });\r\n\r\n MenuDriveAPI.postDetailUpdate(data).then(response => {\r\n item.completed = true;\r\n if(!selectedMenus.some(s => !s.completed)){\r\n this.setState({isLoading:false, modalRecipesChange: false, filterRecipes: [] },\r\n ()=>{\r\n toast.dismiss();\r\n toast.success(\"Recetas actualizadas. \")\r\n }); \r\n }\r\n }).catch(err => {\r\n this.setState({isLoading:false, modalRecipesChange: false, filterRecipes: [] }); \r\n toast.dismiss() \r\n toast.error(\"Ocurrió un error al actualizar la Receta\");\r\n });\r\n });\r\n }); \r\n }\r\n\r\n /**\r\n * Método que valida si se quiere seleccionar un menú con diferente\r\n * segmentación a los demas\r\n * @param {*} arregloAux - lista de menús\r\n * @returns Verdadero en caso de encontrar segmentación diferente, falso en caso contrario\r\n */\r\n validarMenuSegmentacion = (arregloAux) =>{\r\n let filtroMenuAux = []\r\n for (let index = 0; index < arregloAux.length; index++) {\r\n const element = arregloAux[index]\r\n if (element.IdSegmento === 2 ||\r\n element.IdSegmento === 3 ||\r\n element.IdSegmento === 8) {\r\n //console.log(element.IdSegmento)\r\n element.IdSegmento = 1\r\n }\r\n if (filtroMenuAux.some(x => x.IdSegmento !== element.IdSegmento)) {\r\n toast.error(\"Solo se pueden sincronizar Menús del mismo segmento\")\r\n return true\r\n } else {\r\n filtroMenuAux.push(element)\r\n }\r\n }\r\n return false\r\n }\r\n\r\n render() {\r\n let pageCheck = this.getCurrentPageCheck()\r\n return (\r\n
    \r\n

    \r\n Menú\r\n this.setState({ showModalInfoManu: !this.state.showModalInfoManu })}\r\n >\r\n

    \r\n \r\n
    \r\n\r\n
    \r\n
    \r\n
    \r\n
    \r\n
    \r\n this.handleSearchInput(t)}\r\n itemName={'Menú'}\r\n placeholderText={\"Ingrese nombre de menú\"}\r\n />\r\n
    \r\n
    \r\n
    \r\n
    \r\n
    \r\n\r\n
    \r\n
    \r\n
    \r\n
    \r\n
    \r\n \r\n
    \r\n {\r\n this.handleFilterSegmentoActivo(this.state.filterActivo, value)\r\n }}\r\n noOptionsMessage={() => \"No hay opciones\"}\r\n options={this.state.listaSegmentos}\r\n getOptionLabel={(segmento) => segmento.Name}\r\n getOptionValue={(segmento) => segmento.SegmentId}\r\n />\r\n
    \r\n
    \r\n
    \r\n
    \r\n \r\n \r\n {\r\n this.handleFilterSegmentoActivo(!this.state.filterActivo, this.state.filterSegmento)\r\n }}\r\n />\r\n \r\n
    \r\n
    \r\n
    \r\n
    \r\n
    \r\n \r\n \r\n\r\n
    \r\n\r\n {/* Filtros */}\r\n
    \r\n
    \r\n
    \r\n Filtros de punto de venta\r\n
    \r\n this.setState({ showPVFilters: !this.state.showPVFilters })}\r\n >\r\n
    \r\n
    \r\n
    \r\n this.setState({ showPVFilters: !this.state.showPVFilters })}>\r\n \r\n \r\n
    \r\n
    \r\n
    \r\n
    \r\n {/* Activo */}\r\n
    \r\n \r\n
    \r\n \r\n \r\n \r\n\r\n \r\n
    \r\n
    \r\n \r\n {this.state.selectedAsignacion !== this.estadoAsignacion.SinDrive && \r\n {/* Estados */}\r\n
    \r\n \r\n
    \r\n ts.label.toLowerCase()], ['asc'])}\r\n name=\"label\"\r\n noOptionsMessage={() => \"No hay opciones\"}\r\n value={this.state.selectedEstado}\r\n onChange={this.changeSelectEstado}\r\n />\r\n
    \r\n
    \r\n\r\n {/* Ciudades */}\r\n
    \r\n \r\n
    \r\n ts.label.toLowerCase()], ['asc'])}\r\n name=\"label\"\r\n noOptionsMessage={() => \"No hay opciones\"}\r\n value={this.state.selectedCiudad}\r\n onChange={this.changeSelectCiudad}\r\n />\r\n
    \r\n
    \r\n\r\n {/* Drives */}\r\n
    \r\n \r\n
    \r\n ts.label.toLowerCase()], ['asc'])}\r\n name=\"label\"\r\n noOptionsMessage={() => \"No hay opciones\"}\r\n value={this.state.selectedDrive}\r\n onChange={this.changeSelectDrive}\r\n />\r\n
    \r\n
    \r\n \r\n
    }\r\n
    \r\n
    \r\n
    \r\n
    \r\n {this.state.menus.some(i => i.statusCheck) &&\r\n
    \r\n
    \r\n
    \r\n Filtros de receta\r\n
    \r\n this.setState({ showRecipeFilters: !this.state.showRecipeFilters })}\r\n >\r\n
    \r\n
    \r\n
    \r\n this.setState({ showRecipeFilters: !this.state.showRecipeFilters })}>\r\n \r\n \r\n
    \r\n
    \r\n
    \r\n
    \r\n { this.handleSelectChange(objFilters) }}\r\n menuAux={this.state.selectedMenus}\r\n />\r\n\r\n {this.state.enabledApply &&\r\n
    \r\n
    \r\n
    \r\n
    \r\n
    \r\n \r\n
    \r\n
    \r\n \r\n {\r\n let filterRecipes = this.state.recipes.filter(r => \r\n (this.state.selectedClassificationList.length === 0 || this.state.selectedClassificationList.includes(r.ClassificationId))\r\n && (this.state.selectedRecipeTypesList.length === 0 || this.state.selectedRecipeTypesList.includes(r.RecipeTypeId))\r\n && (this.state.selectedFlavorsList.length === 0 || this.state.selectedFlavorsList.includes(r.FlavorTypeId))\r\n && (this.state.selectedMilksList.length === 0 || this.state.selectedMilksList.includes(r.MilkTypeId))\r\n && (this.state.selectedGrainsList.length === 0 || this.state.selectedGrainsList.includes(r.GrainTypeId))\r\n && (this.state.selectedPresentationsList.length === 0 || this.state.selectedPresentationsList.includes(r.PresentationId))\r\n );\r\n \r\n if(filterRecipes.length > 0){\r\n filterRecipes.map(f => {f.Active = false; return f;});\r\n this.setState({ modalRecipesChange: true, filterRecipes: filterRecipes })\r\n }else{\r\n toast.dismiss();\r\n toast.error(\"No hay recetas que aplique a los criterios seleccionados.\")\r\n }\r\n }}>\r\n \r\n \r\n \r\n Ver recetas\r\n \r\n \r\n
    \r\n\r\n
    \r\n
    \r\n }\r\n
    \r\n
    \r\n
    \r\n\r\n }\r\n\r\n
    \r\n
    \r\n
    \r\n
    \r\n {/* Todos los resultados */}\r\n \r\n\r\n {this.state.selectedMenus.length > 0 &&\r\n
    \r\n {/* Sincronizar seleccionados */}\r\n \r\n
    \r\n }\r\n
    \r\n\r\n {this.state.menus.length !== 0 \r\n ? this.setState({showModal: true, menu: menu})} \r\n remove={(menu) => this.setState({removeModal: true, menu: menu})}\r\n rowClickable={true}\r\n details={(menu) => this.props.history.push(`/menus/${menu.MenuId}/detalle`)}\r\n checkbox = {true}//para mostar los checkBoxs en la tabla\r\n selectAllCheck={this.selectAllCheck}\r\n checkAll= {pageCheck}\r\n showView={this.showView}\r\n sync={(menu) => this.setState({syncModal: true, menu: menu})}//modal para sincronizar\r\n extraButtons={(row) => {\r\n // Creamos un botón que lanza un modal con información de que menus esta la receta seleccionada\r\n return \r\n }}\r\n /> \r\n : }\r\n this.changePage(menus)} />\r\n
    \r\n
    \r\n {this.state.showModal && \r\n this.setState({showModal: false, menu: null})}\r\n >\r\n \r\n \r\n }\r\n {/*Modal para sincronizar un menu en especifico*/}\r\n {this.state.syncModal && this.syncMenu()}\r\n cancel={() => this.setState({syncModal: false})}\r\n modalTitle={\"¿Sincronizar \" + this.state.menu.Description + \"?\"}\r\n />}\r\n {/*Modal para sincronizar multiples menus */}\r\n {this.state.syncAllModal && this.syncAll()}\r\n cancel={() => this.setState({syncAllModal: false})}\r\n modalTitle={\"¿Sincronizar todos los menús seleccionados?\"}\r\n />}\r\n\r\n {this.state.removeModal && this.remove(this.state.menu)}\r\n cancel={() => this.setState({removeModal: false, menu: null})}\r\n modalTitle={\"Eliminar Menú\"}\r\n />}\r\n\r\n {/* Modal para consultar drives */}\r\n {this.state.menuDrivesModal && this.setState({menuDrivesModal: false})}\r\n modalTitle={this.state.menuDrivesModalTitle}\r\n >\r\n {this.state.menuDrivesModalBody}\r\n }\r\n {/* Modal para visualizar la información del módulo */}\r\n {this.state.showModalInfoManu &&\r\n this.setState({ showModalInfoManu: false })}\r\n >\r\n
    \r\n Cada Menú esta conformado por un conjunto de recetas, su función es definir los productos que estarán disponibles en el punto de venta que los tenga asignado.\r\n\r\n
    \r\n
    \r\n Los menús son asignados a los puntos de venta, un Drive solo puede tener un menú asignado.\r\n
    \r\n
    \r\n En el módulo se podrá realizar: \r\n
      \r\n
    1. Búsquedas ingresando textualmente el Nombre de un Menú o filtrando por punto de venta.
    2. \r\n
    3. Activar o Desactivar recetas masivamente.\r\n
      \r\n
      \r\n NOTA IMPORTANTE: \r\n Debe seleccionar al menos un menú, para visualizar los filtros de recetas.\r\n
      \r\n \r\n
      \r\n\r\n
    4. \r\n
    \r\n
    \r\n \r\n\r\n \r\n }\r\n {/* Modal para visualizar recetas que serán activadas o desactivadas masivamente */}\r\n {this.state.modalRecipesChange &&\r\n this.updateMasive()}\r\n modalTitle={`Confirmar recetas a actualizar`}\r\n cancel={() => this.setState({ modalRecipesChange: false, filterRecipes: [] })}\r\n modalBody={ \r\n
    \r\n
    \r\n Asegurarse de dejar en el estatus correcto todas las recetas, ya que al aceptar los cambios las recetas\r\n se desactivarán o activarán en los menús seleccionados.\r\n
    \r\n {\r\n row.Active = !row.Active;\r\n let state = {...this.state}\r\n let index = state.filterRecipes.indexOf(row);\r\n state.filterRecipes[index].Active = row.Active;\r\n this.setState(state);\r\n \r\n }} \r\n data={this.state.pageRecipesList}\r\n />\r\n this.setState({ pageRecipesList: recipes })} />\r\n
    \r\n\r\n }\r\n />\r\n }\r\n \r\n \r\n
    \r\n );\r\n }\r\n\r\n}\r\n\r\nexport default MenusDrive;","import React, { Component } from 'react';\r\nimport PropTypes from 'prop-types';\r\nimport {toast} from 'react-toastify';\r\nimport MenuForm from './MenuForm';\r\nimport MenuDriveAPI from '../../services/MenuDrive';\r\nimport './MenusDrive.css'\r\n\r\nclass NewMenu extends Component {\r\n constructor(props){\r\n super(props);\r\n this.state = {\r\n menu: {...this.props.menu}\r\n ,menus:[]\r\n };\r\n }\r\n\r\n componentDidMount(){\r\n if (!this.props.location.state) {\r\n this.props.history.push(`/menus`);\r\n return;\r\n }\r\n this.setState({ menus: this.props.location.state.menus })\r\n }\r\n\r\n save = (menu) => {\r\n menu.Description = menu.Description.trim();\r\n if(menu.Description.length < 3){ \r\n toast.error(\"Descripción debe de tener más de 2 caracteres\");\r\n return;\r\n }\r\n\r\n // Checar si menú está relacionado con Caffenio Drive, si es true no poder desactivar..\r\n \r\n const loadingToast = toast.info(\"Cargando...\", {autoClose: false, closeButton: false, className: \"has-background-primary has-text-weight-bold\"});\r\n MenuDriveAPI.post(menu).then(response => {\r\n //console.log(response);\r\n toast.dismiss(loadingToast);\r\n toast.success(\"Menú creado\");\r\n this.props.history.goBack();\r\n }).catch(err => {\r\n console.log(err);\r\n });\r\n }\r\n\r\n render() {\r\n return (\r\n
    \r\n
    \r\n
    \r\n
    \r\n \r\n {this.props.history.goBack()}} className=\"fa fa-arrow-left\">\r\n \r\n Nuevo Menú\r\n
    \r\n
    \r\n
    \r\n \r\n
    \r\n
    \r\n
    \r\n );\r\n }\r\n}\r\n\r\n// Definición de los tipos y su dependencia de las distintas props que recibe el componente.\r\nNewMenu.propTypes = {\r\n menu: PropTypes.object,\r\n isEditing: PropTypes.bool\r\n}\r\n\r\n// Definición de los valores por default de las props en caso de no ser recibidas por el padre.\r\nNewMenu.defaultProps = {\r\n isEditing: false,\r\n menu: {\r\n Description: \"\",\r\n Active: false\r\n }\r\n}\r\n\r\nexport default NewMenu;\r\n","import React, { Component } from 'react';\r\nimport MenuDriveAPI from '../../services/MenuDrive';\r\nimport ClasificacionesAPI from '../../services/Classification';\r\nimport PresentationsAPI from '../../services/Presentations';\r\nimport FlavorsAPI from '../../services/Flavor';\r\nimport MilksAPI from '../../services/Milk';\r\nimport GrainsAPI from '../../services/Grain';\r\nimport RecipesTypesAPI from '../../services/RecipeType';\r\nimport to from '../../util/to';\r\nimport { toast } from 'react-toastify';\r\nimport './MenusDrive.css';\r\nimport Field from '../util/field/Field';\r\nimport TableTemplate from '../util/tabletemplate/TableTemplate';\r\nimport Dropdown from '../util/dropdown/Dropdown';\r\nimport SearchForm from \"../util/searchform/SearchForm\";\r\nimport NoItems from \"../util/noitems/NoItems\";\r\nimport Pagination from '../util/pagination/Pagination';\r\nimport Loading from '../util/loading/Loading';\r\nimport Select from 'react-select';\r\nimport '../cssComponents.css';\r\nimport RecipeFilters from '../util/recipeFilters/recipeFilters';\r\n\r\n\r\nclass MenuDetail extends Component {\r\n menuDetailsFull = [];\r\n menuDetails = [];\r\n recipes = [];\r\n estatusReceta = {\r\n Todos: 1,\r\n Activo: 2,\r\n Inactivo: 3\r\n }\r\n\r\n // Variables donde se almacenaran los valores seleccionados en el select multi\r\n tempRecipeTypesList;\r\n tempPresentationList;\r\n tempMilkList;\r\n tempGrainList;\r\n tempFlavorsList;\r\n tempClassificationList;\r\n\r\n constructor(props) {\r\n super(props);\r\n this.state = {\r\n menu: {\r\n Description: \"\",\r\n NombreSegmento: \"\"\r\n },\r\n filters: {\r\n ClassificationId: 0,\r\n PresentationId: 0,\r\n FlavorTypeId: 0,\r\n RecipeTypeId: 0,\r\n MilkTypeId: 0,\r\n GrainTypeId: 0\r\n },\r\n menuDetails: [],\r\n pageMenuDetails: [],\r\n filterText: \"\",\r\n classifications: [],\r\n presentations: [],\r\n flavors: [],\r\n recipeTypes: [],\r\n milks: [],\r\n grains: [],\r\n isLoading: false,\r\n dataLoaded: false,\r\n checkAll: false,//para seleccionar todos los de una pagina (1er checkBox)\r\n activateMasive: false,//Activar o desactivar masivo (Apartado que se muestra o no dependiendo del estado)\r\n switchAll: false,//switch para activar o desactivar\r\n seeSwitch: false,//variable par mostrar switch\r\n selectedEstatus: this.estatusReceta.Todos,\r\n buttonMesagge: false,//nos ayuda a mostrar un texto personalizado en el boton Seleccionar todo\r\n // Variables sonde se almacenaran los criterios de busqueda definitivos\r\n recipeTypeList: [],\r\n selectedRecipeTypesList: [],\r\n presentationsList: [],\r\n selectedPresentationsList: [],\r\n milksList: [],\r\n selectedMilksList: [],\r\n grainsList: [],\r\n selectedGrainsList: [],\r\n flavorsList: [],\r\n selectedFlavorsList: [],\r\n classificationList: [],\r\n selectedClassificationList: [],\r\n selectedMenuDetails: [],\r\n selectedSegmentationList: []\r\n };\r\n }\r\n\r\n componentWillMount() {\r\n this.setState({ isLoading: true });\r\n if (this.props.match.params.id) {\r\n MenuDriveAPI.getDetails(this.props.match.params.id).then(response => {\r\n this.menuDetailsFull = response.data;\r\n var info = response.data.map((item, index) => {\r\n return {\r\n DetailMenuId: index,\r\n MenuId: item.MenuId,\r\n RecipeId: item.RecipeId,\r\n Active: item.Active,\r\n ClassificationId: item.Recipe.ClassificationId,\r\n PresentationId: item.Recipe.PresentationId,\r\n FlavorTypeId: item.Recipe.FlavorTypeId,\r\n RecipeTypeId: item.Recipe.RecipeTypeId,\r\n MilkTypeId: item.Recipe.MilkTypeId,\r\n GrainTypeId: item.Recipe.GrainTypeId,\r\n Description: item.Recipe.Description,\r\n NombreSegmento: item.Recipe.NombreSegmento,\r\n idSegmento: item.Recipe.idSegmento,\r\n statusCheck: false//agregamos un estado para cada fila de si ha sido seleccionado no\r\n };\r\n });\r\n\r\n this.menuDetails = info;\r\n this.setState({ menuDetails: info }, () => this.getData());\r\n\r\n }).catch(err => toast.error(err.response.data));\r\n } else {\r\n this.menuDetailsFull = [];\r\n this.setState({\r\n menuDetails: []\r\n }, () => this.getData());\r\n }\r\n }\r\n\r\n\r\n getData = async () => {\r\n let err, classifications, presentations, flavors, milks, grains, recipeTypes, menu;\r\n [err, classifications] = await to(ClasificacionesAPI.getAll());\r\n [err, presentations] = await to(PresentationsAPI.getAll());\r\n [err, flavors] = await to(FlavorsAPI.getAll());\r\n [err, milks] = await to(MilksAPI.getAll());\r\n [err, grains] = await to(GrainsAPI.getAll());\r\n [err, recipeTypes] = await to(RecipesTypesAPI.getAll());\r\n [err, menu] = await to(MenuDriveAPI.getById(this.props.match.params.id));\r\n\r\n let tempClassificationList = [];\r\n classifications.map(obj => {\r\n tempClassificationList.push({ value: obj.ClassificationId, label: obj.ShortName })\r\n })\r\n tempClassificationList.sort(this.compare); // Ordenar los labels\r\n\r\n let temp = [];\r\n recipeTypes.map(obj => {\r\n if (obj.RecipeName) {\r\n temp.push({ value: obj.RecipeTypeId, label: obj.RecipeName })\r\n } else {\r\n temp.push({ value: obj.RecipeTypeId, label: obj.Description })\r\n }\r\n })\r\n temp.sort(this.compare); // Ordenar los labesl para elegir\r\n\r\n let tempFlavorsList = [];\r\n flavors.map(obj => {\r\n tempFlavorsList.push({ value: obj.FlavorTypeId, label: obj.Name })\r\n })\r\n tempFlavorsList.sort(this.compare); // Ordenar los labels \r\n\r\n let tempGrainList = [];\r\n grains.map(obj => {\r\n tempGrainList.push({ value: obj.GrainTypeId, label: obj.Description })\r\n })\r\n tempGrainList.sort(this.compare); // Ordenar los labels\r\n\r\n let tempMilkList = [];\r\n milks.map(obj => {\r\n tempMilkList.push({ value: obj.MilkTypeId, label: obj.Description })\r\n })\r\n tempMilkList.sort(this.compare); // Ordenar los labels\r\n\r\n let tempPresentationList = [];\r\n presentations.map(obj => {\r\n tempPresentationList.push({ value: obj.PresentationId, label: obj.Name })\r\n })\r\n tempPresentationList.sort(this.compare); // Ordenar los labels\r\n\r\n this.setState({\r\n classificationList: tempClassificationList,\r\n recipeTypeList: temp,\r\n flavorsList: tempFlavorsList,\r\n grainsList: tempGrainList,\r\n milksList: tempMilkList,\r\n presentationsList: tempPresentationList,\r\n menu: menu,\r\n dataLoaded: true,\r\n isLoading: false\r\n })\r\n }\r\n\r\n handleDropdownChange = (index, itemName, propName) => {\r\n if (index != 0) {\r\n let item = this.state[itemName][index - 1];\r\n let state = { ...this.state };\r\n state.filters[propName] = item[propName];\r\n this.setState(state, () => this.filterDataOnPages());\r\n } else {\r\n let state = { ...this.state };\r\n state.filters[propName] = 0;\r\n this.setState(state, () => this.filterDataOnPages());\r\n }\r\n }\r\n\r\n\r\n filterDataOnPages = () => {\r\n\r\n let details = this.menuDetails;\r\n\r\n if (this.state.filters.ClassificationId) {\r\n details = details.filter(d => d.ClassificationId == this.state.filters.ClassificationId);\r\n }\r\n\r\n if (this.state.filters.PresentationId) {\r\n details = details.filter(d => d.PresentationId == this.state.filters.PresentationId);\r\n }\r\n\r\n if (this.state.filters.FlavorTypeId) {\r\n details = details.filter(d => d.FlavorTypeId == this.state.filters.FlavorTypeId);\r\n }\r\n\r\n if (this.state.filters.RecipeTypeId) {\r\n details = details.filter(d => d.RecipeTypeId == this.state.filters.RecipeTypeId);\r\n }\r\n\r\n if (this.state.filters.MilkTypeId) {\r\n details = details.filter(d => d.MilkTypeId == this.state.filters.MilkTypeId);\r\n }\r\n\r\n if (this.state.filters.GrainTypeId) {\r\n details = details.filter(d => d.GrainTypeId == this.state.filters.GrainTypeId);\r\n }\r\n\r\n if (this.state.filterText) {\r\n details = details.filter(d => d.Description.toLowerCase().normalize(\"NFD\").replace(/[\\u0300-\\u036f]/g, \"\").includes(this.state.filterText.toLowerCase().normalize(\"NFD\").replace(/[\\u0300-\\u036f]/g, \"\")));\r\n }\r\n\r\n this.setState({ menuDetails: details });\r\n }\r\n\r\n // Método encargado de recibir el texto en el input de búsqueda y filtrar los elementos en\r\n // la tabla \r\n handleSearchInput = (text) => {\r\n //let menus = this.menus.filter(menu => menu.Description.toLowerCase().includes(text.toLowerCase()));\r\n //state.menus = menus;\r\n\r\n let state = this.state;\r\n state.filterText = text;\r\n this.setState(state);\r\n this.handleSearchMultipleFieldInput();\r\n // this.filterDataOnPages();\r\n }\r\n\r\n //Funcion para marcar todos los checkbox que hay en la pagina actual\r\n selectAllCheck = () => {\r\n let _selectedMenuDetails = [...this.state.selectedMenuDetails];\r\n let _menuDetails = this.state.pageMenuDetails\r\n let _checkAll = !this.state.checkAll\r\n\r\n _menuDetails.forEach(menuDetail => {\r\n let indexMenuDetail = _selectedMenuDetails.findIndex(item => item.RecipeId === menuDetail.RecipeId)\r\n menuDetail.statusCheck = _checkAll\r\n if(_checkAll){\r\n if(indexMenuDetail === -1) _selectedMenuDetails.push({\r\n MenuId: menuDetail.MenuId,\r\n RecipeId: menuDetail.RecipeId,\r\n DetailMenuId: menuDetail.DetailMenuId\r\n })\r\n }else{\r\n if(indexMenuDetail !== -1) _selectedMenuDetails.splice(indexMenuDetail, 1)\r\n }\r\n })\r\n\r\n this.setState({\r\n selectedMenuDetails: _selectedMenuDetails, \r\n checkAll: _checkAll,\r\n buttonSelectAll: _selectedMenuDetails.length === this.state.menuDetails.length,\r\n activateMasive: _selectedMenuDetails.length > 0\r\n })\r\n }\r\n\r\n //Funcion que selecciona o des selecciona todos los checkbox de todas las paginas\r\n selectAllCheckBox = () => {\r\n let _selectedMenuDetails = [...this.state.selectedMenuDetails]\r\n let _menuDetails = this.state.menuDetails;\r\n let _buttonSelectAll = !this.state.buttonSelectAll;\r\n\r\n _menuDetails.forEach(menuDetail => {\r\n // Ver si el elemento ya esta en la lista de seleccioandos\r\n let indexMenuDetail = _selectedMenuDetails.findIndex(item => item.RecipeId === menuDetail.RecipeId)\r\n\r\n // Meter el elemento a la lista si no estaba previamente\r\n if (_buttonSelectAll && indexMenuDetail === -1) {\r\n _selectedMenuDetails.push({\r\n MenuId: menuDetail.MenuId,\r\n RecipeId: menuDetail.RecipeId,\r\n DetailMenuId: menuDetail.DetailMenuId\r\n })\r\n // Sacar al elemento de la lista si ya estaba\r\n } else if (!_buttonSelectAll && indexMenuDetail !== -1) {\r\n _selectedMenuDetails.splice(indexMenuDetail, 1)\r\n }\r\n menuDetail.statusCheck = _buttonSelectAll;\r\n })\r\n\r\n let _checkAll = _buttonSelectAll;\r\n\r\n this.setState({\r\n selectedMenuDetails: _selectedMenuDetails, \r\n checkAll: _checkAll,\r\n buttonSelectAll: _buttonSelectAll,\r\n activateMasive: _selectedMenuDetails.length > 0\r\n })\r\n }\r\n\r\n //Funcion que sirve cuando damos clic a un check de una columna \r\n //para que nos muestre la opcion de aplicar cambios global\r\n showView = (index) => {\r\n let _selectedMenuDetails = [...this.state.selectedMenuDetails];\r\n let indexMenuDetail = this.state.selectedMenuDetails.findIndex(id => id.RecipeId === this.state.pageMenuDetails[index].RecipeId)\r\n if (indexMenuDetail === -1) {\r\n // Meter todo el objeto al arreglo de seleccionados\r\n _selectedMenuDetails.push({\r\n MenuId: this.state.pageMenuDetails[index].MenuId,\r\n RecipeId: this.state.pageMenuDetails[index].RecipeId,\r\n DetailMenuId: this.state.pageMenuDetails[index].DetailMenuId\r\n })\r\n } else {\r\n _selectedMenuDetails.splice(indexMenuDetail, 1)\r\n }\r\n\r\n let counter = 0; // variable para comparar los elementos seleccionados en la pagina con la cantidad de elementos por pagina\r\n this.state.pageMenuDetails.map(obj => {\r\n if (obj.statusCheck) counter++\r\n })\r\n\r\n this.setState({\r\n selectedMenuDetails: _selectedMenuDetails, \r\n buttonSelectAll: _selectedMenuDetails.length === this.state.menuDetails.length,\r\n checkAll: counter === this.state.pageMenuDetails.length,\r\n activateMasive: _selectedMenuDetails.length > 0\r\n })\r\n }\r\n\r\n //Funcion para guardar masivamente los cambios hechos\r\n applySwitchAll = () => {\r\n // Ponemos icono de cargando\r\n this.setState({ isLoading: true });\r\n\r\n this.state.selectedMenuDetails.map(obj => {\r\n obj.Active = this.state.switchAll\r\n })\r\n\r\n MenuDriveAPI.postDetailUpdate(this.state.selectedMenuDetails).then(response => {\r\n let state = { ...this.state };\r\n\r\n for (var i = 0; i < this.state.selectedMenuDetails.length; i++) {\r\n state.menuDetails[state.menuDetails.findIndex(md => md.DetailMenuId === this.state.selectedMenuDetails[i].DetailMenuId)].Active = this.state.switchAll;\r\n // state.pageMenuDetails[state.pageMenuDetails.findIndex(md => md.DetailMenuId === detail[i].DetailMenuId)].Active = this.state.switchAll;\r\n }\r\n //detail.Active = !detail.Active;\r\n\r\n state.menuDetails.map(obj => {\r\n obj.statusCheck = false;\r\n })\r\n state.activateMasive = false;\r\n\r\n state.showModal = false;\r\n state.isLoading = false;\r\n state.checkAll = false;\r\n state.selectedMenuDetails = []\r\n state.switchAll = false;\r\n state.buttonSelectAll = false;\r\n this.setState(state, () => {\r\n toast.success(\"Datos actualizados\");\r\n });\r\n }).catch(err => {\r\n let state = { ...this.state };\r\n state.showModal = false;\r\n state.isLoading = false;\r\n this.setState(state);\r\n\r\n toast.error(\"Ocurrió un error al actualizar la Receta\");\r\n });\r\n }\r\n\r\n changeStatusDetail = (detail) => {\r\n\r\n this.setState({ isLoading: true });\r\n let infoService = [\r\n {\r\n MenuId: detail.MenuId,\r\n RecipeId: detail.RecipeId,\r\n Active: !detail.Active\r\n }\r\n ];\r\n\r\n MenuDriveAPI.postDetailUpdate(infoService).then(response => {\r\n let state = { ...this.state };\r\n\r\n detail.Active = !detail.Active;\r\n state.menuDetails[state.menuDetails.findIndex(md => md.DetailMenuId === detail.DetailMenuId)] = detail;\r\n state.pageMenuDetails[state.pageMenuDetails.findIndex(md => md.DetailMenuId === detail.DetailMenuId)] = detail;\r\n\r\n state.showModal = false;\r\n state.isLoading = false;\r\n this.setState(state, () => {\r\n toast.success(\"Datos actualizados\");\r\n });\r\n }).catch(err => {\r\n let state = { ...this.state };\r\n state.showModal = false;\r\n state.isLoading = false;\r\n this.setState(state);\r\n\r\n toast.error(\"Ocurrió un error al actualizar la Receta.\");\r\n });\r\n }\r\n\r\n /**\r\n * Funcion para ordenar lexicograficamente\r\n * @param objA. primer operando\r\n * @param objB. segundo operando\r\n */\r\n compare = (objA, objB) => {\r\n // Use toUpperCase() to ignore character casing\r\n const labelA = objA.label.toUpperCase();\r\n const labelB = objB.label.toUpperCase();\r\n\r\n let comparison = 0;\r\n if (labelA > labelB) {\r\n comparison = 1;\r\n } else if (labelA < labelB) {\r\n comparison = -1;\r\n }\r\n return comparison;\r\n }\r\n\r\n /**\r\n *Realizar el filtrado sobre las recetas para desplegar solo los elementos\r\n *que cumplen con las caracteristicas que el usuario ingreso.\r\n * \r\n *@param: nada\r\n *@return: nada\r\n */\r\n handleSearchMultipleFieldInput = () => {\r\n\r\n let state = this.state;\r\n\r\n let menuDetails = this.menuDetails;\r\n\r\n switch (this.state.selectedEstatus) {\r\n case this.estatusReceta.Activo:\r\n menuDetails = menuDetails.filter(d => d.Active === true);\r\n break;\r\n \r\n case this.estatusReceta.Inactivo:\r\n menuDetails = menuDetails.filter(d => d.Active === false);\r\n break;\r\n }\r\n\r\n if (this.state.filterText) {\r\n menuDetails = menuDetails.filter(d => d.Description.toLowerCase().normalize(\"NFD\").replace(/[\\u0300-\\u036f]/g, \"\").includes(this.state.filterText.trim().toLowerCase().normalize(\"NFD\").replace(/[\\u0300-\\u036f]/g, \"\")));\r\n }\r\n\r\n if (this.state.selectedRecipeTypesList.length > 0) {\r\n menuDetails = menuDetails.filter(d => this.state.selectedRecipeTypesList.includes(d.RecipeTypeId))\r\n }\r\n\r\n if (this.state.selectedFlavorsList.length > 0) {\r\n menuDetails = menuDetails.filter(d => this.state.selectedFlavorsList.includes(d.FlavorTypeId))\r\n }\r\n\r\n if (this.state.selectedPresentationsList.length > 0) {\r\n menuDetails = menuDetails.filter(d => this.state.selectedPresentationsList.includes(d.PresentationId))\r\n }\r\n\r\n if (this.state.selectedMilksList.length > 0) {\r\n menuDetails = menuDetails.filter(d => this.state.selectedMilksList.includes(d.MilkTypeId));\r\n }\r\n\r\n if (this.state.selectedGrainsList.length > 0) {\r\n menuDetails = menuDetails.filter(d => this.state.selectedGrainsList.includes(d.GrainTypeId))\r\n }\r\n\r\n if (this.state.selectedClassificationList.length > 0) {\r\n menuDetails = menuDetails.filter(d => this.state.selectedClassificationList.includes(d.ClassificationId));\r\n }\r\n\r\n if (this.state.selectedSegmentationList.length > 0) {\r\n menuDetails = menuDetails.filter(d => this.state.selectedSegmentationList.includes(d.idSegmento));\r\n }\r\n\r\n menuDetails.map(item=>{\r\n if(item.statusCheck){\r\n item.statusCheck = false;\r\n } \r\n });\r\n\r\n state.menuDetails = menuDetails;\r\n state.activateMasive = false;\r\n state.buttonSelectAll = false;\r\n state.selectedMenuDetails = []\r\n\r\n this.setState(state);\r\n }\r\n\r\n /**\r\n *Modificar la lista de IDs con los que el usuario ha seleccionado. Aplica sobre las clasificaciones.\r\n * \r\n *@param: arr: arreglo de valores que crea el select multi de react\r\n *@return: nada\r\n */\r\n handleClassificationChange = (arr) => {\r\n let state = { ...this.state }\r\n let tempClassificationList = [];\r\n arr.map(obj => {\r\n tempClassificationList.push(obj.value);\r\n })\r\n\r\n state.selectedClassificationList = tempClassificationList;\r\n state.selectedRecipes = [];\r\n\r\n this.setState(state, () => {\r\n this.handleSearchMultipleFieldInput();\r\n });\r\n }\r\n\r\n /**\r\n *Modificar la lista de IDs con los que el usuario ha seleccionado. Aplica sobre los tipos de receta\r\n * \r\n *@param: arr: arreglo de valores que crea el select multi de react\r\n *@return: nada\r\n */\r\n handleRecipeTypeChange = (arr) => {\r\n let state = { ...this.state }\r\n let tempSelectedRecipeTypesList = [];\r\n arr.map(obj => {\r\n tempSelectedRecipeTypesList.push(obj.value);\r\n })\r\n\r\n state.selectedRecipeTypesList = tempSelectedRecipeTypesList;\r\n state.selectedRecipes = [];\r\n\r\n this.setState(state, () => {\r\n this.handleSearchMultipleFieldInput();\r\n });\r\n }\r\n\r\n /**\r\n *Modificar la lista de IDs con los que el usuario ha seleccionado. Aplica sobre los tipos de sabores\r\n * \r\n *@param: arr: arreglo de valores que crea el select multi de react\r\n *@return: nada\r\n */\r\n handleFlavorChange = (arr) => {\r\n let state = { ...this.state }\r\n let tempSelectedFlavorList = [];\r\n arr.map(obj => {\r\n tempSelectedFlavorList.push(obj.value);\r\n })\r\n\r\n state.selectedFlavorsList = tempSelectedFlavorList;\r\n state.selectedRecipes = [];\r\n\r\n this.setState(state, () => {\r\n this.handleSearchMultipleFieldInput();\r\n });\r\n }\r\n\r\n /**\r\n *Modificar la lista de IDs con los que el usuario ha seleccionado. Aplica sobre los tipos de granos.\r\n * \r\n *@param: arr: arreglo de valores que crea el select multi de react\r\n *@return: nada\r\n */\r\n handleGrainChange = (arr) => {\r\n let state = { ...this.state }\r\n let tempGrainList = [];\r\n arr.map(obj => {\r\n tempGrainList.push(obj.value);\r\n })\r\n\r\n state.selectedGrainsList = tempGrainList;\r\n state.selectedRecipes = [];\r\n\r\n this.setState(state, () => {\r\n this.handleSearchMultipleFieldInput();\r\n });\r\n }\r\n\r\n /**\r\n *Modificar la lista de IDs con los que el usuario ha seleccionado. Aplica sobre los tipos de leche\r\n * \r\n *@param: arr: arreglo de valores que crea el select multi de react\r\n *@return: nada\r\n */\r\n handleMilkChange = (arr) => {\r\n let state = { ...this.state }\r\n let tempMilksList = [];\r\n arr.map(obj => {\r\n tempMilksList.push(obj.value);\r\n })\r\n\r\n state.selectedMilksList = tempMilksList;\r\n state.selectedRecipes = [];\r\n\r\n this.setState(state, () => {\r\n this.handleSearchMultipleFieldInput();\r\n });\r\n }\r\n\r\n /**\r\n *Modificar la lista de IDs con los que el usuario ha seleccionado. Aplica sobre las presentaciones\r\n * \r\n *@param: arr: arreglo de valores que crea el select multi de react\r\n *@return: nada\r\n */\r\n handlePresentationChange = (arr) => {\r\n let state = { ...this.state }\r\n let tempPresentationList = [];\r\n arr.map(obj => {\r\n tempPresentationList.push(obj.value);\r\n })\r\n\r\n state.selectedPresentationsList = tempPresentationList;\r\n state.selectedRecipes = [];\r\n\r\n this.setState(state, () => {\r\n this.handleSearchMultipleFieldInput();\r\n });\r\n }\r\n\r\n /**\r\n * Función para manejar el onChange del componente de RecipeFilters\r\n */\r\n handleSelectChange = (objFilters) => {\r\n this.setState(objFilters, () => {this.handleSearchMultipleFieldInput();})\r\n }\r\n\r\n /**\r\n * Función para manejar los radiobuttons para el filtro de estatus\r\n */\r\n handleFiltroEstatus= (evento) => {\r\n if(this.state.selectedEstatus !== Number(evento.currentTarget.value)){\r\n this.setState({selectedEstatus: Number(evento.currentTarget.value)}, this.handleSearchMultipleFieldInput)\r\n }\r\n }\r\n\r\n render() {\r\n return (\r\n
    \r\n

    Activar/Desactivar recetas

    \r\n
    \r\n
    \r\n
    \r\n \r\n {this.props.history.goBack()}} className=\"fa fa-arrow-left\">\r\n \r\n {this.state.menu.Description}\r\n
    \r\n
    \r\n
    \r\n\r\n {/* Buscador de contenido o nombre de recetas */}\r\n{/*
    \r\n
    \r\n
    \r\n
    \r\n this.handleSearchInput(t)}\r\n itemName={'en Recetas'}\r\n />\r\n
    \r\n
    \r\n
    \r\n
    */}\r\n\r\n {/* Filtrado de todo */}\r\n
    \r\n {/* Filtrar por activo/inactivo/todos */}\r\n
    \r\n \r\n
    \r\n \r\n \r\n \r\n\r\n \r\n
    \r\n
    \r\n\r\n {\r\n this.handleSelectChange(objFilters)\r\n }}\r\n /> \r\n
    \r\n\r\n
    \r\n
    \r\n
    \r\n {/*Mostramos cuando a seleccionado un checkbox*/}\r\n {\r\n this.state.activateMasive &&\r\n
    \r\n
    \r\n
    \r\n
    \r\n \r\n
    \r\n
    \r\n \r\n \r\n { }}\r\n />\r\n \r\n
    \r\n
    \r\n
    \r\n this.applySwitchAll()}>\r\n Aplicar\r\n \r\n
    \r\n
    \r\n
    \r\n
    \r\n
    \r\n }\r\n
    \r\n\r\n
    \r\n \r\n
    \r\n {this.state.menuDetails.length != 0\r\n ? \r\n : }\r\n\r\n {\r\n let checkAllTemp = true;\r\n let cheked = false;\r\n\r\n menuDetails.map(item => {\r\n if(item.statusCheck){\r\n cheked = true;\r\n } else {\r\n checkAllTemp = false;\r\n }\r\n })\r\n this.setState({ pageMenuDetails: menuDetails, checkAll: checkAllTemp, seeSwitch: this.state.selectedClassificationList.length > 0 })\r\n }\r\n } \r\n />\r\n\r\n\r\n
    \r\n
    \r\n \r\n
    \r\n );\r\n }\r\n\r\n}\r\n\r\nexport default MenuDetail;","import React, { Component } from 'react';\r\nimport TextField from '../util/textfield/TextField';\r\nimport Field from '../util/field/Field';\r\nimport Loading from '../util/loading/Loading';\r\nimport PriceDriveAPI from '../../services/PriceDrive';\r\nimport ErrorMessages from '../../util/validation-error-messages';\r\nimport ExpresionesRegulares from '../../util/expresiones-regulares';\r\nimport { Formik } from 'formik';\r\nimport * as Yup from 'yup';\r\nimport lodash from 'lodash';\r\nimport Select from 'react-select';\r\n\r\nclass PriceListForm extends Component {\r\n\r\n constructor(props) {\r\n super(props);\r\n this.state = {\r\n priceList: { ...this.props.priceList },\r\n isEditing: false,\r\n isLoading: false,\r\n activeList: [],\r\n selectedOption: null\r\n }\r\n }\r\n\r\n componentDidMount() {\r\n PriceDriveAPI.get().then(response => {\r\n let state = { ...this.state };\r\n state.activeList = this.fncActiveList(response.data);\r\n this.setState(state);\r\n\r\n }).catch(err => {\r\n this.props.history.push(`/lista-precios`);\r\n });\r\n }\r\n\r\n VALIDATION_SCHEMA = Yup.object({\r\n Description: Yup.string()\r\n .trim()\r\n .matches(ExpresionesRegulares.AlfanumericoSinEspeciales, { message: ErrorMessages.AlfanumericoSinEspecialesError })\r\n .min(3, \"Nombre debe tener más de 2 caracteres.\")\r\n .max(30, \"Ha excedido el límite de 50 caracteres.\")\r\n .required(\"Campo Descripción es requerido.\")\r\n .test(\"validate-name\", \"La Descripción ya existe, favor de ingresar otro.\", (value) => {\r\n let isValid = true;\r\n let name = value ? value.toLowerCase().trim() : \"\";\r\n if (this.props.pricesList.some(u => u.Description.toLowerCase().trim() === name && u.PriceListId !== this.state.priceList.PriceListId)) {\r\n isValid = false;\r\n }\r\n return isValid;\r\n }),\r\n BaseOn: Yup.string().nullable(),\r\n Active: Yup.bool(),\r\n\r\n\r\n });\r\n\r\n fncActiveList = (listas) => {\r\n let state = this.state;\r\n let arrListActive = [];\r\n listas.map((lista) => {\r\n if (lista.Active) {\r\n arrListActive.push({ \"value\": lista.PriceListId, \"label\": lista.Description });\r\n }\r\n })\r\n return arrListActive;\r\n }\r\n\r\n \r\n\r\n render() {\r\n return (\r\n {\r\n let formatValues = { ...values }\r\n formatValues.Description = formatValues.Description.trim();\r\n formatValues.PriceListBasedId = values.BaseOn ? values.BaseOn.value : 0;\r\n this.props.save(formatValues)\r\n }}\r\n >\r\n {({ values, touched, errors, handleChange, handleBlur, handleSubmit, setFieldValue, setFieldTouched, setFieldError }) => (\r\n
    \r\n \r\n \r\n \r\n
    \r\n {this.state.priceList.PriceListId == null &&\r\n \r\n
    \r\n \r\n
    \r\n
    \r\n {\r\n setFieldValue('BaseOn', val);\r\n }}\r\n noOptionsMessage={() => \"No hay opciones\"}\r\n options={lodash.sortBy(this.state.activeList, [ts => ts.label.toLowerCase()], ['asc'])}\r\n />\r\n
    \r\n\r\n\r\n }\r\n\r\n
    \r\n \r\n { }}\r\n />\r\n \r\n
    \r\n
    \r\n
    \r\n \r\n Guardar\r\n \r\n
    \r\n
    \r\n \r\n \r\n )}\r\n \r\n );\r\n }\r\n}\r\n\r\nPriceListForm.defaultProps = {\r\n isEditing: false,\r\n isLoading: false,\r\n priceList: {\r\n Description: \"\",\r\n Active: false\r\n }\r\n}\r\n\r\nexport default PriceListForm;\r\n","import React, { Component } from 'react';\r\nimport Select from 'react-select';\r\nimport PropTypes from 'prop-types';\r\nimport lodash from 'lodash';\r\n\r\n/** Componente para visualizar los filtros de estado, ciudad y drives */\r\nclass SelectDriveForm extends Component {\r\n constructor(props) {\r\n super(props);\r\n this.state = {\r\n //estados seleccionados\r\n selectedOption: [],\r\n //ciudades seleccionadas\r\n selectedOptionC: [],\r\n //drives seleccionados\r\n selectedOptionD: [],\r\n //options ciudades\r\n optionCity: [],\r\n //options drives\r\n optionDrive: []\r\n\r\n }\r\n }\r\n\r\n /**Función para setear os valores seleccionados por el usuario al state */\r\n changeSelectEstado = (value, itemName) => {\r\n let state = { ...this.state }\r\n state[itemName] = value;\r\n\r\n state.optionDrive = this.props.Caffenios.reduce((list, item) => {\r\n if (state.selectedOption.length === 0\r\n || state.selectedOption.some(o => o.value === item.StateId)) {\r\n if (state.selectedOptionC.length === 0\r\n || state.selectedOptionC.some(o => o.Municipalityid === item.Municipalityid)) {\r\n if (!list.some(l => l.idCaffenio === item.idCaffenio)) {\r\n let newItem = { ...item };\r\n newItem.value = item.idCaffenio;\r\n newItem.label = item.Name;\r\n list.push(newItem);\r\n }\r\n }\r\n }\r\n\r\n return list;\r\n }, []);\r\n\r\n state.optionCity = this.props.Caffenios.reduce((list, item) => {\r\n if (state.selectedOption.length === 0\r\n || state.selectedOption.some(o => o.value === item.StateId)) {\r\n if (!list.some(l => l.Municipalityid === item.Municipalityid)) {\r\n let newItem = { ...item };\r\n newItem.value = item.Municipalityid;\r\n newItem.label = item.Municipality;\r\n list.push(newItem);\r\n }\r\n }\r\n return list;\r\n }, []);\r\n\r\n\r\n //Comparte con el padre los valores actuales de los listados\r\n this.setState(state, () => this.setValuesToParent());\r\n }\r\n\r\n /**Función para setear los valores al padre */\r\n setValuesToParent = () => {\r\n this.props.setStateFunc(this.state.selectedOption.length === 0\r\n ? this.props.optionState : this.state.selectedOption);\r\n this.props.setCityFunc(this.state.selectedOptionC.length === 0\r\n ? this.state.selectedOption.length === 0\r\n ? this.props.Caffenios\r\n : this.props.Caffenios.filter(c => this.state.selectedOption.some(o => o.value === c.StateId))\r\n : this.state.selectedOptionC);\r\n this.props.setDriveFunc(\r\n this.state.selectedOptionD.length === 0\r\n ? this.state.selectedOptionC.length === 0 && this.state.selectedOption.length === 0\r\n ? this.props.Caffenios\r\n : this.props.Caffenios.filter((item) => {\r\n if ((this.state.selectedOption.some(o => o.value === item.StateId) || this.state.selectedOption.length === 0) &&\r\n (this.state.selectedOptionC.some(o => o.Municipalityid === item.Municipalityid) || this.state.selectedOptionC.length === 0)) {\r\n return item\r\n }\r\n })\r\n : this.state.selectedOptionD);\r\n }\r\n\r\n render() {\r\n return (\r\n
    \r\n
    \r\n
    \r\n \r\n
    \r\n this.changeSelectEstado(val, \"selectedOption\")}\r\n noOptionsMessage={() => \"No hay opciones\"}\r\n options={lodash.sortBy(this.props.Caffenios.reduce((list,c)=>{\r\n if(!list.some(l=> l.value === c.StateId)){\r\n c.label = c.State;\r\n c.value = c.StateId;\r\n list.push(c);\r\n }\r\n \r\n return list;\r\n },[]), [ts => ts.label.toLowerCase()], ['asc'])}\r\n />\r\n
    \r\n
    \r\n
    \r\n \r\n
    \r\n this.changeSelectEstado(val, \"selectedOptionC\")}\r\n noOptionsMessage={() => \"No hay opciones\"}\r\n options={lodash.sortBy(this.state.optionCity, [ts => ts.label.toLowerCase()], ['asc'])}\r\n />\r\n
    \r\n
    \r\n
    \r\n \r\n
    \r\n this.changeSelectEstado(val, \"selectedOptionD\")}\r\n noOptionsMessage={() => \"No hay opciones\"}\r\n options={lodash.sortBy(this.state.optionDrive, [ts => ts.label.toLowerCase()], ['asc'])}\r\n />\r\n
    \r\n
    \r\n \r\n
    \r\n
    \r\n )\r\n }\r\n}\r\n\r\nSelectDriveForm.propTypes = {\r\n //listado de estados\r\n //optionState: PropTypes.arrayOf(PropTypes.object).isRequired,\r\n //listado de drives\r\n Caffenios: PropTypes.arrayOf(PropTypes.object).isRequired,\r\n //Funcion para compartir con el padre el estado seleccionado\r\n setStateFunc: PropTypes.func.isRequired,\r\n //Funcion para compartir con el padre las ciudades seleccionadas\r\n setCityFunc: PropTypes.func.isRequired,\r\n //Función para compartir con el padre los drives seleccionados\r\n setDriveFunc: PropTypes.func.isRequired,\r\n //Función para el create\r\n create: PropTypes.func.isRequired\r\n}\r\n\r\nexport default SelectDriveForm;","import React, { Component } from 'react';\r\nimport PriceDriveAPI from '../../services/PriceDrive';\r\nimport { toast } from 'react-toastify';\r\nimport './PricesDrive.css';\r\nimport TableTemplate from '../util/tabletemplate/TableTemplate';\r\nimport Modal from '../util/modal/Modal';\r\nimport SearchForm from \"../util/searchform/SearchForm\";\r\nimport NoItems from \"../util/noitems/NoItems\";\r\nimport AcceptModal from '../util/acceptModal/AcceptModal';\r\nimport Pagination from '../util/pagination/Pagination';\r\nimport Loading from '../util/loading/Loading';\r\nimport PriceListForm from '../pricesDrives/PriceListForm';\r\nimport SelectDriveForm from './components/SelectDriveForm';\r\nimport WarehouseAPI from '../../services/Warehouse';\r\nimport RecipesAPI from '../../services/Recipe';\r\n\r\nimport BtnModoGuiado from '../util/BtnModoGuiado/BtnModoGuiado'\r\nimport ErrorMessages from '../../util/validation-error-messages';\r\nimport to from '../../util/to';\r\nimport RecipeFilters from '../util/recipeFilters/recipeFilters';\r\nimport Field from '../util/field/Field';\r\nimport ExpresionesRegulares from '../../util/expresiones-regulares';\r\n\r\nclass PricesDrive extends Component {\r\n pricesList = [];\r\n\r\n constructor(props) {\r\n super(props);\r\n this.state = {\r\n pricesList: [],\r\n pagePricesList: [],\r\n filterText: \"\",\r\n priceList: null,\r\n showModal: false,\r\n removeModal: false,\r\n isLoading: false,\r\n activeList: [],\r\n\r\n //Filtros\r\n Caffenios: [],\r\n selectedOption: [],\r\n selectedOptionC: [],\r\n selectedOptionD: [],\r\n //filtros receta\r\n selectedRecipeTypesList: [],\r\n selectedPresentationsList: [],\r\n selectedMilksList: [],\r\n selectedGrainsList: [],\r\n selectedFlavorsList: [],\r\n selectedClassificationList: [],\r\n //actualizar masivo\r\n recipes: [],\r\n filterRecipes: [],\r\n showRecipeFilters: true,\r\n checkAll: false,\r\n buttonSelectAll: false,\r\n confirmModalPriceChange: false,\r\n enabledApply: false,\r\n priceMassive: null,\r\n };\r\n }\r\n\r\n componentWillMount() {\r\n this.setState({ isLoading: true });\r\n PriceDriveAPI.get()\r\n .then(response => {\r\n let state = { ...this.state };\r\n state.pricesList = response.data\r\n state.activeList = this.fncActiveList(response.data);\r\n this.setState(state, () => this.getDrives());\r\n\r\n this.pricesList = response.data;\r\n return RecipesAPI.getAll();\r\n }).then(response => {\r\n if (response.data) {\r\n this.setState({ recipes: response.data })\r\n }\r\n })\r\n .catch(err => {\r\n this.setState({ isLoading: false })\r\n if (err.response)\r\n toast.error(err.response.data.Message)\r\n else\r\n toast.error(ErrorMessages.SinConexion)\r\n });\r\n }\r\n\r\n fncActiveList = (listas) => {\r\n let state = this.state;\r\n let arrListActive = [];\r\n listas.map((lista) => {\r\n if (lista.Active) {\r\n arrListActive.push({ \"Key\": lista.PriceListId, \"Label\": lista.Description });\r\n }\r\n })\r\n return arrListActive;\r\n }\r\n\r\n /*Función para obtener estados ciudades y drives */\r\n getDrives = async () => {\r\n let err, caffenios;\r\n [err, caffenios] = await to(WarehouseAPI.getCaffenios());\r\n\r\n if (err) {\r\n this.setState({ isLoading: false })\r\n if (err.response)\r\n toast.error(err.response.data.Message)\r\n else\r\n toast.error(ErrorMessages.SinConexion)\r\n } else {\r\n this.setState({\r\n isLoading: false,\r\n Caffenios: caffenios.map(item => {\r\n item.value = item.StateId;\r\n item.label = item.State;\r\n return item;\r\n })\r\n })\r\n }\r\n }\r\n\r\n // Método encargado de recibir el texto en el input de búsqueda y filtrar los elementos en\r\n // la tabla \r\n handleSearchInput = (text) => {\r\n let pricesList = this.pricesList.filter(p => p.Description.toLowerCase().normalize(\"NFD\").replace(/[\\u0300-\\u036f]/g, \"\").includes(text.trim().toLowerCase().normalize(\"NFD\").replace(/[\\u0300-\\u036f]/g, \"\")));\r\n let state = this.state;\r\n state.filterText = text;\r\n state.pricesList = pricesList;\r\n this.setState(state);\r\n }\r\n\r\n /*\r\n * Funcion seleccionar o des seleccionar todos las lista de precios \r\n * de la pagina actual.\r\n */\r\n selectAllCheckBoxPage = () => {\r\n let state = { ...this.state };\r\n let _checkAll = !state.checkAll\r\n\r\n state.pagePricesList.forEach(priceDetail => {\r\n priceDetail.statusCheck = _checkAll\r\n let indexOri = state.pricesList.findIndex(item => item.PriceListId === priceDetail.PriceListId)\r\n state.pricesList[indexOri].statusCheck = _checkAll\r\n return priceDetail;\r\n })\r\n\r\n this.setState({\r\n priceMassive:null,\r\n pagePricesList: state.pagePricesList,\r\n pricesList: state.pricesList,\r\n checkAll: _checkAll,\r\n buttonSelectAll: state.pricesList.some(l => l.statusCheck)\r\n })\r\n }\r\n\r\n /*\r\n * Funcion que selecciona o des selecciona todas las \r\n * listas de precio de todas las paginas.\r\n */\r\n selectAllCheckBox = () => {\r\n let state = { ...this.state };\r\n state.checkAll = !state.checkAll\r\n state.buttonSelectAll = !state.buttonSelectAll;\r\n\r\n state.pricesList.forEach(priceDetail => {\r\n priceDetail.statusCheck = state.buttonSelectAll;\r\n return priceDetail;\r\n });\r\n\r\n this.setState({\r\n priceMassive : null,\r\n pricesList: state.pricesList,\r\n checkAll: state.checkAll,\r\n buttonSelectAll: state.buttonSelectAll\r\n })\r\n }\r\n\r\n /**Función para actualizar los parametros de búsqueda */\r\n handleSearchParamsChange = (field, value) => {\r\n let state = { ...this.state };\r\n state[field] = value;\r\n state.isLoading = true;\r\n\r\n this.setState(state, () => {\r\n if (this.timeout) clearTimeout(this.timeout)\r\n this.timeout = setTimeout(() => {\r\n let pricesList = this.pricesList.filter(p => {\r\n if (\r\n (this.state.selectedOption.length === 0 || this.state.selectedOption.some(dr => dr.idListaPrecio === p.PriceListId)) &&\r\n (this.state.selectedOptionC.length === 0 || this.state.selectedOptionC.some(dr => dr.idListaPrecio === p.PriceListId)) &&\r\n (this.state.selectedOptionD.length === 0 || this.state.selectedOptionD.some(dr => dr.idListaPrecio === p.PriceListId)) &&\r\n (this.state.filterText.length === 0 || p.Description.toLowerCase().normalize(\"NFD\").replace(/[\\u0300-\\u036f]/g, \"\").includes(this.state.filterText.trim().toLowerCase().normalize(\"NFD\").replace(/[\\u0300-\\u036f]/g, \"\")))\r\n ) {\r\n return p;\r\n }\r\n });\r\n this.setState({ isLoading: false, pricesList: pricesList });\r\n }, 800);\r\n });\r\n\r\n\r\n }\r\n\r\n /**Setea al state los valores de los filtros de recetas */\r\n handleSelectChange = (filters) => {\r\n let state = { ...this.state };\r\n\r\n state.selectedClassificationList = filters.selectedClassificationList && filters.selectedClassificationList.length > 0 ? filters.selectedClassificationList : [];\r\n state.selectedRecipeTypesList = filters.selectedRecipeTypesList && filters.selectedRecipeTypesList.length > 0 ? filters.selectedRecipeTypesList : [];\r\n state.selectedFlavorsList = filters.selectedFlavorsList && filters.selectedFlavorsList.length > 0 ? filters.selectedFlavorsList : [];\r\n state.selectedMilksList = filters.selectedMilksList && filters.selectedMilksList.length > 0 ? filters.selectedMilksList : [];\r\n state.selectedGrainsList = filters.selectedGrainsList && filters.selectedGrainsList.length > 0 ? filters.selectedGrainsList : [];\r\n state.selectedPresentationsList = filters.selectedPresentationsList && filters.selectedPresentationsList.length > 0 ? filters.selectedPresentationsList : [];\r\n\r\n state.enabledApply = (filters.selectedClassificationList && filters.selectedClassificationList.length > 0) ||\r\n (filters.selectedRecipeTypesList && filters.selectedRecipeTypesList.length > 0) ||\r\n (filters.selectedFlavorsList && filters.selectedFlavorsList.length > 0) ||\r\n (filters.selectedMilksList && filters.selectedMilksList.length > 0 )||\r\n (filters.selectedGrainsList && filters.selectedGrainsList.length > 0) ||\r\n (filters.selectedPresentationsList && filters.selectedPresentationsList.length > 0);\r\n\r\n this.setState(state);\r\n\r\n }\r\n\r\n /**\r\n * Funcion para validar la entrada de datos en el input\r\n * que modifica todos los precios de las recetas \r\n * selecionadas.\r\n */\r\n handleChange = (e) => {\r\n let state = { ...this.state };\r\n state.priceMassive = e.target.value;\r\n\r\n if (e.target.value == Math.floor(e.target.value)) {\r\n if (e.target.value < 0 || e.target.value > 9999999) {\r\n toast.error(\"El Precio debe ser mayor a 0 y menor a 9999999\");\r\n return;\r\n }\r\n } else {\r\n if (!this.isNumericDecimal(e.target.value, 2)) {\r\n toast.error(\"El Precio debe contenedor dos decimales solamente\");\r\n return;\r\n } else if (e.target.value < 0.00 || e.target.value > 9999999.99) {\r\n toast.error(\"El Precio debe ser mayor a 0.00 y menor a 9999999.99\");\r\n return;\r\n }\r\n }\r\n this.setState(state);\r\n }\r\n /**Valuda valor numerico */\r\n isNumericDecimal = (val, decimalPlaces) => {\r\n // If the last digit is a . then add a 0 before testing so if they type 25. it will be accepted\r\n var lastChar = val.substring(val.length - 1);\r\n if (lastChar == \".\") val = val + \"0\";\r\n\r\n var objRegExp = new RegExp(\"^\\\\s*-?(\\\\d+(\\\\.\\\\d{1,\" + decimalPlaces + \"})?|\\\\.\\\\d{1,\" + decimalPlaces + \"})\\\\s*$\", \"g\");\r\n if (decimalPlaces == -1)\r\n objRegExp = new RegExp(\"^\\\\s*-?(\\\\d+(\\\\.\\\\d{1,25})?|\\\\.\\\\d{1,25})\\\\s*$\", \"g\");\r\n\r\n return objRegExp.test(val);\r\n };\r\n\r\n /**\r\n * Funcion para actualizar masivamente el precio \r\n * de las recetas para los cambios de precio seleccionados.\r\n */\r\n updateMasive = () => {\r\n this.setState({ isLoading: true }, () => {\r\n let pricesList = this.state.pricesList.filter(i => {\r\n if (i.statusCheck) {\r\n i.completed = false\r\n return i;\r\n }\r\n });\r\n pricesList.forEach(item => {\r\n var data = {\r\n PriceListId: item.PriceListId,\r\n RecipeId: this.state.filterRecipes.map(r => { return r.RecipeId }),\r\n SalePrice: this.state.priceMassive\r\n }\r\n\r\n PriceDriveAPI.updateMasivePrices(data)\r\n .then(response => {\r\n item.completed = true;\r\n if (!pricesList.some(i => i.completed === false)) {\r\n this.setState({\r\n isLoading: false,\r\n filterRecipes: [],\r\n confirmModalPriceChange: false,\r\n priceMassive: null,\r\n selectedRecipeTypesList: [],\r\n selectedPresentationsList: [],\r\n selectedMilksList: [],\r\n selectedGrainsList: [],\r\n selectedFlavorsList: [],\r\n selectedClassificationList: [],\r\n enabledApply: false,\r\n checkAll: false,\r\n buttonSelectAll: false,\r\n pricesList:this.state.pricesList.map(i => {\r\n i.statusCheck=false;\r\n return i;\r\n })\r\n }, () => {\r\n toast.dismiss();\r\n toast.success(\"Listas de precio actualizadas.\")\r\n })\r\n }\r\n })\r\n .catch(error => {\r\n this.setState({\r\n isLoading: false,\r\n filterRecipes: [],\r\n confirmModalPriceChange: false,\r\n priceMassive: null\r\n }, () =>\r\n toast.error(\"Ha ocurrido un error al actualizar precios\"))\r\n });\r\n\r\n });\r\n });\r\n }\r\n\r\n /*\r\n * Funcion para saber si hay que mostrar\r\n * un switch y boton para aplicar cambios a las \r\n * recetas que hemos marcado. \r\n */\r\n showView = (index) => {\r\n \r\n let state = { ...this.state };\r\n\r\n state.pagePricesList[index].statusCheck = state.pagePricesList[index].statusCheck \r\n ? !state.pagePricesList[index].statusCheck : true;\r\n let indexOri = state.pricesList.findIndex(item => item.PriceListId === state.pagePricesList[index].PriceListId)\r\n state.pricesList[indexOri].statusCheck = state.pricesList[indexOri].statusCheck \r\n ? !state.pricesList[indexOri].statusCheck : true;\r\n \r\n \r\n\r\n this.setState({\r\n priceMassive: state.pricesList.some(p => p.statusCheck) ? state.priceMassive : null,\r\n pagePricesList: state.pagePricesList,\r\n pricesList: state.pricesList,\r\n \r\n })\r\n }\r\n\r\n create = () => {\r\n this.props.history.push({ pathname: '/lista-precios/nuevo', state: { pricesList: this.state.pricesList } });\r\n }\r\n\r\n edit = (priceList) => {\r\n priceList.Description = priceList.Description.trim();\r\n if (priceList.Description.length < 3) {\r\n toast.error(\"Descripción debe de tener más de 2 caracteres\");\r\n return;\r\n }\r\n\r\n this.setState({ isLoading: true });\r\n PriceDriveAPI.put(priceList).then(response => {\r\n let state = { ...this.state };\r\n state.pricesList[state.pricesList.findIndex(l => l.PriceListId === priceList.PriceListId)] = priceList;\r\n state.pagePricesList[state.pagePricesList.findIndex(l => l.PriceListId === priceList.PriceListId)] = priceList;\r\n this.pricesList[this.pricesList.findIndex(l => l.PriceListId === priceList.PriceListId)] = priceList;\r\n state.showModal = false;\r\n state.isLoading = false;\r\n this.setState(state, () => {\r\n toast.success(\"Datos actualizados\");\r\n });\r\n }).catch(err => {\r\n this.setState({ isLoading: false })\r\n if (err.response)\r\n toast.error(err.response.data.Message)\r\n else\r\n toast.error(ErrorMessages.SinConexion)\r\n })\r\n }\r\n\r\n render() {\r\n return (\r\n
    \r\n

    Lista de precios\r\n this.setState({ showModalInfoPricesList: !this.state.showModalInfoPricesList })}\r\n >\r\n

    \r\n
    \r\n
    \r\n
    \r\n
    \r\n
    \r\n{/*
    \r\n
    \r\n this.handleSearchParamsChange(\"filterText\", t)}\r\n itemName={'Lista de Precios'}\r\n placeholderText={\"Ingrese nombre de lista de precio\"}\r\n />\r\n
    \r\n
    */}\r\n\r\n this.handleSearchParamsChange(\"selectedOption\", value)}\r\n setCityFunc={(value) => this.handleSearchParamsChange(\"selectedOptionC\", value)}\r\n setDriveFunc={(value) => this.handleSearchParamsChange(\"selectedOptionD\", value)}\r\n create={() => this.create()}\r\n />\r\n
    \r\n
    \r\n
    \r\n
    \r\n {/* Filtrado de recetas */}\r\n {this.state.pricesList.some(i => i.statusCheck) &&\r\n
    \r\n
    \r\n
    \r\n
    \r\n Filtros de receta\r\n
    \r\n this.setState({ showRecipeFilters: !this.state.showRecipeFilters })}\r\n >\r\n
    \r\n
    \r\n \r\n
    \r\n this.setState({ showRecipeFilters: !this.state.showRecipeFilters })}>\r\n \r\n \r\n
    \r\n
    \r\n
    \r\n
    \r\n { this.handleSelectChange(objFilters) }}\r\n />\r\n\r\n {this.state.enabledApply &&\r\n
    \r\n
    \r\n
    \r\n
    \r\n
    \r\n \r\n this.handleChange(e)}\r\n onKeyPress={(e) => {\r\n const keyCode = e.keyCode || e.which;\r\n const keyValue = String.fromCharCode(keyCode);\r\n if (ExpresionesRegulares.ErrorInputNumDecimal.test(keyValue) || e.target.value.length >= e.target.getAttribute('maxLength'))\r\n e.preventDefault();\r\n }}\r\n onPaste={(e) => {\r\n if (ExpresionesRegulares.ErrorInputNumDecimal.test(e.clipboardData.getData(\"Text\"))\r\n || (/\\./.test(e.target.value) && /\\./.test(e.clipboardData.getData(\"Text\")))) {\r\n e.preventDefault();\r\n }\r\n }}\r\n />\r\n \r\n
    \r\n
    \r\n \r\n {\r\n if (this.state.priceMassive) {\r\n let filterRecipes = this.state.recipes.filter(r => r.Active\r\n && (this.state.selectedClassificationList.length === 0 || this.state.selectedClassificationList.includes(r.ClassificationId))\r\n && (this.state.selectedRecipeTypesList.length === 0 || this.state.selectedRecipeTypesList.includes(r.RecipeTypeId))\r\n && (this.state.selectedFlavorsList.length === 0 || this.state.selectedFlavorsList.includes(r.FlavorTypeId))\r\n && (this.state.selectedMilksList.length === 0 || this.state.selectedMilksList.includes(r.MilkTypeId))\r\n && (this.state.selectedGrainsList.length === 0 || this.state.selectedGrainsList.includes(r.GrainTypeId))\r\n && (this.state.selectedPresentationsList.length === 0 || this.state.selectedPresentationsList.includes(r.PresentationId))\r\n );\r\n if(filterRecipes.length > 0 ){\r\n this.setState({ confirmModalPriceChange: true, filterRecipes: filterRecipes })\r\n }else{\r\n toast.dismiss();\r\n toast.error(\"No hay recetas que aplique a los criterios seleccionados.\")\r\n } \r\n }\r\n else {\r\n toast.dismiss();\r\n toast.error(\"Debe ingresar precio.\")\r\n }\r\n }}>\r\n \r\n \r\n \r\n Aplicar\r\n \r\n \r\n
    \r\n\r\n
    \r\n
    \r\n }\r\n
    \r\n
    \r\n
    \r\n
    \r\n }\r\n
    \r\n\r\n\r\n
    \r\n
    \r\n \r\n\r\n {this.state.pricesList.length != 0\r\n ? this.setState({ showModal: true, priceList: priceList })}\r\n remove={(priceList) => this.setState({ removeModal: true, priceList: priceList })}\r\n rowClickable={true}\r\n details={(priceList) => this.props.history.push(`/lista-precios/${priceList.PriceListId}/detalle`)}\r\n checkbox={true}\r\n checkAll={this.state.checkAll}\r\n selectAllCheck={this.selectAllCheckBoxPage}\r\n showView={this.showView}\r\n />\r\n : }\r\n\r\n this.setState({ pagePricesList: pricesList })} />\r\n\r\n\r\n
    \r\n
    \r\n {this.state.showModal &&\r\n this.setState({ showModal: false, priceList: null })}\r\n >\r\n \r\n \r\n }\r\n {this.state.removeModal && this.remove(this.state.priceList)}\r\n cancel={() => this.setState({ removeModal: false, priceList: null })}\r\n modalTitle={\"Eliminar Lista de Precios\"}\r\n />}\r\n {this.state.confirmModalPriceChange &&\r\n this.updateMasive()}\r\n modalTitle={`Confirmar recetas a actualizar $${this.state.priceMassive}`}\r\n cancel={() => this.setState({ confirmModalPriceChange: false, filterRecipes: [] })}\r\n modalBody={\r\n
    \r\n \r\n this.setState({ pageRecipesList: recipes })} />\r\n
    \r\n\r\n }\r\n />\r\n }\r\n\r\n {/* Modal para visualizar la información del módulo */}\r\n {this.state.showModalInfoPricesList &&\r\n this.setState({ showModalInfoPricesList: false })}\r\n >\r\n
    \r\n Cada Lista de precios esta conformada por un conjunto de recetas, su función es definir un precio para cada producto que conforme la lista de precio.\r\n
    \r\n
    \r\n Las listas de precios son asignadas a los puntos de venta, un Drive solo puede tener una lista de precio asignada, los precios dados de alta serán los precios de los productos en la caja, pantalla y tablet del punto de venta.\r\n
    \r\n
    \r\n En el módulo se podrá realizar:\r\n
      \r\n
    1. Búsquedas ingresando textualmente el Nombre de una Lista de Precios o filtrando por punto de venta.
    2. \r\n
    3. Cambios de precio masivo.
      \r\n
      \r\n
      \r\n NOTA IMPORTANTE: \r\nPara visualizar los filtros de recetas y actualizar precios de recetas de manera masiva es importante seleccionar una o varias Listas de Precios.\r\n
      \r\n \r\n
      \r\n
    4. \r\n
    \r\n
    \r\n \r\n }\r\n\r\n \r\n \r\n
    \r\n );\r\n }\r\n\r\n}\r\n\r\nexport default PricesDrive;","import React, { Component } from 'react';\r\n//import TextField from '../util/textfield/TextField';\r\nimport PropTypes from 'prop-types';\r\nimport {toast} from 'react-toastify';\r\nimport PriceListForm from './PriceListForm';\r\nimport PriceDriveAPI from '../../services/PriceDrive';\r\nimport '../cssComponents.css';\r\nimport ErrorMessages from '../../util/validation-error-messages';\r\nimport Loading from '../util/loading/Loading';\r\n\r\nclass NewPriceList extends Component {\r\n constructor(props){\r\n super(props);\r\n this.state = {\r\n pricesList:[],\r\n priceList: {...this.props.priceList},\r\n isLoading: false\r\n };\r\n }\r\n componentDidMount(){\r\n if (!this.props.location.state) {\r\n this.props.history.push(`/lista-precios`);\r\n return;\r\n }\r\n this.setState({ pricesList: this.props.location.state.pricesList })\r\n }\r\n\r\n save = (priceList) => {\r\n priceList.Description = priceList.Description.trim();\r\n if(priceList.Description.length < 3){ \r\n toast.error(\"Descripción debe de tener más de 2 caracteres\");\r\n return;\r\n }\r\n \r\n this.setState({isLoading: true}, () => {\r\n PriceDriveAPI.post(priceList).then(response => {\r\n this.setState({isLoading: false})\r\n toast.success(\"Lista de Precios creada\");\r\n this.props.history.goBack();\r\n }).catch(err => {\r\n this.setState({isLoading: false})\r\n if(err.response)\r\n toast.error(err.response.data.Message)\r\n else\r\n toast.error(ErrorMessages.SinConexion)\r\n });\r\n })\r\n }\r\n\r\n render() {\r\n return (\r\n
    \r\n
    \r\n
    \r\n
    \r\n \r\n {this.props.history.goBack()}} className=\"fa fa-arrow-left\">\r\n \r\n Nueva Lista de Precios\r\n
    \r\n
    \r\n
    \r\n \r\n
    \r\n
    \r\n\r\n \r\n
    \r\n );\r\n }\r\n}\r\n\r\n// Definición de los tipos y su dependencia de las distintas props que recibe el componente.\r\nNewPriceList.propTypes = {\r\n priceList: PropTypes.object,\r\n isEditing: PropTypes.bool\r\n}\r\n\r\n// Definición de los valores por default de las props en caso de no ser recibidas por el padre.\r\nNewPriceList.defaultProps = {\r\n isEditing: false,\r\n priceList: {\r\n Description: \"\",\r\n Active: false\r\n }\r\n}\r\n\r\nexport default NewPriceList;\r\n","import React, { Component } from 'react';\r\nimport TextField from '../util/textfield/TextField';\r\nimport Field from '../util/field/Field';\r\nimport Loading from '../util/loading/Loading';\r\n\r\nclass PriceListFormDetail extends Component {\r\n\r\n constructor(props){\r\n super(props);\r\n this.state = {\r\n priceDetail: {...this.props.priceDetail},\r\n isEditing: false,\r\n isLoading: false\r\n }\r\n }\r\n\r\n componentDidMount(){\r\n }\r\n\r\n handleChange = (e) => {\r\n let state = {...this.state};\r\n state.priceDetail[e.target.name] = e.target.value;\r\n this.setState(state);\r\n }\r\n\r\n render() {\r\n return (\r\n
    \r\n this.handleChange(e)}\r\n onKeyPress= {(event) => {\r\n const keyCode = event.keyCode || event.which;\r\n const keyValue = String.fromCharCode(keyCode);\r\n if (/\\+|-|e|E|\\./.test(keyValue) || event.target.value.length >= event.target.getAttribute('maxLength'))\r\n event.preventDefault();\r\n }\r\n }/>\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n
    \r\n
    \r\n this.props.save(this.state.priceDetail)}>\r\n Guardar\r\n \r\n
    \r\n
    \r\n
    \r\n );\r\n }\r\n}\r\n\r\nPriceListFormDetail.defaultProps = {\r\n isEditing: false,\r\n isLoading: false,\r\n priceDetail: {\r\n Description: \"\",\r\n SalePrice: 0.0,\r\n ClassificationName: \"\",\r\n PresentationName: \"\",\r\n FlavorTypeName: \"\",\r\n RecipeTypeName: \"\",\r\n GrainTypeName: \"\",\r\n MilkTypeName: \"\"\r\n }\r\n}\r\n\r\nexport default PriceListFormDetail;\r\n","import React, { Component } from 'react';\r\nimport PriceDriveAPI from '../../services/PriceDrive';\r\nimport ClasificacionesAPI from '../../services/Classification';\r\nimport PresentationsAPI from '../../services/Presentations';\r\nimport FlavorsAPI from '../../services/Flavor';\r\nimport MilksAPI from '../../services/Milk';\r\nimport GrainsAPI from '../../services/Grain';\r\nimport RecipesTypesAPI from '../../services/RecipeType';\r\nimport to from '../../util/to';\r\nimport {toast} from 'react-toastify';\r\nimport Field from '../util/field/Field';\r\nimport TableTemplate from '../util/tabletemplate/TableTemplate';\r\nimport Modal from '../util/modal/Modal';\r\nimport Dropdown from '../util/dropdown/Dropdown';\r\nimport SearchForm from \"../util/searchform/SearchForm\";\r\nimport NoItems from \"../util/noitems/NoItems\";\r\nimport AcceptModal from '../util/acceptModal/AcceptModal';\r\nimport Pagination from '../util/pagination/Pagination';\r\nimport Loading from '../util/loading/Loading';\r\nimport PriceListFormDetail from '../pricesDrives/PriceListFormDetail';\r\nimport Select from 'react-select';\r\nimport ExpresionesRegulares from '../../util/expresiones-regulares';\r\nimport RecipeFilters from '../util/recipeFilters/recipeFilters';\r\n\r\nclass PricesDetail extends Component {\r\n priceListDetailsFull = [];\r\n priceListDetails = [];\r\n estatusReceta = {\r\n Todos: 1,\r\n ConPrecio: 2,\r\n SinPrecio: 3\r\n }\r\n\r\n // Variables donde se almacenaran los valores seleccionados en el select multi\r\n tempRecipeTypesList;\r\n tempPresentationList;\r\n tempMilkList;\r\n tempGrainList;\r\n tempFlavorsList;\r\n tempClassificationList;\r\n\r\n constructor(props){\r\n super(props);\r\n this.state = {\r\n priceList: {\r\n Description: \"\",\r\n NombreSegmento: \"\"\r\n },\r\n filters: {\r\n ClassificationId: 0,\r\n PresentationId: 0,\r\n FlavorTypeId: 0,\r\n RecipeTypeId: 0,\r\n MilkTypeId: 0,\r\n GrainTypeId: 0\r\n },\r\n priceListDetails: [],\r\n pagePriceListDetails: [],\r\n filterText: \"\",\r\n classifications: [],\r\n presentations: [],\r\n flavors: [],\r\n recipeTypes: [],\r\n milks: [],\r\n grains: [],\r\n isLoading: false,\r\n dataLoaded: false,\r\n showModal: false,\r\n removeModal: false,\r\n checkAll: false,\r\n updateMasive: false,\r\n confirmModalUpdatePrice: false,\r\n priceMassive: 0,\r\n buttonSelectAll: false,\r\n // Variables sonde se almacenaran los criterios de búsqueda definitivos\r\n recipeTypeList: [],\r\n selectedRecipeTypesList: [],\r\n presentationsList: [],\r\n selectedPresentationsList: [],\r\n milksList: [],\r\n selectedMilksList: [],\r\n grainsList: [],\r\n selectedGrainsList: [],\r\n flavorsList: [],\r\n selectedFlavorsList: [],\r\n classificationList: [],\r\n selectedClassificationList: [],\r\n selectedPricesDetail: [],\r\n selectedSegmentationList: [],\r\n selectedEstatus: this.estatusReceta.Todos, //Booleano para filtrar las recetas según su precio\r\n };\r\n }\r\n\r\n componentWillMount(){\r\n this.setState({isLoading: true});\r\n if(this.props.match.params.id){\r\n PriceDriveAPI.getPrices(this.props.match.params.id).then(response => {\r\n \r\n\r\n this.priceListDetailsFull = response.data;\r\n var info = response.data.map((item, index) => {\r\n return { \r\n PriceDetailId: index,\r\n PriceListId: item.PriceListId,\r\n RecipeId: item.RecipeId,\r\n SalePrice: item.SalePrice,\r\n ClassificationId: item.Recipe.ClassificationId,\r\n PresentationId: item.Recipe.PresentationId,\r\n FlavorTypeId: item.Recipe.FlavorTypeId,\r\n RecipeTypeId: item.Recipe.RecipeTypeId,\r\n MilkTypeId: item.Recipe.MilkTypeId,\r\n GrainTypeId: item.Recipe.GrainTypeId,\r\n Description: item.Recipe.Description,\r\n NombreSegmento: item.Recipe.NombreSegmento,\r\n idSegmento: item.Recipe.idSegmento,\r\n statusCheck:false//agregamos un estado para cada fila para saber si ha sido seleccionado no\r\n };\r\n });\r\n\r\n this.priceListDetails = info;\r\n this.setState({priceListDetails: info}, () => this.getData());\r\n\r\n }).catch(err => toast.error(err.response.data));\r\n }else{\r\n this.priceListDetailsFull = [];\r\n this.setState({\r\n priceListDetails: []\r\n }, () => this.getData());\r\n }\r\n }\r\n\r\n\r\n getData = async () => {\r\n let err, classifications, presentations, flavors, milks, grains, recipeTypes, priceList;\r\n [err, classifications] = await to(ClasificacionesAPI.getAll());\r\n [err, presentations] = await to(PresentationsAPI.getAll());\r\n [err, flavors] = await to(FlavorsAPI.getAll());\r\n [err, milks] = await to(MilksAPI.getAll());\r\n [err, grains] = await to(GrainsAPI.getAll());\r\n [err, recipeTypes] = await to(RecipesTypesAPI.getAll());\r\n [err, priceList] = await to(PriceDriveAPI.getById(this.props.match.params.id));\r\n\r\n let tempClassificationList = [];\r\n classifications.map(obj => {\r\n tempClassificationList.push({ value: obj.ClassificationId, label: obj.ShortName })\r\n })\r\n tempClassificationList.sort(this.compare); // Ordenar los labels\r\n\r\n let temp = [];\r\n recipeTypes.map(obj => {\r\n if (obj.RecipeName) {\r\n temp.push({ value: obj.RecipeTypeId, label: obj.RecipeName })\r\n } else {\r\n temp.push({ value: obj.RecipeTypeId, label: obj.Description })\r\n }\r\n })\r\n temp.sort(this.compare); // Ordenar los labesl para elegir\r\n\r\n let tempFlavorsList = [];\r\n flavors.map(obj => {\r\n tempFlavorsList.push({ value: obj.FlavorTypeId, label: obj.Name })\r\n })\r\n tempFlavorsList.sort(this.compare); // Ordenar los labels \r\n\r\n let tempGrainList = [];\r\n grains.map(obj => {\r\n tempGrainList.push({ value: obj.GrainTypeId, label: obj.Description })\r\n })\r\n tempGrainList.sort(this.compare); // Ordenar los labels\r\n\r\n let tempMilkList = [];\r\n milks.map(obj => {\r\n tempMilkList.push({ value: obj.MilkTypeId, label: obj.Description })\r\n })\r\n tempMilkList.sort(this.compare); // Ordenar los labels\r\n\r\n let tempPresentationList = [];\r\n presentations.map(obj => {\r\n tempPresentationList.push({ value: obj.PresentationId, label: obj.Name })\r\n })\r\n tempPresentationList.sort(this.compare); // Ordenar los labels\r\n\r\n this.setState({\r\n classificationList: tempClassificationList,\r\n recipeTypeList: temp,\r\n flavorsList: tempFlavorsList,\r\n grainsList: tempGrainList,\r\n milksList: tempMilkList,\r\n presentationsList: tempPresentationList,\r\n priceList: priceList,\r\n dataLoaded: true,\r\n isLoading: false,\r\n classifications: classifications,\r\n presentations: presentations,\r\n flavors: flavors,\r\n milks: milks,\r\n grains: grains,\r\n recipeTypes: recipeTypes,\r\n })\r\n }\r\n\r\n handleDropdownChange = (index, itemName, propName) => {\r\n if(index != 0){\r\n let item = this.state[itemName][index - 1];\r\n let state = {...this.state};\r\n state.filters[propName] = item[propName];\r\n this.setState(state, () => this.filterDataOnPages());\r\n }else{\r\n let state = {...this.state};\r\n state.filters[propName] = 0;\r\n this.setState(state, () => this.filterDataOnPages());\r\n }\r\n }\r\n\r\n filterDataOnPages = () => {\r\n \r\n let details = this.priceListDetails;\r\n\r\n if(this.state.filters.ClassificationId) {\r\n details = details.filter(d => d.ClassificationId === this.state.filters.ClassificationId);\r\n }\r\n\r\n if(this.state.filters.PresentationId) {\r\n details = details.filter(d => d.PresentationId === this.state.filters.PresentationId);\r\n }\r\n\r\n if(this.state.filters.FlavorTypeId) {\r\n details = details.filter(d => d.FlavorTypeId === this.state.filters.FlavorTypeId);\r\n }\r\n\r\n if(this.state.filters.RecipeTypeId) {\r\n details = details.filter(d => d.RecipeTypeId === this.state.filters.RecipeTypeId);\r\n }\r\n\r\n if(this.state.filters.MilkTypeId) {\r\n details = details.filter(d => d.MilkTypeId === this.state.filters.MilkTypeId);\r\n }\r\n\r\n if(this.state.filters.GrainTypeId) {\r\n details = details.filter(d => d.GrainTypeId === this.state.filters.GrainTypeId);\r\n }\r\n\r\n if(this.state.filterText) {\r\n details = details.filter(d => d.Description.toLowerCase().includes(this.state.filterText.trim().toLowerCase()));\r\n }\r\n\r\n details.map(item=>{\r\n if(item.statusCheck){\r\n item.statusCheck = false;\r\n } \r\n });\r\n\r\n this.setState({priceListDetails: details, buttonSelectAll: false});\r\n }\r\n\r\n // Método encargado de recibir el texto en el input de búsqueda y filtrar los elementos en\r\n // la tabla \r\n handleSearchInput = (text) => {\r\n\r\n let state = {...this.state};\r\n state.filterText = text;\r\n this.setState(state, this.handleSearchMultipleFieldInput);\r\n }\r\n\r\n showDialogEditPrice = (priceDetail) => {\r\n let state = this.state;\r\n\r\n priceDetail.ClassificationName = state.classifications[state.classifications.findIndex(c => c.ClassificationId === priceDetail.ClassificationId)].Name;\r\n priceDetail.PresentationName = state.presentations[state.presentations.findIndex(p => p.PresentationId === priceDetail.PresentationId)].Name;\r\n priceDetail.FlavorTypeName = state.flavors[state.flavors.findIndex(f => f.FlavorTypeId === priceDetail.FlavorTypeId)].Name;\r\n priceDetail.RecipeTypeName = state.recipeTypes[state.recipeTypes.findIndex(rt => rt.RecipeTypeId === priceDetail.RecipeTypeId)].Description;\r\n priceDetail.GrainTypeName = state.grains[state.grains.findIndex(g => g.GrainTypeId === priceDetail.GrainTypeId)].Description;\r\n priceDetail.MilkTypeName = state.milks[state.milks.findIndex(m => m.MilkTypeId === priceDetail.MilkTypeId)].Description;;\r\n\r\n this.setState({\r\n showModal: true, \r\n priceDetail: priceDetail\r\n });\r\n }\r\n\r\n edit = (priceDetail) => {\r\n\r\n if(!priceDetail.SalePrice) {\r\n toast.error(\"Debes indicar el Precio de la Receta\");\r\n return;\r\n }\r\n\r\n if(isNaN(priceDetail.SalePrice)) {\r\n toast.error(\"El Precio indicado debe ser númerico\");\r\n return;\r\n }\r\n\r\n if (priceDetail.SalePrice == Math.floor(priceDetail.SalePrice)) {\r\n if(priceDetail.SalePrice < 0 || priceDetail.SalePrice > 9999999) {\r\n toast.error(\"El Precio debe ser mayor a 0 y menor a 9999999\");\r\n return;\r\n }\r\n } else {\r\n if ( !this.isNumericDecimal(priceDetail.SalePrice, 2) ) {\r\n toast.error(\"El Precio debe contenedor dos decimales solamente\");\r\n return;\r\n }else if(priceDetail.SalePrice < 0.00 || priceDetail.SalePrice > 9999999.99) {\r\n toast.error(\"El Precio debe ser mayor a 0.00 y menor a 9999999.99\");\r\n return;\r\n }\r\n }\r\n \r\n this.setState({isLoading: true, showModal: false});\r\n\r\n PriceDriveAPI.updatePrice(priceDetail).then(response => {\r\n \r\n let state = {...this.state};\r\n state.priceListDetails[state.priceListDetails.findIndex(pld => pld.PriceDetailId === priceDetail.PriceDetailId)] = priceDetail;\r\n state.pagePriceListDetails[state.pagePriceListDetails.findIndex(pld =>pld.PriceDetailId === priceDetail.PriceDetailId)] = priceDetail;\r\n this.priceListDetails[this.priceListDetails.findIndex(pld =>pld.PriceDetailId === priceDetail.PriceDetailId)] = priceDetail;\r\n state.showModal = false;\r\n state.isLoading = false;\r\n this.setState(state, () => {\r\n toast.success(\"Precio actualizado correctamente\");\r\n });\r\n }).catch(err => {\r\n let state = {...this.state};\r\n state.showModal = false;\r\n state.isLoading = false;\r\n this.setState(state); \r\n toast.error(\"Ocurrió un error al actualizar el Precio de la Receta\");\r\n });\r\n }\r\n\r\n isNumericDecimal = (val, decimalPlaces) => {\r\n // If the last digit is a . then add a 0 before testing so if they type 25. it will be accepted\r\n var lastChar = val.substring(val.length - 1);\r\n if (lastChar == \".\") val = val + \"0\";\r\n \r\n var objRegExp = new RegExp(\"^\\\\s*-?(\\\\d+(\\\\.\\\\d{1,\" + decimalPlaces + \"})?|\\\\.\\\\d{1,\" + decimalPlaces + \"})\\\\s*$\", \"g\");\r\n if (decimalPlaces == -1)\r\n objRegExp = new RegExp(\"^\\\\s*-?(\\\\d+(\\\\.\\\\d{1,25})?|\\\\.\\\\d{1,25})\\\\s*$\", \"g\");\r\n \r\n return objRegExp.test(val); \r\n };\r\n\r\n /*\r\n * Funcion seleccionar o des seleccionar todos las recetas \r\n * de la pagina actual.\r\n */\r\n selectAllCheckBoxPage = () => {\r\n let _checkAll = !this.state.checkAll\r\n let _selectedPricesDetail = [...this.state.selectedPricesDetail];\r\n let _pricesDetails = this.state.pagePriceListDetails\r\n\r\n _pricesDetails.forEach(priceDetail => {\r\n let indexPricesDetail = _selectedPricesDetail.findIndex(item => item.PriceDetailId === priceDetail.PriceDetailId)\r\n priceDetail.statusCheck = _checkAll\r\n if(_checkAll){\r\n if(indexPricesDetail === -1) _selectedPricesDetail.push(priceDetail)\r\n }else{\r\n if(indexPricesDetail !== -1) _selectedPricesDetail.splice(indexPricesDetail, 1)\r\n }\r\n })\r\n\r\n this.setState({\r\n selectedPricesDetail: _selectedPricesDetail, \r\n updateMasive: _selectedPricesDetail.length > 0,\r\n checkAll: _checkAll,\r\n buttonSelectAll: _selectedPricesDetail.length === this.state.priceListDetails.length\r\n })\r\n }\r\n\r\n /*\r\n * Funcion para saber si hay que mostrar\r\n * un switch y boton para aplicar cambios a las \r\n * recetas que hemos marcado. \r\n */\r\n showView = (index) => {\r\n let _selectedPricesDetail = [...this.state.selectedPricesDetail];\r\n let indexPricesDetail = this.state.selectedPricesDetail.findIndex(id => id.PriceDetailId === this.state.pagePriceListDetails[index].PriceDetailId)\r\n if (indexPricesDetail === -1) {\r\n // Meter todo el objeto al arreglo de seleccionados\r\n _selectedPricesDetail.push(this.state.pagePriceListDetails[index])\r\n } else {\r\n _selectedPricesDetail.splice(indexPricesDetail, 1)\r\n }\r\n\r\n let counter = 0; // variable para comparar los elementos seleccionados en la pagina con la cantidad de elementos por pagina\r\n this.state.pagePriceListDetails.map(obj => {\r\n if (obj.statusCheck) counter++\r\n })\r\n \r\n this.setState({\r\n selectedPricesDetail: _selectedPricesDetail, \r\n updateMasive: _selectedPricesDetail.length > 0,\r\n buttonSelectAll: _selectedPricesDetail.length === this.state.priceListDetails.length,\r\n checkAll: counter === this.state.pagePriceListDetails.length\r\n })\r\n }\r\n\r\n /*\r\n * Funcion que selecciona o des selecciona todas las \r\n * recetas de todas las paginas.\r\n */\r\n selectAllCheckBox = () => {\r\n let _selectedPricesDetail = [...this.state.selectedPricesDetail]\r\n let _pricesDetails = this.state.priceListDetails\r\n let _buttonSelectAll = !this.state.buttonSelectAll;\r\n\r\n _pricesDetails.forEach(priceDetail => {\r\n // Ver si el elemento ya esta en la lista de seleccioandos\r\n let indexPricesDetail = _selectedPricesDetail.findIndex(item => item.PriceDetailId === priceDetail.PriceDetailId)\r\n\r\n // Meter el elemento a la lista si no estaba previamente\r\n if (_buttonSelectAll && indexPricesDetail === -1) {\r\n _selectedPricesDetail.push(priceDetail)\r\n // Sacar al elemento de la lista si ya estaba\r\n } else if (!_buttonSelectAll && indexPricesDetail !== -1) {\r\n _selectedPricesDetail.splice(indexPricesDetail, 1)\r\n }\r\n priceDetail.statusCheck = _buttonSelectAll;\r\n })\r\n\r\n let _checkAll = _buttonSelectAll;\r\n\r\n this.setState({\r\n selectedPricesDetail: _selectedPricesDetail, \r\n updateMasive: _selectedPricesDetail.length > 0,\r\n checkAll: _checkAll,\r\n buttonSelectAll: _buttonSelectAll\r\n })\r\n }\r\n\r\n /**\r\n * Funcion para validar la entrada de datos en el input\r\n * que modifica todos los precios de las recetas \r\n * selecionadas.\r\n */\r\n handleChange = (e) => {\r\n let state = {...this.state};\r\n state.priceMassive = e.target.value;\r\n \r\n if (e.target.value == Math.floor(e.target.value)) {\r\n if(e.target.value < 0 || e.target.value > 9999999) {\r\n toast.error(\"El Precio debe ser mayor a 0 y menor a 9999999\");\r\n return;\r\n }\r\n } else {\r\n if ( !this.isNumericDecimal(e.target.value, 2) ) {\r\n toast.error(\"El Precio debe contenedor dos decimales solamente\");\r\n return;\r\n }else if(e.target.value < 0.00 || e.target.value > 9999999.99) {\r\n toast.error(\"El Precio debe ser mayor a 0.00 y menor a 9999999.99\");\r\n return;\r\n }\r\n }\r\n this.setState(state);\r\n } \r\n\r\n /**\r\n * Funcion para actualizar masivamente el precio \r\n * de las recetas seleccionadas.\r\n */\r\n updateMasive = () => {\r\n this.setState({isLoading: true, confirmModalUpdatePrice:false});\r\n let recetas = [];\r\n\r\n // Se guardan las recetas seleccionadas\r\n this.state.selectedPricesDetail.map(obj => {\r\n obj.SalePrice = this.state.priceMassive;\r\n recetas.push(obj)\r\n })\r\n\r\n // Mandamos las recetas al endpoint \r\n PriceDriveAPI.updatePrices(recetas).then(response => {\r\n let state = {...this.state};\r\n this.cleanCheckBoxs();\r\n state.showModal = false;\r\n state.isLoading = false;\r\n state.priceMassive = 0;\r\n state.updateMasive = false;\r\n state.checkAll = false\r\n if(state.buttonSelectAll) {\r\n state.buttonSelectAll = false;\r\n }\r\n state.selectedPricesDetail = [];\r\n this.setState(state, () => {\r\n toast.success(\"Precios actualizados correctamente\");\r\n });\r\n }).catch(err => {\r\n let state = {...this.state};\r\n state.showModal = false;\r\n state.isLoading = false;\r\n this.setState(state); \r\n toast.error(\"Ocurrió un error al actualizar los precios\");\r\n });\r\n }\r\n /**\r\n * Funcion encargada de des seleccionar los checkbox\r\n */\r\n cleanCheckBoxs = () =>{\r\n this.state.priceListDetails.map(item=>{\r\n if(item.statusCheck){\r\n item.statusCheck = false\r\n } \r\n });\r\n }\r\n\r\n /**\r\n * Funcion para ordenar lexicograficamente\r\n * @param objA. primer operando\r\n * @param objB. segundo operando\r\n */\r\n compare = (objA, objB) => {\r\n // Use toUpperCase() to ignore character casing\r\n const labelA = objA.label.toUpperCase();\r\n const labelB = objB.label.toUpperCase();\r\n\r\n let comparison = 0;\r\n if (labelA > labelB) {\r\n comparison = 1;\r\n } else if (labelA < labelB) {\r\n comparison = -1;\r\n }\r\n return comparison;\r\n }\r\n\r\n /**\r\n *Realizar el filtrado sobre las recetas para desplegar solo los elementos\r\n *que cumplen con las caracteristicas que el usuario ingreso.\r\n * \r\n *@param: nada\r\n *@return: nada\r\n */\r\n handleSearchMultipleFieldInput = () => {\r\n let priceListDetails = [...this.priceListDetails]\r\n switch (this.state.selectedEstatus) {\r\n case this.estatusReceta.ConPrecio:\r\n priceListDetails = priceListDetails.filter(d => d.SalePrice > 0);\r\n break;\r\n \r\n case this.estatusReceta.SinPrecio:\r\n priceListDetails = priceListDetails.filter(d => d.SalePrice <= 0);\r\n break;\r\n }\r\n\r\n priceListDetails = priceListDetails.filter(\r\n priceListDetail => (\r\n (this.state.selectedRecipeTypesList.length > 0 ?\r\n this.state.selectedRecipeTypesList.includes(priceListDetail.RecipeTypeId) :\r\n true) &&\r\n (this.state.selectedFlavorsList.length > 0 ?\r\n this.state.selectedFlavorsList.includes(priceListDetail.FlavorTypeId) :\r\n true) &&\r\n (this.state.selectedPresentationsList.length > 0 ?\r\n this.state.selectedPresentationsList.includes(priceListDetail.PresentationId) :\r\n true) &&\r\n (this.state.selectedMilksList.length > 0 ?\r\n this.state.selectedMilksList.includes(priceListDetail.MilkTypeId) :\r\n true) &&\r\n (this.state.selectedGrainsList.length > 0 ?\r\n this.state.selectedGrainsList.includes(priceListDetail.GrainTypeId) :\r\n true) &&\r\n (this.state.selectedClassificationList.length > 0 ?\r\n this.state.selectedClassificationList.includes(priceListDetail.ClassificationId) :\r\n true)&&\r\n (this.state.selectedSegmentationList.length > 0 ?\r\n this.state.selectedSegmentationList.includes(priceListDetail.idSegmento) :\r\n true )&&\r\n (this.state.filterText.trim() !== '' ?\r\n (priceListDetail.ShortName ? priceListDetail.ShortName.toLowerCase().normalize(\"NFD\").replace(/[\\u0300-\\u036f]/g, \"\").includes(this.state.filterText.trim().toLowerCase().normalize(\"NFD\").replace(/[\\u0300-\\u036f]/g, \"\")) : false || priceListDetail.Description.toLowerCase().normalize(\"NFD\").replace(/[\\u0300-\\u036f]/g, \"\").includes(this.state.filterText.trim().toLowerCase().normalize(\"NFD\").replace(/[\\u0300-\\u036f]/g, \"\")))\r\n : true)\r\n )\r\n );\r\n let state = this.state;\r\n state.priceListDetails = priceListDetails;\r\n state.priceListDetails.map(obj => {\r\n obj.statusCheck = false;\r\n })\r\n state.selectedPricesDetail = []\r\n state.buttonSelectAll = false;\r\n this.setState(state);\r\n }\r\n\r\n /**\r\n *Modificar la lista de IDs con los que el usuario ha seleccionado. Aplica sobre las clasificaciones.\r\n * \r\n *@param: arr: arreglo de valores que crea el select multi de react\r\n *@return: nada\r\n */\r\n handleClassificationChange = (arr) => {\r\n let state = { ...this.state }\r\n let tempClassificationList = [];\r\n arr.map(obj => {\r\n tempClassificationList.push(obj.value);\r\n })\r\n\r\n state.selectedClassificationList = tempClassificationList;\r\n state.selectedRecipes = [];\r\n\r\n this.setState(state, () => {\r\n this.handleSearchMultipleFieldInput();\r\n });\r\n }\r\n\r\n /**\r\n *Modificar la lista de IDs con los que el usuario ha seleccionado. Aplica sobre los tipos de receta\r\n * \r\n *@param: arr: arreglo de valores que crea el select multi de react\r\n *@return: nada\r\n */\r\n handleRecipeTypeChange = (arr) => {\r\n let state = { ...this.state }\r\n let tempSelectedRecipeTypesList = [];\r\n arr.map(obj => {\r\n tempSelectedRecipeTypesList.push(obj.value);\r\n })\r\n\r\n state.selectedRecipeTypesList = tempSelectedRecipeTypesList;\r\n state.selectedRecipes = [];\r\n\r\n this.setState(state, () => {\r\n this.handleSearchMultipleFieldInput();\r\n });\r\n }\r\n\r\n /**\r\n *Modificar la lista de IDs con los que el usuario ha seleccionado. Aplica sobre los tipos de sabores\r\n * \r\n *@param: arr: arreglo de valores que crea el select multi de react\r\n *@return: nada\r\n */\r\n handleFlavorChange = (arr) => {\r\n let state = { ...this.state }\r\n let tempSelectedFlavorList = [];\r\n arr.map(obj => {\r\n tempSelectedFlavorList.push(obj.value);\r\n })\r\n\r\n state.selectedFlavorsList = tempSelectedFlavorList;\r\n state.selectedRecipes = [];\r\n\r\n this.setState(state, () => {\r\n this.handleSearchMultipleFieldInput();\r\n });\r\n }\r\n\r\n /**\r\n *Modificar la lista de IDs con los que el usuario ha seleccionado. Aplica sobre los tipos de granos.\r\n * \r\n *@param: arr: arreglo de valores que crea el select multi de react\r\n *@return: nada\r\n */\r\n handleGrainChange = (arr) => {\r\n let state = { ...this.state }\r\n let tempGrainList = [];\r\n arr.map(obj => {\r\n tempGrainList.push(obj.value);\r\n })\r\n\r\n state.selectedGrainsList = tempGrainList;\r\n state.selectedRecipes = [];\r\n\r\n this.setState(state, () => {\r\n this.handleSearchMultipleFieldInput();\r\n });\r\n }\r\n\r\n /**\r\n *Modificar la lista de IDs con los que el usuario ha seleccionado. Aplica sobre los tipos de leche\r\n * \r\n *@param: arr: arreglo de valores que crea el select multi de react\r\n *@return: nada\r\n */\r\n handleMilkChange = (arr) => {\r\n let state = { ...this.state }\r\n let tempMilksList = [];\r\n arr.map(obj => {\r\n tempMilksList.push(obj.value);\r\n })\r\n\r\n state.selectedMilksList = tempMilksList;\r\n state.selectedRecipes = [];\r\n\r\n this.setState(state, () => {\r\n this.handleSearchMultipleFieldInput();\r\n });\r\n }\r\n\r\n /**\r\n *Modificar la lista de IDs con los que el usuario ha seleccionado. Aplica sobre las presentaciones\r\n * \r\n *@param: arr: arreglo de valores que crea el select multi de react\r\n *@return: nada\r\n */\r\n handlePresentationChange = (arr) => {\r\n let state = { ...this.state }\r\n let tempPresentationList = [];\r\n arr.map(obj => {\r\n tempPresentationList.push(obj.value);\r\n })\r\n\r\n state.selectedPresentationsList = tempPresentationList;\r\n state.selectedRecipes = [];\r\n\r\n this.setState(state, () => {\r\n this.handleSearchMultipleFieldInput();\r\n });\r\n }\r\n\r\n /**\r\n * Función para manejar el onChange del componente de RecipeFilters\r\n */\r\n handleSelectChange = (objFilters) => {\r\n this.setState(objFilters, () => {this.handleSearchMultipleFieldInput();})\r\n }\r\n\r\n /**\r\n * Función para manejar los radiobuttons para el filtro de estatus de precio\r\n */\r\n handleFiltroEstatus= (evento) => {\r\n if(this.state.selectedEstatus !== Number(evento.currentTarget.value)){\r\n this.setState({selectedEstatus: Number(evento.currentTarget.value)}, this.handleSearchMultipleFieldInput)\r\n }\r\n }\r\n\r\n render() {\r\n return (\r\n
    \r\n

    Precio de recetas

    \r\n
    \r\n
    \r\n
    \r\n \r\n {this.props.history.goBack()}} className=\"fa fa-arrow-left\">\r\n \r\n {this.state.priceList.Description}\r\n
    \r\n
    \r\n
    \r\n\r\n {/* Buscador de contenido o nombre de recetas */}\r\n{/*
    \r\n
    \r\n
    \r\n
    \r\n this.handleSearchInput(t)}\r\n itemName={'en Recetas'}\r\n />\r\n
    \r\n
    \r\n
    \r\n
    */}\r\n\r\n {/* Filtrado de todo */}\r\n
    \r\n {/* Filtrar por todos/ConPrecio/SinPrecio */}\r\n
    \r\n \r\n
    \r\n \r\n \r\n \r\n\r\n \r\n
    \r\n
    \r\n\r\n {this.handleSelectChange(objFilters)}}\r\n /> \r\n
    \r\n\r\n
    \r\n
    \r\n
    \r\n {/*Mostramos cuando el usuario ha seleccionado un checkbox*/}\r\n {\r\n this.state.updateMasive &&\r\n
    \r\n
    \r\n \r\n
    \r\n
    \r\n
    \r\n
    \r\n \r\n this.handleChange(e)}\r\n onKeyPress={(e) => {\r\n const keyCode = e.keyCode || e.which;\r\n const keyValue = String.fromCharCode(keyCode);\r\n if (ExpresionesRegulares.ErrorInputNumDecimal.test(keyValue) || e.target.value.length >= e.target.getAttribute('maxLength'))\r\n e.preventDefault();\r\n }}\r\n onPaste={(e) => {\r\n if (ExpresionesRegulares.ErrorInputNumDecimal.test(e.clipboardData.getData(\"Text\")) \r\n || (/\\./.test(e.target.value) && /\\./.test(e.clipboardData.getData(\"Text\")))){\r\n e.preventDefault();\r\n }\r\n }}\r\n />\r\n \r\n
    \r\n
    \r\n
    \r\n {\r\n this.setState({confirmModalUpdatePrice:true})\r\n }\r\n }>\r\n Aplicar\r\n \r\n
    \r\n
    \r\n
    \r\n
    \r\n \r\n
    \r\n }\r\n
    \r\n
    \r\n
    \r\n\r\n \r\n\r\n {this.state.priceListDetails.length != 0 \r\n ? this.showDialogEditPrice(priceDetail)}\r\n checkbox = {true}\r\n checkAll= {this.state.checkAll}\r\n selectAllCheck={this.selectAllCheckBoxPage}\r\n showView={this.showView}\r\n /> \r\n : }\r\n \r\n {\r\n let checkAllTemp = true;\r\n let cheked = false;\r\n \r\n priceListDetails.map(item => {\r\n if(item.statusCheck){\r\n cheked = true;\r\n } else {\r\n checkAllTemp = false;\r\n }\r\n })\r\n\r\n this.setState({ pagePriceListDetails: priceListDetails, checkAll: checkAllTemp, updateMasive: this.state.selectedPricesDetail.length > 0})\r\n }\r\n } \r\n />\r\n \r\n \r\n
    \r\n
    \r\n {this.state.showModal && \r\n this.setState({showModal: false, priceDetail: null})}\r\n >\r\n \r\n \r\n }\r\n {\r\n this.state.confirmModalUpdatePrice && \r\n this.updateMasive()}\r\n cancel={() => this.setState({confirmModalUpdatePrice: false})}\r\n modalTitle={\"Desea cambiar el precio a estas recetas?\"}\r\n />\r\n }\r\n\r\n \r\n
    \r\n );\r\n }\r\n\r\n}\r\n\r\nexport default PricesDetail;","import React from 'react'\r\nimport { Redirect, Route } from 'react-router-dom'\r\nimport PropTypes from 'prop-types';\r\nimport lodash from 'lodash';\r\n\r\n/**\r\n * \r\n * Componente de utilería para el manejo de las rutas dentro de la aplicación\r\n * Se valida el token del usuario en sesión y sus permisos para así ver si es \r\n * posible o no entrar a ciertas escenas.\r\n */\r\n\r\nconst PrivateRoute = ({ component: Component, ...rest }) => {\r\n let expiration = localStorage.getItem(\"expires_in\");\r\n let strToken = localStorage.getItem(\"token\");\r\n let isAbletoEnter = false;\r\n //console.log(expiration > Date.now()/1000);\r\n if(strToken && parseInt(expiration,10) > Date.now()/1000){\r\n let roles = localStorage.getItem('role').split(',');\r\n let permissions = localStorage.getItem('permissions').split(',');\r\n //console.log(roles, permissions, rest.roles, rest.permissions);\r\n isAbletoEnter = lodash.intersection(rest.roles, roles).length > 0 || lodash.intersection(rest.permissions, permissions).length > 0;\r\n }else{\r\n localStorage.clear();\r\n window.location.reload();\r\n }\r\n\r\n return (\r\n \r\n isAbletoEnter ? (\r\n \r\n ) :\r\n (\r\n \r\n )\r\n }\r\n />\r\n )\r\n}\r\n\r\nPrivateRoute.propTypes = {\r\n path: PropTypes.string.isRequired,\r\n component: PropTypes.func.isRequired,\r\n roles: PropTypes.arrayOf(PropTypes.string),\r\n permissions: PropTypes.arrayOf(PropTypes.string)\r\n}\r\n\r\nPrivateRoute.defaultProps = {\r\n roles: [],\r\n permissions: []\r\n}\r\n\r\nexport default PrivateRoute","import { apiUrl } from \"../constants\";\r\nimport axios from 'axios';\r\nimport middleware from '../middleware/auth';\r\n\r\nvar request = axios.create({\r\n baseURL: apiUrl,\r\n headers: {'Authorization': 'Bearer ' + localStorage.getItem('token'),'Content-Type':'application/json'}\r\n})\r\nexport default class SaldoRegaloAPI {\r\n \r\n static getAll() {\r\n return middleware.hasAuth(() => request.get(`/SaldoRegalo`));\r\n }\r\n\r\n static create_list(list_clients, byLoyaltyAccount){\r\n return middleware.hasAuth(() => request.post(`/SaldoRegaloLista/${byLoyaltyAccount}`, list_clients));\r\n }\r\n\r\n static getFiltered(body){\r\n return middleware.hasAuth(() => request.post(`/SaldoRegalo/`, body));\r\n }\r\n\r\n static patch(id){\r\n return middleware.hasAuth(() => request.patch(`/SaldoRegalo/${id}`));\r\n }\r\n static remove(id){\r\n return middleware.hasAuth(() => request.delete(`/SaldoRegalo/${id}`));\r\n }\r\n \r\n}","import React, { Component } from 'react';\r\nimport PropTypes from 'prop-types';\r\nimport moment from 'moment';\r\nimport { toast } from 'react-toastify';\r\nimport XlsxPopulate from 'xlsx-populate/browser/xlsx-populate';\r\nimport { ETIME } from 'constants';\r\n\r\nexport default class SaldoRegaloFormFile extends Component {\r\n static propTypes = {\r\n save: PropTypes.func.isRequired\r\n }\r\n\r\n static defaultProps = {\r\n\r\n IsActive: true,\r\n }\r\n\r\n constructor(props) {\r\n super(props);\r\n this.state = {\r\n ...props,\r\n accountSelection: -1,\r\n isValidFile: false,\r\n fileName: \"Archivo\",\r\n };\r\n }\r\n\r\n handleChange = (e) => {\r\n let state = { ...this.state };\r\n state[e.target.name] = e.target.value;\r\n this.setState(state);\r\n }\r\n\r\n handleDateChange = (date, attr) => {\r\n let state = { ...this.state };\r\n state[attr] = date;\r\n this.setState(state);\r\n }\r\n\r\n //////// VALIDATIONS EXCEL FILE /////////\r\n validateFile = (sheet) => {\r\n let is_valid_file = true;\r\n const columns = ['A', 'B', 'C', 'D', 'E', 'F'];\r\n let rows = [];\r\n let file_index = 2;\r\n const validations_header = this.validationsHeader(columns, sheet);\r\n\r\n if (validations_header.is_valid === false) {\r\n return { sheet: validations_header.sheet, is_valid_file: false }\r\n }\r\n\r\n const byLoyaltyAccount = sheet.cell(`A1`).value() === 'NumeroCliente' ? false : true;\r\n\r\n sheet._rows.forEach(row => {\r\n const temporary_row = this.getRowsFromFile(row, sheet, columns, file_index);\r\n if (temporary_row.estatus === \"\") {\r\n rows.push(temporary_row);\r\n }\r\n file_index++;\r\n });\r\n\r\n for (let row_index = 0; row_index < rows.length; row_index++) {\r\n const row_validation = this.validationsRow(rows[row_index], byLoyaltyAccount);\r\n rows[row_index] = row_validation;\r\n\r\n if (row_validation.is_valid === false) {\r\n is_valid_file = false;\r\n }\r\n }\r\n\r\n if (is_valid_file === false) { sheet = this.updateSheet(sheet, rows); }\r\n return { sheet: sheet, is_valid_file: is_valid_file, rows: rows }\r\n }\r\n\r\n validationsLoyaltyAccount = (account) => {\r\n const validRegEx = /((1)|(7))(2419)([0-9]{9})$/g;\r\n if (account.toString().match(validRegEx) === null || account.toString().length > 30) {\r\n return false;\r\n }\r\n return true;\r\n }\r\n\r\n //////////////\r\n updateSheet = (sheet, rows) => {\r\n for (let index = 0; index < rows.length; index++) {\r\n const row = rows[index];\r\n if (row.is_valid === true) { continue; }\r\n sheet.cell(`F${row.index}`).value(row.estatus);\r\n sheet.cell(`F${row.index}`).style({\r\n bold: true,\r\n fontColor: {\r\n rgb: \"ff1a1a\"\r\n }\r\n });\r\n }\r\n\r\n return sheet;\r\n }\r\n\r\n validationsHeader = (columns, sheet) => {\r\n let is_valid_headers = true;\r\n let errors = \"\";\r\n const correct_headers = [\r\n [\"NumeroCliente\", \"CuentaLealtad\"],\r\n [\"FechaInicio\"],\r\n [\"FechaFinal\"],\r\n [\"Monto\"],\r\n [\"Motivo\"],\r\n [\"Estatus\"]\r\n ];\r\n\r\n for (let index = 0; index <= 5; index++) {\r\n const header_validation = this.validateHeaderName(sheet.cell(`${columns[index]}1`).value(), correct_headers[index]);\r\n if (header_validation.is_valid === false) {\r\n is_valid_headers = false;\r\n errors += header_validation.error;\r\n }\r\n }\r\n\r\n if (is_valid_headers === false) {\r\n sheet.cell(`G1`).value(errors);\r\n sheet.cell(`G1`).style({\r\n bold: true,\r\n fontColor: {\r\n rgb: \"ff1a1a\"\r\n }\r\n });\r\n\r\n }\r\n\r\n return { is_valid: is_valid_headers, sheet: sheet };\r\n }\r\n\r\n validateHeaderName = (file_header, correct_header) => {\r\n let is_valid = true;\r\n let error = \"\"\r\n\r\n for (let file_index = 0; file_index <= correct_header.length - 1; file_index++) {\r\n const correct_name = correct_header[file_index];\r\n if (typeof file_header === \"undefined\" || file_header.replace(/ /g, '') === '' || file_header !== correct_name) {\r\n error += ` | No se encontro la cabecera ${correct_name}`;\r\n is_valid = false;\r\n } else {\r\n is_valid = true;\r\n error = \"\";\r\n break;\r\n }\r\n\r\n }\r\n\r\n return { is_valid: is_valid, error: error };\r\n }\r\n\r\n getRowsFromFile = (rows, sheet, columns, index) => {\r\n let row = {\r\n index: 0,\r\n Identifier: 0,\r\n StarDate: '',\r\n EndDate: '',\r\n Deposit: 0,\r\n ReasonDeposit: '',\r\n estatus: ''\r\n };\r\n\r\n const properties = [\r\n 'Identifier',\r\n 'StarDate',\r\n 'EndDate',\r\n 'Deposit',\r\n 'ReasonDeposit',\r\n 'estatus',\r\n 'is_valid'\r\n ];\r\n let errors = 0;\r\n row.index = index;\r\n row.is_valid = true;\r\n\r\n for (let column_index = 0; column_index < columns.length - 1; column_index++) {\r\n const cell = sheet.cell(`${columns[column_index]}${index}`);\r\n if (typeof cell._value === \"undefined\" || cell._value.toString().replace(/ /g, '') === '') {\r\n errors++;\r\n row[properties[column_index + 1]] = '';\r\n row.is_valid = false;\r\n } else {\r\n row[properties[column_index]] = column_index > 1 && column_index < 4 ? cell._value.toString().replace(/ /g, '') : cell._value;\r\n\r\n if (column_index == 3) {\r\n row[properties[column_index]] = parseFloat(row[properties[column_index]]).toFixed(2);\r\n }\r\n\r\n }\r\n }\r\n\r\n if (errors === 5) { row.estatus = -1; }\r\n return row;\r\n }\r\n\r\n validationsRow = (row, byLoyaltyAccount) => {\r\n let results = [];\r\n results.push(this.validationsIdentifier(row.Identifier, byLoyaltyAccount));//0\r\n\r\n results.push(this.validationsDate(row.StarDate));//1\r\n results.push(this.validationsDate(row.EndDate, true));//2\r\n results.push(this.validationsDeposit(row.Deposit));//3\r\n results.push(this.validationsReason(row.ReasonDeposit));//4\r\n\r\n if (results[1].is_valid === true && results[2].is_valid === true) {\r\n row.StarDate = results[1].date.format(\"DD/MM/YYYY\");\r\n row.EndDate = results[2].date.format(\"DD/MM/YYYY\");\r\n if (results[2].date.isBefore(results[1].date)) {\r\n row.estatus += ` La FechaInicio no debe ser mayor o igual a la FechaFinal`;\r\n row.is_valid = false;\r\n }\r\n }\r\n\r\n for (let index = 0; index < results.length; index++) {\r\n const result = results[index];\r\n if (result.is_valid === false) {\r\n row.estatus += ` ${result.error}`;\r\n row.is_valid = false;\r\n }\r\n }\r\n\r\n return row;\r\n }\r\n\r\n ///////////////\r\n validationsIdentifier = (Identifier, byLoyaltyAccount) => {\r\n const regex = /\\d+$/;\r\n\r\n if (typeof Identifier === \"undefined\" || Identifier.toString().replace(/ /g, '') === '' || Identifier.toString().match(regex) === null) {\r\n return { error: `El campo CuentaLealtad/Cliente no debe estar vacío y debe ser un valor tipo numérico`, is_valid: false }\r\n }\r\n\r\n if (typeof Identifier !== 'number' || Identifier <= 0) {\r\n return { error: ` El campo CuentaLealtad/Cliente debe ser un valor tipo numérico y mayor a cero.`, is_valid: false }\r\n }\r\n\r\n\r\n if (byLoyaltyAccount) {\r\n if (this.validationsLoyaltyAccount(Identifier) === false) {\r\n return { error: `El campo CuentaLealtad no valida: formato [ 12419xxxxxxxxxx] donde x es un numero`, is_valid: false }\r\n };\r\n }\r\n return { is_valid_row: true };\r\n }\r\n\r\n validationsDate = (date, is_date_end = false) => {\r\n const text_date = is_date_end === false ? \"FechaInicial\" : \"FechaFinal\";\r\n const current_date = moment();\r\n const regex = /(?:0[1-9]|[12][0-9]|3[01])\\/(?:0[1-9]|1[0-2])\\/(?:19|20\\d{2})/;\r\n /*if(date){\r\n console.log(date)\r\n const splitDate = date.split(\"/\")\r\n if(splitDate.length > 1){\r\n let checkYear = splitDate[2].length;\r\n let checkDay = splitDate[0].length; \r\n\r\n if (checkYear !== 4 || checkDay !== 2) {\r\n return { error: ` | El campo ${text_date} no debe estar vacío y debe ser un formato de fecha dd/mm/yyyy.`, is_valid: false };\r\n }\r\n\r\n }\r\n }*/\r\n\r\n //console.log(date)\r\n //let dateConverted = new Date((date - (25567 + 1))*86400*1000);\r\n //console.log(dateConverted)\r\n \r\n\r\n if (typeof date === \"undefined\" || date.toString().replace(/ /g, '') === '') {\r\n return { error: ` | El campo ${text_date} no debe estar vacío y debe ser un formato de fecha dd/mm/yyyy.`, is_valid: false };\r\n }\r\n\r\n //console.log(date)\r\n const checkDateFormat = (date) => {\r\n const moment_date = moment(XlsxPopulate.numberToDate(date));\r\n if (moment_date.isValid()) {\r\n //console.log(moment_date)\r\n return (moment_date);\r\n } else if (date.toString().match(regex) !== null) {\r\n //console.log(moment(date, 'DD/MM/YYYY')._i)\r\n return (moment(date, 'DD/MM/YYYY'));\r\n } else {\r\n return (false);\r\n }\r\n };\r\n\r\n\r\n //console.log(date)\r\n date = checkDateFormat(date);\r\n //console.log(date)\r\n if(date){\r\n if(typeof date._i.length == \"undefined\"){\r\n date._i.length = 10;\r\n }\r\n }\r\n \r\n //console.log(date._i.length)\r\n\r\n if (date === false || date._i.length !== 10) {\r\n return { error: ` | El campo ${text_date} no debe estar vacío y debe ser un formato de fecha dd/mm/yyyy.`, is_valid: false };\r\n }\r\n\r\n if (date.isBefore(current_date)) {\r\n return { error: `| El campo de ${text_date} debe ser mayor al día de hoy`, is_valid: false }\r\n }\r\n\r\n return { is_valid: true, date: date };\r\n }\r\n\r\n\r\n validationsDeposit = (Deposit) => {\r\n const regex = /\\d+$/;\r\n if (typeof Deposit === \"undefined\" || Deposit.toString().replace(/ /g, '') === '' || Deposit.toString().match(regex) === null) {\r\n return { error: `| El campo de monto no debe estar vacío y/o debe ser un valor numérico.`, is_valid: false };\r\n }\r\n\r\n if (parseFloat(Deposit).toFixed(2) <= 0) {\r\n return { error: `| El monto debe ser un valor tipo numérico y mayor de cero.`, is_valid: false }\r\n }\r\n\r\n return { is_valid: true }\r\n }\r\n\r\n validationsReason = (ReasonDeposit) => {\r\n if (typeof ReasonDeposit === \"undefined\" || ReasonDeposit.toString().replace(/ /g, '') === '') {\r\n return { error: `| El motivo no debe estar vacio.`, is_valid: false };\r\n }\r\n\r\n if (typeof ReasonDeposit !== 'string') {\r\n return { error: `| El motivo debe ser un valor tipo texto`, is_valid: false }\r\n }\r\n\r\n const validRegEx = /[A-Za-zñÑáéíóúÁÉÍÓÚ]{4,30}/g\r\n if (ReasonDeposit.match(validRegEx) === null || ReasonDeposit.length > 30) {\r\n return { error: ` | El motivo debe contener mínimo 4 letras y no ser mayor a 30`, is_valid: false };\r\n }\r\n\r\n return { is_valid: true };\r\n }\r\n\r\n downloadCheckedFile = (workbook, file) => {\r\n workbook.outputAsync()\r\n .then(function (blob) {\r\n file = file.split(\".\");\r\n const file_name = file[0];\r\n const extension = file[1];\r\n if (window.navigator && window.navigator.msSaveOrOpenBlob) {\r\n window.navigator.msSaveOrOpenBlob(blob, `${file_name}_revisado.${extension}`);\r\n } else {\r\n let temporary_url_download = window.URL.createObjectURL(blob);\r\n let link_download_file = document.createElement(\"a\");\r\n document.body.appendChild(link_download_file);\r\n link_download_file.href = temporary_url_download;\r\n link_download_file.download = `${file_name}_revisado.${extension}`;\r\n link_download_file.click();\r\n window.URL.revokeObjectURL(temporary_url_download);\r\n document.body.removeChild(link_download_file);\r\n }\r\n });\r\n }\r\n\r\n validateExtensionFile = (extension) => {\r\n const EXTENSIONS_ALLOWED = [\"XLS\", \"XLSX\"];\r\n for (let index = 0; index < EXTENSIONS_ALLOWED.length; index++) {\r\n const ext = EXTENSIONS_ALLOWED[index];\r\n if (extension === ext) {\r\n return true;\r\n }\r\n }\r\n return false;\r\n }\r\n\r\n\r\n /**\r\n * handleSelectedFile\r\n * @param {Object}\r\n */\r\n handleSelectedFile = (e) => {\r\n let files = e.target.files\r\n let file = files[0]\r\n e.target.value = \"\";\r\n if (typeof file === 'undefined') {\r\n e.target.value = null;\r\n return false;\r\n }\r\n const EXTENSION = (file.name.split('.')[1]).toUpperCase();\r\n\r\n if (this.validateExtensionFile(EXTENSION) === false) {\r\n toast.error(\"Es necesario seleccionar un archivo validado.\");\r\n e.target.value = null;\r\n return false;\r\n }\r\n\r\n // TODO validar la extension del archivo usando substring [.xls, .xlsx]\r\n XlsxPopulate.fromDataAsync(file)\r\n .then((workbook) => {\r\n const sheet = workbook.sheet(0).name('Lista Revisada');\r\n const validation = this.validateFile(sheet);\r\n let state = this.state\r\n if (validation.is_valid_file === false) {\r\n this.downloadCheckedFile(workbook, file.name); \r\n state.rows = \"\";\r\n state.isValidFile = false;\r\n state.fileName = \"Archivo\";\r\n } else {\r\n state.rows = validation.rows;\r\n state.isValidFile = true;\r\n state.fileName = file.name;\r\n }\r\n \r\n this.setState(state)\r\n })\r\n\r\n e.target.value = null;\r\n\r\n }\r\n\r\n /// NEW FUNCTIONS////////\r\n validate = () => {\r\n if (this.state.rows === '') {\r\n toast.error(\"Es necesario seleccionar un archivo validado.\");\r\n return false;\r\n }\r\n return true;\r\n }\r\n\r\n render() {\r\n let accountOptions = [{ name: \"Por número de cliente\" }, { name: \"Por cuenta lealtad\" }];\r\n return (\r\n
    \r\n
    \r\n
    \r\n
    \r\n
    \r\n \r\n
    \r\n\r\n
    \r\n
    \r\n
    \r\n \r\n
    \r\n
    \r\n
    \r\n
    \r\n
    \r\n\r\n
    \r\n
    \r\n
    \r\n \r\n
    \r\n\r\n
    \r\n
    \r\n
    \r\n \r\n
    \r\n
    \r\n
    \r\n\r\n
    \r\n\r\n
    \r\n\r\n
    \r\n
    \r\n {\r\n if (this.validate()) {\r\n let { save, ...saldo } = { ...this.state };\r\n this.props.save(saldo.rows, this.state.accountSelection === 1);\r\n }else{\r\n\r\n }\r\n }}>\r\n Guardar\r\n \r\n\r\n
    \r\n
    \r\n
    \r\n\r\n
    \r\n )\r\n }\r\n}","import React, { Component } from 'react';\r\nimport PropTypes from 'prop-types';\r\nimport moment from 'moment';\r\nimport DatePicker from 'react-datepicker';\r\nimport TextField from '../util/textfield/TextField';\r\nimport Dropdown from '../util/dropdown/Dropdown';\r\nimport { toast } from 'react-toastify';\r\n\r\nexport default class SaldoRegaloForm extends Component {\r\n static propTypes = {\r\n CustomerNumber: PropTypes.number,\r\n LoyalAccount: PropTypes.string,\r\n StarDate: PropTypes.string,\r\n EndDate: PropTypes.string,\r\n Deposit: PropTypes.number,\r\n ReasonDeposit: PropTypes.string,\r\n save: PropTypes.func.isRequired\r\n }\r\n\r\n static defaultProps = {\r\n CustomerNumber: 0,\r\n LoyalAccount: 0,\r\n StarDate: moment().add(1, 'days'),\r\n EndDate: moment().add(7, 'days'),\r\n Deposit: 0,\r\n ReasonDeposit: \"\"\r\n }\r\n\r\n constructor(props) {\r\n super(props);\r\n debugger\r\n this.state = { ...props, accountSelection: -1,StarDate: moment().add(1, 'days'),EndDate: moment().add(7, 'days') };\r\n }\r\n\r\n\r\n handleChange = (e) => {\r\n let state = { ...this.state };\r\n state[e.target.name] = e.target.value;\r\n this.setState(state);\r\n }\r\n\r\n handleDateChange = (date, attr) => {\r\n let state = { ...this.state };\r\n state[attr] = date;\r\n this.setState(state);\r\n }\r\n\r\n validationsIdentifier = (identifier) => {\r\n const regex = /\\d+$/;\r\n\r\n if (typeof identifier === \"undefined\" || identifier.toString().replace(/ /g, '') === '' || identifier.toString().match(regex) === null) {\r\n return { error: `El campo TarjetaLealtad/Cliente no debe estar vacío y debe ser un valor numérico.`, isValid: false }\r\n }\r\n\r\n console.warn(identifier);\r\n if (identifier <= 0) {\r\n return { error: ` El campo TarjetaLealtad/Cliente debe ser mayor a cero.`, isValid: false }\r\n }\r\n\r\n return { isValid: true };\r\n }\r\n\r\n validationsLoyaltyAccount = (account) => {\r\n const validRegEx = /((1)|(7))(2419)([0-9]{9})$/g;\r\n if (account.toString().match(validRegEx) === null || account.toString().length > 30) {\r\n return { isValid: false };\r\n }\r\n return { isValid: true };\r\n }\r\n\r\n validationsDate = (date, is_date_end = false) => {\r\n let text_date = is_date_end === false ? \"FechaInicial\" : \"FechaFinal\";\r\n const current_date = moment();\r\n\r\n if (typeof date === \"undefined\" || date.replace(/ /g, '') === '' || typeof date !== 'string') {\r\n return { error: ` | El campo ${text_date} no debe estar vacío y debe ser un formato de fecha.`, isValid: false };\r\n }\r\n\r\n\r\n if (date.replace(/^([0-2][0-9]|(3)[0-1])(\\/)(((0)[0-9])|((1)[0-2]))(\\/)\\d{4}$/i) === '') {\r\n return { error: ` | El campo ${text_date} no es un valor valido formato: DD/MM/YYYY`, isValid: false }\r\n }\r\n\r\n date = moment(date, 'DD/MM/YYYY');\r\n if (date.isBefore(current_date)) {\r\n\r\n return { error: `| El campo de ${text_date} debe ser mayor al día de hoy`, isValid: false }\r\n }\r\n\r\n return { isValid: true, date: date };\r\n }\r\n\r\n\r\n validationsAmount = (amount) => {\r\n if (typeof amount === \"undefined\" || amount.toString().replace(/ /g, '') === '') {\r\n return false;\r\n }\r\n\r\n if (isNaN(amount) || amount <= 0) {\r\n return false\r\n }\r\n\r\n return true;\r\n }\r\n\r\n validationsReason = (reason) => {\r\n if (typeof reason === \"undefined\" || reason.toString().replace(/ /g, '') === '') {\r\n return false;\r\n }\r\n\r\n const validRegEx = /[A-Za-z]{4,30}/g;\r\n if (reason.match(validRegEx) === null || reason.length > 30) {\r\n return false;\r\n }\r\n\r\n return true;\r\n }\r\n\r\n\r\n buildSaldo=()=>{\r\n return { \r\n \"Deposit\":parseFloat(this.state.Deposit),\r\n \"Identifier\":parseInt(this.state.accountSelection == 0 ? this.state.CustomerNumber : this.state.LoyalAccount, 10),\r\n \"StarDate\":this.state.StarDate.format('DD/MM/YYYY'),\r\n \"EndDate\":this.state.EndDate.format('DD/MM/YYYY'),\r\n \"ReasonDeposit\": this.state.ReasonDeposit\r\n };\r\n }\r\n\r\n validate = () => {\r\n var isValid = true;\r\n var validation;\r\n\r\n if (this.state.accountSelection === -1) {\r\n toast.error(\"Selecciona con qué valor se asignará el usuario.\");\r\n isValid = false;\r\n return false;\r\n }\r\n\r\n validation = this.validationsIdentifier(this.state.accountSelection === 0 ? this.state.CustomerNumber : this.state.LoyalAccount);\r\n if (this.state.accountSelection === 0 && validation.isValid === false) {\r\n toast.error(`Ingresa un número de cliente válido: ${validation.error}`);\r\n isValid = false;\r\n return false;\r\n }\r\n\r\n\r\n validation = this.validationsLoyaltyAccount(this.state.LoyalAccount);\r\n if (this.state.accountSelection === 1 && validation.isValid === false) {\r\n toast.error(\"Ingresa una cuenta lealtad valida: formato [ 12419xxxxxxxxxx] donde x es un número\");\r\n isValid = false;\r\n return false;\r\n }\r\n\r\n if (this.state.StarDate >= this.state.EndDate) {\r\n toast.error(\"Ingresa un rango de fechas válido para el regalo\");\r\n isValid = false;\r\n return false;\r\n }\r\n\r\n if (this.validationsAmount(this.state.Deposit) === false) {\r\n toast.error(`Ingresa una cantidad válida para el regalo`);\r\n isValid = false;\r\n return false;\r\n }\r\n\r\n if (this.validationsReason(this.state.ReasonDeposit) === false) {\r\n toast.error(`Ingresa un motivo válido para el regalo minimo 4 letras y maximo 30(contando espacios)`);\r\n isValid = false;\r\n return false;\r\n }\r\n\r\n return isValid;\r\n }\r\n\r\n onKeyPressNumber(event) {\r\n const keyCode = event.keyCode || event.which;\r\n const keyValue = String.fromCharCode(keyCode);\r\n if (/\\+|-|e|E|\\./.test(keyValue) || event.target.value.length >= event.target.getAttribute('maxLength'))\r\n event.preventDefault();\r\n }\r\n\r\n render() {\r\n let accountOptions = [{ name: \"Por número de cliente\" }, { name: \"Por cuenta lealtad\" }];\r\n return (\r\n
    \r\n\r\n
    \r\n
    \r\n
    \r\n
    \r\n \r\n
    \r\n
    \r\n {\r\n let state = { ...this.state };\r\n state.accountSelection = index - 1;\r\n\r\n if (index - 1 === 0) {\r\n state.CustomerNumber = 0;\r\n } else {\r\n state.LoyalAccount = 0;\r\n }\r\n this.setState(state);\r\n }}\r\n />\r\n
    \r\n
    \r\n\r\n
    \r\n\r\n
    \r\n {\r\n this.state.accountSelection === 0 &&
    \r\n this.handleChange(e)} />
    \r\n }\r\n {\r\n this.state.accountSelection === 1 &&
    \r\n this.handleChange(e)} />\r\n
    \r\n }\r\n
    \r\n\r\n\r\n
    \r\n
    \r\n
    \r\n \r\n
    \r\n
    \r\n \r\n this.handleDateChange(e, 'StarDate')}\r\n popperPlacement=\"right\"\r\n popperModifiers={{\r\n offset: {\r\n enabled: true,\r\n offset: '5px, 10px'\r\n },\r\n preventOverflow: {\r\n enabled: true,\r\n escapeWithReference: false,\r\n boundariesElement: 'viewport'\r\n }\r\n }}\r\n withPortal\r\n dateFormat=\"DD/MM/YYYY\"\r\n className=\"input\"\r\n minDate={moment(new Date()).add(1, 'days')}\r\n maxDate={\r\n moment(this.state.EndDate).isValid()?\r\n moment(this.state.EndDate).subtract(1, 'days'):\r\n \"\"\r\n }\r\n />\r\n \r\n
    \r\n
    \r\n\r\n
    \r\n
    \r\n
    \r\n
    \r\n \r\n
    \r\n
    \r\n \r\n this.handleDateChange(e, 'EndDate')}\r\n popperPlacement=\"right\"\r\n popperModifiers={{\r\n offset: {\r\n enabled: true,\r\n offset: '5px, 10px'\r\n },\r\n preventOverflow: {\r\n enabled: true,\r\n escapeWithReference: false,\r\n boundariesElement: 'viewport'\r\n }\r\n }}\r\n withPortal\r\n dateFormat=\"DD/MM/YYYY\"\r\n className=\"input\"\r\n minDate={\r\n moment(this.state.StarDate).isValid()?\r\n moment(this.state.StarDate).add(1, 'days'):\r\n \"\"\r\n }\r\n />\r\n \r\n
    \r\n
    \r\n\r\n
    \r\n
    \r\n
    \r\n this.handleChange(e)} />\r\n
    \r\n
    \r\n\r\n
    \r\n
    \r\n this.handleChange(e)} />\r\n
    \r\n\r\n
    \r\n
    \r\n\r\n
    \r\n {\r\n if (this.validate()) {\r\n let { save, ...saldo } = { ...this.state };\r\n this.props.save([this.buildSaldo()], this.state.accountSelection === 1);\r\n }\r\n }}>\r\n Guardar\r\n \r\n\r\n
    \r\n
    \r\n )\r\n }\r\n}","import React from 'react';\r\nimport './SaldoRegalo.css';\r\n\r\nexport default class SaldoRegaloErrorFile extends React.Component {\r\n constructor(props) {\r\n super(props);\r\n }\r\n\r\n render() {\r\n\r\n var tableHeaders = (\r\n \r\n {this.props.byLoyaltyAccount ? \"CuentaLealtad\": \"NumeroCliente\"}\r\n FechaInicio\r\n FechaFinal\r\n Monto\r\n Motivo\r\n Errores\r\n \r\n );\r\n\r\n var tableBody = this.props.data.map((obj, index) => {\r\n return (\r\n \r\n {obj.Data.Identifier}\r\n {obj.Data.StarDate}\r\n {obj.Data.EndDate}\r\n {obj.Data.Deposit}\r\n {obj.Data.ReasonDeposit}\r\n {obj.Error}\r\n \r\n );\r\n });\r\n\r\n return (\r\n {tableHeaders}\r\n \r\n {tableBody}\r\n \r\n
    )\r\n }\r\n\r\n}\r\n","import React from 'react';\r\nimport './SaldoRegalo.css';\r\n\r\nexport default class SaldoRegaloGuideFile extends React.Component {\r\n constructor(props) {\r\n super(props);\r\n this.state = {\r\n tableHeaders: [\r\n 'NumeroCliente',\r\n 'FechaInicio',\r\n 'FechaFinal',\r\n 'Monto',\r\n 'Motivo',\r\n 'Estatus'\r\n ],\r\n menuOption: [\r\n 'Cabeceras',\r\n 'Primer Columna',\r\n 'Segunda Columna',\r\n 'Tercer Columna',\r\n 'Cuarta Columna',\r\n 'Quinta Columna',\r\n 'Sexta Columna'\r\n ],\r\n selectedMenu: 0,\r\n menuOptionDescription: [\r\n [ // Sin selección\r\n 'Seleccionar una opción del menú para ver instrucciones'\r\n ],\r\n [ // Cabeceras\r\n 'Deben tener el nombre exacto (incluyendo mayúsculas y minúsculas)',\r\n 'No debe tener espacios al inicio o al final del texto',\r\n 'La primera columna debe tener uno de los siguientes nombres [CuentaLealtad] o [NumeroCliente]',\r\n 'La segunda columna debe poseer el nombre de [FechaInicio]',\r\n 'La tercera columna debe poseer el nombre de [FechaFinal]',\r\n 'La cuarta columna debe poseer el nombre de [Monto]',\r\n 'La quinta columna debe poseer el nombre de [Motivo]',\r\n 'La sexta columna debe poseer el nombre de [Estatus]'\r\n ],\r\n [ // Primer Columna\r\n 'No debe tener espacios al inicio o al final del texto',\r\n 'Los campos deben ser numéricos',\r\n 'Los campos deben ser mayores a cero',\r\n 'La cabecera puede tener el nombre [NumeroCliente] o [CuentaLealtad]',\r\n 'Si es [CuentaLealtad] los campos deben tener el formato 12419xxxxxxxxxx donde x es un número'\r\n ],\r\n [ // Segunda Columna\r\n 'No debe tener espacios al inicio o al final del texto',\r\n 'Debe contener una fecha con el formato día/mes/año',\r\n 'Debe tener una fecha mayor al día actual',\r\n 'Debe ser menor a FechaInicio',\r\n ],\r\n [ // Tercer Columna\r\n 'No debe tener espacios al inicio o al final del texto',\r\n 'Debe contener una fecha con el formato día/mes/año',\r\n 'Debe tener una fecha mayor al día actual',\r\n 'Debe ser mayor a FechaInicio',\r\n ],\r\n [\r\n // Cuarta Columna\r\n 'No debe tener espacios al inicio o al final del texto',\r\n 'Los campos deben ser numéricos',\r\n 'Los campos deben ser mayores a cero'\r\n ],\r\n [\r\n // Quinta Columna\r\n 'No debe tener espacios al inicio o al final del texto',\r\n 'Debe ser texto mínimo 4 caracteres y como máximo 30',\r\n 'No debe de estar compuesto de puros espacios vacíos'\r\n ],\r\n [\r\n // Sexta Columna\r\n 'No debe tener espacios al inicio o al final del texto',\r\n 'Si se encuentra algún error se mostrará en esa columna',\r\n 'No se considera el contenido por lo tanto, puede estar vacía'\r\n ]\r\n\r\n ]\r\n };\r\n }\r\n\r\n leftMenuOptions = () => {\r\n return (\r\n )\r\n }\r\n\r\n\r\n changeColorSelectedOption = (indexOption) => {\r\n return this.state.selectedMenu === indexOption ? \"has-background-info\" : \"\";\r\n }\r\n\r\n getSelectedMenuDescription = () => {\r\n return (\r\n
  • \r\n {\r\n this.state.menuOptionDescription[this.state.selectedMenu].map(item =>

    {item}

    )\r\n }\r\n
  • )\r\n }\r\n\r\n\r\n getTableHeaders = () => {\r\n return \r\n \r\n {\r\n this.state.tableHeaders.map((header, index) => this.setState({ selectedMenu: index + 2 })} className={this.changeColorSelectedOption(index + 2)}>{header})\r\n }\r\n \r\n \r\n }\r\n\r\n render() {\r\n return (\r\n
    \r\n
    \r\n
    \r\n
    \r\n \r\n {this.getTableHeaders()}\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n
    23680009/04/201910/04/201950Sin Motivo
    \r\n
    \r\n
    \r\n
    \r\n\r\n
    \r\n
    \r\n \r\n
    \r\n
    \r\n \r\n
    \r\n
    \r\n\r\n
    \r\n\r\n )\r\n }\r\n}","import React from 'react';\r\nimport PropTypes from 'prop-types';\r\nimport './SaldoRegalo.css';\r\n\r\nexport default class SaldoRegaloCheckFile extends React.Component {\r\n\r\n static propTypes = {\r\n save: PropTypes.func.isRequired\r\n }\r\n\r\n constructor(props) {\r\n super(props);\r\n this.state = {\r\n ...props\r\n };\r\n }\r\n\r\n render() {\r\n\r\n var tableHeaders = (\r\n \r\n \r\n {this.props.byLoyaltyAccount ? \"CuentaLealtad\" : \"NumeroCliente\"}\r\n FechaInicio\r\n FechaFinal\r\n Monto\r\n Motivo\r\n \r\n );\r\n\r\n //console.log(this.props.saldo);\r\n var tableBody = this.props.saldo.map((row, index) => {\r\n return (\r\n \r\n {row.Identifier}\r\n {row.StarDate}\r\n {row.EndDate}\r\n {row.Deposit}\r\n {row.ReasonDeposit}\r\n \r\n );\r\n });\r\n\r\n return (\r\n
    \r\n \r\n {tableHeaders}\r\n \r\n {tableBody}\r\n \r\n
    \r\n\r\n
    \r\n {\r\n let { save, ...saldo } = { ...this.state };\r\n console.clear();\r\n //console.log(this.props);\r\n this.props.save(this.props.saldo, this.props.byLoyaltyAccount, true);\r\n }}>\r\n Confirmar guardado de registros\r\n \r\n
    \r\n
    \r\n\r\n )\r\n }\r\n\r\n}\r\n","import React from 'react';\r\nimport SaldoRegaloAPI from '../../services/SaldoRegalo';\r\nimport Loading from '../util/loading/Loading';\r\nimport SearchForm from '../util/searchform/SearchForm';\r\nimport Pagination from '../util/pagination/Pagination';\r\nimport TableTemplate from \"../util/tabletemplate/TableTemplate\";\r\nimport DatePicker from 'react-datepicker';\r\nimport NoItems from \"../util/noitems/NoItems\";\r\nimport Modal from '../util/modal/Modal';\r\nimport AcceptModal from '../util/acceptModal/AcceptModal';\r\nimport SaldoRegaloFormFile from './SaldoRegaloFormFile';\r\nimport SaldoRegaloForm from './SaldoRegaloForm';\r\nimport SaldoRegaloErrorFile from './SaldoRegaloErroFile';\r\nimport SaldoRegaloGuideFile from './SaldoRegaloGuideFile';\r\nimport SaldoRegaloCheckFile from './SaldoRegaloCheckFile'\r\nimport { toast } from 'react-toastify';\r\n\r\nimport './SaldoRegalo.css';\r\nimport es from 'moment/locale/es-us';\r\n\r\nimport BtnModoGuiado from '../util/BtnModoGuiado/BtnModoGuiado'\r\nimport ErrorMessages from '../../util/validation-error-messages';\r\n\r\nexport default class SaldosRegalo extends React.Component {\r\n saldos = [];\r\n constructor(props) {\r\n super(props);\r\n this.state = {\r\n errors: {},\r\n saldos: [],\r\n saldosBackUp: [],\r\n pageSaldos: [],\r\n filterText: \"\",\r\n saldo: null,\r\n isLoading: false,\r\n byLoyaltyAccount: false,\r\n widthModal: \"initial\",\r\n showModal: false,\r\n typeModal: 0,\r\n fileExcel: \"\",\r\n fileErrors: [],\r\n filters: {\r\n CustomerNumber: \"\",\r\n LoyaltyAccount: \"\",\r\n StarDate: null,\r\n EndDate: null,\r\n ReasonDeposit: \"\",\r\n IsActive: -1\r\n }\r\n }\r\n }\r\n\r\n renderSwitch(typeModal) {\r\n switch (typeModal) {\r\n case 1:\r\n return ;\r\n case 2:\r\n return ;\r\n case 3:\r\n return ;\r\n case 4:\r\n return ;\r\n case 5:\r\n return ;\r\n default:\r\n return '';\r\n }\r\n\r\n }\r\n\r\n renderModalTitle(typeModal) {\r\n switch (typeModal) {\r\n case 1:\r\n return \"Programar saldo individual a un cliente\";\r\n case 2:\r\n return \"Programar saldo a varios clientes\";\r\n case 3:\r\n return \"Errores encontrados en el archivo\";\r\n case 4:\r\n return \"Guía del formato del archivo de programación\";\r\n default:\r\n return '';\r\n }\r\n\r\n }\r\n\r\n componentWillMount() {\r\n this.setState({ isLoading: true });\r\n SaldoRegaloAPI.getAll().then(response => {\r\n this.setState({ isLoading: false, saldos: response.data , saldosBackUp:response.data });\r\n console.log(this.state.saldos)\r\n this.saldos = response.data;\r\n }).catch(err => {\r\n this.setState({isLoading: false})\r\n if(err.response)\r\n toast.error(err.response.data.Message)\r\n else\r\n toast.error(ErrorMessages.SinConexion)\r\n })\r\n }\r\n\r\n handleSearchInput = (text) => {\r\n let saldos = this.saldos.filter(saldo => saldo.ReasonDeposit.toLowerCase().includes(text.toLowerCase()));\r\n let state = this.state;\r\n state.filterText = text;\r\n state.saldos = saldos;\r\n this.setState(state);\r\n }\r\n\r\n handleFilterChange = (e) => {\r\n let state = { ...this.state };\r\n state.filters[e.target.name] = e.target.value;\r\n this.setState(state);\r\n }\r\n\r\n handleStatusChange = (e) => {\r\n let state = { ...this.state };\r\n state.filters.IsActive = e.target.value;\r\n this.setState(state);\r\n }\r\n\r\n handleDateChange = (date, attr) => {\r\n let state = { ...this.state };\r\n state.filters[attr] = date;\r\n this.setState(state);\r\n }\r\n\r\n handleDateChangeRaw = (e) => {\r\n e.preventDefault();\r\n }\r\n\r\n create = (singleModalForm = 1) => {\r\n this.setState({ showModal: true, typeModal: singleModalForm, widthModal: singleModalForm === 4 ? \"80%\" : \"\" });\r\n }\r\n\r\n validate_dateMayor = (fechaInicial,fechaFinal) => {\r\n let AnioI = fechaInicial.split(\"-\",1);\r\n let MesI = fechaInicial.split(\"-\",2);\r\n let DiaI = fechaInicial.split(\"-\",3);\r\n let AnioF = fechaFinal.split(\"-\",1);\r\n let MesF = fechaFinal.split(\"-\",2);\r\n let DiaF = fechaFinal.split(\"-\",3);\r\n\r\n //console.log(MesI)\r\n //console.log(MesF)\r\n\r\n if(parseInt(AnioF[0],10) < parseInt(AnioI[0],10)){\r\n //console.log(\"Fecha Inicial es mayor a Fecha Final (año)\");\r\n return false;\r\n } else if(parseInt(AnioF[0],10) == parseInt(AnioI[0],10) && parseInt(MesI[1],10) > parseInt(MesF[1],10)){\r\n //console.log(\"LFecha Inicial es mayor a Fecha Final (mes)\");\t\r\n return false;\t\t\r\n } else if (parseInt(AnioF[0],10) == parseInt(AnioI[0],10) && parseInt(MesF[1],10) == parseInt(MesI[1],10) && parseInt(DiaI[2],10) > parseInt(DiaF[2],10)){\r\n //console.log(\"Fecha Inicial es mayor a Fecha Final (día)\");\r\n return false;\r\n }\r\n \r\n return true;\r\n\r\n }\r\n \r\n\r\n getSaldosFiltered = () => {\r\n //console.clear()\r\n //this.setState({ isLoading: true });\r\n let body = { ...this.state.filters };\r\n body.StarDate = body.StarDate !== null && body.StarDate !== \"\" ? body.StarDate.format('YYYY-MM-DD') : \"\";\r\n body.EndDate = body.EndDate !== null && body.EndDate !== \"\" ? body.EndDate.format('YYYY-MM-DD') : \"\";\r\n body.CustomerNumber ? body.CustomerNumber = parseInt(body.CustomerNumber, 10) : body.CustomerNumber = '' ;\r\n let state = { ...this.state };\r\n\r\n if(body.StarDate !== \"\" && body.EndDate !== \"\"){\r\n let validarFechas = this.validate_dateMayor(body.StarDate,body.EndDate)\r\n if(!validarFechas){\r\n toast.error(\"Fecha Inicio no puede ser mayor a Fecha Fin\");\r\n return;\r\n }\r\n }\r\n\r\n //console.log(body)\r\n SaldoRegaloAPI.getFiltered(body).then(response => {\r\n state.saldos = response.data;\r\n this.saldos = response.data;\r\n //console.log(response.data)\r\n state.isLoading = false;\r\n state.filterText = '';\r\n this.setState(state);\r\n }).catch(err => {\r\n console.error(err);\r\n state.isLoading = false;\r\n state.filterText = '';\r\n this.setState(state);\r\n toast.error(\"Datos faltantes en filtros para búsqueda\");\r\n\r\n })\r\n }\r\n\r\n cleanFilters = () =>{\r\n let state = {...this.state};\r\n state.filters.CustomerNumber = \"\";\r\n state.filters.LoyaltyAccount = \"\";\r\n state.filters.StarDate = null;\r\n state.filters.EndDate = null;\r\n //console.log(state.filters.IsActive);\r\n state.filters.IsActive = \"-1\";\r\n state.filters.ReasonDeposit = \"\";\r\n state.saldos = state.saldosBackUp;\r\n this.setState(state);\r\n \r\n //console.log(state.filters.IsActive);\r\n //console.log(state.saldos)\r\n }\r\n\r\n save = (saldo, loyaltyAccount, confirm = false) => {\r\n if (confirm === false) {\r\n toast.info(\"Registros encontrados en el documento\");\r\n this.setState({ showModal: true, typeModal: 5, rows: saldo, widthModal: \"70%\", byLoyaltyAccount: loyaltyAccount });\r\n return;\r\n }\r\n if (this.state.typeModal === 1) {\r\n SaldoRegaloAPI.create_list(saldo, loyaltyAccount).then(response => {\r\n let state = { ...this.state };\r\n\r\n if (response.data.length > 0 && response.data[0].Error !== \"\") {\r\n toast.error(`Se encontraron errores en el registro: ${response.data[0].Error}`);\r\n this.setState(state);\r\n } else {\r\n toast.success(\"Registros agregados\")\r\n this.setState(state, () => {\r\n state.showModal = false;\r\n state.isLoading = false;\r\n state.typeModal = 0;\r\n this.setState(state);\r\n SaldoRegaloAPI.getAll().then(response => {\r\n state.saldos = response.data;\r\n }).catch(err => {\r\n this.setState({isLoading: false})\r\n if(err.response)\r\n toast.error(err.response.data.Message)\r\n else\r\n toast.error(ErrorMessages.SinConexion)\r\n });\r\n });\r\n }\r\n\r\n }).catch(err => {\r\n this.setState({isLoading: false})\r\n if(err.response)\r\n toast.error(err.response.data.Message)\r\n else\r\n toast.error(ErrorMessages.SinConexion)\r\n })\r\n } else {\r\n SaldoRegaloAPI.create_list(saldo, loyaltyAccount).then(response => {\r\n let state = { ...this.state };\r\n\r\n this.setState(state, () => {\r\n state.showModal = false;\r\n state.typeModal = 0;\r\n this.setState(state);\r\n })\r\n\r\n if (response.data.length > 0 && response.data[0].Error !== \"\") {\r\n let ErrorModal = 3;\r\n toast.error(\"Se encontraron errores en algunos registros del archivo.\");\r\n\r\n this.setState({ showModal: true, typeModal: ErrorModal, fileErrors: response.data, widthModal: \"70%\", byLoyaltyAccount: loyaltyAccount });\r\n } else {\r\n toast.success(\"Registros agregados\")\r\n }\r\n });\r\n }\r\n return;\r\n }\r\n\r\n remove = () => {\r\n SaldoRegaloAPI.remove(this.state.saldo.Identifier).then(response => {\r\n\r\n let state = { ...this.state };\r\n let saldoIndex = state.saldos.findIndex(s => s.Identifier === state.saldo.Identifier);\r\n\r\n state.saldos[saldoIndex].IsActive = false;\r\n state.pageSaldos[saldoIndex].IsActive = false;\r\n\r\n state.saldo = null;\r\n state.isLoading = false;\r\n this.setState(state, () => toast.success(\"Saldo regalo desactivado.\"));\r\n }).catch(err => {\r\n console.error(err)\r\n toast.error(\"Ocurrió un error al procesar la información, intenta más tarde.\");\r\n this.setState({ isLoading: false, saldo: null });\r\n })\r\n }\r\n\r\n\r\n patch = () => {\r\n SaldoRegaloAPI.patch(this.state.saldo.Identifier).then(response => {\r\n let state = { ...this.state };\r\n let saldoIndex = state.saldos.findIndex(s => s.Identifier === state.saldo.Identifier);\r\n state.saldos[saldoIndex].IsActive = state.saldos[saldoIndex].IsActive === true ? false : true;\r\n //this.state.pageSaldos[saldoIndex].IsActive = state.pageSaldos[saldoIndex].IsActive === true ? true : false\r\n state.isLoading = false;\r\n this.setState(state, () => toast.success(`Se le ha cambiado el estatus al saldo de regalo satisfactoriamente.`));\r\n }).catch(err => {\r\n console.error(err)\r\n toast.error(\"Ocurrió un error al procesar la información, intenta más tarde.\");\r\n this.setState({ isLoading: false, saldo: null });\r\n })\r\n }\r\n\r\n onKeyPressNumber(event) {\r\n const keyCode = event.keyCode || event.which;\r\n const keyValue = String.fromCharCode(keyCode);\r\n if (/\\+|-|e|E|\\./.test(keyValue) || event.target.value.length >= event.target.getAttribute('maxLength'))\r\n event.preventDefault();\r\n }\r\n\r\n render() {\r\n return (\r\n
    \r\n\r\n
    \r\n
    \r\n

    Agregar nuevo saldo de regalo

    \r\n
    \r\n
    \r\n
    \r\n \r\n \r\n \r\n
    \r\n
    \r\n
    \r\n
    \r\n
    \r\n
    \r\n

    Buscar que ya se encuentran programados

    \r\n
    \r\n
    \r\n
    \r\n
    \r\n
    \r\n
    \r\n \r\n
    \r\n
    \r\n { this.handleFilterChange(e) }}\r\n onKeyPress={this.onKeyPressNumber}\r\n autoComplete={\"off\"}\r\n />\r\n
    \r\n
    \r\n
    \r\n\r\n
    \r\n
    \r\n
    \r\n \r\n
    \r\n
    \r\n { this.handleFilterChange(e) }}\r\n onKeyPress={this.onKeyPressNumber}\r\n autoComplete={\"off\"}\r\n />\r\n
    \r\n
    \r\n
    \r\n\r\n
    \r\n
    \r\n
    \r\n \r\n
    \r\n
    \r\n
    \r\n
    \r\n \r\n this.handleDateChange(e, 'StarDate')}\r\n popperPlacement=\"bottom\"\r\n popperModifiers={{\r\n offset: {\r\n enabled: true,\r\n offset: '5px, 20px',\r\n },\r\n preventOverflow: {\r\n enabled: true,\r\n escapeWithReference: false,\r\n boundariesElement: 'viewport'\r\n }\r\n }}\r\n locale=\"es\"\r\n todayButton=\"Hoy\"\r\n dateFormat=\"DD/MM/YYYY\"\r\n className=\"input\"\r\n autoComplete={\"off\"}\r\n />\r\n \r\n
    \r\n
    \r\n
    \r\n\r\n
    \r\n
    \r\n
    \r\n
    \r\n
    \r\n \r\n
    \r\n\r\n
    \r\n
    \r\n
    \r\n \r\n this.handleDateChange(e, 'EndDate')}\r\n popperPlacement=\"bottom\"\r\n popperModifiers={{\r\n offset: {\r\n enabled: true,\r\n offset: '50px, 10px'\r\n },\r\n preventOverflow: {\r\n enabled: true,\r\n escapeWithReference: false,\r\n boundariesElement: 'viewport'\r\n }\r\n }}\r\n locale=\"es\"\r\n todayButton=\"Hoy\"\r\n dateFormat=\"DD/MM/YYYY\"\r\n className=\"input\"\r\n //moment(this.state.filters.StarDate)\r\n autoComplete={\"off\"}\r\n />\r\n \r\n
    \r\n
    \r\n
    \r\n
    \r\n
    \r\n
    \r\n
    \r\n
    \r\n \r\n
    \r\n
    \r\n this.handleFilterChange(e)}\r\n autoComplete={\"off\"}\r\n />\r\n
    \r\n
    \r\n
    \r\n
    \r\n
    \r\n
    \r\n \r\n
    \r\n
    \r\n
    \r\n
    \r\n
    \r\n \r\n
    \r\n
    \r\n
    \r\n
    \r\n
    \r\n
    \r\n
    \r\n
    \r\n
    \r\n \r\n
    \r\n \r\n
    \r\n
    \r\n
    \r\n
    \r\n
    \r\n \r\n
    \r\n \r\n
    \r\n
    \r\n\r\n
    \r\n
    \r\n
    \r\n
    \r\n
    \r\n
    \r\n

    \r\n
    \r\n
    \r\n
    \r\n \r\n
    \r\n
    \r\n {this.state.saldos.length > 0 || this.state.filterText !== ''\r\n ?\r\n this.handleSearchInput(t)}\r\n itemName={'por motivo p. ej: Mes de café gratis'}\r\n />\r\n : \"\"\r\n }\r\n
    \r\n
    \r\n
    \r\n
    \r\n
    \r\n {this.state.saldos.length !== 0\r\n ? {\r\n this.setState({ saldo: saldo, isLoading: true })\r\n this.patch();\r\n }}\r\n changeStatus={(saldo) => {\r\n this.setState({ saldo: saldo, isLoading: true }, () => this.patch())\r\n\r\n }}\r\n noActions\r\n\r\n />\r\n : }\r\n\r\n this.setState({ pageSaldos: saldos })} />\r\n\r\n\r\n
    \r\n
    \r\n {this.state.showModal &&\r\n this.setState({ showModal: false })}\r\n >\r\n {this.renderSwitch(this.state.typeModal)}\r\n \r\n }\r\n {this.state.removeModal &&\r\n this.remove()}\r\n cancel={() => {\r\n let state = { ...this.state };\r\n state.removeModal = false;\r\n this.setState(state);\r\n }}\r\n modalTitle={\"Eliminar registro de saldo regalo.\"}\r\n />\r\n }\r\n \r\n \r\n
    \r\n )\r\n }\r\n}","import {apiUrl} from '../constants';\r\nimport axios from 'axios';\r\nvar request = axios.create({\r\n baseURL: apiUrl,\r\n headers: {'Authorization':'Bearer ' +localStorage.getItem('token'),'Content-Type':'application/json'}\r\n})\r\n\r\nexport default class ConfigurationVPAPI {\r\n static GetConfigVP(idCaffenio, NumConfiguracionVP){\r\n return request.get(`/ConfigurationVP/${idCaffenio}/${NumConfiguracionVP}`);\r\n }\r\n\r\n static GetTipoSolicitudes(){\r\n return request.get(`/ConfigurationVP/TipoSolicitudes`);\r\n }\r\n\r\n static GetNumConfigsVP(idCaffenio){\r\n return request.get(`/ConfigurationVP/NumConfiguracionesVP/${idCaffenio}`);\r\n }\r\n \r\n static UpdateConfigurationVP(newVPConfiguration){\r\n return request.put('/ConfigurationVP/UpdateConfigurationVP', newVPConfiguration);\r\n }\r\n\r\n static CreateDefaultConfigVP(newVPConfiguration){\r\n return request.post('/ConfigurationVP/NewConfigurationVP', newVPConfiguration);\r\n }\r\n\r\n static ActivarDosLineasProduccion(idCaffenio,numVP1, numVP2){\r\n return request.put(`/ConfigurationVP/ActivarDosLineasProduccion/${idCaffenio}/${numVP1}/${numVP2}`);\r\n }\r\n\r\n static DesactivarDosLineasProduccion(idCaffenio){\r\n return request.put(`/ConfigurationVP/DesactivarDosLineasProduccion/${idCaffenio}`);\r\n }\r\n\r\n static GetVPs(idCaffenio){\r\n return request.get(`/ConfigurationVP/GetVPs/${idCaffenio}`);\r\n }\r\n}\r\n","import { apiUrl } from \"../constants\";\r\nimport axios from 'axios';\r\nvar request = axios.create({\r\n baseURL: apiUrl,\r\n headers: {'Authorization':'Bearer ' +localStorage.getItem('token'),'Content-Type':'application/json'}\r\n})\r\n\r\nexport default class ComboDatosAPI {\r\n \r\n static getPromoList() {\r\n return request.get(`/PromoList`);\r\n }\r\n\r\n static getFactData() {\r\n return request.get(`/FactData`);\r\n }\r\n\r\n static getTaxRate() {\r\n return request.get(`/TaxRate`);\r\n }\r\n\r\n static getSegment() {\r\n return request.get(`/Segment`);\r\n }\r\n\r\n static getDirState(pais) {\r\n return request.get(`/State${pais ? \"?pais=\"+ pais : \"\" } `);\r\n }\r\n\r\n static getDirCity(estado) {\r\n return request.get(`/City${estado ? \"?estado=\"+ estado : \"\" } `);\r\n }\r\n\r\n static getDirSuburb(ciudad) {\r\n return request.get(`/Suburb${ciudad ? \"?ciudad=\"+ ciudad : \"\" }`);\r\n }\r\n\r\n static getDirPostalCode() {\r\n return request.get(`/PostalCode`);\r\n }\r\n\r\n static getDirCountry() {\r\n return request.get(`/Country`);\r\n }\r\n\r\n}","import React, { useEffect, useState } from 'react';\r\n\r\n// Components\r\nimport TextField from '../util/textfield/TextField';\r\nimport Field from '../util/field/Field';\r\nimport Dropdown from '../util/dropdown/Dropdown';\r\nimport Loading from '../util/loading/Loading';\r\nimport DatePicker from 'react-datepicker';\r\nimport Select from 'react-select';\r\n\r\n// Services\r\nimport MenuDriveAPI from '../../services/MenuDrive';\r\nimport PriceDriveAPI from '../../services/PriceDrive';\r\nimport ComboDatosAPI from '../../services/ComboDatos';\r\n\r\n// Utils\r\nimport { toast } from 'react-toastify';\r\nimport ErrorMessages from '../../util/validation-error-messages';\r\n\r\nexport const CaffenioForm = ({ save }) => {\r\n\r\n const [ caffenio, setCaffenio ] = useState({\r\n GPSucursalId: null,\r\n Name: \"\",\r\n ShortName: \"\",\r\n NewName: \"\",\r\n OpenDate: \"\",\r\n CloseDate: \"\",\r\n WarehouseGPCode: \"\",\r\n Active: false,\r\n TaxRateId: null,\r\n PriceListId: null,\r\n PromoListId: null,\r\n MenuId: null,\r\n FactDataId: null,\r\n RailsNumber: \"\",\r\n MobileSales: false,\r\n RefillRestrictions: false,\r\n idMunicipio: \"\",\r\n Municipio: \"\",\r\n idColonia: null,\r\n idEstado: \"\",\r\n Estado: \"\",\r\n BetStreets: \"\",\r\n ExtNumber: \"\",\r\n MainStreet: \"\",\r\n NumAlmacen: \"\",\r\n PostalCode: \"\",\r\n Segment: null,\r\n Suburb: \"\",\r\n });\r\n\r\n const [ lists, setLists ] = useState({\r\n arrMenus: [],\r\n arrListasPrecios: [],\r\n arrListaPromo: [],\r\n arrDatosFact: [],\r\n arrTasaImp: [],\r\n arrSegmento: [],\r\n arrState: [],\r\n arrCities: [],\r\n arrColonias: [],\r\n arrPostalCode: [],\r\n selectedMenu: null,\r\n selectedListaPrecio: null,\r\n isEditing: false,\r\n isLoading: false\r\n })\r\n\r\n useEffect(() => {\r\n setLists({\r\n ...lists,\r\n isLoading: true\r\n });\r\n let arrMenus = [];\r\n let arrListasPrecios = [];\r\n let arrListaPromo = [];\r\n let arrDatosFact = [];\r\n let arrTasaImp = [];\r\n let arrSegmento = [];\r\n let arrPostalCode = [];\r\n let arrState = [];\r\n let arrCities = [];\r\n let arrColonias = [];\r\n\r\n Promise.all([\r\n MenuDriveAPI.get().then(response => arrMenus = response.data),\r\n PriceDriveAPI.get().then(response => arrListasPrecios = response.data),\r\n ComboDatosAPI.getPromoList().then(response => arrListaPromo = response.data),\r\n ComboDatosAPI.getFactData().then(response => arrDatosFact = response.data),\r\n ComboDatosAPI.getTaxRate().then(response => arrTasaImp = response.data),\r\n ComboDatosAPI.getSegment().then(response => arrSegmento = response.data),\r\n ComboDatosAPI.getDirPostalCode().then(response => arrPostalCode = response.data),\r\n ComboDatosAPI.getDirState().then(response => arrState = response.data),\r\n ComboDatosAPI.getDirCity().then(response => arrCities = response.data),\r\n ComboDatosAPI.getDirSuburb().then(response => arrColonias = response.data)\r\n ]).catch( err=> {\r\n setLists({\r\n ...lists,\r\n isLoading: false\r\n })\r\n if(err.response)\r\n toast.error(err.response.data.Message)\r\n else\r\n toast.error(ErrorMessages.SinConexion)\r\n }).finally(() => setLists({\r\n ...lists,\r\n arrMenus,\r\n arrListasPrecios,\r\n arrListaPromo,\r\n arrDatosFact,\r\n arrTasaImp,\r\n arrSegmento,\r\n arrPostalCode,\r\n arrState,\r\n arrCities,\r\n arrColonias,\r\n isLoading: false,\r\n }));\r\n }, []);\r\n\r\n const handleChange = ({ target }) => {\r\n setCaffenio({\r\n ...caffenio,\r\n [target.name]: target.value\r\n });\r\n }\r\n\r\n // Solo permite números, sin signos ni exponenciales\r\n const onKeyPressNumber = (event) => {\r\n const keyCode = event.keyCode || event.which;\r\n const keyValue = String.fromCharCode(keyCode);\r\n if (/\\+|-|e|E|\\./.test(keyValue) || event.target.value.length >= event.target.getAttribute('maxLength'))\r\n event.preventDefault();\r\n }\r\n\r\n const handleDateChange = (date, stringDate) => {\r\n setCaffenio({\r\n ...caffenio,\r\n [stringDate]: date\r\n })\r\n }\r\n\r\n return (\r\n
    \r\n
    \r\n
    \r\n \r\n handleChange(e)}\r\n />\r\n \r\n
    \r\n
    \r\n \r\n handleChange(e)}\r\n />\r\n \r\n
    \r\n
    \r\n \r\n handleChange(e)}\r\n /> \r\n \r\n
    \r\n
    \r\n \r\n handleChange(e)}\r\n />\r\n \r\n
    \r\n
    \r\n \r\n handleChange(e)}\r\n />\r\n \r\n
    \r\n
    \r\n \r\n { setCaffenio({\r\n ...caffenio,\r\n PriceListId: value\r\n })}\r\n labelKey={\"Description\"}\r\n />}\r\n \r\n
    \r\n
    \r\n \r\n handleChange(e)}\r\n />\r\n \r\n
    \r\n
    \r\n \r\n { setCaffenio({\r\n ...caffenio,\r\n MenuId: value\r\n })}\r\n labelKey={\"Description\"}\r\n />}\r\n \r\n
    \r\n
    \r\n \r\n { setCaffenio({\r\n ...caffenio,\r\n PromoListId: value\r\n })}\r\n labelKey={\"Description\"}\r\n />}\r\n \r\n
    \r\n
    \r\n \r\n {}}\r\n />\r\n \r\n
    \r\n
    \r\n \r\n {}}\r\n />\r\n \r\n
    \r\n
    \r\n \r\n {}}\r\n />\r\n \r\n
    \r\n
    \r\n \r\n handleChange(e)}\r\n />\r\n \r\n
    \r\n
    \r\n
    \r\n
    \r\n \r\n
    \r\n
    \r\n
    \r\n
    \r\n handleDateChange(date, 'OpenDate')}\r\n popperPlacement=\"bottom\"\r\n popperModifiers={{\r\n offset: {\r\n enabled: true,\r\n offset: '5px, 20px',\r\n },\r\n preventOverflow: {\r\n enabled: true,\r\n escapeWithReference: false,\r\n boundariesElement: 'viewport'\r\n }\r\n }}\r\n todayButton=\"Hoy\"\r\n dateFormat=\"dd/MM/yyyy\"\r\n className=\"input\"\r\n autoComplete={\"off\"}\r\n maxDate={caffenio.CloseDate}\r\n />\r\n
    \r\n
    \r\n
    \r\n\r\n
    \r\n
    \r\n
    \r\n
    \r\n
    \r\n \r\n
    \r\n
    \r\n
    \r\n
    \r\n handleDateChange(date, 'CloseDate')}\r\n popperPlacement=\"bottom\"\r\n minDate={caffenio.OpenDate}\r\n popperModifiers={{\r\n offset: {\r\n enabled: true,\r\n offset: '50px, 10px'\r\n },\r\n preventOverflow: {\r\n enabled: true,\r\n escapeWithReference: false,\r\n boundariesElement: 'viewport'\r\n }\r\n }}\r\n todayButton=\"Hoy\"\r\n dateFormat=\"dd/MM/yyyy\"\r\n className=\"input\"\r\n autoComplete={\"off\"}\r\n />\r\n
    \r\n
    \r\n
    \r\n
    \r\n
    \r\n
    \r\n \r\n
    \r\n setCaffenio({\r\n ...caffenio,\r\n FactDataId: values.value\r\n })}\r\n noOptionsMessage={() => \"No hay opciones\"}\r\n options={lists.arrDatosFact.map(ci => { return {\r\n ...ci,\r\n label: ci.SocialReason,\r\n value: ci.FactDataId\r\n } })}\r\n />\r\n
    \r\n
    \r\n
    \r\n \r\n
    \r\n setCaffenio({\r\n ...caffenio,\r\n TaxRateId: values.value\r\n })}\r\n noOptionsMessage={() => \"No hay opciones\"}\r\n options={lists.arrTasaImp.map(ci => { return {\r\n ...ci,\r\n label: ci.Description,\r\n value: ci.TaxRateId\r\n } })}\r\n />\r\n
    \r\n
    \r\n
    \r\n \r\n
    \r\n setCaffenio({\r\n ...caffenio,\r\n SegmentId: values.value\r\n })}\r\n noOptionsMessage={() => \"No hay opciones\"}\r\n options={lists.arrSegmento.map(ci => { return {\r\n ...ci,\r\n label: ci.Name,\r\n value: ci.SegmentId\r\n } })}\r\n />\r\n
    \r\n
    \r\n
    \r\n \r\n
    \r\n setCaffenio({\r\n ...caffenio,\r\n idPostalCode: values.value\r\n })}\r\n noOptionsMessage={() => \"No hay opciones\"}\r\n options={lists.arrPostalCode.map(ci => { return {\r\n ...ci,\r\n label: ci.Code,\r\n value: ci.postalCodeId\r\n } })}\r\n />\r\n
    \r\n
    \r\n
    \r\n \r\n
    \r\n setCaffenio({\r\n ...caffenio,\r\n State: values.label\r\n })}\r\n noOptionsMessage={() => \"No hay opciones\"}\r\n options={lists.arrState.map(ci => { return {\r\n ...ci,\r\n label: ci.Name,\r\n value: ci.StateId\r\n } })}\r\n />\r\n
    \r\n
    \r\n
    \r\n \r\n
    \r\n setCaffenio({\r\n ...caffenio,\r\n idMunicipio: values.value\r\n })}\r\n noOptionsMessage={() => \"No hay opciones\"}\r\n options={lists.arrCities.map(ci => { return {\r\n ...ci,\r\n label: ci.Name,\r\n value: ci.CityId\r\n } })}\r\n />\r\n
    \r\n
    \r\n
    \r\n \r\n
    \r\n setCaffenio({\r\n ...caffenio,\r\n idColonia: values.value\r\n })}\r\n noOptionsMessage={() => \"No hay opciones\"}\r\n options={ lists.arrColonias.map(ci => { return {\r\n ...ci,\r\n label: ci.Name,\r\n value: ci.SuburbId\r\n }})}\r\n />\r\n
    \r\n
    \r\n
    \r\n \r\n handleChange(e)}/>\r\n \r\n
    \r\n
    \r\n \r\n handleChange(e)}/>\r\n \r\n
    \r\n
    \r\n \r\n handleChange(e)}/>\r\n \r\n
    \r\n\r\n
    \r\n
    \r\n save(caffenio)}>\r\n Guardar\r\n \r\n
    \r\n
    \r\n \r\n \r\n
    \r\n
    \r\n \r\n );\r\n}\r\n\r\nCaffenioForm.defaultProps = {\r\n isEditing: false,\r\n caffenio: {\r\n GPSucursalId: null,\r\n Name: \"\",\r\n ShortName: \"\",\r\n NumAlmacenGP: \"\",\r\n NewName: \"\",\r\n PriceListId: 0,\r\n NumLanes: \"\",\r\n Menu: 0,\r\n PromoList: 0,\r\n Active: false,\r\n MobileSales: false,\r\n RestRefill: false,\r\n NumAlmacen: \"\",\r\n OpeningDate: \"\",\r\n ClosingDate: \"\",\r\n FactData: 0,\r\n TaxRateId: 0,\r\n Segment: 0,\r\n State: \"\",\r\n City: \"\",\r\n Suburb: \"\",\r\n ExtNumber: \"\",\r\n MainStreet: \"\",\r\n PostalCode: \"\",\r\n BetStreets: \"\"\r\n }\r\n}\r\n\r\nexport default CaffenioForm;","\r\nimport React from \"react\";\r\nimport Field from \"../util/field/Field\";\r\nimport Loading from \"../util/loading/Loading\";\r\nimport Modal from '../util/modal/Modal';\r\nimport AcceptModal from '../util/acceptModal/AcceptModal';\r\nimport HasAccess from '../util/hasAccess/HasAccess';\r\n\r\nexport function ConfiguracionVPComponent({\r\n checkHasEmptyFields,\r\n onKeyPressNumber,\r\n onKeyDown,\r\n handleChange,\r\n handleTamLetra,\r\n handleNumVP,\r\n handleClickToggle,\r\n handleChangeTextInput,\r\n handleClickToggleArray,\r\n submit,\r\n cancel,\r\n setConfigurationVPActive,\r\n createDefaultConfigVP,\r\n toggleDosLineasProduccion,\r\n handleDosLineasProduccion,\r\n activateDosLineasProduccion,\r\n deactivateDosLineasProduccion,\r\n closeAcceptModal,\r\n getDefaultTamLetras,\r\n ...props\r\n}) {\r\n return (\r\n
    \r\n
    \r\n
    \r\n \r\n \r\n \r\n
    \r\n
    \r\n \r\n \r\n \r\n
    \r\n
    \r\n \r\n \r\n \r\n
    \r\n
    \r\n \r\n \r\n \r\n
    \r\n\r\n
    \r\n \r\n onKeyDown(e)}\r\n onChange={(e) => handleNumVP(e)}\r\n />\r\n \r\n
    \r\n\r\n
    \r\n \r\n handleChange(e)}\r\n \r\n />\r\n \r\n
    \r\n\r\n
    \r\n
    \r\n createDefaultConfigVP()}\r\n disabled={!(props.ConfigurationVPButtonisActive)}\r\n className={\r\n (props.ConfigurationVPButtonisActive) ? 'button is-success' : 'button is-light'\r\n }\r\n >\r\n Activar VP\r\n \r\n
    \r\n
    \r\n\r\n
    \r\n
    \r\n getDefaultTamLetras()}\r\n disabled={props.ConfigurationVPButtonisActive}\r\n className={\r\n (!(props.ConfigurationVPButtonisActive)) ? 'button is-success' : 'button is-light'\r\n }\r\n >\r\n Valores por defecto\r\n \r\n
    \r\n
    \r\n\r\n \r\n\r\n
    \r\n
    \r\n\r\n {props.ConfigurationVPIsActive && \r\n
    \r\n\r\n {/* \r\n Tamaño de letra para 1-6 ordenes\r\n */}\r\n\r\n {props.configurationVP.TamLetraConfiguracionVP.map((element, index) => (\r\n \r\n
    \r\n \r\n
    \r\n\r\n
    \r\n \r\n handleTamLetra(e,index)}\r\n />\r\n \r\n
    \r\n\r\n
    \r\n \r\n handleTamLetra(e,index)}\r\n />\r\n \r\n
    \r\n\r\n
    \r\n \r\n handleTamLetra(e,index)}\r\n />\r\n \r\n
    \r\n\r\n
    \r\n
    \r\n ))}\r\n \r\n {/* \r\n Tamaño de letra del contador\r\n */}\r\n \r\n \r\n
    \r\n \r\n handleChange(e)}\r\n />\r\n \r\n
    \r\n \r\n\r\n {/* \r\n Timer para actualización de ordenes\r\n */}\r\n\r\n \r\n
    \r\n \r\n handleChange(e)}\r\n />\r\n \r\n
    \r\n \r\n\r\n {/* \r\n Pedidos simultáneos\r\n */}\r\n\r\n \r\n
    \r\n \r\n onKeyDown(e)}\r\n onChange={(e) => handleChange(e)}\r\n />\r\n \r\n
    \r\n\r\n {/* \r\n Carriles a mostrar\r\n */}\r\n\r\n
    \r\n \r\n handleChangeTextInput(e)}\r\n />\r\n \r\n
    \r\n \r\n
    \r\n\r\n \r\n\r\n {/* \r\n Actualización automática\r\n */}\r\n\r\n
    \r\n \r\n {}}\r\n />\r\n handleClickToggle(e,\"ActualizacionAutomatica\")}\r\n />\r\n \r\n
    \r\n\r\n\r\n {/* \r\n Checkbox dos líneas de producción\r\n */}\r\n\r\n
    \r\n \r\n {}}\r\n />\r\n toggleDosLineasProduccion(e)}\r\n />\r\n \r\n
    \r\n\r\n {props.showModalDosLineasProduccion && props.showModal && \r\n cancel()}\r\n >\r\n {props.listaDosLineasProduccion.map((element, index) => (\r\n \r\n
    \r\n \r\n handleDosLineasProduccion(element,index)}\r\n />\r\n {}}\r\n />\r\n \r\n \r\n
    \r\n
    \r\n ))}\r\n\r\n
    \r\n activateDosLineasProduccion(e)}\r\n >\r\n Activar\r\n \r\n {/* {!checkHasEmptyFields() && Son requeridos todos los campos para guardar} */}\r\n
    \r\n \r\n } \r\n \r\n {props.showModalConfirmationMessage &&\r\n Se desactivará el modo dos líneas de producción de todas las VPs de este Caffenio Drive ¿Desea Continuar?

    }\r\n isActive={props.showModalConfirmationMessage}\r\n willSave={true}\r\n done={() => deactivateDosLineasProduccion()}\r\n cancel={() => closeAcceptModal()}\r\n />\r\n }\r\n\r\n {/* \r\n Quitar pedidos auto\r\n */}\r\n\r\n
    \r\n \r\n {}}\r\n />\r\n handleClickToggle(e,\"PedidosAuto\")}\r\n />\r\n \r\n
    \r\n\r\n
    \r\n\r\n {/* {/* \r\n Tipos de solicitud para ordenes\r\n */}\r\n\r\n
    \r\n \r\n
    \r\n\r\n {props.tipoDeSolicitudes.map((element, index) => (\r\n \r\n
    \r\n \r\n {}}\r\n />\r\n handleClickToggleArray(e, index)}\r\n />\r\n \r\n
    \r\n
    \r\n ))}\r\n\r\n
    \r\n
    \r\n
    \r\n \r\n\r\n
    \r\n
    \r\n submit(e)}\r\n >\r\n Guardar\r\n \r\n {/* {!checkHasEmptyFields() && Son requeridos todos los campos para guardar} */}\r\n
    \r\n
    \r\n\r\n \r\n
    }\r\n
    \r\n\r\n {/* \r\n \r\n */}\r\n\r\n \r\n\r\n
    \r\n
    \r\n );\r\n}\r\n","import React from \"react\"\r\nimport { ConfiguracionVPComponent } from \"./ConfiguracionVPComponent\"\r\nimport { toast } from 'react-toastify';\r\nimport ErrorMessages from '../../util/validation-error-messages';\r\nimport ConfigurationVPAPI from '../../services/ConfigurationVP';\r\nimport update from 'immutability-helper';\r\n\r\nclass ConfiguracionVPContainer extends React.Component {\r\n\r\n constructor(props){\r\n super(props);\r\n this.state = {\r\n caffenio: {...this.props.caffenio},\r\n configurationVP: {...this.props.configurationVP},\r\n tipoDeSolicitudes: [...this.props.tipoDeSolicitudes],\r\n ConfigurationVPIsActive: false,\r\n ConfigurationVPButtonisActive: false,\r\n isEditing: false,\r\n isLoading: false, \r\n isSubmitting: false,\r\n hasEmptyFields: false,\r\n dosLineasProduccionisActive: false,\r\n showModalDosLineasProduccion: false,\r\n showModal: false,\r\n numConfigsVP: [],\r\n listaDosLineasProduccion: [],\r\n selectedOptionDosLineasProduccion: 0,\r\n showModalConfirmationMessage: false,\r\n activasVPDosLineasProduccion: [],\r\n VPs: [],\r\n }\r\n this.baseState = this.state;\r\n\r\n \r\n }\r\n\r\n componentDidMount(){\r\n let newState = update(this.state, {\r\n isLoading: {$set: true},\r\n configurationVP: {\r\n idCaffenio: {$set: this.state.caffenio.idCaffenio}\r\n }\r\n });\r\n this.setState(newState);\r\n this.getConfigVP();\r\n this.getVPs();\r\n }\r\n\r\n /**\r\n * Función que llamar a un servicio para obtener\r\n * la información de las configuraciones VP para un idCaffenio\r\n */\r\n\r\n getVPs = async() => {\r\n this.state.VPs = (await ConfigurationVPAPI.GetVPs(this.state.caffenio.idCaffenio)).data;\r\n }\r\n\r\n\r\n /**\r\n * Función que se encarga de llamar al servicio para obtener la configuración VP dado\r\n * un idCaffenio y un NumConfiguraciónVP\r\n */\r\n\r\n getConfigVP = async() => {\r\n try{\r\n let configVP = await ConfigurationVPAPI.GetConfigVP(this.state.caffenio.idCaffenio, this.state.configurationVP.NumConfiguracionVP);\r\n \r\n let newState = update(this.state, {\r\n configurationVP: {$set: configVP.data},\r\n isLoading: {$set: false},\r\n ConfigurationVPButtonisActive: {$set: false},\r\n ConfigurationVPIsActive: {$set: true}\r\n });\r\n this.setState(newState);\r\n\r\n } catch (err) {\r\n let newState = update(this.state, {\r\n isLoading: {$set: false},\r\n ConfigurationVPButtonisActive: {$set: true},\r\n });\r\n this.setState(newState);\r\n } \r\n\r\n //Se ponen como activas los tipos de solicitud que son aceptas para determinada configuracionVP\r\n this.state.tipoDeSolicitudes.forEach((i) => {\r\n this.state.configurationVP.TiposSolicitudConfiguracionVP.forEach((j) => {\r\n if(i.idTipoSolicitud == j.idTipoSolicitud){\r\n i.Activo = true;\r\n }\r\n });\r\n });\r\n\r\n let newState = update(this.state, {\r\n isLoading: {$set: false}\r\n });\r\n this.setState(newState); \r\n \r\n }\r\n\r\n /**\r\n * Función que se encarga de llamar al servicio para obtener el tamaño default de letra\r\n * por número de ordenes\r\n */\r\n\r\n getDefaultTamLetras = () => {\r\n let newState = update(this.state, {\r\n isLoading: {$set: true},\r\n });\r\n this.setState(newState, async() => {\r\n try{\r\n //Hacemos un getConfiguracionVP para un Caffenio que guarda una configuracion default\r\n let configVP = await ConfigurationVPAPI.GetConfigVP(54, 1);\r\n let newState = update(this.state, {\r\n configurationVP: {\r\n TamLetraConfiguracionVP: {$set: configVP.data.TamLetraConfiguracionVP}\r\n },\r\n isLoading: {$set: false},\r\n });\r\n this.setState(newState);\r\n \r\n } catch (err) {\r\n let newState = update(this.state, {\r\n isLoading: {$set: false},\r\n ConfigurationVPButtonisActive: {$set: true},\r\n });\r\n this.setState(newState);\r\n } \r\n });\r\n }\r\n\r\n /**\r\n * Función que se encarga de llamar al servicio para crear una configuración VP default\r\n * con datos default\r\n */\r\n\r\n createDefaultConfigVP = async() => {\r\n\r\n //Se ponen como default todos los tipos de solicitudes que existen\r\n //actualizamos TiposSolicitudConfiguracionVP\r\n let newTipoDeSolicitudes = this.state.tipoDeSolicitudes.map(e => { return e; });\r\n\r\n //Se habilita el botón para si lo desea activar la configuración VP\r\n let newState = update(this.state, {\r\n isLoading: {$set: true},\r\n configurationVP: {\r\n TiposSolicitudConfiguracionVP: {$set: newTipoDeSolicitudes}\r\n } \r\n });\r\n this.setState(newState);\r\n\r\n try{\r\n let newConfig = await ConfigurationVPAPI.CreateDefaultConfigVP(this.state.configurationVP);\r\n let newState = update(this.state, {\r\n isLoading: {$set: false},\r\n ConfigurationVPButtonisActive: {$set: false},\r\n ConfigurationVPIsActive: {$set: true},\r\n configurationVP: {$set: newConfig.data.newIdConfigurationVP}\r\n });\r\n this.setState(newState);\r\n\r\n } catch (err){\r\n if(err.response)\r\n toast.error(err.response.data.Message)\r\n else\r\n toast.error(ErrorMessages.SinConexion)\r\n \r\n }\r\n\r\n //Se ponen como activas los tipos de solicitud que son aceptas para determinada configuracionVP\r\n this.state.tipoDeSolicitudes.forEach((i) => {\r\n this.state.configurationVP.TiposSolicitudConfiguracionVP.forEach((j) => {\r\n if(i.idTipoSolicitud == j.idTipoSolicitud){\r\n i.Activo = true;\r\n }\r\n });\r\n });\r\n\r\n let newState2 = update(this.state, {\r\n isLoading: {$set: false}\r\n });\r\n this.setState(newState2); \r\n \r\n }\r\n\r\n\r\n /**\r\n * Función que se encarga de llamar al servicio para obtener el número de configuraciones VP dado\r\n * un idCaffenio\r\n */\r\n\r\n getNumConfigsVP = () => {\r\n try{\r\n this.changeLoading();\r\n ConfigurationVPAPI.GetNumConfigsVP(this.state.caffenio.idCaffenio).then( response => {\r\n let newState = update(this.state, {\r\n numConfigsVP: {$set: response.data},\r\n isLoading: {$set: false}\r\n });\r\n this.setState(newState);\r\n }) \r\n } catch (err) {\r\n if(err.response)\r\n toast.error(err.response.data.Message)\r\n else\r\n toast.error(ErrorMessages.SinConexion)\r\n }\r\n }\r\n\r\n\r\n /**\r\n * Función que se encarga de llamar al servicio para obtener la configuración VP dado\r\n * un idCaffenio y un NumConfiguraciónVP\r\n */\r\n\r\n setConfigurationVPActive = () => {\r\n let newState = update(this.state, {\r\n ConfigurationVPIsActive: {$set: true},\r\n });\r\n this.setState(newState);\r\n }\r\n\r\n /**\r\n * Función que se encarga de llamar al servicio que ACTIVA las dos líneas de producción\r\n */\r\n\r\n activateDosLineasProduccion = (e) => {\r\n e.preventDefault();\r\n this.changeLoading();\r\n try{\r\n ConfigurationVPAPI.ActivarDosLineasProduccion(this.state.caffenio.idCaffenio,\r\n this.state.configurationVP.NumConfiguracionVP, this.state.selectedOptionDosLineasProduccion).then(response =>{\r\n this.closeModal();\r\n })\r\n }catch (err){\r\n if(err.response)\r\n toast.error(err.response.data.Message)\r\n else\r\n toast.error(ErrorMessages.SinConexion)\r\n }\r\n this.changeLoading();\r\n }\r\n\r\n\r\n\r\n /**\r\n * Función que se encarga de llamar al servicio que DESACTIVA las dos líneas de producción\r\n */\r\n\r\n deactivateDosLineasProduccion = () => {\r\n this.changeLoading();\r\n try{\r\n ConfigurationVPAPI.DesactivarDosLineasProduccion(this.state.caffenio.idCaffenio).then(response =>{\r\n this.closeModal();\r\n })\r\n }catch (err){\r\n if(err.response)\r\n toast.error(err.response.data.Message)\r\n else\r\n toast.error(ErrorMessages.SinConexion)\r\n }\r\n this.changeLoading();\r\n \r\n \r\n }\r\n\r\n\r\n /**\r\n * Función que se encarga de manejar los checkboxes del modal de dos líneas producción\r\n */\r\n\r\n handleDosLineasProduccion = (e,index) => {\r\n if(this.state.listaDosLineasProduccion[index].NumConfiguracionVP === this.state.selectedOptionDosLineasProduccion){\r\n let newState = update(this.state, {\r\n selectedOptionDosLineasProduccion: {$set: 0}\r\n })\r\n this.setState(newState);\r\n }\r\n else {\r\n let newState = update(this.state, {\r\n selectedOptionDosLineasProduccion: {$set: this.state.listaDosLineasProduccion[index].NumConfiguracionVP}\r\n })\r\n this.setState(newState);\r\n }\r\n }\r\n\r\n /**\r\n * Función que se encarga de cambiar el estado para mostrar el modal de dos líneas producción\r\n */\r\n\r\n toggleDosLineasProduccion = (e) => {\r\n e.stopPropagation();\r\n if (this.state.configurationVP.DosLineasProduccion){\r\n let newState = update(this.state, {\r\n showModalConfirmationMessage: {$set: true},\r\n showModal: {$set: true}\r\n\r\n })\r\n this.setState(newState);\r\n }\r\n else {\r\n try{\r\n this.changeLoading();\r\n ConfigurationVPAPI.GetNumConfigsVP(this.state.caffenio.idCaffenio).then( response => {\r\n \r\n let auxLista = response.data.map(obj => (\r\n {NumConfiguracionVP: obj , Nombre: \"Configuracion VP \" + obj, Activo: false }\r\n ))\r\n \r\n let auxListaDosLineasProduccion = auxLista.filter(e => e.NumConfiguracionVP != this.state.configurationVP.NumConfiguracionVP);\r\n \r\n let newState = update(this.state, {\r\n listaDosLineasProduccion:{$set: auxListaDosLineasProduccion},\r\n numConfigsVP: {$set: response.data},\r\n isLoading: {$set: false}\r\n });\r\n\r\n let auxVPsDosLineasProduccionActiva = false;\r\n this.state.VPs.forEach(element => {\r\n if (element.DosLineasProduccion) auxVPsDosLineasProduccionActiva = true;\r\n });\r\n\r\n this.setState(newState, () => {\r\n if(this.state.numConfigsVP.length < 2){\r\n toast.error(`No se ha podido activar el modo \"Dos Líneas Producción\" ya que no se cuenta con otra Configuracion VP activa`);\r\n }\r\n \r\n else if (auxVPsDosLineasProduccionActiva){\r\n toast.error(`No se ha podido activar el modo \"Dos Líneas Producción\" ya que ya se encuentra activo en otro par de VPs`);\r\n }\r\n else {\r\n let newState2 = update(this.state, {\r\n showModal:{$set: true},\r\n showModalDosLineasProduccion: {$set: true}\r\n });\r\n this.setState(newState2);\r\n }\r\n });\r\n }) \r\n } catch (err) {\r\n if(err.response)\r\n toast.error(err.response.data.Message)\r\n else\r\n toast.error(ErrorMessages.SinConexion)\r\n }\r\n }\r\n\r\n }\r\n\r\n /**\r\n * Función que es llamada cuando se da cancel en el modal de dos líneas producción\r\n */\r\n\r\n cancel = () => {\r\n let newState = update(this.state, {\r\n showModalDosLineasProduccion: {$set: false}\r\n });\r\n this.setState(newState);\r\n }\r\n\r\n /**\r\n * Función que se encarga de regresar el estado a su estado inicial\r\n */\r\n\r\n resetState = () => {\r\n this.setState(this.baseState)\r\n }\r\n\r\n /**\r\n * Función que se encarga de checar si hay campos vacios en el modal\r\n */\r\n\r\n checkHasEmptyFields = () => {\r\n return !this.state.hasEmptyFields;\r\n }\r\n\r\n /**\r\n * Función que se encarga de cambiar el loading del state a su estado opuesto\r\n */\r\n\r\n changeLoading = () => {\r\n let newState = update(this.state, {\r\n isLoading: {$set : !this.state.isLoading}\r\n });\r\n this.setState(newState); \r\n }\r\n\r\n /**\r\n * Función que se encarga de hacer de manejar cambios en campos del modal\r\n */\r\n\r\n handleChange = (e) => { \r\n\r\n //Checar si hay campos vacios para inhabilitar campo de guardar\r\n let auxHasEmptyFields = false;\r\n if(isNaN(e.target.value) || !(e.target.value)) { auxHasEmptyFields = true;}\r\n\r\n let newState = update(this.state, {\r\n configurationVP:{\r\n [e.target.name] : {$set: e.target.valueAsNumber}\r\n },\r\n hasEmptyFields: {$set: auxHasEmptyFields}\r\n });\r\n this.setState(newState);\r\n }\r\n\r\n\r\n /**\r\n * Función que se encarga de manejar cambios en los campos de texto del modal\r\n */\r\n\r\n handleChangeTextInput = (e) => {\r\n\r\n //Checar si hay campos vacios para inhabilitar campo de guardar\r\n let auxHasEmptyFields = false;\r\n if(e.target.value.trim() == \"\") { auxHasEmptyFields = true;} \r\n\r\n let newState = update(this.state, {\r\n configurationVP:{\r\n [e.target.name] : {$set: e.target.value.trim()}\r\n },\r\n hasEmptyFields: {$set: auxHasEmptyFields}\r\n });\r\n this.setState(newState);\r\n }\r\n\r\n /**\r\n * Función que se encarga de manejar el campo de NumConfiguracionVP\r\n */\r\n\r\n handleNumVP = (e) => {\r\n\r\n this.changeLoading();\r\n //Se ponen como inactivas los tipos de solicitud\r\n this.state.tipoDeSolicitudes.forEach((i) => {\r\n this.state.configurationVP.TiposSolicitudConfiguracionVP.forEach((j) => {\r\n if(i.idTipoSolicitud == j.idTipoSolicitud){\r\n i.Activo = false;\r\n }\r\n });\r\n });\r\n\r\n let newState = update(this.state, {\r\n ConfigurationVPIsActive: {$set: false},\r\n configurationVP:{\r\n [e.target.name] : {$set: e.target.valueAsNumber}\r\n }\r\n });\r\n this.setState(newState, () => {\r\n this.changeLoading();\r\n this.getConfigVP();\r\n })\r\n \r\n \r\n }\r\n\r\n /**\r\n * Función que se encarga de manejar los campos que tienen el tamaño de letras para\r\n * el distinto número de ordenes\r\n */\r\n\r\n handleTamLetra = (e, index) => {\r\n \r\n //Checar si hay campos vacios para inhabilitar campo de guardar\r\n let auxHasEmptyFields = false;\r\n if(isNaN(e.target.value) || !(e.target.value)) { auxHasEmptyFields = true;}\r\n let newState = update(this.state, {\r\n configurationVP: {\r\n TamLetraConfiguracionVP: {\r\n [index]: {\r\n [e.target.name]: {$set: e.target.valueAsNumber}\r\n }\r\n }\r\n },\r\n hasEmptyFields: {$set: auxHasEmptyFields}\r\n });\r\n this.setState(newState);\r\n }\r\n\r\n /**\r\n * Función que se encarga de manejar el activar/desactivar los checkboxes del modal\r\n */\r\n\r\n handleClickToggle = (e, checked) => {\r\n e.stopPropagation();\r\n let switchActiveTemp =\r\n this.state.configurationVP[checked];\r\n switchActiveTemp = !switchActiveTemp;\r\n this.setState((prevState) => ({\r\n configurationVP: {\r\n // object that we want to update\r\n ...prevState.configurationVP, // keep all other key-value pairs\r\n [checked]: switchActiveTemp, // update the value of specific key\r\n },\r\n }));\r\n }\r\n\r\n /**\r\n * Función que se encarga de manejar los campos de los tipos de solicitudes de la\r\n * configuracion VP\r\n */\r\n\r\n handleClickToggleArray = (e, index) => {\r\n e.stopPropagation();\r\n let newState = update(this.state, {\r\n tipoDeSolicitudes: {\r\n [index]: {\r\n Activo: {$set: !this.state.tipoDeSolicitudes[index].Activo}\r\n }\r\n }\r\n });\r\n this.setState(newState); \r\n }\r\n\r\n // Solo permite números, sin signos ni exponenciales\r\n onKeyPressNumber(event) {\r\n const keyCode = event.keyCode || event.which;\r\n const keyValue = String.fromCharCode(keyCode);\r\n if (/\\+|-|e|E|\\./.test(keyValue) || event.target.value.length >= event.target.getAttribute('maxLength'))\r\n event.preventDefault();\r\n }\r\n\r\n // No permite escribir en el ccampo\r\n onKeyDown(event) {\r\n event.preventDefault();\r\n } \r\n\r\n /**\r\n * Función que se ejecuta al dar guardar en el modal\r\n */\r\n\r\n submit = (e) => {\r\n e.preventDefault();\r\n if(!this.state.isSubmitting){\r\n\r\n this.changeLoading();\r\n //UPDATE a TiposSolicitudConfiguracionVP\r\n let newTipoDeSolicitudes = this.state.tipoDeSolicitudes.filter((e) => {\r\n if(e.Activo){\r\n return e;\r\n }\r\n });\r\n let newState = update(this.state, {\r\n isSubmiting: {$set: true},\r\n configurationVP: {\r\n TiposSolicitudConfiguracionVP: {$set: newTipoDeSolicitudes}\r\n } \r\n });\r\n\r\n this.setState(newState, () => {\r\n console.log(this.state.configurationVP)\r\n ConfigurationVPAPI.UpdateConfigurationVP(this.state.configurationVP).then(response => {\r\n this.closeModal();\r\n }).catch(err => {\r\n if(err.response)\r\n toast.error(err.response.data.Message)\r\n else\r\n toast.error(ErrorMessages.SinConexion)\r\n let newState = update(this.state, {\r\n isSubmitting: {$set: false},\r\n isLoading: {$set: false}\r\n });\r\n this.setState(newState);\r\n })\r\n this.changeLoading();\r\n });\r\n }\r\n \r\n }\r\n\r\n /**\r\n * Función que se ejecuta al dar \"cancelar\" en el modal de \r\n * \"Confirmar desactivar dos lineas producción\"\r\n */\r\n\r\n closeAcceptModal = () => {\r\n let newState = update(this.state, {\r\n showModalConfirmationMessage: {$set: false}\r\n\r\n })\r\n this.setState(newState);\r\n }\r\n\r\n /**\r\n * Función que se encarga de cerrar el modal de la configuraciónVP\r\n */\r\n\r\n closeModal = () => {\r\n toast.success(\"Configuración actualizada con éxito\");\r\n this.props.cancel();\r\n }\r\n\r\n render(){\r\n return (\r\n \r\n );\r\n }\r\n}\r\n\r\nConfiguracionVPContainer.defaultProps = {\r\n ConfigurationVPIsActive: false,\r\n isEditing: false,\r\n configurationVP: {\r\n TamLetraConfiguracionVP: [\r\n {TamLetraEncabezado: 44, TamLetraReceta: 39, TamLetraToppings: 31, NumOrdenes: 1},\r\n {TamLetraEncabezado: 35, TamLetraReceta: 30, TamLetraToppings: 35, NumOrdenes: 2},\r\n {TamLetraEncabezado: 29, TamLetraReceta: 29, TamLetraToppings: 29, NumOrdenes: 3},\r\n {TamLetraEncabezado: 26, TamLetraReceta: 26, TamLetraToppings: 26, NumOrdenes: 4},\r\n {TamLetraEncabezado: 24, TamLetraReceta: 24, TamLetraToppings: 24, NumOrdenes: 5},\r\n {TamLetraEncabezado: 22, TamLetraReceta: 22, TamLetraToppings: 22, NumOrdenes: 6},\r\n ],\r\n idConfiguracionVP: 0,\r\n idCaffenio: 0,\r\n NumConfiguracionVP: 1,\r\n Pantalla: 1,\r\n TamLetraContador: 30,\r\n TimerActualizacionOrdenes: 1000,\r\n NumPedidosSimultaneos: 6,\r\n NumCarriles: \"1,2\",\r\n ActualizacionAutomatica: true,\r\n PedidosAuto: true,\r\n DosLineasProduccion: false,\r\n TiposSolicitudConfiguracionVP: [\r\n { idConfiguracionVP: 0, idTipoSolicitud: 1, Nombre: \"Tablet\", Activo: true },\r\n { idConfiguracionVP: 0, idTipoSolicitud: 2, Nombre: \"A pie\", Activo: true },\r\n { idConfiguracionVP: 0, idTipoSolicitud: 4, Nombre: \"Pantalla Drive\", Activo: true },\r\n { idConfiguracionVP: 0, idTipoSolicitud: 5, Nombre: \"Bocina\", Activo: true },\r\n { idConfiguracionVP: 0, idTipoSolicitud: 6, Nombre: \"Móvil\", Activo: true },\r\n { idConfiguracionVP: 0, idTipoSolicitud: 7, Nombre: \"Web\", Activo: true },\r\n { idConfiguracionVP: 0, idTipoSolicitud: 8, Nombre: \"Cajero\", Activo: true },\r\n { idConfiguracionVP: 0, idTipoSolicitud: 9, Nombre: \"Ecommerce\", Activo: true },\r\n { idConfiguracionVP: 0, idTipoSolicitud: 10, Nombre: \"UberEats\", Activo: true },\r\n { idConfiguracionVP: 0, idTipoSolicitud: 12, Nombre: \"Drive Kiosko\", Activo: true },\r\n { idConfiguracionVP: 0, idTipoSolicitud: 13, Nombre: \"Rappi\", Activo: true },\r\n { idConfiguracionVP: 0, idTipoSolicitud: 14, Nombre: \"Carril Peatonal\", Activo: true },\r\n ],\r\n \r\n },\r\n\r\n caffenio: {\r\n DrivePSucursal: \"\",\r\n Name: \"\",\r\n State: \"\",\r\n City: \"\",\r\n },\r\n}\r\n\r\n\r\n\r\nexport { ConfiguracionVPContainer };","\r\nimport React , {Component} from 'react';\r\nimport CaffenioDriveAPI from '../../services/caffenioDrive';\r\nimport PriceDriveAPI from '../../services/PriceDrive';\r\nimport MenuDriveAPI from '../../services/MenuDrive';\r\nimport ConfigurationVPAPI from '../../services/ConfigurationVP';\r\nimport NoItems from \"../util/noitems/NoItems\";\r\nimport Pagination from '../util/pagination/Pagination';\r\nimport Loading from '../util/loading/Loading';\r\nimport Dropdown from '../util/dropdown/Dropdown';\r\nimport CaffenioForm from './CaffenioForm';\r\nimport {ConfiguracionVP} from '../ConfiguracionVP';\r\nimport { toast } from 'react-toastify';\r\nimport Select from 'react-select';\r\nimport Field from '../util/field/Field';\r\nimport Modal from '../util/modal/Modal';\r\nimport HasAccess from '../util/hasAccess/HasAccess';\r\nimport './caffenioStyle.css';\r\nimport lodash from 'lodash';\r\n\r\nimport BtnModoGuiado from '../util/BtnModoGuiado/BtnModoGuiado'\r\nimport ErrorMessages from '../../util/validation-error-messages';\r\nimport roles from '../../util/strings/roles';\r\n\r\nclass CaffenioDrive extends Component {\r\n\r\n state={\r\n isLoading: false,\r\n pageDrives: [],\r\n selectedOption: [],\r\n selectedOptionC: [],\r\n selectedOptionD: [],\r\n OptionSelect: [],\r\n OptionSelectCity: [],\r\n OptionSelectDrive: [],\r\n optionState: [],\r\n optionCity: [],\r\n optionDrive: [],\r\n Caffenios: [],\r\n CaffeniosFilter: [],\r\n activeAll: false,\r\n arrListMenu: [],\r\n arrListPrices: [],\r\n selectedMenuAll: null,\r\n tempAllMenu: null,\r\n tempAllList: null,\r\n selectedPricesAll: null,\r\n filterText: \"\",\r\n childVisible: false,\r\n checkAll: false,\r\n switchAllActive: false,\r\n showModal: false,\r\n caffenio: null,\r\n showCaffenio: false,\r\n configVP: null,\r\n showConfigVP: false,\r\n tipoDeSolicitudes: [],\r\n\r\n }\r\n\r\n cancel = () => {\r\n this.setState({showModal: false, showConfigVP: false, configVP: null})\r\n }\r\n\r\n\r\n componentDidMount(){\r\n this.setState({isLoading: true}, () => {\r\n let state = {...this.state}\r\n CaffenioDriveAPI.getCaffenios().then(response => {\r\n //console.log(\"Caffenios result >>\", response);\r\n state.Caffenios = response.data;\r\n state.CaffeniosFilter = response.data;\r\n state.Caffenios.map(producto => {\r\n producto.statusCheck = false;\r\n return producto\r\n })\r\n state.optionState = this.select_state(state.Caffenios);\r\n state.optionCity = this.select_city(state.Caffenios);\r\n state.optionDrive = this.select_Drive(state.Caffenios);\r\n return MenuDriveAPI.get();\r\n }).then(response => {\r\n let data = response.data;\r\n let finalData = [];\r\n data.map((item)=>{\r\n if(item.Active){\r\n finalData.push(item)\r\n }\r\n })\r\n state.arrListMenu = lodash.sortBy( finalData, [ts => ts.Description.toLowerCase()], ['asc']);\r\n return PriceDriveAPI.get();\r\n }).then(response => {\r\n let data = response.data;\r\n let finalData = [];\r\n data.map((item)=>{\r\n if(item.Active){\r\n finalData.push(item)\r\n }\r\n })\r\n state.arrListPrices = lodash.sortBy( finalData, [ts => ts.Description.toLowerCase()], ['asc']);;\r\n state.isLoading = false;\r\n return ConfigurationVPAPI.GetTipoSolicitudes();\r\n }).then(response => {\r\n let data = response.data;\r\n let finalData = [];\r\n data.map((item)=>{\r\n finalData.push(item);\r\n \r\n })\r\n state.tipoDeSolicitudes = finalData;\r\n this.setState(state);\r\n }).catch(err => {\r\n this.setState({isLoading: false})\r\n if(err.response)\r\n toast.error(err.response.data.Message)\r\n else\r\n toast.error(ErrorMessages.SinConexion)\r\n });\r\n })\r\n \r\n }\r\n\r\n handlePageChange = (drives) => { // Hacer la paginación en la tabla\r\n let listDrives = [...this.state.Caffenios];\r\n let listProduct = drives.map(obj => { \r\n let driveid = obj.DriveId; \r\n let objCaffDrive = listDrives.find(obj => obj.idCaffenio === driveid) \r\n obj[\"nombreDrive\"] = objCaffDrive ? objCaffDrive.NombreNuevo : \"Sin asignar\"; \r\n return obj\r\n } );\r\n\r\n this.setState({pageInventoryItems:listProduct});\r\n }\r\n\r\n handleSearchInput = (text) => {\r\n let state = {...this.state};\r\n state.filterText = text;\r\n this.setState(state, () => this.FilterProcess());\r\n }\r\n\r\n select_state(Caffenios) { // Llenar el combo 'Estados' con todas las opciones \r\n var newArray = [];\r\n let OptionSelect = [];\r\n var lookupObject = {};\r\n Caffenios.map((item) => {\r\n OptionSelect.push({value:item.StateId,label:item.State});\r\n });\r\n\r\n for(var i in OptionSelect) {\r\n lookupObject[OptionSelect[i][\"value\"]] = OptionSelect[i];\r\n }\r\n \r\n for(i in lookupObject) {\r\n newArray.push(lookupObject[i]);\r\n }\r\n \r\n return newArray;\r\n }\r\n\r\n select_city(Caffenios) { // Llenar el combo 'Ciudades' con todas las opciones \r\n var newArray = [];\r\n let OptionSelectCity = [];\r\n var lookupObject = {};\r\n Caffenios.map((item) => {\r\n OptionSelectCity.push({value:item.Municipalityid,label:item.Municipality});\r\n });\r\n\r\n for(var i in OptionSelectCity) {\r\n lookupObject[OptionSelectCity[i][\"value\"]] = OptionSelectCity[i];\r\n }\r\n \r\n for(i in lookupObject) {\r\n newArray.push(lookupObject[i]);\r\n }\r\n\r\n return newArray;\r\n }\r\n\r\n select_Drive(Caffenios) { // Llenar el combo 'Drives' con todas las opciones \r\n var newArray = [];\r\n let OptionSelectDrive = [];\r\n var lookupObject = {};\r\n Caffenios.map((item) => {\r\n OptionSelectDrive.push({value:item.idCaffenio,label:item.NombreNuevo});\r\n });\r\n\r\n for(var i in OptionSelectDrive) {\r\n lookupObject[OptionSelectDrive[i][\"value\"]] = OptionSelectDrive[i];\r\n }\r\n \r\n for(i in lookupObject) {\r\n newArray.push(lookupObject[i]);\r\n }\r\n\r\n return newArray;\r\n }\r\n\r\n eliminarObjDuplicados = (arr,prop) => {\r\n var nuevoArray = [];\r\n var lookup = {};\r\n \r\n for (var i in arr) {\r\n lookup[arr[i][prop]] = arr[i];\r\n }\r\n \r\n for (i in lookup) {\r\n nuevoArray.push(lookup[i]);\r\n }\r\n \r\n return nuevoArray;\r\n }\r\n\r\n changeSelectEstado = (obj) => {\r\n let state = {...this.state}\r\n state[\"selectedOption\"] = obj;\r\n let idEstado = obj.map(estado => {return estado.value});\r\n let objCaffenios = [...state.Caffenios];\r\n let listaCiudades = [];\r\n let listaDrives = [];\r\n\r\n // Recorrer objeto Caffenios y encontrar coincidencias sin eliminar duplicados\r\n objCaffenios.map(item =>{\r\n for(var i=0; i {return ciudad.value});\r\n\r\n //Se buscan coincidencias entre ciudad y drive y se genera la lista de drives\r\n objCaffenios.map(item =>{\r\n for(var i=0; i this.FilterProcess());\r\n }\r\n\r\n changeSelectCiudad = (obj) =>{\r\n let state = {...this.state}\r\n let idCiudad = obj.map(ciudad => {return ciudad.value});\r\n let objCaffenios = [...state.Caffenios];\r\n let listaDrives = [];\r\n\r\n //Se buscan coincidencias entre ciudad y drive y se genera la lista de drives\r\n objCaffenios.map(item =>{\r\n for(var i=0; i0){\r\n state[\"selectedOptionC\"] = obj;\r\n state[\"optionDrive\"] = listaDrives;\r\n this.setState(state, () => this.FilterProcess());\r\n } else{\r\n this.changeSelectEstado(state[\"selectedOption\"]);\r\n }\r\n }\r\n\r\n changeSelectDrive = (obj) =>{\r\n let state = {...this.state};\r\n let Caffenios = [...state.Caffenios];\r\n \r\n //Valida cada select (Estados,Ciudades,Drives) y realiza la acción correspondiente\r\n if(obj.length>0){\r\n state[\"selectedOptionD\"] = obj;\r\n //state[\"optionDrive\"] = obj;\r\n this.setState(state, () => this.FilterProcess());\r\n } else if(state[\"selectedOptionC\"].length===0){\r\n this.changeSelectEstado(state[\"selectedOption\"]);\r\n } else if(state[\"selectedOptionC\"].length===0 && state[\"selectedOption\"].length===0){\r\n this.select_Drive(Caffenios);\r\n this.select_Drive(Caffenios);\r\n this.select_Drive(Caffenios);\r\n } else{\r\n this.changeSelectCiudad(state[\"selectedOptionC\"]);\r\n }\r\n }\r\n\r\n handleDropdown = (nuevoValor, attr, item) => {\r\n if(attr === \"idMenu\"){\r\n let indexMenu = this.state.arrListMenu.findIndex(menu => menu.MenuId === nuevoValor.MenuId)\r\n item[attr] = indexMenu === -1 ? 0 : this.state.arrListMenu[indexMenu].MenuId;\r\n } else{\r\n let indexLista = this.state.arrListPrices.findIndex(lista => lista.PriceListId === nuevoValor.PriceListId)\r\n item[attr] = indexLista === -1 ? 0 : this.state.arrListPrices[indexLista].PriceListId;\r\n }\r\n \r\n let copyItem = {...item};\r\n delete copyItem.statusCheck;\r\n\r\n CaffenioDriveAPI.updateInformation(copyItem).then(response => {\r\n toast.success(\"Proceso actualizado\");\r\n let pageDrives = [...this.state.pageDrives]\r\n let indexDrive = pageDrives.findIndex(drive => drive.idCaffenio === item.idCaffenio)\r\n if(indexDrive !== -1){\r\n pageDrives[indexDrive] = item\r\n this.setState({pageDrives: pageDrives})\r\n }\r\n\r\n }).catch(err => {\r\n this.setState({isLoading: false})\r\n if(err.response)\r\n toast.error(err.response.data.Message)\r\n else\r\n toast.error(ErrorMessages.SinConexion)\r\n });\r\n }\r\n\r\n btnApply = () => {\r\n let state = {...this.state};\r\n let valueMenuAll = null;\r\n let valueListAll = null;\r\n\r\n console.log(state.tempAllMenu)\r\n //console.log(state.selectedMenuAll,state.selectedPricesAll,state.switchAllActive)\r\n\r\n let newPageCaffenios = state.pageDrives.map((item)=>{\r\n //console.log(item)\r\n if(item.statusCheck){\r\n if(state.tempAllMenu > 0) item.idMenu = state.tempAllMenu\r\n if(state.tempAllList > 0) item.idListaPrecio = state.tempAllList\r\n item.Active = state.switchAllActive\r\n }\r\n return item \r\n })\r\n\r\n //console.log(newPageCaffenios);\r\n\r\n let tempNewPageCaff = [...newPageCaffenios];\r\n\r\n let finalPageCaffenios = tempNewPageCaff.map((item)=>{\r\n let tempItem = {...item};\r\n delete tempItem.statusCheck;\r\n return tempItem;\r\n })\r\n\r\n console.log(finalPageCaffenios)\r\n\r\n CaffenioDriveAPI.updatesInformation(finalPageCaffenios).then(response => {\r\n //console.log(response);\r\n toast.success(\"Procesos actualizados\");\r\n this.setState({pageCaffenios: newPageCaffenios,selectedMenuAll: null,tempAllMenu:null, selectedPricesAll: null, tempAllList:null, switchAllActive: false, childVisible: false, checkAll: true},this.selectAllCheck);\r\n }).catch(err => {\r\n this.setState({isLoading: false})\r\n if(err.response)\r\n toast.error(err.response.data.Message)\r\n else\r\n toast.error(ErrorMessages.SinConexion)\r\n });\r\n\r\n }\r\n\r\n validarCombos = (state) => {\r\n var status_combo = false; // Vacios\r\n\r\n if(state[\"selectedOption\"].length>0){\r\n status_combo = true; // Alguno con valor\r\n }\r\n\r\n if(state[\"selectedOptionC\"].length>0){\r\n status_combo = true; // Alguno con valor\r\n }\r\n\r\n if(state[\"selectedOptionD\"].length>0){\r\n status_combo = true; // Alguno con valor\r\n }\r\n\r\n return status_combo;\r\n }\r\n\r\n FilterProcess = () => {\r\n let state = {...this.state}\r\n let Caffenios = state.Caffenios;\r\n var status_combo; // Vacios\r\n let driveIds;\r\n\r\n if(state[\"selectedOptionD\"].length===0){\r\n driveIds = state[\"optionDrive\"].map(obj => {\r\n return obj.value;\r\n })\r\n } else{\r\n driveIds = state[\"selectedOptionD\"].map(obj => {\r\n return obj.value;\r\n })\r\n }\r\n\r\n status_combo = this.validarCombos(state);\r\n\r\n if(state.filterText.trim() !== ''){\r\n Caffenios = Caffenios.filter(obj => {\r\n return obj.NombreNuevo.toLowerCase().normalize(\"NFD\").replace(/[\\u0300-\\u036f]/g, \"\").includes(state.filterText.trim().toLowerCase().normalize(\"NFD\").replace(/[\\u0300-\\u036f]/g, \"\")) || obj.NombreNuevo.toLowerCase().normalize(\"NFD\").replace(/[\\u0300-\\u036f]/g, \"\").includes(state.filterText.trim().toLowerCase().normalize(\"NFD\").replace(/[\\u0300-\\u036f]/g, \"\"))\r\n });\r\n }\r\n\r\n Caffenios = Caffenios.filter((obj2)=>{\r\n if(driveIds.filter((item)=>{\r\n return item === obj2.idCaffenio\r\n }).length > 0){ return obj2 }\r\n }) \r\n\r\n state.CaffeniosFilter = Caffenios;\r\n this.setState(state);\r\n }\r\n\r\n selectAllCheck = () => {\r\n let state = {...this.state};\r\n let elementsPage = state.pageDrives;\r\n\r\n elementsPage.map(element=>{\r\n state.checkAll ? element.statusCheck = false : element.statusCheck = true\r\n return element\r\n })\r\n\r\n state.checkAll = !state.checkAll;\r\n state.childVisible = state.checkAll\r\n state.pageDrives = elementsPage;\r\n if(state.checkAll === false){\r\n state.switchAllActive=false \r\n } \r\n \r\n this.setState(state);\r\n }\r\n\r\n showView = () => {\r\n let state = {...this.state};\r\n let cheked = false;\r\n let checkAllTemp = true;\r\n state.pageDrives.map(item=>{\r\n if(item.statusCheck){\r\n cheked = true;\r\n } else {\r\n checkAllTemp = false;\r\n }\r\n })\r\n\r\n this.setState({childVisible: cheked, checkAll: checkAllTemp});\r\n }\r\n\r\n create = () => { \r\n this.props.history.push({pathname: '/drive/nuevo', state:{\r\n menusList: this.state.arrListMenu, \r\n pricesList: this.state.arrListPrices, \r\n caffenio: {},\r\n isEditing : false\r\n }});\r\n }\r\n\r\n edit = (caffenio) => {\r\n this.props.history.push({pathname: '/drive/nuevo', state:{\r\n menusList: this.state.arrListMenu, \r\n pricesList: this.state.arrListPrices, \r\n caffenio: caffenio,\r\n isEditing : true\r\n }});\r\n }\r\n\r\n render(){\r\n return(\r\n
    \r\n

    Caffenio Drive

    \r\n
    \r\n \r\n
    \r\n\r\n
    \r\n
    \r\n
    \r\n
    \r\n {/**/}\r\n
    \r\n this.handleSearchInput(e.currentTarget.value)}\r\n />\r\n
    \r\n
    \r\n
    \r\n {/* */}\r\n
    \r\n
    \r\n \r\n
    \r\n \"No hay opciones\"}\r\n options={this.state.optionState}\r\n />\r\n
    \r\n
    \r\n
    \r\n \r\n
    \r\n \"No hay opciones\"}\r\n options={this.state.optionCity}\r\n />\r\n
    \r\n
    \r\n
    \r\n \r\n
    \r\n \"No hay opciones\"}\r\n options={this.state.optionDrive}\r\n />\r\n
    \r\n
    \r\n \r\n
    \r\n
    \r\n
    \r\n
    \r\n\r\n {\r\n this.state.childVisible &&\r\n
    \r\n
    \r\n
    \r\n
    \r\n \r\n
    \r\n \r\n \r\n
    \r\n \r\n { {\r\n let selecMenuAll = {...this.state.selectedMenuAll};\r\n selecMenuAll = i === 0 ? 0 : this.state.arrListMenu[i - 1].MenuId;\r\n this.setState({selecMenuAll:selecMenuAll,tempAllMenu:selecMenuAll});\r\n }/*this.handleDropdownAll(i, \"MenuId\")*/}\r\n labelKey={\"Description\"}\r\n />}\r\n \r\n
    \r\n
    \r\n\r\n \r\n
    \r\n \r\n { {\r\n let selecListAll = {...this.state.selectedPricesAll};\r\n selecListAll = i === 0 ? 0 : this.state.arrListPrices[i - 1].PriceListId;\r\n this.setState({selectedPricesAll:selecListAll,tempAllList:selecListAll});\r\n }}\r\n labelKey={\"Description\"}\r\n />}\r\n \r\n
    \r\n
    \r\n\r\n \r\n \r\n
    \r\n \r\n {}}\r\n />\r\n \r\n
    \r\n
    \r\n\r\n\r\n\r\n
    \r\n
    \r\n \r\n this.btnApply()}>\r\n Aplicar\r\n \r\n \r\n
    \r\n
    \r\n
    \r\n
    \r\n
    \r\n }\r\n
    \r\n
    \r\n
    \r\n {this.state.CaffeniosFilter.length !== 0 \r\n ? \r\n \r\n \r\n \r\n \r\n \r\n \r\n\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n {this.state.pageDrives.map((item, index) => {\r\n return (\r\n \r\n\r\n \r\n \r\n \r\n \r\n \r\n \r\n\r\n \r\n \r\n \r\n \r\n \r\n\r\n \r\n \r\n \r\n \r\n )\r\n })}\r\n \r\n
    NombreNombre CortoMenúLista PrecioActivoAcciones
    {\r\n e.stopPropagation();\r\n let pageCaffenios = this.state.Caffenios[index];\r\n item.statusCheck = !item.statusCheck;\r\n this.setState({pageCaffenios: item.statusCheck}, this.showView);\r\n }}/>{item.NombreNuevo}{item.NombreNuevo}\r\n \r\n \r\n \r\n {}}\r\n />\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n
    \r\n\r\n : }\r\n this.setState({ pageDrives: drives })} /*onChangePage={(items) => this.handlePageChange(items)}*/ />\r\n
    \r\n
    \r\n\r\n {this.state.showModal && this.state.showCaffenio && \r\n \r\n \r\n \r\n }\r\n\r\n {this.state.showModal && this.state.showConfigVP && \r\n \r\n ({...obj, Activo: false}))}\r\n />\r\n \r\n }\r\n\r\n \r\n \r\n
    \r\n\r\n );\r\n }\r\n\r\n}\r\n\r\nexport default CaffenioDrive;","import React, { useState } from 'react';\r\nimport { Formik } from 'formik';\r\nimport * as Yup from 'yup';\r\nimport DatePicker from 'react-datepicker';\r\n\r\nimport Field from '../../util/field/Field';\r\nimport Dropdown from '../../util/dropdown/Dropdown';\r\nimport moment from 'moment';\r\n\r\nconst SCHEMA = Yup.object({\r\n Name: Yup.string().trim().min(3, 'Requiere al menos 3 caracteres').max(60, 'Ha excedido el límite de 60 caracteres.').required(\"El campo 'Nombre' es requerido.\"),\r\n ShortName: Yup.string().trim().min(3, 'Requiere al menos 3 caracteres').max(40, 'Ha excedido el límite de 40 caracteres.').required(\"El campo 'Nombre Corto' es requerido.\"),\r\n GPSucursalId: Yup.number()\r\n .min(0, \"Ingrese valores mayores a 0.\")\r\n .max(999, 'Ha excedido el límite de 3 caracteres.')\r\n .required(\"El campo '# Drive Sucursal' es requerido.\"),\r\n WarehouseGPCode: Yup.number()\r\n .min(0, \"Ingrese valores mayores a 0.\")\r\n .max(999, 'Ha excedido el límite de 3 caracteres.')\r\n .required(\"El campo '# Almacén GP' es requerido.\"),\r\n RailsNumber: Yup.number()\r\n .min(0, \"Ingrese valores mayores a 0.\")\r\n .max(9, 'Ha excedido el límite de caracteres.')\r\n .required(\"El campo '# Carriles' es requerido.\"),\r\n MenuId: Yup.string().required(\"El campo 'Menu' es requerido.\").nullable(),\r\n PriceListId: Yup.string().required(\"El campo 'Lista de Precio' es requerido.\").nullable(),\r\n Active: Yup.bool(),\r\n MobileSales: Yup.bool(),\r\n RefillRestrictions: Yup.bool(),\r\n isClosed: Yup.bool(),\r\n isWorking: Yup.bool(),\r\n OpenDate: Yup.string().required(\"El campo 'Fecha de apertura' es requerido.\"),\r\n CloseDate: Yup.string(),\r\n});\r\n\r\n// Solo permite números, sin signos ni exponenciales\r\nconst onKeyPressNumber = (event) => {\r\n const keyCode = event.keyCode || event.which;\r\n const keyValue = String.fromCharCode(keyCode);\r\n if (/\\+|-|e|E|\\./.test(keyValue) || event.target.value.length >= event.target.getAttribute('maxLength'))\r\n event.preventDefault();\r\n}\r\n\r\n/**\r\n * Formulario con la información general del folio\r\n */\r\nexport const StepInfoDrive = ({ ...props }) => {\r\n return (\r\n {\r\n let caffenioUpdated = {...props.caffenio};\r\n caffenioUpdated.Name = values.Name.trim();\r\n caffenioUpdated.ShortName = values.ShortName.trim();\r\n caffenioUpdated.NewName = values.ShortName.trim();\r\n caffenioUpdated.GPSucursalId = values.GPSucursalId;\r\n caffenioUpdated.WarehouseGPCode = values.WarehouseGPCode; \r\n caffenioUpdated.RailsNumber=values.RailsNumber;\r\n caffenioUpdated.MenuId= values.MenuId;\r\n caffenioUpdated.PriceListId= values.PriceListId;\r\n caffenioUpdated.Active= values.Active;\r\n caffenioUpdated.MobileSales= values.MobileSales;\r\n caffenioUpdated.RefillRestrictions= values.RefillRestrictions;\r\n caffenioUpdated.isClosed= values.isClosed;\r\n caffenioUpdated.isWorking= values.isWorking; \r\n caffenioUpdated.OpenDate = values.OpenDate ? values.OpenDate : '';\r\n caffenioUpdated.CloseDate = values.CloseDate ? values.CloseDate : '';\r\n // caffenioUpdated.OpenDate = moment(new Date(values.OpenDate)).format(\"YYYY-MM-DDT00:00:00.000\")+\"Z\"; \r\n \r\n // if (values.isClosed && values.CloseDate){\r\n // caffenioUpdated.CloseDate= moment(new Date(values.CloseDate)).format(\"YYYY-MM-DDT00:00:00.000\")+\"Z\";\r\n // }else{ \r\n // caffenioUpdated.CloseDate= '';\r\n // }\r\n\r\n props.save(caffenioUpdated);\r\n }}>\r\n {({ values, touched, errors, handleChange, handleBlur, handleSubmit, setFieldValue, setFieldTouched }) => (\r\n
    \r\n {/* Nombre, Nombre corto */}\r\n
    \r\n
    \r\n \r\n handleChange(e)}\r\n\r\n />\r\n \r\n
    \r\n
    \r\n \r\n handleChange(e)}\r\n\r\n />\r\n \r\n
    \r\n\r\n
    \r\n\r\n {/* Sucursal, almacen y carriles */}\r\n
    \r\n
    \r\n \r\n handleChange(e)}\r\n\r\n />\r\n \r\n
    \r\n\r\n
    \r\n \r\n handleChange(e)}\r\n onKeyPress={onKeyPressNumber}\r\n\r\n />\r\n \r\n
    \r\n\r\n
    \r\n \r\n handleChange(e)}\r\n onKeyPress={onKeyPressNumber}\r\n\r\n />\r\n \r\n
    \r\n\r\n
    \r\n\r\n {/* Menus y lista de precios */}\r\n
    \r\n
    \r\n \r\n { {\r\n if (val > 0) {\r\n let selected = props.menus[val - 1].MenuId;\r\n setFieldValue('MenuId', selected)\r\n\r\n } else {\r\n setFieldValue('MenuId', null)\r\n }\r\n }}\r\n labelKey={\"Description\"}\r\n hasError={errors.MenuId && touched.MenuId}\r\n />}\r\n \r\n
    \r\n
    \r\n \r\n { {\r\n if (val > 0) {\r\n let selected = props.priceList[val - 1].PriceListId;\r\n setFieldValue('PriceListId', selected)\r\n\r\n } else {\r\n setFieldValue('PriceListId', null)\r\n }\r\n }}\r\n labelKey={\"Description\"}\r\n />}\r\n \r\n
    \r\n
    \r\n\r\n {/* Booleans */}\r\n
    \r\n
    \r\n \r\n { }}\r\n />\r\n \r\n
    \r\n
    \r\n \r\n { }}\r\n />\r\n \r\n
    \r\n
    \r\n \r\n { }}\r\n />\r\n \r\n
    \r\n
    \r\n \r\n { }}\r\n />\r\n \r\n
    \r\n
    \r\n \r\n { }}\r\n />\r\n \r\n
    \r\n\r\n
    \r\n\r\n {/* dates */}\r\n
    \r\n
    \r\n \r\n {\r\n setFieldValue('OpenDate', date)\r\n }}\r\n popperPlacement=\"bottom\"\r\n popperModifiers={{\r\n offset: {\r\n enabled: true,\r\n offset: '5px, 20px',\r\n },\r\n preventOverflow: {\r\n enabled: true,\r\n escapeWithReference: false,\r\n boundariesElement: 'viewport'\r\n }\r\n }}\r\n todayButton=\"Hoy\"\r\n dateFormat=\"dd/MM/yyyy\"\r\n className=\"input\"\r\n autoComplete={\"off\"}\r\n maxDate={values.CloseDate}\r\n />\r\n \r\n\r\n
    \r\n {values.isClosed &&
    \r\n \r\n {\r\n setFieldValue('CloseDate', date)\r\n }}\r\n disabled={true}\r\n popperPlacement=\"bottom\"\r\n minDate={values.OpenDate}\r\n popperModifiers={{\r\n offset: {\r\n enabled: true,\r\n offset: '50px, 10px'\r\n },\r\n preventOverflow: {\r\n enabled: true,\r\n escapeWithReference: false,\r\n boundariesElement: 'viewport'\r\n }\r\n }}\r\n todayButton=\"Hoy\"\r\n dateFormat=\"dd/MM/yyyy\"\r\n className=\"input\"\r\n autoComplete={\"off\"}\r\n />\r\n \r\n\r\n
    \r\n}\r\n \r\n
    \r\n\r\n
    \r\n\r\n
    \r\n\r\n
    \r\n
    \r\n
    \r\n \r\n
    \r\n
    \r\n\r\n
    \r\n )}\r\n\r\n \r\n );\r\n\r\n}\r\n\r\nexport default StepInfoDrive;","import React, { useState } from 'react';\r\nimport { Formik } from 'formik';\r\nimport * as Yup from 'yup';\r\n\r\nimport Field from '../../util/field/Field';\r\nimport Dropdown from '../../util/dropdown/Dropdown';\r\n\r\n\r\nconst SCHEMA = Yup.object({\r\n FactDataId: Yup.string().required(\"El campo 'Datos facturación' es requerido.\").nullable(),\r\n TaxRateId: Yup.string().required(\"El campo 'Tasa impuesto' es requerido.\").nullable(),\r\n SegmentId: Yup.string().required(\"El campo 'Segmento' es requerido.\").nullable(),\r\n});\r\n\r\n/**\r\n * Formulario con la información general del folio\r\n */\r\nexport const StepFacturacionDrive = ({ ...props }) => { \r\n \r\n return (\r\n {\r\n let caffenioUpdated = {...props.caffenio};\r\n caffenioUpdated.FactDataId = values.FactDataId;\r\n caffenioUpdated.TaxRateId = values.TaxRateId;\r\n caffenioUpdated.SegmentId = values.SegmentId;\r\n\r\n props.save(caffenioUpdated)\r\n }}>\r\n {({ values, touched, errors, handleChange, handleBlur, handleSubmit, setFieldValue, setFieldTouched }) => (\r\n
    \r\n
    \r\n
    \r\n\r\n \r\n { {\r\n if (val > 0) {\r\n let selected = props.DatosFact[val - 1].FactDataId;\r\n setFieldValue('FactDataId', selected)\r\n\r\n } else {\r\n setFieldValue('FactDataId', null)\r\n }\r\n }}\r\n labelKey={\"SocialReason\"}\r\n hasError={errors.FactDataId && touched.FactDataId}\r\n />}\r\n \r\n
    \r\n
    \r\n \r\n { {\r\n if (val > 0) {\r\n let selected = props.TasaImp[val - 1].TaxRateId;\r\n setFieldValue('TaxRateId', selected)\r\n\r\n } else {\r\n setFieldValue('TaxRateId', null)\r\n }\r\n }}\r\n labelKey={\"Description\"}\r\n hasError={errors.TaxRateId && touched.TaxRateId}\r\n />}\r\n \r\n
    \r\n
    \r\n \r\n { {\r\n if (val > 0) {\r\n let selected = props.Segmento[val - 1].SegmentId;\r\n setFieldValue('SegmentId', selected)\r\n\r\n } else {\r\n setFieldValue('SegmentId', null)\r\n }\r\n }}\r\n labelKey={\"Name\"}\r\n hasError={errors.SegmentId && touched.SegmentId}\r\n />}\r\n \r\n
    \r\n\r\n
    \r\n\r\n
    \r\n\r\n
    \r\n
    \r\n \r\n\r\n
    \r\n
    \r\n
    \r\n
    \r\n \r\n
    \r\n
    \r\n\r\n
    \r\n )}\r\n\r\n \r\n );\r\n\r\n}\r\n\r\nexport default StepFacturacionDrive;","import { apiUrl } from \"../constants\";\r\nimport axios from 'axios';\r\nimport middleware from '../middleware/auth';\r\nimport { stringify } from \"querystring\";\r\n\r\nvar request = axios.create({\r\n baseURL: apiUrl,\r\n headers: {'Authorization': 'Bearer ' + localStorage.getItem('token'),'Content-Type':'application/json'}\r\n});\r\n\r\n/**\r\n * Servicio para el recurso de plazas administrativas\r\n */\r\nexport default class PlazasAdminsAPI {\r\n /**\r\n * Obtiene a las plazas.\r\n * @returns Promise\r\n */\r\n static getPlazas(filters = {}) {\r\n return middleware.hasAuth(() => request.get(`/Plaza?${stringify(filters)}`));\r\n } \r\n}","import { apiUrl } from \"../constants\";\r\nimport axios from 'axios';\r\nimport middleware from '../middleware/auth';\r\nimport { stringify } from \"querystring\";\r\n\r\nvar request = axios.create({\r\n baseURL: apiUrl,\r\n headers: {'Authorization': 'Bearer ' + localStorage.getItem('token'),'Content-Type':'application/json'}\r\n});\r\n\r\n/**\r\n * Servicio para el recurso de sucursales\r\n */\r\nexport default class SucursalAdminAPI {\r\n /**\r\n * Obtiene a las sucursales administrativa.\r\n * @returns Promise\r\n */\r\n static getSucursales() {\r\n return middleware.hasAuth(() => request.get(`/Sucursal`));\r\n }\r\n\r\n\r\n \r\n}","import React, { useState, useEffect } from 'react';\r\nimport Select from 'react-select';\r\nimport { Formik } from 'formik';\r\nimport * as Yup from 'yup';\r\nimport { toast } from 'react-toastify';\r\nimport lodash from 'lodash';\r\n\r\nimport Field from '../../util/field/Field';\r\nimport Dropdown from '../../util/dropdown/Dropdown';\r\nimport ErrorMessages from '../../../util/validation-error-messages';\r\n//Services\r\nimport ComboDatosAPI from '../../../services/ComboDatos';\r\nimport PlazaAPI from '../../../services/PlazaAdmin';\r\nimport SucursalAPI from '../../../services/SucursalAdmin';\r\nimport Loading from '../../util/loading/Loading';\r\n\r\n\r\nconst SCHEMA = Yup.object({\r\n Pais: Yup.string().required(\"El campo 'País' es requerido.\").nullable(),\r\n Estado: Yup.string().required(\"El campo 'Estado' es requerido.\").nullable(),\r\n Municipio: Yup.string().required(\"El campo 'Ciudad' es requerido.\").nullable(),\r\n Colonia: Yup.string().required(\"El campo 'Colonia' es requerido.\").nullable(),\r\n idPostalCode: Yup.string().max(5, 'Ha excedido el límite de 5 caracteres.').required(\"El campo 'Código postal' es requerido.\"),\r\n MainStreet: Yup.string().trim().max(50, 'Ha excedido el límite de 50 caracteres.').required(\"El campo 'Calle principal' es requerido.\"),\r\n ExtNumber: Yup.string().trim().max(8, \"Ha excedido el límite de 8 caracteres.\")\r\n .matches(/^[a-zA-Z0-9 \\-_]*$/, { message: \"Formato incorrecto, se permiten solo - _ y números.\" })\r\n .required(\"El campo 'Número exterior' es requerido.\"),\r\n BetStreets: Yup.string().trim().max(80, 'Ha excedido el límite de 80 caracteres.').required(\"El campo 'Entre calles' es requerido.\"),\r\n Sucursal: Yup.string().nullable(),\r\n Plaza: Yup.string().nullable(),\r\n // Sucursal: Yup.string().required(\"El campo 'Sucursal' es requerido\").nullable(),\r\n // Plaza: Yup.string().required(\"El campo 'Plaza' es requerido\").nullable(),\r\n});\r\n\r\nconst hrWithLegend = (text, bold, textAlign) => {\r\n return (\r\n
    \r\n {\r\n text &&\r\n \r\n {\r\n text\r\n }\r\n }\r\n\r\n
    \r\n )\r\n}\r\n\r\n/**\r\n * Formulario con la información general del folio\r\n */\r\nexport const StepLocationDrive = ({ ...props }) => {\r\n const [state, setState] = useState({\r\n isLoading: false,\r\n arrCountries: [],\r\n arrStates: [],\r\n arrCities: [],\r\n arrSuburbios: [],\r\n arrZipCodes: [],\r\n arrSucursales: [],\r\n arrPlazas: []\r\n })\r\n\r\n /**Carga información del form */\r\n useEffect(() => {\r\n setState({\r\n ...state,\r\n isLoading: true\r\n });\r\n let arrCountries = [];\r\n let arrStates = [];\r\n let arrCities = [];\r\n let arrSuburbios = [];\r\n let arrSucursales = props.arrSucursales;\r\n let arrPlazas = props.arrPlazas; \r\n if (props.isEditing) {\r\n ComboDatosAPI.getDirCountry()\r\n .then(response => {\r\n arrCountries = lodash.sortBy(response.data, [ts => ts.Name.toLowerCase()], ['asc'])\r\n return ComboDatosAPI.getDirState(props.caffenio.Pais);\r\n })\r\n .then(response => {\r\n arrStates = lodash.sortBy(response.data, [ts => ts.Name.toLowerCase()], ['asc'])\r\n return ComboDatosAPI.getDirCity(props.caffenio.Estado);\r\n })\r\n .then(response => {\r\n arrCities = lodash.sortBy(response.data, [ts => ts.Name.toLowerCase()], ['asc'])\r\n return ComboDatosAPI.getDirSuburb(props.caffenio.Municipio);\r\n })\r\n .then(response => {\r\n arrSuburbios = lodash.sortBy(response.data.map(d => { return { label: d.Name, value: d.Name } }), [ts => ts.label.toLowerCase()], ['asc']);\r\n setState({\r\n ...state,\r\n isLoading: false,\r\n arrCountries,\r\n arrStates,\r\n arrCities,\r\n arrSuburbios,\r\n arrSucursales,\r\n arrPlazas,\r\n }) \r\n })\r\n .catch(err => {\r\n setState({\r\n ...state,\r\n isLoading: false\r\n })\r\n if (err.response)\r\n toast.error(err.response.data.Message)\r\n else\r\n toast.error(ErrorMessages.SinConexion)\r\n })\r\n\r\n } else {\r\n ComboDatosAPI.getDirCountry()\r\n .then(response => {\r\n arrCountries = lodash.sortBy(response.data, [ts => ts.Name.toLowerCase()], ['asc']);\r\n setState({\r\n ...state,\r\n isLoading: false,\r\n arrCountries,\r\n arrStates,\r\n arrCities,\r\n arrSuburbios,\r\n arrSucursales,\r\n arrPlazas\r\n })\r\n })\r\n .catch(err => {\r\n setState({\r\n ...state,\r\n isLoading: false\r\n })\r\n if (err.response)\r\n toast.error(err.response.data.Message)\r\n else\r\n toast.error(ErrorMessages.SinConexion)\r\n })\r\n }\r\n }, []);\r\n\r\n /**Obtiene estados a partir de pais */\r\n const getStates = (country) => {\r\n setState({\r\n ...state,\r\n isLoading: true\r\n });\r\n\r\n let arrStates = [];\r\n Promise.all([\r\n ComboDatosAPI.getDirState(country).then(response => arrStates = response.data)\r\n ]).catch(err => {\r\n setState({\r\n ...state,\r\n isLoading: false\r\n })\r\n if (err.response)\r\n toast.error(err.response.data.Message)\r\n else\r\n toast.error(ErrorMessages.SinConexion)\r\n }).finally(() => {\r\n setState({\r\n ...state,\r\n arrStates,\r\n arrCities: [],\r\n arrSuburbios: [],\r\n isLoading: false,\r\n });\r\n });\r\n }\r\n\r\n /**Obtiene ciudades a partir de estado */\r\n const getCities = (stateName) => {\r\n setState({\r\n ...state,\r\n isLoading: true\r\n });\r\n\r\n let arrCities = [];\r\n Promise.all([\r\n ComboDatosAPI.getDirCity(stateName).then(response => arrCities = response.data)\r\n ]).catch(err => {\r\n setState({\r\n ...state,\r\n isLoading: false\r\n })\r\n if (err.response)\r\n toast.error(err.response.data.Message)\r\n else\r\n toast.error(ErrorMessages.SinConexion)\r\n }).finally(() => {\r\n setState({\r\n ...state,\r\n arrCities,\r\n arrSuburbios: [],\r\n isLoading: false,\r\n });\r\n });\r\n }\r\n\r\n /**Obtiene colonias a partir de ciudad */\r\n const getSuburbios = (cityName) => {\r\n setState({\r\n ...state,\r\n isLoading: true\r\n });\r\n\r\n let arrSuburbios = [];\r\n Promise.all([\r\n ComboDatosAPI.getDirSuburb(cityName).then(response => arrSuburbios = response.data.map(d => { return { label: d.Name, value: d.Name } }))\r\n ]).catch(err => {\r\n setState({\r\n ...state,\r\n isLoading: false\r\n })\r\n if (err.response)\r\n toast.error(err.response.data.Message)\r\n else\r\n toast.error(ErrorMessages.SinConexion)\r\n }).finally(() => {\r\n setState({\r\n ...state,\r\n arrSuburbios,\r\n isLoading: false,\r\n });\r\n });\r\n }\r\n\r\n /**Filtra coincidencias */\r\n const filterColonias = (inputValue) => {\r\n return state.arrSuburbios.filter(i =>\r\n i.label.toLowerCase().includes(inputValue.toLowerCase())\r\n );\r\n };\r\n\r\n /***\r\n * Funciónpara llamar función que filtra coincidencias en colonias\r\n */\r\n const promiseOptions = inputValue =>\r\n new Promise(resolve => {\r\n setTimeout(() => {\r\n resolve(filterColonias(inputValue));\r\n }, 1000);\r\n });\r\n\r\n return (\r\n { \r\n debugger \r\n let caffenioUpdated = { ...props.caffenio };\r\n caffenioUpdated.Pais = values.Pais.trim();\r\n caffenioUpdated.MainStreet = values.MainStreet.trim();\r\n caffenioUpdated.ExtNumber = values.ExtNumber.trim();\r\n caffenioUpdated.BetStreets = values.BetStreets.trim();\r\n caffenioUpdated.Estado = values.Estado.trim();\r\n caffenioUpdated.Municipio = values.Municipio.trim();\r\n caffenioUpdated.Colonia = values.Colonia.value.trim();\r\n caffenioUpdated.idPostalCode = values.idPostalCode;\r\n caffenioUpdated.PromoListId = 1;\r\n caffenioUpdated.idPlazaAdmin = values.Plaza ? values.Plaza.value : null;\r\n \r\n //Setea a 0 AddressId para que guarde nueva dirección\r\n if( props.isEditing && ((caffenioUpdated.Pais !== props.caffenio.Pais )\r\n || (caffenioUpdated.Estado !== props.caffenio.Estado)\r\n || (caffenioUpdated.Municipio !== props.caffenio.Municipio)\r\n || (caffenioUpdated.Colonia !== props.caffenio.Colonia.value.trim())\r\n || (caffenioUpdated.MainStreet !== props.caffenio.MainStreet)\r\n || (caffenioUpdated.ExtNumber !== props.caffenio.ExtNumber)\r\n || (caffenioUpdated.BetStreets !== props.caffenio.BetStreets)\r\n || (caffenioUpdated.idPostalCode !== props.caffenio.idPostalCode))){\r\n caffenioUpdated.AddressId = 0\r\n }\r\n\r\n props.save(caffenioUpdated)\r\n }}>\r\n {({ values, touched, errors, handleChange, handleBlur, handleSubmit, setFieldValue, setFieldTouched }) => (\r\n
    \r\n {hrWithLegend('Ubicación', false, 'left')}\r\n
    \r\n
    \r\n
    \r\n \r\n
    \r\n { \r\n setFieldValue(\"Sucursal\", value)\r\n setFieldValue(\"Plaza\", null)\r\n }}\r\n noOptionsMessage={() => \"No hay opciones\"}\r\n options={state.arrSucursales.filter(s=>s.Status)}\r\n isSearchable={true}\r\n isClearable={true}\r\n hasError={errors.Sucursal || touched.Sucursal} \r\n />\r\n\r\n
    \r\n \r\n

    {errors.Sucursal}

    \r\n
    \r\n \r\n
    \r\n
    \r\n
    \r\n \r\n
    \r\n { \r\n setFieldValue(\"Plaza\", value)\r\n }}\r\n noOptionsMessage={() => \"No hay opciones\"}\r\n options={state.arrPlazas.filter(p=> p.Status && values.Sucursal && p.idSucursal === values.Sucursal.value )}\r\n isSearchable={true}\r\n isClearable={true}\r\n isDisabled={!values.Sucursal}\r\n hasError={errors.Plaza || touched.Plaza} \r\n />\r\n\r\n
    \r\n \r\n

    {errors.Plaza}

    \r\n
    \r\n \r\n
    \r\n \r\n
    \r\n \r\n { { \r\n if (val > 0) {\r\n let selected = state.arrCountries[val - 1];\r\n getStates(selected.Name);\r\n setFieldValue('Pais', selected.Name);\r\n } else {\r\n setFieldValue('Pais', null)\r\n }\r\n setFieldValue('Estado', null);\r\n setFieldValue('Municipio', null);\r\n setFieldValue('Colonia', null); \r\n }}\r\n labelKey={\"Name\"}\r\n hasError={errors.Pais && touched.Pais}\r\n />}\r\n \r\n
    \r\n
    \r\n \r\n { {\r\n if (val > 0) {\r\n let selected = state.arrStates[val - 1];\r\n getCities(selected.Name);\r\n setFieldValue('Estado', selected.Name);\r\n } else {\r\n setFieldValue('Estado', null)\r\n }\r\n setFieldValue('Municipio', null);\r\n setFieldValue('Colonia', null);\r\n }}\r\n labelKey={\"Name\"}\r\n hasError={errors.Estado && touched.Estado}\r\n />}\r\n \r\n
    \r\n
    \r\n \r\n { {\r\n if (val > 0) {\r\n let selected = state.arrCities[val - 1];\r\n getSuburbios(selected.Name);\r\n setFieldValue('Municipio', selected.Name);\r\n } else {\r\n setFieldValue('Municipio', null)\r\n }\r\n setFieldValue('Colonia', null);\r\n }}\r\n labelKey={\"Name\"}\r\n hasError={errors.Municipio && touched.Municipio}\r\n />}\r\n \r\n
    \r\n
    \r\n
    \r\n \r\n
    \r\n {\r\n let val = value ? { label: value.value, value: value.value } : null;\r\n setFieldValue(\"Colonia\", val)\r\n }}\r\n noOptionsMessage={() => \"No hay opciones\"}\r\n options={state.arrSuburbios}\r\n onInputChange={(inputValue, { action }) => {\r\n if (action === \"input-change\") {\r\n setFieldValue(\"Colonia\", inputValue ? { label: inputValue, value: inputValue } : null)\r\n } else {\r\n let val = values.Colonia ? { label: values.Colonia.value, value: values.Colonia.value } : null;\r\n setFieldValue(\"Colonia\", val)\r\n }\r\n }}\r\n isSearchable={true}\r\n isDisabled={!values.Municipio}\r\n hasError={errors.Colonia || touched.Colonia}\r\n \r\n />\r\n\r\n
    \r\n \r\n

    {errors.Colonia}

    \r\n
    \r\n
    \r\n
    \r\n {hrWithLegend('Dirección', false, 'left')}\r\n
    \r\n
    \r\n \r\n handleChange(e)} />\r\n \r\n
    \r\n
    \r\n \r\n handleChange(e)} />\r\n \r\n
    \r\n
    \r\n \r\n handleChange(e)} />\r\n \r\n
    \r\n
    \r\n \r\n handleChange(e)} />\r\n \r\n
    \r\n
    \r\n\r\n
    \r\n\r\n
    \r\n
    \r\n \r\n\r\n
    \r\n
    \r\n
    \r\n
    \r\n \r\n
    \r\n
    \r\n {\r\n state.isLoading &&\r\n \r\n }\r\n \r\n )}\r\n\r\n \r\n );\r\n\r\n}\r\n\r\nexport default StepLocationDrive;","import React, { useState, useEffect } from 'react';\r\nimport PropTypes from 'prop-types';\r\nimport './caffenioStyle.css';\r\nimport lodash from 'lodash';\r\nimport moment from 'moment';\r\n\r\n// Components\r\nimport { toast } from 'react-toastify';\r\n//import { CaffenioForm } from './CaffenioForm';\r\nimport Loading from '../util/loading/Loading';\r\nimport StepInfoDrive from './driveSteps/StepInfoDrive';\r\nimport StepFacturacionDrive from './driveSteps/StepFacturacionDrive';\r\nimport StepLocationDrive from './driveSteps/StepLocationDrive';\r\nimport Modal from '../util/modal/Modal';\r\nimport AcceptModal from '../util/acceptModal/AcceptModal';\r\n\r\n// Setvices\r\nimport CaffenioDriveAPI from '../../services/caffenioDrive';\r\nimport ComboDatosAPI from '../../services/ComboDatos';\r\nimport PlazaAPI from '../../services/PlazaAdmin';\r\nimport SucursalAPI from '../../services/SucursalAdmin';\r\n\r\nimport ErrorMessages from '../../util/validation-error-messages';\r\n\r\n/**\r\n * Formulario para nuevo Drive.\r\n * @returns Component\r\n */\r\nexport const NewCaffenio = (props) => {\r\n if (!props.location.state) {\r\n props.history.push(`/recetas`);\r\n return;\r\n }\r\n const [state, setState] = useState({\r\n isLoading: false,\r\n isEditing: false,\r\n showInfoModal:false,\r\n caffenio: {},\r\n stepInfoDrive: true,\r\n stepFacturacionDrive: false,\r\n stepLocationDrive: false,\r\n stepInfoDriveComplete: false,\r\n stepFacturacionDriveComplete: false,\r\n stepLocationDriveComplete: false,\r\n arrDatosFact: [],\r\n arrTasaImp: [],\r\n arrSegmento: [],\r\n arrPlazas:[],\r\n arrSucursales:[],\r\n });\r\n\r\n /**Carga información del form */\r\n useEffect(() => {\r\n \r\n setState({\r\n ...state,\r\n isLoading: true\r\n });\r\n\r\n let arrDatosFact = [];\r\n let arrTasaImp = [];\r\n let arrSegmento = [];\r\n let caffenio={};\r\n let arrPlazas = [];\r\n let arrSucursales = [];\r\n let isEditing = props.location.state.isEditing;\r\n\r\n Promise.all([\r\n ComboDatosAPI.getFactData().then(response => arrDatosFact = response.data.filter(d=>d.FactDataId === 11)),\r\n ComboDatosAPI.getTaxRate().then(response => arrTasaImp = lodash.sortBy( response.data, [ts => ts.Description.toLowerCase()], ['asc'])),\r\n ComboDatosAPI.getSegment().then(response => arrSegmento =lodash.sortBy( response.data, [ts => ts.Name.toLowerCase()], ['asc'])), \r\n PlazaAPI.getPlazas().then(response => arrPlazas = lodash.sortBy( response.data.map(p => {\r\n p.label = p.Nombre;\r\n p.value = p.idPlaza;\r\n return p;\r\n }), [ts => ts.Nombre.toLowerCase()], ['asc'])),\r\n SucursalAPI.getSucursales().then(response => arrSucursales = lodash.sortBy( response.data.map(s=>{\r\n s.label = s.Nombre;\r\n s.value = s.idSucursal;\r\n return s;\r\n }), [ts => ts.Nombre.toLowerCase()], ['asc'])),\r\n (props.location.state.caffenio && props.location.state.caffenio.idCaffenio ?\r\n CaffenioDriveAPI.getCaffenio(props.location.state.caffenio.idCaffenio).then(response => {\r\n caffenio = response.data\r\n caffenio.CloseDate = caffenio.CloseDate ? new Date(caffenio.CloseDate) : '';\r\n caffenio.OpenDate = caffenio.OpenDate ? new Date(caffenio.OpenDate) : ''; \r\n caffenio.Colonia = {label:caffenio.Colonia, value:caffenio.Colonia} ; \r\n if(caffenio.idPlazaAdmin){\r\n let plz = arrPlazas.filter(p => p.idPlaza === caffenio.idPlazaAdmin);\r\n let suc = plz ? arrSucursales.filter(s => s.idSucursal === plz[0].idSucursal) : null;\r\n caffenio.Plaza = plz ? plz[0] : null;\r\n caffenio.Sucursal = suc ? suc[0] : null; \r\n }\r\n })\r\n :'')\r\n ]).catch(err => {\r\n setState({\r\n ...state,\r\n isLoading: false\r\n })\r\n if (err.response)\r\n toast.error(err.response.data.Message)\r\n else\r\n toast.error(ErrorMessages.SinConexion)\r\n }).finally(() => setState({\r\n ...state,\r\n arrDatosFact,\r\n arrTasaImp,\r\n arrSegmento,\r\n caffenio,\r\n isLoading: false,\r\n arrPlazas,\r\n arrSucursales,\r\n isEditing\r\n }));\r\n }, []);\r\n\r\n /**\r\n * Guardado de los datos de caffenio.\r\n * @param { Object } caffenio - Datos del Drive a guardar.\r\n */\r\n const handleSave = (caffenio, callback) => {\r\n setState({\r\n ...state,\r\n isLoading: true\r\n });\r\n let caffenioUpdated = {...caffenio};\r\n caffenioUpdated.OpenDate = moment(new Date(caffenioUpdated.OpenDate)).format(\"YYYY-MM-DDT00:00:00.000\")+\"Z\"; \r\n\r\n if (caffenioUpdated.isClosed && caffenioUpdated.CloseDate){\r\n caffenioUpdated.CloseDate= moment(new Date(caffenioUpdated.CloseDate)).format(\"YYYY-MM-DDT00:00:00.000\")+\"Z\";\r\n }else{ \r\n caffenioUpdated.CloseDate= '';\r\n }\r\n CaffenioDriveAPI.createCaffenio(caffenioUpdated)\r\n .then(res => {\r\n toast.success('Drive guardado');\r\n window.history.back();\r\n })\r\n .catch(err => {\r\n let message = 'Ocurrio un error';\r\n try {\r\n message = err.response.data.Message;\r\n } catch (error) {\r\n message = 'Ocurrió un error al crear PDV.';\r\n } finally {\r\n toast.error(message);\r\n setState({ ...state, isLoading: false });\r\n }\r\n })\r\n .finally(() => { \r\n setState({\r\n ...state,\r\n isLoading: false\r\n });\r\n callback();\r\n //handleGoBack();\r\n })\r\n \r\n }\r\n\r\n /***\r\n * Edita un PDV\r\n */\r\n const handleUpdate = (caffenio)=>{\r\n setState({\r\n ...state,\r\n showInfoConfirm: true,\r\n caffenio: caffenio,\r\n stepLocationDriveComplete: true\r\n }); \r\n \r\n }\r\n\r\n /**\r\n * Regresa a la ruta anterior.\r\n */\r\n const handleGoBack = () => {\r\n window.history.back();\r\n }\r\n\r\n return (\r\n
    \r\n {\r\n state.isLoading &&\r\n \r\n }\r\n
    \r\n
    \r\n
    \r\n \r\n \r\n \r\n \r\n
    \r\n {`${state.isEditing ? \"Editar Drive\": \"Nuevo Drive\" }`}\r\n setState({...state, showInfoModal:true})} className=\"fa fa-question-circle\">\r\n
    \r\n
    \r\n
    \r\n
    \r\n
    \r\n
    \r\n
    \r\n
    1
    \r\n
    \r\n

    Datos generales

    \r\n

    Información descriptiva.

    \r\n
    \r\n
    \r\n
    \r\n
    2
    \r\n
    \r\n

    Facturación

    \r\n

    Información descriptiva.

    \r\n
    \r\n
    \r\n
    \r\n
    3
    \r\n
    \r\n

    Ubicación y Dirección

    \r\n

    Información descriptiva.

    \r\n
    \r\n
    \r\n\r\n
    \r\n
    \r\n {!state.isLoading &&\r\n {\r\n \r\n setState({\r\n ...state,\r\n stepInfoDriveComplete: true,\r\n stepInfoDrive: false,\r\n stepFacturacionDrive: true,\r\n caffenio: caffenioUpdated\r\n });\r\n }}\r\n \r\n />\r\n } \r\n
    \r\n
    \r\n {!state.isLoading && \r\n {\r\n setState({\r\n ...state,\r\n stepFacturacionDriveComplete: true,\r\n stepFacturacionDrive: false,\r\n stepLocationDrive: true,\r\n caffenio: caffenioUpdated,\r\n });\r\n }}\r\n back = {(caffenioUpdated) => { \r\n setState({\r\n ...state, \r\n stepFacturacionDrive: false,\r\n stepInfoDrive: true,\r\n caffenio: caffenioUpdated\r\n }); \r\n }}\r\n />\r\n } \r\n
    \r\n
    \r\n {!state.isLoading && \r\n { \r\n \r\n if(state.isEditing){\r\n handleUpdate(caffenioUpdated)\r\n }else{\r\n handleSave(caffenioUpdated, ()=> setState({\r\n ...state,\r\n caffenio: caffenioUpdated,\r\n stepLocationDriveComplete: true\r\n }));\r\n }\r\n \r\n \r\n }}\r\n back = {(caffenioUpdated) => {\r\n setState({\r\n ...state, \r\n stepFacturacionDrive: true,\r\n stepLocationDrive: false,\r\n caffenio: caffenioUpdated\r\n })\r\n }} />\r\n } \r\n
    \r\n\r\n
    \r\n
    \r\n
    \r\n
    \r\n
    \r\n {state.showInfoModal &&\r\n setState({...state, showInfoModal:false})}\r\n >\r\n
    \r\n\r\n ¿Que dirá aquí?\r\n
    \r\n \r\n
    \r\n\r\n\r\n \r\n }\r\n {state.showInfoConfirm &&\r\n ¿Está seguro que desea guardar la información?

    }\r\n isActive={state.showInfoConfirm}\r\n willSave\r\n done={() => {\r\n setState({\r\n ...state,\r\n isLoading: true\r\n });\r\n let caffenioUpdated = {...state.caffenio};\r\n caffenioUpdated.OpenDate = moment(new Date(caffenioUpdated.OpenDate)).format(\"YYYY-MM-DDT00:00:00.000\")+\"Z\"; \r\n \r\n if (caffenioUpdated.isClosed && caffenioUpdated.CloseDate){\r\n caffenioUpdated.CloseDate= moment(new Date(caffenioUpdated.CloseDate)).format(\"YYYY-MM-DDT00:00:00.000\")+\"Z\";\r\n }else{ \r\n caffenioUpdated.CloseDate= '';\r\n }\r\n CaffenioDriveAPI.updateCaffenio(caffenioUpdated.CaffenioId, caffenioUpdated)\r\n .then(res => {\r\n toast.success('Drive actualizado');\r\n window.history.back();\r\n })\r\n .catch(err => {\r\n let message = 'Ocurrio un error';\r\n try {\r\n message = err.response.data.Message;\r\n } catch (error) {\r\n message = 'Ocurrió un error al actualizar PDV.';\r\n } finally {\r\n toast.error(message);\r\n setState({ ...state, isLoading: false });\r\n }\r\n })\r\n .finally(() => { \r\n setState({\r\n ...state,\r\n isLoading: false\r\n });\r\n })\r\n \r\n \r\n \r\n }}\r\n cancel={() => setState({...state, showInfoConfirm: false, isLoading:false})}\r\n /> \r\n }\r\n
    \r\n );\r\n}\r\n\r\n// Definición de los tipos y su dependencia de las distintas props que recibe el componente.\r\nNewCaffenio.propTypes = {\r\n caffenio: PropTypes.object,\r\n isEditing: PropTypes.bool\r\n}\r\n\r\n// Definición de los valores por default de las props en caso de no ser recibidas por el padre.\r\nNewCaffenio.defaultProps = {\r\n isEditing: false,\r\n caffenio: {\r\n ShortName: \"\",\r\n Name: \"\",\r\n SatCode: \"\"\r\n }\r\n}\r\n\r\nexport default NewCaffenio;","import React, { Component } from 'react';\r\nimport Select from 'react-select';\r\nimport { Formik } from 'formik';\r\nimport * as Yup from 'yup';\r\n\r\nimport lodash from 'lodash';\r\nimport { toast } from 'react-toastify';\r\nimport ExpresionesRegulares from '../../../../util/expresiones-regulares';\r\nimport Field from '../../../util/field/Field';\r\nimport ErrorMessages from '../../../../util/validation-error-messages';\r\nimport {nombresSinTipo} from '../../../../util/strings/sin-tipo-receta';\r\nconst SUPPORTED_FORMATS = [\r\n \"image/png\",\r\n];\r\n\r\n/**\r\n * Formulario para cargar la información general de la receta\r\n */\r\nclass RecipeConfigurationStep extends Component {\r\n constructor(props) {\r\n super(props);\r\n this.state = {\r\n recipe: {},\r\n requiredImages: [],\r\n isEditing: false,\r\n isLoading: false\r\n }\r\n }\r\n\r\n componentWillReceiveProps(nextProps) {\r\n this.setState({ recipe: { ...nextProps.recipe }, isEditing: nextProps.isEditing });\r\n }\r\n\r\n /**Esquema para validar al crear receta */\r\n VALIDATION_SCHEMA = Yup.object({\r\n ClassificationId: Yup.string().required(\"Familia es requerido.\").nullable(),\r\n RecipeTypeId: Yup.string().required(\"Requiere al menos un tipo de receta.\").nullable(),\r\n FlavorTypeId: Yup.string().required(\"Requiere al menos un tipo de sabor.\").nullable(),\r\n GrainTypeId: Yup.string().required(\"Requiere al menos un tipo de grano.\").nullable(),\r\n MilkTypeId: Yup.string().required(\"Requiere al menos un tipo de leche.\").nullable(),\r\n PresentationId: Yup.string().required(\"Requiere al menos una presentación.\").nullable(),\r\n SegmentationId: Yup.string()\r\n .when([], {\r\n is: () => !this.state.isEditing,\r\n then: Yup.string().required(\"Segmentación es requerido.\").nullable(),\r\n otherwise: Yup.string().notRequired(),\r\n }),\r\n KiwiId: Yup.string().trim().max(10, \"Ha excedido el límite de 10 caracteres.\").nullable()\r\n });\r\n\r\n /**Esquema para validar al editar receta con imagen*/\r\n VALIDATION_SCHEMA_EDIT_WITH_IMG = Yup.object({\r\n Description: Yup.string().trim()\r\n .matches(ExpresionesRegulares.AlfanumericoSinEspeciales, { message: ErrorMessages.AlfanumericoSinEspecialesError })\r\n .min(3, \"Nombre debe tener más de 2 caracteres.\")\r\n .max(50, \"Ha excedido el límite de 50 caracteres.\")\r\n .required(\"Campo Nombre es requerido.\"),\r\n ClassificationId: Yup.string().required(\"Familia es requerido.\").nullable(),\r\n RecipeTypeId: Yup.string().required(\"Requiere al menos un tipo de receta.\").nullable(),\r\n FlavorTypeId: Yup.string().required(\"Requiere al menos un tipo de sabor.\").nullable(),\r\n GrainTypeId: Yup.string().required(\"Requiere al menos un tipo de grano.\").nullable(),\r\n MilkTypeId: Yup.string().required(\"Requiere al menos un tipo de leche.\").nullable(),\r\n PresentationId: Yup.string().required(\"Requiere al menos una presentación.\").nullable(),\r\n /* Image: Yup.mixed()\r\n .required(\"Campo Imagen es requerido.\")\r\n .test(\r\n \"fileFormat\",\r\n ErrorMessages.PngFormatError,\r\n value => value && SUPPORTED_FORMATS.includes(value.type) || (this.state.recipe.UrlImage !== null && this.state.recipe.UrlImage.length > 0)\r\n\r\n ), */\r\n ShortName: Yup.string().trim()\r\n .matches(ExpresionesRegulares.AlfanumericoSinEspeciales, { message: ErrorMessages.AlfanumericoSinEspecialesError })\r\n .min(3, \"Nombre debe tener más de 2 caracteres.\")\r\n .max(40, \"Ha excedido el límite de 40 caracteres.\")\r\n .required(\"Campo Nombre Corto es requerido.\"),\r\n KiwiId: Yup.string().trim().max(10, \"Ha excedido el límite de 10 caracteres.\").nullable()\r\n });\r\n\r\n /**Esquema para validar al editar receta sin imagen*/\r\n VALIDATION_SCHEMA_EDIT = Yup.object({\r\n Description: Yup.string().trim()\r\n .matches(ExpresionesRegulares.AlfanumericoSinEspeciales, { message: ErrorMessages.AlfanumericoSinEspecialesError })\r\n .min(3, \"Nombre debe tener más de 2 caracteres.\")\r\n .max(50, \"Ha excedido el límite de 50 caracteres.\")\r\n .required(\"Campo Nombre es requerido.\"),\r\n ClassificationId: Yup.string().required(\"Familia es requerido.\").nullable(),\r\n RecipeTypeId: Yup.string().required(\"Requiere al menos un tipo de receta.\").nullable(),\r\n FlavorTypeId: Yup.string().required(\"Requiere al menos un tipo de sabor.\").nullable(),\r\n GrainTypeId: Yup.string().required(\"Requiere al menos un tipo de grano.\").nullable(),\r\n MilkTypeId: Yup.string().required(\"Requiere al menos un tipo de leche.\").nullable(),\r\n PresentationId: Yup.string().required(\"Requiere al menos una presentación.\").nullable(),\r\n ShortName: Yup.string().trim()\r\n .matches(ExpresionesRegulares.AlfanumericoSinEspeciales, { message: ErrorMessages.AlfanumericoSinEspecialesError })\r\n .min(3, \"Nombre debe tener más de 2 caracteres.\")\r\n .max(40, \"Ha excedido el límite de 40 caracteres.\")\r\n .required(\"Campo Nombre Corto es requerido.\"),\r\n KiwiId: Yup.string().trim().max(10, \"Ha excedido el límite de 10 caracteres.\").nullable()\r\n });\r\n\r\n /**Carga el previo de la imagen */\r\n loadFile = (file) => {\r\n\r\n var reader = new FileReader();\r\n reader.onload = function (e) {\r\n let previewControl = document.getElementById(\"imgPreview\");\r\n if (previewControl) {\r\n document.getElementById(\"imgPreview\").setAttribute('src', e.target.result);\r\n }\r\n }\r\n reader.readAsDataURL(file);\r\n }\r\n\r\n /**\r\n * Previene el submit al dar enter\r\n * @param {*} keyEvent \r\n */\r\n onKeyDown = (keyEvent) => {\r\n if ((keyEvent.charCode || keyEvent.keyCode) === 13) {\r\n keyEvent.preventDefault();\r\n }\r\n }\r\n\r\n /**\r\n * Función que analiza el nombre dado y determina si representa a la clasificacion sin tipo\r\n * @param nombre String. Nombre que se va analizar\r\n * @returns True si el nombre representa a la clasificación sin tipo. False en caso contrario\r\n */\r\n nombreEsSinTipo = (nombre) => { \r\n return nombresSinTipo.indexOf((nombre.trim().toLowerCase())) !== -1\r\n }\r\n\r\n render() {\r\n return (\r\n {\r\n /* if (this.state.requiredImages.some(r => r.Image === null || r.Image.length === 0)) {\r\n toast.error(\"Debe ingresar todas las imágenes de los sabores.\")\r\n } else { */\r\n //values.flavorsImages = this.state.requiredImages;\r\n this.props.save(values)\r\n //}\r\n\r\n }}>\r\n {({ values, touched, errors, handleChange, handleBlur, handleSubmit, setFieldValue, setFieldTouched, setFieldError }) => (\r\n
    \r\n {this.state.isEditing &&\r\n
    \r\n
    \r\n \r\n
    \r\n
    \r\n \r\n \r\n \r\n
    \r\n
    \r\n \r\n
    \r\n
    \r\n \r\n \r\n \r\n
    \r\n\r\n
    \r\n }\r\n\r\n
    \r\n
    \r\n \r\n
    \r\n
    \r\n \r\n \r\n \r\n
    \r\n
    \r\n\r\n {/* Familia, tipo receta , sabor */}\r\n
    \r\n
    \r\n \r\n
    \r\n \"No hay opciones\"}\r\n options={lodash.sortBy(this.props.classifications.map(c => {\r\n c.value = c.ClassificationId;\r\n c.label = c.Name;\r\n return c;\r\n }), [ts => ts.label.toLowerCase()], ['asc'])}\r\n onChange={(val) => {\r\n setFieldValue('ClassificationId', val)\r\n }}\r\n onBlur={() => setFieldTouched('ClassificationId', true)}\r\n />\r\n\r\n
    \r\n
    \r\n {(errors.ClassificationId || touched.ClassificationId) &&\r\n
    \r\n {errors.ClassificationId ? errors.ClassificationId : \"\"}\r\n
    \r\n }\r\n
    \r\n
    \r\n\r\n
    \r\n \r\n
    \r\n \"No hay opciones\"}\r\n options={lodash.sortBy(this.props.recipeTypes.map(rt => {\r\n //Formato al listado\r\n rt.value = rt.RecipeTypeId;\r\n rt.label = rt.Description;\r\n return rt;\r\n }), [ts => ts.label.toLowerCase()], ['asc'])}\r\n onChange={(val) => {\r\n let formatValue = []\r\n let lstRecetasSinTipo = this.props.lstRecipes.filter(l => \r\n values.ClassificationId \r\n && l.ClassificationId === values.ClassificationId.value \r\n )\r\n \r\n if (this.state.isEditing) {\r\n formatValue.push(val)\r\n } else {\r\n formatValue = val;\r\n } \r\n\r\n if(\r\n (formatValue.some(r => this.nombreEsSinTipo(r.label)) && \r\n lstRecetasSinTipo.some(r => !this.nombreEsSinTipo(r.RecipeType.Description)) )\r\n || (formatValue.some(r => !this.nombreEsSinTipo(r.label)) && \r\n lstRecetasSinTipo.some(r => this.nombreEsSinTipo(r.RecipeType.Description)))\r\n ){\r\n toast.dismiss()\r\n toast.warn(\"Se recomienda no combinar recetas con tipo receta y sin tipo\") \r\n }\r\n \r\n setFieldValue('RecipeTypeId', formatValue)\r\n \r\n }}\r\n onBlur={() => setFieldTouched('RecipeTypeId', true)}\r\n />\r\n
    \r\n
    \r\n {(errors.RecipeTypeId || touched.RecipeTypeId) &&\r\n
    \r\n {errors.RecipeTypeId ? errors.RecipeTypeId : \"\"}\r\n
    \r\n }\r\n
    \r\n
    \r\n\r\n
    \r\n \r\n
    \r\n \"No hay opciones\"}\r\n options={lodash.sortBy(this.props.flavors.map(f => {\r\n f.value = f.FlavorTypeId;\r\n f.label = f.Name;\r\n return f;\r\n }), [ts => ts.label.toLowerCase()], ['asc'])}\r\n onChange={(val) => { \r\n let formatValue = []\r\n let lstRecetasSinTipo = this.props.lstRecipes.filter(l => \r\n values.ClassificationId && l.ClassificationId === values.ClassificationId.value \r\n )\r\n if (this.state.isEditing) {\r\n toast.info('Al modificar el tipo sabor, es necesario cambiar su imagen nuevamente.')\r\n formatValue.push(val);\r\n } else {\r\n let requiredImage = [];\r\n formatValue = val;\r\n if (val) {\r\n requiredImage = val.filter(v => {\r\n if (!this.props.sintiposArray.includes(v.label)\r\n ) {\r\n return v; \r\n }\r\n }).map(r => {\r\n return { \r\n FlavorTypeId: r.value, \r\n Name: r.label, \r\n UrlImage: this.state.requiredImages && this.state.requiredImages.some(s => s.FlavorTypeId === r.value) \r\n ? this.state.requiredImages.filter(s => s.FlavorTypeId === r.value)[0].UrlImage \r\n : \"\", \r\n Image: this.state.requiredImages && this.state.requiredImages.some(s => s.FlavorTypeId === r.value) \r\n ? this.state.requiredImages.filter(s => s.FlavorTypeId === r.value)[0].Image \r\n : null \r\n }\r\n });\r\n }\r\n this.setState({ requiredImages: requiredImage });\r\n }\r\n if(\r\n (formatValue.some(r => this.nombreEsSinTipo(r.label)) && \r\n lstRecetasSinTipo.some(r => !this.nombreEsSinTipo(r.FlavorType.Name)) )\r\n || (formatValue.some(r => !this.nombreEsSinTipo(r.label)) && \r\n lstRecetasSinTipo.some(r => this.nombreEsSinTipo(r.FlavorType.Name)))\r\n ){\r\n toast.dismiss()\r\n toast.warn(\"Se recomienda no combinar recetas con tipo sabor y sin tipo\") \r\n }\r\n setFieldValue('FlavorTypeId', formatValue)\r\n \r\n }}\r\n onBlur={() => setFieldTouched('FlavorTypeId', true)}\r\n />\r\n
    \r\n
    \r\n {(errors.FlavorTypeId || touched.FlavorTypeId) &&\r\n
    \r\n {errors.FlavorTypeId ? errors.FlavorTypeId : \"\"}\r\n
    \r\n }\r\n
    \r\n
    \r\n
    \r\n {/* grano, leche, presentación */}\r\n
    \r\n
    \r\n \r\n
    \r\n \"No hay opciones\"}\r\n options={lodash.sortBy(this.props.grains.map(g => {\r\n //formato al listado \r\n g.value = g.GrainTypeId;\r\n g.label = g.Description;\r\n return g;\r\n }), [ts => ts.label.toLowerCase()], ['asc'])}\r\n onChange={(val) => {\r\n let formatValue = []\r\n let lstRecetasSinTipo = this.props.lstRecipes.filter(l => \r\n values.ClassificationId && l.ClassificationId === values.ClassificationId.value )\r\n if (this.state.isEditing) {\r\n formatValue.push(val)\r\n } else {\r\n formatValue = val;\r\n }\r\n if(\r\n (formatValue.some(r => this.nombreEsSinTipo(r.label)) && \r\n lstRecetasSinTipo.some(r => !this.nombreEsSinTipo(r.GrainType.Description)) )\r\n || (formatValue.some(r => !this.nombreEsSinTipo(r.label)) && \r\n lstRecetasSinTipo.some(r => this.nombreEsSinTipo(r.GrainType.Description)))\r\n ){\r\n toast.dismiss()\r\n toast.warn(\"Se recomienda no combinar recetas con tipo grano y sin tipo\") \r\n }\r\n setFieldValue('GrainTypeId', formatValue)\r\n \r\n }}\r\n onBlur={() => setFieldTouched('GrainTypeId', true)}\r\n />\r\n
    \r\n
    \r\n {(errors.GrainTypeId || touched.GrainTypeId) &&\r\n
    \r\n {errors.GrainTypeId ? errors.GrainTypeId : \"\"}\r\n
    \r\n }\r\n
    \r\n
    \r\n\r\n
    \r\n \r\n
    \r\n \"No hay opciones\"}\r\n options={lodash.sortBy(this.props.milks.map(m => {\r\n m.value = m.MilkTypeId;\r\n m.label = m.Description;\r\n return m;\r\n\r\n }), [ts => ts.label.toLowerCase()], ['asc'])}\r\n onChange={(val) => {\r\n let formatValue = []\r\n let lstRecetasSinTipo = this.props.lstRecipes.filter(l => \r\n values.ClassificationId \r\n && l.ClassificationId === values.ClassificationId.value \r\n )\r\n if (this.state.isEditing) {\r\n formatValue.push(val)\r\n } else {\r\n formatValue = val;\r\n }\r\n if(\r\n (formatValue.some(r => this.nombreEsSinTipo(r.label)) && \r\n lstRecetasSinTipo.some(r => !this.nombreEsSinTipo(r.MilkType.Description)) )\r\n || (formatValue.some(r => !this.nombreEsSinTipo(r.label)) && \r\n lstRecetasSinTipo.some(r => this.nombreEsSinTipo(r.MilkType.Description)))\r\n ){\r\n toast.dismiss()\r\n toast.warn(\"Se recomienda no combinar recetas con tipo leche y sin tipo\") \r\n }\r\n \r\n setFieldValue('MilkTypeId', formatValue)\r\n \r\n }}\r\n onBlur={() => setFieldTouched('MilkTypeId', true)}\r\n />\r\n
    \r\n
    \r\n {(errors.MilkTypeId || touched.MilkTypeId) &&\r\n
    \r\n {errors.MilkTypeId ? errors.MilkTypeId : \"\"}\r\n
    \r\n }\r\n
    \r\n
    \r\n\r\n
    \r\n \r\n
    \r\n \"No hay opciones\"}\r\n options={lodash.sortBy(this.props.presentations.map(p => {\r\n p.value = p.PresentationId;\r\n p.label = p.Name;\r\n return p;\r\n }), [ts => ts.label.toLowerCase()], ['asc'])}\r\n onChange={(val) => {\r\n let formatValue = [];\r\n let lstRecetasSinTipo = this.props.lstRecipes.filter(l => \r\n values.ClassificationId \r\n && l.ClassificationId === values.ClassificationId.value \r\n )\r\n\r\n if (this.state.isEditing) {\r\n formatValue.push(val)\r\n } else {\r\n formatValue = val;\r\n }\r\n if(\r\n (formatValue.some(r => this.nombreEsSinTipo(r.label)) && \r\n lstRecetasSinTipo.some(r => !this.nombreEsSinTipo(r.Presentation.Name)) )\r\n || (formatValue.some(r => !this.nombreEsSinTipo(r.label)) && \r\n lstRecetasSinTipo.some(r => this.nombreEsSinTipo(r.Presentation.Name)))\r\n ){\r\n toast.dismiss()\r\n toast.warn(\"Se recomienda no combinar recetas con tipo presentación y sin tipo\") \r\n }\r\n setFieldValue('PresentationId', formatValue)\r\n \r\n }}\r\n onBlur={() => setFieldTouched('PresentationId', true)}\r\n />\r\n
    \r\n
    \r\n {(errors.PresentationId || touched.PresentationId) &&\r\n
    \r\n {errors.PresentationId ? errors.PresentationId : \"\"}\r\n
    \r\n }\r\n
    \r\n
    \r\n
    \r\n {/* Segmentación */}\r\n {!this.state.isEditing &&\r\n
    \r\n
    \r\n \r\n
    \r\n \"No hay opciones\"}\r\n onChange={(val) => {\r\n setFieldValue('SegmentationId', val)\r\n }}\r\n onBlur={() => setFieldTouched('SegmentationId', true)}\r\n options={this.props.segments}\r\n getOptionLabel={(objSegment) => {\r\n switch(objSegment.Name){\r\n case \"Andatti drive\":\r\n return \"Andatti\"\r\n case \"Drive\":\r\n return \"Caffenio\"\r\n case \"momento espresso\":\r\n return \"Momento Espresso\"\r\n default:\r\n return objSegment.Name\r\n }\r\n }}\r\n getOptionValue={(objSegment) => objSegment.SegmentId}\r\n />\r\n
    \r\n
    \r\n {(errors.SegmentationId || touched.SegmentationId) &&\r\n
    \r\n {errors.SegmentationId ? errors.SegmentationId : \"\"}\r\n
    \r\n }\r\n
    \r\n
    \r\n
    \r\n }\r\n
    \r\n\r\n{/* {//Tabla con las imagenes requeridas por sabor\r\n !this.state.isEditing && this.state.requiredImages.length > 0 &&\r\n
    \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n\r\n \r\n \r\n {this.state.requiredImages.map((image, index) => {\r\n return (\r\n \r\n \r\n \r\n \r\n \r\n )\r\n })}\r\n \r\n
    SaborImagenAcciones
    {image.Name}\r\n {\r\n image.Image !== null\r\n ?\r\n
    \r\n \"\"\r\n
    \r\n :
    \r\n \r\n
    \r\n }\r\n
    {image.Image !== null &&\r\n }\r\n\r\n
    \r\n
    \r\n\r\n } */}\r\n\r\n {/*
    \r\n
    \r\n
    \r\n { this.state.isEditing \r\n && this.state.recipe.FlavorTypeId && this.state.recipe.FlavorTypeId[0]\r\n && !this.props.sintiposArray.includes(values.FlavorTypeId && values.FlavorTypeId[0] ? values.FlavorTypeId[0].Name : \"\") \r\n ? ( values.UrlImage || values.Image \r\n ? \r\n
    \r\n
    \r\n {values.UrlImage && values.UrlImage.length > 0 \r\n ? \"\"\r\n : \"\"\r\n }\r\n \r\n
    \r\n
    \r\n \r\n
    \r\n : \r\n
    \r\n \r\n
    \r\n
    \r\n )\r\n : \"\"\r\n }\r\n \r\n
    \r\n
    \r\n \r\n
    */}\r\n \r\n \r\n {/* step buttons */}\r\n
    \r\n
    \r\n
    \r\n
    \r\n
    \r\n \r\n
    \r\n
    \r\n\r\n\r\n \r\n )}\r\n\r\n \r\n\r\n )\r\n }\r\n}\r\n\r\n// Definición de los valores por default de las props en caso de no ser recibidas por el padre.\r\nRecipeConfigurationStep.defaultProps = {\r\n isEditing: false,\r\n recipe: {\r\n ShortName: \"\",\r\n Description: \"\",\r\n ClassificationId: null,\r\n PresentationId: null,\r\n FlavorTypeId: null,\r\n RecipeTypeId: null,\r\n MilkTypeId: null,\r\n GrainTypeId: null,\r\n IVAApply: true,\r\n KiwiId: \"\",\r\n Active: true,\r\n MobileApply: true,\r\n WelcomeGiftApply: true,\r\n ClassificationSatId: 0,\r\n CodeSatId: 0,\r\n Details: [],\r\n GiftWelcomeActive: true,\r\n Image: null,\r\n UrlImage: \"\"\r\n }\r\n}\r\n\r\nexport default RecipeConfigurationStep;","import React, { Component } from 'react';\r\nimport Field from '../../../util/field/Field';\r\nimport Select from 'react-select';\r\nimport { Formik } from 'formik';\r\nimport * as Yup from 'yup';\r\nimport lodash from 'lodash';\r\n\r\n\r\n/**\r\n * Formulario para cargar la información general de la receta\r\n */\r\nclass RecipeComplementInfoStep extends Component {\r\n constructor(props) {\r\n super(props);\r\n this.state = {\r\n recipe: {},\r\n isEditing: false,\r\n isLoading: false\r\n }\r\n }\r\n componentWillReceiveProps(nextProps) {\r\n this.setState({ recipe: { ...nextProps.recipe }, isEditing: nextProps.isEditing });\r\n }\r\n\r\n VALIDATION_SCHEMA = Yup.object({\r\n IVAApply: Yup.bool(),\r\n MobileActive: Yup.bool(),\r\n GiftWelcomeActive: Yup.bool(),\r\n ClassificationSatId: Yup.string().required(\"El campo Clasificación del SAT es requerido.\").nullable(),\r\n CodeSatId: Yup.string().required(\"El campo Código del SAT es requerido.\").nullable(),\r\n }); \r\n\r\n render() {\r\n return (\r\n {\r\n this.props.save(values)\r\n }}>\r\n {({ values, touched, errors, handleChange, handleBlur, handleSubmit, setFieldValue, setFieldTouched }) => (\r\n
    \r\n\r\n
    \r\n
    \r\n \r\n
    \r\n \"No hay opciones\"}\r\n options={lodash.sortBy(this.props.satClassifications.map(c => {\r\n c.value = c.ClassificationSatId;\r\n c.label = `${c.CodeSat} - ${c.Description}`;\r\n return c;\r\n }), [ts => ts.label.toLowerCase()], ['asc'])}\r\n onChange={(val) => {\r\n setFieldValue('ClassificationSatId', val)\r\n }}\r\n onBlur={() => setFieldTouched('ClassificationSatId', true)}\r\n />\r\n
    \r\n
    \r\n {(errors.ClassificationSatId || touched.ClassificationSatId) &&\r\n
    \r\n {errors.ClassificationSatId ? errors.ClassificationSatId : \"\"}\r\n
    \r\n }\r\n
    \r\n
    \r\n\r\n
    \r\n \r\n
    \r\n \"No hay opciones\"}\r\n options={lodash.sortBy(this.props.satCodes.map(c => {\r\n c.value = c.Code;\r\n c.label = `${c.Code} - ${c.Description}`;\r\n return c;\r\n }), [ts => ts.label.toLowerCase()], ['asc'])}\r\n onChange={(val) => {\r\n setFieldValue('CodeSatId', val)\r\n }}\r\n onBlur={() => setFieldTouched('CodeSatId', true)}\r\n />\r\n
    \r\n
    \r\n {(errors.CodeSatId || touched.CodeSatId) &&\r\n
    \r\n {errors.CodeSatId ? errors.CodeSatId : \"\"}\r\n
    \r\n }\r\n
    \r\n
    \r\n\r\n
    \r\n\r\n
    \r\n
    \r\n \r\n \r\n \r\n
    \r\n\r\n
    \r\n \r\n \r\n \r\n
    \r\n\r\n
    \r\n \r\n \r\n \r\n
    \r\n
    \r\n\r\n
    \r\n\r\n
    \r\n
    \r\n \r\n\r\n
    \r\n
    \r\n
    \r\n
    \r\n \r\n
    \r\n
    \r\n\r\n
    \r\n )}\r\n\r\n \r\n\r\n )\r\n }\r\n}\r\n\r\n// Definición de los valores por default de las props en caso de no ser recibidas por el padre.\r\nRecipeComplementInfoStep.defaultProps = {\r\n isEditing: false,\r\n recipe: {\r\n ShortName: \"\",\r\n Description: \"\",\r\n ClassificationId: 0,\r\n PresentationId: 0,\r\n FlavorTypeId: 0,\r\n RecipeTypeId: 0,\r\n IVAApply: true,\r\n KiwiId: 0,\r\n MilkTypeId: 0,\r\n GrainTypeId: 0,\r\n Active: true,\r\n MobileApply: true,\r\n WelcomeGiftApply: true,\r\n ClassificationSatId: 0,\r\n CodeSatId: 0,\r\n Details: [],\r\n GiftWelcomeActive: true\r\n }\r\n}\r\n\r\nexport default RecipeComplementInfoStep;","import React, { Component } from 'react';\r\nimport Select from 'react-select';\r\nimport PropTypes from 'prop-types';\r\nimport lodash from 'lodash';\r\n\r\n/** Componente para visualizar los filtros de estado, ciudad y drives */\r\nclass SelectDriveForm extends Component {\r\n constructor(props) {\r\n super(props);\r\n this.state = {\r\n //estados seleccionados\r\n selectedOption: [],\r\n //ciudades seleccionadas\r\n selectedOptionC: [],\r\n //drives seleccionados\r\n selectedOptionD: [],\r\n //options ciudades\r\n optionCity: [],\r\n //options drives\r\n optionDrive: []\r\n \r\n }\r\n }\r\n\r\n /**Función para setear os valores seleccionados por el usuario al state */\r\n changeSelectEstado = (value, itemName) => {\r\n let state = { ...this.state }\r\n state[itemName] = value; \r\n\r\n state.optionDrive = this.props.Caffenios.reduce((list, item) => {\r\n if (state.selectedOption.length === 0\r\n || state.selectedOption.some(o => o.value === item.StateId)) {\r\n if (state.selectedOptionC.length === 0\r\n || state.selectedOptionC.some(o => o.Municipalityid === item.Municipalityid)) {\r\n if (!list.some(l => l.idCaffenio === item.idCaffenio)) {\r\n let newItem = {...item};\r\n newItem.value = item.idCaffenio;\r\n newItem.label = item.Name;\r\n list.push(newItem);\r\n }\r\n }\r\n }\r\n\r\n return list;\r\n }, []);\r\n\r\n state.optionCity = this.props.Caffenios.reduce((list, item) => {\r\n if (state.selectedOption.length === 0\r\n || state.selectedOption.some(o => o.value === item.StateId)) {\r\n if (!list.some(l => l.Municipalityid === item.Municipalityid)) {\r\n let newItem = {...item};\r\n newItem.value = item.Municipalityid;\r\n newItem.label = item.Municipality;\r\n list.push(newItem);\r\n }\r\n }\r\n return list;\r\n }, []);\r\n\r\n\r\n //Comparte con el padre los valores actuales de los listados\r\n this.setState(state, () => this.setValuesToParent());\r\n }\r\n\r\n /**Función para setear los valores al padre */\r\n setValuesToParent = () => { \r\n this.props.setStateFunc(this.state.selectedOption.length === 0\r\n ? this.props.optionState : this.state.selectedOption);\r\n this.props.setCityFunc(this.state.selectedOptionC.length === 0\r\n ? this.state.selectedOption.length === 0\r\n ? this.props.Caffenios\r\n : this.props.Caffenios.filter(c => this.state.selectedOption.some(o => o.value === c.StateId))\r\n : this.state.selectedOptionC);\r\n this.props.setDriveFunc(\r\n this.state.selectedOptionD.length === 0\r\n ? this.state.selectedOptionC.length === 0 && this.state.selectedOption.length === 0\r\n ? this.props.Caffenios\r\n : this.props.Caffenios.filter((item) => {\r\n if ((this.state.selectedOption.some(o => o.value === item.StateId) || this.state.selectedOption.length ===0 ) && \r\n (this.state.selectedOptionC.some(o => o.Municipalityid === item.Municipalityid) || this.state.selectedOptionC.length === 0)) { \r\n return item \r\n }\r\n })\r\n : this.state.selectedOptionD);\r\n }\r\n\r\n render() {\r\n return (\r\n
    \r\n
    \r\n
    \r\n \r\n
    \r\n this.changeSelectEstado(val, \"selectedOption\")}\r\n noOptionsMessage={() => \"No hay opciones\"}\r\n options={lodash.sortBy( this.props.optionState, [ts => ts.label.toLowerCase()], ['asc'])}\r\n />\r\n
    \r\n
    \r\n
    \r\n \r\n
    \r\n this.changeSelectEstado(val, \"selectedOptionC\")}\r\n noOptionsMessage={() => \"No hay opciones\"}\r\n options={lodash.sortBy( this.state.optionCity, [ts => ts.label.toLowerCase()], ['asc'])}\r\n />\r\n
    \r\n
    \r\n
    \r\n \r\n
    \r\n this.changeSelectEstado(val, \"selectedOptionD\")}\r\n noOptionsMessage={() => \"No hay opciones\"}\r\n options={lodash.sortBy(this.state.optionDrive, [ts => ts.label.toLowerCase()], ['asc'])}\r\n />\r\n
    \r\n
    \r\n
    \r\n\r\n
    \r\n
    \r\n {\r\n this.setValuesToParent();\r\n this.props.closeModal();\r\n }}>\r\n Siguiente\r\n \r\n
    \r\n
    \r\n
    \r\n )\r\n }\r\n}\r\n\r\nSelectDriveForm.propTypes = {\r\n //listado de estados\r\n optionState: PropTypes.arrayOf(PropTypes.object).isRequired,\r\n //listado de drives\r\n Caffenios: PropTypes.arrayOf(PropTypes.object).isRequired,\r\n //Funcion para compartir con el padre el estado seleccionado\r\n setStateFunc: PropTypes.func.isRequired,\r\n //Funcion para compartir con el padre las ciudades seleccionadas\r\n setCityFunc: PropTypes.func.isRequired,\r\n //Función para compartir con el padre los drives seleccionados\r\n setDriveFunc: PropTypes.func.isRequired,\r\n}\r\n\r\nexport default SelectDriveForm;","import React, { Component } from 'react';\r\nimport { toast } from 'react-toastify';\r\nimport RecipeDetails from '../components/RecipeDetails';\r\nimport SelectDriveForm from '../components/SelectDriveForm';\r\nimport RecipeToppings from '../components/RecipeToppings';\r\nimport NewRecipeDetail from '../components/NewRecipeDetail';\r\nimport RecipeDrivesDetail from '../components/RecipeDrivesDetail';\r\nimport Modal from '../../../util/modal/Modal';\r\nimport AcceptModal from '../../../util/acceptModal/AcceptModal';\r\n\r\n\r\n\r\n/**\r\n * Formulario para cargar la información general de la receta\r\n */\r\nclass RecipeItemsAndToppingStep extends Component {\r\n constructor(props) {\r\n super(props);\r\n this.state = {\r\n recipe: { ...this.props.recipe },\r\n isEditing: false,\r\n isLoading: false,\r\n //modal drive, artículos\r\n modalDrive: false,\r\n detailModal: false,\r\n selectedOption: [],\r\n selectedOptionC: [],\r\n selectedOptionD: [],\r\n // modal eliminar \r\n removeModal: false,\r\n idRecipeDetail: 0,\r\n // modal para ver listado de drives\r\n detailDrivesModal: false,\r\n recipeDetail: {},\r\n // modales para toppingModal\r\n toppingModal: false,\r\n\r\n }\r\n }\r\n\r\n componentWillReceiveProps(nextProps) {\r\n this.setState({ recipe: { ...nextProps.recipe }, isEditing: nextProps.isEditing });\r\n }\r\n\r\n\r\n /**Elimina articulo inventario de la receta */\r\n removeDetail = () => {\r\n let state = { ...this.state };\r\n state.recipe.Details.splice(state.idRecipeDetail, 1);\r\n state.removeModal = false;\r\n state.idRecipeDetail = null;\r\n this.setState(state);\r\n toast.success(\"Detalle eliminado\");\r\n }\r\n\r\n /** Quita articulo inventario de los drive's seleccionados */\r\n removeDriveDetail = (itemToRemove) => { \r\n let state = { ...this.state };\r\n let detalleToEdit = state.recipe.Details[state.detailIndex];\r\n detalleToEdit.DriveId = detalleToEdit.DriveId\r\n ? detalleToEdit.DriveId.filter(d => d.idDrive !== itemToRemove.idCaffenio)\r\n : this.props.Caffenios.filter(c => {\r\n if (c.idCaffenio !== itemToRemove.idCaffenio) {\r\n c.value = c.idCaffenio;\r\n c.label = c.NombreNuevo;\r\n c.DriveMunicipio = c.Municipality;\r\n c.DriveEstado = c.State;\r\n c.idDrive = c.idCaffenio;\r\n detalleToEdit.idDrive = c.idCaffenio;\r\n return c;\r\n }\r\n });\r\n detalleToEdit.driveList = detalleToEdit.driveList.filter(val => val !== itemToRemove.idCaffenio);\r\n if(detalleToEdit.driveList.length > 0){\r\n let cities = detalleToEdit.DriveId.reduce((cities, item) => {\r\n if (!cities.includes(item.DriveMunicipio) && !cities.includes(item.Municipality)) {\r\n cities.push(item.DriveMunicipio ? item.DriveMunicipio : item.Municipality)\r\n }\r\n return cities;\r\n }, []);\r\n let estados = detalleToEdit.DriveId.reduce((estados, item) => {\r\n if (!estados.includes(item.DriveEstado) && !estados.includes(item.State)) {\r\n estados.push(item.DriveEstado ? item.DriveEstado : item.State)\r\n }\r\n return estados;\r\n }, []);\r\n detalleToEdit.DriveNombre = detalleToEdit.driveList.length >= this.props.Caffenios.length\r\n ? \"Todos\"\r\n : detalleToEdit.DriveId.length <= 4\r\n ? detalleToEdit.DriveId.map(d => d.DriveNombre ? d.DriveNombre : d.Name).join(', ')\r\n : cities.length > 4\r\n ? estados.join(', ')\r\n : cities.join(', ');\r\n \r\n state.recipe.Details[state.detailIndex] = detalleToEdit;\r\n }else{\r\n state.recipe.Details.splice(state.detailIndex, 1);\r\n }\r\n \r\n\r\n this.setState(state);\r\n }\r\n\r\n render() {\r\n return (\r\n
    \r\n
    \r\n
    \r\n \r\n
    \r\n
    \r\n {\r\n \r\n let recipe = { ...this.state.recipe };\r\n recipe.Details[index].Amount = value;\r\n\r\n this.setState({ recipe: recipe });\r\n if (!value || value <= 0) {\r\n toast.warn(\"La cantidad debe ser mayor a cero.\")\r\n }\r\n\r\n }}\r\n removeDetail={(recipe) => {\r\n this.setState({ removeModal: true, idRecipeDetail: recipe })\r\n }}\r\n viewDrivesDetail={(recipe, index) => {\r\n this.setState({ detailDrivesModal: true, recipeDetail: recipe, detailIndex: index })\r\n }}\r\n mostrarDrives={true}\r\n onMostrarDrives={(recipe) => {\r\n this.setState({ mostrarDrivesModal: true, recipeDetail: recipe })\r\n }}\r\n />\r\n
    \r\n\r\n {/* Modulo de toppings */}\r\n
    \r\n \r\n
    \r\n
    \r\n {\r\n \r\n let recipe = { ...this.state.recipe };\r\n let newValue = value && value.length > 0 ? parseInt(value) : '';\r\n if(newValue !== ''){\r\n if(labelQuantity =='MinQuantity'){\r\n if(newValue > recipe.Toppings[index]['MaxQuantity'] && recipe.Toppings[index]['MaxQuantity'] !==''){\r\n toast.error(\"La cantidad miníma no puede ser mayor a la cantidad máxima.\")\r\n return;\r\n }\r\n }\r\n else if(labelQuantity =='MaxQuantity'){\r\n if(newValue < recipe.Toppings[index]['MinQuantity'] && recipe.Toppings[index]['MinQuantity'] !== ''){\r\n toast.error(\"La cantidad máxima no puede ser menor a la cantidad mínima.\")\r\n return;\r\n }\r\n } \r\n } \r\n recipe.Toppings[index][labelQuantity] = newValue; \r\n this.setState({ recipe: recipe });\r\n \r\n \r\n\r\n }}\r\n removeDetail={(recipe) => {\r\n let state = { ...this.state };\r\n state.recipe.Toppings.splice(recipe, 1);\r\n this.setState(state);\r\n toast.success(\"Topping eliminado\");\r\n }}\r\n />\r\n
    \r\n
    \r\n
    \r\n\r\n
    \r\n
    \r\n \r\n\r\n
    \r\n
    \r\n
    \r\n\r\n
    \r\n {\r\n this.state.recipe.HasMenuAssigned && this.state.isEditing &&\r\n {\r\n let recipe = { ...this.state.recipe };\r\n // Valida todos los artículo inventario tengan valor mayo a 0\r\n if (recipe.Details.some(d => !d.Amount || d.Amount <= 0)){\r\n toast.dismiss()\r\n toast.error(\"Todos los artículos inventarios deben tener cantidad mayor a cero.\")\r\n return;\r\n }\r\n // Válida todos los toppings tengan valor\r\n if(recipe.Toppings.some(d => \r\n (d.MaxQuantity && d.MaxQuantity < 0) || \r\n (d.MinQuantity && d.MinQuantity < 0) || \r\n d.MinQuantity.length === 0 ||\r\n d.MaxQuantity.length === 0) ){\r\n toast.dismiss()\r\n toast.error(\"Todos los toppings deben tener cantidad mínima y máxima mayor o igual a cero.\")\r\n return;\r\n }\r\n this.props.save(this.state.recipe, true)\r\n }}>\r\n Actualizar y Sincronizar\r\n \r\n }\r\n \r\n
    \r\n
    \r\n\r\n {/* modales */}\r\n\r\n {/* Modal para seleccionar articulo inventario por drive */}\r\n {(this.state.modalDrive || this.state.detailModal) &&\r\n this.setState({\r\n modalDrive: false,\r\n detailModal: false,\r\n selectedOption: [],\r\n selectedOptionC: [],\r\n selectedOptionD: [],\r\n })}\r\n width=\"75%\"\r\n >\r\n
    \r\n {this.state.detailModal\r\n ? {\r\n // Agrega artículo inventario a la receta \r\n let recipe = { ...this.state.recipe };\r\n let exists = recipe.Details.filter(d => d.InventoryItemId === detail.InventoryItemId && Number(d.Amount) === Number(detail.Amount));\r\n if (exists.length > 0) {\r\n toast.warn(\"No se puede agregar el mismo artículo con la misma cantidad.\")\r\n } else {\r\n detail.DriveId = [...this.state.selectedOptionD.map(selected => {\r\n if (!selected.idDrive) {\r\n selected.idDrive = selected.idCaffenio;\r\n }\r\n return selected;\r\n })];\r\n\r\n let totalDrives = this.props.Caffenios.length;\r\n let pushStates = [];\r\n let pushCities = [];\r\n\r\n detail.DriveNombre = this.state.selectedOptionD.length > 4\r\n ? this.state.selectedOptionD.length === totalDrives\r\n ? \"Todos\"\r\n : this.state.selectedOptionD.reduce((list, item) => {\r\n if (!list.some(l => l.Municipalityid === item.Municipalityid)) {\r\n list.push(item);\r\n pushCities.push(item.Municipality);\r\n }\r\n return list\r\n }, []).length > 4\r\n ? this.state.selectedOptionD.reduce((list, item) => {\r\n if (!list.some(l => l.StateId === item.StateId)) {\r\n list.push(item);\r\n pushStates.push(item.State);\r\n }\r\n return list;\r\n }, []).length > 1\r\n ? pushStates.join(\", \")\r\n : this.state.selectedOptionD[0].State\r\n : pushCities.join(\", \")\r\n : this.state.selectedOptionD.map(d => { return d.NombreNuevo }).join(\", \");\r\n\r\n detail.driveList = detail.DriveId.map(d => d.idCaffenio);\r\n recipe.Details.push(detail);\r\n\r\n this.setState({ recipe: recipe }, () => toast.success(\"Detalle agregado\"));\r\n }\r\n }}\r\n currentDetails={\r\n []\r\n // this.state.recipe.Details.filter(det => {\r\n // let caffenios = [...this.state.selectedOptionD];\r\n // return caffenios.findIndex(dri => {\r\n // return det.DriveId.findIndex(id => id.value === dri.value) != -1\r\n // }) != -1\r\n // }).map(det => det.InventoryItemId)\r\n }\r\n\r\n isDetail={true}\r\n />\r\n : this.setState({ modalDrive: false, detailModal: true })}\r\n setStateFunc={(value) => this.setState({ selectedOption: value })}\r\n setCityFunc={(value) => this.setState({ selectedOptionC: value })}\r\n setDriveFunc={(value => this.setState({ selectedOptionD: value }))}\r\n />}\r\n
    \r\n \r\n }\r\n\r\n {/**Modal para ver e listado de drives que comparten el artículo inventario */}\r\n {this.state.detailDrivesModal &&\r\n this.setState({\r\n detailDrivesModal: false\r\n })}\r\n width=\"75%\"\r\n >\r\n this.removeDriveDetail(caffenioId)}\r\n caffenios={this.props.Caffenios}\r\n\r\n />\r\n \r\n }\r\n\r\n {/* Popup para confirmar la eliminación de un articulo de la receta */}\r\n {this.state.removeModal && this.removeDetail()}\r\n cancel={() => this.setState({ removeModal: false })}\r\n modalTitle={\"Eliminar artículo inventario\"}\r\n />}\r\n\r\n {/* Modal para el modulo de toppings */}\r\n {this.state.toppingModal &&\r\n this.setState({ toppingModal: false })}\r\n width=\"75%\"\r\n >\r\n { \r\n let recipe = { ...this.state.recipe }; \r\n recipe.Toppings.push({\r\n ...detail,\r\n MinQuantity: detail.MinQuantity || 0,\r\n MaxQuantity: detail.MaxQuantity || 0,\r\n });\r\n this.setState({ recipe: recipe }); \r\n \r\n }}\r\n currentDetails={this.state.recipe.Toppings.map(det => det.InventoryItemId)}\r\n soloToppings={true}\r\n isTopping={true}\r\n />\r\n \r\n }\r\n
    \r\n )\r\n }\r\n}\r\n\r\n// Definición de los valores por default de las props en caso de no ser recibidas por el padre.\r\nRecipeItemsAndToppingStep.defaultProps = {\r\n isEditing: false,\r\n recipe: {\r\n ShortName: \"\",\r\n Description: \"\",\r\n ClassificationId: 0,\r\n PresentationId: 0,\r\n FlavorTypeId: 0,\r\n RecipeTypeId: 0,\r\n IVAApply: true,\r\n KiwiId: 0,\r\n MilkTypeId: 0,\r\n GrainTypeId: 0,\r\n Active: true,\r\n MobileApply: true,\r\n WelcomeGiftApply: true,\r\n ClassificationSatId: 0,\r\n CodeSatId: 0,\r\n Details: [],\r\n GiftWelcomeActive: true\r\n }\r\n}\r\n\r\nexport default RecipeItemsAndToppingStep;","import React, { Component } from 'react';\r\nimport Modal from '../../../util/modal/Modal';\r\nimport NewRecipeDetail from './NewRecipeDetail';\r\nimport SelectDriveForm from './SelectDriveForm';\r\nimport RecipeDrivesDetail from './RecipeDrivesDetail';\r\nimport RecipeDetails from './RecipeDetails';\r\nimport \"./RecipeCardStyle.css\"\r\nimport { toast } from 'react-toastify';\r\nimport RecipeToppings from './RecipeToppings';\r\nimport lodash from 'lodash';\r\n\r\nexport default class RecipeCard extends Component {\r\n //TODO: Hacer un copy pasterino de RecipeFormMulti caso de select de los drives\r\n constructor(props) {\r\n super(props)\r\n this.state = {\r\n Detail: [],\r\n detailModal: false,\r\n detailModalDetalle: false,\r\n modalDrive: false,\r\n currentDetailLabel: \"\",\r\n currentDetailIndex: 0,\r\n //Lo necesario para manejo de selects de drives\r\n Caffenios: { ...this.props.Caffenios },\r\n optionState: Object.values({ ...this.props.optionState }),\r\n optionCity: Object.values({ ...this.props.optionCity }),\r\n optionDrive: Object.values({ ...this.props.optionDrive }),\r\n selectedOption: [],\r\n selectedOptionC: [],\r\n selectedOptionD: [],\r\n mostrarDrivesModal: false,\r\n recipeDetail: {},\r\n currentTipoLabel: \"\",\r\n toppingModal: false,\r\n detailModalTopping: false,\r\n currentRecipeDetails: [],\r\n }\r\n }\r\n\r\n eliminarObjDuplicados = (arr, prop) => {\r\n var nuevoArray = [];\r\n var lookup = {};\r\n\r\n for (var i in arr) {\r\n lookup[arr[i][prop]] = arr[i];\r\n }\r\n\r\n for (i in lookup) {\r\n nuevoArray.push(lookup[i]);\r\n }\r\n\r\n return nuevoArray;\r\n }\r\n select_state(Caffenios) { // Llenar el combo 'Estados' con todas las opciones \r\n var newArray = [];\r\n let OptionSelect = [];\r\n var lookupObject = {};\r\n\r\n Caffenios.map((item) => {\r\n OptionSelect.push({ value: item.StateId, label: item.State });\r\n });\r\n\r\n for (var i in OptionSelect) {\r\n lookupObject[OptionSelect[i][\"value\"]] = OptionSelect[i];\r\n }\r\n\r\n for (i in lookupObject) {\r\n newArray.push(lookupObject[i]);\r\n }\r\n\r\n return newArray;\r\n }\r\n\r\n select_city(Caffenios) { // Llenar el combo 'Ciudades' con todas las opciones \r\n var newArray = [];\r\n let OptionSelectCity = [];\r\n var lookupObject = {};\r\n\r\n Caffenios.map((item) => {\r\n OptionSelectCity.push({ value: item.Municipalityid, label: item.Municipality });\r\n });\r\n\r\n for (var i in OptionSelectCity) {\r\n lookupObject[OptionSelectCity[i][\"value\"]] = OptionSelectCity[i];\r\n }\r\n\r\n for (i in lookupObject) {\r\n newArray.push(lookupObject[i]);\r\n }\r\n\r\n return newArray;\r\n }\r\n\r\n select_Drive(Caffenios) { // Llenar el combo 'Drives' con todas las opciones \r\n var newArray = [];\r\n let OptionSelectDrive = [];\r\n var lookupObject = {};\r\n Caffenios.map((item) => {\r\n OptionSelectDrive.push({ value: item.idCaffenio, label: item.NombreNuevo });\r\n });\r\n\r\n for (var i in OptionSelectDrive) {\r\n lookupObject[OptionSelectDrive[i][\"value\"]] = OptionSelectDrive[i];\r\n }\r\n\r\n for (i in lookupObject) {\r\n newArray.push(lookupObject[i]);\r\n }\r\n\r\n return newArray;\r\n }\r\n\r\n changeSelectEstado = (obj) => {\r\n let state = { ...this.state }\r\n state[\"selectedOption\"] = obj;\r\n let idEstado = obj.map(estado => { return estado.value });\r\n let objCaffenios = Object.values(state.Caffenios);\r\n let listaCiudades = [];\r\n let listaDrives = [];\r\n\r\n // Recorrer objeto Caffenios y encontrar coincidencias sin eliminar duplicados\r\n objCaffenios.map(item => {\r\n for (var i = 0; i < idEstado.length; i++) {\r\n if (item.StateId === idEstado[i]) {\r\n listaCiudades.push({ \"value\": item.Municipalityid, \"label\": item.Municipality });\r\n }\r\n }\r\n })\r\n //Se eliminan las ciudades duplicadas\r\n let eliminarDuplicados = this.eliminarObjDuplicados(listaCiudades, \"value\");\r\n //Se obtiene un arreglo con los id de las ciudades\r\n let idCiudad = eliminarDuplicados.map(ciudad => { return ciudad.value });\r\n\r\n //Se buscan coincidencias entre ciudad y drive y se genera la lista de drives\r\n objCaffenios.map(item => {\r\n for (var i = 0; i < idCiudad.length; i++) {\r\n if (item.Municipalityid === idCiudad[i]) {\r\n listaDrives.push({ \"value\": item.idCaffenio, \"label\": item.NombreNuevo });\r\n }\r\n }\r\n })\r\n\r\n //Se limpian los combos 'Ciudades' y 'Drives'\r\n state[\"selectedOptionC\"] = [];\r\n state[\"selectedOptionD\"] = [];\r\n\r\n //Se valida que haya una opción seleccionada en combo 'Estados'\r\n if (obj.length === 0) {\r\n state[\"optionCity\"] = this.select_city(Object.values(state.Caffenios));\r\n state[\"optionDrive\"] = this.select_Drive(Object.values(state.Caffenios));\r\n\r\n } else {\r\n state[\"optionCity\"] = eliminarDuplicados;\r\n state[\"optionDrive\"] = listaDrives;\r\n }\r\n this.setState(state);\r\n }\r\n\r\n changeSelectCiudad = (obj) => {\r\n let state = { ...this.state }\r\n let idCiudad = obj.map(ciudad => { return ciudad.value });\r\n let objCaffenios = Object.values(state.Caffenios);\r\n let listaDrives = [];\r\n\r\n //Se buscan coincidencias entre ciudad y drive y se genera la lista de drives\r\n objCaffenios.map(item => {\r\n for (var i = 0; i < idCiudad.length; i++) {\r\n if (item.Municipalityid === idCiudad[i]) {\r\n listaDrives.push({ \"value\": item.idCaffenio, \"label\": item.NombreNuevo });\r\n }\r\n }\r\n })\r\n\r\n //Se limpia el combo 'Drives'\r\n state[\"selectedOptionD\"] = [];\r\n\r\n //Se valida que haya una opción seleccionada en combo 'Ciudades'\r\n if (obj.length > 0) {\r\n state[\"selectedOptionC\"] = obj;\r\n state[\"optionDrive\"] = listaDrives;\r\n //this.setState(state, () => this.FilterProcess());\r\n } else {\r\n this.changeSelectEstado(state[\"selectedOption\"]);\r\n }\r\n this.setState(state);\r\n\r\n }\r\n changeSelectDrive = (obj) => {\r\n let state = { ...this.state };\r\n let Caffenios = Object.values(state.Caffenios);\r\n\r\n //Valida cada select (Estados,Ciudades,Drives) y realiza la acción correspondiente\r\n if (obj.length > 0) {\r\n state[\"selectedOptionD\"] = obj;\r\n //this.setState(state, () => this.FilterProcess());\r\n } else if (state[\"selectedOptionC\"].length === 0) {\r\n this.changeSelectEstado(state[\"selectedOption\"]);\r\n state[\"selectedOptionD\"] = [];\r\n } else if (state[\"selectedOptionC\"].length === 0 && state[\"selectedOption\"].length === 0) {\r\n this.select_Drive(Caffenios);\r\n state[\"selectedOptionD\"] = [];\r\n } else {\r\n this.changeSelectCiudad(state[\"selectedOptionC\"]);\r\n state[\"selectedOptionD\"] = [];\r\n }\r\n this.setState(state)\r\n }\r\n\r\n /**\r\n * Función que se ejecuta cuando se modifica la cantidad de un detalle en la tarjeta\r\n * @param value Number. Valor nuevo del detalle\r\n * @param indexArticulo Number. Indice en donde se encuentra el detalle en el arreglo de Details\r\n * @param tipoDetalleLabel String. Indica a que tipo pertence el detalle, ejemplo: TipoSabor, TipoLeche, TipoGrano, etc.\r\n */\r\n handleDetailChange = (value, indexArticulo, tipoDetalleLabel) => {\r\n let detalles = tipoDetalleLabel == \"Details\" ? [...this.props.receta.Details] : [...this.props.receta[tipoDetalleLabel][this.state.currentDetailIndex].Details]\r\n detalles[indexArticulo].Amount = value;\r\n detalles[indexArticulo].InventoryItem.Amount = value;\r\n this.props.onDetailChange(detalles, tipoDetalleLabel, this.state.currentDetailIndex)\r\n }\r\n\r\n // Ver firma de la función handleDetailChange\r\n /**\r\n *Función que establece valores temporales a las cantidades de detalles.\r\n *@param value: valor temporal para el detalle\r\n *@param indexArticulo: actualmente no en uso\r\n *@param tipoDetalleLabel: Indica si es topping, detalle, tipoLeche, tipoGrano, etc\r\n */\r\n handleDetailChangeTemporal = (value, indexArticulo, tipoDetalleLabel) => {\r\n let detalles = [...this.state.currentRecipeDetails]\r\n detalles[indexArticulo].Amount = value;\r\n detalles[indexArticulo].InventoryItem.Amount = value;\r\n this.setState({ currentRecipeDetails: detalles })\r\n }\r\n\r\n /**\r\n *Función que establece valores definitivos a las cantidades de detalles\r\n *@param indexArticulo: actualmente no en uso\r\n *@param tipoDetalleLabel: Indica si es topping, detalle, tipoLeche, tipoGrano, etc\r\n */\r\n handleDetailChangeSave = (indexArticulo, tipoDetalleLabel) => {\r\n let detalles = [...this.state.currentRecipeDetails]\r\n\r\n this.props.onDetailChange(detalles, tipoDetalleLabel, this.state.currentDetailIndex)\r\n }\r\n\r\n // Ver firma de la función handleDetailChange\r\n /**\r\n *Función que cancela los valores temporales si el usuario sale del modal de detalles\r\n *@param indexArticulo: actualmente no en uso\r\n *@param tipoDetalleLabel: Indica si es topping, detalle, tipoLeche, tipoGrano, etc\r\n */\r\n handleDetailChangeClose = (indexArticulo, tipoDetalleLabel) => {\r\n let detalles = tipoDetalleLabel === \"Details\" ? [...this.props.receta.Details] : [...this.props.receta[tipoDetalleLabel][this.state.currentDetailIndex].Details]\r\n\r\n for (let i = 0; i < detalles.length; i++) {\r\n if (detalles[i].AmountTemporal) {\r\n detalles[i].InventoryItem.Amount = detalles[i].AmountTemporal;\r\n } else {\r\n if (typeof detalles[i].InventoryItem.edicionTemporal !== 'undefined') {\r\n detalles[i].InventoryItem.Amount = detalles[i].InventoryItem.edicionTemporal;\r\n }\r\n }\r\n }\r\n this.props.onDetailChange(detalles, tipoDetalleLabel, this.state.currentDetailIndex)\r\n }\r\n\r\n /**\r\n * Funcion que se ejecuta cuando se remueve un detalle de la tarjeta\r\n * @param indexDetalle Number. Indice en donde se encuentra el detalle en el arreglo de Details\r\n * @param tipoDetalleLabel String. Indica a que tipo pertence el detalle, ejemplo: TipoSabor, TipoLeche, TipoGrano, etc.\r\n */\r\n handleDetailRemoval = (indexDetalle, tipoDetalleLabel) => {\r\n let detalles = tipoDetalleLabel === \"Details\" ? [...this.props.receta.Details] : [...this.state.currentRecipeDetails]\r\n detalles.splice(indexDetalle, 1);\r\n if (tipoDetalleLabel === \"Details\") {\r\n this.props.onDetailChange(detalles, tipoDetalleLabel, this.state.currentDetailIndex)\r\n } else {\r\n this.setState({ currentRecipeDetails: detalles });\r\n }\r\n }\r\n\r\n /** Función que se ejecuta cualdo se quita un drive del artículo inventario*/\r\n removeDriveDetail = (itemToRemove) => {\r\n let state = { ...this.state };\r\n let detalles = state.labelType === \"Details\" ? [...this.props.receta.Details] : [...this.state.currentRecipeDetails] \r\n \r\n let detalleToEdit = detalles[state.detailIndex];\r\n if (detalleToEdit) {\r\n detalleToEdit.InventoryItem.DriveId = detalleToEdit.InventoryItem.DriveId \r\n ? detalleToEdit.InventoryItem.DriveId.filter(d => d.idDrive !== itemToRemove.idCaffenio)\r\n : this.props.Caffenios.filter(c => {\r\n if(c.idCaffenio !== itemToRemove.idCaffenio){\r\n c.value = c.idCaffenio;\r\n c.label = c.NombreNuevo;\r\n c.DriveMunicipio = c.Municipality;\r\n c.DriveEstado = c.State;\r\n c.idDrive = c.idCaffenio;\r\n detalleToEdit.idDrive = c.idCaffenio;\r\n return c;\r\n }\r\n });\r\n detalleToEdit.InventoryItem.driveList = detalleToEdit.InventoryItem.driveList.filter(val => val !== itemToRemove.idCaffenio); \r\n \r\n let cities = detalleToEdit.InventoryItem.DriveId.reduce((cities, item) => {\r\n if (!cities.includes(item.DriveMunicipio) && !cities.includes(item.Municipality)){\r\n cities.push(item.DriveMunicipio ? item.DriveMunicipio : item.Municipality)\r\n }\r\n return cities;\r\n }, []);\r\n let estados = detalleToEdit.InventoryItem.DriveId.reduce((estados, item) => {\r\n if (!estados.includes(item.DriveEstado) && !estados.includes(item.State) ) {\r\n estados.push(item.DriveEstado ? item.DriveEstado : item.State)\r\n }\r\n return estados;\r\n }, []);\r\n \r\n detalleToEdit.InventoryItem.DriveNombre = detalleToEdit.InventoryItem.driveList.length >= this.props.Caffenios.length \r\n ? \"Todos\"\r\n : detalleToEdit.InventoryItem.DriveId.length <= 4\r\n ? detalleToEdit.InventoryItem.DriveId.map(d => d.Name).join(', ')\r\n : cities.length > 4\r\n ?estados.join(', ')\r\n :cities.join(', ');\r\n\r\n detalles[state.detailIndex] = detalleToEdit;\r\n }\r\n this.props.onDetailChange(detalles, state.labelType, this.state.currentDetailIndex)\r\n \r\n }\r\n\r\n /**\r\n * Funcion que se ejecuta al cambiar la cantidad de un topping\r\n * @param value Number. Valor nuevo del topping\r\n * @param labelQuantity String. Etiqueta que indica si se esta modificando el MinQuantity o MaxQuantity\r\n * @param indexTopping Number. Indice en donde se encuentra el topping en el arreglo de Details\r\n * @param tipoToppingLabel String. Indica a que tipo pertence el topping, ejemplo: TipoSabor, TipoLeche, TipoGrano, etc.\r\n */\r\n handleToppingChange = (value, labelQuantity, indexTopping, tipoToppingLabel) => {\r\n let toppings = tipoToppingLabel === \"Toppings\" ? [...this.props.receta.Toppings] : [...this.props.receta[tipoToppingLabel][this.state.currentDetailIndex].Toppings];\r\n toppings[indexTopping][labelQuantity] = value;\r\n this.props.onToppingChange(toppings, tipoToppingLabel, this.state.currentDetailIndex)\r\n }\r\n\r\n /**\r\n * Funcion que establece valore temporales para minimos y maximos los toppings\r\n * @param value: Valor temporal para el minimo o maximo\r\n * @param labelQuantity: String. Etiqueta que indica si se esta modificando el MinQuantity o MaxQuantity\r\n * @param indexTopping Number. Indice en donde se encuentra el topping en el arreglo de Details\r\n */\r\n handleToppingChangeTemporal = (value, labelQuantity, indexTopping) => {\r\n let toppings = [...this.state.currentRecipeDetails]\r\n let newValue = value && value.length > 0 ? parseInt(value) : '';\r\n if(newValue !== ''){ \r\n if(labelQuantity =='MinQuantity'){\r\n if(newValue > toppings[indexTopping]['MaxQuantity'] && toppings[indexTopping]['MaxQuantity'] !==''){\r\n toast.dismiss()\r\n toast.error(\"La cantidad miníma no puede ser mayor a la cantidad máxima.\")\r\n return;\r\n }\r\n }\r\n else if(labelQuantity =='MaxQuantity'){\r\n if(newValue < toppings[indexTopping]['MinQuantity'] && toppings[indexTopping]['MinQuantity'] !== ''){\r\n toast.dismiss()\r\n toast.error(\"La cantidad máxima no puede ser menor a la cantidad mínima.\")\r\n return;\r\n }\r\n } \r\n } \r\n\r\n toppings[indexTopping][labelQuantity] = newValue;\r\n this.setState({ currentRecipeDetails: toppings })\r\n }\r\n\r\n /**\r\n * Funcion que establece los valores temporales\r\n * @param tipoToppingLabel. String. Indica a que tipo pertence el topping, ejemplo: TipoSabor, TipoLeche, TipoGrano, etc.\r\n * @param closeModal. Funcion que se ejecuta en caso de valores válidos y cierra el modal.\r\n */\r\n handleToppingChangeSave = (tipoToppingLabel, closeModal) => {\r\n let toppings = [...this.state.currentRecipeDetails]\r\n\r\n // Iterar sobre cada topping\r\n for (let i = 0; i < toppings.length; i++) {\r\n // Ver si tiene los campos MinQuantity y MaxQuantity\r\n // y validar los valores.\r\n if(toppings[i][\"MinQuantity\"] === '' || toppings[i][\"MaxQuantity\"] ===''){\r\n toast.dismiss()\r\n toast.error(\"Ingrese los valores mínimos y máximos para \" + toppings[i][\"Name\"]);\r\n return;\r\n }\r\n // if (!Number.isNaN(Number(toppings[i][\"MinQuantity\"])) && !Number.isNaN(Number(toppings[i][\"MaxQuantity\"]))) {\r\n // if (Number(toppings[i][\"MinQuantity\"]) > Number(toppings[i][\"MaxQuantity\"])) {\r\n // toast.error(\"Límites no válidos para el topping \" + toppings[i][\"Name\"]);\r\n // return;\r\n // }\r\n // } else {\r\n // toast.error(\"Límites no válidos para el topping \" + toppings[i][\"Name\"]);\r\n // return;\r\n // }\r\n }\r\n this.props.onToppingChange(toppings, tipoToppingLabel, this.state.currentDetailIndex)\r\n closeModal();\r\n }\r\n\r\n /**\r\n * Funcion que se ejecuta al cambiar la cantidad de un topping\r\n * @param indexTopping Number. Indice en donde se encuentra el topping en el arreglo de Details\r\n * @param tipoToppingLabel String. Indica a que tipo pertence el topping, ejemplo: TipoSabor, TipoLeche, TipoGrano, etc.\r\n */\r\n handleToppingRemoval = (indexTopping, tipoToppingLabel) => {\r\n if (tipoToppingLabel === \"Toppings\") {\r\n let toppings = [...this.props.receta.Toppings]\r\n toppings.splice(indexTopping, 1);\r\n this.props.onToppingChange(toppings, tipoToppingLabel, this.state.currentDetailIndex)\r\n } else {\r\n let toppings = [...this.state.currentRecipeDetails]\r\n toppings.splice(indexTopping, 1);\r\n this.setState({ currentRecipeDetails: toppings })\r\n }\r\n }\r\n\r\n render() {\r\n let tituloCard = []\r\n if (this.props.receta.ClassificationId != 15) tituloCard.push(this.props.receta.Nombres.Clasificacion)\r\n if (this.props.receta.Nombres.TipoPresentacion && this.props.receta.Nombres.TipoPresentacion.toLowerCase() != \"sin presentación\") tituloCard.push(this.props.receta.Nombres.TipoPresentacion)\r\n if (this.props.receta.Nombres.TipoReceta && this.props.receta.Nombres.TipoReceta.toLowerCase() != \"sin tipo\") tituloCard.push(this.props.receta.Nombres.TipoReceta)\r\n // if(this.props.receta.Nombres.TipoPresentacion.toLowerCase() != \"sin presentación\") tituloCard.push(this.props.receta.Nombres.TipoPresentacion)\r\n // tituloCard.push(this.props.receta.Nombres.TipoReceta)\r\n\r\n return (\r\n
    \r\n
    \r\n
    \r\n

    \r\n {/* Capuccinos 20oz Caliente */}\r\n {\r\n tituloCard.join(\" \")\r\n }\r\n

    \r\n
    \r\n
    \r\n {/* Detalles Generales */}\r\n
    \r\n\r\n {/* Detalles de receta */}\r\n
    \r\n \r\n
    \r\n
    \r\n { return { ...detalle.InventoryItem, DriveNombre: detalle.InventoryItem.DriveNombre } })}\r\n quantityChanged={(value, index) => {\r\n if (value > 0) {\r\n this.handleDetailChange(value, index, \"Details\")\r\n } else {\r\n toast.warn(\"La cantidad debe ser mayor a cero.\")\r\n } \r\n }}\r\n removeDetail={(recipe) => {\r\n this.handleDetailRemoval(recipe, \"Details\")\r\n }}\r\n viewDrivesDetail={(recipe, detailIndex) => {\r\n this.setState({ detailDrivesModal: true, recipeDetail: recipe, detailIndex: detailIndex, labelType: \"Details\" })\r\n }}\r\n mostrarDrives={true}\r\n onMostrarDrives={(recipe) => {\r\n this.setState({ mostrarDrivesModal: true, recipeDetail: recipe })\r\n }}\r\n />\r\n
    \r\n\r\n {/* Toppings de receta */}\r\n
    \r\n \r\n
    \r\n
    \r\n {\r\n let toppings = [...this.props.receta.Toppings];\r\n let newValue = value && value.length > 0 ? parseInt(value) : '';\r\n if(newValue !== ''){\r\n if(labelQuantity =='MinQuantity'){\r\n if(newValue > toppings[index]['MaxQuantity'] && toppings[index]['MaxQuantity'] !==''){\r\n toast.dismiss()\r\n toast.error(\"La cantidad miníma no puede ser mayor a la cantidad máxima.\")\r\n return;\r\n }\r\n }\r\n else if(labelQuantity =='MaxQuantity'){\r\n if(newValue < toppings[index]['MinQuantity'] && toppings[index]['MinQuantity'] !== ''){\r\n toast.dismiss()\r\n toast.error(\"La cantidad máxima no puede ser menor a la cantidad mínima.\")\r\n return;\r\n }\r\n }\r\n }\r\n \r\n \r\n this.handleToppingChange(newValue, labelQuantity, index, \"Toppings\")\r\n \r\n }}\r\n removeDetail={(recipe) => { \r\n this.handleToppingRemoval(recipe, \"Toppings\")\r\n \r\n }}\r\n />\r\n
    \r\n\r\n
    \r\n
    \r\n {/* Seccion Tipo Sabor */}\r\n {\r\n (this.props.receta.TipoSabor && (\r\n (this.props.receta.TipoSabor.length == 1 && this.props.receta.TipoSabor[0].Nombre.toLowerCase() != \"sin sabor\")\r\n || this.props.receta.TipoSabor.length > 1\r\n )) ?\r\n \r\n \r\n \r\n \r\n \r\n \r\n\r\n \r\n \r\n \r\n {this.props.receta.TipoSabor.map((sabor, index) => {\r\n let hayError = false;\r\n let errorTopping = sabor.Toppings.filter(topping => { return topping.MaxQuantity === undefined || topping.MinQuantity === undefined || (Number(topping.MinQuantity) === 0 && Number(topping.MaxQuantity) === 0) })\r\n let errorDetail = sabor.Details.filter(item => { return item.InventoryItem.Amount == undefined || Number(item.InventoryItem.Amount) <= 0 })\r\n let errorMsgs = []\r\n if (errorTopping.length > 0) {\r\n hayError = true\r\n errorMsgs.push(\"Uno o mas toppings no tienen cantidades o ambas cantidades son 0\")\r\n }\r\n if (errorDetail.length > 0) {\r\n hayError = true\r\n errorMsgs.push(\"Uno o mas articulos inventario no tienen cantidades o tienen 0\")\r\n }\r\n return 0 || sabor.Toppings.length > 0) ?\r\n (hayError ? \"card-detail-warning\" : \"card-detail-modified\")\r\n : \"\"\r\n }\r\n >\r\n \r\n \r\n \r\n \r\n })}\r\n {/* */}\r\n \r\n
    Tipo SaborAcciónVer
    \r\n {\r\n (sabor.Details.length > 0 || sabor.Toppings.length > 0) &&\r\n
    \r\n \r\n
    \r\n }\r\n {sabor.Nombre}\r\n
    \r\n \r\n \r\n
    \r\n {\r\n e.stopPropagation();\r\n let detallesTemporales = this.props.receta[\"TipoSabor\"][index].Details != null ?\r\n lodash.cloneDeep(this.props.receta[\"TipoSabor\"][index].Details)\r\n : []\r\n this.setState({\r\n detailModalDetalle: true,\r\n currentDetailLabel: \"TipoSabor\",\r\n currentTipoLabel: sabor.Nombre,\r\n currentDetailIndex: index,\r\n currentRecipeDetails: detallesTemporales,\r\n labelType: \"TipoSabor\"\r\n })\r\n }\r\n }>\r\n \r\n \r\n \r\n Artículos\r\n \r\n {\r\n e.stopPropagation();\r\n let toppingsTemporal = lodash.cloneDeep(this.props.receta[\"TipoSabor\"][index].Toppings)\r\n this.setState({\r\n detailModalTopping: true,\r\n currentDetailLabel: \"TipoSabor\",\r\n currentTipoLabel: sabor.Nombre,\r\n currentDetailIndex: index,\r\n currentRecipeDetails: toppingsTemporal\r\n })\r\n }\r\n }>\r\n \r\n \r\n \r\n Toppings\r\n \r\n
    \r\n
    {this.props.receta.Nombres.Flavor}
    \r\n : \"\"\r\n }\r\n\r\n {/* Seccion Tipo Leche */}\r\n {\r\n (this.props.receta.TipoLeche && (\r\n (this.props.receta.TipoLeche.length == 1 && this.props.receta.TipoLeche[0].Nombre.toLowerCase() != \"sin tipo\")\r\n || this.props.receta.TipoLeche.length > 1\r\n )) ?\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n {this.props.receta.TipoLeche.map((leche, index) => {\r\n return 0 ?\r\n (leche.Details.filter(item => { return item.InventoryItem.Amount == undefined || Number(item.InventoryItem.Amount) <= 0 }).length > 0 ?\r\n \"card-detail-warning\" : \"card-detail-modified\")\r\n : \"\"\r\n }\r\n >\r\n \r\n \r\n \r\n \r\n })}\r\n \r\n
    Tipo de lecheAcciónVer
    \r\n {\r\n leche.Details.length > 0 &&\r\n
    { return item.InventoryItem.Amount == undefined || Number(item.InventoryItem.Amount) <= 0 }).length > 0 ? \"Uno o mas detalles no tienen cantidades o tienen 0\" : \"Todos los detalles estan completos\"}>\r\n { return item.InventoryItem.Amount == undefined || Number(item.InventoryItem.Amount) <= 0 }).length > 0 ? \"fa fa-exclamation\" : \"fa fa-check\"}\r\n aria-hidden=\"true\"\r\n >\r\n
    \r\n }\r\n {leche.Nombre}
    \r\n {\r\n e.stopPropagation();\r\n this.setState({\r\n modalDrive: true,\r\n currentDetailLabel: \"TipoLeche\",\r\n currentTipoLabel: leche.Nombre,\r\n currentDetailIndex: index\r\n })\r\n }\r\n }>\r\n \r\n \r\n \r\n \r\n \r\n {\r\n e.stopPropagation();\r\n let detallesTemporales = this.props.receta[\"TipoLeche\"][index].Details != null ?\r\n lodash.cloneDeep(this.props.receta[\"TipoLeche\"][index].Details)\r\n : []\r\n this.setState({\r\n detailModalDetalle: true,\r\n currentDetailLabel: \"TipoLeche\",\r\n currentTipoLabel: leche.Nombre,\r\n currentDetailIndex: index,\r\n currentRecipeDetails: detallesTemporales,\r\n labelType: \"TipoLeche\"\r\n })\r\n\r\n }\r\n }>\r\n \r\n \r\n \r\n \r\n
    \r\n : \"\"\r\n }\r\n\r\n {/* Seccion Tipo Grano */}\r\n {\r\n (this.props.receta.TipoGrano && (\r\n (this.props.receta.TipoGrano.length == 1 && this.props.receta.TipoGrano[0].Nombre.toLowerCase() != \"sin tipo\")\r\n || this.props.receta.TipoGrano.length > 1)\r\n ) ?\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n {this.props.receta.TipoGrano.map((grano, index) => {\r\n return 0 ?\r\n (grano.Details.filter(item => { return item.InventoryItem.Amount == undefined || Number(item.InventoryItem.Amount) <= 0 }).length > 0 ?\r\n \"card-detail-warning\" : \"card-detail-modified\")\r\n : \"\"\r\n }\r\n >\r\n \r\n \r\n \r\n \r\n })}\r\n \r\n
    Tipo GranoAcciónVer
    \r\n {\r\n grano.Details.length > 0 &&\r\n
    { return item.InventoryItem.Amount == undefined || Number(item.InventoryItem.Amount) <= 0 }).length > 0 ? \"Uno o mas detalles no tienen cantidades o tienen 0\" : \"Todos los detalles estan completos\"}>\r\n { return item.InventoryItem.Amount == undefined || Number(item.InventoryItem.Amount) <= 0 }).length > 0 ? \"fa fa-exclamation\" : \"fa fa-check\"}\r\n aria-hidden=\"true\"\r\n >\r\n
    \r\n }\r\n {grano.Nombre}\r\n
    \r\n {\r\n e.stopPropagation();\r\n this.setState({\r\n modalDrive: true,\r\n currentDetailLabel: \"TipoGrano\",\r\n currentTipoLabel: grano.Nombre,\r\n currentDetailIndex: index\r\n })\r\n }\r\n }>\r\n \r\n \r\n \r\n \r\n \r\n {\r\n e.stopPropagation();\r\n let detallesTemporales = this.props.receta[\"TipoGrano\"][index].Details != null ?\r\n lodash.cloneDeep(this.props.receta[\"TipoGrano\"][index].Details)\r\n : []\r\n this.setState({\r\n detailModalDetalle: true,\r\n currentDetailLabel: \"TipoGrano\",\r\n currentTipoLabel: grano.Nombre,\r\n currentDetailIndex: index,\r\n currentRecipeDetails: detallesTemporales,\r\n labelType: \"TipoGrano\"\r\n })\r\n\r\n }\r\n }>\r\n \r\n \r\n \r\n \r\n
    \r\n : \"\"\r\n }\r\n
    \r\n\r\n
    \r\n\r\n {/* Modales */}\r\n\r\n {/* Modal para seleccionar articulo inventario por drive */}\r\n {(this.state.modalDrive || this.state.detailModal) &&\r\n this.setState({\r\n modalDrive: false,\r\n detailModal: false,\r\n selectedOption: [],\r\n selectedOptionC: [],\r\n selectedOptionD: [],\r\n })}\r\n width=\"75%\"\r\n >\r\n
    \r\n {this.state.detailModal\r\n ? {\r\n let detalles = []\r\n if (this.state.currentDetailLabel === \"Details\") {\r\n detalles = [...this.props.receta.Details]\r\n } else {\r\n let detallesBase = this.props.receta[this.state.currentDetailLabel][this.state.currentDetailIndex].Details ? [...this.props.receta[this.state.currentDetailLabel][this.state.currentDetailIndex].Details] : []\r\n for (let i = 0; i < detallesBase.length; i++) {\r\n detalles.push({ ...detallesBase[i] })\r\n }\r\n }\r\n let exists=detalles.filter(d => d.InventoryItemId === detail.InventoryItemId && Number(d.Amount) === Number(detail.Amount));\r\n if (exists.length > 0) {\r\n toast.warn(\"No se puede agregar el mismo artículo con la misma cantidad.\")\r\n } else {\r\n detail.DriveId = [...this.state.selectedOptionD.map(selected => {\r\n if (!selected.idDrive) {\r\n selected.idDrive = selected.idCaffenio;\r\n }\r\n return selected;\r\n })];\r\n let totalDrives = this.props.Caffenios.length;\r\n let pushStates = [];\r\n let pushCities = []; \r\n detail.DriveNombre = this.state.selectedOptionD.length > 4\r\n ? this.state.selectedOptionD.length === totalDrives\r\n ? \"Todos\"\r\n : this.state.selectedOptionD.reduce((list, item) => {\r\n if (!list.some(l => l.Municipalityid === item.Municipalityid)) {\r\n list.push(item);\r\n pushCities.push(item.Municipality);\r\n }\r\n return list\r\n }, []).length > 4\r\n ? this.state.selectedOptionD.reduce((list, item) => {\r\n if (!list.some(l => l.StateId === item.StateId)) {\r\n list.push(item);\r\n pushStates.push(item.State);\r\n }\r\n return list;\r\n }, []).length > 1\r\n ? pushStates.join(\", \")\r\n : this.state.selectedOptionD[0].State\r\n : pushCities.join(\", \")\r\n : this.state.selectedOptionD.map(d => { return d.NombreNuevo }).join(\", \");\r\n \r\n detail.driveList = detail.DriveId.map(d => d.idCaffenio); \r\n detalles.push({ InventoryItem: detail, Amount: detail.Amount })\r\n this.props.onDetailChange(detalles, this.state.currentDetailLabel, this.state.currentDetailIndex);\r\n toast.success(\"Detalle agregado\");\r\n\r\n }\r\n \r\n }}\r\n currentDetails={\r\n //TODO: checar si los drives que estamos enviando ya estan en la lista de los drives del item.Drives\r\n this.state.currentDetailLabel === \"Details\" ?\r\n this.props.receta.Details.concat(\r\n [].concat(...this.props.receta.TipoSabor.filter(item => item.Details != null).map(item => item.Details)),\r\n [].concat(...this.props.receta.TipoLeche.filter(item => item.Details != null).map(item => item.Details)),\r\n [].concat(...this.props.receta.TipoGrano.filter(item => item.Details != null).map(item => item.Details))\r\n ).filter(det => {\r\n let caffenios = this.state.selectedOptionD.length === 0 ? [...this.state.optionDrive] : [...this.state.selectedOptionD]\r\n\r\n return caffenios.findIndex(dri => {\r\n return det.InventoryItem.DriveId.findIndex(id => id.value == dri.value) != -1\r\n }) != -1\r\n\r\n }).map(det => det.InventoryItem.InventoryItemId)\r\n : (this.props.receta[this.state.currentDetailLabel][this.state.currentDetailIndex].Details ?\r\n this.props.receta.Details.concat(this.props.receta[this.state.currentDetailLabel][this.state.currentDetailIndex].Details).filter(det => {\r\n let caffenios = this.state.selectedOptionD.length === 0 ? [...this.state.optionDrive] : [...this.state.selectedOptionD]\r\n\r\n return caffenios.findIndex(dri => {\r\n return det.InventoryItem.DriveId.findIndex(id => id.value == dri.value) != -1\r\n }) != -1\r\n\r\n }).map(det => det.InventoryItem.InventoryItemId)\r\n : []\r\n )\r\n }\r\n isDetail={true}\r\n />\r\n : this.setState({ modalDrive: false, detailModal: true })}\r\n setStateFunc={(value) => this.setState({ selectedOption: value })}\r\n setCityFunc={(value) => this.setState({ selectedOptionC: value })}\r\n setDriveFunc={(value => this.setState({ selectedOptionD: value }))}\r\n />}\r\n
    \r\n \r\n } \r\n\r\n {/* Modal para ver listado de artículos */}\r\n {this.state.detailModalDetalle &&\r\n this.setState({detailModalDetalle: false})}\r\n // Cerrar el modal y descartar los valores temporales\r\n cancel={() => {\r\n if (typeof this.state.currentDetailIndex !== \"undefined\") {\r\n this.handleDetailChangeClose(this.state.currentDetailIndex, this.state.currentDetailLabel);\r\n }\r\n this.setState({ detailModalDetalle: false, currentRecipeDetails: [] });\r\n }}\r\n footer={true}\r\n footerButtons={\r\n
    \r\n {\r\n this.handleDetailChangeSave(this.state.currentDetailIndex, this.state.currentDetailLabel);\r\n this.setState({ detailModalDetalle: false, currentRecipeDetails: [] });\r\n }}>\r\n Guardar\r\n \r\n
    \r\n }\r\n width=\"75%\"\r\n >\r\n
    \r\n { return { ...detalle.InventoryItem, DriveNombre: detalle.InventoryItem.DriveNombre } })}\r\n quantityChanged={(value, index) => {\r\n if (value > 0) {\r\n this.handleDetailChangeTemporal(value, index, this.state.currentDetailLabel)\r\n } else {\r\n toast.warn(\"La cantidad debe ser mayor a cero.\")\r\n } \r\n }}\r\n removeDetail={(recipe) => {\r\n this.handleDetailRemoval(recipe, this.state.currentDetailLabel)\r\n }}\r\n viewDrivesDetail={(recipe, index) => {\r\n this.setState({ detailDrivesModal: true, recipeDetail: recipe, detailIndex: index })\r\n }}\r\n mostrarDrives={true}\r\n onMostrarDrives={(recipe) => {\r\n this.setState({ mostrarDrivesModal: true, recipeDetail: recipe })\r\n }}\r\n />\r\n
    \r\n \r\n } \r\n\r\n {/**Modal para ver e listado de drives que comparten el artículo inventario*/}\r\n {this.state.detailDrivesModal &&\r\n this.setState({\r\n detailDrivesModal: false\r\n })}\r\n width=\"75%\"\r\n >\r\n this.removeDriveDetail(caffenioId)}\r\n isNewRecipe = {true}\r\n caffenios = {this.props.Caffenios}\r\n />\r\n \r\n } \r\n\r\n {/* Modal Toppings */}\r\n {this.state.toppingModal &&\r\n this.setState({ toppingModal: false })}\r\n width=\"75%\"\r\n >\r\n {\r\n let toppings = []\r\n if (this.state.currentDetailLabel === \"Toppings\") {\r\n toppings = [...this.props.receta.Toppings]\r\n } else {\r\n let toppingsBase = this.props.receta[this.state.currentDetailLabel][this.state.currentDetailIndex].Toppings ? [...this.props.receta[this.state.currentDetailLabel][this.state.currentDetailIndex].Toppings] : []\r\n for (let i = 0; i < toppingsBase.length; i++) {\r\n toppings.push({ ...toppingsBase[i] })\r\n }\r\n }\r\n\r\n toppings.push({\r\n // CodeProvider: detail.CodeProvider,\r\n // Name: detail.Name,\r\n // InventoryItemId: detail.InventoryItemId,\r\n // UnitSaleStr: detail.UnitSaleStr,\r\n ...detail,\r\n MinQuantity: detail.MinQuantity || 0,\r\n MaxQuantity: detail.MaxQuantity || 0,\r\n })\r\n\r\n this.props.onToppingChange(toppings, this.state.currentDetailLabel, this.state.currentDetailIndex)\r\n }}\r\n\r\n currentDetails={\r\n this.state.currentDetailLabel == \"Toppings\" ? this.props.receta.Toppings.concat(\r\n [].concat(...this.props.receta.TipoSabor.filter(item => item.Toppings != null).map(item => item.Toppings)),\r\n ).map(det => det.InventoryItemId)\r\n : (this.props.receta[this.state.currentDetailLabel][this.state.currentDetailIndex].Toppings ?\r\n this.props.receta.Toppings.concat(this.props.receta[this.state.currentDetailLabel][this.state.currentDetailIndex].Toppings).map(det => det.InventoryItemId)\r\n : []\r\n )\r\n }\r\n soloToppings={true}\r\n isTopping={true}\r\n />\r\n \r\n }\r\n\r\n {this.state.detailModalTopping &&\r\n {\r\n // Cerrar el modal y descartar valores temporales\r\n this.setState({ detailModalTopping: false, currentRecipeDetails: [] })\r\n }}\r\n footer={true}\r\n footerButtons={\r\n
    \r\n {\r\n \r\n // Guardar los valores temporales para los min y max del topping\r\n this.handleToppingChangeSave(this.state.currentDetailLabel, () => {\r\n this.setState({ detailModalTopping: false, currentRecipeDetails: [] })\r\n })\r\n }}>\r\n Guardar\r\n \r\n
    \r\n }\r\n width=\"75%\"\r\n >\r\n
    \r\n {\r\n \r\n this.handleToppingChangeTemporal(value, labelQuantity, index, this.state.currentDetailLabel)\r\n \r\n }}\r\n removeDetail={(recipe) => {\r\n this.handleToppingRemoval(recipe, this.state.currentDetailLabel)\r\n }}\r\n />\r\n
    \r\n \r\n }\r\n
    \r\n )\r\n }\r\n}","import React, { Component } from 'react';\r\nimport RecipeCard from '../components/RecipeCard';\r\n\r\n\r\n/**\r\n * Formulario para cargar la información general de la receta\r\n */\r\nclass RecipesConfigStep extends Component {\r\n constructor(props) {\r\n super(props);\r\n this.state = {\r\n recipe: { ...this.props.recipe },\r\n cardsOpen: true,\r\n selectedCard: 0,\r\n isEditing: false,\r\n isLoading: false\r\n }\r\n }\r\n \r\n render() {\r\n return (\r\n this.props.cards.length > 0 &&\r\n\r\n
    \r\n\r\n {this.state.cardsOpen && \r\n
    \r\n
      \r\n {this.props.cards.map((tarjeta, indiceTarjeta) => {\r\n let tituloCard = []\r\n if (tarjeta.Propiedades.ClassificationId.ClassificationId != 15) tituloCard.push(tarjeta.Nombres.Clasificacion)\r\n if (tarjeta.Nombres.TipoPresentacion && tarjeta.Nombres.TipoPresentacion.toLowerCase() != \"sin presentación\") tituloCard.push(tarjeta.Nombres.TipoPresentacion)\r\n if (tarjeta.Nombres.TipoReceta && tarjeta.Nombres.TipoReceta.toLowerCase() != \"sin tipo\") tituloCard.push(tarjeta.Nombres.TipoReceta)\r\n\r\n return
    • \r\n {\r\n this.setState({ selectedCard: indiceTarjeta })\r\n }}>\r\n {tituloCard.join(\" \")}\r\n \r\n
    • \r\n })}\r\n
    \r\n
    \r\n\r\n
    \r\n {\r\n {\r\n this.props.onDetailChange(detallesActualizados, tipoLabel, indice, this.state.selectedCard)\r\n }\r\n }\r\n onToppingChange={(toppingsActualizados, tipoLabel, indice) => {\r\n this.props.onToppingChange(toppingsActualizados, tipoLabel, indice, this.state.selectedCard)\r\n }}\r\n />\r\n\r\n }\r\n
    \r\n\r\n
    \r\n
    \r\n \r\n\r\n
    \r\n
    \r\n
    \r\n
    \r\n \r\n
    \r\n
    \r\n\r\n
    }\r\n
    \r\n\r\n\r\n )\r\n }\r\n}\r\n\r\n// Definición de los valores por default de las props en caso de no ser recibidas por el padre.\r\nRecipesConfigStep.defaultProps = {\r\n isEditing: false,\r\n recipe: {\r\n ShortName: \"\",\r\n Description: \"\",\r\n ClassificationId: 0,\r\n PresentationId: 0,\r\n FlavorTypeId: 0,\r\n RecipeTypeId: 0,\r\n IVAApply: true,\r\n KiwiId: 0,\r\n MilkTypeId: 0,\r\n GrainTypeId: 0,\r\n Active: true,\r\n MobileApply: true,\r\n WelcomeGiftApply: true,\r\n ClassificationSatId: 0,\r\n CodeSatId: 0,\r\n Details: [],\r\n GiftWelcomeActive: true\r\n }\r\n}\r\n\r\nexport default RecipesConfigStep;","import React, { Component } from 'react';\r\nimport { toast } from 'react-toastify'\r\nimport RecipesAPI from '../../../services/Recipe';\r\nimport to from '../../../util/to';\r\nimport SatAPI from '../../../services/Sat';\r\nimport '../../cssComponents.css';\r\nimport './NewRecipeMulti.css'\r\n\r\nimport WarehouseAPI from '../../../services/Warehouse';\r\nimport Loading from '../../util/loading/Loading';\r\nimport AcceptModal from '../../util/acceptModal/AcceptModal';\r\nimport ErrorMessages from '../../../util/validation-error-messages';\r\n\r\n//Steps \r\nimport RecipeConfigurationStep from './stepsItems/RecipeConfigurationStep';\r\nimport RecipeComplementInfoStep from './stepsItems/RecipeComplementInfoStep';\r\nimport RecipeItemsAndToppingStep from './stepsItems/RecipeItemsAndToppingStep';\r\nimport RecipesConfigStep from './stepsItems/RecipesConfigStep';\r\nimport Modal from '../../util/modal/Modal';\r\n\r\n/** Clase para crear o editar recetas */\r\nclass NewRecipeMulti extends Component {\r\n constructor(props) {\r\n super(props);\r\n this.state = {\r\n recipe: {},\r\n classifications: [],\r\n presentations: [],\r\n flavors: [],\r\n recipeTypes: [],\r\n milks: [],\r\n segments: [],\r\n grains: [],\r\n satClassifications: [],\r\n satCodes: [],\r\n dataLoaded: false,\r\n units: [],\r\n cards: [],\r\n selectedOption: [],\r\n selectedOptionC: [],\r\n selectedOptionD: [],\r\n optionState: [],\r\n warehouseArr: [],\r\n Caffenios: [],\r\n warehouseFilter: [],\r\n isLoading: false,\r\n selectedCard: 0,\r\n modalConfirm: false,\r\n cardsPreview: [], //Arreglo que representa las recetas que se pondrán en el modal de confirmación\r\n truncatedName: false, //Booleano que indica si se cambió el nombre de una receta porque era muy largo\r\n baseFormOpen: true, //Booleano que indica si se puede ver el formulario de la información base\r\n cardsOpen: true, //Booleano que indica si se pueden ver las tarjetas generadas\r\n modalGeneric: false, //Booleano que indica si el modal generico se tiene que mostrar\r\n modalGenericDone: () => { }, //Funcion que se ejecuta al darle click al boton de aceptar en el modal generico\r\n modalGenericTitle: \"\", //Titulo del modal generico\r\n modalGenericBody: \"\", //Contenido del modal generico\r\n //steps\r\n stepConfigRecipe: true,\r\n stepComplementInfo: false,\r\n stepCommonItemsAndToppings: false,\r\n stepCombineRecipes: false,\r\n\r\n stepConfigRecipeCompleted: false,\r\n stepComplementInfoCompleted: false,\r\n stepCommonItemsAndToppingsCompleted: false,\r\n stepCombineRecipesCompleted: false,\r\n\r\n lstRecipes:[],\r\n isEditing: false,\r\n nombresSinTipo:['sin tipo', 'n/a', 'n / a', 'na', '', 'no aplica',\r\n 'sin sabor',\r\n 'sin tipo sabor',\r\n 'Sin sabor',\r\n 'Sin Sabor',\r\n 's/s',\r\n 's / s',\r\n 'sin grano',\r\n 'sin tipo grano',\r\n 's/g',\r\n 's / g',\r\n 'sin leche',\r\n 'sin tipo leche',\r\n 's/l',\r\n 's / l',\r\n 'sin presentación',\r\n 'sin presentacion',\r\n 'sin tipo presentación',\r\n 'sin tipo presentacion',\r\n 's/p',\r\n 's / p',\r\n 'sin clasificación',\r\n 'sin clasificacion',\r\n 'sin tipo clasificación',\r\n 'sin tipo clasificacion',\r\n 's/c',\r\n 's / c',\r\n 'sin receta',\r\n 'sin tipo receta',\r\n 's/r',\r\n 's / r'\r\n ]\r\n };\r\n }\r\n select_state(Caffenios) { // Llenar el combo 'Estados' con todas las opciones \r\n var newArray = [];\r\n let OptionSelect = [];\r\n var lookupObject = {};\r\n Caffenios.map((item) => {\r\n OptionSelect.push({ value: item.StateId, label: item.State });\r\n });\r\n\r\n for (var i in OptionSelect) {\r\n lookupObject[OptionSelect[i][\"value\"]] = OptionSelect[i];\r\n }\r\n\r\n for (i in lookupObject) {\r\n newArray.push(lookupObject[i]);\r\n }\r\n\r\n return newArray;\r\n }\r\n\r\n componentDidMount() {\r\n if (!this.props.location.state) {\r\n this.props.history.push(`/recetas`);\r\n return;\r\n }\r\n this.setState({ isLoading: true }, () => {\r\n this.getDrives();\r\n\r\n });\r\n\r\n }\r\n\r\n /*Función para obtener las ciudades que se pone en el set state */\r\n getDrives = async () => {\r\n let err, caffenios;\r\n [err, caffenios] = await to(WarehouseAPI.getCaffenios());\r\n\r\n if (err) {\r\n this.setState({ isLoading: false })\r\n if (err.response)\r\n toast.error(err.response.data.Message)\r\n else\r\n toast.error(ErrorMessages.SinConexion)\r\n } else {\r\n this.setState({\r\n optionState: this.select_state(caffenios),\r\n Caffenios: caffenios\r\n }, () => this.getData())\r\n }\r\n }\r\n\r\n /**Obtiene y setea la información de los combos */\r\n getData = async () => {\r\n let err, satClassifications, satCodes;\r\n [err, satClassifications] = await to(SatAPI.getClassifications());\r\n [err, satCodes] = await to(SatAPI.getCodes());\r\n\r\n if (err) {\r\n this.setState({ isLoading: false })\r\n if (err.response)\r\n toast.error(err.response.data.Message)\r\n else\r\n toast.error(ErrorMessages.SinConexion)\r\n } else {\r\n this.setState({\r\n classifications: this.props.location.state.classifications,\r\n presentations: this.props.location.state.presentations.filter(p => p.Active),\r\n flavors: this.props.location.state.flavors,\r\n milks: this.props.location.state.milks,\r\n segments: this.props.location.state.segments,\r\n grains: this.props.location.state.grains,\r\n recipeTypes: this.props.location.state.recipeTypes,\r\n lstRecipes: this.props.location.state.lstRecipes,\r\n satClassifications: satClassifications,\r\n satCodes: satCodes,\r\n dataLoaded: true,\r\n }, () => this.getRecipe())\r\n }\r\n\r\n }\r\n\r\n /**Obtiene y da formato a la receta si es editar o inicializa si es crear nueva */\r\n getRecipe = () => {\r\n if (this.props.match.params.id) {\r\n RecipesAPI.get(this.props.match.params.id).then(response => {\r\n if(response.data){ \r\n let detailRecipe = { ...response.data }; \r\n //Agrupa el detalle de la receta \r\n detailRecipe.Details = detailRecipe.Details.reduce((list, item) => {\r\n if(!list.some(l => l.Amount === item.Amount && l.InventoryItemId === item.InventoryItem.InventoryItemId )){\r\n let commonItems = detailRecipe.Details.filter(d => d.Amount === item.Amount && d.InventoryItem.InventoryItemId === item.InventoryItem.InventoryItemId);\r\n let totalDrives = this.state.Caffenios.length;\r\n let pushStates = [];\r\n let pushCities = [];\r\n\r\n let newItem = { ...item.InventoryItem };\r\n newItem.Amount = item.Amount;\r\n newItem.RecipeDetailId = item.RecipeDetailId;\r\n newItem.driveList = item.InventoryItem.idDrive\r\n ? commonItems.map(c => {\r\n if(!pushStates.some(s => s.idEstado === c.InventoryItem.idEstado)){\r\n pushStates.push( c.InventoryItem.DriveEstado )\r\n }\r\n \r\n if(!pushCities.some(ct => ct.idMunicipio === c.InventoryItem.idMunicipio)){\r\n pushCities.push( c.InventoryItem.DriveMunicipio)\r\n }\r\n return c.InventoryItem.idDrive\r\n })\r\n : this.state.Caffenios.map(dr => { return dr.idCaffenio });\r\n newItem.DriveId = item.InventoryItem.idDrive \r\n ? commonItems.map(c => { \r\n return {\r\n ...c.InventoryItem,\r\n Amount: c.Amount,\r\n RecipeDetailId :c.RecipeDetailId\r\n }\r\n })\r\n : null; \r\n pushCities = pushCities.filter(this.onlyUnique)\r\n pushStates = pushStates.filter(this.onlyUnique)\r\n newItem.DriveNombre = newItem.driveList.length > 4\r\n ? newItem.driveList.length >= totalDrives\r\n ? \"Todos\"\r\n : pushCities.length > 4\r\n ? pushStates.length > 1\r\n ? pushStates.join(\", \")\r\n : pushStates[0]\r\n : pushCities.join(\", \")\r\n : newItem.DriveId.map(d => d.DriveNombre).join(\", \");\r\n\r\n list.push(newItem) ;\r\n }\r\n return list; \r\n }, []);\r\n\r\n //formato a la data \r\n response.data.Classification.value = response.data.Classification ? response.data.Classification.ClassificationId : null;\r\n response.data.Classification.label = response.data.Classification ? response.data.Classification.Name : null;\r\n response.data.RecipeType.value = response.data.RecipeType ? response.data.RecipeType.RecipeTypeId : null;\r\n response.data.RecipeType.label = response.data.RecipeType ? response.data.RecipeType.Description : null;\r\n response.data.FlavorType.value = response.data.FlavorType ? response.data.FlavorType.FlavorTypeId : null;\r\n response.data.FlavorType.label = response.data.FlavorType ? response.data.FlavorType.Name : null;\r\n response.data.GrainType.value = response.data.GrainType ? response.data.GrainType.GrainTypeId : null;\r\n response.data.GrainType.label = response.data.GrainType ? response.data.GrainType.Description : null;\r\n response.data.MilkType.value = response.data.MilkType ? response.data.MilkType.MilkTypeId : null;\r\n response.data.MilkType.label = response.data.MilkType ? response.data.MilkType.Description : null;\r\n response.data.Presentation.value = response.data.Presentation ? response.data.Presentation.PresentationId : null;\r\n response.data.Presentation.label = response.data.Presentation ? response.data.Presentation.Name : null;\r\n response.data.ClassificationSat.value = response.data.ClassificationSat ? response.data.ClassificationSat.ClassificationSatId : null;\r\n response.data.ClassificationSat.label = response.data.ClassificationSat ? response.data.ClassificationSat.Description : null;\r\n response.data.CodeSat.value = response.data.CodeSat ? response.data.CodeSat.Code : null;\r\n response.data.CodeSat.label = response.data.CodeSat ? response.data.CodeSat.Description : null;\r\n\r\n detailRecipe.ClassificationId = response.data.Classification;\r\n detailRecipe.RecipeTypeId = [response.data.RecipeType];\r\n detailRecipe.FlavorTypeId = [response.data.FlavorType];\r\n detailRecipe.GrainTypeId = [response.data.GrainType];\r\n detailRecipe.MilkTypeId = [response.data.MilkType];\r\n detailRecipe.PresentationId = [response.data.Presentation];\r\n detailRecipe.ClassificationSatId = response.data.ClassificationSat;\r\n detailRecipe.CodeSatId = response.data.CodeSat;\r\n this.setState({ recipe: detailRecipe, isLoading: false, isEditing: true })\r\n }else{\r\n toast.error(\"Ocurrió un error al cargar información de la receta\");\r\n this.props.history.goBack();\r\n } \r\n }).catch(err => {\r\n this.setState({ isLoading: false })\r\n if (err.response)\r\n toast.error(err.response.data.Message)\r\n else\r\n toast.error(ErrorMessages.SinConexion)\r\n });\r\n } else {\r\n this.setState({\r\n isLoading: false,\r\n recipe: {\r\n ShortName: \"\",\r\n Description: \"\",\r\n ClassificationId: 0,\r\n PresentationId: 0,\r\n FlavorTypeId: 0,\r\n RecipeTypeId: 0,\r\n IVAApply: true,\r\n KiwiId: \"\",\r\n MilkTypeId: 0,\r\n GrainTypeId: 0,\r\n Active: true,\r\n MobileApply: true,\r\n WelcomeGiftApply: true,\r\n GiftWelcomeActive: true,\r\n ClassificationSatId: 0,\r\n CodeSatId: 0,\r\n Details: [],\r\n Toppings: [],\r\n }\r\n });\r\n\r\n }\r\n }\r\n\r\n /**\r\n * Función que se ejecuta al darle click al botón de \"Generar tarjetas\". Revisa los datos del formulario y si todo esta correcto genera las tarjetas\r\n * @param recipe Objeto. Valor que devuelve el componente de RecipeFormMulti al darle click al botón de generar tarjetas\r\n */\r\n save = (recipe) => {\r\n let data = { ...recipe };\r\n data.Details = data.Details.map(d => {\r\n return { Amount: d.Amount, InventoryItem: d };\r\n });\r\n\r\n let clasificacion = this.state.classifications.find(item => item.ClassificationId === data.Propiedades.ClassificationId.ClassificationId)\r\n data.Nombres = {\r\n Clasificacion: clasificacion.ShortName,\r\n }\r\n\r\n if (this.state.cards.length > 0) {\r\n this.setState({\r\n modalGeneric: true,\r\n modalGenericTitle: \"¿Volver a generar las tarjetas?\",\r\n modalGenericBody: \"Se perderán los cambios hechos en las tarjetas.\",\r\n modalGenericDone: () => this.crearTarjetas(data)\r\n })\r\n } else {\r\n this.crearTarjetas(data)\r\n }\r\n }\r\n\r\n /**\r\n * Función que genera varias tarjetas tomando como base la informacion del formulario de recetas\r\n * @param datosReceta Objeto. Objeto con informacion de la receta\r\n */\r\n crearTarjetas = (datosReceta) => {\r\n let objBase = {\r\n ...datosReceta\r\n }\r\n\r\n let lstTarjetasFinal = [objBase]\r\n let lstTarjetasTemp = []\r\n let objTemp = {}\r\n let baseFormOpen = true\r\n //Generando tarjetas por presentacion\r\n if (datosReceta.TipoPresentacion != null || datosReceta.TipoPresentacion.length > 0) {\r\n lstTarjetasTemp = []\r\n for (let j = 0; j < lstTarjetasFinal.length; j++) {\r\n for (let i = 0; i < datosReceta.TipoPresentacion.length; i++) {\r\n if (datosReceta.TipoPresentacion[i].Nombre.toLowerCase() !== \"sin presentación\") {\r\n objTemp = {\r\n ...lstTarjetasFinal[j],\r\n Propiedades: { ...lstTarjetasFinal[j].Propiedades },\r\n Details: lstTarjetasFinal[j].Details.map(item => { return { Amount: item.Amount, InventoryItem: { ...item.InventoryItem } } }),\r\n Toppings: lstTarjetasFinal[j].Toppings.map(item => { return { ...item } }),\r\n TipoSabor: lstTarjetasFinal[j].TipoSabor.map(item => { return { ...item, Details: [], Toppings: [] } }),\r\n TipoLeche: lstTarjetasFinal[j].TipoLeche.map(item => { return { ...item, Details: [], Toppings: [] } }),\r\n TipoGrano: lstTarjetasFinal[j].TipoGrano.map(item => { return { ...item, Details: [], Toppings: [] } })\r\n }\r\n objTemp.Propiedades.PresentationId = datosReceta.TipoPresentacion[i].PresentationId\r\n objTemp.Nombres = { ...objTemp.Nombres, TipoPresentacion: datosReceta.TipoPresentacion[i].Nombre }\r\n lstTarjetasTemp.push(objTemp)\r\n }\r\n else {\r\n objTemp = {\r\n ...lstTarjetasFinal[j],\r\n Propiedades: { ...lstTarjetasFinal[j].Propiedades },\r\n Details: lstTarjetasFinal[j].Details.map(item => { return { Amount: item.Amount, InventoryItem: { ...item.InventoryItem } } }),\r\n Toppings: lstTarjetasFinal[j].Toppings.map(item => { return { ...item } }),\r\n TipoSabor: lstTarjetasFinal[j].TipoSabor.map(item => { return { ...item, Details: [], Toppings: [] } }),\r\n TipoLeche: lstTarjetasFinal[j].TipoLeche.map(item => { return { ...item, Details: [], Toppings: [] } }),\r\n TipoGrano: lstTarjetasFinal[j].TipoGrano.map(item => { return { ...item, Details: [], Toppings: [] } })\r\n }\r\n objTemp.Propiedades.PresentationId = datosReceta.TipoPresentacion[i].PresentationId \r\n lstTarjetasTemp.push(objTemp)\r\n \r\n }\r\n }\r\n }\r\n if (lstTarjetasTemp.length > 0)\r\n lstTarjetasFinal = lstTarjetasTemp\r\n }\r\n\r\n //Generando tarjetas por tipo de receta\r\n if (datosReceta.TipoReceta != null || datosReceta.TipoReceta.length > 0) {\r\n lstTarjetasTemp = []\r\n for (let j = 0; j < lstTarjetasFinal.length; j++) {\r\n for (let i = 0; i < datosReceta.TipoReceta.length; i++) {\r\n objTemp = {\r\n ...lstTarjetasFinal[j],\r\n Propiedades: { ...lstTarjetasFinal[j].Propiedades },\r\n Details: lstTarjetasFinal[j].Details.map(item => { return { Amount: item.Amount, InventoryItem: { ...item.InventoryItem } } }),\r\n Toppings: lstTarjetasFinal[j].Toppings.map(item => { return { ...item } }),\r\n TipoSabor: lstTarjetasFinal[j].TipoSabor.map(item => { return { ...item, Details: [], Toppings: [] } }),\r\n TipoLeche: lstTarjetasFinal[j].TipoLeche.map(item => { return { ...item, Details: [], Toppings: [] } }),\r\n TipoGrano: lstTarjetasFinal[j].TipoGrano.map(item => { return { ...item, Details: [], Toppings: [] } })\r\n }\r\n if (datosReceta.TipoReceta[i].Nombre.toLowerCase() !== \"sin tipo\") {\r\n \r\n objTemp.Propiedades.RecipeTypeId = datosReceta.TipoReceta[i].RecipeTypeId\r\n objTemp.Nombres = { ...objTemp.Nombres, TipoReceta: datosReceta.TipoReceta[i].Nombre }\r\n lstTarjetasTemp.push(objTemp)\r\n } \r\n else {\r\n if(objTemp.Propiedades){\r\n objTemp.Propiedades.RecipeTypeId = datosReceta.TipoReceta[i].RecipeTypeId\r\n //objTemp.Nombres = { ...objTemp.Nombres, TipoReceta: datosReceta.TipoReceta[i].Nombre }\r\n lstTarjetasTemp.push(objTemp)\r\n } \r\n }\r\n }\r\n }\r\n\r\n if (lstTarjetasTemp.length > 0) {\r\n lstTarjetasFinal = lstTarjetasTemp\r\n baseFormOpen = false\r\n }\r\n }\r\n\r\n this.setState({ cards: lstTarjetasFinal, baseFormOpen: baseFormOpen }, () => {\r\n if (this.state.isEditing) {\r\n this.setState({ modalConfirm: true, cardsPreview: this.crearRecetasDesdeTarjetas() });\r\n }\r\n })\r\n\r\n }\r\n\r\n /**\r\n * Funcion que se ejecuta cada vez que se modifica un detalle en la tarjeta. Agrega/actualiza los detalles.\r\n * @param detallesActualizados Array. Lista de objetos que representan los detalles actualizados\r\n * @param tipoLabel String. Etiqueta que indica a que tipo de dato se va a modificar los detalles. Ejemplo: TipoSabor, TipoLeche\r\n * @param indice Int. Indice en el tipo de dato donde estan los detalles a modificar\r\n * @param indiceTarjeta Int. Indice donde esta la tarjeta en el arreglo de cards.\r\n */\r\n onTarjetaDetailChange = (detallesActualizados, tipoLabel, indice, indiceTarjeta) => {\r\n // let tarjetas = [...this.state.cards]\r\n let tarjeta = { ...this.state.cards[indiceTarjeta] }\r\n if (tipoLabel.toLowerCase() === \"details\") {\r\n tarjeta.Details = [...detallesActualizados]\r\n } else {\r\n tarjeta[tipoLabel][indice].Details = [...detallesActualizados]\r\n }\r\n let tarjetas = [...this.state.cards]\r\n tarjetas[indiceTarjeta] = tarjeta\r\n this.setState({ cards: tarjetas })\r\n }\r\n\r\n /**\r\n * Funcion que se ejecuta cada vez que se modifica un topping en la tarjeta. Agrega/actualiza los toppings.\r\n * @param toppingsActualizados Array. Lista de objetos que representan los toppings actualizados\r\n * @param tipoLabel String. Etiqueta que indica a que tipo de dato se va a modificar los toppings. Ejemplo: TipoSabor, TipoLeche\r\n * @param indice Int. Indice en el tipo de dato donde estan los toppings a modificar\r\n * @param indiceTarjeta Int. Indice donde esta la tarjeta en el arreglo de cards.\r\n */\r\n onTarjetaToppingChange = (toppingsActualizados, tipoLabel, indice, indiceTarjeta) => {\r\n let tarjeta = { ...this.state.cards[indiceTarjeta] }\r\n if (tipoLabel.toLowerCase() === \"toppings\") {\r\n tarjeta.Toppings = [...toppingsActualizados]\r\n } else {\r\n tarjeta[tipoLabel][indice].Toppings = [...toppingsActualizados]\r\n }\r\n let tarjetas = [...this.state.cards]\r\n tarjetas[indiceTarjeta] = tarjeta\r\n this.setState({ cards: tarjetas })\r\n }\r\n\r\n /**\r\n * Crea varias recetas a la vez tomando como base la lista de objetos tipo Tarjeta en this.state.Cards\r\n * @returns Una lista de recetas\r\n */\r\n crearRecetasDesdeTarjetas = () => {\r\n let objBase = {}\r\n let lstRecetasFinal = []\r\n let lstRecetasTarjeta = []\r\n let lstRecetasTemp = []\r\n let objTemp = {}\r\n let objTarjeta = {}\r\n let lstTarjetas = [...this.state.cards]\r\n let truncatedName = false\r\n\r\n for (let indexTarjeta = 0; indexTarjeta < lstTarjetas.length; indexTarjeta++) {\r\n objTarjeta = lstTarjetas[indexTarjeta]\r\n objBase = {\r\n ...objTarjeta.Propiedades\r\n , Details: []\r\n , Nombres: { ...objTarjeta.Nombres }\r\n , Toppings: [...objTarjeta.Toppings]\r\n }\r\n\r\n objTarjeta.Details.forEach(detalle => {\r\n if (detalle.InventoryItem.DriveId != null) {\r\n detalle.InventoryItem.DriveId.forEach(driveId => {\r\n objBase.Details.push({ Amount: detalle.Amount, InventoryItem: { ...detalle.InventoryItem, idDrive: driveId.idDrive, DriveId: [], driveList: [] } })\r\n })\r\n }\r\n else {\r\n objBase.Details.push({ Amount: detalle.Amount, InventoryItem: { ...detalle.InventoryItem, idDrive: null, DriveId: [], driveList: [] } })\r\n }\r\n })\r\n\r\n lstRecetasTarjeta = [objBase]\r\n lstRecetasTemp = []\r\n objTemp = {}\r\n\r\n //Agregando los detalles de los sabores\r\n if (objTarjeta.TipoSabor != null || objTarjeta.TipoSabor.length > 0) {\r\n lstRecetasTemp = []\r\n for (var j = 0; j < lstRecetasTarjeta.length; j++) {\r\n for (var i = 0; i < objTarjeta.TipoSabor.length; i++) {\r\n objTemp = {\r\n ...lstRecetasTarjeta[j],\r\n FlavorTypeId: objTarjeta.TipoSabor[i].FlavorTypeId,\r\n Toppings: [\r\n ...objTarjeta.TipoSabor[i].Toppings,\r\n ...objTarjeta.Toppings\r\n ]\r\n }\r\n objTemp.Details = [...objTemp.Details]\r\n if (objTarjeta.TipoSabor[i].Details != null) {\r\n for (let d = 0; d < objTarjeta.TipoSabor[i].Details.length; d++) {\r\n if (objTarjeta.TipoSabor[i].Details[d].InventoryItem.DriveId != null) {\r\n objTarjeta.TipoSabor[i].Details[d].InventoryItem.DriveId.forEach(driveId => {\r\n objTemp.Details.push({\r\n Amount: objTarjeta.TipoSabor[i].Details[d].Amount,\r\n InventoryItem: {\r\n ...objTarjeta.TipoSabor[i].Details[d].InventoryItem,\r\n idDrive: driveId.idDrive, DriveId: []\r\n }\r\n })\r\n })\r\n } else {\r\n objTemp.Details.push({ Amount: objTarjeta.TipoSabor[i].Details[d].Amount, InventoryItem: { ...objTarjeta.TipoSabor[i].Details[d].InventoryItem, idDrive: null, DriveId: [] } })\r\n }\r\n }\r\n } \r\n objTemp.Nombres = { ...objTemp.Nombres, TipoSabor: objTarjeta.TipoSabor[i].Nombre }\r\n lstRecetasTemp.push(objTemp)\r\n }\r\n }\r\n if (lstRecetasTemp.length > 0)\r\n lstRecetasTarjeta = lstRecetasTemp\r\n }\r\n\r\n //Agregando los detalles del tipo de leche\r\n if (objTarjeta.TipoLeche != null || objTarjeta.TipoLeche.length > 0) {\r\n lstRecetasTemp = []\r\n for (var j = 0; j < lstRecetasTarjeta.length; j++) {\r\n for (var i = 0; i < objTarjeta.TipoLeche.length; i++) {\r\n objTemp = {\r\n ...lstRecetasTarjeta[j],\r\n MilkTypeId: objTarjeta.TipoLeche[i].MilkTypeId\r\n }\r\n objTemp.Details = [...objTemp.Details]\r\n if (objTarjeta.TipoLeche[i].Details != null) {\r\n for (let d = 0; d < objTarjeta.TipoLeche[i].Details.length; d++) {\r\n for (let d = 0; d < objTarjeta.TipoLeche[i].Details.length; d++) {\r\n if (objTarjeta.TipoLeche[i].Details[d].InventoryItem.DriveId != null) {\r\n objTarjeta.TipoLeche[i].Details[d].InventoryItem.DriveId.forEach(driveId => {\r\n objTemp.Details.push({ Amount: objTarjeta.TipoLeche[i].Details[d].Amount, InventoryItem: { ...objTarjeta.TipoLeche[i].Details[d].InventoryItem, idDrive: driveId.idDrive, DriveId: [] } })\r\n })\r\n } else {\r\n objTemp.Details.push({ Amount: objTarjeta.TipoLeche[i].Details[d].Amount, InventoryItem: { ...objTarjeta.TipoLeche[i].Details[d].InventoryItem, idDrive: null, DriveId: [] } })\r\n }\r\n }\r\n }\r\n }\r\n objTemp.Nombres = { ...objTemp.Nombres, TipoLeche: objTarjeta.TipoLeche[i].Nombre }\r\n lstRecetasTemp.push(objTemp)\r\n }\r\n }\r\n if (lstRecetasTemp.length > 0)\r\n lstRecetasTarjeta = lstRecetasTemp\r\n }\r\n\r\n //Agregando los detalles del tipo de grano\r\n if (objTarjeta.TipoGrano != null || objTarjeta.TipoGrano.length > 0) {\r\n lstRecetasTemp = []\r\n for (var j = 0; j < lstRecetasTarjeta.length; j++) {\r\n for (var i = 0; i < objTarjeta.TipoGrano.length; i++) {\r\n objTemp = {\r\n ...lstRecetasTarjeta[j],\r\n GrainTypeId: objTarjeta.TipoGrano[i].GrainTypeId\r\n }\r\n objTemp.Details = [...objTemp.Details]\r\n if (objTarjeta.TipoGrano[i].Details != null) {\r\n for (let d = 0; d < objTarjeta.TipoGrano[i].Details.length; d++) {\r\n for (let d = 0; d < objTarjeta.TipoGrano[i].Details.length; d++) {\r\n if (objTarjeta.TipoGrano[i].Details[d].InventoryItem.DriveId != null) {\r\n objTarjeta.TipoGrano[i].Details[d].InventoryItem.DriveId.forEach(driveId => {\r\n objTemp.Details.push({ Amount: objTarjeta.TipoGrano[i].Details[d].Amount, InventoryItem: { ...objTarjeta.TipoGrano[i].Details[d].InventoryItem, idDrive: driveId.idDrive, DriveId: [] } })\r\n })\r\n } else {\r\n objTemp.Details.push({ Amount: objTarjeta.TipoGrano[i].Details[d].Amount, InventoryItem: { ...objTarjeta.TipoGrano[i].Details[d].InventoryItem, idDrive: null, DriveId: [] } })\r\n }\r\n }\r\n }\r\n }\r\n objTemp.Nombres = { ...objTemp.Nombres, TipoGrano: objTarjeta.TipoGrano[i].Nombre }\r\n lstRecetasTemp.push(objTemp)\r\n }\r\n }\r\n if (lstRecetasTemp.length > 0)\r\n lstRecetasTarjeta = lstRecetasTemp\r\n }\r\n\r\n //Generando nombres\r\n for (var i = 0; i < lstRecetasTarjeta.length; i++) {\r\n lstRecetasTarjeta[i].Description = !this.state.isEditing \r\n ? lstRecetasTarjeta[i].Nombres.Clasificacion.substr(0, 4)\r\n + ((lstRecetasTarjeta[i].Nombres.TipoReceta && !this.nombreEsSinTipo(lstRecetasTarjeta[i].Nombres.TipoReceta)) ? \" \" + lstRecetasTarjeta[i].Nombres.TipoReceta.trim().substr(0, 10) : \"\")\r\n + ((lstRecetasTarjeta[i].Nombres.TipoSabor && !this.nombreEsSinTipo(lstRecetasTarjeta[i].Nombres.TipoSabor)) && lstRecetasTarjeta[i].Nombres.TipoReceta !== lstRecetasTarjeta[i].Nombres.TipoSabor ? \" \" + lstRecetasTarjeta[i].Nombres.TipoSabor.trim().substr(0, 10) : \"\")\r\n + ((lstRecetasTarjeta[i].Nombres.TipoGrano && !this.nombreEsSinTipo(lstRecetasTarjeta[i].Nombres.TipoGrano)) ? \" \" + lstRecetasTarjeta[i].Nombres.TipoGrano.trim().substr(0, 5) : \"\")\r\n + ((lstRecetasTarjeta[i].Nombres.TipoLeche && !this.nombreEsSinTipo(lstRecetasTarjeta[i].Nombres.TipoLeche)) ? \" \" + lstRecetasTarjeta[i].Nombres.TipoLeche.toLowerCase().replace('leche', '').replace('de ','').trim().substr(0, 5) : \"\")\r\n + ((lstRecetasTarjeta[i].Nombres.TipoPresentacion && !this.nombreEsSinTipo(lstRecetasTarjeta[i].Nombres.TipoPresentacion)) ? \" \" + lstRecetasTarjeta[i].Nombres.TipoPresentacion.trim().substr(0, 5) : \"\")\r\n \r\n : lstRecetasTarjeta[i].ShortName ;\r\n\r\n if (lstRecetasTarjeta[i].Description.length > 50) {\r\n lstRecetasTarjeta[i].Description = (\r\n !this.state.isEditing ?\r\n lstRecetasTarjeta[i].Nombres.Clasificacion.substr(0, 4)\r\n + ((lstRecetasTarjeta[i].Nombres.TipoReceta && !this.nombreEsSinTipo(lstRecetasTarjeta[i].Nombres.TipoReceta)) ? \" \" + lstRecetasTarjeta[i].Nombres.TipoReceta.trim().substr(0, 10) : \"\")\r\n + ((lstRecetasTarjeta[i].Nombres.TipoSabor && !this.nombreEsSinTipo(lstRecetasTarjeta[i].Nombres.TipoSabor)) && lstRecetasTarjeta[i].Nombres.TipoReceta !== lstRecetasTarjeta[i].Nombres.TipoSabor ? \" \" + lstRecetasTarjeta[i].Nombres.TipoSabor.trim().substr(0, 10) : \"\")\r\n + ((lstRecetasTarjeta[i].Nombres.TipoGrano && !this.nombreEsSinTipo(lstRecetasTarjeta[i].Nombres.TipoGrano)) ? \" \" + lstRecetasTarjeta[i].Nombres.TipoGrano.trim().substr(0, 5) : \"\")\r\n + ((lstRecetasTarjeta[i].Nombres.TipoLeche && !this.nombreEsSinTipo(lstRecetasTarjeta[i].Nombres.TipoLeche)) ? \" \" + lstRecetasTarjeta[i].Nombres.TipoLeche.toLowerCase().replace('leche', '').replace('de ','').trim().substr(0, 5) : \"\")\r\n + ((lstRecetasTarjeta[i].Nombres.TipoPresentacion && !this.nombreEsSinTipo(lstRecetasTarjeta[i].Nombres.TipoPresentacion)) ? \" \" + lstRecetasTarjeta[i].Nombres.TipoPresentacion.trim().substr(0, 5) : \"\")\r\n \r\n : lstRecetasTarjeta[i].ShortName \r\n ).substr(0, 50)\r\n\r\n lstRecetasTarjeta[i].TruncatedName = true\r\n truncatedName = true\r\n }\r\n\r\n lstRecetasTarjeta[i].ShortName = this.state.isEditing \r\n ? lstRecetasTarjeta[i].ShortName \r\n : lstRecetasTarjeta[i].Nombres.Clasificacion.substr(0, 4)\r\n + ((lstRecetasTarjeta[i].Nombres.TipoReceta && !this.nombreEsSinTipo(lstRecetasTarjeta[i].Nombres.TipoReceta)) ? \" \" + lstRecetasTarjeta[i].Nombres.TipoReceta.trim().substr(0, 10) : \"\")\r\n + ((lstRecetasTarjeta[i].Nombres.TipoSabor && !this.nombreEsSinTipo(lstRecetasTarjeta[i].Nombres.TipoSabor)) && lstRecetasTarjeta[i].Nombres.TipoReceta !== lstRecetasTarjeta[i].Nombres.TipoSabor ? \" \" + lstRecetasTarjeta[i].Nombres.TipoSabor.trim().substr(0, 10) : \"\")\r\n + ((lstRecetasTarjeta[i].Nombres.TipoGrano && !this.nombreEsSinTipo(lstRecetasTarjeta[i].Nombres.TipoGrano)) ? \" \" + lstRecetasTarjeta[i].Nombres.TipoGrano.trim().substr(0, 5) : \"\")\r\n + ((lstRecetasTarjeta[i].Nombres.TipoLeche && !this.nombreEsSinTipo(lstRecetasTarjeta[i].Nombres.TipoLeche)) ? \" \" + lstRecetasTarjeta[i].Nombres.TipoLeche.toLowerCase().replace('leche', '').replace('de ','').trim().substr(0, 5) : \"\")\r\n + ((lstRecetasTarjeta[i].Nombres.TipoPresentacion && !this.nombreEsSinTipo(lstRecetasTarjeta[i].Nombres.TipoPresentacion)) ? \" \" + lstRecetasTarjeta[i].Nombres.TipoPresentacion.trim().substr(0, 5) : \"\")\r\n ;\r\n }\r\n\r\n lstRecetasFinal = [...lstRecetasFinal, ...lstRecetasTarjeta]\r\n }\r\n\r\n if (truncatedName) this.setState({ truncatedName: truncatedName })\r\n\r\n return lstRecetasFinal\r\n }\r\n\r\n /**\r\n * Función que analiza el nombre dado y determina si representa a la clasificacion sin tipo\r\n * @param nombre String. Nombre que se va analizar\r\n * @returns True si el nombre representa a la clasificación sin tipo. False en caso contrario\r\n */\r\n nombreEsSinTipo = (nombre) => { \r\n return this.state.nombresSinTipo.indexOf((nombre.trim().toLowerCase())) !== -1\r\n }\r\n\r\n /**\r\n * Genera recetas desde tarjetas y manda a llamar al endpoint de la API para guardar multiples recetas\r\n */\r\n guardarRecetasMulti = () => {\r\n this.setState({ isLoading: true }, () => {\r\n let lstRecetas = this.state.cardsPreview;\r\n if (lstRecetas.length > 0) {\r\n // Agrupa artículos con listado de drives, el listado es [] sí aplica para todos\r\n lstRecetas = lstRecetas.map(item => {\r\n item.ClassificationId = item.ClassificationId.ClassificationId;\r\n item.ClassificationSatId = item.ClassificationSatId.ClassificationSatId;\r\n item.CodeSatId = item.CodeSatId.Code;\r\n item.Details = item.Details.reduce((list, detail, index) => {\r\n\r\n if (!list.some(l => l.InventoryItemId === detail.InventoryItem.InventoryItemId && l.Amount === detail.Amount)) {\r\n let formatItem = {};\r\n formatItem.Amount = detail.Amount;\r\n formatItem.InventoryItemId = detail.InventoryItem.InventoryItemId;\r\n let totalInventory = item.Details.filter(d => d.InventoryItem.InventoryItemId === formatItem.InventoryItemId && d.Amount === formatItem.Amount);\r\n \r\n if (!detail.InventoryItem.idDrive || totalInventory.length >= this.state.Caffenios.length) {\r\n //poner para todos\r\n formatItem.idDrive = [];\r\n } else {\r\n let drivesIds = totalInventory.map(d => { \r\n return d.InventoryItem.idDrive ? d.InventoryItem.idDrive : d.InventoryItem.idCaffenio\r\n })\r\n //valores unicos\r\n formatItem.idDrive = drivesIds.filter(this.onlyUnique)\r\n }\r\n list.push(formatItem);\r\n }\r\n return list;\r\n }, []);\r\n return item;\r\n });\r\n\r\n if (this.state.isEditing) {\r\n let lastIndex = lstRecetas.length;\r\n //Edita receta por receta en teoría solo es una \r\n lstRecetas.forEach((receta, index) => {\r\n RecipesAPI.editWithFormData(receta, receta.Image instanceof File ? receta.Image : null)\r\n .then(response => {\r\n if(index === (lastIndex-1)){\r\n toast.success(\"Receta actualizada.\");\r\n this.setState({ isLoading: false, modalConfirm: false, cardsPreview: [] }); \r\n this.props.history.goBack();\r\n } \r\n })\r\n .catch(error => {\r\n toast.error(\"Error al edita receta\")\r\n this.setState({ isLoading: false, modalConfirm: false, cardsPreview: [] });\r\n \r\n });\r\n\r\n });\r\n \r\n } else { \r\n let recipesByFlavor = lstRecetas.reduce((lista, item) => {\r\n if(!lista.some(l => l.FlavorTypeId === item.FlavorTypeId)){\r\n //let imageFlavor = item.flavorsImages.filter(i => i.FlavorTypeId === item.FlavorTypeId); \r\n let totalRecipes = lstRecetas.filter(f => f.FlavorTypeId === item.FlavorTypeId);\r\n lista.push({ \r\n FlavorTypeId: item.FlavorTypeId, \r\n //ImgResource: imageFlavor && imageFlavor.length > 0 ? imageFlavor[0].Image : null , \r\n Recipes: totalRecipes,\r\n Completed:false\r\n });\r\n }\r\n return lista\r\n }, []);\r\n recipesByFlavor.forEach((receta) => {\r\n RecipesAPI.createWithFormData(receta.Recipes, receta.ImgResource)\r\n .then(response => {\r\n receta.Completed = true;\r\n if(!recipesByFlavor.some(r => r.Completed === false)){\r\n this.setState({ isLoading: false, modalConfirm: false, cardsPreview: [] }, \r\n () => {\r\n toast.dismiss();\r\n toast.success(\"Receta(s) creada(s)\");\r\n this.props.history.goBack();\r\n }); \r\n }\r\n \r\n })\r\n .catch(error => {\r\n this.setState({ isLoading: false, modalConfirm: false, cardsPreview: [] }, \r\n () => {\r\n toast.dismiss(); \r\n toast.error(\"Error al crear recetas\"); \r\n }); \r\n });\r\n\r\n });\r\n }\r\n\r\n } else {\r\n toast.error(\"No hay recetas para procesar.\")\r\n }\r\n })\r\n }\r\n\r\n /**Función para validar valores unicos en el array */\r\n onlyUnique(value, index, self) {\r\n return self.indexOf(value) === index;\r\n }\r\n\r\n render() {\r\n return (\r\n
    \r\n
    \r\n
    \r\n
    \r\n \r\n { this.props.history.goBack() }} className=\"fa fa-arrow-left\">\r\n \r\n
    \r\n {this.state.recipe.RecipeId ? \"Editar Receta\" : \"Nueva Receta\"}\r\n this.setState({ showModal: true })} className=\"fa fa-question-circle\">\r\n
    \r\n\r\n
    \r\n
    \r\n
    \r\n
    \r\n
    \r\n
    \r\n
    1
    \r\n
    \r\n

    Configuración

    \r\n

    Configuración de la receta.

    \r\n
    \r\n
    \r\n
    \r\n
    2
    \r\n
    \r\n

    Información complementaria

    \r\n

    Información complementaria de la receta.

    \r\n
    \r\n
    \r\n
    \r\n
    3
    \r\n
    \r\n

    Artículos y Toppings

    \r\n

    Agrega los artículos y toppings que tienen en común todas las combinaciones.

    \r\n
    \r\n
    \r\n {!this.state.isEditing &&
    \r\n
    4
    \r\n
    \r\n

    Recetas generadas

    \r\n

    Complementa los artículos y toppings que varían por tipo receta, sabor, grano, leche y/o tamaño.

    \r\n
    \r\n
    }\r\n\r\n
    \r\n
    \r\n {\r\n let currentItem = { ...this.state.recipe }\r\n currentItem.flavorsImages = recipe.flavorsImages;\r\n currentItem.TiposDetalle = {};\r\n currentItem.ClassificationId = recipe.ClassificationId;\r\n currentItem.RecipeTypeId = recipe.RecipeTypeId;\r\n if(this.state.isEditing){\r\n currentItem.SegmentationId = recipe.idSegmento;\r\n }else{\r\n currentItem.SegmentationId = recipe.SegmentationId.SegmentId;\r\n }\r\n \r\n currentItem.TiposDetalle.TipoReceta = recipe.RecipeTypeId.map(item => {\r\n return {\r\n RecipeTypeId: item.value,\r\n Nombre: item.label\r\n }\r\n });\r\n currentItem.FlavorTypeId = recipe.FlavorTypeId;\r\n currentItem.TiposDetalle.TipoSabor = recipe.FlavorTypeId.map(item => {\r\n return {\r\n FlavorTypeId: item.value,\r\n Nombre: item.label\r\n }\r\n }); \r\n currentItem.GrainTypeId = recipe.GrainTypeId;\r\n currentItem.TiposDetalle.TipoGrano = recipe.GrainTypeId.map(item => {\r\n return {\r\n GrainTypeId: item.value,\r\n Nombre: item.label\r\n }\r\n });\r\n currentItem.MilkTypeId = recipe.MilkTypeId;\r\n currentItem.TiposDetalle.TipoLeche = recipe.MilkTypeId.map(item => {\r\n return {\r\n MilkTypeId: item.value,\r\n Nombre: item.label\r\n\r\n }\r\n });\r\n currentItem.PresentationId = recipe.PresentationId;\r\n currentItem.TiposDetalle.TipoPresentacion = recipe.PresentationId.map(item => {\r\n return {\r\n PresentationId: item.value,\r\n Nombre: item.label\r\n }\r\n });\r\n currentItem.Image = recipe.Image;\r\n currentItem.UrlImage = recipe.UrlImage;\r\n currentItem.ShortName = recipe.ShortName;\r\n if(recipe.KiwiId){\r\n currentItem.KiwiId = recipe.KiwiId;\r\n }else{\r\n currentItem.KiwiId = null;\r\n }\r\n this.setState({ recipe: currentItem, stepConfigRecipeCompleted: true, stepConfigRecipe: false, stepComplementInfo: true },\r\n ()=> console.log(\"STEP 1\", this.state.recipe))\r\n }}\r\n lstRecipes={this.state.lstRecipes}\r\n />\r\n
    \r\n
    \r\n {\r\n let currentItem = { ...this.state.recipe }\r\n currentItem.IVAApply = recipe.IVAApply;\r\n currentItem.MobileActive = recipe.MobileActive;\r\n currentItem.GiftWelcomeActive = recipe.GiftWelcomeActive;\r\n currentItem.ClassificationSatId = recipe.ClassificationSatId;\r\n currentItem.CodeSatId = recipe.CodeSatId;\r\n \r\n this.setState({ recipe: currentItem, stepComplementInfoCompleted: true, stepComplementInfo: false, stepCommonItemsAndToppings: true }, \r\n ()=>console.log(\"STEP 2\", currentItem))\r\n }}\r\n back={() => {\r\n this.setState({ stepComplementInfo: false, stepConfigRecipe: true })\r\n }}\r\n />\r\n
    \r\n
    \r\n {\r\n let currentItem = { ...this.state.recipe }\r\n currentItem.Details = recipe.Details;\r\n currentItem.Toppings = recipe.Toppings;\r\n let objTarjetaBase = {\r\n Propiedades: currentItem,\r\n Details: currentItem.Details,\r\n Toppings: currentItem.Toppings,\r\n ...currentItem.TiposDetalle\r\n }\r\n currentItem.ApplySync = sync;\r\n console.log(\"STEP 3\", currentItem);\r\n this.setState({ recipe: currentItem, stepCommonItemsAndToppingsCompleted: true, stepCommonItemsAndToppings: this.state.isEditing, stepCombineRecipes: !this.state.isEditing },\r\n () => { this.save(objTarjetaBase) }//\r\n )\r\n }}\r\n back={() => {\r\n this.setState({ stepCommonItemsAndToppings: false, stepComplementInfo: true })\r\n }}\r\n />\r\n
    \r\n {!this.state.isEditing &&
    \r\n {\r\n this.onTarjetaDetailChange(detallesActualizados, tipoLabel, indice, selectedCard)\r\n }\r\n }\r\n onToppingChange={(toppingsActualizados, tipoLabel, indice, selectedCard) => {\r\n this.onTarjetaToppingChange(toppingsActualizados, tipoLabel, indice, selectedCard)\r\n }}\r\n save={(recipe) => {\r\n \r\n //Validar toppings\r\n let lstTarjetas = [...this.state.cards]\r\n for (let indexTarjeta = 0; indexTarjeta < lstTarjetas.length; indexTarjeta++) {\r\n let objTarjeta = lstTarjetas[indexTarjeta]\r\n let toppings = [...objTarjeta.Toppings]\r\n for (let i = 0; i < toppings.length; i++) {\r\n if(toppings[i][\"MinQuantity\"] === '' || toppings[i][\"MaxQuantity\"] ===''){\r\n toast.error(\"Ingrese los valores mínimos y máximos para \" + toppings[i][\"Name\"]);\r\n return;\r\n }\r\n }\r\n \r\n }\r\n this.setState({ stepComplementInfoCompleted: true, modalConfirm: true, cardsPreview: this.crearRecetasDesdeTarjetas() })\r\n\r\n }}\r\n back={() => {\r\n this.setState({ stepCombineRecipes: false, stepCommonItemsAndToppings: true })\r\n }}\r\n />\r\n
    }\r\n
    \r\n
    \r\n
    \r\n
    \r\n
    \r\n\r\n\r\n {/* Modal preview */}\r\n this.guardarRecetasMulti()}\r\n cancel={() => this.setState({ modalConfirm: false, cardsPreview: [] })}\r\n modalTitle={this.state.isEditing ? \"Actualizar receta\" : \"¿Crear las siguientes recetas?\"}\r\n modalBody={
    \r\n {this.state.truncatedName &&\r\n
    \r\n
    \r\n

    Aviso

    \r\n
    \r\n
    \r\n Hay una o mas recetas cuyos nombres han sido modificados para que tengan una longitud de menor o igual a 50 caracteres. Puedes identificar las recetas afectadas si empiezan con el siguiente icono:\r\n \r\n \r\n \r\n
    \r\n
    }\r\n\r\n {this.state.cardsPreview.map((receta, index) => {\r\n // return

    {item.Description}

    \r\n // Creamos un arreglo de articulos para no repetir los que estan asignados a todos\r\n let articulos = []\r\n receta.Details.findIndex(detalle => {\r\n if (articulos.findIndex(item => item.InventoryItemId === detalle.InventoryItem.InventoryItemId && detalle.InventoryItem.DriveNombre === item.DriveNombre) === -1) {\r\n articulos.push(detalle.InventoryItem)\r\n }\r\n return false\r\n })\r\n\r\n return
    \r\n {/* Titulo y boton de expanción */}\r\n {\r\n let cardsPreview = [...this.state.cardsPreview]\r\n cardsPreview[index].Open = cardsPreview[index].Open === undefined ? true : !cardsPreview[index].Open\r\n this.setState({ cardsPreview: cardsPreview })\r\n }}\r\n >\r\n {receta.TruncatedName &&\r\n \r\n \r\n \r\n \r\n }\r\n

    {receta.Description}

    \r\n \r\n \r\n \r\n \r\n \r\n \r\n {/* Información de la receta */}\r\n {receta.Open &&\r\n
    \r\n {/* Datos de la receta */}\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n
    Tipo receta{receta.Nombres.TipoReceta && receta.Nombres.TipoReceta.trim().length > 0 ? receta.Nombres.TipoReceta : \"No Aplica\"}
    Tipo sabor{receta.Nombres.TipoSabor}
    Tipo leche{receta.Nombres.TipoLeche}
    Tipo grano{receta.Nombres.TipoGrano}
    Tipo presentación{receta.Nombres.TipoPresentacion && receta.Nombres.TipoPresentacion.trim().length > 0 ? receta.Nombres.TipoPresentacion : \"No Aplica\"}
    Segmento{\r\n receta.SegmentationId == 1 ? \"Caffenio\" \r\n : receta.SegmentationId == 9 ?\"Andatti\"\r\n : receta.SegmentationId == 10 ?\"Momento Espresso\"\r\n : receta.SegmentationId\r\n }
    \r\n\r\n {/* Artículos inventario */}\r\n

    Artículos inventario

    \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n {articulos.length > 0 && articulos.map(detalle => {\r\n return \r\n \r\n \r\n \r\n \r\n \r\n \r\n })}\r\n \r\n
    CódigoNombreCantidadUnidadDrive
    {detalle.InventoryCode}{detalle.Name}{detalle.Amount}{detalle.UnitSaleStr}{detalle.DriveNombre}
    \r\n\r\n {/* Toppings */}\r\n

    Toppings

    \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n {receta.Toppings.map(topping => {\r\n return \r\n \r\n \r\n \r\n \r\n \r\n \r\n })}\r\n \r\n
    CódigoNombreMinMaxUnidad
    {topping.CodeProvider}{topping.Name}{topping.MinQuantity}{topping.MaxQuantity}{topping.UnitSaleStr}
    \r\n
    \r\n }\r\n
    \r\n })}\r\n
    \r\n }\r\n />\r\n\r\n {/* Accept Modal generico */}\r\n {\r\n this.state.modalGenericDone()\r\n this.setState({ modalGeneric: false })\r\n }}\r\n cancel={() => this.setState({ modalGeneric: false, modalGenericTitle: '', modalGenericBody: '' })}\r\n modalTitle={this.state.modalGenericTitle}\r\n modalBody={this.state.modalGenericBody}\r\n />\r\n\r\n {/* Modal de información */}\r\n {this.state.showModal && !this.state.isEditing\r\n ?\r\n this.setState({ showModal: false })}\r\n >\r\n
    \r\n La recetas son los productos que se venden tanto en puntos de venta como en la aplicación móvil, están compuestas de\r\n artículos y toppings.\r\n
    A partir de la configuración se generarán todas las combinaciones de la receta.\r\n
    \r\n
    \r\n
    this.setState({ show_info: !this.state.show_info, show_info_equivalencias: false, show_info_clasificacion: false, show_info_end: false })}>\r\n
    \r\n

    1. Configuración

    \r\n
    \r\n
    \r\n
    \r\n

    \r\n En la sección de configuración, se define la familia,\r\n tipo receta, tipo sabor, tipo grano, tipo leche y presentación.\r\n Toda la información es requerida, en caso de no aplicar seleccione la opción Sin tipo.\r\n

    \r\n
    \r\n
    \r\n
    \r\n
    this.setState({ show_info_equivalencias: !this.state.show_info_equivalencias, show_info: false, show_info_clasificacion: false, show_info_end: false })}>\r\n
    \r\n

    2. Información Complementaria

    \r\n
    \r\n
    \r\n
    \r\n

    \r\n Clasificación del SAT: es la clasificación del producto ante el SAT\r\n

    \r\n

    \r\n Código del SAT: es el código de facturación a la venta del producto.\r\n

    \r\n

    \r\n Aplica IVA: al seleccionar esta opción se considera el IVA en el precio.\r\n

    \r\n

    \r\n Aplica en App Móvil: al seleccionar esta opción la receta estará disponible en la aplicación móvil.\r\n

    \r\n

    \r\n Aplica Regalo Bienvenida: al seleccionar esta opción la receta se configura como regalo de bienvenida.\r\n

    \r\n\r\n
    \r\n
    \r\n
    \r\n
    this.setState({ show_info_clasificacion: !this.state.show_info_clasificacion, show_info: false, show_info_end: false, show_info_equivalencias: false })}>\r\n
    \r\n

    3. Artículos y Toppings

    \r\n
    \r\n
    \r\n
    \r\n

    \r\n En esta sección debe seleccionar los artículos y toppings que\r\n aplicarán para todas las combinaciones de receta generadas.\r\n

    \r\n
    \r\n
    \r\n
    \r\n
    this.setState({ show_info_end: !this.state.show_info_end, show_info: false, show_info_clasificacion: false, show_info_equivalencias: false })}>\r\n
    \r\n

    4. Recetas

    \r\n
    \r\n
    \r\n
    \r\n Configure los artículos y toppings que aplican por tamaño, tipo receta, sabor, grano, tipo de leche.\r\n
    \r\n
    \r\n
    \r\n
    \r\n
    \r\n \r\n\r\n :\r\n this.setState({ showModal: false })}\r\n >\r\n
    \r\n La recetas son los productos que se venden tanto en puntos de venta como en la aplicación móvil, están compuestas de\r\n artículos y toppings.\r\n
    A partir de la configuración se generarán todas las combinaciones de la receta.\r\n
    \r\n
    \r\n
    this.setState({ show_info: !this.state.show_info, show_info_equivalencias: false, show_info_clasificacion: false, show_info_end: false })}>\r\n
    \r\n

    1. Configuración

    \r\n
    \r\n
    \r\n
    \r\n

    \r\n En la sección de configuración, se define la familia,\r\n tipo receta, tipo sabor, tipo grano, tipo leche y presentación.\r\n Toda la información es requerida, en caso de no aplicar seleccione la opción Sin tipo.\r\n

    \r\n
    \r\n
    \r\n
    \r\n
    this.setState({ show_info_equivalencias: !this.state.show_info_equivalencias, show_info: false, show_info_clasificacion: false, show_info_end: false })}>\r\n
    \r\n

    2. Información Complementaria

    \r\n
    \r\n
    \r\n
    \r\n

    \r\n Clasificación del SAT: es la clasificación del producto ante el SAT\r\n

    \r\n

    \r\n Código del SAT: es el código de facturación a la venta del producto.\r\n

    \r\n

    \r\n Aplica IVA: al seleccionar esta opción se considera el IVA en el precio.\r\n

    \r\n

    \r\n Aplica en App Móvil: al seleccionar esta opción la receta estará disponible en la aplicación móvil.\r\n

    \r\n

    \r\n Aplica Regalo Bienvenida: al seleccionar esta opción la receta se configura como regalo de bienvenida.\r\n

    \r\n\r\n
    \r\n
    \r\n
    \r\n
    this.setState({ show_info_clasificacion: !this.state.show_info_clasificacion, show_info: false, show_info_end: false, show_info_equivalencias: false })}>\r\n
    \r\n

    3. Artículos y Toppings

    \r\n
    \r\n
    \r\n
    \r\n

    \r\n En esta sección debe seleccionar los artículos y toppings que\r\n aplicarán para todas las combinaciones de receta generadas.\r\n

    \r\n
    \r\n
    \r\n
    \r\n\r\n
    \r\n
    \r\n \r\n }\r\n\r\n \r\n
    \r\n );\r\n }\r\n}\r\n\r\nexport default NewRecipeMulti;\r\n","import React, { Component } from 'react';\r\nimport SearchForm from \"../../util/searchform/SearchForm\";\r\nimport TableTemplate from \"../../util/tabletemplate/TableTemplate\";\r\nimport NoItems from \"../../util/noitems/NoItems\";\r\nimport Modal from '../../util/modal/Modal';\r\nimport AcceptModal from '../../util/acceptModal/AcceptModal';\r\nimport Pagination from '../../util/pagination/Pagination';\r\nimport Loading from '../../util/loading/Loading';\r\nimport InventoryItemsAPI from '../../../services/InventoryItem';\r\nimport { toast } from 'react-toastify';\r\nimport ModoGuiado from \"../../modoGuiado/ModoGuiado\"\r\nimport BtnModoGuiado from '../../util/BtnModoGuiado/BtnModoGuiado'\r\nimport Select from 'react-select';\r\nimport CaffenioAPI from '../../../services/Warehouse';//Obtenemos los Drives\r\nimport Field from '../../util/field/Field';\r\nimport ErrorMessages from '../../../util/validation-error-messages';\r\nimport TextField from '../../util/textfield/TextField';\r\nimport lodash from 'lodash';\r\n\r\n\r\nclass Toppings extends Component {\r\n inventoryItems = [];\r\n\r\n constructor(props){\r\n super(props);\r\n this.state = {\r\n inventoryItems: [],\r\n pageInventoryItems: [],\r\n filterText: \"\",\r\n inventoryItem: null,\r\n showModal: false,\r\n editing: false,\r\n removeModal: false,\r\n isLoading: false,\r\n Caffenios: [],\r\n selectedOption: [],\r\n selectedOptionC: [],\r\n selectedOptionD: [],\r\n OptionSelect: [],\r\n OptionSelectCity: [],\r\n OptionSelectDrive: [],\r\n drivesArr: [],\r\n checkAll: false,\r\n updateMasive: false,\r\n confirmModalUpdatePrice: false,\r\n priceMassive: null,\r\n buttonSelectAll: false,\r\n selectedToppingsObjList: [],\r\n //modal para actualizar precio individualmente\r\n modalUpdatePrice:false,\r\n modalSeeToppingsExclude:false,\r\n LstDrivesExcluded:[],\r\n removeAllExcludedToppings:false\r\n }\r\n }\r\n\r\n componentWillMount(){\r\n\r\n /**\r\n * Obtenemos los drives para hacer el filtrado\r\n */\r\n this.setState({isLoading: true})\r\n CaffenioAPI.getCaffenios().then(response => {\r\n this.setState({\r\n Caffenios:response.data,\r\n optionState:this.select_state(response.data),\r\n optionCity:this.select_city(response.data),\r\n optionDrive:this.select_Drive(response.data)\r\n });\r\n\r\n return CaffenioAPI.getAll();\r\n\r\n }).then(response => {\r\n\r\n this.setState({isLoading:false,drivesArr:response.data});\r\n\r\n }).catch(err => {\r\n this.setState({isLoading: false})\r\n if(err.response)\r\n toast.error(err.response.data.Message)\r\n else\r\n toast.error(ErrorMessages.SinConexion)\r\n });\r\n\r\n this.setState({isLoading: true});\r\n /**\r\n * Obtenemos todos los toppings\r\n */\r\n InventoryItemsAPI.getAllToppings().then(response => {\r\n this.setState({inventoryItems: response.data, isLoading: false});\r\n this.inventoryItems = response.data;\r\n this.inventoryItems.map(item =>{\r\n item.statusCheck = false;\r\n })\r\n }).catch(err => {\r\n this.setState({isLoading: false})\r\n if(err.response)\r\n toast.error(err.response.data.Message)\r\n else\r\n toast.error(ErrorMessages.SinConexion)\r\n });\r\n }\r\n /**\r\n * Método encargado de recibir el texto en el input de búsqueda\r\n * y filtrar los elementos en la tabla\r\n */\r\n handleSearchInput = (text) => {\r\n let state = {...this.state};\r\n state.filterText = text;\r\n this.setState(state, () => this.FilterProcess());\r\n }\r\n\r\n remove = () => {\r\n this.setState({isLoading: true});\r\n\r\n // Llamar a la funcion para eliminar un topping de la lista de topppings\r\n InventoryItemsAPI.removeToppingFromPriceList(this.state.inventoryItem.InventoryItemId, this.state.inventoryItem.idListaPrecio).then(response => {\r\n\r\n let state = {...this.state};\r\n\r\n let inventoryItems = this.inventoryItems.filter(inventoryItem => {\r\n if(inventoryItem.InventoryItemId !== state.inventoryItem.InventoryItemId\r\n ||(inventoryItem.InventoryItemId === state.inventoryItem.InventoryItemId &&inventoryItem.idListaPrecio !== state.inventoryItem.idListaPrecio)){\r\n return inventoryItem;\r\n } }\r\n );\r\n state.inventoryItems = state.inventoryItems.filter(inventoryItem=>{\r\n if(inventoryItem.InventoryItemId !== state.inventoryItem.InventoryItemId\r\n || (inventoryItem.InventoryItemId === state.inventoryItem.InventoryItemId && inventoryItem.idListaPrecio !== state.inventoryItem.idListaPrecio)){\r\n return inventoryItem;\r\n }\r\n\r\n });\r\n this.inventoryItems = inventoryItems;\r\n\r\n state.isLoading = false;\r\n state.removeModal = false;\r\n state.inventoryItem = null;\r\n this.setState(state, () =>{ toast.success(\"Topping eliminado\")});\r\n }).catch(err => {\r\n if(err){\r\n this.setState({isLoading: false, inventoryItem: null, removeModal: false});\r\n if(err.response)\r\n toast.error(err.response.data.Message)\r\n else\r\n toast.error(ErrorMessages.SinConexion)\r\n }\r\n });\r\n }\r\n /**\r\n * Funcion para filtrar los articulos inventarios mediante\r\n * Estados, Ciudad y Drive\r\n */\r\n FilterProcess = () => {\r\n let state = {...this.state}\r\n let drivesArr = [...this.inventoryItems];\r\n let driveIds;\r\n\r\n //Obtenemos los id de los drives de la variable selectedOptionD\r\n if(state[\"selectedOptionD\"].length===0){\r\n driveIds = state[\"optionDrive\"].map(obj => {\r\n return obj.value;\r\n })\r\n } else{\r\n driveIds = state[\"selectedOptionD\"].map(obj => {\r\n return obj.value;\r\n })\r\n }\r\n\r\n //verificamos si es de una busqueda mediante nombre, nombre corto, lista de precio o PT\r\n if(state.filterText.trim() !== ''){\r\n drivesArr = drivesArr.filter(obj => {\r\n return (obj.Name.toLowerCase().includes(state.filterText.trim().toLowerCase()) ||\r\n obj.CodeProvider.toLowerCase().includes(state.filterText.trim().toLowerCase()) ||\r\n obj.ShortName.toLowerCase().includes(state.filterText.trim().toLowerCase()) ||\r\n obj.NombreListaPrecio.toLowerCase().includes(state.filterText.trim().toLowerCase()\r\n ))\r\n\r\n });\r\n }\r\n //Hacemos el filtrado mediante drives\r\n drivesArr = drivesArr.filter((obj2)=>{\r\n if(driveIds.filter((item)=>{\r\n return obj2.Drives.findIndex(idDrive => idDrive === item) !== -1\r\n }).length > 0){ return obj2 }\r\n })\r\n state.inventoryItems = drivesArr;\r\n\r\n state.inventoryItems.map(item=>{\r\n if(item.statusCheck){\r\n item.statusCheck = false;\r\n }\r\n });\r\n state.buttonSelectAll = false;\r\n state.selectedToppingsObjList = []\r\n\r\n this.setState(state);\r\n }\r\n /**\r\n * Obtiene las ciudades que iran en el select multi de Estado\r\n * @param {Object} Caffenios - Caffenios contiene toda la informacion de los drives\r\n */\r\n select_state(Caffenios) { // Llenar el combo 'Estados' con todas las opciones\r\n var newArray = [];\r\n let OptionSelect = [];\r\n var lookupObject = {};\r\n Caffenios.map((item) => {\r\n OptionSelect.push({value:item.StateId,label:item.State});\r\n });\r\n\r\n for(var i in OptionSelect) {\r\n lookupObject[OptionSelect[i][\"value\"]] = OptionSelect[i];\r\n }\r\n\r\n for(i in lookupObject) {\r\n newArray.push(lookupObject[i]);\r\n }\r\n\r\n return newArray;\r\n }\r\n /**\r\n * Obtiene las ciudades que iran en el select multi de ciudad\r\n * @param {Object} Caffenios - Caffenios contiene toda la informacion de los drives\r\n */\r\n select_city(Caffenios) { // Llenar el combo 'Ciudades' con todas las opciones\r\n var newArray = [];\r\n let OptionSelectCity = [];\r\n var lookupObject = {};\r\n Caffenios.map((item) => {\r\n OptionSelectCity.push({value:item.Municipalityid,label:item.Municipality});\r\n });\r\n\r\n for(var i in OptionSelectCity) {\r\n lookupObject[OptionSelectCity[i][\"value\"]] = OptionSelectCity[i];\r\n }\r\n\r\n for(i in lookupObject) {\r\n newArray.push(lookupObject[i]);\r\n }\r\n\r\n return newArray;\r\n }\r\n\r\n /**\r\n * Obtiene los drives que iran en el select multi de Drive\r\n * @param {Object} Caffenios - Caffenios - contiene toda la informacion de los drives\r\n */\r\n select_Drive(Caffenios) { // Llenar el combo 'Drives' con todas las opciones\r\n var newArray = [];\r\n let OptionSelectDrive = [];\r\n var lookupObject = {};\r\n Caffenios.map((item) => {\r\n OptionSelectDrive.push({value:item.idCaffenio,label:item.NombreNuevo});\r\n });\r\n\r\n for(var i in OptionSelectDrive) {\r\n lookupObject[OptionSelectDrive[i][\"value\"]] = OptionSelectDrive[i];\r\n }\r\n\r\n for(i in lookupObject) {\r\n newArray.push(lookupObject[i]);\r\n }\r\n\r\n return newArray;\r\n }\r\n\r\n /**\r\n * Nos elimina la informacion de los drives que hay duplicados\r\n * @param {Object} arr - contiene toda la informacion de los drives\r\n * @param {string} prop - Es una llave de un objeto\r\n */\r\n eliminarObjDuplicados = (arr,prop) => {\r\n var nuevoArray = [];\r\n var lookup = {};\r\n\r\n for (var i in arr) {\r\n lookup[arr[i][prop]] = arr[i];\r\n }\r\n\r\n for (i in lookup) {\r\n nuevoArray.push(lookup[i]);\r\n }\r\n\r\n return nuevoArray;\r\n }\r\n\r\n /**\r\n * Actualiza el objeto donde tenemos todas las ciudades, estados y drives seleccionadas\r\n * @param {Object} obj - contiene toda la informacion del select del estado\r\n */\r\n changeSelectEstado = (obj) => {\r\n let state = {...this.state}\r\n state[\"selectedOption\"] = obj;\r\n let idEstado = obj.map(estado => {return estado.value});\r\n let objCaffenios = [...state.Caffenios];\r\n let listaCiudades = [];\r\n let listaDrives = [];\r\n\r\n // Recorrer objeto Caffenios y encontrar coincidencias sin eliminar duplicados\r\n objCaffenios.map(item =>{\r\n for(var i=0; i {return ciudad.value});\r\n\r\n //Se buscan coincidencias entre ciudad y drive y se genera la lista de drives\r\n objCaffenios.map(item =>{\r\n for(var i=0; i this.FilterProcess());\r\n }\r\n /**\r\n * Actualiza el objeto donde tenemos todas las ciudades y drives seleccionadas\r\n * @param {Object} obj - Contiene toda la informacion del select ciudad\r\n */\r\n changeSelectCiudad = (obj) =>{\r\n let state = {...this.state}\r\n let idCiudad = obj.map(ciudad => {return ciudad.value});\r\n let objCaffenios = [...state.Caffenios];\r\n let listaDrives = [];\r\n\r\n //Se buscan coincidencias entre ciudad y drive y se genera la lista de drives\r\n objCaffenios.map(item =>{\r\n for(var i=0; i0){\r\n state[\"selectedOptionC\"] = obj;\r\n state[\"optionDrive\"] = listaDrives;\r\n this.setState(state, () => this.FilterProcess());\r\n } else{\r\n this.changeSelectEstado(state[\"selectedOption\"]);\r\n }\r\n }\r\n\r\n /**\r\n * Actualiza el objeto donde tenemos todos los drives seleccionados\r\n * @param {Object} obj - Contiene toda la informacion del select drive\r\n */\r\n changeSelectDrive = (obj) =>{\r\n let state = {...this.state};\r\n let Caffenios = [...state.Caffenios];\r\n\r\n //Valida cada select (Estados,Ciudades,Drives) y realiza la acción correspondiente\r\n if(obj.length>0){\r\n state[\"selectedOptionD\"] = obj;\r\n //state[\"optionDrive\"] = obj;\r\n this.setState(state, () => this.FilterProcess());\r\n } else if(state[\"selectedOptionC\"].length===0){\r\n this.changeSelectEstado(state[\"selectedOption\"]);\r\n } else if(state[\"selectedOptionC\"].length===0 && state[\"selectedOption\"].length===0){\r\n this.select_Drive(Caffenios);\r\n } else{\r\n this.changeSelectCiudad(state[\"selectedOptionC\"]);\r\n }\r\n }\r\n\r\n /*\r\n * Funcion seleccionar o des seleccionar todos las recetas\r\n * de la pagina actual.\r\n */\r\n selectAllCheckBoxPage = () => {\r\n let _checkAll = !this.state.checkAll\r\n let _selectedToppingsObjList = [...this.state.selectedToppingsObjList]\r\n let _pageToppings = this.state.pageInventoryItems\r\n console.log(_selectedToppingsObjList)\r\n _pageToppings.forEach(topping => {\r\n let indexTopping = _selectedToppingsObjList.findIndex(item => item === String(topping.InventoryItemId) + \"-\" + String(topping.idListaPrecio) + \"-\" + String(topping.idDrive))\r\n topping.statusCheck = _checkAll\r\n if(_checkAll){\r\n if(indexTopping === -1) _selectedToppingsObjList.push(String(topping.InventoryItemId) + \"-\" + String(topping.idListaPrecio) + \"-\" + String(topping.idDrive))\r\n }else{\r\n if(indexTopping !== -1) _selectedToppingsObjList.splice(indexTopping, 1)\r\n }\r\n })\r\n\r\n this.setState({\r\n selectedToppingsObjList: _selectedToppingsObjList,\r\n updateMasive: _selectedToppingsObjList.length > 0,\r\n checkAll: _checkAll,\r\n buttonSelectAll: _selectedToppingsObjList.length === this.state.inventoryItems.length\r\n })\r\n }\r\n /*\r\n * Funcion para saber si hay que mostrar\r\n * un switch y boton para aplicar cambios a las\r\n * recetas que hemos marcado.\r\n */\r\n showView = (index) => {\r\n // Utilizar indice compuesto InventoryItemId + \"-\" + idListaPrecio\r\n let _selectedToppingsObjList = [...this.state.selectedToppingsObjList];\r\n let indexTopping = this.state.selectedToppingsObjList.findIndex(id => id === String(this.state.pageInventoryItems[index].InventoryItemId) + \"-\" + String(this.state.pageInventoryItems[index].idListaPrecio))\r\n if (indexTopping === -1) {\r\n _selectedToppingsObjList.push(String(this.state.pageInventoryItems[index].InventoryItemId) + \"-\" + String(this.state.pageInventoryItems[index].idListaPrecio) + \"-\" + String(this.state.pageInventoryItems[index].idDrive))\r\n } else {\r\n _selectedToppingsObjList.splice(indexTopping, 1)\r\n }\r\n\r\n let counter = 0; // variable para comparar los elementos seleccionados en la pagina con la cantidad de elementos por pagina\r\n this.state.pageInventoryItems.map(obj => {\r\n if (obj.statusCheck) counter++\r\n })\r\n\r\n this.setState({\r\n selectedToppingsObjList: _selectedToppingsObjList,\r\n updateMasive: _selectedToppingsObjList.length > 0,\r\n buttonSelectAll: _selectedToppingsObjList.length === this.state.inventoryItems.length,\r\n checkAll: counter === this.state.pageInventoryItems.length\r\n })\r\n }\r\n /*\r\n * Funcion que selecciona o des selecciona todas las\r\n * recetas de todas las paginas.\r\n */\r\n selectAllCheckBox = () => {\r\n let _selectedToppingsObjList = [...this.state.selectedToppingsObjList]\r\n let _toppings = this.state.inventoryItems\r\n let _buttonSelectAll = !this.state.buttonSelectAll;\r\n console.log(_toppings)\r\n _toppings.forEach(topping => {\r\n // Ver si el elemento ya esta en la lista de seleccioandos\r\n let indexTopping = _selectedToppingsObjList.findIndex(item => item === String(topping.InventoryItemId) + \"-\" + String(topping.idListaPrecio) + \"-\" + String(topping.idDrive))\r\n\r\n // Meter el elemento a la lista si no estaba previamente\r\n if (_buttonSelectAll && indexTopping === -1) {\r\n _selectedToppingsObjList.push(String(topping.InventoryItemId) + \"-\" + String(topping.idListaPrecio) + \"-\" + String(topping.idDrive))\r\n // Sacar al elemento de la lista si ya estaba\r\n } else if (!_buttonSelectAll && indexTopping !== -1) {\r\n _selectedToppingsObjList.splice(indexTopping, 1)\r\n }\r\n topping.statusCheck = _buttonSelectAll;\r\n })\r\n\r\n let _checkAll = _buttonSelectAll;\r\n\r\n this.setState({\r\n selectedToppingsObjList: _selectedToppingsObjList,\r\n updateMasive: _selectedToppingsObjList.length > 0,\r\n checkAll: _checkAll,\r\n buttonSelectAll: _buttonSelectAll\r\n })\r\n }\r\n\r\n /**\r\n * Funcion para actualizar masivamente el precio\r\n * de las recetas seleccionadas.\r\n */\r\n updateMasive = () => {\r\n this.setState({isLoading: true, confirmModalUpdatePrice:false});\r\n let toppings = [];\r\n\r\n // Guardamos todas las recestas seleccionadas\r\n this.state.selectedToppingsObjList.map(obj => {\r\n let indiceCompuesto = obj.split(\"-\");\r\n let inventoryItemId = indiceCompuesto[0];\r\n let priceListId = indiceCompuesto[1];\r\n toppings.push({\r\n ToppingPrice: this.state.priceMassive,\r\n PriceListId: priceListId,\r\n InventoryItemId: inventoryItemId\r\n })\r\n })\r\n\r\n //Mandamos las recetas al endpoint\r\n InventoryItemsAPI.setAllPriceToppings(toppings).then(response => {\r\n let state = {...this.state};\r\n this.updateTable(this.state.priceMassive);\r\n //state.showModal = false;\r\n state.isLoading = false;\r\n state.priceMassive = 0;\r\n state.updateMasive = false;\r\n state.checkAll = false\r\n if(state.buttonSelectAll) {\r\n state.buttonSelectAll = false;\r\n }\r\n state.selectedToppingsObjList = [];\r\n this.setState(state, () => {\r\n toast.success(\"Precios actualizados correctamente\");\r\n });\r\n }).catch(err => {\r\n let state = {...this.state};\r\n state.showModal = false;\r\n state.isLoading = false;\r\n this.setState(state);\r\n toast.error(\"Ocurrió un error al actualizar los precios\");\r\n });\r\n\r\n }\r\n\r\n ExcludeSelectedToppings = () => {\r\n // this.setState({isLoading: true, confirmModalUpdatePrice:false});\r\n let toppings = [];\r\n\r\n // Guardamos todas las recestas seleccionadas\r\n this.state.selectedToppingsObjList.map(obj => {\r\n let indiceCompuesto = obj.split(\"-\");\r\n let inventoryItemId = indiceCompuesto[0];\r\n let priceListId = indiceCompuesto[1];\r\n let DriveId = indiceCompuesto[2] != null ? Number.parseInt(indiceCompuesto[2]) : null;\r\n toppings.push({\r\n ToppingPrice: 0,\r\n PriceListId: priceListId,\r\n InventoryItemId: inventoryItemId,\r\n idCaffenio: DriveId\r\n })\r\n })\r\n //Mandamos las recetas al endpoint\r\n this.setState({isLoading:true})\r\n InventoryItemsAPI.ExcludeToppings(toppings).then(response => {\r\n let state = {...this.state};\r\n state.isLoading = false;\r\n state.updateMasive = false;\r\n state.checkAll = false\r\n state.confirmModalUpdateExcludeToppings = false\r\n if(state.buttonSelectAll) {\r\n state.buttonSelectAll = false;\r\n }\r\n state.selectedToppingsObjList = [];\r\n state.filterText = ''\r\n state.selectedOption = []\r\n state.selectedOptionC = []\r\n state.selectedOptionD = []\r\n this.setState(state, () => {\r\n toast.success(\"Toppings excluidos correctamente\");\r\n });\r\n return InventoryItemsAPI.getAllToppings()\r\n }).then(response => {\r\n this.setState({inventoryItems: response.data, isLoading: false});\r\n this.inventoryItems = response.data;\r\n this.inventoryItems.map(item =>{\r\n item.statusCheck = false;\r\n })\r\n })\r\n .catch(err => {\r\n let state = {...this.state};\r\n state.isLoading = false;\r\n state.confirmModalUpdateExcludeToppings = false\r\n this.setState(state);\r\n toast.error(\"Ocurrió un error al excluir toppings los precios\");\r\n });\r\n\r\n }\r\n\r\n /**\r\n * Función que actualiza el precio de un toping para una lista de precio\r\n */\r\n updateIndividual = () => {\r\n if(!this.state.priceMassive || this.state.priceMassive === 0){\r\n toast.dismiss()\r\n toast.error(\"El precio es un campo requerido.\")\r\n return;\r\n }\r\n this.setState({isLoading:true}, ()=>{\r\n let toppings = [];\r\n toppings.push({\r\n ToppingPrice: this.state.priceMassive,\r\n PriceListId: this.state.inventoryItem.idListaPrecio,\r\n InventoryItemId: this.state.inventoryItem.InventoryItemId\r\n });\r\n\r\n InventoryItemsAPI.setAllPriceToppings(toppings).then(response => {\r\n let state = {...this.state};\r\n\r\n this.inventoryItems.map(item => {\r\n if(item.idListaPrecio === state.inventoryItem.idListaPrecio\r\n && item.InventoryItemId === state.inventoryItem.InventoryItemId){\r\n item.PrecioVenta = state.priceMassive\r\n }\r\n return item;\r\n });\r\n state.inventoryItems.map(item => {\r\n if(item.idListaPrecio === state.inventoryItem.idListaPrecio\r\n && item.InventoryItemId === state.inventoryItem.InventoryItemId){\r\n item.PrecioVenta = state.priceMassive\r\n }\r\n return item;\r\n });\r\n state.pageInventoryItems.map(item => {\r\n if(item.idListaPrecio === state.inventoryItem.idListaPrecio\r\n && item.InventoryItemId === state.inventoryItem.InventoryItemId){\r\n item.PrecioVenta = state.priceMassive\r\n }\r\n return item;\r\n });\r\n\r\n state.isLoading=false;\r\n state.priceMassive= null;\r\n state.modalUpdatePrice= false;\r\n state.inventoryItem = null;\r\n this.setState(state, () => {\r\n toast.dismiss()\r\n toast.success(\"Precios actualizado correctamente\");\r\n });\r\n }).catch(err => {\r\n this.setState({isLoading:false});\r\n toast.error(\"Ocurrió un error al actualizar\");\r\n });\r\n\r\n })\r\n }\r\n\r\n\r\n /**\r\n * Funcion para validar la entrada de datos en el input\r\n * que modifica todos los precios de las recetas\r\n * selecionadas.\r\n */\r\n handleChange = (e) => {\r\n let state = {...this.state};\r\n state.priceMassive = e.target.value;\r\n\r\n if (e.target.value == Math.floor(e.target.value)) {\r\n if(e.target.value < 0 || e.target.value > 9999999) {\r\n toast.error(\"El Precio debe ser mayor a 0 y menor a 9999999\");\r\n return;\r\n }\r\n } else {\r\n if ( !this.isNumericDecimal(e.target.value, 2) ) {\r\n toast.error(\"El Precio debe contenedor dos decimales solamente\");\r\n return;\r\n }else if(e.target.value < 0.00 || e.target.value > 9999999.99) {\r\n toast.error(\"El Precio debe ser mayor a 0.00 y menor a 9999999.99\");\r\n return;\r\n }\r\n }\r\n this.setState(state);\r\n }\r\n\r\n /**\r\n * Checa si es decimal un numero\r\n * @param {strin} val - precio a actualizar\r\n * @param {int} decimalPlaces - numero de decimales\r\n */\r\n isNumericDecimal = (val, decimalPlaces) => {\r\n // If the last digit is a . then add a 0 before testing so if they type 25. it will be accepted\r\n var lastChar = val.substring(val.length - 1);\r\n if (lastChar == \".\") val = val + \"0\";\r\n\r\n var objRegExp = new RegExp(\"^\\\\s*-?(\\\\d+(\\\\.\\\\d{1,\" + decimalPlaces + \"})?|\\\\.\\\\d{1,\" + decimalPlaces + \"})\\\\s*$\", \"g\");\r\n if (decimalPlaces == -1)\r\n objRegExp = new RegExp(\"^\\\\s*-?(\\\\d+(\\\\.\\\\d{1,25})?|\\\\.\\\\d{1,25})\\\\s*$\", \"g\");\r\n\r\n return objRegExp.test(val);\r\n };\r\n\r\n /**\r\n * Actualiza el objeto donde tenemos todos los drives seleccionados\r\n * @param {Object} obj - Contiene toda la informacion del select drive\r\n */\r\n updateTable = (precioVenta)=>{\r\n let state = {...this.state};\r\n this.state.inventoryItems.map(item=>{\r\n if(item.statusCheck){\r\n item.statusCheck = false;\r\n item.PrecioVenta = precioVenta;\r\n }\r\n });\r\n this.setState(state);\r\n }\r\n\r\n ShowModalToppingsExclude = (model) => {\r\n this.setState({isLoading:true})\r\n InventoryItemsAPI.GetAllDrivesExcluded(model.InventoryItemId).then(response => {\r\n let state = {...this.state};\r\n state.isLoading = false;\r\n state.modalSeeToppingsExclude = true\r\n state.LstDrivesExcluded = response.data\r\n this.setState(state);\r\n }).catch(err => {\r\n let state = {...this.state};\r\n state.isLoading = false;\r\n this.setState(state);\r\n toast.error(\"Ocurrió un error al cargar la información\");\r\n });\r\n // this.setState({modalSeeToppingsExclude:true, isLoading:true})\r\n }\r\n\r\n \r\n RemoveAllExcludeToppings = (lstDrives, removeAll) => {\r\n // this.setState({isLoading: true, confirmModalUpdatePrice:false});\r\n let toppings = [];\r\n this.setState({isLoading:true, removeAllExcludedToppings: removeAll})\r\n InventoryItemsAPI.RemoveExcludeToppings(lstDrives).then(response => {\r\n let state = {...this.state};\r\n // state.isLoading = false;\r\n state.modalSeeToppingsExclude = false;\r\n this.setState(state, () => {\r\n toast.success(\"Se guardó correctamente\");\r\n });\r\n return InventoryItemsAPI.getAllToppings()\r\n }).then(response => {\r\n let state = {...this.state};\r\n \r\n state.selectedToppingsObjList = [];\r\n state.filterText = ''\r\n state.selectedOption = []\r\n state.selectedOptionC = []\r\n state.selectedOptionD = []\r\n state.inventoryItem = response.data\r\n state.isLoading = false\r\n\r\n state.LstDrivesExcluded.forEach((item)=>{\r\n let objInventory = state.inventoryItems.find((i)=> i.InventoryItemId === item.idArticuloInventario && i.idDrive === item.idCaffenio);\r\n objInventory.ToppingExcluido = null;\r\n })\r\n\r\n state.LstDrivesExcluded = [];\r\n\r\n this.setState(state);\r\n this.inventoryItems = response.data;\r\n this.inventoryItems.map(item =>{\r\n item.statusCheck = false;\r\n })\r\n })\r\n .catch(err => {\r\n let state = {...this.state};\r\n state.isLoading = false;\r\n this.setState(state);\r\n toast.error(\"Ocurrió un error al eliminar la restricción de toppings\");\r\n });\r\n\r\n }\r\n\r\n RemoveSingleExcludeToppings = (lstDrives) => {\r\n // this.setState({isLoading: true, confirmModalUpdatePrice:false});\r\n debugger;\r\n let toppings = [];\r\n this.setState({isLoading:true})\r\n InventoryItemsAPI.RemoveExcludeToppings(lstDrives).then(response => {\r\n let state = {...this.state};\r\n let itemRemoved = lstDrives[0]\r\n let newList = [];\r\n \r\n state.LstDrivesExcluded.forEach((item)=>{\r\n if(item.idArticuloInventario !== itemRemoved.idArticuloInventario){\r\n if(item.idCaffenio === itemRemoved.idCaffenio){\r\n newList.push(item)\r\n }\r\n }else{\r\n if(item.idCaffenio !== itemRemoved.idCaffenio){\r\n newList.push(item)\r\n }\r\n }\r\n })\r\n state.isLoading = false;\r\n state.LstDrivesExcluded = newList\r\n\r\n let objInventory = state.inventoryItems.find((i)=> i.InventoryItemId === itemRemoved.idArticuloInventario && i.idDrive === itemRemoved.idCaffenio);\r\n objInventory.ToppingExcluido = null;\r\n\r\n this.setState(state, () => {\r\n toast.success(\"Se guardó correctamente\");\r\n });\r\n }).catch(err => {\r\n let state = {...this.state};\r\n state.isLoading = false;\r\n this.setState(state);\r\n toast.error(\"Ocurrió un error al eliminar la restricción de toppings\");\r\n });\r\n\r\n }\r\n\r\n render() {\r\n return (\r\n
    \r\n\r\n \r\n\r\n

    Toppings

    \r\n
    \r\n
    \r\n
    \r\n
    \r\n \r\n
    \r\n this.handleSearchInput(t)}\r\n itemName={'por Nombre/Nombre Corto/Código PT'}\r\n placeholderText={\"Ingrese nombre o nombre corto de topping\"}\r\n />\r\n
    \r\n
    \r\n
    \r\n \r\n
    \r\n \"No hay opciones\"}\r\n options={lodash.sortBy(this.state.optionState, [ts => ts.label.toLowerCase()], ['asc'])}\r\n />\r\n
    \r\n
    \r\n
    \r\n \r\n
    \r\n \"No hay opciones\"}\r\n options={lodash.sortBy(this.state.optionCity, [ts => ts.label.toLowerCase()], ['asc']) }\r\n />\r\n
    \r\n
    \r\n
    \r\n \r\n
    \r\n \"No hay opciones\"}\r\n options={lodash.sortBy(this.state.optionDrive, [ts => ts.label.toLowerCase()], ['asc'])}\r\n />\r\n
    \r\n
    \r\n
    \r\n
    \r\n
    \r\n
    \r\n {/*Mostramos cuando el usuario ha seleccionado un checkbox*/}\r\n {\r\n this.state.updateMasive &&\r\n
    \r\n
    \r\n
    \r\n
    \r\n \r\n
    \r\n this.setState({confirmModalUpdateExcludeToppings:true})}>\r\n Excluir toppings\r\n \r\n
    \r\n
    \r\n
    \r\n \r\n this.handleChange(e)}\r\n />\r\n \r\n
    \r\n
    \r\n
    \r\n this.setState({confirmModalUpdatePrice:true})}>\r\n Aplicar\r\n \r\n
    \r\n
    \r\n
    \r\n
    \r\n\r\n
    \r\n }\r\n
    \r\n\r\n\r\n
    \r\n
    \r\n {this.state.inventoryItems.length !== 0\r\n ?\r\n
    \r\n\r\n \r\n\r\n this.setState({modalUpdatePrice: true, inventoryItem: inventoryItem})}\r\n canEdit canDelete\r\n edit={(inventoryItem) => this.setState({modalUpdatePrice: true, inventoryItem: inventoryItem})}\r\n remove={(inventoryItem) => this.setState({removeModal: true, inventoryItem: inventoryItem})}\r\n checkbox = {true}\r\n checkAll= {this.state.checkAll}\r\n selectAllCheck={this.selectAllCheckBoxPage}\r\n showView={this.showView}\r\n extraButtons={(row) => {\r\n return (\r\n row.ToppingExcluido != null &&\r\n
    \r\n \r\n
    \r\n )\r\n }}\r\n />\r\n
    \r\n\r\n : }\r\n {\r\n let checkAllTemp = true;\r\n let cheked = false;\r\n\r\n inventoryItems.map(item => {\r\n if(item.statusCheck){\r\n cheked = true;\r\n } else {\r\n checkAllTemp = false;\r\n }\r\n })\r\n\r\n this.setState({ pageInventoryItems: inventoryItems, checkAll: checkAllTemp, updateMasive: this.state.selectedToppingsObjList.length > 0 })\r\n }\r\n }\r\n />\r\n
    \r\n
    \r\n {this.state.showModal &&\r\n this.setState({showModal: false, unit: null})}\r\n >\r\n \r\n }\r\n {this.state.removeModal && this.remove()}\r\n cancel={() => this.setState({removeModal: false})}\r\n modalTitle={\"Eliminar Artículo Inventario\"}\r\n modalBody={\"ESTA ACCIÓN ELIMINARÁ TODAS LAS INSTANCIAS DEL TOPPING\"}\r\n />}\r\n\r\n {this.state.confirmModalUpdatePrice && this.updateMasive()}\r\n cancel={() => this.setState({confirmModalUpdatePrice: false})}\r\n modalTitle={\"Desea cambiar el precio a estos toppings?\"}\r\n />}\r\n\r\n {this.state.confirmModalUpdateExcludeToppings && this.ExcludeSelectedToppings()}\r\n cancel={() => this.setState({confirmModalUpdateExcludeToppings: false})}\r\n modalTitle={\"Desea excluir los toppings de los siguientes drives?\"}\r\n />}\r\n\r\n {this.state.modalUpdatePrice &&\r\n this.updateIndividual()}\r\n modalTitle={`Cambio de precio`}\r\n cancel={() => this.setState({ modalUpdatePrice: false, inventoryItem: null, priceMassive:null})}\r\n modalBody={\r\n
    \r\n this.handleChange(e)}\r\n onKeyPress= {(event) => {\r\n const keyCode = event.keyCode || event.which;\r\n const keyValue = String.fromCharCode(keyCode);\r\n if (/\\+|-|e|E|\\./.test(keyValue) || event.target.value.length >= event.target.getAttribute('maxLength'))\r\n event.preventDefault();\r\n }\r\n }/>\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n
    \r\n\r\n }\r\n />\r\n }\r\n {this.state.modalSeeToppingsExclude &&\r\n 0 ? this.state.LstDrivesExcluded[0].Topping : ''}`}\r\n cancel={() => this.setState({ modalSeeToppingsExclude: false})}\r\n modalBody={\r\n
    \r\n
    \r\n
    \r\n {\r\n this.RemoveAllExcludeToppings(this.state.LstDrivesExcluded)\r\n }\r\n }\r\n >\r\n Eliminar todos\r\n \r\n
    \r\n
    \r\n {\r\n let lstD =[]\r\n lstD.push(inventoryItem)\r\n this.RemoveSingleExcludeToppings(lstD)\r\n }\r\n }\r\n />\r\n
    \r\n }\r\n />\r\n }\r\n\r\n \r\n\r\n \r\n\r\n
    \r\n );\r\n }\r\n}\r\n\r\nexport default Toppings;\r\n","import React, { Component } from 'react'\r\nimport PropTypes from 'prop-types';\r\n\r\nexport default class FieldAddons extends Component {\r\n\r\n static propTypes = {\r\n isHorizontal: PropTypes.bool,\r\n label: PropTypes.string,\r\n showTooltip: PropTypes.bool,\r\n textTooltip: PropTypes.string,\r\n addons: PropTypes.arrayOf(PropTypes.object)\r\n }\r\n\r\n static defaultProps = {\r\n isHorizontal: false,\r\n label: \"\",\r\n showTooltip: false,\r\n textTooltip: '',\r\n addons: [{}]\r\n }\r\n\r\n render() { \r\n return (\r\n
    0 ? \"has-addons\" : \"\"} ${this.props.isHorizontal ? \"FieldHorizontal is-horizontal\" : \"has-text-centered\"} ${this.props.showTooltip ? 'tooltip' : '' } `} data-tooltip= {this.props.textTooltip}> \r\n {this.props.label !== \"\" &&\r\n \r\n
    \r\n \r\n
    \r\n }\r\n \r\n

    \r\n {this.props.children}\r\n

    \r\n

    \r\n \r\n \r\n \r\n \r\n \r\n

    \r\n \r\n
    \r\n )\r\n }\r\n}\r\n","import * as React from 'react';\r\nimport FieldAddons from '../../../util/field/Field+Addons';\r\n\r\nclass BuscarSegmentacion extends React.Component {\r\n\r\n timer = null;\r\n propName = null\r\n\r\n constructor(props){\r\n super(props);\r\n this.state = {\r\n fetching: false,\r\n nameSearch: \"\"\r\n }\r\n this.propName = this.props.name;\r\n }\r\n\r\n // Se registra un escuchador del input de tipo Search\r\n componentDidMount(){\r\n document.addEventListener(\"search\", (e) => {\r\n this.setState({nameSearch: e.target.value}, () => {\r\n this.props.search(e.target.value);\r\n })\r\n \r\n }, false);\r\n\r\n }\r\n // Se elimina el escuchador.\r\n componentWillUnmount(){\r\n document.removeEventListener(\"search\", () => {}, false);\r\n }\r\n\r\n render(){\r\n // Manipulación del nombre recibido por props en caso de ser necesario la restauración de búsqueda y página actual en tabla\r\n if (this.propName && this.state.nameSearch !== this.propName){\r\n this.setState({nameSearch: this.propName}, () => this.propName = null)\r\n }\r\n return (\r\n
    \r\n
    \r\n
    \r\n
    \r\n
    \r\n
    \r\n

    \r\n \r\n {\r\n let nameSearch = {...this.state.nameSearch};\r\n nameSearch = e.currentTarget.value;\r\n nameSearch = nameSearch.replace(/\\s{2,}/g, ' ');\r\n // Se elimina el timer en caso de que el usuario siga tecleando\r\n if (this.timer) clearTimeout(this.timer);\r\n this.setState({nameSearch: nameSearch}, () => {\r\n // Cuando el usuario termina de escribir se hace la petición de búsqueda\r\n this.timer = setTimeout(() => this.props.search(nameSearch), 500);\r\n });\r\n }}\r\n />\r\n \r\n

    \r\n

    \r\n \r\n

    \r\n

    \r\n \r\n

    \r\n
    \r\n \r\n
    \r\n
    \r\n
    \r\n
    \r\n
    \r\n )\r\n }\r\n}\r\n\r\n// Props por default del componente\r\nBuscarSegmentacion.defaultProps = {\r\n estados: [],\r\n ciudades: [],\r\n rangoEdades: [],\r\n generos: [],\r\n nivelesLealtad: [],\r\n horarios: [],\r\n diasSemana: [],\r\n clasificaciones: [],\r\n temperaturas: []\r\n}\r\n\r\nexport default BuscarSegmentacion;","import React from 'react';\r\n\r\n//Componente para manejo de paginación de lado del Servidor.\r\nclass ServerPagination extends React.Component {\r\n constructor(props){\r\n super(props);\r\n \r\n this.state = {\r\n totalPages: 0,\r\n currentPage: 0\r\n }\r\n }\r\n\r\n componentDidUpdate(prevProps) {\r\n if(this.props.currentPage !== this.state.currentPage || this.props.totalPages !== this.state.totalPages){\r\n this.setState({currentPage: this.props.currentPage, totalPages: this.props.totalPages});\r\n }\r\n }\r\n\r\n render(){\r\n if(this.state.totalPages <= 1) return null;\r\n\r\n return (\r\n
    \r\n \r\n
    \r\n )\r\n }\r\n}\r\n\r\nexport default ServerPagination;","import * as React from 'react';\r\nimport * as moment from 'moment';\r\nimport ServerPagination from '../../../util/pagination/ServerPagination';\r\nimport NoItems from '../../../util/noitems/NoItems';\r\nimport Loading from '../../../util/loading/Loading';\r\n// Conversión de fechas de moment a español\r\nrequire('moment/locale/es');\r\n\r\nexport default class TablaSegmentaciones extends React.Component {\r\n\r\n // Encabezado de columnas en tabla\r\n columnas = [\"Nombre\", \"Fecha creación\", \"Última actualización\", \"Estatus\", \"#Clientes\", \"Segmento\", \"Tipo\", \"Acciones\"]\r\n\r\n constructor(props){\r\n super(props);\r\n this.state = {\r\n totalPages: 0,\r\n currentPage: 0,\r\n loading: false\r\n }\r\n }\r\n\r\n // En caso de que las props cambien, verificamos que son por un cambio de la página actual o \r\n // el total de páginas (ocasionado por una búsqueda)\r\n componentDidUpdate(prevProps) {\r\n if(this.props.currentPage !== this.state.currentPage || this.props.totalPages !== this.state.totalPages){\r\n this.setState({currentPage: this.props.currentPage, totalPages: this.props.totalPages});\r\n }\r\n\r\n if(this.props.loading != this.state.loading){\r\n this.setState({loading: this.props.loading});\r\n }\r\n }\r\n\r\n render(){\r\n\r\n return (\r\n
    \r\n
    \r\n {this.props.segmentaciones.length > 0 ? \r\n \r\n {this.columnas.map(c => )}\r\n \r\n \r\n {this.props.segmentaciones.map((row, index) => {\r\n return (\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n {this.actions(row)}\r\n \r\n )\r\n })}\r\n \r\n
    {c}
    {row.Name} {/*row.IdTipoSegmentacion != 2 ? null : ()*/}{moment(row.CreationDate).format('DD/MM/YY HH:mm')}{moment(row.UpdateDate).format('DD/MM/YY HH:mm')}\r\n { }}\r\n />\r\n {row.TotalClients}{row.NombreSegmento}{row.IdTipoSegmentacion != 2 ? (\"Filtro\") : (\"Archivo\")}
    : this.state.loading ? : } \r\n \r\n
    \r\n
    \r\n )\r\n }\r\n\r\n actions = (segmentacion) => {\r\n\r\n const segmentacionVisible = segmentacion.IdTipoSegmentacion === 2;\r\n\r\n return (\r\n \r\n {segmentacionVisible ? null : (\r\n \r\n )}\r\n \r\n \r\n\r\n \r\n {segmentacionVisible ? null : (\r\n \r\n )}\r\n \r\n\r\n \r\n\r\n \r\n )\r\n \r\n }\r\n}","import { apiUrl } from \"../../constants\";\r\nimport axios from 'axios';\r\nimport middleware from '../../middleware/auth';\r\n\r\nvar request = axios.create({\r\n baseURL: apiUrl,\r\n headers: {'Authorization': 'Bearer ' + localStorage.getItem('token'),'Content-Type':'application/json'}\r\n})\r\n\r\nvar requestfile = axios.create({\r\n responseType: 'blob',\r\n baseURL: apiUrl,\r\n headers: {'Authorization': 'Bearer ' + localStorage.getItem('token'),'Content-Type':'application/json'}\r\n})\r\nexport default class SegmentacionAPI {\r\n \r\n\r\n static getEstados() {\r\n return middleware.hasAuth(() => request.get(`/Segmentation/Filter/States/`));\r\n }\r\n\r\n static getEstadosPorSegmentacion(idSegmento) {\r\n return middleware.hasAuth(() => request.get(`/Segmentation/Filter/States/${idSegmento}`));\r\n }\r\n\r\n static GetCiudades(estados) {\r\n let body = {States: estados}\r\n return middleware.hasAuth(() => request.post(`/Segmentation/Filter/Cities/`, body));\r\n }\r\n\r\n static templateExcel(){\r\n return middleware.hasAuth(() => requestfile.get(`/Segmentation/Excel/Template`));\r\n }\r\n\r\n static validateExcel(file){\r\n var fd = new FormData();\r\n fd.append(\"Excel\", file);\r\n return middleware.hasAuth(() => request.post(`/Segmentacion/ValidateExcel`, fd));\r\n }\r\n\r\n static validateExcelBySegment(file, segment){\r\n var fd = new FormData();\r\n fd.append(\"Excel\", file);\r\n return middleware.hasAuth(() => request.post(`/Segmentacion/ValidateExcel/${segment}`, fd));\r\n }\r\n\r\n static createFile(validate) {\r\n let body = validate\r\n return middleware.hasAuth(() => request.post(`/Segmentation/Excel/CreateFile`, body));\r\n }\r\n\r\n static getRangoEdades() {\r\n return middleware.hasAuth(() => request.get(`/Segmentation/Filter/RangeAge/`));\r\n }\r\n\r\n static getGeneros() {\r\n return middleware.hasAuth(() => request.get(`/Segmentation/Filter/Gender/`));\r\n }\r\n\r\n static getNivelesLealtad() {\r\n return middleware.hasAuth(() => request.get(`/Segmentation/Filter/TypeLoyaltyAccount/`));\r\n }\r\n\r\n static getNivelesLealtadPorSegmento(idSegmento) {\r\n return middleware.hasAuth(() => request.get(`/Segmentation/Filter/TypeLoyaltyAccount/${idSegmento}`));\r\n }\r\n\r\n static getHorarios() {\r\n return middleware.hasAuth(() => request.get(`/Segmentation/Filter/PurchaseSchedule/`));\r\n }\r\n\r\n static getDiasSemana() {\r\n return middleware.hasAuth(() => request.get(`/Segmentation/Filter/PurchaseDay/`));\r\n }\r\n\r\n static getFamilias() {\r\n return middleware.hasAuth(() => request.get(`/Segmentation/Filter/FamilyProduct/`));\r\n }\r\n\r\n static getFamiliasPorSegmentacion(idSegmento) {\r\n return middleware.hasAuth(() => request.get(`/Segmentation/Filter/FamilyProduct/${idSegmento}`));\r\n }\r\n\r\n static getTemperaturas(idFilterFamilyProduct) {\r\n return middleware.hasAuth(() => request.get(`/Segmentation/Filter/TypeProduct?idFilterFamilyProduct=${idFilterFamilyProduct}`));\r\n }\r\n\r\n static getSegmentaciones(name = \"\", page = 1){\r\n return middleware.hasAuth(() => request.get(`Segmentation?name=${name}&page=${page}`));\r\n }\r\n\r\n static getSegmentacion(id){\r\n return middleware.hasAuth(() => request.get(`Segmentation/${id}`));\r\n }\r\n\r\n static getMembresias() {\r\n return middleware.hasAuth(() => request.get(`/Segmentation/Filter/TypeMemberships/`));\r\n }\r\n\r\n static createSegmentacion(segmentacion){\r\n return middleware.hasAuth(() => request.post(`Segmentation/`,segmentacion));\r\n }\r\n\r\n static editSegmentacion(segmentacion){\r\n return middleware.hasAuth(() => request.put(`Segmentation/`,segmentacion));\r\n }\r\n\r\n static copySegmentacion(name, IdSegmentation){\r\n return middleware.hasAuth(() => request.post(`Segmentation/Duplicate`, {Name: name, IdSegmentation: IdSegmentation}));\r\n }\r\n\r\n static changeStatus(id, status){\r\n return middleware.hasAuth(() => request.post(`Segmentation/Active`, {Status: status, IdSegmentation: id}));\r\n }\r\n\r\n static countClients(segmentacion){\r\n return middleware.hasAuth(() => request.post(`Segmentation/Count`, segmentacion));\r\n }\r\n\r\n static downloadClientsInfo(id){\r\n return middleware.hasAuth(() => requestfile.get(`Segmentation/Excel/${id}`));\r\n }\r\n\r\n static removeSegmentation(id){\r\n return middleware.hasAuth(() => request.delete(`Segmentation/${id}`));\r\n }\r\n}","import * as React from 'react';\r\nimport BuscarSegmentacion from './components/BuscarSegmentacion';\r\nimport TablaSegmentaciones from './components/TablaSegmentaciones';\r\nimport SegmentacionAPI from '../../../services/Caffenio App/Segmentacion';\r\nimport Modal from '../../util/modal/Modal';\r\nimport { toast } from 'react-toastify';\r\nimport Field from '../../util/field/Field';\r\nimport * as moment from 'moment';\r\n\r\nimport Loading from '../../util/loading/Loading';\r\nimport AcceptModal from '../../util/acceptModal/AcceptModal';\r\nimport createHistory from 'history/createBrowserHistory'\r\n\r\n\r\n\r\nexport default class Segmentaciones extends React.Component {\r\n constructor(props){\r\n super(props);\r\n this.state = {\r\n segmentaciones: [],\r\n currentPage: 1,\r\n totalPages: 1,\r\n totalSegmentaciones: 0,\r\n name: \"\",\r\n showDuplicateModal: false,\r\n duplicateName: \"\",\r\n duplicateNameValid: true,\r\n currentSeg: null,\r\n fileToDownload: null,\r\n downloading: false,\r\n confirmModal: false,\r\n tableLoading: false\r\n }\r\n }\r\n\r\n // Se obtienen las segmentaciones cuando se monta el componente\r\n componentWillMount(){\r\n let sstate = this.props.location.state;\r\n if(sstate){\r\n let state = {...this.state};\r\n state.name = sstate.name;\r\n state.currentPage = sstate.currentPage;\r\n this.setState(state, () => {\r\n this.getSegmentaciones(sstate.name, sstate.currentPage)\r\n const history = createHistory();\r\n // Si ya existe un parametro state en el history, se elimina.\r\n if (history.location.state) {\r\n let state = { ...history.location.state };\r\n delete state.currentPage;\r\n delete state.name;\r\n history.replace({ ...history.location, state });\r\n }\r\n })\r\n \r\n }else{\r\n this.getSegmentaciones();\r\n }\r\n \r\n }\r\n\r\n // Método para obtener las segmentaciones\r\n // @param text: texto para la búsqueda por nombre\r\n // @param page: la página que se mostrará\r\n getSegmentaciones = (text = \"\", page = 1) => {\r\n this.setState({tableLoading: true}, () => {\r\n SegmentacionAPI.getSegmentaciones(text, page).then(response => {\r\n let state = {...this.state};\r\n state.segmentaciones = response.data.Results;\r\n state.name = text;\r\n state.totalPages = response.data.TotalPages;\r\n state.currentPage = page;\r\n state.totalSegmentaciones = response.data.TotalResults;\r\n state.tableLoading = false;\r\n this.setState(state);\r\n }).catch(err => {\r\n toast.error(err.response.data.Message)\r\n })\r\n })\r\n }\r\n\r\n // Búsqueda de segmentaciones por nombre\r\n // @param text: texto para la búsqueda por nombre\r\n buscarSegmentaciones = (text) => {\r\n this.getSegmentaciones(text);\r\n }\r\n\r\n // Método para cambiarse de página\r\n // @param page: página que se mostrará\r\n goToPage = (page) => {\r\n this.getSegmentaciones(this.state.name, page);\r\n }\r\n\r\n // Método para ir al formulario de nueva segmentación.\r\n nuevaSegmentacion = () => {\r\n // Se agrego el atributo state al history para poder regresar a la misma página y búsqueda.\r\n this.props.history.push({\r\n pathname: '/app/segmentaciones/nueva',\r\n state: {currentPage: this.state.currentPage, name: this.state.name}\r\n });\r\n }\r\n\r\n // Método para ir al formulario de nueva segmentación por usuario.\r\n nuevaSegmentacionUsuario = () => {\r\n // Se agrego el atributo state al history para poder regresar a la misma página y búsqueda.\r\n this.props.history.push({\r\n pathname: '/app/segmentaciones/nuevaSeg',\r\n state: {currentPage: this.state.currentPage, name: this.state.name}\r\n });\r\n }\r\n\r\n // Método para ir al formulario de editar una segmentación \r\n // @param id: identificador único de la segmentación\r\n editarSegmentacion = (id) => {\r\n // Se agrego el atributo state al history para poder regresar a la misma página y búsqueda.\r\n this.props.history.push({\r\n pathname: `/app/segmentaciones/editar/${id}`,\r\n state: {currentPage: this.state.currentPage, name: this.state.name}\r\n });\r\n }\r\n\r\n // Método para eliminar una segmentación\r\n eliminarSegmentacion = () => {\r\n SegmentacionAPI.removeSegmentation(this.state.currentSeg.IdSegmentation).then(response => {\r\n toast.success(response.data.Message)\r\n this.setState({confirmModal: false, currentSeg: null}, () => {\r\n this.getSegmentaciones(this.state.name, this.state.currentPage);\r\n })\r\n }).catch(err => toast.error(err.response.data.Message));\r\n }\r\n\r\n // Método para cambiar el estatus de una segmentación\r\n // @param id: identificador único de la segmentación\r\n // @param currentStatus: Estatus actual de la segmentación\r\n changeStatusSegmentacion = (id, currentStatus) => {\r\n SegmentacionAPI.changeStatus(id, currentStatus).then(response => {\r\n toast.success(response.data.Message);\r\n this.getSegmentaciones(this.state.name, this.state.currentPage);\r\n }).catch(err => toast.error(err.response.data.Message));\r\n }\r\n\r\n // Método para mostrar el modal para duplicar segmentación\r\n openDuplicateModal = (segmentacion) => {\r\n this.setState({showDuplicateModal: true, currentSeg: segmentacion});\r\n }\r\n\r\n // Método para duplicar una segmentación\r\n duplicate = () => {\r\n SegmentacionAPI.copySegmentacion(this.state.duplicateName, this.state.currentSeg.IdSegmentation).then(response => {\r\n toast.success(\"Segmentación duplicada correctamente.\")\r\n this.setState({showDuplicateModal: false, currentSeg: null}, () => this.getSegmentaciones(this.state.name, this.state.currentPage))\r\n }).catch(err => {\r\n toast.error(err.response.data.Message)\r\n })\r\n }\r\n\r\n // Método para descargar el Excel con la información de los clientes de una segmentación.\r\n // @param id: identificador único de la segmentación\r\n // @param nombre: Nombre de la segmentación\r\n downloadFile = (id, nombre) => {\r\n this.setState({downloading: true}, () => {\r\n SegmentacionAPI.downloadClientsInfo(id).then(response => {\r\n const url = window.URL.createObjectURL(new Blob([response.data]));\r\n const link = document.createElement('a');\r\n link.href = url;\r\n let name = `REPORTE SEGMENTACION ${moment().format('DD MM YYYY h mm ss')} ${nombre}`;\r\n name = name.replace(/ /g,\"_\");\r\n link.setAttribute('download', `${name.toUpperCase()}.xlsx`);\r\n document.body.appendChild(link);\r\n link.click();\r\n this.setState({downloading: false});\r\n }).catch(err => {\r\n toast.error(err.response.data.Message)\r\n })\r\n })\r\n }\r\n\r\n render(){\r\n return (\r\n
    \r\n

    Segmentaciones

    \r\n this.nuevaSegmentacion()}\r\n nuevaSegmentacionUsuario={() => this.nuevaSegmentacionUsuario()}\r\n search={(text) => this.buscarSegmentaciones(text)}\r\n name={this.state.name}\r\n />\r\n
    \r\n this.changeStatusSegmentacion(id,val) }\r\n goToPage={this.goToPage}\r\n edit={(id) => this.editarSegmentacion(id)}\r\n duplicate={this.openDuplicateModal}\r\n delete={(seg) => this.setState({confirmModal: true, currentSeg: seg})}\r\n downloadFile={this.downloadFile}\r\n loading={this.state.tableLoading}\r\n />\r\n {this.state.showDuplicateModal && \r\n \r\n \r\n \r\n
    \r\n }\r\n cancel={() => this.setState({showDuplicateModal: false, duplicateName: \"\", duplicateNameValid: true})}\r\n showModal={this.state.showDuplicateModal}\r\n modalTitle={`Duplicar Segmentación`}\r\n >\r\n \r\n {\r\n if(this.state.duplicateName.length == 0) this.setState({duplicateNameValid: false})\r\n }}\r\n onChange={(e) => {\r\n let name = e.currentTarget.value;\r\n name = name.replace(/\\s{2,}/g, ' ');\r\n this.setState({duplicateName: name, duplicateNameValid: name.length > 0});\r\n }}\r\n />\r\n \r\n {!this.state.duplicateNameValid &&

    Nombre requerido

    }\r\n }\r\n {this.state.confirmModal &&\r\n ¿Está seguro que desea eliminar la segmentación?

    }\r\n isActive={this.state.confirmModal}\r\n done={() => this.eliminarSegmentacion()}\r\n cancel={() => this.setState({confirmModal: false, currentSeg: null})}\r\n />\r\n }\r\n \r\n \r\n )\r\n }\r\n}","import React from 'react';\r\nimport ContentLoader from 'react-content-loader';\r\n\r\n// Componente para mostrar un cargando con dos barras svg, simulando una titulo/descipción de una tarjeta\r\nexport default class FilterLoading extends React.Component {\r\n constructor(props){\r\n super(props);\r\n }\r\n\r\n render(){\r\n return (\r\n !this.props.loading ?\r\n this.props.children\r\n : \r\n \r\n \r\n \r\n )\r\n }\r\n}","import * as React from 'react';\r\n\r\nexport default class Checkbox extends React.Component {\r\n constructor(props){\r\n super(props);\r\n }\r\n\r\n render(){\r\n return (\r\n
    \r\n {this.props.labelKey &&

    {this.props.data[this.props.labelKey]}

    }\r\n {\r\n \r\n }}\r\n />\r\n \r\n
    \r\n )\r\n }\r\n}","import * as React from 'react';\r\n\r\nexport default class RadioButton extends React.Component {\r\n constructor(props){\r\n super(props);\r\n }\r\n\r\n render(){\r\n return (\r\n
    \r\n \r\n  \r\n \r\n
    \r\n )\r\n }\r\n}","import * as React from 'react';\r\nimport Field from '../../../../util/field/Field';\r\nimport FilterLoading from '../../components/util/FilterLoading';\r\nimport Dropdown from '../../../../util/dropdown/Dropdown';\r\nimport RadioButton from '../../../../util/radioButton/RadioButton';\r\nimport ErrorMessages from '../../../../../util/validation-error-messages';\r\nimport Validators from '../../../../../util/validators';\r\nimport Checkbox from '../../../../util/checkbox/Checkbox';\r\nimport Select from 'react-select';\r\nimport SegmentacionAPI from '../../../../../services/Caffenio App/Segmentacion';\r\nimport EmpresasAPI from '../../../../../services/CaffenioEmpresas/Empresas';\r\nimport { toast } from 'react-toastify';\r\nimport AcceptModal from '../../../../util/acceptModal/AcceptModal';\r\nimport to from '../../../../../util/to';\r\n\r\n\r\nclass SegmentacionForm extends React.Component {\r\n temperaturas = []\r\n ciudades = []\r\n clasificacionesC = []\r\n clasificacionesA = []\r\n nivelLealtadC = []\r\n nivelLealtadA = []\r\n \r\n\r\n constructor(props){\r\n super(props);\r\n \r\n this.state = {\r\n ...this.props,\r\n segmentacion: {\r\n IdSegmentation: undefined,\r\n nombre: \"\",\r\n estado: [],\r\n ciudad: [],\r\n rangoEdad: [],\r\n genero: [],\r\n nivelLealtad: [],\r\n horario: [],\r\n diasSemana: [],\r\n clasificacion: null,\r\n temperatura: [],\r\n refill: false,\r\n membresias:[],\r\n SegmentId: undefined\r\n },\r\n clasificaciones: [],\r\n ciudades: [],\r\n temperaturas: [],\r\n validated: this.props.isValid,\r\n clients: [1,1],\r\n totalClients: 0,\r\n editing: false,\r\n confirmModal: false,\r\n invalidName: false,\r\n working: false,\r\n segments: [],\r\n invalidSegment: false,\r\n Segment: [],\r\n bandera: false,\r\n }\r\n }\r\n\r\n // Método para verificar que la segmentación no tiene ningún filtro seleccionado\r\n segmentationHasNoFilters = () => {\r\n return this.state.segmentacion.estado.length == 0 &&\r\n this.state.segmentacion.ciudad.length == 0 &&\r\n this.state.segmentacion.rangoEdad.length == 0 &&\r\n this.state.segmentacion.genero.length == 0 &&\r\n this.state.segmentacion.nivelLealtad.length == 0 &&\r\n this.state.segmentacion.horario.length == 0 &&\r\n this.state.segmentacion.diasSemana.length == 0 &&\r\n this.state.segmentacion.clasificacion == null &&\r\n this.state.segmentacion.temperatura.length == 0\r\n }\r\n\r\n // Método para verificar si la segmentación es válida\r\n dataIsValid = () => {\r\n return this.state.segmentacion.nombre.length >= 3 && this.state.clients.length > 0\r\n }\r\n\r\n // Callback para cuando se selecciona un día, se agrega o remueve de la selección con base al estatus original.\r\n // @param d: Objeto para react-select del día de la semana seleccionado\r\n daySelected = (d) => {\r\n let seg = {...this.state.segmentacion};\r\n let index = this.state.segmentacion.diasSemana.findIndex(dia => dia.IdFilterPurchaseDay === d.IdFilterPurchaseDay);\r\n if (index === -1){\r\n seg.diasSemana.push(d);\r\n }else{\r\n seg.diasSemana.splice(index, 1);\r\n }\r\n this.props.invalidate();\r\n this.setState({segmentacion: seg, validated: false});\r\n }\r\n\r\n // Se establece la Familia seleccionada en la segmentación\r\n setClassification = () => {\r\n let classification = this.props.clasificaciones.find(c => c.IdFilterFamilyProduct === this.state.segmentacion.IdClassification);\r\n let segmentacion = {...this.state.segmentacion};\r\n segmentacion.clasificacion = {value: classification.IdFilterFamilyProduct, label: classification.Name};\r\n this.setState({segmentacion: segmentacion}, () => this.getTemperaturas());\r\n }\r\n\r\n setLealtad = () => {\r\n SegmentacionAPI.getNivelesLealtadPorSegmento(this.state.segmentacion.SegmentId).then(response => {\r\n this.props.getCuentaLealtad(response.data);\r\n this.nivelLealtadA = response.data;\r\n this.nivelLealtadC = response.data;\r\n let state = {...this.state};\r\n this.setState(state);\r\n let segmentacion = { ...this.state.segmentacion };\r\n this.setState({ segmentacion});\r\n console.log(segmentacion);\r\n }).catch(err => {\r\n toast.error(err.response.data.Message);\r\n });\r\n }\r\n\r\n\r\n getActualizacionBySegmento = () => {\r\n console.log(\"entró hijo:\" + this.state.segmentacion.SegmentId);\r\n\r\n SegmentacionAPI.getNivelesLealtadPorSegmento(this.state.segmentacion.SegmentId).then(response => {\r\n this.props.getCuentaLealtad(response.data);\r\n this.nivelLealtadA = response.data;\r\n this.nivelLealtadC = response.data;\r\n let state = {...this.state};\r\n this.state.segmentacion.nivelLealtad = [];\r\n this.setState(state);\r\n console.log(\"terminó\");\r\n let segmentacion = { ...this.state.segmentacion };\r\n segmentacion.estado = [];\r\n segmentacion.ciudad = [];\r\n this.setState({ segmentacion, ciudades: [] });\r\n console.log(segmentacion);\r\n }).catch(err => {\r\n toast.error(err.response.data.Message);\r\n });\r\n\r\n SegmentacionAPI.getEstadosPorSegmentacion(this.state.segmentacion.SegmentId).then(response => {\r\n this.props.getEstados(response.data);\r\n let state = {...this.state};\r\n //this.segmentacion.estado = this.segmentacion.estado.map(estado => this.props.estados.find(e => e.StateId === estado.value));\r\n this.setState(state);\r\n console.log(\"terminó\");\r\n }).catch(err => {\r\n toast.error(err.response.data.Message);\r\n });\r\n\r\n \r\n SegmentacionAPI.getFamiliasPorSegmentacion(this.state.segmentacion.SegmentId).then(response => {\r\n this.props.getFamilias(response.data);\r\n let state = {...this.state};\r\n //this.segmentacion.clasificacion && response.data.find(e => e.IdFilterFamilyProduct === this.segmentacion.clasificacion.value);\r\n this.setState(state);\r\n console.log(\"terminó\");\r\n }).catch(err => {\r\n toast.error(err.response.data.Message);\r\n });\r\n \r\n\r\n // Reiniciar el Select de estado\r\n let segmentacion = { ...this.state.segmentacion };\r\n segmentacion.estado = [];\r\n segmentacion.ciudad = [];\r\n this.setState({ segmentacion, ciudades: [] });\r\n \r\n\r\n }\r\n\r\n\r\n\r\n // Se obtienen las ciudades con base al estado seleccionado.\r\n getCiudades = () => {\r\n SegmentacionAPI.GetCiudades([...new Set(this.state.segmentacion.estado.map(e => e.value))]).then(response => {\r\n var ciudades = [];\r\n \r\n response.data.forEach(state => {\r\n ciudades.push({label: state.State.Name, value: null});\r\n state.Cities.forEach(city => {\r\n ciudades.push({label: city.Name, value: city.CityId, state: state.State.StateId});\r\n this.ciudades.push(city);\r\n })\r\n })\r\n \r\n let state = {...this.state};\r\n // Se quitan las ciudades seleccionadas de estados que ya no están seleccionados.\r\n if(!this.props.editing) state.segmentacion.ciudad = state.segmentacion.ciudad.filter(c => response.data.find(s => s.State.StateId === c.state));\r\n state.ciudades = ciudades;\r\n this.setState(state);\r\n \r\n }).catch(err => {\r\n toast.error(err.response.data.Message);\r\n })\r\n }\r\n\r\n getCuentaLealtad = () => {\r\n SegmentacionAPI.getNivelesLealtadPorSegmento(this.state.segmentacion.SegmentId).then(response => {\r\n this.props.getCuentaLealtad(response.data);\r\n this.nivelLealtadA = response.data;\r\n this.nivelLealtadC = response.data;\r\n let state = {...this.state};\r\n this.setState(state);\r\n let segmentacion = { ...this.state.segmentacion };\r\n this.setState({ segmentacion});\r\n console.log(segmentacion);\r\n }).catch(err => {\r\n toast.error(err.response.data.Message);\r\n });\r\n }\r\n\r\n // Se obtienen las temperaturas o tipos de producto con base a la Familia seleccionada.\r\n getTemperaturas = () => {\r\n SegmentacionAPI.getTemperaturas(this.state.segmentacion.clasificacion.value).then(response => {\r\n let state = {...this.state};\r\n state.temperaturas = response.data.map(t => {return {value: t.IdFilterTypeProductModel, label: t.Description}});\r\n // Se eliminan las temperaturas seleccionadas previamente.\r\n state.segmentacion.temperatura = [];\r\n state.segmentacion.TypesProducts = [];\r\n this.temperaturas = response.data;\r\n this.setState(state);\r\n }).catch(err => {\r\n toast.error(err.response.data.Message);\r\n })\r\n }\r\n\r\n // Método para preparar el objeto segmentación para su envío al API, se ajusta al modelo.\r\n prepareSegmentacion = () => {\r\n var segmentacion = {...this.state.segmentacion};\r\n \r\n // Se mapean los arreglos de filtros seleccionados a los modelos del API.\r\n segmentacion.estado = segmentacion.estado.map(estado => this.props.estados.find(e => e.StateId === estado.value));\r\n segmentacion.ciudad = segmentacion.ciudad.map(ciudad => this.ciudades.find(e => e.CityId === ciudad.value));\r\n segmentacion.rangoEdad = segmentacion.rangoEdad.map(rangoEdad => this.props.rangoEdades.find(e => e.IdFilterAge === rangoEdad.value));\r\n segmentacion.horario = segmentacion.horario.map(horario => this.props.horarios.find(e => e.IdFilterPurchaseSchedule === horario.value));\r\n segmentacion.clasificacion = segmentacion.clasificacion && this.props.clasificaciones.find(e => e.IdFilterFamilyProduct === segmentacion.clasificacion.value);\r\n segmentacion.temperatura = segmentacion.temperatura.map(temperatura => this.temperaturas.find(e => e.IdFilterTypeProductModel === temperatura.value));\r\n \r\n\r\n // Se crea la segmentación con todos los datos ya preparados\r\n var seg = {\r\n IdSegmentation: segmentacion.IdSegmentation,\r\n Name: segmentacion.nombre,\r\n SegmentId: segmentacion.SegmentId,\r\n IdClassification: segmentacion.clasificacion ? segmentacion.clasificacion.IdFilterFamilyProduct : null,\r\n Refill: segmentacion.refill,\r\n TotalClients: this.state.totalClients, \r\n LoyaltyAccounts: segmentacion.nivelLealtad,\r\n States: segmentacion.estado,\r\n Cities: segmentacion.ciudad,\r\n PurchaseDays: segmentacion.diasSemana,\r\n PurchaseSchedules: segmentacion.horario,\r\n AgeRanges: segmentacion.rangoEdad,\r\n Genders: segmentacion.genero,\r\n TypesProducts: segmentacion.temperatura,\r\n Status: segmentacion.Status,\r\n MembershipTypes: segmentacion.membresias,\r\n };\r\n return seg;\r\n }\r\n\r\n // Si las props cambian se verifica si es por una validación de la segmentación para actualizar sus datos.\r\n componentDidUpdate(prevProps) {\r\n this.clasificacionesA = this.props.clasificaciones;\r\n this.clasificacionesC = this.props.clasificaciones;\r\n this.nivelLealtadC = this.props.nivelesLealtad;\r\n this.nivelLealtadA = this.props.nivelesLealtad;\r\n console.log(this.nivelLealtadC);\r\n\r\n if(this.props.isValid !== prevProps.isValid){\r\n if (this.props.isValid){\r\n this.setState({validated: this.props.isValid, totalClients: this.props.totalClients});\r\n }else{\r\n this.setState({totalClients: 0});\r\n }\r\n }\r\n\r\n // Si se está editando, se realiza el llenado de las ciudades seleccionadas en su respectivo campo.\r\n if(this.props.editing && this.props.segmentacion && this.state.segmentacion.IdSegmentation != this.props.segmentacion.IdSegmentation){\r\n this.setState({segmentacion: this.props.segmentacion}, () => {\r\n this.getCiudades();\r\n this.getCuentaLealtad();\r\n });\r\n }\r\n // Si se está editando, se realiza establece el valor de Familia seleccionada en su respectivo campo.\r\n if(this.props.editing && this.props.clasificaciones.length > 0 && !this.state.segmentacion.clasificacion && this.state.segmentacion.IdClassification){\r\n this.setClassification();\r\n }\r\n\r\n // Si se está editando, se establece el valor del Segmento seleccionada en su respectivo campo.\r\n if(this.props.editing && this.props.segmentacion && !this.state.segmentacion.SegmentId && this.props.segmentacion.SegmentId){\r\n let seg = this.state.segments.find(c => c.value === this.props.segmentacion.SegmentId);\r\n this.state.Segment = seg;\r\n }\r\n\r\n }\r\n\r\n componentDidMount() {\r\n setTimeout(() => {\r\n //let seg = this.state.segments.find(c => c.value === this.props.segmentacion.SegmentId);\r\n this.setState({bandera: true});\r\n }, 3000);\r\n }\r\n\r\n componentWillMount() {\r\n this.setState({ isLoading: true }, () => {\r\n EmpresasAPI.getAllFilterSegments().then(response => {\r\n let tempSegmentsList = []\r\n response.data.map(obj => {\r\n tempSegmentsList.push({\r\n value: obj.SegmentId,\r\n label: this.getName(obj.Name)\r\n })\r\n })\r\n this.setState({ segments: tempSegmentsList, });\r\n }).catch(err => {\r\n this.setState({ isLoading: false })\r\n if (err.response)\r\n toast.error(err.response.data.Message)\r\n else\r\n toast.error(ErrorMessages.SinConexion)\r\n })\r\n })\r\n }\r\n\r\n getName(Name) {\r\n switch (Name) {\r\n case \"Andatti drive\":\r\n return \"Andatti\"\r\n case \"Drive\":\r\n return \"Caffenio\"\r\n case \"momento espresso\":\r\n return \"Momento Espresso\"\r\n default:\r\n return Name\r\n }\r\n }\r\n\r\n \r\n render(){\r\n const segmentSel = 1;\r\n return (\r\n
    \r\n
    \r\n
    \r\n
    \r\n \r\n
    \r\n \r\n {\r\n let segmentacion = {...this.state.segmentacion};\r\n segmentacion.SegmentId = -1;\r\n let seg = {}\r\n \r\n if( e !== null) {\r\n segmentacion.SegmentId = e.value;\r\n seg = e\r\n }\r\n \r\n segmentacion.clasificacion = null;\r\n segmentacion.IdClassification = null;\r\n segmentacion.nivelLealtad = [];\r\n segmentacion.temperatura = [];\r\n segmentacion.TypesProducts = [];\r\n this.props.invalidate();\r\n this.setState({segmentacion: segmentacion, temperaturas: [], Segment: seg, validated: false}, () => {\r\n\r\n if(segmentacion.SegmentId !== undefined && segmentacion.SegmentId !== -1){\r\n this.getActualizacionBySegmento();\r\n }\r\n });\r\n if(segmentacion.SegmentId !== undefined && segmentacion.SegmentId !== -1){\r\n this.setState({invalidSegment: false});\r\n //this.state.invalidSegment = true;\r\n }\r\n }}\r\n onBlur={(val) => {\r\n if(this.state.segmentacion.SegmentId === undefined || this.state.segmentacion.SegmentId === -1){\r\n this.setState({invalidSegment: true});\r\n }\r\n }}\r\n isClearable={true}\r\n id=\"idSegments\"\r\n noOptionsMessage={() => \"No hay opciones\"}\r\n options={this.state.segments}\r\n />\r\n\r\n\r\n {this.state.invalidSegment &&

    Segmentación es requerido.

    }\r\n
    \r\n
    \r\n
    \r\n
    \r\n
    \r\n\r\n
    \r\n \r\n {\r\n // Si el usuario cambia a otro campo o da click fuera se verifica si hay un valor ingresado válido.\r\n if(this.state.segmentacion.nombre.length == 0){\r\n this.setState({invalidName: true});\r\n }\r\n }}\r\n onChange={(e) => {\r\n let segmentacion = {...this.state.segmentacion};\r\n segmentacion.nombre = e.currentTarget.value;\r\n // Se remueven los espacios en blanco en exceso.\r\n segmentacion.nombre = segmentacion.nombre.replace(/\\s{2,}/g, ' ');\r\n this.setState({segmentacion: segmentacion, invalidName: segmentacion.nombre.length == 0});\r\n }}\r\n />\r\n \r\n {this.state.invalidName &&

    Nombre requerido

    }\r\n
    \r\n
    \r\n
    \r\n
    \r\n
    \r\n

    Demografía

    \r\n
    \r\n
    \r\n \r\n
    \r\n {\r\n let segmentacion = {...this.state.segmentacion};\r\n segmentacion.estado = e;\r\n // Por si acaso, quitar duplicados\r\n segmentacion.estado = [...new Set(segmentacion.estado)];\r\n this.props.invalidate();\r\n this.setState({segmentacion: segmentacion, validated: false}, () => {\r\n this.getCiudades();\r\n });\r\n }}\r\n noOptionsMessage={() => \"No hay opciones\"}\r\n options={this.props.estados.map(e => { return {value: e.StateId, label: e.Name}})}\r\n />\r\n
    \r\n
    \r\n
    \r\n {this.state.ciudades.length > 0 && \r\n
    \r\n \r\n
    \r\n {\r\n let segmentacion = {...this.state.segmentacion};\r\n segmentacion.ciudad = e;\r\n // Por si acaso, quitar duplicados\r\n segmentacion.ciudad = [...new Set(segmentacion.ciudad)];\r\n this.props.invalidate();\r\n this.setState({segmentacion: segmentacion, validated: false});\r\n }}\r\n noOptionsMessage={() => \"No hay opciones\"}\r\n isOptionDisabled={(option) => !option.value}\r\n options={this.state.ciudades}\r\n />\r\n
    \r\n
    \r\n }\r\n
    \r\n
    \r\n
    \r\n \r\n
    \r\n {\r\n let segmentacion = {...this.state.segmentacion};\r\n segmentacion.rangoEdad = e;\r\n // Se quitan duplicados en caso de existir.\r\n segmentacion.rangoEdad = [...new Set(segmentacion.rangoEdad)];\r\n this.props.invalidate();\r\n this.setState({segmentacion: segmentacion, validated: false});\r\n }}\r\n noOptionsMessage={() => \"No hay opciones\"}\r\n options={this.props.rangoEdades.map(e => { return {value: e.IdFilterAge, label: e.Description}})}\r\n />\r\n
    \r\n
    \r\n
    \r\n
    \r\n

    Género

    \r\n
    \r\n {this.props.generos.map((genero, index) => {\r\n return (\r\n
    \r\n n.IdGender == genero.IdGender) !== -1}\r\n data={genero}\r\n labelKey={\"Name\"}\r\n onChange={(e) => {\r\n let segmentacion = {...this.state.segmentacion}\r\n let generoIndex = this.state.segmentacion.genero.findIndex(n => n.IdGender === genero.IdGender)\r\n if(generoIndex !== -1 ){\r\n segmentacion.genero.splice(generoIndex, 1);\r\n }else{\r\n segmentacion.genero.push(genero);\r\n }\r\n this.setState({segmentacion: segmentacion, validated: false}, () => {\r\n this.props.invalidate();\r\n });\r\n }}\r\n />\r\n
    \r\n )\r\n })}\r\n
    \r\n
    \r\n
    \r\n
    \r\n
    \r\n
    \r\n

    Nivel de lealtad

    \r\n\r\n {\r\n this.state.segmentacion.SegmentId == 1 ?\r\n
    \r\n {this.nivelLealtadC.map((nivel, index) => {\r\n return (\r\n
    \r\n n.IdTypeLoyaltyAccount === nivel.IdTypeLoyaltyAccount) !== -1}\r\n data={nivel}\r\n labelKey={\"Description\"}\r\n onChange={(e) => {\r\n let segmentacion = {...this.state.segmentacion}\r\n let nivelIndex = this.state.segmentacion.nivelLealtad.findIndex(n => n.IdTypeLoyaltyAccount === nivel.IdTypeLoyaltyAccount)\r\n if(nivelIndex !== -1 ){\r\n segmentacion.nivelLealtad.splice(nivelIndex, 1);\r\n }else{\r\n segmentacion.nivelLealtad.push(nivel);\r\n }\r\n this.props.invalidate();\r\n this.setState({segmentacion: segmentacion, validated: false});\r\n }}\r\n />\r\n
    \r\n )\r\n })}
    \r\n :\r\n (
    \r\n {this.nivelLealtadA.map((nivel, index) => {\r\n return (\r\n
    \r\n n.IdTypeLoyaltyAccount === nivel.IdTypeLoyaltyAccount) !== -1}\r\n data={nivel}\r\n labelKey={\"Description\"}\r\n onChange={(e) => {\r\n let segmentacion = {...this.state.segmentacion}\r\n let nivelIndex = this.state.segmentacion.nivelLealtad.findIndex(n => n.IdTypeLoyaltyAccount === nivel.IdTypeLoyaltyAccount)\r\n if(nivelIndex !== -1 ){\r\n segmentacion.nivelLealtad.splice(nivelIndex, 1);\r\n }else{\r\n segmentacion.nivelLealtad.push(nivel);\r\n }\r\n this.props.invalidate();\r\n this.setState({segmentacion: segmentacion, validated: false});\r\n }}\r\n />\r\n
    \r\n )\r\n })} \r\n
    )\r\n }\r\n \r\n
    \r\n \r\n
    \r\n
    \r\n

    Membresías

    \r\n
    \r\n \r\n\r\n {this.props.membresias.map((mem, index) => {\r\n return (\r\n
    \r\n n.IdMembresia === mem.IdMembresia) !== -1}\r\n data={mem}\r\n labelKey={\"Membresia\"}\r\n onChange={(e) => {\r\n let segmentacion = {...this.state.segmentacion}\r\n let memIndex = this.state.segmentacion.membresias.findIndex(n => n.IdMembresia === mem.IdMembresia)\r\n if(memIndex !== -1 ){\r\n segmentacion.membresias.splice(memIndex, 1);\r\n }else{\r\n segmentacion.membresias.push(mem);\r\n }\r\n this.props.invalidate();\r\n this.setState({segmentacion: segmentacion, validated: false});\r\n }}\r\n />\r\n
    \r\n )\r\n })}\r\n
    \r\n
    \r\n\r\n
    \r\n
    \r\n

    Horarios y hábitos

    \r\n
    \r\n
    \r\n \r\n
    \r\n {\r\n let segmentacion = {...this.state.segmentacion};\r\n segmentacion.horario = e;\r\n // Por si acaso, quitar duplicados\r\n segmentacion.horario = [...new Set(segmentacion.horario)];\r\n this.props.invalidate();\r\n this.setState({segmentacion: segmentacion, validated: false});\r\n }}\r\n noOptionsMessage={() => \"No hay opciones\"}\r\n options={this.props.horarios.map(e => { return {value: e.IdFilterPurchaseSchedule, label: e.Description}})}\r\n />\r\n
    \r\n
    \r\n
    \r\n
    \r\n\r\n
    \r\n
    \r\n
    \r\n {this.props.diasSemana.map((dia, index) => {\r\n return (\r\n
    \r\n n.IdFilterPurchaseDay === dia.IdFilterPurchaseDay) !== -1}\r\n data={dia}\r\n labelKey={\"Name\"}\r\n onChange={(e) => {\r\n this.daySelected(dia);\r\n }}\r\n />\r\n
    \r\n )\r\n })}\r\n
    \r\n
    \r\n \r\n
    \r\n
    \r\n

    Productos

    \r\n
    \r\n
    \r\n \r\n
    \r\n {\r\n segmentSel !== 1 ?\r\n {\r\n let segmentacion = {...this.state.segmentacion};\r\n if (e){\r\n segmentacion.clasificacion = e;\r\n this.props.invalidate();\r\n this.setState({segmentacion: segmentacion, validated: false}, () => this.getTemperaturas());\r\n }else{\r\n segmentacion.clasificacion = null;\r\n segmentacion.IdClassification = null;\r\n segmentacion.temperatura = []\r\n segmentacion.TypesProducts = [];\r\n this.props.invalidate();\r\n this.setState({segmentacion: segmentacion, validated: false, temperaturas: []});\r\n }\r\n \r\n }}\r\n noOptionsMessage={() => \"No hay opciones\"}\r\n options={this.clasificacionesA.map(e => { return {value: e.IdFilterFamilyProduct, label: e.Name}})}\r\n />\r\n :\r\n (\r\n {\r\n let segmentacion = {...this.state.segmentacion};\r\n if (e){\r\n segmentacion.clasificacion = e;\r\n this.props.invalidate();\r\n this.setState({segmentacion: segmentacion, validated: false}, () => this.getTemperaturas());\r\n }else{\r\n segmentacion.clasificacion = null;\r\n segmentacion.IdClassification = null;\r\n segmentacion.temperatura = []\r\n segmentacion.TypesProducts = [];\r\n this.props.invalidate();\r\n this.setState({segmentacion: segmentacion, validated: false, temperaturas: []});\r\n }\r\n \r\n }}\r\n noOptionsMessage={() => \"No hay opciones\"}\r\n options={this.clasificacionesC.map(e => { return {value: e.IdFilterFamilyProduct, label: e.Name}})}\r\n />\r\n )\r\n }\r\n
    \r\n
    \r\n {this.state.temperaturas.length > 0 &&
    \r\n \r\n
    \r\n {\r\n let segmentacion = {...this.state.segmentacion};\r\n segmentacion.temperatura = e;\r\n // Por si acaso, quitar duplicados\r\n segmentacion.temperatura = [...new Set(segmentacion.temperatura)];\r\n this.props.invalidate();\r\n this.setState({segmentacion: segmentacion, validated: false});\r\n }}\r\n noOptionsMessage={() => \"No hay opciones\"}\r\n options={this.state.temperaturas}\r\n />\r\n
    \r\n
    }\r\n
    \r\n \r\n \r\n {}}\r\n />\r\n \r\n \r\n
    \r\n
    \r\n
    \r\n\r\n
    \r\n \r\n
    \r\n

    \r\n {this.state.totalClients > 0 &&

    {`Total de clientes: ${this.state.totalClients}`}

    }\r\n

    \r\n

    \r\n {\r\n this.props.history.push({\r\n pathname: '/app/segmentaciones',\r\n state: this.props.location.state ? {currentPage: this.props.location.state.currentPage || 0, name: this.props.location.state.name || \"\"} : {currentPage: 1, name: \"\"}\r\n });\r\n }}>\r\n {this.state.validated ? \"Cancelar\" : \"Regresar\"}\r\n \r\n

    \r\n \r\n {this.state.validated && this.state.clients.length > 0 &&

    \r\n {\r\n if(!this.state.working){\r\n if (this.segmentationHasNoFilters()){\r\n this.setState({confirmModal: true});\r\n }else\r\n this.props.save(this.prepareSegmentacion(), this.props.editing) \r\n }\r\n // Si la segmentación no tiene filtros seleccionados, se preguntará al usuario si está seguro de continuar\r\n \r\n }}>\r\n Guardar\r\n \r\n

    }\r\n \r\n {!this.state.validated &&

    \r\n {\r\n this.props.validate(this.prepareSegmentacion())\r\n }}>\r\n Validar segmentación\r\n \r\n

    }\r\n \r\n
    \r\n
    \r\n {this.state.confirmModal &&\r\n ¿Está seguro que desea guardar la segmentación sin filtros?

    }\r\n isActive={this.state.confirmModal}\r\n willSave\r\n done={() => {\r\n if(!this.state.working){\r\n this.setState({working: true}, () => this.props.save(this.prepareSegmentacion(), this.props.editing));\r\n }\r\n \r\n }}\r\n cancel={() => this.setState({confirmModal: false})}\r\n />\r\n }\r\n
    \r\n )\r\n }\r\n}\r\n\r\nSegmentacionForm.defaultProps = {\r\n estados: [],\r\n ciudades: [],\r\n rangoEdades: [],\r\n generos: [],\r\n nivelesLealtad: [],\r\n horarios: [],\r\n diasSemana: [],\r\n clasificaciones: [],\r\n temperaturas: [],\r\n membresias:[],\r\n segments: []\r\n}\r\n\r\nexport default SegmentacionForm;","import * as React from 'react';\r\nimport SegmentacionForm from './components/SegmentacionForm';\r\nimport SegmentacionAPI from '../../../../services/Caffenio App/Segmentacion';\r\nimport { toast } from 'react-toastify';\r\nimport to from '../../../../util/to';\r\nimport Loading from '../../../util/loading/Loading';\r\n\r\nclass NuevaSegmentacion extends React.Component {\r\n constructor(props){\r\n super(props);\r\n\r\n this.state = {\r\n data: {\r\n estados: [],\r\n ciudades: [],\r\n rangoEdades: [],\r\n generos: [],\r\n nivelesLealtad: [],\r\n horarios: [],\r\n diasSemana: [],\r\n clasificaciones: [],\r\n temperaturas: [],\r\n membresias: [],\r\n },\r\n segmentacion: null,\r\n isValid: false,\r\n totalClients: 0,\r\n loading: false\r\n }\r\n\r\n if(this.props.match.params.id){\r\n SegmentacionAPI.getSegmentacion(this.props.match.params.id).then(response => {\r\n this.loadForEdit(response.data).then( () =>{\r\n this.prepareSegmentationForEdit(response.data);\r\n });\r\n \r\n }).catch(err => {\r\n toast.error(\"Hubo un error al cargar la información, intente más tarde.\")\r\n });\r\n }\r\n }\r\n\r\n componentWillMount(){\r\n this.loadData();\r\n }\r\n\r\n getCuentaLealtad = (data) => {\r\n console.log(\"entró padre\");\r\n let state = {...this.state};\r\n this.state.data.nivelesLealtad = data;\r\n this.setState(state);\r\n }\r\n\r\n getEstados = (data) => {\r\n let state = {...this.state};\r\n this.state.data.estados = data;\r\n this.setState(state);\r\n }\r\n\r\n getFamilias = (data) => {\r\n let state = {...this.state};\r\n this.state.data.clasificaciones = data;\r\n this.setState(state);\r\n }\r\n\r\n loadForEdit = async (segmentacion) => {\r\n var temp_seg = segmentacion;\r\n let err, estados, clasificaciones;\r\n console.log(\"Se va a volver a cargar\");\r\n console.log(temp_seg.SegmentId);\r\n [err, estados] = await to(SegmentacionAPI.getEstadosPorSegmentacion(temp_seg.SegmentId));\r\n [err, clasificaciones] = await to(SegmentacionAPI.getFamiliasPorSegmentacion(temp_seg.SegmentId));\r\n\r\n if (err){\r\n toast.error(err.response.data.Message);\r\n }else{\r\n let state = {...this.state};\r\n state.data.estados = estados;\r\n state.data.clasificaciones = clasificaciones;\r\n this.setState(state);\r\n }\r\n\r\n }\r\n\r\n // Se obtiene la información para los campos de segmentaciones de manera asíncrona y se guardan en el state.\r\n loadData = async () => {\r\n let err, rangoEdad, estados, generos,horarios, diasSemana, clasificaciones, membresias;\r\n if(this.segmentacion != null){[err, estados] = await to(SegmentacionAPI.getEstadosPorSegmentacion(1));}\r\n if(this.segmentacion != null){[err, clasificaciones] = await to(SegmentacionAPI.getFamiliasPorSegmentacion(1));}\r\n [err, rangoEdad] = await to(SegmentacionAPI.getRangoEdades());\r\n [err, generos] = await to(SegmentacionAPI.getGeneros());\r\n [err, horarios] = await to(SegmentacionAPI.getHorarios());\r\n [err, diasSemana] = await to(SegmentacionAPI.getDiasSemana());\r\n [err, membresias] = await to(SegmentacionAPI.getMembresias());\r\n \r\n if (err){\r\n toast.error(err.response.data.Message);\r\n }else{\r\n let state = {...this.state};\r\n if(this.segmentacion != null){state.data.estados = estados;}\r\n state.data.rangoEdades = rangoEdad;\r\n state.data.generos = generos;\r\n state.data.horarios = horarios;\r\n state.data.diasSemana = diasSemana;\r\n if(this.segmentacion != null){state.data.clasificaciones = clasificaciones;}\r\n state.data.membresias = membresias;\r\n this.setState(state);\r\n }\r\n }\r\n\r\n // Se prepara la segmentación para su edición.\r\n prepareSegmentationForEdit = (segmentacion) => {\r\n var temp_seg = segmentacion;\r\n\r\n temp_seg.estado = temp_seg.States.map(e => {return {value: e.StateId, label: e.Name}})\r\n\r\n let classif = this.state.data.clasificaciones.find(c => c.IdFilterFamilyProduct === temp_seg.IdClassification)\r\n temp_seg.ciudad = temp_seg.Cities.map(c => {return {value: c.CityId, label: c.Name}})\r\n temp_seg.rangoEdad = temp_seg.AgeRanges.map(r => {return {value: r.IdFilterAge, label: r.Description}})\r\n temp_seg.horario = temp_seg.PurchaseSchedules.map(h => {return {value: h.IdFilterPurchaseSchedule, label: h.Description}})\r\n temp_seg.clasificacion = classif ? {value: temp_seg.IdClassification, label: classif.Name} : null\r\n temp_seg.temperatura = temp_seg.TypesProducts.map(t => {return {value: t.IdFilterTypeProductModel, label: t.Description}});\r\n temp_seg.nombre = temp_seg.Name;\r\n temp_seg.refill = temp_seg.Refill;\r\n temp_seg.genero = temp_seg.Genders;\r\n temp_seg.nivelLealtad = temp_seg.LoyaltyAccounts;\r\n temp_seg.diasSemana = temp_seg.PurchaseDays;\r\n temp_seg.membresias = temp_seg.MembershipTypes;\r\n this.setState({segmentacion: temp_seg});\r\n }\r\n\r\n // Se realiza la petición al API para guardar o actualizar la segmentación recibida.\r\n // @param segmentacion: Objeto de segmentación a guardar o actualizar\r\n // @param editing: Bandera que indica si se guardará o se editará una segmentación ya existente.\r\n nuevaSegmentacion = (segmentacion, editing) => {\r\n if (!editing){\r\n SegmentacionAPI.createSegmentacion(segmentacion).then(response => {\r\n toast.success(\"Segmentación creada correctamente.\")\r\n this.props.history.push({\r\n pathname: '/app/segmentaciones',\r\n state: this.props.location.state ? {currentPage: this.props.location.state.currentPage || 0, name: this.props.location.state.name || \"\"} : {currentPage: 1, name: \"\"}\r\n });\r\n }).catch(err =>{\r\n toast.error(err.response.data.Message);\r\n })\r\n }else{\r\n SegmentacionAPI.editSegmentacion(segmentacion).then(response => {\r\n toast.success(\"Segmentación actualizada correctamente.\")\r\n this.props.history.push({\r\n pathname: '/app/segmentaciones',\r\n state: this.props.location.state ? {currentPage: this.props.location.state.currentPage || 0, name: this.props.location.state.name || \"\"} : {currentPage: 1, name: \"\"}\r\n });\r\n }).catch(err => {\r\n toast.error(err.response.data.Message);\r\n })\r\n }\r\n \r\n }\r\n\r\n // Método para consumir el API para validar la segmentación.\r\n validarSegmentacion = (segmentacion) => {\r\n this.setState({loading: true}, () =>{\r\n SegmentacionAPI.countClients(segmentacion).then(response => {\r\n if(response.data.TotalClients > 0){\r\n this.setState({isValid: true, totalClients: response.data.TotalClients, loading: false});\r\n }else{\r\n this.setState({isValid: false, totalClients: 0, loading: false});\r\n toast.error(\"No hay clientes que cumplan con los filtros seleccionados.\")\r\n }\r\n }).catch(err => toast.error(err.response.data.Message));\r\n })\r\n }\r\n\r\n // Método para, ante cualquier cambio hecho en una segmentación ya validada, requerir una nueva validación de la segmentación \r\n invalidate = () => {\r\n this.setState({isValid: false});\r\n }\r\n\r\n render(){\r\n return (\r\n
    \r\n
    \r\n
    \r\n
    \r\n \r\n {\r\n this.props.history.push({\r\n pathname: '/app/segmentaciones',\r\n state: this.props.location.state ? {currentPage: this.props.location.state.currentPage || 0, name: this.props.location.state.name || \"\"} : {currentPage: 1, name: \"\"}\r\n });\r\n }}>\r\n \r\n {this.props.match.params.id ? \"Editar segmentación\" : \"Nueva segmentación\"}\r\n
    \r\n
    \r\n
    \r\n this.nuevaSegmentacion(seg, editing)}\r\n validate={(seg) => this.validarSegmentacion(seg)}\r\n {...this.state.data}\r\n isValid ={this.state.isValid}\r\n segmentacion={this.state.segmentacion}\r\n editing={this.state.segmentacion !== null}\r\n invalidate={this.invalidate}\r\n totalClients={this.state.totalClients}\r\n getCuentaLealtad={this.getCuentaLealtad}\r\n getEstados={this.getEstados}\r\n getFamilias={this.getFamilias}\r\n />\r\n
    \r\n
    \r\n \r\n
    \r\n )\r\n }\r\n}\r\n\r\nexport default NuevaSegmentacion;","import { useState } from 'react';\r\n\r\nconst useModal = () => {\r\n const [isShowing, setIsShowing] = useState(false);\r\n\r\n function toggle() {\r\n setIsShowing(!isShowing);\r\n }\r\n\r\n return {\r\n isShowing,\r\n toggle,\r\n }\r\n};\r\n\r\nexport default useModal;","import React from 'react';\r\nimport NoItems from '../../../util/noitems/NoItems';\r\nimport './style.css';\r\n\r\nexport default function TablaValidarCliente(props){\r\n //Objeto de la lista de validation\r\n// ClientId:'691430'\r\n// IsValid:true\r\n// LastName:'Chávez Daniel'\r\n// LoyaltyAccount:'12419000925486'\r\n// Name:'Andrea Gisel'\r\n// Reason:'Cliente válido'\r\n// Surname:''\r\n// TypeLoyaltyAccount:'Monedero AMIGO'\r\n const columnas = [\"ID\",\"Nombre\",\"Cuenta lealtad\",\"Tipo cuenta\",\"Razón\"];\r\n\r\n return (\r\n
    \r\n
    \r\n {props.validClients.length > 0 ?\r\n \r\n \r\n {columnas.map(c => )}\r\n \r\n \r\n {props.validClients.map((row, index) => {\r\n return (\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n )\r\n })}\r\n \r\n
    {c}
    {row.ClientId}{row.Name +' '+ row.LastName}{row.LoyaltyAccount}{row.TypeLoyaltyAccount}{row.Reason}
    \r\n : }\r\n {/* */}\r\n
    \r\n
    \r\n )\r\n}","import React from 'react';\r\nimport ReactDOM from 'react-dom';\r\n\r\nconst PortalModal = ({ isShowing, hide, title, footer, body, footerButtons }) => {return isShowing ? ReactDOM.createPortal(\r\n \r\n
    \r\n
    hide()}/>\r\n
    \r\n
    \r\n

    {title}

    \r\n \r\n
    \r\n \r\n {body()}\r\n \r\n {\r\n footer && \r\n
    \r\n {/* \r\n */}\r\n {footerButtons()}\r\n
    \r\n }\r\n
    \r\n
    \r\n, document.body\r\n) : null;}\r\n\r\nexport default PortalModal;","import React, { useState, useEffect } from 'react';\r\nimport Select from 'react-select';\r\nimport { toast } from 'react-toastify';\r\nimport AcceptModal from '../../../../util/acceptModal/AcceptModal';\r\nimport Field from '../../../../util/field/Field';\r\nimport FilterLoading from '../../components/util/FilterLoading';\r\nimport Dropdown from '../../../../util/dropdown/Dropdown';\r\nimport RadioButton from '../../../../util/radioButton/RadioButton';\r\nimport ErrorMessages from '../../../../../util/validation-error-messages';\r\nimport Validators from '../../../../../util/validators';\r\nimport Checkbox from '../../../../util/checkbox/Checkbox';\r\nimport SegmentacionAPI from '../../../../../services/Caffenio App/Segmentacion';\r\nimport EmpresasAPI from '../../../../../services/CaffenioEmpresas/Empresas';\r\nimport Loading from '../../../../util/loading/Loading';\r\nimport useModal from '../../../../../util/hooks/useModal';\r\nimport TablaValidarClientes from '../../components/TablaValidarClientes';\r\nimport PortalModal from '../../../../../util/portals/PortalModal';\r\n\r\nfunction SegmentacionFormExcel(props) {\r\n const clasificacionesC = [];\r\n const clasificacionesA = [];\r\n const nivelLealtadC = [];\r\n const nivelLealtadA = [];\r\n\r\n const [segmentacion, setSegmentacion] = useState({\r\n IdSegmentation: undefined,\r\n nombre: \"\",\r\n estado: [],\r\n ciudad: [],\r\n rangoEdad: [],\r\n genero: [],\r\n nivelLealtad: [],\r\n horario: [],\r\n diasSemana: [],\r\n clasificacion: null,\r\n temperatura: [],\r\n refill: false,\r\n membresias: [],\r\n SegmentId: undefined\r\n });\r\n\r\n const [clasificaciones, setClasificaciones] = useState([]);\r\n const [validated, setValidated] = useState(props.isValid);\r\n const [clients, setClients] = useState([1, 1]);\r\n const [totalClients, setTotalClients] = useState(0);\r\n const [editing, setEditing] = useState(false);\r\n const [confirmModal, setConfirmModal] = useState(false);\r\n const [invalidName, setInvalidName] = useState(false);\r\n const [working, setWorking] = useState(false);\r\n const [segments, setSegments] = useState([]);\r\n const [invalidSegment, setInvalidSegment] = useState(false);\r\n const [Segment, setSegment] = useState([]);\r\n const [bandera, setBandera] = useState(false);\r\n const [validateExcel, setValidateExcel] = useState(null);\r\n const [validClients, setValidClients] = useState(null);\r\n const [amountCodes, setAmountCodes] = useState(null);\r\n const [excelFile, setExcelFile] = useState(null);\r\n const [loadingFullScreen, setLoadingFullScreen] = useState(false);\r\n const [isLoading, setIsLoading] = useState(true);\r\n const [validData, setValidData] = useState(false);\r\n\r\n const clientValidatedModal = useModal();\r\n const [showClientTable, setShowClientTable] = useState(false);\r\n\r\n\r\n const handleExcelFileChange = (e) => {\r\n if(excelFile){\r\n console.log(\"se va a reset\");\r\n resetInputs();\r\n }\r\n const file = e.target.files[0];\r\n setExcelFile(file);\r\n };\r\n\r\n useEffect(() => {\r\n \r\n }, [excelFile])\r\n\r\n useEffect(() => {\r\n resetInputs();\r\n }, [segmentacion.SegmentId])\r\n\r\n const handleShowClientTable = () => {\r\n setShowClientTable(true);\r\n };\r\n\r\n const handleHideClientTable = () => {\r\n setShowClientTable(false);\r\n };\r\n\r\n // Método para verificar si la segmentación es válida\r\n const dataIsValid = () => {\r\n return this.state.segmentacion.nombre.length >= 3 && this.state.clients.length > 0\r\n }\r\n \r\n const onClicValidarExcel = async () => {\r\n setLoadingFullScreen(true);\r\n try {\r\n const res = await SegmentacionAPI.validateExcelBySegment(excelFile, segmentacion.SegmentId);\r\n \r\n console.log(segmentacion.SegmentId);\r\n if (res.status === 200) {\r\n const dataV = res.data.Validation;\r\n const validData = dataV.filter(item => item.IsValid === true);\r\n const data = res.data;\r\n data.Validation = validData;\r\n //data.Validation = dataClients;\r\n setValidateExcel(data);\r\n setValidClients(res.data.Clients);\r\n setAmountCodes(res.data.TotalValidClients);\r\n setValidData(true);\r\n } else {\r\n resetInputs();\r\n toast.error('validateExcel - ' + res.data.Message);\r\n setValidData(false);\r\n }\r\n } catch (err) {\r\n toast.error('validateExcel - ' + err.response.data.Message);\r\n resetInputs();\r\n } finally {\r\n setLoadingFullScreen(false);\r\n }\r\n }\r\n \r\n const resetInputs = () => {\r\n console.log(\"nuevo\");\r\n setValidateExcel(null);\r\n setValidClients(null);\r\n setAmountCodes(null);\r\n setExcelFile(null);\r\n setValidData(false);\r\n }\r\n\r\n \r\n \r\n const onClicBorrarExcel = () => {\r\n setExcelFile(null);\r\n resetInputs();\r\n };\r\n \r\n const downloadTemplateExcel = async () => {\r\n SegmentacionAPI.templateExcel().then(response => {\r\n const url = window.URL.createObjectURL(new Blob([response.data]));\r\n const link = document.createElement('a');\r\n link.href = url;\r\n let name = `PlantillaCargaPorUsuario`;\r\n link.setAttribute('download', `${name}.xlsx`);\r\n document.body.appendChild(link);\r\n link.click();\r\n }).catch(err => {\r\n toast.error(err.response.data.Message)\r\n }).finally(() => {\r\n });\r\n }\r\n\r\n // Método para verificar que la segmentación no tiene ningún filtro seleccionado\r\n const segmentationHasNoFilters = () => {\r\n return this.state.segmentacion.estado.length == 0 &&\r\n this.state.segmentacion.ciudad.length == 0 &&\r\n this.state.segmentacion.rangoEdad.length == 0 &&\r\n this.state.segmentacion.genero.length == 0 &&\r\n this.state.segmentacion.nivelLealtad.length == 0 &&\r\n this.state.segmentacion.horario.length == 0 &&\r\n this.state.segmentacion.diasSemana.length == 0 &&\r\n this.state.segmentacion.clasificacion == null &&\r\n this.state.segmentacion.temperatura.length == 0\r\n }\r\n\r\n useEffect(() => {\r\n setTimeout(() => {\r\n // let seg = segments.find(c => c.value === this.props.segmentacion.SegmentId);\r\n // this.setState({ bandera: true });\r\n }, 3000);\r\n }, []);\r\n \r\n useEffect(() => {\r\n\r\n console.log(\"entró\");\r\n setIsLoading(true);\r\n EmpresasAPI.getAllFilterSegments()\r\n .then((response) => {\r\n const tempSegmentsList = response.data.map((obj) => ({\r\n value: obj.SegmentId,\r\n label: getName(obj.Name),\r\n }));\r\n setSegments(tempSegmentsList);\r\n setIsLoading(false);\r\n })\r\n .catch((err) => {\r\n setIsLoading(false);\r\n if (err.response) toast.error(err.response.data.Message);\r\n else toast.error(ErrorMessages.SinConexion);\r\n });\r\n }, []);\r\n \r\n\r\n\r\n const getName = (Name) => {\r\n switch (Name) {\r\n case 'Andatti drive':\r\n return 'Andatti';\r\n case 'Drive':\r\n return 'Caffenio';\r\n case 'momento espresso':\r\n return 'Momento Espresso';\r\n default:\r\n return Name;\r\n }\r\n };\r\n \r\n\r\n \r\n \r\n\r\n\r\n // Método para preparar el objeto segmentación para su envío al API, se ajusta al modelo.\r\n const prepareSegmentacion = () => {\r\n var validExcel = validateExcel;\r\n \r\n const clientsArray = validExcel.Validation.map((client) => {\r\n return {\r\n ClientId: client.ClientId.toString(), // Asegúrate de que sea una cadena\r\n IsValid: true, // Aquí siempre se establece como true según tu ejemplo\r\n };\r\n });\r\n\r\n \r\n // Se crea la segmentación con todos los datos ya preparados\r\n var seg = {\r\n IdSegment: segmentacion.SegmentId,\r\n Name: segmentacion.nombre,\r\n SegmentId: segmentacion.SegmentId,\r\n Status: true,\r\n TotalClients: validExcel.TotalValidClients,\r\n Clients: clientsArray, \r\n IdTipoSegmentacion: segmentacion.SegmentId\r\n };\r\n\r\n console.log(\"valid\");\r\n console.log(seg);\r\n console.log(\"excel\");\r\n return seg;\r\n }\r\n\r\n\r\n return (\r\n
    \r\n
    \r\n
    \r\n
    \r\n \r\n
    \r\n\r\n {\r\n const updatedSegmentacion = { ...segmentacion };\r\n updatedSegmentacion.SegmentId = -1;\r\n let seg = {};\r\n \r\n if (e !== null) {\r\n updatedSegmentacion.SegmentId = e.value;\r\n seg = e;\r\n }\r\n setValidated(false);\r\n setSegmentacion(updatedSegmentacion);\r\n setSegment(seg);\r\n if (updatedSegmentacion.SegmentId !== undefined && updatedSegmentacion.SegmentId !== -1) {\r\n setInvalidSegment(false);\r\n }\r\n }}\r\n onBlur={(val) => {\r\n if (segmentacion.SegmentId === undefined || segmentacion.SegmentId === -1) {\r\n setInvalidSegment(true);\r\n }\r\n }}\r\n isClearable={true}\r\n id=\"idSegments\"\r\n noOptionsMessage={() => \"No hay opciones\"}\r\n options={segments}\r\n />\r\n\r\n {invalidSegment &&

    Segmentación es requerido.

    }\r\n
    \r\n
    \r\n
    \r\n
    \r\n
    \r\n\r\n
    \r\n \r\n {\r\n // Si el usuario cambia a otro campo o da click fuera se verifica si hay un valor ingresado válido.\r\n if (segmentacion.nombre.length === 0) {\r\n setInvalidName(true);\r\n }\r\n }}\r\n onChange={(e) => {\r\n let updatedSegmentacion = { ...segmentacion };\r\n updatedSegmentacion.nombre = e.currentTarget.value;\r\n // Se remueven los espacios en blanco en exceso.\r\n updatedSegmentacion.nombre = updatedSegmentacion.nombre.replace(/\\s{2,}/g, ' ');\r\n setSegmentacion(updatedSegmentacion);\r\n setInvalidName(updatedSegmentacion.nombre.length === 0);\r\n }}\r\n />\r\n \r\n {invalidName &&

    Nombre requerido

    }\r\n
    \r\n\r\n \r\n {segmentacion.SegmentId > 0 && (\r\n <>\r\n
    \r\n {/* Your content for SegmentId > 0 */}\r\n
    \r\n
    \r\n
    \r\n

    EXCEL

    \r\n
    \r\n
    \r\n \r\n
    \r\n \r\n
    \r\n
    \r\n
    \r\n \r\n Validar excel\r\n \r\n \r\n Borrar excel\r\n \r\n \r\n Descargar plantilla\r\n \r\n
    \r\n
    \r\n
    \r\n \r\n )}\r\n\r\n {validateExcel && (\r\n
    \r\n
    \r\n
    \r\n \r\n
    \r\n

    {validateExcel.TotalClients}

    \r\n
    \r\n
    \r\n
    \r\n \r\n
    \r\n

    {validateExcel.TotalValidClients}

    \r\n
    \r\n
    \r\n
    \r\n \r\n
    \r\n

    {validateExcel.TotalNotValidClients}

    \r\n
    \r\n
    \r\n
    \r\n
    \r\n

    \r\n { clientValidatedModal.toggle(); }}\r\n >\r\n Mostrar tabla de clientes\r\n \r\n

    \r\n
    \r\n
    \r\n
    \r\n
    \r\n )}\r\n\r\n
    \r\n
    \r\n

    \r\n {totalClients > 0 &&

    {`Total de clientes: ${totalClients}`}

    }\r\n

    \r\n

    \r\n {\r\n props.history.push({\r\n pathname: '/app/segmentaciones',\r\n state: props.location.state\r\n ? {\r\n currentPage: props.location.state.currentPage || 0,\r\n name: props.location.state.name || \"\"\r\n }\r\n : { currentPage: 1, name: \"\" }\r\n });\r\n }}>\r\n {validated ? \"Cancelar\" : \"Regresar\"}\r\n \r\n

    \r\n\r\n {validated && clients.length > 0 &&

    \r\n {\r\n if (!working) {\r\n if (segmentationHasNoFilters()) {\r\n setConfirmModal(true);\r\n } else props.save(prepareSegmentacion(), editing);\r\n }\r\n }}>\r\n Guardar\r\n \r\n

    }\r\n\r\n {!validated &&

    \r\n {\r\n props.validate(prepareSegmentacion());\r\n }}>\r\n Guardar\r\n \r\n

    }\r\n
    \r\n
    \r\n {confirmModal && ¿Está seguro que desea guardar la segmentación sin filtros?

    }\r\n isActive={confirmModal}\r\n willSave\r\n done={() => {\r\n if (!working) {\r\n setWorking(true);\r\n props.save(prepareSegmentacion(), editing);\r\n }\r\n }}\r\n cancel={() => setConfirmModal(false)}\r\n />}\r\n\r\n\r\n {\r\n return (\r\n
    \r\n \r\n
    \r\n )\r\n }}\r\n footer\r\n footerButtons={() => {\r\n return (\r\n
    \r\n \r\n
    \r\n )\r\n }}\r\n />\r\n \r\n
    \r\n );\r\n}\r\n\r\nSegmentacionFormExcel.defaultProps = {\r\n estados: [],\r\n ciudades: [],\r\n rangoEdades: [],\r\n generos: [],\r\n nivelesLealtad: [],\r\n horarios: [],\r\n diasSemana: [],\r\n clasificaciones: [],\r\n temperaturas: [],\r\n membresias: [],\r\n segments: []\r\n}\r\n\r\nexport default SegmentacionFormExcel;\r\n","import { apiUrl } from \"../constants\";\r\nimport axios from 'axios';\r\nimport middleware from '../middleware/auth';\r\n\r\nvar request = axios.create({\r\n baseURL: apiUrl,\r\n headers: {'Authorization': 'Bearer ' + localStorage.getItem('token'),'Content-Type':'application/json'}\r\n});\r\n\r\nvar requestfile = axios.create({\r\n responseType: 'blob',\r\n baseURL: apiUrl,\r\n headers: {'Authorization': 'Bearer ' + localStorage.getItem('token'),'Content-Type':'application/json'}\r\n})\r\n\r\nexport default class PromocionAPI{\r\n static getPromoQR(name = \"\", page = 1, active = 1){\r\n return middleware.hasAuth(() => request.get(`/PromoQR?name=${name}&page=${page}&active=${active}`));\r\n }\r\n\r\n static getPromotions(){\r\n return middleware.hasAuth(() => request.get(`/PromoQR/Promotions`));\r\n }\r\n\r\n static getPromoType(){\r\n return middleware.hasAuth(() => request.get(`/PromoQR/PromoType`));\r\n }\r\n\r\n static getQRType(){\r\n return middleware.hasAuth(() => request.get(`/PromoQR/QRType`));\r\n }\r\n\r\n static getPromoTypeSegmentation(){\r\n return middleware.hasAuth(() => request.get(`/PromoQR/PromoTypeSegmentation`));\r\n }\r\n\r\n static getSegmentations(){\r\n return middleware.hasAuth(() => request.get(`/PromoQR/Segmentations`));\r\n }\r\n\r\n static getPromotionDetails(idPromotion){\r\n return middleware.hasAuth(() => request.get(`/PromoQR/${idPromotion}`));\r\n }\r\n\r\n static getCodes(idPromotion, page = 1){\r\n return middleware.hasAuth(() => request.get(`/PromoQR/Codes/${idPromotion}?page=${page}`));\r\n }\r\n\r\n static savePromotion(body){\r\n return middleware.hasAuth(() => request.post(`/PromoQR/`,body));\r\n }\r\n\r\n static validateExcel(file){\r\n var fd = new FormData();\r\n fd.append(\"Excel\", file);\r\n return middleware.hasAuth(() => request.post(`/Segmentacion/ValidateExcel`, fd));\r\n }\r\n\r\n static templateExcel(){\r\n return middleware.hasAuth(() => requestfile.get(`/PromoQR/TemplateExcel`));\r\n }\r\n\r\n static downloadQrXlsx(idPromotion){\r\n return middleware.hasAuth(() => requestfile.get(`/PromoQR/${idPromotion}/download/excel`));\r\n }\r\n\r\n static downloadQrZip(idPromotion){\r\n return middleware.hasAuth(() => requestfile.get(`/PromoQR/${idPromotion}/download/zip`));\r\n }\r\n\r\n static uploadImage(file){\r\n var fd = new FormData();\r\n fd.append(\"Image\", file);\r\n return middleware.hasAuth(() => request.post(`/PromoQR/Upload/Image`, fd));\r\n }\r\n\r\n static deletePromotion(idPromotion){\r\n return middleware.hasAuth(() => request.delete(`/PromoQR/${idPromotion}`));\r\n }\r\n\r\n static savePrefix(body){\r\n return middleware.hasAuth(() => request.post(`/PromoQR/Prefix`,body));\r\n }\r\n \r\n}","import React from 'react';\r\nimport NoItems from '../../../../../util/noitems/NoItems';\r\nimport './style.css';\r\n\r\nexport default function TablaValidarCliente(props){\r\n //Objeto de la lista de validation\r\n// ClientId:'691430'\r\n// IsValid:true\r\n// LastName:'Chávez Daniel'\r\n// LoyaltyAccount:'12419000925486'\r\n// Name:'Andrea Gisel'\r\n// Reason:'Cliente válido'\r\n// Surname:''\r\n// TypeLoyaltyAccount:'Monedero AMIGO'\r\n const columnas = [\"ID\",\"Nombre\",\"Cuenta lealtad\",\"Tipo cuenta\",\"Razón\"];\r\n\r\n return (\r\n
    \r\n
    \r\n {props.validClients.length > 0 ?\r\n \r\n \r\n {columnas.map(c => )}\r\n \r\n \r\n {props.validClients.map((row, index) => {\r\n return (\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n )\r\n })}\r\n \r\n
    {c}
    {row.ClientId}{row.Name +' '+ row.LastName}{row.LoyaltyAccount}{row.TypeLoyaltyAccount}{row.Reason}
    \r\n : }\r\n {/* */}\r\n
    \r\n
    \r\n )\r\n}","import React, { useState, useEffect } from 'react';\r\nimport Select from 'react-select';\r\nimport { toast } from 'react-toastify';\r\nimport PromocionesAPI from '../../../../../services/Promotions';\r\nimport Loading from '../../../../util/loading/Loading';\r\nimport useModal from '../../../../../util/hooks/useModal';\r\nimport TablaValidarClientes from './components/TablaValidarClientes';\r\nimport PortalModal from '../../../../../util/portals/PortalModal';\r\nimport './style.css';\r\n\r\nexport default function SegmentoDataForm({ inputs, setInput, errors, handleSelectChange }) {\r\n \r\n const [typesSegmentation, setTypesSegmentation] = useState([]);\r\n const [segmentations, setSegmentations] = useState([]);\r\n const [isLoadingTypesSegmentation, setIsLoadingTypesSegmentation] = useState(false);\r\n const [isLoadingSegmentation, setIsLoadingSegmentation] = useState(false);\r\n const [validateExcel, setValidateExcel] = useState(null);\r\n const [loadingFullScreen, setLoadingFullScreen] = useState(false);\r\n const clientValidatedModal = useModal();\r\n const [selectedSegmentation, setSelectedSegmentation] = useState(null);\r\n\r\n const getTypesSegmentation = async () => {\r\n try {\r\n setIsLoadingTypesSegmentation(true)\r\n let typeSegmentationRes = await PromocionesAPI.getPromoTypeSegmentation()\r\n setIsLoadingTypesSegmentation(false)\r\n setTypesSegmentation(typeSegmentationRes.data)\r\n } catch (e) {\r\n console.log(e);\r\n }\r\n }\r\n\r\n useEffect(() => {\r\n getTypesSegmentation()\r\n }, [])\r\n\r\n useEffect(() => {\r\n (async () => {\r\n if (inputs.typeSegmentation && inputs.typeSegmentation.value && inputs.typeSegmentation.value === 1) {\r\n setIsLoadingSegmentation(true)\r\n let segmentationsRes = await PromocionesAPI.getSegmentations()\r\n setIsLoadingSegmentation(false)\r\n setSegmentations(segmentationsRes.data)\r\n setInput('excelFile', null)\r\n } else {\r\n setInput('segmentation', null)\r\n }\r\n if (!inputs.typeSegmentation) {\r\n setInput('excelFile', null)\r\n setInput('segmentation', null)\r\n setInput('amountCodes', null)\r\n }\r\n })()\r\n }, [inputs.typeSegmentation])\r\n\r\n useEffect(() => {\r\n (async () => {\r\n if (inputs.segmentation && inputs.segmentation.value) {\r\n var segmentation = segmentations.find(s => s.IdSegmentation === inputs.segmentation.value);\r\n setInput('amountCodes', segmentation.TotalClients);\r\n setSelectedSegmentation(segmentation)\r\n\r\n } else {\r\n setInput('amountCodes', null);\r\n }\r\n })()\r\n }, [inputs.segmentation])\r\n\r\n const onClicValidarExcel = async () => {\r\n setLoadingFullScreen(true);\r\n var validateExcelResult = PromocionesAPI.validateExcel(inputs.excelFile);\r\n validateExcelResult.then(res => {\r\n console.log(res)\r\n if (res.status === 200) {\r\n setValidateExcel(res.data);\r\n setInput('validClients', res.data.Clients);\r\n setInput('amountCodes', res.data.TotalValidClients);\r\n } else {\r\n setValidateExcel(null);\r\n setInput('validClients', null);\r\n setInput('amountCodes', null);\r\n setInput('excelFile', null)\r\n toast.error('validateExcel - ' + res.data.Message);\r\n }\r\n\r\n }).catch(err => {\r\n toast.error('validateExcel - ' + err.response.data.Message);\r\n setValidateExcel(null);\r\n setInput('amountCodes', null);\r\n setInput('validClients', null);\r\n setInput('excelFile', null)\r\n }).finally(() => {\r\n setLoadingFullScreen(false);\r\n });\r\n }\r\n\r\n const onClicBorrarExcel = async () => {\r\n\r\n setInput('excelFile', null)\r\n setValidateExcel(null);\r\n setInput('validClients', null);\r\n\r\n }\r\n\r\n // Método para descargar plantilla de Excel.\r\n const downloadTemplateExcel = async () => {\r\n setLoadingFullScreen(true);\r\n PromocionesAPI.templateExcel().then(response => {\r\n const url = window.URL.createObjectURL(new Blob([response.data]));\r\n const link = document.createElement('a');\r\n link.href = url;\r\n let name = `PlantillaCargaMasivaClientesPromoQR`;\r\n link.setAttribute('download', `${name}.xlsx`);\r\n document.body.appendChild(link);\r\n link.click();\r\n }).catch(err => {\r\n toast.error(err.response.data.Message)\r\n }).finally(() => {\r\n setLoadingFullScreen(false);\r\n });\r\n }\r\n\r\n /**\r\n * Función que se ejecuta al validar el archivo de excel\r\n */\r\n const handleSelectedFile = (e) => {\r\n\r\n let files = e.target.files\r\n let file = files[0]\r\n e.target.value = \"\";\r\n if (typeof file === 'undefined') {\r\n e.target.value = null;\r\n return false;\r\n }\r\n\r\n const EXTENSION = (file.name.split('.')[1]).toLowerCase();\r\n\r\n if (validateExtensionFile(EXTENSION) === false) {\r\n toast.error(\"Es necesario seleccionar un archivo válido.\");\r\n e.target.value = null;\r\n return false;\r\n } else {\r\n setInput(e.target.name, file);\r\n }\r\n }\r\n\r\n /**\r\n * Valida que solo permita los tipos deseados\r\n */\r\n const validateExtensionFile = (extension1) => {\r\n\r\n var extensiones_permitidas = [\"xls\", \"xlsx\"];\r\n if (extensiones_permitidas.indexOf(extension1) == -1) {\r\n return false;\r\n }\r\n return true;\r\n }\r\n\r\n return (\r\n
    \r\n
    \r\n
    \r\n
    \r\n \r\n
    \r\n handleSelectChange(value, event, true)}\r\n noOptionsMessage={() => \"No hay opciones\"}\r\n isLoading={isLoadingTypesSegmentation}\r\n options={typesSegmentation.map(ts => { return { value: ts.PromoTypeSegmentationId, label: ts.Description } })}\r\n />\r\n
    \r\n {errors.typeSegmentation &&

    Tipo de segmentación requerido

    }\r\n
    \r\n {(inputs.typeSegmentation && inputs.typeSegmentation.value === 1) &&
    \r\n \r\n
    \r\n handleSelectChange(value, event, true)}\r\n noOptionsMessage={() => \"No hay opciones\"}\r\n isLoading={isLoadingSegmentation}\r\n options={segmentations.map(s => { return { value: s.IdSegmentation, label: s.Name } })}\r\n />\r\n
    \r\n {errors.segmentation &&

    Segmentación requerido

    }\r\n
    }\r\n {inputs.segmentation && selectedSegmentation &&
    \r\n \r\n
    \r\n

    {selectedSegmentation.TotalClients}

    \r\n
    \r\n
    \r\n }\r\n\r\n
    \r\n\r\n
    \r\n {(inputs.typeSegmentation && inputs.typeSegmentation.value === 2) &&
    \r\n
    \r\n
    \r\n \r\n
    \r\n \r\n
    \r\n
    \r\n
    \r\n
    \r\n

    \r\n \r\n Validar excel\r\n \r\n

    \r\n

    \r\n \r\n Borrar excel\r\n \r\n

    \r\n

    \r\n \r\n Descargar plantilla\r\n \r\n

    \r\n
    \r\n
    \r\n {validateExcel &&
    \r\n
    \r\n
    \r\n \r\n
    \r\n

    {validateExcel.TotalClients}

    \r\n
    \r\n
    \r\n
    \r\n \r\n
    \r\n

    {validateExcel.TotalValidClients}

    \r\n
    \r\n
    \r\n
    \r\n \r\n
    \r\n

    {validateExcel.TotalNotValidClients}

    \r\n
    \r\n
    \r\n
    \r\n
    \r\n

    \r\n { clientValidatedModal.toggle(); }}\r\n >\r\n Mostrar tabla de clientes\r\n \r\n

    \r\n
    \r\n
    \r\n
    \r\n
    }\r\n\r\n\r\n
    \r\n\r\n
    }\r\n\r\n {\r\n return (\r\n
    \r\n \r\n
    \r\n )\r\n }}\r\n footer\r\n footerButtons={() => {\r\n return (\r\n
    \r\n \r\n
    \r\n )\r\n }}\r\n />\r\n \r\n
    \r\n );\r\n}","import React, { useState } from 'react';\r\nconst useForm = (callback) => {\r\n const [inputs, setInputs] = useState({});\r\n const [errors, setErrors] = useState({});\r\n\r\n // Método para el cual invocar el callback desde cualquier component donde se use el hook\r\n const handleSubmit = (event) => {\r\n if (event) event.preventDefault();\r\n callback();\r\n }\r\n\r\n // Método para procesar el cambio de un input, el valor se guarda en el atributo con el mismo nombre que el campo\r\n const handleInputChange = (event, required = false) => {\r\n event.persist();\r\n setInputs(inputs => ({...inputs, [event.target.name]: event.target.value}));\r\n if(required) setErrors(errors => ({...errors, [event.target.name]: !!!event.target.value}));\r\n }\r\n\r\n // Método para procesar el cambio de un select (react-select), el valor se guarda en el atributo con el mismo nombre que el campo\r\n const handleSelectChange = (value, event, required = false) => {\r\n setInputs(inputs => ({...inputs, [event.name]: value}));\r\n if (required) setErrors(errors => ({...errors, [event.name]: !!!value}));\r\n }\r\n\r\n // Método para obtener un input dado su nombre, si no se propociona nombre se regresan todos.\r\n const getInputs = (name = \"\") => {\r\n if (name.length > 0){\r\n return inputs[name];\r\n }\r\n return inputs;\r\n }\r\n\r\n // Método para settear un valor de manera manual\r\n const setInput = (name, value) => {\r\n setInputs(inputs => ({...inputs, [name]:value}));\r\n }\r\n\r\n // Método para settear error de un atributo\r\n const setError = (name, value) => {\r\n setErrors(errors => ({...errors, [name]: value}));\r\n }\r\n\r\n // Método para limpiar cualquier dato ingresado al formulario.\r\n const cleanInputs = () => {\r\n setInputs({});\r\n }\r\n\r\n // Método para reemplazar los valores en el formulario\r\n const replaceInputs = (body) => {\r\n setInputs(body);\r\n }\r\n\r\n return {\r\n handleSubmit,\r\n handleInputChange,\r\n handleSelectChange,\r\n replaceInputs,\r\n inputs,\r\n setInput,\r\n setError,\r\n getInputs,\r\n cleanInputs,\r\n errors\r\n };\r\n}\r\nexport default useForm;","import * as React from 'react';\r\nimport SegmentacionAPI from '../../../../services/Caffenio App/Segmentacion';\r\nimport { toast } from 'react-toastify';\r\nimport to from '../../../../util/to';\r\nimport Loading from '../../../util/loading/Loading';\r\nimport SegmentacionFormExcel from './components/SegmentacionFormExcel';\r\nimport SegmentoDataForm from '../../../Promociones/NuevaPromocion/components/components/SegmentoDataForm';\r\nimport useForm from '../../../../util/hooks/useForm';\r\n\r\nclass NuevaSegmentacionUsuario extends React.Component {\r\n constructor(props){\r\n super(props);\r\n\r\n this.state = {\r\n data: {\r\n estados: [],\r\n ciudades: [],\r\n rangoEdades: [],\r\n generos: [],\r\n nivelesLealtad: [],\r\n horarios: [],\r\n diasSemana: [],\r\n clasificaciones: [],\r\n temperaturas: [],\r\n membresias: [],\r\n },\r\n segmentacion: null,\r\n isValid: false,\r\n totalClients: 0,\r\n loading: false\r\n }\r\n\r\n if(this.props.match.params.id){\r\n SegmentacionAPI.getSegmentacion(this.props.match.params.id).then(response => {\r\n this.prepareSegmentationForEdit(response.data);\r\n }).catch(err => {\r\n toast.error(\"Hubo un error al cargar la información, intente más tarde.\")\r\n });\r\n }\r\n }\r\n\r\n \r\n componentWillMount(){\r\n this.loadData();\r\n }\r\n\r\n \r\n // Se obtiene la información para los campos de segmentaciones de manera asíncrona y se guardan en el state.\r\n loadData = async () => {\r\n let err, rangoEdad, estados, generos,horarios, nivelesLealtad, diasSemana, clasificaciones, membresias;\r\n }\r\n\r\n // Se prepara la segmentación para su edición.\r\n prepareSegmentationForEdit = (segmentacion) => {\r\n var temp_seg = segmentacion;\r\n\r\n temp_seg.estado = temp_seg.States.map(e => {return {value: e.StateId, label: e.Name}})\r\n\r\n let classif = this.state.data.clasificaciones.find(c => c.IdFilterFamilyProduct === temp_seg.IdClassification)\r\n temp_seg.ciudad = temp_seg.Cities.map(c => {return {value: c.CityId, label: c.Name}})\r\n temp_seg.rangoEdad = temp_seg.AgeRanges.map(r => {return {value: r.IdFilterAge, label: r.Description}})\r\n temp_seg.horario = temp_seg.PurchaseSchedules.map(h => {return {value: h.IdFilterPurchaseSchedule, label: h.Description}})\r\n temp_seg.clasificacion = classif ? {value: temp_seg.IdClassification, label: classif.Name} : null\r\n temp_seg.temperatura = temp_seg.TypesProducts.map(t => {return {value: t.IdFilterTypeProductModel, label: t.Description}});\r\n temp_seg.nombre = temp_seg.Name;\r\n temp_seg.refill = temp_seg.Refill;\r\n temp_seg.genero = temp_seg.Genders;\r\n temp_seg.nivelLealtad = temp_seg.LoyaltyAccounts;\r\n temp_seg.diasSemana = temp_seg.PurchaseDays;\r\n temp_seg.membresias = temp_seg.MembershipTypes;\r\n this.setState({segmentacion: temp_seg});\r\n }\r\n\r\n\r\n\r\n // Se realiza la petición al API para guardar o actualizar la segmentación recibida.\r\n // @param segmentacion: Objeto de segmentación a guardar o actualizar\r\n // @param editing: Bandera que indica si se guardará o se editará una segmentación ya existente.\r\n nuevaSegmentacionUsuario = (segmentacion, editing) => {\r\n if (!editing){\r\n SegmentacionAPI.createFile(segmentacion).then(response => {\r\n toast.success(\"Segmentación creada correctamente.\")\r\n this.props.history.push({\r\n pathname: '/app/segmentaciones',\r\n state: this.props.location.state ? {currentPage: this.props.location.state.currentPage || 0, name: this.props.location.state.name || \"\"} : {currentPage: 1, name: \"\"}\r\n });\r\n }).catch(err =>{\r\n toast.error(err.response.data.Message);\r\n })\r\n }else{\r\n SegmentacionAPI.editSegmentacion(segmentacion).then(response => {\r\n toast.success(\"Segmentación actualizada correctamente.\")\r\n this.props.history.push({\r\n pathname: '/app/segmentaciones',\r\n state: this.props.location.state ? {currentPage: this.props.location.state.currentPage || 0, name: this.props.location.state.name || \"\"} : {currentPage: 1, name: \"\"}\r\n });\r\n }).catch(err => {\r\n toast.error(err.response.data.Message);\r\n })\r\n }\r\n \r\n }\r\n\r\n // Método para consumir el API para validar la segmentación.\r\n validarSegmentacion = (segmentacion) => {\r\n this.setState({loading: true}, () =>{\r\n SegmentacionAPI.createFile(segmentacion).then(response => {\r\n toast.success(\"Segmentación creada correctamente.\")\r\n this.props.history.push({\r\n pathname: '/app/segmentaciones',\r\n state: this.props.location.state ? {currentPage: this.props.location.state.currentPage || 0, name: this.props.location.state.name || \"\"} : {currentPage: 1, name: \"\"}\r\n });\r\n }).catch(err =>{\r\n toast.error(err.response.data.Message);\r\n })\r\n })\r\n }\r\n\r\n // Método para, ante cualquier cambio hecho en una segmentación ya validada, requerir una nueva validación de la segmentación \r\n invalidate = () => {\r\n this.setState({isValid: false});\r\n }\r\n\r\n render(){\r\n return (\r\n
    \r\n
    \r\n
    \r\n
    \r\n \r\n {\r\n this.props.history.push({\r\n pathname: '/app/segmentaciones',\r\n state: this.props.location.state ? {currentPage: this.props.location.state.currentPage || 0, name: this.props.location.state.name || \"\"} : {currentPage: 1, name: \"\"}\r\n });\r\n }}>\r\n \r\n {this.props.match.params.id ? \"Editar segmentación\" : \"Nueva segmentación\"}\r\n
    \r\n
    \r\n \r\n
    \r\n this.nuevaSegmentacionUsuario(seg, editing)}\r\n validate={(seg) => this.validarSegmentacion(seg)}\r\n {...this.state.data}\r\n isValid ={this.state.isValid}\r\n segmentacion={this.state.segmentacion}\r\n editing={this.state.segmentacion !== null}\r\n invalidate={this.invalidate}\r\n totalClients={this.state.totalClients}\r\n />\r\n
    \r\n
    \r\n \r\n
    \r\n )\r\n }\r\n}\r\n\r\nexport default NuevaSegmentacionUsuario;","import * as React from 'react';\r\nimport FieldAddons from '../field/Field+Addons';\r\n\r\nclass SearchFormV2 extends React.Component {\r\n\r\n timer = null;\r\n propName = null\r\n\r\n constructor(props){\r\n super(props);\r\n this.state = {\r\n fetching: false,\r\n nameSearch: \"\"\r\n }\r\n this.propName = this.props.name;\r\n }\r\n\r\n // Se registra un escuchador del input de tipo Search\r\n componentDidMount(){\r\n document.addEventListener(\"search\", (e) => {\r\n this.setState({nameSearch: e.target.value}, () => {\r\n this.props.search(e.target.value);\r\n })\r\n \r\n }, false);\r\n\r\n }\r\n // Se elimina el escuchador.\r\n componentWillUnmount(){\r\n document.removeEventListener(\"search\", () => {}, false);\r\n }\r\n\r\n render(){\r\n // Manipulación del nombre recibido por props en caso de ser necesario la restauración de búsqueda y página actual en tabla\r\n if (this.propName && this.state.nameSearch !== this.propName){\r\n this.setState({nameSearch: this.propName}, () => this.propName = null)\r\n }\r\n return (\r\n
    \r\n
    \r\n
    \r\n
    \r\n
    \r\n
    \r\n

    \r\n \r\n {\r\n let nameSearch = {...this.state.nameSearch};\r\n nameSearch = e.currentTarget.value;\r\n nameSearch = nameSearch.replace(/\\s{2,}/g, ' ');\r\n // Se elimina el timer en caso de que el usuario siga tecleando\r\n if (this.timer) clearTimeout(this.timer);\r\n this.setState({nameSearch: nameSearch}, () => {\r\n // Cuando el usuario termina de escribir se hace la petición de búsqueda\r\n this.timer = setTimeout(() => this.props.search(nameSearch), 500);\r\n });\r\n }}\r\n />\r\n \r\n

    \r\n

    \r\n \r\n

    \r\n
    \r\n \r\n
    \r\n
    \r\n
    \r\n
    \r\n
    \r\n )\r\n }\r\n}\r\n\r\nexport default SearchFormV2;","import React, { useState, useEffect } from 'react';\r\nimport NoItems from '../../../util/noitems/NoItems';\r\nimport ServerPagination from '../../../util/pagination/ServerPagination';\r\nimport Loading from '../../../util/loading/Loading';\r\nimport './style.css';\r\nimport moment from 'moment';\r\n\r\nexport default function TablaNotificaciones(props){\r\n const columnas = [\"Nombre\",\"Tipo\",\"Categoría\", \"Fecha creación\", \"Estatus\", \"Acciones\"];\r\n const [totalPages, setTotalPages] = useState(0);\r\n const [currentPage, setCurrentPage] = useState(0);\r\n const [loading, setLoading] = useState(false);\r\n\r\n useEffect(() => {\r\n if(props.currentPage !== currentPage || props.totalPages !== totalPages){\r\n setCurrentPage(props.currentPage);\r\n setTotalPages(props.totalPages);\r\n }\r\n\r\n if(props.loading !== loading) setLoading(props.loading);\r\n },[props.totalPages, props.currentPage])\r\n\r\n const actions = (notificacion) => {\r\n return (\r\n \r\n \r\n \r\n \r\n )\r\n \r\n }\r\n\r\n return (\r\n
    \r\n
    \r\n {props.notificaciones.length > 0 ?\r\n \r\n \r\n {columnas.map(c => )}\r\n \r\n \r\n {props.notificaciones.map((row, index) => {\r\n return (\r\n {\r\n e.stopPropagation();\r\n props.history.push(`/app/notificaciones/${row.NotificationId}/detalle`)\r\n }}>\r\n \r\n \r\n \r\n \r\n \r\n {actions(row)}\r\n \r\n )\r\n })}\r\n \r\n
    {c}
    {row.Name}{row.TypeName}{row.CategoryName}{moment(row.CreationDate).format('DD/MM/YYYY HH:mm')}\r\n { }}\r\n />\r\n
    \r\n : props.loading ? : }\r\n \r\n
    \r\n
    \r\n )\r\n}","import { apiUrl } from \"../../constants\";\r\nimport axios from 'axios';\r\nimport middleware from '../../middleware/auth';\r\nimport moment from \"moment\";\r\n\r\nvar request = axios.create({\r\n baseURL: apiUrl,\r\n headers: {'Authorization': 'Bearer ' + localStorage.getItem('token'),'Content-Type':'application/json'}\r\n})\r\nexport default class NotificacionAPI {\r\n\r\n static getNotificaciones(name = \"\", page = 1){\r\n return middleware.hasAuth(() => request.get(`Notification?name=${name}&page=${page}`));\r\n }\r\n\r\n static getSegmentaciones(){\r\n return middleware.hasAuth(() => request.get(`/Notification/Segmentations/`));\r\n }\r\n\r\n static getNotification(id){\r\n return middleware.hasAuth(() => request.get(`Notification/${id}`));\r\n }\r\n\r\n static updateNotification(body){\r\n return middleware.hasAuth(() => request.put(`Notification/`, body));\r\n }\r\n\r\n static saveNotification(body){\r\n return middleware.hasAuth(() => request.post(`Notification/`, body));\r\n }\r\n\r\n static changeNotificationStatus(id, value){\r\n return middleware.hasAuth(() => request.post(`Notification/Active`, {NotificationId: id, Status: value}));\r\n }\r\n\r\n static uploadImage(file){\r\n var fd = new FormData();\r\n fd.append(\"Image\", file);\r\n return middleware.hasAuth(() => request.post(`/Notification/Upload/Image/`, fd));\r\n }\r\n\r\n static uploadImageBySegment(file, segment){\r\n var fd = new FormData();\r\n fd.append(\"Image\", file);\r\n return middleware.hasAuth(() => request.post(`/Notification/Upload/Image/${segment}`, fd));\r\n }\r\n\r\n static getNotificationTypes() {\r\n return middleware.hasAuth(() => request.get(`/Notification/Types/`));\r\n }\r\n\r\n static getComparators(){\r\n return middleware.hasAuth(() => request.get(`/Notification/FilterTypes/`));\r\n }\r\n\r\n static getCategoriesByType(typeId){\r\n return middleware.hasAuth(() => request.get(`/Notification/Categories/${typeId}`));\r\n }\r\n\r\n static getBalanceTypes(){\r\n return middleware.hasAuth(() => request.get(`/Notification/BalanceTypes`));\r\n }\r\n\r\n static getVisitPeriods(){\r\n return middleware.hasAuth(() => request.get(`/Notification/VisitPeriodsTime`));\r\n }\r\n\r\n static getActions(){\r\n return middleware.hasAuth(() => request.get(`/Notification/Actions`));\r\n }\r\n\r\n static getScreens(){\r\n return middleware.hasAuth(() => request.get(`/Notification/Screens`));\r\n }\r\n\r\n static getScreensBySegment(segment){\r\n return middleware.hasAuth(() => request.get(`/Notification/Screens/${segment}`));\r\n }\r\n\r\n static getTags(category){\r\n return middleware.hasAuth(() => request.get(`/Notification/Tag/${category}`));\r\n }\r\n\r\n static deleteNotification(id){\r\n return middleware.hasAuth(() => request.delete(`/Notification/${id}`));\r\n }\r\n\r\n // Agenda\r\n static getEvents(starDate, endDate){\r\n let start = moment(starDate).format('YYYY-MM-DD')\r\n let end = moment(endDate).format('YYYY-MM-DD')\r\n return middleware.hasAuth(() => request.get(`/Notification/Schedule/Calendar?dateStart=${start}&dateEnd=${end}`));\r\n }\r\n\r\n static getNotificationEvents(notificationId, page = 1){\r\n return middleware.hasAuth(() => request.get(`/Notification/${notificationId}/Schedule?page=${page}`));\r\n }\r\n\r\n static changeNotificationEventStatus(notifScheduleId, status){\r\n return middleware.hasAuth(() => request.post(`/Notification/Schedule/${notifScheduleId}`, {NotificationScheduleId: notifScheduleId, Active: status}));\r\n }\r\n\r\n static getNotificationEventsHistory(notificationId, page = 1){\r\n return middleware.hasAuth(() => request.get(`/Notification/${notificationId}/History?page=${page}`));\r\n }\r\n\r\n static getFrequencyEventTypes(){\r\n return middleware.hasAuth(() => request.get(`/Notification/Schedule/Types`));\r\n }\r\n\r\n static getFrequentTypes(){\r\n return middleware.hasAuth(() => request.get(`/Notification/Schedule/FrequentTypes`));\r\n }\r\n\r\n static getFrequentMonthlyTypes(){\r\n return middleware.hasAuth(() => request.get(`/Notification/Schedule/FrequentTypes/Monthly`));\r\n }\r\n\r\n static ScheduleUniqueEvent(body){\r\n return middleware.hasAuth(() => request.post(`/Notification/Schedule/UniqueEvent`, body));\r\n }\r\n\r\n static ScheduleDailyEvent(body){\r\n return middleware.hasAuth(() => request.post(`/Notification/Schedule/FrequentEvent/Daily`, body));\r\n }\r\n\r\n static ScheduleWeeklyEvent(body){\r\n return middleware.hasAuth(() => request.post(`/Notification/Schedule/FrequentEvent/Weekly`, body));\r\n }\r\n\r\n static ScheduleMonthlyEvent(body){\r\n return middleware.hasAuth(() => request.post(`/Notification/Schedule/FrequentEvent/Monthly`, body));\r\n }\r\n\r\n static SendTestNotification(id, identifier){\r\n return middleware.hasAuth(() => request.post(`/Notification/${id}/Schedule/Test/${identifier}`));\r\n }\r\n\r\n static deleteEvent(id){\r\n return middleware.hasAuth(() => request.delete(`/Notification/Schedule/${id}`));\r\n }\r\n}","import React, { useState, useEffect } from 'react';\r\nimport SearchFormV2 from '../../util/searchform/SearchFormV2';\r\nimport TablaNotificaciones from './components/TablaNotificaciones';\r\nimport SegmentacionAPI from '../../../services/Caffenio App/Segmentacion';\r\nimport { toast } from 'react-toastify';\r\nimport NotificacionAPI from '../../../services/Caffenio App/Notificacion';\r\nimport useModal from '../../../util/hooks/useModal';\r\nimport PortalModal from '../../../util/portals/PortalModal';\r\n\r\nexport default function Notificaciones({history}){\r\n const statusModal = useModal();\r\n const deleteModal = useModal();\r\n\r\n const [nameSearch, setNameSearch] = useState(\"\");\r\n const [notificaciones, setNotificaciones] = useState([]);\r\n const [totalPages, setTotalPages] = useState(0);\r\n const [currentPage, setCurrentPage] = useState(1);\r\n const [loading, setLoading] = useState(false);\r\n const [currentNotif, setCurrentNotif] = useState(null);\r\n\r\n const getNotificaciones = async (name = \"\", page = 1) => {\r\n setLoading(true);\r\n const res = await NotificacionAPI.getNotificaciones(name, page);\r\n console.log(res);\r\n if(res){\r\n setNotificaciones(res.data.Results);\r\n setTotalPages(res.data.TotalPages)\r\n setCurrentPage(res.data.CurrentPage);\r\n }else{\r\n toast.error(\"Hubo un error al obtener las notificaciones.\")\r\n }\r\n \r\n setLoading(false);\r\n }\r\n\r\n const changeStatus = async () => {\r\n let res = await NotificacionAPI.changeNotificationStatus(currentNotif.NotificationId, !currentNotif.Status);\r\n if(res.data && res.data.Success){\r\n statusModal.toggle();\r\n toast.success(\"Estatus actualizado.\")\r\n getNotificaciones(nameSearch, currentPage);\r\n }else{\r\n toast.error(\"No se pudo actualizar el estatus de la notificación, intente más tarde.\")\r\n }\r\n }\r\n\r\n const deleteNotification = () => {\r\n NotificacionAPI.deleteNotification(currentNotif.NotificationId).then(response => {\r\n toast.success(response.data.Message);\r\n getNotificaciones();\r\n }).catch(err => {\r\n toast.error(err.response.data.Message);\r\n }).finally(() => {\r\n setCurrentNotif(null);\r\n deleteModal.toggle();\r\n })\r\n }\r\n\r\n useEffect(() => {\r\n getNotificaciones(nameSearch, currentPage);\r\n },[nameSearch, currentPage])\r\n\r\n return (\r\n
    \r\n

    Notificaciones

    \r\n {\r\n history.push({\r\n pathname: '/app/notificaciones/nueva',\r\n state: {currentPage: currentPage, name: nameSearch}\r\n });\r\n }}\r\n search={(text) => setNameSearch(text)}\r\n name={nameSearch}\r\n tooltip={\"Crear una nueva notificación\"}\r\n newBtnTitle={\"Nueva notificación\"}\r\n />\r\n
    \r\n {\r\n setCurrentNotif(notif);\r\n statusModal.toggle();\r\n } }\r\n goToPage={(page) => setCurrentPage(page)}\r\n edit={(id) => history.push({\r\n pathname: `/app/notificaciones/editar/${id}`,\r\n state: {currentPage: currentPage, name: nameSearch}\r\n })}\r\n delete={(notif) => {\r\n setCurrentNotif(notif)\r\n deleteModal.toggle();\r\n }}\r\n loading={loading}\r\n history={history}\r\n />\r\n {\r\n return (\r\n \r\n

    {`¿Estás seguro que deseas ${currentNotif.Status ? \"desactivar\" : \"activar\"} la notificación?`}

    \r\n {currentNotif.Status &&

    Cualquier evento en la agenda de la notificación no será procesado durante el envío de notificaciones.

    }\r\n
    \r\n )\r\n }}\r\n footer\r\n footerButtons={() => {\r\n return (\r\n
    \r\n \r\n \r\n
    \r\n )\r\n }}\r\n />\r\n {\r\n return (\r\n \r\n

    {`¿Estás seguro que deseas eliminar la notificación?`}

    \r\n
    \r\n )\r\n }}\r\n footer\r\n footerButtons={() => {\r\n return (\r\n
    \r\n \r\n \r\n
    \r\n )\r\n }}\r\n />\r\n
    \r\n )\r\n}","import React from 'react';\r\nimport './Chip.css';\r\nimport PropTypes from 'prop-types';\r\n\r\n/**\r\n * Componente de utilería encargado de dibujar algún elemento dentro de un Chip\r\n * incluyendo un botón para eliminar y ser capaz de realizar una acción al hacerle click.\r\n */\r\nclass Chip extends React.Component{\r\n render(){\r\n return (\r\n
    \r\n {this.props.label}\r\n {this.props.closeable && ×}\r\n
    \r\n )\r\n }\r\n}\r\n\r\n// Definición de los tipos y su dependencia de las distintas props que recibe el componente.\r\nChip.propTypes = {\r\n closeable: PropTypes.bool,\r\n label: PropTypes.string.isRequired,\r\n onDelete: PropTypes.func.isRequired\r\n}\r\n\r\n// Definición de los valores por default de las props en caso de no ser recibidas por el padre.\r\nChip.defaultProps = {\r\n closeable: true,\r\n className: \"\",\r\n dataTooltip: \"\",\r\n onClick: () => {},\r\n \r\n}\r\n\r\nexport default Chip;","import React, { useState, useEffect, useRef } from 'react';\r\nimport useForm from '../../../../../../util/hooks/useForm';\r\nimport Chip from '../../../../../util/chip/Chip';\r\nimport NotificacionAPI from '../../../../../../services/Caffenio App/Notificacion';\r\n\r\nexport default function NotificacionDataForm({inputs, setInput, errors, handleInputChange, disabled, notification}){\r\n const [tags, setTags] = useState([])\r\n\r\n // Efecto a realizar cuando cambia el valor de la prop disabled\r\n useEffect(() => {\r\n if (!disabled){\r\n getData();\r\n }\r\n }, [disabled])\r\n\r\n useEffect(() => {\r\n if(notification){\r\n setInput('Title', notification.Title);\r\n setInput('Description', notification.Description);\r\n }\r\n }, [notification])\r\n\r\n const getData = async () => {\r\n if(inputs.category && inputs.category.value){\r\n let res = await NotificacionAPI.getTags(inputs.category.value);\r\n if(res.data){\r\n setTags(res.data);\r\n }\r\n }\r\n \r\n }\r\n\r\n const generatePreview = (name) => {\r\n var preview = `${inputs[name]}`\r\n \r\n preview = preview.split('[NOMBRE_CLIENTE]').join('José');\r\n \r\n return preview;\r\n }\r\n\r\n return (\r\n
    \r\n
    \r\n
    \r\n
    \r\n
    \r\n
    \r\n handleInputChange(e, true)}\r\n required\r\n />\r\n
    \r\n
    \r\n {errors.Title &&

    Título requerido

    }\r\n
    \r\n
    \r\n {tags.map((tag, index) => \r\n {\r\n setInput(\"Title\", `${inputs.Title ? inputs.Title+\" \" : \"\"}${tag.Tag}`.replace(/\\s{2,}/g, ' '))\r\n }}\r\n label={tag.Name} \r\n closeable={false}\r\n />\r\n )}\r\n
    \r\n
    \r\n
    \r\n
    \r\n Previsualización\r\n {inputs.Title && inputs.Title.length > 0 &&

    {generatePreview('Title')}

    }\r\n
    \r\n
    \r\n
    \r\n
    \r\n
    \r\n
    \r\n handleInputChange(e, true)}\r\n required\r\n />\r\n
    \r\n
    \r\n {errors.Description &&

    Título requerido

    }\r\n
    \r\n
    \r\n {tags.map((tag, index) => \r\n {\r\n setInput(\"Description\", `${inputs.Description ? inputs.Description+\" \" : \"\"}${tag.Tag}`.replace(/\\s{2,}/g, ' '))\r\n }}\r\n label={tag.Name} \r\n closeable={false}\r\n />\r\n )}\r\n
    \r\n
    \r\n
    \r\n
    \r\n Previsualización\r\n {inputs.Description && inputs.Description.length > 0 &&

    {generatePreview('Description')}

    }\r\n
    \r\n
    \r\n )\r\n}","export const validateExtensionFile = (fileName) => {\r\n\r\n // Versión chila y funcional de sacar la extensión de un archivo. Se deja como comentario nomas por fachoso. (8\r\n // let ext = fileName.split(\"\").reverse().join(\"\").split('.')[0].split('').reverse().join(\"\");\r\n let splittedName = fileName.split(\".\")\r\n let ext = `${splittedName[splittedName.length - 1]}`.toLowerCase();\r\n var extensiones_permitidas = [\"png\", \"jpg\", \"jpeg\", \"gif\"];\r\n if(extensiones_permitidas.indexOf(ext) == -1){\r\n return false;\r\n }\r\n\r\n return true;\r\n}\r\n\r\nfunction arrayMoveMutate(array, from, to) {\r\n\tconst startIndex = to < 0 ? array.length + to : to;\r\n\tconst item = array.splice(from, 1)[0];\r\n\tarray.splice(startIndex, 0, item);\r\n};\r\n\r\nfunction arrayMove (array, from, to) {\r\n\tarray = array.slice();\r\n\tarrayMoveMutate(array, from, to);\r\n\treturn array;\r\n};\r\n\r\n/**\r\n * Descarga automatica del achivo en el navegador.\r\n * @param {String} filename - Nombre del archivo.\r\n * @param {Data} text - Datos a convertir.\r\n * @param {String} mimeType - Extension del archivo.\r\n */\r\nexport const autoDownload = (filename, text, mimeType = 'text/plain') => {\r\n let element = document.createElement('a');\r\n element.setAttribute('href', `data:${mimeType};charset=utf-8,${encodeURIComponent(text)}`);\r\n element.setAttribute('download', filename);\r\n \r\n element.style.display = 'none';\r\n document.body.appendChild(element);\r\n \r\n element.click();\r\n \r\n document.body.removeChild(element);\r\n}","import React, { useEffect } from 'react';\r\nimport { validateExtensionFile } from '../../../../../../util/util';\r\nimport Field from '../../../../../util/field/Field';\r\nimport { useState } from 'react';\r\nimport Chip from '../../../../../util/chip/Chip';\r\nimport NotificacionAPI from '../../../../../../services/Caffenio App/Notificacion';\r\n\r\nexport default function DetalleDescriptionForm({inputs, setInput,setError, errors, handleInputChange, notification}){\r\n const [fileURL, setFileURL] = useState(\"\");\r\n const [tags, setTags] = useState([])\r\n\r\n useEffect(() => {\r\n getData();\r\n }, [])\r\n\r\n const getData = async () => {\r\n if(inputs.category && inputs.category.value || notification.NotificationCategoryId){\r\n let res = await NotificacionAPI.getTags(inputs.category ? inputs.category.value : notification.NotificationCategoryId);\r\n if(res.data){\r\n setTags(res.data);\r\n }\r\n }\r\n }\r\n\r\n useEffect(() => {\r\n if(inputs.action && inputs.action.value === 3 && notification){\r\n setInput('detailDescription', notification.DetailDescription);\r\n setFileURL(notification.UrlImageNotification);\r\n setInput('urlImg', notification.UrlImageNotification);\r\n }\r\n }, [notification])\r\n\r\n useEffect(() => {\r\n setInput('link', \"\");\r\n setError('link', null);\r\n return () => {\r\n setFileURL(\"\");\r\n setInput('detailDescription', \"\");\r\n setInput('urlImg', null);\r\n setInput('image', null);\r\n setError('image', null);\r\n setError('detailDescription', null);\r\n }\r\n }, [])\r\n\r\n console.log(tags);\r\n\r\n return (\r\n
    \r\n
    \r\n \r\n
    \r\n handleInputChange(e, true)}\r\n required\r\n />\r\n
    \r\n {errors.detailDescription &&

    Descripción detalle requerida

    }\r\n {inputs.detailDescription &&

    450 ? \"is-danger\" : \"is-link\" }`}>{`${500 - inputs.detailDescription.length} caracteres restantes.`}

    }\r\n
    \r\n
    \r\n {tags.map((tag, index) => \r\n {\r\n setInput(\"detailDescription\", `${inputs.detailDescription ? inputs.detailDescription+\" \" : \"\"}${tag.Tag}`.replace(/\\s{2,}/g, ' '))\r\n }}\r\n label={tag.Name} \r\n closeable={false}\r\n />\r\n )}\r\n
    \r\n
    \r\n
    \r\n \r\n
    \r\n \r\n
    \r\n {inputs.image &&\r\n \r\n }\r\n
    \r\n {fileURL && }\r\n
    \r\n
    \r\n )\r\n}","import React, { useState } from 'react';\r\nimport Select from 'react-select';\r\nimport useForm from '../../../../../../util/hooks/useForm';\r\nimport { useEffect } from 'react';\r\nimport NotificacionAPI from '../../../../../../services/Caffenio App/Notificacion';\r\n\r\nexport default function SaldoForm({inputs, errors, setInput, handleInputChange, handleSelectChange, notification}){\r\n const [localNotif, setLocalNotif] = useState({BalanceInfo: {}});\r\n const [comparators, setComparators] = useState([]);\r\n const [balances, setBalances] = useState([]);\r\n\r\n useEffect(() => {\r\n setInput('BalanceInfo', {});\r\n getData();\r\n return () => {\r\n setInput('BalanceInfo', null);\r\n }\r\n }, [])\r\n\r\n useEffect(() => {\r\n if(notification) setLocalNotif(notification);\r\n }, [notification])\r\n\r\n useEffect(() => {\r\n if (inputs.NotificationId){\r\n const selectedComparator = comparators.map(c => ({label: c.Name, value: c.NotificationFilterTypeId})).find(c => c.value === localNotif.BalanceInfo.NotificationFilterTypeId);\r\n setInput('BalanceInfo', {...inputs.BalanceInfo, NotificationFilterTypeId: selectedComparator, Amount: localNotif.BalanceInfo.Amount})\r\n }\r\n }, [comparators])\r\n\r\n useEffect(() => {\r\n console.log(\"balancessss\");\r\n if (inputs.NotificationId){\r\n const selectedBalance = balances.map(c => ({label: c.Name, value: c.NotificationBalanceTypeId})).find(c => c.value === localNotif.BalanceInfo.NotificationBalanceTypeId);\r\n setInput('BalanceInfo', {...inputs.BalanceInfo, NotificationBalanceTypeId: selectedBalance, Amount: localNotif.BalanceInfo.Amount})\r\n }\r\n }, [balances])\r\n\r\n const getData = async () => {\r\n let resFilters = await NotificacionAPI.getComparators();\r\n if (resFilters.data && resFilters.data.length){\r\n setComparators(resFilters.data);\r\n }\r\n\r\n let resBalances = await NotificacionAPI.getBalanceTypes();\r\n if (resBalances.data && resBalances.data.length){\r\n setBalances(resBalances.data);\r\n }\r\n }\r\n\r\n return (\r\n \r\n {inputs.BalanceInfo ?
    \r\n
    Cuando el saldo sea
    \r\n
    \r\n setInput('BalanceInfo', {...inputs.BalanceInfo, NotificationFilterTypeId: value})}\r\n noOptionsMessage={() => \"No hay opciones\"}\r\n options={comparators.map(c => ({label: c.Name, value: c.NotificationFilterTypeId}))}\r\n />\r\n
    \r\n
    \r\n setInput('BalanceInfo', {...inputs.BalanceInfo, Amount: e.currentTarget.value})}\r\n />\r\n
    \r\n
    \r\n en\r\n
    \r\n
    \r\n setInput('BalanceInfo', {...inputs.BalanceInfo, NotificationBalanceTypeId: value})}\r\n noOptionsMessage={() => \"No hay opciones\"}\r\n options={balances.map(b => ({value: b.NotificationBalanceTypeId, label: b.Name}))}\r\n />\r\n
    \r\n
    : null}\r\n
    \r\n )\r\n}","import React, { useState } from 'react';\r\nimport Select from 'react-select';\r\nimport useForm from '../../../../../../util/hooks/useForm';\r\nimport { useEffect } from 'react';\r\nimport NotificacionAPI from '../../../../../../services/Caffenio App/Notificacion';\r\n\r\nexport default function NumVisitasForm({inputs, setInput, errors, notification}){\r\n const [comparators, setComparators] = useState([]);\r\n const [periods, setPeriods] = useState([]);\r\n const [localNotif, setLocalNotif] = useState({VisitInfo: {}});\r\n\r\n useEffect(() => {\r\n setInput('VisitInfo', {});\r\n getData();\r\n return () => setInput('VisitInfo', null);\r\n }, [])\r\n\r\n useEffect(() => {\r\n if(notification) setLocalNotif(notification);\r\n }, [notification])\r\n\r\n useEffect(() => {\r\n if (inputs.NotificationId){\r\n const selectedComparator = comparators.map(c => ({label: c.Name, value: c.NotificationFilterTypeId})).find(c => c.value === localNotif.VisitInfo.NotificationFilterTypeId);\r\n setInput('VisitInfo', {...inputs.VisitInfo, NotificationFilterTypeId: selectedComparator, Visits: localNotif.VisitInfo.Visits})\r\n }\r\n }, [comparators])\r\n\r\n useEffect(() => {\r\n if (inputs.NotificationId){\r\n const selectedPeriod = periods.map(c => ({label: c.Description, value: c.NotificationVisitPeriodTimeId})).find(c => c.value === localNotif.VisitInfo.NotificationVisitPeriodTimeId);\r\n setInput('VisitInfo', {...inputs.VisitInfo, NotificationVisitPeriodTimeId: selectedPeriod})\r\n }\r\n }, [periods])\r\n\r\n const getData = async () => {\r\n let resFilters = await NotificacionAPI.getComparators();\r\n if (resFilters.data && resFilters.data.length){\r\n setComparators(resFilters.data);\r\n }\r\n\r\n let resPeriods = await NotificacionAPI.getVisitPeriods();\r\n if (resPeriods.data && resPeriods.data.length){\r\n setPeriods(resPeriods.data);\r\n }\r\n }\r\n\r\n return (\r\n \r\n {inputs.VisitInfo ?
    \r\n
    Cuando el número de visitas sea
    \r\n
    \r\n setInput('VisitInfo', {...inputs.VisitInfo, NotificationFilterTypeId: value})}\r\n noOptionsMessage={() => \"No hay opciones\"}\r\n options={comparators.map(c => ({label: c.Name, value: c.NotificationFilterTypeId}))}\r\n />\r\n
    \r\n
    \r\n setInput('VisitInfo', {...inputs.VisitInfo, Visits: e.currentTarget.value})}\r\n />\r\n
    \r\n
    \r\n en\r\n
    \r\n
    \r\n setInput('VisitInfo', {...inputs.VisitInfo, NotificationVisitPeriodTimeId: value})}\r\n noOptionsMessage={() => \"No hay opciones\"}\r\n options={periods.map(p => ({label: p.Description, value: p.NotificationVisitPeriodTimeId}))}\r\n />\r\n
    \r\n
    : null}\r\n
    \r\n )\r\n}","import React, { useState, useEffect } from 'react';\r\nimport Select from 'react-select';\r\nimport SaldoForm from './SaldoForm';\r\nimport NumVisitasForm from './NumVisitasForm';\r\nimport NotificacionAPI from '../../../../../../services/Caffenio App/Notificacion';\r\n\r\nexport default function TipoNotificacionForm({inputs, errors, setInput, handleInputChange, handleSelectChange, types, categories, notification}){\r\n\r\n\r\n return (\r\n \r\n
    \r\n \r\n
    \r\n {\r\n handleSelectChange(value, event, true)\r\n setInput('category', null);\r\n }}\r\n noOptionsMessage={() => \"No hay opciones\"}\r\n options={types.map(t => {return {value: t.NotificationTypeId, label: t.Name}})}\r\n />\r\n
    \r\n {errors.type &&

    Tipo requerido

    }\r\n
    \r\n
    \r\n {inputs.type && \r\n \r\n
    \r\n handleSelectChange(value, event, true)}\r\n noOptionsMessage={() => \"No hay opciones\"}\r\n options={categories.map(c => {return {value: c.NotificationCategoryId, label: c.Name}})}\r\n />\r\n
    \r\n {errors.category &&

    Categoría requerida

    }\r\n
    }\r\n
    \r\n {inputs.category &&
    \r\n \r\n {(inputs.category.value == 3 || inputs.category.value) == 1 && }\r\n
    \r\n {inputs.category.value === 1 && }\r\n {inputs.category.value === 3 && }\r\n
    \r\n
    \r\n
    }\r\n
    \r\n )\r\n}","import React from 'react';\r\nimport Select from 'react-select';\r\n\r\nexport default function InfoGeneralForm({segmentaciones, inputs, errors, handleInputChange, handleSelectChange}){\r\n return (\r\n
    \r\n
    \r\n \r\n
    \r\n handleInputChange(e, true)}\r\n required\r\n />\r\n
    \r\n {errors.Name &&

    Nombre requerido

    }\r\n
    \r\n
    \r\n \r\n
    \r\n handleSelectChange(value, event, true)}\r\n noOptionsMessage={() => \"No hay opciones\"}\r\n options={segmentaciones.map(s => {return {value: s.IdSegmentation, label: s.Name, segment: s.NombreSegmento}})}\r\n />\r\n
    \r\n {errors.segmentation &&

    Segmentación requerida

    }\r\n
    \r\n
    \r\n )\r\n}","import React from 'react';\r\nimport Select from 'react-select';\r\nimport { useEffect } from 'react';\r\nimport NotificacionAPI from '../../../../../../services/Caffenio App/Notificacion';\r\nimport { useState } from 'react';\r\n\r\nexport default function AccionNotificacionFrom({inputs, errors, setInput, setError, handleSelectChange, handleInputChange, notification, idSegment, screens}){\r\n const [actions, setActions] = useState([]);\r\n\r\n useEffect(() => {\r\n fetchData();\r\n }, [])\r\n\r\n useEffect(() => {\r\n //setInput('screen', null);\r\n }, [inputs.segmentation])\r\n\r\n const fetchData = async () => {\r\n let res = await NotificacionAPI.getActions();\r\n setActions(res.data);\r\n\r\n /*\r\n //Aquí cambiar las pantallas\r\n let segment = (inputs.segmentation) ? inputs.segmentation.segment : \"Caffenio\";\r\n let resScreens = await NotificacionAPI.getScreensBySegment(segment);\r\n setScreens(resScreens.data);\r\n */\r\n }\r\n\r\n useEffect(() => {\r\n console.log(screens);\r\n if (notification){\r\n const selectedAction = actions.map(a => {return{value: a.NotificationActionId, label: a.Name}}).find(a => a.value === notification.NotificationActionId);\r\n setInput('action', selectedAction);\r\n }\r\n\r\n console.log(idSegment);\r\n },[actions, notification])\r\n\r\n useEffect(() => {\r\n if(inputs.action && inputs.action.value === 1 && notification){\r\n const selectedScreen = screens.map(s => {return{value: s.NotificationScreenId, label: s.Name}}).find(s => s.value === notification.NotificationScreenId);\r\n setInput('screen', selectedScreen);\r\n }\r\n\r\n if(inputs.action && (inputs.action.value === 1 || inputs.action.value === 2) && notification){\r\n setInput('link', notification.Link);\r\n }\r\n },[screens])\r\n\r\n useEffect(() => {\r\n if(inputs.link){\r\n const urlRegex = new RegExp(/^(?:(?:https?|ftp):\\/\\/)?(?:(?!(?:10|127)(?:\\.\\d{1,3}){3})(?!(?:169\\.254|192\\.168)(?:\\.\\d{1,3}){2})(?!172\\.(?:1[6-9]|2\\d|3[0-1])(?:\\.\\d{1,3}){2})(?:[1-9]\\d?|1\\d\\d|2[01]\\d|22[0-3])(?:\\.(?:1?\\d{1,2}|2[0-4]\\d|25[0-5])){2}(?:\\.(?:[1-9]\\d?|1\\d\\d|2[0-4]\\d|25[0-4]))|(?:(?:[a-z\\u00a1-\\uffff0-9]-*)*[a-z\\u00a1-\\uffff0-9]+)(?:\\.(?:[a-z\\u00a1-\\uffff0-9]-*)*[a-z\\u00a1-\\uffff0-9]+)*(?:\\.(?:[a-z\\u00a1-\\uffff]{2,})))(?::\\d{2,5})?(?:\\/\\S*)?$/);\r\n setError('link', !inputs.link.match(urlRegex))\r\n }\r\n },[inputs.link])\r\n\r\n return (\r\n
    \r\n {inputs.category &&
    \r\n \r\n
    \r\n {\r\n handleSelectChange(value, event, true)\r\n setInput('screen', null);\r\n setInput('link', \"\");\r\n }}\r\n noOptionsMessage={() => \"No hay opciones\"}\r\n options={actions.map(a => {return{value: a.NotificationActionId, label: a.Name}})}\r\n />\r\n
    \r\n {errors.action &&

    Acción requerida

    }\r\n
    }\r\n {inputs.action && inputs.action.value === 1 &&
    \r\n \r\n \r\n
    \r\n handleSelectChange(value, event, true)}\r\n noOptionsMessage={() => \"No hay opciones\"}\r\n options={screens.map(s => {return{value: s.NotificationScreenId, label: s.Name}})}\r\n />\r\n
    \r\n {errors.screen &&

    Pantalla requerida

    }\r\n
    \r\n
    }\r\n\r\n {inputs.action && [1,2].find(n => n === inputs.action.value) &&
    \r\n \r\n
    \r\n handleInputChange(e, true)}\r\n required\r\n />\r\n
    \r\n {errors.link &&

    Enlace inválido

    }\r\n
    }\r\n
    \r\n )\r\n}","import React, { useEffect, useState } from 'react';\r\nimport useForm from '../../../../../util/hooks/useForm';\r\nimport Select from 'react-select';\r\nimport NotificacionDataForm from './components/NotificacionDataForm';\r\nimport DetalleDescriptionForm from './components/DetalleDescriptionForm';\r\nimport TipoNotificacionForm from './components/TipoNotificacionForm';\r\nimport InfoGeneralForm from './components/InfoGeneralForm';\r\nimport AccionNotificacionFrom from './components/AccionNotificacionForm';\r\nimport NotificacionAPI from '../../../../../services/Caffenio App/Notificacion';\r\nimport { toast } from 'react-toastify';\r\n\r\nexport default function NuevaNotificacionForm({history, location, segmentations, types, notification, setNotification}){\r\n const {inputs, setInput, errors, setError, replaceInputs , handleInputChange, handleSelectChange, handleSubmit} = useForm(() => {\r\n saveNotification();\r\n });\r\n\r\n const [working, setWorking] = useState(false);\r\n const [categories, setCategories] = useState([]);\r\n const [idSegment, setIdSegment] = useState(0);\r\n const [screens, setScreens] = useState([]);\r\n\r\n const saveNotification = async () => {\r\n if(!working){\r\n setWorking(true);\r\n let data = {...inputs};\r\n var imageUrl = inputs.urlImg;\r\n\r\n if(data.image){\r\n let res = await NotificacionAPI.uploadImageBySegment(data.image, inputs.segmentation.segment)\r\n //let res = await NotificacionAPI.uploadImage(data.image);\r\n imageUrl = res.data.ImagePath\r\n }\r\n\r\n let body = {\r\n NotificationId: inputs.NotificationId,\r\n Name: data.Name,\r\n IdSegmentation: data.segmentation.value,\r\n NotificationTypeId: data.type.value,\r\n NotificationCategoryId: data.category.value,\r\n Title: data.Title,\r\n Description: data.Description,\r\n NotificationActionId: data.action.value,\r\n Link: data.link && [1,2].includes(data.action.value) ? data.link : null,\r\n NotificationScreenId: data.screen && data.action.value === 1 ? data.screen.value : null,\r\n DetailDescription: data.action.value === 3 ? data.detailDescription : null,\r\n ImagePath: data.action.value === 3 ? imageUrl : null,\r\n VisitInfo: data.VisitInfo ? ({\r\n NotificationFilterTypeId: data.VisitInfo.NotificationFilterTypeId.value,\r\n Visits: data.VisitInfo.Visits,\r\n NotificationVisitPeriodTimeId: data.VisitInfo.NotificationVisitPeriodTimeId.value\r\n }) : null,\r\n BalanceInfo: data.BalanceInfo ? ({\r\n NotificationFilterTypeId: data.BalanceInfo.NotificationFilterTypeId.value,\r\n Amount: data.BalanceInfo.Amount,\r\n NotificationBalanceTypeId: data.BalanceInfo.NotificationBalanceTypeId.value\r\n }) : null\r\n }\r\n\r\n var response = null;\r\n if(body.NotificationId){\r\n response = NotificacionAPI.updateNotification(body);\r\n }else{\r\n response = NotificacionAPI.saveNotification(body);\r\n }\r\n response.then(res => {\r\n if (body.NotificationId) toast.success(\"Datos actualizados correctamente.\");\r\n else toast.success(\"Notificación creada.\");\r\n history.push({\r\n pathname: '/app/notificaciones',\r\n state: location.state ? {currentPage: location.state.currentPage || 0, name: location.state.name || \"\"} : {currentPage: 1, name: \"\"}\r\n });\r\n }).catch(err => {\r\n toast.error(err.response.data.Message)\r\n }).finally(() => setWorking(false))\r\n }\r\n }\r\n\r\n useEffect(() => {\r\n if(notification){\r\n setInput('NotificationId', notification.NotificationId);\r\n setInput('Name', notification.Name)\r\n setInput('segmentation', segmentations.map(s => ({value: s.IdSegmentation, label: s.Name, segment: s.NombreSegmento})).find(s => s.value === notification.IdSegmentation));\r\n }\r\n }, [segmentations])\r\n\r\n useEffect(() => {\r\n //Aquí hacer el cambio de la pantalla\r\n (async () => {\r\n if(inputs.segmentation){\r\n let res = await NotificacionAPI.getScreensBySegment(inputs.segmentation.segment);\r\n inputs.screen = res.data\r\n setScreens(inputs.screen);\r\n console.log(inputs.screen);\r\n }else{\r\n setIdSegment(0)\r\n }\r\n })();\r\n\r\n }, [inputs.segmentation])\r\n\r\n\r\n\r\n useEffect(() => {\r\n (async () => {\r\n if(inputs.type && inputs.type.value){\r\n let res = await NotificacionAPI.getCategoriesByType(inputs.type.value);\r\n setCategories(res.data);\r\n }else{\r\n setInput('category', null);\r\n setInput('action', null);\r\n }\r\n })();\r\n }, [inputs.type])\r\n\r\n useEffect(() => {\r\n if(notification && !inputs.category){\r\n let selectedType = types.map(t => ({value: t.NotificationTypeId, label: t.Name})).find(t => t.value === notification.NotificationTypeId);\r\n setInput('type', selectedType);\r\n if(categories.length > 0){\r\n let selectedCategorie = categories.map(c => ({value: c.NotificationCategoryId, label: c.Name})).find(c => c.value === notification.NotificationCategoryId);\r\n setInput('category', selectedCategorie);\r\n }\r\n }\r\n }, [inputs.segmentation, categories])\r\n\r\n useEffect(() => {\r\n if(notification && inputsAreValid()){\r\n setInput('NotificationId', notification.NotificationId);\r\n setInput('urlImg', notification.ImagePath);\r\n setNotification(null);\r\n }\r\n },[inputs])\r\n\r\n const inputsAreValid = () => {\r\n const infoGeneralValid = inputs.Name && inputs.segmentation\r\n const tipoNotificacionValid = inputs.type && inputs.category \r\n const extraTipoNotifDataValid = inputs.category && (\r\n inputs.category.value == 1 && \r\n inputs.BalanceInfo &&\r\n inputs.BalanceInfo.NotificationFilterTypeId &&\r\n inputs.BalanceInfo.Amount &&\r\n inputs.BalanceInfo.NotificationBalanceTypeId\r\n || \r\n inputs.category.value == 3 &&\r\n inputs.VisitInfo &&\r\n inputs.VisitInfo.NotificationFilterTypeId &&\r\n inputs.VisitInfo.Visits &&\r\n inputs.VisitInfo.NotificationVisitPeriodTimeId\r\n || inputs.category.value == 2\r\n || inputs.category.value && inputs.category.value > 3\r\n )\r\n const accionNotifValid = inputs.action && (\r\n inputs.action.value == 1 &&\r\n inputs.screen &&\r\n inputs.link\r\n ||\r\n inputs.action.value == 2 &&\r\n inputs.link\r\n ||\r\n inputs.action.value == 3 &&\r\n inputs.detailDescription && inputs.detailDescription.length > 3 &&\r\n (inputs.image || inputs.urlImg)\r\n\r\n )\r\n const dataNotifValid = inputs.Title && inputs.Description\r\n return infoGeneralValid && tipoNotificacionValid && extraTipoNotifDataValid && accionNotifValid && dataNotifValid && Object.values(errors).filter(c => c).length === 0;\r\n }\r\n\r\n return (\r\n
    \r\n
    \r\n
    \r\n \r\n
    \r\n\r\n {inputs.segmentation &&
    }\r\n\r\n {inputs.segmentation && }\r\n\r\n {inputs.category &&
    } \r\n\r\n {inputs.category &&
    \r\n \r\n
    }\r\n\r\n {inputs.category &&
    }\r\n \r\n
    \r\n \r\n
    \r\n\r\n {inputs.action && inputs.action.value === 3 &&
    \r\n \r\n
    }\r\n\r\n\r\n \r\n
    \r\n
    \r\n
    \r\n

    \r\n {\r\n history.push({\r\n pathname: '/app/notificaciones',\r\n state: location.state ? {currentPage: location.state.currentPage || 0, name: location.state.name || \"\"} : {currentPage: 1, name: \"\"}\r\n });\r\n }}>\r\n Regresar\r\n \r\n

    \r\n \r\n

    \r\n \r\n Guardar notificación\r\n \r\n

    \r\n
    \r\n
    \r\n \r\n )\r\n}\r\n\r\n","import React, { useState, useEffect } from 'react';\r\nimport NuevaNotificacionForm from './components/NuevaNotificacionForm';\r\nimport SegmentacionAPI from '../../../../services/Caffenio App/Segmentacion';\r\nimport NotificacionAPI from '../../../../services/Caffenio App/Notificacion';\r\nimport { toast } from 'react-toastify';\r\n\r\nfunction NuevaNotificacion(props){\r\n const [data, setData] = useState({segmentations: [], types: []});\r\n const [notification, setNotification] = useState(null);\r\n\r\n const fetchData = async () => {\r\n try {\r\n let seg = await NotificacionAPI.getSegmentaciones();\r\n let notifTypes = await NotificacionAPI.getNotificationTypes();\r\n setData({segmentations: seg.data, types: notifTypes.data});\r\n } catch(e) {\r\n console.log(e);\r\n }\r\n \r\n }\r\n\r\n useEffect(() => {\r\n fetchData();\r\n\r\n if(props.match.params.id){\r\n NotificacionAPI.getNotification(props.match.params.id).then(res => {\r\n setNotification(res.data);\r\n }).catch(err => toast.error(toast.response.data.Message));\r\n }\r\n }, [])\r\n\r\n return (\r\n
    \r\n
    \r\n
    \r\n
    \r\n \r\n {\r\n props.history.push({\r\n pathname: '/app/notificaciones',\r\n state: props.location.state ? {currentPage: props.location.state.currentPage || 0, name: props.location.state.name || \"\"} : {currentPage: 1, name: \"\"}\r\n });\r\n }} className=\"fa fa-arrow-left\">\r\n \r\n {props.match.params.id ? \"Editar notificación\" : \"Nueva notificación\"}\r\n
    \r\n
    \r\n
    \r\n \r\n
    \r\n
    \r\n {/* */}\r\n
    \r\n )\r\n}\r\n\r\nexport default NuevaNotificacion;","import React, { useEffect, useState } from 'react';\r\nimport { Calendar, momentLocalizer } from 'react-big-calendar'\r\nimport moment from 'moment'\r\nimport NotificacionAPI from '../../../services/Caffenio App/Notificacion';\r\nimport to from '../../../util/to';\r\nimport { toast } from 'react-toastify';\r\nrequire('moment/locale/es');\r\nconst localizer = momentLocalizer(moment)\r\n\r\nexport default function Agenda({history}){\r\n const [events, setEvents] = useState([]);\r\n const today = moment.now();\r\n const [monthOffset, setMonthOffset] = useState(0)\r\n const navigateContants = {\r\n PREVIOUS: 'PREV',\r\n NEXT: 'NEXT',\r\n };\r\n\r\n useEffect(() => {\r\n let day = moment(today).add(monthOffset, 'months');\r\n let start = moment(day).startOf('month')\r\n let end = moment(day).endOf('month')\r\n console.log(start, end);\r\n getData(start, end);\r\n }, [monthOffset])\r\n\r\n const getData = async (start, end) => {\r\n let err, eventos;\r\n [err, eventos] = await to(NotificacionAPI.getEvents(start, end));\r\n if (err){\r\n toast.error(err.response.data.Message);\r\n }else{\r\n setEvents(eventos);\r\n }\r\n }\r\n\r\n return (\r\n
    \r\n

    Agenda

    \r\n {\r\n history.push(`/app/notificaciones/${event.notificationId}/detalle`);\r\n }}\r\n eventPropGetter={(event, start, end, isSelected) => {\r\n var backgroundColor = event.hexColor;\r\n var style = {\r\n backgroundColor: today > moment(event.end) ? '#ccc' : backgroundColor,\r\n opacity: 0.8,\r\n color: event.textColor,\r\n border: '1px',\r\n display: 'block'\r\n };\r\n return {\r\n style: style\r\n };\r\n }}\r\n components={{ toolbar: (props) => {\r\n return (\r\n
    \r\n
    \r\n \r\n
    \r\n
    \r\n

    {props.label.charAt(0).toUpperCase() + props.label.slice(1)}

    \r\n \r\n
    \r\n
    \r\n \r\n
    \r\n
    \r\n )\r\n }, event: ({event}) => {\r\n return ({`${event.title} `} )\r\n }\r\n ,dateCellWrapper: ({children, value}) => {\r\n return (\r\n React.cloneElement((children), {\r\n style: {\r\n ...children.style,\r\n backgroundColor: value < today ? '#eeeeff' : 'white',\r\n opacity: value < today ? 0.5 : 1\r\n },\r\n })\r\n )\r\n }\r\n }}/>\r\n
    \r\n )\r\n}","import React, { useState } from 'react';\r\nimport { useEffect } from 'react';\r\nimport to from '../../../../../util/to';\r\nimport NotificacionAPI from '../../../../../services/Caffenio App/Notificacion';\r\nimport { toast } from 'react-toastify';\r\n\r\nexport default function ResumenNotificacion({notification}){\r\n const [data, setData] = useState({});\r\n const [_notification, setNotification] = useState({...notification});\r\n\r\n useEffect(() => {\r\n if(notification && notification.NotificationTypeId){\r\n (async () => {\r\n let err, categories, actions, screens, types;\r\n [err, categories] = await to(NotificacionAPI.getCategoriesByType(notification.NotificationTypeId));\r\n [err, actions] = await to(NotificacionAPI.getActions());\r\n [err, screens] = await to(NotificacionAPI.getScreens());\r\n [err, types] = await to(NotificacionAPI.getNotificationTypes());\r\n if(err){\r\n toast.error(err.response.data.Message);\r\n return;\r\n } \r\n setData({categories: categories, actions: actions, screens: screens, types: types});\r\n const type = types.find(t => t.NotificationTypeId === notification.NotificationTypeId);\r\n const cat = categories.find(c => c.NotificationCategoryId === notification.NotificationCategoryId);\r\n const act = actions.find(a => a.NotificationActionId === notification.NotificationActionId);\r\n\r\n var screen;\r\n if(notification.NotificationScreenId) screen = screens.find(s => s.NotificationScreenId === notification.NotificationScreenId);\r\n\r\n setNotification({...notification,typeLabel: type.Name, categoryLabel: cat.Name, actionLabel: act.Name, screenLabel: screen ? screen.Name : \"\"});\r\n \r\n })();\r\n }\r\n }, [notification]);\r\n\r\n useEffect(() => {\r\n console.log(data);\r\n }, [data])\r\n \r\n const replaceTags = (str) => {\r\n var preview = str\r\n \r\n preview = preview.split('#[NOMBRE CLIENTE]').join('José');\r\n preview = preview.split('#[SALDO PREPAGO]').join('12');\r\n preview = preview.split('#[SALDO MONEDERO]').join('0');\r\n preview = preview.split('#[NIVEL LEALTAD]').join('FAN');\r\n \r\n return preview;\r\n }\r\n\r\n return (\r\n
    \r\n
    \r\n
    \r\n \r\n
    \r\n

    {_notification.Title}

    \r\n
    \r\n
    \r\n
    \r\n \r\n
    \r\n

    {_notification.Description}

    \r\n
    \r\n
    \r\n
    \r\n \r\n
    \r\n

    {_notification.typeLabel}

    \r\n
    \r\n
    \r\n
    \r\n \r\n
    \r\n

    {_notification.categoryLabel}

    \r\n
    \r\n
    \r\n {_notification.NotificationCategoryId === 1 &&
    \r\n \r\n
    \r\n

    {_notification.BalanceInfo.Description}

    \r\n
    \r\n
    }\r\n {_notification.NotificationCategoryId === 3 &&
    \r\n \r\n
    \r\n

    {_notification.VisitInfo.Description}

    \r\n
    \r\n
    }\r\n
    \r\n \r\n
    \r\n

    {_notification.actionLabel}

    \r\n
    \r\n
    \r\n {notification.NotificationActionId === 1 &&
    \r\n \r\n
    \r\n

    {_notification.screenLabel}

    \r\n
    \r\n
    }\r\n {notification.NotificationActionId === 2 &&
    \r\n \r\n
    \r\n

    {_notification.Link}

    \r\n
    \r\n
    }\r\n {_notification.DetailDescription &&
    \r\n
    \r\n {notification.DetailDescription &&
    \r\n \r\n
    \r\n

    {_notification.DetailDescription}

    \r\n
    \r\n
    }\r\n {notification.UrlImageNotification &&
    \r\n \r\n
    \r\n \r\n
    \r\n
    }\r\n
    \r\n
    }\r\n
    \r\n
    \r\n )\r\n}","import React, { useEffect, useState } from 'react';\r\nimport Select from 'react-select';\r\nimport DatePicker from 'react-datepicker';\r\nimport * as moment from 'moment';\r\nimport Checkbox from '../../../../../util/checkbox/Checkbox';\r\nimport to from '../../../../../../util/to';\r\nimport SegmentacionAPI from '../../../../../../services/Caffenio App/Segmentacion';\r\nimport { toast } from 'react-toastify';\r\nimport NotificacionAPI from '../../../../../../services/Caffenio App/Notificacion';\r\nimport es from \"date-fns/locale/es\";\r\nrequire('moment/locale/es');\r\n\r\n\r\nexport default function AgendarNotificacionForm({replaceInputs, inputs, setInput, cleanInputs, errors, handleInputChange, handleSelectChange}){\r\n const minTime = new Date(2019,1,1,6,0,0)\r\n const maxTime = new Date(2019,1,1,22,0,0)\r\n const [days, setDays] = useState([])\r\n const [types, setTypes] = useState([])\r\n const [frequencies, setFrequencies] = useState([])\r\n const [monthlies, setMonthlies] = useState([])\r\n\r\n useEffect(() => {\r\n getData();\r\n }, [])\r\n\r\n useEffect(() => {\r\n if(!inputs.type){\r\n cleanInputs();\r\n setInput('days', []);\r\n }\r\n },[inputs.type])\r\n\r\n const getData = async () => {\r\n let err, diasSemana, frequencyTypes, frequency, monthly;\r\n [err, diasSemana] = await to(SegmentacionAPI.getDiasSemana());\r\n [err, frequencyTypes] = await to(NotificacionAPI.getFrequencyEventTypes());\r\n [err, frequency] = await to(NotificacionAPI.getFrequentTypes());\r\n [err, monthly] = await to(NotificacionAPI.getFrequentMonthlyTypes());\r\n\r\n if (err){\r\n toast.error(err.response.data.Message);\r\n }else{\r\n setDays(diasSemana);\r\n setTypes(frequencyTypes);\r\n setFrequencies(frequency);\r\n setMonthlies(monthly);\r\n }\r\n }\r\n\r\n return (\r\n
    \r\n
    \r\n \r\n
    \r\n handleSelectChange(value, event, true)}\r\n noOptionsMessage={() => \"No hay opciones\"}\r\n options={types.map(t => ({value: t.NotificationScheduleTypeId, label: t.Description}))}\r\n />\r\n
    \r\n {errors.type &&

    Tipo requerido

    }\r\n
    \r\n
    \r\n {inputs.type && inputs.type.value === 2 && \r\n \r\n
    \r\n {\r\n replaceInputs({type: inputs.type, frecuency: value});\r\n if(value && value.value === 2){\r\n setInput('hours', [null, null, null, null, null, null, null])\r\n setInput('days', []);\r\n }\r\n }}\r\n noOptionsMessage={() => \"No hay opciones\"}\r\n options={frequencies.map(f => ({value: f.NotificationScheduleFrequencyTypeId, label: f.Description}))}\r\n />\r\n
    \r\n {errors.frecuency &&

    Frecuencia requerida

    }\r\n
    }\r\n
    \r\n {inputs.type && inputs.type.value === 1 && \r\n
    \r\n
    \r\n
    \r\n \r\n
    \r\n {\r\n setInput('date', date)\r\n }}\r\n onChangeRaw={(e) => e.preventDefault()}\r\n dateFormat=\"dd/MMMM/yyyy\"\r\n locale={es}\r\n />\r\n
    \r\n
    \r\n
    \r\n \r\n
    \r\n {\r\n setInput('date2', date)\r\n setInput('date', new Date(inputs.date.getFullYear(), inputs.date.getMonth(), inputs.date.getDate(), date.getHours(), date.getMinutes(), 0))\r\n }}\r\n onChangeRaw={(e) => e.preventDefault()}\r\n showTimeSelect\r\n showTimeSelectOnly\r\n timeIntervals={60}\r\n minTime={minTime}\r\n maxTime={maxTime}\r\n dateFormat=\"HH:mm\"\r\n locale={es}\r\n />\r\n
    \r\n
    \r\n
    \r\n
    }\r\n {inputs.type && inputs.type.value === 2 &&
    \r\n
    \r\n
    \r\n \r\n
    \r\n e.preventDefault()}\r\n onChange={date => {\r\n setInput('startDate', date)\r\n }}\r\n timeCaption=\"Fecha de inicio\"\r\n dateFormat={`${inputs.frecuency && inputs.frecuency.value === 3 ? 'MMMM/yyyy' : 'dd/MMMM/yyyy'}`}\r\n showMonthYearPicker={inputs.frecuency && inputs.frecuency.value == 3}\r\n locale={es}\r\n />\r\n
    \r\n
    \r\n
    \r\n \r\n
    \r\n e.preventDefault()}\r\n onChange={date => {\r\n if(inputs.frecuency && inputs.frecuency.value === 3){\r\n const formattedDate = moment(date).endOf('month');\r\n const endDate = moment(formattedDate.toDate()).endOf('month')\r\n setInput('endDate', endDate.toDate())\r\n }else\r\n setInput('endDate' , moment(date).toDate());\r\n }}\r\n timeCaption=\"Fecha de fin\"\r\n dateFormat={`${inputs.frecuency && inputs.frecuency.value === 3 ? 'MMMM/yyyy' : 'dd/MMMM/yyyy'}`}\r\n showMonthYearPicker={inputs.frecuency && inputs.frecuency.value == 3}\r\n locale={es}\r\n />\r\n
    \r\n
    \r\n
    \r\n
    }\r\n {inputs.frecuency && inputs.frecuency.value === 2 &&
    \r\n
    \r\n {days.map((dia, index) => {\r\n return (\r\n
    \r\n
    \r\n
    \r\n
    \r\n \r\n
    \r\n n.IdFilterPurchaseDay === dia.IdFilterPurchaseDay) !== -1}\r\n data={dia}\r\n onChange={(e) => {\r\n const i = inputs.days.findIndex(d => d.IdFilterPurchaseDay === dia.IdFilterPurchaseDay);\r\n const dayArr = [...inputs.days];\r\n const hoursArr = [...inputs.hours];\r\n if(i !== -1){\r\n dayArr.splice(i, 1);\r\n hoursArr[index] = null;\r\n }else\r\n dayArr.push(dia);\r\n \r\n setInput('days', dayArr)\r\n setInput('hours', hoursArr);\r\n }}\r\n />\r\n
    \r\n
    \r\n
    \r\n \r\n
    \r\n d.IdFilterPurchaseDay === dia.IdFilterPurchaseDay) === -1}\r\n className=\"input\"\r\n selected={inputs.hours[index]}\r\n onChange={date => {\r\n const hoursArr = [...inputs.hours];\r\n hoursArr[index] = date;\r\n setInput('hours', hoursArr);\r\n }}\r\n onChangeRaw={(e) => e.preventDefault()}\r\n showTimeSelect\r\n showTimeSelectOnly\r\n timeIntervals={60}\r\n minTime={minTime}\r\n maxTime={maxTime}\r\n timeCaption=\"Hora\"\r\n dateFormat=\"HH:mm\"\r\n locale={es}\r\n />\r\n
    \r\n
    \r\n
    \r\n
    \r\n )\r\n })}\r\n
    \r\n
    }\r\n {inputs.frecuency && inputs.frecuency.value === 3 &&
    \r\n \r\n
    \r\n {\r\n handleSelectChange(value, event, true)\r\n setInput('startDate', null);\r\n setInput('endDate', null);\r\n }}\r\n noOptionsMessage={() => \"No hay opciones\"}\r\n options={monthlies.map(m => ({value: m.NotificationScheduleMonthlyTypeId, label: m.Description}))}\r\n />\r\n
    \r\n {errors.frecuency &&

    Frecuencia requerida

    }\r\n
    }\r\n
    \r\n {inputs.frecuency && inputs.frecuency.value !== 2 && \r\n \r\n
    \r\n {\r\n setInput('hour', date)\r\n }}\r\n showTimeSelect\r\n showTimeSelectOnly\r\n timeIntervals={60}\r\n onChangeRaw={(e) => e.preventDefault()}\r\n minTime={minTime}\r\n maxTime={maxTime}\r\n timeCaption=\"Hora\"\r\n dateFormat=\"HH:mm\"\r\n locale={es}\r\n />\r\n
    \r\n
    }\r\n
    \r\n
    \r\n )\r\n}","import React, { useEffect } from 'react';\r\nimport useForm from '../../../../../util/hooks/useForm';\r\nimport AgendarNotificacionForm from './components/AgendarNotificacionForm';\r\n\r\nexport default function AgendarNotificacion({inputs, replaceInputs, setInput, cleanInputs, errors, handleInputChange, handleSelectChange}){\r\n\r\n useEffect(() => {\r\n return () => {\r\n cleanInputs();\r\n }\r\n }, [])\r\n\r\n return (\r\n
    \r\n \r\n
    \r\n )\r\n}","import React, { useEffect, useState } from 'react';\r\nimport moment from 'moment';\r\nimport Loading from '../../../../../util/loading/Loading';\r\nimport NoItems from '../../../../../util/noitems/NoItems';\r\nimport ServerPagination from '../../../../../util/pagination/ServerPagination';\r\nimport NotificacionAPI from '../../../../../../services/Caffenio App/Notificacion';\r\nimport to from '../../../../../../util/to';\r\nimport { toast } from 'react-toastify';\r\nimport useModal from '../../../../../../util/hooks/useModal';\r\nimport PortalModal from '../../../../../../util/portals/PortalModal';\r\n\r\nexport default function TablaEventosAgenda({notification, agendando}){\r\n const [loading, setLoading] = useState(false);\r\n const [paginationInfo, setPaginationInfo] = useState({totalPages: 0, currentPage: 1})\r\n const [columnNames, setColumnNames] = useState([\"Fecha creación\", \"Tipo\", \"Detalle\", \"Frecuencia\", \"Periodo\", \"Estatus\", \"Acciones\"])\r\n const [events, setEvents] = useState([]);\r\n const [currentEvent, setCurrentEvent] = useState(null);\r\n const confirmModal = useModal();\r\n const deleteModal = useModal();\r\n\r\n useEffect(() => {\r\n if (notification && !agendando){\r\n getEvents();\r\n }\r\n }, [notification, agendando])\r\n\r\n const getEvents = async () => {\r\n var err, data;\r\n [err, data] = await to(NotificacionAPI.getNotificationEvents(notification.NotificationId, paginationInfo.currentPage));\r\n setEvents(data.Results);\r\n setPaginationInfo(info => ({...info, totalPages: data.TotalPages}));\r\n }\r\n\r\n useEffect(() => {\r\n getEvents();\r\n }, [paginationInfo.currentPage])\r\n\r\n const changeStatus = () => {\r\n NotificacionAPI.changeNotificationEventStatus(currentEvent.NotificationScheduleId, !currentEvent.Active).then(response => {\r\n toast.success(response.data.Message)\r\n confirmModal.toggle();\r\n getEvents();\r\n }).catch(err => {\r\n toast.error(err.response.data.Message)\r\n confirmModal.toggle();\r\n setCurrentEvent(null);\r\n });\r\n }\r\n\r\n const deleteEvent = () => {\r\n NotificacionAPI.deleteEvent(currentEvent.NotificationScheduleId).then(response => {\r\n toast.success(response.data.Message);\r\n deleteModal.toggle();\r\n setCurrentEvent(null);\r\n getEvents();\r\n }).catch(err => {\r\n toast.error(err.response.data.Message)\r\n confirmModal.toggle();\r\n setCurrentEvent(null);\r\n })\r\n }\r\n\r\n return (\r\n
    \r\n
    \r\n {events.length > 0 ? \r\n \r\n {columnNames.map(c => )}\r\n \r\n {events.map(d => \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n )}\r\n
    {c}
    {moment(d.DateCreation).format('DD/MMMM/YYYY HH:mm')}{d.DescriptionScheduleType}{d.DescriptionEvent}{d.DescriptionScheduleFrequencyType}{d.DateStart && d.DateEnd ? `${moment(d.DateStart).format('DD/MMMM/YYYY')} - ${moment(d.DateEnd).format('DD/MMMM/YYYY')}` : ''}\r\n { }}\r\n />\r\n \r\n \r\n
    \r\n : loading ? \r\n : }\r\n setPaginationInfo((info) => ({...info, currentPage: page}))}\r\n />\r\n
    \r\n {\r\n return (\r\n \r\n

    {`¿Estás seguro que deseas ${currentEvent.Active ? \"desactivar\" : \"activar\"} el evento?`}

    \r\n {currentEvent.Active &&

    El evento ya no será tomado en cuenta al momento de agendar notificaciones.

    }\r\n
    \r\n )\r\n }}\r\n footer\r\n footerButtons={() => {\r\n return (\r\n
    \r\n \r\n \r\n
    \r\n )\r\n }}\r\n />\r\n {\r\n return (\r\n \r\n

    {`¿Estás seguro que deseas eliminar el evento?`}

    \r\n
    \r\n )\r\n }}\r\n footer\r\n footerButtons={() => {\r\n return (\r\n
    \r\n \r\n \r\n
    \r\n )\r\n }}\r\n />\r\n
    \r\n )\r\n}","import React from 'react';\r\n\r\nexport default function AgendarHeader({notification, setAgendando, setProbando}){\r\n return (\r\n
    \r\n
    \r\n

    \r\n \r\n

    \r\n
    \r\n
    \r\n

    Eventos agendados

    \r\n
    \r\n
    \r\n
    \r\n

    \r\n \r\n

    \r\n
    \r\n
    \r\n
    \r\n )\r\n}","import React, { useState } from 'react';\r\nimport Modal from '../../../../../util/modal/Modal';\r\nimport NotificacionAPI from '../../../../../../services/Caffenio App/Notificacion';\r\nimport { toast } from 'react-toastify';\r\n\r\nexport default function PruebaNotificacion({notification, probando, setProbando}){\r\n const [identifier, setIdentifier] = useState(\"\");\r\n const [formErr, setFormErr] = useState(false);\r\n const [working, setWorking] = useState(false);\r\n\r\n const sendNotification = () => {\r\n if(!working){\r\n setWorking(true);\r\n \r\n NotificacionAPI.SendTestNotification(notification.NotificationId, identifier).then(response => {\r\n toast.success(response.data.Message);\r\n setProbando(false);\r\n }).catch(err => {\r\n toast.error(err.response.data.Message);\r\n setProbando(false);\r\n })\r\n }\r\n }\r\n\r\n return (\r\n \r\n \r\n \r\n
    \r\n }\r\n cancel={() => setProbando(false)}\r\n showModal={probando}\r\n modalTitle={`Mandar notificación de prueba`}\r\n >\r\n
    \r\n
    \r\n \r\n
    \r\n setFormErr(identifier.length < 1)}\r\n placeholder={`12410000000000`}\r\n value={identifier}\r\n onChange={(e) => {\r\n if(e.currentTarget.value.length <= 14)\r\n setIdentifier(e.currentTarget.value)\r\n }}\r\n required\r\n />\r\n
    \r\n {formErr &&

    Identificador de cliente requerido.

    }\r\n
    \r\n
    \r\n \r\n )\r\n}","import React, { useState, useEffect } from 'react';\r\nimport moment from 'moment';\r\nimport NotificacionAPI from '../../../../../../services/Caffenio App/Notificacion';\r\nimport to from '../../../../../../util/to';\r\nimport Loading from '../../../../../util/loading/Loading';\r\nimport NoItems from '../../../../../util/noitems/NoItems';\r\nimport ServerPagination from '../../../../../util/pagination/ServerPagination';\r\n\r\nexport default function TablaHistorial({notification, probando}){\r\n const [columnNames, setColumnNames] = useState([\"Fecha de envío\", \"Hora\", \"Prueba\",\"Notificaciones generadas\", \"Notificaciones envíadas\", \"Estatus\"]);\r\n const [events, setEvents] = useState([]);\r\n const [loading, setLoading] = useState(false);\r\n const [paginationInfo, setPaginationInfo] = useState({totalPages: 0, currentPage: 1})\r\n\r\n useEffect(() => {\r\n if (notification && !probando){\r\n getEvents();\r\n }\r\n }, [notification, probando])\r\n\r\n const getEvents = async () => {\r\n var err, data;\r\n [err, data] = await to(NotificacionAPI.getNotificationEventsHistory(notification.NotificationId, paginationInfo.currentPage));\r\n setEvents(data.Results);\r\n setPaginationInfo(info => ({...info, totalPages: data.TotalPages}));\r\n }\r\n\r\n useEffect(() => {\r\n getEvents();\r\n }, [paginationInfo.currentPage])\r\n\r\n return (\r\n
    \r\n
    \r\n {events.length > 0 ? \r\n \r\n {columnNames.map(c => )}\r\n \r\n {events.map(d => \r\n \r\n \r\n \r\n \r\n \r\n \r\n )}\r\n
    {c}
    {moment(d.DateExecution).format('DD/MM/YYYY')}{moment(d.DateExecution).format('HH:mm')}{d.Test ? \"Sí\" : \"No\"}{d.TotalNotifications}{d.TotalPushSent}{d.DescriptionStatus}
    \r\n : loading ? \r\n : }\r\n setPaginationInfo((info) => ({...info, currentPage: page}))}\r\n />\r\n
    \r\n
    \r\n )\r\n}","import React, { useState, useEffect } from 'react';\r\nimport ResumenNotificacion from './components/ResumenNotificacion';\r\nimport AgendarNotificacion from './components/AgendarNotificacion';\r\nimport TablaEventosAgenda from './components/components/TablaEventosAgenda';\r\nimport AgendarHeader from './components/components/AgendarHeader';\r\nimport Modal from '../../../util/modal/Modal';\r\nimport useForm from '../../../../util/hooks/useForm';\r\nimport PruebaNotificacion from './components/components/PruebaNotificacion';\r\nimport TablaHistorial from './components/components/TablaHistorial';\r\nimport moment from 'moment';\r\nimport NotificacionAPI from '../../../../services/Caffenio App/Notificacion';\r\nimport { toast } from 'react-toastify';\r\nimport to from '../../../../util/to';\r\nrequire('moment/locale/es');\r\n\r\nexport default function DetalleNotificacion(props){\r\n const [notification, setNotification] = useState(null);\r\n const [working, setWorking] = useState(false);\r\n\r\n useEffect(() => {\r\n (async () => {\r\n let err, notification;\r\n [err, notification] = await to(NotificacionAPI.getNotification(props.match.params.id))\r\n if(err) toast.error(err.response.data.Message);\r\n setNotification(notification);\r\n })();\r\n }, [])\r\n\r\n const {inputs, setInput, cleanInputs, errors, replaceInputs, handleInputChange, handleSelectChange, handleSubmit} = useForm(() => {\r\n if(!working){\r\n setWorking(true);\r\n let body = {\r\n NotificationId: notification.NotificationId,\r\n NotificationScheduleTypeId: inputs.type.value,\r\n };\r\n // Única\r\n if(inputs.type.value === 1){\r\n body = {\r\n ...body,\r\n DateHour: moment(inputs.date).format('YYYY-MM-DD HH:mm:ss')\r\n }\r\n NotificacionAPI.ScheduleUniqueEvent(body).then(response => {\r\n toast.success(response.data.Message);\r\n setAgendando(false);\r\n setWorking(false);\r\n }).catch(err => {\r\n toast.error(err.response.data.Message)\r\n setAgendando(false);\r\n setWorking(false);\r\n }); \r\n }else{ // Frecuente\r\n body = {\r\n ...body, \r\n NotificationScheduleFrequencyTypeId: inputs.frecuency.value,\r\n DateStart: moment(inputs.startDate).format('YYYY-MM-DD'),\r\n DateEnd: moment(inputs.endDate).format('YYYY-MM-DD'),\r\n }\r\n switch(inputs.frecuency.value){\r\n case 1: // Diaria\r\n body = {\r\n ...body,\r\n Hour: moment(inputs.hour).format('HH:mm ')\r\n }\r\n NotificacionAPI.ScheduleDailyEvent(body).then(response => {\r\n toast.success(response.data.Message);\r\n setAgendando(false);\r\n setWorking(false);\r\n \r\n }).catch(err => {\r\n toast.error(err.response.data.Message)\r\n setAgendando(false);\r\n setWorking(false);\r\n }); \r\n break;\r\n case 2: // Semanal\r\n const hoursDays = inputs.hours.filter(h => h);\r\n body = {\r\n ...body,\r\n Days: inputs.days.map((day, index) => ({DayId: day.IdFilterPurchaseDay, Hour: moment(hoursDays[index]).format('HH:mm')}))\r\n }\r\n NotificacionAPI.ScheduleWeeklyEvent(body).then(response => {\r\n toast.success(response.data.Message);\r\n setAgendando(false);\r\n setWorking(false);\r\n \r\n }).catch(err => {\r\n toast.error(err.response.data.Message)\r\n setAgendando(false);\r\n setWorking(false);\r\n }); \r\n break;\r\n case 3: // Mensual\r\n body = {\r\n ...body,\r\n NotificationScheduleMonthlyTypeId: inputs.dayOfMonth.value,\r\n Hour: moment(inputs.hour).format('HH:mm')\r\n }\r\n NotificacionAPI.ScheduleMonthlyEvent(body).then(response => {\r\n toast.success(response.data.Message);\r\n setAgendando(false);\r\n setWorking(false);\r\n \r\n }).catch(err => {\r\n toast.error(err.response.data.Message)\r\n setAgendando(false);\r\n setWorking(false);\r\n }); \r\n break;\r\n default: break;\r\n }\r\n }\r\n setNotification(notification);\r\n }\r\n \r\n });\r\n\r\n const [agendando, setAgendando] = useState(false);\r\n const [probando, setProbando] = useState(false);\r\n\r\n const dataIsValid = () => {\r\n return inputs.type && ((inputs.date && inputs.date2) || inputs.frecuency && inputs.startDate && inputs.endDate && ((inputs.dayOfMonth && inputs.hour) || (inputs.hour && inputs.frecuency.value !== 3) || (inputs.days && inputs.days.length > 0 && inputs.days.length == inputs.hours.filter(d => d).length)))\r\n }\r\n\r\n if (!notification) return null;\r\n\r\n return (\r\n
    \r\n
    \r\n
    \r\n
    \r\n \r\n {\r\n props.history.push({\r\n pathname: '/app/notificaciones',\r\n state: props.location.state ? {currentPage: props.location.state.currentPage || 0, name: props.location.state.name || \"\"} : {currentPage: 1, name: \"\"}\r\n });\r\n }} className=\"fa fa-arrow-left\">\r\n \r\n {notification.Name}\r\n
    \r\n
    \r\n
    \r\n \r\n
    \r\n
    \r\n
    \r\n \r\n\r\n \r\n
    \r\n

    Historial

    \r\n \r\n\r\n {agendando && \r\n \r\n \r\n \r\n
    \r\n }\r\n cancel={() => setAgendando(false)}\r\n showModal={agendando}\r\n modalTitle={`Agendar notificación`}\r\n >\r\n \r\n }\r\n\r\n {probando && \r\n \r\n }\r\n
    \r\n )\r\n}","import { apiUrl } from \"../../constants\";\r\nimport axios from 'axios';\r\nimport middleware from '../../middleware/auth';\r\n\r\nvar request = axios.create({\r\n baseURL: apiUrl,\r\n headers: {'Authorization': 'Bearer ' + localStorage.getItem('token'),'Content-Type':'application/json'}\r\n})\r\n\r\nexport default class MenuAppAPI {\r\n \r\n\r\n static getClasificacionesMenu() {\r\n return middleware.hasAuth(() => request.get(`/Classification/Order/`));\r\n }\r\n\r\n static saveMenuOrder(classifications) {\r\n return middleware.hasAuth(() => request.post(`/Classification/Order/`, classifications));\r\n }\r\n\r\n static getClasificacionApp(id) {\r\n return middleware.hasAuth(() => request.get(`/Classification/Order/${id}`));\r\n }\r\n\r\n static updateClasificacionApp(id, data) {\r\n let fd = new FormData();\r\n\r\n fd.append(\"Name\", data.Name);\r\n fd.append(\"DescriptionApp\", data.DescriptionApp);\r\n fd.append(\"ClassificationId\", data.ClassificationId);\r\n fd.append(\"Featured\", data.Featured);\r\n\r\n if (data.IconFile){\r\n fd.append(\"Icon\", data.IconFile);\r\n }else{\r\n fd.append(\"Icon\", data.Icon);\r\n }\r\n\r\n if (data.ImageFile){\r\n fd.append(\"Image\", data.ImageFile);\r\n }else{\r\n fd.append(\"Image\", data.Image);\r\n }\r\n console.log(data);\r\n console.log(fd)\r\n\r\n return middleware.hasAuth(() => request.put(`/Classification/Order/${id}`, fd));\r\n }\r\n\r\n static featureClasificacionApp(classificationId, Featured) {\r\n let body = {ClassificationId: classificationId, Featured: Featured};\r\n return middleware.hasAuth(() => request.patch(`/Classification/Featured/${classificationId}`, body));\r\n }\r\n}","import * as React from 'react';\r\nimport FieldAddons from '../field/Field+Addons';\r\n/**\r\n * Componente de utilería para un que su único fin sea la búsqueda de algún elemento en una lista\r\n */\r\nexport default class SearchForm3 extends React.Component{\r\n\r\n render(){\r\n return (\r\n
    \r\n

    \r\n \r\n this.props.onInput(e.currentTarget.value)}\r\n />\r\n \r\n

    \r\n

    \r\n \r\n

    \r\n
    \r\n )\r\n }\r\n}","import React from 'react';\r\nimport NoItems from '../../../../util/noitems/NoItems';\r\nimport Loading from '../../../../util/loading/Loading';\r\nimport './style.css'\r\n\r\nexport default function TablaMenuApp({data, edit, details, loading, feature}){\r\n const columnas = [\"Orden\",\"Imagen\",\"Nombre\",\"Destacado\",\"Acciones\"];\r\n\r\n\r\n const actions = (classification) => {\r\n return (\r\n \r\n \r\n \r\n \r\n )\r\n \r\n }\r\n\r\n return (\r\n
    \r\n {data.length > 0 ? \r\n \r\n {columnas.map(c => )}\r\n \r\n \r\n {data.map(classification => {\r\n return \r\n \r\n \r\n \r\n \r\n {actions(classification)}\r\n \r\n })}\r\n \r\n
    {c}
    {classification.OrderIndex}\r\n {classification.Icon ? : \"n/a\"}\r\n {classification.Name}\r\n
    \r\n { }}\r\n />\r\n
    \r\n
    : !loading ? : \r\n }\r\n
    \r\n )\r\n}","import React, {useState, useEffect} from 'react';\r\nimport MenuAppAPI from '../../../../../services/Caffenio App/Menu';\r\nimport { validateExtensionFile } from '../../../../../util/util';\r\nimport { toast } from 'react-toastify';\r\nimport Loading from '../../../../util/loading/Loading';\r\nimport \"../components/style.css\"\r\nimport Field from '../../../../util/field/Field';\r\n\r\nexport default function DetalleClasificacionApp({classification, editing, inputs, setInput, reloadData}){\r\n const [fileIcon, setFileIcon] = useState(null);\r\n const [fileImage, setFileImage] = useState(null);\r\n const [featured, setFeatured] = useState(false);\r\n\r\n useEffect(() => {\r\n if (classification != null && editing){\r\n setInput(\"Name\", classification.Name);\r\n setInput(\"Featured\", classification.Featured);\r\n setInput(\"DescriptionApp\", classification.DescriptionApp);\r\n setInput(\"ClassificationId\", classification.ClassificationId);\r\n setInput(\"IconFile\", null);\r\n setInput(\"ImageFile\", null);\r\n setInput(\"Icon\", classification.Icon);\r\n setInput(\"Image\", classification.Image);\r\n setFeatured(classification.Featured);\r\n }\r\n }, [classification])\r\n\r\n return (\r\n
    \r\n {classification ?\r\n
    \r\n
    \r\n \r\n
    \r\n setInput('Name', e.currentTarget.value)}\r\n disabled={!editing}\r\n />\r\n
    \r\n
    \r\n
    \r\n \r\n
    \r\n setInput('DescriptionApp', e.currentTarget.value)}\r\n disabled={!editing}\r\n />\r\n
    \r\n
    \r\n
    \r\n \r\n
    \r\n {classification.Icon ? : \"n/a\"}\r\n
    \r\n
    \r\n {editing &&
    \r\n \r\n
    \r\n \r\n
    \r\n {inputs.IconFile &&\r\n \r\n }\r\n
    \r\n {fileIcon && }\r\n
    }\r\n
    \r\n \r\n
    \r\n {classification.Image ? : \"n/a\"}\r\n
    \r\n
    \r\n {editing &&
    \r\n \r\n
    \r\n \r\n
    \r\n {inputs.ImageFile &&\r\n \r\n }\r\n
    \r\n {fileImage && }\r\n
    }\r\n
    \r\n \r\n
    \r\n \r\n
    \r\n
    \r\n
    \r\n \r\n
    \r\n { }}\r\n />\r\n
    \r\n
    \r\n
    \r\n : /*loading ? :*/ null}\r\n
    \r\n )\r\n}","import React, {useState} from 'react';\r\nimport { useEffect } from 'react';\r\nimport MenuAppAPI from '../../../../services/Caffenio App/Menu';\r\nimport { toast } from 'react-toastify';\r\nimport SearchFormV3 from '../../../util/searchform/SearchFormV3';\r\nimport TablaMenuApp from './components/TablaMenuApp';\r\nimport PortalModal from '../../../../util/portals/PortalModal';\r\nimport useModal from '../../../../util/hooks/useModal';\r\nimport DetalleClasificacionApp from './DetalleClasificacionApp/DetalleClasificacionApp';\r\nimport useForm from '../../../../util/hooks/useForm';\r\n\r\nexport default function OrdenMenuApp(props){\r\n \r\n const [classifications, setClassifications] = useState([])\r\n const [loading, setLoading] = useState(false)\r\n const [filterText, setFilterText] = useState(\"\")\r\n const [currentClassif, setCurrentClassif] = useState(null);\r\n const detailModal = useModal()\r\n\r\n useEffect(() => {\r\n getData();\r\n }, [])\r\n\r\n const getData = () => {\r\n setLoading(true);\r\n MenuAppAPI.getClasificacionesMenu().then(res => {\r\n setClassifications(res.data);\r\n setLoading(false);\r\n }).catch(err => {\r\n toast.error(err.response.data.Message);\r\n setLoading(false);\r\n })\r\n }\r\n\r\n const feature = (id) => {\r\n MenuAppAPI.featureClasificacionApp(id, true).then(res => {\r\n toast.success(res.data.Message);\r\n getData();\r\n }).catch(err => toast.error(err.response.data.Message));\r\n }\r\n\r\n return (\r\n
    \r\n

    Menú App

    \r\n
    \r\n
    \r\n setFilterText(t)}\r\n itemName={'Familia'}\r\n icon={'sort'}\r\n btnTitle=\"Ordenar menú\"\r\n btnAction={() => {props.history.push('/app/menu/ordenar')}}\r\n tooltip=\"Ordenar menú de App\"\r\n /> \r\n
    \r\n
    \r\n
    \r\n
    \r\n
    \r\n c.Name.toLowerCase().includes(filterText.toLowerCase()))}\r\n details={(classif) => {\r\n setCurrentClassif(classif)\r\n detailModal.toggle()\r\n }}\r\n edit={(classif) => {\r\n props.history.push(`/app/menu/clasificacion/${classif.ClassificationId}/editar`)\r\n }}\r\n feature={feature}\r\n />\r\n
    \r\n
    \r\n getData()} classification={currentClassif} inputs={currentClassif} editing={false}/>}\r\n />\r\n
    \r\n )\r\n}","import React, { useState, useEffect } from 'react';\r\nimport useForm from '../../../../../util/hooks/useForm';\r\nimport DetalleClasificacionApp from '../DetalleClasificacionApp/DetalleClasificacionApp';\r\nimport MenuAppAPI from '../../../../../services/Caffenio App/Menu';\r\nimport { toast } from 'react-toastify';\r\n\r\nexport default function EditarClasificacionApp({history, match}){\r\n const [classification, setClassification] = useState(null);\r\n const [working, setWorking] = useState(false);\r\n\r\n useEffect(() => {\r\n MenuAppAPI.getClasificacionApp(match.params.id).then(res => {\r\n setClassification(res.data);\r\n }).catch(err => toast.error(err.response.data.Message));\r\n }, [])\r\n\r\n const {inputs, setInput, errors, setError, replaceInputs , handleInputChange, handleSelectChange, handleSubmit} = useForm(() => {\r\n edit()\r\n });\r\n\r\n const edit = () => {\r\n setWorking(true);\r\n MenuAppAPI.updateClasificacionApp(inputs.ClassificationId, inputs).then(res => {\r\n toast.success(\"Cambios realizados correctamente.\");\r\n history.push('/app/menu/orden');\r\n }).catch(err => toast.error(err.response.data.Message));\r\n }\r\n\r\n const inputsAreValid = () => {\r\n return (inputs.Name && inputs.DescriptionApp) && (inputs.Name.length > 0 && inputs.DescriptionApp.length > 0)\r\n }\r\n\r\n return (\r\n
    \r\n {/*

    Editar {classification ? classification.Name : \"\"}

    */}\r\n
    \r\n
    \r\n
    \r\n \r\n {\r\n history.push({\r\n pathname: '/app/menu/orden',\r\n });\r\n }} className=\"fa fa-arrow-left\">\r\n \r\n {`Editar ${classification ? classification.Name : \"\"}`}\r\n
    \r\n
    \r\n
    \r\n \r\n
    \r\n
    \r\n

    \r\n {\r\n history.push({\r\n pathname: '/app/menu/orden'\r\n });\r\n }}>\r\n Regresar\r\n \r\n

    \r\n \r\n

    \r\n \r\n Guardar\r\n \r\n

    \r\n
    \r\n
    \r\n
    \r\n
    \r\n
    \r\n )\r\n}","import React from 'react';\r\nimport \"../../components/style.css\"\r\n\r\nexport default function ClassificationCard({classification}){\r\n return (\r\n
    \r\n
    \r\n \"Placeholder\r\n
    \r\n \r\n
    \r\n {classification.Featured && \r\n \r\n }\r\n

    \r\n {classification.Name}\r\n

    \r\n
    \r\n
    \r\n )\r\n}","import React, { useEffect, useState } from 'react';\r\nimport {SortableContainer, SortableElement, arrayMove} from 'react-sortable-hoc';\r\nimport MenuAppAPI from '../../../../../services/Caffenio App/Menu';\r\nimport Loading from '../../../../util/loading/Loading';\r\nimport { toast } from 'react-toastify';\r\nimport ClassificationCard from './components/ClassificationCard';\r\n\r\nconst SortableItem = SortableElement(({value}) =>{\r\n return
  • {value.Name}
  • \r\n});\r\n\r\nconst SortableList = SortableContainer(({items}) => {\r\n return (\r\n
      \r\n {items.map((value, index) => (\r\n \r\n ))}\r\n
    \r\n );\r\n});\r\n\r\nconst gridStyles = {\r\n display: 'grid',\r\n gridTemplateColumns: '25% 25% 25%',//'repeat(3, 1fr)',\r\n gridGap: '16px',\r\n height: '50px'\r\n};\r\n\r\nconst gridItemStyles = {\r\n height: '3px',\r\n // backgroundColor: '#e5e5e5',\r\n};\r\n\r\nconst GridItem = SortableElement(({ value }) =>\r\n //
    \r\n \r\n //
    \r\n);\r\n\r\nconst Grid = SortableContainer(({ items }) =>\r\n
    \r\n {items.map((value, index) =>\r\n \r\n )}\r\n
    \r\n, {disableAutoscroll: true});\r\n\r\nexport default function OrdenarMenu({history}){\r\n const [classifications, setClassifications] = useState([])\r\n const [loading, setLoading] = useState(false)\r\n const [working, setWorking] = useState(false)\r\n\r\n useEffect(() => {\r\n setLoading(true);\r\n MenuAppAPI.getClasificacionesMenu().then(res => {\r\n setClassifications(res.data);\r\n setLoading(false);\r\n }).catch(err => {\r\n toast.error(err.response.data.Message);\r\n setLoading(false);\r\n })\r\n }, [])\r\n\r\n const onSortEnd = ({oldIndex, newIndex}) => {\r\n setClassifications(arrayMove(classifications, oldIndex, newIndex));\r\n };\r\n\r\n const saveOrder = () => {\r\n setWorking(true);\r\n MenuAppAPI.saveMenuOrder(classifications).then(res => {\r\n toast.success(res.data.Message);\r\n history.push('/app/menu/orden');\r\n }).catch(err => toast.error(err.response.data.Message));\r\n }\r\n\r\n return (\r\n
    \r\n
    \r\n
    \r\n
    \r\n
    \r\n
    \r\n \r\n {\r\n history.push({\r\n pathname: '/app/menu/orden',\r\n });\r\n }} className=\"fa fa-arrow-left\">\r\n \r\n {`Editar orden de menú`}\r\n \r\n \r\n \r\n
    \r\n
    \r\n
    \r\n
    \r\n\r\n {/* */}\r\n
    \r\n
    \r\n {classifications.length > 0 ? : null}\r\n
    \r\n
    \r\n \r\n
    \r\n )\r\n}","import { apiUrl } from \"../constants\";\r\nimport axios from 'axios';\r\nimport middleware from '../middleware/auth';\r\n\r\nvar request = axios.create({\r\n baseURL: apiUrl,\r\n headers: {'Authorization':'Bearer ' +localStorage.getItem('token'),'Content-Type':'application/json'}\r\n})\r\n\r\nvar requestfile = axios.create({\r\n responseType: 'blob',\r\n baseURL: apiUrl,\r\n headers: {'Authorization': 'Bearer ' + localStorage.getItem('token'),'Content-Type':'application/json'}\r\n})\r\n\r\nexport default class UberEatsAPI {\r\n\r\n static getRestaurantes(){\r\n return middleware.hasAuth(() => request.get(`UberEats/Restaurants`));\r\n }\r\n\r\n static getRestaurante(id){\r\n return middleware.hasAuth(() => request.get(`UberEats/Restaurants/${id}`));\r\n }\r\n\r\n static activateRestaurant(id){\r\n return middleware.hasAuth(() => request.put(`UberEats/Restaurants/${id}/ActivePOSIntegration`));\r\n }\r\n\r\n static inactivateRestaurant(id){\r\n return middleware.hasAuth(() => request.put(`UberEats/Restaurants/${id}/InactivePOSIntegration`));\r\n }\r\n\r\n static getUberEatsRestaurantMenu(id){\r\n return middleware.hasAuth(() => request.get(`UberEats/Restaurants/${id}/Menu`));\r\n }\r\n\r\n static activateUberEatsItem(id, itemId){\r\n var body = {ItemId: itemId};\r\n return middleware.hasAuth(() => request.post(`/UberEats/Menu/${id}/ActiveItem/`, body));\r\n }\r\n\r\n static inactivateUberEatsItem(id, itemId){\r\n var body = {ItemId: itemId};\r\n return middleware.hasAuth(() => request.post(`/UberEats/Menu/${id}/InactiveItem/`, body));\r\n }\r\n\r\n static activateCaffenioRecipe(id, recipeId){\r\n var body = {IsRecipe: true, RecipeId: Number.parseInt(recipeId)};\r\n return middleware.hasAuth(() => request.post(`/UberEats/CentralMenu/${id}/ActiveRecipe/`, body));\r\n }\r\n\r\n static inactivateCaffenioRecipe(id, recipeId){\r\n var body = {IsRecipe: true, RecipeId: Number.parseInt(recipeId)};\r\n return middleware.hasAuth(() => request.post(`/UberEats/CentralMenu/${id}/InactiveRecipe/`, body));\r\n }\r\n\r\n static getDrivesAvailables(){\r\n return middleware.hasAuth(() => request.get(`UberEats/Restaurants/DrivesAvailables`));\r\n }\r\n\r\n static deleteRestaurante(id){\r\n return middleware.hasAuth(() => request.delete(`UberEats/Restaurants/${id}`));\r\n }\r\n\r\n static createRestaurante(restaurante){\r\n return middleware.hasAuth(() => request.post(`UberEats/Restaurants/`,restaurante));\r\n }\r\n\r\n static downloadMenuReport(id){\r\n return middleware.hasAuth(() => requestfile.get(`UberEats/Restaurants/ValidateMenu/${id}`));\r\n }\r\n\r\n static changeStatusCancelNotification(data) {\r\n return middleware.hasAuth(() => request.put('UberEats/Restaurants/CancelNotification', data));\r\n }\r\n\r\n static changeStatusOrderRelease(data) {\r\n return middleware.hasAuth(() => request.put('UberEats/Restaurants/OrderReleaseNotification', data));\r\n }\r\n \r\n}","import React, { Component } from 'react';\r\nimport UberEatsAPI from '../../services/ubereats';\r\nimport { toast } from 'react-toastify';\r\nimport Loading from '../util/loading/Loading';\r\nimport TextField from '../util/textfield/TextField';\r\nimport Field from '../util/field/Field';\r\nimport Dropdown from '../util/dropdown/Dropdown';\r\n\r\nimport ErrorMessages from '../../util/validation-error-messages';\r\n\r\nclass NewRestaurant extends Component {\r\n\r\n constructor(props){\r\n super(props);\r\n this.state = {\r\n drivesAvalaibles: [],\r\n isLoading: false,\r\n driveSelected: null,\r\n restaurant: {\r\n DriveId: 0,\r\n StoreId: \"\"\r\n }\r\n }\r\n }\r\n\r\n componentDidMount(){\r\n this.setState({isLoading: true});\r\n UberEatsAPI.getDrivesAvailables().then(response => {\r\n this.setState({drivesAvalaibles: response.data, isLoading: false});\r\n }).catch(err => {\r\n this.setState({isLoading: false})\r\n if(err.response)\r\n toast.error(err.response.data.Message)\r\n else\r\n toast.error(ErrorMessages.SinConexion)\r\n });\r\n }\r\n\r\n driveChangeOption = (index) => {\r\n let restaurant = {...this.state.restaurant};\r\n restaurant.DriveId = index === 0 ? 0 : this.state.drivesAvalaibles[index - 1].idCaffenio;\r\n this.setState({restaurant: restaurant});\r\n }\r\n\r\n handleChange = (e) => {\r\n let state = {...this.state};\r\n state.restaurant[e.target.name] = e.target.value;\r\n this.setState(state);\r\n }\r\n\r\n render() {\r\n return (\r\n
    \r\n \r\n \r\n \r\n \r\n\r\n \r\n this.handleChange(e)}/>\r\n\r\n
    \r\n
    \r\n this.props.save(this.state.restaurant)}>\r\n Guardar\r\n \r\n
    \r\n
    \r\n \r\n
    \r\n );\r\n }\r\n\r\n}\r\n\r\nNewRestaurant.defaultProps = {\r\n restaurant: {\r\n DriveId: 0,\r\n StoreId: \"\"\r\n },\r\n driveSelected: null\r\n}\r\n\r\nexport default NewRestaurant;","import React, { Component } from 'react';\r\nimport SearchForm from \"../util/searchform/SearchForm\";\r\nimport TableTemplate from \"../util/tabletemplate/TableTemplate\";\r\nimport NoItems from \"../util/noitems/NoItems\";\r\nimport UberEatsAPI from '../../services/ubereats';\r\nimport { toast } from 'react-toastify';\r\nimport Modal from '../util/modal/Modal';\r\nimport NewRestaurant from './NewRestaurant';\r\nimport AcceptModal from '../util/acceptModal/AcceptModal';\r\nimport Pagination from '../util/pagination/Pagination';\r\nimport Loading from '../util/loading/Loading';\r\n\r\nimport ErrorMessages from '../../util/validation-error-messages';\r\nimport * as moment from 'moment';\r\n\r\nclass Restaurantes extends Component {\r\n\r\n restaurants = [];\r\n\r\n constructor(props){\r\n super(props);\r\n this.state = {\r\n restaurants: [],\r\n pageRestaurants: [],\r\n filterText: \"\",\r\n restaurant: null,\r\n showModal: false,\r\n removeModal: false,\r\n isLoading: false\r\n }\r\n }\r\n\r\n componentWillMount(){\r\n this.getRestaurantes();\r\n }\r\n\r\n getRestaurantes = () => {\r\n this.setState({isLoading: true, filterText: ''}, () => {\r\n UberEatsAPI.getRestaurantes().then(response => {\r\n this.setState({restaurants: response.data, isLoading: false});\r\n this.restaurants = response.data;\r\n }).catch(err => {\r\n this.setState({isLoading: false})\r\n if(err.response)\r\n toast.error(err.response.data.Message);\r\n else\r\n toast.error(ErrorMessages.SinConexion);\r\n })\r\n });\r\n }\r\n\r\n handleSearchInput = (text) => {\r\n let restaurants = this.restaurants.filter(restaurant => (restaurant.Nombre.toLowerCase().normalize(\"NFD\").replace(/[\\u0300-\\u036f]/g, \"\") + \" \" + restaurant.Restaurante.toLowerCase().normalize(\"NFD\").replace(/[\\u0300-\\u036f]/g, \"\")).includes(text.trim().toLowerCase().normalize(\"NFD\").replace(/[\\u0300-\\u036f]/g, \"\")));\r\n let state = this.state;\r\n state.filterText = text;\r\n state.restaurants = restaurants;\r\n this.setState(state);\r\n }\r\n\r\n remove = (restaurant) => {\r\n //console.log(unit)\r\n let state = {...this.state};\r\n const loadingToast = toast.info(\"Cargando...\", {autoClose: false, closeButton: false, className: \"has-background-primary has-text-weight-bold\"});\r\n UberEatsAPI.deleteRestaurante(restaurant.CaffenioRelRestauranteId).then(response => {\r\n //console.log(response);\r\n state.restaurants.splice(state.restaurants.findIndex(u => u.CaffenioRelRestauranteId === restaurant.CaffenioRelRestauranteId),1);\r\n state.pageRestaurants.splice(state.pageRestaurants.findIndex(u => u.CaffenioRelRestauranteId === restaurant.CaffenioRelRestauranteId),1);\r\n state.removeModal = false;\r\n this.setState(state, () => {\r\n toast.dismiss(loadingToast);\r\n toast.success(\"Restaurante eliminado\");\r\n })\r\n }).catch(err => {\r\n toast.dismiss(loadingToast);\r\n state.removeModal = false;\r\n this.setState(state);\r\n toast.error(err.response.data.Message);\r\n })\r\n }\r\n\r\n create = () => {\r\n this.setState({showModal: true, restaurant: null});\r\n }\r\n\r\n download = (restaurant) => {\r\n\r\n this.setState({isLoading: true}, () => {\r\n UberEatsAPI.downloadMenuReport(restaurant.CaffenioRelRestauranteId).then(response => {\r\n const url = window.URL.createObjectURL(new Blob([response.data]));\r\n const link = document.createElement('a');\r\n link.href = url;\r\n let nombre = restaurant.Restaurante; //.toLowerCase().replace(' ', '_');\r\n let name = `REPORTE MENU ${moment().format('DD MM YYYY h mm ss')} ${nombre}`;\r\n name = name.replace(/ /g,\"_\");\r\n link.setAttribute('download', `${name.toUpperCase()}.xlsx`);\r\n document.body.appendChild(link);\r\n link.click();\r\n this.setState({isLoading: false});\r\n }).catch(err => {\r\n this.setState({isLoading: false});\r\n toast.error(err.response.data.Message)\r\n })\r\n })\r\n\r\n }\r\n\r\n changeStatusOrderRelease = (restaurant) => {\r\n let data = {\r\n CaffenioRelRestauranteId: restaurant.CaffenioRelRestauranteId,\r\n EnableOrderRelease: !restaurant.EnableOrderRelease\r\n }\r\n\r\n this.setState({isLoading: true}, () => {\r\n UberEatsAPI.changeStatusOrderRelease(data).then(response => {\r\n\r\n let state = { ...this.state };\r\n\r\n let index = state.restaurants.findIndex(r => r.CaffenioRelRestauranteId === restaurant.CaffenioRelRestauranteId);\r\n let Restaurant = state.restaurants[index];\r\n Restaurant.EnableOrderRelease = data.EnableOrderRelease\r\n state.restaurants[index] = Restaurant;\r\n\r\n let indexP = state.pageRestaurants.findIndex(r => r.CaffenioRelRestauranteId === restaurant.CaffenioRelRestauranteId);\r\n let RestaurantP = state.pageRestaurants[indexP];\r\n RestaurantP.EnableOrderRelease = data.EnableOrderRelease\r\n state.pageRestaurants[indexP] = RestaurantP;\r\n\r\n state.isLoading = false;\r\n\r\n this.setState(state);\r\n toast.success(response.data.Message)\r\n }).catch(err => {\r\n this.setState({isLoading: false});\r\n toast.error(err.response.data.Message)\r\n })\r\n })\r\n }\r\n\r\n changeStatusCancelNotification = (restaurant) => {\r\n let data = {\r\n CaffenioRelRestauranteId: restaurant.CaffenioRelRestauranteId,\r\n EnableCancelNotification: !restaurant.EnableCancelNotification\r\n }\r\n\r\n this.setState({isLoading: true}, () => {\r\n UberEatsAPI.changeStatusCancelNotification(data).then(response => {\r\n\r\n let state = { ...this.state };\r\n\r\n let index = state.restaurants.findIndex(r => r.CaffenioRelRestauranteId === restaurant.CaffenioRelRestauranteId);\r\n let Restaurant = state.restaurants[index];\r\n Restaurant.EnableCancelNotification = data.EnableCancelNotification\r\n state.restaurants[index] = Restaurant;\r\n\r\n let indexP = state.pageRestaurants.findIndex(r => r.CaffenioRelRestauranteId === restaurant.CaffenioRelRestauranteId);\r\n let RestaurantP = state.pageRestaurants[indexP];\r\n RestaurantP.EnableCancelNotification = data.EnableCancelNotification\r\n state.pageRestaurants[indexP] = RestaurantP;\r\n\r\n state.isLoading = false;\r\n\r\n this.setState(state);\r\n toast.success(response.data.Message)\r\n }).catch(err => {\r\n this.setState({isLoading: false});\r\n toast.error(err.response.data.Message)\r\n })\r\n })\r\n }\r\n\r\n save = (restaurant) => {\r\n\r\n console.log(restaurant);\r\n \r\n if(!restaurant || !restaurant.DriveId || restaurant.DriveId == 0)\r\n {\r\n toast.error('Selecciona un drive');\r\n return;\r\n }\r\n\r\n if(!restaurant || !restaurant.StoreId || restaurant.StoreId.length == 0)\r\n {\r\n toast.error('Indique el identificador del restaurante');\r\n return;\r\n }\r\n\r\n this.setState({showModal: false, isLoading: true}, () => {\r\n UberEatsAPI.createRestaurante(restaurant).then(response => {\r\n this.getRestaurantes();\r\n toast.success('Nuevo restaurante agregado exitosamente');\r\n }).catch(err => {\r\n this.setState({isLoading: false})\r\n if(err.response)\r\n toast.error(err.response.data.Message);\r\n else\r\n toast.error(ErrorMessages.SinConexion);\r\n })\r\n });\r\n }\r\n\r\n toDetails = (restaurant) => {\r\n this.props.history.push(`/restaurantes/${restaurant.DriveId}`)\r\n }\r\n\r\n render() {\r\n return (\r\n
    \r\n

    Restaurantes - Uber Eats

    \r\n
    \r\n
    \r\n
    \r\n
    \r\n
    \r\n
    \r\n this.handleSearchInput(t)}\r\n itemName={'Restaurante'}\r\n />\r\n
    \r\n
    \r\n
    \r\n
    \r\n
    \r\n\r\n \r\n\r\n
    \r\n\r\n
    \r\n
    \r\n {this.state.restaurants.length !== 0 \r\n ? this.setState({showModal: true, restaurant: restaurant})}\r\n canDelete \r\n canDownload\r\n rowClickable\r\n details={(restaurant) => this.toDetails(restaurant)}\r\n disableCheck={false}\r\n changeStatus={(restaurant) => this.changeStatusCancelNotification(restaurant)}\r\n changeOrderRelease={(restaurant) => this.changeStatusOrderRelease(restaurant)}\r\n download={(restaurant) => this.download(restaurant) }\r\n remove={(restaurant) => this.setState({removeModal: true, restaurant: restaurant})}\r\n extraButtons={(row) => {\r\n // Creamos un botón que lanza un modal con información de que menus esta la receta seleccionada\r\n return \r\n }}\r\n /> \r\n : }\r\n \r\n this.setState({ pageRestaurants: restaurants })} />\r\n \r\n\r\n {this.state.showModal && \r\n this.setState({showModal: false, restaurant: null})}\r\n >\r\n this.save(restaurant))} />\r\n \r\n }\r\n\r\n {this.state.removeModal && this.remove(this.state.restaurant)}\r\n cancel={() => this.setState({removeModal: false, restaurant: null})}\r\n modalTitle={\"Eliminar Restaurante\"}\r\n />}\r\n\r\n \r\n \r\n
    \r\n
    \r\n\r\n
    \r\n );\r\n }\r\n\r\n}\r\n\r\nexport default Restaurantes;","import React, { Component } from 'react';\r\n\r\nclass InfoOrderRestaurant extends Component {\r\n\r\n\r\n}\r\n\r\nexport default InfoOrderRestaurant;","import React, { Component} from 'react';\r\n\r\nexport default class RecipesRestaurantTable extends Component {\r\n\r\n columnas = [\"idReceta\", \"Nombre\", \"\", \"Mapeo\", \"Activo\", \"\"];\r\n\r\n constructor(props){\r\n super(props);\r\n this.state = {\r\n data: props.data,\r\n collapsed: true,\r\n loadingChangingStatus: this.props.loadingChangingStatus\r\n }\r\n }\r\n\r\n componentDidUpdate(prevProps, prevState) {\r\n if (prevProps.data !== this.props.data) {\r\n this.setState({collapsed: true});\r\n }\r\n }\r\n\r\n render(){\r\n return (\r\n
    \r\n
    \r\n
    \r\n this.setState({collapsed: !this.state.collapsed})} style={{cursor: 'pointer'}}>\r\n \r\n \r\n
    \r\n
    \r\n \r\n
    \r\n
    \r\n {!this.state.collapsed && \r\n \r\n {this.columnas.map(c => )}\r\n \r\n \r\n {this.props.data.map((row, index) => {\r\n return (\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n )\r\n })}\r\n \r\n
    {c}
    {row.RecipeId}{row.Name}{row.Description}{row.Status}{row.Active ? 'Activo' : 'Inactivo'}\r\n {row.IsValid && }\r\n
    }\r\n
    \r\n )\r\n }\r\n}","import React, { Component} from 'react';\r\n\r\nexport default class ToppingsRestaurantTable extends Component {\r\n\r\n columnas = [\"idTopping\", \"Nombre\", \"Status\"];\r\n\r\n constructor(props){\r\n super(props);\r\n this.state = {\r\n data: props.data,\r\n collapsed: true\r\n }\r\n }\r\n\r\n componentDidUpdate(prevProps, prevState) {\r\n if (prevProps.data !== this.props.data) {\r\n this.setState({collapsed: true});\r\n }\r\n }\r\n\r\n render(){\r\n return (\r\n
    \r\n
    \r\n
    \r\n this.setState({collapsed: !this.state.collapsed})} style={{cursor: 'pointer'}}>\r\n \r\n \r\n
    \r\n
    \r\n \r\n
    \r\n
    \r\n {!this.state.collapsed && \r\n \r\n {this.columnas.map(c => )}\r\n \r\n \r\n {this.props.data.map((row, index) => {\r\n return (\r\n \r\n \r\n \r\n \r\n \r\n )\r\n })}\r\n \r\n
    {c}
    {row.ToppingId}{row.Name}{row.Status}
    }\r\n
    \r\n )\r\n }\r\n}","import React, { Component} from 'react';\r\n\r\nexport default class UberEatsMenuRestaurantTable extends Component {\r\n\r\n columnas = [\"Categoría\", \"Descripción\", \"Estatus\", \"\"];\r\n\r\n constructor(props){\r\n super(props);\r\n this.state = {\r\n data: props.data,\r\n collapsed: true,\r\n loadingChangingStatus: this.props.loadingChangingStatus\r\n }\r\n }\r\n\r\n componentDidUpdate(prevProps, prevState) {\r\n if (prevProps.data !== this.props.data) {\r\n this.setState({collapsed: true});\r\n }\r\n }\r\n\r\n render(){\r\n console.log(this.props.data);\r\n return (\r\n
    \r\n
    \r\n
    \r\n this.setState({collapsed: !this.state.collapsed})} style={{cursor: 'pointer'}}>\r\n \r\n \r\n
    \r\n
    \r\n \r\n
    \r\n
    \r\n {!this.state.collapsed && \r\n \r\n {this.columnas.map(c => )}\r\n \r\n \r\n {this.props.data.map((row, index) => {\r\n return (\r\n \r\n \r\n \r\n \r\n \r\n \r\n )\r\n })}\r\n \r\n
    {c}
    {row.Type}{row.Name}{row.IsValid ? row.Active ? \"Activo\" : \"Inactivo\" : \"\"}\r\n {row.IsValid && }\r\n
    }\r\n
    \r\n )\r\n }\r\n}","import { isThisSecond } from 'date-fns/esm';\r\nimport React, { Component } from 'react';\r\nimport { toast } from 'react-toastify';\r\nimport UberEatsAPI from '../../services/ubereats';\r\nimport Loading from '../util/loading/Loading';\r\nimport RecipesRestaurantTable from './components/RecipesRestaurantTable';\r\nimport ToppingsRestaurantTable from './components/ToppingsRestaurantTable';\r\nimport UberEatsMenuRestaurantTable from './components/UberEatsMenuRestaurantTable';\r\n\r\nexport default class RestaurantDetails extends Component {\r\n constructor(props){\r\n super(props);\r\n this.state = {\r\n restaurant: {\r\n CaffenioRelRestauranteId:null,\r\n DriveId:null,\r\n Nombre:null,\r\n StoreId:null,\r\n Restaurante:null,\r\n idMenu:null,\r\n EnableCancelNotification:null,\r\n EnablePOSIntegration:null,\r\n Menu:null,\r\n },\r\n loading: false,\r\n categories: [],\r\n selectedTab: 0,\r\n loadingChangeIntegrationStatus: false,\r\n loadingUberEatsItemChange: -1,\r\n loadingCaffenioRecipeChange: -1\r\n }\r\n }\r\n\r\n componentDidMount(){\r\n this.getRestaurantInfo(this.props.match.params.id);\r\n }\r\n\r\n getRestaurantInfo = (id) => {\r\n this.setState({loading: true}, () => {\r\n let state = {...this.state}\r\n UberEatsAPI.getRestaurante(id).then(res => {\r\n state.restaurant = res.data;\r\n return UberEatsAPI.getUberEatsRestaurantMenu(id);\r\n }).then(res => {\r\n state.categories = res.data;\r\n state.loading = false;\r\n this.setState(state);\r\n }).catch(err => console.log(err));\r\n })\r\n }\r\n\r\n updateRestaurantInfo = () => {\r\n UberEatsAPI.getRestaurante(this.props.match.params.id).then(res => {\r\n this.setState({restaurant: res.data, loadingChangeIntegrationStatus: false});\r\n }).catch(err => console.log(err));\r\n }\r\n\r\n changeStatus = () => {\r\n this.setState({loadingChangeIntegrationStatus: true}, () => {\r\n if (!this.state.restaurant.EnablePOSIntegration){\r\n UberEatsAPI.activateRestaurant(this.props.match.params.id).then(res => {\r\n toast.success(\"Restaurante activado correctamente\");\r\n this.updateRestaurantInfo()\r\n }).catch(err => console.log(err));\r\n }else{\r\n UberEatsAPI.inactivateRestaurant(this.props.match.params.id).then(res => {\r\n toast.success(\"Restaurante desactivado correctamente\");\r\n this.updateRestaurantInfo()\r\n }).catch(err => console.log(err));\r\n }\r\n })\r\n }\r\n\r\n activateUberEatsItem = (item, index) => {\r\n this.setState({loadingUberEatsItemChange: index})\r\n if (item.Active) {\r\n UberEatsAPI.inactivateUberEatsItem(this.props.match.params.id, item.ItemId).then(res => {\r\n toast.success(\"Opción de Uber Eats desactivada correctamente\");\r\n let state = {...this.state};\r\n var newItem = item;\r\n newItem.Active = false;\r\n state.categories[this.state.selectedTab].UberEatsMenu[index] = newItem;\r\n state.loadingUberEatsItemChange = -1;\r\n this.setState(state)\r\n }).catch(err => {\r\n toast.error(\"Ocurrió un error al desactivar la opción de Uber Eats\");\r\n this.setState({loadingUberEatsItemChange: -1});\r\n });\r\n }else{\r\n UberEatsAPI.activateUberEatsItem(this.props.match.params.id, item.ItemId).then(res => {\r\n toast.success(\"Opción de Uber Eats activada correctamente\");\r\n let state = {...this.state};\r\n var newItem = item;\r\n newItem.Active = true;\r\n state.categories[this.state.selectedTab].UberEatsMenu[index] = newItem;\r\n state.loadingUberEatsItemChange = -1;\r\n this.setState(state)\r\n }).catch(err => {\r\n toast.error(\"Ocurrió un error al activar la opción de Uber Eats\");\r\n this.setState({loadingUberEatsItemChange: -1});\r\n });\r\n }\r\n }\r\n\r\n activateCaffenioRecipe = (recipe, index) => {\r\n this.setState({loadingCaffenioRecipeChange: index})\r\n if (recipe.Active){\r\n UberEatsAPI.inactivateCaffenioRecipe(this.props.match.params.id, recipe.RecipeId).then(res => {\r\n toast.success(\"Receta de Caffenio desactivada correctamente\");\r\n let state = {...this.state};\r\n var newItem = recipe;\r\n newItem.Active = false;\r\n state.categories[this.state.selectedTab].RecipesCaffenio[index] = newItem;\r\n state.loadingCaffenioRecipeChange = -1;\r\n this.setState(state);\r\n }).catch(err => {\r\n toast.error(\"Ocurrió un error al desactivar la receta de Caffenio\");\r\n this.setState({loadingCaffenioRecipeChange: -1});\r\n })\r\n }else{\r\n UberEatsAPI.activateCaffenioRecipe(this.props.match.params.id, recipe.RecipeId).then(res => {\r\n toast.success(\"Receta de Caffenio activada correctamente\");\r\n let state = {...this.state};\r\n var newItem = recipe;\r\n newItem.Active = true;\r\n state.categories[this.state.selectedTab].RecipesCaffenio[index] = newItem;\r\n state.loadingCaffenioRecipeChange = -1;\r\n this.setState(state);\r\n }).catch(err => {\r\n toast.error(\"Ocurrió un error al activar la receta de Caffenio\");\r\n this.setState({loadingCaffenioRecipeChange: -1});\r\n })\r\n }\r\n }\r\n\r\n render() {\r\n return (\r\n
    \r\n

    {this.state.restaurant.Restaurante}

    \r\n {!this.state.loading ? \r\n
    \r\n
    \r\n
    \r\n
    \r\n \r\n {this.state.restaurant.Restaurante}\r\n
    \r\n
    \r\n
    \r\n \r\n {this.state.restaurant.idMenu}\r\n
    \r\n
    \r\n
    \r\n \r\n {this.state.restaurant.Nombre}\r\n
    \r\n
    \r\n
    \r\n \r\n
    \r\n
    \r\n \r\n \r\n
    \r\n
    \r\n
    \r\n
    \r\n \r\n
    \r\n \r\n
    \r\n\r\n
    \r\n
    \r\n \r\n
    \r\n
    \r\n\r\n
    \r\n
    \r\n \r\n
    \r\n
    \r\n\r\n
    \r\n
    \r\n \r\n
    \r\n
    \r\n : }\r\n
    \r\n )\r\n }\r\n}","import React, { useEffect, useState } from \"react\";\r\n\r\n// Components\r\nimport Modal from \"../util/modal/Modal\";\r\nimport Select from \"react-select\";\r\nimport Loader from \"../util/loading/Loading\";\r\nimport { toast } from \"react-toastify\";\r\n\r\n// Services\r\nimport CaffenioDriveAPI from \"../../services/caffenioDrive\";\r\n\r\n/**\r\n *\r\n * @param {Object} driveInfo - Datos del drive seleccionado.\r\n * @param {Array} listLideres - Lista de usuarios líderes.\r\n * @param {Array} listSupervisores - Lista de usuarios supervisores.\r\n * @param {Array} listEncargadas - Lista de encargados de turno.\r\n * @param {Array} listCoordinadoresDrive - Lista de coordinadores de drive.\r\n * @param {Function} onClose - Cierre del modal.\r\n * @returns Component\r\n */\r\nexport const ModalAsignacion = ({\r\n driveInfo = {},\r\n listLideres = [],\r\n listSupervisores = [],\r\n listEncargadas = [],\r\n listCoordinadoresDrive = [],\r\n listIdsLideresPrevSelected = [],\r\n onClose,\r\n onSave,\r\n}) => {\r\n const [state, setState] = useState({\r\n liderSelected: null,\r\n supervisorSelected: null,\r\n encargadaSelected: null,\r\n coordinadoresSelect: null,\r\n isLoading: false,\r\n popupVisible: false,\r\n tempLider: null,\r\n });\r\n\r\n useEffect(() => { \r\n let lider = listLideres.find((lid) => lid.value === driveInfo.Lider);\r\n let supervisor = listSupervisores.find(\r\n (sup) => sup.value === driveInfo.Supervisor\r\n );\r\n let encargada = listEncargadas.find(\r\n (enc) => enc.value === driveInfo.Encargada\r\n );\r\n let coordinador = listCoordinadoresDrive.find(\r\n (coor) => coor.value === driveInfo.CoordinadorDrive\r\n );\r\n setState({\r\n liderSelected: lider,\r\n supervisorSelected: supervisor,\r\n encargadaSelected: encargada,\r\n coordinadoresSelect: coordinador,\r\n });\r\n }, []);\r\n\r\n /**\r\n * Guarda la información con el líder y supervisor asignados.\r\n */\r\n const handleSaveInfo = () => {\r\n if (\r\n state.supervisorSelected === null ||\r\n state.liderSelected === null ||\r\n state.encargadaSelected === null ||\r\n state.coordinadoresSelect === null ||\r\n !state.supervisorSelected ||\r\n !state.liderSelected ||\r\n !state.encargadaSelected ||\r\n !state.coordinadoresSelect\r\n )\r\n return toast.warn(\r\n \"No se ha asignado un líder, supervisor, encargado de turno y/o coordinador de drive.\"\r\n );\r\n const driveData = {\r\n idCaffenio: driveInfo.idCaffenio,\r\n Lider: state.liderSelected.value,\r\n Supervisor: state.supervisorSelected.value,\r\n Encargada: state.encargadaSelected.value,\r\n CoordinadorDrive: state.coordinadoresSelect.value,\r\n };\r\n setState({ ...state, isLoading: true });\r\n CaffenioDriveAPI.updateLiderSupervisor(driveData)\r\n .then((res) => onSave(res.data))\r\n .catch(() => toast.error(\"Ocurrio un error al guardar la información\"))\r\n .finally(() => setState({ ...state, isLoading: false }));\r\n };\r\n\r\n /**\r\n * Manejo del líder seleccionado.\r\n * @param {Object} item - Lider seleccionado.\r\n */\r\n const handleChangeLider = (item) => {\r\n if (listIdsLideresPrevSelected.includes(item.value))\r\n setState({ ...state, popupVisible: true, tempLider: item });\r\n else setState({ ...state, liderSelected: item, tempLider: null });\r\n };\r\n\r\n /**\r\n * Manejo del supervisor seleccionado.\r\n * @param {Object} item - Supervisor seleccionado.\r\n */\r\n const handleChangeSupervisor = (item) => {\r\n setState({ ...state, supervisorSelected: item });\r\n };\r\n\r\n /**\r\n * Manejo del encargada de turno seleccionado.\r\n * @param {Object} item - Encargada seleccionado.\r\n */\r\n const handleChangeEncargada = (item) => {\r\n setState({ ...state, encargadaSelected: item });\r\n };\r\n\r\n /**\r\n * Manejo del coordinador de drive seleccionado.\r\n * @param {Object} item - Coordinador de Drive.\r\n */\r\n const handleChangeCoordinadorDrive = (item) => {\r\n setState({ ...state, coordinadoresSelect: item });\r\n };\r\n\r\n /**\r\n * Asigna el lider seleccionado.\r\n */\r\n const handleSetLider = () => {\r\n setState({\r\n ...state,\r\n tempLider: null,\r\n popupVisible: false,\r\n liderSelected: state.tempLider,\r\n });\r\n };\r\n\r\n return (\r\n onClose()}\r\n >\r\n {state.popupVisible && (\r\n onClose()}\r\n >\r\n
    \r\n

    \r\n El líder que se seleccionó ya se encuentra asignado a otro Drive.\r\n

    \r\n

    \r\n Si es requerido asignarlo en este Drive también, dar clic en la\r\n opción Continuar.\r\n

    \r\n

    \r\n De ser el caso contrario, finalizar el proceso dando clic en{\" \"}\r\n Cancelar.\r\n

    \r\n
    \r\n
    \r\n
    \r\n \r\n setState({ ...state, popupVisible: false })}\r\n >\r\n Cancelar\r\n \r\n
    \r\n \r\n )}\r\n {state.isLoading && (\r\n \r\n )}\r\n
    \r\n
    \r\n
    \r\n \r\n

    {driveInfo.Nombre}

    \r\n
    \r\n
    \r\n \r\n

    {driveInfo.Estado}

    \r\n
    \r\n
    \r\n
    \r\n
    \r\n
    \r\n
    \r\n \r\n

    {driveInfo.Municipio}

    \r\n
    \r\n
    \r\n
    \r\n
    \r\n
    \r\n
    \r\n \r\n handleChangeLider(item)}\r\n noOptionsMessage={() => \"No hay opciones\"}\r\n options={listLideres}\r\n />\r\n
    \r\n
    \r\n
    \r\n
    \r\n
    \r\n
    \r\n \r\n handleChangeSupervisor(item)}\r\n noOptionsMessage={() => \"No hay opciones\"}\r\n options={listSupervisores}\r\n />\r\n
    \r\n
    \r\n
    \r\n
    \r\n
    \r\n
    \r\n \r\n handleChangeEncargada(item)}\r\n noOptionsMessage={() => \"No hay opciones\"}\r\n options={listEncargadas}\r\n />\r\n
    \r\n
    \r\n
    \r\n
    \r\n
    \r\n
    \r\n \r\n handleChangeCoordinadorDrive(item)}\r\n noOptionsMessage={() => \"No hay opciones\"}\r\n options={listCoordinadoresDrive}\r\n />\r\n
    \r\n
    \r\n
    \r\n
    \r\n
    \r\n
    \r\n \r\n \r\n
    \r\n
    \r\n
    \r\n \r\n );\r\n};\r\n","import { apiUrl } from \"../constants\";\r\nimport axios from 'axios';\r\nimport middleware from '../middleware/auth';\r\n\r\nvar request = axios.create({\r\n baseURL: apiUrl,\r\n headers: {'Authorization': 'Bearer ' + localStorage.getItem('token'),'Content-Type':'application/json'}\r\n});\r\n\r\n/**\r\n * Servicio para el recurso de empleados\r\n */\r\nexport default class EmpleadosAPI {\r\n /**\r\n * Obtiene a los empleados por rol de empleado que se da.\r\n * @param {Number} idCategoriaEmp - Categoria de empleado.\r\n * @returns Promise\r\n */\r\n static getEmpleados(idCategoriaEmp) {\r\n return middleware.hasAuth(() => request.get(`/Empleados/${idCategoriaEmp}/`));\r\n }\r\n}","import { apiUrl } from \"../constants\";\r\nimport axios from 'axios';\r\nimport middleware from '../middleware/auth';\r\nimport { stringify } from \"querystring\";\r\n\r\nvar request = axios.create({\r\n baseURL: apiUrl,\r\n headers: {'Authorization': 'Bearer ' + localStorage.getItem('token'),'Content-Type':'application/json'}\r\n});\r\n\r\n/**\r\n * Servicio para el recurso de sucursales\r\n */\r\nexport default class SucursalesAPI {\r\n /**\r\n * Obtiene a las sucursales.\r\n * @returns Promise\r\n */\r\n static getSucursales() {\r\n return middleware.hasAuth(() => request.get(`/Sucursales/`));\r\n }\r\n\r\n /**\r\n * Obtiene todos los datos de las sucursales.\r\n * @returns Promise\r\n */\r\n static getAllSucursales(params) {\r\n return middleware.hasAuth(() => request.get(`/AllSucursales?${stringify(params)}`));\r\n }\r\n\r\n /**\r\n * Actualización de una sucursal.\r\n * @param {Object} sucursal - Datos de la sucursal\r\n * @returns Promise\r\n */\r\n static updateSucursal( sucursal ) {\r\n return middleware.hasAuth(() => request.put('/AllSucursales/', sucursal));\r\n }\r\n\r\n /**\r\n * Creación de una sucursal.\r\n * @param {Object} sucursal - Datos de la sucursal\r\n * @returns \r\n */\r\n static createSucursal( sucursal ) {\r\n return middleware.hasAuth(() => request.post('/AllSucursales/', sucursal));\r\n }\r\n}","import React, { useEffect, useState } from 'react';\r\n\r\n// Components\r\nimport Select from 'react-select';\r\nimport Pagination from '../util/pagination/Pagination';\r\nimport NoItems from '../util/noitems/NoItems';\r\nimport Loading from '../util/loading/Loading';\r\nimport { ModalAsignacion } from './ModalAsignacion';\r\nimport { toast } from 'react-toastify';\r\n\r\n// Servicios\r\nimport CaffenioDrivesAPI from '../../services/caffenioDrive';\r\nimport EmpleadosAPI from '../../services/Empleados';\r\nimport SucursalesAPI from '../../services/Sucursales';\r\n\r\n// Constants\r\nconst LIDER = 6;\r\nconst SUPERVISOR = 3;\r\nconst ENCARGADA = 7;\r\nconst COORDINADOR_DRIVE = 11;\r\n\r\n/**\r\n * Vista de modulo para asignación de líderes y supervisores.\r\n * @returns Component\r\n */\r\nexport const AsignacionLiderSupervisor = () => {\r\n\r\n const [ state, setState ] = useState({\r\n filters: {},\r\n drives: [],\r\n pageDrives: [],\r\n driveSelected: {},\r\n sucursales: [],\r\n pages: [],\r\n listSupervisores: [],\r\n listEncargadas: [],\r\n listLideres: [],\r\n listCoordinadoresDrive: [],\r\n listIdsLideresPrevSelected: [],\r\n listIdsSupervisoresPrevSelected: [],\r\n listIdsEncargadasPrevSelected: [],\r\n listIdsCoordinadoresDrivePrevSelected: [],\r\n detailVisible: false,\r\n isLoading: false\r\n });\r\n\r\n useEffect(() => {\r\n // Carga de datos iniciales\r\n setState({\r\n ...state,\r\n isLoading: true\r\n });\r\n let drives = [];\r\n let pagesDirves = [];\r\n let listSucursales = [];\r\n let listLideres = [];\r\n let listEncargadas = [];\r\n let listCoordinadoresDrive = [];\r\n let listSupervisores = [];\r\n let listIdsLideres = [];\r\n let listIdsSupervisores = [];\r\n let listIdsEncargadas = [];\r\n let listIdsCoordinadores = [];\r\n\r\n\r\n CaffenioDrivesAPI.getCaffenioParaAsignacion(state.filters)\r\n .then(res => {\r\n drives = res.data;\r\n pagesDirves = res.data;\r\n listIdsLideres = res.data.map(dri => dri.Lider);\r\n listIdsSupervisores = res.data.map(dri => dri.Supervisor);\r\n listIdsEncargadas = res.data.map(dri => dri.Encargada);\r\n listIdsCoordinadores = res.data.map(dri => dri.CoordinadorDrive);\r\n return EmpleadosAPI.getEmpleados(LIDER)\r\n })\r\n .then(res => {\r\n listLideres = res.data.map(item => {\r\n return {\r\n value: item.idEmpleado,\r\n label: `${item.Nombre} ${item.ApellidoP} ${item.ApellidoM}`\r\n }\r\n });\r\n return EmpleadosAPI.getEmpleados(SUPERVISOR)\r\n })\r\n .then(res => {\r\n listEncargadas = res.data.map(item => {\r\n return {\r\n value: item.idEmpleado,\r\n label: `${item.Nombre} ${item.ApellidoP} ${item.ApellidoM}`\r\n }\r\n });\r\n return EmpleadosAPI.getEmpleados(ENCARGADA)\r\n })\r\n .then(res => {\r\n listCoordinadoresDrive = res.data.map(item => {\r\n return {\r\n value: item.idEmpleado,\r\n label: `${item.Nombre} ${item.ApellidoP} ${item.ApellidoM}`\r\n }\r\n });\r\n return EmpleadosAPI.getEmpleados(COORDINADOR_DRIVE)\r\n })\r\n .then(res => { \r\n listSupervisores = res.data.map(item => {\r\n return {\r\n value: item.idEmpleado,\r\n label: `${item.Nombre} ${item.ApellidoP} ${item.ApellidoM}`\r\n }\r\n });\r\n return SucursalesAPI.getSucursales()\r\n })\r\n .then(res => {\r\n let listSeted = [];\r\n let tempSucursales = [];\r\n res.data.forEach(suc => {\r\n if (!listSeted.includes(suc.Nombre)) {\r\n listSeted.push(suc.Nombre);\r\n tempSucursales.push({\r\n value: suc.idSucursal,\r\n label: suc.Nombre\r\n });\r\n }\r\n });\r\n listSucursales = tempSucursales;\r\n })\r\n .catch(() => {\r\n toast.error(\"Ocurrio un error al cargar a los empleados.\")\r\n setState({...state})\r\n }).finally(() => setState({\r\n ...state,\r\n isLoading: false,\r\n drives,\r\n pagesDirves,\r\n listLideres,\r\n listSupervisores,\r\n listEncargadas,\r\n listCoordinadoresDrive,\r\n sucursales: listSucursales,\r\n listIdsLideresPrevSelected: listIdsLideres,\r\n listIdsSupervisoresPrevSelected: listIdsSupervisores,\r\n listIdsEncargadasPrevSelected: listIdsEncargadas,\r\n listIdsCoordinadoresDrivePrevSelected: listIdsCoordinadores\r\n }))\r\n },[]);\r\n\r\n /**\r\n * Actualiza la informacion de los Drives con los datos nuevos\r\n * al asignar un líder y supervisor.\r\n * @param {Object} infoUpdated - Info de Drive actualizada.\r\n */\r\n const updateDrivesList = infoUpdated => {\r\n let listDrives = [ ...state.drives ];\r\n let indexDriveToReplace = null;\r\n state.drives.forEach((drive, indexDrive) => {\r\n if (drive.idCaffenio === infoUpdated.idCaffenio)\r\n indexDriveToReplace = indexDrive;\r\n });\r\n listDrives.splice(indexDriveToReplace, 1, {...infoUpdated});\r\n setState({\r\n ...state,\r\n drives: [...listDrives],\r\n pageDrives: [...listDrives],\r\n detailVisible: false\r\n });\r\n toast.success(\"Información actualizada\");\r\n }\r\n\r\n /**\r\n * Muestra modal de asignación.\r\n * @param {Object} driveInfo - Info del drive seleccionado\r\n */\r\n const selectDrive = (driveInfo) => {\r\n setState({\r\n ...state,\r\n detailVisible: true,\r\n driveSelected: driveInfo\r\n });\r\n }\r\n\r\n /**\r\n * Manejo de cambio en el input.\r\n * @param {Event} e - Evento de cambio en el input.\r\n */\r\n const handleChangeDriveName = e => {\r\n setState({\r\n ...state,\r\n filters: {\r\n ...state.filters,\r\n driveName: e.target.value\r\n }\r\n });\r\n }\r\n\r\n /**\r\n * Filtra los drives segun los parametros mandados.\r\n */\r\n const handleFilterDrives = () => {\r\n setState({...state, isLoading: true});\r\n let listDrives = [];\r\n let listIdsLideres = [];\r\n let listIdsSupervisores = [];\r\n let listIdsEncargadas = [];\r\n let listIdsCoordinadoresDrive = [];\r\n\r\n let filters = {};\r\n\r\n if ( state.filters.sucursal )\r\n filters.sucursal = state.filters.sucursal.label\r\n if ( state.filters.driveName )\r\n filters.driveName = state.filters.driveName.normalize(\"NFD\").replace(/[\\u0300-\\u036f]/g, \"\").trim();\r\n else if ( state.filters.driveName === \"\" )\r\n delete filters.driveName\r\n\r\n CaffenioDrivesAPI.getCaffenioParaAsignacion({ ...filters })\r\n .then(res => {\r\n listDrives = res.data;\r\n listIdsLideres = res.data.map(dri => dri.Lider);\r\n listIdsSupervisores = res.data.map(dri => dri.Supervisor);\r\n listIdsEncargadas = res.data.map(dri => dri.Encargada);\r\n listIdsCoordinadoresDrive = res.data.map(dri => dri.CoordinadorDrive);\r\n })\r\n .catch(() => toast.error(\"Ocurrio un problema al filtrar los Drives.\"))\r\n .finally(() => setState({\r\n ...state,\r\n isLoading: false,\r\n drives: listDrives,\r\n pageDrives: listDrives,\r\n listIdsLideresPrevSelected: listIdsLideres,\r\n listIdsSupervisoresPrevSelected: listIdsSupervisores,\r\n listIdsEncargadasPrevSelected: listIdsEncargadas,\r\n listIdsCoordinadoresDrivePrevSelected: listIdsCoordinadoresDrive,\r\n }));\r\n }\r\n\r\n /**\r\n * Limpiado de los filtros.\r\n */\r\n const handleCleanFilters = () => {\r\n if (Object.toString(state.filters) === '{}')\r\n return;\r\n setState({...state, isLoading: true});\r\n let listDrives = [];\r\n let listIdsLideres = [];\r\n let listIdsSupervisores = [];\r\n let listIdsEncargadas = [];\r\n let listIdsCoordinadoresDrive = [];\r\n CaffenioDrivesAPI.getCaffenioParaAsignacion({})\r\n .then(res => {\r\n listDrives = res.data;\r\n listIdsLideres = res.data.map(dri => dri.Lider);\r\n listIdsSupervisores = res.data.map(dri => dri.Supervisor);\r\n listIdsEncargadas = res.data.map(dri => dri.Encargada);\r\n listIdsCoordinadoresDrive = res.data.map(dri => dri.CoordinadorDrive);\r\n })\r\n .catch(() => toast.error(\"Ocurrio un problema al filtrar los Drives.\"))\r\n .finally(() => setState({\r\n ...state,\r\n filters: {\r\n driveName: '',\r\n sucursal: null\r\n },\r\n isLoading: false,\r\n drives: listDrives,\r\n pageDrives: listDrives,\r\n listIdsLideresPrevSelected: listIdsLideres,\r\n listIdsSupervisoresPrevSelected: listIdsSupervisores,\r\n listIdsEncargadasPrevSelected: listIdsEncargadas,\r\n listIdsCoordinadoresDrivePrevSelected: listIdsCoordinadoresDrive,\r\n }));\r\n }\r\n\r\n return(\r\n
    \r\n

    Asignación de Drive

    \r\n { state.isLoading &&\r\n \r\n }\r\n
    \r\n {/* Filtros */}\r\n
    \r\n
    \r\n
    \r\n
    \r\n
    \r\n \r\n
    \r\n \r\n
    \r\n
    \r\n
    \r\n \r\n
    \r\n \"No hay opciones\"}\r\n onChange={item => setState({\r\n ...state,\r\n filters: {\r\n ...state.filters,\r\n sucursal: item\r\n }\r\n })}\r\n options={state.sucursales}\r\n />\r\n
    \r\n
    \r\n
    \r\n
    \r\n
    \r\n \r\n Filtrar\r\n \r\n
    \r\n
    \r\n
    \r\n \r\n
    \r\n
    \r\n
    \r\n
    \r\n
    \r\n
    \r\n \r\n
    \r\n
    \r\n
    \r\n
    \r\n
    \r\n
    \r\n {/* Tabla de Drives */}\r\n
    \r\n
    \r\n {\r\n state.drives.length !== 0 ?\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n {\r\n state.pageDrives.map(drive =>\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n )\r\n }\r\n \r\n
    NombreEstadoMunicipioSucursalAcción
    {drive.Nombre}{drive.Estado}{drive.Municipio}{drive.Sucursal}\r\n selectDrive(drive)}\r\n >\r\n \r\n Editar\r\n \r\n
    \r\n : \r\n }\r\n setState({ ...state, pageDrives: drives })}\r\n />\r\n
    \r\n
    \r\n {state.detailVisible &&\r\n updateDrivesList(updatedInfo)}\r\n onClose={() => setState({...state, detailVisible: false})}\r\n />\r\n }\r\n
    \r\n )\r\n}","import {apiUrl} from '../constants';\r\nimport axios from 'axios';\r\nimport { stringify } from 'querystring';\r\nvar request = axios.create({\r\n baseURL: apiUrl,\r\n headers: {'Authorization':'Bearer ' +localStorage.getItem('token'),'Content-Type':'application/json'}\r\n});\r\n\r\nexport default class HistorialMovimientosAPI {\r\n\r\n /**\r\n * Lista el historial de movimientos.\r\n * @returns Promise\r\n */\r\n static getHistorialMovimientos(params) {\r\n return request.get(`/HistorialMovimientos?${stringify(params)}`);\r\n }\r\n\r\n /**\r\n * Lista de historial de versiones\r\n */\r\n static ObtenerHistorialVersiones(filtro){\r\n return request.post('SistemaVersion/Historial', filtro)\r\n }\r\n\r\n static ObtenerNumVersionSync(){\r\n return request.get('SistemaVersion/ObtenerNumVersionSync')\r\n }\r\n\r\n static ObtenerTipoSistemas(){\r\n return request.get('SistemaVersion/ObtenerTipoSistemas')\r\n }\r\n\r\n}","import React, { useEffect, useState } from 'react';\r\n\r\n// Components\r\nimport NoItems from '../util/noitems/NoItems';\r\nimport Pagination from '../util/pagination/Pagination';\r\nimport Loading from '../util/loading/Loading';\r\nimport Select from 'react-select';\r\nimport DatePicker from 'react-datepicker';\r\n\r\n// Services\r\nimport HistorialAPI from '../../services/HistorialMovimientos';\r\nimport { toast } from 'react-toastify';\r\n\r\n// Utils\r\nimport { jsonToXML } from '../../util/jsonToXML';\r\nimport { autoDownload } from '../../util/util';\r\nimport ExportExcel from \"react-export-excel\";\r\n\r\n// Creamos instancias para el package export excel.\r\n// Variable que indica el archivo de excel que se crea.\r\nconst ExcelFile = ExportExcel.ExcelFile;\r\n// Variable que indica una hoja de excel.\r\nconst ExcelSheet = ExportExcel.ExcelSheet;\r\n// Variable que indica una columna de excel.\r\nconst ExcelColumn = ExportExcel.ExcelColumn;\r\n\r\n// Constants\r\nconst DATE_OPTIONS = {weekday: 'long', year: 'numeric', month: 'long', day: 'numeric'};\r\nconst MOVIMIENTOS = [\r\n {\r\n value: 1,\r\n label: 'CREACION'\r\n },\r\n {\r\n value: 2,\r\n label: 'EDICION'\r\n },\r\n {\r\n value: 3,\r\n label: 'ELIMINACION'\r\n },\r\n];\r\nconst MODULOS = [\r\n {\r\n value: 1,\r\n label: 'RECETAS',\r\n },\r\n {\r\n value: 2,\r\n label: 'LISTA DE PRECIOS',\r\n },\r\n {\r\n value: 3,\r\n label: 'MENU',\r\n },\r\n];\r\n\r\n/**\r\n * Módulo de historial de movimientos.\r\n * @returns Component\r\n */\r\nexport const HistorialMovimientos = () => {\r\n\r\n const [ state, setState ] = useState({\r\n pages: [],\r\n filters: {},\r\n isLoading: false,\r\n listHistorial: [],\r\n });\r\n\r\n useEffect(() => {\r\n setState({...state, isLoading: true});\r\n \r\n let historial = [];\r\n let pages = [];\r\n let filters = {};\r\n\r\n \r\n HistorialAPI.getHistorialMovimientos({...filters})\r\n .then(res => {\r\n pages = res.data;\r\n historial = res.data.map(hist => {\r\n return {\r\n ...hist,\r\n Fecha: new Date(hist.Fecha).toLocaleDateString('es-MX', DATE_OPTIONS)\r\n }\r\n });\r\n })\r\n .catch(() => toast.error(\"Ocurrio un error al obtener el historial\"))\r\n .finally(() => setState({\r\n ...state,\r\n pages,\r\n isLoading: false,\r\n listHistorial: historial\r\n }));\r\n }, []);\r\n\r\n /**\r\n * Regresa la fecha con formato correcto para filtrar el historial.\r\n * @param {Date} dateToFormat - Fecha a formatear.\r\n * @returns String\r\n */\r\n const getFormatedDate = (dateToFormat = new Date()) => {\r\n let month = '';\r\n let day = '';\r\n if ((dateToFormat.getMonth()+1) < 10)\r\n month = `0${dateToFormat.getMonth()+1}`;\r\n else\r\n month = dateToFormat.getMonth();\r\n if (dateToFormat.getDate() < 10)\r\n day = `0${dateToFormat.getDate()}`;\r\n else\r\n day = dateToFormat.getDate();\r\n return `${dateToFormat.getFullYear()}${month}${day}`;\r\n }\r\n\r\n /**\r\n * Filtra el historial de movimientos.\r\n */\r\n const handlerFilterHistorial = () => {\r\n setState({...state, isLoading: true});\r\n let listHistorial = [];\r\n let filters = {};\r\n let pages = [];\r\n\r\n if (state.filters.modulo)\r\n filters.modulo = state.filters.modulo.label;\r\n if (state.filters.movimiento)\r\n filters.movimiento = state.filters.movimiento.label;\r\n if (state.filters.usuario)\r\n filters.usuario = state.filters.usuario.normalize(\"NFD\").replace(/[\\u0300-\\u036f]/g, \"\").trim();\r\n if (state.filters.fechaInicio)\r\n filters.fechaInicio = getFormatedDate(state.filters.fechaInicio);\r\n if (!state.filters.fechaFin)\r\n filters.fechaFin = getFormatedDate();\r\n else\r\n filters.fechaFin = getFormatedDate(state.filters.fechaFin);\r\n\r\n if(filters.usuario === '' && filters.usuario !== undefined){\r\n delete filters.usuario\r\n }\r\n HistorialAPI.getHistorialMovimientos({ ...filters })\r\n .then(res => {\r\n pages = res.data;\r\n listHistorial = res.data.map(hist => {\r\n return {\r\n ...hist,\r\n Fecha: new Date(hist.Fecha).toLocaleDateString('es-MX', DATE_OPTIONS)\r\n }\r\n });\r\n })\r\n .catch(() => toast.error(\"Ocurrio un problema al filtrar el historial.\"))\r\n .finally(() => setState({\r\n ...state,\r\n isLoading: false,\r\n listHistorial,\r\n pages\r\n }));\r\n }\r\n\r\n /**\r\n * Reset de los filtros.\r\n */\r\n const handleCleanFilters = () => {\r\n setState({...state, isLoading: true});\r\n let listHistorial = [];\r\n let filters = {};\r\n let pages = [];\r\n\r\n HistorialAPI.getHistorialMovimientos({ ...filters})\r\n .then(res => {\r\n pages = res.data;\r\n listHistorial = res.data.map(hist => {\r\n return {\r\n ...hist,\r\n Fecha: new Date(hist.Fecha).toLocaleDateString('es-MX', DATE_OPTIONS)\r\n }\r\n });\r\n })\r\n .catch(() => toast.error(\"Ocurrio un problema al filtrar el historial.\"))\r\n .finally(() => setState({\r\n ...state,\r\n isLoading: false,\r\n listHistorial,\r\n filters: {\r\n modulo: '',\r\n usuario: '',\r\n movimiento: '',\r\n fechaInicio: null,\r\n fechaFin: null\r\n },\r\n pages\r\n }));\r\n }\r\n\r\n /**\r\n * Maneja el cambio en el input de filtros.\r\n * @param {Event} e - Evento de input\r\n */\r\n const handleChangeInputFilters = e => {\r\n setState({\r\n ...state,\r\n filters: {\r\n ...state.filters,\r\n [e.target.name]: e.target.value\r\n }\r\n });\r\n }\r\n\r\n /**\r\n * Manejo de las fechas en los inputs.\r\n * @param {Date} date - Fecha a setear en los filtros\r\n * @param {Boolean} fechaInicio - Parametro para asignar a fecha inicio el valor.\r\n */\r\n const handleChangeDate = (date, fechaInicio = false) => {\r\n if ( fechaInicio ) {\r\n setState({\r\n ...state,\r\n filters: {\r\n ...state.filters,\r\n fechaInicio: date\r\n }\r\n });\r\n } else {\r\n setState({\r\n ...state,\r\n filters: {\r\n ...state.filters,\r\n fechaFin: date\r\n }\r\n });\r\n }\r\n }\r\n\r\n /**\r\n * Descarga el historial en un archivo XML.\r\n */\r\n const handleHistoryDownload = () => {\r\n const history = state.listHistorial;\r\n try {\r\n const [xmlFile, fileName] = jsonToXML(\r\n history,\r\n `Historial-${new Date().toLocaleDateString('es-MX', DATE_OPTIONS)}`\r\n );\r\n autoDownload(fileName, xmlFile, 'text/xml');\r\n toast.success(\"Archivo generado.\");\r\n } catch (error) {\r\n toast.error(\"No se pudo generar el archivo XML.\");\r\n console.error(error);\r\n }\r\n }\r\n\r\n return (\r\n
    \r\n {\r\n state.isLoading &&\r\n \r\n }\r\n

    Historial de Movimientos

    \r\n
    \r\n {/* Filtros */}\r\n
    \r\n
    \r\n
    \r\n
    \r\n
    \r\n \r\n
    \r\n \"No hay opciones\"}\r\n onChange={item => setState({\r\n ...state,filters: {...state.filters, modulo: item}\r\n })}\r\n options={MODULOS}\r\n />\r\n
    \r\n
    \r\n
    \r\n \r\n
    \r\n \r\n
    \r\n
    \r\n
    \r\n \r\n
    \r\n \"No hay opciones\"}\r\n onChange={item => setState({\r\n ...state,filters: {...state.filters, movimiento: item}\r\n })}\r\n options={MOVIMIENTOS}\r\n />\r\n
    \r\n
    \r\n
    \r\n
    \r\n
    \r\n
    \r\n
    \r\n \r\n handleChangeDate(date, true)}\r\n popperPlacement=\"bottom\"\r\n />\r\n
    \r\n
    \r\n \r\n handleChangeDate(date)}\r\n popperPlacement=\"bottom\"\r\n />\r\n
    \r\n
    \r\n
    \r\n
    \r\n
    \r\n \r\n Filtrar\r\n \r\n \r\n \r\n Limpiar Filtros\r\n \r\n\r\n {state.listHistorial.length > 0 &&\r\n \r\n \r\n \r\n \r\n Exportar a EXCEL\r\n \r\n }\r\n >\r\n \r\n historial.Movimiento} />\r\n historial.Fecha} />\r\n historial.Modulo} />\r\n historial.Usuario} />\r\n historial.Descripcion} />\r\n \r\n \r\n }\r\n
    \r\n
    \r\n
    \r\n
    \r\n
    \r\n {/* Tabla de resultados */}\r\n
    \r\n
    \r\n {\r\n state.listHistorial.length !== 0 ?\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n {\r\n state.pages.map(movimiento =>\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n )\r\n }\r\n \r\n
    MovimientoFechaMóduloUsuarioDescripción
    {movimiento.Movimiento}{movimiento.Fecha}{movimiento.Modulo}{movimiento.Usuario}{movimiento.Descripcion}
    \r\n : \r\n }\r\n setState({ ...state, pages: movimientos })}\r\n />\r\n
    \r\n
    \r\n
    \r\n )\r\n}","import {apiUrl} from '../constants';\r\nimport axios from 'axios';\r\nvar request = axios.create({\r\n baseURL: apiUrl,\r\n headers: {'Authorization':'Bearer ' +localStorage.getItem('token'),'Content-Type':'application/json'}\r\n})\r\n\r\nexport default class FichaDepositoAPI{\r\n static getByDate(fechas){\r\n return request.post('/FichaDeposito/GetByDate', fechas);\r\n }\r\n}","import React from 'react';\r\n\r\n//Componente para manejo de paginación de elementos de una lista/tabla\r\nclass PaginationReports extends React.Component {\r\n constructor(props) {\r\n super(props);\r\n this.state = { pager: {}};\r\n }\r\n \r\n componentWillMount() {\r\n if (this.props.items && this.props.items.length) {\r\n this.setPage(this.props.initialPage);\r\n }\r\n }\r\n \r\n componentDidUpdate(prevProps, prevState) {\r\n if (this.props.items !== prevProps.items) {\r\n this.setPage(this.props.initialPage);\r\n }\r\n }\r\n \r\n // Se selecciona la página y se actualizan los elementos de la lista/tabla en el\r\n // componente padre por medio del método onChangePage que se recibió en props.\r\n setPage(page) {\r\n var { items, pageSize } = this.props;\r\n var pager = this.state.pager;\r\n \r\n if (page < 1 || page > pager.totalPages) {\r\n return;\r\n }\r\n \r\n pager = this.getPager(items.length, page, pageSize);\r\n \r\n var pageOfItems = items.slice(pager.startIndex, pager.endIndex + 1);\r\n \r\n this.setState({ pager: pager });\r\n \r\n this.props.onChangePage(pageOfItems);\r\n }\r\n \r\n // Se obtiene el paginador, es decir, cuantas páginas habrán\r\n // Se asigna la primera página como la actual\r\n // Se obtienen los elementos que serán mostrados en la primera página\r\n getPager(totalItems, currentPage, pageSize) {\r\n currentPage = currentPage || 1;\r\n \r\n pageSize = pageSize || 100;\r\n \r\n var totalPages = Math.ceil(totalItems / pageSize);\r\n \r\n var startPage, endPage;\r\n if (totalPages <= 100) {\r\n startPage = 1;\r\n endPage = totalPages;\r\n } else {\r\n if (currentPage <= 6) {\r\n startPage = 1;\r\n endPage = 100;\r\n } else if (currentPage + 40 >= totalPages) {\r\n startPage = totalPages - 9;\r\n endPage = totalPages;\r\n } else {\r\n startPage = currentPage - 5;\r\n endPage = currentPage + 4;\r\n }\r\n }\r\n \r\n var startIndex = (currentPage - 1) * pageSize;\r\n var endIndex = Math.min(startIndex + pageSize - 1, totalItems - 1);\r\n \r\n var pages = [...Array((endPage + 1) - startPage).keys()].map(i => startPage + i);\r\n \r\n return {\r\n totalItems: totalItems,\r\n currentPage: currentPage,\r\n pageSize: pageSize,\r\n totalPages: totalPages,\r\n startPage: startPage,\r\n endPage: endPage,\r\n startIndex: startIndex,\r\n endIndex: endIndex,\r\n pages: pages\r\n };\r\n }\r\n \r\n render() {\r\n var pager = this.state.pager;\r\n \r\n // Si no hay más de 100 elementos no se muestran los controles de páginas.\r\n if (!pager.pages || pager.pages.length <= 1) {\r\n return null;\r\n }\r\n \r\n return (\r\n \r\n );\r\n }\r\n}\r\n\r\nexport default PaginationReports;","import moment from 'moment';\r\nimport React , {Component} from 'react';\r\nimport PropTypes from 'prop-types'\r\nimport DatePicker from 'react-datepicker';\r\nimport CaffenioDriveAPI from \"../../services/caffenioDrive\";\r\nimport Loading from '../util/loading/Loading';\r\nimport \"./reporteCorte.css\"\r\n\r\n/**\r\n * Componente de la vista de un reporte de un drive\r\n */\r\nclass ReporteCorteView extends Component {\r\n state = {\r\n drive: null,\r\n fecha: null,\r\n isLoading: false,\r\n mensaje: \"Cargando drive...\"\r\n }\r\n \r\n componentDidMount = () => {\r\n if(this.props.match.params.id){\r\n this.setState({isLoading: true}, () => {\r\n CaffenioDriveAPI.getCaffenioById(this.props.match.params.id)\r\n .then(response => {\r\n let state = {...this.state}\r\n console.log(response)\r\n state.drive = response.data\r\n state.numConvenio = 123456\r\n state.numRef = 789012\r\n state.totalEfectivo = 98765\r\n state.totalDeposito = 43210\r\n state.isLoading = false\r\n this.setState(state)\r\n })\r\n .catch(err => {\r\n this.setState({isLoading: false, mensaje: \"Hubo un error al buscar el drive\"})\r\n })\r\n })\r\n }\r\n }\r\n\r\n handleDateChange = (date) => {\r\n let state = { ...this.state };\r\n console.log(\"Fecha! => \", date)\r\n state.fecha = date;\r\n this.setState(state);\r\n }\r\n\r\n render(){\r\n let driveInvalido = this.props.drive == undefined || this.props.drive == null || typeof(this.props.drive) != \"object\"\r\n return(\r\n
    \r\n { this.state.drive ?\r\n \r\n

    Reporte

    \r\n

    {this.state.drive.NombreNuevo}

    \r\n
    \r\n
    \r\n
    \r\n
    \r\n \r\n this.handleDateChange(e)}\r\n popperPlacement=\"bottom\"\r\n popperModifiers={{\r\n offset: {\r\n enabled: true,\r\n offset: '5px, 20px',\r\n },\r\n preventOverflow: {\r\n enabled: true,\r\n escapeWithReference: false,\r\n boundariesElement: 'viewport'\r\n }\r\n }}\r\n locale=\"es\"\r\n todayButton=\"Hoy\"\r\n dateFormat=\"dd/MM/yyyy\"\r\n className=\"input\"\r\n autoComplete={\"off\"}\r\n />\r\n
    \r\n
    \r\n
    \r\n
    \r\n
    \r\n\r\n {this.state.fecha ?\r\n \r\n :
    \r\n
    \r\n Introduzca una fecha para mostrar un reporte\r\n
    \r\n
    }\r\n
    \r\n :
    \r\n
    \r\n {this.state.mensaje}\r\n
    \r\n
    \r\n }\r\n \r\n
    \r\n )\r\n }\r\n}\r\n\r\n/**\r\n * Componente que es similar a la plantilla de ficha de deposito de un drive\r\n */\r\nexport default class ReporteCorte extends Component{\r\n\r\n render(){\r\n var fecha = moment(this.props.fecha)\r\n return (\r\n
    \r\n
    \r\n
    \r\n

    Banco BBVA Bancomer

    \r\n

    FICHA DE DEPOSITO

    \r\n
    \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n
    DíaMesAño
    {fecha.date()}{(\"0\" + (fecha.month() + 1)).slice(-2)}{fecha.year()}
    \r\n
    \r\n
    \r\n \r\n \r\n \r\n \r\n \r\n
    {this.props.caffenio}
    \r\n
    \r\n
    \r\n \r\n
    \r\n {(\"\" + this.props.numConvenio).split(\"\").map(num => {num})}\r\n
    \r\n
    \r\n
    \r\n \r\n
    \r\n {(\"\" + this.props.numRef).split(\"\").map(num => {num})}\r\n
    \r\n
    \r\n
    \r\n \r\n

    {this.props.totalEfectivo}

    \r\n
    \r\n {/*
    \r\n \r\n

    ${this.props.totalDeposito}

    \r\n
    */}\r\n
    \r\n
    \r\n
    \r\n )\r\n }\r\n}\r\n\r\nReporteCorte.propTypes = {\r\n fecha: PropTypes.string.isRequired,\r\n caffenio: PropTypes.string.isRequired,\r\n numConvenio: PropTypes.number.isRequired,\r\n numRef: PropTypes.number.isRequired,\r\n totalEfectivo: PropTypes.number.isRequired,\r\n totalDeposito: PropTypes.number.isRequired,\r\n modoImprimir: PropTypes.bool\r\n}\r\n\r\nReporteCorte.defaultProps = {\r\n modoImprimir: false\r\n}","import React, { Component } from \"react\";\r\nimport moment from \"moment\";\r\nimport CaffenioDriveAPI from \"../../services/caffenioDrive\";\r\nimport FichaDepositoAPI from \"../../services/FichaDeposito\";\r\nimport NoItems from \"../util/noitems/NoItems\";\r\nimport PaginationReports from \"../util/pagination/PaginationReports\";\r\nimport Loading from \"../util/loading/Loading\";\r\nimport { toast } from \"react-toastify\";\r\nimport Select from \"react-select\";\r\nimport Modal from \"../util/modal/Modal\";\r\nimport ReporteCorte from \"./reporteCorte\";\r\nimport DatePicker from \"react-datepicker\";\r\nimport html2canvas from \"html2canvas\";\r\nimport jsPDF from \"jspdf\";\r\nimport ExportExcel from \"react-export-excel\";\r\n\r\n// Creamos instancias para el package export excel.\r\n// Variable que indica el archivo de excel que se crea.\r\nconst ExcelFile = ExportExcel.ExcelFile;\r\n// Variable que indica una hoja de excel.\r\nconst ExcelSheet = ExportExcel.ExcelSheet;\r\n// Variable que indica una columna de excel.\r\nconst ExcelColumn = ExportExcel.ExcelColumn;\r\n\r\nclass CaffenioReporteTabla extends Component {\r\n state = {\r\n isLoading: false,\r\n fichas: [],\r\n fichasFilter: [],\r\n fichaSelect: null,\r\n fechaInicio: null,\r\n fechaFin: null,\r\n pageFichas: [],\r\n fichasChecked: [],\r\n // States relacionados a los dropdowns de los drives\r\n selectedOption: [],\r\n selectedOptionC: [],\r\n selectedOptionB: [],\r\n selectedOptionD: [],\r\n OptionSelect: [],\r\n OptionSelectCity: [],\r\n OptionSelectBranch: [],\r\n OptionSelectDrive: [],\r\n optionState: [],\r\n optionCity: [],\r\n optionBranch: [],\r\n optionDrive: [],\r\n Caffenios: [],\r\n childVisible: false,\r\n checkAll: false,\r\n showModal: false,\r\n creatingPDF: false,\r\n };\r\n\r\n componentDidMount() {\r\n window.scrollTo(0, 0);\r\n this.setState({ isLoading: true }, () => {\r\n let state = { ...this.state };\r\n CaffenioDriveAPI.getCaffenios()\r\n .then((response) => {\r\n state.Caffenios = response.data;\r\n state.Caffenios.map((producto) => {\r\n producto.statusCheck = false;\r\n return producto;\r\n });\r\n state.optionState = this.select_state(state.Caffenios);\r\n state.optionCity = this.select_city(state.Caffenios);\r\n state.optionBranch = this.select_branch(state.Caffenios);\r\n state.optionDrive = this.select_Drive(state.Caffenios);\r\n state.isLoading = false;\r\n this.setState(state);\r\n })\r\n .catch((err) => toast.error(err.response.data.Message));\r\n });\r\n }\r\n\r\n handleDateChange = (date, tipoFecha) => {\r\n let state = { ...this.state };\r\n state[tipoFecha] = date;\r\n this.setState(state, () => this.ConsultarFichasPorFecha());\r\n };\r\n\r\n //#region Funciones para los dropdowns relacionados a los drives (Es copypaste de los dropdowns de la configuracion de drives)\r\n select_state(Caffenios) {\r\n // Llenar el combo 'Estados' con todas las opciones\r\n var newArray = [];\r\n let OptionSelect = [];\r\n var lookupObject = {};\r\n Caffenios.map((item) => {\r\n OptionSelect.push({ value: item.StateId, label: item.State });\r\n });\r\n\r\n for (var i in OptionSelect) {\r\n lookupObject[OptionSelect[i][\"value\"]] = OptionSelect[i];\r\n }\r\n\r\n for (i in lookupObject) {\r\n newArray.push(lookupObject[i]);\r\n }\r\n\r\n return newArray;\r\n }\r\n\r\n select_city(Caffenios) {\r\n // Llenar el combo 'Ciudades' con todas las opciones\r\n var newArray = [];\r\n let OptionSelectCity = [];\r\n var lookupObject = {};\r\n Caffenios.map((item) => {\r\n OptionSelectCity.push({\r\n value: item.Municipalityid,\r\n label: item.Municipality,\r\n });\r\n });\r\n\r\n for (var i in OptionSelectCity) {\r\n lookupObject[OptionSelectCity[i][\"value\"]] = OptionSelectCity[i];\r\n }\r\n\r\n for (i in lookupObject) {\r\n newArray.push(lookupObject[i]);\r\n }\r\n\r\n return newArray;\r\n }\r\n\r\n select_branch(Caffenios) {\r\n // Llenar el combo 'Sucursales' con todas las opciones\r\n var newArray = [];\r\n let OptionSelectBranch = [];\r\n var lookupObject = {};\r\n Caffenios.map((item) => {\r\n OptionSelectBranch.push({ value: item.Branch, label: item.Branch });\r\n });\r\n\r\n for (var i in OptionSelectBranch) {\r\n lookupObject[OptionSelectBranch[i][\"value\"]] = OptionSelectBranch[i];\r\n }\r\n\r\n for (i in lookupObject) {\r\n newArray.push(lookupObject[i]);\r\n }\r\n\r\n return newArray;\r\n }\r\n\r\n select_Drive(Caffenios) {\r\n // Llenar el combo 'Drives' con todas las opciones\r\n var newArray = [];\r\n let OptionSelectDrive = [];\r\n var lookupObject = {};\r\n Caffenios.map((item) => {\r\n OptionSelectDrive.push({\r\n value: item.idCaffenio,\r\n label: item.NombreNuevo,\r\n });\r\n });\r\n\r\n for (var i in OptionSelectDrive) {\r\n lookupObject[OptionSelectDrive[i][\"value\"]] = OptionSelectDrive[i];\r\n }\r\n\r\n for (i in lookupObject) {\r\n newArray.push(lookupObject[i]);\r\n }\r\n\r\n return newArray;\r\n }\r\n\r\n eliminarObjDuplicados = (arr, prop) => {\r\n var nuevoArray = [];\r\n var lookup = {};\r\n\r\n for (var i in arr) {\r\n lookup[arr[i][prop]] = arr[i];\r\n }\r\n\r\n for (i in lookup) {\r\n nuevoArray.push(lookup[i]);\r\n }\r\n\r\n return nuevoArray;\r\n };\r\n\r\n changeSelectEstado = (obj) => {\r\n let state = { ...this.state };\r\n state[\"selectedOption\"] = obj;\r\n let idEstado = obj.map((estado) => {\r\n return estado.value;\r\n });\r\n let objCaffenios = [...state.Caffenios];\r\n let listaCiudades = [];\r\n let listaDrives = [];\r\n\r\n // Recorrer objeto Caffenios y encontrar coincidencias sin eliminar duplicados\r\n objCaffenios.map((item) => {\r\n for (var i = 0; i < idEstado.length; i++) {\r\n if (item.StateId === idEstado[i]) {\r\n listaCiudades.push({\r\n value: item.Municipalityid,\r\n label: item.Municipality,\r\n });\r\n }\r\n }\r\n });\r\n\r\n //Se eliminan las ciudades duplicadas\r\n let eliminarDuplicados = this.eliminarObjDuplicados(listaCiudades, \"value\");\r\n //Se obtiene un arreglo con los id de las ciudades\r\n let idCiudad = eliminarDuplicados.map((ciudad) => {\r\n return ciudad.value;\r\n });\r\n\r\n //Se buscan coincidencias entre ciudad y drive y se genera la lista de drives\r\n objCaffenios.map((item) => {\r\n for (var i = 0; i < idCiudad.length; i++) {\r\n if (item.Municipalityid === idCiudad[i]) {\r\n listaDrives.push({ value: item.idCaffenio, label: item.NombreNuevo });\r\n }\r\n }\r\n });\r\n\r\n //Se limpian los combos 'Ciudades' y 'Drives'\r\n state[\"selectedOptionC\"] = [];\r\n state[\"selectedOptionD\"] = [];\r\n\r\n //Se valida que haya una opción seleccionada en combo 'Estados'\r\n if (obj.length === 0) {\r\n state[\"optionCity\"] = this.select_city(state.Caffenios);\r\n state[\"optionDrive\"] = this.select_Drive(state.Caffenios);\r\n } else {\r\n state[\"optionCity\"] = eliminarDuplicados;\r\n state[\"optionDrive\"] = listaDrives;\r\n }\r\n\r\n this.setState(state, () => this.FilterProcess());\r\n };\r\n\r\n changeSelectCiudad = (obj) => {\r\n let state = { ...this.state };\r\n let idCiudad = obj.map((ciudad) => {\r\n return ciudad.value;\r\n });\r\n let objCaffenios = [...state.Caffenios];\r\n let listaDrives = [];\r\n\r\n //Se buscan coincidencias entre ciudad y drive y se genera la lista de drives\r\n objCaffenios.map((item) => {\r\n for (var i = 0; i < idCiudad.length; i++) {\r\n if (item.Municipalityid === idCiudad[i]) {\r\n listaDrives.push({ value: item.idCaffenio, label: item.NombreNuevo });\r\n }\r\n }\r\n });\r\n\r\n //Se limpia el combo 'Drives'\r\n state[\"selectedOptionD\"] = [];\r\n\r\n //Se valida que haya una opción seleccionada en combo 'Ciudades'\r\n if (obj.length > 0) {\r\n state[\"selectedOptionC\"] = obj;\r\n state[\"optionDrive\"] = listaDrives;\r\n this.setState(state, () => this.FilterProcess());\r\n } else {\r\n this.changeSelectEstado(state[\"selectedOption\"]);\r\n }\r\n };\r\n\r\n changeSelectSucursal = (objSucursal, objDrive) => {\r\n let state = { ...this.state };\r\n let idSucursal = objSucursal.map((sucursal) => {\r\n return sucursal.value;\r\n });\r\n let objCaffenios = [...state.Caffenios];\r\n let listaDrives = [];\r\n\r\n //Se buscan coincidencias entre sucursal y drive y se genera la lista de drives\r\n objCaffenios.map((item) => {\r\n for (var i = 0; i < idSucursal.length; i++) {\r\n if (item.Branch === idSucursal[i]) {\r\n listaDrives.push({ value: item.idCaffenio, label: item.NombreNuevo });\r\n }\r\n }\r\n });\r\n\r\n // Validar si no existen drives seleccionados, resetear el filtro de drives.\r\n if (objDrive.length === 0) {\r\n //Se limpia el combo 'Drives'\r\n state[\"selectedOptionD\"] = [];\r\n }\r\n\r\n //Se valida que haya una opción seleccionada en combo 'Sucursales'\r\n state[\"selectedOptionB\"] = objSucursal;\r\n if (objSucursal.length > 0) {\r\n state[\"optionDrive\"] = listaDrives;\r\n } else {\r\n //Se limpia el combo 'Drives'\r\n state[\"selectedOptionD\"] = [];\r\n state[\"optionDrive\"] = this.select_Drive(state.Caffenios);\r\n }\r\n this.setState(state, () => this.FilterProcess());\r\n };\r\n\r\n changeSelectDrive = (obj) => {\r\n let state = { ...this.state };\r\n let Caffenios = [...state.Caffenios];\r\n //Valida cada select (Estados,Ciudades,Drives) y realiza la acción correspondiente\r\n if (obj.length > 0) {\r\n state[\"selectedOptionD\"] = obj;\r\n //state[\"optionDrive\"] = obj;\r\n this.setState(state, () => this.FilterProcess());\r\n } else if (state[\"selectedOptionC\"].length === 0) {\r\n this.changeSelectEstado(state[\"selectedOption\"]);\r\n // resetear lista de drives con el primer filtro.\r\n this.changeSelectSucursal(state[\"selectedOptionB\"], obj);\r\n } else if (\r\n state[\"selectedOptionC\"].length === 0 &&\r\n state[\"selectedOption\"].length === 0\r\n ) {\r\n this.select_Drive(Caffenios);\r\n this.select_Drive(Caffenios);\r\n this.select_Drive(Caffenios);\r\n } else {\r\n this.changeSelectCiudad(state[\"selectedOptionC\"]);\r\n }\r\n };\r\n\r\n validarCombos = (state) => {\r\n var status_combo = false; // Vacios\r\n\r\n if (state[\"selectedOption\"].length > 0) {\r\n status_combo = true; // Alguno con valor\r\n }\r\n\r\n if (state[\"selectedOptionC\"].length > 0) {\r\n status_combo = true; // Alguno con valor\r\n }\r\n\r\n if (state[\"selectedOptionD\"].length > 0) {\r\n status_combo = true; // Alguno con valor\r\n }\r\n\r\n return status_combo;\r\n };\r\n //#endregion\r\n\r\n /**\r\n * Se ejecuta al seleccionar un rango de fechas.\r\n * Hace una petición a la API para obtener las fichas de deposito que están entre las fechas seleccionadas\r\n */\r\n ConsultarFichasPorFecha = () => {\r\n if (this.state.fechaInicio != null && this.state.fechaFin != null) {\r\n this.setState({ isLoading: true }, () => {\r\n let body = {\r\n FechaInicio: this.state.fechaInicio,\r\n FechaFin: this.state.fechaFin,\r\n };\r\n let state = { ...this.state };\r\n FichaDepositoAPI.getByDate(body)\r\n .then((response) => {\r\n state.fichas = response.data;\r\n state.fichasChecked = [];\r\n state.isLoading = false;\r\n this.setState(state, () => {\r\n this.FilterProcess();\r\n });\r\n })\r\n .catch((err) => {\r\n state.isLoading = false;\r\n state.fichasChecked = [];\r\n toast.error(err.response.data.Message);\r\n this.setState(state);\r\n });\r\n });\r\n }\r\n };\r\n\r\n /**\r\n * Se ejecuta al seleccionar un valor de los dropdowns relacionados a los drives (estados, ciudades, drives)\r\n * Lo que hace es filtrar los drives segun los valores de los dropdowns y tambien filtra los resultados de las fichas de deposito.\r\n * OJO. Esta función no hace peticiones a la API, solo filtra valores que estan en los states\r\n */\r\n FilterProcess = () => {\r\n let state = { ...this.state };\r\n let Caffenios = state.Caffenios;\r\n var status_combo; // Vacios\r\n let driveIds;\r\n let drivesSelected = [];\r\n\r\n if (state[\"selectedOptionD\"].length === 0) {\r\n driveIds = state[\"optionDrive\"].map((obj) => {\r\n return obj.value;\r\n });\r\n } else {\r\n driveIds = state[\"selectedOptionD\"].map((obj) => {\r\n return obj.value;\r\n });\r\n }\r\n\r\n // Validar si existen drives seleccionados para comparar entre las\r\n // sucursales y drives y obtener la lista actual de drives seleccinados.\r\n if (state[\"selectedOptionD\"].length > 0) {\r\n state[\"optionDrive\"].map((obj) => {\r\n for (var i = 0; i < state[\"selectedOptionD\"].length; i++) {\r\n if (obj.value === state[\"selectedOptionD\"][i].value) {\r\n drivesSelected.push(state[\"selectedOptionD\"][i]);\r\n }\r\n }\r\n });\r\n // Actualizar los drives seleccionados por sucursales seleccionadas.\r\n state[\"selectedOptionD\"] = drivesSelected;\r\n }\r\n\r\n status_combo = this.validarCombos(state);\r\n\r\n Caffenios = Caffenios.filter((obj2) => {\r\n if (\r\n driveIds.filter((item) => {\r\n return item === obj2.idCaffenio;\r\n }).length > 0\r\n ) {\r\n return obj2;\r\n }\r\n });\r\n\r\n state.fichasFilter = state.fichas.filter((ficha) => {\r\n return (\r\n driveIds.findIndex((driveId) => {\r\n return driveId === ficha.DriveId;\r\n }) !== -1\r\n );\r\n });\r\n this.setState(state);\r\n };\r\n\r\n selectAllCheck = () => {\r\n let state = { ...this.state };\r\n\r\n state.checkAll = !state.checkAll;\r\n // Insertar o quitar los ids de la pagina actual\r\n state.pageFichas.findIndex((item) => {\r\n let indexCheck = state.fichasChecked.findIndex(\r\n (ficha) => item.DepositSlipId === ficha\r\n );\r\n if (state.checkAll) {\r\n if (indexCheck === -1) state.fichasChecked.push(item.DepositSlipId);\r\n } else {\r\n if (indexCheck !== -1) {\r\n state.fichasChecked.splice(indexCheck, 1);\r\n }\r\n }\r\n });\r\n state.childVisible = state.fichasChecked.length > 0;\r\n this.setState(state);\r\n };\r\n\r\n /**\r\n * Se ejecuta al darle click a un checkbox de un renglón.\r\n * Lo que hace es determinar si el checkbox del header se tiene que marcar o no\r\n */\r\n showView = () => {\r\n let state = { ...this.state };\r\n let cheked = false;\r\n let checkAllTemp = true;\r\n state.pageFichas.map((item) => {\r\n if (\r\n state.fichasChecked.findIndex(\r\n (ficha) => item.DepositSlipId === ficha\r\n ) !== -1\r\n ) {\r\n cheked = true;\r\n } else {\r\n checkAllTemp = false;\r\n }\r\n });\r\n\r\n this.setState({\r\n childVisible: state.fichasChecked.length > 0,\r\n checkAll: checkAllTemp,\r\n });\r\n };\r\n\r\n /**\r\n * Función que se ejecuta al darle click al botón de descargar PDF\r\n */\r\n onCreatePDF = () => {\r\n this.setState({ creatingPDF: true, isLoading: true }, () => {\r\n this.createPDF();\r\n });\r\n };\r\n\r\n /**\r\n * Función que realiza el proceso de convertir las fichas HTML a formato PDF\r\n */\r\n createPDF = () => {\r\n if (this.state.creatingPDF && this.state.fichasChecked.length > 0) {\r\n // Creamos PDF base\r\n let pdf = new jsPDF();\r\n let fichas = [...this.state.fichasChecked];\r\n this.procesarFicha(fichas, 0, pdf);\r\n }\r\n };\r\n\r\n procesarFicha = (fichas, index, pdf) => {\r\n let fichaHeight = 70.97; // El 89% de 301.4px convertidos a mm\r\n // El ancho de una hoja A4.\r\n // El tamaño de una ficha en web es de 891.33px == 235.83 mm\r\n // Entonces como el ancho es de 210 mm entonces se utiliza el 89% del tamaño de la ficha\r\n let fichaWidth = 210;\r\n let finalIndex = fichas.length;\r\n let fichasPorPagina = 4;\r\n let ficha = fichas[index];\r\n\r\n // Convertir la parte del DOM donde estan las fichas a un SVG\r\n html2canvas(\r\n document.querySelector('#reportesPDF div[data-id=\"ficha-' + ficha + '\"]'),\r\n {\r\n // width: 891.333,\r\n // height: 291,\r\n windowWidth: 1366,\r\n windowHeight: 626,\r\n scrollX: 0,\r\n scrollY: 0,\r\n scale: 1,\r\n backgroundColor: \"#fff\",\r\n }\r\n ).then((canvas) => {\r\n // Convertir el SVG a una imagen\r\n let imgData = canvas.toDataURL(\"image/png\");\r\n // Convertir la imagen a PDF\r\n // let heightTotal = 67 * this.state.fichasChecked.length\r\n let numImgPag = index % fichasPorPagina; // Numero de la imagen en la pagina actual (del 1 al fichasPorPagina)\r\n let posYImg = numImgPag * fichaHeight;\r\n if (numImgPag === 0 && index !== 0) pdf.addPage();\r\n\r\n pdf.addImage(imgData, \"PNG\", 0, posYImg, fichaWidth, fichaHeight);\r\n\r\n if (index == finalIndex - 1) {\r\n pdf.save(this.crearNombrePDF() + \".pdf\");\r\n this.pdfCompletado();\r\n } else {\r\n this.procesarFicha(fichas, index + 1, pdf);\r\n }\r\n });\r\n };\r\n\r\n /**\r\n * Función que se ejecuta al terminar de convertir todas las fichas a PDF\r\n * Lo hice asi porque al cambiar el estado dentro de la funcion createPDF causaba errores\r\n */\r\n pdfCompletado = () => {\r\n this.setState({ creatingPDF: false, isLoading: false });\r\n };\r\n\r\n /**\r\n * Función para crear el nombre del archivo PDF dependiendo de los drives donde pertenecen las fichas seleccionadas\r\n * @returns El nombre con este formato: Fichas - </Multiples> - \r\n */\r\n crearNombrePDF = () => {\r\n let fecha = new Date();\r\n let nombreDrive = \"Multiples\";\r\n if (this.state.fichasChecked.length > 0) {\r\n let esDriveUnico = true;\r\n let idDrive = null;\r\n let fichaActual = null;\r\n // Determinar si todas las fichas seleccionadas pertenecen a un solo Drive o en varios\r\n this.state.fichasChecked.findIndex((idficha) => {\r\n fichaActual = this.state.fichas.find(\r\n (ficha) => ficha.DepositSlipId == idficha\r\n );\r\n if (fichaActual) {\r\n if (idDrive !== null && idDrive !== fichaActual.DriveId) {\r\n esDriveUnico = false;\r\n return true;\r\n } else {\r\n idDrive = fichaActual.DriveId;\r\n }\r\n }\r\n return false;\r\n });\r\n // Asignar nombre dependiendo si todas las fichas pertenecen a un solo drive o no\r\n if (esDriveUnico && idDrive != null) {\r\n let caffenio = this.state.Caffenios.find(\r\n (caffenio) => caffenio.idCaffenio == idDrive\r\n );\r\n if (caffenio) nombreDrive = caffenio.NombreNuevo;\r\n }\r\n }\r\n let nombre =\r\n \"Fichas - \" +\r\n nombreDrive +\r\n \" - \" +\r\n fecha.toLocaleDateString().replace(/\\//g, \"-\");\r\n return nombre;\r\n };\r\n\r\n // Select all branch offices of the list and add to filter.\r\n selectAllBranchOffices = () => {\r\n let state = { ...this.state };\r\n state[\"selectedOptionB\"] = this.state.optionBranch;\r\n this.setState(state, () => this.FilterProcess());\r\n };\r\n\r\n // Select all drives of the list and add to filter.\r\n selectAllDrives = () => {\r\n let state = { ...this.state };\r\n state[\"selectedOptionD\"] = this.state.optionDrive;\r\n this.setState(state, () => this.FilterProcess());\r\n };\r\n\r\n // Function for convert to value decimal with format of value coin.\r\n formatCoin = (cash) => {\r\n const options2 = { style: \"currency\", currency: \"MXN\" };\r\n const cashFormated = new Intl.NumberFormat(\"es-MX\", options2);\r\n return cashFormated.format(cash);\r\n };\r\n\r\n render() {\r\n let fechaHoy = new Date();\r\n return (\r\n
    \r\n

    Despósitos Bancarios

    \r\n
    \r\n
    \r\n
    \r\n
    \r\n \r\n this.handleDateChange(e, \"fechaInicio\")}\r\n startDate={this.state.fechaInicio}\r\n endDate={this.state.fechaFin}\r\n maxDate={this.state.fechaFin ? this.state.fechaFin : fechaHoy}\r\n popperPlacement=\"bottom\"\r\n popperModifiers={{\r\n offset: {\r\n enabled: true,\r\n offset: \"5px, 20px\",\r\n },\r\n preventOverflow: {\r\n enabled: true,\r\n escapeWithReference: false,\r\n boundariesElement: \"viewport\",\r\n },\r\n }}\r\n locale=\"es\"\r\n todayButton=\"Hoy\"\r\n dateFormat=\"dd/MM/yyyy\"\r\n className=\"input\"\r\n autoComplete={\"off\"}\r\n />\r\n
    \r\n
    \r\n \r\n this.handleDateChange(e, \"fechaFin\")}\r\n disabled={this.state.fechaInicio == null}\r\n startDate={this.state.fechaInicio}\r\n endDate={this.state.fechaFin}\r\n minDate={this.state.fechaInicio}\r\n maxDate={fechaHoy}\r\n popperPlacement=\"bottom\"\r\n popperModifiers={{\r\n offset: {\r\n enabled: true,\r\n offset: \"5px, 20px\",\r\n },\r\n preventOverflow: {\r\n enabled: true,\r\n escapeWithReference: false,\r\n boundariesElement: \"viewport\",\r\n },\r\n }}\r\n locale=\"es\"\r\n todayButton=\"Hoy\"\r\n dateFormat=\"dd/MM/yyyy\"\r\n className=\"input\"\r\n autoComplete={\"off\"}\r\n />\r\n
    \r\n
    \r\n
    \r\n
    \r\n
    \r\n\r\n
    \r\n
    \r\n {this.state.fichas.length > 0 ? (\r\n \r\n
    \r\n
    \r\n \r\n
    \r\n \"No hay opciones\"}\r\n options={this.state.optionBranch}\r\n closeMenuOnSelect={false}\r\n />\r\n
    \r\n
    \r\n\r\n
    \r\n {\r\n this.selectAllBranchOffices();\r\n }}\r\n >\r\n \r\n \r\n \r\n {/* */}\r\n \r\n
    \r\n\r\n
    \r\n \r\n
    \r\n \"No hay opciones\"}\r\n options={this.state.optionDrive}\r\n closeMenuOnSelect={false}\r\n />\r\n
    \r\n
    \r\n\r\n
    \r\n {\r\n this.selectAllDrives();\r\n }}\r\n >\r\n \r\n \r\n \r\n {/* */}\r\n \r\n
    \r\n\r\n {this.state.childVisible && (\r\n \r\n {/* ====== EXPORT DATA TO PDF ======= */}\r\n
    \r\n this.onCreatePDF()}\r\n >\r\n \r\n \r\n \r\n Descargar PDF\r\n \r\n
    \r\n {/* ====== EXPORT DATA TO EXCEL ======= */}\r\n
    \r\n \r\n \r\n \r\n \r\n Exportar a EXCEL\r\n \r\n }\r\n >\r\n \r\n \r\n moment(dateTime.Date).format(\"DD/MM/YYYY\")\r\n }\r\n />\r\n\r\n drive.DriveName}\r\n />\r\n\r\n reference.ReferenceNumber}\r\n />\r\n\r\n agreement.AgreementNumber}\r\n />\r\n\r\n \r\n this.formatCoin(parseFloat(row.Cash).toFixed(2))\r\n }\r\n />\r\n \r\n \r\n
    \r\n
    \r\n )}\r\n
    \r\n\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n {this.state.pageFichas.map((item, index) => {\r\n let isChecked =\r\n this.state.fichasChecked.findIndex(\r\n (ficha) => item.DepositSlipId === ficha\r\n ) !== -1;\r\n return (\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n );\r\n })}\r\n \r\n
    \r\n \r\n FechaDriveEfectivoAcción
    \r\n {\r\n e.stopPropagation();\r\n // Cambiar check en fichas\r\n let fichasChecked = [\r\n ...this.state.fichasChecked,\r\n ];\r\n let indexFicha = fichasChecked.findIndex(\r\n (ficha) => item.DepositSlipId === ficha\r\n );\r\n if (indexFicha === -1)\r\n fichasChecked.push(item.DepositSlipId);\r\n else fichasChecked.splice(indexFicha, 1);\r\n // Cambiar check en el pageFichas\r\n // let pageFichas = [...this.state.pageFichas];\r\n // pageFichas[index].statusCheck = !item.statusCheck;\r\n this.setState(\r\n { fichasChecked: fichasChecked },\r\n () => this.showView()\r\n );\r\n }}\r\n />\r\n {moment(item.Date).format(\"DD/MM/YYYY\")}{item.DriveName}\r\n {this.formatCoin(parseFloat(item.Cash).toFixed(2))}\r\n \r\n {\r\n e.stopPropagation();\r\n this.setState({\r\n showModal: true,\r\n fichaSelect: item,\r\n });\r\n }}\r\n >\r\n \r\n \r\n \r\n \r\n
    \r\n
    \r\n ) : this.state.fechaInicio == null ||\r\n this.state.fechaFin == null ? (\r\n \"Inserte fechas para iniciar la busqueda\"\r\n ) : (\r\n \r\n )}\r\n \r\n this.setState({ pageFichas: fichasPag }, () => this.showView())\r\n }\r\n />\r\n
    \r\n
    \r\n\r\n {this.state.showModal && (\r\n this.setState({ showModal: false })}\r\n >\r\n \r\n \r\n )}\r\n\r\n {/* Fichas de deposito que se convertiran a PDF */}\r\n {/* Estas fichas son invisibles para el usuario */}\r\n {this.state.creatingPDF && (\r\n
    \r\n {this.state.fichasChecked.map((fichaId) => {\r\n let fichaData = this.state.fichas.find(\r\n (itemFicha) => itemFicha.DepositSlipId === fichaId\r\n );\r\n if (fichaData) {\r\n return (\r\n
    \r\n \r\n
    \r\n );\r\n }\r\n return \"\";\r\n })}\r\n
    \r\n )}\r\n\r\n \r\n
    \r\n );\r\n }\r\n}\r\n\r\nexport default CaffenioReporteTabla;\r\n","import React, { Component } from 'react';\r\nimport SearchForm from \"../util/searchform/SearchForm\";\r\nimport TableTemplate from \"../util/tabletemplate/TableTemplate\";\r\nimport NoItems from \"../util/noitems/NoItems\";\r\nimport AcceptModal from '../util/acceptModal/AcceptModal';\r\nimport Pagination from '../util/pagination/Pagination';\r\nimport RecipesAPI from '../../services/Recipe';\r\nimport { toast } from 'react-toastify';\r\nimport Loading from '../util/loading/Loading';\r\nimport RecipeTypesAPI from '../../services/RecipeType';\r\nimport PresentationsAPI from '../../services/Presentations';\r\nimport MilksAPI from '../../services/Milk';\r\nimport GrainsAPI from '../../services/Grain';\r\nimport FlavorsAPI from '../../services/Flavor';\r\nimport ClasificacionesAPI from '../../services/Classification';\r\n\r\nimport Select from 'react-select';\r\nimport lodash from 'lodash';\r\n\r\nimport ModoGuiado from \"../modoGuiado/ModoGuiado\"\r\nimport BtnModoGuiado from '../util/BtnModoGuiado/BtnModoGuiado'\r\nimport Modal from '../util/modal/Modal';\r\n// import RecipeToppings from './components/RecipeToppings';\r\n// import NewRecipeDetail from './components/NewRecipeDetail';\r\nimport ErrorMessages from '../../util/validation-error-messages';\r\nimport RecipeFilters from '../util/recipeFilters/recipeFilters';\r\n\r\nclass newFeatured extends Component {\r\n recipes = [];\r\n origRecipeTypesList = []; //Donde se va a guardar la lista original de tipos de receta\r\n origFlavorsList = []; //Donde se va a guardar la lista original de sabores\r\n origGrainsList = []; //Donde se va a guardar la lista original de granos\r\n origMilksList = []; //Donde se va a guardar la lista original de leches\r\n origPresentationList = []; //Donde se va a guardar la lista original de presentaciones\r\n\r\n // Variables donde se almacenaran los valores seleccionados en el select multi\r\n tempRecipeTypesList;\r\n tempPresentationList;\r\n tempMilkList;\r\n tempGrainList;\r\n tempFlavorsList;\r\n tempClassificationList;\r\n\r\n constructor(props){\r\n super(props);\r\n this.state = {\r\n recipes: [],\r\n filterText: \"\",\r\n recipe: null,\r\n pageRecipes: [],\r\n showModal: false,\r\n editing: false,\r\n removeModal: false,\r\n isLoading: false,\r\n syncModal: false,\r\n selectedRecipes: [],\r\n checkAll: false,\r\n syncMultiModal: false,\r\n // Variables sonde se almacenaran los criterios de busqueda definitivos\r\n recipeTypeList: [],\r\n selectedRecipeTypesList: [],\r\n presentationsList: [],\r\n selectedPresentationsList: [],\r\n milksList: [],\r\n selectedMilksList: [],\r\n grainsList: [],\r\n selectedGrainsList: [],\r\n flavorsList: [],\r\n selectedFlavorsList: [],\r\n classificationList: [],\r\n selectedClassificationList: [],\r\n manageToppingModal: false,\r\n addToppingModal: false,\r\n toppings: [],\r\n toppingError: false,\r\n menuRecetaModal: false,\r\n menuRecetaModalTitle: \"\",\r\n menuRecetaModalBody: \"\",\r\n menuRecetaCurrent: null\r\n }\r\n }\r\n\r\n componentDidMount(){\r\n this.setState({isLoading: true})\r\n let state = {...this.state};\r\n RecipesAPI.getAll().then(response => {\r\n state.recipes = response.data\r\n this.recipes = lodash.cloneDeep(response.data);\r\n\r\n // Obtener todos los tipos de recetas\r\n return RecipeTypesAPI.getAll()\r\n }).then(response => {\r\n let temp = [];\r\n \r\n response.data.map(obj => {\r\n if(obj.RecipeName) {\r\n temp.push({value: obj.RecipeTypeId, label: obj.RecipeName})\r\n }else{\r\n temp.push({value: obj.RecipeTypeId, label: obj.Description})\r\n }\r\n })\r\n temp.sort(this.compare); // Ordenar los labels para elegir\r\n state.recipeTypeList = temp;\r\n this.origRecipeTypesList = lodash.cloneDeep(temp)\r\n \r\n // Obtener todas las presentaciones\r\n return PresentationsAPI.getAll()\r\n }).then(response => {\r\n let tempPresentationList = [];\r\n response.data.map(obj => {\r\n tempPresentationList.push({value: obj.PresentationId, label: obj.Name})\r\n })\r\n tempPresentationList.sort(this.compare); // Ordenar los labels\r\n state.presentationsList = tempPresentationList\r\n this.origPresentationList = lodash.cloneDeep(tempPresentationList)\r\n\r\n // Obtener los tipos de leche\r\n return MilksAPI.getAll()\r\n }).then(response => {\r\n let tempMilkList = [];\r\n response.data.map(obj => {\r\n tempMilkList.push({value: obj.MilkTypeId, label: obj.Description})\r\n })\r\n tempMilkList.sort(this.compare); // Ordenar los labels\r\n state.milksList = tempMilkList\r\n this.origMilksList = tempMilkList\r\n \r\n // Obtener los tipos de grano\r\n return GrainsAPI.getAll()\r\n }).then(response => {\r\n let tempGrainList = [];\r\n response.data.map(obj => {\r\n tempGrainList.push({value: obj.GrainTypeId, label: obj.Description})\r\n })\r\n tempGrainList.sort(this.compare); // Ordenar los labels\r\n state.grainsList = tempGrainList\r\n this.origGrainsList = lodash.cloneDeep(tempGrainList)\r\n \r\n // Obtener los sabores\r\n return FlavorsAPI.getAll()\r\n }).then(response => {\r\n let tempFlavorsList = [];\r\n response.data.map(obj => {\r\n tempFlavorsList.push({value: obj.FlavorTypeId, label:obj.Name})\r\n })\r\n tempFlavorsList.sort(this.compare); // Ordenar los labels \r\n state.flavorsList = tempFlavorsList\r\n this.origFlavorsList = tempFlavorsList\r\n \r\n // Obtener las clasificaciones\r\n return ClasificacionesAPI.getAll()\r\n }).then(response => {\r\n let tempClassificationList = [];\r\n response.data.map(obj => {\r\n tempClassificationList.push({value: obj.ClassificationId, label: obj.Name})\r\n })\r\n tempClassificationList.sort(this.compare); // Ordenar los labels\r\n state.classificationList = tempClassificationList\r\n \r\n // Guardar el estado\r\n this.setState(state)\r\n }).catch(err => {\r\n this.setState({isLoading: false})\r\n if(err.response)\r\n toast.error(err.response.data.Message)\r\n else\r\n toast.error(ErrorMessages.SinConexion)\r\n })\r\n }\r\n\r\n /**\r\n * Funcion para ordenar lexicograficamente\r\n * @param objA. primer operando\r\n * @param objB. segundo operando\r\n */\r\n compare = (objA, objB) => {\r\n // Use toUpperCase() to ignore character casing\r\n const labelA = objA.label.toUpperCase();\r\n const labelB = objB.label.toUpperCase();\r\n\r\n let comparison = 0;\r\n if (labelA > labelB) {\r\n comparison = 1;\r\n } else if (labelA < labelB) {\r\n comparison = -1;\r\n }\r\n return comparison;\r\n }\r\n\r\n // Método encargado de recibir el texto en el input de búsqueda y filtrar los elementos en\r\n // la tabla \r\n handleSearchInput = (text) => {\r\n let state = this.state;\r\n state.filterText = text;\r\n this.setState(state, this.handleSearchMultipleFieldInput);\r\n }\r\n\r\n /**\r\n *Realizar el filtrado sobre las recetas para desplegar solo los elementos\r\n *que cumplen con las caracteristicas que el usuario ingreso.\r\n * \r\n *@param: nada\r\n *@return: nada\r\n */\r\n handleSearchMultipleFieldInput = () => {\r\n let recipes = this.recipes.filter(\r\n recipe => ( \r\n (this.state.selectedRecipeTypesList.length > 0 ? \r\n this.state.selectedRecipeTypesList.includes(recipe.RecipeTypeId) : \r\n true) &&\r\n (this.state.selectedFlavorsList.length > 0 ? \r\n this.state.selectedFlavorsList.includes(recipe.FlavorTypeId) : \r\n true) &&\r\n (this.state.selectedPresentationsList.length > 0 ? \r\n this.state.selectedPresentationsList.includes(recipe.PresentationId) : \r\n true) &&\r\n (this.state.selectedMilksList.length > 0 ? \r\n this.state.selectedMilksList.includes(recipe.MilkTypeId) : \r\n true) &&\r\n (this.state.selectedGrainsList.length > 0 ? \r\n this.state.selectedGrainsList.includes(recipe.GrainTypeId) : \r\n true) &&\r\n (this.state.selectedClassificationList.length > 0 ? \r\n this.state.selectedClassificationList.includes(recipe.ClassificationId) : \r\n true) &&\r\n (this.state.filterText.trim() !== '' ?\r\n (recipe.ShortName ? \r\n recipe.ShortName.toLowerCase().normalize(\"NFD\").replace(/[\\u0300-\\u036f]/g, \"\").includes(this.state.filterText.trim().toLowerCase().normalize(\"NFD\").replace(/[\\u0300-\\u036f]/g, \"\")) \r\n : false \r\n || recipe.Description.toLowerCase().normalize(\"NFD\").replace(/[\\u0300-\\u036f]/g, \"\").includes(this.state.filterText.trim().toLowerCase().normalize(\"NFD\").replace(/[\\u0300-\\u036f]/g, \"\")))\r\n : true)\r\n )\r\n );\r\n \r\n let state = {...this.state};\r\n state.recipes = lodash.cloneDeep(recipes);\r\n\r\n this.setState(state);\r\n }\r\n\r\n create = () => {\r\n this.props.history.push('/recetas/nueva');\r\n }\r\n\r\n edit = (recipe) => {\r\n //Editar\r\n }\r\n\r\n /**\r\n *Modificar la lista de IDs con los que el usuario ha seleccionado. Aplica sobre los tipos de receta\r\n * \r\n *@param: arr: arreglo de valores que crea el select multi de react\r\n *@return: nada\r\n */\r\n handleRecipeTypeChange = (arr) => {\r\n let state = {...this.state}\r\n let tempSelectedRecipeTypesList = [];\r\n arr.map(obj => {\r\n tempSelectedRecipeTypesList.push(obj.value);\r\n })\r\n\r\n state.selectedRecipeTypesList = tempSelectedRecipeTypesList;\r\n state.selectedRecipes = [];\r\n state.pageRecipes.forEach(pageRecipe => pageRecipe.statusCheck = false);\r\n\r\n this.setState(state, () => {\r\n this.handleSearchMultipleFieldInput();\r\n });\r\n }\r\n\r\n /**\r\n *Modificar la lista de IDs con los que el usuario ha seleccionado. Aplica sobre los tipos de sabores\r\n * \r\n *@param: arr: arreglo de valores que crea el select multi de react\r\n *@return: nada\r\n */\r\n handleFlavorChange = (arr) => {\r\n let state = {...this.state}\r\n let tempSelectedFlavorList = [];\r\n arr.map(obj => {\r\n tempSelectedFlavorList.push(obj.value);\r\n })\r\n\r\n state.selectedFlavorsList = tempSelectedFlavorList;\r\n state.selectedRecipes = [];\r\n state.pageRecipes.forEach(pageRecipe => pageRecipe.statusCheck = false);\r\n\r\n this.setState(state, () => {\r\n this.handleSearchMultipleFieldInput();\r\n });\r\n }\r\n\r\n /**\r\n *Modificar la lista de IDs con los que el usuario ha seleccionado. Aplica sobre las presentaciones\r\n * \r\n *@param: arr: arreglo de valores que crea el select multi de react\r\n *@return: nada\r\n */\r\n handlePresentationChange = (arr) => {\r\n let state = {...this.state}\r\n let tempPresentationList = [];\r\n arr.map(obj => {\r\n tempPresentationList.push(obj.value);\r\n })\r\n\r\n state.selectedPresentationsList = tempPresentationList;\r\n state.selectedRecipes = [];\r\n state.pageRecipes.forEach(pageRecipe => pageRecipe.statusCheck = false);\r\n\r\n this.setState(state, () => {\r\n this.handleSearchMultipleFieldInput();\r\n });\r\n }\r\n\r\n /**\r\n *Modificar la lista de IDs con los que el usuario ha seleccionado. Aplica sobre los tipos de leche\r\n * \r\n *@param: arr: arreglo de valores que crea el select multi de react\r\n *@return: nada\r\n */\r\n handleMilkChange = (arr) => {\r\n let state = {...this.state}\r\n let tempMilksList = [];\r\n arr.map(obj => {\r\n tempMilksList.push(obj.value);\r\n })\r\n\r\n state.selectedMilksList = tempMilksList;\r\n state.selectedRecipes = [];\r\n state.pageRecipes.forEach(pageRecipe => pageRecipe.statusCheck = false);\r\n\r\n this.setState(state, () => {\r\n this.handleSearchMultipleFieldInput();\r\n });\r\n }\r\n\r\n /**\r\n *Modificar la lista de IDs con los que el usuario ha seleccionado. Aplica sobre los tipos de granos.\r\n * \r\n *@param: arr: arreglo de valores que crea el select multi de react\r\n *@return: nada\r\n */\r\n handleGrainChange = (arr) => {\r\n let state = {...this.state}\r\n let tempGrainList = [];\r\n arr.map(obj => {\r\n tempGrainList.push(obj.value);\r\n })\r\n\r\n state.selectedGrainsList = tempGrainList;\r\n state.selectedRecipes = [];\r\n state.pageRecipes.forEach(pageRecipe => pageRecipe.statusCheck = false);\r\n\r\n this.setState(state, () => {\r\n this.handleSearchMultipleFieldInput();\r\n });\r\n }\r\n\r\n /**\r\n *Modificar la lista de IDs con los que el usuario ha seleccionado. Aplica sobre las clasificaciones.\r\n * \r\n *@param: arr: arreglo de valores que crea el select multi de react\r\n *@return: nada\r\n */\r\n handleClassificationChange = (arr) => {\r\n let state = {...this.state}\r\n let tempClassificationList = [];\r\n arr.map(obj => {\r\n tempClassificationList.push(obj.value);\r\n })\r\n\r\n state.selectedClassificationList = tempClassificationList;\r\n state.selectedRecipes = [];\r\n // state.pageRecipes.forEach(pageRecipe => pageRecipe.statusCheck = false);\r\n\r\n this.setState(state, () => {\r\n this.handleSearchMultipleFieldInput();\r\n this.filterOptionsByClasification();\r\n });\r\n }\r\n\r\n /**\r\n * Filtra las opciones de los filtros(hehe) segun la clasificacion seleccionada.\r\n * Por ejemplo, seleccionó la Familia \"Chocolate\" entonces en el filtro de tipo de receta solo me tiene que aparecer \"Caliente\" y \"Frio\"\r\n */\r\n filterOptionsByClasification = () => {\r\n console.log(\"Filtrando filtros! (☞゚ヮ゚)☞\")\r\n let clasificaciones = this.state.selectedClassificationList\r\n if(clasificaciones.length > 0 ){\r\n let stateFiltros = {}\r\n // Filtrar los tipos de receta\r\n RecipeTypesAPI.getByClasification(clasificaciones).then(response => {\r\n let temp = response.data.map(obj => {\r\n return {value: obj.RecipeTypeId, label: obj.RecipeName ? obj.RecipeName : obj.Description}\r\n })\r\n stateFiltros.recipeTypeList = temp\r\n \r\n // Filtrar los sabores\r\n return FlavorsAPI.getByClasification(clasificaciones)\r\n }).then(response => {\r\n let tempFlavorsList = response.data.map(obj => {\r\n return {value: obj.FlavorTypeId, label:obj.Name}\r\n })\r\n tempFlavorsList.sort(this.compare); // Ordenar los labels \r\n stateFiltros.flavorsList = tempFlavorsList\r\n \r\n // Filtrar los granos de cafe\r\n return GrainsAPI.getByClasification(clasificaciones)\r\n }).then(response => {\r\n let tempGrainList = response.data.map(obj => {\r\n return {value: obj.GrainTypeId, label: obj.Description}\r\n })\r\n tempGrainList.sort(this.compare); // Ordenar los labels\r\n stateFiltros.grainsList = tempGrainList\r\n \r\n // Filtrar los tipos de leche\r\n return MilksAPI.getByClasification(clasificaciones)\r\n })\r\n .then(response => {\r\n let tempMilkList = response.data.map(obj => {\r\n return {value: obj.MilkTypeId, label: obj.Description}\r\n })\r\n tempMilkList.sort(this.compare); // Ordenar los labels\r\n stateFiltros.milksList = tempMilkList\r\n \r\n // Filtrar las presentaciones\r\n return PresentationsAPI.getByClasification(clasificaciones)\r\n }).then(response => {\r\n let tempPresentationList = response.data.map(obj => {\r\n return {value: obj.PresentationId, label: obj.Name}\r\n })\r\n tempPresentationList.sort(this.compare); // Ordenar los labels\r\n stateFiltros.presentationsList = tempPresentationList\r\n\r\n this.setState(stateFiltros)\r\n })\r\n }else{\r\n this.setState({\r\n recipeTypeList: lodash.cloneDeep(this.origRecipeTypesList),\r\n flavorsList: lodash.cloneDeep(this.origFlavorsList),\r\n grainsList: lodash.cloneDeep(this.origGrainsList),//Donde se va a guardar la lista original de granos\r\n milksList: lodash.cloneDeep(this.origMilksList),//Donde se va a guardar la lista original de leches\r\n presentationList: lodash.cloneDeep(this.origPresentationList)//Donde se va a guardar la lista original de presentaciones\r\n })\r\n }\r\n }\r\n\r\n handleSelectChange = (objFilters) => {\r\n this.setState(objFilters, () => {this.handleSearchMultipleFieldInput();})\r\n }\r\n\r\n handleNewFeatured = (recipeId) => {\r\n RecipesAPI.newFeatured(recipeId)\r\n .then(result => {\r\n toast.success(\"Producto destacado creado correctamente\");\r\n })\r\n .catch(error => {\r\n if(error){\r\n toast.error(error.response ? error.response.data.Message : \"Error al guardar nuevo destacado.\");\r\n }\r\n this.setState({menuRecetaModalBody:\"Error al guardar nuevo destacado.\", isLoading: false})\r\n })\r\n }\r\n\r\n remove = () => {\r\n this.setState({isLoading: true});\r\n RecipesAPI.delete(this.state.recipe.RecipeId).then(response => {\r\n let state = {...this.state};\r\n\r\n state.recipes.splice(state.recipes.findIndex(c => c.RecipeId === state.recipe.RecipeId), 1);\r\n state.pageRecipes.splice(state.pageRecipes.findIndex(c => c.RecipeId === state.recipe.RecipeId), 1);\r\n state.isLoading = false;\r\n state.removeModal = false;\r\n state.recipe = null;\r\n\r\n this.setState(state, () => toast.success(\"Receta eliminada\"));\r\n }).catch(err => {\r\n if(err){\r\n this.setState({isLoading: false, recipe: null, removeModal: false});\r\n if(err.response)\r\n toast.error(err.response.data.Message)\r\n else\r\n toast.error(ErrorMessages.SinConexion)\r\n }\r\n });\r\n }\r\n\r\n /**\r\n * Genera un movimiento de sincronizacion a los drives que tienen la receta seleccionada en su menu\r\n */\r\n syncRecipe = () => {\r\n this.setState({isLoading: true});\r\n RecipesAPI.sync(this.state.recipe.RecipeId).then(response => {\r\n this.setState({syncModal: false, isLoading: false, recipe: null}, () => toast.success(\"Orden de sincronización generado\"));\r\n }).catch(err => {\r\n if(err){\r\n this.setState({isLoading: false, recipe: null, syncModal: false});\r\n if(err.response)\r\n toast.error(err.response.data.Message)\r\n else\r\n toast.error(ErrorMessages.SinConexion)\r\n }\r\n });\r\n }\r\n\r\n /**\r\n * Genera un movimiento de sincronizacion a los drives que tienen almenos una de las recetas seleccionadas en su menu\r\n */\r\n syncRecipeMulti = () => {\r\n this.setState({isLoading: true});\r\n RecipesAPI.syncMulti(this.state.selectedRecipes).then(response => {\r\n let _pageRecipes = [...this.state.pageRecipes]\r\n _pageRecipes.forEach(pageRecipe => pageRecipe.statusCheck = false)\r\n this.setState({syncMultiModal: false, isLoading: false, selectedRecipes: [], pageRecipes: _pageRecipes}, () => toast.success(\"Orden de sincronización generado\"));\r\n }).catch(err => {\r\n if(err){\r\n this.setState({isLoading: false, syncMultiModal: false});\r\n if(err.response)\r\n toast.error(err.response.data.Message)\r\n else\r\n toast.error(ErrorMessages.SinConexion)\r\n }\r\n });\r\n }\r\n\r\n /**\r\n * Funcion que se ejecuta al darle click al checkbox del header\r\n */\r\n selectAllCheck = () => {\r\n let _checkAll = !this.state.checkAll\r\n let _selectedRecipes = [...this.state.selectedRecipes]\r\n let _pageRecipes = this.state.pageRecipes\r\n _pageRecipes.forEach(recipe => {\r\n let indexRecipe = _selectedRecipes.findIndex(item => item === recipe.RecipeId)\r\n recipe.statusCheck = _checkAll\r\n if(_checkAll){\r\n if(indexRecipe === -1) _selectedRecipes.push(recipe.RecipeId)\r\n }else{\r\n if(indexRecipe !== -1) _selectedRecipes.splice(indexRecipe, 1)\r\n }\r\n\r\n })\r\n\r\n this.setState({checkAll: _checkAll, selectedRecipes: _selectedRecipes})\r\n }\r\n\r\n /**\r\n * Funcion que se ejecuta al cambiar la pagina del tablero\r\n */\r\n changeRecipePage = (recipes) => {\r\n let recipesChecked = 0\r\n let checkAll = false\r\n recipes.forEach(item => {\r\n if(this.state.selectedRecipes.findIndex(id => id === item.RecipeId) !== -1)\r\n recipesChecked++\r\n })\r\n if(recipesChecked === recipes.length) checkAll = true \r\n\r\n this.setState({ pageRecipes: recipes, checkAll: checkAll })\r\n }\r\n\r\n /*\r\n * Funcion que selecciona o des selecciona todas las \r\n * recetas de todas las paginas.\r\n */\r\n selectAllCheckBox = () => {\r\n let state = {...this.state};\r\n let elementsPage = state.recipes\r\n let selectedRecipes = []\r\n // Le asignamos el valor inverso de checkAll a todas las recetas actuales\r\n elementsPage.map(element=>{\r\n if(state.checkAll){\r\n element.statusCheck = false \r\n }else{\r\n element.statusCheck = true\r\n selectedRecipes.push(element.RecipeId)\r\n }\r\n\r\n return element\r\n })\r\n state.checkAll = !state.checkAll;\r\n state.recipes = elementsPage;\r\n state.selectedRecipes = selectedRecipes\r\n this.setState(state);\r\n }\r\n\r\n /**\r\n * Función que checa que las cantidades de los toppings esten correctas.\r\n */\r\n checkForToppingErrors = () => {\r\n let errorTopping = false;\r\n this.state.toppings.findIndex(topping => {\r\n if(topping.MinQuantity > topping.MaxQuantity){\r\n errorTopping = true\r\n return true\r\n }\r\n return false\r\n })\r\n this.setState({toppingError: errorTopping})\r\n }\r\n\r\n /**\r\n * Función que realiza petición al server para añadir los toppings que estan en this.state.toppings a los toppings seleccionados\r\n */\r\n addToppingsToRecipes = () => {\r\n // Primero hay que crear el payload. En este caso sera una coleccion de {RecipeId: X, Toppings: [toppings en el estado]}\r\n let payloadRecipes = this.state.selectedRecipes.map(recipeId => {\r\n return {RecipeId: recipeId, Toppings: [...this.state.toppings]}\r\n })\r\n\r\n // Hacer la peticion\r\n RecipesAPI.addToppings(payloadRecipes)\r\n .then(result => {\r\n this.setState({manageToppingModal: false, toppings: [], toppingError: false, isLoading: false}, () => toast.success(\"Topping(s) agregado(s) exitosamente.\"))\r\n })\r\n .catch(error => {\r\n if(error){\r\n toast.error(error.response ? error.response.data.Message : \"Error al agregar topping(s).\");\r\n this.setState({isLoading: false});\r\n }\r\n })\r\n }\r\n\r\n render() {\r\n return (\r\n
    \r\n\r\n \r\n\r\n

    Producto Destacado

    \r\n\r\n\r\n {/* Filtro multiple para recetas */}\r\n
    \r\n
    \r\n
    \r\n \r\n {this.handleSelectChange(objFilters)}}\r\n />\r\n
    \r\n
    \r\n
    \r\n\r\n
    \r\n \r\n \r\n
    \r\n
    \r\n {/* Botones del header de la tabla */}\r\n
    \r\n {/* Todos los resultados */}\r\n
    \r\n
    \r\n\r\n
    \r\n {this.state.recipes.length !== 0 \r\n ? {\r\n // Creamos un botón que lanza un modal con información de que menus esta la receta seleccionada\r\n return \r\n }}\r\n rowClickable={false}\r\n details=''\r\n /> \r\n : }\r\n this.changeRecipePage(recipes) } />\r\n
    \r\n
    \r\n \r\n \r\n {/* Modales */}\r\n {this.state.removeModal && this.remove()}\r\n cancel={() => this.setState({removeModal: false})}\r\n modalTitle={\"Eliminar Receta\"}\r\n />}\r\n\r\n {this.state.syncModal && this.syncRecipe()}\r\n cancel={() => this.setState({syncModal: false})}\r\n modalTitle={\"Sincronizar \" + this.state.recipe.Description + \"?\"}\r\n />}\r\n\r\n {this.state.syncMultiModal && this.syncRecipeMulti()}\r\n cancel={() => this.setState({syncMultiModal: false})}\r\n modalTitle={\"Sincronizar recetas seleccionadas?\"}\r\n />}\r\n\r\n {/* Modal para consultar menus */}\r\n {this.state.menuRecetaModal && this.setState({menuRecetaModal: false})}\r\n modalTitle={this.state.menuRecetaModalTitle}\r\n >\r\n {this.state.menuRecetaModalBody}\r\n }\r\n\r\n {/* Modal de gestion de toppings */}\r\n {this.state.manageToppingModal && this.setState({manageToppingModal: false, toppings: [], toppingError: false})}\r\n footer={true}\r\n footerButtons={\r\n
    \r\n \r\n
    \r\n }\r\n >\r\n
    \r\n

    \r\n Agregar topping\r\n  \r\n this.setState({addToppingModal: true})}>\r\n \r\n \r\n \r\n \r\n

    \r\n
    \r\n {/* { \r\n let toppings = [...this.state.toppings];\r\n toppings[index][labelQuantity] = value;\r\n this.setState({toppings: toppings}, this.checkForToppingErrors());\r\n }}\r\n removeDetail={(indexTopping) => {\r\n let toppings = [...this.state.toppings];\r\n toppings.splice(indexTopping,1);\r\n this.setState({toppings: toppings}, () => {\r\n toast.success(\"Topping eliminado\");\r\n this.checkForToppingErrors()\r\n });\r\n }}\r\n /> */}\r\n }\r\n\r\n {/* Modal para agregar toppings */}\r\n {this.state.addToppingModal && \r\n this.setState({ addToppingModal: false })}\r\n >\r\n {/* {\r\n let toppings = [...this.state.toppings];\r\n \r\n toppings.push({\r\n CodeProvider: detail.CodeProvider,\r\n Name: detail.Name,\r\n InventoryItemId: detail.InventoryItemId,\r\n MinQuantity: detail.MinQuantity || 0,\r\n MaxQuantity: detail.MaxQuantity || 0\r\n });\r\n this.setState({toppings: toppings});\r\n }}\r\n currentDetails = {this.state.toppings.map(det => det.InventoryItemId)}\r\n soloToppings={true}\r\n isTopping={true}\r\n /> */}\r\n \r\n }\r\n\r\n \r\n\r\n \r\n\r\n
    \r\n );\r\n }\r\n}\r\n\r\nexport default newFeatured;\r\n","import { apiUrl } from \"../constants\";\r\nimport axios from 'axios';\r\nimport middleware from '../middleware/auth';\r\nimport { stringify } from \"querystring\";\r\n\r\nvar request = axios.create({\r\n baseURL: apiUrl,\r\n headers: {'Authorization': 'Bearer ' + localStorage.getItem('token'),'Content-Type':'application/json'}\r\n});\r\n\r\n/**\r\n * Servicio para el recurso de plazas\r\n */\r\nexport default class PlazasAPI {\r\n /**\r\n * Obtiene a las plazas.\r\n * @returns Promise\r\n */\r\n static getPlazas(filters = {}) {\r\n return middleware.hasAuth(() => request.get(`/Plazas?${stringify(filters)}`));\r\n }\r\n\r\n /**\r\n * Actualización de una plaza.\r\n * @param {Object} plaza - Datos de la plaza\r\n * @returns Promise\r\n */\r\n static updatePlaza( plaza ) {\r\n return middleware.hasAuth(() => request.put('/Plazas/', plaza));\r\n }\r\n\r\n /**\r\n * Creación de una plazas.\r\n * @param {Object} plazas - Datos de la plazas\r\n * @returns Promise\r\n */\r\n static createPlaza( plaza ) {\r\n return middleware.hasAuth(() => request.post('/Plazas/', plaza));\r\n }\r\n\r\n /**\r\n * Obtiene las plazas del usuario dado.\r\n * @param { Number } idUser - Id del usuario.\r\n * @returns Promise\r\n */\r\n static getUserPlazas( idUser, asign = false ) {\r\n return middleware.hasAuth(() => request.get(`/Plazas/User/${ idUser }/${ asign }`));\r\n }\r\n\r\n /**\r\n * Actualiza la lista de plazas de un usuario.\r\n * @param { Object } data - Datos a guardar.\r\n * @returns Promise\r\n */\r\n static updateUserPlazas( data ) {\r\n return middleware.hasAuth(() => request.post(`/Plazas/User/`, data));\r\n }\r\n\r\n /**\r\n * Elimina una de las plazas de un usuario.\r\n * @param { Object } data - Datos a eliminar.\r\n * @returns \r\n */\r\n static deleteUserPlaza( data ) {\r\n return middleware.hasAuth(() => request.post('/Plazas/User/Desasign/', data));\r\n }\r\n}","import React, { useEffect, useState } from 'react';\r\n\r\n// Components\r\nimport Modal from '../util/modal/Modal';\r\nimport Loader from '../util/loading/Loading';\r\nimport Field from '../util/field/Field';\r\nimport Select from 'react-select';\r\n\r\n// Utils\r\nimport { toast } from 'react-toastify';\r\n\r\n// Services\r\nimport PlazasAPI from '../../services/Plazas';\r\nimport SucursalesAPI from '../../services/Sucursales';\r\n\r\n/**\r\n * Componente modal para editar o crear plazas.\r\n * @param { Function } onClose - Funcion para cerrar el modal \r\n * @returns \r\n */\r\nexport const ModalPlaza = ({ plaza, onClose, onUpdate, onInsert, sucursales, titleModal }) => {\r\n\r\n const [ state, setState ] = useState({\r\n nombre: '',\r\n estatus: null,\r\n isLoading: false,\r\n sucursal: null\r\n });\r\n\r\n useEffect(() => {\r\n if ( plaza !== undefined && JSON.stringify(plaza) !== '{}' ) {\r\n setState({\r\n ...state,\r\n nombre: plaza.Nombre,\r\n estatus: plaza.Estatus,\r\n sucursal: sucursales.find(suc => suc.value === plaza.Sucursal)\r\n });\r\n } else {\r\n setState({ ...state, estatus: true });\r\n }\r\n }, [ plaza ]);\r\n\r\n /**\r\n * Guarda la información de la sucursal.\r\n */\r\n const handleSaveInfo = () => {\r\n if ( state.nombre === '' || state.sucursal === null || state.estatus === null)\r\n return toast.warn('Se deben llenar todos los campos.');\r\n\r\n const dataToSave = {\r\n Nombre: state.nombre.trim(),\r\n Estatus: state.estatus,\r\n Sucursal: state.sucursal ? state.sucursal.value : null\r\n };\r\n\r\n setState({ ...state, isLoading: true });\r\n if ( plaza.idPlaza !== undefined ) {\r\n PlazasAPI.updatePlaza({ ...plaza, ...dataToSave })\r\n .then( resp => onUpdate( resp.data ) )\r\n .catch( err => {\r\n let message = 'Ocurrio un error';\r\n try {\r\n message = err.response.data.Message;\r\n } catch (error) {\r\n message = 'No se pudo actualizar la plaza';\r\n } finally {\r\n toast.error(message);\r\n setState({ ...state, isLoading: false });\r\n }\r\n });\r\n } else {\r\n PlazasAPI.createPlaza({ ...dataToSave })\r\n .then( resp => onInsert() )\r\n .catch( err => {\r\n let message = 'Ocurrio un error';\r\n try {\r\n message = err.response.data.Message;\r\n } catch (error) {\r\n message = 'No se pudo crear la plaza';\r\n } finally {\r\n toast.error(message);\r\n setState({ ...state, isLoading: false });\r\n }\r\n });\r\n }\r\n }\r\n\r\n /**\r\n * Maneja el cambio de la sucursal.\r\n * @param {Object} suc - Sucursal seleccionada\r\n */\r\n const handleChangeSucursal = suc => {\r\n setState({\r\n ...state,\r\n sucursal: suc\r\n });\r\n }\r\n\r\n return (\r\n onClose()}\r\n >\r\n { state.isLoading &&\r\n \r\n }\r\n
    \r\n
    \r\n
    \r\n
    \r\n \r\n setState({ ...state, nombre: target.value })}\r\n />\r\n
    \r\n
    \r\n
    \r\n
    \r\n
    \r\n \r\n handleChangeSucursal(item)}\r\n noOptionsMessage={() => \"No hay opciones\"}\r\n options={sucursales}\r\n />\r\n
    \r\n
    \r\n
    \r\n
    \r\n {\r\n titleModal !== 'Agregar Plaza' && \r\n
    \r\n
    \r\n \r\n {}}\r\n disabled={ titleModal === 'Agregar Plaza' ? true : false }\r\n />\r\n \r\n
    \r\n
    \r\n }\r\n
    \r\n
    \r\n
    \r\n
    \r\n \r\n
    \r\n
    \r\n
    \r\n \r\n )\r\n}","import React, { useEffect, useState } from 'react';\r\n\r\n// Components\r\nimport NoItems from '../util/noitems/NoItems';\r\nimport Pagination from '../util/pagination/Pagination';\r\nimport Loading from '../util/loading/Loading';\r\nimport Field from '../util/field/Field';\r\nimport { ModalPlaza } from './ModalPlaza';\r\nimport Select from 'react-select';\r\n\r\n// Utils\r\nimport {toast} from 'react-toastify';\r\n\r\n// Services\r\nimport PlazaAPI from '../../services/Plazas';\r\nimport SucursalAPI from '../../services/Sucursales';\r\n\r\n/**\r\n * Componente para modulo de Plazas.\r\n * @returns Component\r\n */\r\nexport const CatalogoPlazas = () => {\r\n const [ state, setState ] = useState({\r\n pages: [],\r\n titleModal: '',\r\n isLoading: false,\r\n listPlazas: [],\r\n plazaSelected: {},\r\n modalVisible: false,\r\n listSucursales: [],\r\n filters: {\r\n nombre: '',\r\n estatus: null,\r\n sucursal: null\r\n }\r\n });\r\n\r\n // Carga inicial de los datos.\r\n useEffect(() => {\r\n setState({ ...state, isLoading: true });\r\n let plazas = [];\r\n let allPages = [];\r\n let sucursales = [];\r\n\r\n Promise.all([\r\n PlazaAPI.getPlazas()\r\n .then(res => {\r\n allPages = res.data;\r\n plazas = res.data;\r\n }),\r\n SucursalAPI.getSucursales()\r\n .then( res => sucursales = res.data.map(suc => {\r\n return {\r\n value: suc.idSucursal,\r\n label: suc.Nombre\r\n }\r\n }) ),\r\n ]).catch(err => {\r\n toast.error('Ocurrio un error al consulatar las plazas.');\r\n console.error(err);\r\n })\r\n .finally(() => setState({\r\n ...state,\r\n isLoading: false,\r\n pages: allPages,\r\n listPlazas: plazas,\r\n listSucursales: sucursales\r\n }));\r\n }, []);\r\n\r\n /**\r\n * Limpia los filtros y trae los valores iniciales para la tabla.\r\n */\r\n const handleCleanFilters = () => {\r\n setState({...state, isLoading: true});\r\n let plazas = [];\r\n PlazaAPI.getPlazas({})\r\n .then(res => plazas = res.data)\r\n .catch(() => toast.error(\"Ocurrio un problema al filtrar las plazas.\"))\r\n .finally(() => setState({\r\n ...state,\r\n filters: {\r\n nombre: '',\r\n sucursal: null,\r\n estatus: null\r\n },\r\n isLoading: false,\r\n listPlazas: plazas,\r\n pages: plazas\r\n }));\r\n }\r\n\r\n /**\r\n * Filtrado de las plazas.\r\n */\r\n const handleFilterPlazas = () => {\r\n setState({...state, isLoading: true});\r\n let plazas = [];\r\n\r\n let filters = {};\r\n\r\n if ( state.filters.sucursal )\r\n filters.sucursal = state.filters.sucursal.value\r\n if ( state.filters.estatus )\r\n filters.estatus = state.filters.estatus\r\n if ( state.filters.nombre )\r\n filters.nombre = state.filters.nombre.normalize(\"NFD\").replace(/[\\u0300-\\u036f]/g, \"\").trim();\r\n else if ( state.filters.nombre === \"\" )\r\n delete filters.nombre\r\n\r\n PlazaAPI.getPlazas({ ...filters })\r\n .then(res => plazas = res.data)\r\n .catch(() => toast.error(\"Ocurrio un problema al filtrar las Plazas.\"))\r\n .finally(() => setState({\r\n ...state,\r\n isLoading: false,\r\n listPlazas: plazas,\r\n pages: plazas\r\n }));\r\n }\r\n\r\n /**\r\n * Actualiza la lista con los datos nuevos.\r\n * @param {Object} data - Datos a actualizar\r\n */\r\n const handleUpdateList = data => {\r\n setState({ ...state, isLoading: true });\r\n\r\n const oldList = [...state.listPlazas];\r\n let startIndex = null;\r\n oldList.find((pla, ixd) => {\r\n if ( pla.idPlaza === data.idPlaza )\r\n startIndex = ixd;\r\n });\r\n\r\n oldList.splice(startIndex, 1, data);\r\n\r\n setState({\r\n ...state,\r\n modalVisible: false,\r\n plazaSelected: {},\r\n listPlazas: [...oldList],\r\n isLoading: false\r\n });\r\n\r\n toast.success('Plaza actualizada');\r\n }\r\n\r\n /**\r\n * Actualización de la lista.\r\n */\r\n const handleInsertInfo = () => {\r\n setState({\r\n ...state,\r\n isLoading: true,\r\n filters: {\r\n nombre: '',\r\n estatus: null,\r\n sucursal: null\r\n }\r\n });\r\n let plazas = [];\r\n PlazaAPI.getPlazas({})\r\n .then(res => plazas = res.data)\r\n .catch(() => toast.error(\"Ocurrio un problema al filtrar las Plazas.\"))\r\n .finally(() => setState({\r\n ...state,\r\n isLoading: false,\r\n listPlazas: plazas,\r\n pages: plazas,\r\n modalVisible: false\r\n }));\r\n \r\n toast.success('Plaza agregada');\r\n }\r\n\r\n return (\r\n
    \r\n {\r\n state.isLoading &&\r\n \r\n }\r\n

    Catálogo de Plazas

    \r\n
    \r\n
    \r\n
    \r\n
    \r\n setState({...state, modalVisible: true, titleModal: 'Agregar Plaza'})}\r\n >\r\n Agregar Plaza\r\n \r\n
    \r\n
    \r\n
    \r\n
    \r\n {/* Filtros */}\r\n
    \r\n
    \r\n
    \r\n
    \r\n
    \r\n \r\n
    \r\n setState({\r\n ...state,\r\n filters: {\r\n ...state.filters,\r\n nombre: target.value\r\n }\r\n })}\r\n />\r\n
    \r\n
    \r\n
    \r\n \r\n
    \r\n \"No hay opciones\"}\r\n onChange={item => setState({\r\n ...state,\r\n filters: {\r\n ...state.filters,\r\n sucursal: item\r\n }\r\n })}\r\n options={state.listSucursales}\r\n />\r\n
    \r\n
    \r\n
    \r\n
    \r\n
    \r\n \r\n Filtrar\r\n \r\n
    \r\n
    \r\n
    \r\n
    \r\n
    \r\n
    \r\n
    \r\n
    \r\n
    \r\n \r\n Limpiar filtros\r\n \r\n
    \r\n
    \r\n
    \r\n
    \r\n
    \r\n
    \r\n {/* Tabla de resultados */}\r\n
    \r\n
    \r\n {\r\n state.listPlazas.length !== 0 ?\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n {\r\n state.pages.map(pla =>\r\n \r\n \r\n \r\n \r\n \r\n \r\n )\r\n }\r\n \r\n
    NombreSucursalEstatusAcciones
    {pla.Nombre}{\r\n state.listSucursales.length !== 0 \r\n ? state.listSucursales.find(suc => suc.value === pla.Sucursal)\r\n ? state.listSucursales.find(suc => suc.value === pla.Sucursal).label\r\n : \"Sin Sucursal\"\r\n : \"Sin Sucursal\"\r\n }\r\n \r\n \r\n \r\n \r\n setState({...state, modalVisible: true, plazaSelected: pla, titleModal: 'Editar Plaza'})}\r\n >\r\n Editar\r\n \r\n
    \r\n : \r\n }\r\n setState({...state, pages: pla})}\r\n />\r\n
    \r\n
    \r\n {\r\n state.modalVisible &&\r\n handleUpdateList( data )}\r\n onClose={() => setState({...state, modalVisible: false, plazaSelected: {}})}\r\n />\r\n }\r\n
    \r\n )\r\n}","import React, { useState, useEffect } from 'react';\r\n\r\n// Components\r\nimport Modal from '../util/modal/Modal';\r\nimport Loader from '../util/loading/Loading';\r\nimport Field from '../util/field/Field';\r\n\r\n// Utils\r\nimport { toast } from 'react-toastify';\r\n\r\n// Services\r\nimport SucursalAPI from '../../services/Sucursales';\r\n\r\n/**\r\n * Componente modal para editar o crear sucursales.\r\n * @param { Function } onClose - Funcion para cerrar el modal \r\n * @returns \r\n */\r\nexport const ModalSucursal = ({ sucursal, onClose, onUpdate }) => {\r\n\r\n const [ state, setState ] = useState({\r\n nombre: '',\r\n estatus: false,\r\n isLoading: false,\r\n });\r\n\r\n useEffect(() => {\r\n if ( sucursal !== undefined && JSON.stringify(sucursal) !== '{}' ) {\r\n setState({\r\n ...state,\r\n nombre: sucursal.Nombre,\r\n estatus: sucursal.Estatus\r\n });\r\n }\r\n }, [ sucursal ]);\r\n\r\n /**\r\n * Guarda la información de la sucursal.\r\n */\r\n const handleSaveInfo = () => {\r\n if ( state.nombre === '' )\r\n return toast.warn('Se debe ingresar un nombre para la sucursal.');\r\n\r\n const dataToSave = {\r\n Nombre: state.nombre.trim(),\r\n Estatus: state.estatus\r\n };\r\n\r\n setState({ ...state, isLoading: true });\r\n if ( sucursal.idSucursal !== undefined ) {\r\n SucursalAPI.updateSucursal({ ...sucursal, ...dataToSave })\r\n .then( resp => onUpdate( resp.data ) )\r\n .catch( err => {\r\n let message = 'Ocurrio un error';\r\n try {\r\n message = err.response.data.Message;\r\n } catch (error) {\r\n message = 'No se pudo actualizar la sucursal';\r\n } finally {\r\n toast.error(message);\r\n setState({ ...state, isLoading: false });\r\n }\r\n });\r\n } else {\r\n SucursalAPI.createSucursal({ ...dataToSave })\r\n .then( resp => onUpdate( resp.data ) )\r\n .catch( () => {\r\n setState({ ...state, isLoading: false });\r\n toast.error('Ocurrio un problema al actualizar la sucursal');\r\n });\r\n }\r\n\r\n }\r\n\r\n return (\r\n onClose()}\r\n >\r\n { state.isLoading &&\r\n \r\n }\r\n
    \r\n
    \r\n
    \r\n \r\n setState({ ...state, nombre: target.value })}\r\n />\r\n
    \r\n
    \r\n
    \r\n
    \r\n
    \r\n
    \r\n \r\n

    {sucursal.NombreNuevo}

    \r\n
    \r\n
    \r\n
    \r\n
    \r\n
    \r\n
    \r\n \r\n {}}\r\n />\r\n \r\n
    \r\n
    \r\n
    \r\n
    \r\n
    \r\n
    \r\n \r\n
    \r\n
    \r\n
    \r\n \r\n )\r\n}","import React, { useEffect, useState } from 'react';\r\n\r\n// Components\r\nimport NoItems from '../util/noitems/NoItems';\r\nimport Pagination from '../util/pagination/Pagination';\r\nimport Loading from '../util/loading/Loading';\r\nimport { ModalSucursal } from './ModalSucursal';\r\nimport Field from '../util/field/Field';\r\nimport Select from 'react-select';\r\n\r\n// Utils\r\nimport {toast} from 'react-toastify';\r\n\r\n// Services\r\nimport SucursalAPI from '../../services/Sucursales';\r\n\r\n// Constants\r\nconst ESTATUS = [\r\n {\r\n id: 1,\r\n value: false,\r\n label: 'INACTIVO',\r\n },\r\n {\r\n id: 2,\r\n value: true,\r\n label: 'ACTIVO',\r\n },\r\n]\r\n\r\n/**\r\n * Componente para modulo de Sucursales.\r\n * @returns Component\r\n */\r\nexport const CatalogoSucursales = () => {\r\n const [ state, setState ] = useState({\r\n pages: [],\r\n isLoading: false,\r\n listSucursales: [],\r\n sucursalSelected: {},\r\n modalVisible: false,\r\n filters: {\r\n nombre: '',\r\n estatus: null\r\n }\r\n });\r\n\r\n useEffect(() => {\r\n setState({ ...state, isLoading: true });\r\n let sucursales = [];\r\n let allPages = [];\r\n\r\n SucursalAPI.getAllSucursales()\r\n .then(res => {\r\n allPages = res.data;\r\n sucursales = res.data;\r\n })\r\n .catch(err => {\r\n toast.error('Ocurrio un error al consulatar las sucursales.');\r\n console.error(err);\r\n })\r\n .finally(() => setState({\r\n ...state,\r\n isLoading: false,\r\n pages: allPages,\r\n listSucursales: sucursales,\r\n }));\r\n }, []);\r\n\r\n /**\r\n * Actualiza la lista con los datos nuevos.\r\n * @param {Object} data - Datos a actualizar\r\n */\r\n const handleUpdateList = data => {\r\n setState({ ...state, isLoading: true });\r\n\r\n const oldList = [...state.listSucursales];\r\n let startIndex = null;\r\n oldList.find((suc, ixd) => {\r\n if ( suc.idSucursal === data.idSucursal )\r\n startIndex = ixd;\r\n });\r\n oldList.splice(startIndex, 1, data);\r\n\r\n setState({\r\n ...state,\r\n listSucursales: [...oldList],\r\n isLoading: false,\r\n modalVisible: false,\r\n sucursalSelected: {}\r\n });\r\n\r\n toast.success('Sucursal editada');\r\n }\r\n\r\n /**\r\n * Limpia los filtros y trae los valores iniciales para la tabla.\r\n */\r\n const handleCleanFilters = () => {\r\n setState({...state, isLoading: true});\r\n let sucursales = [];\r\n SucursalAPI.getAllSucursales({})\r\n .then(res => sucursales = res.data)\r\n .catch(() => toast.error(\"Ocurrio un problema al filtrar las sucursales.\"))\r\n .finally(() => setState({\r\n ...state,\r\n filters: {\r\n nombre: '',\r\n estatus: null\r\n },\r\n isLoading: false,\r\n listSucursales: sucursales,\r\n pages: sucursales\r\n }));\r\n }\r\n\r\n /**\r\n * Filtrado de las sucursales.\r\n */\r\n const handleFilterSucursales = () => {\r\n setState({...state, isLoading: true});\r\n let sucursales = [];\r\n let filters = {};\r\n\r\n if ( state.filters.estatus )\r\n filters.estatus = state.filters.estatus.value\r\n if ( state.filters.nombre )\r\n filters.nombre = state.filters.nombre.normalize(\"NFD\").replace(/[\\u0300-\\u036f]/g, \"\").trim();\r\n else if ( state.filters.nombre === \"\" )\r\n delete filters.nombre\r\n\r\n SucursalAPI.getAllSucursales({ ...filters })\r\n .then(res => sucursales = res.data)\r\n .catch(() => toast.error(\"Ocurrio un problema al filtrar las Sucursales.\"))\r\n .finally(() => setState({\r\n ...state,\r\n isLoading: false,\r\n listSucursales: sucursales,\r\n pages: sucursales\r\n }));\r\n }\r\n\r\n\r\n return (\r\n
    \r\n {\r\n state.isLoading &&\r\n \r\n }\r\n

    Catálogo de Sucursales

    \r\n {/*
    \r\n
    \r\n
    \r\n
    \r\n setState({...state, modalVisible: true})}\r\n >\r\n Agregar Sucursal\r\n \r\n
    \r\n
    \r\n
    */}\r\n
    \r\n {/* Filtros */}\r\n
    \r\n
    \r\n
    \r\n
    \r\n
    \r\n \r\n
    \r\n setState({\r\n ...state,\r\n filters: {\r\n ...state.filters,\r\n nombre: target.value\r\n }\r\n })}\r\n />\r\n
    \r\n
    \r\n
    \r\n {/* \r\n
    \r\n \"No hay opciones\"}\r\n onChange={item => setState({\r\n ...state,\r\n filters: {\r\n ...state.filters,\r\n estatus: item\r\n }\r\n })}\r\n options={ESTATUS}\r\n />\r\n
    */}\r\n
    \r\n
    \r\n
    \r\n
    \r\n \r\n Filtrar\r\n \r\n
    \r\n
    \r\n
    \r\n
    \r\n
    \r\n
    \r\n
    \r\n
    \r\n
    \r\n \r\n Limpiar filtros\r\n \r\n
    \r\n
    \r\n
    \r\n
    \r\n
    \r\n
    \r\n {/* Tabla de resultados */}\r\n
    \r\n
    \r\n {\r\n state.listSucursales.length !== 0 ?\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n {\r\n state.pages.map(suc =>\r\n \r\n \r\n \r\n \r\n \r\n \r\n )\r\n }\r\n \r\n
    NombrePunto de VentaEstatusAcciones
    {suc.Nombre}{suc.NombreNuevo}\r\n \r\n \r\n \r\n \r\n setState({ ...state, modalVisible: true, sucursalSelected: suc })}\r\n >\r\n Editar\r\n \r\n
    \r\n : \r\n }\r\n setState({ ...state, pages: suc })}\r\n />\r\n
    \r\n
    \r\n { state.modalVisible &&\r\n handleUpdateList( data ) }\r\n sucursal={state.sucursalSelected}\r\n onClose={ () => setState({...state, modalVisible: false, sucursalSelected: {}}) }\r\n />\r\n }\r\n
    \r\n )\r\n}","import React, { useEffect, useState } from 'react';\r\n\r\n// Components\r\nimport Modal from '../util/modal/Modal';\r\nimport Select from 'react-select';\r\n\r\nimport NoItems from '../util/noitems/NoItems';\r\nimport Loader from '../util/loading/Loading';\r\nimport { toast } from 'react-toastify';\r\n\r\n// Services\r\nimport PlazasAPI from '../../services/Plazas';\r\nimport Pagination from '../util/pagination/Pagination';\r\n\r\n\r\n/**\r\n * \r\n * @param {Object} userInfo - Datos del usuario seleccionado \r\n * @param {Array} listPlazas - Lista de plazas\r\n * @param {Function} onClose - Cierre del modal\r\n * @param {Function} onSave - Guardado de la info\r\n * @returns Component\r\n */\r\nexport const ModalEditUsuario = ({\r\n userInfo = {},\r\n onClose,\r\n onSave\r\n}) => {\r\n\r\n const [ state, setState ] = useState({\r\n listPlazas: [],\r\n initialListPlazas: [],\r\n userPlazas: [],\r\n pageUserPlazas: [],\r\n listPlazasSelected: [],\r\n pagePlazasSelected: [],\r\n isLoading: false\r\n });\r\n\r\n useEffect(() => {\r\n setState({ ...state, isLoading: true });\r\n let userPlazas = [];\r\n let listPlazas = [];\r\n let tempListPlazas = [];\r\n\r\n PlazasAPI.getUserPlazas( userInfo.UserId )\r\n .then(res => {\r\n tempListPlazas = res.data.map(pla => pla.idPlaza);\r\n userPlazas = res.data;\r\n return PlazasAPI.getUserPlazas( userInfo.UserId, true );\r\n }).then(res => {\r\n let tempPlazas = res.data.map( item => {\r\n return {\r\n value: item.idPlaza,\r\n label: item.Nombre\r\n }\r\n });\r\n listPlazas = tempPlazas.filter(pla => !tempListPlazas.includes(pla.value));\r\n }).catch( err => {\r\n let message = 'Ocurrio un error';\r\n try {\r\n message = err.response.data.Message;\r\n } catch (error) {\r\n message = 'Ocurrio un error al obtener a los empleados';\r\n } finally {\r\n toast.error(message);\r\n }\r\n })\r\n .finally(() => setState({\r\n ...state,\r\n userPlazas,\r\n pageUserPlazas: userPlazas,\r\n isLoading: false,\r\n listPlazas: listPlazas,\r\n initialListPlazas: listPlazas\r\n }));\r\n }, []);\r\n\r\n /**\r\n * Guarda la información con las plazas asignadas.\r\n */\r\n const handleSaveInfo = () => {\r\n if (\r\n state.listPlazasSelected === null ||\r\n !state.listPlazasSelected\r\n )\r\n return toast.warn(\"No se han asignado plazas.\");\r\n const data = {\r\n UserId: userInfo.UserId,\r\n Plazas: state.listPlazasSelected.map(pla => pla.value)\r\n }\r\n setState({ ...state, isLoading: true });\r\n PlazasAPI.updateUserPlazas( data )\r\n .then(res => {\r\n setState({...state, isLoading: false});\r\n onSave( res.data );\r\n })\r\n .catch(() => toast.error('Ocurrio un error al guardar la información'));\r\n }\r\n\r\n /**\r\n * Manejo de la plaza seleccionada.\r\n * @param {Object} items - Plaza seleccionada.\r\n */\r\n const handleChangePlaza = items => {\r\n\r\n state.listPlazasSelected = [];\r\n let listTempPlazas = state.listPlazas;\r\n\r\n items.map((item) =>\r\n {\r\n if ( !state.listPlazasSelected.find( pla => pla.value === item.value ) ) {\r\n listTempPlazas = listTempPlazas.filter( pla => pla.value !== item.value );\r\n state.listPlazasSelected = [ ...state.listPlazasSelected, item ];\r\n }\r\n }\r\n );\r\n\r\n setState({\r\n ...state,\r\n listPlazas: listTempPlazas,\r\n listPlazasSelected: state.listPlazasSelected\r\n });\r\n \r\n }\r\n\r\n /**\r\n * Elimina la relacion de usuario plaza.\r\n * @param { Number } idPlaza - Id de la plaza a eliminar.\r\n * @param { Boolean } notAsignated - Lista de no asignadas.\r\n */\r\n const handleDeletePlaza = ( idPlaza, notAsignated = false ) => {\r\n if ( notAsignated ) {\r\n let finalListPlazas = state.listPlazasSelected.filter( pla => pla.value !== idPlaza);\r\n let listTempPlazas = state.initialListPlazas.find( pla => pla.value === idPlaza );\r\n let plazas = [];\r\n if ( listTempPlazas )\r\n plazas = [ { ...listTempPlazas }, ...state.listPlazas ];\r\n else\r\n plazas = [ ...state.listPlazas ];\r\n setState({\r\n ...state,\r\n listPlazasSelected: finalListPlazas,\r\n listPlazas: plazas\r\n });\r\n } else {\r\n setState({ ...state, isLoading: true });\r\n let listPlazas = [ ...state.userPlazas ];\r\n const data = {\r\n UserId: userInfo.UserId,\r\n PlazaId: idPlaza\r\n }\r\n PlazasAPI.deleteUserPlaza( data )\r\n .then(() => {\r\n listPlazas = state.userPlazas.filter( pla => pla.idPlaza !== idPlaza )\r\n toast.success(\"Información de plazas actualizada\");\r\n })\r\n .catch(() => toast.error('Ocurrio un error al guardar la información'))\r\n .finally(() => setState({\r\n ...state,\r\n isLoading: false,\r\n userPlazas: listPlazas\r\n }));\r\n }\r\n\r\n }\r\n\r\n return (\r\n onClose()}\r\n >\r\n { state.isLoading &&\r\n \r\n }\r\n
    \r\n
    \r\n
    \r\n \r\n

    {`${userInfo.Name} ${userInfo.LastName}`}

    \r\n
    \r\n
    \r\n \r\n

    {userInfo.Email}

    \r\n
    \r\n
    \r\n \r\n

    {userInfo.Roles ? userInfo.Roles : 'Sin Roles'}

    \r\n
    \r\n
    \r\n
    \r\n
    \r\n
    \r\n
    \r\n \r\n handleChangePlaza(item)}\r\n noOptionsMessage={() => \"No hay opciones\"}\r\n options={ state.listPlazas }\r\n className=\"basic-multi-select\"\r\n classNamePrefix=\"select\"\r\n />\r\n
    \r\n
    \r\n
    \r\n
    \r\n
    \r\n
    \r\n
    \r\n \r\n
    \r\n
    \r\n
    \r\n
    \r\n
    \r\n \r\n {/* Tabla de Usuarios */}\r\n
    \r\n
    \r\n {\r\n state.pageUserPlazas.length !== 0 ?\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n {\r\n state.pageUserPlazas.map(plaza =>\r\n \r\n \r\n \r\n \r\n )\r\n }\r\n \r\n
    PlazaAcciones
    {`${plaza.Nombre}` }\r\n \r\n
    \r\n : \r\n } \r\n setState({ ...state, pageUserPlazas: userPlazas })}\r\n />\r\n \r\n
    \r\n
    \r\n \r\n
    \r\n
    \r\n
    \r\n
    \r\n
    \r\n
    \r\n
    \r\n \r\n Cerrar\r\n \r\n \r\n Aplicar Asignación\r\n \r\n
    \r\n
    \r\n
    \r\n \r\n )\r\n};","import * as React from 'react';\r\nimport FieldAddons from '../field/Field+Addons';\r\n\r\nclass SearchFormV5 extends React.Component {\r\n\r\n timer = null;\r\n propName = null\r\n\r\n constructor(props) {\r\n super(props);\r\n this.state = {\r\n fetching: false,\r\n nameSearch: \"\",\r\n activate: props.activate\r\n }\r\n \r\n this.propName = this.props.name;\r\n }\r\n\r\n // Se registra un escuchador del input de tipo Search\r\n componentDidMount() {\r\n document.addEventListener(\"search\", (e) => {\r\n this.setState({ nameSearch: e.target.value }, () => {\r\n this.props.search(e.target.value);\r\n })\r\n\r\n }, false);\r\n\r\n }\r\n // Se elimina el escuchador.\r\n componentWillUnmount() {\r\n document.removeEventListener(\"search\", () => { }, false);\r\n }\r\n\r\n \r\n onChangeCheckbox() {\r\n var activate = !this.state.activate;\r\n this.setState({ activate: activate }, () => {\r\n this.props.activateSearch(activate);\r\n })\r\n }\r\n\r\n render() {\r\n // Manipulación del nombre recibido por props en caso de ser necesario la restauración de búsqueda y página actual en tabla\r\n if (this.propName && this.state.nameSearch !== this.propName) {\r\n this.setState({ nameSearch: this.propName }, () => this.propName = null)\r\n }\r\n return (\r\n
    \r\n
    \r\n
    \r\n
    \r\n
    \r\n
    \r\n

    \r\n \r\n {\r\n let nameSearch = { ...this.state.nameSearch };\r\n nameSearch = e.currentTarget.value;\r\n nameSearch = nameSearch.replace(/\\s{2,}/g, ' ');\r\n // Se elimina el timer en caso de que el usuario siga tecleando\r\n if (this.timer) clearTimeout(this.timer);\r\n this.setState({ nameSearch: nameSearch }, () => {\r\n // Cuando el usuario termina de escribir se hace la petición de búsqueda\r\n this.timer = setTimeout(() => this.props.search(nameSearch), 500);\r\n });\r\n }}\r\n />\r\n \r\n

    \r\n
    \r\n\r\n
    \r\n\r\n
    \r\n
    \r\n
    \r\n
    \r\n )\r\n }\r\n}\r\n\r\nexport default SearchFormV5;","import { apiUrl } from \"../constants\";\r\nimport axios from 'axios';\r\nimport middleware from '../middleware/auth';\r\nimport { stringify } from \"querystring\";\r\n\r\nvar request = axios.create({\r\n baseURL: apiUrl,\r\n headers: {'Authorization': 'Bearer ' + localStorage.getItem('token'),'Content-Type':'application/json'}\r\n});\r\n\r\n/**\r\n * Servicio para el recurso de Usuarios\r\n */\r\nexport default class UsersAPI {\r\n /**\r\n * Obtiene a los usuarios de Caffenio Auth con acceso a SAG\r\n * @returns Promise\r\n */\r\n static getUsers( filters = {} ) {\r\n return middleware.hasAuth(() => request.get(`/Users?${stringify(filters)}`));\r\n }\r\n}","import React, { useEffect, useState } from 'react';\r\n\r\n// Components\r\nimport Pagination from '../util/pagination/Pagination';\r\nimport NoItems from '../util/noitems/NoItems';\r\nimport Loading from '../util/loading/Loading';\r\nimport Select from 'react-select';\r\nimport { toast } from 'react-toastify';\r\nimport { ModalEditUsuario } from './ModalEditUsuario';\r\n\r\nimport SearchFormV5 from '../util/searchform/SearchFormV5';\r\n\r\n// Servicios\r\nimport UsersAPI from '../../services/Users';\r\n\r\n\r\n/**\r\n * Modulo de administración de usuarios con acceso desde Auth a la plataforma SAG.\r\n * @returns Component\r\n */\r\nexport const AdminUsuarios = ({history}) => {\r\n\r\n const [ state, setState ] = useState({\r\n filters: {},\r\n users: [],\r\n userSelected: {},\r\n plazas: [],\r\n roles: [],\r\n pages: [],\r\n detailVisible: false,\r\n isLoading: false\r\n });\r\n const [nameSearch, setNameSearch] = useState(\"\");\r\n const [activate,setActivate] = useState(false);\r\n const [currentPage, setCurrentPage] = useState(1);\r\n\r\n useEffect(() => {\r\n // Carga de datos iniciales\r\n let listUsers = [];\r\n setState({\r\n ...state,\r\n isLoading: true\r\n });\r\n\r\n UsersAPI.getUsers()\r\n .then(res => listUsers = res.data)\r\n .catch(err =>{\r\n let message = 'Ocurrio un error';\r\n try {\r\n message = err.response.data.Message;\r\n } catch (error) {\r\n message = 'Ocurrio un error al obtener a los empleados';\r\n } finally {\r\n toast.error(message);\r\n setState({ ...state, isLoading: false });\r\n }\r\n })\r\n .finally( () => {\r\n setState({\r\n ...state,\r\n isLoading: false,\r\n users: listUsers\r\n });\r\n });\r\n },[]);\r\n\r\n /**\r\n * Muestra modal de detalle de usuario.\r\n * @param {Object} userSelected - Info del usuario seleccionado\r\n */\r\n const selectUser = userSelected => {\r\n setState({\r\n ...state,\r\n detailVisible: true,\r\n userSelected\r\n });\r\n }\r\n\r\n /**\r\n * Manejo de cambio en el input.\r\n * @param {Event} e - Evento de cambio en el input.\r\n */\r\n const handleChangeName = e => {\r\n setState({\r\n ...state,\r\n filters: {\r\n ...state.filters,\r\n name: e.target.value\r\n }\r\n });\r\n }\r\n\r\n /**\r\n * Filtra los usuarios segun los parametros mandados.\r\n */\r\n const handleFilterUsers = (name) => {\r\n setState({...state, isLoading: true});\r\n let listUsers = [];\r\n let filters = {};\r\n if ( name )\r\n filters.name = name.toLowerCase().normalize(\"NFD\").replace(/[\\u0300-\\u036f]/g, \"\").trim();\r\n else if ( name === \"\" )\r\n delete filters.name\r\n\r\n UsersAPI.getUsers({ ...filters })\r\n .then(res => listUsers = res.data)\r\n .catch(err =>{\r\n let message = 'Ocurrio un error';\r\n try {\r\n message = err.response.data.Message;\r\n } catch (error) {\r\n message = 'Ocurrio un error al obtener a los empleados';\r\n } finally {\r\n toast.error(message);\r\n setState({ ...state, isLoading: false });\r\n }\r\n })\r\n .finally( () => {\r\n setState({\r\n ...state,\r\n isLoading: false,\r\n users: listUsers\r\n });\r\n });\r\n }\r\n\r\n /**\r\n * Limpiado de los filtros.\r\n */\r\n const handleCleanFilters = () => {\r\n if (Object.toString(state.filters) === '{}')\r\n return;\r\n setState({...state, isLoading: true});\r\n let listUsers = [];\r\n\r\n UsersAPI.getUsers()\r\n .then(res => listUsers = res.data)\r\n .catch(err =>{\r\n let message = 'Ocurrio un error';\r\n try {\r\n message = err.response.data.Message;\r\n } catch (error) {\r\n message = 'Ocurrio un error al obtener a los empleados';\r\n } finally {\r\n toast.error(message);\r\n setState({ ...state, isLoading: false });\r\n }\r\n })\r\n .finally( () => {\r\n setState({\r\n ...state,\r\n isLoading: false,\r\n users: listUsers,\r\n filters: {\r\n name: ''\r\n }\r\n });\r\n });\r\n }\r\n\r\n /**\r\n * Actualiza la informacion de los usuarios con los datos nuevos\r\n * al asignar plazas.\r\n * @param {Object} infoUpdated - Info del usuario actualizado.\r\n */\r\n const updateUsersList = infoUpdated => {\r\n // Carga de datos iniciales\r\n let listUsers = [];\r\n setState({\r\n ...state,\r\n isLoading: true\r\n });\r\n\r\n UsersAPI.getUsers()\r\n .then(res => listUsers = res.data)\r\n .catch(err =>{\r\n let message = 'Ocurrio un error';\r\n try {\r\n message = err.response.data.Message;\r\n } catch (error) {\r\n message = 'Ocurrio un error al obtener a los empleados';\r\n } finally {\r\n toast.error(message);\r\n setState({ ...state, isLoading: false });\r\n }\r\n })\r\n .finally( () => {\r\n setState({\r\n ...state,\r\n isLoading: false,\r\n users: listUsers,\r\n detailVisible: false\r\n });\r\n toast.success(\"Información actualizada\");\r\n });\r\n }\r\n\r\n return(\r\n
    \r\n

    Administración de Usuarios

    \r\n { state.isLoading &&\r\n \r\n }\r\n
    \r\n {/* Filtros */} \r\n handleFilterUsers(text)}\r\n name={nameSearch}\r\n tooltip={\"Crear una nueva promoción\"}\r\n newBtnTitle={\"Nueva promoción\"}\r\n activate={activate}\r\n activateSearch={(value) => setActivate(value)}\r\n />\r\n
    \r\n {/* Tabla de Usuarios */}\r\n
    \r\n
    \r\n {\r\n state.users.length !== 0 ?\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n {\r\n state.pages.map(user =>\r\n \r\n \r\n \r\n \r\n \r\n \r\n )\r\n }\r\n \r\n
    NombreCorreoRolAcciones
    {`${user.Name} ${user.LastName}` }{ user.Email }{ user.Roles }\r\n \r\n
    \r\n : \r\n }\r\n setState({ ...state, pages: users })}\r\n />\r\n
    \r\n
    \r\n {state.detailVisible &&\r\n updateUsersList( updatedInfo ) }\r\n onClose={() => setState({...state, detailVisible: false})}\r\n />\r\n }\r\n
    \r\n )\r\n}","import React, { Component } from 'react';\r\nimport Field from '../../util/field/Field';\r\nimport ErrorMessages from '../../../util/validation-error-messages';\r\nimport ExpresionesRegulares from '../../../util/expresiones-regulares';\r\nimport '../../cssComponents.css';\r\nimport { Formik } from 'formik';\r\nimport * as Yup from 'yup';\r\nimport lodash from 'lodash';\r\n\r\n\r\nclass PromoCopyForm extends Component {\r\n\r\n constructor(props) {\r\n super(props);\r\n this.state = {\r\n promo: { ...this.props.promo },\r\n \r\n }\r\n }\r\n\r\n \r\n\r\n VALIDATION_SCHEMA = Yup.object({\r\n Name: Yup.string()\r\n .trim()\r\n .matches(ExpresionesRegulares.AlfanumericoSinEspeciales, { message: ErrorMessages.AlfanumericoSinEspecialesError })\r\n .min(3, \"Nombre debe tener más de 2 caracteres.\")\r\n .max(100, \"Ha excedido el límite de 100 caracteres.\")\r\n .required(\"Campo Nombre es requerido.\")\r\n .test(\"validate-name\", \"El Nombre ya existe, favor de ingresar otro.\", (value) => {\r\n let isValid = true;\r\n let name = value ? value.toLowerCase().trim() : \"\";\r\n if (this.props.promotions.some(u => u.Name.toLowerCase().trim() === name && u.IdPromocion !== this.state.promo.IdPromocion)) {\r\n isValid = false;\r\n }\r\n return isValid;\r\n }),\r\n \r\n \r\n });\r\n\r\n\r\n\r\n render() {\r\n return (\r\n {\r\n let formatValues = {...values}\r\n formatValues.Name = formatValues.Name.trim();\r\n formatValues.ShortName = formatValues.ShortName.substring(0,40);\r\n formatValues.Description = formatValues.Name.trim();\r\n formatValues.UserId = localStorage.getItem(\"user\");\r\n this.props.save(formatValues)\r\n }}\r\n >\r\n {({ values, touched, errors, handleChange, handleBlur, handleSubmit, setFieldValue, setFieldTouched, setFieldError }) => (\r\n
    \r\n \r\n \r\n \r\n
    \r\n
    \r\n
    \r\n \r\n
    \r\n
    \r\n \r\n )}\r\n\r\n \r\n );\r\n }\r\n}\r\n\r\n\r\n\r\nexport default PromoCopyForm;\r\n","import React, { Component } from 'react';\r\nimport Field from '../../util/field/Field';\r\nimport ErrorMessages from '../../../util/validation-error-messages';\r\nimport ExpresionesRegulares from '../../../util/expresiones-regulares';\r\nimport '../../cssComponents.css';\r\nimport { Formik } from 'formik';\r\nimport * as Yup from 'yup';\r\nimport NoItems from \"../../util/noitems/NoItems\";\r\n\r\n/***\r\n * Formulario para vsualizar los comentarios de una promoción\r\n */\r\nclass PromoCommentsForm extends Component {\r\n\r\n constructor(props) {\r\n super(props);\r\n this.state = {\r\n promo: this.props.promo, \r\n readOnly: this.props.readOnly \r\n }\r\n }\r\n\r\n VALIDATION_SCHEMA = Yup.object({\r\n CurrentComment: Yup.string()\r\n .trim()\r\n .matches(ExpresionesRegulares.AlfanumericoConCaracteres, { message: ErrorMessages.AlfanumericoConCaracteresError })\r\n .min(3, \"El comentario debe tener más de 2 caracteres.\")\r\n .max(200, \"Ha excedido el límite de 200 caracteres.\")\r\n .required(\"Campo comentario es requerido.\")\r\n });\r\n\r\n loadComments=()=>{\r\n return(\r\n this.state.promo && this.state.promo.Comments.length > 0\r\n ?\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n {this.state.promo.Comments.map((item, index) => {\r\n return (\r\n \r\n \r\n \r\n \r\n \r\n )\r\n })}\r\n \r\n
    ObservaciónFecha
    {index+1}{item.Description}{`${item.CreatedAt.split('T')[0]}`}
    \r\n\r\n : \r\n )\r\n }\r\n\r\n render() {\r\n return (\r\n !this.state.readOnly ?\r\n {\r\n let today = new Date();\r\n let formatValues = {...values}\r\n formatValues.IdPromo = this.state.promo.IdPromocion;\r\n formatValues.IdUser = localStorage.getItem(\"user\") ;\r\n formatValues.Active = true;\r\n formatValues.CreatedAt = today.toISOString();\r\n formatValues.Description = values.CurrentComment;\r\n this.props.save(formatValues)\r\n }}\r\n >\r\n {({ values, touched, errors, handleChange, handleBlur, handleSubmit, setFieldValue, setFieldTouched, setFieldError }) => (\r\n
    \r\n \r\n \r\n \r\n
    \r\n {this.loadComments()}\r\n \r\n
    \r\n
    \r\n
    \r\n this.props.cancel()}\r\n >\r\n Cancelar\r\n \r\n \r\n \r\n
    \r\n
    \r\n \r\n \r\n \r\n )}\r\n\r\n \r\n :this.loadComments()\r\n );\r\n }\r\n}\r\n\r\n\r\n\r\nexport default PromoCommentsForm;\r\n","\r\nimport {apiUrl} from '../constants';\r\nimport axios from 'axios';\r\nimport { stringify } from 'querystring';\r\nvar request = axios.create({\r\n baseURL: apiUrl,\r\n headers: {'Authorization':'Bearer ' + localStorage.getItem('token'),'Content-Type':'application/json'}\r\n})\r\n\r\nexport default class DrivePromotionsAPI{\r\n\r\n /**\r\n * Obtienen todo el listado de promociones\r\n */\r\n static getAll(){\r\n return request.get('/Promotions/');\r\n }\r\n\r\n /**\r\n * Obtienen listado de promociones por parametros\r\n */\r\n static getByParams(params){\r\n return request.get(`/Promotions/params?${stringify({...params})}`);\r\n }\r\n\r\n /**\r\n * Crea una promoción.\r\n * @param { Object } data - Informacion de la promoción \r\n * @returns Promise\r\n */\r\n static create( data ) {\r\n return request.post( '/Promotions/', data );\r\n }\r\n\r\n /**\r\n * Obtiene promocion por id\r\n * @param { Object } idPromo - Informacion de la promoción\r\n * @returns Promise\r\n */\r\n static get( id) {\r\n return request.get( `/Promotions/${id}` );\r\n }\r\n\r\n /**\r\n * Actualiza promocion id \r\n * @param { Object } id - identificador de la promocion\r\n * @param { Object } newData - información actualizada\r\n * @returns Promise\r\n */\r\n static update( id, newData ) {\r\n return request.put( `/Promotions/${id}`,newData );\r\n }\r\n\r\n /**\r\n * Cambia el estatus de una promoción \r\n * @param {*} id identificador de la promoción \r\n * @param {*} newStatus nuevo estatus \r\n */\r\n static updateStatus(id, newStatus){\r\n return request.patch( `/Promotions/${id}/${newStatus}`);\r\n }\r\n}","\r\nimport {apiUrl} from '../constants';\r\nimport axios from 'axios';\r\nvar request = axios.create({\r\n baseURL: apiUrl,\r\n headers: {'Authorization':'Bearer ' + localStorage.getItem('token'),'Content-Type':'application/json'}\r\n})\r\n\r\nexport default class DrivePromotionsStatusAPI{\r\n\r\n /**\r\n * Obtienen todo el listado de promociones\r\n */\r\n static getAll(){\r\n return request.get('/PromotionStatus/');\r\n }\r\n\r\n /**\r\n * Crea una promoción.\r\n * @param { Object } data - Informacion de la promoción \r\n * @returns Promise\r\n */\r\n static create( data ) {\r\n return request.post( '/PromotionStatus/', data );\r\n }\r\n\r\n /**\r\n * Obtiene promocion por id\r\n * @param { Object } idPromo - Informacion de la promoción\r\n * @returns Promise\r\n */\r\n static get( id) {\r\n return request.get( `/PromotionStatus/${id}` );\r\n }\r\n\r\n /**\r\n * Actualiza promocion id \r\n * @param { Object } id - identificador de la promocion\r\n * @param { Object } newData - información actualizada\r\n * @returns Promise\r\n */\r\n static update( id, newData ) {\r\n return request.put( `/PromotionStatus/${id}`,newData );\r\n }\r\n}","\r\nimport {apiUrl} from '../constants';\r\nimport axios from 'axios';\r\nvar request = axios.create({\r\n baseURL: apiUrl,\r\n headers: {'Authorization':'Bearer ' + localStorage.getItem('token'),'Content-Type':'application/json'}\r\n})\r\n\r\nexport default class DrivePromotionCommentsAPI{\r\n\r\n /**\r\n * Obtienen todo el listado de promociones\r\n */\r\n static getAll(idPromo){\r\n return request.get(`/PromotionComment/${idPromo}`);\r\n }\r\n\r\n /**\r\n * Crea una promoción.\r\n * @param { Object } data - Informacion de la promoción \r\n * @returns Promise\r\n */\r\n static create( data ) {\r\n return request.post( '/PromotionComment/', data );\r\n }\r\n\r\n /**\r\n * Obtiene promocion por id\r\n * @param { Object } idPromo - Id de la promoción\r\n * @param { Object } idComment - Id del comentario\r\n * @returns Promise\r\n */\r\n static get( idPromo, idComment) {\r\n return request.get( `/PromotionComment/${idPromo}/${idComment}` );\r\n }\r\n\r\n /**\r\n * Actualiza promocion id \r\n * @param { Object } id - identificador de la promocion\r\n * @returns Promise\r\n */\r\n static update( newData) {\r\n return request.put( `/PromotionComment`, newData );\r\n }\r\n}","\r\nimport {apiUrl} from '../constants';\r\nimport axios from 'axios';\r\nvar request = axios.create({\r\n baseURL: apiUrl,\r\n headers: {'Authorization':'Bearer ' + localStorage.getItem('token'),'Content-Type':'application/json'}\r\n})\r\n\r\nexport default class DrivePromotionsTypeAPI{\r\n\r\n /**\r\n * Obtienen todo el listado de promociones\r\n */\r\n static getAll(){\r\n return request.get('/PromotionTypes/');\r\n }\r\n\r\n /**\r\n * Crea una promoción.\r\n * @param { Object } data - Informacion de la promoción \r\n * @returns Promise\r\n */\r\n static create( data ) {\r\n return request.post( '/PromotionTypes/', data );\r\n }\r\n\r\n /**\r\n * Obtiene promocion por id\r\n * @param { Object } idPromo - Informacion de la promoción\r\n * @returns Promise\r\n */\r\n static get( id) {\r\n return request.get( `/PromotionTypes/${id}` );\r\n }\r\n\r\n /**\r\n * Actualiza promocion id \r\n * @param { Object } id - identificador de la promocion\r\n * @param { Object } newData - información actualizada\r\n * @returns Promise\r\n */\r\n static update( id, newData ) {\r\n return request.put( `/PromotionTypes/${id}`,newData );\r\n }\r\n}","\r\nimport React, { Component } from 'react';\r\nimport { toast } from 'react-toastify';\r\nimport lodash from 'lodash';\r\nimport moment from 'moment';\r\nimport { Link } from 'react-router-dom';\r\nimport DatePicker, {registerLocale} from 'react-datepicker';\r\nimport es from 'date-fns/locale/es';\r\n// Components\r\nimport AcceptModal from '../util/acceptModal/AcceptModal';\r\nimport NoItems from \"../util/noitems/NoItems\";\r\nimport Pagination from '../util/pagination/Pagination';\r\nimport Loading from '../util/loading/Loading';\r\nimport ErrorMessages from '../../util/validation-error-messages';\r\nimport Modal from '../util/modal/Modal';\r\nimport Select from 'react-select';\r\nimport HasAccess from '../util/hasAccess/HasAccess';\r\nimport PromoCopyForm from './components/PromoCopyForm';\r\nimport PromoCommentsForm from './components/PromoComentsForm';\r\n\r\n// Services\r\nimport DrivePromotionsAPI from '../../services/DrivePromotions';\r\nimport DrivePromotionsStatusAPI from '../../services/DrivePromotionsStatus';\r\nimport DrivePromotionCommentsAPI from '../../services/DrivePromotionComments';\r\nimport roles from '../../util/strings/roles';\r\nimport DrivePromotionsTypeAPI from '../../services/DrivePromotionsType';\r\nimport { select } from 'async';\r\n\r\nregisterLocale(\"es\", es); \r\n/**\r\n * Vista del módulo de promociones \r\n */\r\nclass PromosDrive extends Component {\r\n state = {\r\n isLoading: false,\r\n page: [],\r\n promotions: [],\r\n filterPromotions: [],\r\n selectedPromotion: {},\r\n arrStatusPromos: [],\r\n arrTypePromos:[],\r\n showModal: false,\r\n filterText:'',\r\n filters:{},\r\n isEditing:false,\r\n //Modal de confirmación\r\n showModalConfirm: false,\r\n actionTitle: '',\r\n actionBody: '',\r\n actionOnConfirm: () => { },\r\n actionOnCancel: () => { },\r\n isAdmin:false\r\n }\r\n\r\n componentDidMount() {\r\n this.setState({ isLoading: true }, () => {\r\n let rolesStorage = localStorage.getItem('role').split(',');\r\n let state = { ...this.state }\r\n state.isAdmin = rolesStorage.includes(roles.ADMIN);\r\n if(!state.isAdmin){\r\n state.isAdmin = rolesStorage.includes(roles.MKT_OS);\r\n }\r\n console.log(state.isAdmin)\r\n DrivePromotionsStatusAPI.getAll()\r\n .then(response => {\r\n state.arrStatusPromos = response.data.map(d=>{\r\n d.label = d.Name;\r\n d.value = d.IdStatusPromo;\r\n return d;\r\n });\r\n\r\n return DrivePromotionsTypeAPI.getAll();\r\n \r\n\r\n })\r\n .then(response=>{\r\n state.arrTypePromos = response.data.map(d=>{\r\n d.label = d.Name;\r\n d.value = d.IdTypePromo;\r\n return d;\r\n });\r\n this.setState(state, () => this.getPromotionsData())\r\n })\r\n .catch(err => {\r\n if (err.response)\r\n toast.error(err.response.code !== 500 ? err.response.data : ErrorMessages.ErrorInesperado)\r\n else\r\n toast.error(ErrorMessages.SinConexion)\r\n }).finally(() => this.setState({ isLoading: false }));\r\n })\r\n }\r\n\r\n /***\r\n * Carga listado de promosiones \r\n */\r\n getPromotionsData = (filters = null) => {\r\n this.setState({ isLoading: true }, () => {\r\n let today = moment(new Date()).toISOString();\r\n console.log(\"today >>> \", today)\r\n let statusVencido = this.state.arrStatusPromos.filter(x => x.ShortName === 'R');\r\n if (filters){\r\n DrivePromotionsAPI.getByParams(filters)\r\n .then(response => {\r\n let state = { ...this.state } \r\n let formatData = response.data.map(d => {\r\n let status = state.arrStatusPromos.filter(x => x.IdStatusPromo === d.idEstatus)\r\n if (status.length > 0) {\r\n status = status[0]\r\n }\r\n let isVencido = d.EndDate ? moment(new Date(d.EndDate)).isBefore(moment(today)) : false;\r\n d.InitDate = d.InitDate ? moment(new Date(d.InitDate)).format(\"YYYY/MM/DD\") : '';\r\n d.EndDate = d.EndDate ? moment(new Date(d.EndDate)).format(\"YYYY/MM/DD\") : '';\r\n if(isVencido){\r\n status = statusVencido[0]\r\n }\r\n \r\n d.Status = status ? status.Name : '';\r\n d.StatusColor = status ? status.Color : '';\r\n d.StatusShortName = status ? status.ShortName : '';\r\n \r\n return d\r\n })\r\n state.promotions = formatData;\r\n state.filterPromotions = formatData;\r\n state.page = formatData;\r\n this.setState(state)\r\n })\r\n .catch(err => {\r\n if (err.response)\r\n toast.error(err.response.code !== 500 ? err.response.data : ErrorMessages.ErrorInesperado)\r\n else\r\n toast.error(ErrorMessages.SinConexion)\r\n }).finally(() => this.setState({ isLoading: false }));\r\n\r\n }else{\r\n DrivePromotionsAPI.getAll()\r\n .then(response => {\r\n let state = { ...this.state }\r\n state.filters = {};\r\n let formatData = response.data.map(d => { \r\n let status = state.arrStatusPromos.filter(x => x.IdStatusPromo === d.idEstatus)\r\n if (status.length > 0) {\r\n status = status[0]\r\n }\r\n let isVencido = d.EndDate ? moment(new Date(d.EndDate)).isBefore(moment(today)) : false;\r\n d.InitDate = d.InitDate ? moment(new Date(d.InitDate)).format(\"YYYY/MM/DD\") : '';\r\n d.EndDate = d.EndDate ? moment(new Date(d.EndDate)).format(\"YYYY/MM/DD\") : '';\r\n \r\n if(isVencido){\r\n status = statusVencido[0]\r\n }\r\n \r\n d.Status = status ? status.Name : '';\r\n d.StatusColor = status ? status.Color : '';\r\n d.StatusShortName = status ? status.ShortName : '';\r\n \r\n return d\r\n })\r\n state.promotions = formatData;\r\n state.filterPromotions = formatData;\r\n state.page = formatData;\r\n this.setState(state)\r\n })\r\n .catch(err => {\r\n if (err.response)\r\n toast.error(err.response.code !== 500 ? err.response.data : ErrorMessages.ErrorInesperado)\r\n else\r\n toast.error(ErrorMessages.SinConexion)\r\n }).finally(() => this.setState({ isLoading: false }));\r\n }\r\n \r\n })\r\n\r\n }\r\n\r\n /**\r\n * Filtra coincidencias\r\n * @param {*} text \r\n */\r\n handleSearchInput = (text) => {\r\n let state = { ...this.state };\r\n state.filterText = text || '';\r\n state.filterPromotions = state.promotions.filter(p =>\r\n p.Name.toLowerCase().normalize(\"NFD\").replace(/[\\u0300-\\u036f]/g, \"\").includes(state.filterText.trim().toLowerCase().normalize(\"NFD\").replace(/[\\u0300-\\u036f]/g, \"\"))\r\n || state.filterText.trim().length === 0);\r\n state.page = state.promotions.filter(p =>\r\n p.Name.toLowerCase().normalize(\"NFD\").replace(/[\\u0300-\\u036f]/g, \"\").includes(state.filterText.trim().toLowerCase().normalize(\"NFD\").replace(/[\\u0300-\\u036f]/g, \"\"))\r\n || state.filterText.trim().length === 0);\r\n this.setState(state);\r\n }\r\n\r\n /**\r\n * Función para cambiar de estatus\r\n * @param {*} obj \r\n * @param {*} newStatus \r\n */\r\n changeStatus = (obj) => {\r\n this.setState({ isLoading: false })\r\n DrivePromotionsAPI\r\n .update(obj.IdPromocion, obj)\r\n .then(response => {\r\n //TODO: update promoción \r\n toast.success(\"Promoción actualizada conrrectamente\");\r\n\r\n })\r\n .catch(err => {\r\n if (err.response)\r\n toast.error(err.response.code !== 500 ? err.response.data : ErrorMessages.ErrorInesperado)\r\n else\r\n toast.error(ErrorMessages.SinConexion)\r\n })\r\n .finally(() => this.resetConfirmParams)\r\n }\r\n\r\n /**\r\n * Limpia los valores de editar una promoción\r\n */\r\n resetConfirmParams = () => { \r\n this.setState({\r\n selectedPromotion: {},\r\n showModalConfirm: false,\r\n actionTitle: '',\r\n actionBody: '',\r\n actionOnConfirm: () => { },\r\n actionOnCancel: () => { },\r\n isLoading: false\r\n })\r\n }\r\n\r\n /**\r\n * Configura vista para el estatus seleccionado\r\n * @param {*} e evento click\r\n * @param {*} action acción \r\n * @param {*} obj row\r\n */\r\n onActionSelect = (e, action, obj) => {\r\n e.stopPropagation();\r\n switch (action) {\r\n case 'Envíar':\r\n let estatusActivo = this.state.arrStatusPromos.filter(s => s.ShortName === 'V');\r\n if(estatusActivo && estatusActivo.length > 0){\r\n DrivePromotionsAPI.updateStatus(obj.IdPromocion, estatusActivo[0].IdStatusPromo).then(response => {\r\n toast.success(\"La promoción ha sido envíada a validación correctamente.\");\r\n this.setState({isLoading:true}, ()=>this.getPromotionsData());\r\n \r\n }).catch(err => {\r\n toast.error(err.response.code !== 500 ? err.response.data : ErrorMessages.ErrorInesperado)\r\n })\r\n }else{\r\n toast.error(\"Estatus error.\")\r\n }\r\n\r\n \r\n break;\r\n case 'Validar':\r\n let estatusValidacion = this.state.arrStatusPromos.filter(s => s.ShortName === 'A');\r\n if(estatusValidacion && estatusValidacion.length > 0){\r\n DrivePromotionsAPI.updateStatus(obj.IdPromocion, estatusValidacion[0].IdStatusPromo).then(response => {\r\n toast.success(\"La promoción ha sido validada correctamente.\");\r\n this.setState({isLoading:true}, ()=>this.getPromotionsData());\r\n }).catch(err => {\r\n toast.error(err.response.code !== 500 ? err.response.data : ErrorMessages.ErrorInesperado)\r\n })\r\n }else{\r\n toast.error(\"Estatus error.\")\r\n }\r\n\r\n\r\n break;\r\n case 'SolCambios':\r\n this.setState({isLoading:true, selectedPromotion:{...obj}, isEditing:false },\r\n () => {\r\n DrivePromotionCommentsAPI.getAll(this.state.selectedPromotion.IdPromocion)\r\n .then(response => {\r\n if(response.data){\r\n let selectedPromotion = {...this.state.selectedPromotion}\r\n selectedPromotion.Comments = response.data || [];\r\n selectedPromotion.CurrentComment =\"\";\r\n this.setState({\r\n showModalComments:true,\r\n selectedPromotion: selectedPromotion,\r\n isLoading:false\r\n })\r\n } \r\n })\r\n .catch(err => {\r\n if (err.response)\r\n toast.error(err.response.code !== 500 ? err.response.data : ErrorMessages.ErrorInesperado)\r\n else\r\n toast.error(ErrorMessages.SinConexion)\r\n })\r\n \r\n });\r\n \r\n break\r\n case 'Cancelar':\r\n this.setState({\r\n showModalConfirm:true,\r\n actionTitle:\"Confirmación requerida\",\r\n actionBody: `La promoció ${obj.Name} será cancelada, ¿ Desea continuar ?`,\r\n actionOnConfirm : () => {\r\n \r\n let estatusCancelado = this.state.arrStatusPromos.filter(s => s.ShortName === 'C'); \r\n if(estatusCancelado && estatusCancelado.length > 0){\r\n DrivePromotionsAPI.updateStatus(obj.IdPromocion, estatusCancelado[0].IdStatusPromo).then(response => {\r\n toast.success(\"La promoción ha sido cancelada conrrectamente.\");\r\n this.resetConfirmParams();\r\n this.setState({isLoading:true}, () => this.getPromotionsData());\r\n }).catch(err => {\r\n toast.error(err.response.code !== 500 ? err.response.data : ErrorMessages.ErrorInesperado)\r\n })\r\n }else{\r\n toast.error(\"Estatus error.\")\r\n }\r\n },\r\n actionOnCancel : () => this.resetConfirmParams()\r\n\r\n })\r\n \r\n break;\r\n case 'Copiar':\r\n let selected = {...obj}\r\n // let estatusCopy = this.state.arrStatusPromos.filter(s => s.ShortName === 'B');\r\n // selected.IdPromocion = 0;\r\n // selected.Name = `${obj.Name} Copy`;\r\n // selected.idEstatus = estatusCopy[0].IdStatusPromo;\r\n this.setState({\r\n showModal:true,\r\n selectedPromotion: {...selected}\r\n })\r\n break\r\n case 'Ver':\r\n this.setState({isLoading:true, selectedPromotion:{...obj}, isEditing:true },\r\n () => {\r\n DrivePromotionCommentsAPI.getAll(this.state.selectedPromotion.IdPromocion)\r\n .then(response => {\r\n if(response.data){\r\n let selectedPromotion = {...this.state.selectedPromotion}\r\n selectedPromotion.Comments = response.data || [];\r\n selectedPromotion.CurrentComment =\"\";\r\n this.setState({\r\n showModalComments:true,\r\n selectedPromotion: selectedPromotion,\r\n isLoading:false\r\n })\r\n } \r\n })\r\n .catch(err => {\r\n if (err.response)\r\n toast.error(err.response.code !== 500 ? err.response.data : ErrorMessages.ErrorInesperado)\r\n else\r\n toast.error(ErrorMessages.SinConexion)\r\n })\r\n \r\n });\r\n break\r\n default:\r\n toast.error(\"Acción sin configurar, contacte a soporte.\")\r\n }\r\n }\r\n\r\n /**\r\n * Función que actualiza la información de los filtros \r\n * @param {*} e evento\r\n * @param {*} name nombre del filtro que cambio \r\n */\r\n handleFilterChange = (val, name) => {\r\n \r\n let state = {...this.state}\r\n let filtersNotNULL = {};\r\n\r\n if(name === \"fromDatePromo\"){\r\n let formatDt = {};\r\n if (val)\r\n formatDt.value = val.toISOString();\r\n state.filters[name] = val ? formatDt.value : null;\r\n }else{\r\n state.filters[name] = val ? val.value : null;\r\n }\r\n \r\n state.filters[`${name}_selected`] = val;\r\n\r\n if(state.filters.statusPromo)\r\n filtersNotNULL.statusPromo = state.filters.statusPromo;\r\n if(state.filters.typePromo)\r\n filtersNotNULL.typePromo = state.filters.typePromo;\r\n if(state.filters.fromDatePromo)\r\n filtersNotNULL.fromDatePromo = state.filters.fromDatePromo;\r\n if(state.filterText.length > 0)\r\n filtersNotNULL.filterText = state.filterText\r\n \r\n this.setState(state, () => this.getPromotionsData(filtersNotNULL) )\r\n\r\n }\r\n\r\n /**\r\n * Redirige al formulario para editar promoción\r\n */\r\n EditPromo = (promo) => { \r\n this.setState({isLoading:true}, () => {\r\n \r\n this.props.history.push({pathname:`/promos/editar-promo`, state: { \r\n isEditing:true, \r\n IdPromocion: promo.IdPromocion\r\n \r\n } });\r\n \r\n }); \r\n \r\n }\r\n\r\n render() {\r\n return (\r\n
    \r\n

    Promociones Drive

    \r\n\r\n
    \r\n
    \r\n
    \r\n \r\n
    \r\n \r\n
    \r\n this.handleFilterChange(e, 'statusPromo')}\r\n noOptionsMessage={() => \"No hay opciones\"}\r\n options={this.state.arrStatusPromos}\r\n isClearable={true}\r\n />\r\n
    \r\n
    \r\n
    \r\n \r\n
    \r\n \"No hay opciones\"}\r\n options={this.listReembolsoTipo}\r\n onChange={(val) => { \r\n this.setByProducto(val && val.label ==='Por producto');\r\n setFieldValue('idTipoReembolso', val)\r\n }}\r\n onBlur={() => setFieldTouched('idTipoReembolso', true)}\r\n />\r\n
    \r\n
    \r\n {(errors.idTipoReembolso || touched.idTipoReembolso) &&\r\n
    \r\n {errors.idTipoReembolso ? \r\n errors.idTipoReembolso : \"\"}\r\n
    \r\n }\r\n
    \r\n
    \r\n\r\n
    \r\n \r\n
    \r\n \"No hay opciones\"}\r\n options={this.tipoRegalos}\r\n onChange={(val) => {\r\n setFieldValue('idTipoRegalo', val)\r\n }}\r\n onBlur={() => setFieldTouched('idTipoRegalo', true)}\r\n />\r\n
    \r\n {(errors.idTipoRegalo || touched.idTipoRegalo) &&\r\n
    \r\n {errors.idTipoRegalo ? errors.idTipoRegalo : \"\"}\r\n
    \r\n }\r\n
    \r\n
    \r\n
    \r\n\r\n
    \r\n
    \r\n }\r\n {\r\n ( values.idTipoReembolso && values.idTipoReembolso.label == 'Por producto') &&\r\n \r\n \r\n } \r\n \r\n {\r\n (values.idTipoReembolso && values.idTipoReembolso.label == 'Por recarga') &&\r\n \r\n \r\n }\r\n \r\n \r\n {\r\n (this.typePromotion === tipos.descuento || this.typePromotion === tipos.Combo || this.typePromotion === tipos.qrCustom ) ?\r\n :''\r\n \r\n \r\n }\r\n \r\n {\r\n values.checkCantidadMinima &&\r\n
    \r\n
    \r\n
    \r\n\r\n Cantidad mínima\r\n \r\n
    } \r\n alingLefth = {true}\r\n hasError={values.minProducts == 0}\r\n msgError={values.minProducts == 0? \"Ingrese valores mayores a 0.\": \r\n values.minProducts > 999999999 ? \"Ha excedido el límite de caracteres.\" : \"\"}>\r\n handleChange(e)}\r\n onKeyPress={this.onKeyPressNumber}\r\n\r\n />\r\n \r\n\r\n \r\n Se necesita esta cantidad mínima de productos
    \r\n para poder aplicar la promoción
    \r\n
    \r\n
    \r\n
    \r\n
    \r\n } \r\n\r\n
    \r\n
    \r\n
    \r\n \r\n
    \r\n \"No hay opciones\"}\r\n options={lodash.sortBy(aplicaPara, [ts => ts.label.toLowerCase()], ['asc'])}\r\n onChange={(val) => {\r\n this.selectedApp = val.findIndex(item => item.value == '2') >= 0 ? true :false\r\n setFieldValue('aplicaPara', val)\r\n }}\r\n onBlur={() => setFieldTouched('aplicaPara', true)}\r\n />\r\n
    \r\n
    \r\n {(errors.aplicaPara || touched.aplicaPara) &&\r\n
    \r\n {errors.aplicaPara ? errors.aplicaPara : \"\"}\r\n
    \r\n }\r\n
    \r\n
    \r\n
    \r\n
    \r\n \r\n \r\n {\r\n this.selectedApp &&\r\n
    \r\n
    \r\n
    \r\n Descripción en APP\r\n \r\n
    }\r\n alingLefth = {true} \r\n hasError={values.descripcionAPP == \"\"}\r\n msgError={values.descripcionAPP == \"\" ? \"Descripción es requerida\" : \"\"}\r\n showLeftSpaces={true}\r\n childInfo={values.descripcionAPP && !errors.descripcionAPP ? `Te quedan ${250 - values.descripcionAPP.trim().length} caracteres para la descripción.` : \"\"}\r\n >\r\n \r\n \r\n \r\n Nombre que aparece al ver el detalle de una promoción
    \r\n en el módulo de promociones de la aplicación móvil\r\n
    \r\n
    \r\n \r\n
    \r\n
    \r\n }\r\n \r\n
    \r\n
    \r\n
    \r\n
    \r\n
    \r\n
    \r\n {\r\n this.state.setValues(values)\r\n this.state.handleLastStep() } \r\n }\r\n >\r\n Anterior\r\n \r\n\r\n
    \r\n
    \r\n
    \r\n
    \r\n \r\n
    \r\n
    \r\n
    \r\n
    \r\n\r\n
    \r\n \r\n
    \r\n \r\n )} \r\n \r\n )\r\n }\r\n}\r\n\r\n\r\nexport default DetallePromo;\r\n","import React, { Component } from 'react';\r\n\r\nexport const PromoProductsTable = (props) => {\r\n return (\r\n <>\r\n {props.selectedProducts.map((item, index) => {\r\n return (\r\n
    \r\n
    \r\n {props.canDelete && \r\n \r\n props.handleDeleteProducto(index)} className=\"fa fa-trash\">\r\n \r\n }\r\n \r\n\r\n {props.isBaseApply &&
    \r\n props.setIsBase(index)}>\r\n
    }\r\n\r\n {props.showImage && \r\n
    \r\n {item.UrlImage ? : \"n/a\"}\r\n
    }\r\n
    \r\n
    {item.producto}
    \r\n

    \r\n {`${item.idTipoReceta && item.tipoReceta.toLowerCase() !== 'sin tipo' ? item.tipoReceta : ''}\r\n ${item.idTipoSabor && item.Sabor.toLowerCase() !== 'sin tipo' ? '-'+ item.Sabor : ''}\r\n ${item.idTipoGrano && item.Grano.toLowerCase() !== 'sin tipo' ? '-'+item.Grano : ''}\r\n ${item.idTipoLeche && item.Leche.toLowerCase() !== 'sin tipo' ? '-'+item.Leche : ''}\r\n ${item.idPresentacion && item.Presentacion.toLowerCase() !== 'sin tipo' && item.Presentacion.toLowerCase() !== 'sin presentación' ? '-'+item.Presentacion : ''}`}\r\n

    \r\n
    \r\n {props.getCadRecipesNumber != null ?
    \r\n

    \r\n {`${props.getCadRecipesNumber(item)} recetas`}\r\n

    \r\n
    :''}\r\n
    \r\n
    \r\n )\r\n })}\r\n \r\n )\r\n}","import React, { useEffect, useState } from 'react';\r\nimport RecipeTypesAPI from '../../services/RecipeType';\r\nimport PresentationsAPI from '../../services/Presentations';\r\nimport MilksAPI from '../../services/Milk';\r\nimport GrainsAPI from '../../services/Grain';\r\nimport FlavorsAPI from '../../services/Flavor';\r\nimport ClasificacionesAPI from '../../services/Classification';\r\nimport RecipesAPI from '../../services/Recipe';\r\nimport { toast } from 'react-toastify';\r\n\r\nimport NoItems from '../util/noitems/NoItems';\r\n\r\nimport Select from 'react-select';\r\nimport lodash from 'lodash';\r\n\r\nimport ErrorMessages from '../../util/validation-error-messages';\r\nimport Loading from '../util/loading/Loading';\r\nimport {PromoProductsTable} from './components/PromoProductsTable';\r\nimport EmpresasAPI from '../../services/CaffenioEmpresas/Empresas';\r\n\r\n\r\nconst subtitle = {\r\n textAlign: 'initial',\r\n padding: '10px 10px 10px 0',\r\n fontSize: '16px',\r\n color: 'gray'\r\n}\r\n\r\nexport function ProductosPromo({values, handleNextStep, handleLastStep , isBaseApply}) {\r\n \r\n const [ state, setState ] = useState({\r\n selectedRecipeTypes: null,\r\n selectedPresentations: null,\r\n selectedMilks: null,\r\n selectedGrains: null, \r\n selectedFlavors: null,\r\n recipes:[],\r\n recipeTypeList: [],\r\n milksList: [],\r\n grainsList: [],\r\n flavorsList: [],\r\n presentationsList: [],\r\n classificationList: [],\r\n selectedClassification: null,\r\n origClassificationList: [],\r\n origRecipeTypesList : [],\r\n origFlavorsList : [],\r\n origGrainsList : [],\r\n origMilksList : [],\r\n origPresentationList : [],\r\n selectedProducts : values,\r\n isLoading: false,\r\n segmentos: [],\r\n segmentoSeleccionado: null,\r\n });\r\n\r\n useEffect(() => {\r\n \r\n setState({...state,isLoading: true})\r\n RecipeTypesAPI.getAll().then(response => {\r\n let temp = [];\r\n \r\n response.data.map(obj => {\r\n if(obj.RecipeName) {\r\n temp.push({value: obj.RecipeTypeId, label: obj.RecipeName, ...obj})\r\n }else{\r\n temp.push({value: obj.RecipeTypeId, label: obj.Description, ...obj})\r\n }\r\n })\r\n temp.sort(compare); // Ordenar los labels para elegir\r\n state.recipeTypeList = temp;\r\n state.origRecipeTypesList = lodash.cloneDeep(temp)\r\n \r\n // Obtener todas las presentaciones\r\n return PresentationsAPI.getAll()\r\n }).then(response => {\r\n let tempPresentationList = [];\r\n response.data.map(obj => {\r\n if(obj.Active){\r\n tempPresentationList.push({value: obj.PresentationId, label: obj.Name, ...obj})\r\n } \r\n })\r\n tempPresentationList.sort(compare); // Ordenar los labels\r\n state.presentationsList = tempPresentationList\r\n state.origPresentationList = lodash.cloneDeep(tempPresentationList)\r\n\r\n // Obtener los tipos de leche\r\n return MilksAPI.getAll()\r\n }).then(response => {\r\n let tempMilkList = [];\r\n response.data.map(obj => {\r\n tempMilkList.push({value: obj.MilkTypeId, label: obj.Description, ...obj})\r\n })\r\n tempMilkList.sort(compare); // Ordenar los labels\r\n state.milksList = tempMilkList\r\n state.origMilksList = tempMilkList\r\n \r\n // Obtener los tipos de grano\r\n return GrainsAPI.getAll()\r\n }).then(response => {\r\n let tempGrainList = [];\r\n response.data.map(obj => {\r\n tempGrainList.push({value: obj.GrainTypeId, label: obj.Description, ...obj})\r\n })\r\n tempGrainList.sort(compare); // Ordenar los labels\r\n state.grainsList = tempGrainList\r\n state.origGrainsList = lodash.cloneDeep(tempGrainList)\r\n \r\n // Obtener los sabores\r\n return FlavorsAPI.getAll()\r\n }).then(response => {\r\n let tempFlavorsList = [];\r\n response.data.map(obj => {\r\n tempFlavorsList.push({value: obj.FlavorTypeId, label:obj.Name, ...obj})\r\n })\r\n tempFlavorsList.sort(compare); // Ordenar los labels \r\n state.flavorsList = tempFlavorsList\r\n state.origFlavorsList = tempFlavorsList\r\n \r\n // Obtener las clasificaciones\r\n return ClasificacionesAPI.getAll()\r\n }).then(response => {\r\n let tempClassification = [];\r\n response.data.map(obj => {\r\n tempClassification.push({value: obj.ClassificationId, label: obj.Name, ...obj})\r\n })\r\n tempClassification.sort(compare); // Ordenar los labels\r\n state.classificationList = tempClassification;\r\n state.origClassificationList = lodash.cloneDeep(tempClassification)\r\n state.selectedProducts.map(prod => {\r\n let fam = state.classificationList.filter(c=>c.ClassificationId === prod.idClasificacion); \r\n prod.UrlImage = fam ? fam[0].UrlImage : '';\r\n return prod\r\n })\r\n return RecipesAPI.getAll()\r\n \r\n }).then(response => {\r\n state.recipes = response.data\r\n return EmpresasAPI.getAllFilterSegments()\r\n }).then(response => {\r\n let segmentosAux = []\r\n response.data.map(obj => {\r\n segmentosAux.push({value: obj.SegmentId, label: obj.Name})\r\n })\r\n state.segmentos = segmentosAux\r\n state.isLoading = false;\r\n // Guardar el estado\r\n setState(state)\r\n })\r\n .catch(err => {\r\n setState({...state,isLoading: false})\r\n if(err.response)\r\n toast.error(err.response.data.Message)\r\n else\r\n toast.error(ErrorMessages.SinConexion)\r\n })\r\n },[]);\r\n\r\n const filterOptionsByClasification = () => {\r\n let clasificaciones = state.selectedClassification ? [state.selectedClassification.value] : []\r\n let recipeTypeListByClass = [];\r\n let flavorsListByClass = [];\r\n let grainsListByClass = [];\r\n let milksListByClass = [];\r\n let presentationsListByClass = [];\r\n state.isLoading = false;\r\n state.selectedRecipeTypes = [];\r\n state.selectedPresentations = [];\r\n state.selectedMilks = [];\r\n state.selectedGrains = []; \r\n state.selectedFlavors = [];\r\n\r\n if(clasificaciones.length > 0 ){\r\n // Filtrar los tipos de receta\r\n RecipeTypesAPI.getByClasification(clasificaciones).then(response => { \r\n let temp = response.data.map(obj => {\r\n return {value: obj.RecipeTypeId, label: obj.RecipeName ? obj.RecipeName : obj.Description, ...obj}\r\n })\r\n recipeTypeListByClass = temp\r\n \r\n // Filtrar los sabores\r\n return FlavorsAPI.getByClasification(clasificaciones)\r\n }).then(response => { \r\n let tempFlavorsList = response.data.map(obj => {\r\n return {value: obj.FlavorTypeId, label:obj.Name, ...obj}\r\n })\r\n tempFlavorsList.sort(compare); // Ordenar los labels \r\n flavorsListByClass = tempFlavorsList\r\n \r\n // Filtrar los granos de cafe\r\n return GrainsAPI.getByClasification(clasificaciones)\r\n }).then(response => {\r\n let tempGrainList = response.data.map(obj => {\r\n return {value: obj.GrainTypeId, label: obj.Description, ...obj}\r\n })\r\n tempGrainList.sort(compare); // Ordenar los labels\r\n grainsListByClass = tempGrainList\r\n \r\n // Filtrar los tipos de leche\r\n return MilksAPI.getByClasification(clasificaciones)\r\n })\r\n .then(response => {\r\n let tempMilkList = response.data.map(obj => {\r\n return {value: obj.MilkTypeId, label: obj.Description, ...obj}\r\n })\r\n tempMilkList.sort(compare); // Ordenar los labels\r\n milksListByClass = tempMilkList\r\n \r\n // Filtrar las presentaciones\r\n return PresentationsAPI.getByClasification(clasificaciones)\r\n }).then(response => {\r\n let tempPresentationList = response.data.map(obj => {\r\n return {value: obj.PresentationId, label: obj.Name, ...obj}\r\n })\r\n tempPresentationList.sort(compare); // Ordenar los labels\r\n presentationsListByClass = tempPresentationList\r\n\r\n setState({...state, \r\n recipeTypeList : recipeTypeListByClass,\r\n flavorsList : flavorsListByClass,\r\n grainsList : grainsListByClass,\r\n milksList : milksListByClass,\r\n presentationsList : presentationsListByClass\r\n })\r\n }).catch(error => {\r\n setState({...state, \r\n recipeTypeList : recipeTypeListByClass,\r\n flavorsList : flavorsListByClass,\r\n grainsList : grainsListByClass,\r\n milksList : milksListByClass,\r\n presentationsList : presentationsListByClass\r\n\r\n })\r\n });\r\n }else{ \r\n setState({...state,\r\n recipeTypeList: lodash.cloneDeep(state.origRecipeTypesList),\r\n flavorsList: lodash.cloneDeep(state.origFlavorsList),\r\n grainsList: lodash.cloneDeep(state.origGrainsList),//Donde se va a guardar la lista original de granos\r\n milksList: lodash.cloneDeep(state.origMilksList),//Donde se va a guardar la lista original de leches\r\n presentationsList: lodash.cloneDeep(state.origPresentationList),//Donde se va a guardar la lista original de presentaciones\r\n })\r\n }\r\n\r\n \r\n }\r\n\r\n const handleSelectProduct = () => {\r\n if(!state.selectedClassification){\r\n toast.error(\"No se ha seleccionado ninguna familia.\")\r\n return;\r\n }\r\n\r\n if(state.selectedProducts.some(p => p.idClasificacion === state.selectedClassification.value \r\n && (!p.idTipoReceta || (state.selectedRecipeTypes && state.selectedRecipeTypes.value === p.idTipoReceta))\r\n && (!p.idTipoSabor || (state.selectedFlavors && state.selectedFlavors.value === p.idTipoSabor))\r\n && (!p.idTipoGrano || (state.selectedGrains && state.selectedGrains.value === p.idTipoGrano))\r\n && (!p.idTipoLeche || (state.selectedMilks && state.selectedMilks.value === p.idTipoLeche))\r\n && (!p.idPresentacion ||(state.selectedPresentations && state.selectedPresentations.value === p.idPresentacion))\r\n )){\r\n toast.error(\"La selección ya esta incluida.\")\r\n return;\r\n }\r\n\r\n let value = {\r\n UrlImage : state.selectedClassification ? state.selectedClassification.UrlImage : null,\r\n producto : state.selectedClassification ? state.selectedClassification.label : '',\r\n tipoReceta : state.selectedRecipeTypes ? state.selectedRecipeTypes.label : '',\r\n Sabor : state.selectedFlavors ? state.selectedFlavors.label : '',\r\n Grano : state.selectedGrains ? state.selectedGrains.label : '',\r\n Leche : state.selectedMilks ? state.selectedMilks.label: '',\r\n Presentacion : state.selectedPresentations ? state.selectedPresentations.label : '',\r\n idClasificacion : state.selectedClassification ? state.selectedClassification.value : null,\r\n idTipoReceta : state.selectedRecipeTypes ? state.selectedRecipeTypes.value : null,\r\n idTipoSabor : state.selectedFlavors ? state.selectedFlavors.value : null,\r\n idTipoGrano : state.selectedGrains ? state.selectedGrains.value : null,\r\n idTipoLeche : state.selectedMilks ? state.selectedMilks.value : null,\r\n idPresentacion : state.selectedPresentations ? state.selectedPresentations.value : null,\r\n isBase:false\r\n }\r\n\r\n values.push(value)\r\n setState({...state, \r\n selectedProducts : values,\r\n recipeTypeList: lodash.cloneDeep(state.origRecipeTypesList),\r\n flavorsList: lodash.cloneDeep(state.origFlavorsList),\r\n grainsList: lodash.cloneDeep(state.origGrainsList),//Donde se va a guardar la lista original de granos\r\n milksList: lodash.cloneDeep(state.origMilksList),//Donde se va a guardar la lista original de leches\r\n presentationsList: lodash.cloneDeep(state.origPresentationList),//Donde se va a guardar la lista original de presentaciones\r\n selectedRecipeTypes: null,\r\n selectedPresentations: null,\r\n selectedMilks: null,\r\n selectedGrains: null, \r\n selectedFlavors: null,\r\n selectedClassification : null\r\n }) \r\n \r\n \r\n }\r\n\r\n /**\r\n * Marca registro is base\r\n * @param {*} index \r\n */\r\n const setIsBase = (index) => {\r\n let tmp = state.selectedProducts;\r\n\r\n tmp[index].isBase = !tmp[index].isBase \r\n\r\n setState({\r\n ...state,\r\n selectedProducts:tmp})\r\n \r\n }\r\n\r\n /**\r\n * Quita del listado de productos seleccionados\r\n * @param {*} index \r\n */\r\n const handleDeleteProducto = (index) => { \r\n values.splice(index,1)\r\n setState({...state, selectedProducts : values})\r\n } \r\n\r\n /**\r\n * Funcion para ordenar lexicograficamente\r\n * @param objA. primer operando\r\n * @param objB. segundo operando\r\n */\r\n const compare = (objA, objB) => {\r\n // Use toUpperCase() to ignore character casing\r\n const labelA = objA.label.toUpperCase();\r\n const labelB = objB.label.toUpperCase();\r\n\r\n let comparison = 0;\r\n if (labelA > labelB) {\r\n comparison = 1;\r\n } else if (labelA < labelB) {\r\n comparison = -1;\r\n }\r\n return comparison;\r\n }\r\n\r\n /**\r\n * Setea los filtros seleccionados y consulta las recetas que cumplen \r\n * @param {*} val \r\n * @param {*} event \r\n */\r\n const handleInputChange = (val, event) => {\r\n state[event.name] = val;\r\n state.isLoading = event.name === 'selectedClassification' && val;\r\n setState({\r\n ...state, \r\n })\r\n if(event.name === 'segmentoSeleccionado'){\r\n let classificationListAux = state.origClassificationList.filter(x => x.idSegmento === state.segmentoSeleccionado.value)\r\n setState({...state,\r\n classificationList: classificationListAux,\r\n selectedClassification: null,\r\n selectedRecipeTypes: null,\r\n selectedFlavors: null,\r\n selectedGrains: null,\r\n selectedGrains: null,\r\n selectedPresentations: null\r\n })\r\n } \r\n if(event.name === 'selectedClassification'){\r\n filterOptionsByClasification()\r\n } \r\n }\r\n\r\n /**\r\n * \r\n * @returns Obtiene el número de recetas que aplican a la selección\r\n */\r\n const getRecipesNumber = () => {\r\n let anySelected = state.selectedClassification && state.selectedClassification.value;\r\n let counter = 0;\r\n if(anySelected)\r\n {\r\n let recipes = state.recipes.filter(x => x.idSegmento === state.segmentoSeleccionado.value)\r\n recipes = recipes.filter(\r\n recipe => ( \r\n (state.selectedRecipeTypes && state.selectedRecipeTypes.value ? \r\n state.selectedRecipeTypes.value === recipe.RecipeTypeId : \r\n true) &&\r\n (state.selectedFlavors && state.selectedFlavors.value ? \r\n state.selectedFlavors.value === recipe.FlavorTypeId : \r\n true) &&\r\n (state.selectedPresentations && state.selectedPresentations.value ? \r\n state.selectedPresentations.value === recipe.PresentationId : \r\n true) &&\r\n (state.selectedMilks && state.selectedMilks.value ? \r\n state.selectedMilks.value === recipe.MilkTypeId : \r\n true) &&\r\n (state.selectedGrains && state.selectedGrains.value ? \r\n state.selectedGrains.value === recipe.GrainTypeId: \r\n true) &&\r\n (state.selectedClassification ? \r\n state.selectedClassification.value === recipe.ClassificationId : \r\n true) \r\n )\r\n );\r\n counter = recipes.length\r\n }\r\n \r\n return counter\r\n }\r\n\r\n /**\r\n * Obtiene el número de recetas de la CARD \r\n * @param {*} selection \r\n * @returns \r\n */\r\n const getCadRecipesNumber = (selection) => {\r\n let counter = 0;\r\n let recipes = state.recipes.filter(\r\n recipe => ( \r\n (selection.idClasificacion ? selection.idClasificacion === recipe.ClassificationId : true) &&\r\n (selection.idTipoReceta ? selection.idTipoReceta === recipe.RecipeTypeId : true) &&\r\n (selection.idPresentacion ? selection.idPresentacion === recipe.PresentationId : true) &&\r\n (selection.idTipoLeche ? selection.idTipoLeche === recipe.MilkTypeId : true) &&\r\n (selection.idTipoGrano ? selection.idTipoGrano === recipe.GrainTypeId: true) &&\r\n (selection.idTipoSabor ? selection.idTipoSabor === recipe.FlavorTypeId : true) \r\n )\r\n );\r\n counter = recipes.length\r\n return counter\r\n }\r\n\r\n return (\r\n
    \r\n {/* Filtro multiple para recetas */}\r\n \r\n
    \r\n
    \r\n
    \r\n
    \r\n \r\n handleInputChange(value, e)}\r\n noOptionsMessage={() => \"No hay opciones\"}\r\n options={state.segmentos}\r\n getOptionLabel={(segment) => segment.value === 1 ? \"Caffenio\"\r\n : segment.value === 9 ? \"Andatti\"\r\n : segment.value === 10 ? \"Momento Espresso\"\r\n : segment.value}\r\n />\r\n
    \r\n
    \r\n
    \r\n \r\n handleInputChange(value, e)}\r\n noOptionsMessage={() => \"No hay opciones\"}\r\n options={state.classificationList}\r\n isClearable={true}\r\n isDisabled={!state.segmentoSeleccionado}\r\n />\r\n
    \r\n\r\n
    \r\n \r\n \"No hay opciones\"}\r\n value={state.selectedRecipeTypes}\r\n options={state.recipeTypeList}\r\n onChange={(value, e) => handleInputChange(value, e)} \r\n isDisabled ={!state.selectedClassification} \r\n />\r\n
    \r\n\r\n
    \r\n \r\n \"No hay opciones\"}\r\n value={state.selectedFlavors}\r\n options={state.flavorsList}\r\n onChange={(value, e) => handleInputChange(value, e)}\r\n isDisabled ={!state.selectedClassification}\r\n \r\n />\r\n
    \r\n \r\n
    \r\n \r\n \"No hay opciones\"}\r\n options={state.grainsList}\r\n value={state.selectedGrains}\r\n onChange={(value, e) => handleInputChange(value, e)}\r\n isDisabled ={!state.selectedClassification}\r\n \r\n />\r\n
    \r\n \r\n
    \r\n \r\n \"No hay opciones\"}\r\n options={state.milksList}\r\n value={state.selectedMilks}\r\n onChange={(value, e) => handleInputChange(value, e)}\r\n isDisabled ={!state.selectedClassification}\r\n \r\n />\r\n
    \r\n\r\n
    \r\n \r\n \"No hay opciones\"}\r\n options={state.presentationsList}\r\n value={state.selectedPresentations}\r\n onChange={(value, e) => handleInputChange(value, e)}\r\n isDisabled ={!state.selectedClassification}\r\n \r\n />\r\n
    \r\n\r\n
    \r\n
    \r\n
    \r\n
    \r\n
    \r\n \r\n
    \r\n
    \r\n
    \r\n
    \r\n {\r\n state.selectedProducts && state.selectedProducts.length > 0 \r\n ? handleDeleteProducto(index )}\r\n setIsBase={(index) => setIsBase(index)}\r\n getCadRecipesNumber={getCadRecipesNumber}\r\n isBaseApply={isBaseApply}/> \r\n :
    \r\n }\r\n
    \r\n
    \r\n
    \r\n
    \r\n
    \r\n
    \r\n
    \r\n
    \r\n \r\n Anterior\r\n \r\n\r\n
    \r\n
    \r\n
    \r\n
    \r\n {\r\n if (values && values.length > 0) {\r\n handleNextStep();\r\n } else {\r\n toast.error(\"Seleccione al menos un producto donde aplique la promoción.\")\r\n }\r\n }}\r\n // disabled={ `${ state.currentStep === steps.resumen ? true : false }` }\r\n >\r\n Continuar\r\n \r\n
    \r\n
    \r\n
    \r\n
    \r\n\r\n
    \r\n \r\n \r\n
    \r\n \r\n )\r\n}\r\n","import React, { useEffect, useState } from 'react';\r\nimport { toast } from 'react-toastify';\r\n\r\n\r\nimport CaffenioDriveAPI from '../../services/caffenioDrive';\r\n\r\nimport Pagination from '../util/pagination/Pagination';\r\nimport NoItems from '../util/noitems/NoItems';\r\n\r\nimport Select from 'react-select';\r\n\r\nimport ErrorMessages from '../../util/validation-error-messages';\r\nimport Loading from '../util/loading/Loading';\r\nimport lodash from 'lodash';\r\nimport EmpresasAPI from '../../services/CaffenioEmpresas/Empresas';\r\n\r\nconst subtitle = {\r\n textAlign: 'initial',\r\n padding: '10px 10px 10px 0',\r\n fontSize: '16px',\r\n color: 'gray'\r\n}\r\n\r\nexport const DrivesPromo = ({ values, handleNextStep, handleLastStep }) => {\r\n\r\n const [state, setState] = useState({\r\n isLoading: false,\r\n pageDrives: [],\r\n selectedOptionS: [],\r\n selectedOptionE: [],\r\n selectedOptionC: [],\r\n selectedOptionD: [],\r\n OptionSelectState: [],\r\n OptionSelectCity: [],\r\n OptionSelectDrive: [],\r\n optionSegmentacion: [],\r\n optionState: [],\r\n optionCity: [],\r\n optionDrive: [],\r\n Caffenios: [],\r\n CaffeniosFilter: [],\r\n activeAll: false,\r\n arrListMenu: [],\r\n arrListPrices: [],\r\n selectedMenuAll: null,\r\n tempAllMenu: null,\r\n tempAllList: null,\r\n selectedPricesAll: null,\r\n filterText: \"\",\r\n childVisible: false,\r\n checkAll: false,\r\n switchAllActive: false,\r\n showModal: false,\r\n caffenio: null,\r\n drivesAsignados: [],\r\n segmentaciones: []\r\n });\r\n\r\n useEffect(() => {\r\n let CaffeniosActivos = []\r\n let segmentacionesAux = []\r\n setState({ ...state, isLoading: true })\r\n CaffenioDriveAPI.getCaffenios().then(response => {\r\n CaffeniosActivos = response.data.filter(x => x.Active === true)\r\n state.Caffenios = CaffeniosActivos;\r\n state.Caffenios.map(producto => {\r\n producto.statusCheck = false;\r\n return producto\r\n })\r\n return EmpresasAPI.getAllSegments()\r\n })\r\n .then(response => {\r\n state.segmentaciones = response.data\r\n setValue();\r\n setState({\r\n ...state,\r\n CaffeniosFilter: CaffeniosActivos,\r\n optionSegmentacion: select_segmentacion(state.Caffenios),\r\n optionState: select_state(state.Caffenios),\r\n optionCity: select_city(state.Caffenios),\r\n optionDrive: select_Drive(state.Caffenios),\r\n segmentaciones: segmentacionesAux\r\n })\r\n })\r\n .catch(err => {\r\n console.log(err)\r\n setState({ ...state, isLoading: false })\r\n if (err.response)\r\n toast.error(err.response.data.Message)\r\n else\r\n toast.error(ErrorMessages.SinConexion)\r\n })\r\n\r\n setState({ ...state, isLoading: false })\r\n\r\n }, []);\r\n\r\n const handleSearchInput = (text) => {\r\n state.filterText = text;\r\n FilterProcess();\r\n }\r\n\r\n const select_segmentacion = (Caffenios) => { // Llenar el combo 'Segmentación' con todas las opciones\r\n var newArray = [];\r\n let OptionSelectSegmentacion = [];\r\n var lookupObject = {};\r\n let nombreAux = ''\r\n Caffenios.map((item) => {\r\n state.segmentaciones.map(x => {\r\n if (x.SegmentId === item.idSegmento) {\r\n nombreAux = x.Name\r\n }\r\n })\r\n OptionSelectSegmentacion.push({ value: item.idSegmento, label: nombreAux });\r\n });\r\n\r\n for (var i in OptionSelectSegmentacion) {\r\n lookupObject[OptionSelectSegmentacion[i][\"value\"]] = OptionSelectSegmentacion[i];\r\n }\r\n\r\n for (i in lookupObject) {\r\n newArray.push(lookupObject[i]);\r\n }\r\n\r\n return lodash.sortBy(newArray, [ts => ts.label], ['asc']);\r\n }\r\n\r\n const select_state = (Caffenios) => { // Llenar el combo 'Estados' con todas las opciones \r\n var newArray = [];\r\n let OptionSelectState = [];\r\n var lookupObject = {};\r\n Caffenios.map((item) => {\r\n OptionSelectState.push({ value: item.StateId, label: item.State });\r\n });\r\n\r\n for (var i in OptionSelectState) {\r\n lookupObject[OptionSelectState[i][\"value\"]] = OptionSelectState[i];\r\n }\r\n\r\n for (i in lookupObject) {\r\n newArray.push(lookupObject[i]);\r\n }\r\n\r\n return lodash.sortBy(newArray, [ts => ts.label.toLowerCase()], ['asc']);\r\n }\r\n\r\n const select_city = (Caffenios) => { // Llenar el combo 'Ciudades' con todas las opciones \r\n var newArray = [];\r\n let OptionSelectCity = [];\r\n var lookupObject = {};\r\n Caffenios.map((item) => {\r\n OptionSelectCity.push({ value: item.Municipalityid, label: item.Municipality });\r\n });\r\n\r\n for (var i in OptionSelectCity) {\r\n lookupObject[OptionSelectCity[i][\"value\"]] = OptionSelectCity[i];\r\n }\r\n\r\n for (i in lookupObject) {\r\n newArray.push(lookupObject[i]);\r\n }\r\n\r\n return lodash.sortBy(newArray, [ts => ts.label.toLowerCase()], ['asc']);\r\n }\r\n\r\n const select_Drive = (Caffenios) => { // Llenar el combo 'Drives' con todas las opciones \r\n var newArray = [];\r\n let OptionSelectDrive = [];\r\n var lookupObject = {};\r\n Caffenios.map((item) => {\r\n OptionSelectDrive.push({ value: item.idCaffenio, label: item.NombreNuevo });\r\n });\r\n\r\n for (var i in OptionSelectDrive) {\r\n lookupObject[OptionSelectDrive[i][\"value\"]] = OptionSelectDrive[i];\r\n }\r\n\r\n for (i in lookupObject) {\r\n newArray.push(lookupObject[i]);\r\n }\r\n\r\n return lodash.sortBy(newArray, [ts => ts.label.toLowerCase()], ['asc']);\r\n }\r\n\r\n const changeSelectSegmentacion = (obj) => {\r\n state.selectedOptionS = obj\r\n let idSegmento = obj.map(segmento => { return segmento.value })\r\n let objCaffenios = state.Caffenios\r\n let listaEstados = []\r\n let listaDrives = []\r\n\r\n //Cargar estados\r\n objCaffenios.map(item => {\r\n for (var i = 0; i < idSegmento.length; i++) {\r\n if (item.idSegmento === idSegmento[i]) {\r\n listaEstados.push({ \"value\": item.StateId, \"label\": item.State });\r\n }\r\n }\r\n })\r\n\r\n //Eliminar duplicados de estados\r\n let eliminarDuplicadosEstado = eliminarObjDuplicados(listaEstados, \"value\");\r\n\r\n //Lista drives\r\n objCaffenios.map(item => {\r\n for (var i = 0; i < idSegmento.length; i++) {\r\n if (item.idSegmento === idSegmento[i]) {\r\n listaDrives.push({ \"value\": item.idCaffenio, \"label\": item.NombreNuevo });\r\n }\r\n }\r\n })\r\n\r\n state.selectedOptionE = []\r\n state.selectedOptionC = []\r\n state.selectedOptionD = []\r\n\r\n if (obj.length === 0) {\r\n state.optionState = select_state(state.Caffenios)\r\n state.optionCity = select_city(state.Caffenios)\r\n state.optionDrive = select_Drive(state.Caffenios)\r\n } else {\r\n state.optionState = lodash.sortBy(eliminarDuplicadosEstado, [ts => ts.label.toLowerCase()], ['asc']);\r\n state.optionDrive = lodash.sortBy(listaDrives, [ts => ts.label.toLowerCase()], ['asc']);\r\n }\r\n\r\n FilterProcess();\r\n }\r\n\r\n const changeSelectEstado = (obj) => {\r\n state.selectedOptionE = obj;\r\n let idEstado = obj.map(estado => { return estado.value });\r\n let objCaffenios = state.Caffenios;\r\n let listaCiudades = [];\r\n let listaDrives = [];\r\n // Recorrer objeto Caffenios y encontrar coincidencias sin eliminar duplicados\r\n objCaffenios.map(item => {\r\n for (var e = 0; e < idEstado.length; e++) {\r\n for (var i = 0; i < state.selectedOptionS.length; i++) {\r\n if (item.StateId === idEstado[e] && item.idSegmento === state.selectedOptionS[i].value) {\r\n listaCiudades.push({ \"value\": item.Municipalityid, \"label\": item.Municipality });\r\n }\r\n }\r\n }\r\n })\r\n\r\n\r\n\r\n //Se eliminan las ciudades duplicadas\r\n let eliminarDuplicados = eliminarObjDuplicados(listaCiudades, \"value\");\r\n //Se obtiene un arreglo con los id de las ciudades\r\n let idCiudad = eliminarDuplicados.map(ciudad => { return ciudad.value });\r\n\r\n //Se buscan coincidencias entre ciudad y drive y se genera la lista de drives\r\n objCaffenios.map(item => {\r\n for (var e = 0; e < idCiudad.length; e++) {\r\n for (var i = 0; i < state.selectedOptionS.length; i++) {\r\n if (item.Municipalityid === idCiudad[e] && item.idSegmento === state.selectedOptionS[i].value) {\r\n listaDrives.push({ \"value\": item.idCaffenio, \"label\": item.NombreNuevo });\r\n } \r\n }\r\n }\r\n })\r\n\r\n //Se limpian los combos 'Ciudades' y 'Drives'\r\n\r\n state.selectedOptionC = []\r\n state.selectedOptionD = []\r\n\r\n //Se valida que haya una opción seleccionada en combo 'Estados'\r\n if (obj.length === 0) {\r\n changeSelectSegmentacion(state.selectedOptionS);\r\n } else {\r\n\r\n state.optionCity = lodash.sortBy(eliminarDuplicados, [ts => ts.label.toLowerCase()], ['asc']);\r\n state.optionDrive = lodash.sortBy(listaDrives, [ts => ts.label.toLowerCase()], ['asc']);\r\n }\r\n\r\n FilterProcess();\r\n }\r\n\r\n const changeSelectCiudad = (obj) => {\r\n let idCiudad = obj.map(ciudad => { return ciudad.value });\r\n let objCaffenios = state.Caffenios;\r\n let listaDrives = [];\r\n\r\n //Se buscan coincidencias entre ciudad y drive y se genera la lista de drives\r\n objCaffenios.map(item => {\r\n for (var e = 0; e < idCiudad.length; e++) {\r\n for (var i = 0; i < state.selectedOptionS.length; i++) {\r\n if (item.Municipalityid === idCiudad[e] && item.idSegmento === state.selectedOptionS[i].value) {\r\n listaDrives.push({ \"value\": item.idCaffenio, \"label\": item.NombreNuevo });\r\n }\r\n }\r\n }\r\n })\r\n\r\n //Se limpia el combo 'Drives'\r\n state.selectedOptionD = []\r\n\r\n //Se valida que haya una opción seleccionada en combo 'Ciudades'\r\n if (obj.length > 0) {\r\n state.selectedOptionC = obj\r\n state.optionDrive = lodash.sortBy(listaDrives, [ts => ts.label.toLowerCase()], ['asc']);\r\n } else {\r\n changeSelectEstado(state.selectedOptionE);\r\n }\r\n\r\n FilterProcess();\r\n }\r\n\r\n const changeSelectDrive = (obj) => {\r\n let Caffenios = state.Caffenios;\r\n\r\n //Valida cada select (Estados,Ciudades,Drives) y realiza la acción correspondiente\r\n if (obj.length > 0) {\r\n state.selectedOptionD = obj\r\n } else if (state.selectedOptionC.length === 0) {\r\n changeSelectEstado(state.selectedOptionE);\r\n } else if (state.selectedOptionC.length === 0 && state.selectedOptionE.length === 0) {\r\n select_Drive(Caffenios);\r\n } else {\r\n changeSelectCiudad(state.selectedOptionC);\r\n }\r\n\r\n FilterProcess();\r\n }\r\n\r\n const FilterProcess = () => {\r\n let Caffenios = state.Caffenios;\r\n var status_combo; // Vacios\r\n let driveIds;\r\n\r\n if (state.selectedOptionD.length === 0) {\r\n driveIds = state.optionDrive.map(obj => {\r\n return obj.value;\r\n })\r\n } else {\r\n driveIds = state.selectedOptionD.map(obj => {\r\n return obj.value;\r\n })\r\n }\r\n\r\n status_combo = validarCombos();\r\n\r\n if (state.filterText.trim() !== '') {\r\n Caffenios = Caffenios.filter(obj => {\r\n return obj.NombreNuevo.toLowerCase().normalize(\"NFD\").replace(/[\\u0300-\\u036f]/g, \"\").includes(state.filterText.trim().toLowerCase().normalize(\"NFD\").replace(/[\\u0300-\\u036f]/g, \"\")) || obj.NombreNuevo.toLowerCase().normalize(\"NFD\").replace(/[\\u0300-\\u036f]/g, \"\").includes(state.filterText.trim().toLowerCase().normalize(\"NFD\").replace(/[\\u0300-\\u036f]/g, \"\"))\r\n });\r\n }\r\n\r\n Caffenios = Caffenios.filter((obj2) => {\r\n if (driveIds.filter((item) => {\r\n return item === obj2.idCaffenio\r\n }).length > 0) { return obj2 }\r\n })\r\n setState({ ...state, CaffeniosFilter: Caffenios });\r\n }\r\n\r\n const eliminarObjDuplicados = (arr, prop) => {\r\n var nuevoArray = [];\r\n var lookup = {};\r\n\r\n for (var i in arr) {\r\n lookup[arr[i][prop]] = arr[i];\r\n }\r\n\r\n for (i in lookup) {\r\n nuevoArray.push(lookup[i]);\r\n }\r\n\r\n return nuevoArray;\r\n }\r\n\r\n const validarCombos = () => {\r\n var status_combo = false; // Vacios\r\n\r\n if (state.selectedOptionE.length > 0) {\r\n status_combo = true; // Alguno con valor\r\n }\r\n\r\n if (state.selectedOptionC.length > 0) {\r\n status_combo = true; // Alguno con valor\r\n }\r\n\r\n if (state.selectedOptionD.length > 0) {\r\n status_combo = true; // Alguno con valor\r\n }\r\n\r\n return status_combo;\r\n }\r\n\r\n const selectAllCheck = () => {\r\n let elementsPage = state.pageDrives;\r\n\r\n elementsPage.map(element => {\r\n state.checkAll ? element.statusCheck = false : element.statusCheck = true\r\n return element\r\n })\r\n\r\n state.checkAll = !state.checkAll;\r\n state.childVisible = state.checkAll\r\n state.pageDrives = elementsPage;\r\n if (state.checkAll === false) {\r\n state.switchAllActive = false\r\n }\r\n\r\n setState({\r\n ...state,\r\n state\r\n });\r\n }\r\n\r\n const handleSelectDrives = () => {\r\n\r\n let drivesFiltered = state.CaffeniosFilter;\r\n let drivesAll = state.Caffenios;\r\n let pageDrives = []\r\n\r\n state.drivesAsignados = [...state.drivesAsignados, ...drivesFiltered];\r\n\r\n drivesFiltered.map((element, index) => {\r\n /* let index2 = drivesAll.indexOf(element)\r\n drivesAll.splice(index2, 1); */\r\n values.push(element)\r\n });\r\n drivesFiltered = [];\r\n state.selectedOptionE = [];\r\n state.selectedOptionC = [];\r\n state.selectedOptionD = [];\r\n\r\n pageDrives = drivesFiltered.slice(0, 6).map(item => {\r\n return item\r\n })\r\n\r\n state.pagedrivesAsignados = state.drivesAsignados.slice(0, 6).map(item => {\r\n return item\r\n })\r\n\r\n setState({\r\n ...state,\r\n CaffeniosFilter: drivesFiltered,\r\n Caffenios: drivesAll,\r\n pageDrives: pageDrives,\r\n drivesAsignados: state.drivesAsignados\r\n });\r\n\r\n\r\n return;\r\n\r\n }\r\n\r\n const handleRemoveDrives = (element) => {\r\n\r\n let drivesAllAssignados = state.drivesAsignados;\r\n\r\n\r\n var index1 = drivesAllAssignados.indexOf(element)\r\n drivesAllAssignados.splice(index1, 1);\r\n\r\n //Se cambio ya que siempre daba -1 y no eliminaba correctamente\r\n /* var index2= values.indexOf(element)\r\n values.splice(index2, 1) */\r\n\r\n var index2 = values.findIndex(e => e.idCaffenio === element.idCaffenio)\r\n values.splice(index2, 1)\r\n\r\n state.CaffeniosFilter = [...state.CaffeniosFilter, element];\r\n state.Caffenios = [...state.Caffenios, element];\r\n\r\n state.pageDrives = state.CaffeniosFilter.slice(0, 6).map(item => {\r\n return item\r\n })\r\n\r\n state.pagedrivesAsignados = state.drivesAsignados.slice(0, 6).map(item => {\r\n return item\r\n })\r\n\r\n\r\n setState({\r\n ...state,\r\n CaffeniosFilter: state.CaffeniosFilter,\r\n Caffenios: state.Caffenios,\r\n pageDrives: state.pageDrives,\r\n drivesAsignados: state.drivesAsignados\r\n });\r\n\r\n\r\n return;\r\n\r\n }\r\n\r\n const setValue = () => {\r\n\r\n let elementsPage = [];\r\n let drivesFiltered = state.CaffeniosFilter;\r\n let drivesAll = state.Caffenios;\r\n let pageDrives = []\r\n\r\n if (values.length == 0)\r\n return;\r\n\r\n\r\n values.map(item => {\r\n let drive = drivesAll.filter(drive => drive.idCaffenio == item.idCaffenio)\r\n if(drive[0] !== undefined){\r\n elementsPage.push(drive[0])\r\n }\r\n })\r\n\r\n\r\n \r\n elementsPage.map(element => {\r\n \r\n var index1 = drivesFiltered.indexOf(element)\r\n drivesFiltered.splice(index1, 1);\r\n\r\n var index2 = drivesAll.indexOf(element)\r\n drivesAll.splice(index2, 1);\r\n\r\n element.statusCheck = false\r\n state.drivesAsignados = [...state.drivesAsignados, element];\r\n })\r\n\r\n pageDrives = drivesFiltered.slice(0, 6).map(item => {\r\n return item\r\n })\r\n\r\n state.pagedrivesAsignados = state.drivesAsignados.slice(0, 6).map(item => {\r\n return item\r\n })\r\n\r\n setState({\r\n ...state,\r\n CaffeniosFilter: drivesFiltered,\r\n Caffenios: drivesAll,\r\n pageDrives: pageDrives,\r\n drivesAsignados: state.drivesAsignados\r\n });\r\n\r\n\r\n return;\r\n\r\n }\r\n\r\n /**\r\n * \r\n * @returns Obtiene el número de drives que aplican a la selección\r\n */\r\n const getDrivesNumber = () => {\r\n\r\n let counter = !state.selectedOptionE || !state.CaffeniosFilter ? 0 : state.CaffeniosFilter.length;\r\n\r\n return counter\r\n }\r\n\r\n return (\r\n
    \r\n\r\n
    \r\n\r\n
    \r\n\r\n
    \r\n \r\n
    \r\n \"No hay opciones\"}\r\n options={state.optionSegmentacion}\r\n />\r\n
    \r\n
    \r\n\r\n
    \r\n \r\n
    \r\n \"No hay opciones\"}\r\n options={state.optionState}\r\n isDisabled={!state.selectedOptionS || state.selectedOptionS.length === 0}\r\n\r\n />\r\n
    \r\n
    \r\n
    \r\n \r\n
    \r\n \"No hay opciones\"}\r\n options={state.optionCity}\r\n isDisabled={!state.selectedOptionE || state.selectedOptionE.length === 0}\r\n\r\n />\r\n
    \r\n
    \r\n
    \r\n \r\n
    \r\n \"No hay opciones\"}\r\n options={state.optionDrive}\r\n isDisabled={!state.selectedOptionC || state.selectedOptionC.length === 0}\r\n\r\n />\r\n
    \r\n
    \r\n
    \r\n \r\n \r\n
    \r\n
    \r\n
    \r\n\r\n
    \r\n\r\n
    \r\n\r\n\r\n {state.drivesAsignados.length !== 0\r\n ?\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n {state.pagedrivesAsignados.map((item, index) => {\r\n return (\r\n \r\n\r\n \r\n \r\n \r\n \r\n )\r\n })}\r\n \r\n
    NombreCiudadAcciones
    {item.NombreNuevo}{item.Municipality}\r\n \r\n
    \r\n\r\n : }\r\n setState({ ...state, pagedrivesAsignados: drives })} /*onChangePage={(items) => handlePageChange(items)}*/ />\r\n\r\n
    \r\n\r\n\r\n
    \r\n
    \r\n
    \r\n
    \r\n
    \r\n
    \r\n \r\n Anterior\r\n \r\n\r\n
    \r\n
    \r\n
    \r\n
    \r\n {\r\n\r\n if (values && values.length > 0) {\r\n handleNextStep()\r\n } else {\r\n toast.error(\"Seleccione al menos un punto de venta donde aplique la promoción.\")\r\n }\r\n }}\r\n >\r\n Continuar\r\n \r\n
    \r\n
    \r\n
    \r\n
    \r\n\r\n
    \r\n \r\n
    \r\n )\r\n}\r\n","\r\nimport {apiUrl} from '../constants';\r\nimport axios from 'axios';\r\nvar request = axios.create({\r\n baseURL: apiUrl,\r\n headers: {'Authorization':'Bearer ' + localStorage.getItem('token'),'Content-Type':'application/json'}\r\n})\r\n\r\nexport default class DrivePromotionRestrictionsAPI{\r\n\r\n static getAll(){\r\n return request.get('/PromotionRestrictions/');\r\n }\r\n\r\n static create( data ) {\r\n return request.post( '/PromotionRestrictions/', data );\r\n }\r\n\r\n static get( id) {\r\n return request.get( `/PromotionRestrictions/${id}` );\r\n }\r\n\r\n static update( id, newData ) {\r\n return request.put( `/PromotionRestrictions/${id}`,newData );\r\n }\r\n}","import React, { useEffect, useState } from 'react';\r\nimport { toast } from 'react-toastify';\r\nimport Field from '../util/field/Field';\r\n\r\nimport DrivePromotionRestrictionsAPI from '../../services/DrivePromotionRestrictions';\r\n\r\nimport { Tab, Tabs, TabList, TabPanel } from 'react-tabs';\r\nimport 'react-tabs/style/react-tabs.css';\r\n\r\nimport ErrorMessages from '../../util/validation-error-messages';\r\nimport { element } from 'prop-types';\r\n\r\nconst subtitle = {\r\n textAlign: 'initial',\r\n padding: '10px 10px 10px 0',\r\n fontSize: '16px',\r\n color: 'gray'\r\n}\r\n\r\nconst optionActive = {\r\n backgroundColor: '#f42434',\r\n color: '#fff'\r\n}\r\n\r\nexport const RestriccionesPromo = ({values, handleNextStep, handleLastStep }) => {\r\n\r\n const [ state, setState ] = useState({ \r\n listRestriccionTipo : [],\r\n selected : values.restrictionsSelected,\r\n tipoRSelected:null,\r\n endDateRestriction : values.endDateRestriction,\r\n initDateRestriction :values.initDateRestriction\r\n });\r\n\r\n useEffect(() => {\r\n let tipoRestriccionData = [];\r\n\r\n DrivePromotionRestrictionsAPI.getAll() \r\n .then(response => {\r\n tipoRestriccionData = response.data.filter(res=>res.Active).sort(function (a, b) {\r\n if (a.Order > b.Order) {\r\n return 1;\r\n }\r\n if (a.Order < b.Order) {\r\n return -1;\r\n }\r\n return 0;\r\n })\r\n //Es PromoRestrictionTypeId=1 para hacer referencia a las promos basicas \r\n let index = tipoRestriccionData.findIndex(x => x.PromoRestrictionTypeId === 1)\r\n //Es idPromoRestriction=1 para solo mostrar la promo \"No aplica con otras promociones\" de las promos basicas\r\n tipoRestriccionData[index].PromoRestrictions = tipoRestriccionData[index].PromoRestrictions.filter(x => x.idPromoRestriction === 1)\r\n if(state.selected && state.selected.length > 0){\r\n state.selected.map(s => {\r\n let tipoR = tipoRestriccionData.filter(tr => tr.PromoRestrictionTypeId === s.type);\r\n if(tipoR && tipoR.length > 0){\r\n let restriction = tipoR[0].PromoRestrictions.filter(r=> r.idPromoRestriction === s.restriction);\r\n s.title= tipoR[0].Title ;\r\n s.description = restriction && restriction.length > 0 ? restriction[0].Description : '';\r\n }else{\r\n s.title ='';\r\n s.description='';\r\n }\r\n \r\n return s;\r\n }) \r\n }\r\n })\r\n .catch(err => {\r\n if (err.response)\r\n toast.error(err.response.code !== 500 ? err.response.data : ErrorMessages.ErrorInesperado)\r\n else\r\n toast.error(ErrorMessages.SinConexion)\r\n }).finally(() => setState({\r\n ...state,\r\n listRestriccionTipo : tipoRestriccionData,\r\n tipoRSelected:tipoRestriccionData ? tipoRestriccionData[0]: null\r\n }))\r\n },[]); \r\n\r\n const addRestriction = (type,restriction, description, title) => {\r\n\r\n var index = -1; // -1 if not found\r\n for (var i = 0; i < values.restrictionsSelected.length; ++i)\r\n {\r\n var element = values.restrictionsSelected[i];\r\n if (element.type === type && element.restriction === restriction)\r\n {\r\n index = i;\r\n break;\r\n }\r\n }\r\n\r\n if (index > -1){\r\n values.restrictionsSelected.splice(index, 1);\r\n }\r\n else{\r\n values.restrictionsSelected.push({\r\n type : type,\r\n restriction : restriction,\r\n description : description,\r\n title: title\r\n });\r\n }\r\n \r\n setState({\r\n ...state,\r\n selected : values.restrictionsSelected\r\n })\r\n \r\n\r\n }\r\n\r\n return (\r\n
    \r\n
    \r\n
    \r\n
    \r\n

    Tipos de reestricciones

    \r\n \r\n
    \r\n
    \r\n
    \r\n

    {`Reestricciones ${state.tipoRSelected ? state.tipoRSelected.Name :''} disponibles`}

    \r\n
    \r\n {state.tipoRSelected && state.tipoRSelected.Name !== \"Horario\"\r\n && state.tipoRSelected.PromoRestrictions.map((res, index) => {\r\n return (\r\n
    \r\n
    \r\n
    \r\n el.type === state.tipoRSelected.PromoRestrictionTypeId && el.restriction === res.idPromoRestriction)}\r\n className=\"switch\"\r\n onChange={() => { }}\r\n />\r\n
    \r\n \r\n
    \r\n
    \r\n )\r\n })\r\n }\r\n {state.tipoRSelected && state.tipoRSelected.Name === \"Horario\" &&
    \r\n
    \r\n
    \r\n\r\n \r\n {\r\n values.initDateRestriction = time.target.value\r\n setState({\r\n ...state,\r\n initDateRestriction: time.target.value\r\n })\r\n }}\r\n type='time'\r\n className={\"input\"}\r\n placeholder={\"Hora inicio\"}\r\n value={state.initDateRestriction}\r\n\r\n />\r\n \r\n
    \r\n
    \r\n\r\n \r\n {\r\n values.endDateRestriction = time.target.value\r\n setState({\r\n ...state,\r\n endDateRestriction: time.target.value\r\n })\r\n }}\r\n value={state.endDateRestriction}\r\n\r\n />\r\n \r\n
    \r\n
    \r\n
    \r\n }\r\n
    \r\n\r\n\r\n
    \r\n
    \r\n\r\n\r\n
    \r\n
    \r\n
    \r\n
    \r\n
    \r\n
    \r\n
    \r\n \r\n Anterior\r\n \r\n\r\n
    \r\n
    \r\n
    \r\n
    \r\n \r\n handleNextStep(true)}\r\n >\r\n Terminar y Enviar\r\n \r\n \r\n \r\n \r\n handleNextStep(false)}\r\n >\r\n Terminar\r\n \r\n
    \r\n
    \r\n
    \r\n
    \r\n\r\n
    \r\n
    \r\n\r\n\r\n\r\n )\r\n}\r\n","\r\nimport {apiUrl} from '../constants';\r\nimport axios from 'axios';\r\nvar request = axios.create({\r\n baseURL: apiUrl,\r\n headers: {'Authorization':'Bearer ' + localStorage.getItem('token'),'Content-Type':'application/json'}\r\n})\r\n\r\nexport default class DrivePromotionsRefundTypeAPI{\r\n\r\n /**\r\n * Obtienen todo el listado de promociones\r\n */\r\n static getAll(){\r\n return request.get('/PromotionRefundTypes/');\r\n }\r\n\r\n /**\r\n * Crea una promoción.\r\n * @param { Object } data - Informacion de la promoción \r\n * @returns Promise\r\n */\r\n static create( data ) {\r\n return request.post( '/PromotionRefundTypes/', data );\r\n }\r\n\r\n /**\r\n * Obtiene promocion por id\r\n * @param { Object } idPromo - Informacion de la promoción\r\n * @returns Promise\r\n */\r\n static get( id) {\r\n return request.get( `/PromotionRefundTypes/${id}` );\r\n }\r\n\r\n /**\r\n * Actualiza promocion id \r\n * @param { Object } id - identificador de la promocion\r\n * @param { Object } newData - información actualizada\r\n * @returns Promise\r\n */\r\n static update( id, newData ) {\r\n return request.put( `/PromotionRefundTypes/${id}`,newData );\r\n }\r\n}","\r\nimport {apiUrl} from '../constants';\r\nimport axios from 'axios';\r\nvar request = axios.create({\r\n baseURL: apiUrl,\r\n headers: {'Authorization':'Bearer ' + localStorage.getItem('token'),'Content-Type':'application/json'}\r\n})\r\n\r\nexport default class DrivePromotionsTipoRegalosAPI{\r\n\r\n /**\r\n * Obtienen todo el listado de Tipos de Regalos\r\n */\r\n static getAll(){\r\n return request.get('/TipoRegalos/');\r\n }\r\n\r\n /**\r\n * Crea una promoción.\r\n * @param { Object } data - Informacion de la promoción \r\n * @returns Promise\r\n */\r\n static create( data ) {\r\n return request.post( '/TipoRegalos/', data );\r\n }\r\n\r\n /**\r\n * Obtiene promocion por id\r\n * @param { Object } idPromo - Informacion de la promoción\r\n * @returns Promise\r\n */\r\n static get( id) {\r\n return request.get( `/TipoRegalos/${id}` );\r\n }\r\n\r\n /**\r\n * Actualiza promocion id \r\n * @param { Object } id - identificador de la promocion\r\n * @param { Object } newData - información actualizada\r\n * @returns Promise\r\n */\r\n static update( id, newData ) {\r\n return request.put( `/TipoRegalos/${id}`,newData );\r\n }\r\n}","\r\nimport {apiUrl} from '../constants';\r\nimport axios from 'axios';\r\nvar request = axios.create({\r\n baseURL: apiUrl,\r\n headers: {'Authorization':'Bearer ' + localStorage.getItem('token'),'Content-Type':'application/json'}\r\n})\r\n\r\nexport default class DrivePromoDiscountTypesAPI{\r\n\r\n /**\r\n * Obtienen todo el listado de promociones\r\n */\r\n static getAll(){\r\n return request.get('/PromoDiscountTypes/');\r\n }\r\n\r\n /**\r\n * Crea una promoción.\r\n * @param { Object } data - Informacion de la promoción \r\n * @returns Promise\r\n */\r\n static create( data ) {\r\n return request.post( '/PromoDiscountTypes/', data );\r\n }\r\n\r\n /**\r\n * Obtiene promocion por id\r\n * @param { Object } idPromo - Informacion de la promoción\r\n * @returns Promise\r\n */\r\n static get( id) {\r\n return request.get( `/PromoDiscountTypes/${id}` );\r\n }\r\n\r\n /**\r\n * Actualiza promocion id \r\n * @param { Object } id - identificador de la promocion\r\n * @param { Object } newData - información actualizada\r\n * @returns Promise\r\n */\r\n static update( id, newData ) {\r\n return request.put( `/PromoDiscountTypes/${id}`,newData );\r\n }\r\n}","import React, { useEffect, useState } from 'react';\r\nimport { toast } from 'react-toastify';\r\nimport moment from 'moment';\r\nimport ErrorMessages from '../../util/validation-error-messages';\r\nimport { Link } from 'react-router-dom';\r\nimport BasePromo from './BasePromo';\r\nimport DetallePromo from './DetallePromo';\r\nimport { ProductosPromo } from './ProductosPromo';\r\nimport { DrivesPromo } from './DrivesPromo';\r\nimport { RestriccionesPromo } from './RestriccionesPromo';\r\nimport { ResumenPromo } from './ResumenPromo';\r\nimport { PromoProductsTable } from './components/PromoProductsTable';\r\n\r\nimport DrivePromotionsRefundTypeAPI from '../../services/DrivePromotionsRefundType';\r\nimport DrivePromotionsTypesAPI from '../../services/DrivePromotionsType';\r\nimport DrivePromotionsTipoRegalosAPI from '../../services/DrivePromotionsTipoRegalos';\r\nimport DrivePromoDiscountTypesAPI from '../../services/DrivePromoDiscountTypes';\r\n\r\nimport {tipos} from '../../util/strings/tipo-promos';\r\nimport Modal from '../util/modal/Modal';\r\nimport Loading from '../util/loading/Loading';\r\nimport DrivePromotionsAPI from '../../services/DrivePromotions';\r\nimport AcceptModal from '../util/acceptModal/AcceptModal';\r\nimport Pagination from '../util/pagination/Pagination';\r\nimport NoItems from '../util/noitems/NoItems';\r\n\r\nexport const NuevaPromo = ({history}) => {\r\n\r\n const steps = {\r\n 'base': 'base',\r\n 'detalle': 'detalle',\r\n 'productos': 'productos',\r\n 'drives': 'drives',\r\n 'restricciones': 'restricciones',\r\n // 'resumen': 'resumen'\r\n }\r\n\r\n const [ state, setState ] = useState({\r\n currentStep: steps.base,\r\n promotion: {\r\n Name : \"\",\r\n ShortName : \"\",\r\n Description : \"\",\r\n InitDate : \"\",\r\n EndDate : \"\",\r\n Auto : false,\r\n idTipoPromo : 0,\r\n },\r\n detalle: {\r\n idTipoReembolso : {},\r\n idTipoRegalo : {},\r\n isPercentage : 0,\r\n quantity : 0,\r\n isRecursive : null,\r\n idTipoDescuento : {},\r\n checkCantidadMinima : false,\r\n minProducts : 0,\r\n aplicaPara : [],\r\n descripcionAPP : \"\",\r\n },\r\n productos:[],\r\n drives :[],\r\n restricciones : {\r\n restrictionsSelected : [],\r\n initDateRestriction : \"\",\r\n endDateRestriction : \"\"\r\n },\r\n listTipoPromos : [],\r\n listTipoDescuento : [],\r\n listReembolsoTipo : [],\r\n typePromotion : [],\r\n tipoRegalos : [],\r\n isEditing:false,\r\n isLoading:true,\r\n showModal:false,\r\n modalConfirm : false,\r\n show_info_confirm:true\r\n });\r\n\r\n useEffect(() => {\r\n let promoTypeData = [];\r\n let reembolsoTypeData = [];\r\n let listTipoDescuentoData = [];\r\n let tipoRegaloData = [];\r\n let promotion = state.promotion;\r\n let detalle = state.detalle;\r\n let productos = state.productos;\r\n let drives = state.drives;\r\n let pagedrivesAsignados = drives.slice(0, 6).map(item => {\r\n return item\r\n })\r\n let restricciones = state.restricciones;\r\n let isEditing = false;\r\n let isLoading= false;\r\n if(history.location.pathname.includes('editar') && !history.location.state){\r\n history.push(`/promos`);\r\n return;\r\n }\r\n DrivePromotionsTypesAPI.getAll()\r\n .then(response => {\r\n promoTypeData = response.data.map(item => {\r\n if(item.Active)\r\n {\r\n return {\r\n value: item.IdTypePromo,\r\n label: item.Name\r\n }\r\n }\r\n return null; \r\n })\r\n\r\n promoTypeData = promoTypeData.filter(type => type != null)\r\n return DrivePromotionsRefundTypeAPI.getAll()\r\n })\r\n .then(response => {\r\n reembolsoTypeData = response.data.map(item => {\r\n if(item.Active)\r\n {\r\n return {\r\n value: item.RefundTypeId,\r\n label: item.Name\r\n }\r\n }\r\n return null; \r\n })\r\n\r\n reembolsoTypeData = reembolsoTypeData.filter(type => type != null)\r\n return DrivePromoDiscountTypesAPI.getAll()\r\n })\r\n .then(response => {\r\n listTipoDescuentoData = response.data.map(item => {\r\n if(item.Active)\r\n {\r\n return {\r\n value: item.PromoDiscountTypeId,\r\n label: item.Name\r\n }\r\n }\r\n return null; \r\n })\r\n\r\n listTipoDescuentoData = listTipoDescuentoData.filter(type => type != null)\r\n\r\n return DrivePromotionsTipoRegalosAPI.getAll()\r\n })\r\n .then(response => {\r\n tipoRegaloData = response.data.map(item => {\r\n if(item.Activo)\r\n {\r\n return {\r\n value: item.idTipoRegalo,\r\n label: item.Descripcion\r\n }\r\n }\r\n return null; \r\n })\r\n \r\n tipoRegaloData = tipoRegaloData.filter(type => type != null)\r\n if(history.location.state){\r\n return DrivePromotionsAPI.get(history.location.state.IdPromocion);\r\n }else{\r\n return true;\r\n }\r\n\r\n \r\n })\r\n .then(response => {\r\n if(history.location.state){\r\n if (!response.data){\r\n toast.error(\"Ocurrión un error al cargar promoción\");\r\n history.goBack();\r\n }\r\n response.data.Promotion.InitDate= new Date(response.data.Promotion.InitDate);\r\n response.data.Promotion.EndDate= new Date(response.data.Promotion.EndDate);\r\n promotion = response.data.Promotion;\r\n detalle = response.data.Detalle;\r\n productos = response.data.Productos;\r\n drives = response.data.drives;\r\n restricciones = response.data.Restricciones;\r\n isEditing=true;\r\n }\r\n })\r\n .catch(err => {\r\n if (err.response)\r\n toast.error(err.response.code !== 500 ? err.response.data : ErrorMessages.ErrorInesperado)\r\n else\r\n toast.error(ErrorMessages.SinConexion)\r\n }).finally(() => setState({\r\n ...state,\r\n listReembolsoTipo : reembolsoTypeData,\r\n listTipoDescuento : listTipoDescuentoData,\r\n listTipoPromos : promoTypeData,\r\n tipoRegalos : tipoRegaloData, \r\n promotion,\r\n detalle,\r\n productos,\r\n drives,\r\n restricciones,\r\n isEditing,\r\n isLoading,\r\n pagedrivesAsignados\r\n }))\r\n },[]); \r\n\r\n /***\r\n * Obtiene el tipo de promoción seleccionado \r\n */\r\n const esTipoCombo = () => { \r\n let tipoPromo = state.promotion && state.promotion.idTipoPromo ? state.promotion.idTipoPromo.label : \"\";\r\n\r\n return tipos.Combo === tipoPromo || tipos.qrCustom === tipoPromo\r\n }\r\n /***\r\n * Obtiene el tipo de promoción seleccionado \r\n */\r\n const esTipoDescuento = () => { \r\n let tipoPromo = state.promotion && state.promotion.idTipoPromo ? state.promotion.idTipoPromo.label : \"\";\r\n\r\n return tipos.descuento === tipoPromo \r\n }\r\n\r\n /***\r\n * Obtiene el tipo de promoción seleccionado \r\n */\r\n const esReembolso = () => { \r\n let tipoPromo = state.promotion && state.promotion.idTipoPromo ? state.promotion.idTipoPromo.label : \"\";\r\n\r\n return tipos.reembolso === tipoPromo \r\n }\r\n\r\n const PromoStep = () => {\r\n switch (state.currentStep) {\r\n case steps.base:\r\n return {state.promotion = values}} changeTypePromo = {changeTypePromo} handleNextStep = {handleNextStep}/>;\r\n case steps.detalle:\r\n return {state.detalle = values}} handleNextStep = {handleNextStep} handleLastStep = {handleLastStep}/>;\r\n case steps.productos:\r\n return ;\r\n case steps.drives:\r\n return ;\r\n case steps.restricciones:\r\n return { \r\n state.restriccionesResum = state.restricciones && state.restricciones.restrictionsSelected \r\n ? state.restricciones.restrictionsSelected.reduce((lst, obj) => {\r\n let temp = lst.filter(l=> l.type === obj.type)\r\n if(temp.length === 0) {\r\n lst.push({\r\n type: obj.type,\r\n title: obj.title,\r\n restrictions: [obj.description]\r\n })\r\n }else{\r\n lst.map(l => {\r\n if(l.type === obj.type){\r\n l.restrictions.push(obj.description)\r\n }\r\n })\r\n \r\n }\r\n return lst;\r\n },[]):[]\r\n state.promotion.sendPromo = sendToValidation;\r\n if(state.restricciones.endDateRestriction != \"\" && state.restricciones.initDateRestriction != \"\"){\r\n state.restriccionesResum.push({\r\n type: 5,\r\n title: 'Horario',\r\n restrictions: [\"Promocion valida de \" + state.restricciones.initDateRestriction + \" a \" + state.restricciones.endDateRestriction]\r\n })\r\n }\r\n setState({...state, modalConfirm: true})\r\n }} handleLastStep = {handleLastStep} />;\r\n // case steps.resumen:\r\n // return ;\r\n default:\r\n return ;\r\n }\r\n }\r\n\r\n const changeTypePromo = () => {\r\n state.detalle= {\r\n idTipoReembolso : {},\r\n idTipoRegalo : {},\r\n isPercentage : 0,\r\n quantity : 0,\r\n isRecursive : false,\r\n idTipoDescuento : {},\r\n checkCantidadMinima : false,\r\n minProducts : 0,\r\n aplicaPara : [],\r\n descripcionAPP : \"\",\r\n }\r\n }\r\n\r\n\r\n const handleLastStep = () => { \r\n let isRembolsoRecarga = state.currentStep === 'drives' && esReembolso() && state.detalle && state.detalle.idTipoReembolso && state.detalle.idTipoReembolso.label == 'Por recarga';\r\n let index = Object.values(steps).indexOf(state.currentStep) - (isRembolsoRecarga ? 1 : 0);\r\n if ( index === -1 )\r\n return;\r\n setState({\r\n ...state,\r\n currentStep: Object.values(steps)[--index]\r\n });\r\n }\r\n\r\n const handleNextStep = () => {\r\n let isRembolsoRecarga = state.currentStep === 'detalle' && esReembolso() && state.detalle && state.detalle.idTipoReembolso && state.detalle.idTipoReembolso.label == 'Por recarga';\r\n let index = Object.values(steps).indexOf(state.currentStep) + (isRembolsoRecarga ? 1 : 0);\r\n if ( index === -1 )\r\n return;\r\n setState({\r\n ...state,\r\n currentStep: Object.values(steps)[++index]\r\n });\r\n }\r\n\r\n const savePromotion = () => { \r\n \r\n setState({...state, isLoading:true});\r\n state.promotion.InitDate = moment(state.promotion.InitDate).format(\"YYYY/MM/DD HH:mm\")\r\n state.promotion.EndDate = moment(state.promotion.EndDate).format(\"YYYY/MM/DD HH:mm\")\r\n let dataToSend = {\r\n promotion: state.promotion,\r\n detalle: state.detalle,\r\n productos:state.productos,\r\n drives :state.drives,\r\n restricciones : state.restricciones\r\n }\r\n\r\n dataToSend.promotion.description = dataToSend.detalle.descripcionAPP ? dataToSend.detalle.descripcionAPP :dataToSend.promotion.description;\r\n\r\n dataToSend.promotion.idTipoPromo = isNaN(state.promotion.idTipoPromo)?dataToSend.promotion.idTipoPromo.value : dataToSend.promotion.idTipoPromo;\r\n\r\n if(!state.isEditing){\r\n DrivePromotionsAPI.create(dataToSend).then(response => {\r\n toast.success(\"La promoción ha sido creada correctamente.\"); \r\n }).catch(err => {\r\n toast.error(err.response.code !== 500 ? err.response.data : ErrorMessages.ErrorInesperado)\r\n }).finally(()=>{\r\n history.goBack() \r\n })\r\n }\r\n else{\r\n DrivePromotionsAPI.update(dataToSend.promotion.IdPromocion, dataToSend).then(response => {\r\n toast.success(\"La promoción ha sido actualizada correctamente.\"); \r\n }).catch(err => {\r\n toast.error(err.response.code !== 500 ? err.response.data : ErrorMessages.ErrorInesperado)\r\n })\r\n .finally(()=>{\r\n history.goBack() \r\n })\r\n }\r\n \r\n\r\n }\r\n\r\n return (\r\n
    \r\n
    \r\n {/* HEADER */}\r\n
    \r\n
    \r\n \r\n { history.goBack() }}>\r\n \r\n \r\n
    \r\n {state.isEditing ? \"Editar Promoción\" : \"Nueva Promoción\"}\r\n setState({...state, showModal: true })}>\r\n
    \r\n
    \r\n
    \r\n
    \r\n {/* STEPS */}\r\n
    \r\n
    \r\n
    \r\n
    1
    \r\n
    \r\n

    Información básica

    \r\n

    { state.currentStep === steps.base ? 'Información básica': ''}

    \r\n
    \r\n
    \r\n
    \r\n
    2
    \r\n
    \r\n

    Detalle

    \r\n

    {state.currentStep === steps.detalle && `Detalles de la promoción ${state.promotion && state.promotion.idTipoPromo \r\n ? `${state.promotion.idTipoPromo.label}` : ''}`}

    \r\n
    \r\n
    \r\n {!(esReembolso() && state.detalle && state.detalle.idTipoReembolso && state.detalle.idTipoReembolso.label == 'Por recarga') && \r\n
    \r\n
    3
    \r\n
    \r\n

    Productos

    \r\n

    {state.currentStep === steps.productos ? 'Seleccionar productos' : ''}

    \r\n
    \r\n
    \r\n }\r\n
    \r\n
    {(esReembolso() && state.detalle && state.detalle.idTipoReembolso && state.detalle.idTipoReembolso.label == 'Por recarga') ? 3 : 4}
    \r\n
    \r\n

    Drives

    \r\n

    {state.currentStep === steps.drives ? 'Seleccionar puntos de venta donde aplica.' : ''}

    \r\n
    \r\n
    \r\n
    \r\n
    {(esReembolso() && state.detalle && state.detalle.idTipoReembolso && state.detalle.idTipoReembolso.label == 'Por recarga') ? 4 : 5}
    \r\n
    \r\n

    Restricciones

    \r\n

    {state.currentStep === steps.restricciones ? 'Seleccionar restricciones' : ''}

    \r\n
    \r\n
    \r\n {/*
    \r\n
    {(esReembolso() && state.detalle && state.detalle.idTipoReembolso && state.detalle.idTipoReembolso.label == 'Por recarga') ? 5 : 6}
    \r\n
    \r\n

    Resúmen

    \r\n

    {state.currentStep === steps.resumen ? 'Confirme la información antes de guardar.':''}

    \r\n
    \r\n
    */}\r\n
    \r\n
    \r\n {/* STEPS CONTENT */}\r\n
    \r\n \r\n {!state.isLoading && }\r\n {state.showModal \r\n ? setState({...state, showModal: false })}\r\n >\r\n
    \r\n \r\n Módulo para crear y editar promociones del punto de venta.\r\n \r\n
    \r\n
    \r\n
    setState({...state, show_info: !state.show_info, show_info_equivalencias: false, show_info_clasificacion: false, show_info_end: false })}>\r\n
    \r\n

    1. Información básica

    \r\n
    \r\n
    \r\n
    \r\n

    \r\n Sección para configurar la información base de la promoción:
    \r\n Nombre POS - Campo alfanumérico con logitud máxima de 50 caracteres, representa el nombre de la promoción que aparece en la POS.\r\n
    \r\n Nombre Ticket - Campo alfanumérico con logitud máxima de 50 caracteres, descripción de la promoción que aparece en el ticket.\r\n
    \r\n Fecha lanzamiento - Campo que representa la fecha en que entra en vigencia la promoción.\r\n
    \r\n Fecha fin - Campo que representa la fecha en que expira la promoción.\r\n
    \r\n Tipo promoción - Campo seleccionable que representa el tipo de promoción: Combo, Descuento, QR Custom, Reembolso. A partir de la selección cambia el detalle solicitado para la promoción.\r\n
    \r\n Promoción automática- Al especificar que la promoción es automática, no es necesario que la operadora ingrese al módulo de promociones ya que si se cumplen las reestricciones será aplicada automáticamente.\r\n
    \r\n

    \r\n
    \r\n
    \r\n
    \r\n
    setState({...state, show_detail: !state.show_detail, show_info:false, show_info_equivalencias: false, show_info_clasificacion: false, show_info_end: false })}>\r\n
    \r\n

    2. Detalle

    \r\n
    \r\n
    \r\n
    \r\n {esTipoCombo() || esTipoDescuento()\r\n ?

    \r\n Detalle de la promoción de tipo DESCUENTO :
    \r\n Tipo de descuento - Campo seleccionable que representa la modalidad del descuento por Porcentaje, Cantidad o Precio Fijo.
    \r\n Porcentaje, Cantidad o Precio fijo a descontar -
    Campo numérico que representa el descuento según el tipo de descuento seleccionado.
    \r\n Recursividad - Campo seleccionable, Descuento múltiple el descuento se aplica una vez por cada producto válido; Un descuento por orden un solo descuento por orden.
    \r\n \r\n ¿Cantidad mínima de producto? - Condiciona el descuento a cumplir con el número registrado en Cantidad miníma
    \r\n Cantidad mínima - Cantidad minima de producto para aplicar el descuento.
    \r\n\r\n Medios donde aplica - Campo seleccionable con los dispositivos donde se podrá hacer el canje de la promoción.
    \r\n Descripción en APP - En caso de seleccionar que la promoción aplica para la APP, este campo será requerido.
    \r\n

    \r\n :

    \r\n Detalle de la promoción de tipo REEMBOLSO :
    \r\n Tipo de reembolso - Campo seleccionable que representa la modalidad del rembolso por recarga o por producto.
    \r\n Tipo de regalo -
    Al ser reembolso, este siempre es en monedero.
    \r\n {esReembolso() && state.detalle && state.detalle.idTipoReembolso && state.detalle.idTipoReembolso.label == 'Por recarga' \r\n ? <>\r\n Recursividad - Campo seleccionable, Multiplos de El reembolso es acumulable de acuerdo a la cantidad recargada. \r\n Mayor igual a El reembolso se aplica una sola vez.
    \r\n Cantidad a recargar - Monto de recarga requerido para hacer valida a promoción.\r\n Tipo de Cantidad a reembolsar - Se refiere a la cantidad reembolsada será Porcentaje o Cantidad fija.
    \r\n Cantidad a reembolsar - cantidad de reembolso en función del Tipo de Cantidad a reembolsar.
    \r\n \r\n : <>\r\n Tipo de Cantidad a reembolsar - Se refiere a la cantidad reembolsada será Porcentaje o Cantidad fija.
    \r\n Cantidad a reembolsar - cantidad de reembolso en función del Tipo de Cantidad a reembolsar.
    \r\n \r\n }\r\n Medios donde aplica - Campo seleccionable con los dispositivos donde se podrá hacer el canje de la promoción.
    \r\n Descripción en APP - En caso de seleccionar que la promoción aplica para la APP, este campo será requerido.
    \r\n

    }\r\n \r\n
    \r\n
    \r\n
    \r\n
    setState({...state, show_info_equivalencias: !state.show_info_equivalencias, show_info: false, show_info_clasificacion: false, show_info_end: false })}>\r\n
    \r\n

    3. Productos

    \r\n
    \r\n
    \r\n
    \r\n

    \r\n Sección para seleccionar los productos que aplican en la promoción. Si la promoción es Combo o QR se deberá especificar al menos una colección de productos base.\r\n\r\n

    \r\n \r\n\r\n
    \r\n
    \r\n
    \r\n
    setState({...state, show_info_clasificacion: !state.show_info_clasificacion, show_info: false, show_info_end: false, show_info_equivalencias: false })}>\r\n
    \r\n

    4. Drives

    \r\n
    \r\n
    \r\n
    \r\n

    \r\n En esta sección debe seleccionar los puntos de ventas que aplican en la promoción.\r\n

    \r\n
    \r\n
    \r\n
    \r\n
    setState({ ...state, show_info_end: !state.show_info_end, show_info: false, show_info_clasificacion: false, show_info_equivalencias: false })}>\r\n
    \r\n

    5. Restricciones

    \r\n
    \r\n
    \r\n
    \r\n Seleccione las restricciones de la promoción\r\n
    \r\n
    \r\n
    \r\n \r\n
    \r\n
    \r\n \r\n :\"\"\r\n }\r\n\r\n {/* Modal preview */}\r\n {state.modalConfirm &&\r\n savePromotion()}\r\n cancel={() => setState({...state, modalConfirm: false})}\r\n modalTitle={\"Resumen\"}\r\n width=\"75%\"\r\n modalBody={\r\n
    \r\n
    \r\n
    setState({ ...state, show_info_confirm: !state.show_info_confirm})}>\r\n

    Información básica

    \r\n
    \r\n
    \r\n
    \r\n

    \r\n\r\n Nombre POS - {state.promotion && state.promotion.Name ? state.promotion.Name : ''}\r\n
    \r\n Nombre Ticket - {state.promotion && state.promotion.ShortName ? state.promotion.ShortName : ''}\r\n
    \r\n Fecha lanzamiento - {state.promotion && state.promotion.InitDate ? moment(state.promotion.InitDate).format(\"YYYY/MM/DD HH:mm\") : ''}\r\n
    \r\n Fecha fin - {state.promotion && state.promotion.EndDate ? moment(state.promotion.EndDate).format(\"YYYY/MM/DD HH:mm\") : ''}\r\n
    \r\n Tipo promoción - {state.promotion && state.promotion.idTipoPromo ? state.promotion.idTipoPromo.label : \"\"}\r\n
    \r\n Promoción automática- {state.promotion && state.promotion.Auto ? 'SI' : \"NO\"}\r\n
    \r\n

    \r\n
    \r\n
    \r\n
    \r\n\r\n
    \r\n
    {e.preventDefault(); setState({ ...state, detail_confirm: !state.detail_confirm})}}>\r\n

    Detalle promoción

    \r\n
    \r\n
    \r\n
    \r\n {esTipoCombo() || esTipoDescuento() ?\r\n

    \r\n Tipo descuento - {state.detalle && state.detalle.idTipoDescuento ? state.detalle.idTipoDescuento.label : ''}\r\n
    \r\n Cantidad - {state.detalle && state.detalle.quantity ? state.detalle.quantity : ''}\r\n
    \r\n Recursividad - {state.detalle && state.detalle.isRecursiveDescuentoSelected ? state.detalle.isRecursiveDescuentoSelected .label : ''}\r\n
    \r\n ¿Cantidad mínima de producto? - {state.detalle && state.detalle.checkCantidadMinima ? 'SI' : 'NO'}\r\n
    \r\n {state.detalle && state.detalle.checkCantidadMinima &&

    \r\n Cantidad mínima - {state.detalle && state.detalle.checkCantidadMinima && state.detalle.minProducts ? state.detalle.minProducts : \"\"}\r\n
    \r\n

    }\r\n \r\n Medios donde aplica - {state.detalle && state.detalle.aplicaPara ? state.detalle.aplicaPara.map((l,inx)=>`${l.label}${inx+1 ===state.detalle.aplicaPara.length ?'':',' } `) : \"\"}\r\n
    \r\n {\r\n state.detalle && state.aplicaPara && state.aplicaPara.some(s=>s.label ==='App') \r\n && \r\n

    Descripción en APP - {state.detalle.descripcionAPP}

    \r\n }\r\n \r\n

    \r\n :

    \r\n \r\n Tipo de reembolso - {state.detalle && state.detalle.idTipoReembolso ? state.detalle.idTipoReembolso.label: ''}
    \r\n Tipo de regalo - {state.detalle && state.detalle.idTipoRegalo ? state.detalle.idTipoRegalo.label: ''}
    \r\n {esReembolso() && state.detalle && state.detalle.idTipoReembolso && state.detalle.idTipoReembolso.label == 'Por recarga' \r\n ? <>\r\n Recursividad - {state.detalle && state.detalle.isRecursiveSelected ? state.detalle.isRecursiveSelected.label: ''}
    \r\n Cantidad a recargar - {state.detalle && state.detalle.quantityToRecharge ? state.detalle.quantityToRecharge : ''}
    \r\n Tipo de Cantidad a reembolsar - {state.detalle && state.detalle.isPercentageSelected ? state.detalle.isPercentageSelected.label : ''}
    \r\n Cantidad a reembolsar - {state.detalle && state.detalle.quantity ? state.detalle.quantity : ''}
    \r\n \r\n : <>\r\n Tipo de Cantidad a reembolsar - {state.detalle && state.detalle.isPercentageSelected ? state.detalle.isPercentageSelected.label : ''}
    \r\n Cantidad a reembolsar - {state.detalle && state.detalle.quantity ? state.detalle.quantity : ''}
    \r\n \r\n } \r\n
    \r\n Medios donde aplica - {state.detalle && state.detalle.aplicaPara ? state.detalle.aplicaPara.map(l=>l.label +', ') : \"\"}\r\n
    \r\n {\r\n state.detalle && state.aplicaPara && state.aplicaPara.some(s=>s.label ==='App') \r\n && \r\n

    Descripción en APP - {state.detalle.descripcionAPP}

    \r\n }\r\n

    }\r\n
    \r\n
    \r\n
    \r\n\r\n {state.productos && \r\n
    \r\n
    {e.preventDefault(); setState({ ...state, products_confirm: !state.products_confirm})}}>\r\n

    Productos

    \r\n
    \r\n
    \r\n
    \r\n
    \r\n
    \r\n {}}\r\n isBaseApply={false}/>\r\n
    \r\n
    \r\n
    \r\n
    \r\n
    \r\n }\r\n {state.drives && \r\n
    \r\n
    {e.preventDefault(); setState({ ...state, drives_confirm: !state.drives_confirm})}}>\r\n

    Puntos de venta

    \r\n
    \r\n
    \r\n
    \r\n

    \r\n {state.drives.length !== 0 \r\n ? \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n {state.pagedrivesAsignados && state.pagedrivesAsignados.map((item, index) => {\r\n return (\r\n \r\n \r\n \r\n \r\n )\r\n })}\r\n \r\n
    NombreCiudad
    {item.NombreNuevo}{item.Municipality}
    \r\n :}\r\n setState({...state ,pagedrivesAsignados: drives })} />\r\n

    \r\n
    \r\n
    \r\n
    \r\n }\r\n
    \r\n
    {e.preventDefault(); setState({ ...state, restrictions_confirm: !state.restrictions_confirm})}}>\r\n

    Restricciones

    \r\n
    \r\n
    \r\n
    \r\n

    \r\n {state.restriccionesResum && state.restriccionesResum.length > 0\r\n ? state.restriccionesResum.map(res => {\r\n return(

    {res.title && res.title.length > 0\r\n ?


    \r\n : res.restrictions.map(r => { return


    })\r\n }
    ) })\r\n : 'Ninguno'}\r\n

    \r\n
    \r\n
    \r\n
    \r\n \r\n
    \r\n\r\n\r\n }\r\n />\r\n }\r\n \r\n
    \r\n \r\n
    \r\n
    \r\n )\r\n}\r\n","import React, { useState, useEffect } from 'react';\r\nimport { Formik } from 'formik';\r\nimport * as Yup from 'yup';\r\n// Components\r\nimport Modal from '../util/modal/Modal';\r\nimport Field from '../util/field/Field';\r\n\r\nconst SCHEMA = Yup.object({\r\n Description: Yup.string().trim()\r\n .min(3, 'Requiere al menos 3 caracteres')\r\n .max(40, 'Ha excedido el límite de 40 caracteres.')\r\n .required(\"El campo 'Nombre' es requerido.\"),\r\n Percentage: Yup.number()\r\n .min(0, \"Ingrese valores mayores a 0.\")\r\n .max(1, 'Solo puede ingresar valores entre 0 a 1.')\r\n .required(\"El campo 'Porcentaje' es requerido.\"),\r\n TaxGP:Yup.string().trim()\r\n .min(3, 'Requiere al menos 3 caracteres')\r\n .max(15, 'Ha excedido el límite de 15 caracteres.')\r\n .required(\"El campo 'GP' es requerido.\"),\r\n})\r\n\r\n// Solo permite números, sin signos ni exponenciales\r\nconst onKeyPressNumber = (event) => {\r\n const keyCode = event.keyCode || event.which;\r\n const keyValue = String.fromCharCode(keyCode);\r\n if (/\\+|-|e|E/.test(keyValue))\r\n event.preventDefault();\r\n}\r\n\r\n/**\r\n * Componente modal para editar o crear tasa de impuestos.\r\n * @param { Function } onClose - Funcion para cerrar el modal \r\n * @returns \r\n */\r\nexport const ModalTasaImpuesto = ({ impuesto, onClose, isEditing, onSave }) => {\r\n\r\n const [state, setState] = useState({\r\n isLoading: false,\r\n });\r\n\r\n return (\r\n onClose()}\r\n >\r\n {\r\n let valuesToSave = {...values};\r\n valuesToSave.Description = values.Description.trim();\r\n valuesToSave.TaxGP = values.TaxGP.trim();\r\n onSave(isEditing, { ...valuesToSave })\r\n }}>\r\n {({ values, touched, errors, handleChange, handleBlur, handleSubmit, setFieldValue, setFieldTouched }) => (\r\n
    \r\n
    \r\n
    \r\n \r\n handleChange(e)}\r\n\r\n />\r\n \r\n
    \r\n
    \r\n \r\n handleChange(e)}\r\n\r\n />\r\n \r\n
    \r\n\r\n
    \r\n \r\n handleChange(e)}\r\n\r\n />\r\n \r\n
    \r\n
    \r\n\r\n
    \r\n
    \r\n
    \r\n \r\n
    \r\n
    \r\n
    \r\n
    \r\n\r\n )}\r\n\r\n \r\n \r\n\r\n )\r\n}","import { apiUrl } from \"../constants\";\r\nimport axios from 'axios';\r\nimport middleware from '../middleware/auth';\r\n\r\nvar request = axios.create({\r\n baseURL: apiUrl,\r\n headers: {'Authorization': 'Bearer ' + localStorage.getItem('token'),'Content-Type':'application/json'}\r\n})\r\nexport default class TaxRateAPI {\r\n \r\n\r\n /**\r\n * Get Taxes by id\r\n * @returns response promise\r\n */\r\n static getById(id) {\r\n return request.get(`/TaxRate/${id}`);\r\n }\r\n /**\r\n * Get all Taxes\r\n * @returns response promise\r\n */\r\n static getAll() {\r\n return request.get(`/TaxRate`);\r\n }\r\n\r\n /**\r\n * Creates new taxes\r\n * @param {*} data data taxes\r\n * @returns response promise\r\n */\r\n static create(data) {\r\n return request.post(`/TaxRate`, data);\r\n }\r\n\r\n /**\r\n * Update tax\r\n * @param {*} data data taxes\r\n * @returns response promise\r\n */\r\n static update(id, data) {\r\n return request.put(`/TaxRate/${id}`, data);\r\n }\r\n}","import React, { useEffect, useState } from 'react';\r\n\r\n// Components\r\nimport NoItems from '../util/noitems/NoItems';\r\nimport Pagination from '../util/pagination/Pagination';\r\nimport Loading from '../util/loading/Loading';\r\nimport { ModalTasaImpuesto } from './ModalTasaImpuesto';\r\n\r\n// Utils\r\nimport { toast } from 'react-toastify';\r\n\r\n// Services\r\nimport TaxRateAPI from '../../services/TaxRate';\r\n\r\n\r\n/**\r\n * Componente para modulo de Tasa de impuestos.\r\n * @returns Component\r\n */\r\nexport const CatalogoImpuestos = () => {\r\n const [state, setState] = useState({\r\n pages: [],\r\n isLoading: false,\r\n listImpuestos: [],\r\n impuestoSelected: null,\r\n filterText: '',\r\n modalVisible: false,\r\n isEditing: false\r\n });\r\n\r\n useEffect(() => {\r\n setState({ ...state, isLoading: true });\r\n let impuestos = [];\r\n let allPages = [];\r\n\r\n TaxRateAPI.getAll()\r\n .then(res => {\r\n allPages = res.data;\r\n impuestos = res.data;\r\n })\r\n .catch(err => {\r\n toast.error('Ocurrio un error al consulatar las tasas de impuesto.');\r\n console.error(err);\r\n })\r\n .finally(() => setState({\r\n ...state,\r\n isLoading: false,\r\n pages: allPages,\r\n listImpuestos: impuestos,\r\n }));\r\n\r\n setState({\r\n ...state,\r\n isLoading: false,\r\n pages: [],\r\n listImpuestos: [],\r\n })\r\n }, []);\r\n\r\n /***\r\n * Filtra tasa de impuestos\r\n */\r\n const handleSearchInput = (text) => {\r\n let filterText = text;\r\n let pages = [];\r\n if (text && text.length > 0) {\r\n pages = state.listImpuestos.filter(p => {\r\n if (p.Description.includes(filterText)) {\r\n return p;\r\n }\r\n })\r\n } else {\r\n pages = state.listImpuestos;\r\n }\r\n setState({ ...state, filterText, pages });\r\n }\r\n\r\n /**\r\n * Edita o actualiza tasa de impuesto\r\n * @param {*} isEditing bandera para saber si el regitro se esta actualizando o es nuevo\r\n * @param {*} obj objeto a guardar\r\n */\r\n const handledSave = (isEditing, obj) => {\r\n setState({ ...state, isLoading: true });\r\n\r\n if (isEditing) {\r\n update(obj);\r\n } else {\r\n create(obj);\r\n }\r\n }\r\n\r\n /**\r\n * Crea tasa de impuesto\r\n * @param {*} obj \r\n */\r\n const create = (obj) => {\r\n let allPages = state.allPages;\r\n let listImpuestos = state.listImpuestos;\r\n\r\n TaxRateAPI.create(obj)\r\n .then(response => {\r\n toast.success('Tasa de impuesto guardado.');\r\n // actualiza listado\r\n allPages = response.data;\r\n listImpuestos = response.data;\r\n })\r\n .catch(err => {\r\n let message = '';\r\n try {\r\n message = err.status === 500 ? 'Ocurrio un error al guardar tasa de impuesto.' : err.response.data;\r\n } catch (error) {\r\n message = 'Ocurrio un error al guardar tasa de impuesto.' ;\r\n } finally {\r\n toast.error(message);\r\n setState({ ...state, isLoading: false });\r\n }\r\n }).finally(() => {\r\n setState({ ...state, isLoading: false, listImpuestos, allPages, modalVisible:false })\r\n })\r\n }\r\n\r\n /**\r\n * Actualiza tasa de impuesto\r\n * @param {*} obj \r\n */\r\n const update = (obj) => {\r\n let allPages = state.allPages;\r\n let listImpuestos = state.listImpuestos;\r\n\r\n TaxRateAPI.update(obj.TaxRateId, obj)\r\n .then(response => {\r\n toast.success('Tasa de impuesto actualizado.');\r\n allPages = response.data;\r\n listImpuestos = response.data;\r\n })\r\n .catch(err => {\r\n let message = '';\r\n try {\r\n message = err.status === 500 ? 'Ocurrio un error al actualizar tasa de impuesto.' : err.response.data;\r\n } catch (error) {\r\n message = 'Ocurrio un error al actualizar tasa de impuesto.' ;\r\n } finally {\r\n toast.error(message);\r\n setState({ ...state, isLoading: false });\r\n }\r\n })\r\n .finally(() => {\r\n setState({ ...state, isLoading: false, listImpuestos, allPages,modalVisible:false, impuestoSelected:null, isEditing:false })\r\n })\r\n }\r\n\r\n return (\r\n
    \r\n {\r\n state.isLoading &&\r\n \r\n }\r\n

    Catálogo de Tasa de impuesto

    \r\n \r\n {/* Filtros */}\r\n
    \r\n
    \r\n
    \r\n
    \r\n
    \r\n handleSearchInput(e.currentTarget.value || '')}\r\n />\r\n
    \r\n
    \r\n
    \r\n {/* */}\r\n
    \r\n
    \r\n
    \r\n
    \r\n
    \r\n\r\n\r\n {/* Tabla de resultados */}\r\n
    \r\n
    \r\n {\r\n state.listImpuestos.length !== 0 ?\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n {\r\n state.pages.map(suc =>\r\n \r\n \r\n \r\n \r\n\r\n \r\n \r\n )\r\n }\r\n \r\n
    ImpuestoPorcentajeGPAcciones
    {suc.Description}{suc.Percentage}{suc.TaxGP}\r\n setState({ ...state, modalVisible: true, impuestoSelected: suc, isEditing: true })}\r\n >\r\n Editar\r\n \r\n
    \r\n : \r\n }\r\n setState({ ...state, pages: suc })}\r\n />\r\n
    \r\n
    \r\n {state.modalVisible &&\r\n handledSave(isEditing, data)}\r\n impuesto={state.impuestoSelected}\r\n onClose={() => setState({ ...state, modalVisible: false, impuestoSelected: null, isLoading: false })}\r\n isEditing={state.isEditing}\r\n />\r\n }\r\n
    \r\n )\r\n}","import { apiUrl } from \"../../constants\";\r\nimport axios from \"axios\";\r\nvar request = axios.create({\r\n baseURL: apiUrl,\r\n headers: {'Authorization':'Bearer ' +localStorage.getItem('token'),'Content-Type':'application/json'}\r\n})\r\n\r\nexport default class ReportesConcilicacionAPI {\r\n static getByDate(fechas) {\r\n return request.post('/ReporteConciliacion/GetByDate', fechas);\r\n }\r\n}","import React, { Component } from \"react\";\r\nimport Select from \"react-select\";\r\nimport NoItems from \"../../util/noitems/NoItems\";\r\nimport PaginationReports from \"../../util/pagination/PaginationReports\";\r\nimport Loading from \"../../util/loading/Loading\";\r\nimport DatePicker from \"react-datepicker\";\r\nimport moment from \"moment\";\r\nimport { toast } from \"react-toastify\";\r\nimport CaffenioDriveAPI from \"../../../services/caffenioDrive\";\r\nimport ExportExcel from \"react-export-excel\";\r\nimport ReportesConcilicacionAPI from \"../../../services/Reportes/ReportesConciliacion\";\r\n\r\n// Creamos instancias para el package export excel.\r\n// Variable que indica el archivo de excel que se crea.\r\nconst ExcelFile = ExportExcel.ExcelFile;\r\n// Variable que indica una hoja de excel.\r\nconst ExcelSheet = ExportExcel.ExcelSheet;\r\n// Variable que indica una columna de excel.\r\nconst ExcelColumn = ExportExcel.ExcelColumn;\r\n\r\nclass ReporteConciliacion extends Component {\r\n state = {\r\n isLoading: false,\r\n conciliaciones: [],\r\n conciliacionesFilter: [],\r\n conciliacioneSelect: null,\r\n fechaInicio: null,\r\n fechaFin: null,\r\n pageConciliaciones: [],\r\n conciliacionesChecked: [],\r\n // States relacionados a los dropdowns de los drives\r\n selectedOption: [],\r\n selectedOptionC: [],\r\n selectedOptionB: [],\r\n selectedOptionD: [],\r\n OptionSelect: [],\r\n OptionSelectCity: [],\r\n OptionSelectBranch: [],\r\n OptionSelectDrive: [],\r\n optionState: [],\r\n optionCity: [],\r\n optionBranch: [],\r\n optionDrive: [],\r\n Caffenios: [],\r\n childVisible: false,\r\n checkAll: false,\r\n showModal: false,\r\n creatingPDF: false,\r\n };\r\n\r\n componentDidMount() {\r\n window.scrollTo(0, 0);\r\n this.setState({ isLoading: true }, () => {\r\n let state = { ...this.state };\r\n CaffenioDriveAPI.getCaffenios()\r\n .then((response) => {\r\n state.Caffenios = response.data;\r\n state.Caffenios.map((producto) => {\r\n producto.statusCheck = false;\r\n return producto;\r\n });\r\n state.optionState = this.select_state(state.Caffenios);\r\n state.optionCity = this.select_city(state.Caffenios);\r\n state.optionBranch = this.select_branch(state.Caffenios);\r\n state.optionDrive = this.select_Drive(state.Caffenios);\r\n state.isLoading = false;\r\n this.setState(state);\r\n })\r\n .catch((err) => toast.error(err.response.data.Message));\r\n });\r\n }\r\n\r\n handleDateChange = (date, tipoFecha) => {\r\n let state = { ...this.state };\r\n state[tipoFecha] = date;\r\n this.setState(state, () => this.ConsultarConciliacionesPorFecha());\r\n };\r\n\r\n //#region Funciones para los dropdowns relacionados a los drives (Es copypaste de los dropdowns de la configuracion de drives)\r\n select_state(Caffenios) {\r\n // Llenar el combo 'Estados' con todas las opciones\r\n var newArray = [];\r\n let OptionSelect = [];\r\n var lookupObject = {};\r\n Caffenios.map((item) => {\r\n OptionSelect.push({ value: item.StateId, label: item.State });\r\n });\r\n\r\n for (var i in OptionSelect) {\r\n lookupObject[OptionSelect[i][\"value\"]] = OptionSelect[i];\r\n }\r\n\r\n for (i in lookupObject) {\r\n newArray.push(lookupObject[i]);\r\n }\r\n\r\n return newArray;\r\n }\r\n\r\n select_city(Caffenios) {\r\n // Llenar el combo 'Ciudades' con todas las opciones\r\n var newArray = [];\r\n let OptionSelectCity = [];\r\n var lookupObject = {};\r\n Caffenios.map((item) => {\r\n OptionSelectCity.push({\r\n value: item.Municipalityid,\r\n label: item.Municipality,\r\n });\r\n });\r\n\r\n for (var i in OptionSelectCity) {\r\n lookupObject[OptionSelectCity[i][\"value\"]] = OptionSelectCity[i];\r\n }\r\n\r\n for (i in lookupObject) {\r\n newArray.push(lookupObject[i]);\r\n }\r\n\r\n return newArray;\r\n }\r\n\r\n select_branch(Caffenios) {\r\n // Llenar el combo 'Sucursales' con todas las opciones\r\n var newArray = [];\r\n let OptionSelectBranch = [];\r\n var lookupObject = {};\r\n Caffenios.map((item) => {\r\n OptionSelectBranch.push({ value: item.Branch, label: item.Branch });\r\n });\r\n\r\n for (var i in OptionSelectBranch) {\r\n lookupObject[OptionSelectBranch[i][\"value\"]] = OptionSelectBranch[i];\r\n }\r\n\r\n for (i in lookupObject) {\r\n newArray.push(lookupObject[i]);\r\n }\r\n\r\n return newArray;\r\n }\r\n\r\n select_Drive(Caffenios) {\r\n // Llenar el combo 'Drives' con todas las opciones\r\n var newArray = [];\r\n let OptionSelectDrive = [];\r\n var lookupObject = {};\r\n Caffenios.map((item) => {\r\n OptionSelectDrive.push({\r\n value: item.idCaffenio,\r\n label: item.NombreNuevo,\r\n });\r\n });\r\n\r\n for (var i in OptionSelectDrive) {\r\n lookupObject[OptionSelectDrive[i][\"value\"]] = OptionSelectDrive[i];\r\n }\r\n\r\n for (i in lookupObject) {\r\n newArray.push(lookupObject[i]);\r\n }\r\n\r\n return newArray;\r\n }\r\n\r\n eliminarObjDuplicados = (arr, prop) => {\r\n var nuevoArray = [];\r\n var lookup = {};\r\n\r\n for (var i in arr) {\r\n lookup[arr[i][prop]] = arr[i];\r\n }\r\n\r\n for (i in lookup) {\r\n nuevoArray.push(lookup[i]);\r\n }\r\n\r\n return nuevoArray;\r\n };\r\n\r\n changeSelectEstado = (obj) => {\r\n let state = { ...this.state };\r\n state[\"selectedOption\"] = obj;\r\n let idEstado = obj.map((estado) => {\r\n return estado.value;\r\n });\r\n let objCaffenios = [...state.Caffenios];\r\n let listaCiudades = [];\r\n let listaDrives = [];\r\n\r\n // Recorrer objeto Caffenios y encontrar coincidencias sin eliminar duplicados\r\n objCaffenios.map((item) => {\r\n for (var i = 0; i < idEstado.length; i++) {\r\n if (item.StateId === idEstado[i]) {\r\n listaCiudades.push({\r\n value: item.Municipalityid,\r\n label: item.Municipality,\r\n });\r\n }\r\n }\r\n });\r\n\r\n //Se eliminan las ciudades duplicadas\r\n let eliminarDuplicados = this.eliminarObjDuplicados(listaCiudades, \"value\");\r\n //Se obtiene un arreglo con los id de las ciudades\r\n let idCiudad = eliminarDuplicados.map((ciudad) => {\r\n return ciudad.value;\r\n });\r\n\r\n //Se buscan coincidencias entre ciudad y drive y se genera la lista de drives\r\n objCaffenios.map((item) => {\r\n for (var i = 0; i < idCiudad.length; i++) {\r\n if (item.Municipalityid === idCiudad[i]) {\r\n listaDrives.push({ value: item.idCaffenio, label: item.NombreNuevo });\r\n }\r\n }\r\n });\r\n\r\n //Se limpian los combos 'Ciudades' y 'Drives'\r\n state[\"selectedOptionC\"] = [];\r\n state[\"selectedOptionD\"] = [];\r\n\r\n //Se valida que haya una opción seleccionada en combo 'Estados'\r\n if (obj.length === 0) {\r\n state[\"optionCity\"] = this.select_city(state.Caffenios);\r\n state[\"optionDrive\"] = this.select_Drive(state.Caffenios);\r\n } else {\r\n state[\"optionCity\"] = eliminarDuplicados;\r\n state[\"optionDrive\"] = listaDrives;\r\n }\r\n\r\n this.setState(state, () => this.FilterProcess());\r\n };\r\n\r\n changeSelectCiudad = (obj) => {\r\n let state = { ...this.state };\r\n let idCiudad = obj.map((ciudad) => {\r\n return ciudad.value;\r\n });\r\n let objCaffenios = [...state.Caffenios];\r\n let listaDrives = [];\r\n\r\n //Se buscan coincidencias entre ciudad y drive y se genera la lista de drives\r\n objCaffenios.map((item) => {\r\n for (var i = 0; i < idCiudad.length; i++) {\r\n if (item.Municipalityid === idCiudad[i]) {\r\n listaDrives.push({ value: item.idCaffenio, label: item.NombreNuevo });\r\n }\r\n }\r\n });\r\n\r\n //Se limpia el combo 'Drives'\r\n state[\"selectedOptionD\"] = [];\r\n\r\n //Se valida que haya una opción seleccionada en combo 'Ciudades'\r\n if (obj.length > 0) {\r\n state[\"selectedOptionC\"] = obj;\r\n state[\"optionDrive\"] = listaDrives;\r\n this.setState(state, () => this.FilterProcess());\r\n } else {\r\n this.changeSelectEstado(state[\"selectedOption\"]);\r\n }\r\n };\r\n\r\n changeSelectSucursal = (objSucursal, objDrive) => {\r\n let state = { ...this.state };\r\n let idSucursal = objSucursal.map((sucursal) => {\r\n return sucursal.value;\r\n });\r\n let objCaffenios = [...state.Caffenios];\r\n let listaDrives = [];\r\n\r\n //Se buscan coincidencias entre sucursal y drive y se genera la lista de drives\r\n objCaffenios.map((item) => {\r\n for (var i = 0; i < idSucursal.length; i++) {\r\n if (item.Branch === idSucursal[i]) {\r\n listaDrives.push({ value: item.idCaffenio, label: item.NombreNuevo });\r\n }\r\n }\r\n });\r\n\r\n // Validar si no existen drives seleccionados, resetear el filtro de drives.\r\n if (objDrive.length === 0) {\r\n //Se limpia el combo 'Drives'\r\n state[\"selectedOptionD\"] = [];\r\n }\r\n\r\n //Se valida que haya una opción seleccionada en combo 'Sucursales'\r\n state[\"selectedOptionB\"] = objSucursal;\r\n if (objSucursal.length > 0) {\r\n state[\"optionDrive\"] = listaDrives;\r\n } else {\r\n //Se limpia el combo 'Drives'\r\n state[\"selectedOptionD\"] = [];\r\n state[\"optionDrive\"] = this.select_Drive(state.Caffenios);\r\n }\r\n this.setState(state, () => this.FilterProcess());\r\n };\r\n\r\n changeSelectDrive = (obj) => {\r\n let state = { ...this.state };\r\n let Caffenios = [...state.Caffenios];\r\n\r\n //Valida cada select (Estados,Ciudades,Drives) y realiza la acción correspondiente\r\n if (obj.length > 0) {\r\n state[\"selectedOptionD\"] = obj;\r\n //state[\"optionDrive\"] = obj;\r\n this.setState(state, () => this.FilterProcess());\r\n } else if (state[\"selectedOptionC\"].length === 0) {\r\n this.changeSelectEstado(state[\"selectedOption\"]);\r\n // resetear lista de drives con el primer filtro.\r\n this.changeSelectSucursal(state[\"selectedOptionB\"], obj);\r\n } else if (\r\n state[\"selectedOptionC\"].length === 0 &&\r\n state[\"selectedOption\"].length === 0\r\n ) {\r\n this.select_Drive(Caffenios);\r\n this.select_Drive(Caffenios);\r\n this.select_Drive(Caffenios);\r\n } else {\r\n this.changeSelectCiudad(state[\"selectedOptionC\"]);\r\n }\r\n };\r\n\r\n validarCombos = (state) => {\r\n var status_combo = false; // Vacios\r\n\r\n if (state[\"selectedOption\"].length > 0) {\r\n status_combo = true; // Alguno con valor\r\n }\r\n\r\n if (state[\"selectedOptionC\"].length > 0) {\r\n status_combo = true; // Alguno con valor\r\n }\r\n\r\n if (state[\"selectedOptionD\"].length > 0) {\r\n status_combo = true; // Alguno con valor\r\n }\r\n\r\n return status_combo;\r\n };\r\n //#endregion\r\n\r\n /**\r\n * Se ejecuta al seleccionar un rango de fechas.\r\n * Hace una petición a la API para obtener los reportes de conciliaciones que están entre las fechas seleccionadas\r\n */\r\n ConsultarConciliacionesPorFecha = () => {\r\n if (this.state.fechaInicio != null && this.state.fechaFin != null) {\r\n this.setState({ isLoading: true }, () => {\r\n let body = {\r\n FechaInicio: this.state.fechaInicio,\r\n FechaFin: this.state.fechaFin,\r\n };\r\n let state = { ...this.state };\r\n ReportesConcilicacionAPI.getByDate(body)\r\n .then((response) => {\r\n state.conciliaciones = response.data;\r\n state.conciliacionesChecked = [];\r\n state.isLoading = false;\r\n this.setState(state, () => {\r\n this.FilterProcess();\r\n });\r\n })\r\n .catch((err) => {\r\n state.isLoading = false;\r\n state.conciliacionesChecked = [];\r\n toast.error(err.response.data.Message);\r\n this.setState(state);\r\n });\r\n });\r\n }\r\n };\r\n\r\n /**\r\n * Se ejecuta al seleccionar un valor de los dropdowns relacionados a los drives (estados, ciudades, drives)\r\n * Lo que hace es filtrar los drives segun los valores de los dropdowns y tambien filtra los resultados de los reportes de conciliaciones.\r\n * OJO. Esta función no hace peticiones a la API, solo filtra valores que estan en los states\r\n */\r\n FilterProcess = () => {\r\n let state = { ...this.state };\r\n let Caffenios = state.Caffenios;\r\n var status_combo; // Vacios\r\n let driveIds;\r\n let drivesSelected = [];\r\n\r\n if (state[\"selectedOptionD\"].length === 0) {\r\n driveIds = state[\"optionDrive\"].map((obj) => {\r\n return obj.value;\r\n });\r\n } else {\r\n driveIds = state[\"selectedOptionD\"].map((obj) => {\r\n return obj.value;\r\n });\r\n }\r\n\r\n // Validar si existen drives seleccionados para comparar entre las\r\n // sucursales y drives y obtener la lista actual de drives seleccinados.\r\n if (state[\"selectedOptionD\"].length > 0) {\r\n state[\"optionDrive\"].map((obj) => {\r\n for (var i = 0; i < state[\"selectedOptionD\"].length; i++) {\r\n if (obj.value === state[\"selectedOptionD\"][i].value) {\r\n drivesSelected.push(state[\"selectedOptionD\"][i]);\r\n }\r\n }\r\n });\r\n // Actualizar los drives seleccionados por sucursales seleccionadas.\r\n state[\"selectedOptionD\"] = drivesSelected;\r\n }\r\n\r\n status_combo = this.validarCombos(state);\r\n\r\n Caffenios = Caffenios.filter((obj2) => {\r\n if (\r\n driveIds.filter((item) => {\r\n return item === obj2.idCaffenio;\r\n }).length > 0\r\n ) {\r\n return obj2;\r\n }\r\n });\r\n\r\n state.conciliacionesFilter = state.conciliaciones.filter((conciliacion) => {\r\n return (\r\n driveIds.findIndex((driveId) => {\r\n return driveId === conciliacion.idCaffenio;\r\n }) !== -1\r\n );\r\n });\r\n this.setState(state);\r\n };\r\n\r\n selectAllCheck = () => {\r\n let state = { ...this.state };\r\n\r\n state.checkAll = !state.checkAll;\r\n // Insertar o quitar los ids de la pagina actual\r\n state.pageConciliaciones.findIndex((item) => {\r\n let indexCheck = state.conciliacionesChecked.findIndex(\r\n (conciliacion) => item.idArqueoConciliacion === conciliacion\r\n );\r\n if (state.checkAll) {\r\n if (indexCheck === -1)\r\n state.conciliacionesChecked.push(item.idArqueoConciliacion);\r\n } else {\r\n if (indexCheck !== -1) {\r\n state.conciliacionesChecked.splice(indexCheck, 1);\r\n }\r\n }\r\n });\r\n state.childVisible = state.conciliacionesChecked.length > 0;\r\n this.setState(state);\r\n };\r\n\r\n /**\r\n * Se ejecuta al darle click a un checkbox de un renglón.\r\n * Lo que hace es determinar si el checkbox del header se tiene que marcar o no\r\n */\r\n showView = () => {\r\n let state = { ...this.state };\r\n let cheked = false;\r\n let checkAllTemp = true;\r\n state.pageConciliaciones.map((item) => {\r\n if (\r\n state.conciliacionesChecked.findIndex(\r\n (conciliacion) => item.idArqueoConciliacion === conciliacion\r\n ) !== -1\r\n ) {\r\n cheked = true;\r\n } else {\r\n checkAllTemp = false;\r\n }\r\n });\r\n\r\n this.setState({\r\n childVisible: state.conciliacionesChecked.length > 0,\r\n checkAll: checkAllTemp,\r\n });\r\n };\r\n\r\n // Select all branch offices of the list and add to filter.\r\n selectAllBranchOffices = () => {\r\n let state = { ...this.state };\r\n state[\"selectedOptionB\"] = this.state.optionBranch;\r\n this.setState(state, () => this.FilterProcess());\r\n };\r\n\r\n // Select all drives of the list and add to filter.\r\n selectAllDrives = () => {\r\n let state = { ...this.state };\r\n state[\"selectedOptionD\"] = this.state.optionDrive;\r\n this.setState(state, () => this.FilterProcess());\r\n };\r\n\r\n // Function for convert to value decimal with format of value coin.\r\n formatCoin = (cash) => {\r\n const options2 = { style: \"currency\", currency: \"MXN\" };\r\n const cashFormated = new Intl.NumberFormat(\"es-MX\", options2);\r\n return cashFormated.format(cash);\r\n };\r\n\r\n render() {\r\n let fechaHoy = new Date();\r\n return (\r\n
    \r\n

    Conciliaciones

    \r\n
    \r\n
    \r\n
    \r\n
    \r\n \r\n this.handleDateChange(e, \"fechaInicio\")}\r\n startDate={this.state.fechaInicio}\r\n endDate={this.state.fechaFin}\r\n maxDate={this.state.fechaFin ? this.state.fechaFin : fechaHoy}\r\n popperPlacement=\"bottom\"\r\n popperModifiers={{\r\n offset: {\r\n enabled: true,\r\n offset: \"5px, 20px\",\r\n },\r\n preventOverflow: {\r\n enabled: true,\r\n escapeWithReference: false,\r\n boundariesElement: \"viewport\",\r\n },\r\n }}\r\n locale=\"es\"\r\n todayButton=\"Hoy\"\r\n dateFormat=\"dd/MM/yyyy\"\r\n className=\"input\"\r\n autoComplete={\"off\"}\r\n />\r\n
    \r\n
    \r\n \r\n this.handleDateChange(e, \"fechaFin\")}\r\n disabled={this.state.fechaInicio == null}\r\n startDate={this.state.fechaInicio}\r\n endDate={this.state.fechaFin}\r\n minDate={this.state.fechaInicio}\r\n maxDate={fechaHoy}\r\n popperPlacement=\"bottom\"\r\n popperModifiers={{\r\n offset: {\r\n enabled: true,\r\n offset: \"5px, 20px\",\r\n },\r\n preventOverflow: {\r\n enabled: true,\r\n escapeWithReference: false,\r\n boundariesElement: \"viewport\",\r\n },\r\n }}\r\n locale=\"es\"\r\n todayButton=\"Hoy\"\r\n dateFormat=\"dd/MM/yyyy\"\r\n className=\"input\"\r\n autoComplete={\"off\"}\r\n />\r\n
    \r\n\r\n
    \r\n \r\n
    \r\n \"No hay opciones\"}\r\n options={this.state.optionBranch}\r\n closeMenuOnSelect={false}\r\n />\r\n
    \r\n
    \r\n\r\n
    \r\n {\r\n this.selectAllBranchOffices();\r\n }}\r\n >\r\n \r\n \r\n \r\n {/* */}\r\n \r\n
    \r\n\r\n
    \r\n \r\n
    \r\n \"No hay opciones\"}\r\n options={this.state.optionDrive}\r\n closeMenuOnSelect={false}\r\n />\r\n
    \r\n
    \r\n\r\n
    \r\n {\r\n this.selectAllDrives();\r\n }}\r\n >\r\n \r\n \r\n \r\n {/* */}\r\n \r\n
    \r\n
    \r\n
    \r\n
    \r\n
    \r\n\r\n
    \r\n
    \r\n {this.state.conciliaciones.length > 0 ? (\r\n \r\n
    \r\n
    \r\n {/* ====== EXPORT DATA TO EXCEL ======= */}\r\n \r\n \r\n \r\n \r\n Exportar a EXCEL\r\n \r\n }\r\n >\r\n \r\n \r\n moment(dateTime.Fecha).format(\"DD/MM/YYYY\")\r\n }\r\n />\r\n \r\n moment(dateTime.Fecha).format(\"HH:mm:ss\")\r\n }\r\n />\r\n \r\n \r\n \r\n rowName.Nombre +\r\n \" \" +\r\n rowName.ApellidoP +\r\n \" \" +\r\n rowName.ApellidoM\r\n }\r\n />\r\n\r\n \r\n this.formatCoin(parseFloat(row.TotalEfectivoReal).toFixed(2))\r\n }\r\n />\r\n \r\n this.formatCoin(parseFloat(row.TotalEfectivo).toFixed(2))\r\n }\r\n />\r\n \r\n this.formatCoin(parseFloat(row.TotalEfectivoDiff).toFixed(2))\r\n }\r\n />\r\n\r\n \r\n this.formatCoin(parseFloat(row.VoucherFijaReal).toFixed(2))\r\n }\r\n />\r\n \r\n this.formatCoin(parseFloat(row.VoucherFija).toFixed(2))\r\n }\r\n />\r\n \r\n this.formatCoin(parseFloat(row.VoucherFijaDiff).toFixed(2))\r\n }\r\n />\r\n\r\n \r\n this.formatCoin(parseFloat(row.VoucherMovilReal).toFixed(2))\r\n }\r\n />\r\n \r\n this.formatCoin(parseFloat(row.VoucherMovil).toFixed(2))\r\n }\r\n />\r\n \r\n this.formatCoin(parseFloat(row.VoucherMovilDiff).toFixed(2))\r\n }\r\n />\r\n\r\n \r\n this.formatCoin(parseFloat(row.TotalUberEatsReal).toFixed(2))\r\n }\r\n />\r\n \r\n this.formatCoin(parseFloat(row.TotalUberEats).toFixed(2))\r\n }\r\n />\r\n \r\n this.formatCoin(parseFloat(row.TotalUberEatsDiff).toFixed(2))\r\n }\r\n />\r\n\r\n \r\n this.formatCoin(parseFloat(row.TotalRappiReal).toFixed(2))\r\n }\r\n />\r\n \r\n this.formatCoin(parseFloat(row.TotalRappi).toFixed(2))\r\n }\r\n />\r\n \r\n this.formatCoin(parseFloat(row.TotalRappiDiff).toFixed(2))\r\n }\r\n />\r\n\r\n \r\n this.formatCoin(parseFloat(row.TotalRappiReal).toFixed(2))\r\n }\r\n />\r\n \r\n this.formatCoin(parseFloat(row.TotalRappi).toFixed(2))\r\n }\r\n />\r\n \r\n this.formatCoin(parseFloat(row.TotalRappiDiff).toFixed(2))\r\n }\r\n />\r\n\r\n \r\n this.formatCoin(parseFloat(row.TotalMovilReal).toFixed(2))\r\n }\r\n />\r\n \r\n this.formatCoin(parseFloat(row.TotalMovil).toFixed(2))\r\n }\r\n />\r\n \r\n this.formatCoin(parseFloat(row.TotalMovilDiff).toFixed(2))\r\n }\r\n />\r\n\r\n row.EstadoCuenta}\r\n />\r\n \r\n \r\n
    \r\n
    \r\n\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n {this.state.pageConciliaciones.map((item, index) => {\r\n let isChecked =\r\n this.state.conciliacionesChecked.findIndex(\r\n (conciliacion) =>\r\n item.idArqueoConciliacion === conciliacion\r\n ) !== -1;\r\n return (\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n );\r\n })}\r\n \r\n
    FechaDriveEfectivoEmpleadoCajaEstado Cuenta
    {moment(item.Fecha).format(\"DD/MM/YYYY\")}{item.Drive}{this.formatCoin(parseFloat(item.TotalEfectivo).toFixed(2))}\r\n {item.Nombre +\r\n \" \" +\r\n item.ApellidoP +\r\n \" \" +\r\n item.ApellidoM}\r\n {item.Caja}{item.EstadoCuenta}
    \r\n
    \r\n ) : this.state.fechaInicio == null ||\r\n this.state.fechaFin == null ? (\r\n \"Inserte fechas para iniciar la busqueda\"\r\n ) : (\r\n \r\n )}\r\n \r\n this.setState({ pageConciliaciones: conciliacionesPag }, () =>\r\n this.showView()\r\n )\r\n }\r\n />\r\n
    \r\n
    \r\n\r\n {/* {this.state.showModal && (\r\n this.setState({ showModal: false })}\r\n >\r\n \r\n \r\n )} */}\r\n\r\n \r\n
    \r\n );\r\n }\r\n}\r\n\r\nexport default ReporteConciliacion;\r\n","import { apiUrl } from \"../../constants\";\r\nimport axios from \"axios\";\r\nvar request = axios.create({\r\n baseURL: apiUrl,\r\n headers: {'Authorization':'Bearer ' +localStorage.getItem('token'),'Content-Type':'application/json'}\r\n})\r\n\r\nexport default class ReportesArqueoAPI {\r\n static getByDate(fechas) {\r\n return request.post('/ReporteArqueo/GetByDate', fechas);\r\n }\r\n}","import React, { Component } from \"react\";\r\nimport Select from \"react-select\";\r\nimport NoItems from \"../../util/noitems/NoItems\";\r\nimport PaginationReports from \"../../util/pagination/PaginationReports\";\r\nimport Modal from \"../../util/modal/Modal\";\r\nimport Loading from \"../../util/loading/Loading\";\r\nimport DatePicker from \"react-datepicker\";\r\nimport moment from \"moment\";\r\nimport ReporteCorte from \"../reporteCorte\";\r\nimport { toast } from \"react-toastify\";\r\nimport CaffenioDriveAPI from \"../../../services/caffenioDrive\";\r\nimport ExportExcel from \"react-export-excel\";\r\nimport ReportesArqueoAPI from \"../../../services/Reportes/ReportesArqueo\";\r\n\r\n// Creamos instancias para el package export excel.\r\n// Variable que indica el archivo de excel que se crea.\r\nconst ExcelFile = ExportExcel.ExcelFile;\r\n// Variable que indica una hoja de excel.\r\nconst ExcelSheet = ExportExcel.ExcelSheet;\r\n// Variable que indica una columna de excel.\r\nconst ExcelColumn = ExportExcel.ExcelColumn;\r\n\r\nclass ReporteArqueo extends Component {\r\n state = {\r\n isLoading: false,\r\n arqueos: [],\r\n arqueosFilter: [],\r\n arqueoSelect: null,\r\n fechaInicio: null,\r\n fechaFin: null,\r\n pageArqueos: [],\r\n arqueosChecked: [],\r\n // States relacionados a los dropdowns de los drives\r\n selectedOption: [],\r\n selectedOptionC: [],\r\n selectedOptionB: [],\r\n selectedOptionD: [],\r\n OptionSelect: [],\r\n OptionSelectCity: [],\r\n OptionSelectBranch: [],\r\n OptionSelectDrive: [],\r\n optionState: [],\r\n optionCity: [],\r\n optionBranch: [],\r\n optionDrive: [],\r\n Caffenios: [],\r\n childVisible: false,\r\n checkAll: false,\r\n showModal: false,\r\n creatingPDF: false,\r\n };\r\n\r\n componentDidMount() {\r\n window.scrollTo(0, 0);\r\n this.setState({ isLoading: true }, () => {\r\n let state = { ...this.state };\r\n CaffenioDriveAPI.getCaffenios()\r\n .then((response) => {\r\n state.Caffenios = response.data;\r\n state.Caffenios.map((producto) => {\r\n producto.statusCheck = false;\r\n return producto;\r\n });\r\n state.optionState = this.select_state(state.Caffenios);\r\n state.optionCity = this.select_city(state.Caffenios);\r\n state.optionBranch = this.select_branch(state.Caffenios);\r\n state.optionDrive = this.select_Drive(state.Caffenios);\r\n state.isLoading = false;\r\n this.setState(state);\r\n })\r\n .catch((err) => toast.error(err.response.data.Message));\r\n });\r\n }\r\n\r\n handleDateChange = (date, tipoFecha) => {\r\n let state = { ...this.state };\r\n state[tipoFecha] = date;\r\n this.setState(state, () => this.ConsultarArqueosPorFecha());\r\n };\r\n\r\n //#region Funciones para los dropdowns relacionados a los drives (Es copypaste de los dropdowns de la configuracion de drives)\r\n select_state(Caffenios) {\r\n // Llenar el combo 'Estados' con todas las opciones\r\n var newArray = [];\r\n let OptionSelect = [];\r\n var lookupObject = {};\r\n Caffenios.map((item) => {\r\n OptionSelect.push({ value: item.StateId, label: item.State });\r\n });\r\n\r\n for (var i in OptionSelect) {\r\n lookupObject[OptionSelect[i][\"value\"]] = OptionSelect[i];\r\n }\r\n\r\n for (i in lookupObject) {\r\n newArray.push(lookupObject[i]);\r\n }\r\n\r\n return newArray;\r\n }\r\n\r\n select_city(Caffenios) {\r\n // Llenar el combo 'Ciudades' con todas las opciones\r\n var newArray = [];\r\n let OptionSelectCity = [];\r\n var lookupObject = {};\r\n Caffenios.map((item) => {\r\n OptionSelectCity.push({\r\n value: item.Municipalityid,\r\n label: item.Municipality,\r\n });\r\n });\r\n\r\n for (var i in OptionSelectCity) {\r\n lookupObject[OptionSelectCity[i][\"value\"]] = OptionSelectCity[i];\r\n }\r\n\r\n for (i in lookupObject) {\r\n newArray.push(lookupObject[i]);\r\n }\r\n\r\n return newArray;\r\n }\r\n\r\n select_branch(Caffenios) {\r\n // Llenar el combo 'Sucursales' con todas las opciones\r\n var newArray = [];\r\n let OptionSelectBranch = [];\r\n var lookupObject = {};\r\n Caffenios.map((item) => {\r\n OptionSelectBranch.push({ value: item.Branch, label: item.Branch });\r\n });\r\n\r\n for (var i in OptionSelectBranch) {\r\n lookupObject[OptionSelectBranch[i][\"value\"]] = OptionSelectBranch[i];\r\n }\r\n\r\n for (i in lookupObject) {\r\n newArray.push(lookupObject[i]);\r\n }\r\n\r\n return newArray;\r\n }\r\n\r\n select_Drive(Caffenios) {\r\n // Llenar el combo 'Drives' con todas las opciones\r\n var newArray = [];\r\n let OptionSelectDrive = [];\r\n var lookupObject = {};\r\n Caffenios.map((item) => {\r\n OptionSelectDrive.push({\r\n value: item.idCaffenio,\r\n label: item.NombreNuevo,\r\n });\r\n });\r\n\r\n for (var i in OptionSelectDrive) {\r\n lookupObject[OptionSelectDrive[i][\"value\"]] = OptionSelectDrive[i];\r\n }\r\n\r\n for (i in lookupObject) {\r\n newArray.push(lookupObject[i]);\r\n }\r\n\r\n return newArray;\r\n }\r\n\r\n eliminarObjDuplicados = (arr, prop) => {\r\n var nuevoArray = [];\r\n var lookup = {};\r\n\r\n for (var i in arr) {\r\n lookup[arr[i][prop]] = arr[i];\r\n }\r\n\r\n for (i in lookup) {\r\n nuevoArray.push(lookup[i]);\r\n }\r\n\r\n return nuevoArray;\r\n };\r\n\r\n changeSelectEstado = (obj) => {\r\n let state = { ...this.state };\r\n state[\"selectedOption\"] = obj;\r\n let idEstado = obj.map((estado) => {\r\n return estado.value;\r\n });\r\n let objCaffenios = [...state.Caffenios];\r\n let listaCiudades = [];\r\n let listaDrives = [];\r\n\r\n // Recorrer objeto Caffenios y encontrar coincidencias sin eliminar duplicados\r\n objCaffenios.map((item) => {\r\n for (var i = 0; i < idEstado.length; i++) {\r\n if (item.StateId === idEstado[i]) {\r\n listaCiudades.push({\r\n value: item.Municipalityid,\r\n label: item.Municipality,\r\n });\r\n }\r\n }\r\n });\r\n\r\n //Se eliminan las ciudades duplicadas\r\n let eliminarDuplicados = this.eliminarObjDuplicados(listaCiudades, \"value\");\r\n //Se obtiene un arreglo con los id de las ciudades\r\n let idCiudad = eliminarDuplicados.map((ciudad) => {\r\n return ciudad.value;\r\n });\r\n\r\n //Se buscan coincidencias entre ciudad y drive y se genera la lista de drives\r\n objCaffenios.map((item) => {\r\n for (var i = 0; i < idCiudad.length; i++) {\r\n if (item.Municipalityid === idCiudad[i]) {\r\n listaDrives.push({ value: item.idCaffenio, label: item.NombreNuevo });\r\n }\r\n }\r\n });\r\n\r\n //Se limpian los combos 'Ciudades' y 'Drives'\r\n state[\"selectedOptionC\"] = [];\r\n state[\"selectedOptionD\"] = [];\r\n\r\n //Se valida que haya una opción seleccionada en combo 'Estados'\r\n if (obj.length === 0) {\r\n state[\"optionCity\"] = this.select_city(state.Caffenios);\r\n state[\"optionDrive\"] = this.select_Drive(state.Caffenios);\r\n } else {\r\n state[\"optionCity\"] = eliminarDuplicados;\r\n state[\"optionDrive\"] = listaDrives;\r\n }\r\n\r\n this.setState(state, () => this.FilterProcess());\r\n };\r\n\r\n changeSelectCiudad = (obj) => {\r\n let state = { ...this.state };\r\n let idCiudad = obj.map((ciudad) => {\r\n return ciudad.value;\r\n });\r\n let objCaffenios = [...state.Caffenios];\r\n let listaDrives = [];\r\n\r\n //Se buscan coincidencias entre ciudad y drive y se genera la lista de drives\r\n objCaffenios.map((item) => {\r\n for (var i = 0; i < idCiudad.length; i++) {\r\n if (item.Municipalityid === idCiudad[i]) {\r\n listaDrives.push({ value: item.idCaffenio, label: item.NombreNuevo });\r\n }\r\n }\r\n });\r\n\r\n //Se limpia el combo 'Drives'\r\n state[\"selectedOptionD\"] = [];\r\n\r\n //Se valida que haya una opción seleccionada en combo 'Ciudades'\r\n if (obj.length > 0) {\r\n state[\"selectedOptionC\"] = obj;\r\n state[\"optionDrive\"] = listaDrives;\r\n this.setState(state, () => this.FilterProcess());\r\n } else {\r\n this.changeSelectEstado(state[\"selectedOption\"]);\r\n }\r\n };\r\n\r\n changeSelectSucursal = (objSucursal, objDrive) => {\r\n let state = { ...this.state };\r\n let idSucursal = objSucursal.map((sucursal) => {\r\n return sucursal.value;\r\n });\r\n let objCaffenios = [...state.Caffenios];\r\n let listaDrives = [];\r\n\r\n //Se buscan coincidencias entre sucursal y drive y se genera la lista de drives\r\n objCaffenios.map((item) => {\r\n for (var i = 0; i < idSucursal.length; i++) {\r\n if (item.Branch === idSucursal[i]) {\r\n listaDrives.push({ value: item.idCaffenio, label: item.NombreNuevo });\r\n }\r\n }\r\n });\r\n\r\n // Validar si no existen drives seleccionados, resetear el filtro de drives.\r\n if (objDrive.length === 0) {\r\n //Se limpia el combo 'Drives'\r\n state[\"selectedOptionD\"] = [];\r\n }\r\n\r\n //Se valida que haya una opción seleccionada en combo 'Sucursales'\r\n state[\"selectedOptionB\"] = objSucursal;\r\n if (objSucursal.length > 0) {\r\n state[\"optionDrive\"] = listaDrives;\r\n } else {\r\n // Se limpia el combo 'Drives'\r\n state[\"selectedOptionD\"] = [];\r\n state[\"optionDrive\"] = this.select_Drive(state.Caffenios);\r\n }\r\n this.setState(state, () => this.FilterProcess());\r\n };\r\n\r\n changeSelectDrive = (obj) => {\r\n let state = { ...this.state };\r\n let Caffenios = [...state.Caffenios];\r\n\r\n //Valida cada select (Estados,Ciudades,Drives) y realiza la acción correspondiente\r\n if (obj.length > 0) {\r\n state[\"selectedOptionD\"] = obj;\r\n //state[\"optionDrive\"] = obj;\r\n this.setState(state, () => this.FilterProcess());\r\n } else if (state[\"selectedOptionC\"].length === 0) {\r\n this.changeSelectEstado(state[\"selectedOption\"]);\r\n // resetear lista de drives con el primer filtro.\r\n this.changeSelectSucursal(state[\"selectedOptionB\"], obj);\r\n } else if (\r\n state[\"selectedOptionC\"].length === 0 &&\r\n state[\"selectedOption\"].length === 0\r\n ) {\r\n this.select_Drive(Caffenios);\r\n this.select_Drive(Caffenios);\r\n this.select_Drive(Caffenios);\r\n } else {\r\n this.changeSelectCiudad(state[\"selectedOptionC\"]);\r\n }\r\n };\r\n\r\n validarCombos = (state) => {\r\n var status_combo = false; // Vacios\r\n\r\n if (state[\"selectedOption\"].length > 0) {\r\n status_combo = true; // Alguno con valor\r\n }\r\n\r\n if (state[\"selectedOptionC\"].length > 0) {\r\n status_combo = true; // Alguno con valor\r\n }\r\n\r\n if (state[\"selectedOptionD\"].length > 0) {\r\n status_combo = true; // Alguno con valor\r\n }\r\n\r\n return status_combo;\r\n };\r\n //#endregion\r\n\r\n /**\r\n * Se ejecuta al seleccionar un rango de fechas.\r\n * Hace una petición a la API para obtener los reportes de arqueos que están entre las fechas seleccionadas\r\n */\r\n ConsultarArqueosPorFecha = () => {\r\n if (this.state.fechaInicio != null && this.state.fechaFin != null) {\r\n this.setState({ isLoading: true }, () => {\r\n let body = {\r\n FechaInicio: this.state.fechaInicio,\r\n FechaFin: this.state.fechaFin,\r\n };\r\n let state = { ...this.state };\r\n ReportesArqueoAPI.getByDate(body)\r\n .then((response) => {\r\n state.arqueos = response.data;\r\n state.arqueosChecked = [];\r\n state.isLoading = false;\r\n this.setState(state, () => {\r\n this.FilterProcess();\r\n });\r\n })\r\n .catch((err) => {\r\n state.isLoading = false;\r\n state.arqueosChecked = [];\r\n toast.error(err.response.data.Message);\r\n this.setState(state);\r\n });\r\n });\r\n }\r\n };\r\n\r\n /**\r\n * Se ejecuta al seleccionar un valor de los dropdowns relacionados a los drives (estados, ciudades, drives)\r\n * Lo que hace es filtrar los drives segun los valores de los dropdowns y tambien filtra los resultados de los reportes de arqueos.\r\n * OJO. Esta función no hace peticiones a la API, solo filtra valores que estan en los states\r\n */\r\n FilterProcess = () => {\r\n let state = { ...this.state };\r\n let Caffenios = state.Caffenios;\r\n var status_combo; // Vacios\r\n let driveIds;\r\n let drivesSelected = [];\r\n\r\n if (state[\"selectedOptionD\"].length === 0) {\r\n driveIds = state[\"optionDrive\"].map((obj) => {\r\n return obj.value;\r\n });\r\n } else {\r\n driveIds = state[\"selectedOptionD\"].map((obj) => {\r\n return obj.value;\r\n });\r\n }\r\n\r\n // Validar si existen drives seleccionados para comparar entre las\r\n // sucursales y drives y obtener la lista actual de drives seleccinados.\r\n if (state[\"selectedOptionD\"].length > 0) {\r\n state[\"optionDrive\"].map((obj) => {\r\n for (var i = 0; i < state[\"selectedOptionD\"].length; i++) {\r\n if (obj.value === state[\"selectedOptionD\"][i].value) {\r\n drivesSelected.push(state[\"selectedOptionD\"][i]);\r\n }\r\n }\r\n });\r\n // Actualizar los drives seleccionados por sucursales seleccionadas.\r\n state[\"selectedOptionD\"] = drivesSelected;\r\n }\r\n\r\n status_combo = this.validarCombos(state);\r\n\r\n Caffenios = Caffenios.filter((obj2) => {\r\n if (\r\n driveIds.filter((item) => {\r\n return item === obj2.idCaffenio;\r\n }).length > 0\r\n ) {\r\n return obj2;\r\n }\r\n });\r\n\r\n state.arqueosFilter = state.arqueos.filter((arqueo) => {\r\n return (\r\n driveIds.findIndex((driveId) => {\r\n return driveId === arqueo.idCaffenio;\r\n }) !== -1\r\n );\r\n });\r\n this.setState(state);\r\n };\r\n\r\n selectAllCheck = () => {\r\n let state = { ...this.state };\r\n\r\n state.checkAll = !state.checkAll;\r\n // Insertar o quitar los ids de la pagina actual\r\n state.pageArqueos.findIndex((item) => {\r\n let indexCheck = state.arqueosChecked.findIndex(\r\n (arqueo) => item.idArqueoConciliacion === arqueo\r\n );\r\n if (state.checkAll) {\r\n if (indexCheck === -1)\r\n state.arqueosChecked.push(item.idArqueoConciliacion);\r\n } else {\r\n if (indexCheck !== -1) {\r\n state.arqueosChecked.splice(indexCheck, 1);\r\n }\r\n }\r\n });\r\n state.childVisible = state.arqueosChecked.length > 0;\r\n this.setState(state);\r\n };\r\n\r\n /**\r\n * Se ejecuta al darle click a un checkbox de un renglón.\r\n * Lo que hace es determinar si el checkbox del header se tiene que marcar o no\r\n */\r\n showView = () => {\r\n let state = { ...this.state };\r\n let cheked = false;\r\n let checkAllTemp = true;\r\n state.pageArqueos.map((item) => {\r\n if (\r\n state.arqueosChecked.findIndex(\r\n (arqueo) => item.idArqueoConciliacion === arqueo\r\n ) !== -1\r\n ) {\r\n cheked = true;\r\n } else {\r\n checkAllTemp = false;\r\n }\r\n });\r\n\r\n this.setState({\r\n childVisible: state.arqueosChecked.length > 0,\r\n checkAll: checkAllTemp,\r\n });\r\n };\r\n\r\n // Select all branch offices of the list and add to filter.\r\n selectAllBranchOffices = () => {\r\n let state = { ...this.state };\r\n state[\"selectedOptionB\"] = this.state.optionBranch;\r\n this.setState(state, () => this.FilterProcess());\r\n };\r\n\r\n // Select all drives of the list and add to filter.\r\n selectAllDrives = () => {\r\n let state = { ...this.state };\r\n state[\"selectedOptionD\"] = this.state.optionDrive;\r\n this.setState(state, () => this.FilterProcess());\r\n };\r\n\r\n // Function for convert to value decimal with format of value coin.\r\n formatCoin = (cash) => {\r\n const options2 = { style: \"currency\", currency: \"MXN\" };\r\n const cashFormated = new Intl.NumberFormat(\"es-MX\", options2);\r\n return cashFormated.format(cash);\r\n };\r\n\r\n render() {\r\n let fechaHoy = new Date();\r\n return (\r\n
    \r\n

    Arqueos

    \r\n
    \r\n
    \r\n
    \r\n
    \r\n \r\n this.handleDateChange(e, \"fechaInicio\")}\r\n startDate={this.state.fechaInicio}\r\n endDate={this.state.fechaFin}\r\n maxDate={this.state.fechaFin ? this.state.fechaFin : fechaHoy}\r\n popperPlacement=\"bottom\"\r\n popperModifiers={{\r\n offset: {\r\n enabled: true,\r\n offset: \"5px, 20px\",\r\n },\r\n preventOverflow: {\r\n enabled: true,\r\n escapeWithReference: false,\r\n boundariesElement: \"viewport\",\r\n },\r\n }}\r\n locale=\"es\"\r\n todayButton=\"Hoy\"\r\n dateFormat=\"dd/MM/yyyy\"\r\n className=\"input\"\r\n autoComplete={\"off\"}\r\n />\r\n
    \r\n
    \r\n \r\n this.handleDateChange(e, \"fechaFin\")}\r\n disabled={this.state.fechaInicio == null}\r\n startDate={this.state.fechaInicio}\r\n endDate={this.state.fechaFin}\r\n minDate={this.state.fechaInicio}\r\n maxDate={fechaHoy}\r\n popperPlacement=\"bottom\"\r\n popperModifiers={{\r\n offset: {\r\n enabled: true,\r\n offset: \"5px, 20px\",\r\n },\r\n preventOverflow: {\r\n enabled: true,\r\n escapeWithReference: false,\r\n boundariesElement: \"viewport\",\r\n },\r\n }}\r\n locale=\"es\"\r\n todayButton=\"Hoy\"\r\n dateFormat=\"dd/MM/yyyy\"\r\n className=\"input\"\r\n autoComplete={\"off\"}\r\n />\r\n
    \r\n\r\n
    \r\n \r\n
    \r\n \"No hay opciones\"}\r\n options={this.state.optionBranch}\r\n closeMenuOnSelect={false}\r\n />\r\n
    \r\n
    \r\n\r\n
    \r\n {\r\n this.selectAllBranchOffices();\r\n }}\r\n >\r\n \r\n \r\n \r\n {/* */}\r\n \r\n
    \r\n\r\n
    \r\n \r\n
    \r\n \"No hay opciones\"}\r\n options={this.state.optionDrive}\r\n closeMenuOnSelect={false}\r\n />\r\n
    \r\n
    \r\n\r\n
    \r\n {\r\n this.selectAllDrives();\r\n }}\r\n >\r\n \r\n \r\n \r\n {/* */}\r\n \r\n
    \r\n
    \r\n
    \r\n
    \r\n
    \r\n\r\n
    \r\n
    \r\n {this.state.arqueos.length > 0 ? (\r\n \r\n
    \r\n
    \r\n {/* ====== EXPORT DATA TO EXCEL ======= */}\r\n \r\n \r\n \r\n \r\n Exportar a EXCEL\r\n \r\n }\r\n >\r\n \r\n \r\n moment(dateTime.Fecha).format(\"DD/MM/YYYY\")\r\n }\r\n />\r\n \r\n moment(dateTime.Fecha).format(\"HH:mm:ss\")\r\n }\r\n />\r\n \r\n \r\n \r\n rowName.Nombre +\r\n \" \" +\r\n rowName.ApellidoP +\r\n \" \" +\r\n rowName.ApellidoM\r\n }\r\n />\r\n \r\n this.formatCoin(\r\n parseFloat(row.TotalEfectivo).toFixed(2)\r\n )\r\n }\r\n />\r\n \r\n this.formatCoin(\r\n parseFloat(row.TotalEfectivoReal).toFixed(2)\r\n )\r\n }\r\n />\r\n \r\n this.formatCoin(\r\n parseFloat(row.TotalEfectivoDiff).toFixed(2)\r\n )\r\n }\r\n />\r\n \r\n this.formatCoin(\r\n parseFloat(row.VoucherFija).toFixed(2)\r\n )\r\n }\r\n />\r\n \r\n this.formatCoin(\r\n parseFloat(row.VoucherFijaReal).toFixed(2)\r\n )\r\n }\r\n />\r\n \r\n this.formatCoin(\r\n parseFloat(row.VoucherFijaDiff).toFixed(2)\r\n )\r\n }\r\n />\r\n row.EstadoCuenta}\r\n />\r\n \r\n \r\n
    \r\n
    \r\n\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n {this.state.pageArqueos.map((item, index) => {\r\n let isChecked =\r\n this.state.arqueosChecked.findIndex(\r\n (arqueo) => item.idArqueoConciliacion === arqueo\r\n ) !== -1;\r\n return (\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n );\r\n })}\r\n \r\n
    FechaDriveEfectivoEmpleadoCajaEstado Cuenta
    {moment(item.Fecha).format(\"DD/MM/YYYY\")}{item.Drive}\r\n {this.formatCoin(\r\n parseFloat(item.TotalEfectivo).toFixed(2)\r\n )}\r\n \r\n {item.Nombre +\r\n \" \" +\r\n item.ApellidoP +\r\n \" \" +\r\n item.ApellidoM}\r\n {item.Caja}{item.EstadoCuenta}
    \r\n
    \r\n ) : this.state.fechaInicio == null ||\r\n this.state.fechaFin == null ? (\r\n \"Inserte fechas para iniciar la busqueda\"\r\n ) : (\r\n \r\n )}\r\n \r\n this.setState({ pageArqueos: arqueosPag }, () =>\r\n this.showView()\r\n )\r\n }\r\n />\r\n
    \r\n
    \r\n\r\n \r\n
    \r\n );\r\n }\r\n}\r\n\r\nexport default ReporteArqueo;\r\n","import { apiUrl } from \"../../constants\";\r\nimport axios from \"axios\";\r\nvar request = axios.create({\r\n baseURL: apiUrl,\r\n headers: {'Authorization':'Bearer ' + localStorage.getItem('token'),'Content-Type':'application/json'}\r\n})\r\n\r\nexport default class ReportesRetiroAPI {\r\n static getByDate(fechas) {\r\n return request.post('/ReporteRetiro/GetByDate', fechas);\r\n }\r\n}","import React, { Component } from \"react\";\r\nimport Select from \"react-select\";\r\nimport NoItems from \"../../util/noitems/NoItems\";\r\nimport PaginationReports from \"../../util/pagination/PaginationReports\";\r\nimport Modal from \"../../util/modal/Modal\";\r\nimport Loading from \"../../util/loading/Loading\";\r\nimport DatePicker from \"react-datepicker\";\r\nimport moment from \"moment\";\r\nimport ReporteCorte from \"../reporteCorte\";\r\nimport { toast } from \"react-toastify\";\r\nimport CaffenioDriveAPI from \"../../../services/caffenioDrive\";\r\nimport ExportExcel from \"react-export-excel\";\r\nimport ReportesRetiroAPI from \"../../../services/Reportes/ReportesRetiro\";\r\n\r\n// Creamos instancias para el package export excel.\r\n// Variable que indica el archivo de excel que se crea.\r\nconst ExcelFile = ExportExcel.ExcelFile;\r\n// Variable que indica una hoja de excel.\r\nconst ExcelSheet = ExportExcel.ExcelSheet;\r\n// Variable que indica una columna de excel.\r\nconst ExcelColumn = ExportExcel.ExcelColumn;\r\n\r\nclass ReporteRetiros extends Component {\r\n state = {\r\n isLoading: false,\r\n retiros: [],\r\n retirosFilter: [],\r\n retiroSelect: null,\r\n fechaInicio: null,\r\n fechaFin: null,\r\n pageRetiros: [],\r\n retirosChecked: [],\r\n // States relacionados a los dropdowns de los drives\r\n selectedOption: [],\r\n selectedOptionC: [],\r\n selectedOptionB: [],\r\n selectedOptionD: [],\r\n OptionSelect: [],\r\n OptionSelectCity: [],\r\n OptionSelectBranch: [],\r\n OptionSelectDrive: [],\r\n optionState: [],\r\n optionCity: [],\r\n optionBranch: [],\r\n optionDrive: [],\r\n Caffenios: [],\r\n childVisible: false,\r\n checkAll: false,\r\n showModal: false,\r\n };\r\n\r\n componentDidMount() {\r\n window.scrollTo(0, 0);\r\n this.setState({ isLoading: true }, () => {\r\n let state = { ...this.state };\r\n CaffenioDriveAPI.getCaffenios()\r\n .then((response) => {\r\n state.Caffenios = response.data;\r\n state.Caffenios.map((producto) => {\r\n producto.statusCheck = false;\r\n return producto;\r\n });\r\n state.optionState = this.select_state(state.Caffenios);\r\n state.optionCity = this.select_city(state.Caffenios);\r\n state.optionBranch = this.select_branch(state.Caffenios);\r\n state.optionDrive = this.select_Drive(state.Caffenios);\r\n state.isLoading = false;\r\n this.setState(state);\r\n })\r\n .catch((err) => toast.error(err.response.data.Message));\r\n });\r\n }\r\n\r\n handleDateChange = (date, tipoFecha) => {\r\n let state = { ...this.state };\r\n state[tipoFecha] = date;\r\n this.setState(state, () => this.ConsultarRetirosPorFecha());\r\n };\r\n\r\n //#region Funciones para los dropdowns relacionados a los drives (Es copypaste de los dropdowns de la configuracion de drives)\r\n select_state(Caffenios) {\r\n // Llenar el combo 'Estados' con todas las opciones\r\n var newArray = [];\r\n let OptionSelect = [];\r\n var lookupObject = {};\r\n Caffenios.map((item) => {\r\n OptionSelect.push({ value: item.StateId, label: item.State });\r\n });\r\n\r\n for (var i in OptionSelect) {\r\n lookupObject[OptionSelect[i][\"value\"]] = OptionSelect[i];\r\n }\r\n\r\n for (i in lookupObject) {\r\n newArray.push(lookupObject[i]);\r\n }\r\n\r\n return newArray;\r\n }\r\n\r\n select_city(Caffenios) {\r\n // Llenar el combo 'Ciudades' con todas las opciones\r\n var newArray = [];\r\n let OptionSelectCity = [];\r\n var lookupObject = {};\r\n Caffenios.map((item) => {\r\n OptionSelectCity.push({\r\n value: item.Municipalityid,\r\n label: item.Municipality,\r\n });\r\n });\r\n\r\n for (var i in OptionSelectCity) {\r\n lookupObject[OptionSelectCity[i][\"value\"]] = OptionSelectCity[i];\r\n }\r\n\r\n for (i in lookupObject) {\r\n newArray.push(lookupObject[i]);\r\n }\r\n\r\n return newArray;\r\n }\r\n\r\n select_branch(Caffenios) {\r\n // Llenar el combo 'Sucursales' con todas las opciones\r\n var newArray = [];\r\n let OptionSelectBranch = [];\r\n var lookupObject = {};\r\n Caffenios.map((item) => {\r\n OptionSelectBranch.push({ value: item.Branch, label: item.Branch });\r\n });\r\n\r\n for (var i in OptionSelectBranch) {\r\n lookupObject[OptionSelectBranch[i][\"value\"]] = OptionSelectBranch[i];\r\n }\r\n\r\n for (i in lookupObject) {\r\n newArray.push(lookupObject[i]);\r\n }\r\n\r\n return newArray;\r\n }\r\n\r\n select_Drive(Caffenios) {\r\n // Llenar el combo 'Drives' con todas las opciones\r\n var newArray = [];\r\n let OptionSelectDrive = [];\r\n var lookupObject = {};\r\n Caffenios.map((item) => {\r\n OptionSelectDrive.push({\r\n value: item.idCaffenio,\r\n label: item.NombreNuevo,\r\n });\r\n });\r\n\r\n for (var i in OptionSelectDrive) {\r\n lookupObject[OptionSelectDrive[i][\"value\"]] = OptionSelectDrive[i];\r\n }\r\n\r\n for (i in lookupObject) {\r\n newArray.push(lookupObject[i]);\r\n }\r\n\r\n return newArray;\r\n }\r\n\r\n eliminarObjDuplicados = (arr, prop) => {\r\n var nuevoArray = [];\r\n var lookup = {};\r\n\r\n for (var i in arr) {\r\n lookup[arr[i][prop]] = arr[i];\r\n }\r\n\r\n for (i in lookup) {\r\n nuevoArray.push(lookup[i]);\r\n }\r\n\r\n return nuevoArray;\r\n };\r\n\r\n changeSelectEstado = (obj) => {\r\n let state = { ...this.state };\r\n state[\"selectedOption\"] = obj;\r\n let idEstado = obj.map((estado) => {\r\n return estado.value;\r\n });\r\n let objCaffenios = [...state.Caffenios];\r\n let listaCiudades = [];\r\n let listaDrives = [];\r\n\r\n // Recorrer objeto Caffenios y encontrar coincidencias sin eliminar duplicados\r\n objCaffenios.map((item) => {\r\n for (var i = 0; i < idEstado.length; i++) {\r\n if (item.StateId === idEstado[i]) {\r\n listaCiudades.push({\r\n value: item.Municipalityid,\r\n label: item.Municipality,\r\n });\r\n }\r\n }\r\n });\r\n\r\n //Se eliminan las ciudades duplicadas\r\n let eliminarDuplicados = this.eliminarObjDuplicados(listaCiudades, \"value\");\r\n //Se obtiene un arreglo con los id de las ciudades\r\n let idCiudad = eliminarDuplicados.map((ciudad) => {\r\n return ciudad.value;\r\n });\r\n\r\n //Se buscan coincidencias entre ciudad y drive y se genera la lista de drives\r\n objCaffenios.map((item) => {\r\n for (var i = 0; i < idCiudad.length; i++) {\r\n if (item.Municipalityid === idCiudad[i]) {\r\n listaDrives.push({ value: item.idCaffenio, label: item.NombreNuevo });\r\n }\r\n }\r\n });\r\n\r\n //Se limpian los combos 'Ciudades' y 'Drives'\r\n state[\"selectedOptionC\"] = [];\r\n state[\"selectedOptionD\"] = [];\r\n\r\n //Se valida que haya una opción seleccionada en combo 'Estados'\r\n if (obj.length === 0) {\r\n state[\"optionCity\"] = this.select_city(state.Caffenios);\r\n state[\"optionDrive\"] = this.select_Drive(state.Caffenios);\r\n } else {\r\n state[\"optionCity\"] = eliminarDuplicados;\r\n state[\"optionDrive\"] = listaDrives;\r\n }\r\n\r\n this.setState(state, () => this.FilterProcess());\r\n };\r\n\r\n changeSelectCiudad = (obj) => {\r\n let state = { ...this.state };\r\n let idCiudad = obj.map((ciudad) => {\r\n return ciudad.value;\r\n });\r\n let objCaffenios = [...state.Caffenios];\r\n let listaDrives = [];\r\n\r\n //Se buscan coincidencias entre ciudad y drive y se genera la lista de drives\r\n objCaffenios.map((item) => {\r\n for (var i = 0; i < idCiudad.length; i++) {\r\n if (item.Municipalityid === idCiudad[i]) {\r\n listaDrives.push({ value: item.idCaffenio, label: item.NombreNuevo });\r\n }\r\n }\r\n });\r\n\r\n //Se limpia el combo 'Drives'\r\n state[\"selectedOptionD\"] = [];\r\n\r\n //Se valida que haya una opción seleccionada en combo 'Ciudades'\r\n if (obj.length > 0) {\r\n state[\"selectedOptionC\"] = obj;\r\n state[\"optionDrive\"] = listaDrives;\r\n this.setState(state, () => this.FilterProcess());\r\n } else {\r\n this.changeSelectEstado(state[\"selectedOption\"]);\r\n }\r\n };\r\n\r\n changeSelectSucursal = (objSucursal, objDrive) => {\r\n let state = { ...this.state };\r\n let idSucursal = objSucursal.map((sucursal) => {\r\n return sucursal.value;\r\n });\r\n let objCaffenios = [...state.Caffenios];\r\n let listaDrives = [];\r\n\r\n //Se buscan coincidencias entre sucursal y drive y se genera la lista de drives\r\n objCaffenios.map((item) => {\r\n for (var i = 0; i < idSucursal.length; i++) {\r\n if (item.Branch === idSucursal[i]) {\r\n listaDrives.push({ value: item.idCaffenio, label: item.NombreNuevo });\r\n }\r\n }\r\n });\r\n\r\n // Validar si no existen drives seleccionados, resetear el filtro de drives.\r\n if (objDrive.length === 0) {\r\n //Se limpia el combo 'Drives'\r\n state[\"selectedOptionD\"] = [];\r\n }\r\n\r\n //Se valida que haya una opción seleccionada en combo 'Sucursales'\r\n state[\"selectedOptionB\"] = objSucursal;\r\n if (objSucursal.length > 0) {\r\n state[\"optionDrive\"] = listaDrives;\r\n } else {\r\n //Se limpia el combo 'Drives'\r\n state[\"selectedOptionD\"] = [];\r\n state[\"optionDrive\"] = this.select_Drive(state.Caffenios);\r\n }\r\n this.setState(state, () => this.FilterProcess());\r\n };\r\n\r\n changeSelectDrive = (obj) => {\r\n let state = { ...this.state };\r\n let Caffenios = [...state.Caffenios];\r\n\r\n //Valida cada select (Estados,Ciudades,Drives) y realiza la acción correspondiente\r\n if (obj.length > 0) {\r\n state[\"selectedOptionD\"] = obj;\r\n //state[\"optionDrive\"] = obj;\r\n this.setState(state, () => this.FilterProcess());\r\n } else if (state[\"selectedOptionC\"].length === 0) {\r\n this.changeSelectEstado(state[\"selectedOption\"]);\r\n // resetear lista de drives con el primer filtro.\r\n this.changeSelectSucursal(state[\"selectedOptionB\"], obj);\r\n } else if (\r\n state[\"selectedOptionC\"].length === 0 &&\r\n state[\"selectedOption\"].length === 0\r\n ) {\r\n this.select_Drive(Caffenios);\r\n this.select_Drive(Caffenios);\r\n this.select_Drive(Caffenios);\r\n } else {\r\n this.changeSelectCiudad(state[\"selectedOptionC\"]);\r\n }\r\n };\r\n\r\n validarCombos = (state) => {\r\n var status_combo = false; // Vacios\r\n\r\n if (state[\"selectedOption\"].length > 0) {\r\n status_combo = true; // Alguno con valor\r\n }\r\n\r\n if (state[\"selectedOptionC\"].length > 0) {\r\n status_combo = true; // Alguno con valor\r\n }\r\n\r\n if (state[\"selectedOptionD\"].length > 0) {\r\n status_combo = true; // Alguno con valor\r\n }\r\n\r\n return status_combo;\r\n };\r\n //#endregion\r\n\r\n /**\r\n * Se ejecuta al seleccionar un rango de fechas.\r\n * Hace una petición a la API para obtener los reportes de conciliación que están entre las fechas seleccionadas\r\n */\r\n ConsultarRetirosPorFecha = () => {\r\n if (this.state.fechaInicio != null && this.state.fechaFin != null) {\r\n this.setState({ isLoading: true }, () => {\r\n let body = {\r\n FechaInicio: this.state.fechaInicio,\r\n FechaFin: this.state.fechaFin,\r\n };\r\n let state = { ...this.state };\r\n ReportesRetiroAPI.getByDate(body)\r\n .then((response) => {\r\n state.retiros = response.data;\r\n state.retirosChecked = [];\r\n state.isLoading = false;\r\n this.setState(state, () => {\r\n this.FilterProcess();\r\n });\r\n })\r\n .catch((err) => {\r\n state.isLoading = false;\r\n state.retirosChecked = [];\r\n toast.error(err.response.data.Message);\r\n this.setState(state);\r\n });\r\n });\r\n }\r\n };\r\n\r\n /**\r\n * Se ejecuta al seleccionar un valor de los dropdowns relacionados a los drives (estados, ciudades, drives)\r\n * Lo que hace es filtrar los drives segun los valores de los dropdowns y tambien filtra los resultados de los reportes de retiros.\r\n * OJO. Esta función no hace peticiones a la API, solo filtra valores que estan en los states\r\n */\r\n FilterProcess = () => {\r\n let state = { ...this.state };\r\n let Caffenios = state.Caffenios;\r\n var status_combo; // Vacios\r\n let driveIds;\r\n let drivesSelected = [];\r\n\r\n if (state[\"selectedOptionD\"].length === 0) {\r\n driveIds = state[\"optionDrive\"].map((obj) => {\r\n return obj.value;\r\n });\r\n } else {\r\n driveIds = state[\"selectedOptionD\"].map((obj) => {\r\n return obj.value;\r\n });\r\n }\r\n\r\n // Validar si existen drives seleccionados para comparar entre las\r\n // sucursales y drives y obtener la lista actual de drives seleccinados.\r\n if (state[\"selectedOptionD\"].length > 0) {\r\n state[\"optionDrive\"].map((obj) => {\r\n for (var i = 0; i < state[\"selectedOptionD\"].length; i++) {\r\n if (obj.value === state[\"selectedOptionD\"][i].value) {\r\n drivesSelected.push(state[\"selectedOptionD\"][i]);\r\n }\r\n }\r\n });\r\n // Actualizar los drives seleccionados por sucursales seleccionadas.\r\n state[\"selectedOptionD\"] = drivesSelected;\r\n }\r\n\r\n status_combo = this.validarCombos(state);\r\n\r\n Caffenios = Caffenios.filter((obj2) => {\r\n if (\r\n driveIds.filter((item) => {\r\n return item === obj2.idCaffenio;\r\n }).length > 0\r\n ) {\r\n return obj2;\r\n }\r\n });\r\n\r\n state.retirosFilter = state.retiros.filter((retiro) => {\r\n return (\r\n driveIds.findIndex((driveId) => {\r\n return driveId === retiro.idCaffenio;\r\n }) !== -1\r\n );\r\n });\r\n this.setState(state);\r\n };\r\n\r\n selectAllCheck = () => {\r\n let state = { ...this.state };\r\n\r\n state.checkAll = !state.checkAll;\r\n // Insertar o quitar los ids de la pagina actual\r\n state.pageRetiros.findIndex((item) => {\r\n let indexCheck = state.retirosChecked.findIndex(\r\n (retiro) => item.idTipoMovimientoCaja === retiro\r\n );\r\n if (state.checkAll) {\r\n if (indexCheck === -1)\r\n state.retirosChecked.push(item.idTipoMovimientoCaja);\r\n } else {\r\n if (indexCheck !== -1) {\r\n state.retirosChecked.splice(indexCheck, 1);\r\n }\r\n }\r\n });\r\n state.childVisible = state.retirosChecked.length > 0;\r\n this.setState(state);\r\n };\r\n\r\n /**\r\n * Se ejecuta al darle click a un checkbox de un renglón.\r\n * Lo que hace es determinar si el checkbox del header se tiene que marcar o no\r\n */\r\n showView = () => {\r\n let state = { ...this.state };\r\n let cheked = false;\r\n let checkAllTemp = true;\r\n state.pageRetiros.map((item) => {\r\n if (\r\n state.retirosChecked.findIndex(\r\n (retiro) => item.DepositSlipId === retiro\r\n ) !== -1\r\n ) {\r\n cheked = true;\r\n } else {\r\n checkAllTemp = false;\r\n }\r\n });\r\n\r\n this.setState({\r\n childVisible: state.retirosChecked.length > 0,\r\n checkAll: checkAllTemp,\r\n });\r\n };\r\n\r\n // Select all branch offices of the list and add to filter.\r\n selectAllBranchOffices = () => {\r\n let state = { ...this.state };\r\n state[\"selectedOptionB\"] = this.state.optionBranch;\r\n this.setState(state, () => this.FilterProcess());\r\n };\r\n\r\n // Select all drives of the list and add to filter.\r\n selectAllDrives = () => {\r\n let state = { ...this.state };\r\n state[\"selectedOptionD\"] = this.state.optionDrive;\r\n this.setState(state, () => this.FilterProcess());\r\n };\r\n\r\n render() {\r\n let fechaHoy = new Date();\r\n return (\r\n
    \r\n

    Retiros

    \r\n
    \r\n
    \r\n
    \r\n
    \r\n \r\n this.handleDateChange(e, \"fechaInicio\")}\r\n startDate={this.state.fechaInicio}\r\n endDate={this.state.fechaFin}\r\n maxDate={this.state.fechaFin ? this.state.fechaFin : fechaHoy}\r\n popperPlacement=\"bottom\"\r\n popperModifiers={{\r\n offset: {\r\n enabled: true,\r\n offset: \"5px, 20px\",\r\n },\r\n preventOverflow: {\r\n enabled: true,\r\n escapeWithReference: false,\r\n boundariesElement: \"viewport\",\r\n },\r\n }}\r\n locale=\"es\"\r\n todayButton=\"Hoy\"\r\n dateFormat=\"dd/MM/yyyy\"\r\n className=\"input\"\r\n autoComplete={\"off\"}\r\n />\r\n
    \r\n
    \r\n \r\n this.handleDateChange(e, \"fechaFin\")}\r\n disabled={this.state.fechaInicio == null}\r\n startDate={this.state.fechaInicio}\r\n endDate={this.state.fechaFin}\r\n minDate={this.state.fechaInicio}\r\n maxDate={fechaHoy}\r\n popperPlacement=\"bottom\"\r\n popperModifiers={{\r\n offset: {\r\n enabled: true,\r\n offset: \"5px, 20px\",\r\n },\r\n preventOverflow: {\r\n enabled: true,\r\n escapeWithReference: false,\r\n boundariesElement: \"viewport\",\r\n },\r\n }}\r\n locale=\"es\"\r\n todayButton=\"Hoy\"\r\n dateFormat=\"dd/MM/yyyy\"\r\n className=\"input\"\r\n autoComplete={\"off\"}\r\n />\r\n
    \r\n\r\n
    \r\n \r\n
    \r\n \"No hay opciones\"}\r\n options={this.state.optionBranch}\r\n closeMenuOnSelect={false}\r\n />\r\n
    \r\n
    \r\n\r\n
    \r\n \r\n
    \r\n\r\n
    \r\n \r\n
    \r\n \"No hay opciones\"}\r\n options={this.state.optionDrive}\r\n closeMenuOnSelect={false}\r\n />\r\n
    \r\n
    \r\n\r\n
    \r\n \r\n
    \r\n\r\n
    \r\n
    \r\n
    \r\n
    \r\n\r\n
    \r\n
    \r\n {this.state.retiros.length > 0 ? (\r\n \r\n
    \r\n
    \r\n {/* ====== EXPORT DATA TO EXCEL ======= */}\r\n \r\n \r\n \r\n \r\n Exportar a EXCEL\r\n \r\n }\r\n >\r\n \r\n \r\n moment(dateTime.Fecha).format(\"DD/MM/YYYY\")\r\n }\r\n />\r\n \r\n moment(dateTime.Fecha).format(\"HH:mm:ss\")\r\n }\r\n />\r\n \r\n \r\n \r\n rowName.Nombre +\r\n \" \" +\r\n rowName.ApellidoP +\r\n \" \" +\r\n rowName.ApellidoM\r\n }\r\n />\r\n \r\n \"$\" + parseFloat(row.Cantidad).toFixed(2)\r\n }\r\n />\r\n \r\n \r\n
    \r\n
    \r\n\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n {this.state.pageRetiros.map((item, index) => {\r\n return (\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n );\r\n })}\r\n \r\n
    FechaDriveEfectivoEmpleadoCaja
    {moment(item.Fecha).format(\"DD/MM/YYYY\")}{item.Drive}${item.Cantidad}\r\n {item.Nombre +\r\n \" \" +\r\n item.ApellidoP +\r\n \" \" +\r\n item.ApellidoM}\r\n {item.Caja}
    \r\n
    \r\n ) : this.state.fechaInicio == null ||\r\n this.state.fechaFin == null ? (\r\n \"Inserte fechas para iniciar la busqueda\"\r\n ) : (\r\n \r\n )}\r\n \r\n this.setState({ pageRetiros: retirosPag }, () =>\r\n this.showView()\r\n )\r\n }\r\n />\r\n
    \r\n
    \r\n\r\n {this.state.showModal && (\r\n this.setState({ showModal: false })}\r\n >\r\n \r\n \r\n )}\r\n\r\n \r\n
    \r\n );\r\n }\r\n}\r\n\r\nexport default ReporteRetiros;\r\n","import { apiUrl } from \"../../constants\";\r\nimport axios from \"axios\";\r\nvar request = axios.create({\r\n baseURL: apiUrl,\r\n headers: {\r\n Authorization: \"Bearer \" + localStorage.getItem(\"token\"),\r\n \"Content-Type\": \"application/json\",\r\n },\r\n});\r\n\r\nexport default class ReportesCancelacionAPI {\r\n static getByDate(fechas) {\r\n return request.post(\"/ReporteCancelado/GetByDate\", fechas);\r\n }\r\n\r\n static getDetailCancelationReportsByDate(fechas) {\r\n return request.post(\"/ReporteCancelado/GetByDateDetail\", fechas);\r\n }\r\n}\r\n","import React, { Component } from \"react\";\r\nimport Select from \"react-select\";\r\nimport NoItems from \"../../util/noitems/NoItems\";\r\nimport PaginationReports from \"../../util/pagination/PaginationReports\";\r\nimport Loading from \"../../util/loading/Loading\";\r\nimport DatePicker from \"react-datepicker\";\r\nimport moment from \"moment\";\r\nimport ReportesCancelacionAPI from \"../../../services/Reportes/ReportesCancelacion\";\r\nimport { toast } from \"react-toastify\";\r\nimport CaffenioDriveAPI from \"../../../services/caffenioDrive\";\r\nimport ExportExcel from \"react-export-excel\";\r\n\r\n// Creamos instancias para el package export excel.\r\n// Variable que indica el archivo de excel que se crea.\r\nconst ExcelFile = ExportExcel.ExcelFile;\r\n// Variable que indica una hoja de excel.\r\nconst ExcelSheet = ExportExcel.ExcelSheet;\r\n// Variable que indica una columna de excel.\r\nconst ExcelColumn = ExportExcel.ExcelColumn;\r\n\r\nclass ReporteCancelaciones extends Component {\r\n state = {\r\n isLoading: false,\r\n cancelaciones: [],\r\n cancelacionesFilter: [],\r\n cancelacioneSelect: null,\r\n fechaInicio: null,\r\n fechaFin: null,\r\n pageCancelaciones: [],\r\n cancelacionesChecked: [],\r\n // States relacionados a los dropdowns de los drives\r\n selectedOption: [],\r\n selectedOptionC: [],\r\n selectedOptionB: [],\r\n selectedOptionD: [],\r\n OptionSelect: [],\r\n OptionSelectCity: [],\r\n OptionSelectBranch: [],\r\n OptionSelectDrive: [],\r\n optionState: [],\r\n optionCity: [],\r\n optionBranch: [],\r\n optionDrive: [],\r\n Caffenios: [],\r\n childVisible: false,\r\n checkAll: false,\r\n showModal: false,\r\n creatingPDF: false,\r\n };\r\n\r\n componentDidMount() {\r\n window.scrollTo(0, 0);\r\n this.setState({ isLoading: true }, () => {\r\n let state = { ...this.state };\r\n CaffenioDriveAPI.getCaffenios()\r\n .then((response) => {\r\n state.Caffenios = response.data;\r\n state.Caffenios.map((producto) => {\r\n producto.statusCheck = false;\r\n return producto;\r\n });\r\n state.optionState = this.select_state(state.Caffenios);\r\n state.optionCity = this.select_city(state.Caffenios);\r\n state.optionBranch = this.select_branch(state.Caffenios);\r\n state.optionDrive = this.select_Drive(state.Caffenios);\r\n state.isLoading = false;\r\n this.setState(state);\r\n })\r\n .catch((err) => toast.error(err.response.data.Message));\r\n });\r\n }\r\n\r\n handleDateChange = (date, tipoFecha) => {\r\n let state = { ...this.state };\r\n state[tipoFecha] = date;\r\n this.setState(state, () => this.ConsultarCancelacionesPorFecha());\r\n };\r\n\r\n //#region Funciones para los dropdowns relacionados a los drives (Es copypaste de los dropdowns de la configuracion de drives)\r\n select_state(Caffenios) {\r\n // Llenar el combo 'Estados' con todas las opciones\r\n var newArray = [];\r\n let OptionSelect = [];\r\n var lookupObject = {};\r\n Caffenios.map((item) => {\r\n OptionSelect.push({ value: item.StateId, label: item.State });\r\n });\r\n\r\n for (var i in OptionSelect) {\r\n lookupObject[OptionSelect[i][\"value\"]] = OptionSelect[i];\r\n }\r\n\r\n for (i in lookupObject) {\r\n newArray.push(lookupObject[i]);\r\n }\r\n\r\n return newArray;\r\n }\r\n\r\n select_city(Caffenios) {\r\n // Llenar el combo 'Ciudades' con todas las opciones\r\n var newArray = [];\r\n let OptionSelectCity = [];\r\n var lookupObject = {};\r\n Caffenios.map((item) => {\r\n OptionSelectCity.push({\r\n value: item.Municipalityid,\r\n label: item.Municipality,\r\n });\r\n });\r\n\r\n for (var i in OptionSelectCity) {\r\n lookupObject[OptionSelectCity[i][\"value\"]] = OptionSelectCity[i];\r\n }\r\n\r\n for (i in lookupObject) {\r\n newArray.push(lookupObject[i]);\r\n }\r\n\r\n return newArray;\r\n }\r\n\r\n select_branch(Caffenios) {\r\n // Llenar el combo 'Sucursales' con todas las opciones\r\n var newArray = [];\r\n let OptionSelectBranch = [];\r\n var lookupObject = {};\r\n Caffenios.map((item) => {\r\n OptionSelectBranch.push({ value: item.Branch, label: item.Branch });\r\n });\r\n\r\n for (var i in OptionSelectBranch) {\r\n lookupObject[OptionSelectBranch[i][\"value\"]] = OptionSelectBranch[i];\r\n }\r\n\r\n for (i in lookupObject) {\r\n newArray.push(lookupObject[i]);\r\n }\r\n\r\n return newArray;\r\n }\r\n\r\n select_Drive(Caffenios) {\r\n // Llenar el combo 'Drives' con todas las opciones\r\n var newArray = [];\r\n let OptionSelectDrive = [];\r\n var lookupObject = {};\r\n Caffenios.map((item) => {\r\n OptionSelectDrive.push({\r\n value: item.idCaffenio,\r\n label: item.NombreNuevo,\r\n });\r\n });\r\n\r\n for (var i in OptionSelectDrive) {\r\n lookupObject[OptionSelectDrive[i][\"value\"]] = OptionSelectDrive[i];\r\n }\r\n\r\n for (i in lookupObject) {\r\n newArray.push(lookupObject[i]);\r\n }\r\n\r\n return newArray;\r\n }\r\n\r\n eliminarObjDuplicados = (arr, prop) => {\r\n var nuevoArray = [];\r\n var lookup = {};\r\n\r\n for (var i in arr) {\r\n lookup[arr[i][prop]] = arr[i];\r\n }\r\n\r\n for (i in lookup) {\r\n nuevoArray.push(lookup[i]);\r\n }\r\n\r\n return nuevoArray;\r\n };\r\n\r\n changeSelectEstado = (obj) => {\r\n let state = { ...this.state };\r\n state[\"selectedOption\"] = obj;\r\n let idEstado = obj.map((estado) => {\r\n return estado.value;\r\n });\r\n let objCaffenios = [...state.Caffenios];\r\n let listaCiudades = [];\r\n let listaDrives = [];\r\n\r\n // Recorrer objeto Caffenios y encontrar coincidencias sin eliminar duplicados\r\n objCaffenios.map((item) => {\r\n for (var i = 0; i < idEstado.length; i++) {\r\n if (item.StateId === idEstado[i]) {\r\n listaCiudades.push({\r\n value: item.Municipalityid,\r\n label: item.Municipality,\r\n });\r\n }\r\n }\r\n });\r\n\r\n //Se eliminan las ciudades duplicadas\r\n let eliminarDuplicados = this.eliminarObjDuplicados(listaCiudades, \"value\");\r\n //Se obtiene un arreglo con los id de las ciudades\r\n let idCiudad = eliminarDuplicados.map((ciudad) => {\r\n return ciudad.value;\r\n });\r\n\r\n //Se buscan coincidencias entre ciudad y drive y se genera la lista de drives\r\n objCaffenios.map((item) => {\r\n for (var i = 0; i < idCiudad.length; i++) {\r\n if (item.Municipalityid === idCiudad[i]) {\r\n listaDrives.push({ value: item.idCaffenio, label: item.NombreNuevo });\r\n }\r\n }\r\n });\r\n\r\n //Se limpian los combos 'Ciudades' y 'Drives'\r\n state[\"selectedOptionC\"] = [];\r\n state[\"selectedOptionD\"] = [];\r\n\r\n //Se valida que haya una opción seleccionada en combo 'Estados'\r\n if (obj.length === 0) {\r\n state[\"optionCity\"] = this.select_city(state.Caffenios);\r\n state[\"optionDrive\"] = this.select_Drive(state.Caffenios);\r\n } else {\r\n state[\"optionCity\"] = eliminarDuplicados;\r\n state[\"optionDrive\"] = listaDrives;\r\n }\r\n\r\n this.setState(state, () => this.FilterProcess());\r\n };\r\n\r\n changeSelectCiudad = (obj) => {\r\n let state = { ...this.state };\r\n let idCiudad = obj.map((ciudad) => {\r\n return ciudad.value;\r\n });\r\n let objCaffenios = [...state.Caffenios];\r\n let listaDrives = [];\r\n\r\n //Se buscan coincidencias entre ciudad y drive y se genera la lista de drives\r\n objCaffenios.map((item) => {\r\n for (var i = 0; i < idCiudad.length; i++) {\r\n if (item.Municipalityid === idCiudad[i]) {\r\n listaDrives.push({ value: item.idCaffenio, label: item.NombreNuevo });\r\n }\r\n }\r\n });\r\n\r\n //Se limpia el combo 'Drives'\r\n state[\"selectedOptionD\"] = [];\r\n\r\n //Se valida que haya una opción seleccionada en combo 'Ciudades'\r\n if (obj.length > 0) {\r\n state[\"selectedOptionC\"] = obj;\r\n state[\"optionDrive\"] = listaDrives;\r\n this.setState(state, () => this.FilterProcess());\r\n } else {\r\n this.changeSelectEstado(state[\"selectedOption\"]);\r\n }\r\n };\r\n\r\n changeSelectSucursal = (objSucursal, objDrive) => {\r\n let state = { ...this.state };\r\n let idSucursal = objSucursal.map((sucursal) => {\r\n return sucursal.value;\r\n });\r\n let objCaffenios = [...state.Caffenios];\r\n let listaDrives = [];\r\n\r\n //Se buscan coincidencias entre sucursal y drive y se genera la lista de drives\r\n objCaffenios.map((item) => {\r\n for (var i = 0; i < idSucursal.length; i++) {\r\n if (item.Branch === idSucursal[i]) {\r\n listaDrives.push({ value: item.idCaffenio, label: item.NombreNuevo });\r\n }\r\n }\r\n });\r\n\r\n // Validar si no existen drives seleccionados, resetear el filtro de drives.\r\n if (objDrive.length === 0) {\r\n //Se limpia el combo 'Drives'\r\n state[\"selectedOptionD\"] = [];\r\n }\r\n\r\n //Se valida que haya una opción seleccionada en combo 'Sucursales'\r\n state[\"selectedOptionB\"] = objSucursal;\r\n if (objSucursal.length > 0) {\r\n state[\"optionDrive\"] = listaDrives;\r\n } else {\r\n // Se limpia el combo 'Drives'\r\n state[\"selectedOptionD\"] = [];\r\n state[\"optionDrive\"] = this.select_Drive(state.Caffenios);\r\n }\r\n this.setState(state, () => this.FilterProcess());\r\n };\r\n\r\n changeSelectDrive = (obj) => {\r\n let state = { ...this.state };\r\n let Caffenios = [...state.Caffenios];\r\n\r\n //Valida cada select (Estados,Ciudades,Drives) y realiza la acción correspondiente\r\n if (obj.length > 0) {\r\n state[\"selectedOptionD\"] = obj;\r\n //state[\"optionDrive\"] = obj;\r\n this.setState(state, () => this.FilterProcess());\r\n } else if (state[\"selectedOptionC\"].length === 0) {\r\n this.changeSelectEstado(state[\"selectedOption\"]);\r\n // resetear lista de drives con el primer filtro.\r\n this.changeSelectSucursal(state[\"selectedOptionB\"], obj);\r\n } else if (\r\n state[\"selectedOptionC\"].length === 0 &&\r\n state[\"selectedOption\"].length === 0\r\n ) {\r\n this.select_Drive(Caffenios);\r\n this.select_Drive(Caffenios);\r\n this.select_Drive(Caffenios);\r\n } else {\r\n this.changeSelectCiudad(state[\"selectedOptionC\"]);\r\n }\r\n };\r\n\r\n validarCombos = (state) => {\r\n var status_combo = false; // Vacios\r\n\r\n if (state[\"selectedOption\"].length > 0) {\r\n status_combo = true; // Alguno con valor\r\n }\r\n\r\n if (state[\"selectedOptionC\"].length > 0) {\r\n status_combo = true; // Alguno con valor\r\n }\r\n\r\n if (state[\"selectedOptionD\"].length > 0) {\r\n status_combo = true; // Alguno con valor\r\n }\r\n\r\n return status_combo;\r\n };\r\n //#endregion\r\n\r\n /**\r\n * Se ejecuta al seleccionar un rango de fechas.\r\n * Hace una petición a la API para obtener los reportes de cancelaciones, que están entre las fechas seleccionadas\r\n */\r\n ConsultarCancelacionesPorFecha = () => {\r\n if (this.state.fechaInicio != null && this.state.fechaFin != null) {\r\n this.setState({ isLoading: true }, () => {\r\n let body = {\r\n FechaInicio: this.state.fechaInicio,\r\n FechaFin: this.state.fechaFin,\r\n };\r\n let state = { ...this.state };\r\n ReportesCancelacionAPI.getByDate(body)\r\n .then((response) => {\r\n state.cancelaciones = response.data;\r\n state.cancelacionesChecked = [];\r\n state.isLoading = false;\r\n this.setState(state, () => {\r\n this.FilterProcess();\r\n });\r\n })\r\n .catch((err) => {\r\n state.isLoading = false;\r\n state.cancelacionesChecked = [];\r\n toast.error(err.response.data.Message);\r\n this.setState(state);\r\n });\r\n });\r\n }\r\n };\r\n\r\n /**\r\n * Se ejecuta al seleccionar un valor de los dropdowns relacionados a los drives (estados, ciudades, drives)\r\n * Lo que hace es filtrar los drives segun los valores de los dropdowns y tambien filtra los resultados de los reportes de cancelaciones.\r\n * OJO. Esta función no hace peticiones a la API, solo filtra valores que estan en los states\r\n */\r\n FilterProcess = () => {\r\n let state = { ...this.state };\r\n let Caffenios = state.Caffenios;\r\n var status_combo; // Vacios\r\n let driveIds;\r\n let drivesSelected = [];\r\n\r\n if (state[\"selectedOptionD\"].length === 0) {\r\n driveIds = state[\"optionDrive\"].map((obj) => {\r\n return obj.value;\r\n });\r\n } else {\r\n driveIds = state[\"selectedOptionD\"].map((obj) => {\r\n return obj.value;\r\n });\r\n }\r\n\r\n // Validar si existen drives seleccionados para comparar entre las\r\n // sucursales y drives y obtener la lista actual de drives seleccinados.\r\n if (state[\"selectedOptionD\"].length > 0) {\r\n state[\"optionDrive\"].map((obj) => {\r\n for (var i = 0; i < state[\"selectedOptionD\"].length; i++) {\r\n if (obj.value === state[\"selectedOptionD\"][i].value) {\r\n drivesSelected.push(state[\"selectedOptionD\"][i]);\r\n }\r\n }\r\n });\r\n // Actualizar los drives seleccionados por sucursales seleccionadas.\r\n state[\"selectedOptionD\"] = drivesSelected;\r\n }\r\n\r\n status_combo = this.validarCombos(state);\r\n\r\n Caffenios = Caffenios.filter((obj2) => {\r\n if (\r\n driveIds.filter((item) => {\r\n return item === obj2.idCaffenio;\r\n }).length > 0\r\n ) {\r\n return obj2;\r\n }\r\n });\r\n\r\n state.cancelacionesFilter = state.cancelaciones.filter((cancelacion) => {\r\n return (\r\n driveIds.findIndex((driveId) => {\r\n return driveId === cancelacion.idCaffenio;\r\n }) !== -1\r\n );\r\n });\r\n this.setState(state);\r\n };\r\n\r\n selectAllCheck = () => {\r\n let state = { ...this.state };\r\n\r\n state.checkAll = !state.checkAll;\r\n // Insertar o quitar los ids de la pagina actual\r\n state.pageCancelaciones.findIndex((item) => {\r\n let indexCheck = state.cancelacionesChecked.findIndex(\r\n (cancelacion) => item.idOrden === cancelacion\r\n );\r\n if (state.checkAll) {\r\n if (indexCheck === -1) state.cancelacionesChecked.push(item.idOrden);\r\n } else {\r\n if (indexCheck !== -1) {\r\n state.cancelacionesChecked.splice(indexCheck, 1);\r\n }\r\n }\r\n });\r\n state.childVisible = state.cancelacionesChecked.length > 0;\r\n this.setState(state);\r\n };\r\n\r\n /**\r\n * Se ejecuta al darle click a un checkbox de un renglón.\r\n * Lo que hace es determinar si el checkbox del header se tiene que marcar o no\r\n */\r\n showView = () => {\r\n let state = { ...this.state };\r\n let cheked = false;\r\n let checkAllTemp = true;\r\n state.pageCancelaciones.map((item) => {\r\n if (\r\n state.cancelacionesChecked.findIndex(\r\n (cancelacion) => item.idOrden === cancelacion\r\n ) !== -1\r\n ) {\r\n cheked = true;\r\n } else {\r\n checkAllTemp = false;\r\n }\r\n });\r\n\r\n this.setState({\r\n childVisible: state.cancelacionesChecked.length > 0,\r\n checkAll: checkAllTemp,\r\n });\r\n };\r\n\r\n // Select all branch offices of the list and add to filter.\r\n selectAllBranchOffices = () => {\r\n let state = { ...this.state };\r\n state[\"selectedOptionB\"] = this.state.optionBranch;\r\n this.setState(state, () => this.FilterProcess());\r\n };\r\n\r\n // Select all drives of the list and add to filter.\r\n selectAllDrives = () => {\r\n let state = { ...this.state };\r\n state[\"selectedOptionD\"] = this.state.optionDrive;\r\n this.setState(state, () => this.FilterProcess());\r\n };\r\n\r\n // Function for convert to value decimal with format of value coin.\r\n formatCoin = (cash) => {\r\n const options2 = { style: \"currency\", currency: \"MXN\" };\r\n const cashFormated = new Intl.NumberFormat(\"es-MX\", options2);\r\n return cashFormated.format(cash);\r\n };\r\n\r\n render() {\r\n console.log(this.state.cancelaciones);\r\n let fechaHoy = new Date();\r\n return (\r\n
    \r\n

    Cancelaciones

    \r\n
    \r\n
    \r\n
    \r\n
    \r\n \r\n this.handleDateChange(e, \"fechaInicio\")}\r\n startDate={this.state.fechaInicio}\r\n endDate={this.state.fechaFin}\r\n maxDate={this.state.fechaFin ? this.state.fechaFin : fechaHoy}\r\n popperPlacement=\"bottom\"\r\n popperModifiers={{\r\n offset: {\r\n enabled: true,\r\n offset: \"5px, 20px\",\r\n },\r\n preventOverflow: {\r\n enabled: true,\r\n escapeWithReference: false,\r\n boundariesElement: \"viewport\",\r\n },\r\n }}\r\n locale=\"es\"\r\n todayButton=\"Hoy\"\r\n dateFormat=\"dd/MM/yyyy\"\r\n className=\"input\"\r\n autoComplete={\"off\"}\r\n />\r\n
    \r\n
    \r\n \r\n this.handleDateChange(e, \"fechaFin\")}\r\n disabled={this.state.fechaInicio == null}\r\n startDate={this.state.fechaInicio}\r\n endDate={this.state.fechaFin}\r\n minDate={this.state.fechaInicio}\r\n maxDate={fechaHoy}\r\n popperPlacement=\"bottom\"\r\n popperModifiers={{\r\n offset: {\r\n enabled: true,\r\n offset: \"5px, 20px\",\r\n },\r\n preventOverflow: {\r\n enabled: true,\r\n escapeWithReference: false,\r\n boundariesElement: \"viewport\",\r\n },\r\n }}\r\n locale=\"es\"\r\n todayButton=\"Hoy\"\r\n dateFormat=\"dd/MM/yyyy\"\r\n className=\"input\"\r\n autoComplete={\"off\"}\r\n />\r\n
    \r\n\r\n
    \r\n \r\n
    \r\n \"No hay opciones\"}\r\n options={this.state.optionBranch}\r\n closeMenuOnSelect={false}\r\n />\r\n
    \r\n
    \r\n\r\n
    \r\n {\r\n this.selectAllBranchOffices();\r\n }}\r\n >\r\n \r\n \r\n \r\n {/* */}\r\n \r\n
    \r\n\r\n
    \r\n \r\n
    \r\n \"No hay opciones\"}\r\n options={this.state.optionDrive}\r\n closeMenuOnSelect={false}\r\n />\r\n
    \r\n
    \r\n\r\n
    \r\n {\r\n this.selectAllDrives();\r\n }}\r\n >\r\n \r\n \r\n \r\n {/* */}\r\n \r\n
    \r\n
    \r\n
    \r\n
    \r\n
    \r\n\r\n
    \r\n
    \r\n {this.state.cancelaciones.length > 0 ? (\r\n \r\n
    \r\n
    \r\n {/* ====== EXPORT DATA TO EXCEL ======= */}\r\n \r\n \r\n \r\n \r\n Exportar a EXCEL\r\n \r\n }\r\n >\r\n \r\n \r\n moment(dateTime.tiempoFin).format(\"DD/MM/YYYY\")\r\n }\r\n />\r\n \r\n moment(dateTime.tiempoFin).format(\"HH:mm:ss\")\r\n }\r\n />\r\n \r\n \r\n rowName.Nombre +\r\n \" \" +\r\n rowName.ApellidoP +\r\n \" \" +\r\n rowName.ApellidoM\r\n }\r\n />\r\n \r\n \r\n this.formatCoin(parseFloat(row.Subtotal).toFixed(2))\r\n }\r\n />\r\n \r\n this.formatCoin(parseFloat(row.IVAtotal).toFixed(2))\r\n }\r\n />\r\n \r\n this.formatCoin(parseFloat(row.Total).toFixed(2))\r\n }\r\n />\r\n row.TipoSolicitud}\r\n />\r\n row.Productos}\r\n />\r\n rowMotivo.MotivoCancelacion}\r\n />\r\n \r\n \r\n
    \r\n
    \r\n\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n {this.state.pageCancelaciones.map((item, index) => {\r\n let isChecked =\r\n this.state.cancelacionesChecked.findIndex(\r\n (cancelacion) => item.idOrden === cancelacion\r\n ) !== -1;\r\n return (\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n );\r\n })}\r\n \r\n
    FechaDriveEfectivoEmpleadoCajaMotivo de cancelación
    {moment(item.tiempoFin).format(\"DD/MM/YYYY\")}{item.Drive}\r\n {this.formatCoin(parseFloat(item.Total).toFixed(2))}\r\n \r\n {item.Nombre +\r\n \" \" +\r\n item.ApellidoP +\r\n \" \" +\r\n item.ApellidoM}\r\n {item.Caja}{item.MotivoCancelacion}
    \r\n
    \r\n ) : this.state.fechaInicio == null ||\r\n this.state.fechaFin == null ? (\r\n \"Inserte fechas para iniciar la busqueda\"\r\n ) : (\r\n \r\n )}\r\n \r\n this.setState({ pageCancelaciones: cancelacionesPag }, () =>\r\n this.showView()\r\n )\r\n }\r\n />\r\n
    \r\n
    \r\n\r\n {/* ====== MODAL PARA EL DETALLE DEL REPORTE QUE SEA SELECCIONADA */}\r\n {/* {this.state.showModal && (\r\n this.setState({ showModal: false })}\r\n >\r\n \r\n \r\n )} */}\r\n\r\n \r\n
    \r\n );\r\n }\r\n}\r\n\r\nexport default ReporteCancelaciones;\r\n","import * as React from 'react';\r\nimport FieldAddons from '../field/Field+Addons';\r\n\r\nclass SearchFormV4 extends React.Component {\r\n\r\n timer = null;\r\n propName = null\r\n\r\n constructor(props) {\r\n super(props);\r\n this.state = {\r\n fetching: false,\r\n nameSearch: \"\",\r\n activate: props.activate\r\n }\r\n \r\n this.propName = this.props.name;\r\n }\r\n\r\n // Se registra un escuchador del input de tipo Search\r\n componentDidMount() {\r\n document.addEventListener(\"search\", (e) => {\r\n this.setState({ nameSearch: e.target.value }, () => {\r\n this.props.search(e.target.value);\r\n })\r\n\r\n }, false);\r\n\r\n }\r\n // Se elimina el escuchador.\r\n componentWillUnmount() {\r\n document.removeEventListener(\"search\", () => { }, false);\r\n }\r\n\r\n \r\n onChangeCheckbox() {\r\n var activate = !this.state.activate;\r\n this.setState({ activate: activate }, () => {\r\n this.props.activateSearch(activate);\r\n })\r\n }\r\n\r\n render() {\r\n // Manipulación del nombre recibido por props en caso de ser necesario la restauración de búsqueda y página actual en tabla\r\n if (this.propName && this.state.nameSearch !== this.propName) {\r\n this.setState({ nameSearch: this.propName }, () => this.propName = null)\r\n }\r\n return (\r\n
    \r\n
    \r\n
    \r\n
    \r\n
    \r\n
    \r\n

    \r\n \r\n {\r\n let nameSearch = { ...this.state.nameSearch };\r\n nameSearch = e.currentTarget.value;\r\n nameSearch = nameSearch.replace(/\\s{2,}/g, ' ');\r\n // Se elimina el timer en caso de que el usuario siga tecleando\r\n if (this.timer) clearTimeout(this.timer);\r\n this.setState({ nameSearch: nameSearch }, () => {\r\n // Cuando el usuario termina de escribir se hace la petición de búsqueda\r\n this.timer = setTimeout(() => this.props.search(nameSearch), 500);\r\n });\r\n }}\r\n />\r\n \r\n

    \r\n

    \r\n \r\n

    \r\n
    \r\n\r\n
    \r\n
    \r\n
    \r\n
    \r\n { }}\r\n />\r\n
    \r\n\r\n \r\n
    \r\n
    \r\n\r\n
    \r\n
    \r\n
    \r\n
    \r\n )\r\n }\r\n}\r\n\r\nexport default SearchFormV4;","import React, { useState, useEffect } from 'react';\r\nimport NoItems from '../../util/noitems/NoItems';\r\nimport ServerPagination from '../../util/pagination/ServerPagination';\r\nimport Loading from '../../util/loading/Loading';\r\nimport moment from 'moment';\r\n\r\nexport default function TablaPromociones(props){\r\n const columnas = [\"Nombre\",\"Tipo\",\"QR\",\"App Móvil\", \"Fecha creación\",\"Acciones\"];\r\n const [totalPages, setTotalPages] = useState(0);\r\n const [currentPage, setCurrentPage] = useState(0);\r\n const [loading, setLoading] = useState(false);\r\n\r\n useEffect(() => {\r\n if(props.currentPage !== currentPage || props.totalPages !== totalPages){\r\n setCurrentPage(props.currentPage);\r\n setTotalPages(props.totalPages);\r\n }\r\n\r\n if(props.loading !== loading) setLoading(props.loading);\r\n },[props.totalPages, props.currentPage])\r\n\r\n const actions = (promotion) => {\r\n return (\r\n \r\n \r\n \r\n \r\n {promotion.ShowPrefixCampaign && }\r\n \r\n )\r\n \r\n }\r\n\r\n return (\r\n
    \r\n
    \r\n {props.promociones.length > 0 ?\r\n
    \r\n \r\n \r\n {columnas.map(c => )}\r\n \r\n \r\n {props.promociones.map((row, index) => {\r\n return (\r\n {\r\n e.stopPropagation();\r\n props.history.push(`/app/promociones/detalle/${row.PromoQRId}`)\r\n }}>\r\n \r\n \r\n \r\n \r\n \r\n {/* */}\r\n {actions(row)}\r\n \r\n )\r\n })}\r\n \r\n
    {c}
    {row.Name}{row.PromoTypeDescription}{row.QRTypeName}{row.ShowApp?\"Si\":\"No\"}{moment(row.DateCreated).format('DD/MM/YYYY HH:mm')}\r\n { }}\r\n />\r\n
    \r\n : props.loading ? : }\r\n \r\n
    \r\n
    \r\n )\r\n}","import React, { useState, useEffect } from 'react';\r\nimport SearchFormV4 from '../util/searchform/SearchFormV4';\r\nimport TablaPromociones from './components/TablaPromociones';\r\nimport PortalModal from '../../util/portals/PortalModal';\r\nimport useModal from '../../util/hooks/useModal';\r\nimport { toast } from 'react-toastify';\r\nimport PromocionesAPI from '../../services/Promotions';\r\nimport * as moment from 'moment';\r\nimport Loading from '../util/loading/Loading';\r\n\r\nexport default function Promociones({history}){\r\n const statusModal = useModal();\r\n const deleteModal = useModal();\r\n\r\n const [nameSearch, setNameSearch] = useState(\"\");\r\n const [activate,setActivate] = useState(false);\r\n const [promociones, setPromociones] = useState([]);\r\n const [totalPages, setTotalPages] = useState(0);\r\n const [currentPage, setCurrentPage] = useState(1);\r\n const [loading, setLoading] = useState(false);\r\n const [currentPromo, setCurrentPromo] = useState(null);\r\n const [loadingFullScreen, setLoadingFullScreen] = useState(false);\r\n\r\n const getPromociones = async (name = \"\", page = 1, activate = false) => {\r\n setLoading(true);\r\n const res = await PromocionesAPI.getPromoQR(name, page, activate?1:0);\r\n console.log(res);\r\n if(res){\r\n setPromociones(res.data.Results)\r\n setTotalPages(res.data.TotalPages)\r\n setCurrentPage(res.data.CurrentPage)\r\n }else{\r\n toast.error(\"Hubo un error al obtener las promociones.\")\r\n }\r\n setLoading(false);\r\n }\r\n\r\n // Método para descargar el Excel con la información de la promoción.\r\n // @param idPromotion: identificador único de la promoión\r\n // @param namePromotion: nombre de la promoción\r\n\r\n const downloadQrXlsx = async (idPromotion,namePromotion) => {\r\n setLoadingFullScreen(true);\r\n PromocionesAPI.downloadQrXlsx(idPromotion).then(response => {\r\n const url = window.URL.createObjectURL(new Blob([response.data]));\r\n const link = document.createElement('a');\r\n link.href = url;\r\n let name = `QR PROMOCION ${namePromotion} ${moment().format('DD MM YYYY h mm ss')}`;\r\n name = name.replace(/ /g,\"_\");\r\n link.setAttribute('download', `${name.toUpperCase()}.xlsx`);\r\n document.body.appendChild(link);\r\n link.click();\r\n }).catch(err => {\r\n toast.error(err.response.data.Message)\r\n }).finally(() => {\r\n setLoadingFullScreen(false);\r\n });\r\n }\r\n\r\n // Método para descargar el Zip con la información de la promoción.\r\n // @param idPromotion: identificador único de la promoión\r\n // @param namePromotion: nombre de la promoción\r\n\r\n const downloadQrZip = async (idPromotion,namePromotion) => {\r\n setLoadingFullScreen(true);\r\n PromocionesAPI.downloadQrZip(idPromotion).then(response => {\r\n const url = window.URL.createObjectURL(new Blob([response.data]));\r\n const link = document.createElement('a');\r\n link.href = url;\r\n let name = `QR PROMOCION ${namePromotion} ${moment().format('DD MM YYYY h mm ss')}`;\r\n name = name.replace(/ /g,\"_\");\r\n link.setAttribute('download', `${name.toUpperCase()}.zip`);\r\n document.body.appendChild(link);\r\n link.click();\r\n }).catch(err => {\r\n toast.error(err.response.data.Message)\r\n }).finally(() => {\r\n setLoadingFullScreen(false);\r\n });\r\n }\r\n\r\n const deletePromotion = () => {\r\n setLoadingFullScreen(true);\r\n PromocionesAPI.deletePromotion(currentPromo.PromoQRId).then(response => {\r\n toast.success(response.data.Message);\r\n getPromociones();\r\n }).catch(err => {\r\n toast.error(err.response.data.Message);\r\n }).finally(() => {\r\n \r\n setLoadingFullScreen(false);\r\n setCurrentPromo(null);\r\n })\r\n }\r\n\r\n useEffect(() => {\r\n setPromociones([]);\r\n setTotalPages(0);\r\n getPromociones(nameSearch.trim(), currentPage,activate);\r\n },[nameSearch, currentPage,activate])\r\n\r\n return (\r\n
    \r\n

    Promociones

    \r\n {\r\n history.push({\r\n pathname: '/app/promociones/nueva',\r\n state: {currentPage: currentPage, name: nameSearch}\r\n });\r\n }}\r\n search={(text) => setNameSearch(text)}\r\n name={nameSearch}\r\n tooltip={\"Crear una nueva promoción\"}\r\n newBtnTitle={\"Nueva promoción\"}\r\n activate={activate}\r\n activateSearch={(value) => setActivate(value)}\r\n />\r\n
    \r\n setCurrentPage(page)}\r\n downloadQrXlsx={(idPromotion,namePromotion) => {\r\n downloadQrXlsx(idPromotion,namePromotion);\r\n }}\r\n downloadQrZip={(idPromotion,namePromotion) => {\r\n downloadQrZip(idPromotion,namePromotion);\r\n }}\r\n deletePromotion ={(promotion)=>{\r\n setCurrentPromo(promotion);\r\n deleteModal.toggle();\r\n }}\r\n prefixCampaign = {(idPromotion)=>{\r\n history.push({\r\n pathname: `/app/promociones/prefijo/${idPromotion}`,\r\n state: {currentPage: currentPage, name: nameSearch}\r\n })\r\n }}\r\n loading={loading}\r\n history={history}\r\n />\r\n {\r\n return (\r\n \r\n

    {`¿Estás seguro que deseas eliminar la promoción?`}

    \r\n
    \r\n )\r\n }}\r\n footer\r\n footerButtons={() => {\r\n return (\r\n
    \r\n \r\n \r\n
    \r\n )\r\n }}\r\n />\r\n \r\n
    \r\n )\r\n\r\n}","import React, { useState, useEffect } from 'react';\r\nimport Select from 'react-select';\r\nimport DatePicker from 'react-datepicker';\r\nimport es from \"date-fns/locale/es\";\r\nimport * as moment from 'moment';\r\n\r\nexport default function PromocionDataForm({ disabled, promotions, inputs, setInput,setError, errors, handleInputChange, handleSelectChange, isLoadingPromotions }) {\r\n const [maxDateCupon, setMaxDateCupon] = useState([''])\r\n\r\n // Efecto a realizar cuando cambia el valor de la prop disabled\r\n useEffect(() => {\r\n if (!disabled) {\r\n // getData();\r\n }\r\n }, [disabled])\r\n\r\n useEffect(() => {\r\n (async () => {\r\n\r\n if (inputs.promotion && inputs.promotion.value) {\r\n const promotionObject = promotions.find(p => p.IdPromotion === inputs.promotion.value);\r\n setInput('namePromotion', promotionObject.Name);\r\n setError('namePromotion',false);\r\n setMaxDateCupon(promotionObject.EndDate);\r\n }\r\n \r\n })();\r\n }, [inputs.promotion])\r\n\r\n const validateMinCharecterNamePromotion = async (e) =>{\r\n if(e.target.value && e.target.value.length>0 && e.target.value.length<3){\r\n setError(e.target.name,true);\r\n }else if(e.target.value.length>=3){\r\n setError(e.target.name,false);\r\n }\r\n }\r\n\r\n // const getData = async () => {\r\n // if(inputs.category && inputs.category.value){\r\n // let res = await PromocionAPI.getTags(inputs.category.value);\r\n // if(res.data){\r\n // setTags(res.data);\r\n // }\r\n // }\r\n // }\r\n\r\n return (\r\n
    \r\n\r\n
    \r\n \r\n
    \r\n handleSelectChange(value, event, true)}\r\n noOptionsMessage={() => \"No hay opciones\"}\r\n isLoading={isLoadingPromotions}\r\n options={promotions.map(p => { return { value: p.IdPromotion, label: p.Name } })}\r\n />\r\n
    \r\n {errors.promotion &&

    Promoción requerida

    }\r\n
    \r\n
    \r\n \r\n
    \r\n {handleInputChange(e, true);validateMinCharecterNamePromotion(e);}}\r\n required\r\n />\r\n
    \r\n {errors.namePromotion &&

    {inputs.namePromotion && inputs.namePromotion.length>0 && inputs.namePromotion.length < 3?`El nombre debe de tener 3 o más caracteres`:`Nombre requerido`}

    }\r\n
    \r\n
    \r\n \r\n
    \r\n {\r\n setInput('startDateCupon', date)\r\n }}\r\n maxDate={(inputs.promotion && inputs.endDateCupon)?inputs.endDateCupon : moment(maxDateCupon).toDate()}\r\n onChangeRaw={(e) => e.preventDefault()}\r\n dateFormat=\"dd/MMMM/yyyy\"\r\n locale={es}\r\n required\r\n />\r\n
    \r\n {errors.startDateCupon &&

    Fecha de inicio de cupón requerida

    }\r\n
    \r\n
    \r\n \r\n
    \r\n {\r\n setInput('endDateCupon', date)\r\n }}\r\n disabled={!(inputs.startDateCupon)}\r\n maxDate={inputs.promotion && moment(maxDateCupon).toDate()}\r\n onChangeRaw={(e) => e.preventDefault()}\r\n dateFormat=\"dd/MMMM/yyyy\"\r\n locale={es}\r\n required\r\n />\r\n
    \r\n {errors.endDateCupon &&

    Fecha final de cupón requerida

    }\r\n
    \r\n\r\n
    \r\n \r\n
    \r\n\r\n handleInputChange(e, true)}\r\n required={inputs.showApp}\r\n />\r\n
    \r\n {errors.descriptionApp &&

    Descripción requerida

    }\r\n
    \r\n
    \r\n \r\n
    \r\n handleInputChange(e, true)}\r\n required\r\n />\r\n
    \r\n {errors.restrictionsApp &&

    Restricciones requerida

    }\r\n
    \r\n
    \r\n\r\n\r\n )\r\n}","import React from 'react';\r\nimport Select from 'react-select';\r\n\r\nexport default function TipoPromocionDataForm({typesPromotion, inputs, errors, handleSelectChange}){\r\n return(\r\n
    \r\n
    \r\n \r\n
    \r\n handleSelectChange(value, event, true)}\r\n noOptionsMessage={() => \"No hay opciones\"}\r\n options={typesPromotion.map(p => {return {value: p.PromoTypeId, label: p.Description}})}\r\n />\r\n
    \r\n {errors.typePromotion &&

    Tipo de promoción requerida

    }\r\n
    \r\n
    \r\n );\r\n}","import React from 'react';\r\nimport Select from 'react-select';\r\n\r\nexport default function TipoQRDataForm({typesQR, inputs, errors, handleSelectChange}){\r\n return(\r\n
    \r\n
    \r\n \r\n
    \r\n handleSelectChange(value, event, true)}\r\n noOptionsMessage={() => \"No hay opciones\"}\r\n options={typesQR.map(Qr => {return {value: Qr.QRTypeId, label: Qr.Name}})}\r\n />\r\n
    \r\n {errors.QRType &&

    Tipo de QR requerido

    }\r\n
    \r\n
    \r\n );\r\n}","import React, { useState } from 'react';\r\nimport { toast } from 'react-toastify';\r\n\r\nexport default function MostrarAppDataForm({ inputs, setInput, errors, handleInputChange }) {\r\n\r\n const [fileURL, setFileURL] = useState(\"\");\r\n\r\n const onChangeCheckbox = async () => {\r\n setInput('showApp', !inputs.showApp)\r\n if(!inputs.scheduleNotification){\r\n setInput('appImage',null);\r\n setFileURL(\"\"); \r\n }\r\n }\r\n\r\n /**\r\n * Función que se ejecuta al subir una imagen del topping\r\n */\r\n const handleSelectedFile = (e) => {\r\n\r\n let files = e.target.files\r\n let file = files[0]\r\n e.target.value = \"\";\r\n if (typeof file === 'undefined') {\r\n e.target.value = null;\r\n return false;\r\n }\r\n\r\n const EXTENSION = (file.name.split('.')[1]).toLowerCase();\r\n\r\n if (validateExtensionFile(EXTENSION) === false) {\r\n toast.error(\"Es necesario seleccionar un archivo valido.\");\r\n e.target.value = null;\r\n return false;\r\n\r\n } else {\r\n setInput(e.target.name, file);\r\n setFileURL(URL.createObjectURL(file));\r\n }\r\n }\r\n\r\n /**\r\n * Valida que solo permita los tipos deseados\r\n */\r\n const validateExtensionFile = (extension1) => {\r\n\r\n var extensiones_permitidas = [\"png\"];\r\n //extension1 = extension1.toLowerCase();\r\n //console.log(extension1)\r\n if (extensiones_permitidas.indexOf(extension1) === -1) {\r\n return false;\r\n }\r\n\r\n return true;\r\n }\r\n\r\n return (\r\n
    \r\n
    \r\n \r\n { }}\r\n />\r\n
    \r\n {inputs.showApp &&
    \r\n
    \r\n \r\n
    \r\n \r\n
    \r\n \r\n
    \r\n {errors.appImage &&

    Imagen requerida

    }\r\n {inputs.appImage != null &&\r\n \r\n }\r\n {fileURL && }\r\n
    \r\n
    \r\n
    }\r\n
    \r\n );\r\n}","import React, { useState, useEffect } from 'react';\r\nimport DatePicker from 'react-datepicker';\r\nimport es from \"date-fns/locale/es\";\r\nimport moment from 'moment';\r\n\r\nexport default function AgendarNotificacionDataForm({ inputs, setInput, errors, handleInputChange }) {\r\n const [minDateNotification, setMinDateNotification] = useState(null);\r\n const onChangeCheckbox = async () => {\r\n setInput('scheduleNotification', !inputs.scheduleNotification);\r\n if (!inputs.scheduleNotification) {\r\n setInput('notificationDate', null);\r\n setInput('titleNotification', null);\r\n setInput('contentNotification', null);\r\n }\r\n }\r\n\r\n\r\n useEffect(() => {\r\n (async () => {\r\n\r\n if (moment(inputs.startDateCupon).format('DD/MM/YYYY') === moment(new Date()).format('DD/MM/YYYY')) {\r\n var date = new Date();\r\n date.setDate(date.getDate() + 1);\r\n setMinDateNotification(date);\r\n } else {\r\n setMinDateNotification(inputs.startDateCupon);\r\n }\r\n\r\n })()\r\n }, [inputs.startDateCupon])\r\n\r\n return (\r\n
    \r\n
    \r\n \r\n { }}\r\n />\r\n
    \r\n {inputs.scheduleNotification &&
    \r\n
    \r\n
    \r\n \r\n
    \r\n {\r\n setInput('notificationDate', date)\r\n }}\r\n maxDate={inputs.endDateCupon}\r\n onChangeRaw={(e) => e.preventDefault()}\r\n dateFormat=\"dd/MMMM/yyyy\"\r\n locale={es}\r\n required={inputs.scheduleNotification}\r\n />\r\n
    \r\n {errors.notificationDate &&

    Fecha de notificación requerida

    }\r\n
    \r\n
    \r\n \r\n
    \r\n handleInputChange(e, true)}\r\n required={inputs.scheduleNotification}\r\n />\r\n
    \r\n {errors.titleNotification &&

    Título requerido

    }\r\n
    \r\n
    \r\n \r\n
    \r\n handleInputChange(e, true)}\r\n required={inputs.scheduleNotification}\r\n />\r\n
    \r\n {errors.contentNotification &&

    Contenido requerido

    }\r\n
    \r\n\r\n
    \r\n
    }\r\n
    \r\n );\r\n}","import React from 'react';\r\n\r\nexport default function TipoPromocionDataForm({ inputs, setInput, errors, handleInputChange }) {\r\n return (\r\n
    \r\n
    \r\n \r\n
    \r\n {\r\n if (/[^0-9]+/.test(e.clipboardData.getData(\"Text\"))) {\r\n e.preventDefault();\r\n }\r\n }}\r\n onKeyPress={(event) => {\r\n const keyCode = event.keyCode || event.which;\r\n const keyValue = String.fromCharCode(keyCode);\r\n if (/[^0-9`]+/.test(keyValue) || event.target.value.length >= event.target.getAttribute('maxLength'))\r\n event.preventDefault();\r\n }}\r\n maxLength={15}\r\n placeholder={`Cantidad`}\r\n value={inputs.cantidad}\r\n onChange={(e) => handleInputChange(e, true)}\r\n required={ inputs.QRType && inputs.QRType.value === 2}\r\n />\r\n
    \r\n {errors.amountCodes &&

    Cantidad requerida

    }\r\n
    \r\n
    \r\n );\r\n}","import React, { useEffect, useState } from 'react';\r\nimport useForm from '../../../../util/hooks/useForm';\r\nimport { toast } from 'react-toastify';\r\nimport PromocionDataForm from './components/PromocionDataForm';\r\nimport TipoPromocionDataForm from './components/TipoPromocionDataForm';\r\nimport TipoQRDataForm from './components/TipoQRDataForm';\r\nimport SegmentoDataForm from './components/SegmentoDataForm';\r\nimport MostrarAppDataForm from './components/MostrarAppDataForm';\r\nimport AgendarNotificacionDataForm from './components/AgendarNotificacionDataForm';\r\nimport CantidadCuponesDataForm from './components/CantidadCuponesDataForm';\r\nimport PromocionesAPI from '../../../../services/Promotions';\r\nimport moment from 'moment';\r\n\r\nexport default function NuevaPromocionForm({ history, location, promotions, typesPromotion, typesQR, isLoadingPromotions }) {\r\n const { inputs, setInput, errors, setError, replaceInputs, handleInputChange, handleSelectChange, handleSubmit } = useForm(() => {\r\n savePromotion();\r\n });\r\n const [typesQRTemp, setTypesQRTemp] = useState([]);\r\n const [working, setWorking] = useState(false);\r\n\r\n const savePromotion = async () => {\r\n if (!working) {\r\n setWorking(true);\r\n let data = { ...inputs };\r\n\r\n if (inputs.showApp) {\r\n\r\n var responseUploadImage = PromocionesAPI.uploadImage(inputs.appImage);\r\n responseUploadImage.then(res => {\r\n if (res.status === 200) {\r\n var imageUrl = res.data.ImagePath;\r\n let body = getBodySave(data, imageUrl);\r\n console.log(body);\r\n saveUpdateCall(body)\r\n\r\n } else {\r\n\r\n toast.error('Error' + res.status);\r\n setWorking(false);\r\n }\r\n }).catch(err => {\r\n toast.error(err.message);\r\n setWorking(false);\r\n });\r\n } else {\r\n let body = getBodySave(data, null);\r\n console.log(body);\r\n saveUpdateCall(body);\r\n }\r\n }\r\n }\r\n\r\n function saveUpdateCall(body) {\r\n var response = null;\r\n if (body.PromoQRId) {\r\n // response = PromocionesAPI.updatePromotion(body);\r\n } else {\r\n response = PromocionesAPI.savePromotion(body);\r\n }\r\n response.then(res => {\r\n if (body.PromoQRId) toast.success(\"Datos actualizados correctamente.\");\r\n else toast.success(\"Promoción creada.\");\r\n history.push({\r\n pathname: '/app/promociones',\r\n state: location.state ? { currentPage: location.state.currentPage || 0, name: location.state.name || \"\" } : { currentPage: 1, name: \"\" }\r\n });\r\n }).catch(err => {\r\n toast.error(err.response.data.Message)\r\n }).finally(() => setWorking(false))\r\n }\r\n\r\n function getBodySave(data, imageUrl) {\r\n return {\r\n promotionId: data.promotion.value,\r\n name: data.namePromotion,\r\n dateStart: moment(data.startDateCupon).format('YYYY-MM-DD'),\r\n dateEnd: moment(data.endDateCupon).format('YYYY-MM-DD'),\r\n promoTypeId: data.typePromotion.value,\r\n qrTypeId: data.QRType.value,\r\n promoTypeSegmentationId: data.QRType && data.QRType.value === 3 ? data.typeSegmentation.value : null,\r\n idSegmentation: data.typeSegmentation && data.typeSegmentation.value === 1 ? data.segmentation.value : null,\r\n showApp: data.showApp ? data.showApp : false,\r\n promoDescriptionApp: data.descriptionApp,\r\n promoRestrictionApp: data.restrictionsApp,\r\n notificationApp: data.scheduleNotification ? data.scheduleNotification : false,\r\n notificationDateSend: data.scheduleNotification ? moment(data.notificationDate).format('YYYY-MM-DD') : null,\r\n notificationTitle: data.scheduleNotification ? data.titleNotification : null,\r\n notificationDescription: data.scheduleNotification ? data.contentNotification : null,\r\n imagePathApp: data.showApp ? imageUrl : null,\r\n clients: data.typeSegmentation && data.typeSegmentation.value === 2 ? data.validClients : null,\r\n amountCodes: parseInt(data.amountCodes)\r\n };\r\n }\r\n\r\n const inputsAreValid = () => {\r\n const promotionData = inputs.promotion && inputs.namePromotion && inputs.namePromotion.length >= 3 && inputs.startDateCupon && inputs.endDateCupon && inputs.descriptionApp &&\r\n inputs.descriptionApp.length > 0 &&\r\n inputs.restrictionsApp &&\r\n inputs.restrictionsApp.length > 0;\r\n const typePromotionData = inputs.typePromotion && inputs.typePromotion.value;\r\n const typeQRDataForm = inputs.QRType && (inputs.QRType.value === 1 ||\r\n (inputs.QRType.value === 2 && inputs.amountCodes && inputs.amountCodes.length > 0) ||\r\n (inputs.QRType.value === 3 &&\r\n (inputs.typeSegmentation && inputs.typeSegmentation.value === 1 && inputs.segmentation)\r\n || inputs.typeSegmentation && inputs.typeSegmentation.value === 2 && inputs.validClients));\r\n const showAppData = (inputs.showApp === undefined || inputs.showApp === false) ||\r\n (inputs.showApp &&\r\n inputs.showApp === true\r\n && inputs.appImage);\r\n\r\n const scheduleNotificationData = (inputs.scheduleNotification === undefined || inputs.scheduleNotification === false) ||\r\n (inputs.scheduleNotification &&\r\n inputs.scheduleNotification === true &&\r\n inputs.notificationDate &&\r\n inputs.titleNotification &&\r\n inputs.titleNotification.length > 0 &&\r\n inputs.contentNotification &&\r\n inputs.contentNotification.length > 0)\r\n return promotionData && typePromotionData && typeQRDataForm && showAppData && scheduleNotificationData;\r\n }\r\n\r\n useEffect(() => {\r\n (async () => {\r\n\r\n setInput('QRType', null)\r\n\r\n if (typesQR && inputs.typePromotion) {\r\n\r\n if (inputs.typePromotion.value === 1) {\r\n const tempObject = typesQR.filter((Qr) => Qr.QRTypeId === 1);\r\n setTypesQRTemp(tempObject);\r\n } else {\r\n const tempObject = typesQR.filter((Qr) => Qr.QRTypeId !== 1);\r\n setTypesQRTemp(tempObject);\r\n }\r\n }\r\n })();\r\n }, [inputs.typePromotion])\r\n\r\n useEffect(() => {\r\n (async () => {\r\n setInput('amountCodes', null)\r\n if (!inputs.QRType) {\r\n setInput('typeSegmentation', null)\r\n setInput('segmentation', null)\r\n setInput('excelFile', null)\r\n setInput('validClients', null)\r\n\r\n } else\r\n if (inputs.QRType && inputs.QRType.value !== 3) {\r\n setInput('typeSegmentation', null)\r\n setInput('segmentation', null)\r\n setInput('excelFile', null)\r\n setInput('validClients', null)\r\n if (inputs.QRType && inputs.QRType.value === 1) {\r\n setInput('amountCodes', 1)\r\n }\r\n }\r\n\r\n\r\n })()\r\n }, [inputs.QRType])\r\n\r\n return (\r\n
    \r\n
    \r\n
    \r\n \r\n
    \r\n {inputs.promotion &&
    \r\n \r\n
    }\r\n {inputs.typePromotion &&
    \r\n
    \r\n \r\n
    }\r\n {(inputs.QRType && inputs.QRType.value === 2) &&
    \r\n
    \r\n \r\n
    }\r\n {(inputs.QRType && inputs.QRType.value === 3) &&
    \r\n
    \r\n \r\n
    }\r\n {inputs.promotion &&
    \r\n
    \r\n \r\n
    }\r\n {inputs.promotion &&
    \r\n
    \r\n \r\n
    }\r\n
    \r\n
    \r\n
    \r\n

    \r\n {\r\n history.push({\r\n pathname: '/app/promociones',\r\n state: location.state ? { currentPage: location.state.currentPage || 0, name: location.state.name || \"\" } : { currentPage: 1, name: \"\" }\r\n });\r\n }}>\r\n Regresar\r\n \r\n

    \r\n\r\n

    \r\n \r\n Guardar promoción\r\n \r\n

    \r\n
    \r\n
    \r\n \r\n );\r\n}","import React, { useState, useEffect } from 'react';\r\nimport NuevaPromocionForm from './components/NuevaPromocionForm';\r\nimport PromocionesAPI from '../../../services/Promotions';\r\nimport { toast } from 'react-toastify';\r\n\r\nfunction NuevaPromocion(props){\r\n const [data, setData] = useState({promotions: [],typesPromotion:[],typesQR:[]});\r\n const [promocion,setPromocion] = useState(null);\r\n const [isLoadingPromotions,setIsLoadingPromotions] = useState(false);\r\n\r\n const fetchData = async () => {\r\n var promotions=[],typesPromotion=[],typesQR=[];\r\n var getPromoFinished = false,getTypesPromoFinished = false,getQrTypeFinished = false;\r\n\r\n setIsLoadingPromotions(true);\r\n var responsePromotions = PromocionesAPI.getPromotions();\r\n responsePromotions.then( res =>{\r\n if(res.status === 200){\r\n promotions = res.data;\r\n }else{\r\n toast.error('Error '+res.status);\r\n }\r\n }).catch(err => {\r\n toast.error(err.message);\r\n }).finally(() => {\r\n setIsLoadingPromotions(false);\r\n getPromoFinished=true;\r\n if(validateMultipleCalls(getPromoFinished,getTypesPromoFinished,getQrTypeFinished)) setData({promotions: promotions,typesPromotion:typesPromotion,typesQR:typesQR});\r\n });\r\n\r\n var responsePromoType = PromocionesAPI.getPromoType();\r\n responsePromoType.then( res =>{\r\n if(res.status === 200){\r\n typesPromotion = res.data;\r\n }else{\r\n toast.error('Error '+res.status);\r\n }\r\n }).catch(err => {\r\n toast.error(err.message);\r\n }).finally(() =>{\r\n getTypesPromoFinished=true;\r\n if(validateMultipleCalls(getPromoFinished,getTypesPromoFinished,getQrTypeFinished)) setData({promotions: promotions,typesPromotion:typesPromotion,typesQR:typesQR});\r\n });\r\n\r\n var responseQRType = PromocionesAPI.getQRType();\r\n responseQRType.then( res =>{\r\n if(res.status === 200){\r\n typesQR = res.data;\r\n }else{\r\n toast.error('Error '+res.status);\r\n }\r\n }).catch(err => {\r\n toast.error(err.message);\r\n }).finally(()=>{\r\n getQrTypeFinished=true;\r\n if(validateMultipleCalls(getPromoFinished,getTypesPromoFinished,getQrTypeFinished)) setData({promotions: promotions,typesPromotion:typesPromotion,typesQR:typesQR});\r\n });\r\n }\r\n\r\n function validateMultipleCalls (getPromoFinished,getTypesPromoFinished,getQrTypeFinished){\r\n if(getPromoFinished && getTypesPromoFinished && getQrTypeFinished){\r\n return true;\r\n }else{\r\n return false;\r\n }\r\n }\r\n\r\n useEffect(() => {\r\n fetchData();\r\n\r\n if(props.match.params.id){\r\n // PromocionesAPI.getPromocion(props.match.params.id).then(res => {\r\n // setPromocion(res.data);\r\n // }).catch(err => toast.error(toast.response.data.Message));\r\n }\r\n }, [])\r\n\r\n return (\r\n
    \r\n
    \r\n
    \r\n
    \r\n \r\n {\r\n props.history.push({\r\n pathname: '/app/promociones',\r\n state: props.location.state ? {currentPage: props.location.state.currentPage || 0, name: props.location.state.name || \"\"} : {currentPage: 1, name: \"\"}\r\n });\r\n }}>\r\n \r\n

    {props.match.params.id ? \"Editar promoción\" : \"Nueva promoción\"}

    \r\n
    \r\n
    \r\n
    \r\n \r\n
    \r\n
    \r\n {/* */}\r\n
    \r\n )\r\n}\r\n\r\nexport default NuevaPromocion;","import React, { useState } from 'react';\r\nimport './style.css';\r\n\r\nexport default function ResumenPromocion({ promotion }) {\r\n const [_promotion, setPromotion] = useState({ ...promotion });\r\n\r\n return (\r\n
    \r\n
    \r\n
    \r\n \r\n
    \r\n

    {_promotion.PromotionName}

    \r\n
    \r\n
    \r\n
    \r\n \r\n
    \r\n

    {_promotion.Name}

    \r\n
    \r\n
    \r\n
    \r\n \r\n
    \r\n

    {_promotion.DateStartFormat}

    \r\n
    \r\n
    \r\n
    \r\n \r\n
    \r\n

    {_promotion.DateEndFormat}

    \r\n
    \r\n
    \r\n
    \r\n \r\n
    \r\n

    {_promotion.PromoDescriptionApp}

    \r\n
    \r\n
    \r\n
    \r\n \r\n
    \r\n

    {_promotion.PromoRestrictionApp}

    \r\n
    \r\n
    \r\n
    \r\n \r\n
    \r\n

    {_promotion.PromoTypeDescription}

    \r\n
    \r\n
    \r\n
    \r\n \r\n
    \r\n

    {_promotion.QRTypeName}

    \r\n
    \r\n
    \r\n {_promotion.QRTypeId && _promotion.QRTypeId === 2 &&
    \r\n \r\n
    \r\n

    {_promotion.AmountCodes}

    \r\n
    \r\n
    }\r\n {_promotion.QRTypeId && _promotion.QRTypeId === 3 &&
    \r\n \r\n
    \r\n

    {_promotion.PromoTypeSegmentationDescription}

    \r\n
    \r\n
    }\r\n {_promotion.PromoTypeSegmentationId && _promotion.PromoTypeSegmentationId === 1 &&
    \r\n \r\n
    \r\n

    {_promotion.SegmentationName}

    \r\n
    \r\n
    }\r\n\r\n {_promotion.ShowApp &&
    \r\n

    Mostrar en app móvil

    \r\n
    }\r\n {_promotion.ShowApp &&
    \r\n \r\n
    \r\n \r\n
    \r\n
    }\r\n
    \r\n
    \r\n )\r\n}","import React, { useState, useEffect } from 'react';\r\nimport NoItems from '../../../../util/noitems/NoItems';\r\nimport ServerPagination from '../../../../util/pagination/ServerPagination';\r\nimport Loading from '../../../../util/loading/Loading';\r\n\r\nexport default function TablaPromociones(props) {\r\n const [totalPages, setTotalPages] = useState(0);\r\n const [currentPage, setCurrentPage] = useState(0);\r\n const [loading, setLoading] = useState(false);\r\n\r\n const columnas = ['Cliente', 'Nombre', 'Código','Código en app', 'Redimido', 'Reutilizable', 'Cuenta lealtad', 'Tipo cuenta']\r\n\r\n useEffect(() => {\r\n if (props.currentPage !== currentPage || props.totalPages !== totalPages) {\r\n setCurrentPage(props.currentPage);\r\n setTotalPages(props.totalPages);\r\n }\r\n\r\n if (props.loading !== loading) setLoading(props.loading);\r\n }, [props.totalPages, props.currentPage])\r\n\r\n return (\r\n
    \r\n
    \r\n {props.codesPromotion.length > 0 ?\r\n
    \r\n \r\n \r\n {columnas.map(c => )}\r\n \r\n \r\n {props.codesPromotion.map((row, index) => {\r\n return (\r\n {\r\n e.stopPropagation();\r\n if (row.PathFile) {\r\n var popupQR = window.open(`${row.PathFile}`, `QR ${row.PromoQRDetailCodeId}`, \"width=300, height=300\");\r\n \r\n }\r\n }\r\n }\r\n >\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n\r\n \r\n )\r\n })}\r\n \r\n
    {c}
    {row.IdClient ? row.IdClient : ''}{row.Name ? row.Name + ' ' + row.LastName : ''}{row.Code ? row.Code : ''}{row.CodeCampaignApp ? row.CodeCampaignApp : ''}{row.Redeem ? 'Si' : 'No'}{!row.Expires ? 'Si' : 'No'}{row.LoyaltyAccount ? row.LoyaltyAccount : ''}{row.LoyaltyAccountType ? row.LoyaltyAccountType : ''}
    \r\n : props.loading ? : }\r\n \r\n
    \r\n
    \r\n )\r\n}","import React, { useState, useEffect } from 'react';\r\nimport PromocionesAPI from '../../../services/Promotions';\r\nimport ResumenPromocion from './components/ResumenPromocion'\r\nimport to from '../../../util/to';\r\nimport { toast } from 'react-toastify';\r\nimport TablaCodigoRelacionado from './components/components/TablaCodigoRelacionado'\r\n\r\nexport default function DetallePromocion(props){\r\n const [promotion, setPromotion] = useState(null);\r\n const [codesPromotion,setCodesPromotion] = useState([]);\r\n const [totalPages, setTotalPages] = useState(0);\r\n const [currentPage, setCurrentPage] = useState(1);\r\n const [loading, setLoading] = useState(false);\r\n \r\n // const [working, setWorking] = useState(false);\r\n\r\n useEffect(() => {\r\n (async () => {\r\n let err, promotion;\r\n [err, promotion] = await to(PromocionesAPI.getPromotionDetails(props.match.params.id))\r\n if(err) toast.error(err.response.data.Message);\r\n setPromotion(promotion);\r\n })();\r\n }, [])\r\n\r\n useEffect(() => {\r\n (async () => {\r\n let err, codesPromotion;\r\n setLoading(true);\r\n [err, codesPromotion] = await to(PromocionesAPI.getCodes(props.match.params.id,currentPage),)\r\n if(err) toast.error(err.response.data.Message);\r\n setLoading(false);\r\n setCodesPromotion(codesPromotion.Results);\r\n setTotalPages(codesPromotion.TotalPages);\r\n\r\n// CurrentPage:1\r\n// Name:null\r\n// OffSet:0\r\n// Results:(1) [{…}]\r\n// TotalPages:1\r\n// TotalResults:1\r\n })()\r\n },[currentPage])\r\n\r\n if (!promotion) return null;\r\n\r\n return(\r\n
    \r\n
    \r\n
    \r\n
    \r\n \r\n {\r\n props.history.push({\r\n pathname: '/app/promociones',\r\n state: props.location.state ? {currentPage: props.location.state.currentPage || 0, name: props.location.state.name || \"\"} : {currentPage: 1, name: \"\"}\r\n });\r\n }} >\r\n \r\n

    {promotion.Name}

    \r\n \r\n
    \r\n
    \r\n
    \r\n \r\n
    \r\n
    \r\n
    \r\n\r\n \r\n

    Código(s)

    \r\n setCurrentPage(page)}/>\r\n
    \r\n )\r\n\r\n}","import React, { useState, useEffect } from 'react';\r\n\r\nexport default function NuevoPrefijoCampanaDataForm({ disabled, inputs, setInput,setError, errors, handleInputChange }) {\r\n const [maxDateCupon, setMaxDateCupon] = useState([''])\r\n\r\n // Efecto a realizar cuando cambia el valor de la prop disabled\r\n useEffect(() => {\r\n if (!disabled) {\r\n // getData();\r\n }\r\n }, [disabled])\r\n\r\n \r\n\r\n const validateMinCharecterPrefixCampaign = async (e) =>{\r\n if(e.target.value && e.target.value.length>0 && e.target.value.length<3){\r\n setError(e.target.name,true);\r\n }else if(e.target.value.length>=3){\r\n setError(e.target.name,false);\r\n }\r\n }\r\n\r\n const handleKeyDown = e => {\r\n if(e.key === \" \"){\r\n e.preventDefault();\r\n }\r\n }\r\n\r\n // const getData = async () => {\r\n // if(inputs.category && inputs.category.value){\r\n // let res = await PromocionAPI.getTags(inputs.category.value);\r\n // if(res.data){\r\n // setTags(res.data);\r\n // }\r\n // }\r\n // }\r\n\r\n return (\r\n
    \r\n
    \r\n \r\n
    \r\n {\r\n handleInputChange(e, true);validateMinCharecterPrefixCampaign(e);}\r\n }\r\n required\r\n />\r\n
    \r\n {errors.prefixCampaign &&

    {inputs.prefixCampaign && inputs.prefixCampaign.length>0 && inputs.prefixCampaign.length < 3?`El prefijo debe de tener 3 o más caracteres`:`Prefijo requerido`}

    }\r\n
    \r\n
    \r\n\r\n\r\n )\r\n}","import React, { useEffect, useState } from 'react';\r\nimport useForm from '../../../../util/hooks/useForm';\r\nimport { toast } from 'react-toastify';\r\nimport PromocionDataForm from './components/NuevoPrefijoCampanaDataForm';\r\nimport PromocionesAPI from '../../../../services/Promotions';\r\n\r\nexport default function NuevaPromocionForm({ history, location , id}) {\r\n const { inputs, setInput, errors, setError, replaceInputs, handleInputChange, handleSelectChange, handleSubmit } = useForm(() => {\r\n savePrefix();\r\n });\r\n const [working, setWorking] = useState(false);\r\n\r\n const savePrefix = async () => {\r\n if (!working) {\r\n setWorking(true);\r\n var response = PromocionesAPI.savePrefix({promoQRId:parseInt(id),prefix:inputs.prefixCampaign});\r\n response.then(res => {\r\n toast.success(\"Prefijo guardado exitosamente.\");\r\n history.push({\r\n pathname: '/app/promociones',\r\n state: location.state ? { currentPage: location.state.currentPage || 0, name: location.state.name || \"\" } : { currentPage: 1, name: \"\" }\r\n });\r\n }).catch(err => {\r\n toast.error(err.response.data.Message)\r\n }).finally(() => setWorking(false))\r\n }\r\n }\r\n\r\n const inputsAreValid = () => {\r\n const prefixCampaignData = inputs.prefixCampaign && inputs.prefixCampaign.length>=3;\r\n return prefixCampaignData;\r\n } \r\n\r\n return (\r\n
    \r\n
    \r\n
    \r\n \r\n
    \r\n
    \r\n
    \r\n
    \r\n

    \r\n {\r\n history.push({\r\n pathname: '/app/promociones',\r\n state: location.state ? { currentPage: location.state.currentPage || 0, name: location.state.name || \"\" } : { currentPage: 1, name: \"\" }\r\n });\r\n }}>\r\n Regresar\r\n \r\n

    \r\n\r\n

    \r\n \r\n Asignar prefijo a campaña\r\n \r\n

    \r\n
    \r\n
    \r\n
    \r\n );\r\n}","import React from 'react';\r\nimport NuevoPrefijoCampanaForm from './components/NuevoPrefijoCampanaForm';\r\n\r\nfunction NuevoPrefijoCampana(props){\r\n\r\n return (\r\n
    \r\n
    \r\n
    \r\n
    \r\n \r\n {\r\n props.history.push({\r\n pathname: '/app/promociones',\r\n state: props.location.state ? {currentPage: props.location.state.currentPage || 0, name: props.location.state.name || \"\"} : {currentPage: 1, name: \"\"}\r\n });\r\n }}>\r\n \r\n

    {\"Asignar prefijo a campaña\"}

    \r\n
    \r\n
    \r\n
    \r\n \r\n
    \r\n
    \r\n
    \r\n )\r\n}\r\n\r\nexport default NuevoPrefijoCampana;","import React from \"react\";\r\nimport Field from \"../util/field/Field\";\r\nimport Loading from \"../util/loading/Loading\";\r\nimport Modal from '../util/modal/Modal';\r\nimport AcceptModal from '../util/acceptModal/AcceptModal';\r\nimport HasAccess from '../util/hasAccess/HasAccess';\r\nimport NoItems from \"../util/noitems/NoItems\";\r\nimport Select from 'react-select';\r\nimport Pagination from '../util/pagination/Pagination';\r\n\r\nimport BtnModoGuiado from '../util/BtnModoGuiado/BtnModoGuiado'\r\nimport ErrorMessages from '../../util/validation-error-messages';\r\nimport { size, truncate } from \"lodash\";\r\n\r\nimport TableTemplate from \"../util/tabletemplate/TableTemplate\";\r\nimport DatePicker, { registerLocale } from \"react-datepicker/dist/es\"\r\nimport TimePicker from 'rc-time-picker';\r\nimport { format, formatDistance, formatRelative, addDays, subDays, setHours, setMinutes, parseISO} from 'date-fns'\r\nimport es from \"date-fns/locale/es\";\r\nregisterLocale(\"es\", es);\r\n\r\n\r\nexport function ReporteExtractosComponent({\r\n changeSelectDrive,\r\n changeSelectCiudad,\r\n changeSelectEstado,\r\n handlePageChange,\r\n handleSearchInput,\r\n handleDateChange,\r\n handleStartTimeChange,\r\n handleEndingTimeChange,\r\n activateFilter,\r\n getCaffenioListCalculations,\r\n cleanFilters,\r\n checkHasEmptyFields,\r\n ...props\r\n}) {\r\n return(\r\n
    \r\n\r\n

    Reporte Extractos Café\r\n \r\n {/* {}}\r\n > */}\r\n\r\n

    \r\n\r\n\r\n {/* \r\n FILTRO DE BUSQUEDA\r\n */}\r\n\r\n
    \r\n
    \r\n
    \r\n
    \r\n {/**/}\r\n \r\n
    \r\n
    \r\n {/* */}\r\n
    \r\n
    \r\n \r\n
    \r\n changeSelectEstado(e)}\r\n noOptionsMessage={() => \"No hay opciones\"}\r\n options={props.optionState}\r\n />\r\n
    \r\n
    \r\n
    \r\n \r\n
    \r\n changeSelectCiudad(e)}\r\n noOptionsMessage={() => \"No hay opciones\"}\r\n options={props.optionCity}\r\n />\r\n
    \r\n
    \r\n
    \r\n \r\n
    \r\n changeSelectDrive(e)}\r\n noOptionsMessage={() => \"No hay opciones\"}\r\n options={props.optionDrive}\r\n />\r\n
    \r\n
    \r\n\r\n \r\n
    \r\n \r\n
    \r\n \r\n handleDateChange(e, 'selectedDate')}\r\n popperPlacement=\"right\"\r\n popperModifiers={{\r\n offset: {\r\n enabled: true,\r\n offset: '5px, 10px'\r\n },\r\n preventOverflow: {\r\n enabled: true,\r\n escapeWithReference: false,\r\n boundariesElement: 'viewport'\r\n }\r\n }}\r\n \r\n // withPortal\r\n dateFormat=\"dd/MM/yyyy\"\r\n className=\"input\"\r\n minDate={subDays(new Date(), 1095)}\r\n maxDate={subDays(new Date(), 0)}\r\n />\r\n \r\n
    \r\n
    \r\n\r\n
    \r\n \r\n
    \r\n \r\n handleStartTimeChange(e, 'startHour')}\r\n minTime={props.minStartHourLimit}\r\n maxTime={props.maxStartHourLimit}\r\n showTimeSelect\r\n showTimeSelectOnly\r\n // onChangeRaw={(e) => e.preventDefault()}\r\n timeFormat=\"HH:mm\"\r\n timeIntervals={15}\r\n dateFormat=\"HH:mm\"\r\n className=\"input\"\r\n timeCaption=\"Hora\"\r\n />\r\n \r\n
    \r\n
    \r\n\r\n
    \r\n \r\n
    \r\n \r\n handleEndingTimeChange(e, 'endingHour')}\r\n minTime={props.minEndingHourLimit}\r\n maxTime={props.maxEndingHourLimit}\r\n showTimeSelect\r\n showTimeSelectOnly\r\n timeFormat=\"HH:mm\"\r\n timeIntervals={15}\r\n dateFormat=\"HH:mm\"\r\n className=\"input\"\r\n timeCaption=\"Hora\"\r\n // onChangeRaw={(e) => e.preventDefault()}\r\n />\r\n \r\n
    \r\n
    \r\n \r\n
    \r\n \r\n
    \r\n getCaffenioListCalculations()}\r\n >\r\n Filtrar\r\n \r\n
    \r\n
    \r\n \r\n
    \r\n cleanFilters()}\r\n >\r\n Limpiar filtros\r\n \r\n
    \r\n \r\n
    \r\n
    \r\n
    \r\n\r\n
    \r\n\r\n { props.filterIsActive &&\r\n
    \r\n
    \r\n {/* {props.calculationList[0].length !== 0 */}\r\n {props.calculationListFlatened.length !== 0\r\n ? \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n {/* {props.calculationList.map(calcList => {\r\n return calcList.map((item, index) => (\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n ))\r\n })\r\n } */}\r\n\r\n { props.pageCalculationList.map((item, index) => {\r\n return (\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n )\r\n })\r\n\r\n }\r\n \r\n \r\n
    Nombre DriveFechaHora 24hrCantidad proyectadaCantidad VendidaDiferencia
    {item.NombreNuevo}{format(parseISO(item.Fecha), \"dd/MM/yyyy\")}{item.HoraInicio} - {item.HoraFin}{item.Calculo}{(item.CantidadVendida !== 0 || item.CantidadVendida == null) ? item.CantidadVendida : \"-\"}{(item.CantidadVendida !== 0 || item.CantidadVendida == null) ? (item.Calculo - item.CantidadVendida) : \"-\"}
    {item.NombreNuevo}{format(parseISO(item.Fecha), \"dd/MM/yyyy\")}{item.HoraInicio} - {item.HoraFin}{item.Calculo}{(item.CantidadVendida !== 0 || item.CantidadVendida == null) ? item.CantidadVendida : \"-\"}{(item.CantidadVendida !== 0 || item.CantidadVendida == null) ? (item.Calculo - item.CantidadVendida) : \"-\"}
    \r\n\r\n : }\r\n handlePageChange(calculations) } /*onChangePage={(items) => this.handlePageChange(items)}*/ />\r\n
    \r\n
    \r\n }\r\n\r\n\r\n \r\n\r\n \r\n \r\n
    \r\n\r\n );\r\n}","import {apiUrl} from '../constants';\r\nimport axios from 'axios';\r\nvar request = axios.create({\r\n baseURL: apiUrl,\r\n headers: {'Authorization':'Bearer ' +localStorage.getItem('token'),'Content-Type':'application/json'}\r\n})\r\n\r\nexport default class ReporteExtractosAPI {\r\n\r\n static GetCaffeniosWithCalculations(){\r\n return request.get('ExtractosCalculo/GetCaffeniosWithCalculations')\r\n } \r\n\r\n static GetCaffeniosListCalculations(filterData){\r\n console.log(`filterData`, filterData)\r\n return request.post('ExtractosCalculo/CaffeniosListCalculations', filterData)\r\n }\r\n\r\n // static CreateFormulaData(formulaData){\r\n // return request.post('/FormulaExtracto/NewFormulaExtracto', formulaData);\r\n // }\r\n\r\n // static UpdateFormulaData(formulaData){\r\n // return request.put('/FormulaExtracto/UpdateFormulaExtracto', formulaData);\r\n // }\r\n}\r\n","import React from \"react\"\r\nimport { toast } from 'react-toastify';\r\nimport { ReporteExtractosComponent } from \"./ReporteExtractosComponent\";\r\nimport ErrorMessages from '../../util/validation-error-messages';\r\nimport update from 'immutability-helper';\r\nimport lodash from 'lodash';\r\nimport ReporteExtractosAPI from '../../services/ReporteExtractos'; \r\nimport moment from 'moment';\r\nimport { format, formatDistance, formatRelative, subDays, setHours, setMinutes} from 'date-fns'\r\n\r\nclass ReporteExtractosContainer extends React.Component {\r\n\r\n constructor(props){\r\n super(props);\r\n this.state = {\r\n isLoading: false,\r\n pageDrives: [],\r\n selectedOption: [],\r\n selectedOptionCity: [],\r\n selectedOptionDrive: [],\r\n OptionSelect: [],\r\n OptionSelectCity: [],\r\n OptionSelectDrive: [],\r\n optionState: [],\r\n optionCity: [],\r\n optionDrive: [],\r\n\r\n caffenios: [],\r\n caffeniosFilter: [],\r\n\r\n selectedDate: this.props.selectedDate,\r\n startHour: this.props.startHour,\r\n endingHour: this.props.endingHour,\r\n\r\n minStartHourLimit: this.props.minStartHourLimit,\r\n maxStartHourLimit: this.props.maxStartHourLimit,\r\n\r\n minEndingHourLimit: this.props.minEndingHourLimit,\r\n maxEndingHourLimit: this.props.maxEndingHourLimit,\r\n\r\n // minStartHourLimit: setHours(new Date(), 5),\r\n // maxStartHourLimit: setHours(new Date(), 21),\r\n\r\n // minEndingHourLimit: setHours(new Date(), 5),\r\n // maxEndingHourLimit: setHours(new Date(), 21),\r\n\r\n filterIsActive: false,\r\n filterData: [],\r\n\r\n calculationList: [],\r\n pageCalculationList: [],\r\n calculationListFlatened: [],\r\n\r\n filterText: \"\",\r\n caffenio: null,\r\n\r\n }\r\n //this.initialFormula = []\r\n\r\n \r\n }\r\n \r\n componentDidMount(){\r\n this.changeLoading();\r\n this.getCaffenios();\r\n }\r\n\r\n\r\n getCaffenios = async() => {\r\n\r\n try{\r\n let response = await ReporteExtractosAPI.GetCaffeniosWithCalculations();\r\n let newState = {...this.state}\r\n newState.caffenios = response.data;\r\n newState.caffeniosFilter = response.data;\r\n newState.optionState = this.select_state(newState.caffenios);\r\n newState.optionCity = this.select_city(newState.caffenios);\r\n newState.optionDrive = this.select_Drive(newState.caffenios);\r\n newState.isLoading = false;\r\n this.setState(newState);\r\n\r\n } catch (err) {\r\n let newState = update(this.state, {\r\n isLoading: {$set: false},\r\n });\r\n if(err.response)\r\n toast.error(err.response.data.Message)\r\n else\r\n toast.error(ErrorMessages.SinConexion)\r\n this.setState(newState);\r\n } \r\n }\r\n\r\n getCaffenioListCalculations = async() => {\r\n\r\n await this.changeLoading();\r\n\r\n try{\r\n\r\n let filterData = [];\r\n\r\n this.state.caffeniosFilter.forEach(caf => {\r\n filterData.push({\r\n idCaffenio: caf.idCaffenio,\r\n Fecha: format((this.state.selectedDate), \"yyyy-MM-dd\"),\r\n HoraInicio: format((this.state.startHour), \"HH:mm:ss\"),\r\n HoraFin: format((this.state.endingHour), \"HH:mm:ss\")\r\n })\r\n });\r\n\r\n //console.log('newState.filterData getCaffenioListCalculations:>> ', filterData);\r\n\r\n let response = await ReporteExtractosAPI.GetCaffeniosListCalculations(filterData);\r\n\r\n let newState = {...this.state} \r\n newState.isLoading = false\r\n newState.calculationList = response.data\r\n newState.calculationListFlatened = lodash.flatten(response.data)\r\n newState.filterIsActive = true\r\n this.setState(newState)\r\n\r\n } catch (err) {\r\n let newState = update(this.state, {\r\n isLoading: {$set: false},\r\n });\r\n if(err.response)\r\n toast.error(err.response.data.Message)\r\n else\r\n toast.error(ErrorMessages.SinConexion)\r\n this.setState(newState);\r\n } \r\n }\r\n\r\n activateFilter = () => { \r\n let newState = update(this.state, {\r\n filterIsActive: {$set: true},\r\n });\r\n this.setState(newState);\r\n }\r\n\r\n /**\r\n * Función que se encarga de cambiar el loading del state a su estado opuesto\r\n */\r\n\r\n changeLoading = () => {\r\n let newState = {...this.state}\r\n newState.isLoading = !this.state.isLoading\r\n newState.calculationList = []\r\n newState.calculationListFlatened = []\r\n this.setState(newState); \r\n }\r\n\r\n handleSearchInput = (text) => {\r\n let state = {...this.state};\r\n state.filterText = text;\r\n this.setState(state, () => this.FilterProcess());\r\n }\r\n\r\n\r\n select_state(caffenios) { // Llenar el combo 'Estados' con todas las opciones \r\n var newArray = [];\r\n let OptionSelect = [];\r\n var lookupObject = {};\r\n caffenios.map((item) => {\r\n OptionSelect.push({value:item.StateId,label:item.State});\r\n });\r\n\r\n for(var i in OptionSelect) {\r\n lookupObject[OptionSelect[i][\"value\"]] = OptionSelect[i];\r\n }\r\n \r\n for(i in lookupObject) {\r\n newArray.push(lookupObject[i]);\r\n }\r\n \r\n return newArray;\r\n }\r\n\r\n select_city(caffenios) { // Llenar el combo 'Ciudades' con todas las opciones \r\n var newArray = [];\r\n let OptionSelectCity = [];\r\n var lookupObject = {};\r\n caffenios.map((item) => {\r\n OptionSelectCity.push({value:item.Municipalityid,label:item.Municipality});\r\n });\r\n\r\n for(var i in OptionSelectCity) {\r\n lookupObject[OptionSelectCity[i][\"value\"]] = OptionSelectCity[i];\r\n }\r\n \r\n for(i in lookupObject) {\r\n newArray.push(lookupObject[i]);\r\n }\r\n\r\n return newArray;\r\n }\r\n\r\n select_Drive(caffenios) { // Llenar el combo 'Drives' con todas las opciones \r\n var newArray = [];\r\n let OptionSelectDrive = [];\r\n var lookupObject = {};\r\n caffenios.map((item) => {\r\n OptionSelectDrive.push({value:item.idCaffenio,label:item.NombreNuevo});\r\n });\r\n\r\n for(var i in OptionSelectDrive) {\r\n lookupObject[OptionSelectDrive[i][\"value\"]] = OptionSelectDrive[i];\r\n }\r\n \r\n for(i in lookupObject) {\r\n newArray.push(lookupObject[i]);\r\n }\r\n\r\n return newArray;\r\n }\r\n\r\n changeSelectDrive = (obj) =>{\r\n let state = {...this.state};\r\n let caffenios = [...state.caffenios];\r\n \r\n //Valida cada select (Estados,Ciudades,Drives) y realiza la acción correspondiente\r\n if(obj.length>0){\r\n state[\"selectedOptionDrive\"] = obj;\r\n //state[\"optionDrive\"] = obj;\r\n this.setState(state, () => this.FilterProcess());\r\n } else if(state[\"selectedOptionCity\"].length===0){\r\n this.changeSelectEstado(state[\"selectedOption\"]);\r\n } else if(state[\"selectedOptionCity\"].length===0 && state[\"selectedOption\"].length===0){\r\n this.select_Drive(caffenios);\r\n this.select_Drive(caffenios);\r\n this.select_Drive(caffenios);\r\n } else{\r\n this.changeSelectCiudad(state[\"selectedOptionCity\"]);\r\n }\r\n }\r\n\r\n eliminarObjDuplicados = (arr,prop) => {\r\n var nuevoArray = [];\r\n var lookup = {};\r\n \r\n for (var i in arr) {\r\n lookup[arr[i][prop]] = arr[i];\r\n }\r\n \r\n for (i in lookup) {\r\n nuevoArray.push(lookup[i]);\r\n }\r\n \r\n return nuevoArray;\r\n }\r\n\r\n changeSelectEstado = (obj) => {\r\n let state = {...this.state}\r\n state[\"selectedOption\"] = obj;\r\n let idEstado = obj.map(estado => {return estado.value});\r\n let objCaffenios = [...state.caffenios];\r\n let listaCiudades = [];\r\n let listaDrives = [];\r\n\r\n // Recorrer objeto Caffenios y encontrar coincidencias sin eliminar duplicados\r\n objCaffenios.map(item =>{\r\n for(var i=0; i {return ciudad.value});\r\n\r\n //Se buscan coincidencias entre ciudad y drive y se genera la lista de drives\r\n objCaffenios.map(item =>{\r\n for(var i=0; i this.FilterProcess());\r\n }\r\n\r\n changeSelectCiudad = (obj) =>{\r\n let state = {...this.state}\r\n let idCiudad = obj.map(ciudad => {return ciudad.value});\r\n let objCaffenios = [...state.caffenios];\r\n let listaDrives = [];\r\n\r\n //Se buscan coincidencias entre ciudad y drive y se genera la lista de drives\r\n objCaffenios.map(item =>{\r\n for(var i=0; i0){\r\n state[\"selectedOptionCity\"] = obj;\r\n state[\"optionDrive\"] = listaDrives;\r\n this.setState(state, () => this.FilterProcess());\r\n } else{\r\n this.changeSelectEstado(state[\"selectedOption\"]);\r\n }\r\n }\r\n\r\n validarCombos = (state) => {\r\n var status_combo = false; // Vacios\r\n\r\n if(state[\"selectedOption\"].length>0){\r\n status_combo = true; // Alguno con valor\r\n }\r\n\r\n if(state[\"selectedOptionCity\"].length>0){\r\n status_combo = true; // Alguno con valor\r\n }\r\n\r\n if(state[\"selectedOptionDrive\"].length>0){\r\n status_combo = true; // Alguno con valor\r\n }\r\n\r\n return status_combo;\r\n }\r\n\r\n cleanFilters = () => {\r\n let nState = {...this.state}\r\n\r\n nState.selectedOption = []\r\n nState.selectedOption= []\r\n nState.selectedOptionCity= []\r\n nState.selectedOptionDrive= []\r\n nState.OptionSelect= []\r\n nState.OptionSelectCity= []\r\n nState.OptionSelectDrive= []\r\n nState.selectedDate= null\r\n nState.startHour= null\r\n nState.endingHour= null\r\n nState.calculationList= []\r\n nState.calculationListFlatened= []\r\n nState.filterIsActive= false\r\n nState.minStartHourLimit= this.props.minStartHourLimit\r\n nState.maxStartHourLimit= this.props.maxStartHourLimit\r\n nState.minEndingHourLimit= this.props.minEndingHourLimit\r\n nState.maxEndingHourLimit= this.props.maxEndingHourLimit\r\n // let newState = update(this.state, {\r\n // selectedOption: {$set: []},\r\n // selectedOptionCity: {$set: []},\r\n // selectedOptionDrive: {$set: []},\r\n // OptionSelect: {$set: []},\r\n // OptionSelectCity: {$set: []},\r\n // OptionSelectDrive: {$set: []},\r\n // selectedDate: {$set: null},\r\n // startHour: {$set: null},\r\n // endingHour: {$set: null},\r\n // calculationList: {$set: []},\r\n // filterIsActive: {$set: false}\r\n\r\n // })\r\n this.setState(nState);\r\n }\r\n\r\n FilterProcess = () => {\r\n let state = {...this.state}\r\n let caffenios = state.caffenios;\r\n var status_combo; // Vacios\r\n let driveIds;\r\n\r\n if(state[\"selectedOptionDrive\"].length===0){\r\n driveIds = state[\"optionDrive\"].map(obj => {\r\n return obj.value;\r\n })\r\n } else{\r\n driveIds = state[\"selectedOptionDrive\"].map(obj => {\r\n return obj.value;\r\n })\r\n }\r\n\r\n status_combo = this.validarCombos(state);\r\n\r\n if(state.filterText.trim() !== ''){\r\n caffenios = caffenios.filter(obj => {\r\n return obj.NombreNuevo.toLowerCase().normalize(\"NFD\").replace(/[\\u0300-\\u036f]/g, \"\").includes(state.filterText.trim().toLowerCase().normalize(\"NFD\").replace(/[\\u0300-\\u036f]/g, \"\")) || obj.NombreNuevo.toLowerCase().normalize(\"NFD\").replace(/[\\u0300-\\u036f]/g, \"\").includes(state.filterText.trim().toLowerCase().normalize(\"NFD\").replace(/[\\u0300-\\u036f]/g, \"\"))\r\n });\r\n }\r\n\r\n caffenios = caffenios.filter((obj2)=>{\r\n if(driveIds.filter((item)=>{\r\n return item === obj2.idCaffenio\r\n }).length > 0){ return obj2 }\r\n }) \r\n\r\n state.caffeniosFilter = caffenios;\r\n this.setState(state);\r\n }\r\n\r\n handlePageChange = (calculations) => { // Hacer la paginación en la tabla\r\n // console.log('calculations :>> ', calculations);\r\n // let newState = update(this.state, {\r\n // calculationListFlatened: {$set: calculations},\r\n // });\r\n // this.setState(newState);\r\n this.setState({pageCalculationList: [...calculations]})\r\n }\r\n\r\n handleDateChange = (date, attr) => {\r\n let state = { ...this.state };\r\n state[attr] = date;\r\n this.setState(state);\r\n }\r\n\r\n handleStartTimeChange = (date, attr) => {\r\n if(date !== null){\r\n let state = { ...this.state };\r\n state[attr] = date;\r\n state.minEndingHourLimit = date;\r\n this.setState(state);\r\n }else{\r\n date = moment()\r\n date = date.set({\r\n hour: 6,\r\n minute: 0,\r\n second: 0,\r\n millisecond: 0,\r\n });\r\n let state = { ...this.state };\r\n state[attr] = date.toDate();\r\n state.minEndingHourLimit = date.toDate();\r\n this.setState(state);\r\n }\r\n }\r\n\r\n handleEndingTimeChange = (date, attr) => {\r\n // var isValid = /^([0-1]?[0-9]|2[0-4]):([0-5][0-9])(:[0-5][0-9])?$/.test(date);\r\n // if(!!!isValid){\r\n // date=\"06:00\"\r\n // }\r\n if(date !== null){\r\n let state = { ...this.state };\r\n state[attr] = date;\r\n state.maxStartHourLimit = date;\r\n this.setState(state);\r\n }else{\r\n date = moment()\r\n date = date.set({\r\n hour: 23,\r\n minute: 59,\r\n second: 59,\r\n millisecond: 0,\r\n });\r\n let state = { ...this.state };\r\n state[attr] = date.toDate();\r\n state.maxStartHourLimit = date.toDate();\r\n this.setState(state);\r\n\r\n\r\n // let state = { ...this.state };\r\n // state[attr] = state.minEndingHourLimit;\r\n // state.maxStartHourLimit = state.minEndingHourLimit;\r\n // this.setState(state);\r\n }\r\n }\r\n\r\n checkHasEmptyFields = () => {\r\n if(this.state.selectedDate == null) return true;\r\n if(this.state.startHour == null) return true;\r\n if(this.state.endingHour == null) return true;\r\n return false;\r\n }\r\n\r\n\r\n\r\n\r\n render(){\r\n \r\n return (\r\n \r\n );\r\n }\r\n\r\n\r\n}\r\n\r\nReporteExtractosContainer.defaultProps = {\r\n \r\n isLoading: false,\r\n pageDrives: [],\r\n selectedOption: [],\r\n selectedOptionCity: [],\r\n selectedOptionDrive: [],\r\n OptionSelect: [],\r\n OptionSelectCity: [],\r\n OptionSelectDrive: [],\r\n optionState: [],\r\n optionCity: [],\r\n optionDrive: [],\r\n\r\n caffenios: [],\r\n caffeniosFilter: [],\r\n\r\n selectedDate: subDays(new Date(), 1),\r\n\r\n startHour: new Date().setHours(6,0,0,0),\r\n endingHour: new Date().setHours(8,0,0,0),\r\n\r\n minStartHourLimit: new Date().setHours(6,0,0,0),\r\n maxStartHourLimit: new Date().setHours(21,0,0,0),\r\n\r\n minEndingHourLimit: new Date().setHours(6,0,0,0),\r\n maxEndingHourLimit: new Date().setHours(21,0,0,0),\r\n\r\n filterIsActive: false,\r\n filterData: [],\r\n\r\n calculationList: [],\r\n calculationListFlatened: [],\r\n\r\n filterText: \"\",\r\n caffenio: null,\r\n}\r\n\r\n\r\n\r\nexport { ReporteExtractosContainer };","import * as React from \"react\";\r\nimport FieldAddons from \"../field/Field+Addons\";\r\nimport Select from \"react-select\";\r\nimport EmpresasAPI from \"../../../services/CaffenioEmpresas/Empresas\";\r\nimport { toast } from \"react-toastify\";\r\n\r\nclass SearchFormV6 extends React.Component {\r\n timer = null;\r\n propName = null;\r\n segmentos = [];\r\n\r\n constructor(props) {\r\n super(props);\r\n this.state = {\r\n fetching: false,\r\n nameSearch: \"\",\r\n activate: this.props.activate,\r\n segment: this.props.segment,\r\n };\r\n this.propName = this.props.name;\r\n this.getSegmentos();\r\n }\r\n\r\n getSegmentos = async () => {\r\n const res = await EmpresasAPI.getAllSegments();\r\n if (res) {\r\n let listSegmentos = res.data.map((item) => {\r\n return {\r\n value: item.SegmentId,\r\n label: item.Name,\r\n };\r\n });\r\n this.segmentos = listSegmentos;\r\n let defaultSegment = { value: 0, label: \"Sin seleccionar\" };\r\n this.segmentos.splice(0,0, defaultSegment);\r\n } else {\r\n toast.error(\"Hubo un error al obtener los segmentos.\");\r\n }\r\n };\r\n\r\n // Se registra un escuchador del input de tipo Search\r\n componentDidMount() {\r\n document.addEventListener(\r\n \"search\",\r\n (e) => {\r\n this.setState({ nameSearch: e.target.value }, () => {\r\n this.props.search(e.target.value);\r\n });\r\n },\r\n false\r\n );\r\n }\r\n // Se elimina el escuchador.\r\n componentWillUnmount() {\r\n document.removeEventListener(\"search\", () => {}, false);\r\n }\r\n\r\n onChangeCheckbox() {\r\n var activate = !this.state.activate;\r\n this.setState({ activate: activate }, () => {\r\n this.props.activeSearch(activate);\r\n });\r\n }\r\n\r\n // Change value of the segment of list.\r\n handleChangeSegmento = (segment) => {\r\n this.setState({ segment: segment }, () => {\r\n this.props.segmentSearch(segment.value);\r\n });\r\n // setState({ ...state, segmentSelected: segment });\r\n };\r\n\r\n render() {\r\n // Manipulación del nombre recibido por props en caso de ser necesario la restauración de búsqueda y página actual en tabla\r\n if (this.propName && this.state.nameSearch !== this.propName) {\r\n this.setState(\r\n { nameSearch: this.propName },\r\n () => (this.propName = null)\r\n );\r\n }\r\n return (\r\n
    \r\n
    \r\n
    \r\n
    \r\n
    \r\n
    \r\n

    \r\n \r\n {\r\n let nameSearch = { ...this.state.nameSearch };\r\n nameSearch = e.currentTarget.value;\r\n nameSearch = nameSearch.replace(/\\s{2,}/g, \" \");\r\n // Se elimina el timer en caso de que el usuario siga tecleando\r\n if (this.timer) clearTimeout(this.timer);\r\n this.setState({ nameSearch: nameSearch }, () => {\r\n // Cuando el usuario termina de escribir se hace la petición de búsqueda\r\n this.timer = setTimeout(\r\n () => this.props.search(nameSearch),\r\n 500\r\n );\r\n });\r\n }}\r\n />\r\n \r\n

    \r\n

    \r\n {\r\n e.stopPropagation();\r\n this.props.create();\r\n }}\r\n >\r\n \r\n \r\n \r\n {this.props.newBtnTitle}\r\n \r\n

    \r\n
    \r\n
    \r\n
    \r\n
    \r\n
    \r\n \r\n this.handleChangeSegmento(item)}\r\n noOptionsMessage={() => \"No hay opciones\"}\r\n options={this.segmentos}\r\n />\r\n
    \r\n
    \r\n \r\n {}}\r\n />\r\n {\r\n e.stopPropagation();\r\n this.onChangeCheckbox();\r\n }}\r\n />\r\n
    \r\n
    \r\n
    \r\n
    \r\n
    \r\n );\r\n }\r\n}\r\n\r\nexport default SearchFormV6;\r\n","import React from 'react';\r\n\r\n//Componente para manejo de paginación de lado del Servidor.\r\nclass ServerPagination2 extends React.Component {\r\n constructor(props){\r\n super(props);\r\n \r\n this.state = {\r\n totalPages: 0,\r\n currentPage: 0\r\n }\r\n }\r\n\r\n componentDidUpdate(prevProps) {\r\n if(this.props.currentPage !== this.state.currentPage || this.props.totalPages !== this.state.totalPages){\r\n this.setState({currentPage: this.props.currentPage, totalPages: this.props.totalPages});\r\n }\r\n }\r\n\r\n render(){\r\n if(this.state.totalPages <= 1) return null;\r\n\r\n return (\r\n
    \r\n \r\n
    \r\n )\r\n }\r\n}\r\n\r\nexport default ServerPagination2;","import React, { useState } from \"react\";\r\n\r\n// Components\r\nimport Modal from \"../util/modal/Modal\";\r\nimport Select from \"react-select\";\r\nimport Loader from \"../util/loading/Loading\";\r\nimport { toast } from \"react-toastify\";\r\n\r\n// Service\r\nimport EmpresasAPI from \"../../services/CaffenioEmpresas/Empresas\";\r\n\r\nexport const ModalEditarEmpresas = ({\r\n isEditable,\r\n isCreated,\r\n empresa = {},\r\n segmentos = {},\r\n onClose,\r\n onSave,\r\n}) => {\r\n const [state, setState] = useState({\r\n listaEmpresas: null,\r\n isLoading: false,\r\n popupVisible: false,\r\n showEditable: isEditable || isCreated ? true : false,\r\n segmentSelected:\r\n isEditable && !isCreated\r\n ? segmentos.find((seg) => seg.value === empresa.idSegmento)\r\n : null,\r\n NombreEmpresa: isEditable && !isCreated ? empresa.Nombre : \"\",\r\n GiroEmpresa: isEditable && !isCreated ? empresa.Giro : \"\",\r\n ContactoEmpresa: isEditable && !isCreated ? empresa.Contacto : \"\",\r\n DireccionEmpresa: isEditable && !isCreated ? empresa.Direccion : \"\",\r\n });\r\n\r\n // Change value of the segment of list.\r\n const handleChangeSegmento = (segment) => {\r\n setState({ ...state, segmentSelected: segment });\r\n };\r\n\r\n // Change value of the inputs.\r\n const handleChange = ({ target }) => {\r\n setState({\r\n ...state,\r\n [target.name]: target.value,\r\n });\r\n };\r\n\r\n // Save changes of the business.\r\n const handleSaveInfo = async () => {\r\n var nombre = document.getElementById(\"NombreEmpresa\").value;\r\n var giro = document.getElementById(\"GiroEmpresa\").value;\r\n var contacto = document.getElementById(\"ContactoEmpresa\").value;\r\n var direccion = document.getElementById(\"DireccionEmpresa\").value;\r\n setState({\r\n ...state,\r\n NombreEmpresa: nombre,\r\n GiroEmpresa: giro,\r\n ContactoEmpresa: contacto,\r\n DireccionEmpresa: direccion,\r\n });\r\n\r\n if (state.NombreEmpresa === null || !state.NombreEmpresa.trim()) {\r\n return toast.warn(\"No se ha asignado un Nombre a la empresa.\");\r\n }\r\n if (\r\n (isCreated && state.segmentSelected === null) ||\r\n (isCreated && !state.segmentSelected)\r\n ) {\r\n return toast.warn(\"No se ha asignado un segmento a la empresa.\");\r\n }\r\n var businessData = null;\r\n if (isEditable) {\r\n businessData = {\r\n idEmpresa: empresa.idEmpresa,\r\n idSegmento: state.segmentSelected.value,\r\n Nombre: state.NombreEmpresa,\r\n Giro: state.GiroEmpresa,\r\n Direccion: state.DireccionEmpresa,\r\n Contacto: state.ContactoEmpresa,\r\n };\r\n } else {\r\n businessData = {\r\n idSegmento: state.segmentSelected.value,\r\n Nombre: state.NombreEmpresa,\r\n Giro: state.GiroEmpresa,\r\n Direccion: state.DireccionEmpresa,\r\n Contacto: state.ContactoEmpresa,\r\n };\r\n }\r\n setState({ ...state, isLoading: true });\r\n var res = null;\r\n if (isEditable) {\r\n res = EmpresasAPI.updateInfoToBusiness(businessData);\r\n } else {\r\n res = EmpresasAPI.createNewBusiness(businessData);\r\n }\r\n res\r\n .then((response) => {\r\n if (response.status == 200) {\r\n onSave(response.data);\r\n onClose();\r\n }\r\n })\r\n .catch((err) => toast.error(err.response.data.Message))\r\n .finally(() => {\r\n setState({ ...state, isLoading: false });\r\n });\r\n };\r\n\r\n // Solo permite números, sin signos ni exponenciales\r\n const onKeyPressNumber = (event) => {\r\n const keyCode = event.keyCode || event.which;\r\n const keyValue = String.fromCharCode(keyCode);\r\n if (\r\n /\\+|-|e|E|\\./.test(keyValue) ||\r\n event.target.value.length >= event.target.getAttribute(\"maxLength\")\r\n )\r\n event.preventDefault();\r\n };\r\n\r\n return (\r\n onClose()}\r\n >\r\n {state.isLoading && (\r\n \r\n )}\r\n
    \r\n \r\n
    \r\n
    \r\n {state.showEditable && (\r\n
    \r\n
    \r\n
    \r\n \r\n handleChangeSegmento(item)}\r\n noOptionsMessage={() => \"No hay opciones\"}\r\n options={segmentos}\r\n />\r\n
    \r\n
    \r\n \r\n handleChange(e)}\r\n />\r\n
    \r\n
    \r\n \r\n handleChange(e)}\r\n />\r\n
    \r\n
    \r\n
    \r\n )}\r\n {!state.showEditable && (\r\n
    \r\n
    \r\n
    \r\n \r\n

    {empresa.Segmento ? empresa.Segmento : \"Sin información\"}

    \r\n
    \r\n
    \r\n \r\n

    {empresa.Nombre ? empresa.Nombre : \"Sin información\"}

    \r\n
    \r\n
    \r\n \r\n

    {empresa.Giro ? empresa.Giro : \"Sin información\"}

    \r\n
    \r\n
    \r\n
    \r\n )}\r\n
    \r\n
    \r\n \r\n
    \r\n
    \r\n
    \r\n
    \r\n {state.showEditable && (\r\n
    \r\n \r\n handleChange(e)}\r\n />\r\n
    \r\n )}\r\n {state.showEditable && (\r\n
    \r\n \r\n handleChange(e)}\r\n />\r\n
    \r\n )}\r\n {!state.showEditable && (\r\n
    \r\n \r\n

    {empresa.Direccion ? empresa.Direccion : \"Sin información\"}

    \r\n
    \r\n )}\r\n {!state.showEditable && (\r\n
    \r\n \r\n

    {empresa.Contacto ? empresa.Contacto : \"Sin información\"}

    \r\n
    \r\n )}\r\n
    \r\n
    \r\n {state.showEditable && (\r\n
    \r\n
    \r\n \r\n \r\n
    \r\n
    \r\n
    \r\n )}\r\n \r\n );\r\n};\r\n","import React, { useState, useEffect } from \"react\";\r\nimport NoItems from \"../../util/noitems/NoItems\";\r\nimport ServerPagination2 from \"../../util/pagination/ServerPagination2\";\r\nimport Loading from \"../../util/loading/Loading\";\r\nimport { ModalEditarEmpresas } from \"../../miCaffenioEmpresas/ModalEditarEmpresa\";\r\nimport \"./style.css\";\r\nimport { toast } from \"react-toastify\";\r\n\r\nexport default function TablaEmpresas(props) {\r\n const columnas = [\r\n \"Segmento\",\r\n \"Nombre de la empresa\",\r\n \"Giro o Descripción de la empresa\",\r\n \"Número de empleados\",\r\n \"Estatus\",\r\n \"Acciones\",\r\n ];\r\n\r\n const [totalPages, setTotalPages] = useState(0);\r\n const [currentPage, setCurrentPage] = useState(0);\r\n const [loading, setLoading] = useState(true);\r\n const [actualEmpresa, setActualEmpresa] = useState(null);\r\n const [listSegmentos, setListaSegmentos] = useState([]);\r\n const [detailVisible, setDetailVisible] = useState(false);\r\n const [isEditable, setEditable] = useState(false);\r\n const [isCreated, setCreated] = useState(false);\r\n\r\n useEffect(() => {\r\n if (props.currentPage !== currentPage || props.totalPages !== totalPages) {\r\n setCurrentPage(props.currentPage);\r\n setTotalPages(props.totalPages);\r\n }\r\n\r\n if (props.loading !== loading) setLoading(props.loading);\r\n }, [props.totalPages, props.currentPage]);\r\n\r\n /**\r\n * Muestra en un modal la información de la empresa.\r\n * @param {Object} empresa - Info de la empresa seleccionada\r\n */\r\n const reviewOfBusiness = (empresa) => {\r\n let listSegmentos = props.segmentos.map((item) => {\r\n return {\r\n value: item.SegmentId,\r\n label: item.Name,\r\n };\r\n });\r\n setEditable(false);\r\n setCreated(false);\r\n setActualEmpresa(empresa);\r\n setListaSegmentos(listSegmentos);\r\n setDetailVisible(true);\r\n };\r\n\r\n /**\r\n * Motrar un modal para actualizar la información de la empresa.\r\n * @param {Object} empresa - Info de la empresa seleccionada\r\n */\r\n const editBusiness = (empresa) => {\r\n let listSegmentos = props.segmentos.map((item) => {\r\n return {\r\n value: item.SegmentId,\r\n label: item.Name,\r\n };\r\n });\r\n setEditable(true);\r\n setCreated(false);\r\n setActualEmpresa(empresa);\r\n setListaSegmentos(listSegmentos);\r\n setDetailVisible(true);\r\n };\r\n\r\n /**\r\n * Actualizar la informacion de la tabla, de la empresa actualizada.\r\n * @param {*} businessUpdated - Info de la empresa actualizada.\r\n */\r\n const updateBusiness = (businessUpdated) => {\r\n let indexBusinessToReplace = null;\r\n props.empresas.map((business, indexBusiness) => {\r\n if (business.idEmpresa === businessUpdated.idEmpresa) {\r\n indexBusinessToReplace = indexBusiness;\r\n }\r\n });\r\n props.empresas.splice(indexBusinessToReplace, 1, { ...businessUpdated });\r\n toast.success(\"Información de la empresa actualizada\");\r\n };\r\n\r\n const actions = (empresa) => {\r\n return (\r\n \r\n {\r\n e.stopPropagation();\r\n editBusiness(empresa);\r\n }}\r\n >\r\n \r\n \r\n \r\n \r\n {empresa.TotalEmpleados == 0 && (\r\n {\r\n e.stopPropagation();\r\n props.deleteBusiness(empresa);\r\n }}\r\n >\r\n \r\n \r\n \r\n \r\n )}\r\n \r\n );\r\n };\r\n\r\n return (\r\n
    \r\n
    \r\n {props.empresas.length > 0 ? (\r\n \r\n \r\n {columnas.map((c) => (\r\n \r\n ))}\r\n \r\n \r\n {props.empresas.map((row, index) => {\r\n return (\r\n {\r\n e.stopPropagation();\r\n reviewOfBusiness(row);\r\n }}\r\n >\r\n \r\n \r\n \r\n \r\n \r\n \r\n {\r\n e.stopPropagation();\r\n props.changeStatus(row);\r\n }}\r\n />\r\n \r\n {actions(row)}\r\n \r\n );\r\n })}\r\n \r\n
    {c}
    {row.Segmento}{row.Nombre}{row.Giro}{row.TotalEmpleados}
    \r\n ) : props.loading ? (\r\n \r\n ) : (\r\n \r\n )}\r\n \r\n
    \r\n {detailVisible && (\r\n setDetailVisible(false)}\r\n onSave={(businessUpdated) => updateBusiness(businessUpdated)}\r\n />\r\n )}\r\n
    \r\n );\r\n}\r\n","import React, { useState, useEffect } from \"react\";\r\nimport SearchFormV6 from \"../util/searchform/SearchFormV6\";\r\nimport TablaEmpresas from \"../Caffenio App/Empresas/TablaEmpresas\";\r\nimport { toast } from \"react-toastify\";\r\nimport EmpresasAPI from \"../../services/CaffenioEmpresas/Empresas\";\r\nimport useModal from \"../../util/hooks/useModal\";\r\nimport PortalModal from \"../../util/portals/PortalModal\";\r\nimport { ModalEditarEmpresas } from \"./ModalEditarEmpresa\";\r\n\r\nexport default function Empresas({ history }) {\r\n const statusModal = useModal();\r\n const deleteModal = useModal();\r\n\r\n // Variables de filtos de la lista.\r\n const [nameSearch, setNameSearch] = useState(\"\");\r\n const [currentPage, setCurrentPage] = useState(1);\r\n const [segmentSearch, setSegmentSearch] = useState(0);\r\n const [activeSearch, setActiveSearch] = useState(true);\r\n const [empresas, setEmpresas] = useState([]);\r\n const [totalPages, setTotalPages] = useState(0);\r\n const [loading, setLoading] = useState(true);\r\n const [actualEmpresa, setActualEmpresa] = useState(null);\r\n const [segmentos, setSegmentos] = useState([]);\r\n const [listSegmentos, setListaSegmentos] = useState([]);\r\n const [detailVisible, setDetailVisible] = useState(false);\r\n const [isCreated, setCreated] = useState(false);\r\n const [isEditable, setEditable] = useState(false);\r\n\r\n const getEmpresas = async (\r\n name = \"\",\r\n page = 1,\r\n segmento = 0,\r\n activo = 1\r\n ) => {\r\n setLoading(true);\r\n const res = await EmpresasAPI.getAllBusiness(name, page, segmento, activo);\r\n if (res) {\r\n setEmpresas(res.data.Results);\r\n setTotalPages(res.data.TotalPages);\r\n setCurrentPage(res.data.CurrentPage);\r\n getSegmentos();\r\n } else {\r\n toast.error(\"Hubo un error al obtener las empresas.\");\r\n setLoading(false);\r\n }\r\n };\r\n\r\n const getSegmentos = async () => {\r\n const res = await EmpresasAPI.getAllSegments();\r\n if (res) {\r\n setSegmentos(res.data);\r\n } else {\r\n toast.error(\"Hubo un error al obtener los segmentos.\");\r\n }\r\n setLoading(false);\r\n };\r\n\r\n /**\r\n * Refrescar la tabla con la nueva empresa creada.\r\n * @param {*} businessUpdated - Info de la empresa actualizada.\r\n */\r\n const createBusiness = async () => {\r\n getEmpresas();\r\n toast.success(\"Empresa creada\");\r\n };\r\n\r\n const changeStatus = async () => {\r\n let res = await EmpresasAPI.changeBusinessStatus(\r\n actualEmpresa.idEmpresa,\r\n !actualEmpresa.Activo\r\n );\r\n if (res.data && res.data.Success) {\r\n statusModal.toggle();\r\n toast.success(\"Estado actualizado.\");\r\n getEmpresas(nameSearch, currentPage, segmentSearch, activeSearch);\r\n } else {\r\n toast.error(\r\n \"No se pudo actualizar el estado de la empresa, intente más tarde.\"\r\n );\r\n }\r\n };\r\n\r\n /**\r\n * Eliminar una empresa de la tabla.\r\n * @param {*} businessDeleted - Info de la empresa a eliminar.\r\n */\r\n const deleteBusiness = async (businessDeleted) => {\r\n let res = await EmpresasAPI.deleteBusiness(businessDeleted);\r\n if (res.data && res.data.Success) {\r\n statusModal.toggle();\r\n toast.success(\"Empresa Eliminada.\");\r\n getEmpresas(nameSearch, currentPage, segmentSearch, activeSearch);\r\n } else {\r\n toast.error(\"No se puedo eliminar la empresa seleccionada.\");\r\n }\r\n };\r\n\r\n const createNewBusiness = () => {\r\n let listSegmentos = segmentos.map((item) => {\r\n return {\r\n value: item.SegmentId,\r\n label: item.Name,\r\n };\r\n });\r\n setListaSegmentos(listSegmentos);\r\n setCreated(true);\r\n setEditable(false);\r\n setDetailVisible(true);\r\n };\r\n\r\n useEffect(() => {\r\n getEmpresas(nameSearch.trim(), currentPage, segmentSearch, activeSearch);\r\n }, [nameSearch, currentPage, segmentSearch, activeSearch]);\r\n\r\n return (\r\n
    \r\n

    Administrar Empresas

    \r\n {\r\n createNewBusiness();\r\n }}\r\n segment={segmentSearch}\r\n segmentSearch={(idSegmento) => setSegmentSearch(idSegmento)}\r\n activate={activeSearch}\r\n activeSearch={(activeBusiness) => setActiveSearch(activeBusiness)}\r\n search={(text) => setNameSearch(text)}\r\n name={nameSearch}\r\n tooltip={\"Crear una nueva empresa\"}\r\n newBtnTitle={\"Nueva empresa\"}\r\n />\r\n
    \r\n {\r\n setActualEmpresa(empresa);\r\n statusModal.toggle();\r\n }}\r\n deleteBusiness={(empresa) => {\r\n setActualEmpresa(empresa);\r\n statusModal.toggle();\r\n }}\r\n goToPage={(page) => setCurrentPage(page)}\r\n delete={(empresa) => {\r\n setActualEmpresa(empresa);\r\n deleteModal.toggle();\r\n }}\r\n loading={loading}\r\n history={history}\r\n />\r\n {\r\n return (\r\n \r\n

    {`¿Estás seguro que deseas ${\r\n actualEmpresa.Activo ? \"desactivar\" : \"activar\"\r\n } la empresa?, Una vez desactivada la empresa, \r\n todos los empleados registrados dentro de esta empresa, ya no gozarán del beneficio del programa MI CAFFENIO Empresas. `}

    \r\n
    \r\n );\r\n }}\r\n footer\r\n footerButtons={() => {\r\n return (\r\n
    \r\n {\r\n statusModal.toggle();\r\n setActualEmpresa(null);\r\n }}\r\n >\r\n Cancelar\r\n \r\n {\r\n statusModal.toggle();\r\n changeStatus();\r\n }}\r\n >\r\n Confirmar\r\n \r\n
    \r\n );\r\n }}\r\n />\r\n {\r\n return (\r\n \r\n

    {`¿Estás seguro que deseas eliminar la empresa?`}

    \r\n
    \r\n );\r\n }}\r\n footer\r\n footerButtons={() => {\r\n return (\r\n
    \r\n {\r\n statusModal.toggle();\r\n setActualEmpresa(null);\r\n }}\r\n >\r\n Cancelar\r\n \r\n {\r\n statusModal.toggle();\r\n deleteBusiness(actualEmpresa);\r\n }}\r\n >\r\n Confirmar\r\n \r\n
    \r\n );\r\n }}\r\n />\r\n {detailVisible && (\r\n setDetailVisible(false)}\r\n onSave={(businessCreated) => createBusiness()}\r\n />\r\n )}\r\n
    \r\n );\r\n}\r\n","import {apiUrl} from '../constants';\r\nimport axios from 'axios';\r\nvar request = axios.create({\r\n baseURL: apiUrl,\r\n headers: {'Authorization':'Bearer ' +localStorage.getItem('token'),'Content-Type':'application/json'}\r\n})\r\n\r\nexport default class ProyeccionesAPI {\r\n\r\n static GetProyeccionesData(){\r\n return request.get('Proyeccion/GetProyecciones')\r\n }\r\n\r\n static CreateProyeccionData(proyeccionData){\r\n return request.post('/Proyeccion/NewProyeccion', proyeccionData);\r\n }\r\n\r\n static UpdateProyeccionData(proyeccionData){\r\n return request.put('/Proyeccion/UpdateProyeccion', proyeccionData);\r\n }\r\n\r\n static GetActiveCaffenios(){\r\n return request.get('Proyecciones/GetActiveCaffenios')\r\n } \r\n}\r\n","import React, { Component } from 'react';\r\nimport ProyeccionesAPI from '../../services/ProductionProyection';\r\nimport TableTemplate from \"../util/tabletemplate/TableTemplate\";\r\nimport NoItems from \"../util/noitems/NoItems\";\r\nimport Pagination from '../util/pagination/Pagination';\r\nimport { toast } from 'react-toastify';\r\nimport lodash from 'lodash';\r\nimport ErrorMessages from '../../util/validation-error-messages';\r\nimport Select from 'react-select';\r\nimport Loading from '../util/loading/Loading';\r\n\r\nclass DrivesProyeccion extends Component {\r\n drives = [];\r\n\r\n constructor(props){\r\n super(props);\r\n this.state = {\r\n drives: [],\r\n filterText: \"\",\r\n drive: null,\r\n pageDrives: [],\r\n isLoadingP: false,\r\n\r\n selectedDrives: [...this.props.selectedDrives],\r\n selectedOptionState: [],\r\n selectedOptionCity: [],\r\n optionState: [],\r\n optionCity: [],\r\n checkAll: false\r\n }\r\n }\r\n\r\n componentDidMount(){\r\n this.setState({isLoadingP: true})\r\n let state = {...this.state};\r\n ProyeccionesAPI.GetActiveCaffenios().then(response => {\r\n\r\n state.drives = response.data\r\n let auxCount = 0;\r\n state.drives.findIndex(obj => {\r\n let isSelected = this.state.selectedDrives.findIndex(selectedDrive => selectedDrive.idCaffenio === obj.idCaffenio)\r\n if (isSelected != -1) {\r\n obj.statusCheck = true;\r\n auxCount++;\r\n }\r\n return auxCount == this.state.selectedDrives.length;\r\n })\r\n this.drives = lodash.cloneDeep(response.data);\r\n\r\n state.optionState = this.select_state(state.drives);\r\n state.optionCity = this.select_city(state.drives);\r\n \r\n console.log(\"El state drives proyección >> \", state);\r\n // Guardar el estado\r\n this.setState(state);\r\n }).catch(err => {\r\n this.setState({isLoadingP: false})\r\n if(err.response)\r\n toast.error(err.response.data.Message)\r\n else\r\n toast.error(ErrorMessages.SinConexion)\r\n })\r\n }\r\n\r\n select_state(Caffenios) { // Llenar el combo 'Estados' con todas las opciones \r\n var newArray = [];\r\n let OptionSelect = [];\r\n var lookupObject = {};\r\n Caffenios.map((item) => {\r\n OptionSelect.push({value:item.StateId,label:item.State});\r\n });\r\n\r\n for(var i in OptionSelect) {\r\n lookupObject[OptionSelect[i][\"value\"]] = OptionSelect[i];\r\n }\r\n \r\n for(i in lookupObject) {\r\n newArray.push(lookupObject[i]);\r\n }\r\n \r\n return newArray;\r\n }\r\n\r\n select_city(Caffenios) { // Llenar el combo 'Ciudades' con todas las opciones \r\n var newArray = [];\r\n let OptionSelectCity = [];\r\n var lookupObject = {};\r\n Caffenios.map((item) => {\r\n OptionSelectCity.push({value:item.Municipalityid,label:item.Municipality});\r\n });\r\n\r\n for(var i in OptionSelectCity) {\r\n lookupObject[OptionSelectCity[i][\"value\"]] = OptionSelectCity[i];\r\n }\r\n \r\n for(i in lookupObject) {\r\n newArray.push(lookupObject[i]);\r\n }\r\n\r\n return newArray;\r\n }\r\n\r\n changeSelectEstado = (obj) => {\r\n let state = {...this.state}\r\n state[\"selectedOptionState\"] = obj;\r\n let idEstado = obj.map(estado => {return estado.value});\r\n let objCaffenios = [...this.drives];\r\n let listaCiudades = [];\r\n\r\n // Recorrer objeto Caffenios y encontrar coincidencias sin eliminar duplicados\r\n objCaffenios.map(item =>{\r\n for(var i=0; i>\", listaCiudades);\r\n console.log(\"sin duplicados >>\", eliminarDuplicados);\r\n //Se limpian los combos 'Ciudades' y 'Drives'\r\n state[\"selectedOptionCity\"] = [];\r\n\r\n //Se valida que haya una opción seleccionada en combo 'Estados'\r\n if(obj.length===0){\r\n state[\"optionCity\"] = this.select_city(objCaffenios);\r\n } else{\r\n state[\"optionCity\"] = eliminarDuplicados;\r\n }\r\n\r\n this.setState(state, () => this.handleSearchMultipleFieldInput());\r\n }\r\n\r\n changeSelectCiudad = (obj) =>{\r\n let state = {...this.state}\r\n // let idCiudad = obj.map(ciudad => {return ciudad.value});\r\n // let objCaffenios = [...state.Caffenios];\r\n // let listaDrives = [];\r\n\r\n // //Se buscan coincidencias entre ciudad y drive y se genera la lista de drives\r\n // objCaffenios.map(item =>{\r\n // for(var i=0; i0){\r\n state[\"selectedOptionCity\"] = obj;\r\n this.setState(state, () => this.handleSearchMultipleFieldInput());\r\n } else{\r\n this.setState(state, () => this.handleSearchMultipleFieldInput());\r\n this.changeSelectEstado(state[\"selectedOptionState\"]);\r\n }\r\n }\r\n\r\n eliminarObjDuplicados = (arr,prop) => {\r\n var nuevoArray = [];\r\n var lookup = {};\r\n for (var i in arr) {\r\n lookup[arr[i][prop]] = arr[i];\r\n }\r\n for (i in lookup) {\r\n nuevoArray.push(lookup[i]);\r\n }\r\n return nuevoArray;\r\n }\r\n\r\n /**\r\n * Funcion para ordenar lexicograficamente\r\n * @param objA. primer operando\r\n * @param objB. segundo operando\r\n */\r\n compare = (objA, objB) => {\r\n // Use toUpperCase() to ignore character casing\r\n const labelA = objA.label.toUpperCase();\r\n const labelB = objB.label.toUpperCase();\r\n\r\n let comparison = 0;\r\n if (labelA > labelB) {\r\n comparison = 1;\r\n } else if (labelA < labelB) {\r\n comparison = -1;\r\n }\r\n return comparison;\r\n }\r\n\r\n // Método encargado de recibir el texto en el input de búsqueda y filtrar los elementos en\r\n // la tabla \r\n handleSearchInput = (text) => {\r\n let state = this.state;\r\n state.filterText = text;\r\n this.setState(state, this.handleSearchMultipleFieldInput);\r\n }\r\n\r\n /**\r\n *Realizar el filtrado sobre las recetas para desplegar solo los elementos\r\n *que cumplen con las caracteristicas que el usuario ingreso.\r\n * \r\n *@param: nada\r\n *@return: nada\r\n */\r\n handleSearchMultipleFieldInput = () => {\r\n\r\n console.log(\"Estados >> \", this.state.selectedOptionState);\r\n console.log(\"Ciudades >> \", this.state.selectedOptionCity);\r\n let drives = this.drives.filter(\r\n drive => (\r\n (this.state.selectedOptionState.length > 0 ? \r\n (this.state.selectedOptionState.findIndex( x => x.value == drive.StateId) != -1) : \r\n true) &&\r\n (this.state.selectedOptionCity.length > 0 ? \r\n (this.state.selectedOptionCity.findIndex(y => y.value == drive.Municipalityid) != -1 ): \r\n true) &&\r\n (this.state.filterText.trim() !== '' ?\r\n ( (drive.Name \r\n ? drive.Name.toLowerCase().normalize(\"NFD\").replace(/[\\u0300-\\u036f]/g, \"\").includes(this.state.filterText.trim().toLowerCase().normalize(\"NFD\").replace(/[\\u0300-\\u036f]/g, \"\")) \r\n : false) \r\n || drive.NombreNuevo.toLowerCase().normalize(\"NFD\").replace(/[\\u0300-\\u036f]/g, \"\").includes(this.state.filterText.trim().toLowerCase().normalize(\"NFD\").replace(/[\\u0300-\\u036f]/g, \"\")))\r\n : true)\r\n )\r\n );\r\n \r\n let state = {...this.state};\r\n state.drives = lodash.cloneDeep(drives);\r\n let auxCount = 0;\r\n state.drives.findIndex(obj => {\r\n let isSelected = this.state.selectedDrives.findIndex(selectedDrive => selectedDrive.idCaffenio === obj.idCaffenio)\r\n if (isSelected != -1) {\r\n obj.statusCheck = true;\r\n auxCount++;\r\n }\r\n return auxCount == this.state.selectedDrives.length;\r\n })\r\n state.checkAll = false;\r\n this.setState(state);\r\n }\r\n\r\n /**\r\n * Funcion que se ejecuta al darle click al checkbox del header\r\n */\r\n selectAllCheck = () => {\r\n let _checkAll = !this.state.checkAll\r\n let _selectedDrives = [...this.state.selectedDrives]\r\n let _pageDrives = this.state.pageDrives\r\n _pageDrives.forEach(drive => {\r\n let indexDrive = _selectedDrives.findIndex(item => item.idCaffenio === drive.idCaffenio)\r\n drive.statusCheck = _checkAll\r\n if(_checkAll){\r\n if(indexDrive === -1) _selectedDrives.push(drive)\r\n }else{\r\n if(indexDrive !== -1) _selectedDrives.splice(indexDrive, 1)\r\n }\r\n });\r\n\r\n this.setState({checkAll: _checkAll, selectedDrives: _selectedDrives})\r\n }\r\n\r\n /**\r\n * Funcion que se ejecuta al cambiar la pagina del tablero\r\n */\r\n changeDrivePage = (drives) => {\r\n let drivesChecked = 0;\r\n let checkAll = false;\r\n drives.forEach(item => {\r\n if(this.state.selectedDrives.findIndex(id => id.idCaffenio === item.idCaffenio) !== -1){\r\n drivesChecked++\r\n item.statusCheck = true;\r\n }\r\n else{\r\n item.statusCheck = false;\r\n }\r\n });\r\n if(drivesChecked === drives.length) checkAll = true;\r\n\r\n this.setState({ pageDrives: drives, checkAll: checkAll });\r\n }\r\n\r\n /*\r\n * Funcion que selecciona o des selecciona todas las \r\n * recetas de todas las paginas.\r\n */\r\n selectAllCheckBox = (e) => {\r\n e.stopPropagation();\r\n let state = {...this.state};\r\n let elementsPage = state.drives\r\n let selectedDrives = []\r\n // Le asignamos el valor inverso de checkAll a todas las recetas actuales\r\n elementsPage.map(element=>{\r\n if(state.checkAll){\r\n element.statusCheck = false \r\n }else{\r\n element.statusCheck = true\r\n selectedDrives.push(element)\r\n }\r\n return element\r\n })\r\n state.checkAll = !state.checkAll;\r\n state.drives = elementsPage;\r\n state.selectedDrives = selectedDrives\r\n this.setState(state);\r\n }\r\n\r\n\r\n render() {\r\n return (\r\n
    \r\n\r\n {/* Filtro multiple para drives */}\r\n
    \r\n
    \r\n
    \r\n\r\n
    \r\n
    \r\n { e.stopPropagation(); this.handleSearchInput(e.currentTarget.value);}}\r\n />\r\n
    \r\n
    \r\n
    \r\n {/* */}\r\n
    \r\n
    \r\n \r\n
    \r\n \"No hay opciones\"}\r\n options={this.state.optionState}\r\n />\r\n
    \r\n
    \r\n
    \r\n \r\n
    \r\n \"No hay opciones\"}\r\n options={this.state.optionCity}\r\n />\r\n
    \r\n
    \r\n
    \r\n
    \r\n
    \r\n\r\n
    \r\n \r\n
    \r\n
    \r\n {/* Botones del header de la tabla */}\r\n \r\n {this.state.drives.length !== 0 && this.state.pageDrives.length !== 0\r\n ? {\r\n let _selectedDrives = [...this.state.selectedDrives]\r\n let indexDrive = this.state.selectedDrives.findIndex(id => id.idCaffenio === this.state.pageDrives[index].idCaffenio);\r\n if( indexDrive === -1)\r\n _selectedDrives.push(this.state.pageDrives[index]);\r\n else\r\n _selectedDrives.splice(indexDrive, 1)\r\n this.setState({selectedDrives: _selectedDrives})\r\n }}\r\n checkAll={this.state.checkAll}\r\n //Controlador del checkbox del header\r\n selectAllCheck={this.selectAllCheck}\r\n rowClickable={false}\r\n /> \r\n : }\r\n this.changeDrivePage(drives) } />\r\n
    \r\n
    \r\n\r\n
    \r\n\r\n this.props.cancelDrivesModal()}\r\n >\r\n Cancelar\r\n \r\n\r\n \r\n\r\n\r\n \r\n
    \r\n \r\n \r\n
    \r\n );\r\n }\r\n}\r\n\r\nexport default DrivesProyeccion;\r\n","import React, { Component } from 'react';\r\nimport { toast } from 'react-toastify';\r\nimport TextField from '../util/textfield/TextField';\r\nimport Field from '../util/field/Field';\r\nimport Loading from '../util/loading/Loading';\r\nimport ErrorMessages from '../../util/validation-error-messages';\r\nimport ExpresionesRegulares from '../../util/expresiones-regulares';\r\nimport { Formik } from 'formik';\r\nimport * as Yup from 'yup';\r\nimport { SketchPicker } from 'react-color';\r\nimport reactCSS from 'reactcss';\r\n// import lodash from 'lodash';\r\n// import Select from 'react-select';\r\nimport update from 'immutability-helper';\r\nimport TableTemplate from \"../util/tabletemplate/TableTemplate\";\r\nimport Modal from '../util/modal/Modal';\r\nimport AcceptModal from '../util/acceptModal/AcceptModal';\r\nimport NoItems from \"../util/noitems/NoItems\";\r\nimport Pagination from '../util/pagination/Pagination';\r\nimport DrivesProyeccion from './DrivesProyeccion';\r\n\r\nclass ProyeccionForm extends Component {\r\n\r\n constructor(props) {\r\n super(props);\r\n this.state = {\r\n proyeccion: { ...this.props.proyeccion },\r\n isLoading: false,\r\n displayColorPickerFondo: false,\r\n displayColorPickerLetra: false,\r\n\r\n pageDrives: [],\r\n showModalEditDrives: false,\r\n showModalRemoveDrive: false,\r\n driveToRemove: {},\r\n\r\n showModalDrive: false,\r\n }\r\n }\r\n\r\n componentDidMount() {\r\n // console.log(\"Proyeccion en form >> \", this.props);\r\n }\r\n\r\n handleClickPicker = (opc) => {\r\n console.log(\"La opcion >> \", opc);\r\n if(opc == 1){\r\n this.setState({ displayColorPickerFondo: !this.state.displayColorPickerFondo })\r\n }\r\n else\r\n {\r\n this.setState({ displayColorPickerLetra: !this.state.displayColorPickerLetra })\r\n }\r\n };\r\n \r\n handleClosePicker = (opc) => {\r\n console.log(\"La opcion close >> \", opc);\r\n if(opc == 1){\r\n this.setState({ displayColorPickerFondo: false })\r\n }\r\n else\r\n {\r\n this.setState({ displayColorPickerLetra: false })\r\n }\r\n };\r\n \r\n handleChangePickerFondo = (color) => {\r\n let state = {...this.state}\r\n state.proyeccion.Color = color.hex;\r\n this.setState(state);\r\n };\r\n\r\n handleChangePickerLetra = (color) => {\r\n let state = {...this.state}\r\n state.proyeccion.ColorLetra = color.hex;\r\n this.setState(state);\r\n };\r\n\r\n /**\r\n * Función que se ejecuta para mostrar el modal para agregar o eliminar drives a incluir\r\n * @param e event\r\n */\r\n toggleEditDrivesModal = (e) => {\r\n e.preventDefault();\r\n e.stopPropagation();\r\n console.log(\"SE EJECUTA EL ABRIR\");\r\n let newState = update(this.state, {\r\n showModalEditDrives: {$set: true},\r\n showModalDrive: {$set: true}\r\n });\r\n this.setState(newState);\r\n }\r\n\r\n /**\r\n * Funcion que muestra el modal de confirmación para remover una receta de la lista de recetas a excluir\r\n * @param drive drive que se quiere eliminar de la lista\r\n */\r\n toggleModalRemoveDrive = (drive) => {\r\n let newState = update(this.state, {\r\n showModalRemoveDrive: {$set: true},\r\n driveToRemove: {$set: drive}\r\n })\r\n this.setState(newState);\r\n }\r\n\r\n /**\r\n * Funcion que elimina un elemento de la lista de drives a incluir\r\n */\r\n removeDriveFromList = () => {\r\n let state = {...this.state};\r\n let _drives = this.state.proyeccion.Drives.filter( d => {\r\n return d.idCaffenio !== this.state.driveToRemove.idCaffenio\r\n });\r\n\r\n state.proyeccion.Drives = _drives;\r\n state.showModalRemoveDrive = false;\r\n this.setState(state, () => {\r\n toast.success(`Drive eliminado con éxito.`);\r\n });\r\n }\r\n\r\n /**\r\n * Funcion que cierra el modal de confirmación para eliminar un drive de la lista\r\n */\r\n closeModalRemoveDrive = () => {\r\n let newState = update(this.state, {\r\n showModalRemoveDrive: {$set: false},\r\n })\r\n this.setState(newState);\r\n }\r\n\r\n /**\r\n * Funcion que actualiza los elementos que se muestran en la paginación de los drives a incluir\r\n * @param drives arreglo con drives de la página actual\r\n */\r\n changeDrivePage = (drives) => {\r\n this.setState({pageDrives: [...drives]});\r\n }\r\n\r\n /**\r\n * Función que se ejecuta para mostrar el modal para agregar/eliminar drives de la\r\n * lista de drives a incluir\r\n */\r\n cancelDrivesModal = () => {\r\n let newState = update(this.state, {\r\n showModalDrive: {$set: false},\r\n showModalEditDrives: {$set: false},\r\n });\r\n this.setState(newState);\r\n }\r\n\r\n /**\r\n * Funcion que guarda los drives que se quieren incluir\r\n * @param checkedDrives drives que fueron seleccionadas\r\n */\r\n\r\n saveDrives = (checkedDrives) => {\r\n let state = {...this.state};\r\n state.showModalDrive = false;\r\n state.showModalEditDrives = false;\r\n state.proyeccion.Drives = checkedDrives;\r\n this.setState(state, () => {\r\n toast.success(`Los drives se actualizaron`);\r\n });\r\n }\r\n\r\n // Solo permite números, sin signos ni exponenciales\r\n // onKeyPressNumber(event) {\r\n // const keyCode = event.keyCode || event.which;\r\n // const keyValue = String.fromCharCode(keyCode);\r\n // if (/\\+|-|e|E|\\./.test(keyValue) || event.target.value.length >= event.target.getAttribute('maxLength'))\r\n // event.preventDefault();\r\n // event.stopPropagation();\r\n // }\r\n\r\n VALIDATION_SCHEMA = Yup.object({\r\n Nombre: Yup.string()\r\n .trim()\r\n .matches(ExpresionesRegulares.AlfanumericoSinEspeciales, { message: ErrorMessages.AlfanumericoSinEspecialesError })\r\n .min(3, \"Nombre debe tener más de 2 caracteres.\")\r\n .max(150, \"Ha excedido el límite de 150 caracteres.\")\r\n .required(\"Campo Nombre es requerido.\")\r\n .test(\"validate-name\", \"El nombre ya existe, favor de ingresar otro.\", (value) => {\r\n let isValid = true;\r\n let name = value ? value.toLowerCase().trim() : \"\";\r\n if (this.props.proyeccionList.some(u => u.Nombre.toLowerCase().trim() === name && u.IdProduccionAdelantado !== this.state.proyeccion.IdProduccionAdelantado)) {\r\n isValid = false;\r\n }\r\n return isValid;\r\n }),\r\n NombreCorto: Yup.string()\r\n .trim()\r\n .matches(ExpresionesRegulares.AlfanumericoSinEspeciales, { message: ErrorMessages.AlfanumericoSinEspecialesError })\r\n .min(3, \"Nombre debe tener más de 2 caracteres.\")\r\n .max(50, \"Ha excedido el límite de 50 caracteres.\")\r\n .required(\"Campo Nombre Corto es requerido.\")\r\n .test(\"validate-name\", \"El nombre corto ya existe, favor de ingresar otro.\", (value) => {\r\n let isValid = true;\r\n let name = value ? value.toLowerCase().trim() : \"\";\r\n if (this.props.proyeccionList.some(u => u.NombreCorto.toLowerCase().trim() === name && u.IdProduccionAdelantado !== this.state.proyeccion.IdProduccionAdelantado)) {\r\n isValid = false;\r\n }\r\n return isValid;\r\n }),\r\n Orden: Yup.number().positive(\"Introduzca un número mayor a cero\").required(\"Introduzca un número.\"),\r\n // Drives: Yup.array(),\r\n Activo: Yup.bool(),\r\n });\r\n\r\n \r\n\r\n render() {\r\n const styles = reactCSS({\r\n 'default': {\r\n color: {\r\n width: '36px',\r\n height: '14px',\r\n borderRadius: '2px',\r\n background: `${ this.state.proyeccion.Color }`,\r\n },\r\n colorLetra: {\r\n width: '36px',\r\n height: '14px',\r\n borderRadius: '2px',\r\n background: `${ this.state.proyeccion.ColorLetra }`,\r\n },\r\n swatch: {\r\n padding: '5px',\r\n background: '#fff',\r\n borderRadius: '1px',\r\n boxShadow: '0 0 0 1px rgba(0,0,0,.1)',\r\n display: 'inline-block',\r\n cursor: 'pointer',\r\n },\r\n popover: {\r\n position: 'absolute',\r\n zIndex: '2',\r\n },\r\n cover: {\r\n position: 'fixed',\r\n top: '0px',\r\n right: '0px',\r\n bottom: '0px',\r\n left: '0px',\r\n },\r\n },\r\n });\r\n\r\n return (\r\n
    \r\n {\r\n let formatValues = { ...values }\r\n formatValues.Nombre = formatValues.Nombre.trim();\r\n formatValues.NombreCorto = formatValues.NombreCorto.trim();\r\n formatValues.Drives = this.state.proyeccion.Drives;\r\n formatValues.Color = this.state.proyeccion.Color;\r\n formatValues.ColorLetra = this.state.proyeccion.ColorLetra;\r\n this.props.save(formatValues);\r\n }}\r\n >\r\n {({ values, touched, errors, handleChange, handleBlur, handleSubmit, setFieldValue, setFieldTouched, setFieldError }) => (\r\n
    \r\n \r\n { e.which === 13 && e.preventDefault() }}\r\n onChange={handleChange}\r\n onBlur={handleBlur}\r\n />\r\n \r\n
    \r\n \r\n { e.which === 13 && e.preventDefault() }}\r\n onChange={handleChange}\r\n onBlur={handleBlur}\r\n />\r\n \r\n
    \r\n \r\n { e.which === 13 && e.preventDefault() }}\r\n onChange={handleChange}\r\n />\r\n \r\n
    \r\n \r\n
    { e.stopPropagation(); this.handleClickPicker(1);} }>\r\n
    \r\n
    \r\n { this.state.displayColorPickerFondo ?
    \r\n
    {e.stopPropagation(); this.handleClosePicker(1);} }/>\r\n \r\n
    : null }\r\n\r\n \r\n\r\n
    \r\n \r\n
    {e.stopPropagation(); this.handleClickPicker(2);} }>\r\n
    \r\n
    \r\n { this.state.displayColorPickerLetra ?
    \r\n
    {e.stopPropagation(); this.handleClosePicker(2);} }/>\r\n \r\n
    : null }\r\n\r\n \r\n\r\n
    \r\n \r\n { }}\r\n />\r\n \r\n\r\n
    \r\n \r\n {/* \r\n Drives\r\n */}\r\n\r\n
    \r\n
    \r\n\r\n

    Drives a incluir

    \r\n
    \r\n \r\n
    \r\n\r\n
    \r\n\r\n
    \r\n
    \r\n
    \r\n {/* \r\n TABLA DE Drives\r\n */}\r\n\r\n {(this.state.proyeccion.Drives.length !== 0) \r\n ? {}}\r\n //checkAll={this.state.checkAll}\r\n //Controlador del checkbox del header\r\n //selectAllCheck={this.selectAllCheck}\r\n rowClickable={false}\r\n extraButtons={(drive) => {\r\n return \r\n }}\r\n /> \r\n \r\n : }\r\n\r\n {(this.state.showModalRemoveDrive) &&\r\n ¿Está seguro que desea eliminar el drive de la lista a incluir?

    }\r\n isActive={this.state.showModalRemoveDrive}\r\n willSave={true}\r\n done={() => this.removeDriveFromList()}\r\n cancel={() => this.closeModalRemoveDrive()}\r\n />\r\n } \r\n\r\n this.changeDrivePage(drives)} />\r\n
    \r\n
    \r\n
    \r\n
    \r\n
    \r\n\r\n
    \r\n
    \r\n \r\n
    \r\n
    \r\n \r\n )}\r\n \r\n \r\n {/* MODAL DE RECETAS */}\r\n\r\n {this.state.showModalEditDrives && this.state.showModalDrive && \r\n this.cancelDrivesModal()}\r\n >\r\n \r\n
    \r\n \r\n }\r\n
    \r\n );\r\n }\r\n}\r\n\r\nProyeccionForm.defaultProps = {\r\n isLoading: false,\r\n proyeccion: {\r\n Nombre: \"\",\r\n Activo: true,\r\n NombreCorto: \"\",\r\n Color: \"#FFC300\",\r\n Orden: 1,\r\n ColorLetra : \"#000000\",\r\n Drives : []\r\n }\r\n}\r\n\r\nexport default ProyeccionForm;\r\n","import React, { Component } from \"react\";\r\nimport NoItems from \"../util/noitems/NoItems\";\r\nimport Pagination from '../util/pagination/Pagination';\r\nimport roles from '../../util/strings/roles';\r\nimport HasAccess from '../util/hasAccess/HasAccess';\r\nimport Field from '../util/field/Field';\r\nimport { toast } from 'react-toastify';\r\nimport ProyeccionesAPI from \"../../services/ProductionProyection\";\r\nimport ErrorMessages from '../../util/validation-error-messages';\r\nimport ProyeccionForm from \"./ProyeccionForm\";\r\nimport Modal from \"../util/modal/Modal\";\r\n\r\nclass ProyeccionProductos extends Component {\r\n state={\r\n isLoading: false,\r\n pageProyecciones: [],\r\n Proyecciones: [],\r\n ProyeccionesFilter: [],\r\n proyeccion: null,\r\n showModal: false,\r\n }\r\n\r\n componentDidMount(){\r\n this.setState({isLoading: true}, () => {\r\n let state = {...this.state}\r\n ProyeccionesAPI.GetProyeccionesData().then(response => {\r\n state.Proyecciones = response.data;\r\n state.ProyeccionesFilter = response.data;\r\n console.log(\"Resultado obtener proyecciones\",response);\r\n this.setState(state)\r\n }).catch(err => {\r\n this.setState({isLoading: false})\r\n if(err.response)\r\n toast.error(err.response.data.Message)\r\n else\r\n toast.error(ErrorMessages.SinConexion)\r\n });\r\n })\r\n \r\n }\r\n\r\n create = () => { \r\n this.props.history.push({pathname: '/proyeccion/nuevo', state:{ \r\n proyeccionList: this.state.Proyecciones,\r\n isEditing : false\r\n }});\r\n }\r\n\r\n edit = (proyeccion) => {\r\n proyeccion.Nombre = proyeccion.Nombre.trim();\r\n if(proyeccion.Nombre.length < 3){ \r\n toast.error(\"Nombre debe de tener más de 2 caracteres\");\r\n return;\r\n }\r\n console.log(\"La proyección a actualizar >>\", proyeccion);\r\n\r\n this.setState({isLoading: true}, () => {\r\n ProyeccionesAPI.UpdateProyeccionData(proyeccion).then( response => {\r\n let state = {...this.state};\r\n state.Proyecciones[state.Proyecciones.findIndex(u => u.IdProduccionAdelantado === proyeccion.IdProduccionAdelantado)] = proyeccion;\r\n state.pageProyecciones[state.pageProyecciones.findIndex(u => u.IdProduccionAdelantado === proyeccion.IdProduccionAdelantado)] = proyeccion;\r\n state.showModal = false;\r\n state.isLoading = false;\r\n this.setState(state, () => {\r\n toast.success(\"Proyección actualizada\");\r\n });\r\n }).catch(err => {\r\n this.setState({isLoading: false})\r\n if(err.response)\r\n toast.error(err.response.data.Message)\r\n else\r\n toast.error(ErrorMessages.SinConexion)\r\n });\r\n });\r\n }\r\n\r\n editProyeccion = (proyeccion) =>{\r\n this.props.history.push({pathname: '/proyeccion/nuevo', state:{ \r\n proyeccionList: this.state.Proyecciones,\r\n proyeccion: proyeccion,\r\n isEditing : true\r\n }});\r\n }\r\n\r\n configure = (proyeccion) => { \r\n this.props.history.push({pathname: '/proyeccion/formula', state:{ \r\n proyeccion: proyeccion,\r\n }});\r\n }\r\n\r\n\r\n render(){\r\n return(\r\n
    \r\n

    Proyección productos

    \r\n
    \r\n \r\n
    \r\n\r\n
    \r\n
    \r\n {this.state.ProyeccionesFilter.length !== 0 \r\n ? \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n {this.state.pageProyecciones.map((item, index) => {\r\n return (\r\n \r\n \r\n \r\n\r\n \r\n\r\n \r\n \r\n\r\n \r\n \r\n \r\n )\r\n })}\r\n \r\n
    NombreOrdenActivoEstatusAcciones
    {item.Nombre}{item.Orden}\r\n {/* {item.Activo ? 'Si' : 'No'} */}\r\n \r\n {}}\r\n />\r\n \r\n \r\n {item.Formula ? 'Configurado' : 'No configurado'}\r\n \r\n \r\n \r\n
    \r\n\r\n : }\r\n this.setState({ pageProyecciones: proyecciones })} /*onChangePage={(items) => this.handlePageChange(items)}*/ />\r\n
    \r\n
    \r\n\r\n {/* {this.state.showModal && \r\n this.setState({showModal: false, proyeccion: null})}\r\n >\r\n \r\n \r\n } */}\r\n \r\n
    \r\n\r\n );\r\n }\r\n\r\n}\r\n\r\nexport default ProyeccionProductos;","\r\nimport React, { Component } from 'react';\r\nimport PropTypes from 'prop-types';\r\nimport {toast} from 'react-toastify';\r\nimport ProyeccionesAPI from '../../services/ProductionProyection';\r\nimport '../cssComponents.css';\r\nimport ErrorMessages from '../../util/validation-error-messages';\r\nimport Loading from '../util/loading/Loading';\r\nimport ProyeccionForm from './ProyeccionForm';\r\nimport { isThisSecond } from 'date-fns';\r\n\r\nclass NewProyeccion extends Component {\r\n constructor(props){\r\n super(props);\r\n this.state = {\r\n proyeccionList:[],\r\n proyeccion: null,\r\n isLoading: false\r\n };\r\n \r\n }\r\n componentDidMount(){\r\n if (!this.props.location.state) {\r\n this.props.history.push(`/productos-proyeccion`);\r\n return;\r\n }\r\n let state = {...this.state};\r\n state.proyeccionList = this.props.location.state.proyeccionList;\r\n state.isEditing = this.props.location.state.isEditing;\r\n if(state.isEditing){\r\n state.proyeccion = this.props.location.state.proyeccion;\r\n }\r\n else{\r\n state.proyeccion = {...this.props.proyeccion}\r\n }\r\n this.setState( state, () =>{ console.log(\"El state de proyeccion >> \", this.state); });\r\n }\r\n\r\n save = (proyeccion) => {\r\n console.log(\"La proyección a guardar >>\", proyeccion);\r\n\r\n console.log(\"isEditing >>\", this.state.isEditing);\r\n \r\n this.setState({isLoading: true}, () => {\r\n if(this.state.isEditing){\r\n ProyeccionesAPI.UpdateProyeccionData(proyeccion).then( response => {\r\n let state = {...this.state};\r\n state.isLoading = false;\r\n this.setState(state, () => {\r\n toast.success(\"Proyección actualizada\");\r\n });\r\n this.props.history.goBack();\r\n }).catch(err => {\r\n this.setState({isLoading: false})\r\n if(err.response)\r\n toast.error(err.response.data.Message)\r\n else\r\n toast.error(ErrorMessages.SinConexion)\r\n });\r\n }\r\n else{\r\n ProyeccionesAPI.CreateProyeccionData(proyeccion).then( response => {\r\n this.setState({isLoading: false})\r\n toast.success(\"Proyección creada\");\r\n this.props.history.goBack();\r\n }).catch(err => {\r\n this.setState({isLoading: false})\r\n if(err.response)\r\n toast.error(err.response.data.Message)\r\n else\r\n toast.error(ErrorMessages.SinConexion)\r\n });\r\n }\r\n })\r\n }\r\n\r\n render() {\r\n return (\r\n
    \r\n
    \r\n
    \r\n
    \r\n \r\n { e.preventDefault(); this.props.history.goBack();}} className=\"fa fa-arrow-left\">\r\n \r\n {this.state.isEditing ? \"Actualizar Proyección\" : \"Nueva Proyección\"}\r\n
    \r\n
    \r\n
    \r\n { this.state.proyeccion &&\r\n \r\n }\r\n
    \r\n
    \r\n\r\n \r\n
    \r\n );\r\n }\r\n}\r\n\r\n// Definición de los tipos y su dependencia de las distintas props que recibe el componente.\r\nNewProyeccion.propTypes = {\r\n proyeccion: PropTypes.object,\r\n isEditing: PropTypes.bool\r\n}\r\n\r\n// Definición de los valores por default de las props en caso de no ser recibidas por el padre.\r\nNewProyeccion.defaultProps = {\r\n isEditing: false,\r\n proyeccion: {\r\n Nombre: \"\",\r\n Activo: true,\r\n NombreCorto: \"\",\r\n Orden: 1,\r\n Color: \"#FFC300\",\r\n ColorLetra : \"#000000\",\r\n Drives: []\r\n }\r\n}\r\n\r\nexport default NewProyeccion;","import React from \"react\";\r\nimport Field from \"../util/field/Field\";\r\nimport Loading from \"../util/loading/Loading\";\r\nimport Modal from '../util/modal/Modal';\r\nimport AcceptModal from '../util/acceptModal/AcceptModal';\r\nimport HasAccess from '../util/hasAccess/HasAccess';\r\nimport NoItems from \"../util/noitems/NoItems\";\r\nimport Select from 'react-select';\r\nimport Pagination from '../util/pagination/Pagination';\r\n\r\nimport BtnModoGuiado from '../util/BtnModoGuiado/BtnModoGuiado'\r\nimport ErrorMessages from '../../util/validation-error-messages';\r\nimport { size, truncate } from \"lodash\";\r\n\r\nimport TableTemplate from \"../util/tabletemplate/TableTemplate\";\r\nimport DatePicker, { registerLocale } from \"react-datepicker/dist/es\"\r\nimport TimePicker from 'rc-time-picker';\r\nimport { format, formatDistance, formatRelative, addDays, subDays, setHours, setMinutes, parseISO} from 'date-fns'\r\nimport es from \"date-fns/locale/es\";\r\nregisterLocale(\"es\", es);\r\n\r\n\r\nexport function ReporteProyeccionComponent({\r\n changeSelectDrive,\r\n changeSelectCiudad,\r\n changeSelectEstado,\r\n changeSelectProyeccion,\r\n handlePageChange,\r\n handleSearchInput,\r\n handleDateChange,\r\n handleStartTimeChange,\r\n handleEndingTimeChange,\r\n activateFilter,\r\n getCaffenioListCalculations,\r\n cleanFilters,\r\n checkHasEmptyFields,\r\n ...props\r\n}) {\r\n return(\r\n
    \r\n\r\n

    Reporte Proyección\r\n \r\n {/* {}}\r\n > */}\r\n\r\n

    \r\n\r\n\r\n {/* \r\n FILTRO DE BUSQUEDA\r\n */}\r\n\r\n
    \r\n
    \r\n
    \r\n
    \r\n {/**/}\r\n \r\n
    \r\n
    \r\n {/* */}\r\n
    \r\n
    \r\n \r\n
    \r\n changeSelectEstado(e)}\r\n noOptionsMessage={() => \"No hay opciones\"}\r\n options={props.optionState}\r\n />\r\n
    \r\n
    \r\n
    \r\n \r\n
    \r\n changeSelectCiudad(e)}\r\n noOptionsMessage={() => \"No hay opciones\"}\r\n options={props.optionCity}\r\n />\r\n
    \r\n
    \r\n
    \r\n \r\n
    \r\n changeSelectDrive(e)}\r\n noOptionsMessage={() => \"No hay opciones\"}\r\n options={props.optionDrive}\r\n />\r\n
    \r\n
    \r\n
    \r\n \r\n
    \r\n changeSelectProyeccion(e)}\r\n noOptionsMessage={() => \"No hay opciones\"}\r\n options={props.optionProyeccion}\r\n />\r\n
    \r\n
    \r\n\r\n \r\n
    \r\n \r\n
    \r\n \r\n handleDateChange(e, 'selectedDate')}\r\n popperPlacement=\"right\"\r\n popperModifiers={{\r\n offset: {\r\n enabled: true,\r\n offset: '5px, 10px'\r\n },\r\n preventOverflow: {\r\n enabled: true,\r\n escapeWithReference: false,\r\n boundariesElement: 'viewport'\r\n }\r\n }}\r\n \r\n // withPortal\r\n dateFormat=\"dd/MM/yyyy\"\r\n className=\"input\"\r\n minDate={subDays(new Date(), 1095)}\r\n maxDate={subDays(new Date(), 0)}\r\n />\r\n \r\n
    \r\n
    \r\n\r\n
    \r\n \r\n
    \r\n \r\n handleStartTimeChange(e, 'startHour')}\r\n minTime={props.minStartHourLimit}\r\n maxTime={props.maxStartHourLimit}\r\n showTimeSelect\r\n showTimeSelectOnly\r\n // onChangeRaw={(e) => e.preventDefault()}\r\n timeFormat=\"HH:mm\"\r\n timeIntervals={15}\r\n dateFormat=\"HH:mm\"\r\n className=\"input\"\r\n timeCaption=\"Hora\"\r\n />\r\n \r\n
    \r\n
    \r\n\r\n
    \r\n \r\n
    \r\n \r\n handleEndingTimeChange(e, 'endingHour')}\r\n minTime={props.minEndingHourLimit}\r\n maxTime={props.maxEndingHourLimit}\r\n showTimeSelect\r\n showTimeSelectOnly\r\n timeFormat=\"HH:mm\"\r\n timeIntervals={15}\r\n dateFormat=\"HH:mm\"\r\n className=\"input\"\r\n timeCaption=\"Hora\"\r\n // onChangeRaw={(e) => e.preventDefault()}\r\n />\r\n \r\n
    \r\n
    \r\n \r\n
    \r\n \r\n
    \r\n getCaffenioListCalculations()}\r\n >\r\n Filtrar\r\n \r\n
    \r\n
    \r\n \r\n
    \r\n cleanFilters()}\r\n >\r\n Limpiar filtros\r\n \r\n
    \r\n \r\n
    \r\n
    \r\n
    \r\n\r\n
    \r\n\r\n { props.filterIsActive &&\r\n
    \r\n
    \r\n {/* {props.calculationList[0].length !== 0 */}\r\n {props.calculationListFlatened.length !== 0\r\n ? \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n {/* {props.calculationList.map(calcList => {\r\n return calcList.map((item, index) => (\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n ))\r\n })\r\n } */}\r\n\r\n { props.pageCalculationList.map((item, index) => {\r\n return (\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n )\r\n })\r\n\r\n }\r\n \r\n \r\n
    Nombre DriveProyecciónFechaHora 24hrCantidad proyectadaCantidad VendidaDiferencia
    {item.NombreNuevo}{format(parseISO(item.Fecha), \"dd/MM/yyyy\")}{item.HoraInicio} - {item.HoraFin}{item.Calculo}{(item.CantidadVendida !== 0 || item.CantidadVendida == null) ? item.CantidadVendida : \"-\"}{(item.CantidadVendida !== 0 || item.CantidadVendida == null) ? (item.Calculo - item.CantidadVendida) : \"-\"}
    {item.NombreNuevo}{item.Nombre}{format(parseISO(item.Fecha), \"dd/MM/yyyy\")}{item.HoraInicio} - {item.HoraFin}{item.Calculo}{(item.CantidadVendida !== 0 || item.CantidadVendida == null) ? item.CantidadVendida : \"-\"}{(item.CantidadVendida !== 0 || item.CantidadVendida == null) ? (item.Calculo - item.CantidadVendida) : \"-\"}
    \r\n\r\n : }\r\n handlePageChange(calculations) } /*onChangePage={(items) => this.handlePageChange(items)}*/ />\r\n
    \r\n
    \r\n }\r\n\r\n\r\n \r\n\r\n \r\n \r\n
    \r\n\r\n );\r\n}","import {apiUrl} from '../constants';\r\nimport axios from 'axios';\r\nvar request = axios.create({\r\n baseURL: apiUrl,\r\n headers: {'Authorization':'Bearer ' +localStorage.getItem('token'),'Content-Type':'application/json'}\r\n})\r\n\r\nexport default class ReporteProduccionAdelantadoAPI {\r\n\r\n static GetCaffeniosWithCalculations(){\r\n return request.get('ProyeccionesCalculo/GetCaffeniosWithCalculations')\r\n } \r\n\r\n static GetCaffeniosListCalculations(filterData){\r\n console.log(`filterData`, filterData)\r\n return request.post('ProduccionAdelantadoCalculo/CaffeniosListCalculations', filterData)\r\n }\r\n\r\n // static CreateFormulaData(formulaData){\r\n // return request.post('/FormulaExtracto/NewFormulaExtracto', formulaData);\r\n // }\r\n\r\n // static UpdateFormulaData(formulaData){\r\n // return request.put('/FormulaExtracto/UpdateFormulaExtracto', formulaData);\r\n // }\r\n}\r\n","import React from \"react\"\r\nimport { toast } from 'react-toastify';\r\nimport { ReporteProyeccionComponent } from \"./ReporteProyeccionComponent\";\r\nimport ErrorMessages from '../../util/validation-error-messages';\r\nimport update from 'immutability-helper';\r\nimport lodash from 'lodash';\r\nimport ReporteProduccionAdelantadoAPI from \"../../services/ReporteProduccionAdelantado\";\r\nimport ProyeccionesAPI from \"../../services/ProductionProyection\";\r\nimport moment from 'moment';\r\nimport { format, formatDistance, formatRelative, subDays, setHours, setMinutes} from 'date-fns'\r\n\r\nclass ReporteProyeccionContainer extends React.Component {\r\n\r\n constructor(props){\r\n super(props);\r\n this.state = {\r\n isLoading: false,\r\n pageDrives: [],\r\n selectedOption: [],\r\n selectedOptionCity: [],\r\n selectedOptionDrive: [],\r\n selectedOptionProyeccion: [],\r\n OptionSelect: [],\r\n OptionSelectCity: [],\r\n OptionSelectDrive: [],\r\n OptionSelectProyeccion: [],\r\n optionState: [],\r\n optionCity: [],\r\n optionDrive: [],\r\n optionProyeccion: [],\r\n\r\n proyecciones: [],\r\n caffenios: [],\r\n caffeniosFilter: [],\r\n\r\n selectedDate: this.props.selectedDate,\r\n startHour: this.props.startHour,\r\n endingHour: this.props.endingHour,\r\n\r\n minStartHourLimit: this.props.minStartHourLimit,\r\n maxStartHourLimit: this.props.maxStartHourLimit,\r\n\r\n minEndingHourLimit: this.props.minEndingHourLimit,\r\n maxEndingHourLimit: this.props.maxEndingHourLimit,\r\n\r\n // minStartHourLimit: setHours(new Date(), 5),\r\n // maxStartHourLimit: setHours(new Date(), 21),\r\n\r\n // minEndingHourLimit: setHours(new Date(), 5),\r\n // maxEndingHourLimit: setHours(new Date(), 21),\r\n\r\n filterIsActive: false,\r\n filterData: [],\r\n\r\n calculationList: [],\r\n pageCalculationList: [],\r\n calculationListFlatened: [],\r\n\r\n filterText: \"\",\r\n caffenio: null,\r\n\r\n }\r\n //this.initialFormula = []\r\n\r\n \r\n }\r\n \r\n componentDidMount(){\r\n this.changeLoading();\r\n this.getCaffenios();\r\n }\r\n\r\n\r\n getCaffenios = async() => {\r\n\r\n try{\r\n let response = await ReporteProduccionAdelantadoAPI.GetCaffeniosWithCalculations();\r\n let resProyecciones = await ProyeccionesAPI.GetProyeccionesData();\r\n\r\n let newState = {...this.state}\r\n newState.caffenios = response.data;\r\n newState.caffeniosFilter = response.data;\r\n newState.optionState = this.select_state(newState.caffenios);\r\n newState.optionCity = this.select_city(newState.caffenios);\r\n newState.optionDrive = this.select_Drive(newState.caffenios);\r\n newState.isLoading = false;\r\n\r\n newState.proyecciones = resProyecciones.data;\r\n newState.optionProyeccion = this.select_Proyeccion(newState.proyecciones);\r\n\r\n this.setState(newState);\r\n\r\n } catch (err) {\r\n let newState = update(this.state, {\r\n isLoading: {$set: false},\r\n });\r\n if(err.response)\r\n toast.error(err.response.data.Message)\r\n else\r\n toast.error(ErrorMessages.SinConexion)\r\n this.setState(newState);\r\n } \r\n }\r\n\r\n getCaffenioListCalculations = async() => {\r\n\r\n await this.changeLoading();\r\n\r\n try{\r\n\r\n let filterData = [];\r\n\r\n this.state.caffeniosFilter.forEach(caf => {\r\n filterData.push({\r\n idCaffenio: caf.idCaffenio,\r\n Fecha: format((this.state.selectedDate), \"yyyy-MM-dd\"),\r\n HoraInicio: format((this.state.startHour), \"HH:mm:ss\"),\r\n HoraFin: format((this.state.endingHour), \"HH:mm:ss\"),\r\n LstIdProducionAdelantado: this.state.selectedOptionProyeccion.map( x => x.value)\r\n })\r\n });\r\n\r\n //console.log('newState.filterData getCaffenioListCalculations:>> ', filterData);\r\n\r\n let response = await ReporteProduccionAdelantadoAPI.GetCaffeniosListCalculations(filterData);\r\n\r\n let newState = {...this.state} \r\n newState.isLoading = false;\r\n newState.calculationList = response.data;\r\n newState.calculationListFlatened = lodash.flatten(response.data);\r\n newState.filterIsActive = true;\r\n this.setState(newState);\r\n\r\n } catch (err) {\r\n let newState = update(this.state, {\r\n isLoading: {$set: false},\r\n });\r\n if(err.response)\r\n toast.error(err.response.data.Message)\r\n else\r\n toast.error(ErrorMessages.SinConexion)\r\n this.setState(newState);\r\n } \r\n }\r\n\r\n activateFilter = () => { \r\n let newState = update(this.state, {\r\n filterIsActive: {$set: true},\r\n });\r\n this.setState(newState);\r\n }\r\n\r\n /**\r\n * Función que se encarga de cambiar el loading del state a su estado opuesto\r\n */\r\n\r\n changeLoading = () => {\r\n let newState = {...this.state}\r\n newState.isLoading = !this.state.isLoading\r\n newState.calculationList = []\r\n newState.calculationListFlatened = []\r\n this.setState(newState); \r\n }\r\n\r\n handleSearchInput = (text) => {\r\n let state = {...this.state};\r\n state.filterText = text;\r\n this.setState(state, () => this.FilterProcess());\r\n }\r\n\r\n\r\n select_state(caffenios) { // Llenar el combo 'Estados' con todas las opciones \r\n var newArray = [];\r\n let OptionSelect = [];\r\n var lookupObject = {};\r\n caffenios.map((item) => {\r\n OptionSelect.push({value:item.StateId,label:item.State});\r\n });\r\n\r\n for(var i in OptionSelect) {\r\n lookupObject[OptionSelect[i][\"value\"]] = OptionSelect[i];\r\n }\r\n \r\n for(i in lookupObject) {\r\n newArray.push(lookupObject[i]);\r\n }\r\n \r\n return newArray;\r\n }\r\n\r\n select_city(caffenios) { // Llenar el combo 'Ciudades' con todas las opciones \r\n var newArray = [];\r\n let OptionSelectCity = [];\r\n var lookupObject = {};\r\n caffenios.map((item) => {\r\n OptionSelectCity.push({value:item.Municipalityid,label:item.Municipality});\r\n });\r\n\r\n for(var i in OptionSelectCity) {\r\n lookupObject[OptionSelectCity[i][\"value\"]] = OptionSelectCity[i];\r\n }\r\n \r\n for(i in lookupObject) {\r\n newArray.push(lookupObject[i]);\r\n }\r\n\r\n return newArray;\r\n }\r\n\r\n select_Drive(caffenios) { // Llenar el combo 'Drives' con todas las opciones \r\n var newArray = [];\r\n let OptionSelectDrive = [];\r\n var lookupObject = {};\r\n caffenios.map((item) => {\r\n OptionSelectDrive.push({value:item.idCaffenio,label:item.NombreNuevo});\r\n });\r\n\r\n for(var i in OptionSelectDrive) {\r\n lookupObject[OptionSelectDrive[i][\"value\"]] = OptionSelectDrive[i];\r\n }\r\n \r\n for(i in lookupObject) {\r\n newArray.push(lookupObject[i]);\r\n }\r\n\r\n return newArray;\r\n }\r\n\r\n select_Proyeccion(proyecciones) { // Llenar el combo 'Proyeccion' con todas las opciones \r\n var newArray = [];\r\n // let OptionSelectProyeccion = [];\r\n // var lookupObject = {};\r\n // console.log(\"Proyeciones en proyecciones\", proyecciones);\r\n proyecciones.map((item) => {\r\n // OptionSelectProyeccion.push({value:item.IdProduccionAdelantado,label:item.Nombre});\r\n newArray.push({value:item.IdProduccionAdelantado,label:item.Nombre});\r\n });\r\n\r\n // for(var i in OptionSelectProyeccion) {\r\n // lookupObject[OptionSelectProyeccion[i][\"value\"]] = OptionSelectProyeccion[i];\r\n // }\r\n \r\n // for(i in lookupObject) {\r\n // newArray.push(lookupObject[i]);\r\n // }\r\n\r\n // console.log(\"NewArray\", newArray);\r\n return newArray;\r\n }\r\n\r\n changeSelectDrive = (obj) =>{\r\n let state = {...this.state};\r\n let caffenios = [...state.caffenios];\r\n \r\n //Valida cada select (Estados,Ciudades,Drives) y realiza la acción correspondiente\r\n if(obj.length>0){\r\n state[\"selectedOptionDrive\"] = obj;\r\n //state[\"optionDrive\"] = obj;\r\n this.setState(state, () => this.FilterProcess());\r\n } else if(state[\"selectedOptionCity\"].length===0){\r\n this.changeSelectEstado(state[\"selectedOption\"]);\r\n console.log(\"Entro aqui estado >> \", )\r\n } else if(state[\"selectedOptionCity\"].length===0 && state[\"selectedOption\"].length===0){\r\n this.select_Drive(caffenios);\r\n this.select_Drive(caffenios);\r\n this.select_Drive(caffenios);\r\n } else{\r\n this.changeSelectCiudad(state[\"selectedOptionCity\"]);\r\n console.log(\"Entro aqui ciudad\");\r\n }\r\n }\r\n\r\n changeSelectProyeccion = (obj) =>{\r\n let state = {...this.state};\r\n let proyecciones = [...state.proyecciones];\r\n console.log(\"Objeto obj changeProyeccion\",obj);\r\n\r\n state[\"selectedOptionProyeccion\"] = obj;\r\n this.setState(state, () => this.FilterProcess());\r\n }\r\n\r\n eliminarObjDuplicados = (arr,prop) => {\r\n var nuevoArray = [];\r\n var lookup = {};\r\n \r\n for (var i in arr) {\r\n lookup[arr[i][prop]] = arr[i];\r\n }\r\n \r\n for (i in lookup) {\r\n nuevoArray.push(lookup[i]);\r\n }\r\n \r\n return nuevoArray;\r\n }\r\n\r\n changeSelectEstado = (obj) => {\r\n let state = {...this.state}\r\n\r\n console.log(\"Las opciones >> \", state.optionState);\r\n console.log(\"El estado seleccionado >> \", state.selectedOption);\r\n console.log(\"El objeto changeSelectEstado >> \", obj);\r\n\r\n state[\"selectedOption\"] = obj;\r\n let idEstado = obj.map(estado => {return estado.value});\r\n let objCaffenios = [...state.caffenios];\r\n let listaCiudades = [];\r\n let listaDrives = [];\r\n\r\n // Recorrer objeto Caffenios y encontrar coincidencias sin eliminar duplicados\r\n objCaffenios.map(item =>{\r\n for(var i=0; i {return ciudad.value});\r\n\r\n //Se buscan coincidencias entre ciudad y drive y se genera la lista de drives\r\n objCaffenios.map(item =>{\r\n for(var i=0; i this.FilterProcess());\r\n }\r\n\r\n changeSelectCiudad = (obj) =>{\r\n let state = {...this.state}\r\n let idCiudad = obj.map(ciudad => {return ciudad.value});\r\n let objCaffenios = [...state.caffenios];\r\n let listaDrives = [];\r\n\r\n //Se buscan coincidencias entre ciudad y drive y se genera la lista de drives\r\n objCaffenios.map(item =>{\r\n for(var i=0; i0){\r\n state[\"selectedOptionCity\"] = obj;\r\n state[\"optionDrive\"] = listaDrives;\r\n this.setState(state, () => this.FilterProcess());\r\n } else{\r\n this.changeSelectEstado(state[\"selectedOption\"]);\r\n }\r\n }\r\n\r\n validarCombos = (state) => {\r\n var status_combo = false; // Vacios\r\n\r\n if(state[\"selectedOption\"].length>0){\r\n status_combo = true; // Alguno con valor\r\n }\r\n\r\n if(state[\"selectedOptionCity\"].length>0){\r\n status_combo = true; // Alguno con valor\r\n }\r\n\r\n if(state[\"selectedOptionDrive\"].length>0){\r\n status_combo = true; // Alguno con valor\r\n }\r\n\r\n if(state[\"selectedOptionProyeccion\"].length>0){\r\n status_combo = true; // Alguno con valor\r\n }\r\n\r\n return status_combo;\r\n }\r\n\r\n cleanFilters = () => {\r\n let nState = {...this.state}\r\n\r\n nState.selectedOption = []\r\n nState.selectedOption= []\r\n nState.selectedOptionCity= []\r\n nState.selectedOptionDrive= []\r\n nState.selectedOptionProyeccion = []\r\n nState.OptionSelect= []\r\n nState.OptionSelectCity= []\r\n nState.OptionSelectDrive= []\r\n nState.OptionSelectDrive = []\r\n nState.selectedDate= null\r\n nState.startHour= null\r\n nState.endingHour= null\r\n nState.calculationList= []\r\n nState.calculationListFlatened= []\r\n nState.filterIsActive= false\r\n nState.minStartHourLimit= this.props.minStartHourLimit\r\n nState.maxStartHourLimit= this.props.maxStartHourLimit\r\n nState.minEndingHourLimit= this.props.minEndingHourLimit\r\n nState.maxEndingHourLimit= this.props.maxEndingHourLimit\r\n // let newState = update(this.state, {\r\n // selectedOption: {$set: []},\r\n // selectedOptionCity: {$set: []},\r\n // selectedOptionDrive: {$set: []},\r\n // OptionSelect: {$set: []},\r\n // OptionSelectCity: {$set: []},\r\n // OptionSelectDrive: {$set: []},\r\n // selectedDate: {$set: null},\r\n // startHour: {$set: null},\r\n // endingHour: {$set: null},\r\n // calculationList: {$set: []},\r\n // filterIsActive: {$set: false}\r\n\r\n // })\r\n this.setState(nState);\r\n }\r\n\r\n FilterProcess = () => {\r\n let state = {...this.state}\r\n let caffenios = state.caffenios;\r\n var status_combo; // Vacios\r\n let driveIds;\r\n\r\n if(state[\"selectedOptionDrive\"].length===0){\r\n driveIds = state[\"optionDrive\"].map(obj => {\r\n return obj.value;\r\n })\r\n } else{\r\n driveIds = state[\"selectedOptionDrive\"].map(obj => {\r\n return obj.value;\r\n })\r\n }\r\n\r\n status_combo = this.validarCombos(state);\r\n\r\n if(state.filterText.trim() !== ''){\r\n caffenios = caffenios.filter(obj => {\r\n return obj.NombreNuevo.toLowerCase().normalize(\"NFD\").replace(/[\\u0300-\\u036f]/g, \"\").includes(state.filterText.trim().toLowerCase().normalize(\"NFD\").replace(/[\\u0300-\\u036f]/g, \"\")) || obj.NombreNuevo.toLowerCase().normalize(\"NFD\").replace(/[\\u0300-\\u036f]/g, \"\").includes(state.filterText.trim().toLowerCase().normalize(\"NFD\").replace(/[\\u0300-\\u036f]/g, \"\"))\r\n });\r\n }\r\n\r\n caffenios = caffenios.filter((obj2)=>{\r\n if(driveIds.filter((item)=>{\r\n return item === obj2.idCaffenio\r\n }).length > 0){ return obj2 }\r\n })\r\n\r\n state.caffeniosFilter = caffenios;\r\n this.setState(state);\r\n }\r\n\r\n handlePageChange = (calculations) => { // Hacer la paginación en la tabla\r\n // console.log('calculations :>> ', calculations);\r\n // let newState = update(this.state, {\r\n // calculationListFlatened: {$set: calculations},\r\n // });\r\n // this.setState(newState);\r\n this.setState({pageCalculationList: [...calculations]})\r\n }\r\n\r\n handleDateChange = (date, attr) => {\r\n let state = { ...this.state };\r\n state[attr] = date;\r\n this.setState(state);\r\n }\r\n\r\n handleStartTimeChange = (date, attr) => {\r\n if(date !== null){\r\n let state = { ...this.state };\r\n state[attr] = date;\r\n state.minEndingHourLimit = date;\r\n this.setState(state);\r\n }else{\r\n date = moment()\r\n date = date.set({\r\n hour: 6,\r\n minute: 0,\r\n second: 0,\r\n millisecond: 0,\r\n });\r\n let state = { ...this.state };\r\n state[attr] = date.toDate();\r\n state.minEndingHourLimit = date.toDate();\r\n this.setState(state);\r\n }\r\n }\r\n\r\n handleEndingTimeChange = (date, attr) => {\r\n // var isValid = /^([0-1]?[0-9]|2[0-4]):([0-5][0-9])(:[0-5][0-9])?$/.test(date);\r\n // if(!!!isValid){\r\n // date=\"06:00\"\r\n // }\r\n if(date !== null){\r\n let state = { ...this.state };\r\n state[attr] = date;\r\n state.maxStartHourLimit = date;\r\n this.setState(state);\r\n }else{\r\n date = moment()\r\n date = date.set({\r\n hour: 23,\r\n minute: 59,\r\n second: 59,\r\n millisecond: 0,\r\n });\r\n let state = { ...this.state };\r\n state[attr] = date.toDate();\r\n state.maxStartHourLimit = date.toDate();\r\n this.setState(state);\r\n\r\n\r\n // let state = { ...this.state };\r\n // state[attr] = state.minEndingHourLimit;\r\n // state.maxStartHourLimit = state.minEndingHourLimit;\r\n // this.setState(state);\r\n }\r\n }\r\n\r\n checkHasEmptyFields = () => {\r\n if(this.state.selectedOptionProyeccion.length == 0) return true;\r\n if(this.state.selectedDate == null) return true;\r\n if(this.state.startHour == null) return true;\r\n if(this.state.endingHour == null) return true;\r\n return false;\r\n }\r\n\r\n\r\n\r\n\r\n render(){\r\n \r\n return (\r\n \r\n );\r\n }\r\n\r\n\r\n}\r\n\r\nReporteProyeccionContainer.defaultProps = {\r\n \r\n isLoading: false,\r\n pageDrives: [],\r\n selectedOption: [],\r\n selectedOptionCity: [],\r\n selectedOptionDrive: [],\r\n OptionSelect: [],\r\n OptionSelectCity: [],\r\n OptionSelectDrive: [],\r\n optionState: [],\r\n optionCity: [],\r\n optionDrive: [],\r\n\r\n caffenios: [],\r\n caffeniosFilter: [],\r\n\r\n selectedDate: subDays(new Date(), 1),\r\n\r\n startHour: new Date().setHours(6,0,0,0),\r\n endingHour: new Date().setHours(22,0,0,0),\r\n\r\n minStartHourLimit: new Date().setHours(6,0,0,0),\r\n maxStartHourLimit: new Date().setHours(21,0,0,0),\r\n\r\n minEndingHourLimit: new Date().setHours(6,0,0,0),\r\n maxEndingHourLimit: new Date().setHours(22,0,0,0),\r\n\r\n filterIsActive: false,\r\n filterData: [],\r\n\r\n calculationList: [],\r\n calculationListFlatened: [],\r\n\r\n filterText: \"\",\r\n caffenio: null,\r\n}\r\n\r\n\r\n\r\nexport { ReporteProyeccionContainer };","import {apiUrl} from '../constants';\r\nimport axios from 'axios';\r\nimport { format } from 'date-fns';\r\nvar request = axios.create({\r\n baseURL: apiUrl,\r\n headers: {'Authorization':'Bearer ' +localStorage.getItem('token'),'Content-Type':'application/json'}\r\n})\r\n\r\nexport default class ComunicadosVPAPI {\r\n\r\n static GetComunicadosData(tituloParam,estatusParam,drivesParam){\r\n return request.post('ComunicadoVP/GetComunicados',{ Titulo: tituloParam, Estatus: estatusParam, Drives: drivesParam });\r\n }\r\n\r\n static GetMaxComunicadosDrives(fechaInicio,fechaFin,drives){\r\n return request.post('ComunicadoVP/GetMaxComunicadosDrives',{ FechaInicio: fechaInicio, FechaFin: fechaFin, Drives: drives });\r\n }\r\n\r\n static CreateComunicadoData(comunicadoData, imagen){\r\n let fd = new FormData();\r\n imagen && fd.append(\"Image\", imagen);\r\n fd.append(\"modelo\", JSON.stringify(comunicadoData));\r\n // console.log(\"El valor de comunicadoData >> \", comunicadoData);\r\n return request.post('/ComunicadoVP/NewComunicado', fd);\r\n }\r\n\r\n static UpdateComunicadoData(comunicadoData, imagen){\r\n let fd = new FormData();\r\n imagen && fd.append(\"Image\", imagen);\r\n fd.append(\"modelo\", JSON.stringify(comunicadoData));\r\n // console.log(\"El valor de actualizar comunicadoData >> \", comunicadoData);\r\n return request.put('/ComunicadoVP/UpdateComunicado', fd);\r\n }\r\n\r\n static UpdateEncComunicado(comunicadoData){\r\n return request.put('/ComunicadoVP/UpdateEncComunicado', comunicadoData);\r\n }\r\n\r\n static GetDrivesComunicado(idComunicado){\r\n return request.get('ComunicadoVP/GetDrivesComunicado?idComunicado=' + idComunicado);\r\n }\r\n\r\n static GetActiveCaffenios(){\r\n return request.get('ComunicadoVP/GetCaffeniosComunicados');\r\n }\r\n\r\n static GetPosiciones(){\r\n let posiciones = [\r\n {\r\n label: \"Al inicio\",\r\n value: 1\r\n },\r\n {\r\n label: \"Al mitad de turno\",\r\n value: 2\r\n },\r\n {\r\n label: \"Al final\",\r\n value: 3\r\n }\r\n ]\r\n\r\n return posiciones;\r\n }\r\n\r\n static FormatDate(strDate){\r\n return format(Date.parse(strDate),\"dd/MM/yyyy\");\r\n }\r\n\r\n static GetEstatus(comunicado){\r\n let now = new Date(Date.now());\r\n now.setHours(0,0,0,0);\r\n let ini = new Date(comunicado.FechaInicio);\r\n let fin = new Date(comunicado.FechaFin);\r\n\r\n if(now.getTime() > fin.getTime()){\r\n return \"Obsoleto\";\r\n }\r\n else if( now.getTime() < ini.getTime()){\r\n return \"Programado\";\r\n }\r\n else{\r\n return \"Vigente\";\r\n }\r\n }\r\n\r\n static Estatus = [\r\n {\r\n value : 1,\r\n label : \"Obsoleto\"\r\n },\r\n {\r\n value : 2,\r\n label : \"Programado\"\r\n },\r\n {\r\n value : 3,\r\n label : \"Vigente\"\r\n }\r\n ]\r\n}\r\n","import React, { Component } from \"react\";\r\nimport NoItems from \"../util/noitems/NoItems\";\r\nimport Pagination from '../util/pagination/Pagination';\r\nimport { toast } from 'react-toastify';\r\nimport ComunicadosVPAPI from \"../../services/ComunicadosVP\";\r\nimport ErrorMessages from '../../util/validation-error-messages';\r\nimport update from 'immutability-helper';\r\nimport AcceptModal from '../util/acceptModal/AcceptModal';\r\nimport { format } from 'date-fns';\r\nimport SearchForm from \"../util/searchform/SearchForm\";\r\nimport Select from 'react-select';\r\nimport { debounce } from \"lodash\";\r\nimport Loading from '../util/loading/Loading';\r\n\r\nclass ComunicadosVP extends Component {\r\n styleAlert = {\r\n \"display\": \"flex\",\r\n \"justifyContent\": \"flex-end\",\r\n \"alignItems\": \"center\"\r\n }\r\n Comunicados = [];\r\n\r\n state={\r\n isLoading: false,\r\n pageComunicados: [],\r\n Comunicados: [],\r\n ComunicadosFilter: [],\r\n ComunicadosFilterBack: [],\r\n proyeccion: null,\r\n showModal: false,\r\n showModalRemoveComunicado: false,\r\n comunicadoToEdit: {},\r\n messageRemove: \"¿Está seguro que desea eliminar el comunicado?\",\r\n filterText: \"\",\r\n caffenios: [],\r\n caffeniosFilter: [],\r\n optionDrive: [],\r\n selectedOptionDrive: [],\r\n optionEstatus: [],\r\n selectedOptionEstatus: [],\r\n }\r\n\r\n componentDidMount(){\r\n this.setState({isLoading: true}, () => {\r\n ComunicadosVPAPI.GetActiveCaffenios().then(resDrives =>{\r\n let state = {...this.state}\r\n state.caffenios = resDrives.data;\r\n state.caffeniosFilter = resDrives.data;\r\n state.optionDrive = this.select_Drive(state.caffenios);\r\n state.optionEstatus = this.select_Estatus(ComunicadosVPAPI.Estatus);\r\n this.setState(state, ()=> this.filterProcess());\r\n })\r\n .catch(err => {\r\n this.setState({isLoading: false})\r\n console.log(\"Error Drives >> \", err);\r\n if(err.response)\r\n toast.error(err.response.data.Message)\r\n else\r\n toast.error(ErrorMessages.SinConexion)\r\n });\r\n });\r\n }\r\n\r\n select_Drive(caffenios) { // Llenar el combo 'Drives' con todas las opciones \r\n var newArray = [];\r\n let OptionSelectDrive = [];\r\n var lookupObject = {};\r\n caffenios.map((item) => {\r\n OptionSelectDrive.push({value:item.idCaffenio,label:item.NombreNuevo});\r\n });\r\n\r\n for(var i in OptionSelectDrive) {\r\n lookupObject[OptionSelectDrive[i][\"value\"]] = OptionSelectDrive[i];\r\n }\r\n \r\n for(i in lookupObject) {\r\n newArray.push(lookupObject[i]);\r\n }\r\n\r\n return newArray;\r\n }\r\n\r\n changeSelectDrive = (obj) =>{\r\n let state = {...this.state};\r\n state[\"selectedOptionDrive\"] = obj;\r\n this.setState(state, () => this.debouncedFilterProcess());\r\n }\r\n\r\n select_Estatus(estatus) { // Llenar el combo 'Estatus' con todas las opciones \r\n var newArray = [];\r\n\r\n estatus.map((item) => {\r\n newArray.push(item);\r\n });\r\n\r\n return newArray;\r\n }\r\n\r\n changeSelectEstatus = (obj) =>{\r\n let state = {...this.state};\r\n state[\"selectedOptionEstatus\"] = obj;\r\n this.setState(state, () => this.debouncedFilterProcess());\r\n }\r\n\r\n create = () => { \r\n this.props.history.push({pathname: '/comunicado/nuevo', state:{ \r\n comunicadoList: this.state.Comunicados,\r\n isEditing : false\r\n }});\r\n }\r\n\r\n editComunicado = (comunicado) =>{\r\n this.props.history.push({pathname: '/comunicado/nuevo', state:{ \r\n comunicadoList: this.state.Comunicados,\r\n comunicado: comunicado,\r\n isEditing : true\r\n }});\r\n }\r\n\r\n /**\r\n * Función que muestra el modal de confirmación para remover un comunicado de la lista\r\n * @param comunicado comunicado que se quiere eliminar de la lista\r\n */\r\n toggleModalRemoveComunicado = (comunicado) => {\r\n let msg = ComunicadosVPAPI.GetEstatus(comunicado) == \"Vigente\" ? \"El comunicado se encuentra vigente, este se dejará de publicar y se eliminará del listado de comunicados. ¿Está seguro que desea eliminarlo?\" : \"El comunicado se eliminará del listado de comunicados. ¿Está seguro que desea eliminarlo?\";\r\n let newState = update(this.state, {\r\n showModalRemoveComunicado: {$set: true},\r\n comunicadoToEdit: {$set: comunicado},\r\n messageRemove : {$set: msg}\r\n })\r\n this.setState(newState);\r\n }\r\n\r\n /**\r\n * Funcion que cierra el modal de confirmación para eliminar un comunicado de la lista\r\n */\r\n closeModalRemoveComunicado = () => {\r\n let newState = update(this.state, {\r\n showModalRemoveComunicado: {$set: false},\r\n })\r\n this.setState(newState);\r\n }\r\n\r\n /**\r\n * Funcion que elimina un elemento de la lista de comunicados\r\n */\r\n removeComunicadoFromList = () => {\r\n this.setState({isLoading: true, showModalRemoveComunicado: false }, () => {\r\n this.state.comunicadoToEdit.Eliminado = true;\r\n this.state.comunicadoToEdit.FechaInicio = new Date(this.state.comunicadoToEdit.FechaInicio);\r\n this.state.comunicadoToEdit.FechaFin = new Date(this.state.comunicadoToEdit.FechaFin);\r\n this.state.comunicadoToEdit.Posicion = this.state.comunicadoToEdit.Posicion.value;\r\n ComunicadosVPAPI.UpdateEncComunicado(this.state.comunicadoToEdit, null).then( response => {\r\n let state = {...this.state};\r\n state.isLoading = false;\r\n state.ComunicadosFilter = this.state.ComunicadosFilter.filter( d => {\r\n return d.IdComunicado !== this.state.comunicadoToEdit.IdComunicado\r\n });\r\n state.ComunicadosFilterBack = this.state.ComunicadosFilterBack.filter( d => {\r\n return d.IdComunicado !== this.state.comunicadoToEdit.IdComunicado\r\n });\r\n state.Comunicados = this.state.Comunicados.filter( d => {\r\n return d.IdComunicado !== this.state.comunicadoToEdit.IdComunicado\r\n });\r\n \r\n this.setState(state, () => {\r\n toast.success(`Comunicado eliminado con éxito.`);\r\n });\r\n\r\n }).catch(err => {\r\n this.setState({isLoading: false})\r\n if(err.response)\r\n toast.error(err.response.data.Message)\r\n else\r\n toast.error(ErrorMessages.SinConexion)\r\n });\r\n });\r\n }\r\n\r\n pauseComunicadoFromList = () => {\r\n this.setState({isLoading: true}, () => {\r\n let comunicadoEdit = {...this.state.comunicadoToEdit}\r\n comunicadoEdit.Pausado = true;\r\n comunicadoEdit.FechaInicio = new Date(comunicadoEdit.FechaInicio);\r\n comunicadoEdit.FechaFin = new Date(comunicadoEdit.FechaFin);\r\n comunicadoEdit.Posicion = comunicadoEdit.Posicion.value;\r\n ComunicadosVPAPI.UpdateEncComunicado(comunicadoEdit, null).then( response => {\r\n let state = {...this.state};\r\n state.isLoading = false;\r\n \r\n state.ComunicadosFilter[state.ComunicadosFilter.findIndex(x => x.IdComunicado == this.state.comunicadoToEdit.IdComunicado)].Pausado = 1;\r\n state.ComunicadosFilterBack[state.ComunicadosFilterBack.findIndex(x => x.IdComunicado == this.state.comunicadoToEdit.IdComunicado)].Pausado = 1; \r\n state.Comunicados[state.Comunicados.findIndex(x => x.IdComunicado == this.state.comunicadoToEdit.IdComunicado)].Pausado = 1; \r\n this.setState(state, () => {\r\n toast.success(`El comunicado se pausó.`);\r\n });\r\n }).catch(err => {\r\n this.setState({isLoading: false})\r\n if(err.response)\r\n toast.error(err.response.data.Message)\r\n else\r\n toast.error(ErrorMessages.SinConexion)\r\n });\r\n });\r\n }\r\n\r\n activateComunicadoFromList = () => {\r\n this.setState({isLoading: true}, () => {\r\n let comunicadoEdit = {...this.state.comunicadoToEdit}\r\n comunicadoEdit.Pausado = false;\r\n comunicadoEdit.FechaInicio = new Date(comunicadoEdit.FechaInicio);\r\n comunicadoEdit.FechaFin = new Date(comunicadoEdit.FechaFin);\r\n comunicadoEdit.Posicion = comunicadoEdit.Posicion.value;\r\n\r\n ComunicadosVPAPI.UpdateEncComunicado(comunicadoEdit, null).then( response => {\r\n let state = {...this.state};\r\n state.isLoading = false;\r\n \r\n state.ComunicadosFilter[state.ComunicadosFilter.findIndex(x => x.IdComunicado == this.state.comunicadoToEdit.IdComunicado)].Pausado = 0;\r\n state.ComunicadosFilterBack[state.ComunicadosFilterBack.findIndex(x => x.IdComunicado == this.state.comunicadoToEdit.IdComunicado)].Pausado = 0; \r\n state.Comunicados[state.Comunicados.findIndex(x => x.IdComunicado == this.state.comunicadoToEdit.IdComunicado)].Pausado = 0; \r\n this.setState(state, () => {\r\n toast.success(`El comunicado se reactivó.`);\r\n });\r\n }).catch(err => {\r\n this.setState({isLoading: false})\r\n if(err.response)\r\n toast.error(err.response.data.Message)\r\n else\r\n toast.error(ErrorMessages.SinConexion)\r\n });\r\n });\r\n }\r\n\r\n // Método encargado de recibir el texto en el input de búsqueda y filtrar los elementos en\r\n // la tabla \r\n handleSearchInput = (text) => {\r\n let state = {...this.state};\r\n state.filterText = text;\r\n this.setState(state, () => this.debouncedFilterProcess());\r\n }\r\n\r\n debouncedFilterProcess = debounce(fun => this.filterProcess(), 1000);\r\n\r\n filterProcess = () => {\r\n console.log(\"filtrando...\")\r\n\r\n let driveIds = this.state[\"selectedOptionDrive\"].map(obj => {\r\n return obj.value;\r\n });\r\n\r\n let estatusList = this.state[\"selectedOptionEstatus\"].map(obj => {\r\n return obj.label;\r\n });\r\n\r\n this.setState({isLoading:true}, ()=>{\r\n ComunicadosVPAPI.GetComunicadosData(this.state.filterText,estatusList,driveIds).then(response => {\r\n let state = {...this.state};\r\n state.Comunicados = response.data;\r\n state.Comunicados.forEach( x =>{\r\n x.FechaInicio = format(Date.parse(x.FechaInicio),\"yyyy/MM/dd\");//ComunicadosVPAPI.FormatDate(x.FechaInicio);\r\n x.FechaFin = format(Date.parse(x.FechaFin),\"yyyy/MM/dd\");//ComunicadosVPAPI.FormatDate(x.FechaFin);\r\n x.Posicion = ComunicadosVPAPI.GetPosiciones().find( y => y.value == x.Posicion);\r\n x.Estatus = ComunicadosVPAPI.GetEstatus(x);\r\n })\r\n state.ComunicadosFilter = response.data;\r\n state.ComunicadosFilterBack = response.data;\r\n console.log(\"Resultado obtener comunicados state\",state);\r\n // console.log(\"Resultado drives > \", resDrives);\r\n state.isLoading = false;\r\n this.setState(state)\r\n }).catch(err => {\r\n this.setState({isLoading: false});\r\n if(err.response)\r\n toast.error(err.response.data.Message)\r\n else\r\n toast.error(ErrorMessages.SinConexion)\r\n });\r\n });\r\n }\r\n\r\n\r\n render(){\r\n return(\r\n
    \r\n

    Comunicados

    \r\n
    \r\n
    \r\n
    \r\n
    \r\n \r\n \r\n \r\n Importante: Cualquier cambio realizado se verá reflejado en la pantalla de producción (VP) en aproximadamente 2 horas.\r\n
    \r\n
    \r\n this.create()}>\r\n \r\n \r\n \r\n Agregar\r\n \r\n\r\n
    \r\n
    \r\n
    \r\n
    \r\n \r\n
    \r\n this.handleSearchInput(t)}\r\n itemName={'Comunicado'}\r\n placeholderText = {\"Ingrese título del comunicado\"}\r\n />\r\n
    \r\n
    \r\n
    \r\n \r\n
    \r\n this.changeSelectEstatus(e)}\r\n noOptionsMessage={() => \"No hay opciones\"}\r\n options={this.state.optionEstatus}\r\n />\r\n
    \r\n
    \r\n
    \r\n \r\n
    \r\n this.changeSelectDrive(e)}\r\n noOptionsMessage={() => \"No hay opciones\"}\r\n options={this.state.optionDrive}\r\n />\r\n
    \r\n
    \r\n
    \r\n\r\n
    \r\n
    \r\n {this.state.ComunicadosFilter.length !== 0 \r\n ? \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n {this.state.pageComunicados.map((item, index) => {\r\n return (\r\n \r\n \r\n \r\n\r\n \r\n\r\n \r\n\r\n \r\n\r\n \r\n \r\n \r\n )\r\n })}\r\n \r\n
    TítuloFecha inicioFecha finEstatusAcciones
    {item.Titulo}{ComunicadosVPAPI.FormatDate(item.FechaInicio)}{ComunicadosVPAPI.FormatDate(item.FechaFin)}{ComunicadosVPAPI.GetEstatus(item)}\r\n \r\n {(ComunicadosVPAPI.GetEstatus(item) == \"Vigente\" && item.Pausado == 0) &&\r\n \r\n\r\n }\r\n {(ComunicadosVPAPI.GetEstatus(item) == \"Vigente\" && item.Pausado == 1) &&\r\n \r\n\r\n }\r\n \r\n\r\n
    \r\n\r\n : }\r\n this.setState({ pageComunicados: comunicados })} /*onChangePage={(items) => this.handlePageChange(items)}*/ />\r\n \r\n {(this.state.showModalRemoveComunicado) &&\r\n {this.state.messageRemove}

    }\r\n isActive={this.state.showModalRemoveComunicado}\r\n willSave={true}\r\n done={() => this.removeComunicadoFromList()}\r\n cancel={() => this.closeModalRemoveComunicado()}\r\n />\r\n }\r\n
    \r\n
    \r\n \r\n
    \r\n\r\n );\r\n }\r\n\r\n}\r\n\r\nexport default ComunicadosVP;","import React, { Component } from 'react';\r\n// DE DONDE OBTENER DRIVES\r\nimport ProyeccionesAPI from '../../services/ProductionProyection';\r\nimport TableTemplate from \"../util/tabletemplate/TableTemplate\";\r\nimport NoItems from \"../util/noitems/NoItems\";\r\nimport Pagination from '../util/pagination/Pagination';\r\nimport { toast } from 'react-toastify';\r\nimport lodash from 'lodash';\r\nimport ErrorMessages from '../../util/validation-error-messages';\r\nimport Select from 'react-select';\r\nimport Loading from '../util/loading/Loading';\r\n\r\nclass DrivesComunicado extends Component {\r\n drives = [];\r\n\r\n constructor(props){\r\n super(props);\r\n this.state = {\r\n drives: [],\r\n filterText: \"\",\r\n drive: null,\r\n pageDrives: [],\r\n isLoadingP: false,\r\n\r\n selectedDrives: [...this.props.selectedDrives],\r\n selectedOptionState: [],\r\n selectedOptionCity: [],\r\n optionState: [],\r\n optionCity: [],\r\n checkAll: false\r\n }\r\n }\r\n\r\n componentDidMount(){\r\n this.setState({isLoadingP: true})\r\n let state = {...this.state};\r\n ProyeccionesAPI.GetActiveCaffenios().then(response => {\r\n\r\n state.drives = response.data\r\n let auxCount = 0;\r\n state.drives.findIndex(obj => {\r\n let isSelected = this.state.selectedDrives.findIndex(selectedDrive => selectedDrive.idCaffenio === obj.idCaffenio)\r\n if (isSelected != -1) {\r\n obj.statusCheck = true;\r\n auxCount++;\r\n }\r\n return auxCount == this.state.selectedDrives.length;\r\n })\r\n this.drives = lodash.cloneDeep(response.data);\r\n\r\n state.optionState = this.select_state(state.drives);\r\n state.optionCity = this.select_city(state.drives);\r\n \r\n console.log(\"El state drives proyección >> \", state);\r\n // Guardar el estado\r\n this.setState(state);\r\n }).catch(err => {\r\n this.setState({isLoadingP: false})\r\n if(err.response)\r\n toast.error(err.response.data.Message)\r\n else\r\n toast.error(ErrorMessages.SinConexion)\r\n })\r\n }\r\n\r\n select_state(Caffenios) { // Llenar el combo 'Estados' con todas las opciones \r\n var newArray = [];\r\n let OptionSelect = [];\r\n var lookupObject = {};\r\n Caffenios.map((item) => {\r\n OptionSelect.push({value:item.StateId,label:item.State});\r\n });\r\n\r\n for(var i in OptionSelect) {\r\n lookupObject[OptionSelect[i][\"value\"]] = OptionSelect[i];\r\n }\r\n \r\n for(i in lookupObject) {\r\n newArray.push(lookupObject[i]);\r\n }\r\n newArray = newArray.sort(function (a, b) {\r\n if (a.label > b.label) {\r\n return 1;\r\n }\r\n if (a.label < b.label) {\r\n return -1;\r\n }\r\n // a must be equal to b\r\n return 0;\r\n });\r\n return newArray;\r\n }\r\n\r\n select_city(Caffenios) { // Llenar el combo 'Ciudades' con todas las opciones \r\n var newArray = [];\r\n let OptionSelectCity = [];\r\n var lookupObject = {};\r\n Caffenios.map((item) => {\r\n OptionSelectCity.push({value:item.Municipalityid,label:item.Municipality});\r\n });\r\n\r\n for(var i in OptionSelectCity) {\r\n lookupObject[OptionSelectCity[i][\"value\"]] = OptionSelectCity[i];\r\n }\r\n \r\n for(i in lookupObject) {\r\n newArray.push(lookupObject[i]);\r\n }\r\n newArray = newArray.sort(function (a, b) {\r\n if (a.label > b.label) {\r\n return 1;\r\n }\r\n if (a.label < b.label) {\r\n return -1;\r\n }\r\n // a must be equal to b\r\n return 0;\r\n });\r\n return newArray;\r\n }\r\n\r\n changeSelectEstado = (obj) => {\r\n let state = {...this.state}\r\n state[\"selectedOptionState\"] = obj;\r\n let idEstado = obj.map(estado => {return estado.value});\r\n let objCaffenios = [...this.drives];\r\n let listaCiudades = [];\r\n\r\n // Recorrer objeto Caffenios y encontrar coincidencias sin eliminar duplicados\r\n objCaffenios.map(item =>{\r\n for(var i=0; i>\", listaCiudades);\r\n console.log(\"sin duplicados >>\", eliminarDuplicados);\r\n //Se limpian los combos 'Ciudades' y 'Drives'\r\n state[\"selectedOptionCity\"] = [];\r\n\r\n //Se valida que haya una opción seleccionada en combo 'Estados'\r\n if(obj.length===0){\r\n state[\"optionCity\"] = this.select_city(objCaffenios);\r\n } else{\r\n state[\"optionCity\"] = eliminarDuplicados;\r\n }\r\n\r\n this.setState(state, () => this.handleSearchMultipleFieldInput());\r\n }\r\n\r\n changeSelectCiudad = (obj) =>{\r\n let state = {...this.state}\r\n // let idCiudad = obj.map(ciudad => {return ciudad.value});\r\n // let objCaffenios = [...state.Caffenios];\r\n // let listaDrives = [];\r\n\r\n // //Se buscan coincidencias entre ciudad y drive y se genera la lista de drives\r\n // objCaffenios.map(item =>{\r\n // for(var i=0; i0){\r\n state[\"selectedOptionCity\"] = obj;\r\n this.setState(state, () => this.handleSearchMultipleFieldInput());\r\n } else{\r\n this.setState(state, () => this.handleSearchMultipleFieldInput());\r\n this.changeSelectEstado(state[\"selectedOptionState\"]);\r\n }\r\n }\r\n\r\n eliminarObjDuplicados = (arr,prop) => {\r\n var nuevoArray = [];\r\n var lookup = {};\r\n for (var i in arr) {\r\n lookup[arr[i][prop]] = arr[i];\r\n }\r\n for (i in lookup) {\r\n nuevoArray.push(lookup[i]);\r\n }\r\n return nuevoArray;\r\n }\r\n\r\n /**\r\n * Funcion para ordenar lexicograficamente\r\n * @param objA. primer operando\r\n * @param objB. segundo operando\r\n */\r\n compare = (objA, objB) => {\r\n // Use toUpperCase() to ignore character casing\r\n const labelA = objA.label.toUpperCase();\r\n const labelB = objB.label.toUpperCase();\r\n\r\n let comparison = 0;\r\n if (labelA > labelB) {\r\n comparison = 1;\r\n } else if (labelA < labelB) {\r\n comparison = -1;\r\n }\r\n return comparison;\r\n }\r\n\r\n // Método encargado de recibir el texto en el input de búsqueda y filtrar los elementos en\r\n // la tabla \r\n handleSearchInput = (text) => {\r\n let state = this.state;\r\n state.filterText = text;\r\n this.setState(state, this.handleSearchMultipleFieldInput);\r\n }\r\n\r\n /**\r\n *Realizar el filtrado sobre las recetas para desplegar solo los elementos\r\n *que cumplen con las caracteristicas que el usuario ingreso.\r\n * \r\n *@param: nada\r\n *@return: nada\r\n */\r\n handleSearchMultipleFieldInput = () => {\r\n\r\n console.log(\"Estados >> \", this.state.selectedOptionState);\r\n console.log(\"Ciudades >> \", this.state.selectedOptionCity);\r\n let drives = this.drives.filter(\r\n drive => (\r\n (this.state.selectedOptionState.length > 0 ? \r\n (this.state.selectedOptionState.findIndex( x => x.value == drive.StateId) != -1) : \r\n true) &&\r\n (this.state.selectedOptionCity.length > 0 ? \r\n (this.state.selectedOptionCity.findIndex(y => y.value == drive.Municipalityid) != -1 ): \r\n true) &&\r\n (this.state.filterText.trim() !== '' ?\r\n ( (drive.Name \r\n ? drive.Name.toLowerCase().normalize(\"NFD\").replace(/[\\u0300-\\u036f]/g, \"\").includes(this.state.filterText.trim().toLowerCase().normalize(\"NFD\").replace(/[\\u0300-\\u036f]/g, \"\")) \r\n : false) \r\n || drive.NombreNuevo.toLowerCase().normalize(\"NFD\").replace(/[\\u0300-\\u036f]/g, \"\").includes(this.state.filterText.trim().toLowerCase().normalize(\"NFD\").replace(/[\\u0300-\\u036f]/g, \"\")))\r\n : true)\r\n )\r\n );\r\n \r\n let state = {...this.state};\r\n state.drives = lodash.cloneDeep(drives);\r\n let auxCount = 0;\r\n state.drives.findIndex(obj => {\r\n let isSelected = this.state.selectedDrives.findIndex(selectedDrive => selectedDrive.idCaffenio === obj.idCaffenio)\r\n if (isSelected != -1) {\r\n obj.statusCheck = true;\r\n auxCount++;\r\n }\r\n return auxCount == this.state.selectedDrives.length;\r\n })\r\n state.checkAll = false;\r\n this.setState(state);\r\n }\r\n\r\n /**\r\n * Funcion que se ejecuta al darle click al checkbox del header\r\n */\r\n selectAllCheck = () => {\r\n let _checkAll = !this.state.checkAll\r\n let _selectedDrives = [...this.state.selectedDrives]\r\n let _pageDrives = this.state.pageDrives\r\n _pageDrives.forEach(drive => {\r\n let indexDrive = _selectedDrives.findIndex(item => item.idCaffenio === drive.idCaffenio)\r\n drive.statusCheck = _checkAll\r\n if(_checkAll){\r\n if(indexDrive === -1) _selectedDrives.push(drive)\r\n }else{\r\n if(indexDrive !== -1) _selectedDrives.splice(indexDrive, 1)\r\n }\r\n });\r\n\r\n this.setState({checkAll: _checkAll, selectedDrives: _selectedDrives})\r\n }\r\n\r\n /**\r\n * Funcion que se ejecuta al cambiar la pagina del tablero\r\n */\r\n changeDrivePage = (drives) => {\r\n let drivesChecked = 0;\r\n let checkAll = false;\r\n drives.forEach(item => {\r\n if(this.state.selectedDrives.findIndex(id => id.idCaffenio === item.idCaffenio) !== -1){\r\n drivesChecked++\r\n item.statusCheck = true;\r\n }\r\n else{\r\n item.statusCheck = false;\r\n }\r\n });\r\n if(drivesChecked === drives.length) checkAll = true;\r\n\r\n this.setState({ pageDrives: drives, checkAll: checkAll });\r\n }\r\n\r\n /*\r\n * Funcion que selecciona o des selecciona todas las \r\n * recetas de todas las paginas.\r\n */\r\n selectAllCheckBox = (e) => {\r\n e.stopPropagation();\r\n let state = {...this.state};\r\n let elementsPage = state.drives\r\n let selectedDrives = []\r\n // Le asignamos el valor inverso de checkAll a todas las recetas actuales\r\n elementsPage.map(element=>{\r\n if(state.checkAll){\r\n element.statusCheck = false \r\n }else{\r\n element.statusCheck = true\r\n selectedDrives.push(element)\r\n }\r\n return element\r\n })\r\n state.checkAll = !state.checkAll;\r\n state.drives = elementsPage;\r\n state.selectedDrives = selectedDrives\r\n this.setState(state);\r\n }\r\n\r\n\r\n render() {\r\n return (\r\n
    \r\n\r\n {/* Filtro multiple para drives */}\r\n
    \r\n
    \r\n
    \r\n\r\n
    \r\n
    \r\n { e.stopPropagation(); this.handleSearchInput(e.currentTarget.value);}}\r\n />\r\n
    \r\n
    \r\n
    \r\n {/* */}\r\n
    \r\n
    \r\n \r\n
    \r\n \"No hay opciones\"}\r\n options={this.state.optionState}\r\n />\r\n
    \r\n
    \r\n
    \r\n \r\n
    \r\n \"No hay opciones\"}\r\n options={this.state.optionCity}\r\n />\r\n
    \r\n
    \r\n
    \r\n
    \r\n
    \r\n\r\n
    \r\n \r\n
    \r\n
    \r\n {/* Botones del header de la tabla */}\r\n \r\n {this.state.drives.length !== 0 && this.state.pageDrives.length !== 0\r\n ? {\r\n let _selectedDrives = [...this.state.selectedDrives]\r\n let indexDrive = this.state.selectedDrives.findIndex(id => id.idCaffenio === this.state.pageDrives[index].idCaffenio);\r\n if( indexDrive === -1)\r\n _selectedDrives.push(this.state.pageDrives[index]);\r\n else\r\n _selectedDrives.splice(indexDrive, 1)\r\n this.setState({selectedDrives: _selectedDrives})\r\n }}\r\n checkAll={this.state.checkAll}\r\n //Controlador del checkbox del header\r\n selectAllCheck={this.selectAllCheck}\r\n rowClickable={false}\r\n /> \r\n : }\r\n this.changeDrivePage(drives) } />\r\n
    \r\n
    \r\n\r\n
    \r\n\r\n this.props.cancelDrivesModal()}\r\n >\r\n Cancelar\r\n \r\n\r\n \r\n\r\n\r\n \r\n
    \r\n \r\n \r\n
    \r\n );\r\n }\r\n}\r\n\r\nexport default DrivesComunicado;\r\n","import React, { Component } from 'react';\r\nimport { toast } from 'react-toastify';\r\nimport TextField from '../util/textfield/TextField';\r\nimport Field from '../util/field/Field';\r\nimport Loading from '../util/loading/Loading';\r\nimport ErrorMessages from '../../util/validation-error-messages';\r\nimport ExpresionesRegulares from '../../util/expresiones-regulares';\r\nimport { Formik } from 'formik';\r\nimport * as Yup from 'yup';\r\nimport update from 'immutability-helper';\r\nimport TableTemplate from \"../util/tabletemplate/TableTemplate\";\r\nimport Modal from '../util/modal/Modal';\r\nimport AcceptModal from '../util/acceptModal/AcceptModal';\r\nimport NoItems from \"../util/noitems/NoItems\";\r\nimport Pagination from '../util/pagination/Pagination';\r\nimport DrivesComunicado from './DrivesComunicado';\r\nimport DatePicker, { registerLocale } from \"react-datepicker/dist/es\"\r\nimport { format, subDays} from 'date-fns'\r\nimport es from \"date-fns/locale/es\";\r\nimport Select from 'react-select';\r\nimport ComunicadosVPAPI from '../../services/ComunicadosVP';\r\nregisterLocale(\"es\", es);\r\n\r\nconst SUPPORTED_FORMATS = [\r\n \"image/png\",\r\n \"image/jpeg\"\r\n];\r\n\r\nclass ComunicadoForm extends Component {\r\n\r\n styleDriveMax = {\r\n \"backgroundColor\": \"rgb(255, 221, 87)\"\r\n }\r\n\r\n stylePreviewImage = {\r\n \"width\" : \"100%\",\r\n \"height\" : \"70vh\" \r\n }\r\n\r\n constructor(props) {\r\n super(props);\r\n this.state = {\r\n comunicado: { ...this.props.comunicado },\r\n\r\n isLoading: false,\r\n\r\n pageDrives: [],\r\n showModalEditDrives: false,\r\n showModalRemoveDrive: false,\r\n driveToRemove: {},\r\n positionOptions: ComunicadosVPAPI.GetPosiciones(),\r\n\r\n showModalDrive: false,\r\n showModalRemoveComunicado: false,\r\n comunicadoToEdit: {},\r\n messageRemove: \"¿Está seguro que desea eliminar el comunicado?\"\r\n }\r\n }\r\n\r\n componentDidMount() {\r\n // console.log(\"Proyeccion en form >> \", this.props);\r\n // console.log(\"state >> \", this.state);\r\n }\r\n\r\n /**\r\n * Función que se ejecuta para mostrar el modal para agregar o eliminar drives a incluir\r\n * @param e event\r\n */\r\n toggleEditDrivesModal = (e) => {\r\n e.preventDefault();\r\n e.stopPropagation();\r\n let newState = update(this.state, {\r\n showModalEditDrives: {$set: true},\r\n showModalDrive: {$set: true}\r\n });\r\n this.setState(newState);\r\n }\r\n\r\n /**\r\n * Funcion que muestra el modal de confirmación para remover una receta de la lista de recetas a excluir\r\n * @param drive drive que se quiere eliminar de la lista\r\n */\r\n toggleModalRemoveDrive = (drive) => {\r\n let newState = update(this.state, {\r\n showModalRemoveDrive: {$set: true},\r\n driveToRemove: {$set: drive}\r\n })\r\n this.setState(newState);\r\n }\r\n\r\n /**\r\n * Funcion que elimina un elemento de la lista de drives a incluir\r\n */\r\n removeDriveFromList = () => {\r\n let state = {...this.state};\r\n let _drives = this.state.comunicado.Drives.filter( d => {\r\n return d.idCaffenio !== this.state.driveToRemove.idCaffenio\r\n });\r\n\r\n state.comunicado.Drives = _drives;\r\n state.showModalRemoveDrive = false;\r\n this.setState(state, () => {\r\n toast.success(`Drive y/o Kiosko eliminado con éxito.`);\r\n });\r\n }\r\n\r\n /**\r\n * Funcion que cierra el modal de confirmación para eliminar un drive de la lista\r\n */\r\n closeModalRemoveDrive = () => {\r\n let newState = update(this.state, {\r\n showModalRemoveDrive: {$set: false},\r\n })\r\n this.setState(newState);\r\n }\r\n\r\n /**\r\n * Funcion que actualiza los elementos que se muestran en la paginación de los drives a incluir\r\n * @param drives arreglo con drives de la página actual\r\n */\r\n changeDrivePage = (drives) => {\r\n this.setState({pageDrives: [...drives]});\r\n }\r\n\r\n /**\r\n * Función que se ejecuta para mostrar el modal para agregar/eliminar drives de la\r\n * lista de drives a incluir\r\n */\r\n cancelDrivesModal = () => {\r\n let newState = update(this.state, {\r\n showModalDrive: {$set: false},\r\n showModalEditDrives: {$set: false},\r\n });\r\n this.setState(newState);\r\n }\r\n\r\n handleDateChange = (date, attr) => {\r\n let state = { ...this.state };\r\n state.comunicado[attr] = date;\r\n this.setState(state);\r\n }\r\n\r\n changeSelectPosicion = (obj) => {\r\n let state = {...this.state}\r\n\r\n // console.log(\"Las opciones >> \", state.optionState);\r\n // console.log(\"El estado seleccionado >> \", state.selectedOption);\r\n // console.log(\"El objeto changeSelectEstado >> \", obj);\r\n\r\n state.comunicado.Posicion = obj;\r\n this.setState(state);\r\n }\r\n\r\n /**\r\n * Funcion que guarda los drives que se quieren incluir\r\n * @param checkedDrives drives que fueron seleccionadas\r\n */\r\n\r\n saveDrives = (checkedDrives) => {\r\n let state = {...this.state};\r\n state.showModalDrive = false;\r\n state.showModalEditDrives = false;\r\n state.comunicado.Drives = checkedDrives;\r\n this.setState(state, () => {\r\n toast.success(`Los drives y/o kioskos se actualizaron`);\r\n });\r\n this.validateMaxComunicados();\r\n }\r\n\r\n validateMaxComunicados = () =>{\r\n if(this.state.comunicado.FechaInicio && this.state.comunicado.FechaFin){\r\n this.setState({isLoading:true}, () =>{\r\n ComunicadosVPAPI.GetMaxComunicadosDrives(this.state.comunicado.FechaInicio, this.state.comunicado.FechaFin, this.state.comunicado.Drives.map(x => x.idCaffenio))\r\n .then( responseDrives =>{\r\n let state = {...this.state};\r\n console.log(\"Response drives >> \", responseDrives);\r\n responseDrives.data.forEach( val =>{\r\n let idx = state.comunicado.Drives.findIndex( x => x.idCaffenio == val);\r\n console.log(\"Index: \",idx)\r\n if(idx >= 0){\r\n state.comunicado.Drives[idx].style = this.styleDriveMax;\r\n }\r\n });\r\n if(responseDrives.data.length > 0){\r\n state.showModalMessageMaxComunicados = true;\r\n }\r\n state.isLoading = false;\r\n this.setState(state);\r\n })\r\n .catch( errDrives =>{\r\n console.log(\"Error drives >> \", errDrives);\r\n this.setState({isLoading:false});\r\n });\r\n });\r\n }\r\n }\r\n\r\n /**\r\n * Funcion que muestra el modal de confirmación para remover una receta de la lista de recetas a excluir\r\n * @param drive drive que se quiere eliminar de la lista\r\n */\r\n toggleModalRemoveComunicado = (comunicado) => {\r\n let msg = ComunicadosVPAPI.GetEstatus(comunicado) == \"Vigente\" ? \"El comunicado se encuentra vigente, este se dejará de publicar y se eliminará del listado de comunicados. ¿Está seguro que desea eliminarlo?\" : \"El comunicado se eliminará del listado de comunicados. ¿Está seguro que desea eliminarlo?\";\r\n let newState = update(this.state, {\r\n showModalRemoveComunicado: {$set: true},\r\n comunicadoToEdit: {$set: {...comunicado}},\r\n messageRemove : {$set: msg}\r\n })\r\n this.setState(newState);\r\n }\r\n\r\n /**\r\n * Funcion que cierra el modal de confirmación para eliminar un drive de la lista\r\n */\r\n closeModalRemoveComunicado = () => {\r\n let state = {...this.state};\r\n state.showModalRemoveComunicado = false;\r\n state.comunicado.Posicion = ComunicadosVPAPI.GetPosiciones().find( y => y.value == state.comunicado.Posicion);\r\n this.setState(state);\r\n }\r\n\r\n removeComunicado = () => {\r\n this.props.save(this.state.comunicadoToEdit,null,\"Comunicado eliminado con éxito\")\r\n }\r\n\r\n VALIDATION_SCHEMA = Yup.object({\r\n Titulo: Yup.string()\r\n .trim()\r\n .matches(ExpresionesRegulares.AlfanumericoSinEspeciales, { message: ErrorMessages.AlfanumericoSinEspecialesError })\r\n .min(3, \"Titulo debe tener más de 2 caracteres.\")\r\n .max(150, \"Ha excedido el límite de 150 caracteres.\")\r\n .required(\"Campo Título es requerido.\")\r\n .test(\"validate-name\", \"El título ya existe, favor de ingresar otro.\", (value) => {\r\n let isValid = true;\r\n let name = value ? value.toLowerCase().trim() : \"\";\r\n if (this.props.comunicadoList.some(u => u.Titulo.toLowerCase().trim() === name && u.IdComunicado !== this.state.comunicado.IdComunicado)) {\r\n isValid = false;\r\n }\r\n return isValid;\r\n }),\r\n Image: Yup.mixed() \r\n .test(\"imageRequire\", \"Debe selecionar una imagen\", function(Image) {\r\n const { UrlImagen } = this.parent;\r\n if ((!UrlImagen && UrlImagen != \"\") && Image == null ) {\r\n return false; \r\n }\r\n return true;\r\n })\r\n .when(['UrlImagen'], {\r\n is: UrlImagen => { return (!UrlImagen && UrlImagen != \"\");},\r\n then: Yup.mixed().required('Imagen requerida').test(\r\n \"fileFormat\",\r\n ErrorMessages.PngJpegFormatError,\r\n value => value && SUPPORTED_FORMATS.includes(value.type) \r\n ).test('fileSize',\"tamaño de imagen sobrepasa 3mb\", value => value && value.size <= 3145728)\r\n }),\r\n FechaInicio: Yup.date().required('Fecha inicio es requerido.'),\r\n FechaFin: Yup.date().required('Fecha fin es requerida.')\r\n .min(\r\n Yup.ref(\"FechaInicio\"),\r\n \"Fecha fin debe ser posterior a fecha inicio.\"\r\n ),\r\n Posicion: Yup.number()\r\n .min(1, \"Debe seleccionar una posición\")\r\n .required(\"Debe seleccionar una posición\")\r\n },[ [ 'UrlImagen' ] ]);\r\n\r\n \r\n\r\n render() {\r\n\r\n return (\r\n
    \r\n {\r\n let formatValues = { ...values }\r\n formatValues.Pausado = this.state.comunicado.Pausado;\r\n formatValues.Titulo = formatValues.Titulo.trim();\r\n formatValues.Drives = this.state.comunicado.Drives;\r\n formatValues.FechaInicio = format(formatValues.FechaInicio,\"yyyy/MM/dd\");\r\n formatValues.FechaFin = format(formatValues.FechaFin,\"yyyy/MM/dd\");\r\n delete formatValues.Image\r\n this.props.save(formatValues, values.Image);\r\n }}\r\n >\r\n {({ values, touched, errors, handleChange, handleBlur, handleSubmit, setFieldValue, setFieldTouched, setFieldError }) => (\r\n
    \r\n
    \r\n {this.props.isEditing &&\r\n
    \r\n \r\n
    \r\n }\r\n {this.props.isEditing &&\r\n
    \r\n \r\n
    \r\n }\r\n\r\n
    \r\n \r\n { e.which === 13 && e.preventDefault() }}\r\n onChange={handleChange}\r\n onBlur={handleBlur}\r\n />\r\n \r\n
    \r\n\r\n
    \r\n {this.props.isEditing && \r\n
    \r\n \r\n \r\n {ComunicadosVPAPI.GetEstatus(this.state.comunicado)}\r\n \r\n
    \r\n }\r\n
    \r\n \r\n
    \r\n \r\n \r\n {\r\n setFieldValue('FechaInicio',e);\r\n let state = {...this.state};\r\n state.comunicado.FechaInicio = e;\r\n this.setState(state);\r\n }}\r\n popperPlacement=\"right\"\r\n popperModifiers={{\r\n offset: {\r\n enabled: true,\r\n offset: '5px, 10px'\r\n },\r\n preventOverflow: {\r\n enabled: true,\r\n escapeWithReference: false,\r\n boundariesElement: 'viewport'\r\n }\r\n }}\r\n \r\n // withPortal\r\n dateFormat=\"dd/MM/yyyy\"\r\n className=\"input\"\r\n minDate={subDays(new Date(), 1095)}\r\n \r\n />\r\n \r\n \r\n
    \r\n\r\n
    \r\n \r\n \r\n {\r\n setFieldValue('FechaFin',e);\r\n console.log(\"valor >> \",e);\r\n let state = {...this.state};\r\n state.comunicado.FechaFin = e;\r\n this.setState(state);\r\n }}\r\n popperPlacement=\"right\"\r\n popperModifiers={{\r\n offset: {\r\n enabled: true,\r\n offset: '5px, 10px'\r\n },\r\n preventOverflow: {\r\n enabled: true,\r\n escapeWithReference: false,\r\n boundariesElement: 'viewport'\r\n }\r\n }}\r\n \r\n // withPortal\r\n dateFormat=\"dd/MM/yyyy\"\r\n className=\"input\"\r\n minDate={values.FechaInicio}\r\n />\r\n \r\n \r\n
    \r\n\r\n
    \r\n \r\n
    \r\n {\r\n let state = {...this.state}\r\n state.comunicado.Posicion = e;\r\n setFieldValue(\"Posicion\",e.value);\r\n this.setState(state);\r\n }}\r\n noOptionsMessage={() => \"No hay opciones\"}\r\n options={this.state.positionOptions}\r\n />\r\n
    \r\n \r\n
    \r\n\r\n
    \r\n\r\n
    \r\n \r\n
    \r\n \r\n
    \r\n {values.Image !== null &&\r\n \r\n \r\n\r\n \r\n }\r\n \r\n
    \r\n
    \r\n {values.Image !== null\r\n && \r\n
    \r\n
    \r\n \"\"{ this.setState({showModalImage: true})}}\r\n />\r\n
    \r\n
    \r\n
    \r\n }\r\n {values.UrlImagen && \r\n
    \r\n
    \r\n \"No{ this.setState({showModalImage: true})}}\r\n />\r\n
    \r\n
    \r\n
    }\r\n
    \r\n
    \r\n\r\n
    \r\n \r\n {/* \r\n Drives\r\n */}\r\n\r\n
    \r\n
    \r\n\r\n

    Drives y/o Kioskos a incluir

    \r\n
    \r\n \r\n
    \r\n\r\n
    \r\n\r\n
    \r\n
    \r\n
    \r\n {/* \r\n TABLA DE Drives\r\n */}\r\n\r\n {(this.state.comunicado.Drives && this.state.comunicado.Drives.length !== 0) \r\n ? {}}\r\n rowClickable={false}\r\n extraButtons={(drive) => {\r\n return \r\n }}\r\n /> \r\n \r\n : }\r\n\r\n {(this.state.showModalRemoveDrive) &&\r\n ¿Está seguro que desea eliminar el drive y/o kiosko de la lista a incluir?

    }\r\n isActive={this.state.showModalRemoveDrive}\r\n willSave={true}\r\n done={() => this.removeDriveFromList()}\r\n cancel={() => this.closeModalRemoveDrive()}\r\n />\r\n } \r\n\r\n this.changeDrivePage(drives)} />\r\n
    \r\n
    \r\n
    \r\n
    \r\n
    \r\n\r\n
    \r\n
    \r\n \r\n \r\n
    \r\n
    \r\n\r\n \r\n\r\n {this.state.showModalImage && \r\n this.setState({showModalImage:false})}\r\n >\r\n {values.Image !== null && \r\n \r\n
    \r\n \"\"\r\n
    \r\n
    \r\n\r\n }\r\n {values.UrlImagen && \r\n \r\n
    \r\n \"No\r\n
    \r\n
    \r\n }\r\n \r\n }\r\n \r\n )}\r\n \r\n \r\n {/* MODAL DE DRIVES */}\r\n\r\n {this.state.showModalEditDrives && this.state.showModalDrive && \r\n this.cancelDrivesModal()}\r\n >\r\n \r\n
    \r\n \r\n }\r\n {(this.state.showModalRemoveComunicado) &&\r\n {this.state.messageRemove}

    }\r\n isActive={this.state.showModalRemoveComunicado}\r\n willSave={true}\r\n done={() => this.removeComunicado()}\r\n cancel={() => this.closeModalRemoveComunicado()}\r\n />\r\n }\r\n {this.state.showModalMessageMaxComunicados && \r\n this.setState({showModalMessageMaxComunicados: false})}\r\n >\r\n Existen Drives y/o Kioskos con más de 4 comunicados dentro del periodo seleccionado, revise la lista.\r\n
    \r\n \r\n }\r\n
    \r\n );\r\n }\r\n}\r\n\r\nComunicadoForm.defaultProps = {\r\n isLoading: false,\r\n comunicado: {\r\n IdComunicado: 0,\r\n Titulo: \"\",\r\n UrlImagen: \"\",\r\n FechaInicio: \"\",\r\n FechaFin: \"\",\r\n Posicion: 0,\r\n Drives: []\r\n }\r\n}\r\n\r\nexport default ComunicadoForm;\r\n","\r\nimport React, { Component } from 'react';\r\nimport PropTypes from 'prop-types';\r\nimport {toast} from 'react-toastify';\r\nimport ComunicadosVPAPI from \"../../services/ComunicadosVP\";\r\nimport '../cssComponents.css';\r\nimport ErrorMessages from '../../util/validation-error-messages';\r\nimport Loading from '../util/loading/Loading';\r\nimport ComunicadoForm from './ComunicadoForm';\r\nimport { format } from 'date-fns'\r\n\r\nclass NewComunicado extends Component {\r\n constructor(props){\r\n super(props);\r\n this.state = {\r\n comunicadoList:[],\r\n comunicado: null,\r\n isLoading: false\r\n };\r\n \r\n }\r\n\r\n componentDidMount(){\r\n if (!this.props.location.state) {\r\n this.props.history.push(`/comunicados-vp`);\r\n return;\r\n }\r\n let state = {...this.state};\r\n state.comunicadoList = this.props.location.state.comunicadoList;\r\n state.isEditing = this.props.location.state.isEditing;\r\n if(state.isEditing){\r\n state.comunicado = this.props.location.state.comunicado;\r\n this.getDrivesComunicado();\r\n }\r\n else{\r\n state.comunicado = {...this.props.comunicado}\r\n }\r\n this.setState( state, () =>{ console.log(\"El state de comunicado >> \", this.state); });\r\n }\r\n\r\n getDrivesComunicado = () =>{\r\n this.setState({isLoading: true}, () =>{\r\n ComunicadosVPAPI.GetDrivesComunicado(this.state.comunicado.IdComunicado).then( response => {\r\n console.log(\"Response drives : \", response);\r\n let state = {...this.state}\r\n state.comunicado.Drives = response.data;\r\n state.isLoading = false;\r\n this.setState(state);\r\n }).catch(err =>{\r\n console.error(\"Error response > \", err);\r\n this.setState({isLoading: false})\r\n if(err.response)\r\n toast.error(err.response.data.Message)\r\n else\r\n toast.error(ErrorMessages.SinConexion)\r\n })\r\n })\r\n };\r\n\r\n save = (comunicado, imagen = null, mensaje = \"Comunicado actualizado\") => {\r\n console.log(\"La comunicado a guardar >>\", comunicado);\r\n console.log(\"isEditing >>\", this.state.isEditing);\r\n \r\n this.setState({isLoading: true}, () => {\r\n if(this.state.isEditing){\r\n ComunicadosVPAPI.UpdateComunicadoData(comunicado, imagen).then( response => {\r\n let state = {...this.state};\r\n state.isLoading = false;\r\n this.setState(state, () => {\r\n toast.success(mensaje);\r\n });\r\n this.props.history.goBack();\r\n }).catch(err => {\r\n this.setState({isLoading: false})\r\n if(err.response)\r\n toast.error(err.response.data.Message)\r\n else\r\n toast.error(ErrorMessages.SinConexion)\r\n });\r\n }\r\n else{\r\n ComunicadosVPAPI.CreateComunicadoData(comunicado, imagen).then( response => {\r\n this.setState({isLoading: false})\r\n toast.success(\"Comunicado creado\");\r\n this.props.history.goBack();\r\n }).catch(err => {\r\n this.setState({isLoading: false})\r\n if(err.response)\r\n toast.error(err.response.data.Message)\r\n else\r\n toast.error(ErrorMessages.SinConexion)\r\n });\r\n }\r\n })\r\n }\r\n\r\n render() {\r\n return (\r\n
    \r\n
    \r\n
    \r\n
    \r\n \r\n { e.preventDefault(); this.props.history.goBack();}} className=\"fa fa-arrow-left\">\r\n \r\n {this.state.isEditing ? \"Actualizar comunicado\" : \"Nuevo comunicado\"}\r\n {(this.state.isEditing && this.state.comunicado.Pausado == 0 && ComunicadosVPAPI.GetEstatus(this.state.comunicado) == \"Vigente\") &&\r\n \r\n }\r\n {(this.state.isEditing && this.state.comunicado.Pausado == 1 && ComunicadosVPAPI.GetEstatus(this.state.comunicado) == \"Vigente\") &&\r\n \r\n }\r\n
    \r\n
    \r\n
    \r\n { (this.state.comunicado && this.state.comunicado.Drives) &&\r\n \r\n }\r\n
    \r\n
    \r\n\r\n \r\n
    \r\n );\r\n }\r\n}\r\n\r\n// Definición de los tipos y su dependencia de las distintas props que recibe el componente.\r\nNewComunicado.propTypes = {\r\n comunicado: PropTypes.object,\r\n isEditing: PropTypes.bool\r\n}\r\n\r\n// Definición de los valores por default de las props en caso de no ser recibidas por el padre.\r\nNewComunicado.defaultProps = {\r\n isEditing: false,\r\n comunicado: {\r\n IdComunicado: 0,\r\n Titulo: \"\",\r\n UrlImagen: \"\",\r\n FechaInicio: \"\",\r\n FechaFin: \"\",\r\n Posicion: 0,\r\n Drives: []\r\n }\r\n}\r\n\r\nexport default NewComunicado;","import {apiUrl} from '../constants';\r\nimport axios from 'axios';\r\n\r\nvar request = axios.create({\r\n baseURL: apiUrl,\r\n headers: {'Authorization':'Bearer ' +localStorage.getItem('token'),'Content-Type':'application/json'}\r\n})\r\n\r\nexport default class PagosBancosAPI {\r\n\r\n static GetPagosNetPay = () => {\r\n return request.get('PagoBanco/GetPagosNetPay')\r\n }\r\n\r\n static GetFilterPagoNetPay = (filtro) => {\r\n return request.post('PagoBanco/FilterPagoNetPay', filtro)\r\n }\r\n\r\n static GetSucursales = () => {\r\n return request.get('PagoBanco/GetSucursales')\r\n }\r\n\r\n static ReintentarFolioPago = (pago) => {\r\n return request.post('PagoBanco/ReintentarFolioPago', pago)\r\n }\r\n}","import React from 'react'\r\nimport Select from 'react-select';\r\nimport PagosBancosAPI from '../../services/PagosBancos';\r\nimport { useState, useEffect } from 'react';\r\nimport { toast } from 'react-toastify';\r\nimport Loading from '../util/loading/Loading';\r\nimport ErrorMessages from '../../util/validation-error-messages';\r\nimport DatePicker from \"react-datepicker/dist/es\"\r\nimport { format } from 'date-fns';\r\nimport Pagination from '../util/pagination/Pagination';\r\nimport NoItems from '../util/noitems/NoItems';\r\nimport ReactExport from \"react-export-excel\";\r\n\r\n// Creamos instancias para el package export excel.\r\n// Variable que indica el archivo de excel que se crea.\r\nconst ExcelFile = ReactExport.ExcelFile;\r\n// Variable que indica una hoja de excel.\r\nconst ExcelSheet = ReactExport.ExcelFile.ExcelSheet;\r\n// Variable que indica una columna de excel.\r\nconst ExcelColumn = ReactExport.ExcelFile.ExcelColumn;\r\n\r\nconst formatoPrecio = new Intl.NumberFormat('en-US', {\r\n style: 'currency',\r\n currency: 'USD',\r\n})\r\n\r\nconst listaTipoPago = [\r\n {'idTipoPago': 1, 'nombre': 'Pago'},\r\n {'idTipoPago': 2, 'nombre': 'Comisión'},\r\n //{'idTipoPago': 3, 'nombre': 'Comisión Proveedor'}\r\n]\r\n\r\nconst listaEstatusPago = [\r\n { 'idEstatus': 1, 'nombre': 'Sin folio' }\r\n]\r\n\r\nexport const PagosBancos = () => {\r\n\r\n const [state, setState] = useState({\r\n //Lista datos\r\n listaPagosNetPay: [],\r\n paginadoPagosNetPay: [],\r\n //Filtros\r\n listaMunicipioFiltro: [],\r\n municipioFiltro: [],\r\n listaDriveFiltro: [],\r\n driveFiltro: [],\r\n tipoPagoFiltro: null,\r\n tipoEstatusFiltro: null,\r\n fecha: null,\r\n //Etc\r\n isLoading: true\r\n })\r\n\r\n useEffect(() => {\r\n window.scrollTo(0, 0);\r\n let listaMunicipioFiltroAux = []\r\n let listaDriveFiltroAux = []\r\n\r\n PagosBancosAPI.GetSucursales()\r\n .then(res => {\r\n listaMunicipioFiltroAux = res.data.filter((value, index, array) =>\r\n array.findIndex(value2 => (value2.idMunicipio === value.idMunicipio)) === index)\r\n listaDriveFiltroAux = res.data.filter((value, index, array) =>\r\n array.findIndex(value2 => (value2.idCaffenio === value.idCaffenio)) === index)\r\n return PagosBancosAPI.GetPagosNetPay()\r\n })\r\n .then(res => {\r\n setState({\r\n ...state,\r\n listaPagosNetPay: res.data,\r\n paginadoPagosNetPay: res.data,\r\n listaMunicipioFiltro: listaMunicipioFiltroAux,\r\n listaDriveFiltro: listaDriveFiltroAux,\r\n isLoading: false\r\n })\r\n })\r\n .catch(err => {\r\n setState({ ...state, isLoading: false })\r\n if (err.response) {\r\n toast.error(err.response.data.Message)\r\n } else {\r\n toast.error(ErrorMessages.SinConexion)\r\n }\r\n })\r\n }, [])\r\n\r\n const limpiarFiltros = () => {\r\n let stateAux = { ...state }\r\n stateAux.municipioFiltro = []\r\n stateAux.driveFiltro = []\r\n stateAux.fecha = null\r\n stateAux.tipoPagoFiltro = null\r\n stateAux.tipoEstatusFiltro = null\r\n PagosBancosAPI.GetPagosNetPay()\r\n .then(res => {\r\n stateAux.listaPagosNetPay = res.data\r\n stateAux.paginadoPagosNetPay = res.data\r\n setState(stateAux)\r\n })\r\n }\r\n\r\n const handleFiltros = () => {\r\n if(state.fecha === null || state.fecha === undefined){\r\n toast.error('Debe seleccionar una fecha')\r\n return\r\n }\r\n\r\n let fechaConvertida = null\r\n let listaMunicipios = []\r\n let listaDrives = []\r\n let tipoPago = null\r\n let tipoEstatus = null\r\n\r\n if (state.fecha !== null && state.fecha !== undefined) {\r\n fechaConvertida = state.fecha.toISOString()\r\n }\r\n if (state.municipioFiltro.length !== 0) {\r\n listaMunicipios = state.municipioFiltro.map(x => x.idMunicipio)\r\n }\r\n if (state.driveFiltro.length !== 0) {\r\n listaDrives = state.driveFiltro.map(x => x.idCaffenio)\r\n }\r\n if(state.tipoPagoFiltro != null){\r\n tipoPago = state.tipoPagoFiltro.idTipoPago\r\n }\r\n if(state.tipoEstatusFiltro != null){\r\n tipoEstatus = state.tipoEstatusFiltro.idEstatus\r\n }\r\n\r\n let filtro = {\r\n fecha: fechaConvertida,\r\n listaMunicipios: listaMunicipios,\r\n listaDrives: listaDrives,\r\n tipoPago: tipoPago,\r\n tipoEstatus: tipoEstatus\r\n }\r\n\r\n setState({ ...state, isLoading: true })\r\n PagosBancosAPI.GetFilterPagoNetPay(filtro)\r\n .then(res => {\r\n setState({\r\n ...state,\r\n listaPagosNetPay: res.data,\r\n paginadoPagosNetPay: res.data,\r\n isLoading: false\r\n })\r\n })\r\n .catch(err => {\r\n toast.error('Error al consultar los pagos filtrados')\r\n setState({ ...state, isLoading: false })\r\n })\r\n }\r\n\r\n const reintentarPago = (pago) => {\r\n if (pago.MontoTotal === 0) {\r\n toast.error('No es posible mandar un pago con monto en ceros')\r\n return\r\n }\r\n setState({ ...state, isLoading: true })\r\n let paginadoPagosNetPayAux = [...state.paginadoPagosNetPay]\r\n PagosBancosAPI.ReintentarFolioPago(pago)\r\n .then(res => {\r\n if (res.data !== null) {\r\n pago.Folio = res.data\r\n paginadoPagosNetPayAux[paginadoPagosNetPayAux.findIndex(x =>\r\n x.IdPagoNetPayGP === pago.IdPagoNetPayGP)] = pago\r\n toast.success('Folio generado y asignado correctamente')\r\n } else {\r\n toast.error('Error al generar folio del pago')\r\n }\r\n setState({\r\n ...state,\r\n paginadoPagosNetPay: paginadoPagosNetPayAux,\r\n isLoading: false\r\n })\r\n })\r\n .catch(err => {\r\n if (err.response) {\r\n toast.error(err.response.data.Message)\r\n } else {\r\n toast.error('Error al generar folio del pago')\r\n }\r\n setState({ ...state, isLoading: false })\r\n })\r\n }\r\n\r\n const conversionTipoPago = (tipoPago) => {\r\n switch (tipoPago) {\r\n case 1:\r\n return \"Pago\"\r\n case 2:\r\n return \"Comisión\"\r\n default:\r\n return \"N/A\"\r\n }\r\n }\r\n\r\n return (\r\n
    \r\n

    Pagos de Bancos

    \r\n\r\n
    \r\n
    \r\n
    \r\n
    \r\n\r\n
    \r\n \r\n
    \r\n \"No hay opciones\"}\r\n onChange={value => setState({ ...state, municipioFiltro: value })}\r\n options={state.listaMunicipioFiltro}\r\n getOptionLabel={(municipio) => municipio.Municipio}\r\n getOptionValue={(municipio) => municipio.idMunicipio}\r\n />\r\n
    \r\n
    \r\n\r\n
    \r\n \r\n
    \r\n \"No hay opciones\"}\r\n onChange={value => setState({ ...state, driveFiltro: value })}\r\n options={state.listaDriveFiltro}\r\n getOptionLabel={(drive) => drive.Drive}\r\n getOptionValue={(drive) => drive.idCaffenio}\r\n />\r\n
    \r\n
    \r\n\r\n
    \r\n \r\n \r\n setState({ ...state, fecha: fecha })}\r\n dateFormat=\"dd/MM/yyyy\"\r\n className=\"input\"\r\n todayButton=\"Hoy\"\r\n />\r\n \r\n
    \r\n\r\n
    \r\n \r\n \"No hay opciones\"}\r\n onChange={value => setState({ ...state, tipoPagoFiltro: value })}\r\n options={listaTipoPago}\r\n getOptionLabel={(tipoPago) => tipoPago.nombre}\r\n getOptionValue={(tipoPago) => tipoPago.idTipoPago}\r\n />\r\n
    \r\n\r\n
    \r\n \r\n \"No hay opciones\"}\r\n onChange={value => setState({ ...state, tipoEstatusFiltro: value })}\r\n options={listaEstatusPago}\r\n getOptionLabel={(estatus) => estatus.nombre}\r\n getOptionValue={(estatus) => estatus.idEstatus}\r\n />\r\n
    \r\n\r\n
    \r\n\r\n
    \r\n \r\n \r\n \r\n \r\n Limpiar filtros\r\n \r\n \r\n \r\n \r\n \r\n Buscar\r\n \r\n\r\n {state.listaPagosNetPay.length > 0 &&\r\n
    \r\n \r\n \r\n \r\n \r\n Exportar a EXCEL\r\n \r\n }\r\n >\r\n \r\n pago.NumTerminal} />\r\n pago.NombreCaffenio} />\r\n pago.MontoTotal} />\r\n format(Date.parse(pago.FechaRegistro), \"dd/MM/yyyy\")} />\r\n conversionTipoPago(pago.TipoPago)} />\r\n pago.Folio || pago.MensajeError} />\r\n pago.Batch} />\r\n \r\n \r\n
    \r\n }\r\n
    \r\n\r\n
    \r\n\r\n
    \r\n
    \r\n
    \r\n\r\n
    \r\n
    \r\n
    \r\n {state.listaPagosNetPay.length !== 0 ?\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n {\r\n state.paginadoPagosNetPay.map(pago =>\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n )\r\n }\r\n \r\n
    AfiliaciónSucursalMontoFechaTipoFolio
    {pago.NumTerminal}{pago.NombreCaffenio}{formatoPrecio.format(pago.MontoTotal)}{format(Date.parse(pago.FechaRegistro), \"dd/MM/yyyy\")}{conversionTipoPago(pago.TipoPago)}\r\n {pago.Folio ?\r\n pago.Folio\r\n :\r\n pago.MontoTotal !== 0 ?\r\n reintentarPago(pago)}\r\n style={{ marginRight: \"5px\" }}>\r\n \r\n \r\n \r\n \r\n :\r\n <>\r\n }\r\n
    : \r\n }\r\n
    \r\n setState({ ...state, paginadoPagosNetPay: listaPagosNetPay })}\r\n />\r\n
    \r\n
    \r\n\r\n\r\n \r\n
    \r\n )\r\n}","import { apiUrl } from '../constants';\r\nimport axios from 'axios';\r\n\r\nvar request = axios.create({\r\n baseURL: apiUrl,\r\n headers: { 'Authorization': 'Bearer ' + localStorage.getItem('token'), 'Content-Type': 'application/json' }\r\n})\r\n\r\nexport default class AdministrarEmpleadosAPI {\r\n\r\n static GetListaEmpleados = () => {\r\n return request.get(`Empleados/GetListaEmpleados/`);\r\n }\r\n\r\n static GetEmpleadosPorTipo = (idTipoEmpleado) => {\r\n return request.get(`Empleados/GetEmpleadosPorTipo/${idTipoEmpleado}`);\r\n }\r\n\r\n static GetSupervisoresPorCoord = (idCoordinador) => {\r\n return request.get(`Empleados/GetSupervisoresPorCoord/${idCoordinador}`);\r\n }\r\n\r\n static DeleteEmpleado = (empleado) => {\r\n return request.delete(`Empleados/`, {data: empleado})\r\n }\r\n\r\n static PostSupervisorCoordinador = (coordinadorSupervisores) => {\r\n return request.post(`Empleados/SupervisorCoordinador/`, coordinadorSupervisores);\r\n }\r\n\r\n static DeleteCoordinadorSupervisor = (supervisorCoordinador) => {\r\n return request.delete(`Empleados/RelSupervisorCoordinador`, {data: supervisorCoordinador})\r\n }\r\n\r\n static GetGeneros = () => {\r\n return request.get(`Segmentation/Filter/Gender`);\r\n }\r\n\r\n static GetSegmentaciones = () => {\r\n return request.get(`GetSegmentsEmpleados/`);\r\n }\r\n\r\n static GetTiposEmpleado = () => {\r\n return request.get(`Empleados/GetTiposEmpleado/`);\r\n }\r\n\r\n static PutEmpleado = (empleado) => {\r\n return request.put(`Empleados/`, empleado);\r\n } \r\n\r\n static PostEmpleado = (empleado) => {\r\n return request.post(`Empleados/`, empleado);\r\n }\r\n\r\n static GetSupervisoresDrive = () => {\r\n return request.get(`Empleados/GetSupervisoresDrive`);\r\n }\r\n\r\n static GetSupervisoresDrivePorId = (idEmpleado) => {\r\n return request.get(`Empleados/GetSupervisoresDrivePorId/${idEmpleado}`);\r\n }\r\n\r\n static GetSupervisoresDisponibles = () => {\r\n return request.get(`Empleados/GetSupervisoresDisponibles`);\r\n }\r\n\r\n}","import React, { useEffect, useState } from \"react\";\r\n\r\nimport Modal from \"../util/modal/Modal\";\r\nimport Loader from \"../util/loading/Loading\";\r\nimport { toast } from \"react-toastify\";\r\n\r\nimport AdministrarEmpleadosAPI from \"../../services/AdministrarEmpleados\";\r\nimport NoItems from \"../util/noitems/NoItems\";\r\nimport Select from 'react-select';\r\n\r\n// Tipos de empleado existentes\r\nconst COORDINADOR = 1\r\nconst SUPERVISOR = 2\r\n\r\nexport const ModalListaSupervisors = ({ coordinadorSeleccionado, onClose }) => {\r\n\r\n const [state, setState] = useState({\r\n coordinador: coordinadorSeleccionado,\r\n supervisoresAsignados: [],\r\n listaSupervisores: [],\r\n supervisoresSelected: [],\r\n isLoading: true,\r\n });\r\n\r\n useEffect(() => {\r\n\r\n let auxSupervisoresAsignados = []\r\n let auxlistaSupervisores = []\r\n\r\n AdministrarEmpleadosAPI.GetSupervisoresPorCoord(coordinadorSeleccionado.idEmpleado)\r\n .then(res => {\r\n auxSupervisoresAsignados = res.data\r\n return AdministrarEmpleadosAPI.GetSupervisoresDisponibles()\r\n })\r\n .then(res => {\r\n auxlistaSupervisores = res.data\r\n setState({\r\n ...state,\r\n supervisoresAsignados: auxSupervisoresAsignados,\r\n listaSupervisores: auxlistaSupervisores,\r\n isLoading: false\r\n })\r\n })\r\n }, []);\r\n\r\n const handleGuardarSupervisores = () => {\r\n if (state.supervisoresSelected.length === 0) {\r\n toast.error(\"Debe seleccionar por lo menos un supervisor\")\r\n } else {\r\n setState({ ...state, isLoading: true })\r\n let stateAux = { ...state }\r\n let coordinadorSupervisores = []\r\n state.supervisoresSelected.forEach(element => {\r\n coordinadorSupervisores.push({\r\n idEmpleadoCoord: state.coordinador.idEmpleado,\r\n idEmpleadoSup: element.idEmpleado\r\n })\r\n });\r\n AdministrarEmpleadosAPI.PostSupervisorCoordinador(coordinadorSupervisores)\r\n .then(res => {\r\n return AdministrarEmpleadosAPI.GetSupervisoresPorCoord(coordinadorSeleccionado.idEmpleado)\r\n }).then(res => {\r\n stateAux.isLoading = false\r\n stateAux.supervisoresAsignados = res.data\r\n stateAux.supervisoresSelected = []\r\n stateAux.listaSupervisores = stateAux.listaSupervisores.filter(sup =>\r\n res.data.every(supAux => supAux.idEmpleado !== sup.idEmpleado))\r\n setState(stateAux)\r\n toast.success(\"Supervisores asignados correctamente\")\r\n })\r\n }\r\n }\r\n\r\n const handleEliminarRelSupervisor = (supervisor) => {\r\n setState({ ...state, isLoading: true })\r\n let stateAux = { ...state }\r\n stateAux.supervisoresAsignados.splice(stateAux.supervisoresAsignados\r\n .findIndex(e => e.idEmpleado === supervisor.idEmpleado), 1)\r\n stateAux.isLoading = false\r\n stateAux.listaSupervisores = [...stateAux.listaSupervisores, supervisor]\r\n let supervisorCoordinador = {\r\n idEmpleadoCoord: state.coordinador.idEmpleado,\r\n idEmpleadoSup: supervisor.idEmpleado\r\n }\r\n AdministrarEmpleadosAPI.DeleteCoordinadorSupervisor(supervisorCoordinador)\r\n .then(res => {\r\n setState(stateAux)\r\n toast.success(\"Supervisor desvinculado del coordinador correctamente\")\r\n })\r\n }\r\n\r\n const onChangeSupervisor = (supervisores) => {\r\n setState({ ...state, supervisoresSelected: supervisores })\r\n }\r\n\r\n return (\r\n onClose()}\r\n >\r\n {state.isLoading && (\r\n \r\n )}\r\n\r\n
    \r\n \r\n
    \r\n {/* Multi Select para seleccionar cuales supervisores se asignaran al coordinador */}\r\n
    \r\n
    \r\n \"No hay supervisores disponibles\"}\r\n options={state.listaSupervisores}\r\n getOptionLabel={(supervisor) => supervisor.NombreCompleto}\r\n getOptionValue={(supervisor) => supervisor.idEmpleado}\r\n onChange={(item) => onChangeSupervisor(item)}\r\n />\r\n
    \r\n
    \r\n \r\n
    \r\n
    \r\n
    \r\n\r\n {/* Lista de supervisores que tiene asignado el coordinador */}\r\n
    \r\n \r\n
    \r\n
    \r\n
    \r\n {state.supervisoresAsignados.length !== 0\r\n ?\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n {\r\n state.supervisoresAsignados.map(supervisor =>\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n )\r\n }\r\n \r\n
    NombreDrivesMunicipioEstadoAcciones
    {supervisor.NombreCompleto}\r\n drive.Drive}\r\n getOptionValue={(drive) => drive.idCaffenio}\r\n />\r\n \r\n {\r\n supervisor.listaDrives.filter((value, index, array) =>\r\n array.findIndex(value2 => (value2.idMunicipio === value.idMunicipio)) === index)\r\n .map((value, index, array) => {\r\n if (array.length - 1 !== index) {\r\n return `${value.Municipio}, `\r\n } else {\r\n return value.Municipio\r\n }\r\n })\r\n }\r\n \r\n {\r\n supervisor.listaDrives.filter((value, index, array) =>\r\n array.findIndex(value2 => (value2.idEstado === value.idEstado)) === index)\r\n .map((value, index, array) => {\r\n if (array.length - 1 !== index) {\r\n return `${value.Estado}, `\r\n } else {\r\n return value.Estado\r\n }\r\n })\r\n }\r\n \r\n {\r\n \r\n }\r\n
    \r\n : }\r\n
    \r\n
    \r\n \r\n );\r\n};\r\n","import React, { useState, useEffect } from 'react'\r\nimport Modal from '../util/modal/Modal'\r\nimport { Formik } from 'formik';\r\nimport * as Yup from 'yup';\r\nimport Select from 'react-select';\r\nimport Field from '../util/field/Field';\r\nimport AdministrarEmpleadosAPI from '../../services/AdministrarEmpleados';\r\nimport ExpresionesRegulares from '../../util/expresiones-regulares';\r\nimport ErrorMessages from '../../util/validation-error-messages';\r\nimport CaffenioDriveAPI from '../../services/caffenioDrive';\r\nimport { toast } from 'react-toastify';\r\n\r\n// Tipos de empleado existentes\r\nconst COORDINADOR = 1\r\nconst SUPERVISOR = 2\r\n\r\nexport const EditCoordinadoresSupervisores = ({ empleadoSeleccionado, onClose,\r\n handleOpenLoading, handleCloseLoading, handleActualizarEmpleado }) => {\r\n\r\n const [state, setState] = useState({\r\n empleado: { ...empleadoSeleccionado, drivesAsignados: [] },\r\n listaGeneros: [],\r\n listaSegmentos: [],\r\n listaTiposEmpleado: [],\r\n listaDrives: [],\r\n listaDrivesAnterior: [],\r\n listaDrivesFiltrados: []\r\n });\r\n\r\n useEffect(() => {\r\n handleOpenLoading()\r\n let stateAux = { ...state }\r\n let listaGenerosAux = []\r\n let listaSegmentosAux = []\r\n let listaTiposEmpleadoAux = []\r\n let listaDrivesAux = []\r\n let drivesAsignadosAux = []\r\n AdministrarEmpleadosAPI.GetGeneros()\r\n .then(res => {\r\n listaGenerosAux = res.data\r\n listaGenerosAux.forEach(genero => {\r\n if (genero.IdGender === stateAux.empleado.idSexo) {\r\n stateAux.empleado.idSexo = genero\r\n }\r\n });\r\n return AdministrarEmpleadosAPI.GetSegmentaciones()\r\n })\r\n .then(res => {\r\n listaSegmentosAux = res.data\r\n listaSegmentosAux.forEach(segmento => {\r\n if (segmento.SegmentId === state.empleado.idSegmento) {\r\n stateAux.empleado.idSegmento = segmento\r\n }\r\n });\r\n return AdministrarEmpleadosAPI.GetTiposEmpleado()\r\n })\r\n .then(res => {\r\n listaTiposEmpleadoAux = res.data\r\n listaTiposEmpleadoAux.forEach(tipo => {\r\n if (tipo.idTipoEmpleado === state.empleado.idTipoEmpleado) {\r\n stateAux.empleado.idTipoEmpleado = tipo\r\n }\r\n })\r\n return CaffenioDriveAPI.getCaffenios()\r\n })\r\n .then(res => {\r\n listaDrivesAux = res.data.filter(x => x.Active === true)\r\n return AdministrarEmpleadosAPI.GetSupervisoresDrivePorId(stateAux.empleado.idEmpleado)\r\n })\r\n .then(res => {\r\n drivesAsignadosAux = res.data\r\n for (let i = 0; i < drivesAsignadosAux.length; i++) {\r\n listaDrivesAux.forEach(drive => {\r\n if (drivesAsignadosAux[i].idCaffenio === drive.idCaffenio) {\r\n drivesAsignadosAux[i] = drive\r\n }\r\n });\r\n }\r\n stateAux.listaGeneros = listaGenerosAux\r\n stateAux.listaSegmentos = listaSegmentosAux\r\n stateAux.listaTiposEmpleado = listaTiposEmpleadoAux\r\n stateAux.listaDrivesAnterior = drivesAsignadosAux\r\n stateAux.listaDrives = listaDrivesAux\r\n stateAux.listaDrivesFiltrados = listaDrivesAux.filter(x => x.idSegmento === stateAux.empleado.idSegmento.SegmentId)\r\n stateAux.empleado.drivesAsignados = drivesAsignadosAux\r\n setState(stateAux)\r\n handleCloseLoading()\r\n })\r\n }, [])\r\n\r\n const handleEditEmpleado = (empleado) => {\r\n if (state.listaDrivesAnterior === empleado.drivesAsignados) {\r\n empleado.drivesAsignados = []\r\n }\r\n empleado.idSegmento = empleado.idSegmento.SegmentId\r\n empleado.idSexo = empleado.idSexo.IdGender\r\n empleado.idTipoEmpleado = empleado.idTipoEmpleado.idTipoEmpleado\r\n AdministrarEmpleadosAPI.PutEmpleado(empleado)\r\n .then(x => {\r\n handleActualizarEmpleado(empleado)\r\n toast.success(\"Empleado editado correctamente\")\r\n onClose()\r\n })\r\n }\r\n\r\n const VALIDATION_SCHEMA = Yup.object({\r\n NumEmpleado: Yup.string()\r\n .trim()\r\n .matches(ExpresionesRegulares.AlfanumericoSinEspeciales, { message: ErrorMessages.AlfanumericoSinEspecialesError })\r\n .min(1, \"Número de empleado debe tener 1 caracteres.\")\r\n .max(6, \"Ha excedido el límite de 6 caracteres.\")\r\n .required(\"Campo número de empleado es requerido.\"),\r\n Nombre: Yup.string()\r\n .trim()\r\n .matches(ExpresionesRegulares.AlfanumericoSinEspeciales, { message: ErrorMessages.AlfanumericoSinEspecialesError })\r\n .min(3, \"Nombre debe tener más de 2 caracteres.\")\r\n .max(100, \"Ha excedido el límite de 100 caracteres.\")\r\n .required(\"Campo nombre es requerido.\"),\r\n ApellidoP: Yup.string()\r\n .trim()\r\n .matches(ExpresionesRegulares.AlfanumericoSinEspeciales, { message: ErrorMessages.AlfanumericoSinEspecialesError })\r\n .min(3, \"Nombre Corto debe tener más de 2 caracteres.\")\r\n .max(50, \"Ha excedido el límite de 50 caracteres.\")\r\n .required(\"Campo apellido paterno es requerido.\"),\r\n ApellidoM: Yup.string()\r\n .trim()\r\n .matches(ExpresionesRegulares.AlfanumericoSinEspeciales, { message: ErrorMessages.AlfanumericoSinEspecialesError })\r\n .min(3, \"Nombre Corto debe tener más de 2 caracteres.\")\r\n .max(50, \"Ha excedido el límite de 50 caracteres.\")\r\n .required(\"Campo apellido materno es requerido.\"),\r\n CorreoElectronico: Yup.string()\r\n .trim()\r\n .email(\"El correo electrónico no cumple con el formato correcto\")\r\n .max(60, \"Ha excedido el límite de 60 caracteres.\")\r\n .required(\"Campo correo electrónico es requerido.\")\r\n .nullable(),\r\n idSexo: Yup.string().required(\"Campo género es requerido.\").nullable(),\r\n idSegmento: Yup.string().required(\"Campo segmento es requerido.\").nullable(),\r\n idTipoEmpleado: Yup.string().required(\"Campo tipo empleado es requerido.\").nullable(),\r\n });\r\n\r\n return (\r\n onClose()}\r\n >\r\n {\r\n if (values.idTipoEmpleado.idTipoEmpleado === SUPERVISOR\r\n && values.drivesAsignados.length === 0) {\r\n toast.error(\"Debe asignar por lo menos un drive\")\r\n } else {\r\n handleEditEmpleado(values)\r\n }\r\n }}\r\n >\r\n {({ values, touched, errors, handleChange, handleSubmit, setFieldValue }) => (\r\n
    \r\n

    Información del empleado

    \r\n
    \r\n
    \r\n \r\n \r\n \r\n\r\n
    \r\n\r\n \r\n \r\n \r\n\r\n
    \r\n\r\n \r\n \r\n \r\n\r\n
    \r\n\r\n \r\n \r\n \r\n\r\n
    \r\n\r\n \r\n \r\n \r\n
    \r\n\r\n
    \r\n\r\n \r\n
    \r\n \"No hay opciones\"}\r\n onChange={val => {\r\n setFieldValue(\"idSexo\", val)\r\n }}\r\n options={state.listaGeneros}\r\n getOptionLabel={(genero) => genero.Name}\r\n getOptionValue={(genero) => genero.IdGender}\r\n />\r\n
    \r\n \r\n\r\n
    \r\n\r\n \r\n
    \r\n \"No hay opciones\"}\r\n options={state.listaTiposEmpleado}\r\n getOptionLabel={(tipoEmpleado) => tipoEmpleado.Descripcion}\r\n getOptionValue={(tipoEmpleado) => tipoEmpleado.idTipoEmpleado}\r\n />\r\n
    \r\n \r\n\r\n {values.idTipoEmpleado.idTipoEmpleado &&\r\n
    \r\n
    \r\n

    Configuración de empleado

    \r\n
    \r\n \r\n
    \r\n \"No hay opciones\"}\r\n onChange={val => {\r\n setFieldValue(\"idSegmento\", val)\r\n setFieldValue(\"drivesAsignados\", [])\r\n let filtrarDrives = state.listaDrives\r\n filtrarDrives = filtrarDrives.filter(x => x.idSegmento === val.SegmentId)\r\n setState({ ...state, listaDrivesFiltrados: filtrarDrives })\r\n }}\r\n options={state.listaSegmentos}\r\n getOptionLabel={(segmento) => {\r\n switch (segmento.Name) {\r\n case \"Andatti drive\":\r\n return \"Andatti\"\r\n case \"Drive\":\r\n return \"Caffenio\"\r\n case \"momento espresso\":\r\n return \"Momento Espresso\"\r\n default:\r\n return segmento.Name\r\n }\r\n }}\r\n getOptionValue={(objSegment) => objSegment.SegmentId}\r\n />\r\n
    \r\n \r\n
    \r\n }\r\n\r\n {values.idTipoEmpleado.idTipoEmpleado === SUPERVISOR &&\r\n
    \r\n
    \r\n \r\n
    \r\n \"No hay opciones\"}\r\n options={state.listaDrivesFiltrados}\r\n onChange={val => {\r\n setFieldValue(\"drivesAsignados\", val)\r\n }}\r\n getOptionLabel={(drive) => drive.Name}\r\n getOptionValue={(drive) => drive.idCaffenio}\r\n />\r\n
    \r\n \r\n
    \r\n }\r\n\r\n
    \r\n
    \r\n \r\n
    \r\n
    \r\n \r\n )}\r\n \r\n \r\n )\r\n}\r\n","import React, { useEffect, useState } from 'react';\r\n\r\nimport Select from 'react-select';\r\nimport Pagination from '../util/pagination/Pagination';\r\nimport NoItems from '../util/noitems/NoItems';\r\nimport Loading from '../util/loading/Loading';\r\n\r\nimport AdministrarEmpleadosAPI from '../../services/AdministrarEmpleados';\r\nimport { ModalListaSupervisors } from './ModalListaSupervisores';\r\nimport { Link } from 'react-router-dom';\r\nimport AcceptModal from '../util/acceptModal/AcceptModal';\r\nimport { toast } from 'react-toastify';\r\nimport SearchForm from '../util/searchform/SearchForm';\r\nimport { EditCoordinadoresSupervisores } from './EditCoordinadoresSupervisores';\r\nimport Field from '../util/field/Field';\r\n\r\n// Tipos de empleado existentes\r\nconst COORDINADOR = 1\r\nconst SUPERVISOR = 2\r\n\r\n/**\r\n * Modulo para administrar los coordinadores y supervisores\r\n */\r\nexport const CoordinadoresSupervisores = () => {\r\n\r\n const [state, setState] = useState({\r\n /* Uso general */\r\n paginadoEmpleados: [],\r\n empleadoSeleccionado: {},\r\n isLoading: false,\r\n /* Modal lista supervisores */\r\n modalListaSupervisores: false,\r\n /* Modal Eliminar */\r\n modalEliminar: false,\r\n listaSupervisoresReasignar: [],\r\n listaCoordinadoresReasignar: [],\r\n coordinadorReasignar: null,\r\n /* Modal Editar */\r\n modalEditar: false,\r\n //Listas de la bd\r\n listaEmpleadosFiltrados: [],\r\n listaEmpleados: [],\r\n //Filtros\r\n nombreFiltro: \"\",\r\n listaTipoEmpleadoFiltro: [],\r\n tipoEmpleadoFiltro: null,\r\n listaSegmentacionFiltro: [],\r\n segmentacionFiltro: null,\r\n listaEstadoFiltro: [],\r\n estadoFiltro: null,\r\n listaMunicipioFiltro: [],\r\n municipioFiltro: null,\r\n listaDriveFiltro: [],\r\n listaDriveFiltroFiltrados: [],\r\n driveFiltro: null,\r\n listaTodosDrive: [],\r\n })\r\n\r\n useEffect(() => {\r\n setState({ ...state, isLoading: true })\r\n window.scrollTo(0, 0)\r\n let stateAux = { ...state }\r\n AdministrarEmpleadosAPI.GetListaEmpleados().then(res => {\r\n stateAux.listaEmpleadosFiltrados = res.data\r\n stateAux.listaEmpleados = res.data\r\n return AdministrarEmpleadosAPI.GetSegmentaciones()\r\n })\r\n .then(res => {\r\n stateAux.listaSegmentacionFiltro = res.data\r\n return AdministrarEmpleadosAPI.GetTiposEmpleado()\r\n })\r\n .then(res => {\r\n stateAux.listaTipoEmpleadoFiltro = res.data\r\n return AdministrarEmpleadosAPI.GetSupervisoresDrive()\r\n })\r\n .then(res => {\r\n stateAux.listaTodosDrive = res.data\r\n stateAux.listaEstadoFiltro = res.data.filter((value, index, array) =>\r\n array.findIndex(value2 => (value2.idEstado === value.idEstado)) === index)\r\n stateAux.listaMunicipioFiltro = res.data.filter((value, index, array) =>\r\n array.findIndex(value2 => (value2.idMunicipio === value.idMunicipio)) === index)\r\n stateAux.listaDriveFiltro = res.data.filter((value, index, array) =>\r\n array.findIndex(value2 => (value2.idCaffenio === value.idCaffenio)) === index)\r\n stateAux.listaDriveFiltroFiltrados = stateAux.listaDriveFiltro\r\n stateAux.isLoading = false\r\n setState(stateAux)\r\n })\r\n .catch(res => {\r\n setState({ ...state, isLoading: false })\r\n })\r\n }, [])\r\n\r\n const eliminarEmpleado = (empleado) => {\r\n if (state.listaSupervisoresReasignar.length === 0) {\r\n AdministrarEmpleadosAPI.DeleteEmpleado(empleado)\r\n .then(res => {\r\n setState({ ...state, isLoading: true })\r\n let stateAux = { ...state }\r\n stateAux.listaEmpleadosFiltrados.splice(stateAux.listaEmpleadosFiltrados\r\n .findIndex(e => e.idEmpleado === empleado.idEmpleado), 1)\r\n stateAux.paginadoEmpleados.splice(stateAux.paginadoEmpleados\r\n .findIndex(e => e.idEmpleado === empleado.idEmpleado), 1)\r\n stateAux.listaEmpleados.splice(stateAux.listaEmpleados\r\n .findIndex(e => e.idEmpleado === empleado.idEmpleado), 1)\r\n stateAux.modalEliminar = false\r\n stateAux.isLoading = false\r\n\r\n setState(stateAux)\r\n toast.success(\"Empleado eliminado correctamente\")\r\n })\r\n } else {\r\n if (state.coordinadorReasignar != null) {\r\n setState({ ...state, isLoading: true })\r\n let stateAux = { ...state }\r\n\r\n stateAux.listaEmpleadosFiltrados.splice(stateAux.listaEmpleadosFiltrados\r\n .findIndex(e => e.idEmpleado === empleado.idEmpleado), 1)\r\n stateAux.paginadoEmpleados.splice(stateAux.paginadoEmpleados\r\n .findIndex(e => e.idEmpleado === empleado.idEmpleado), 1)\r\n stateAux.listaEmpleados.splice(stateAux.listaEmpleados\r\n .findIndex(e => e.idEmpleado === empleado.idEmpleado), 1)\r\n\r\n stateAux.modalEliminar = false\r\n stateAux.isLoading = false\r\n\r\n AdministrarEmpleadosAPI.GetSupervisoresPorCoord(state.coordinadorReasignar.idEmpleado)\r\n .then(res => {\r\n let listaSupervisoresValidar = res.data\r\n let coordinadorSupervisores = []\r\n\r\n stateAux.listaSupervisoresReasignar.forEach(e => {\r\n if (!listaSupervisoresValidar.some(x => x.idEmpleado === e.idEmpleado)) {\r\n coordinadorSupervisores.push({\r\n idEmpleadoCoord: stateAux.coordinadorReasignar.idEmpleado,\r\n idEmpleadoSup: e.idEmpleado\r\n })\r\n }\r\n })\r\n return AdministrarEmpleadosAPI.PostSupervisorCoordinador(coordinadorSupervisores)\r\n }).then(res => {\r\n return AdministrarEmpleadosAPI.DeleteEmpleado(empleado)\r\n }).then(res => {\r\n setState(stateAux)\r\n toast.success(\"Empleado eliminado correctamente\")\r\n })\r\n } else {\r\n toast.error('Debe seleccionar un coordinador')\r\n }\r\n }\r\n }\r\n\r\n const handleEliminarModal = (empleado) => {\r\n if (empleado.idTipoEmpleado === COORDINADOR) {\r\n AdministrarEmpleadosAPI.GetSupervisoresPorCoord(empleado.idEmpleado)\r\n .then(res => {\r\n setState({\r\n ...state,\r\n modalEliminar: true,\r\n empleadoSeleccionado: empleado,\r\n listaSupervisoresReasignar: res.data,\r\n listaCoordinadoresReasignar: state.listaEmpleados.filter(x => x.idTipoEmpleado === COORDINADOR\r\n && x.idEmpleado != empleado.idEmpleado)\r\n })\r\n })\r\n } else if (empleado.idTipoEmpleado === SUPERVISOR) {\r\n setState({ ...state, modalEliminar: true, empleadoSeleccionado: empleado })\r\n }\r\n }\r\n\r\n const handleEditarModal = (empleado) => {\r\n setState({ ...state, modalEditar: true, empleadoSeleccionado: empleado })\r\n }\r\n\r\n const handleActualizarEmpleado = (empleadoActualizado) => {\r\n let nuevaInformacion = { ...empleadoActualizado }\r\n nuevaInformacion.NombreCompleto = `${nuevaInformacion.Nombre} ${nuevaInformacion.ApellidoP} ${nuevaInformacion.ApellidoM}`\r\n state.paginadoEmpleados.map(emp => {\r\n if (emp.idEmpleado === empleadoActualizado.idEmpleado) {\r\n Object.assign(emp, nuevaInformacion)\r\n return emp\r\n } else {\r\n return emp\r\n }\r\n })\r\n }\r\n\r\n const limpiarFiltros = () => {\r\n let stateAux = { ...state }\r\n stateAux.nombreFiltro = \"\"\r\n stateAux.tipoEmpleadoFiltro = null\r\n stateAux.segmentacionFiltro = null\r\n stateAux.estadoFiltro = null\r\n stateAux.municipioFiltro = null\r\n stateAux.driveFiltro = null\r\n stateAux.listaEmpleadosFiltrados = stateAux.listaEmpleados\r\n stateAux.listaDriveFiltroFiltrados = stateAux.listaDriveFiltro\r\n setState(stateAux)\r\n }\r\n\r\n const handleFiltroNombre = (texto) => {\r\n setState({ ...state, nombreFiltro: texto })\r\n }\r\n\r\n const handleFiltros = () => {\r\n let listaEmpleadosAux = state.listaEmpleados\r\n /* Primero se filtra por nombre si es que se establecio */\r\n if (state.nombreFiltro.trim() !== '') {\r\n listaEmpleadosAux = state.listaEmpleados.filter(empleado => {\r\n return empleado.NombreCompleto.toLowerCase().normalize(\"NFD\").replace(/[\\u0300-\\u036f]/g, \"\").includes(state.nombreFiltro.trim().toLowerCase().normalize(\"NFD\").replace(/[\\u0300-\\u036f]/g, \"\"))\r\n || empleado.NombreCompleto.toLowerCase().normalize(\"NFD\").replace(/[\\u0300-\\u036f]/g, \"\").includes(state.nombreFiltro.trim().toLowerCase().normalize(\"NFD\").replace(/[\\u0300-\\u036f]/g, \"\"))\r\n })\r\n }\r\n /* Luego se filtra por tipo de empleado si es que se establecio */\r\n if (state.tipoEmpleadoFiltro != null && state.tipoEmpleadoFiltro.length !== 0) {\r\n listaEmpleadosAux = listaEmpleadosAux.filter(empleado =>\r\n state.tipoEmpleadoFiltro.some(tipo => empleado.idTipoEmpleado === tipo.idTipoEmpleado))\r\n }\r\n /* Luego se filtra por segmentación si es que se establecio */\r\n if (state.segmentacionFiltro != null && state.segmentacionFiltro.length !== 0) {\r\n listaEmpleadosAux = listaEmpleadosAux.filter(empleado =>\r\n state.segmentacionFiltro.some(segmento => empleado.idSegmento === segmento.SegmentId))\r\n }\r\n /* Luego se filtra por estado si es que se establecio */\r\n if (state.estadoFiltro != null && state.estadoFiltro.length !== 0) {\r\n let listaTodosAux = state.listaTodosDrive.filter(x =>\r\n state.estadoFiltro.some(estado => x.idEstado === estado.idEstado))\r\n listaEmpleadosAux = listaEmpleadosAux.filter(empleado =>\r\n listaTodosAux.some(todosAux => empleado.idEmpleado === todosAux.idEmpleado\r\n || empleado.idEmpleado === todosAux.idCoordinador))\r\n }\r\n /* Luego se filtra por municipio si es que se establecio */\r\n if (state.municipioFiltro != null && state.municipioFiltro.length !== 0) {\r\n let listaTodosAux = state.listaTodosDrive.filter(x =>\r\n state.municipioFiltro.some(municipio => x.idMunicipio === municipio.idMunicipio))\r\n listaEmpleadosAux = listaEmpleadosAux.filter(empleado =>\r\n listaTodosAux.some(todosAux => empleado.idEmpleado === todosAux.idEmpleado\r\n || empleado.idEmpleado === todosAux.idCoordinador))\r\n }\r\n /* Luego se filtra por Drive si es que se establecio */\r\n if (state.driveFiltro != null && state.driveFiltro.length !== 0) {\r\n let listaTodosAux = state.listaTodosDrive.filter(x =>\r\n state.driveFiltro.some(drive => x.idCaffenio === drive.idCaffenio))\r\n listaEmpleadosAux = listaEmpleadosAux.filter(empleado =>\r\n listaTodosAux.some(todosAux => empleado.idEmpleado === todosAux.idEmpleado\r\n || empleado.idEmpleado === todosAux.idCoordinador))\r\n }\r\n /* Se establece el filtrado con todas las opciones anteriores establecidas */\r\n setState({ ...state, listaEmpleadosFiltrados: listaEmpleadosAux })\r\n }\r\n\r\n const handleOpenLoading = () => {\r\n setState({ ...state, isLoading: true })\r\n }\r\n\r\n const handleCloseLoading = () => {\r\n setState({ ...state, isLoading: false })\r\n }\r\n\r\n const handleEmpleadoModal = (empleado) => {\r\n setState({ ...state, modalListaSupervisores: true, empleadoSeleccionado: empleado, });\r\n }\r\n\r\n return (\r\n
    \r\n

    Coordinadores y Supervisores

    \r\n {state.isLoading &&\r\n \r\n }\r\n\r\n
    \r\n
    \r\n \r\n \r\n \r\n \r\n Nuevo empleado\r\n \r\n
    \r\n
    \r\n\r\n {/* Filtros de busqueda*/}\r\n
    \r\n
    \r\n
    \r\n
    \r\n
    \r\n \r\n
    \r\n handleFiltroNombre(e.currentTarget.value)}\r\n className={`input`}\r\n placeholder={\"Ingrese nombre del empleado\"}\r\n onKeyDown={evt => {\r\n if (evt.key === \"Enter\") {\r\n handleFiltros()\r\n }\r\n }}\r\n />\r\n
    \r\n
    \r\n
    \r\n \r\n
    \r\n \"No hay opciones\"}\r\n onChange={value => setState({ ...state, tipoEmpleadoFiltro: value })}\r\n options={state.listaTipoEmpleadoFiltro}\r\n getOptionLabel={(tipoEmpleado) => tipoEmpleado.Descripcion}\r\n getOptionValue={(tipoEmpleado) => tipoEmpleado.idTipoEmpleado}\r\n />\r\n
    \r\n
    \r\n
    \r\n \r\n
    \r\n \"No hay opciones\"}\r\n onChange={value => {\r\n let filtrarDrives = state.listaDriveFiltro\r\n if (value.length !== 0) {\r\n filtrarDrives = filtrarDrives.filter(drive =>\r\n value.some(segmento => drive.idSegmento === segmento.SegmentId))\r\n }\r\n setState({ ...state, segmentacionFiltro: value, listaDriveFiltroFiltrados: filtrarDrives })\r\n }}\r\n options={state.listaSegmentacionFiltro}\r\n getOptionLabel={(segmento) => {\r\n switch (segmento.Name) {\r\n case \"Andatti drive\":\r\n return \"Andatti\"\r\n case \"Drive\":\r\n return \"Caffenio\"\r\n case \"momento espresso\":\r\n return \"Momento Espresso\"\r\n default:\r\n return segmento.Name\r\n }\r\n }}\r\n getOptionValue={(objSegment) => objSegment.SegmentId}\r\n />\r\n
    \r\n
    \r\n
    \r\n \r\n
    \r\n \"No hay opciones\"}\r\n onChange={value => setState({ ...state, estadoFiltro: value })}\r\n options={state.listaEstadoFiltro}\r\n getOptionLabel={(estado) => estado.Estado}\r\n getOptionValue={(estado) => estado.idEstado}\r\n />\r\n
    \r\n
    \r\n
    \r\n \r\n
    \r\n \"No hay opciones\"}\r\n onChange={value => setState({ ...state, municipioFiltro: value })}\r\n options={state.listaMunicipioFiltro}\r\n getOptionLabel={(municipio) => municipio.Municipio}\r\n getOptionValue={(municipio) => municipio.idMunicipio}\r\n />\r\n
    \r\n
    \r\n
    \r\n \r\n
    \r\n \"No hay opciones\"}\r\n onChange={value => setState({ ...state, driveFiltro: value })}\r\n options={state.listaDriveFiltroFiltrados}\r\n getOptionLabel={(drive) => drive.Drive}\r\n getOptionValue={(drive) => drive.idCaffenio}\r\n />\r\n
    \r\n
    \r\n\r\n
    \r\n
    \r\n
    \r\n {/* Botón limpiar filtros*/}\r\n \r\n \r\n \r\n \r\n Limpiar filtros\r\n \r\n {/* Botón para filtrar*/}\r\n \r\n \r\n \r\n \r\n Buscar\r\n \r\n
    \r\n
    \r\n\r\n\r\n
    \r\n
    \r\n
    \r\n
    \r\n\r\n {/* Lista de empleados */}\r\n
    \r\n
    \r\n {state.listaEmpleadosFiltrados.length !== 0\r\n ?\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n {/* Tabla que contiene el nombre, segmento, puesto y botones de acción de los empleados */}\r\n {\r\n state.paginadoEmpleados.map(empleado =>\r\n \r\n \r\n \r\n \r\n \r\n \r\n )\r\n }\r\n \r\n
    NombreSegmentoPuestoAcción
    {empleado.NombreCompleto}{empleado.idSegmento === 1 ? \"Caffenio\"\r\n : empleado.idSegmento === 9 ? \"Andatti\"\r\n : empleado.idSegmento === 10 ? \"Momento Espresso\"\r\n : empleado.idSegmento === 2 ? \"Kiosko\"\r\n : \"N/A\"}{empleado.Puesto}\r\n {/* Botón para editar un empleado */}\r\n \r\n {/* Botón para eliminar un empleado */}\r\n \r\n {/* Botón para consultar lista de supervisores SOLO en caso que sea un coordinador*/}\r\n {\r\n empleado.Puesto === \"Coordinador\" ?\r\n handleEmpleadoModal(empleado)}\r\n >\r\n \r\n \r\n : null\r\n }\r\n
    \r\n : \r\n }\r\n\r\n setState({ ...state, paginadoEmpleados: listaEmpleadosFiltrados })}\r\n />\r\n\r\n
    \r\n
    \r\n\r\n {/* Modal de anuncio para eliminar un empleado */}\r\n eliminarEmpleado(state.empleadoSeleccionado)}\r\n cancel={() => setState({ ...state, modalEliminar: false })}\r\n modalTitle={`¿Está seguro que desea eliminar a ${state.empleadoSeleccionado.NombreCompleto}?`}\r\n modalBody={\r\n state.empleadoSeleccionado.idTipoEmpleado === COORDINADOR &&\r\n state.listaSupervisoresReasignar.length > 0 &&\r\n
    \r\n \r\n
    \r\n \r\n
    \r\n \"No hay opciones\"}\r\n options={state.listaCoordinadoresReasignar}\r\n onChange={val => {\r\n state.coordinadorReasignar = val\r\n }}\r\n getOptionLabel={(coordinador) => coordinador.NombreCompleto}\r\n getOptionValue={(coordinador) => coordinador.idEmpleado}\r\n />\r\n
    \r\n \r\n
    \r\n \r\n
    \r\n
    \r\n
    \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n {\r\n state.listaSupervisoresReasignar.map(supervisor =>\r\n \r\n \r\n \r\n \r\n \r\n \r\n )\r\n }\r\n \r\n
    NombreDriveMunicipioEstado
    {supervisor.NombreCompleto}\r\n drive.Drive}\r\n getOptionValue={(drive) => drive.idCaffenio}\r\n />\r\n \r\n {\r\n supervisor.listaDrives.filter((value, index, array) =>\r\n array.findIndex(value2 => (value2.idMunicipio === value.idMunicipio)) === index)\r\n .map((value, index, array) => {\r\n if (array.length - 1 !== index) {\r\n return `${value.Municipio}, `\r\n } else {\r\n return value.Municipio\r\n }\r\n })\r\n }\r\n \r\n {\r\n supervisor.listaDrives.filter((value, index, array) =>\r\n array.findIndex(value2 => (value2.idEstado === value.idEstado)) === index)\r\n .map((value, index, array) => {\r\n if (array.length - 1 !== index) {\r\n return `${value.Estado}, `\r\n } else {\r\n return value.Estado\r\n }\r\n })\r\n }\r\n
    \r\n
    \r\n
    \r\n
    \r\n }\r\n />\r\n\r\n {/* Modal para mostrar la lista de supervisores de un coordinador */}\r\n {state.modalListaSupervisores &&\r\n setState({ ...state, modalListaSupervisores: false })}\r\n />\r\n }\r\n\r\n {/* Modal para editar la información de un empleado */}\r\n {state.modalEditar &&\r\n setState({ ...state, modalEditar: false })}\r\n handleOpenLoading={handleOpenLoading}\r\n handleCloseLoading={handleCloseLoading}\r\n handleActualizarEmpleado={handleActualizarEmpleado}\r\n />\r\n }\r\n
    \r\n )\r\n}","import React, { useState, useEffect } from 'react'\r\nimport { Formik } from 'formik';\r\nimport * as Yup from 'yup';\r\nimport Select from 'react-select';\r\nimport Field from '../util/field/Field';\r\nimport AdministrarEmpleadosAPI from '../../services/AdministrarEmpleados';\r\nimport ExpresionesRegulares from '../../util/expresiones-regulares';\r\nimport ErrorMessages from '../../util/validation-error-messages';\r\nimport CaffenioDriveAPI from '../../services/caffenioDrive';\r\nimport Loading from '../util/loading/Loading';\r\nimport { toast } from 'react-toastify';\r\n\r\n// Tipos de empleado existentes\r\nconst COORDINADOR = 1\r\nconst SUPERVISOR = 2\r\n\r\nexport const NewCoordinadoresSupervisores = ({ history }) => {\r\n\r\n const [state, setState] = useState({\r\n empleado: {\r\n NumEmpleado: \"\",\r\n Nombre: \"\",\r\n ApellidoP: \"\",\r\n ApellidoM: \"\",\r\n CorreoElectronico: \"\",\r\n idSexo: \"\",\r\n idTipoEmpleado: \"\",\r\n idSegmento: \"\",\r\n SupervisoresAsignados: [],\r\n DrivesAsignados: [],\r\n CoordinadorAsignado: null\r\n },\r\n listaGeneros: [],\r\n listaSegmentos: [],\r\n listaTiposEmpleado: [],\r\n listaDrives: [],\r\n listaDrivesFiltrados: [],\r\n listaCoordinadores: [],\r\n listaSupervisores: [],\r\n isLoading: false\r\n });\r\n\r\n useEffect(() => {\r\n let stateAux = { ...state }\r\n let listaGenerosAux = []\r\n let listaSegmentosAux = []\r\n let listaTiposEmpleadoAux = []\r\n let listaDrivesAux = []\r\n let listaCoordinadoresAux = []\r\n let listaSupervisoresAux = []\r\n\r\n AdministrarEmpleadosAPI.GetGeneros()\r\n .then(res => {\r\n listaGenerosAux = res.data\r\n return AdministrarEmpleadosAPI.GetSegmentaciones()\r\n })\r\n .then(res => {\r\n listaSegmentosAux = res.data\r\n return AdministrarEmpleadosAPI.GetTiposEmpleado()\r\n })\r\n .then(res => {\r\n listaTiposEmpleadoAux = res.data\r\n return AdministrarEmpleadosAPI.GetEmpleadosPorTipo(COORDINADOR)\r\n }).then(res => {\r\n listaCoordinadoresAux = res.data\r\n return CaffenioDriveAPI.getCaffenios()\r\n }).then(res => {\r\n listaDrivesAux = res.data.filter(x => x.Active === true)\r\n return AdministrarEmpleadosAPI.GetSupervisoresDisponibles()\r\n }).then(res => {\r\n listaSupervisoresAux = res.data\r\n //Guardar listas aux en el estado\r\n stateAux.listaGeneros = listaGenerosAux\r\n stateAux.listaSegmentos = listaSegmentosAux\r\n stateAux.listaTiposEmpleado = listaTiposEmpleadoAux\r\n stateAux.listaDrives = listaDrivesAux\r\n stateAux.listaDrivesFiltrados = listaDrivesAux\r\n stateAux.listaCoordinadores = listaCoordinadoresAux\r\n stateAux.listaSupervisores = listaSupervisoresAux\r\n setState(stateAux)\r\n })\r\n }, [])\r\n\r\n const VALIDATION_SCHEMA = Yup.object({\r\n NumEmpleado: Yup.string()\r\n .trim()\r\n .matches(ExpresionesRegulares.AlfanumericoSinEspeciales, { message: ErrorMessages.AlfanumericoSinEspecialesError })\r\n .min(1, \"Número de empleado debe tener 1 caracteres.\")\r\n .max(6, \"Ha excedido el límite de 6 caracteres.\")\r\n .required(\"Campo número de empleado es requerido.\"),\r\n Nombre: Yup.string()\r\n .trim()\r\n .matches(ExpresionesRegulares.AlfanumericoSinEspeciales, { message: ErrorMessages.AlfanumericoSinEspecialesError })\r\n .min(3, \"Nombre debe tener más de 2 caracteres.\")\r\n .max(100, \"Ha excedido el límite de 100 caracteres.\")\r\n .required(\"Campo nombre es requerido.\"),\r\n ApellidoP: Yup.string()\r\n .trim()\r\n .matches(ExpresionesRegulares.AlfanumericoSinEspeciales, { message: ErrorMessages.AlfanumericoSinEspecialesError })\r\n .min(3, \"Nombre Corto debe tener más de 2 caracteres.\")\r\n .max(50, \"Ha excedido el límite de 50 caracteres.\")\r\n .required(\"Campo apellido paterno es requerido.\"),\r\n ApellidoM: Yup.string()\r\n .trim()\r\n .matches(ExpresionesRegulares.AlfanumericoSinEspeciales, { message: ErrorMessages.AlfanumericoSinEspecialesError })\r\n .min(3, \"Nombre Corto debe tener más de 2 caracteres.\")\r\n .max(50, \"Ha excedido el límite de 50 caracteres.\")\r\n .required(\"Campo apellido materno es requerido.\"),\r\n CorreoElectronico: Yup.string()\r\n .trim()\r\n .email(\"El correo electrónico no cumple con el formato correcto\")\r\n .max(60, \"Ha excedido el límite de 60 caracteres.\")\r\n .required(\"Campo correo electrónico es requerido.\"),\r\n idSexo: Yup.string().required(\"Campo género es requerido.\").nullable(),\r\n idSegmento: Yup.string().required(\"Campo segmento es requerido.\").nullable(),\r\n idTipoEmpleado: Yup.string().required(\"Campo tipo empleado es requerido.\").nullable(),\r\n });\r\n\r\n return (\r\n
    \r\n\r\n {state.isLoading &&\r\n \r\n }\r\n\r\n
    \r\n
    \r\n
    \r\n \r\n { history.goBack() }}>\r\n \r\n
    {\"Nuevo empleado\"}
    \r\n
    \r\n
    \r\n
    \r\n {\r\n if (values.idTipoEmpleado.idTipoEmpleado === SUPERVISOR\r\n && values.DrivesAsignados.length <= 0) {\r\n toast.error(\"Debe asignar por lo menos un drive\")\r\n } else {\r\n setState({ ...state, isLoading: true })\r\n let clienteEnviado = { ...values }\r\n clienteEnviado.idSegmento = values.idSegmento.SegmentId\r\n clienteEnviado.idSexo = values.idSexo.IdGender\r\n clienteEnviado.idTipoEmpleado = values.idTipoEmpleado.idTipoEmpleado\r\n AdministrarEmpleadosAPI.PostEmpleado(clienteEnviado)\r\n .then(res => {\r\n toast.success(\"Empleado creado correctamente\")\r\n history.goBack()\r\n setState({ ...state, isLoading: false })\r\n }).catch(res => {\r\n toast.error(res.response.data.Message)\r\n setState({ ...state, isLoading: false })\r\n })\r\n }\r\n }}\r\n >\r\n {({ values, touched, errors, handleChange, handleSubmit, setFieldValue }) => (\r\n
    \r\n

    Información del empleado

    \r\n
    \r\n
    \r\n \r\n \r\n \r\n\r\n
    \r\n\r\n \r\n \r\n \r\n\r\n
    \r\n\r\n \r\n \r\n \r\n\r\n
    \r\n\r\n \r\n \r\n \r\n\r\n
    \r\n\r\n \r\n \r\n \r\n\r\n
    \r\n\r\n
    \r\n\r\n \r\n
    \r\n \"No hay opciones\"}\r\n onChange={val => {\r\n setFieldValue(\"idSexo\", val)\r\n }}\r\n options={state.listaGeneros}\r\n getOptionLabel={(genero) => genero.Name}\r\n getOptionValue={(genero) => genero.IdGender}\r\n />\r\n
    \r\n \r\n\r\n
    \r\n \r\n
    \r\n \"No hay opciones\"}\r\n options={state.listaTiposEmpleado}\r\n onChange={val => {\r\n setFieldValue(\"idTipoEmpleado\", val)\r\n setFieldValue(\"CoordinadorAsignado\", null)\r\n setFieldValue(\"DrivesAsignados\", [])\r\n setFieldValue(\"SupervisoresAsignados\", [])\r\n }}\r\n getOptionLabel={(tipoEmpleado) => tipoEmpleado.Descripcion}\r\n getOptionValue={(tipoEmpleado) => tipoEmpleado.idTipoEmpleado}\r\n />\r\n
    \r\n \r\n\r\n {values.idTipoEmpleado.idTipoEmpleado === SUPERVISOR &&\r\n
    \r\n
    \r\n \r\n
    \r\n \"No hay opciones\"}\r\n options={state.listaCoordinadores}\r\n onChange={val => {\r\n setFieldValue(\"CoordinadorAsignado\", val)\r\n }}\r\n getOptionLabel={(coordinador) => coordinador.NombreCompleto}\r\n getOptionValue={(coordinador) => coordinador.idEmpleado}\r\n />\r\n
    \r\n \r\n
    \r\n }\r\n\r\n {values.idTipoEmpleado.idTipoEmpleado &&\r\n
    \r\n
    \r\n

    Configuración de empleado

    \r\n
    \r\n \r\n
    \r\n \"No hay opciones\"}\r\n options={state.listaSegmentos}\r\n onChange={val => {\r\n setFieldValue(\"idSegmento\", val)\r\n setFieldValue(\"DrivesAsignados\", [])\r\n let filtrarDrives = state.listaDrives\r\n filtrarDrives = filtrarDrives.filter(x => x.idSegmento === val.SegmentId)\r\n setState({ ...state, listaDrivesFiltrados: filtrarDrives })\r\n }}\r\n getOptionLabel={(segmento) => {\r\n switch (segmento.Name) {\r\n case \"Andatti drive\":\r\n return \"Andatti\"\r\n case \"Drive\":\r\n return \"Caffenio\"\r\n case \"momento espresso\":\r\n return \"Momento Espresso\"\r\n default:\r\n return segmento.Name\r\n }\r\n }}\r\n getOptionValue={(objSegment) => objSegment.SegmentId}\r\n />\r\n
    \r\n \r\n
    \r\n }\r\n\r\n {values.idTipoEmpleado.idTipoEmpleado === SUPERVISOR &&\r\n
    \r\n\r\n
    \r\n\r\n \r\n
    \r\n \"No hay opciones\"}\r\n options={state.listaDrivesFiltrados}\r\n onChange={val => {\r\n setFieldValue(\"DrivesAsignados\", val)\r\n }}\r\n getOptionLabel={(drive) => drive.Name}\r\n getOptionValue={(drive) => drive.idCaffenio}\r\n />\r\n
    \r\n \r\n\r\n
    \r\n }\r\n\r\n {values.idTipoEmpleado.idTipoEmpleado === COORDINADOR &&\r\n
    \r\n
    \r\n\r\n \r\n
    \r\n \"No hay supervisores disponibles\"}\r\n options={state.listaSupervisores}\r\n onChange={val => {\r\n setFieldValue(\"SupervisoresAsignados\", val)\r\n }}\r\n getOptionLabel={(supervisor) => supervisor.NombreCompleto}\r\n getOptionValue={(supervisor) => supervisor.idEmpleado}\r\n />\r\n
    \r\n \r\n
    \r\n }\r\n\r\n
    \r\n
    \r\n \r\n
    \r\n
    \r\n \r\n )}\r\n \r\n
    \r\n
    \r\n
    \r\n )\r\n}\r\n","import React from 'react'\r\nimport Select from 'react-select';\r\nimport { useState, useEffect } from 'react';\r\nimport DatePicker from \"react-datepicker/dist/es\"\r\nimport NoItems from '../util/noitems/NoItems';\r\nimport MenuDriveAPI from '../../services/MenuDrive';\r\nimport { format } from 'date-fns';\r\nimport ErrorMessages from '../../util/validation-error-messages';\r\nimport { toast } from 'react-toastify';\r\nimport Loading from '../util/loading/Loading';\r\nimport ReactExport from \"react-export-excel\";\r\nimport WarehouseAPI from '../../services/Warehouse';\r\nimport EmpresasAPI from '../../services/CaffenioEmpresas/Empresas';\r\nimport lodash from 'lodash';\r\nimport Pagination from '../util/pagination/Pagination';\r\n\r\n// Creamos instancias para el package export excel.\r\n// Variable que indica el archivo de excel que se crea.\r\nconst ExcelFile = ReactExport.ExcelFile;\r\n// Variable que indica una hoja de excel.\r\nconst ExcelSheet = ReactExport.ExcelFile.ExcelSheet;\r\n// Variable que indica una columna de excel.\r\nconst ExcelColumn = ReactExport.ExcelFile.ExcelColumn;\r\n\r\nexport const MovimientosMenu = () => {\r\n\r\n const fechaActualizacionCampos = [\r\n {\r\n idFechaActualizacion: 1,\r\n descripcion: 'Aplica',\r\n valor: true\r\n },\r\n {\r\n idFechaActualizacion: 2,\r\n descripcion: 'No aplica',\r\n valor: false\r\n }\r\n ]\r\n\r\n const [state, setState] = useState({\r\n listaMovimientosMenu: [],\r\n paginadoMovimientosMenu: [],\r\n listaSucursales: [],\r\n listaTiposMovimientosMenu: [],\r\n listaSegmentos: [],\r\n listaEstados: [],\r\n listaCiudades: [],\r\n FiltroFechaRegistroInicio: null,\r\n FiltroFechaRegistroFin: null,\r\n FiltroFechaActualizacion: null,\r\n FiltroSegmento: null,\r\n FiltroEstado: null,\r\n FiltroCiudad: null,\r\n FiltroDrive: null\r\n })\r\n\r\n useEffect(() => {\r\n window.scrollTo(0, 0)\r\n let listaMovimientosMenuAux = []\r\n let listaSucursalesAux = []\r\n let listaTiposMovimientosMenuAux = []\r\n let listaSegmentosAux = []\r\n setState({ ...state, isLoading: true })\r\n MenuDriveAPI.GetRegistrosMovimientos()\r\n .then(res => {\r\n listaMovimientosMenuAux = res.data\r\n return WarehouseAPI.getCaffenios()\r\n })\r\n .then(res => {\r\n listaSucursalesAux = res.data.filter(x => x.Active === true)\r\n return MenuDriveAPI.GetTiposMovimiento()\r\n })\r\n .then(res => {\r\n listaTiposMovimientosMenuAux = res.data\r\n return EmpresasAPI.getAllSegments()\r\n })\r\n .then(res => {\r\n listaSegmentosAux = res.data\r\n listaMovimientosMenuAux = obtenerInfoMovimiento(listaMovimientosMenuAux, listaSucursalesAux, listaTiposMovimientosMenuAux)\r\n setState({\r\n ...state,\r\n listaMovimientosMenu: listaMovimientosMenuAux,\r\n listaSucursales: listaSucursalesAux,\r\n listaTiposMovimientosMenu: listaTiposMovimientosMenuAux,\r\n listaSegmentos: rellenarSegmentos(listaSucursalesAux),\r\n listaEstados: rellenarEstados(listaSucursalesAux),\r\n listaCiudades: rellenarCiudades(listaSucursalesAux),\r\n isLoading: false\r\n })\r\n })\r\n .catch(err => {\r\n setState({ ...state, isLoading: false })\r\n if (err.response) {\r\n toast.error(err.response.data.Message)\r\n } else {\r\n toast.error(ErrorMessages.SinConexion)\r\n }\r\n })\r\n }, [])\r\n\r\n const obtenerInfoMovimiento = (listaMovimientosMenuAux, listaSucursalesAux, listaTiposMovimientosAux) => {\r\n let listaMovimientosMenuInfo = listaMovimientosMenuAux.map(movimiento => {\r\n movimiento.Caffenio = listaSucursalesAux.find(sucursal => sucursal.idCaffenio === movimiento.idCaffenio)\r\n return movimiento\r\n })\r\n\r\n listaMovimientosMenuInfo = listaMovimientosMenuInfo.map(movimiento => {\r\n movimiento.TipoMovimiento = listaTiposMovimientosAux.find(tipoMovimiento => tipoMovimiento.idTipoMovMenu === movimiento.idTipoMovMenu)\r\n return movimiento\r\n })\r\n return listaMovimientosMenuInfo\r\n }\r\n\r\n const limpiarFiltros = () => {\r\n setState({ ...state, isLoading: true })\r\n MenuDriveAPI.GetRegistrosMovimientos()\r\n .then(res => {\r\n res.data = obtenerInfoMovimiento(res.data, state.listaSucursales, state.listaTiposMovimientosMenu)\r\n setState({\r\n ...state,\r\n FiltroFechaActualizacion: null,\r\n FiltroFechaRegistroFin: null,\r\n FiltroFechaRegistroInicio: null,\r\n FiltroCiudad: null,\r\n FiltroDrive: null,\r\n FiltroEstado: null,\r\n FiltroSegmento: null,\r\n listaMovimientosMenu: res.data,\r\n isLoading: false\r\n })\r\n })\r\n .catch(err => {\r\n setState({ ...state, isLoading: false })\r\n if (err.response) {\r\n toast.error(err.response.data.Message)\r\n } else {\r\n toast.error(ErrorMessages.SinConexion)\r\n }\r\n })\r\n }\r\n\r\n const filtrarDatos = () => {\r\n\r\n if (state.FiltroFechaRegistroInicio === null || state.FiltroFechaRegistroFin === null) {\r\n toast.error('Se debe establecer fecha de inicio y fecha fin')\r\n return\r\n }\r\n\r\n let filtros = {\r\n FechaRegistroInicio: state.FiltroFechaRegistroInicio,\r\n FechaRegistroFin: state.FiltroFechaRegistroFin,\r\n FechaActualizacion: state.FiltroFechaActualizacion ? state.FiltroFechaActualizacion.valor : null\r\n }\r\n\r\n setState({ ...state, isLoading: true })\r\n MenuDriveAPI.GetRegistrosMovimientos(filtros)\r\n .then(res => {\r\n let movimientosFiltradosAux = []\r\n //Se obtiene la sucursal y tipo de movimiento de los movimientos del menú\r\n movimientosFiltradosAux = obtenerInfoMovimiento(res.data, state.listaSucursales, state.listaTiposMovimientosMenu)\r\n //Se quitan las movimientos del menú que no tengan sucursal activa\r\n movimientosFiltradosAux = movimientosFiltradosAux.filter(movimiento => movimiento.Caffenio !== undefined)\r\n //Se filtra por segmento\r\n if (state.FiltroSegmento !== null && state.FiltroSegmento.length > 0) {\r\n movimientosFiltradosAux = movimientosFiltradosAux.filter(movimiento =>\r\n state.FiltroSegmento.some(segmento => segmento.value === movimiento.Caffenio.idSegmento))\r\n }\r\n //Se filtra por estado\r\n if (state.FiltroEstado !== null && state.FiltroEstado.length > 0) {\r\n movimientosFiltradosAux = movimientosFiltradosAux.filter(movimiento =>\r\n state.FiltroEstado.some(estado => estado.value === movimiento.Caffenio.StateId))\r\n }\r\n //Se filtra por ciudad\r\n if (state.FiltroCiudad !== null && state.FiltroCiudad.length > 0) {\r\n movimientosFiltradosAux = movimientosFiltradosAux.filter(movimiento =>\r\n state.FiltroCiudad.some(ciudad => ciudad.value === movimiento.Caffenio.MunicipalityId))\r\n }\r\n //Se filtra por drive\r\n if (state.FiltroDrive !== null && state.FiltroDrive.length > 0) {\r\n movimientosFiltradosAux = movimientosFiltradosAux.filter(movimiento =>\r\n state.FiltroDrive.some(drive => drive.idCaffenio === movimiento.Caffenio.idCaffenio))\r\n }\r\n setState({\r\n ...state,\r\n listaMovimientosMenu: movimientosFiltradosAux,\r\n isLoading: false\r\n })\r\n })\r\n .catch(err => {\r\n console.log(err)\r\n setState({ ...state, isLoading: false })\r\n if (err.response) {\r\n toast.error(err.response.data.Message)\r\n } else {\r\n toast.error(ErrorMessages.SinConexion)\r\n }\r\n })\r\n }\r\n\r\n const addDays = (date, days) => {\r\n var result = new Date(date);\r\n result.setDate(result.getDate() + days);\r\n return result;\r\n }\r\n\r\n const rellenarSegmentos = (Caffenios) => {\r\n var newArray = [];\r\n let OptionSelectState = [];\r\n var lookupObject = {};\r\n Caffenios.map((item) => {\r\n OptionSelectState.push({ value: item.idSegmento, label: item.Segmento });\r\n });\r\n\r\n for (var i in OptionSelectState) {\r\n lookupObject[OptionSelectState[i][\"value\"]] = OptionSelectState[i];\r\n }\r\n\r\n for (i in lookupObject) {\r\n newArray.push(lookupObject[i]);\r\n }\r\n\r\n return lodash.sortBy(newArray, [ts => ts.label.toLowerCase()], ['asc']);\r\n }\r\n\r\n const rellenarEstados = (Caffenios) => {\r\n var newArray = [];\r\n let OptionSelectState = [];\r\n var lookupObject = {};\r\n Caffenios.map((item) => {\r\n OptionSelectState.push({ value: item.StateId, label: item.State });\r\n });\r\n\r\n for (var i in OptionSelectState) {\r\n lookupObject[OptionSelectState[i][\"value\"]] = OptionSelectState[i];\r\n }\r\n\r\n for (i in lookupObject) {\r\n newArray.push(lookupObject[i]);\r\n }\r\n\r\n return lodash.sortBy(newArray, [ts => ts.label.toLowerCase()], ['asc']);\r\n }\r\n\r\n\r\n const rellenarCiudades = (Caffenios) => {\r\n var newArray = [];\r\n let OptionSelectState = [];\r\n var lookupObject = {};\r\n Caffenios.map((item) => {\r\n OptionSelectState.push({ value: item.Municipalityid, label: item.Municipality });\r\n });\r\n\r\n for (var i in OptionSelectState) {\r\n lookupObject[OptionSelectState[i][\"value\"]] = OptionSelectState[i];\r\n }\r\n\r\n for (i in lookupObject) {\r\n newArray.push(lookupObject[i]);\r\n }\r\n\r\n return lodash.sortBy(newArray, [ts => ts.label.toLowerCase()], ['asc']);\r\n }\r\n\r\n return (\r\n
    \r\n

    Movimientos del SAG

    \r\n\r\n
    \r\n
    \r\n
    \r\n
    \r\n\r\n
    \r\n \r\n setState({ ...state, FiltroFechaRegistroInicio: fecha })}\r\n dateFormat=\"dd/MM/yyyy\"\r\n className=\"input\"\r\n todayButton=\"Hoy\"\r\n />\r\n
    \r\n\r\n
    \r\n \r\n setState({ ...state, FiltroFechaRegistroFin: fecha })}\r\n dateFormat=\"dd/MM/yyyy\"\r\n className=\"input\"\r\n todayButton=\"Hoy\"\r\n minDate={state.FiltroFechaRegistroInicio}\r\n maxDate={addDays(state.FiltroFechaRegistroInicio, 30)}\r\n disabled={state.FiltroFechaRegistroInicio === null}\r\n />\r\n
    \r\n\r\n
    \r\n \r\n \"No hay opciones\"}\r\n onChange={value => setState({ ...state, FiltroFechaActualizacion: value })}\r\n options={fechaActualizacionCampos}\r\n getOptionLabel={(fecha) => fecha.descripcion}\r\n getOptionValue={(fecha) => fecha.idFechaActualizacion}\r\n />\r\n
    \r\n\r\n
    \r\n \r\n
    \r\n {\r\n setState({ ...state, FiltroSegmento: value })\r\n }}\r\n noOptionsMessage={() => \"No hay opciones\"}\r\n options={state.listaSegmentos}\r\n />\r\n
    \r\n
    \r\n
    \r\n \r\n
    \r\n {\r\n setState({ ...state, FiltroEstado: value })\r\n }}\r\n noOptionsMessage={() => \"No hay opciones\"}\r\n options={state.listaEstados}\r\n />\r\n
    \r\n
    \r\n
    \r\n \r\n
    \r\n {\r\n setState({ ...state, FiltroCiudad: value })\r\n }}\r\n noOptionsMessage={() => \"No hay opciones\"}\r\n options={state.listaCiudades}\r\n />\r\n
    \r\n
    \r\n
    \r\n \r\n
    \r\n {\r\n setState({ ...state, FiltroDrive: value })\r\n }}\r\n noOptionsMessage={() => \"No hay opciones\"}\r\n options={state.listaSucursales}\r\n getOptionLabel={(sucursal) => sucursal.Name}\r\n getOptionValue={(sucursal) => sucursal.idCaffenio}\r\n />\r\n
    \r\n
    \r\n\r\n
    \r\n\r\n
    \r\n \r\n \r\n \r\n \r\n Buscar\r\n \r\n \r\n \r\n \r\n \r\n Limpiar filtros\r\n \r\n {state.listaMovimientosMenu.length > 0 &&\r\n \r\n \r\n \r\n \r\n Exportar a EXCEL\r\n \r\n }\r\n >\r\n \r\n movimiento.TipoMovimiento.Descripcion} />\r\n movimiento.FechaActualizacion ? format(Date.parse(movimiento.FechaRegistro), \"dd/MM/yyyy HH:mm\") : 'N/A'} />\r\n format(Date.parse(movimiento.FechaRegistro), \"dd/MM/yyyy HH:mm\")} />\r\n movimiento.Caffenio ? movimiento.Caffenio.Name : 'N/A'} />\r\n \r\n \r\n }\r\n
    \r\n\r\n
    \r\n\r\n
    \r\n
    \r\n
    \r\n\r\n
    \r\n
    \r\n
    \r\n {state.listaMovimientosMenu.length !== 0 ?\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n {\r\n state.paginadoMovimientosMenu.map(movimientoMenu =>\r\n \r\n \r\n \r\n \r\n \r\n \r\n )\r\n }\r\n \r\n
    Tipo MovimientoFecha ActualizaciónFecha RegistroDrive
    {movimientoMenu.TipoMovimiento.Descripcion}{movimientoMenu.FechaActualizacion ? format(Date.parse(movimientoMenu.FechaActualizacion), \"dd/MM/yyyy HH:mm\") : 'N/A'}{format(Date.parse(movimientoMenu.FechaRegistro), \"dd/MM/yyyy HH:mm\")}{movimientoMenu.Caffenio ? movimientoMenu.Caffenio.Name : 'N/A'}
    : \r\n }\r\n
    \r\n setState({ ...state, paginadoMovimientosMenu: movimientosMenu })}\r\n />\r\n
    \r\n
    \r\n\r\n\r\n \r\n
    \r\n )\r\n}\r\n","import React from 'react'\r\nimport Select from 'react-select';\r\nimport { useState, useEffect } from 'react';\r\nimport DatePicker from \"react-datepicker/dist/es\"\r\nimport NoItems from '../util/noitems/NoItems';\r\nimport MenuDriveAPI from '../../services/MenuDrive';\r\nimport { format } from 'date-fns';\r\nimport ErrorMessages from '../../util/validation-error-messages';\r\nimport { toast } from 'react-toastify';\r\nimport Loading from '../util/loading/Loading';\r\nimport ReactExport from \"react-export-excel\";\r\nimport WarehouseAPI from '../../services/Warehouse';\r\nimport EmpresasAPI from '../../services/CaffenioEmpresas/Empresas';\r\nimport lodash from 'lodash';\r\nimport Pagination from '../util/pagination/Pagination';\r\nimport HistorialMovimientosAPI from '../../services/HistorialMovimientos';\r\n\r\n// Creamos instancias para el package export excel.\r\n// Variable que indica el archivo de excel que se crea.\r\nconst ExcelFile = ReactExport.ExcelFile;\r\n// Variable que indica una hoja de excel.\r\nconst ExcelSheet = ReactExport.ExcelFile.ExcelSheet;\r\n// Variable que indica una columna de excel.\r\nconst ExcelColumn = ReactExport.ExcelFile.ExcelColumn;\r\n\r\nexport const HistorialVersion = () => {\r\n\r\n const [state, setState] = useState({\r\n listaVersiones: [],\r\n isLoading: false,\r\n listaSucursales: [],\r\n listaNumVersiones: [],\r\n listaSegmentos: [],\r\n listaEstados: [],\r\n listaCiudades: [],\r\n FiltroFechaInicio: null,\r\n FiltroFechaFin: null,\r\n FiltroVersion: null,\r\n FiltroSegmento: null,\r\n FiltroEstado: null,\r\n FiltroCiudad: null,\r\n FiltroDrive: null,\r\n FiltroTipoSistema: null,\r\n listaTipoSistemas: []\r\n })\r\n\r\n useEffect(() => {\r\n window.scrollTo(0, 0)\r\n let listaVersionesAux = []\r\n let listaSucursalesAux = []\r\n let listaTipoSistemasAux = []\r\n setState({ ...state, isLoading: true })\r\n HistorialMovimientosAPI.ObtenerHistorialVersiones()\r\n .then(res => {\r\n listaVersionesAux = res.data\r\n return WarehouseAPI.getCaffenios()\r\n })\r\n .then(res => {\r\n listaSucursalesAux = res.data.filter(x => x.Active === true)\r\n return HistorialMovimientosAPI.ObtenerTipoSistemas()\r\n })\r\n .then(res => {\r\n listaTipoSistemasAux = res.data\r\n return HistorialMovimientosAPI.ObtenerNumVersionSync()\r\n })\r\n .then(res => {\r\n let listaNumVersionesAux = []\r\n res.data.forEach((versionSync, index) => {\r\n listaNumVersionesAux.push({\r\n value: versionSync,\r\n label: versionSync\r\n })\r\n });\r\n setState({\r\n ...state,\r\n listaVersiones: obtenerInfoMovimiento(listaVersionesAux, listaSucursalesAux),\r\n listaSucursales: listaSucursalesAux,\r\n listaNumVersiones: listaNumVersionesAux,\r\n listaSegmentos: rellenarSegmentos(listaSucursalesAux),\r\n listaEstados: rellenarEstados(listaSucursalesAux),\r\n listaCiudades: rellenarCiudades(listaSucursalesAux),\r\n listaTipoSistemas: listaTipoSistemasAux,\r\n isLoading: false\r\n })\r\n })\r\n .catch(err => {\r\n console.log(err)\r\n setState({ ...state, isLoading: false })\r\n if (err.response) {\r\n toast.error(err.response.data.Message)\r\n } else {\r\n toast.error(ErrorMessages.SinConexion)\r\n }\r\n })\r\n }, [])\r\n\r\n const addDays = (date, days) => {\r\n var result = new Date(date);\r\n result.setDate(result.getDate() + days);\r\n return result;\r\n }\r\n\r\n const obtenerInfoMovimiento = (listaVersionesAux, listaSucursalesAux) => {\r\n let listaVersionesInfo = listaVersionesAux.map(version => {\r\n version.Caffenio = listaSucursalesAux.find(sucursal => sucursal.idCaffenio === version.IdCaffenio)\r\n return version\r\n })\r\n return listaVersionesInfo\r\n }\r\n\r\n const rellenarSegmentos = (Caffenios) => {\r\n var newArray = [];\r\n let OptionSelectState = [];\r\n var lookupObject = {};\r\n Caffenios.map((item) => {\r\n OptionSelectState.push({ value: item.idSegmento, label: item.Segmento });\r\n });\r\n\r\n for (var i in OptionSelectState) {\r\n lookupObject[OptionSelectState[i][\"value\"]] = OptionSelectState[i];\r\n }\r\n\r\n for (i in lookupObject) {\r\n newArray.push(lookupObject[i]);\r\n }\r\n\r\n return lodash.sortBy(newArray, [ts => ts.label.toLowerCase()], ['asc']);\r\n }\r\n\r\n const rellenarEstados = (Caffenios) => {\r\n var newArray = [];\r\n let OptionSelectState = [];\r\n var lookupObject = {};\r\n Caffenios.map((item) => {\r\n OptionSelectState.push({ value: item.StateId, label: item.State });\r\n });\r\n\r\n for (var i in OptionSelectState) {\r\n lookupObject[OptionSelectState[i][\"value\"]] = OptionSelectState[i];\r\n }\r\n\r\n for (i in lookupObject) {\r\n newArray.push(lookupObject[i]);\r\n }\r\n\r\n return lodash.sortBy(newArray, [ts => ts.label.toLowerCase()], ['asc']);\r\n }\r\n\r\n\r\n const rellenarCiudades = (Caffenios) => {\r\n var newArray = [];\r\n let OptionSelectState = [];\r\n var lookupObject = {};\r\n Caffenios.map((item) => {\r\n OptionSelectState.push({ value: item.Municipalityid, label: item.Municipality });\r\n });\r\n\r\n for (var i in OptionSelectState) {\r\n lookupObject[OptionSelectState[i][\"value\"]] = OptionSelectState[i];\r\n }\r\n\r\n for (i in lookupObject) {\r\n newArray.push(lookupObject[i]);\r\n }\r\n\r\n return lodash.sortBy(newArray, [ts => ts.label.toLowerCase()], ['asc']);\r\n }\r\n\r\n const filtrarDatos = () => {\r\n\r\n if (state.FiltroFechaInicio === null || state.FiltroFechaFin === null) {\r\n toast.error('Se debe establecer fecha de inicio y fecha fin')\r\n return\r\n }\r\n\r\n let filtros = {\r\n FiltroFechaInicio: state.FiltroFechaInicio,\r\n FiltroFechaFin: state.FiltroFechaFin,\r\n IdTipoSistema: state.FiltroTipoSistema ? state.FiltroTipoSistema.idTipoSistema : null\r\n }\r\n\r\n setState({ ...state, isLoading: true })\r\n HistorialMovimientosAPI.ObtenerHistorialVersiones(filtros)\r\n .then(res => {\r\n let listaVersionesAux = res.data\r\n //Se obtiene la sucursal y tipo de movimiento de los movimientos del menú\r\n listaVersionesAux = obtenerInfoMovimiento(res.data, state.listaSucursales)\r\n //Se quitan las movimientos del menú que no tengan sucursal activa\r\n listaVersionesAux = listaVersionesAux.filter(movimiento => movimiento.Caffenio !== undefined)\r\n //Se filtra por segmento\r\n if (state.FiltroSegmento !== null && state.FiltroSegmento.length > 0) {\r\n listaVersionesAux = listaVersionesAux.filter(movimiento =>\r\n state.FiltroSegmento.some(segmento => segmento.value === movimiento.Caffenio.idSegmento))\r\n }\r\n //Se filtra por estado\r\n if (state.FiltroEstado !== null && state.FiltroEstado.length > 0) {\r\n listaVersionesAux = listaVersionesAux.filter(movimiento =>\r\n state.FiltroEstado.some(estado => estado.value === movimiento.Caffenio.StateId))\r\n }\r\n //Se filtra por ciudad\r\n if (state.FiltroCiudad !== null && state.FiltroCiudad.length > 0) {\r\n listaVersionesAux = listaVersionesAux.filter(movimiento =>\r\n state.FiltroCiudad.some(ciudad => ciudad.value === movimiento.Caffenio.MunicipalityId))\r\n }\r\n //Se filtra por drive\r\n if (state.FiltroDrive !== null && state.FiltroDrive.length > 0) {\r\n listaVersionesAux = listaVersionesAux.filter(movimiento =>\r\n state.FiltroDrive.some(drive => drive.idCaffenio === movimiento.Caffenio.idCaffenio))\r\n }\r\n setState({\r\n ...state,\r\n listaVersiones: listaVersionesAux,\r\n isLoading: false\r\n })\r\n })\r\n .catch(err => {\r\n console.log(err)\r\n setState({ ...state, isLoading: false })\r\n if (err.response) {\r\n toast.error(err.response.data.Message)\r\n } else {\r\n toast.error(ErrorMessages.SinConexion)\r\n }\r\n })\r\n }\r\n\r\n const limpiarFiltros = () => {\r\n setState({ ...state, isLoading: true })\r\n HistorialMovimientosAPI.ObtenerHistorialVersiones()\r\n .then(res => {\r\n setState({\r\n ...state,\r\n FiltroFechaInicio: null,\r\n FiltroFechaFin: null,\r\n FiltroVersion: null,\r\n FiltroSegmento: null,\r\n FiltroEstado: null,\r\n FiltroCiudad: null,\r\n FiltroDrive: null,\r\n FiltroTipoSistema: null,\r\n listaVersiones: obtenerInfoMovimiento(res.data, state.listaSucursales),\r\n isLoading: false\r\n })\r\n })\r\n .catch(err => {\r\n setState({ ...state, isLoading: false })\r\n if (err.response) {\r\n toast.error(err.response.data.Message)\r\n } else {\r\n toast.error(ErrorMessages.SinConexion)\r\n }\r\n })\r\n }\r\n\r\n\r\n return (\r\n
    \r\n

    Historial de versiones

    \r\n\r\n
    \r\n
    \r\n
    \r\n
    \r\n\r\n
    \r\n \r\n setState({ ...state, FiltroFechaInicio: fecha })}\r\n dateFormat=\"dd/MM/yyyy\"\r\n className=\"input\"\r\n todayButton=\"Hoy\"\r\n />\r\n
    \r\n\r\n
    \r\n \r\n setState({ ...state, FiltroFechaFin: fecha })}\r\n dateFormat=\"dd/MM/yyyy\"\r\n className=\"input\"\r\n todayButton=\"Hoy\"\r\n disabled={state.FiltroFechaInicio === null}\r\n minDate={state.FiltroFechaInicio}\r\n maxDate={addDays(state.FiltroFechaInicio, 30)}\r\n />\r\n
    \r\n\r\n
    \r\n \r\n \"No hay opciones\"}\r\n onChange={value => setState({ ...state, FiltroTipoSistema: value })}\r\n options={state.listaTipoSistemas}\r\n getOptionLabel={(tipoSistema) => tipoSistema.Descripcion}\r\n getOptionValue={(tipoSistema) => tipoSistema.idTipoSistema}\r\n />\r\n
    \r\n\r\n {/*
    \r\n \r\n \"No hay opciones\"}\r\n onChange={value => setState({ ...state, FiltroVersion: value })}\r\n options={state.listaNumVersiones}\r\n />\r\n
    */}\r\n\r\n
    \r\n \r\n
    \r\n {\r\n setState({ ...state, FiltroSegmento: value })\r\n }}\r\n noOptionsMessage={() => \"No hay opciones\"}\r\n options={state.listaSegmentos}\r\n />\r\n
    \r\n
    \r\n
    \r\n \r\n
    \r\n {\r\n setState({ ...state, FiltroEstado: value })\r\n }}\r\n noOptionsMessage={() => \"No hay opciones\"}\r\n options={state.listaEstados}\r\n />\r\n
    \r\n
    \r\n
    \r\n \r\n
    \r\n {\r\n setState({ ...state, FiltroCiudad: value })\r\n }}\r\n noOptionsMessage={() => \"No hay opciones\"}\r\n options={state.listaCiudades}\r\n />\r\n
    \r\n
    \r\n
    \r\n \r\n
    \r\n {\r\n setState({ ...state, FiltroDrive: value })\r\n }}\r\n noOptionsMessage={() => \"No hay opciones\"}\r\n options={state.listaSucursales}\r\n getOptionLabel={(sucursal) => sucursal.Name}\r\n getOptionValue={(sucursal) => sucursal.idCaffenio}\r\n />\r\n
    \r\n
    \r\n\r\n
    \r\n\r\n
    \r\n \r\n \r\n \r\n \r\n Buscar\r\n \r\n \r\n \r\n \r\n \r\n Limpiar filtros\r\n \r\n {state.listaVersiones.length > 0 &&\r\n \r\n \r\n \r\n \r\n Exportar a EXCEL\r\n \r\n }\r\n >\r\n \r\n version.Caffenio ? version.Caffenio.Name : 'N/A'} />\r\n version.Sistema ? version.Sistema : 'N/A'} />\r\n version.Equipo ? version.Equipo : 'N/A'} />\r\n version.VersionSync ? version.VersionSync : 'N/A'} />\r\n version.CreateDate ? format(Date.parse(version.CreateDate), \"dd/MM/yyyy HH:mm\") : 'N/A'} />\r\n version.RunDate ? format(Date.parse(version.RunDate), \"dd/MM/yyyy HH:mm\") : 'N/A'} />\r\n \r\n \r\n }\r\n
    \r\n\r\n
    \r\n\r\n
    \r\n
    \r\n
    \r\n\r\n
    \r\n
    \r\n
    \r\n {state.listaVersiones.length > 0 ?\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n {\r\n state.listaVersiones.map((version, index) =>\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n )\r\n }\r\n \r\n
    DriveSistemaEquipoVersiónFecha ActualizaciónÚltimo Inicio
    {version.Caffenio ? version.Caffenio.Name : 'N/A'}{version.Sistema || 'N/A'}{version.Equipo || 'N/A'}{version.VersionSync || 'N/A'}{version.CreateDate ? format(Date.parse(version.CreateDate), \"dd/MM/yyyy HH:mm\") : 'N/A'}{version.RunDate ? format(Date.parse(version.RunDate), \"dd/MM/yyyy HH:mm\") : 'N/A'}
    : \r\n }\r\n
    \r\n {/* setState({ ...state, paginadoMovimientosMenu: movimientosMenu })}\r\n /> */}\r\n
    \r\n
    \r\n\r\n\r\n \r\n
    \r\n )\r\n}\r\n","import React from 'react';\r\nimport './app-container.css';\r\nimport 'font-awesome/css/font-awesome.min.css';\r\nimport 'react-toastify/dist/ReactToastify.css';\r\nimport 'bulma-extensions/bulma-divider/dist/css/bulma-divider.min.css';\r\nimport { ToastContainer } from 'react-toastify';\r\nimport { BrowserRouter, Route, Switch, Redirect } from 'react-router-dom'\r\nimport posed, { PoseGroup } from 'react-pose';\r\nimport Menu from '../menu/Menu';\r\nimport Header from '../header/Header';\r\nimport Index from '../index';\r\nimport Recipes from '../Recetas/recipes/Recipes';\r\nimport RecipesImage from '../Recetas/recipesImage/RecipesImage';\r\nimport NewRecipe from '../Recetas/recipes/NewRecipe';\r\nimport Classifications from '../Recetas/classifications/Classifications';\r\nimport NewClassification from '../Recetas/classifications/NewClassification';\r\nimport NewFlavor from '../Recetas/flavors/NewFlavor';\r\nimport Flavors from '../Recetas/flavors/Flavors';\r\nimport NewGrain from '../Recetas/grains/NewGrain';\r\nimport Grains from '../Recetas/grains/Grains';\r\nimport NewMilk from '../Recetas/milks/NewMilk';\r\nimport Milks from '../Recetas/milks/Milks';\r\nimport NewPresentation from '../Recetas/presentations/NewPresentation';\r\nimport Presentations from '../Recetas/presentations/Presentations';\r\nimport NewInventoryItem from '../Recetas/InventoryItems/NewInventoryItem';\r\nimport InventoryItems from '../Recetas/InventoryItems/InventoryItems';\r\nimport RecipeTypes from '../Recetas/recipeTypes/RecipeTypes';\r\nimport NewRecipeType from '../Recetas//recipeTypes/NewRecipeType';\r\nimport NewUnit from '../Recetas/units/NewUnit';\r\nimport Units from '../Recetas/units/Units';\r\nimport NewInventoryType from '../InventoryType/NewInventoryType';\r\nimport InventoryType from '../InventoryType/InventoryTypes';\r\nimport Warehouse from '../warehouse/Warehouse';\r\nimport Remesas from '../remesas/Remesas';\r\nimport MenuDrives from '../menusDrive/MenusDrive';\r\nimport NewMenu from '../menusDrive/NewMenu';\r\nimport MenuDetail from '../menusDrive/MenuDetail';\r\nimport PricesDrive from '../pricesDrives/PricesDrive';\r\nimport NewPriceList from '../pricesDrives/NewPriceList';\r\nimport PriceDetail from '../pricesDrives/PricesDetail';\r\nimport PrivateRoute from '../util/privaterouter/PrivateRoute';\r\nimport SaldosRegalo from '../SaldoRegalo/SaldosRegalo';\r\nimport roles from '../../util/strings/roles';\r\nimport CaffenioDrive from '../caffenioDrive/caffenioDrive';\r\nimport NewCaffenio from '../caffenioDrive/NewCaffenio';\r\nimport NewRecipeMulti from '../Recetas/recipes/NewRecipeMulti';\r\nimport Toppings from '../Recetas/toppings/Toppings';\r\nimport Segmentaciones from '../Caffenio App/Segmentaciones/Segmentaciones';\r\nimport NuevaSegmentacion from '../Caffenio App/Segmentaciones/NuevaSegmentacion/NuevaSegmentacion';\r\nimport NuevaSegmentacionUsuario from '../Caffenio App/Segmentaciones/NuevaSegmentacion/NuevaSegmentacionUsuario';\r\nimport Notificaciones from '../Caffenio App/Notificaciones/Notificaciones';\r\nimport NuevaNotificacion from '../Caffenio App/Notificaciones/NuevaNotificacion/NuevaNotificacion';\r\nimport Agenda from '../Caffenio App/Agenda/Agenda';\r\nimport DetalleNotificacion from '../Caffenio App/Notificaciones/DetalleNotificacion/DetalleNotificacion';\r\nimport OrdenMenuApp from '../Caffenio App/Menu/Orden/OrdenMenuApp';\r\nimport EditarClasificacionApp from '../Caffenio App/Menu/Orden/EditarClasificacionApp/EditarClasificacionApp';\r\nimport DetalleClasificacionApp from '../Caffenio App/Menu/Orden/DetalleClasificacionApp/DetalleClasificacionApp';\r\nimport OrdenarMenu from '../Caffenio App/Menu/Orden/OrdernarMenu/OrdernarMenu';\r\nimport Restaurantes from '../ubereats/restaurantes';\r\nimport InfoOrderRestaurant from '../ubereats/InfoOrderRestaurant';\r\nimport RestaurantDetails from '../ubereats/RestaurantDetail';\r\nimport {AsignacionLiderSupervisor} from '../asignacionLiderSupervisor/AsignacionLiderSupervisor';\r\nimport {HistorialMovimientos} from '../historialMovimientos/HistorialMovimientos';\r\nimport CaffenioReporteTabla from \"../reportes/caffenioReporteTabla\";\r\nimport newFeatured from '../productoDestacado/newFeatured';\r\nimport {CatalogoPlazas} from '../CatalogoPlazas/CatalogoPlazas';\r\nimport {CatalogoSucursales} from '../CatalogoSucursales/CatalogoSucursales';\r\nimport {AdminUsuarios} from '../AdminUsuarios/AdminUsuarios';\r\nimport PromosDrive from '../Promos/Promos';\r\nimport { NuevaPromo } from '../Promos/NuevaPromo';\r\nimport {CatalogoImpuestos} from '../TasaImpuesto/TasaImpuesto';\r\nimport ReporteConciliacion from '../reportes/reporteConciliacion/reporteConciliacion';\r\nimport ReporteArqueo from '../reportes/reporteArqueo/reporteArqueo';\r\nimport ReporteRetiros from '../reportes/reporteRetiros/ReporteRetiros';\r\nimport ReporteCancelaciones from '../reportes/reporteCancelaciones/ReporteCancelaciones';\r\nimport Promociones from '../Promociones/Promociones';\r\nimport NuevaPromocion from '../Promociones/NuevaPromocion/NuevaPromocion';\r\nimport DetallePromocion from '../Promociones/DetallePromocion/DetallePromocion';\r\nimport PrefijoCampana from '../Promociones/PrefijoCampana/NuevoPrefijoCampana';\r\nimport {ExtraccionesCafe} from '../ExtraccionesCafe';\r\nimport {ReporteExtractos} from '../ReporteExtractos';\r\nimport Empresas from '../miCaffenioEmpresas/empresas';\r\nimport ProyeccionProductos from '../ProyeccionProductos/proyeccionProductos';\r\nimport NewProyeccion from '../ProyeccionProductos/NewProyeccion';\r\nimport { ProyeccionFormula } from '../ProyeccionFormula';\r\nimport { ReporteProyeccion } from '../ReporteProyeccion';\r\nimport ComunicadosVP from '../ComunicadosVP/ComunicadosVP';\r\nimport NewComunicado from '../ComunicadosVP/NewComunicado';\r\nimport { PagosBancos } from '../PagosBancos/pagosBancos';\r\nimport { CoordinadoresSupervisores } from '../coordinadoresSupervisores/CoordinadoresSupervisores';\r\nimport { NewCoordinadoresSupervisores } from '../coordinadoresSupervisores/NewCoordinadoresSupervisores';\r\nimport { MovimientosMenu } from '../movimientosMenu/MovimientosMenu';\r\nimport { HistorialVersion } from '../historialVersion/HistorialVersion';\r\n\r\n\r\n/** \r\n * Componente encargado de englobar toda la aplicación en el apartado del usuario ya en sesión\r\n * Esto conlleva el despliegue del Menú, Header y el componente correspondiente a la ruta actual\r\n */\r\n\r\nconst RoutesContainer = posed.div({\r\n enter: { opacity: 1, delay: 150 },\r\n exit: { opacity: 0 }\r\n});\r\n\r\nexport default class AppContainer extends React.Component{\r\n \r\n render(){\r\n return (\r\n (\r\n
    \r\n
    \r\n \r\n
    \r\n
    \r\n
    \r\n
    \r\n \r\n \r\n \r\n {/* \r\n Aquí se registran todas las rutas disponibles como hijos de este\r\n componente, así como el componente correspondiente a las mismas.\r\n */}\r\n \r\n {/* */}\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n\r\n \r\n \r\n \r\n\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n {/* \r\n */}\r\n\r\n \r\n\r\n {/* Sección de aplicación Móvil */}\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n\r\n {/* Sección de uber eats */}\r\n \r\n \r\n \r\n \r\n {/* Sección de administración */}\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n\r\n {/* Reportes */}\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n\r\n {/* Sección de promociones*/}\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n\r\n {/* Sección Mi CAFFENIO empresas */}\r\n \r\n\r\n {/* Componente anónimo sin estado para un logout y redirigir al inicio */}\r\n {\r\n localStorage.clear();\r\n\r\n window.location.reload(); \r\n return ;\r\n }}/>\r\n \r\n \r\n\r\n \r\n \r\n \r\n
    \r\n
    \r\n
    \r\n \r\n
    \r\n )}\r\n /> \r\n\r\n )\r\n }\r\n}","import * as React from 'react';\r\nimport './Login.css';\r\nimport logo from '../../assets/images/logo-caffenio-nuevo.png';\r\nimport { Auth } from '../../services/auth';\r\nimport decode from 'jwt-decode';\r\nimport { toast } from 'react-toastify';\r\nimport { Redirect } from 'react-router-dom'\r\nimport Index from '../index';\r\nimport AppContainer from '../app-container/app-container';\r\n\r\n/**\r\n * Componente encargado de mostrar el formulario para realizar un inicio de sesión en el sistema.\r\n */\r\nexport default class Login extends React.Component{\r\n constructor(props){\r\n super(props);\r\n this.state = {\r\n email: \"\",\r\n password: \"\",\r\n logueado: false\r\n }\r\n }\r\n\r\n // Método a ejecutar si se presiona una tecla en el componente\r\n enterFunc = (event) => {\r\n if(event.keyCode === 13) { // Si la tecla presionada fue Enter se realiza el bloque\r\n if (this.state.password && this.state.email) this.login();\r\n }\r\n }\r\n\r\n // Se inicia un escuchador en el componente para el uso de alguna tecla\r\n componentDidMount(){\r\n document.addEventListener(\"keydown\", this.enterFunc, false);\r\n }\r\n // Se elimina el escuchador en el componente para el uso de alguna tecla\r\n componentWillUnmount(){\r\n document.removeEventListener(\"keydown\", this.enterFunc, false);\r\n }\r\n\r\n // Método encargado de realizar la petición al API para el inicio de sesión\r\n // y el guardado de las credenciales correspondientes en caso de ser exitoso\r\n login(){\r\n Auth.login(this.state.email, this.state.password).then(response => {\r\n let token = response.data.access_token;\r\n let tokenObj = decode(token);\r\n let today = new Date();\r\n\r\n localStorage.setItem(\"expires_in\", (today.getTime() / 1000) + response.data.expires_in)\r\n localStorage.setItem(\"token\", token);\r\n localStorage.setItem(\"tokenExpiration\", tokenObj.exp);\r\n localStorage.setItem(\"role\", tokenObj.role);\r\n localStorage.setItem(\"permissions\", tokenObj.permissions);\r\n localStorage.setItem(\"user\", tokenObj.uid);\r\n if(window.caches != undefined){\r\n window.caches.keys().then(function(names){\r\n for(let name of names){\r\n window.caches.delete(name);\r\n }\r\n })\r\n }\r\n\r\n // window.location.reload();\r\n this.setState({logueado: true})\r\n }).catch(err => {\r\n toast.error(\"Credenciales incorrectas, favor de verificarlas\");\r\n })\r\n }\r\n\r\n render(){\r\n if(this.state.logueado === true){\r\n window.location.reload();\r\n return \r\n }\r\n\r\n return (\r\n
    \r\n
    \r\n
    \r\n


    \r\n
    \r\n
    \r\n
    \r\n
    \r\n \"\"/\r\n
    \r\n
    \r\n
    \r\n
    \r\n

    SAG - Sistema de Autogestión de Recetas

    \r\n
    \r\n
    \r\n
    \r\n
    \r\n
    \r\n \r\n
    \r\n
    \r\n {\r\n let state = {...this.state};\r\n state.email = e.currentTarget.value;\r\n this.setState(state);\r\n }}\r\n />\r\n
    \r\n
    \r\n
    \r\n
    \r\n \r\n
    \r\n
    \r\n {\r\n let state = {...this.state};\r\n state.password = e.currentTarget.value;\r\n this.setState(state);\r\n }}\r\n />\r\n
    \r\n
    \r\n
    \r\n \r\n
    \r\n this.login()}\r\n >\r\n Iniciar sesión\r\n \r\n
    \r\n
    \r\n
    \r\n\r\n
    \r\n
    \r\n
    \r\n )\r\n }\r\n}","import React from 'react';\r\nimport ReactDOM from 'react-dom';\r\nimport './index.css';\r\nimport './css/mystyle.css';\r\nimport registerServiceWorker from './registerServiceWorker';\r\nimport 'font-awesome/css/font-awesome.min.css';\r\nimport 'react-toastify/dist/ReactToastify.css';\r\nimport 'bulma-extensions/dist/css/bulma-extensions.min.css';\r\nimport 'react-datepicker/dist/react-datepicker.css';\r\nimport 'react-big-calendar/lib/css/react-big-calendar.css';\r\nimport { ToastContainer } from 'react-toastify';\r\nimport Login from './components/login/Login';\r\nimport { BrowserRouter, Route, Switch, HashRouter} from 'react-router-dom'\r\nimport AppContainer from './components/app-container/app-container';\r\n\r\n// Esta variable indica a traves del navegador si el usuario ha entrado en el\r\n// modo guiado.\r\n//\r\n(function() {\r\n // Si el navegador no ha registrado la variable hay que crearla\r\n //\r\n if (localStorage.getItem(\"modoGuiado\") === null) {\r\n localStorage.setItem(\"modoGuiado\", false);\r\n }\r\n\r\n if (localStorage.getItem(\"tipoModoGuiado\") === null) {\r\n localStorage.setItem(\"tipoModoGuiado\", \"\")\r\n }\r\n\r\n if (localStorage.getItem(\"ultimaRuta\") === null) {\r\n localStorage.setItem(\"ultimaRuta\", \"\")\r\n }\r\n})();\r\n\r\n// Componente principal de la aplicación\r\nclass App extends React.Component{\r\n render() {\r\n // Se revisa si hay información de un inicio de sesión en localStorage y si aún es válida\r\n let isLogged = localStorage.getItem(\"token\") && localStorage.getItem(\"tokenExpiration\") > Date.now()/1000;\r\n return (\r\n // Se engloba toda la aplicación en un BrowserRouter para un manejo de rutas\r\n \r\n \r\n {/* Si se ocupa algo antes de entrar a la aplicación aquí se ponen las rutas */}\r\n \r\n \r\n \r\n )\r\n }\r\n}\r\n\r\n// Componente sin estado con el único fin de encapsular el componente Login junto al \r\n// contenedor de los toast para su uso.\r\nconst AppLogin = () => (\r\n
    \r\n \r\n \r\n
    \r\n)\r\n\r\n// El componente App se dibujará en el elemento root del DOM\r\nReactDOM.render(, document.getElementById('root'));\r\nregisterServiceWorker();\r\n"],"sourceRoot":""}