{"version":3,"sources":["Home/Home.js","Rastreopedidos/Rastreopedidos.js","DownloadInvoice/DownloadInvoice.js","Attendance/Attendance.js","Pricelist/Pricelist.js","Commission/Commission.js","Incentive/Incentive.js","TransactionStatus/TransactionStatus.js","Checklist/Checklist.js","ChecklistAud/ChecklistAud.js","ChecklistVeh/ChecklistVeh.js","Document/Document.js","DocumentViewer/DocumentViewer.js","Vacation/Vacation.js","Signin/Signin.js","Signout/Signout.js","Signup/Signup.js","Users/Users.js","PdfTemplate/PdfTemplate.js","PdfRender/PdfRender.js","PdfEditor/PdfEditor.js","PasswordChange/PasswordChange.js","ProcessInvoice/ProcessInvoice.js","ProcessInvoiceLoc/ProcessInvoiceLoc.js","ProcessInvoiceWHS/ProcessInvoiceWHS.js","Estimate/Estimate.js","LostDeal/LostDeal.js","SalesOrder/SalesOrder.js","Invoice/Invoice.js","CustomerPayment/CustomerPayment.js","SalesOrderMod/SalesOrderMod.js","CashRegister/CashRegister.js","DirectDelivery/DirectDelivery.js","DirectReturn/DirectReturn.js","DeliveryRequest/DeliveryRequest.js","ReturnRequest/ReturnRequest.js","TransferOrder/TransferOrder.js","ShipmentRequest/ShipmentRequest.js","InvTransferOrder/InvTransferOrder.js","InvItemFulfillment/InvItemFulfillment.js","InvItemReceipt/InvItemReceipt.js","Kardex/Kardex.js","InvLevels/InvLevels.js","InvLevelsIncCost/InvLevelsIncCost.js","SalesCompReport/SalesCompReport.js","InventoryTransfer/InventoryTransfer.js","LoginInfo/LoginInfo.js","LabelWMS/LabelWMS.js","ExploreBarcode/ExploreBarcode.js","ExploreBarcodeCosts/ExploreBarcodeCosts.js","MoveItemWMS/MoveItemWMS.js","ReceiveOrderWMS/ReceiveOrderWMS.js","FulfillmentOrderWMS/FulfillmentOrderWMS.js","WarehouseWMS/WarehouseWMS.js","WarehousePositionWMS/WarehousePositionWMS.js","ItemWMS/ItemWMS.js","AdjustItemWMS/AdjustItemWMS.js","FulfillmentOrderWMSPriority/FulfillmentOrderWMSPriority.js","LockSalesOrder/LockSalesOrder.js","UnlockSalesOrder/UnlockSalesOrder.js","ItemCountWMS/ItemCountWMS.js","CreateItemCountWMS/CreateItemCountWMS.js","GroupCaption/GroupCaption.js","POSuggestionsReport/POSuggestionsReport.js","ItemPOSuggestion/ItemPOSuggestion.js","WarehousePOSuggestion/WarehousePOSuggestion.js","supercolchones.png","aws-exports.js","GlobalSearch/gsItem.js","GlobalSearch/gsGroup.js","Main.js","devextreme-license.ts","reportWebVitals.js","index.js"],"names":["Home","props","status","class","src","alt","id","Rastreopedidos","action","setAction","useState","window","location","href","indexOf","icon","faTruck","size","className","target","method","htmlFor","type","name","placeholder","value","DownloadInvoice","downloadInvoicePayload","setDownloadInvoicePayload","folioPedido","importePedido","apellido","pedidoValido","urlPDF","urlXML","nombreXML","nombrePDF","visibleLoadPanel","setVisibleLoadPanel","visibleToast","setVisibleToast","messageToast","setMessageToast","typeToast","setTypeToast","formDownloadInvoiceRef","setFormDownloadInvoiceRef","React","createRef","onFieldDatosGeneralesChanged","useCallback","e","payload","JSON","parse","stringify","onHidingToast","faFileDownload","onClick","async","current","isValid","instance","validate","brokenRules","message","validaFacturaResponse","myInit","headers","body","API","post","validaFactura","result","toString","faSearch","downloadFileResponse","url","URL","createObjectURL","Blob","link","document","createElement","setAttribute","appendChild","click","parentNode","removeChild","downloadXMLFile","faFileAlt","downloadPDFFile","faFilePdf","shadingColor","visible","showIndicator","shading","showPane","hideOnOutsideClick","onHiding","displayTime","width","position","my","at","of","offset","labelMode","formData","disabled","showColonAfterLabel","labelLocation","colCount","ref","onFieldDataChanged","dataField","editorOptions","readOnly","inputAttr","text","editorType","format","currency","precision","Attendance","history","useHistory","mapRef","useRef","latitude","setLatitude","longitude","setLongitude","activateButton","setActivateButton","assistanceRecords","setAssistanceRecords","currentLocation","setCurrentLocation","setValue","grouping","setGrouping","autoExpandAll","setAutoExpandAll","getOrderDay","rowData","Date","OrderDate","getDay","filterBuilderPopupPosition","y","filterBuilder","customOperations","caption","dataTypes","hasValue","calculateFilterExpression","allowHierarchicalFields","gridTableroRef","setGridTableroRef","getUserAssistanceRecords","personal","attendanceAccess","apiName","path","Authorization","Auth","currentSession","getAccessToken","getJwtToken","queryStringParameters","username","currentAuthenticatedUser","userAssistanceGet","get","push","reload","postAssitance","latitud","longitud","ubicacion","userAssistancePost","ok","getAssistanceRecords","useEffect","map","keys","userLocations","userLocationsGet","getUserLocations","locations","circles","userLocationIndex","singleUserLocation","center","Longitud","Latitud","circle","turf","steps","units","validLocation","coordinates","geometry","Nombre","createMap","container","zoom","geolocate","maplibregl","GeolocateControl","positionOptions","enableHighAccuracy","trackUserLocation","addControl","on","data","Object","valid","keyIndex","singleKey","centerLatitud","centerLongitud","centerLatLong","LngLat","userLocationLatLong","coords","distanceTo","getLayer","removeLayer","getSource","removeSource","addSource","addLayer","source","paint","trigger","NavigationControl","Marker","setLngLat","addTo","initializeMap","remove","faMapMarkerAlt","faClock","refresh","faArrowsRotate","onValueChanged","height","columnsAutoWidth","dataSource","allowColumnReordering","allowColumnResizing","columnResizingMode","showBorders","rowAlternationEnabled","showRowLines","showColumnLines","onExporting","workbook","Workbook","worksheet","addWorksheet","exportDataGrid","component","autoFilterEnabled","then","xlsx","writeBuffer","buffer","saveAs","cancel","rowRenderingMode","defaultPageSize","allowedPageSizes","displayMode","showPageSizeSelector","showInfo","showNavigationButtons","enabled","mode","allowSelectAll","selectByClick","recursive","storageKey","groupIndex","dataType","dxDateBox","defaultOptions","options","dateSerializationFormat","dxNumberBox","step","Pricelist","Component","constructor","super","this","state","items","allitems","listNames","searchItem","selectedItem","sucursal","handleSearch","bind","columnaClave","getPricelist","itemIndex","singleItem","Orden","key","setState","event","keyword","toLowerCase","slice","Articulo","Descripcion1","Categoria","Grupo","item","ImagenURL","render","onChange","version","x","viewBox","d","header","index","list","Commission","commissionRecords","setCommissionRecords","commissionTotalRecords","setCommissionTotalRecords","chartTotalRecords","setChartTotalRecords","commissionTotalYear","setCommissionTotalYear","isDetail","setIsDetail","commissionPayload","setCommissionPayload","detail","autoExpandAllLista","setAutoExpandAllLista","autoExpandAllTotal","setAutoExpandAllTotal","getCommissionRecords","commissionsGet","viewCommissionButton","ID","metaKey","ctrlKey","Personal","payloadGet","getCommissionPayload","cancelViewButton","getCommission","total","years","commissionTotalIndex","singleCommissionTotal","exists","yearsIndex","anio","year","getFullYear","chartPayloadtmp","commissionTotalRecordsIndex","singleCommissionTotalRecord","addEventListener","hash","getCommissionList","initialize","match","isExact","pathname","replace","faList","faSackDollar","Movimiento","deferRendering","showNavButtons","title","keyExpr","alignment","cellRender","to","faGlasses","column","summaryType","valueFormat","displayFormat","showInGroupFooter","showInColumn","defaultValue","palette","argumentField","valueField","ignoreEmptyPoints","nameField","exact","faArrowRotateLeft","Incentive","incentiveRecords","setIncentiveRecords","incentiveTotalRecords","setIncentiveTotalRecords","incentiveTotalYear","setIncentiveTotalYear","incentiveTotalListRecords","setIncentiveTotalListRecords","vendors","setVendors","incentivePayload","setIncentivePayload","getIncentiveRecords","incentiveGet","viewIncentiveButton","getIncentivePayload","getIncentiveList","totals","vendor","totalIndex","singleTotal","vendorIndex","Proveedor","totalsIndex","singleTotals","mes","ClaveProveedor","parseFloat","Incentivo","incentiveTotalIndex","faTrophy","verticalAlignment","horizontalAlignment","itemTextPosition","PdfEditor","setClassName","Estatus","Checklist","listaPersonal","setListaPersonal","responsable","setResponsable","setId","checkListPayload","setCheckListPayload","habilidad","ventas","resultados","attachments","setAttachments","allowNew","setAllowNew","allowUpdating","setAllowUpdating","activateStopwatch","setActivateStopwatch","activateSaveButton","setActivateSaveButton","activateDeleteButton","setActivateDeleteButton","sucursales","setSucursales","personales","setPersonales","gridPersonalRef","setGridPersonalRef","gridVentasRef","setGridVentasRef","evaluacion","store","CustomStore","load","loadOptions","sqlFilter","forEach","i","undefined","isNotEmpty","filters","filtersLength","length","singleFilter","singleFilterType","singleFilterIsArray","Array","isArray","singleFilterIsDate","subFiltersLength","i2","singleSubFilter","singleSubFilterType","singleSubFilterIsArray","singleSubFilterIsDate","subSubFiltersLength","i3","singleSubSubFilter","singleSubSubFilterType","singleSubSubFilterIsArray","singleSubSubFilterIsDate","subSubSubFiltersLength","i4","singleSubSubSubFilter","singleSubSubSubFilterType","singleSubSubSubFilterIsArray","singleSubSubSubFilterIsDate","subSubSubSubFiltersLength","i5","singleSubSubSubSubFilter","singleSubSubSubSubFilterType","singleSubSubSubSubFilterIsDate","toISOString","split","records","checklistAccess","mov","checkListGet","getCheckListRecords","totalCount","getRecords","catch","Error","startStopwatch","confirm","payloadPost","editChecklistButton","attachmentsGet","Storage","attachmentsAux","attachmentsGetIndex","singleAttachmentsGet","singleAttachment","pop","isDirectory","getCheckListPayload","repaint","InicioEvaluacion","renderMap","newButton","cancelEditButton","saveButton","PersonalAsignado","SucursalAsignada","saveEditData","s3Bucket","_config","AWSS3","bucket","newID","confirmButton","printButton","baseUrl","open","sucursalDataSource","DataSource","paginate","personalDataSource","fechaEmisionEditorOptions","movimientoEditorOptions","sucursalAsignadaEditorOptions","displayExpr","valueExpr","searchEnabled","personalAsignadoEditorOptions","inicioEvaluacionEditorOptions","finEvaluacionEditorOptions","duracionEvaluacionEditorOptions","ventasEditorOptions","metasEditorOptions","ticketPromedioEditorOptions","resultadoEditorOptions","overrideOnValueChanged","parentType","uploadChunk","file","uploadInfo","put","chunkBlob","contentType","ACL","bucketName","Key","fileName","err","console","log","onAttachmentDeleting","onItemDownloading","blob","filename","a","download","clickHandler","setTimeout","revokeObjectURL","removeEventListener","downloadBlob","Body","onAttachmentOpen","openBlob","onRowInsertedGridPersonal","Trabajador","listaPersonalAux","listaPersonalAuxIndex","onRowRemovedGridPersonal","finalListaPersonal","singleListaPersonalAux","refreshButton","payloadNew","deleteButton","getResponsableList","responsableGetList","getResponsableRecords","sucursalesGet","sucursalesTmp","sucursalesGetIndex","singleSucursalesGet","singleSucursal","Sucursal","getSucursales","includeInactive","personalesGet","personalesTmp","personalesGetIndex","singlePersonalesGet","singlePersonal","ApellidoPaterno","ApellidoMaterno","getPersonal","faUserSecret","newChecklist","defaultFilterValue","remoteOperations","filtering","faPencilAlt","faSave","faClipboardCheck","faStopwatch","faTrash","cssClass","onEditorPreparing","repaintChangesOnly","onRowInserted","onRowRemoved","allowAdding","allowDeleting","useIcons","showEditorAlways","showText","allowEditing","multiple","accept","uploadMode","chunkSize","maxFileSize","fileSystemProvider","onItemDeleting","onSelectedFileOpened","create","copy","move","delete","rename","upload","checklist","consecutivos","celulares","pedidos","pagos","billetemxn","monedamxn","billeteusd","monedausd","cheque","tarjeta","valedespensa","valesaldofavor","celulargerente","gasadmingerente","gasolinagerente","billetemxngerente","monedamxngerente","tarjetabancgerente","valegasgerente","conDiferenciaCajaMenor","setConDiferenciaCajaMenor","conReposicionCajaMenor","setConReposicionCajaMenor","conDiferenciaGteCajaChica","setConDiferenciaGteCajaChica","autoExpandAllChecklist","setAutoExpandAllChecklist","gridPedidosRef","setGridPedidosRef","gridPagosRef","setGridPagosRef","gridBilleteMXNRef","setGridBilleteMXNRef","gridMonedaMXNRef","setGridMonedaMXNRef","gridBilleteUSDRef","setGridBilleteUSDRef","gridMonedaUSDRef","setGridMonedaUSDRef","gridChequeRef","setGridChequeRef","gridTarjetaRef","setGridTarjetaRef","gridValeDespensaRef","setGridValeDespensaRef","gridValeRef","setGridValeRef","gridGasAdminGerenteRef","setGridGasAdminGerenteRef","gridGasolinaGerenteRef","setGridGasolinaGerenteRef","gridBilleteMXNGerenteRef","setGridBilleteMXNGerenteRef","gridMonedaMXNGerenteRef","setGridMonedaMXNGerenteRef","gridTarjetaBancGerenteRef","setGridTarjetaBancGerenteRef","gridValesGasGerenteRef","setGridValesGasGerenteRef","datosArqueoRef","setDatosArqueoRef","datosArqueoGerenteRef","setDatosArqueoGerenteRef","onFieldDatosChecklistChanged","onFieldDatosArqueoGerenteChanged","ArqDiferencia","ArqGteReposicion","ArqGteDiferencia","onAutoExpandAllChecklistChanged","noVendedoresOptions","noAuxiliaresOptions","marcaEditorOptions","modeloEditorOptions","numeroCelularEditorOptions","mask","importeGridEditorOptions","importeEditorOptions","cantidadEditorOptions","arqDiferenciaEditorOptions","arqGteReposicionMontoEditorOptions","arqGteFaltanteEditorOptions","arqDineroDevueltoEditorOptions","uppercaseEditorOptions","uppercaseCaratulaAudEditorOptions","denominacionBilleteMXN","denominacionMonedaMXN","denominacionBilleteUSD","denominacionMonedaUSD","overrideOnValueChangedArqueo","actualizaImporteArqueo","Denominacion","newData","Cantidad","oldData","Importe","insertaImporteArqueo","actualizaImporteCajaMenor","importePedidos","importePagos","gridPedidos","gridPagos","getTotalSummaryValue","formDatosArqueo","updateData","actualizaOtroImporteCajaMenor","importeBilleteMXN","importeMonedaMXN","importeBilleteUSD","importeMonedaUSD","importeCheque","importeTarjeta","importeValeDespensa","importeVale","gridBilleteMXN","gridMonedaMXN","gridBilleteUSD","gridMonedaUSD","gridCheque","gridTarjeta","gridValeDespensa","gridVale","actualizaGastosGteCajaChica","importeAdministrativo","importeGasolina","gridGasAdminGerente","gridGasolinaGerente","formDatosArqueoGerente","actualizaDictamenGteCajaChica","importeBilleteMXNGerente","importeMonedaMXNGerente","importeTarjetaBancGerente","importeValeGasGerente","gridBilleteMXNGerente","gridMonedaMXNGerente","gridTarjetaBancGerente","gridValesGasGerente","faUserTie","newChecklistAud","colSpan","onRowUpdated","onRowUpdating","onRowInserting","vehiculonissan","celvehiculonissan","motivoCancelacion","setMotivoCancelacion","activateVoidButton","setActivateVoidButton","vehiculos","setVehiculos","conLicenciaConducir","setConLicenciaConducir","conTarjetaGasolina","setConTarjetaGasolina","conPolizaSeguro","setConPolizaSeguro","conPlacas","setConPlacas","formDatosGeneralesRef","setFormDatosGeneralesRef","onFieldVehiculoNissanChanged","LicenciaConducir","TarjetaGasolina","PolizaSeguro","Placas","NumeroVehiculo","cancelChecklistButton","MotivoCancelacion","vehiculoDataSource","vehiculoEditorOptions","motivoCancelacionEditorOptions","placaEditorOptions","anioEditorOptions","marcaVehiculoEditorOptions","licenciaConducirEditorOptions","tarjetaGasolinaEditorOptions","polizaSeguroEditorOptions","placasEditorOptions","checkEngineApEncEditorOptions","buttons","stylingMode","indBateriaEditorOptions","aceiteApEncEditorOptions","obsFrenoManoEditorOptions","obsIntermitentesEditorOptions","obsCinturonSeguridadEditorOptions","obsDireccionalesEditorOptions","obsFrenosABSEditorOptions","obsLucesBajasEditorOptions","obsLucesAltasEditorOptions","formDatosGenerales","vehiculosIndex","singleVehiculo","Placa","Anio","Descripcion","getMotivoCancelacionList","getMotivoCancelacionRecords","motivos","motivoIndex","vehiculoGetList","getVehiculo","faTruckMoving","newChecklistVeh","faWindowClose","PdfDocument","numPages","setNumPages","pageNumber","setPageNumber","usuario","setUsuario","pdfDocument","setPdfDocument","setOk","groups","signInUserSession","accessToken","okAdmin","isadmin","DocumentViewer","pdfGet","fontFamily","opacity","rotate","show","textColor","textSize","onLoadSuccess","cMapUrl","cMapPacked","standardFontDataUrl","onItemClick","itemPageNumber","Vacation","vacationPayload","setVacationPayload","payrollauth","allowUpdatingVoid","setAllowUpdatingVoid","allowUpdatingGrid","setAllowUpdatingGrid","activateConfirmButton","setActivateConfirmButton","activateCancelButton","setActivateCancelButton","motivoRechazo","setMotivoRechazo","nombreSucursalEditorOptions","nombreEmpleadoEditorOptions","fechaIngresoEditorOptions","antiguedadEditorOptions","fechaDEditorOptions","fechaAEditorOptions","numeroDiasEditorOptions","fondoDisponibleEditorOptions","restanteDisponibleEditorOptions","motivoRechazoEditorOptions","MotivoRechazo","personalCubreEditorOptions","PersonalCubre","observacionesEditorOptions","vacationAccess","vacationsGet","getVacationRecords","editVacationButton","getVacationPayload","isPayrollAuth","trim","toUpperCase","Supervisor","payrollauthIndex","singlePayrollauth","cancelButton","onFieldDatosVacacionChanged","FechaD","FechaA","daysResult","NumeroDias","getMotivoRechazoList","getMotivoRechazoRecords","myInitPersonal","personalGet","personalestmp","personalIndex","faUmbrellaBeach","faTrashAlt","faBan","I18n","putVocabularies","translations","setLanguage","es","Signin","components","Header","tokens","useTheme","View","textAlign","padding","space","large","Footer","SignIn","Heading","xl","level","toResetPassword","useAuthenticator","Authenticator","formFields","signIn","labelHidden","label","isRequired","order","password","loginMechanisms","hideSignUp","Signout","Register","signUpPayload","setSignUpPayload","emailaddress","formSignUpRef","setFormSignUpRef","faUserPlus","email","apiNameToken","pathToken","myInitToken","validationToken","signUp","attributes","validationData","qs","Value","error","Users","userName","setUserName","userRecords","setUserRecords","conAsistencia","setConAsistencia","conChecklist","setConChecklist","conChecklistVeh","setConChecklistVeh","conChecklistAud","setConChecklistAud","conVacaciones","setConVacaciones","conProcesarFacturas","setConProcesarFacturas","conProcesarFacturasSucursal","setConProcesarFacturasSucursal","conProcesarFacturasBodega","setConProcesarFacturasBodega","conEstimate","setConEstimate","conLostDeal","setConLostDeal","conSalesOrder","setConSalesOrder","conInvoice","setConInvoice","conDirectDelivery","setConDirectDelivery","conDirectReturn","setConDirectReturn","conDeliveryRequest","setConDeliveryRequest","conReturnRequest","setConReturnRequest","conTransferOrder","setConTransferOrder","conSalesOrderMod","setConSalesOrderMod","conShipmentRequest","setConShipmentRequest","conCashRegister","setConCashRegister","conCustomerPayment","setConCustomerPayment","conInvTransferOrder","setConInvTransferOrder","conInventoryTransfer","setConInventoryTransfer","conInvItemFulfillment","setConInvItemFulfillment","conInvItemReceipt","setConInvItemReceipt","conSendWMS","setConSendWMS","conReceiveWMS","setConReceiveWMS","conProductsWMS","setConProductsWMS","conCreateLabelWMS","setConCreateLabelWMS","conReceiveOrderWMS","setConReceiveOrderWMS","conFulfillmentOrderWMS","setConFulfillmentOrderWMS","conAdjustItemWMS","setConAdjustItemWMS","conItemCountWMS","setConItemCountWMS","conPOSuggestionsReport","setConPOSuggestionsReport","plazas","setPlazas","usuarios","setUsuarios","agentes","setAgentes","userPayload","setUserPayload","useMemo","plazasTmp","sucursalIndex","existe","plazaIndex","getUsuario","usuariosGet","getAgente","agentesGet","getUsersList","sucursalList","personalList","usuarioList","agenteList","myInitCognito","NextToken","restCognito","users","usernamereq","usersGet","singleUserIndex","singleUser","addUser","Username","Enabled","isAdmin","lastModifiedDate","UserLastModifiedDate","createdDate","UserCreateDate","cognitoUserStatus","UserStatus","attributeIndex","Attributes","singleAttribute","Name","Email","usersGetIndex","singleUserGet","Usuario","Agente","AsistenciaPlaza","CheckList","CheckListAud","ChecklistPlaza","CheckListVeh","Document","Kibana","ProcesarFacturas","ProcesarFacturasSucursal","ProcesarFacturasBodega","PriceList","AfectarFacturas","VacationPlaza","NewCheckList","NewCheckListAud","NewCheckListVeh","Estimate","LostDeal","SalesOrder","Invoice","DirectDelivery","DirectReturn","DeliveryRequest","ReturnRequest","TransferOrder","SalesOrderMod","ShipmentRequest","CashRegister","CustomerPayment","InvTransferOrder","InvLevels","InvLevelsIncCost","Kardex","ApproveDelivery","VoidDeliveryTransactions","SalesOrderModUpdatePrices","ApproveSalesOrderMod","RegenerateCFDi","SendCFDi","InvItemFulfillment","InvItemReceipt","RepComparativoVentas","POSuggestionsReport","POSuggestionsReportCfg","ExploreBarcodes","ExploreBarcodeCosts","InventoryTransfer","SalesPlaza","EstimateLevel","LostDealLevel","SalesOrderLevel","InvoiceLevel","DirectDeliveryLevel","DirectReturnLevel","DeliveryRequestLevel","ReturnRequestLevel","TransferOrderLevel","SalesOrderModLevel","ShipmentRequestLevel","CashRegisterLevel","CustomerPaymentLevel","InvTransferOrderLevel","ApproveInvTransferOrder","ApproveInventoryTransfer","InventoryTransferLevel","InvItemFulfillmentLevel","InvItemReceiptLevel","SendWMS","PickWMS","PackWMS","ShipWMS","ReceiveWMS","ProductsWMS","CreateLabelWMS","CreateLabelWMSLevel","ReceiveOrderWMS","FulfillmentOrderWMS","AssignFulfillmentOrderWMS","ReceiveOrderWMSLevel","FulfillmentOrderWMSLevel","MoveItemWMS","AdjustItemWMS","AdjustmentWMS","ApproveAdjustItemWMS","MoveWMS","CountWMS","CloseSalesOrder","AdjustItemWMSLevel","ItemCountWMS","ItemCountWMSLevel","ApproveItemCountWMS","singleSucursalIndex","singlePersonalIndex","singleUsuarioIndex","singleUsuario","singleAgenteIndex","singleAgente","editUserButton","propsUsername","apiNameCognito","pathCognito","userGetCognito","userAttributes","user","UserAttributes","asistenciaPlaza","checklistPlaza","vacationPlaza","salesPlaza","apiNameGroups","pathGroups","myInitGroups","userGroupsGet","Groups","singleGroup","GroupName","getUserPayload","deleteUser","Password","confirmpassword","ConfirmPassword","group","agente","isenabled","join","salesAccess","grupo","onAutoExpandAllChanged","usuarioDataSource","agenteDataSource","userNameEditorOptions","passwordEditorOptions","isAdminOptions","isAdminEditorOptions","showClearButton","enabledOptions","enabledEditorOptions","sucursalEditorOptions","personalEditorOptions","usuarioEditorOptions","agenteEditorOptions","asistenciaPlazaEditorOptions","openOnFieldClick","checklistPlazaEditorOptions","vacationPlazaEditorOptions","sendWMSEditorOptions","productsWMSEditorOptions","salesPlazaEditorOptions","afectarFacturasEditorOptions","newChecklistEditorOptions","newChecklistAudEditorOptions","newChecklistVehEditorOptions","levelOptions","estimateLevelEditorOptions","lostDealLevelEditorOptions","salesOrderLevelEditorOptions","invoiceLevelEditorOptions","directDeliveryLevelEditorOptions","directReturnLevelEditorOptions","deliveryRequestLevelEditorOptions","returnRequestLevelEditorOptions","transferOrderLevelEditorOptions","salesOrderModLevelEditorOptions","shipmentRequestLevelEditorOptions","cashRegisterLevelEditorOptions","customerPaymentLevelEditorOptions","invTransferOrderLevelEditorOptions","invItemFulfillmentLevelEditorOptions","invItemReceiptLevelEditorOptions","inventoryTransferLevelEditorOptions","createLabelWMSLevelEditorOptions","receiveOrderWMSLevelEditorOptions","fulfillmentOrderWMSLevelEditorOptions","assignFulfillmentOrderWMSEditorOptions","poSuggestionsReportCfgEditorOptions","adjustItemWMSLevelEditorOptions","itemCountWMSLevelEditorOptions","approveItemCountWMSLevelEditorOptions","approveAdjustItemWMSLevelEditorOptions","approveInventoryTransferEditorOptions","salesOrderModPermissionEditorOptions","toastPosition","faUser","PdfTemplate","templateRecords","setTemplateRecords","tipo","setTipo","getTemplateList","templatesGet","getTemplateRecords","Tipo","editTemplateButton","pathPayload","myInitPayload","apiNamePayload","invoices","downloadJSONButton","faDownload","PdfRender","viewer","setViewer","report","setReport","apiNameTemplate","pathTemplate","myInitTemplate","plantilla","Plantilla","idIndex","Almacen","Posicion","apiNameLicense","pathLicense","myInitLicense","stiLicense","Stimulsoft","Base","StiLicense","tmpOptions","Viewer","StiViewerOptions","appearance","scrollbarsMode","fullScreenMode","toolbar","showOpenButton","showSaveButton","tmpViewer","StiViewer","tmpReport","Report","StiReport","dataSet","System","Data","DataSet","readJson","dictionary","databases","clear","regData","renderHtml","Designer","StiDesignerOptions","showSaveDialog","showFileMenuNew","showFileMenuNewReport","showFileMenuOpen","showFileMenuSaveAs","showAboutButton","showFileMenu","showFileMenuAbout","showFileMenuClose","showFileMenuExit","showFileMenuInfo","showFileMenuNewDashboard","designer","StiDesigner","onSaveReport","jsonStr","saveToJsonString","alert","PasswordChange","newState","oldPassword","newPassword","confirmPassword","setPasswordPayload","passwordPayload","formPasswordRef","setFormPasswordRef","faKey","changePassword","ProcessInvoice","gridFacturasRef","setGridFacturasRef","nivel","invoicesGet","getInvoiceRecords","gridFacturas","getSelectedRowKeys","arrayInvoice","pdfArray","keysIndex","lambdaFunction","currentCredentials","credentials","lambda","Lambda","essentialCredentials","region","params","FunctionName","Payload","invoke","stack","afectarFacturas","faPlay","faPrint","onSelectionChanged","selectedRowKeys","selectedRowsData","onOptionChanged","off","clearSelection","selectAllMode","showCheckBoxesMode","permissionLevel","setPermissionLevel","estimatePayload","setEstimatePayload","shippingAddress","billingAddress","relatedRecords","movEstatusLog","lostDeal","setLostDeal","lostDealLevel","setLostDealLevel","salesOrder","setSalesOrder","salesOrderLevel","setSalesOrderLevel","fiscalRegimen","setFiscalRegimen","filtroUsoCFDI","setFiltroUsoCFDI","setAgente","setSucursal","listaPrecios","setListaPrecios","conceptos","setConceptos","condiciones","setCondiciones","colonias","setColonias","colonias1","setColonias1","activateUpdateGrid","setActivateUpdateGrid","acceptCustomValues","setAcceptCustomValue","activatePDFButton","setActivatePDFButton","activateUpdateForm","setActivateUpdateForm","activateAttachments","setActivateAttachments","activateSinAfectarPendienteFields","setActivateSinAfectarPendienteFields","activateSinAfectarFields","setActivateSinAfectarFields","activateCambiarCliente","setActivateCambiarCliente","activatePorLlamar","setActivatePorLlamar","activateCompra","setActivateCompra","activateBaja","setActivateBaja","activatePedido","setActivatePedido","activateVentaPerdida","setActivateVentaPerdida","activateSendEstimate","setActivateSendEstimate","conDatosIguales","setConDatosIguales","conCambiarCliente","setConCambiarCliente","conAutorizacionPrecio","setConAutorizacionPrecio","gridArticulosRef","setGridArticulosRef","tipoPedido","getEstimateRecords","estimatesGet","getCliente","getArticulo","ListaPreciosEsp","getListaPrecios","listaPreciosGet","getConceptos","modulo","conceptosGet","getCondiciones","condicionesGet","getFiscalRegimen","fiscalRegimenGet","getCodigoPostal","getColonia","CodigoPostal","isLoading","coloniasGet","getColonia1","storeCliente","searchValue","byKey","CteNombre","Cliente","storeArticulo","storeCodigoPostal","onSelectionClienteChanged","rfc","RFC","onSelectionCodigoPostalChanged","ClaveEstado","ClaveMunicipio","ClaveLocalidad","ClavePais","onSelectionCodigoPostal1Changed","rfcEditorOptions","rfc1EditorOptions","razonSocial1EditorOptions","telefonos1EditorOptions","direccion1EditorOptions","style","claveMunicipio1EditorOptions","claveLocalidad1EditorOptions","claveEstado1EditorOptions","clavePais1EditorOptions","nombreEditorOptions","telefonoEditorOptions","direccionEditorOptions","entreCallesEditorOptions","claveMunicipioEditorOptions","claveLocalidadEditorOptions","claveEstadoEditorOptions","clavePaisEditorOptions","emailEditorOptions","cambiarClienteEditorOptions","listaPreciosDataSource","conceptosDataSource","condicionesDataSource","coloniaDataSource","colonia1DataSource","scCodigoAutorizaPreciosEditorOptions","scFechaAutorizaPreciosEditorOptions","scMotivoAutorizaPreciosEditorOptions","scComentariosAutorizaPreciosEditorOptions","usuarioAutorizaEditorOptions","SCUsuarioAutorizaPrecios","tipoPedidoEditorOptions","SCTipoPedido","listaPreciosEditorOptions","conceptosEditorOptions","Concepto","condicionEditorOptions","Condicion","fiscalRegimenEditorOptions","FiscalRegimen","usoCFDIEditorOptions","acceptCustomValue","SATCatUsoCFDI","clienteEditorOptions","searchTimeout","clearButtonText","noDataText","codigoPostalEditorOptions","claveColoniaEditorOptions","ClaveColonia","codigoPostal1EditorOptions","claveColonia1EditorOptions","ClaveColonia1","getEstimatePayload","openRelatedRecordButton","redirect","faArrowUpRightFromSquare","estatusRelatedRecords","getUsoCFDIValido","tmpUsoCFDI","usoCFDIGet","usoCFDIIndex","singleUsoCFDI","ClaveUsoCFDI","sendEstimateFile","pdfFile","pdfFileContents","Promise","resolve","_","reader","FileReader","onloadend","readAsDataURL","ToAddresses","eMail","Subject","Source","Attachments","content","encoding","editButton","CodigoPostal1","DFIguales","SCCapturaCliente","SCCodigoAutorizaPrecios","Situacion","voidButton","callButton","wonButton","lostButton","lostDealButton","salesOrderButton","sendEstimateButton","fileKey","Mov","MovID","pdfPost","iconoSituacion","faFilterCircleDollar","faCirclePhone","faCartPlus","faCartMinus","urlID","datosFacturacionValidationCallback","onEditorArticulosPreparing","ev","option","min","onEditingStartArticulos","setCellValueArticulo","ArtDescripcion","Precio","Price","setCellValueCantidad","currentRowData","toFixed","setCellValuePrecio","faCommentDollar","faCirclePhoneButton","faCartPlusButton","faCartMinusButton","faHandshake","faThumbsDown","faEnvelope","onEditingStart","newRowPosition","setCellValue","calculateDisplayValue","validationCallback","lostDealPayload","setLostDealPayload","getLostDealRecords","lostDealGet","pedidoEditorOptions","origenEditorOptions","getlostDealPayload","salesOrderPayload","setSalesOrderPayload","customerPayment","setCustomerPayment","customerPaymentLevel","setCustomerPaymentLevel","directDelivery","setDirectDelivery","directDeliveryLevel","setDirectDeliveryLevel","deliveryRequest","setDeliveryRequest","deliveryRequestLevel","setDeliveryRequestLevel","directReturn","setdirectReturn","directReturnLevel","setdirectReturnLevel","returnRequest","setreturnRequest","returnRequestLevel","setreturnRequestLevel","transferOrder","settransferOrder","transferOrderLevel","setTransferOrderLevel","popupVisible","setPopupVisible","popupTitle","setPopupTitle","activateSeparado","setActivateSeparado","activateFacturable","setActivateFacturable","activateCustomerPayment","setActivateCustomerPayment","activateDirectDelivery","setActivateDirectDelivery","activateDeliveryRequest","setActivateDeliveryRequest","activateDirectReturn","setActivateDirectReturn","activateReturnRequest","setActivateReturnRequest","activateTransferOrder","setActivateTransferOrder","activatePrintInvoice","setActivatePrintInvoice","activateCSF","setActivateCSF","activatePUEPPD","setActivatePUEPPD","gridIconoAyudaRef","setGridIconoAyudaRef","storeAyuda","Icono","getSalesOrderRecords","salesOrdersGet","puePPDEditorOptions","folioeCommerceEditorOptions","importeTotaleCommerceEditorOptions","eCommerceFechaCreacionEditorOptions","plazaEntregaEditorOptions","getSalesOrderPayload","generateCFDiPDF","payloadFactura","IDFactura","MovimientoFactura","getInvoicePayload","blobToBase64","sendCFDiFiles","hideToast","xmlFile","xmlFileContents","sendCFDiPost","ImporteTotal","Anticipos","EstatusProg","MPR","csfButton","checkCFDiStatus","printInvoiceButton","reservedButton","billableButton","customerPaymentButton","SCRama","directDeliveryButton","deliveryRequestButton","transferOrderButton","directReturnButton","returnRequestButton","iconoProgramacion","iconoEntrega","PorcEntrega","faPlaneCircleExclamation","faPlaneCircleCheck","iconoPago","faCoins","faMoneyBill","iconoFactura","SCSituacionFact","iconoMPR","faRotateLeft","faBoxOpenFull","faBoxTaped","iconoEstatusGeneral","faBadgeCheck","faCircleExclamation","iconHelp","hidePopupInfo","helpButton","dragEnabled","showCloseButton","showTitle","scrollByContent","showScrollbar","allowCollapsing","faCircleInfo","faQrcode","faBoxOpenFullButton","faBoxTapedButton","faPiggyBank","faPersonDolly","faTruckFast","faRightLeft","faPersonCarryBox","faHandHoldingBox","faPrintButton","invoicePayload","setInvoicePayload","activateRegenerateCFDi","setActivateRegenerateCFDi","activateSendCFDi","setActivateSendCFDi","regenerateCFDi","sendCFDi","datosCFDIEditorOptions","cte_CorreoElectronico","cfdi_CFDIUUID","regenerateCFDiFilesButton","generateCFDiFiles","sendCFDiFilesButton","opener","faFileInvoiceDollar","faFiles","customerPaymentPayload","setCustomerPaymentPayload","requiereDigitosTarjeta","setRequiereDigitosTarjeta","esPostfechado","setEsPostfechado","formaPago","setFormaPago","setRegenerateCFDi","setSendCFDi","customerPaymentsGet","getCustomerPaymentRecords","nombreClienteEditorOptions","SCPedidoPagoUnico","impuestosEditorOptions","saldoPedidoEditorOptions","monedaEditorOptions","tipoCambioEditorOptions","scPedidoPagoUnicoEditorOptions","ctaDineroEditorOptions","notaCancelacionEditorOptions","devolucionSaldoEditorOptions","digitosTarjetaEditorOptions","max","postfechadoEditorOptions","fechaPostfechadoEditorOptions","storeSCReferencia","scReferencia","tmpSCReferencia","scReferenciaIndex","SCReferencia","getSCReferencia","formaPagoDataSource","formaCobroEditorOptions","grouped","FormaCobro","scReferenciaEditorOptions","SCUsuarioCancela","getCustomerPaymentPayload","SCPostfechado","getFormaPago","CFDIUUID","SCFechaPostfechado","SCDigitosTarjeta","SaldoPedido","generateInvoiceCFDiPDF","sendInvoiceCFDiFiles","SCCancelaNota","salesorder","screferencia","formaPagoGet","search","getSalesOrderInfo","Pedido","NombreCliente","Impuestos","getFormaPagoReferencia","formaPagoIndex","singleFormaPago","FormaPago","SCRequiereDigitosTarjeta","salesOrderModUpdatePrices","setSalesOrderModUpdatePrices","approveSalesOrderMod","setApproveSalesOrderMod","salesOrderModPayload","setSalesOrderModPayload","addItemPayload","setAddItemPayload","Action","Renglon","RenglonID","SCSerieLote","createCheckPayload","setCreateCheckPayload","SituacionGastosAdmin","PorcentajeGA","popupCheckVisible","setPopupCheckVisible","activateCustomSalesOrderField","setActivateCustomSalesOrderField","activateApproveButton","setActivateApproveButton","activateModifyData","setActivateModifyData","activateModifyItems","setActivateModifyItems","activateGetSalesOrderData","setActivateGetSalesOrderData","activateMoneyReturn","setActivateMoneyReturn","formAddItemRef","setFormAddItemRef","formCreateCheckRef","setFormCreateCheckRef","gridArticulosFinalesRef","setGridArticulosFinalesRef","gridArticulosAgregadosRef","setGridArticulosAgregadosRef","gridArticulosEliminadosRef","setGridArticulosEliminadosRef","salesOrderModGet","getSalesOrderModRecords","datosClienteEditorOptions","autorizacionEditorOptions","cancelacionTotalEditorOptions","saldoEditorOptions","precioEditorOptions","customerData","storePedido","pedidosGet","tmpPedidos","pedidosGetIndex","getPedidos","articuloEditorOptions","situacionGastosAdminEditorOptions","porcentajeGAEditorOptions","getSalesOrderModPayload","CancelacionTotal","ModificarDatos","ModificarMercancia","Autorizado","Motivo","approveButton","cancelSalesOrder","updateSalesOrderInfo","addItemButton","confirmAddButton","articulo","precio","cantidad","renglon","renglonid","scserielote","confirmCheckButton","situaciongastosadmin","porcentajega","createCoupon","createCheck","onFieldDatosModificacionChanged","getUsoCFDI","onFieldAddItemChanged","formAddItem","getItemPrice","price","deleteItem","VentaDRenglon","deleteItemButton","updateItem","updateItemButton","faPenFancy","hidePopupCheckInfo","faPenNib","faThumbsUp","faLightbulb","faBadgeDollar","faMoneyCheckDollar","resizeEnabled","addedItems","removedItems","cashRegisterPayload","setCashRegisterPayload","contextMenuItems","setContextMenuItems","activateDeleteGrid","setActivateDeleteGrid","activateGetCustPaymentButton","setActivateGetCustPaymentButton","activateDates","setActivateDates","activateClearPayments","setActivateClearPayments","gridTransaccionesCashRegisterRef","setGridTransaccionesCashRegisterRef","cashRegisterGet","getCashRegisterRecords","fechaRealDepositoEditorOptions","cajaEditorOptions","getCashRegisterPayload","parseInt","getCustPaymentsButton","updFechaListado","updFechaDeposito","releasePaymentsButton","contextMenuItemClick","deleteCustPymt","HabilitarLiberar","CxcID","deleteCustPymtButton","faCashRegister","faCalendarDays","faLinkSlash","voidDeliveryTransactions","setVoidDeliveryTransactions","approveDelivery","setApproveDelivery","directDeliveryPayload","setDirectDeliveryPayload","paqueteria","setPaqueteria","almacenes","setAlmacenes","activateCustomWarehouseField","setActivateCustomWarehouseField","activateGetItemButton","setActivateGetItemButton","activateSelectItemButton","setActivateSelectItemButton","activateCantidadButton","setActivateCantidadButton","activateCantidad2Button","setActivateCantidad2Button","activatePaqueteria","setActivatePaqueteria","directDeliveryGet","getDirectDeliveryRecords","numeroGuiaEditorOptions","almacenDataSource","paqueteriaDataSource","almacenEditorOptions","paqueteriaEditorOptions","Paqueteria","getDirectDeliveryPayload","EntregaPaqueteria","enableButtons","permissionGet","Permission","fnSCWebEnableTransactionButtons","RequiereAutorizacion","NumeroGuia","getItemsButton","selectAllButton","selectNothingButton","getAlmacenes","paqueteriaGet","getPaqueteria","onFieldDatosProgramacionChanged","Telefono","Direccion","Colonia","Estado","Municipio","Pais","itemData","faCircleCheck","faCircleX","directReturnPayload","setDirectReturnPayload","directReturnGet","getDirectReturnRecords","getDirectReturnPayload","deliveryRequestPayload","setDeliveryRequestPayload","deliveryRequestGet","getDeliveryRequestRecords","rutaEditorOptions","getDeliveryRequestPayload","returnRequestPayload","setReturnRequestPayload","returnRequestGet","getReturnRequestRecords","getReturnRequestPayload","transferOrderPayload","setTransferOrderPayload","transferOrderGet","getTransferOrderRecords","getTransferOrderPayload","shipmentRequestPayload","setShipmentRequestPayload","shipmentRequestGet","getShipmentRequestRecords","fechaProgramadaEditorOptions","getShipmentRequestPayload","faForklift","approveInvTransferOrder","invItemFulfillment","invItemFulfillmentLevel","invItemReceipt","invItemReceiptLevel","invTransferOrderPayload","setInvTransferOrderPayload","tipoDano","setTipoDano","autorizacionProveedor","setAutorizacionProveedor","observaciones","setObservaciones","activateSalidaTraspaso","setActivateSalidaTraspaso","activateReciboTraspaso","setActivateReciboTraspaso","getInvTransferOrderRecords","invTransferOrdersGet","getObservaciones","observacionesGet","observacionesDataSource","conceptoEditorOptions","almacenDestinoEditorOptions","AlmacenDestino","Observaciones","comentariosEditorOptions","getinvTransferOrderPayload","EstatusSalida","EstatusRecibo","itemFulfillmentButton","itemReceiptButton","faPalletBoxes","faLeft","faRight","dateFormatYYYYDDMM","date","month","getMonth","day","getDate","reportPayload","setReportPayload","ArticuloD","ArticuloA","categorias","setCategorias","grupos","setGrupos","formReporteRef","setFormReporteRef","gridKardexRef","setGridKardexRef","gridPlazasRef","setGridPlazasRef","fechaEditorOptions","categoriaDataSource","grupoDataSource","categoriaEditorOptions","grupoEditorOptions","excelButton","kardexSheet","gridKardex","exportDataGridExcel","topLeftCell","row","pdfButton","doc","jsPDF","jsPDFDocument","topLeft","columnWidths","customizeCell","gridCell","pdfCell","font","save","almacenesGet","tmpCategorias","categoriasGet","categoriasGetIndex","getCategorias","tmpGrupos","gruposGet","gruposGetIndex","getGrupos","faFileChartColumn","faFileExcel","kardex","gridInventarioRef","setGridInventarioRef","getInvLevelRecords","authCredentials","getAuthCredentials","lambdaResponse","InvocationType","promise","lambdaInvoke","SalesCompReport","gridSucursalesRef","setGridSucursalesRef","fechaAnteriorEditorOptions","icono","Diferencia","faEquals","faArrowUp","faArrowDown","fromDate","toDate","Title","Titulo","locationSheet","salesPlazaSheet","gridSucursales","gridPlazas","addPage","pdfMobileButton","calculateDiffPercent","summaryProcess","totalValue","Porcentaje","calculateDiffPercentPlaza","PorcentajePlazas","faMobile","calculateCustomSummary","approveInventoryTransfer","inventoryTransferPayload","setInventoryTransferPayload","motivoDano","setMotivoDano","getInventoryTransferRecords","inventoryTransfersGet","getTipoDano","tipoDanoGet","getMotivoDano","motivoDanoGet","getAutorizacionProveedor","autorizacionProveedorGet","tipoDanoDataSource","motivoDanoDataSource","autorizacionProveedorDataSource","tipoDanoEditorOptions","TipoDano","motivoDanoEditorOptions","MotivoDano","autorizacionProveedorEditorOptions","AutorizacionProveedor","descripcionDañoEditorOptions","observacionesProveedorEditorOptions","getinventoryTransferPayload","faWineGlassCrack","loginInfo","setLoginInfo","loginInfotmp","plaza","nombreSucursal","LabelWMS","labelWMSPayload","setLabelWMSPayload","gridBarcodeRef","setGridBarcodeRef","labelWMSGet","getLabelWMSRecords","getlabelWMSPayload","detailIndex","Barcode","faBarcode","faNoteSticky","ExploreBarcode","getBarcodeRecords","iconoProceso","SCWMSID","CantidadReservada","gridBarcodeCostsRef","setGridBarcodeCostsRef","moveItemWMSPayload","setMoveItemWMSPayload","gridItemsRef","setGridItemsRef","moveItemWMSGet","getMoveItemWMSRecords","nombreAlmacenEditorOptions","getMoveItemWMSPayload","faCartFlatbedSuitcase","wmsmessage","receiveOrderWMSPayload","setReceiveOrderWMSPayload","activateLabelButton","setActivateLabelButton","activateEnableReceive","setActivateEnableReceive","receiveOrderWMSGet","getReceiveOrderWMSRecords","referenciaEditorOptions","tipoReciboEditorOptions","getReceiveOrderWMSPayload","TipoRecibo","ActivarRecibo","enableReceiveButton","printLabelButton","enableReceiveItem","CantidadRecibida","cancelReceiveItemButton","finishReceiveItemButton","faCheckToSlot","enableReceiveItemButton","faScannerTouchscreen","faInboxIn","assignFulfillmentOrderWMS","setAssignFulfillmentOrderWMS","fulfillmentOrderWMSPayload","setFulfillmentOrderWMSPayload","assignFulfillmentOrderWMSPayload","setAssignFulfillmentOrderWMSPayload","NombreArticulo","assignRenglon","setAssignRenglon","assignBarcode","setAssignBarcode","usuarioPick","setUsuarioPick","usuarioPack","setUsuarioPack","popupSingleBarcodeVisible","setPopupSingleBarcodeVisible","popupSingleBarcodeTitle","setPopupSingleBarcodeTitle","popupMultipleBarcodeVisible","setPopupMultipleBarcodeVisible","popupMultipleBarcodeTitle","setPopupMultipleBarcodeTitle","activateEnableFulfillment","setActivateEnableFulfillment","formAssignFulfillmentOrderWMSRef","setFormAssignFulfillmentOrderWMSRef","formAssignMultipleFulfillmentOrderWMSRef","setFormAssignMultipleFulfillmentOrderWMSRef","gridAssignFulfillmentOrderWMSRef","setGridAssignFulfillmentOrderWMSRef","gridAssignMultipleFulfillmentOrderWMSRef","setGridAssignMultipleFulfillmentOrderWMSRef","fulfillmentOrderWMSGet","getFulfillmentOrdewWMSRecords","tipoSurtidoEditorOptions","usuarioPickAsignadoEditorOptions","nombreArticuloEditorOptions","barcodeEditorOptions","posicionEditorOptions","getfulfillmentOrderWMSPayload","getUsuarioPick","usuarioPickGet","getUsuarioPack","usuarioPackGet","getAssignFulfillmentOrderWMSPayload","assignFulfillmentOrderWMSGet","ActivarSurtido","enableFulfillmentButton","enableFulfillItem","cancelItemFulfillmentButton","finishItemFulfillmentButton","enableItemFulfillmentButton","assignFulfillItem","EtiquetaPorPieza","assignFulfillmentButton","faHand","CantidadProcesada","CantidadEmpacada","valueChangeEvent","hideMultiplePopupInfo","confirmAssignMultipleButton","gridAssignMultipleFulfillmentOrderWMS","getTotalSelection","selectedData","getSelectedRowsData","dialogResult","arrayBarcodes","selectedDataIndex","singleSelectedData","CantidadA","Barcodes","confirmAssignButton","onSelectionAssignChanged","onEditingAssignStart","isRowSelected","deselectedIndex","currentDeselectedRowKeys","deselectedKey","rowIndex","getRowIndexByKey","cellValue","faInboxOut","recalculateWhileEditing","WarehouseWMS","almacen","setAlmacen","almPosRecibo","setAlmPosRecibo","almPosTransito","setAlmPosTransito","almPosSurtido","setAlmPosSurtido","wms","setWMS","warehousePayload","setWarehousePayload","warehouseGet","getWarehouseRecords","getWarehousePayload","getAlmPosTransito","posicionesGet","getAlmSurtido","getAlmPosRecibo","WMS","posicionReciboDefEditorOptions","posicionTransitoDefEditorOptions","posicionPrioritariaEditorOptions","faWarehouseFull","WarehousePositionWMS","posicion","setPosicion","warehousePositionWMSPayload","setWarehousePositionWMSPayload","warehousePositionWMSGet","getWarehousePositionWMSRecords","getWarehousePositionWMSPayload","estatusOptions","estatusEditorOptions","ArticuloEsp","posicionReciboEditorOptions","posicionTransitoEditorOptions","invDisponibleEditorOptions","pasilloEditorOptions","nivelEditorOptions","zonaEditorOptions","faShelves","ItemWMS","setArticulo","itemPayload","setItemPayload","getItemRecords","getItemPayload","faBedFront","approveAdjustItemWMS","setApproveAdjustItemWMS","adjustItemWMSPayload","setAdjustItemWMSPayload","posiciones","setPosiciones","submensaje","setSubmensaje","activateWarehouse","setActivateWarehouse","subMensajeOptions","getAlmPos","getAlmPosInfo","getAdjustItemWMSRecords","barcodeNuevoEditorOptions","submensajeEditorOptions","Submensaje","getAdjustItemWMSPayload","onRowInsertedArticulos","onRowRemovedArticulos","setCellValueBarcode","info","CantidadOriginal","setCellValuePosicion","faPenToSquare","relatedrecords","FulfillmentOrderWMSPriority","fulfillmentOrderWMSPriorityPayload","setFulfillmentOrderWMSPriorityPayload","getfulfillmentOrderWMSPriorityPayload","sliderEditorOptions","tooltip","showMode","showRange","faSort","LockSalesOrder","gridLockSalesOrderRef","setGridLockSalesOrderRef","gridLockSalesOrder","arraySalesOrder","salesorders","faLockKeyhole","UnlockSalesOrder","gridUnlockSalesOrderRef","setGridUnlockSalesOrderRef","gridUnlockSalesOrder","faLockKeyholeOpen","approveItemCountWMS","setApproveItemCountWMS","itemCountWMSPayload","setItemCountWMSPayload","activateEnableItemCount","setActivateEnableItemCount","getUsuarioConteoCiclico","ItemCountWMSGet","getItemCountWMSRecords","getitemCountWMSPayload","enableItemCountButton","enableCountItem","cancelCountButton","enableCountButton","recountItem","recountButton","faRotate","faArrowsSpin","CreateItemCountWMS","createItemCountWMSPayload","setCreateItemCountWMSPayload","posicionDataSource","createButton","arrayItem","selectedItems","getProveedor","storeProveedor","proveedorEditorOptions","faToolbox","GroupCaption","iconName","Fragment","poSuggestionsReportCfg","setPOSuggestionsReportCfg","ejercicios","setEjercicios","periodosVenta","setPeriodosVenta","niveles","setNiveles","periodos","setPeriodos","proveedores","setProveedores","provNombre","setProvNombre","artDescripcion","setArtDescripcion","plazasentrega","setPlazasEntrega","proveedoresSeleccionados","setProveedoresSeleccionados","tabSelectedIndex","setTabSelectedIndex","Nivel","PeriodosVenta","titles","PeriodoNombre","Periodo1Nombre","Periodo2Nombre","Periodo3Nombre","Periodo_ant_Nombre","Periodo1_ant_Nombre","Periodo2_ant_Nombre","Periodo3_ant_Nombre","PFuturoNombre1","PFuturoNombre2","PFuturoNombre3","PFuturoNombre4","PFuturoNombre5","PFuturoNombre6","PFuturoNombre7","Total_Nombre","Total_ant_Nombre","detailWHS","specificWHS","po","allowFuture","setAllowFuture","future1","setFuture1","future2","setFuture2","future3","setFuture3","future4","setFuture4","future5","setFuture5","future6","setFuture6","future7","setFuture7","gridSugerenciaRef","setGridSugerenciaRef","gridSugerenciaAlmRef","setGridSugerenciaAlmRef","gridSugerenciaAlmEspRef","setGridSugerenciaAlmEspRef","gridSugerenciaOCRef","setGridSugerenciaOCRef","ejercicioEditorOptions","Ejercicio","periodosVentaEditorOptions","periodoEditorOptions","Periodo","PlazaEntrega","proveedoresSeleccionadosIndex","compressedData","Uint8Array","from","atob","c","charCodeAt","decompressedData","pako","ungzip","payloadIndex","Nom","Prov","Descr","Art","singleDetailWHS","D","cfgItems","cfgLocations","getEjercicios","yearAux","ejerciciosTmp","getPeriodos","periodosTmp","getPlazasEntrega","plazasEntregaGet","syncDataGridSelection","dataGridOnSelectionChanged","dataGridRender","hoverStateEnabled","pageSize","tmpProvNombre","proveedoresGet","proveedoresGetIndex","singleProveedorGet","tmpArtDescripcion","articulosGet","articulosGetIndex","singleArticuloGet","groupCaptionNamedRender","onRowPrepared","rowType","Color","rowElement","backgroundColor","faBoxCheck","faWarehouse","captionRender","contentRender","selectedIndex","defaultSortOrder","ItemPOSuggestion","conSeguimientoPOEsBox","setConSeguimientoPOEsBox","colores","color","itemsGet","SeguimientoPOEsBox","SeguimientoPOColor","seguimientoPONoPatasEditorOptions","paintItemColor","divClass","seguimientoPOColorEditorOptions","itemTemplate","fieldTemplate","itemRender","itemPaintItemColor","WarehousePOSugestion","getPlazas","plazasGet","plazasDataSource","seguimientoPOPlazaEditorOptions","SeguimientoPOPlaza","awsmobile","gsItem","gsGroup","faUsers","Main","anchorHome","setAnchorHome","openHome","Boolean","globalSearchRef","setGlobalSearchRef","anchorCustomer","setAnchorCustomer","openCustomer","handleCloseCustomer","anchorEmployee","setAnchorEmployee","openEmployee","handleCloseEmployee","anchorSales","setAnchorSales","openSales","handleCloseSales","anchorLogistics","setAnchorLogistics","openLogistics","handleCloseLogistics","anchorWMS","setAnchorWMS","openWMS","handleCloseWMS","anchorReports","setAnchorReports","openReports","handleCloseReports","anchorAccount","setAnchorAccount","openAccount","handleCloseAccount","anchorConfiguration","setAnchorConfiguration","openConfiguration","handleCloseConfiguration","setStatus","setUsername","setIsadmin","setNombreSucursal","setPersonal","attendance","setAttendance","pricelist","setPricelist","commission","setCommission","incentive","setIncentive","setChecklist","checklistAud","setChecklistAud","checklistVeh","setChecklistVeh","vacation","setVacation","setChecklistAccess","setAttendanceAccess","setVacationAccess","setSalesAccess","kibana","setKibana","procesarFacturas","setProcesarFacturas","procesarFacturasSucursal","setProcesarFacturasSucursal","procesarFacturasBodega","setProcesarFacturasBodega","setAfectarFacturas","setNewChecklist","setNewChecklistAud","setNewChecklistVeh","estimate","setEstimate","invoice","setInvoice","setDirectReturn","setReturnRequest","setTransferOrder","salesOrderMod","setSalesOrderMod","shipmentRequest","setShipmentRequest","cashRegister","setCashRegister","invTransferOrder","setInvTransferOrder","repComparativoVentas","setRepComparativoVentas","poSuggestionsReport","setPOSuggestionsReport","exploreBarcodes","setExploreBarcodes","exploreBarcodeCosts","setExploreBarcodeCosts","inventoryTransfer","setInventoryTransfer","invLevels","setInvLevels","invLevelsIncCost","setInvLevelsIncCost","setKardex","estimateLevel","setEstimateLevel","invoiceLevel","setInvoiceLevel","setDirectReturnLevel","setReturnRequestLevel","salesOrderModLevel","setSalesOrderModLevel","shipmentRequestLevel","setShipmentRequestLevel","cashRegisterLevel","setCashRegisterLevel","invTransferOrderLevel","setInvTransferOrderLevel","inventoryTransferLevel","setInventoryTransferLevel","setApproveInvTransferOrder","setApproveInventoryTransfer","setInvItemFulfillment","setInvItemFulfillmentLevel","setInvItemReceipt","setInvItemReceiptLevel","createLabelWMS","setCreateLabelWMS","createLabelWMSLevel","setCreateLabelWMSLevel","receiveOrderWMS","setReceiveOrderWMS","receiveOrderWMSLevel","setReceiveOrderWMSLevel","fulfillmentOrderWMS","setFulfillmentOrderWMS","fulfillmentOrderWMSLevel","setFulfillmentOrderWMSLevel","adjustItemWMS","setAdjustItemWMS","adjustItemWMSLevel","setAdjustItemWMSLevel","moveItemWMS","setMoveItemWMS","itemCountWMS","setItemCountWMS","itemCountWMSLevel","setItemCountWMSLevel","closeSalesOrder","setCloseSalesOrder","searchGet","getGlobalRecords","groupedRecords","recordIndex","singleRecords","groupedIndex","groupedRecordsIndex","recordtype","count","groupCount","getUserAttributes","newStatus","NombreSucursal","secureLocalStorage","setItem","handleAuthStateChange","bypassCache","localStorage","signOut","Hub","listen","loadMessages","esMessages","locale","config","defaultCurrency","licenseKey","checkLoggedIn","checkIsLoggedIn","reset","groupRender","applyValueMode","showCancelButton","minHeight","align","faShoppingBag","inverse","Box","sx","display","overflow","alignItems","Button","currentTarget","fontSize","margin","borderRadius","faHome","endIcon","faWrench","Menu","anchorEl","onClose","MenuListProps","MenuItem","faBook","Divider","faAddressCard","faBed","faDollarSign","faGear","faMapLocationDot","faTruckFlatbed","faScannerGun","faChartSimple","IconButton","ml","Avatar","PaperProps","elevation","filter","mt","mr","top","right","bgcolor","transform","zIndex","transformOrigin","horizontal","vertical","anchorOrigin","faCircleUser","faSignInAlt","faSignOutAlt","Amplify","configure","awsconfig","reportWebVitals","onPerfEntry","Function","getCLS","getFID","getFCP","getLCP","getTTFB","getElementById","createRoot","StrictMode"],"mappings":"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","file":"static/js/main.4d00e1f4.chunk.js","sourcesContent":["import React, { useState, useEffect, useRef } from 'react';\n\n// import { Stimulsoft as StimulsoftDashboard } from 'stimulsoft-dashboards-js/Scripts/stimulsoft.viewer';\n// import 'stimulsoft-dashboards-js/Css/stimulsoft.viewer.office2013.whiteblue.css';\n// import './App.css';\n\nexport default function Home(props) {\n // const [viewer, setViewer] = useState();\n // const [report, setReport] = useState();\n\n // useEffect(() => {\n // console.log('Loading Viewer view');\n\n // console.log('Creating the dashboard viewer with default options');\n // var tmpViewer = new window.Stimulsoft.Viewer.StiViewer(null, 'StiViewer', false);\n\n // console.log('Creating a new dashboard instance');\n // var tmpReport = window.Stimulsoft.Report.StiReport.createNewDashboard();\n\n // console.log('Load dashboard from url');\n // tmpReport.loadFile('./dashboard.mrt');\n\n // console.log('Assigning dashboard to the viewer, the dashboard will be built automatically after rendering the viewer');\n // tmpViewer.report = tmpReport;\n\n // console.log('Rendering the viewer to selected element');\n // tmpViewer.renderHtml('viewer');\n // }, []);\n\n return (\n
\n {props.status === 'signedout' || props.status === 'signedin' ?\n (\n
\n \"\"\n
\n ) : (\n
\n )}\n
\n );\n};","import React, { useState } from 'react';\n\n// Iconos\nimport { FontAwesomeIcon } from \"@fortawesome/react-fontawesome\";\nimport { faMagnifyingGlassDollar } from \"@fortawesome/pro-solid-svg-icons\";\nimport { faTruck } from \"@fortawesome/pro-duotone-svg-icons\";\n\nexport default function Rastreopedidos(props) {\n const [action, setAction] = useState((window.location.href.indexOf('tampico') >= 0 ? 'https://supercolchoneslaleona.dispatchtrack.com/widget/U8F3dOE3zKtq796iGdJNug' : 'https://supercolchones.dispatchtrack.com/widget/uBR7GwI7rfcps0BGGZT7QA'));\n\n return (\n
\n
\n

Rastreo de Pedido

\n
\n
\n
\n
\n
\n \n \n\n \n
\n
\n
\n
\n
\n
\n
\n )\n};","import React, { useState, useEffect, useRef, useMemo } from 'react';\n\n// LoadPanel\nimport { LoadPanel } from 'devextreme-react/load-panel';\n\n// Toast\nimport { Toast } from 'devextreme-react/toast';\n\nimport { FontAwesomeIcon } from \"@fortawesome/react-fontawesome\";\nimport { faSearch } from \"@fortawesome/pro-solid-svg-icons\";\nimport { faFilePdf } from \"@fortawesome/pro-solid-svg-icons\";\nimport { faFileAlt } from \"@fortawesome/pro-solid-svg-icons\";\nimport { faFileDownload } from \"@fortawesome/pro-duotone-svg-icons\";\n\n//Form\nimport Form, { GroupItem, Label, Item } from 'devextreme-react/form';\n\n//Validator\nimport { EmailRule, CustomRule, RequiredRule } from 'devextreme-react/validator';\n\nimport { Auth, API, Storage } from 'aws-amplify';\n\n// Ruteador\nimport { Route, Link, useHistory } from \"react-router-dom\";\n\nasync function validaFactura(payload) {\n let apiName = 'AdminSC';\n let path = '/validafactura';\n\n let myInit = {\n headers: {\n 'Content-Type': 'application/json',\n 'Authorization': 'G9zn5KTz8y2PMll11TXx'\n },\n body: {\n payload\n }\n }\n const validaFacturaResponse = await API.post(apiName, path, myInit);\n\n return validaFacturaResponse;\n}\n\nexport default function DownloadInvoice(props) {\n const [downloadInvoicePayload, setDownloadInvoicePayload] = useState({\n folioPedido: \"\",\n importePedido: \"\",\n apellido: \"\",\n pedidoValido: false,\n urlPDF: '',\n urlXML: '',\n nombreXML: '',\n nombrePDF: ''\n });\n\n const [visibleLoadPanel, setVisibleLoadPanel] = useState(false);\n\n const [visibleToast, setVisibleToast] = useState(false);\n const [messageToast, setMessageToast] = useState('');\n const [typeToast, setTypeToast] = useState('success');\n\n //Ref para el form\n const [formDownloadInvoiceRef, setFormDownloadInvoiceRef] = useState(React.createRef());\n\n async function searchInvoice() {\n if (formDownloadInvoiceRef.current) {\n var formDownloadInvoice = formDownloadInvoiceRef.current.instance();\n var isValid = formDownloadInvoice.validate();\n\n if (!isValid.isValid) {\n setVisibleToast(true);\n setMessageToast(isValid.brokenRules[0].message);\n setTypeToast('error');\n return;\n }\n\n var payload = JSON.parse(JSON.stringify(downloadInvoicePayload));\n\n setVisibleLoadPanel(true);\n\n const validaFacturaResponse = await validaFactura(payload);\n\n setVisibleLoadPanel(false);\n\n if (validaFacturaResponse.result.toString() === 'true') {\n payload.pedidoValido = true;\n payload.urlPDF = validaFacturaResponse.urlPDF;\n payload.urlXML = validaFacturaResponse.urlXML;\n payload.nombreXML = validaFacturaResponse.nombreXML;\n payload.nombrePDF = validaFacturaResponse.nombrePDF;\n\n setDownloadInvoicePayload(payload);\n }\n else {\n setVisibleToast(true);\n setMessageToast('Datos Incorrectos. Favor de comunicarse a los teléfonos de su asesor de ventas');\n setTypeToast('error')\n\n payload.pedidoValido = false;\n payload.urlPDF = '';\n payload.urlXML = '';\n payload.nombreXML = '';\n payload.nombrePDF = '';\n\n setDownloadInvoicePayload(payload);\n }\n }\n }\n\n function downloadXML() {\n var payload = JSON.parse(JSON.stringify(downloadInvoicePayload));\n\n payload.action = 'xml';\n\n const downloadXMLFile = async () => {\n let apiName = 'AdminSC';\n let path = '/downloadlinkfactura';\n\n let myInit = {\n headers: {\n 'Content-Type': 'application/json',\n 'Authorization': 'G9zn5KTz8y2PMll11TXx'\n },\n body: {\n payload\n }\n }\n var downloadFileResponse = await API.post(apiName, path, myInit);\n\n const url = window.URL.createObjectURL(\n new Blob([downloadFileResponse]),\n );\n const link = document.createElement('a');\n link.href = url;\n link.setAttribute(\n 'download',\n payload.nombreXML,\n );\n\n // Append to html link element page\n document.body.appendChild(link);\n\n // Start download\n link.click();\n\n // Clean up and remove the link\n link.parentNode.removeChild(link);\n }\n\n downloadXMLFile()\n }\n\n function downloadPDF() {\n var payload = JSON.parse(JSON.stringify(downloadInvoicePayload));\n\n payload.action = 'pdf';\n\n const downloadPDFFile = async () => {\n let apiName = 'AdminSC';\n let path = '/downloadlinkfactura';\n\n let myInit = {\n headers: {\n 'Content-Type': 'application/json',\n 'Authorization': 'G9zn5KTz8y2PMll11TXx'\n },\n body: {\n payload\n }\n }\n var downloadFileResponse = await API.post(apiName, path, myInit);\n\n const link = document.createElement('a');\n\n link.href = 'data:application/pdf;base64,' + downloadFileResponse;\n link.setAttribute(\n 'download',\n payload.nombrePDF\n );\n\n // Append to html link element page\n document.body.appendChild(link);\n\n // Start download\n link.click();\n\n // Clean up and remove the link\n link.parentNode.removeChild(link);\n }\n\n downloadPDFFile()\n }\n\n const onFieldDatosGeneralesChanged = React.useCallback((e) => {\n var payload = JSON.parse(JSON.stringify(downloadInvoicePayload));\n\n payload.pedidoValido = false;\n payload.urlPDF = '';\n payload.urlXML = '';\n payload.nombreXML = '';\n payload.nombrePDF = '';\n\n setDownloadInvoicePayload(payload);\n }, [downloadInvoicePayload])\n\n const onHidingToast = React.useCallback(() => {\n setVisibleToast(false);\n }, []);\n\n var folioPedidoEditorOptions = { width: '40%', readOnly: false, inputAttr: { 'style': 'text-transform: uppercase' } };\n var importePedidoEditorOptions = { width: '40%', format: { type: 'currency', currency: 'MXN', precision: 2 }, readOnly: false };\n var apellidoEditorOptions = { width: '40%', readOnly: false, inputAttr: { 'style': 'text-transform: uppercase' } };\n\n return (\n
\n
\n

Descarga tu Factura

\n
\n
\n \n {downloadInvoicePayload.pedidoValido === true ? (\n
\n \n \n
\n ) : (
)\n }\n
\n
\n \n\n \n \n \n \n \n \n \n \n \n
\n
\n )\n};","// Ruteador\nimport { Route, Link, useHistory } from \"react-router-dom\";\n\nimport React, { useState, useEffect, useRef, useCallback } from 'react';\n\n// Toast\nimport { Toast } from 'devextreme-react/toast';\n\n// maplibre\nimport { createMap } from \"maplibre-gl-js-amplify\";\nimport maplibregl from \"maplibre-gl\";\nimport \"maplibre-gl/dist/maplibre-gl.css\";\nimport \"maplibre-gl-js-amplify/dist/public/amplify-map.css\";\nimport * as turf from \"@turf/turf\";\n\n// iconos\nimport { FontAwesomeIcon } from \"@fortawesome/react-fontawesome\";\nimport { faClock } from \"@fortawesome/pro-solid-svg-icons\";\nimport { faMapMarkerAlt } from \"@fortawesome/pro-duotone-svg-icons\";\nimport { faArrowsRotate } from \"@fortawesome/pro-solid-svg-icons\";\n\nimport './Attendance.css';\n\nimport { Auth, API } from 'aws-amplify';\n\n// Grid\nimport DataGrid, {\n Column, FilterRow, HeaderFilter, FilterPanel, FilterBuilderPopup,\n GroupPanel, Grouping, SearchPanel, Sorting, Editing, Lookup, Toolbar, Item, RequiredRule,\n Scrolling, Pager, Paging, StateStoring, ColumnChooser, Format, Selection,\n Export, ColumnChooserSearch, ColumnChooserSelection, Search\n} from 'devextreme-react/data-grid';\n\n//CheckBox\nimport CheckBox from 'devextreme-react/check-box';\n\n//Form\nimport Form, { GroupItem, Label, TabbedItem, TabPanelOptions, Tab } from 'devextreme-react/form';\n\nimport '../ListStyle.css';\n\nimport dxDateBox from \"devextreme/ui/date_box\";\n\nimport dxNumberBox from \"devextreme/ui/number_box\";\n\nimport { Workbook } from 'exceljs';\nimport { saveAs } from 'file-saver';\nimport { exportDataGrid } from 'devextreme/excel_exporter'\n\ndxDateBox.defaultOptions({\n options: {\n dateSerializationFormat: \"yyyy-MM-dd\"\n }\n});\n\ndxNumberBox.defaultOptions({\n options: {\n step: 0\n }\n});\n\nexport default function Attendance(props) {\n const history = useHistory();\n\n var mapRef = useRef(null); // Reference to the map DOM element\n\n const [latitude, setLatitude] = useState('');\n const [longitude, setLongitude] = useState('');\n const [activateButton, setActivateButton] = useState(false);\n const [assistanceRecords, setAssistanceRecords] = useState([]);\n const [currentLocation, setCurrentLocation] = useState({});\n\n // setValue para el control tab\n const [value, setValue] = React.useState(0);\n\n // setValue para el control grid\n const [grouping, setGrouping] = useState([]);\n\n const [visibleToast, setVisibleToast] = useState(false);\n const [messageToast, setMessageToast] = useState('');\n const [typeToast, setTypeToast] = useState('success');\n const [autoExpandAll, setAutoExpandAll] = useState(true);\n\n const allowedPageSizes = [5, 10, 15, 20, 'all'];\n\n const exportFormats = ['xlsx'];\n\n function getOrderDay(rowData) {\n return (new Date(rowData.OrderDate)).getDay();\n }\n\n function onAutoExpandAllChanged() {\n setAutoExpandAll(!autoExpandAll)\n };\n\n const filterBuilderPopupPosition = {\n of: window,\n at: 'top',\n my: 'top',\n offset: { y: 10 },\n };\n\n const filterBuilder = {\n customOperations: [{\n name: 'weekends',\n caption: 'Weekends',\n dataTypes: ['date'],\n icon: 'check',\n hasValue: false,\n calculateFilterExpression: () => [[getOrderDay, '=', 0], 'or', [getOrderDay, '=', 6]],\n }],\n allowHierarchicalFields: true,\n };\n\n //Ref para el grid Tablero de Control\n const [gridTableroRef, setGridTableroRef] = useState(React.createRef());\n\n const handleChange = (event, newValue) => {\n setValue(newValue);\n\n if (newValue === 0)\n window.location.reload();\n };\n\n async function getUserLocations() {\n try {\n var personal = props.personal;\n\n let apiName = 'AdminSC';\n let path = '/ubicaciones';\n\n let myInit = {\n headers: {\n 'Content-Type': 'application/json',\n Authorization: `${(await Auth.currentSession()).getAccessToken().getJwtToken()}`\n },\n body: {\n personal: personal,\n username: JSON.parse(JSON.stringify(await Auth.currentAuthenticatedUser())).username\n }\n }\n\n var userLocationsGet = await API.post(apiName, path, myInit);\n }\n catch (e) {\n if (e === 'No current user') {\n history.push('/');\n\n window.location.reload();\n }\n }\n\n return userLocationsGet;\n }\n\n async function getUserAssistanceRecords() {\n try {\n var personal = props.personal;\n var attendanceAccess = props.attendanceAccess;\n\n let apiName = 'AdminSC';\n let path = '/procesaasistencia';\n\n let myInit = {\n headers: {\n 'Content-Type': 'application/json',\n Authorization: `${(await Auth.currentSession()).getAccessToken().getJwtToken()}`\n },\n queryStringParameters: {\n personal: personal,\n attendanceAccess: attendanceAccess,\n username: JSON.parse(JSON.stringify(await Auth.currentAuthenticatedUser())).username\n }\n }\n var userAssistanceGet = await API.get(apiName, path, myInit);\n }\n catch (e) {\n if (e === 'No current user') {\n history.push('/');\n\n window.location.reload();\n }\n }\n return userAssistanceGet;\n }\n\n function refreshButton() {\n if (gridTableroRef.current) {\n var gridTablero = gridTableroRef.current.instance();\n\n gridTablero.refresh();\n }\n }\n\n // Wrapping our code in a useEffect allows us to run initializeMap after the div has been rendered into the DOM\n useEffect(() => {\n let map;\n var keys;\n\n async function initializeMap() {\n //Obtenemos las ubicaciones permitidas del empleado\n var userLocations = await getUserLocations(props.personal);\n\n //Obtenemos su record de asistencia\n var getAssistanceRecords = await getUserAssistanceRecords(props.personal);\n\n setAssistanceRecords(getAssistanceRecords);\n\n //Obtenemos las ubicaciones aceptadas del usuario\n var locations = {};\n var circles = {};\n\n for (var userLocationIndex in userLocations) {\n var singleUserLocation = userLocations[userLocationIndex];\n\n // Definimos el circulo\n var center = [singleUserLocation.Longitud, singleUserLocation.Latitud];\n\n var radius = .1;\n var options = {\n steps: 360,\n units: \"kilometers\",\n };\n\n var circle = turf.circle(center, radius, options);\n\n var validLocation = {\n coordinates: circle.geometry.coordinates\n };\n\n locations[singleUserLocation.Nombre] = validLocation;\n locations[singleUserLocation.Nombre].Latitud = singleUserLocation.Latitud;\n locations[singleUserLocation.Nombre].Longitud = singleUserLocation.Longitud;\n\n circles[singleUserLocation.Nombre] = circle;\n }\n\n // We only want to initialize the underlying maplibre map after the div has been rendered\n if (mapRef.current != null) {\n // Creamos el mapa\n map = await createMap({\n container: mapRef.current,\n center: [-101.95812036696248, 23.732791552256273],\n zoom: 4,\n });\n\n // Definimos el GeolocateControl para poder obtener la posición del usuario\n var geolocate = new maplibregl.GeolocateControl({\n positionOptions: {\n enableHighAccuracy: true\n },\n trackUserLocation: true\n });\n\n // Agregamos el control al mapa\n map.addControl(geolocate);\n\n // Evento al presionar el boton de ubicación del usuario\n geolocate.on('geolocate', function (data) {\n try {\n keys = Object.keys(locations);\n }\n catch (e) {\n keys = [];\n }\n\n var valid = false;\n\n for (var keyIndex in keys) {\n if (valid === false) {\n var singleKey = keys[keyIndex];\n\n var location = locations[singleKey];\n location.name = singleKey;\n\n var centerLatitud = location.Latitud;\n var centerLongitud = location.Longitud;\n\n var centerLatLong = new maplibregl.LngLat(centerLongitud, centerLatitud);\n var userLocationLatLong = new maplibregl.LngLat(data.coords.longitude, data.coords.latitude);\n\n var distance = centerLatLong.distanceTo(userLocationLatLong) / 1000.0;\n\n if (distance <= 0.1) {\n valid = true;\n\n setCurrentLocation(location);\n setLatitude(data.coords.latitude);\n setLongitude(data.coords.longitude);\n\n break;\n }\n }\n }\n\n setActivateButton(valid);\n });\n\n // Evento al hacer click sobre el mapa\n // map.on('click', function(e) {\n // console.log('A click event has occurred at ', e);\n // });\n\n map.on('load', function () {\n try {\n keys = Object.keys(locations);\n }\n catch (e) {\n keys = [];\n }\n\n for (var keyIndex in keys) {\n var singleKey = keys[keyIndex];\n\n var circle = circles[singleKey];\n\n var layer = map.getLayer(singleKey);\n\n if (layer)\n map.removeLayer(singleKey);\n\n var source = map.getSource(singleKey);\n\n if (source)\n map.removeSource(singleKey);\n\n map.addSource(singleKey, {\n type: \"geojson\",\n data: circle\n });\n\n //Agregamos el Layer al mapa para mostrarlo\n map.addLayer({\n id: singleKey,\n type: \"fill\",\n source: singleKey,\n paint: {\n \"fill-color\": \"blue\",\n \"fill-opacity\": 0.2\n }\n });\n }\n\n //Ejecutamos el Geolocate Control para poder centrar el mapa a la posición del usuario\n geolocate.trigger();\n });\n\n map.addControl(new maplibregl.NavigationControl(), \"top-right\");\n\n try {\n keys = Object.keys(locations);\n }\n catch (e) {\n keys = [];\n }\n\n for (var keyIndex in keys) {\n var singleKey = keys[keyIndex];\n\n var location = locations[singleKey];\n\n new maplibregl.Marker({\n })\n .setLngLat([location.Longitud, location.Latitud])\n .addTo(map);\n }\n }\n }\n initializeMap();\n\n // Cleans up and maplibre DOM elements and other resources - https://maplibre.org/maplibre-gl-js-docs/api/map/#map#remove\n return function cleanup() {\n if (map != null) map.remove();\n };\n // eslint-disable-next-line\n }, []);\n\n async function postAssitance() {\n var personal = props.personal;\n\n let apiName = 'AdminSC';\n let path = '/procesaasistencia';\n\n let myInit = {\n headers: {\n 'Content-Type': 'application/json',\n Authorization: `${(await Auth.currentSession()).getAccessToken().getJwtToken()}`\n },\n body: {\n personal: personal,\n latitud: latitude,\n longitud: longitude,\n ubicacion: currentLocation.name,\n username: JSON.parse(JSON.stringify(await Auth.currentAuthenticatedUser())).username\n }\n }\n var userAssistancePost = await API.post(apiName, path, myInit);\n\n if (userAssistancePost.ok === 'true') {\n setVisibleToast(true);\n setMessageToast('Asistencia registrada');\n setTypeToast('success')\n\n //Obtenemos su record de asistencia\n var getAssistanceRecords = await getUserAssistanceRecords(props.personal);\n\n setAssistanceRecords(getAssistanceRecords);\n }\n else {\n setVisibleToast(true);\n setMessageToast(userAssistancePost.message);\n setTypeToast('error')\n }\n }\n\n function onHidingToast() {\n setVisibleToast(false);\n }\n\n function onExporting(e) {\n const workbook = new Workbook();\n const worksheet = workbook.addWorksheet('Datos');\n\n exportDataGrid({\n component: e.component,\n worksheet,\n autoFilterEnabled: true,\n }).then(() => {\n workbook.xlsx.writeBuffer().then((buffer) => {\n saveAs(new Blob([buffer], { type: 'application/octet-stream' }), 'Datos.xlsx');\n });\n });\n e.cancel = true;\n };\n\n return (\n
\n
\n

Asistencia

\n
\n
\n
\n \n
\n {activateButton === true ? (\n \n ) :\n \n }\n\n \n
\n
\n
\n
\n \n
\n
\n \n \n \n \n \n \n \n\n \n\n \n \n \n \n\n \n \n \n \n \n\n \n \n \n \n \n \n \n \n \n \n \n \n
\n
\n
\n );\n}","import React, { Component } from \"react\";\n\nimport { Auth, API } from 'aws-amplify';\n\nimport './Pricelist.css';\n\n\nasync function getPricelist(sucursal) {\n let apiName = 'AdminSC';\n let path = '/listaarticulos';\n\n let myInit = {\n headers: {\n 'Content-Type': 'application/json',\n Authorization: `${(await Auth.currentSession()).getAccessToken().getJwtToken()}`\n },\n body: {\n sucursal: sucursal,\n username: JSON.parse(JSON.stringify(await Auth.currentAuthenticatedUser())).username\n }\n }\n\n var itemsGet = await API.post(apiName, path, myInit);\n\n return itemsGet;\n}\n\nclass Pricelist extends Component {\n constructor(props) {\n\n super(props);\n\n this.state = {\n items: [],\n allitems: [],\n headers: [],\n listNames: [],\n searchItem: '',\n selectedItem: '',\n sucursal: props.sucursal\n };\n\n this.handleSearch = this.handleSearch.bind(this);\n this.columnaClave = this.columnaClave.bind(this);\n }\n\n async componentDidMount() {\n\n // Para poder leer los props agregamos este renglon\n const _this = this;\n\n const items = await getPricelist(_this.props.sucursal);\n\n var headers = [];\n var listNames = [];\n\n var keys;\n\n //Armamos el array con los encabezados\n for (var itemIndex in items) {\n var singleItem = items[itemIndex];\n\n if (singleItem.Orden === 0) {\n\n //Borramos el renglon con los encabezados para que no se duplique abajo\n delete items[itemIndex];\n\n //Primero insertamos los encabezados fijos\n headers.push(singleItem['Articulo']);\n headers.push(singleItem['Descripcion1']);\n\n try {\n keys = Object.keys(singleItem);\n }\n catch (e) {\n keys = [];\n }\n\n //Después insertamos los nombres de las listas de precios\n for (var keyIndex in keys) {\n var key = keys[keyIndex];\n\n if (!key)\n key = '';\n\n if (key !== 'Categoria' && key !== 'ImagenURL' && key !== 'Grupo' && key !== 'Articulo' && key !== 'Descripcion1' && key !== 'NombreCorto' && key !== 'Orden' && key !== 'NoListas') {\n headers.push(key);\n listNames.push(key);\n }\n }\n }\n }\n\n this.setState({\n items: items,\n allitems: items,\n headers: headers,\n listNames: listNames,\n searchItem: '',\n selectedItem: ''\n });\n }\n\n handleSearch(event) {\n var keyword = event.target.value.toLowerCase();\n\n if (!keyword)\n keyword = '';\n\n var allitems = this.state.allitems.slice();\n var items = [];\n\n if (keyword) {\n for (var itemIndex in allitems) {\n var singleItem = allitems[itemIndex];\n\n if (!singleItem.Articulo)\n singleItem.Articulo = '';\n if (!singleItem.Descripcion1)\n singleItem.Descripcion1 = '';\n if (!singleItem.Categoria)\n singleItem.Categoria = '';\n if (!singleItem.Grupo)\n singleItem.Grupo = '';\n\n if (singleItem.Articulo.toLowerCase().indexOf(keyword) >= 0 || singleItem.Descripcion1.toLowerCase().indexOf(keyword) >= 0 || singleItem.Categoria.toLowerCase().indexOf(keyword) >= 0 || singleItem.Grupo.toLowerCase().indexOf(keyword) >= 0)\n items.push(singleItem);\n }\n }\n else {\n items = allitems;\n }\n\n this.setState({ items: items, searchItem: keyword });\n };\n\n columnaClave(item) {\n switch (item.Orden) {\n case 1:\n return \"Proveedor\";\n case 2:\n return {item.Grupo};\n case 3:\n return {item.Articulo};\n default:\n return ;\n }\n };\n\n render() {\n return (\n
\n
\n \n \n \n \n \n
\n
\n
\n \n \n \n\n {\n this.state.headers.map((header, index) => (\n \n ))\n }\n\n \n \n \n {\n this.state.items.map((item, index) => (\n \n {this.columnaClave(item)}\n\n {item.Orden === 2 ? () : ()}\n\n {\n this.state.listNames.map((list, index) => (\n item.Orden === 2 ? () : ()\n ))\n }\n\n\n \n ))\n }\n\n \n
{header}
{item.Descripcion1}{item.Descripcion1}{item[list]}{item[list]}
\n
\n
\n
\n )\n }\n}\n\nexport default Pricelist","import React, { useState, useEffect, useRef } from 'react';\n\n// LoadPanel\nimport { LoadPanel } from 'devextreme-react/load-panel';\n\n// Grid\nimport DataGrid, {\n Column, FilterRow, HeaderFilter, FilterPanel, FilterBuilderPopup,\n GroupPanel, Grouping, SearchPanel, Sorting, Editing, Lookup, Toolbar, Item, RequiredRule,\n Summary, TotalItem, GroupItem, Scrolling, Pager, Paging, StateStoring, ColumnChooser, Selection,\n ColumnChooserSearch, ColumnChooserSelection\n} from 'devextreme-react/data-grid';\n\n//CheckBox\nimport CheckBox from 'devextreme-react/check-box';\n\n//Chart\nimport {\n Chart, SeriesTemplate, CommonSeriesSettings, Title, Tooltip, Format, Export\n} from 'devextreme-react/chart';\n\nimport { Auth, API } from 'aws-amplify';\n\n// Ruteador\nimport { Route, Link, useHistory } from \"react-router-dom\";\n\n// Iconos\nimport { FontAwesomeIcon } from \"@fortawesome/react-fontawesome\";\nimport { faGlasses } from \"@fortawesome/pro-solid-svg-icons\";\nimport { faArrowRotateLeft } from \"@fortawesome/pro-solid-svg-icons\";\nimport { faSave } from \"@fortawesome/pro-solid-svg-icons\";\nimport { faClipboardCheck } from \"@fortawesome/pro-solid-svg-icons\";\nimport { faList } from \"@fortawesome/pro-duotone-svg-icons\";\nimport { faSackDollar } from \"@fortawesome/pro-duotone-svg-icons\";\n\nimport './Commission.css';\n\n//Form\nimport Form, { TabbedItem, TabPanelOptions, Tab } from 'devextreme-react/form';\n\nimport SelectBox from 'devextreme-react/select-box';\n\nimport '../ListStyle.css';\n\nimport dxDateBox from \"devextreme/ui/date_box\";\n\nimport dxNumberBox from \"devextreme/ui/number_box\";\n\nimport { Workbook } from 'exceljs';\nimport { saveAs } from 'file-saver';\nimport { exportDataGrid } from 'devextreme/excel_exporter'\n\ndxDateBox.defaultOptions({\n options: {\n dateSerializationFormat: \"yyyy-MM-dd\"\n }\n});\n\ndxNumberBox.defaultOptions({\n options: {\n step: 0\n }\n});\n\nexport default function Commission(props) {\n const history = useHistory();\n\n const [commissionRecords, setCommissionRecords] = useState([]);\n const [commissionTotalRecords, setCommissionTotalRecords] = useState([]);\n const [chartTotalRecords, setChartTotalRecords] = useState([]);\n const [commissionTotalYear, setCommissionTotalYear] = useState([]);\n const [isDetail, setIsDetail] = useState(false);\n const [commissionPayload, setCommissionPayload] = useState({ header: {}, detail: [] });\n\n const [autoExpandAllLista, setAutoExpandAllLista] = useState(true);\n const [autoExpandAllTotal, setAutoExpandAllTotal] = useState(true);\n\n // setValue para el control tab\n const [value, setValue] = React.useState(0);\n\n const [visibleLoadPanel, setVisibleLoadPanel] = useState(false);\n\n const handleChange = (event, newValue) => {\n setValue(newValue);\n };\n\n const allowedPageSizes = [5, 10, 15, 20, 'all'];\n\n const exportFormats = ['xlsx'];\n\n const filterBuilderPopupPosition = {\n of: window,\n at: 'top',\n my: 'top',\n offset: { y: 10 },\n };\n\n function getOrderDay(rowData) {\n return (new Date(rowData.OrderDate)).getDay();\n }\n\n const filterBuilder = {\n customOperations: [{\n name: 'weekends',\n caption: 'Weekends',\n dataTypes: ['date'],\n icon: 'check',\n hasValue: false,\n calculateFilterExpression: () => [[getOrderDay, '=', 0], 'or', [getOrderDay, '=', 6]],\n }],\n allowHierarchicalFields: true,\n };\n\n const filterValue = [['Estatus', '=', 'Concluido']];\n\n\n async function getCommissionRecords() {\n try {\n var personal = props.personal;\n\n let apiName = 'AdminSC';\n let path = '/procesacomisiones';\n\n let myInit = {\n headers: {\n 'Content-Type': 'application/json',\n Authorization: `${(await Auth.currentSession()).getAccessToken().getJwtToken()}`\n },\n queryStringParameters: {\n personal: personal,\n action: 'list',\n username: JSON.parse(JSON.stringify(await Auth.currentAuthenticatedUser())).username\n }\n }\n\n var commissionsGet = await API.get(apiName, path, myInit);\n }\n catch (e) {\n if (e === 'No current user') {\n history.push('/');\n\n window.location.reload();\n }\n }\n\n return commissionsGet;\n }\n\n async function getCommissionPayload(ID) {\n try {\n var personal = props.personal;\n\n let apiName = 'AdminSC';\n let path = '/procesacomisiones';\n\n let myInit = {\n headers: {\n 'Content-Type': 'application/json',\n Authorization: `${(await Auth.currentSession()).getAccessToken().getJwtToken()}`\n },\n queryStringParameters: {\n Personal: personal,\n ID: ID,\n action: 'payload',\n username: JSON.parse(JSON.stringify(await Auth.currentAuthenticatedUser())).username\n }\n }\n\n var payloadGet = await API.get(apiName, path, myInit);\n\n setCommissionPayload(payloadGet);\n }\n catch (e) {\n if (e === 'No current user') {\n history.push('/');\n\n window.location.reload();\n }\n }\n\n return payloadGet;\n }\n\n async function viewCommissionButton(ID) {\n if (!window.event.metaKey && !window.event.ctrlKey) {\n setVisibleLoadPanel(true);\n\n setIsDetail(true);\n\n var payload = await getCommissionPayload(ID);\n\n setVisibleLoadPanel(false);\n }\n };\n\n async function cancelViewButton() {\n setIsDetail(false);\n\n var getCommission = await getCommissionRecords(props.personal);\n\n setCommissionRecords(getCommission.list);\n setCommissionTotalRecords(getCommission.total);\n\n // // Obtenemos los años para el filtro de la gráfica\n var years = JSON.parse(JSON.stringify(commissionTotalYear));\n\n for (var commissionTotalIndex in getCommission.total) {\n var singleCommissionTotal = getCommission.total[commissionTotalIndex];\n\n var exists = false;\n for (var yearsIndex in years) {\n var singleYears = years[yearsIndex];\n\n if (singleYears === singleCommissionTotal.anio)\n exists = true;\n }\n\n if (exists === false) {\n years.push(singleCommissionTotal.anio)\n }\n }\n\n setCommissionTotalYear(years);\n\n var year = new Date().getFullYear();\n var chartPayloadtmp = [];\n\n\n for (var commissionTotalRecordsIndex in commissionTotalRecords) {\n var singleCommissionTotalRecord = commissionTotalRecords[commissionTotalRecordsIndex];\n\n if (singleCommissionTotalRecord.anio === year) {\n chartPayloadtmp.push(singleCommissionTotalRecord);\n }\n }\n\n setChartTotalRecords(chartPayloadtmp);\n };\n\n function onAutoExpandAllListaChanged() {\n setAutoExpandAllLista(!autoExpandAllLista)\n };\n\n function onAutoExpandAllTotalChanged() {\n setAutoExpandAllTotal(!autoExpandAllTotal)\n };\n\n function viewCommission(data) {\n return (\n \n \n \n )\n }\n\n function onValueChangedAnio(e) {\n var year = e.value;\n var chartPayloadtmp = [];\n\n\n for (var commissionTotalRecordsIndex in commissionTotalRecords) {\n var singleCommissionTotalRecord = commissionTotalRecords[commissionTotalRecordsIndex];\n\n if (singleCommissionTotalRecord.anio === year) {\n chartPayloadtmp.push(singleCommissionTotalRecord);\n }\n }\n\n setChartTotalRecords(chartPayloadtmp);\n }\n\n var fechaEmisionEditorOptions = { width: '100%', readOnly: true, text: 'Fecha Emisión' };\n var movimientoEditorOptions = { width: '100%', readOnly: true };\n var estatusEditorOptions = { width: '100%', readOnly: true };\n var nombreEditorOptions = { width: '100%', readOnly: true };\n var personalAsignadoEditorOptions = { width: '100%', readOnly: true };\n var nombreSupervisorEditorOptions = { width: '100%', readOnly: true };\n var inicioEvaluacionEditorOptions = { width: '100%', readOnly: true };\n var finEvaluacionEditorOptions = { width: '100%', readOnly: true };\n var duracionEvaluacionEditorOptions = { width: '100%', readOnly: true };\n\n useEffect(() => {\n window.addEventListener('popstate', (e) => {\n var hash;\n\n try {\n hash = e.target.location.hash;\n }\n catch (e) {\n hash = '';\n }\n\n if (hash === '#/Commission') {\n history.push('/Commission');\n\n window.location.reload();\n }\n });\n\n async function initialize() {\n var years = JSON.parse(JSON.stringify(commissionTotalYear));\n\n //Obtenemos sus comisiones asignadas\n var getCommissionList = await getCommissionRecords(props.personal);\n\n setCommissionRecords(getCommissionList.list);\n setCommissionTotalRecords(getCommissionList.total);\n\n // Obtenemos el listado de años \n for (var commissionTotalIndex in getCommissionList.total) {\n var singleCommissionTotal = getCommissionList.total[commissionTotalIndex];\n\n var exists = false;\n for (var yearsIndex in years) {\n var singleYears = years[yearsIndex];\n\n if (singleYears === singleCommissionTotal.anio)\n exists = true;\n }\n\n if (exists === false) {\n years.push(singleCommissionTotal.anio)\n }\n }\n\n setCommissionTotalYear(years);\n\n // Especificamos los datos para la gráfica\n var year = new Date().getFullYear();\n var chartPayloadtmp = [];\n\n for (var commissionTotalRecordsIndex in getCommissionList.total) {\n var singleCommissionTotalRecord = getCommissionList.total[commissionTotalRecordsIndex];\n\n if (singleCommissionTotalRecord.anio === year) {\n chartPayloadtmp.push(singleCommissionTotalRecord);\n }\n }\n\n setChartTotalRecords(chartPayloadtmp);\n }\n\n initialize();\n\n //En caso de solicitar un ID especifico, redireccionamos a ese ID\n if (!props.match.isExact) {\n var urlID = props.location.pathname.replace('/Commission/', '');\n\n viewCommissionButton(urlID);\n }\n\n // eslint-disable-next-line\n }, []);\n\n function onExporting(e) {\n const workbook = new Workbook();\n const worksheet = workbook.addWorksheet('Datos');\n\n exportDataGrid({\n component: e.component,\n worksheet,\n autoFilterEnabled: true,\n }).then(() => {\n workbook.xlsx.writeBuffer().then((buffer) => {\n saveAs(new Blob([buffer], { type: 'application/octet-stream' }), 'Datos.xlsx');\n });\n });\n e.cancel = true;\n };\n\n return (\n
\n {isDetail === false ? (\n
\n

Comisiones

\n
\n ) :\n (\n
\n

{commissionPayload.header.Movimiento}

\n
\n )}\n\n \n\n
\n {isDetail === false ? (\n
\n
\n \n \n \n
\n
\n \n
\n
\n \n \n \n \n \n \n \n\n \n\n \n \n \n \n\n \n\n \n \n \n \n
\n \n
\n
\n \n
\n
\n \n \n \n \n\n \n\n \n \n \n \n\n \n \n \n \n \n \n \n \n \n \n \n \n
\n \n
\n
Año\n \n
\n
\n
\n \n \n \n \n \n \n \n \n \n
\n
\n
\n
\n
\n ) : (
)}\n\n {\n return (\n
\n {isDetail.toString() === 'true' ?\n (\n
\n \n \n \n\n
\n \n \n \n \n\n \n\n \n \n \n \n\n \n \n \n \n \n\n \n \n \n \n \n \n \n \n \n \n \n \n \n
\n
\n ) :\n (
)\n }\n
\n );\n }}\n />\n
\n
\n );\n}","import React, { useState, useEffect, useRef } from 'react';\n\n// LoadPanel\nimport { LoadPanel } from 'devextreme-react/load-panel';\n\n// Grid\nimport DataGrid, {\n Column, FilterRow, HeaderFilter, FilterPanel, FilterBuilderPopup,\n GroupPanel, Grouping, SearchPanel, Sorting, Editing, Lookup, Toolbar, Item, RequiredRule,\n Summary, TotalItem, GroupItem, Scrolling, Pager, Paging, StateStoring, ColumnChooser, Selection,\n ColumnChooserSearch, ColumnChooserSelection\n} from 'devextreme-react/data-grid';\n\n//CheckBox\nimport CheckBox from 'devextreme-react/check-box';\n\n//Chart\nimport {\n Chart, Series, CommonSeriesSettings, Legend, Export, Tooltip, Title, ValueAxis, Format\n} from 'devextreme-react/chart';\n\n\nimport { Auth, API } from 'aws-amplify';\n\n// Ruteador\nimport { Route, Link, useHistory } from \"react-router-dom\";\n\n// Iconos\nimport { FontAwesomeIcon } from \"@fortawesome/react-fontawesome\";\nimport { faGlasses } from \"@fortawesome/pro-solid-svg-icons\";\nimport { faArrowRotateLeft } from \"@fortawesome/pro-solid-svg-icons\";\nimport { faSave } from \"@fortawesome/pro-solid-svg-icons\";\nimport { faClipboardCheck } from \"@fortawesome/pro-solid-svg-icons\";\nimport { faList } from \"@fortawesome/pro-duotone-svg-icons\";\nimport { faTrophy } from \"@fortawesome/pro-duotone-svg-icons\";\n\nimport './Incentive.css';\n\n//Form\nimport Form, { TabbedItem, TabPanelOptions, Tab } from 'devextreme-react/form';\n\nimport SelectBox from 'devextreme-react/select-box';\n\nimport '../ListStyle.css';\n\nimport dxDateBox from \"devextreme/ui/date_box\";\n\nimport dxNumberBox from \"devextreme/ui/number_box\";\n\nimport { Workbook } from 'exceljs';\nimport { saveAs } from 'file-saver';\nimport { exportDataGrid } from 'devextreme/excel_exporter'\n\ndxDateBox.defaultOptions({\n options: {\n dateSerializationFormat: \"yyyy-MM-dd\"\n }\n});\n\ndxNumberBox.defaultOptions({\n options: {\n step: 0\n }\n});\n\nexport default function Incentive(props) {\n const history = useHistory();\n\n const [incentiveRecords, setIncentiveRecords] = useState([]);\n const [incentiveTotalRecords, setIncentiveTotalRecords] = useState([]);\n const [incentiveTotalYear, setIncentiveTotalYear] = useState([]);\n const [incentiveTotalListRecords, setIncentiveTotalListRecords] = useState([]);\n const [vendors, setVendors] = useState([]);\n const [isDetail, setIsDetail] = useState(false);\n const [incentivePayload, setIncentivePayload] = useState({ header: {}, detail: [] });\n\n const [autoExpandAllLista, setAutoExpandAllLista] = useState(true);\n const [autoExpandAllTotal, setAutoExpandAllTotal] = useState(true);\n\n const [visibleLoadPanel, setVisibleLoadPanel] = useState(false);\n\n // setValue para el control tab\n const [value, setValue] = React.useState(0);\n\n const allowedPageSizes = [5, 10, 15, 20, 'all'];\n\n const exportFormats = ['xlsx'];\n\n const handleChange = (event, newValue) => {\n setValue(newValue);\n };\n\n const filterBuilderPopupPosition = {\n of: window,\n at: 'top',\n my: 'top',\n offset: { y: 10 },\n };\n\n function getOrderDay(rowData) {\n return (new Date(rowData.OrderDate)).getDay();\n }\n\n const filterBuilder = {\n customOperations: [{\n name: 'weekends',\n caption: 'Weekends',\n dataTypes: ['date'],\n icon: 'check',\n hasValue: false,\n calculateFilterExpression: () => [[getOrderDay, '=', 0], 'or', [getOrderDay, '=', 6]],\n }],\n allowHierarchicalFields: true,\n };\n\n async function getIncentiveRecords() {\n try {\n var personal = props.personal;\n\n let apiName = 'AdminSC';\n let path = '/procesaincentivos';\n\n let myInit = {\n headers: {\n 'Content-Type': 'application/json',\n Authorization: `${(await Auth.currentSession()).getAccessToken().getJwtToken()}`\n },\n queryStringParameters: {\n personal: personal,\n action: 'list',\n username: JSON.parse(JSON.stringify(await Auth.currentAuthenticatedUser())).username\n }\n }\n\n var incentiveGet = await API.get(apiName, path, myInit);\n }\n catch (e) {\n if (e === 'No current user') {\n history.push('/');\n\n window.location.reload();\n }\n }\n\n return incentiveGet;\n }\n\n async function getIncentivePayload(ID) {\n try {\n var personal = props.personal;\n\n let apiName = 'AdminSC';\n let path = '/procesaincentivos';\n\n let myInit = {\n headers: {\n 'Content-Type': 'application/json',\n Authorization: `${(await Auth.currentSession()).getAccessToken().getJwtToken()}`\n },\n queryStringParameters: {\n Personal: personal,\n ID: ID,\n action: 'payload',\n username: JSON.parse(JSON.stringify(await Auth.currentAuthenticatedUser())).username\n }\n }\n\n var payloadGet = await API.get(apiName, path, myInit);\n\n setIncentivePayload(payloadGet);\n }\n catch (e) {\n if (e === 'No current user') {\n history.push('/');\n\n window.location.reload();\n }\n }\n\n return payloadGet;\n }\n\n async function viewIncentiveButton(ID) {\n if (!window.event.metaKey && !window.event.ctrlKey) {\n setVisibleLoadPanel(true);\n\n setIsDetail(true);\n\n var payload = await getIncentivePayload(ID);\n\n setVisibleLoadPanel(false);\n }\n };\n\n async function cancelViewButton() {\n setIsDetail(false);\n\n var getIncentiveList = await getIncentiveRecords(props.personal);\n\n var totals = [];\n var vendor = [];\n var year = new Date().getFullYear();\n\n // Primero insertamos todos los proveedores\n for (var totalIndex in getIncentiveList.total) {\n var singleTotal = getIncentiveList.total[totalIndex];\n\n if (singleTotal.anio === year) {\n var exists = false;\n for (var vendorIndex in vendor) {\n var singleVendor = vendor[vendorIndex];\n\n if (singleVendor === singleTotal.Proveedor)\n exists = true;\n }\n\n if (exists === false) {\n vendor.push(singleTotal.Proveedor);\n }\n }\n }\n\n // Primero insertamos en el arreglo todos los meses\n for (var totalIndex in getIncentiveList.total) {\n var singleTotal = getIncentiveList.total[totalIndex];\n\n if (singleTotal.anio === year) {\n var exists = false;\n for (var totalsIndex in totals) {\n var singleTotals = totals[totalsIndex];\n\n if (singleTotals.mes === singleTotal.mes)\n exists = true;\n }\n\n if (exists === false) {\n totals.push({\n mes: singleTotal.mes\n });\n }\n }\n }\n\n // Despues vamos insertando todos los datos de proveedor\n for (var totalIndex in getIncentiveList.total) {\n var singleTotal = getIncentiveList.total[totalIndex];\n\n if (singleTotal.anio === year) {\n for (var totalsIndex in totals) {\n var singleTotals = totals[totalsIndex];\n\n if (singleTotals.mes === singleTotal.mes) {\n if (!singleTotals[singleTotal.ClaveProveedor]) {\n singleTotals[singleTotal.Proveedor] = parseFloat(singleTotal.Incentivo);\n }\n else {\n singleTotals[singleTotal.Proveedor] += parseFloat(singleTotal.Incentivo);\n }\n }\n }\n }\n }\n\n\n setIncentiveRecords(getIncentiveList.list);\n setIncentiveTotalListRecords(getIncentiveList.total);\n setIncentiveTotalRecords(totals);\n setVendors(vendor);\n };\n\n function onAutoExpandAllListaChanged() {\n setAutoExpandAllLista(!autoExpandAllLista)\n };\n\n function onAutoExpandAllTotalChanged() {\n setAutoExpandAllTotal(!autoExpandAllTotal)\n };\n\n function viewIncentive(data) {\n return (\n \n \n \n )\n }\n\n function onValueChangedAnio(e) {\n var totals = [];\n var vendor = [];\n var year = e.value;\n\n // Primero insertamos todos los proveedores\n for (var totalIndex in incentiveTotalListRecords) {\n var singleTotal = incentiveTotalListRecords[totalIndex];\n\n if (singleTotal.anio === year) {\n var exists = false;\n for (var vendorIndex in vendor) {\n var singleVendor = vendor[vendorIndex];\n\n if (singleVendor === singleTotal.Proveedor)\n exists = true;\n }\n\n if (exists === false) {\n vendor.push(singleTotal.Proveedor);\n }\n }\n }\n\n // Primero insertamos en el arreglo todos los meses\n for (var totalIndex in incentiveTotalListRecords) {\n var singleTotal = incentiveTotalListRecords[totalIndex];\n\n if (singleTotal.anio === year) {\n var exists = false;\n for (var totalsIndex in totals) {\n var singleTotals = totals[totalsIndex];\n\n if (singleTotals.mes === singleTotal.mes)\n exists = true;\n }\n\n if (exists === false) {\n totals.push({\n mes: singleTotal.mes\n });\n }\n }\n }\n\n // Despues vamos insertando todos los datos de proveedor\n for (var totalIndex in incentiveTotalListRecords) {\n var singleTotal = incentiveTotalListRecords[totalIndex];\n\n if (singleTotal.anio === year) {\n for (var totalsIndex in totals) {\n var singleTotals = totals[totalsIndex];\n\n if (singleTotals.mes === singleTotal.mes) {\n if (!singleTotals[singleTotal.ClaveProveedor]) {\n singleTotals[singleTotal.Proveedor] = parseFloat(singleTotal.Incentivo);\n }\n else {\n singleTotals[singleTotal.Proveedor] += parseFloat(singleTotal.Incentivo);\n }\n }\n }\n }\n }\n\n setIncentiveTotalRecords(totals);\n setVendors(vendor);\n }\n\n function customizeTooltip(arg) {\n return { text: `${arg.argumentText}
${arg.seriesName}: ${arg.valueText}B` };\n }\n\n var fechaEmisionEditorOptions = { width: '100%', readOnly: true, text: 'Fecha Emisión' };\n var movimientoEditorOptions = { width: '100%', readOnly: true };\n var estatusEditorOptions = { width: '100%', readOnly: true };\n var nombreEditorOptions = { width: '100%', readOnly: true };\n var personalAsignadoEditorOptions = { width: '100%', readOnly: true };\n var nombreSupervisorEditorOptions = { width: '100%', readOnly: true };\n var inicioEvaluacionEditorOptions = { width: '100%', readOnly: true };\n var finEvaluacionEditorOptions = { width: '100%', readOnly: true };\n var duracionEvaluacionEditorOptions = { width: '100%', readOnly: true };\n\n useEffect(() => {\n window.addEventListener('popstate', (e) => {\n var hash;\n\n try {\n hash = e.target.location.hash;\n }\n catch (e) {\n hash = '';\n }\n\n if (hash === '#/Incentive') {\n history.push('/Incentive');\n\n window.location.reload();\n }\n });\n\n async function initialize() {\n var years = JSON.parse(JSON.stringify(incentiveTotalYear));\n var year = new Date().getFullYear();\n\n //Obtenemos sus incentivos asignados\n var getIncentiveList = await getIncentiveRecords(props.personal);\n\n var totals = [];\n var vendor = [];\n\n // Obtenemos el listado de años\n for (var incentiveTotalIndex in getIncentiveList.total) {\n var singleCommissionTotal = getIncentiveList.total[incentiveTotalIndex];\n\n var exists = false;\n for (var yearsIndex in years) {\n var singleYears = years[yearsIndex];\n\n if (singleYears === singleCommissionTotal.anio)\n exists = true;\n }\n\n if (exists === false) {\n years.push(singleCommissionTotal.anio)\n }\n }\n\n setIncentiveTotalYear(years);\n\n // Primero insertamos todos los proveedores\n for (var totalIndex in getIncentiveList.total) {\n var singleTotal = getIncentiveList.total[totalIndex];\n\n if (singleTotal.anio === year) {\n var exists = false;\n for (var vendorIndex in vendor) {\n var singleVendor = vendor[vendorIndex];\n\n if (singleVendor === singleTotal.Proveedor)\n exists = true;\n }\n\n if (exists === false) {\n vendor.push(singleTotal.Proveedor);\n }\n }\n }\n\n // Primero insertamos en el arreglo todos los meses\n for (var totalIndex in getIncentiveList.total) {\n var singleTotal = getIncentiveList.total[totalIndex];\n\n if (singleTotal.anio === year) {\n var exists = false;\n for (var totalsIndex in totals) {\n var singleTotals = totals[totalsIndex];\n\n if (singleTotals.mes === singleTotal.mes)\n exists = true;\n }\n\n if (exists === false) {\n totals.push({\n mes: singleTotal.mes\n });\n }\n }\n }\n\n // Despues vamos insertando todos los datos de proveedor\n for (var totalIndex in getIncentiveList.total) {\n var singleTotal = getIncentiveList.total[totalIndex];\n\n if (singleTotal.anio === year) {\n for (var totalsIndex in totals) {\n var singleTotals = totals[totalsIndex];\n\n if (singleTotals.mes === singleTotal.mes) {\n if (!singleTotals[singleTotal.ClaveProveedor]) {\n singleTotals[singleTotal.Proveedor] = parseFloat(singleTotal.Incentivo);\n }\n else {\n singleTotals[singleTotal.Proveedor] += parseFloat(singleTotal.Incentivo);\n }\n }\n }\n }\n }\n\n setIncentiveRecords(getIncentiveList.list);\n setIncentiveTotalListRecords(getIncentiveList.total);\n setIncentiveTotalRecords(totals);\n setVendors(vendor);\n }\n\n initialize();\n\n //En caso de solicitar un ID especifico, redireccionamos a ese ID\n if (!props.match.isExact) {\n var urlID = props.location.pathname.replace('/Incentive/', '');\n\n viewIncentiveButton(urlID);\n }\n // eslint-disable-next-line\n }, []);\n\n function onExporting(e) {\n const workbook = new Workbook();\n const worksheet = workbook.addWorksheet('Datos');\n\n exportDataGrid({\n component: e.component,\n worksheet,\n autoFilterEnabled: true,\n }).then(() => {\n workbook.xlsx.writeBuffer().then((buffer) => {\n saveAs(new Blob([buffer], { type: 'application/octet-stream' }), 'Datos.xlsx');\n });\n });\n e.cancel = true;\n };\n\n return (\n
\n {isDetail === false ? (\n
\n

Incentivos

\n
\n ) :\n (\n
\n

{incentivePayload.header.Movimiento}

\n
\n )}\n\n \n\n
\n {isDetail === false ? (\n
\n
\n \n \n \n
\n
\n \n
\n
\n \n \n \n \n \n \n \n\n \n\n \n \n \n \n\n \n\n \n \n \n \n
\n \n
\n
\n \n
\n
\n \n \n \n \n\n \n\n \n \n \n \n\n \n \n \n\n \n \n \n \n \n \n \n \n
\n \n
\n
Año\n \n
\n
\n
\n \n \n\n {\n vendors.map((vendor, index) => (\n \n ))\n }\n\n \n \n </ValueAxis>\n <Legend\n verticalAlignment=\"bottom\"\n horizontalAlignment=\"center\"\n itemTextPosition=\"top\"\n />\n <Export enabled={true} />\n <Tooltip enabled location=\"edge\">\n <Format\n type=\"currency\"\n precision={2}\n />\n </Tooltip>\n </Chart>\n </div>\n </Tab>\n </TabbedItem>\n </Form>\n </div>\n ) : (<div />)}\n\n <Route exact path=\"/Incentive/:ID\" render={({ match }) => {\n return (\n <div class=\"bg-gray-200\">\n {isDetail.toString() === 'true' ?\n (\n <div>\n <Link to=\"/Incentive\">\n <button onClick={cancelViewButton} type=\"submit\" class=\"bg-red-500 hover:bg-red-700 text-white font-bold py-2 px-4 rounded\">\n <FontAwesomeIcon icon={faArrowRotateLeft} /> Regresar\n </button>\n </Link>\n\n <div class=\"mt-4 bg-white p-4 shadow-xl\">\n <DataGrid\n id=\"gridDetalle\"\n columnsAutoWidth={true}\n filterBuilder={filterBuilder}\n dataSource={incentivePayload.detail}\n allowColumnReordering={true}\n showBorders={true}\n rowAlternationEnabled={true}\n allowColumnResizing={true}\n columnResizingMode={\"widget\"}\n onExporting={onExporting}\n >\n <FilterRow visible={true} />\n <FilterPanel visible={true} />\n <FilterBuilderPopup position={filterBuilderPopupPosition} />\n\n <HeaderFilter visible={true} />\n\n <GroupPanel visible={true} />\n <SearchPanel visible={true} />\n <ColumnChooser\n enabled={true}\n mode='select'\n >\n <ColumnChooserSearch\n enabled={true}\n />\n\n <ColumnChooserSelection\n allowSelectAll={true}\n selectByClick={true}\n recursive={true}\n />\n </ColumnChooser>\n <Grouping autoExpandAll={true} />\n <StateStoring enabled={true} type=\"localStorage\" storageKey=\"gridDetalleIncentivo\" />\n <Export enabled={true} />\n\n <Column dataField=\"Proveedor\" caption=\"Proveedor\" dataType=\"string\" width={350} />\n <Column dataField=\"Pedido\" caption=\"Número Pedido\" dataType=\"string\" width={150} />\n <Column dataField=\"Fecha\" caption=\"Fecha\" dataType=\"date\" width={100} />\n <Column dataField=\"Factura\" caption=\"Factura\" dataType=\"string\" width={100} />\n <Column dataField=\"NotaCredito\" caption=\"Nota Crédito\" dataType=\"string\" width={200} />\n <Column dataField=\"Incentivo\" caption=\"Incentivo\" dataType=\"number\" width={250}>\n <Format\n type=\"currency\"\n precision={2}\n />\n </Column>\n <Column dataField=\"FechaPedido\" caption=\"Fecha Pedido\" dataType=\"date\" width={150} />\n <Summary>\n <GroupItem\n column=\"Incentivo\"\n summaryType=\"sum\"\n valueFormat=\"$,##0.##\"\n displayFormat=\"Total Incentivos {0}\"\n showInGroupFooter={false} />\n <TotalItem\n column=\"Incentivo\"\n summaryType=\"sum\"\n valueFormat=\"$,##0.##\"\n displayFormat=\"Total Incentivos {0}\"\n showInColumn=\"Incentivo\" />\n </Summary>\n </DataGrid>\n </div>\n </div>\n ) :\n (<div></div>)\n }\n </div>\n );\n }}\n />\n </div>\n </div>\n );\n}","import React, { useState, useEffect, useRef } from 'react';\n\nexport default function PdfEditor(props) {\n const [className, setClassName] = useState('');\n\n useEffect(() => {\n if (props.Estatus === 'Sin Afectar')\n setClassName('inline-block text-l ml-3 px-2 py-1 font-semibold leading-tight text-gray-600 bg-gray-300 rounded-lg');\n else if (props.Estatus === 'Cancelado')\n setClassName('inline-block text-l ml-3 px-2 py-1 font-semibold leading-tight text-red-700 bg-red-200 rounded-lg');\n else if (props.Estatus === 'Pendiente')\n setClassName('inline-block text-l ml-3 px-2 py-1 font-semibold leading-tight text-blue-700 bg-blue-200 rounded-lg');\n else if (props.Estatus === 'Concluido')\n setClassName('inline-block text-l ml-3 px-2 py-1 font-semibold leading-tight text-green-700 bg-green-200 rounded-lg');\n else if (props.Estatus === 'Por Confirmar')\n setClassName('inline-block text-l ml-3 px-2 py-1 font-semibold leading-tight text-yellow-700 bg-yellow-200 rounded-lg');\n else if (props.Estatus === 'Por Autorizar')\n setClassName('inline-block text-l ml-3 px-2 py-1 font-semibold leading-tight text-blue-700 bg-blue-200 rounded-lg');\n else if (props.Estatus === 'Por Procesar')\n setClassName('inline-block text-l ml-3 px-2 py-1 font-semibold leading-tight text-yellow-700 bg-yellow-200 rounded-lg');\n else if (props.Estatus === 'Disponible')\n setClassName('inline-block text-l ml-3 px-2 py-1 font-semibold leading-tight text-blue-700 bg-blue-200 rounded-lg');\n else if (props.Estatus === 'Enrutado')\n setClassName('inline-block text-l ml-3 px-2 py-1 font-semibold leading-tight text-pink-700 bg-pink-200 rounded-lg');\n else if (props.Estatus === 'Autorizado')\n setClassName('inline-block text-l ml-3 px-2 py-1 font-semibold leading-tight text-purple-700 bg-purple-200 rounded-lg');\n else if (props.Estatus === 'En Revision')\n setClassName('inline-block text-l ml-3 px-2 py-1 font-semibold leading-tight text-yellow-700 bg-yellow-200 rounded-lg');\n else if (props.Estatus === 'Finalizado')\n setClassName('inline-block text-l ml-3 px-2 py-1 font-semibold leading-tight text-green-700 bg-green-200 rounded-lg');\n else\n setClassName('inline-block text-l ml-3 px-2 py-1 font-semibold leading-tight text-black-700 bg-gray-200 rounded-lg');\n }, [props, className]);\n\n return (\n <span className={className} >{props.Estatus}</span>\n );\n};","import React, { useState, useEffect, useRef } from 'react';\n\n// LoadPanel\nimport { LoadPanel } from 'devextreme-react/load-panel';\n\n// Toast\nimport { Toast } from 'devextreme-react/toast';\n\n// maplibre\nimport { createMap } from \"maplibre-gl-js-amplify\";\nimport maplibregl from \"maplibre-gl\";\nimport \"maplibre-gl/dist/maplibre-gl.css\";\nimport \"maplibre-gl-js-amplify/dist/public/amplify-map.css\";\nimport * as turf from \"@turf/turf\";\n\n// Grid\nimport DataGrid, {\n Column, FilterRow, HeaderFilter, FilterPanel, FilterBuilderPopup,\n GroupPanel, Grouping, SearchPanel, Sorting, Editing, Lookup, Toolbar, Item, RequiredRule,\n Scrolling, Pager, Paging, StateStoring, ColumnChooser, Format, Selection,\n Export, ColumnChooserSearch, ColumnChooserSelection\n} from 'devextreme-react/data-grid';\n\n//CheckBox\nimport CheckBox from 'devextreme-react/check-box';\n\n//Form\nimport Form, { GroupItem, Label, TabbedItem, TabPanelOptions, Tab } from 'devextreme-react/form';\n\nimport { Auth, API, Storage } from 'aws-amplify';\n\n// Ruteador\nimport { Route, Link, useHistory } from \"react-router-dom\";\n\n// Iconos\nimport { FontAwesomeIcon } from \"@fortawesome/react-fontawesome\";\nimport { faPencilAlt } from \"@fortawesome/pro-solid-svg-icons\";\nimport { faArrowRotateLeft } from \"@fortawesome/pro-solid-svg-icons\";\nimport { faSave } from \"@fortawesome/pro-solid-svg-icons\";\nimport { faClipboardCheck } from \"@fortawesome/pro-solid-svg-icons\";\nimport { faList } from \"@fortawesome/pro-duotone-svg-icons\";\nimport { faUserSecret } from \"@fortawesome/pro-duotone-svg-icons\";\nimport { faStopwatch } from \"@fortawesome/pro-solid-svg-icons\";\nimport { faFilePdf } from \"@fortawesome/pro-solid-svg-icons\";\nimport { faArrowsRotate } from \"@fortawesome/pro-solid-svg-icons\";\nimport { faFileAlt } from \"@fortawesome/pro-solid-svg-icons\";\nimport { faTrash } from \"@fortawesome/pro-solid-svg-icons\";\n\n//FileUploader\nimport FileUploader from 'devextreme-react/file-uploader';\n\n//FileManager\nimport FileManager, { Permissions } from 'devextreme-react/file-manager';\n\nimport './Checklist.css';\n\n//Text area\nimport 'devextreme-react/text-area';\n\nimport 'devextreme/data/odata/store';\nimport CustomStore from 'devextreme/data/custom_store';\n\nimport DataSource from 'devextreme/data/data_source';\n\nimport '../ListStyle.css';\n\nimport dxDateBox from \"devextreme/ui/date_box\";\n\nimport dxNumberBox from \"devextreme/ui/number_box\";\n\nimport TransactionStatus from \"../TransactionStatus/TransactionStatus.js\";\n\nimport { Workbook } from 'exceljs';\nimport { saveAs } from 'file-saver';\nimport { exportDataGrid } from 'devextreme/excel_exporter'\n\ndxDateBox.defaultOptions({\n options: {\n dateSerializationFormat: \"yyyy-MM-dd\"\n }\n});\n\ndxNumberBox.defaultOptions({\n options: {\n step: 0\n }\n});\n\nfunction isNotEmpty(value) {\n return value !== undefined && value !== null && value !== '';\n}\n\nexport default function Checklist(props) {\n const history = useHistory();\n\n var mapRef = useRef(null); // Reference to the map DOM element\n\n const [listaPersonal, setListaPersonal] = useState([]);\n const [responsable, setResponsable] = useState([]);\n const [isDetail, setIsDetail] = useState(false);\n const [id, setId] = useState();\n const [checkListPayload, setCheckListPayload] = useState({ header: {}, habilidad: [], personal: [], sucursal: [], ventas: [], resultados: {}, listaPersonal: [] });\n const [attachments, setAttachments] = useState([]);\n\n const [allowNew, setAllowNew] = useState(false);\n const [allowUpdating, setAllowUpdating] = useState(false);\n const [activateButton, setActivateButton] = useState(false);\n const [activateStopwatch, setActivateStopwatch] = useState(false);\n const [activateSaveButton, setActivateSaveButton] = useState(false);\n const [activateDeleteButton, setActivateDeleteButton] = useState(false);\n\n const [sucursales, setSucursales] = useState([]);\n const [personales, setPersonales] = useState([]);\n\n const [latitude, setLatitude] = useState('');\n const [longitude, setLongitude] = useState('');\n const [autoExpandAll, setAutoExpandAll] = useState(true);\n\n //Ref para el grid Personal\n const [gridPersonalRef, setGridPersonalRef] = useState(React.createRef());\n\n //Ref para el grid Ventas\n const [gridVentasRef, setGridVentasRef] = useState(React.createRef());\n\n // setValue para el control tab\n const [value, setValue] = React.useState(0);\n\n // loadPanelPosition para el control FileManager\n const loadPanelPosition = { of: '#file-manager' };\n\n const [visibleLoadPanel, setVisibleLoadPanel] = useState(false);\n\n const [visibleToast, setVisibleToast] = useState(false);\n const [messageToast, setMessageToast] = useState('');\n const [typeToast, setTypeToast] = useState('success');\n\n const handleChange = (event, newValue) => {\n setValue(newValue);\n };\n\n const filterBuilderPopupPosition = {\n of: window,\n at: 'top',\n my: 'top',\n offset: { y: 10 },\n };\n\n const evaluacion = [\n { name: '', value: '' },\n { name: '1 = Deficiente', value: '1 = Deficiente' },\n { name: '2 = Malo', value: '2 = Malo' },\n { name: '3 = Regular', value: '3 = Regular' },\n { name: '4 = Bueno', value: '4 = Bueno' },\n { name: '5 = Excelente', value: '5 = Excelente' },\n { name: 'N.A. = No aplica', value: 'N.A. = No aplica' }\n ]\n\n const allowedPageSizes = [5, 10, 15, 20, 'all'];\n\n const exportFormats = ['xlsx'];\n\n function getOrderDay(rowData) {\n return (new Date(rowData.OrderDate)).getDay();\n }\n\n const filterBuilder = {\n customOperations: [{\n name: 'weekends',\n caption: 'Weekends',\n dataTypes: ['date'],\n icon: 'check',\n hasValue: false,\n calculateFilterExpression: () => [[getOrderDay, '=', 0], 'or', [getOrderDay, '=', 6]],\n }],\n allowHierarchicalFields: true,\n };\n\n const filterValue = [['Estatus', '=', 'Por Confirmar']];\n\n //Ref para el grid Tablero de Control\n const [gridTableroRef, setGridTableroRef] = useState(React.createRef());\n\n async function getCheckListRecords(sqlFilter) {\n try {\n var personal = props.personal;\n var checklistAccess = props.checklistAccess;\n\n if (!checklistAccess || checklistAccess === 'undefined')\n checklistAccess = '';\n\n let apiName = 'AdminSC';\n let path = '/procesachecklist';\n\n let myInit = {\n headers: {\n 'Content-Type': 'application/json',\n Authorization: `${(await Auth.currentSession()).getAccessToken().getJwtToken()}`\n },\n queryStringParameters: {\n personal: personal,\n checklistAccess: checklistAccess,\n action: 'list',\n mov: 'Check List',\n sqlFilter: sqlFilter,\n username: JSON.parse(JSON.stringify(await Auth.currentAuthenticatedUser())).username\n }\n }\n\n var checkListGet = await API.get(apiName, path, myInit);\n }\n catch (e) {\n if (e === 'No current user') {\n history.push('/');\n\n window.location.reload();\n }\n }\n return checkListGet;\n }\n\n const store = new CustomStore({\n key: 'ID',\n load(loadOptions) {\n let sqlFilter = '(';\n [\n 'filter'\n ].forEach((i) => {\n if (i in loadOptions && isNotEmpty(loadOptions[i])) {\n var filters = loadOptions[i];\n\n var filtersLength = filters.length;\n\n for (var i = 0; i <= filtersLength; i++) {\n var singleFilter = filters[i];\n var singleFilterType = typeof singleFilter;\n var singleFilterIsArray = Array.isArray(singleFilter);\n var singleFilterIsDate = singleFilter instanceof Date;\n\n if (singleFilter === 'NULL') {\n singleFilter = '0';\n }\n\n if (singleFilterType.toString() === 'object' && singleFilterIsArray) {\n sqlFilter += '(';\n\n var subFiltersLength = singleFilter.length;\n\n for (var i2 = 0; i2 <= subFiltersLength; i2++) {\n var singleSubFilter = singleFilter[i2];\n var singleSubFilterType = typeof singleSubFilter;\n var singleSubFilterIsArray = Array.isArray(singleSubFilter);\n var singleSubFilterIsDate = singleSubFilter instanceof Date\n\n if (singleSubFilter === 'NULL') {\n singleSubFilter = '0';\n }\n\n if (singleSubFilterType.toString() === 'object' && singleSubFilterIsArray) {\n sqlFilter += '(';\n\n var subSubFiltersLength = singleSubFilter.length;\n\n for (var i3 = 0; i3 <= subSubFiltersLength; i3++) {\n var singleSubSubFilter = singleSubFilter[i3];\n var singleSubSubFilterType = typeof singleSubSubFilter;\n var singleSubSubFilterIsArray = Array.isArray(singleSubSubFilter);\n var singleSubSubFilterIsDate = singleSubSubFilter instanceof Date\n\n if (singleSubSubFilter === 'NULL') {\n singleSubSubFilter = '0';\n }\n\n if (singleSubSubFilterType.toString() === 'object' && singleSubSubFilterIsArray) {\n sqlFilter += '(';\n\n var subSubSubFiltersLength = singleSubSubFilter.length;\n\n for (var i4 = 0; i4 <= subSubSubFiltersLength; i4++) {\n var singleSubSubSubFilter = singleSubSubFilter[i4];\n var singleSubSubSubFilterType = typeof singleSubSubSubFilter;\n var singleSubSubSubFilterIsArray = Array.isArray(singleSubSubSubFilter);\n var singleSubSubSubFilterIsDate = singleSubSubSubFilter instanceof Date\n\n if (singleSubSubSubFilter === 'NULL') {\n singleSubSubSubFilter = '0';\n }\n\n if (singleSubSubSubFilterType.toString() === 'object' && singleSubSubSubFilterIsArray) {\n sqlFilter += '(';\n\n var subSubSubSubFiltersLength = singleSubSubSubFilter.length;\n\n for (var i5 = 0; i5 <= subSubSubSubFiltersLength; i5++) {\n var singleSubSubSubSubFilter = singleSubSubSubFilter[i5];\n var singleSubSubSubSubFilterType = typeof singleSubSubSubSubFilter;\n var singleSubSubSubSubFilterIsArray = Array.isArray(singleSubSubSubSubFilter);\n var singleSubSubSubSubFilterIsDate = singleSubSubSubSubFilter instanceof Date\n\n if (singleSubSubSubSubFilter === 'NULL') {\n singleSubSubSubSubFilter = '0';\n }\n\n if (singleSubSubSubSubFilterType.toString() === 'string') {\n if (singleSubSubSubSubFilter === 'contains') {\n filters[i][i2][i3][i4][i5] = 'LIKE';\n singleSubSubSubSubFilter = 'LIKE';\n\n filters[i][i2][i3][i4][i5 + 1] = '\\'%' + filters[i][i2][i3][i4][i5 + 1] + '%\\'';\n }\n else if (singleSubSubSubSubFilter === 'notcontains') {\n filters[i][i2][i3][i4][i5] = 'NOT LIKE';\n singleSubSubSubSubFilter = 'NOT LIKE';\n\n filters[i][i2][i3][i4][i5 + 1] = '\\'%' + filters[i][i2][i3][i4][i5 + 1] + '%\\'';\n }\n else if (singleSubSubSubSubFilter === 'startswith') {\n filters[i][i2][i3][i4][i5] = 'LIKE';\n singleSubSubSubSubFilter = 'LIKE';\n\n filters[i][i2][i3][i4][i5 + 1] = '\\'' + filters[i][i2][i3][i4][i5 + 1] + '%\\'';\n }\n else if (singleSubSubSubSubFilter === 'endswith') {\n filters[i][i2][i3][i4][i5] = 'LIKE';\n singleSubSubSubSubFilter = 'LIKE';\n\n filters[i][i2][i3][i4][i5 + 1] = '\\'%' + filters[i][i2][i3][i4][i5 + 1] + '\\'';\n }\n else if (singleSubSubSubSubFilter === '=' || singleSubSubSubSubFilter === '<>' || singleSubSubSubSubFilter === '>' || singleSubSubSubSubFilter === '>=' || singleSubSubSubSubFilter === '<' || singleSubSubSubSubFilter === '<=') {\n if (!filters[i][i2][i3][i4][i5 + 1])\n filters[i][i2][i3][i4][i5 + 1] = 'NULL';\n else if (typeof filters[i][i2][i3][i4][i5 + 1] === 'string') {\n filters[i][i2][i3][i4][i5 + 1] = '\\'' + filters[i][i2][i3][i4][i5 + 1] + '\\'';\n }\n }\n else if (singleSubSubSubSubFilter === '!') {\n filters[i][i2][i3][i4][i5] = 'NOT';\n singleSubSubSubSubFilter = 'NOT';\n }\n\n sqlFilter += ' ' + singleSubSubSubSubFilter + ' ';\n }\n else if (singleSubSubSubSubFilterType.toString() === 'object' && singleSubSubSubSubFilterIsDate) {\n sqlFilter += ' \\'' + singleSubSubSubSubFilter.toISOString().split('T')[0] + '\\' ';\n }\n else if (singleSubSubSubSubFilterType.toString() === 'number') {\n sqlFilter += ' ' + singleSubSubSubSubFilter.toString() + ' ';\n }\n else if (singleSubSubSubSubFilterType.toString() === 'boolean') {\n if (singleSubSubSubSubFilter.toString() === 'true')\n sqlFilter += '1 ';\n else if (singleSubSubSubSubFilter.toString() === 'false' || singleSubSubSubSubFilter === null || singleSubSubSubSubFilter === undefined)\n sqlFilter += '0 ';\n }\n }\n }\n else if (singleSubSubSubFilterType.toString() === 'string') {\n if (singleSubSubSubFilter === 'contains') {\n filters[i][i2][i3][i4] = 'LIKE';\n singleSubSubSubFilter = 'LIKE';\n\n filters[i][i2][i3][i4 + 1] = '\\'%' + filters[i][i2][i3][i4 + 1] + '%\\'';\n }\n else if (singleSubSubSubFilter === 'notcontains') {\n filters[i][i2][i3][i4] = 'NOT LIKE';\n singleSubSubSubFilter = 'NOT LIKE';\n\n filters[i][i2][i3][i4 + 1] = '\\'%' + filters[i][i2][i3][i4 + 1] + '%\\'';\n }\n else if (singleSubSubSubFilter === 'startswith') {\n filters[i][i2][i3][i4] = 'LIKE';\n singleSubSubSubFilter = 'LIKE';\n\n filters[i][i2][i3][i4 + 1] = '\\'' + filters[i][i2][i3][i4 + 1] + '%\\'';\n }\n else if (singleSubSubSubFilter === 'endswith') {\n filters[i][i2][i3][i4] = 'LIKE';\n singleSubSubSubFilter = 'LIKE';\n\n filters[i][i2][i3][i4 + 1] = '\\'%' + filters[i][i2][i3][i4 + 1] + '\\'';\n }\n else if (singleSubSubSubFilter === '=' || singleSubSubSubFilter === '<>' || singleSubSubSubFilter === '>' || singleSubSubSubFilter === '>=' || singleSubSubSubFilter === '<' || singleSubSubSubFilter === '<=') {\n if (!filters[i][i2][i3][i4 + 1])\n filters[i][i2][i3][i4 + 1] = 'NULL';\n else if (typeof filters[i][i2][i3][i4 + 1] === 'string') {\n filters[i][i2][i3][i4 + 1] = '\\'' + filters[i][i2][i3][i4 + 1] + '\\'';\n }\n }\n else if (singleSubSubSubFilter === '!') {\n filters[i][i2][i3][i4] = 'NOT';\n singleSubSubSubFilter = 'NOT';\n }\n\n sqlFilter += ' ' + singleSubSubSubFilter + ' ';\n }\n else if (singleSubSubSubFilterType.toString() === 'object' && singleSubSubSubFilterIsDate) {\n sqlFilter += ' \\'' + singleSubSubSubFilter.toISOString().split('T')[0] + '\\' ';\n }\n else if (singleSubSubSubFilterType.toString() === 'number') {\n sqlFilter += ' ' + singleSubSubSubFilter.toString() + ' ';\n }\n else if (singleSubSubSubFilterType.toString() === 'boolean') {\n if (singleSubSubSubFilter.toString() === 'true')\n sqlFilter += '1 ';\n else if (singleSubSubSubFilter.toString() === 'false' || singleSubSubSubFilter === null || singleSubSubSubFilter === undefined)\n sqlFilter += '0 ';\n }\n }\n\n sqlFilter += ')';\n }\n else if (singleSubSubFilterType.toString() === 'string') {\n if (singleSubSubFilter === 'contains') {\n filters[i][i2][i3] = 'LIKE';\n singleSubSubFilter = 'LIKE';\n\n filters[i][i2][i3 + 1] = '\\'%' + filters[i][i2][i3 + 1] + '%\\'';\n }\n else if (singleSubSubFilter === 'notcontains') {\n filters[i][i2][i3] = 'NOT LIKE';\n singleSubSubFilter = 'NOT LIKE';\n\n filters[i][i2][i3 + 1] = '\\'%' + filters[i][i2][i3 + 1] + '%\\'';\n }\n else if (singleSubSubFilter === 'startswith') {\n filters[i][i2][i3] = 'LIKE';\n singleSubSubFilter = 'LIKE';\n\n filters[i][i2][i3 + 1] = '\\'' + filters[i][i2][i3 + 1] + '%\\'';\n }\n else if (singleSubSubFilter === 'endswith') {\n filters[i][i2][i3] = 'LIKE';\n singleSubSubFilter = 'LIKE';\n\n filters[i][i2][i3 + 1] = '\\'%' + filters[i][i2][i3 + 1] + '\\'';\n }\n else if (singleSubSubFilter === '=' || singleSubSubFilter === '<>' || singleSubSubFilter === '>' || singleSubSubFilter === '>=' || singleSubSubFilter === '<' || singleSubSubFilter === '<=') {\n if (!filters[i][i2][i3 + 1])\n filters[i][i2][i3 + 1] = 'NULL';\n else if (typeof filters[i][i2][i3 + 1] === 'string') {\n filters[i][i2][i3 + 1] = '\\'' + filters[i][i2][i3 + 1] + '\\'';\n }\n }\n else if (singleSubSubFilter === '!') {\n filters[i][i2][i3] = 'NOT';\n singleSubSubFilter = 'NOT';\n }\n sqlFilter += ' ' + singleSubSubFilter + ' ';\n }\n else if (singleSubSubFilterType.toString() === 'object' && singleSubSubFilterIsDate) {\n sqlFilter += ' \\'' + singleSubSubFilter.toISOString().split('T')[0] + '\\' ';\n }\n else if (singleSubSubFilterType.toString() === 'number') {\n sqlFilter += ' ' + singleSubSubFilter.toString() + ' ';\n }\n else if (singleSubSubFilterType.toString() === 'boolean') {\n if (singleSubSubFilter.toString() === 'true')\n sqlFilter += '1 ';\n else if (singleSubSubFilter.toString() === 'false' || singleSubSubFilter === null || singleSubSubFilter === undefined)\n sqlFilter += '0 ';\n }\n }\n\n sqlFilter += ')';\n }\n else if (singleSubFilterType.toString() === 'string') {\n if (singleSubFilter === 'contains') {\n filters[i][i2] = 'LIKE';\n singleSubFilter = 'LIKE';\n\n filters[i][i2 + 1] = '\\'%' + filters[i][i2 + 1] + '%\\'';\n }\n else if (singleSubFilter === 'notcontains') {\n filters[i][i2] = 'NOT LIKE';\n singleSubFilter = 'NOT LIKE';\n\n filters[i][i2 + 1] = '\\'%' + filters[i][i2 + 1] + '%\\'';\n }\n else if (singleSubFilter === 'startswith') {\n filters[i][i2] = 'LIKE';\n singleSubFilter = 'LIKE';\n\n filters[i][i2 + 1] = '\\'' + filters[i][i2 + 1] + '%\\'';\n }\n else if (singleSubFilter === 'endswith') {\n filters[i][i2] = 'LIKE';\n singleSubFilter = 'LIKE';\n\n filters[i][i2 + 1] = '\\'%' + filters[i][i2 + 1] + '\\'';\n }\n else if (singleSubFilter === '=' || singleSubFilter === '<>' || singleSubFilter === '>' || singleSubFilter === '>=' || singleSubFilter === '<' || singleSubFilter === '<=') {\n if (!filters[i][i2 + 1])\n filters[i][i2 + 1] = 'NULL';\n else if (typeof filters[i][i2 + 1] === 'string') {\n filters[i][i2 + 1] = '\\'' + filters[i][i2 + 1] + '\\'';\n }\n }\n else if (singleSubFilter === '!') {\n filters[i][i2] = 'NOT';\n singleSubFilter = 'NOT';\n }\n sqlFilter += ' ' + singleSubFilter + ' ';\n }\n else if (singleSubFilterType.toString() === 'object' && singleSubFilterIsDate) {\n sqlFilter += ' \\'' + singleSubFilter.toISOString().split('T')[0] + '\\' ';\n }\n else if (singleSubFilterType.toString() === 'number') {\n sqlFilter += ' ' + singleSubFilter.toString() + ' ';\n }\n else if (singleSubFilterType.toString() === 'boolean') {\n if (singleSubFilter.toString() === 'true')\n sqlFilter += '1 ';\n else if (singleSubFilter.toString() === 'false' || singleSubFilter === null || singleSubFilter === undefined)\n sqlFilter += '0 ';\n }\n }\n\n sqlFilter += ')';\n }\n else if (singleFilterType.toString() === 'string') {\n if (singleFilter === 'contains') {\n filters[i] = 'LIKE';\n singleFilter = 'LIKE';\n\n filters[i + 1] = '\\'%' + filters[i + 1] + '%\\'';\n }\n else if (singleFilter === 'notcontains') {\n filters[i] = 'NOT LIKE';\n singleFilter = 'NOT LIKE';\n\n filters[i + 1] = '\\'%' + filters[i + 1] + '%\\'';\n }\n else if (singleFilter === 'startswith') {\n filters[i] = 'LIKE';\n singleFilter = 'LIKE';\n\n filters[i + 1] = '\\'' + filters[i + 1] + '%\\'';\n }\n else if (singleFilter === 'endswith') {\n filters[i] = 'LIKE';\n singleFilter = 'LIKE';\n\n filters[i + 1] = '\\'%' + filters[i + 1] + '\\'';\n }\n else if (singleFilter === '=' || singleFilter === '<>' || singleFilter === '>' || singleFilter === '>=' || singleFilter === '<' || singleFilter === '<=') {\n if (!filters[i + 1])\n filters[i + 1] = 'NULL';\n else if (typeof filters[i + 1] === 'string') {\n filters[i + 1] = '\\'' + filters[i + 1] + '\\'';\n }\n }\n else if (singleFilter === '!') {\n filters[i] = 'NOT';\n singleFilter = 'NOT';\n }\n sqlFilter += ' ' + singleFilter + ' ';\n }\n else if (singleFilterType.toString() === 'object' && singleFilterIsDate) {\n sqlFilter += ' \\'' + singleFilter.toISOString().split('T')[0] + '\\' ';\n }\n else if (singleFilterType.toString() === 'number') {\n sqlFilter += ' ' + singleFilter.toString() + ' ';\n }\n else if (singleFilterType.toString() === 'boolean') {\n if (singleFilter.toString() === 'true')\n sqlFilter += '1 ';\n else if (singleFilter.toString() === 'false' || singleFilter === null || singleFilter === undefined)\n sqlFilter += '0 ';\n }\n }\n\n sqlFilter += ')';\n }\n });\n\n async function getRecords() {\n if (sqlFilter === '(')\n sqlFilter = '';\n\n var records = await getCheckListRecords(sqlFilter);\n return {\n data: records,\n totalCount: records.length\n };\n }\n\n return getRecords()\n .then(function (result) {\n return result;\n })\n .catch(() => { throw new Error('Data Loading Error'); });\n },\n });\n\n async function getResponsableRecords() {\n try {\n let apiName = 'AdminSC';\n let path = '/getcatalogo';\n\n let myInit = {\n headers: {\n 'Content-Type': 'application/json',\n Authorization: `${(await Auth.currentSession()).getAccessToken().getJwtToken()}`\n },\n queryStringParameters: {\n type: 'Responsable',\n username: JSON.parse(JSON.stringify(await Auth.currentAuthenticatedUser())).username\n }\n }\n\n var responsableGetList = await API.get(apiName, path, myInit);\n }\n catch (e) {\n if (e === 'No current user') {\n history.push('/');\n\n window.location.reload();\n }\n }\n return responsableGetList;\n }\n\n async function getCheckListPayload(ID) {\n try {\n var personal = props.personal;\n\n let apiName = 'AdminSC';\n let path = '/procesachecklist';\n\n let myInit = {\n headers: {\n 'Content-Type': 'application/json',\n Authorization: `${(await Auth.currentSession()).getAccessToken().getJwtToken()}`\n },\n queryStringParameters: {\n personal: personal,\n ID: ID,\n action: 'payload',\n mov: 'Check List',\n username: JSON.parse(JSON.stringify(await Auth.currentAuthenticatedUser())).username\n }\n }\n\n var payloadGet = await API.get(apiName, path, myInit);\n\n setCheckListPayload(payloadGet);\n\n //Asignamos el listado de Personal\n setListaPersonal(payloadGet.listaPersonal)\n\n //Obtenemos los attachments\n var attachmentsGet = await Storage.list(\"/checklist/\" + ID);\n var attachmentsAux = [];\n\n for (var attachmentsGetIndex in attachmentsGet) {\n var singleAttachmentsGet = attachmentsGet[attachmentsGetIndex];\n\n var singleAttachment = {\n name: singleAttachmentsGet.key.split('/').pop(),\n isDirectory: false,\n size: singleAttachmentsGet.size,\n };\n\n attachmentsAux.push(singleAttachment);\n }\n\n setAttachments(attachmentsAux);\n }\n catch (e) {\n if (e === 'No current user') {\n history.push('/');\n\n window.location.reload();\n }\n }\n\n return payloadGet;\n }\n\n async function renderMap(payload) {\n let map;\n var keys;\n\n //Obtenemos las ubicacion aceptada del checklist\n var locations = {};\n var circles = {};\n\n // Definimos el circulo\n if (payload.header.Longitud && payload.header.Latitud) {\n var center = [payload.header.Longitud, payload.header.Latitud];\n\n var radius = .1;\n var options = {\n steps: 360,\n units: \"kilometers\",\n };\n\n var circle = turf.circle(center, radius, options);\n\n var validLocation = {\n coordinates: circle.geometry.coordinates\n };\n\n locations[payload.header.Nombre] = validLocation;\n locations[payload.header.Nombre].Latitud = payload.header.Latitud;\n locations[payload.header.Nombre].Longitud = payload.header.Longitud;\n\n circles[payload.header.Nombre] = circle;\n }\n // We only want to initialize the underlying maplibre map after the div has been rendered\n // Creamos el mapa\n map = await createMap({\n container: \"map\",\n center: [-101.95812036696248, 23.732791552256273],\n zoom: 4,\n repaint: true\n });\n\n // Definimos el GeolocateControl para poder obtener la posición del usuario\n var geolocate = new maplibregl.GeolocateControl({\n positionOptions: {\n enableHighAccuracy: true\n },\n trackUserLocation: false\n });\n\n // Agregamos el control al mapa\n map.addControl(geolocate);\n\n // Evento al presionar el boton de ubicación del usuario\n geolocate.on('geolocate', function (data) {\n try {\n keys = Object.keys(locations);\n }\n catch (e) {\n keys = [];\n }\n\n var valid = false;\n\n for (var keyIndex in keys) {\n if (valid === false) {\n var singleKey = keys[keyIndex];\n\n var location = locations[singleKey];\n location.name = singleKey;\n\n var centerLatitud = location.Latitud;\n var centerLongitud = location.Longitud;\n\n var centerLatLong = new maplibregl.LngLat(centerLongitud, centerLatitud);\n var userLocationLatLong = new maplibregl.LngLat(data.coords.longitude, data.coords.latitude);\n\n var distance = centerLatLong.distanceTo(userLocationLatLong) / 1000.0;\n\n if (distance <= 0.1) {\n valid = true;\n\n setLatitude(data.coords.latitude);\n setLongitude(data.coords.longitude);\n\n break;\n }\n }\n }\n\n //Asignamos el permiso para editar los grids y los botones\n if (payload.header.Estatus === 'Concluido') {\n setActivateButton(false);\n setActivateSaveButton(false);\n setAllowUpdating(false);\n setActivateStopwatch(false);\n setActivateDeleteButton(false);\n }\n else {\n if (valid === false) {\n setActivateButton(false);\n setActivateSaveButton(false);\n setAllowUpdating(false);\n setActivateStopwatch(false);\n setActivateDeleteButton(false);\n }\n else {\n if (payload.header.InicioEvaluacion) {\n setActivateButton(true);\n setActivateSaveButton(true);\n setAllowUpdating(true);\n setActivateStopwatch(false);\n setActivateDeleteButton(false);\n }\n else {\n setActivateButton(false);\n setActivateSaveButton(false);\n setAllowUpdating(false);\n setActivateStopwatch(true);\n setActivateDeleteButton(false)\n }\n }\n }\n });\n\n map.on('load', function () {\n try {\n keys = Object.keys(locations);\n }\n catch (e) {\n keys = [];\n }\n\n for (var keyIndex in keys) {\n var singleKey = keys[keyIndex];\n\n var circle = circles[singleKey];\n\n var layer = map.getLayer(singleKey);\n\n if (layer)\n map.removeLayer(singleKey);\n\n var source = map.getSource(singleKey);\n\n if (source)\n map.removeSource(singleKey);\n\n map.addSource(singleKey, {\n type: \"geojson\",\n data: circle\n });\n\n //Agregamos el Layer al mapa para mostrarlo\n map.addLayer({\n id: singleKey,\n type: \"fill\",\n source: singleKey,\n paint: {\n \"fill-color\": \"blue\",\n \"fill-opacity\": 0.2\n }\n });\n }\n\n //Ejecutamos el Geolocate Control para poder centrar el mapa a la posición del usuario\n geolocate.trigger();\n });\n\n map.addControl(new maplibregl.NavigationControl(), \"top-right\");\n\n try {\n keys = Object.keys(locations);\n }\n catch (e) {\n keys = [];\n }\n\n for (var keyIndex in keys) {\n var singleKey = keys[keyIndex];\n\n var location = locations[singleKey];\n\n new maplibregl.Marker({\n })\n .setLngLat([location.Longitud, location.Latitud])\n .addTo(map);\n }\n };\n\n async function startStopwatch() {\n try {\n if (!window.confirm('¿Desea iniciar el checklist?'))\n return;\n\n setVisibleLoadPanel(true);\n\n var ID = checkListPayload.header.ID;\n\n //Despues enviamos todo al backend\n let apiName = 'AdminSC';\n let path = '/procesachecklist';\n\n let myInit = {\n headers: {\n 'Content-Type': 'application/json',\n Authorization: `${(await Auth.currentSession()).getAccessToken().getJwtToken()}`\n },\n body: {\n ID: ID,\n payload: checkListPayload,\n action: 'startStopwatch',\n username: JSON.parse(JSON.stringify(await Auth.currentAuthenticatedUser())).username\n }\n }\n\n var payloadPost = await API.post(apiName, path, myInit);\n\n if (payloadPost.ok === 'true') {\n setVisibleLoadPanel(false);\n\n setVisibleToast(true);\n setMessageToast('Se inició el checklist con éxito');\n setTypeToast('success')\n }\n else if (payloadPost.ok === 'false') {\n setVisibleLoadPanel(false);\n\n setVisibleToast(true);\n setMessageToast(payloadPost.message);\n setTypeToast('error')\n }\n\n editChecklistButton(ID);\n }\n catch (e) {\n setVisibleLoadPanel(false);\n\n if (e === 'No current user') {\n history.push('/');\n\n window.location.reload();\n }\n }\n };\n\n async function editChecklistButton(ID) {\n try {\n if (!window.event.metaKey && !window.event.ctrlKey) {\n setVisibleLoadPanel(true);\n\n setIsDetail(true);\n\n setId(ID);\n\n var payload = await getCheckListPayload(ID);\n\n if (payload.header.Estatus === 'Sin Afectar') {\n setAllowNew(true);\n setActivateButton(true);\n setActivateStopwatch(false);\n setActivateSaveButton(true);\n setActivateDeleteButton(true);\n setAllowUpdating(false);\n }\n else {\n setAllowNew(false);\n }\n\n setVisibleLoadPanel(false);\n\n if (ID && ID !== 'undefined' && payload.header.Estatus !== 'Sin Afectar') {\n await renderMap(payload);\n }\n }\n }\n catch (e) {\n setVisibleLoadPanel(false);\n\n if (!ID || ID === 'undefined') {\n newButton();\n }\n }\n };\n\n async function cancelEditButton() {\n setIsDetail(false);\n };\n\n async function saveButton() {\n try {\n if (checkListPayload.header.Estatus === 'Sin Afectar') {\n if (!checkListPayload.header.PersonalAsignado || checkListPayload.header.PersonalAsignado === '') {\n setVisibleToast(true);\n setMessageToast('Falta especificar el Supervisor')\n setTypeToast('error');\n return;\n }\n if (!checkListPayload.header.SucursalAsignada || checkListPayload.header.SucursalAsignada === '') {\n setVisibleToast(true);\n setMessageToast('Falta especificar la Sucursal')\n setTypeToast('error');\n return;\n }\n }\n\n setVisibleLoadPanel(true);\n\n var ID = checkListPayload.header.ID;\n\n //Primero guardamos los cambios del grid Personal\n if (gridPersonalRef.current) {\n var gridPersonal = gridPersonalRef.current.instance();\n\n gridPersonal.saveEditData();\n }\n\n //Despues guardamos los cambios del grid Ventas\n if (gridVentasRef.current) {\n var gridVentas = gridVentasRef.current.instance();\n\n gridVentas.saveEditData();\n }\n\n //Despues enviamos todo al backend\n let apiName = 'AdminSC';\n let path = '/procesachecklist';\n\n let myInit = {\n headers: {\n 'Content-Type': 'application/json',\n Authorization: `${(await Auth.currentSession()).getAccessToken().getJwtToken()}`\n },\n body: {\n ID: ID,\n payload: checkListPayload,\n action: 'saveChanges',\n username: JSON.parse(JSON.stringify(await Auth.currentAuthenticatedUser())).username,\n s3Bucket: Storage._config.AWSS3.bucket\n }\n }\n\n var payloadPost = await API.post(apiName, path, myInit);\n\n if (payloadPost.ok === 'true') {\n if (!ID) {\n setVisibleToast(true);\n setMessageToast('Se creó el checklist con éxito');\n setTypeToast('success')\n\n ID = payloadPost.newID;\n\n editChecklistButton(ID);\n\n history.push('/Checklist/' + ID.toString());\n }\n else {\n setVisibleToast(true);\n setMessageToast('Se actualizó el checklist con éxito');\n setTypeToast('success')\n }\n }\n else if (payloadPost.ok === 'false') {\n setVisibleToast(true);\n setMessageToast(payloadPost.message)\n setTypeToast('error')\n }\n\n editChecklistButton(ID);\n\n setVisibleLoadPanel(false);\n }\n catch (e) {\n setVisibleLoadPanel(false);\n\n if (e === 'No current user') {\n history.push('/');\n\n window.location.reload();\n }\n }\n };\n\n async function confirmButton() {\n try {\n if (checkListPayload.header.Estatus === 'Sin Afectar') {\n if (!checkListPayload.header.PersonalAsignado || checkListPayload.header.PersonalAsignado === '') {\n setVisibleToast(true);\n setMessageToast('Falta especificar el Supervisor')\n setTypeToast('error');\n return;\n }\n if (!checkListPayload.header.SucursalAsignada || checkListPayload.header.SucursalAsignada === '') {\n setVisibleToast(true);\n setMessageToast('Falta especificar la Sucursal')\n setTypeToast('error');\n return;\n }\n }\n\n if (!window.confirm('¿Desea confirmar el checklist?'))\n return;\n\n setVisibleLoadPanel(true);\n\n var ID = checkListPayload.header.ID;\n\n //Primero guardamos los cambios del grid\n if (gridPersonalRef.current) {\n var gridPersonal = gridPersonalRef.current.instance();\n\n gridPersonal.saveEditData();\n }\n\n //Despues guardamos los cambios del grid Ventas\n if (gridVentasRef.current) {\n var gridVentas = gridVentasRef.current.instance();\n\n gridVentas.saveEditData();\n }\n\n let apiName = 'AdminSC';\n let path = '/procesachecklist';\n\n let myInit = {\n headers: {\n 'Content-Type': 'application/json',\n Authorization: `${(await Auth.currentSession()).getAccessToken().getJwtToken()}`\n },\n body: {\n ID: ID,\n payload: checkListPayload,\n action: 'apply',\n username: JSON.parse(JSON.stringify(await Auth.currentAuthenticatedUser())).username\n }\n }\n\n var payloadPost = await API.post(apiName, path, myInit);\n\n if (payloadPost.ok === 'true') {\n if (!ID) {\n setVisibleLoadPanel(false);\n\n setVisibleToast(true);\n setMessageToast('Checklist creado con éxito');\n setTypeToast('success')\n\n ID = payloadPost.newID;\n\n editChecklistButton(ID);\n\n history.push('/Checklist/' + ID.toString());\n }\n else {\n setVisibleLoadPanel(false);\n\n setVisibleToast(true);\n setMessageToast('Checklist Concluido con éxito');\n setTypeToast('success')\n\n setAllowUpdating(false);\n setActivateButton(false);\n setActivateSaveButton(false);\n\n editChecklistButton(ID);\n\n history.push('/Checklist/' + ID.toString());\n }\n }\n else if (payloadPost.ok === 'false') {\n setVisibleLoadPanel(false);\n\n setVisibleToast(true);\n setMessageToast(payloadPost.message);\n setTypeToast('error')\n }\n }\n catch (e) {\n setVisibleLoadPanel(false);\n\n if (e === 'No current user') {\n history.push('/');\n\n window.location.reload();\n }\n }\n };\n\n function printButton() {\n var baseUrl = window.location.href.split('/')[0];\n\n window.open(baseUrl + \"/#/PdfRender?type=checklist&id=\" + id, \"_blank\");\n };\n\n function editCheckList(data) {\n return (\n <Link to={`/Checklist/${data.data.ID}`}>\n <button class=\"bg-blue-500 hover:bg-blue-700 text-white py-1 px-3 rounded\" onClick={() => editChecklistButton(data.data.ID)}><FontAwesomeIcon icon={faPencilAlt} /> Editar</button>\n </Link>\n )\n }\n\n function onAutoExpandAllChanged() {\n setAutoExpandAll(!autoExpandAll)\n };\n\n async function getSucursales() {\n let apiName = 'AdminSC';\n let path = '/getcatalogo';\n\n let myInit = {\n headers: {\n 'Content-Type': 'application/json',\n Authorization: `${(await Auth.currentSession()).getAccessToken().getJwtToken()}`\n },\n queryStringParameters: {\n type: 'Sucursal',\n username: JSON.parse(JSON.stringify(await Auth.currentAuthenticatedUser())).username\n }\n }\n\n var sucursalesGet = await API.get(apiName, path, myInit);\n\n var sucursalesTmp = [];\n for (var sucursalesGetIndex in sucursalesGet) {\n var singleSucursalesGet = sucursalesGet[sucursalesGetIndex];\n\n var singleSucursal = {\n name: singleSucursalesGet.Nombre,\n value: singleSucursalesGet.Sucursal.toString()\n };\n\n sucursalesTmp.push(singleSucursal);\n }\n\n setSucursales(sucursalesTmp);\n\n return sucursalesTmp;\n };\n\n async function getPersonal() {\n let apiName = 'AdminSC';\n let path = '/getcatalogo';\n\n let myInit = {\n headers: {\n 'Content-Type': 'application/json',\n Authorization: `${(await Auth.currentSession()).getAccessToken().getJwtToken()}`\n },\n queryStringParameters: {\n type: 'Personal',\n includeInactive: true,\n username: JSON.parse(JSON.stringify(await Auth.currentAuthenticatedUser())).username\n }\n }\n\n var personalesGet = await API.get(apiName, path, myInit);\n\n var personalesTmp = [];\n for (var personalesGetIndex in personalesGet) {\n var singlePersonalesGet = personalesGet[personalesGetIndex];\n\n var singlePersonal = {\n name: singlePersonalesGet.ApellidoPaterno + ' ' + singlePersonalesGet.ApellidoMaterno + ' ' + singlePersonalesGet.Nombre,\n value: singlePersonalesGet.Personal\n };\n\n personalesTmp.push(singlePersonal);\n }\n\n setPersonales(personalesTmp);\n\n return personalesTmp;\n };\n\n var sucursalDataSource = new DataSource({\n paginate: true,\n store: {\n type: \"array\",\n key: \"Sucursal\",\n data: sucursales\n }\n });\n\n var personalDataSource = new DataSource({\n paginate: true,\n store: {\n type: \"array\",\n key: \"Personal\",\n data: personales\n }\n });\n\n\n var fechaEmisionEditorOptions = { width: '100%', disabled: !allowNew, text: 'Fecha Emisión' };\n var movimientoEditorOptions = { width: '100%', readOnly: true };\n var estatusEditorOptions = { width: '100%', readOnly: true };\n\n //Opciones Sucursal\n try {\n var sucursalAsignadaEditorOptions = { disabled: !allowNew, dataSource: sucursalDataSource, displayExpr: 'name', valueExpr: 'value', searchEnabled: true, value: (checkListPayload.header.SucursalAsignada.toString() ? checkListPayload.header.SucursalAsignada.toString() : ''), width: '100%' };\n }\n catch (e) {\n var sucursalAsignadaEditorOptions = { disabled: !allowNew, dataSource: sucursalDataSource, displayExpr: 'name', valueExpr: 'value', searchEnabled: true, value: '', width: '100%' };\n }\n\n //Opciones Personal\n try {\n var personalAsignadoEditorOptions = { disabled: !allowNew, dataSource: personalDataSource, displayExpr: 'name', valueExpr: 'value', searchEnabled: true, value: (checkListPayload.header.PersonalAsignado ? checkListPayload.header.PersonalAsignado : ''), width: '100%' };\n }\n catch (e) {\n var personalAsignadoEditorOptions = { disabled: !allowNew, dataSource: personalDataSource, displayExpr: 'name', valueExpr: 'value', searchEnabled: true, value: '', width: '100%' };\n }\n\n var nombreSupervisorEditorOptions = { width: '100%', readOnly: true };\n var inicioEvaluacionEditorOptions = { width: '100%', readOnly: true };\n var finEvaluacionEditorOptions = { width: '100%', readOnly: true };\n var duracionEvaluacionEditorOptions = { width: '100%', readOnly: true };\n\n var ventasEditorOptions = { format: { type: 'currency', currency: 'MXN', precision: 2 }, width: '100%', disabled: false };\n var metasEditorOptions = { format: { type: 'currency', currency: 'MXN', precision: 2 }, width: '100%', disabled: false };\n var ticketPromedioEditorOptions = { format: { type: 'currency', currency: 'MXN', precision: 2 }, width: '100%', disabled: false };\n var resultadoEditorOptions = { height: 130, width: '100%', disabled: false };\n\n useEffect(() => {\n window.addEventListener('popstate', (e) => {\n var hash;\n\n try {\n hash = e.target.location.hash;\n }\n catch (e) {\n hash = '';\n }\n\n if (hash === '#/Checklist') {\n history.push('/Checklist');\n\n window.location.reload();\n }\n });\n\n async function initialize() {\n // setVisibleLoadPanel(true);\n\n //Obtenemos el listado de Responsable\n var getResponsableList = await getResponsableRecords();\n setResponsable(getResponsableList);\n\n //Obtenemos el listado de Sucursales\n var sucursalList = await getSucursales();\n\n //Obtenemos el listado de Personales\n var personalList = await getPersonal();\n\n // setVisibleLoadPanel(false);\n }\n\n initialize();\n\n //En caso de solicitar un ID especifico, redireccionamos a ese ID\n if (!props.match.isExact) {\n var urlID = props.location.pathname.replace('/Checklist/', '');\n\n editChecklistButton(urlID);\n }\n\n // eslint-disable-next-line\n }, []);\n\n function overrideOnValueChanged(e) {\n //Deshabilitamos la escritura en los campos tipo select\n if (e.parentType === 'dataRow' && (e.dataField === 'Evaluacion' || e.dataField === 'Uniforme' || e.dataField === 'Presentacion' || e.dataField === 'Disposicion' || e.dataField === 'Actitud' || e.dataField === 'Concepto' || e.dataField === 'Responsable' || e.dataField === 'Trabajador' || e.dataField === 'Bienvenida' || e.dataField === 'DeteccionNecesidades' || e.dataField === 'LaborVenta' || e.dataField === 'ConocimientoProducto' || e.dataField === 'ManejoObjeciones' || e.dataField === 'Cierre' || e.dataField === 'ProductosAdicionales')) {\n e.editorOptions.searchEnabled = false;\n }\n\n //Hacemos la data persistente en cuanto el usuario escriba en el campo\n // if (e.parentType === \"dataRow\") {\n // e.editorOptions.valueChangeEvent = \"input\";\n // }\n }\n\n async function uploadChunk(file, uploadInfo) {\n try {\n var responseS3 = await Storage.put(\"/checklist/\" + id + \"/\" + file.name, uploadInfo.chunkBlob, {\n contentType: file.type,\n ACL: 'public-read'\n });\n\n //Obtenemos el nombre del bucket\n let bucketName = Storage._config.AWSS3.bucket;\n\n\n let apiName = 'AdminSC';\n let path = '/uploadattachment';\n\n let myInit = {\n headers: {\n 'Content-Type': 'application/json',\n Authorization: `${(await Auth.currentSession()).getAccessToken().getJwtToken()}`\n },\n body: {\n action: 'register',\n bucketName: bucketName,\n type: 'checklist',\n id: id,\n Key: \"/checklist/\" + id + \"/\" + file.name,\n fileName: file.name,\n username: JSON.parse(JSON.stringify(await Auth.currentAuthenticatedUser())).username\n }\n }\n\n var attachmentsResult = await API.post(apiName, path, myInit);\n\n //Obtenemos los attachments\n var attachmentsGet = await Storage.list(\"/checklist/\" + id);\n var attachmentsAux = [];\n\n for (var attachmentsGetIndex in attachmentsGet) {\n var singleAttachmentsGet = attachmentsGet[attachmentsGetIndex];\n\n var singleAttachment = {\n name: singleAttachmentsGet.key.split('/').pop(),\n isDirectory: false,\n size: singleAttachmentsGet.size,\n };\n\n attachmentsAux.push(singleAttachment);\n }\n\n setAttachments(attachmentsAux);\n\n }\n catch (err) {\n console.log(\"Error uploading file:\", err);\n }\n }\n\n async function onAttachmentDeleting(e) {\n var fileName = e.item.key;\n\n //Primero borramos el archivo de S3\n var attachmentsDelete = await Storage.remove(\"/checklist/\" + id + \"/\" + fileName);\n\n //Despues borramos el attachment en Intelisis\n let bucketName = Storage._config.AWSS3.bucket;\n\n let apiName = 'AdminSC';\n let path = '/uploadattachment';\n\n let myInit = {\n headers: {\n 'Content-Type': 'application/json',\n Authorization: `${(await Auth.currentSession()).getAccessToken().getJwtToken()}`\n },\n body: {\n action: 'delete',\n bucketName: bucketName,\n type: 'checklist',\n id: id,\n Key: \"/checklist/\" + id + \"/\" + fileName,\n fileName: fileName,\n username: JSON.parse(JSON.stringify(await Auth.currentAuthenticatedUser())).username\n }\n }\n\n var attachmentsResult = await API.post(apiName, path, myInit);\n\n //Finalmente sincronizamos el state\n var attachmentsGet = await Storage.list(\"/checklist/\" + id);\n var attachmentsAux = [];\n\n for (var attachmentsGetIndex in attachmentsGet) {\n var singleAttachmentsGet = attachmentsGet[attachmentsGetIndex];\n\n var singleAttachment = {\n name: singleAttachmentsGet.key.split('/').pop(),\n isDirectory: false,\n size: singleAttachmentsGet.size,\n };\n\n attachmentsAux.push(singleAttachment);\n }\n\n setAttachments(attachmentsAux);\n };\n\n function downloadBlob(blob, filename) {\n const url = URL.createObjectURL(blob);\n const a = document.createElement('a');\n a.href = url;\n a.download = filename || 'download';\n const clickHandler = () => {\n setTimeout(() => {\n URL.revokeObjectURL(url);\n a.removeEventListener('click', clickHandler);\n }, 150);\n };\n\n a.addEventListener('click', clickHandler, false);\n\n a.click();\n\n return a;\n };\n\n async function onItemDownloading(e) {\n e.cancel = true;\n\n const downloadFileResponse = await Storage.get(\"/checklist/\" + id + \"/\" + e.item.name, { download: true });\n\n downloadBlob(downloadFileResponse.Body, e.item.name);\n };\n\n function openBlob(blob, filename) {\n const url = URL.createObjectURL(blob);\n\n window.open(url, \"_blank\");\n };\n\n async function onAttachmentOpen(e) {\n const downloadFileResponse = await Storage.get(\"/checklist/\" + id + \"/\" + e.file.name, { download: true });\n\n openBlob(downloadFileResponse.Body, e.file.name);\n };\n\n function onRowInsertedGridPersonal(e) {\n var Trabajador = e.data.Trabajador;\n var listaPersonalAux = JSON.parse(JSON.stringify(listaPersonal));\n var exists = false;\n\n for (var listaPersonalAuxIndex in listaPersonalAux) {\n var singleListaPersonalAux = listaPersonalAux[listaPersonalAuxIndex];\n\n if (singleListaPersonalAux.value === Trabajador)\n exists = true;\n }\n\n if (exists === false) {\n listaPersonalAux.push({ name: Trabajador, value: Trabajador });\n\n setListaPersonal(listaPersonalAux);\n }\n };\n\n function onRowRemovedGridPersonal(e) {\n var Trabajador = e.data.Trabajador;\n var listaPersonalAux = JSON.parse(JSON.stringify(listaPersonal));\n var finalListaPersonal = [];\n\n for (var listaPersonalAuxIndex in listaPersonalAux) {\n var singleListaPersonalAux = listaPersonalAux[listaPersonalAuxIndex];\n\n if (singleListaPersonalAux.value !== Trabajador)\n finalListaPersonal.push(singleListaPersonalAux);\n }\n\n setListaPersonal(finalListaPersonal);\n };\n\n function onHidingToast() {\n setVisibleToast(false);\n }\n\n function refreshButton() {\n if (gridTableroRef.current) {\n var gridTablero = gridTableroRef.current.instance();\n\n gridTablero.refresh();\n }\n }\n\n async function newButton() {\n try {\n setVisibleLoadPanel(true);\n\n let apiName = 'AdminSC';\n let path = '/procesachecklist';\n\n let myInit = {\n headers: {\n 'Content-Type': 'application/json',\n Authorization: `${(await Auth.currentSession()).getAccessToken().getJwtToken()}`\n },\n queryStringParameters: {\n personal: props.personal,\n checklistAccess: props.checklistAccess,\n action: 'new',\n mov: 'Check List',\n username: JSON.parse(JSON.stringify(await Auth.currentAuthenticatedUser())).username\n }\n };\n\n var payloadNew = await API.get(apiName, path, myInit);\n\n setCheckListPayload(payloadNew);\n\n setAttachments([]);\n\n setIsDetail(true);\n setId(undefined);\n setAllowNew(true);\n\n setActivateButton(true);\n setActivateStopwatch(false);\n setActivateSaveButton(true);\n setActivateDeleteButton(true);\n setAllowUpdating(false);\n\n setVisibleLoadPanel(false);\n }\n catch (e) {\n setVisibleLoadPanel(false);\n if (e === 'No current user') {\n history.push('/');\n\n window.location.reload();\n }\n }\n };\n\n async function deleteButton() {\n try {\n if (!window.confirm('¿Desea eliminar el checklist?'))\n return;\n\n setVisibleLoadPanel(true);\n\n var ID = checkListPayload.header.ID;\n\n if (!ID) {\n //Vamos al tablero de control\n history.push('/Checklist');\n return;\n }\n\n let apiName = 'AdminSC';\n let path = '/procesachecklist';\n\n let myInit = {\n headers: {\n 'Content-Type': 'application/json',\n Authorization: `${(await Auth.currentSession()).getAccessToken().getJwtToken()}`\n },\n body: {\n ID: ID,\n payload: checkListPayload,\n action: 'delete',\n username: JSON.parse(JSON.stringify(await Auth.currentAuthenticatedUser())).username\n }\n }\n\n var payloadPost = await API.post(apiName, path, myInit);\n\n if (payloadPost.ok === 'true') {\n setVisibleLoadPanel(false);\n\n setVisibleToast(true);\n setMessageToast('Checklist eliminado con éxito');\n setTypeToast('success')\n\n setIsDetail(false);\n\n //Vamos al tablero de control\n history.push('/Checklist');\n }\n else if (payloadPost.ok === 'false') {\n setVisibleLoadPanel(false);\n\n setVisibleToast(true);\n setMessageToast(payloadPost.message);\n setTypeToast('error')\n }\n }\n catch (e) {\n setVisibleLoadPanel(false);\n\n if (e === 'No current user') {\n history.push('/');\n\n window.location.reload();\n }\n }\n }\n\n function onExporting(e) {\n const workbook = new Workbook();\n const worksheet = workbook.addWorksheet('Datos');\n\n exportDataGrid({\n component: e.component,\n worksheet,\n autoFilterEnabled: true,\n }).then(() => {\n workbook.xlsx.writeBuffer().then((buffer) => {\n saveAs(new Blob([buffer], { type: 'application/octet-stream' }), 'Datos.xlsx');\n });\n });\n e.cancel = true;\n };\n\n return (\n <div>\n {isDetail === false ? (\n <div class=\"bg-gray-200 m-2\">\n <h1 class=\"font-sans inline-block text-xl font-bold text-gray-700 leading-8 align-top mb-1\"><FontAwesomeIcon icon={faList} size=\"lg\" /> Checklist Supervisores</h1>\n </div>\n ) :\n (\n <div class=\"bg-gray-200 m-2\">\n <h1 class=\"font-sans inline-block text-xl font-bold text-gray-700 leading-8 align-top mb-1\"><FontAwesomeIcon icon={faUserSecret} size=\"xl\" /> {(checkListPayload.header ? checkListPayload.header.Movimiento : 'Check List')}</h1>\n <TransactionStatus {...props} Estatus={checkListPayload.header.Estatus} />\n </div>\n )}\n\n <LoadPanel\n shadingColor=\"rgba(0,0,0,0.4)\"\n visible={visibleLoadPanel}\n showIndicator={true}\n message=\"Por favor espere...\"\n shading={true}\n showPane={true}\n hideOnOutsideClick={false}\n />\n\n <Toast\n visible={visibleToast}\n message={messageToast}\n type={typeToast}\n onHiding={onHidingToast}\n displayTime={5000}\n width={'auto'}\n position={{\n my: 'top center',\n at: 'top center',\n of: window,\n offset: '0 130'\n }}\n />\n\n <div class=\"bg-gray-200 m-2\">\n {isDetail === false ? (\n <div class=\"bg-white p-3 shadow-xl\">\n\n {props.newChecklist.toString() === 'true' ?\n (\n <div>\n <Link to=\"/Checklist/undefined\">\n <button class=\"mb-2 bg-green-500 hover:bg-green-700 text-white font-bold py-2 px-4 rounded\" onClick={() => newButton()}><FontAwesomeIcon icon={faFileAlt} /> Nuevo Checklist</button>\n </Link>\n\n <button onClick={refreshButton} type=\"submit\" class=\"ml-4 mb-4 bg-blue-500 hover:bg-blue-700 text-white font-bold py-2 px-4 rounded\">\n <FontAwesomeIcon icon={faArrowsRotate} /> Actualizar\n </button>\n </div>\n ) :\n (\n <div>\n <button onClick={refreshButton} type=\"submit\" class=\"mb-4 bg-blue-500 hover:bg-blue-700 text-white font-bold py-2 px-4 rounded\">\n <FontAwesomeIcon icon={faArrowsRotate} /> Actualizar\n </button>\n </div>\n )}\n\n <div className=\"options mb-2\">\n <div className=\"option\">\n <CheckBox text=\"Expandir todos los grupos\"\n value={autoExpandAll}\n onValueChanged={onAutoExpandAllChanged}></CheckBox>\n </div>\n </div>\n <DataGrid\n height={800}\n id=\"gridContainer\"\n columnsAutoWidth={true}\n filterBuilder={filterBuilder}\n dataSource={store}\n defaultFilterValue={filterValue}\n allowColumnReordering={true}\n allowColumnResizing={true}\n columnResizingMode={\"widget\"}\n showBorders={true}\n rowAlternationEnabled={true}\n showRowLines={true}\n showColumnLines={true}\n remoteOperations={{ filtering: true }}\n ref={gridTableroRef}\n onExporting={onExporting}\n >\n <Scrolling rowRenderingMode='virtual'></Scrolling>\n <Paging defaultPageSize={10} />\n <Pager\n visible={true}\n allowedPageSizes={allowedPageSizes}\n displayMode='compact'\n showPageSizeSelector={true}\n showInfo={true}\n showNavigationButtons={true} />\n <FilterRow visible={true} />\n <FilterPanel visible={true} />\n <FilterBuilderPopup position={filterBuilderPopupPosition} />\n\n <HeaderFilter visible={true} />\n\n <GroupPanel visible={true} />\n <SearchPanel visible={true} />\n <ColumnChooser\n enabled={true}\n mode='select'\n >\n <ColumnChooserSearch\n enabled={true}\n />\n\n <ColumnChooserSelection\n allowSelectAll={true}\n selectByClick={true}\n recursive={true}\n />\n </ColumnChooser>\n <Grouping autoExpandAll={autoExpandAll} />\n <StateStoring enabled={true} type=\"localStorage\" storageKey=\"gridContainerChecklist\" />\n <Export enabled={true} />\n\n <Column caption=\"\" alignment=\"center\" width={100} cellRender={editCheckList} />\n <Column dataField=\"MovID\" dataType=\"string\" width={190} caption=\"Folio\" />\n <Column dataField=\"FechaEmision\" caption=\"Fecha Requerida\" dataType=\"date\" width={150} />\n <Column dataField=\"Estatus\" dataType=\"string\" width={150} />\n <Column caption=\"Nombre Sucursal\" dataField=\"Nombre\" dataType=\"string\" groupIndex={1} />\n <Column caption=\"Nombre Supervisor\" dataField=\"NombreSupervisor\" dataType=\"string\" width={350} />\n <Column caption=\"Plaza\" dataField=\"Plaza\" dataType=\"string\" width={150} groupIndex={0} />\n </DataGrid>\n </div>\n ) : (<div />)}\n <Route exact path=\"/Checklist/:ID\" render={({ match }) => {\n return (\n <div class=\"bg-gray-200\">\n {isDetail.toString() === 'true' ?\n (\n <div>\n <Link to=\"/Checklist\">\n <button onClick={cancelEditButton} type=\"submit\" class=\"mb-4 bg-red-500 hover:bg-red-700 text-white font-bold py-2 px-4 rounded\">\n <FontAwesomeIcon icon={faArrowRotateLeft} /> Regresar\n </button>\n </Link>\n\n {activateSaveButton.toString() === 'true' ?\n (\n <button onClick={saveButton} type=\"submit\" class=\"ml-4 mb-4 bg-blue-500 hover:bg-blue-700 text-white font-bold py-2 px-4 rounded\">\n <FontAwesomeIcon icon={faSave} /> Guardar Cambios\n </button>\n ) : (\n <button disabled onClick={saveButton} type=\"submit\" class=\"ml-4 mb-4 cursor-not-allowed disabled:opacity-75 bg-gray-500 hover:bg-gray-700 text-white font-bold py-2 px-4 rounded\">\n <FontAwesomeIcon icon={faSave} /> Guardar Cambios\n </button>\n )}\n\n {activateButton.toString() === 'true' ?\n (\n <button onClick={confirmButton} type=\"submit\" class=\"ml-4 mb-4 bg-green-500 hover:bg-green-700 text-white font-bold py-2 px-4 rounded\">\n <FontAwesomeIcon icon={faClipboardCheck} /> Confirmar Checklist\n </button>\n ) : (\n <button disabled onClick={confirmButton} type=\"submit\" class=\"ml-4 mb-4 cursor-not-allowed disabled:opacity-75 bg-gray-500 hover:bg-gray-700 text-white font-bold py-2 px-4 rounded\">\n <FontAwesomeIcon icon={faClipboardCheck} /> Confirmar Checklist\n </button>\n )}\n\n {activateStopwatch.toString() === 'true' ?\n (\n <button onClick={startStopwatch} type=\"submit\" class=\"ml-4 mb-4 bg-yellow-500 hover:bg-yellow-700 text-white font-bold py-2 px-4 rounded\">\n <FontAwesomeIcon icon={faStopwatch} /> Iniciar Checklist\n </button>\n ) : (\n <button disabled onClick={startStopwatch} type=\"submit\" class=\"ml-4 mb-4 cursor-not-allowed disabled:opacity-75 bg-gray-500 hover:bg-gray-700 text-white font-bold py-2 px-4 rounded\">\n <FontAwesomeIcon icon={faStopwatch} /> Iniciar Checklist\n </button>\n )}\n\n <button onClick={printButton} type=\"submit\" class=\"ml-4 mb-4 bg-gray-500 hover:bg-gray-700 text-white font-bold py-2 px-4 rounded\">\n <FontAwesomeIcon icon={faFilePdf} /> PDF\n </button>\n\n {activateDeleteButton.toString() === 'true' && id ?\n (\n <button onClick={deleteButton} type=\"submit\" class=\"ml-4 mb-4 bg-red-500 hover:bg-red-700 text-white font-bold py-2 px-4 rounded\">\n <FontAwesomeIcon icon={faTrash} /> Eliminar\n </button>\n ) :\n (<div></div>)}\n\n <div class=\"h-72\" ref={mapRef} id=\"map\" />\n <div class=\"p-3 mt-40 bg-white shadow-xl\">\n <Form>\n <TabbedItem>\n <TabPanelOptions deferRendering={false} showNavButtons={true} />\n <Tab title=\"Datos Generales\" >\n <div class=\"bg-white p-3\">\n <Form\n id=\"datosGenerales\"\n labelMode={'outside'}\n formData={checkListPayload.header}\n\n showColonAfterLabel={false}\n labelLocation={'top'}\n colCount={2}\n >\n <GroupItem caption=\"General\">\n <Item cssClass=\"boldText\" dataField=\"Movimiento\" editorOptions={movimientoEditorOptions} />\n <Item dataField=\"FechaEmision\" editorType=\"dxDateBox\" editorOptions={fechaEmisionEditorOptions}>\n <Label text={\"Fecha Emisión\"} />\n </Item>\n </GroupItem>\n <GroupItem caption=\"Sucursal\">\n <Item dataField=\"SucursalAsignada\" editorType=\"dxSelectBox\" editorOptions={sucursalAsignadaEditorOptions} />\n </GroupItem>\n <GroupItem caption=\"Supervisor\">\n <Item dataField=\"PersonalAsignado\" editorType=\"dxSelectBox\" editorOptions={personalAsignadoEditorOptions}>\n <Label text={\"Supervisor Asignado\"} />\n </Item>\n </GroupItem>\n <GroupItem caption=\"Tiempo\">\n <Item dataField=\"InicioEvaluacion\" editorOptions={inicioEvaluacionEditorOptions}>\n <Label text={\"Inicio Evaluación\"} />\n </Item>\n <Item dataField=\"FinEvaluacion\" editorOptions={finEvaluacionEditorOptions}>\n <Label text={\"Fin Evaluación\"} />\n </Item>\n <Item dataField=\"DuracionEvaluacion\" editorOptions={duracionEvaluacionEditorOptions}>\n <Label text={\"Duración Evaluación\"} />\n </Item>\n </GroupItem>\n </Form>\n </div>\n </Tab>\n <Tab title=\"Evaluación de Personal\" >\n <div class=\"bg-white p-3\">\n <DataGrid\n id=\"gridPersonal\"\n ref={gridPersonalRef}\n columnsAutoWidth={true}\n dataSource={checkListPayload.personal}\n showBorders={true}\n showColumnLines={true}\n showRowLines={true}\n rowAlternationEnabled={true}\n allowColumnResizing={true}\n columnResizingMode={\"widget\"}\n allowColumnReordering={false}\n onEditorPreparing={overrideOnValueChanged}\n repaintChangesOnly={true}\n onRowInserted={onRowInsertedGridPersonal}\n onRowRemoved={onRowRemovedGridPersonal}\n >\n <Editing\n mode=\"row\"\n allowUpdating={allowUpdating}\n allowAdding={allowUpdating}\n allowDeleting={allowUpdating}\n useIcons={true}\n />\n <Sorting mode=\"none\" />\n\n <Column dataField=\"Trabajador\" dataType=\"string\" width={190} showEditorAlways={true}>\n <RequiredRule />\n </Column>\n\n <Column dataField=\"Puesto\" dataType=\"string\" width={200} showEditorAlways={true} />\n\n <Column dataField=\"Uniforme\" caption=\"Uniforme\" width={140} showEditorAlways={true}>\n <Lookup dataSource={evaluacion} valueExpr=\"value\" displayExpr=\"name\" />\n </Column>\n\n <Column dataField=\"Presentacion\" caption=\"Presentación\" width={140} showEditorAlways={true}>\n <Lookup dataSource={evaluacion} valueExpr=\"value\" displayExpr=\"name\" />\n </Column>\n\n <Column dataField=\"Disposicion\" caption=\"Disposición\" width={140} showEditorAlways={true}>\n <Lookup dataSource={evaluacion} valueExpr=\"value\" displayExpr=\"name\" />\n </Column>\n\n <Column dataField=\"Actitud\" caption=\"Actitud\" width={140} showEditorAlways={true}>\n <Lookup dataSource={evaluacion} valueExpr=\"value\" displayExpr=\"name\" />\n </Column>\n\n <Column dataField=\"Comentarios\" caption=\"Comentarios\" width={140} showEditorAlways={true}>\n </Column>\n\n <Toolbar>\n <Item name=\"addRowButton\" showText=\"inMenu\" />\n </Toolbar>\n </DataGrid>\n </div>\n </Tab>\n <Tab title=\"Evaluación de Ventas\" >\n <div class=\"bg-white p-3\">\n <DataGrid\n id=\"gridVentas\"\n ref={gridVentasRef}\n columnsAutoWidth={true}\n dataSource={checkListPayload.ventas}\n showBorders={true}\n showColumnLines={true}\n showRowLines={true}\n rowAlternationEnabled={true}\n allowColumnResizing={true}\n columnResizingMode={\"widget\"}\n allowColumnReordering={false}\n onEditorPreparing={overrideOnValueChanged}\n repaintChangesOnly={true}\n >\n <Editing\n mode=\"row\"\n allowUpdating={allowUpdating}\n allowAdding={allowUpdating}\n allowDeleting={allowUpdating}\n useIcons={true}\n />\n <Sorting mode=\"none\" />\n\n <Column dataField=\"Trabajador\" dataType=\"string\" width={200} showEditorAlways={true}>\n <RequiredRule />\n <Lookup dataSource={listaPersonal} valueExpr=\"value\" displayExpr=\"name\" />\n </Column>\n\n <Column dataField=\"Bienvenida\" caption=\"Bienvenida\" width={140} showEditorAlways={true}>\n <Lookup dataSource={evaluacion} valueExpr=\"value\" displayExpr=\"name\" />\n </Column>\n\n <Column dataField=\"DeteccionNecesidades\" caption=\"Deteccion de Necesidades\" width={200} showEditorAlways={true}>\n <Lookup dataSource={evaluacion} valueExpr=\"value\" displayExpr=\"name\" />\n </Column>\n\n <Column dataField=\"LaborVenta\" caption=\"Labor de Venta\" width={140} showEditorAlways={true}>\n <Lookup dataSource={evaluacion} valueExpr=\"value\" displayExpr=\"name\" />\n </Column>\n\n <Column dataField=\"ConocimientoProducto\" caption=\"Conocimiento de Producto\" width={200} showEditorAlways={true}>\n <Lookup dataSource={evaluacion} valueExpr=\"value\" displayExpr=\"name\" />\n </Column>\n\n <Column dataField=\"ManejoObjeciones\" caption=\"Manejo de Objeciones\" width={180} showEditorAlways={true}>\n <Lookup dataSource={evaluacion} valueExpr=\"value\" displayExpr=\"name\" />\n </Column>\n\n <Column dataField=\"Cierre\" caption=\"Cierre\" width={140} showEditorAlways={true}>\n <Lookup dataSource={evaluacion} valueExpr=\"value\" displayExpr=\"name\" />\n </Column>\n\n <Column dataField=\"ProductosAdicionales\" caption=\"Productos Adicionales\" width={180} showEditorAlways={true}>\n <Lookup dataSource={evaluacion} valueExpr=\"value\" displayExpr=\"name\" />\n </Column>\n\n <Column dataField=\"Comentarios\" caption=\"Comentarios\" width={400} showEditorAlways={true} >\n </Column>\n\n <Toolbar>\n <Item name=\"addRowButton\" showText=\"inMenu\" />\n </Toolbar>\n </DataGrid>\n </div>\n </Tab>\n <Tab title=\"Evaluación de Habilidades\" >\n <div class=\"bg-white p-3\">\n <DataGrid\n id=\"gridHabilidad\"\n columnsAutoWidth={true}\n dataSource={checkListPayload.habilidad}\n showBorders={true}\n showColumnLines={true}\n showRowLines={true}\n rowAlternationEnabled={true}\n allowColumnResizing={true}\n columnResizingMode={\"widget\"}\n allowColumnReordering={false}\n onEditorPreparing={overrideOnValueChanged}\n repaintChangesOnly={true}\n >\n <Editing\n mode=\"cell\"\n allowUpdating={allowUpdating}\n />\n\n <Sorting mode=\"none\" />\n <Column dataField=\"Concepto\" dataType=\"string\" allowEditing={false} width={340} />\n <Column dataField=\"Evaluacion\" caption=\"Evaluacion\" width={140} showEditorAlways={true}>\n <Lookup dataSource={evaluacion} valueExpr=\"value\" displayExpr=\"name\" />\n </Column>\n <Column dataField=\"Comentarios\" width={600} dataType=\"string\" showEditorAlways={true} />\n </DataGrid>\n </div>\n </Tab>\n <Tab title=\"Evaluación de la Sucursal\" >\n <div class=\"bg-white p-3\">\n <DataGrid\n id=\"gridSucursal\"\n columnsAutoWidth={true}\n dataSource={checkListPayload.sucursal}\n showBorders={true}\n showColumnLines={true}\n showRowLines={true}\n rowAlternationEnabled={true}\n allowColumnResizing={true}\n columnResizingMode={\"widget\"}\n allowColumnReordering={false}\n onEditorPreparing={overrideOnValueChanged}\n repaintChangesOnly={true}\n >\n <Editing\n mode=\"cell\"\n allowUpdating={allowUpdating}\n />\n\n <Sorting mode=\"none\" />\n <Column dataField=\"Concepto\" dataType=\"string\" allowEditing={false} width={340} />\n <Column dataField=\"Evaluacion\" caption=\"Evaluacion\" width={140} showEditorAlways={true}>\n <Lookup dataSource={evaluacion} valueExpr=\"value\" displayExpr=\"name\" />\n </Column>\n <Column dataField=\"Responsable\" width={200} dataType=\"string\" showEditorAlways={true}>\n <Lookup dataSource={responsable} valueExpr=\"value\" displayExpr=\"name\" />\n </Column>\n <Column dataField=\"Comentarios\" width={600} dataType=\"string\" showEditorAlways={true} />\n </DataGrid>\n </div>\n </Tab>\n <Tab title=\"Evaluación de Resultados\" >\n <div class=\"bg-white p-3\">\n <Form\n id=\"formResultados\"\n labelMode={'outside'}\n formData={checkListPayload.resultados}\n disabled={!allowUpdating}\n showColonAfterLabel={false}\n labelLocation={'top'}\n colCount={2}\n >\n <GroupItem caption=\"Importes\">\n <Item dataField=\"Ventas\" editorType=\"dxNumberBox\" editorOptions={ventasEditorOptions} />\n <Item dataField=\"Metas\" editorType=\"dxNumberBox\" editorOptions={metasEditorOptions} />\n <Item dataField=\"TicketPromedio\" editorType=\"dxNumberBox\" editorOptions={ticketPromedioEditorOptions}>\n <Label text={\"Ticket Promedio\"} />\n </Item>\n </GroupItem>\n <GroupItem caption=\"Resultado\">\n <Item dataField=\"Resultado\" editorType=\"dxTextArea\" editorOptions={resultadoEditorOptions} />\n </GroupItem>\n </Form>\n </div>\n </Tab>\n <Tab title=\"Adjuntar Evidencia\" >\n <div className=\"widget-container\">\n <FileUploader\n multiple={true}\n accept=\"*\"\n uploadMode=\"useButtons\"\n chunkSize={20000000}\n maxFileSize={20000000}\n uploadChunk={uploadChunk}\n disabled={!allowUpdating}\n />\n </div>\n <div id=\"wrapper\" className=\"show-widget\" >\n <div id=\"widget-area\">\n <FileManager id=\"attachmentManager\" fileSystemProvider={attachments} onItemDeleting={onAttachmentDeleting} onItemDownloading={onItemDownloading} onSelectedFileOpened={onAttachmentOpen}>\n <Permissions\n create={false}\n copy={false}\n move={false}\n delete={allowUpdating}\n rename={false}\n upload={false}\n download={true}\n >\n </Permissions>\n </FileManager>\n </div>\n </div>\n </Tab>\n </TabbedItem>\n </Form>\n </div>\n </div>\n ) :\n (<div></div>)\n }\n </div>\n );\n }}\n />\n </div>\n </div>\n );\n}","import React, { useState, useEffect, useRef } from 'react';\n\n// LoadPanel\nimport { LoadPanel } from 'devextreme-react/load-panel';\n\n// Toast\nimport { Toast } from 'devextreme-react/toast';\n\n// maplibre\nimport { createMap } from \"maplibre-gl-js-amplify\";\nimport maplibregl from \"maplibre-gl\";\nimport \"maplibre-gl/dist/maplibre-gl.css\";\nimport \"maplibre-gl-js-amplify/dist/public/amplify-map.css\";\nimport * as turf from \"@turf/turf\";\n\n// Grid\nimport DataGrid, {\n Column, FilterRow, HeaderFilter, FilterPanel, FilterBuilderPopup,\n GroupPanel, Grouping, SearchPanel, Sorting, Editing, Lookup, Toolbar, Item, RequiredRule,\n Scrolling, Pager, Paging, Summary, TotalItem, StateStoring, ColumnChooser, Format, Selection,\n Export, ColumnChooserSearch, ColumnChooserSelection\n} from 'devextreme-react/data-grid';\n\n//CheckBox\nimport CheckBox from 'devextreme-react/check-box';\n\n//Form\nimport Form, { GroupItem, Label, TabbedItem, TabPanelOptions, Tab } from 'devextreme-react/form';\n\nimport { Auth, API, Storage } from 'aws-amplify';\n\n// Ruteador\nimport { Route, Link, useHistory } from \"react-router-dom\";\n\n// Iconos\nimport { FontAwesomeIcon } from \"@fortawesome/react-fontawesome\";\nimport { faPencilAlt } from \"@fortawesome/pro-solid-svg-icons\";\nimport { faArrowRotateLeft } from \"@fortawesome/pro-solid-svg-icons\";\nimport { faSave } from \"@fortawesome/pro-solid-svg-icons\";\nimport { faClipboardCheck } from \"@fortawesome/pro-solid-svg-icons\";\nimport { faList } from \"@fortawesome/pro-duotone-svg-icons\";\nimport { faUserTie } from \"@fortawesome/pro-duotone-svg-icons\";\nimport { faStopwatch } from \"@fortawesome/pro-solid-svg-icons\";\nimport { faFilePdf } from \"@fortawesome/pro-solid-svg-icons\";\nimport { faArrowsRotate } from \"@fortawesome/pro-solid-svg-icons\";\nimport { faFileAlt } from \"@fortawesome/pro-solid-svg-icons\";\nimport { faTrash } from \"@fortawesome/pro-solid-svg-icons\";\n\n//FileUploader\nimport FileUploader from 'devextreme-react/file-uploader';\n\n//FileManager\nimport FileManager, { Permissions } from 'devextreme-react/file-manager';\n\nimport './ChecklistAud.css';\n\n//Text area\nimport 'devextreme-react/text-area';\n\nimport 'devextreme/data/odata/store';\nimport CustomStore from 'devextreme/data/custom_store';\n\nimport DataSource from 'devextreme/data/data_source';\n\nimport '../ListStyle.css';\n\nimport dxDateBox from \"devextreme/ui/date_box\";\n\nimport dxNumberBox from \"devextreme/ui/number_box\";\n\nimport TransactionStatus from \"../TransactionStatus/TransactionStatus.js\";\n\nimport { Workbook } from 'exceljs';\nimport { saveAs } from 'file-saver';\nimport { exportDataGrid } from 'devextreme/excel_exporter'\n\ndxDateBox.defaultOptions({\n options: {\n dateSerializationFormat: \"yyyy-MM-dd\"\n }\n});\n\ndxNumberBox.defaultOptions({\n options: {\n step: 0\n }\n});\n\nfunction isNotEmpty(value) {\n return value !== undefined && value !== null && value !== '';\n}\n\nexport default function Checklist(props) {\n const history = useHistory();\n\n var mapRef = useRef(null); // Reference to the map DOM element\n\n const [isDetail, setIsDetail] = useState(false);\n const [id, setId] = useState();\n const [checkListPayload, setCheckListPayload] = useState({\n header: {},\n checklist: [],\n consecutivos: [],\n celulares: [],\n pedidos: [],\n pagos: [],\n billetemxn: [],\n monedamxn: [],\n billeteusd: [],\n monedausd: [],\n cheque: [],\n tarjeta: [],\n valedespensa: [],\n valesaldofavor: [],\n celulargerente: [],\n gasadmingerente: [],\n gasolinagerente: [],\n billetemxngerente: [],\n monedamxngerente: [],\n tarjetabancgerente: [],\n valegasgerente: []\n });\n\n const [attachments, setAttachments] = useState([]);\n\n const [allowNew, setAllowNew] = useState(false);\n const [allowUpdating, setAllowUpdating] = useState(false);\n const [activateButton, setActivateButton] = useState(false);\n const [activateStopwatch, setActivateStopwatch] = useState(false);\n const [activateSaveButton, setActivateSaveButton] = useState(false);\n const [activateDeleteButton, setActivateDeleteButton] = useState(false);\n\n const [sucursales, setSucursales] = useState([]);\n const [personales, setPersonales] = useState([]);\n\n const [latitude, setLatitude] = useState('');\n const [longitude, setLongitude] = useState('');\n const [autoExpandAll, setAutoExpandAll] = useState(true);\n\n //Controles para los campos tipo Checkbox\n const [conDiferenciaCajaMenor, setConDiferenciaCajaMenor] = useState(true);\n const [conReposicionCajaMenor, setConReposicionCajaMenor] = useState(true);\n const [conDiferenciaGteCajaChica, setConDiferenciaGteCajaChica] = useState(true);\n\n //Controles para expander los grupos del grid de checklist\n const [autoExpandAllChecklist, setAutoExpandAllChecklist] = useState(true);\n\n // setValue para el control tab\n const [value, setValue] = React.useState(0);\n\n // loadPanelPosition para el control FileManager\n const loadPanelPosition = { of: '#file-manager' };\n\n const [visibleLoadPanel, setVisibleLoadPanel] = useState(false);\n\n const [visibleToast, setVisibleToast] = useState(false);\n const [messageToast, setMessageToast] = useState('');\n const [typeToast, setTypeToast] = useState('success');\n\n //Ref para el grid Pedidos\n const [gridPedidosRef, setGridPedidosRef] = useState(React.createRef());\n\n //Ref para el grid Pagos\n const [gridPagosRef, setGridPagosRef] = useState(React.createRef());\n\n //Ref para el grid Billetes MXN\n const [gridBilleteMXNRef, setGridBilleteMXNRef] = useState(React.createRef());\n\n //Ref para el grid Monedas MXN\n const [gridMonedaMXNRef, setGridMonedaMXNRef] = useState(React.createRef());\n\n //Ref para el grid Billetes USD\n const [gridBilleteUSDRef, setGridBilleteUSDRef] = useState(React.createRef());\n\n //Ref para el grid Monedas USD\n const [gridMonedaUSDRef, setGridMonedaUSDRef] = useState(React.createRef());\n\n //Ref para el grid Cheque\n const [gridChequeRef, setGridChequeRef] = useState(React.createRef());\n\n //Ref para el grid Tarjeta\n const [gridTarjetaRef, setGridTarjetaRef] = useState(React.createRef());\n\n //Ref para el grid ValeDespensa\n const [gridValeDespensaRef, setGridValeDespensaRef] = useState(React.createRef());\n\n //Ref para el grid Vale\n const [gridValeRef, setGridValeRef] = useState(React.createRef());\n\n //Ref para el grid Gastos Administrativos Gerente\n const [gridGasAdminGerenteRef, setGridGasAdminGerenteRef] = useState(React.createRef());\n\n //Ref para el grid Gasolina Gerente\n const [gridGasolinaGerenteRef, setGridGasolinaGerenteRef] = useState(React.createRef());\n\n //Ref para el grid Billete MXN Gerente\n const [gridBilleteMXNGerenteRef, setGridBilleteMXNGerenteRef] = useState(React.createRef());\n\n //Ref para el grid Moneda MXN Gerente\n const [gridMonedaMXNGerenteRef, setGridMonedaMXNGerenteRef] = useState(React.createRef());\n\n //Ref para el grid Tarjetas Bancarias Gerente\n const [gridTarjetaBancGerenteRef, setGridTarjetaBancGerenteRef] = useState(React.createRef());\n\n //Ref para el grid Vales de Gasolina Gerente\n const [gridValesGasGerenteRef, setGridValesGasGerenteRef] = useState(React.createRef());\n\n //Ref para el form de Datos Arqueo\n const [datosArqueoRef, setDatosArqueoRef] = useState(React.createRef());\n\n //Ref para el form de Datos Arqueo Gerente\n const [datosArqueoGerenteRef, setDatosArqueoGerenteRef] = useState(React.createRef());\n\n const handleChange = (event, newValue) => {\n setValue(newValue);\n };\n\n const filterBuilderPopupPosition = {\n of: window,\n at: 'top',\n my: 'top',\n offset: { y: 10 },\n };\n\n const evaluacion = [\n { name: '', value: '' },\n { name: '1 = Deficiente', value: '1 = Deficiente' },\n { name: '2 = Malo', value: '2 = Malo' },\n { name: '3 = Regular', value: '3 = Regular' },\n { name: '4 = Bueno', value: '4 = Bueno' },\n { name: '5 = Excelente', value: '5 = Excelente' },\n { name: 'N.A. = No aplica', value: 'N.A. = No aplica' }\n ]\n\n const allowedPageSizes = [5, 10, 15, 20, 'all'];\n\n const exportFormats = ['xlsx'];\n\n //Ref para el grid Tablero de Control\n const [gridTableroRef, setGridTableroRef] = useState(React.createRef());\n\n function getOrderDay(rowData) {\n return (new Date(rowData.OrderDate)).getDay();\n }\n\n const filterBuilder = {\n customOperations: [{\n name: 'weekends',\n caption: 'Weekends',\n dataTypes: ['date'],\n icon: 'check',\n hasValue: false,\n calculateFilterExpression: () => [[getOrderDay, '=', 0], 'or', [getOrderDay, '=', 6]],\n }],\n allowHierarchicalFields: true,\n };\n\n const filterValue = [['Estatus', '=', 'Por Confirmar']];\n\n async function getCheckListRecords(sqlFilter) {\n try {\n var personal = props.personal;\n var checklistAccess = props.checklistAccess;\n\n if (!checklistAccess || checklistAccess === 'undefined')\n checklistAccess = '';\n\n let apiName = 'AdminSC';\n let path = '/procesachecklist';\n\n let myInit = {\n headers: {\n 'Content-Type': 'application/json',\n Authorization: `${(await Auth.currentSession()).getAccessToken().getJwtToken()}`\n },\n queryStringParameters: {\n personal: personal,\n checklistAccess: checklistAccess,\n action: 'list',\n mov: 'Check List Aud',\n sqlFilter: sqlFilter,\n username: JSON.parse(JSON.stringify(await Auth.currentAuthenticatedUser())).username\n }\n }\n\n var checkListGet = await API.get(apiName, path, myInit);\n }\n catch (e) {\n if (e === 'No current user') {\n history.push('/');\n\n window.location.reload();\n }\n }\n\n return checkListGet;\n }\n\n const store = new CustomStore({\n key: 'ID',\n load(loadOptions) {\n let sqlFilter = '(';\n [\n 'filter'\n ].forEach((i) => {\n if (i in loadOptions && isNotEmpty(loadOptions[i])) {\n var filters = loadOptions[i];\n\n var filtersLength = filters.length;\n\n for (var i = 0; i <= filtersLength; i++) {\n var singleFilter = filters[i];\n var singleFilterType = typeof singleFilter;\n var singleFilterIsArray = Array.isArray(singleFilter);\n var singleFilterIsDate = singleFilter instanceof Date;\n\n if (singleFilter === 'NULL') {\n singleFilter = '0';\n }\n\n if (singleFilterType.toString() === 'object' && singleFilterIsArray) {\n sqlFilter += '(';\n\n var subFiltersLength = singleFilter.length;\n\n for (var i2 = 0; i2 <= subFiltersLength; i2++) {\n var singleSubFilter = singleFilter[i2];\n var singleSubFilterType = typeof singleSubFilter;\n var singleSubFilterIsArray = Array.isArray(singleSubFilter);\n var singleSubFilterIsDate = singleSubFilter instanceof Date\n\n if (singleSubFilter === 'NULL') {\n singleSubFilter = '0';\n }\n\n if (singleSubFilterType.toString() === 'object' && singleSubFilterIsArray) {\n sqlFilter += '(';\n\n var subSubFiltersLength = singleSubFilter.length;\n\n for (var i3 = 0; i3 <= subSubFiltersLength; i3++) {\n var singleSubSubFilter = singleSubFilter[i3];\n var singleSubSubFilterType = typeof singleSubSubFilter;\n var singleSubSubFilterIsArray = Array.isArray(singleSubSubFilter);\n var singleSubSubFilterIsDate = singleSubSubFilter instanceof Date\n\n if (singleSubSubFilter === 'NULL') {\n singleSubSubFilter = '0';\n }\n\n if (singleSubSubFilterType.toString() === 'object' && singleSubSubFilterIsArray) {\n sqlFilter += '(';\n\n var subSubSubFiltersLength = singleSubSubFilter.length;\n\n for (var i4 = 0; i4 <= subSubSubFiltersLength; i4++) {\n var singleSubSubSubFilter = singleSubSubFilter[i4];\n var singleSubSubSubFilterType = typeof singleSubSubSubFilter;\n var singleSubSubSubFilterIsArray = Array.isArray(singleSubSubSubFilter);\n var singleSubSubSubFilterIsDate = singleSubSubSubFilter instanceof Date\n\n if (singleSubSubSubFilter === 'NULL') {\n singleSubSubSubFilter = '0';\n }\n\n if (singleSubSubSubFilterType.toString() === 'object' && singleSubSubSubFilterIsArray) {\n sqlFilter += '(';\n\n var subSubSubSubFiltersLength = singleSubSubSubFilter.length;\n\n for (var i5 = 0; i5 <= subSubSubSubFiltersLength; i5++) {\n var singleSubSubSubSubFilter = singleSubSubSubFilter[i5];\n var singleSubSubSubSubFilterType = typeof singleSubSubSubSubFilter;\n var singleSubSubSubSubFilterIsArray = Array.isArray(singleSubSubSubSubFilter);\n var singleSubSubSubSubFilterIsDate = singleSubSubSubSubFilter instanceof Date\n\n if (singleSubSubSubSubFilter === 'NULL') {\n singleSubSubSubSubFilter = '0';\n }\n\n if (singleSubSubSubSubFilterType.toString() === 'string') {\n if (singleSubSubSubSubFilter === 'contains') {\n filters[i][i2][i3][i4][i5] = 'LIKE';\n singleSubSubSubSubFilter = 'LIKE';\n\n filters[i][i2][i3][i4][i5 + 1] = '\\'%' + filters[i][i2][i3][i4][i5 + 1] + '%\\'';\n }\n else if (singleSubSubSubSubFilter === 'notcontains') {\n filters[i][i2][i3][i4][i5] = 'NOT LIKE';\n singleSubSubSubSubFilter = 'NOT LIKE';\n\n filters[i][i2][i3][i4][i5 + 1] = '\\'%' + filters[i][i2][i3][i4][i5 + 1] + '%\\'';\n }\n else if (singleSubSubSubSubFilter === 'startswith') {\n filters[i][i2][i3][i4][i5] = 'LIKE';\n singleSubSubSubSubFilter = 'LIKE';\n\n filters[i][i2][i3][i4][i5 + 1] = '\\'' + filters[i][i2][i3][i4][i5 + 1] + '%\\'';\n }\n else if (singleSubSubSubSubFilter === 'endswith') {\n filters[i][i2][i3][i4][i5] = 'LIKE';\n singleSubSubSubSubFilter = 'LIKE';\n\n filters[i][i2][i3][i4][i5 + 1] = '\\'%' + filters[i][i2][i3][i4][i5 + 1] + '\\'';\n }\n else if (singleSubSubSubSubFilter === '=' || singleSubSubSubSubFilter === '<>' || singleSubSubSubSubFilter === '>' || singleSubSubSubSubFilter === '>=' || singleSubSubSubSubFilter === '<' || singleSubSubSubSubFilter === '<=') {\n if (!filters[i][i2][i3][i4][i5 + 1])\n filters[i][i2][i3][i4][i5 + 1] = 'NULL';\n else if (typeof filters[i][i2][i3][i4][i5 + 1] === 'string') {\n filters[i][i2][i3][i4][i5 + 1] = '\\'' + filters[i][i2][i3][i4][i5 + 1] + '\\'';\n }\n }\n else if (singleSubSubSubSubFilter === '!') {\n filters[i][i2][i3][i4][i5] = 'NOT';\n singleSubSubSubSubFilter = 'NOT';\n }\n\n sqlFilter += ' ' + singleSubSubSubSubFilter + ' ';\n }\n else if (singleSubSubSubSubFilterType.toString() === 'object' && singleSubSubSubSubFilterIsDate) {\n sqlFilter += ' \\'' + singleSubSubSubSubFilter.toISOString().split('T')[0] + '\\' ';\n }\n else if (singleSubSubSubSubFilterType.toString() === 'number') {\n sqlFilter += ' ' + singleSubSubSubSubFilter.toString() + ' ';\n }\n else if (singleSubSubSubSubFilterType.toString() === 'boolean') {\n if (singleSubSubSubSubFilter.toString() === 'true')\n sqlFilter += '1 ';\n else if (singleSubSubSubSubFilter.toString() === 'false' || singleSubSubSubSubFilter === null || singleSubSubSubSubFilter === undefined)\n sqlFilter += '0 ';\n }\n }\n }\n else if (singleSubSubSubFilterType.toString() === 'string') {\n if (singleSubSubSubFilter === 'contains') {\n filters[i][i2][i3][i4] = 'LIKE';\n singleSubSubSubFilter = 'LIKE';\n\n filters[i][i2][i3][i4 + 1] = '\\'%' + filters[i][i2][i3][i4 + 1] + '%\\'';\n }\n else if (singleSubSubSubFilter === 'notcontains') {\n filters[i][i2][i3][i4] = 'NOT LIKE';\n singleSubSubSubFilter = 'NOT LIKE';\n\n filters[i][i2][i3][i4 + 1] = '\\'%' + filters[i][i2][i3][i4 + 1] + '%\\'';\n }\n else if (singleSubSubSubFilter === 'startswith') {\n filters[i][i2][i3][i4] = 'LIKE';\n singleSubSubSubFilter = 'LIKE';\n\n filters[i][i2][i3][i4 + 1] = '\\'' + filters[i][i2][i3][i4 + 1] + '%\\'';\n }\n else if (singleSubSubSubFilter === 'endswith') {\n filters[i][i2][i3][i4] = 'LIKE';\n singleSubSubSubFilter = 'LIKE';\n\n filters[i][i2][i3][i4 + 1] = '\\'%' + filters[i][i2][i3][i4 + 1] + '\\'';\n }\n else if (singleSubSubSubFilter === '=' || singleSubSubSubFilter === '<>' || singleSubSubSubFilter === '>' || singleSubSubSubFilter === '>=' || singleSubSubSubFilter === '<' || singleSubSubSubFilter === '<=') {\n if (!filters[i][i2][i3][i4 + 1])\n filters[i][i2][i3][i4 + 1] = 'NULL';\n else if (typeof filters[i][i2][i3][i4 + 1] === 'string') {\n filters[i][i2][i3][i4 + 1] = '\\'' + filters[i][i2][i3][i4 + 1] + '\\'';\n }\n }\n else if (singleSubSubSubFilter === '!') {\n filters[i][i2][i3][i4] = 'NOT';\n singleSubSubSubFilter = 'NOT';\n }\n\n sqlFilter += ' ' + singleSubSubSubFilter + ' ';\n }\n else if (singleSubSubSubFilterType.toString() === 'object' && singleSubSubSubFilterIsDate) {\n sqlFilter += ' \\'' + singleSubSubSubFilter.toISOString().split('T')[0] + '\\' ';\n }\n else if (singleSubSubSubFilterType.toString() === 'number') {\n sqlFilter += ' ' + singleSubSubSubFilter.toString() + ' ';\n }\n else if (singleSubSubSubFilterType.toString() === 'boolean') {\n if (singleSubSubSubFilter.toString() === 'true')\n sqlFilter += '1 ';\n else if (singleSubSubSubFilter.toString() === 'false' || singleSubSubSubFilter === null || singleSubSubSubFilter === undefined)\n sqlFilter += '0 ';\n }\n }\n\n sqlFilter += ')';\n }\n else if (singleSubSubFilterType.toString() === 'string') {\n if (singleSubSubFilter === 'contains') {\n filters[i][i2][i3] = 'LIKE';\n singleSubSubFilter = 'LIKE';\n\n filters[i][i2][i3 + 1] = '\\'%' + filters[i][i2][i3 + 1] + '%\\'';\n }\n else if (singleSubSubFilter === 'notcontains') {\n filters[i][i2][i3] = 'NOT LIKE';\n singleSubSubFilter = 'NOT LIKE';\n\n filters[i][i2][i3 + 1] = '\\'%' + filters[i][i2][i3 + 1] + '%\\'';\n }\n else if (singleSubSubFilter === 'startswith') {\n filters[i][i2][i3] = 'LIKE';\n singleSubSubFilter = 'LIKE';\n\n filters[i][i2][i3 + 1] = '\\'' + filters[i][i2][i3 + 1] + '%\\'';\n }\n else if (singleSubSubFilter === 'endswith') {\n filters[i][i2][i3] = 'LIKE';\n singleSubSubFilter = 'LIKE';\n\n filters[i][i2][i3 + 1] = '\\'%' + filters[i][i2][i3 + 1] + '\\'';\n }\n else if (singleSubSubFilter === '=' || singleSubSubFilter === '<>' || singleSubSubFilter === '>' || singleSubSubFilter === '>=' || singleSubSubFilter === '<' || singleSubSubFilter === '<=') {\n if (!filters[i][i2][i3 + 1])\n filters[i][i2][i3 + 1] = 'NULL';\n else if (typeof filters[i][i2][i3 + 1] === 'string') {\n filters[i][i2][i3 + 1] = '\\'' + filters[i][i2][i3 + 1] + '\\'';\n }\n }\n else if (singleSubSubFilter === '!') {\n filters[i][i2][i3] = 'NOT';\n singleSubSubFilter = 'NOT';\n }\n sqlFilter += ' ' + singleSubSubFilter + ' ';\n }\n else if (singleSubSubFilterType.toString() === 'object' && singleSubSubFilterIsDate) {\n sqlFilter += ' \\'' + singleSubSubFilter.toISOString().split('T')[0] + '\\' ';\n }\n else if (singleSubSubFilterType.toString() === 'number') {\n sqlFilter += ' ' + singleSubSubFilter.toString() + ' ';\n }\n else if (singleSubSubFilterType.toString() === 'boolean') {\n if (singleSubSubFilter.toString() === 'true')\n sqlFilter += '1 ';\n else if (singleSubSubFilter.toString() === 'false' || singleSubSubFilter === null || singleSubSubFilter === undefined)\n sqlFilter += '0 ';\n }\n }\n\n sqlFilter += ')';\n }\n else if (singleSubFilterType.toString() === 'string') {\n if (singleSubFilter === 'contains') {\n filters[i][i2] = 'LIKE';\n singleSubFilter = 'LIKE';\n\n filters[i][i2 + 1] = '\\'%' + filters[i][i2 + 1] + '%\\'';\n }\n else if (singleSubFilter === 'notcontains') {\n filters[i][i2] = 'NOT LIKE';\n singleSubFilter = 'NOT LIKE';\n\n filters[i][i2 + 1] = '\\'%' + filters[i][i2 + 1] + '%\\'';\n }\n else if (singleSubFilter === 'startswith') {\n filters[i][i2] = 'LIKE';\n singleSubFilter = 'LIKE';\n\n filters[i][i2 + 1] = '\\'' + filters[i][i2 + 1] + '%\\'';\n }\n else if (singleSubFilter === 'endswith') {\n filters[i][i2] = 'LIKE';\n singleSubFilter = 'LIKE';\n\n filters[i][i2 + 1] = '\\'%' + filters[i][i2 + 1] + '\\'';\n }\n else if (singleSubFilter === '=' || singleSubFilter === '<>' || singleSubFilter === '>' || singleSubFilter === '>=' || singleSubFilter === '<' || singleSubFilter === '<=') {\n if (!filters[i][i2 + 1])\n filters[i][i2 + 1] = 'NULL';\n else if (typeof filters[i][i2 + 1] === 'string') {\n filters[i][i2 + 1] = '\\'' + filters[i][i2 + 1] + '\\'';\n }\n }\n else if (singleSubFilter === '!') {\n filters[i][i2] = 'NOT';\n singleSubFilter = 'NOT';\n }\n sqlFilter += ' ' + singleSubFilter + ' ';\n }\n else if (singleSubFilterType.toString() === 'object' && singleSubFilterIsDate) {\n sqlFilter += ' \\'' + singleSubFilter.toISOString().split('T')[0] + '\\' ';\n }\n else if (singleSubFilterType.toString() === 'number') {\n sqlFilter += ' ' + singleSubFilter.toString() + ' ';\n }\n else if (singleSubFilterType.toString() === 'boolean') {\n if (singleSubFilter.toString() === 'true')\n sqlFilter += '1 ';\n else if (singleSubFilter.toString() === 'false' || singleSubFilter === null || singleSubFilter === undefined)\n sqlFilter += '0 ';\n }\n }\n\n sqlFilter += ')';\n }\n else if (singleFilterType.toString() === 'string') {\n if (singleFilter === 'contains') {\n filters[i] = 'LIKE';\n singleFilter = 'LIKE';\n\n filters[i + 1] = '\\'%' + filters[i + 1] + '%\\'';\n }\n else if (singleFilter === 'notcontains') {\n filters[i] = 'NOT LIKE';\n singleFilter = 'NOT LIKE';\n\n filters[i + 1] = '\\'%' + filters[i + 1] + '%\\'';\n }\n else if (singleFilter === 'startswith') {\n filters[i] = 'LIKE';\n singleFilter = 'LIKE';\n\n filters[i + 1] = '\\'' + filters[i + 1] + '%\\'';\n }\n else if (singleFilter === 'endswith') {\n filters[i] = 'LIKE';\n singleFilter = 'LIKE';\n\n filters[i + 1] = '\\'%' + filters[i + 1] + '\\'';\n }\n else if (singleFilter === '=' || singleFilter === '<>' || singleFilter === '>' || singleFilter === '>=' || singleFilter === '<' || singleFilter === '<=') {\n if (!filters[i + 1])\n filters[i + 1] = 'NULL';\n else if (typeof filters[i + 1] === 'string') {\n filters[i + 1] = '\\'' + filters[i + 1] + '\\'';\n }\n }\n else if (singleFilter === '!') {\n filters[i] = 'NOT';\n singleFilter = 'NOT';\n }\n sqlFilter += ' ' + singleFilter + ' ';\n }\n else if (singleFilterType.toString() === 'object' && singleFilterIsDate) {\n sqlFilter += ' \\'' + singleFilter.toISOString().split('T')[0] + '\\' ';\n }\n else if (singleFilterType.toString() === 'number') {\n sqlFilter += ' ' + singleFilter.toString() + ' ';\n }\n else if (singleFilterType.toString() === 'boolean') {\n if (singleFilter.toString() === 'true')\n sqlFilter += '1 ';\n else if (singleFilter.toString() === 'false' || singleFilter === null || singleFilter === undefined)\n sqlFilter += '0 ';\n }\n }\n\n sqlFilter += ')';\n }\n });\n\n async function getRecords() {\n if (sqlFilter === '(')\n sqlFilter = '';\n\n var records = await getCheckListRecords(sqlFilter);\n return {\n data: records,\n totalCount: records.length\n };\n }\n\n return getRecords()\n .then(function (result) {\n return result;\n })\n .catch(() => { throw new Error('Data Loading Error'); });\n },\n });\n\n async function getCheckListPayload(ID) {\n try {\n var personal = props.personal;\n\n let apiName = 'AdminSC';\n let path = '/procesachecklist';\n\n let myInit = {\n headers: {\n 'Content-Type': 'application/json',\n Authorization: `${(await Auth.currentSession()).getAccessToken().getJwtToken()}`\n },\n queryStringParameters: {\n personal: personal,\n ID: ID,\n action: 'payload',\n mov: 'Check List Aud',\n username: JSON.parse(JSON.stringify(await Auth.currentAuthenticatedUser())).username\n }\n }\n\n var payloadGet = await API.get(apiName, path, myInit);\n\n setCheckListPayload(payloadGet);\n\n //Obtenemos los attachments\n var attachmentsGet = await Storage.list(\"/checklist/\" + ID);\n var attachmentsAux = [];\n\n for (var attachmentsGetIndex in attachmentsGet) {\n var singleAttachmentsGet = attachmentsGet[attachmentsGetIndex];\n\n var singleAttachment = {\n name: singleAttachmentsGet.key.split('/').pop(),\n isDirectory: false,\n size: singleAttachmentsGet.size,\n };\n\n attachmentsAux.push(singleAttachment);\n }\n\n setAttachments(attachmentsAux);\n\n //Asignamos las variables para los controles tipo CheckBox\n setConDiferenciaCajaMenor(payloadGet.header.ArqDiferencia);\n setConReposicionCajaMenor(payloadGet.header.ArqGteReposicion);\n setConDiferenciaGteCajaChica(payloadGet.header.ArqGteDiferencia);\n }\n catch (e) {\n if (e === 'No current user') {\n history.push('/');\n\n window.location.reload();\n }\n }\n\n return payloadGet;\n }\n\n function onFieldDatosChecklistChanged(e) {\n if (e.dataField === 'ArqDiferencia') {\n setConDiferenciaCajaMenor(!conDiferenciaCajaMenor);\n }\n }\n\n function onFieldDatosArqueoGerenteChanged(e) {\n if (e.dataField === 'ArqGteReposicion') {\n setConReposicionCajaMenor(!conReposicionCajaMenor);\n }\n else if (e.dataField === 'ArqGteDiferencia') {\n setConDiferenciaGteCajaChica(!conDiferenciaGteCajaChica);\n }\n }\n\n async function renderMap(payload) {\n let map;\n var keys;\n\n //Obtenemos las ubicacion aceptada del checklist\n var locations = {};\n var circles = {};\n\n // Definimos el circulo\n if (payload.header.Longitud && payload.header.Latitud) {\n var center = [payload.header.Longitud, payload.header.Latitud];\n\n var radius = .1;\n var options = {\n steps: 360,\n units: \"kilometers\",\n };\n\n var circle = turf.circle(center, radius, options);\n\n var validLocation = {\n coordinates: circle.geometry.coordinates\n };\n\n locations[payload.header.Nombre] = validLocation;\n locations[payload.header.Nombre].Latitud = payload.header.Latitud;\n locations[payload.header.Nombre].Longitud = payload.header.Longitud;\n\n circles[payload.header.Nombre] = circle;\n }\n // We only want to initialize the underlying maplibre map after the div has been rendered\n // Creamos el mapa\n map = await createMap({\n container: \"map\",\n center: [-101.95812036696248, 23.732791552256273],\n zoom: 4,\n repaint: true\n });\n\n // Definimos el GeolocateControl para poder obtener la posición del usuario\n var geolocate = new maplibregl.GeolocateControl({\n positionOptions: {\n enableHighAccuracy: true\n },\n trackUserLocation: false\n });\n\n // Agregamos el control al mapa\n map.addControl(geolocate);\n\n // Evento al presionar el boton de ubicación del usuario\n geolocate.on('geolocate', function (data) {\n try {\n keys = Object.keys(locations);\n }\n catch (e) {\n keys = [];\n }\n\n var valid = false;\n\n for (var keyIndex in keys) {\n if (valid === false) {\n var singleKey = keys[keyIndex];\n\n var location = locations[singleKey];\n location.name = singleKey;\n\n var centerLatitud = location.Latitud;\n var centerLongitud = location.Longitud;\n\n var centerLatLong = new maplibregl.LngLat(centerLongitud, centerLatitud);\n var userLocationLatLong = new maplibregl.LngLat(data.coords.longitude, data.coords.latitude);\n\n var distance = centerLatLong.distanceTo(userLocationLatLong) / 1000.0;\n\n if (distance <= 0.1) {\n valid = true;\n\n setLatitude(data.coords.latitude);\n setLongitude(data.coords.longitude);\n\n break;\n }\n }\n }\n\n //Asignamos el permiso para editar los grids y los botones\n if (payload.header.Estatus === 'Concluido') {\n setActivateButton(false);\n setActivateSaveButton(false);\n setAllowUpdating(false);\n setActivateStopwatch(false);\n setActivateDeleteButton(false);\n }\n else {\n if (valid === false) {\n setActivateButton(false);\n setActivateSaveButton(false);\n setAllowUpdating(false);\n setActivateStopwatch(false);\n setActivateDeleteButton(false);\n }\n else {\n if (payload.header.InicioEvaluacion) {\n setActivateButton(true);\n setActivateSaveButton(true);\n setAllowUpdating(true);\n setActivateStopwatch(false);\n setActivateDeleteButton(false);\n }\n else {\n setActivateButton(false);\n setActivateSaveButton(false);\n setAllowUpdating(false);\n setActivateStopwatch(true);\n setActivateDeleteButton(false)\n }\n }\n }\n });\n\n map.on('load', function () {\n try {\n keys = Object.keys(locations);\n }\n catch (e) {\n keys = [];\n }\n\n for (var keyIndex in keys) {\n var singleKey = keys[keyIndex];\n\n var circle = circles[singleKey];\n\n var layer = map.getLayer(singleKey);\n\n if (layer)\n map.removeLayer(singleKey);\n\n var source = map.getSource(singleKey);\n\n if (source)\n map.removeSource(singleKey);\n\n map.addSource(singleKey, {\n type: \"geojson\",\n data: circle\n });\n\n //Agregamos el Layer al mapa para mostrarlo\n map.addLayer({\n id: singleKey,\n type: \"fill\",\n source: singleKey,\n paint: {\n \"fill-color\": \"blue\",\n \"fill-opacity\": 0.2\n }\n });\n }\n\n //Ejecutamos el Geolocate Control para poder centrar el mapa a la posición del usuario\n geolocate.trigger();\n });\n\n map.addControl(new maplibregl.NavigationControl(), \"top-right\");\n\n try {\n keys = Object.keys(locations);\n }\n catch (e) {\n keys = [];\n }\n\n for (var keyIndex in keys) {\n var singleKey = keys[keyIndex];\n\n var location = locations[singleKey];\n\n new maplibregl.Marker({\n })\n .setLngLat([location.Longitud, location.Latitud])\n .addTo(map);\n }\n };\n\n async function startStopwatch() {\n try {\n if (!window.confirm('¿Desea iniciar el checklist?'))\n return;\n\n setVisibleLoadPanel(true);\n\n var ID = checkListPayload.header.ID;\n\n //Despues enviamos todo al backend\n let apiName = 'AdminSC';\n let path = '/procesachecklist';\n\n let myInit = {\n headers: {\n 'Content-Type': 'application/json',\n Authorization: `${(await Auth.currentSession()).getAccessToken().getJwtToken()}`\n },\n body: {\n ID: ID,\n payload: checkListPayload,\n action: 'startStopwatch',\n username: JSON.parse(JSON.stringify(await Auth.currentAuthenticatedUser())).username\n }\n }\n\n var payloadPost = await API.post(apiName, path, myInit);\n\n if (payloadPost.ok === 'true') {\n setVisibleLoadPanel(false);\n\n setVisibleToast(true);\n setMessageToast('Se inició el checklist con éxito');\n setTypeToast('success')\n }\n else if (payloadPost.ok === 'false') {\n setVisibleLoadPanel(false);\n\n setVisibleToast(true);\n setMessageToast(payloadPost.message);\n setTypeToast('error')\n }\n\n editChecklistButton(ID);\n }\n catch (e) {\n setVisibleLoadPanel(false);\n\n if (e === 'No current user') {\n history.push('/');\n\n window.location.reload();\n }\n }\n };\n\n async function editChecklistButton(ID) {\n try {\n if (!window.event.metaKey && !window.event.ctrlKey) {\n setVisibleLoadPanel(true);\n\n setIsDetail(true);\n\n setId(ID);\n\n var payload = await getCheckListPayload(ID);\n\n if (payload.header.Estatus === 'Sin Afectar') {\n setAllowNew(true);\n setActivateButton(true);\n setActivateStopwatch(false);\n setActivateSaveButton(true);\n setActivateDeleteButton(true);\n setAllowUpdating(false);\n }\n else {\n setAllowNew(false);\n }\n\n setVisibleLoadPanel(false);\n\n if (ID && ID !== 'undefined' && payload.header.Estatus !== 'Sin Afectar') {\n await renderMap(payload);\n }\n }\n }\n catch (e) {\n setVisibleLoadPanel(false);\n\n if (!ID || ID === 'undefined') {\n newButton();\n }\n }\n };\n\n async function cancelEditButton() {\n setIsDetail(false);\n };\n\n async function saveButton() {\n try {\n if (checkListPayload.header.Estatus === 'Sin Afectar') {\n if (!checkListPayload.header.PersonalAsignado || checkListPayload.header.PersonalAsignado === '') {\n setVisibleToast(true);\n setMessageToast('Falta especificar el Supervisor')\n setTypeToast('error');\n return;\n }\n if (!checkListPayload.header.SucursalAsignada || checkListPayload.header.SucursalAsignada === '') {\n setVisibleToast(true);\n setMessageToast('Falta especificar la Sucursal')\n setTypeToast('error');\n return;\n }\n }\n\n setVisibleLoadPanel(true);\n\n var ID = checkListPayload.header.ID;\n\n //Primero guardamos los cambios del grid Pedidos\n if (gridPedidosRef.current) {\n var gridPedidos = gridPedidosRef.current.instance();\n\n gridPedidos.saveEditData();\n }\n\n //Despues guardamos los cambios del grid Pagos\n if (gridPagosRef.current) {\n var gridPagos = gridPagosRef.current.instance();\n\n gridPagos.saveEditData();\n }\n\n //Despues guardamos los cambios del grid Billetes MXN\n if (gridBilleteMXNRef.current) {\n var gridBilleteMXN = gridBilleteMXNRef.current.instance();\n\n gridBilleteMXN.saveEditData();\n }\n\n //Despues guardamos los cambios del grid Moneda MXN\n if (gridMonedaMXNRef.current) {\n var gridMonedaMXN = gridMonedaMXNRef.current.instance();\n\n gridMonedaMXN.saveEditData();\n }\n\n //Despues guardamos los cambios del grid Billetes MXN\n if (gridBilleteUSDRef.current) {\n var gridBilleteUSD = gridBilleteUSDRef.current.instance();\n\n gridBilleteUSD.saveEditData();\n }\n\n //Despues guardamos los cambios del grid Moneda USD\n if (gridMonedaUSDRef.current) {\n var gridMonedaUSD = gridMonedaUSDRef.current.instance();\n\n gridMonedaUSD.saveEditData();\n }\n\n //Despues guardamos los cambios del grid Cheque\n if (gridChequeRef.current) {\n var gridCheque = gridChequeRef.current.instance();\n\n gridCheque.saveEditData();\n }\n\n //Despues guardamos los cambios del grid Tarjeta\n if (gridTarjetaRef.current) {\n var gridTarjeta = gridTarjetaRef.current.instance();\n\n gridTarjeta.saveEditData();\n }\n\n //Despues guardamos los cambios del grid ValeDespensa\n if (gridValeDespensaRef.current) {\n var gridValeDespensa = gridValeDespensaRef.current.instance();\n\n gridValeDespensa.saveEditData();\n }\n\n //Despues guardamos los cambios del grid Vale\n if (gridValeRef.current) {\n var gridVale = gridValeRef.current.instance();\n\n gridVale.saveEditData();\n }\n\n //Despues guardamos los cambios del grid Gastos Administrativos Gerente\n if (gridGasAdminGerenteRef.current) {\n var gridGasAdminGerente = gridGasAdminGerenteRef.current.instance();\n\n gridGasAdminGerente.saveEditData();\n }\n\n //Despues guardamos los cambios del grid Gasolina Gerente\n if (gridGasolinaGerenteRef.current) {\n var gridGasolinaGerente = gridGasolinaGerenteRef.current.instance();\n\n gridGasolinaGerente.saveEditData();\n }\n\n //Despues guardamos los cambios del grid Billetes MXN\n if (gridBilleteMXNGerenteRef.current) {\n var gridBilleteMXNGerente = gridBilleteMXNGerenteRef.current.instance();\n\n gridBilleteMXNGerente.saveEditData();\n }\n\n //Despues guardamos los cambios del grid Moneda MXN\n if (gridMonedaMXNGerenteRef.current) {\n var gridMonedaMXNGerente = gridMonedaMXNGerenteRef.current.instance();\n\n gridMonedaMXNGerente.saveEditData();\n }\n\n //Despues guardamos los cambios del grid Tarjeta Bancaria Gerente\n if (gridTarjetaBancGerenteRef.current) {\n var gridTarjetaBancGerente = gridTarjetaBancGerenteRef.current.instance();\n\n gridTarjetaBancGerente.saveEditData();\n }\n\n //Despues guardamos los cambios del grid Vales de Gasolina Gerente\n if (gridValesGasGerenteRef.current) {\n var gridValesGasGerente = gridValesGasGerenteRef.current.instance();\n\n gridValesGasGerente.saveEditData();\n }\n\n //Despues enviamos todo al backend\n let apiName = 'AdminSC';\n let path = '/procesachecklist';\n\n let myInit = {\n headers: {\n 'Content-Type': 'application/json',\n Authorization: `${(await Auth.currentSession()).getAccessToken().getJwtToken()}`\n },\n body: {\n ID: ID,\n payload: checkListPayload,\n action: 'saveChanges',\n username: JSON.parse(JSON.stringify(await Auth.currentAuthenticatedUser())).username,\n s3Bucket: Storage._config.AWSS3.bucket\n }\n }\n\n var payloadPost = await API.post(apiName, path, myInit);\n\n if (payloadPost.ok === 'true') {\n if (!ID) {\n setVisibleToast(true);\n setMessageToast('Se creó el checklist con éxito');\n setTypeToast('success')\n\n ID = payloadPost.newID;\n\n editChecklistButton(ID);\n\n history.push('/ChecklistAud/' + ID.toString());\n }\n else {\n setVisibleToast(true);\n setMessageToast('Se actualizó el checklist con éxito');\n setTypeToast('success')\n }\n }\n else if (payloadPost.ok === 'false') {\n setVisibleToast(true);\n setMessageToast(payloadPost.message);\n setTypeToast('error')\n }\n\n editChecklistButton(ID);\n\n setVisibleLoadPanel(false);\n }\n catch (e) {\n setVisibleLoadPanel(false);\n\n if (e === 'No current user') {\n history.push('/');\n\n window.location.reload();\n }\n }\n };\n\n async function confirmButton() {\n try {\n if (checkListPayload.header.Estatus === 'Sin Afectar') {\n if (!checkListPayload.header.PersonalAsignado || checkListPayload.header.PersonalAsignado === '') {\n setVisibleToast(true);\n setMessageToast('Falta especificar el Supervisor')\n setTypeToast('error');\n return;\n }\n if (!checkListPayload.header.SucursalAsignada || checkListPayload.header.SucursalAsignada === '') {\n setVisibleToast(true);\n setMessageToast('Falta especificar la Sucursal')\n setTypeToast('error');\n return;\n }\n }\n\n if (!window.confirm('¿Desea confirmar el checklist?'))\n return;\n\n setVisibleLoadPanel(true);\n\n var ID = checkListPayload.header.ID;\n\n //Primero guardamos los cambios del grid Pedidos\n if (gridPedidosRef.current) {\n var gridPedidos = gridPedidosRef.current.instance();\n\n gridPedidos.saveEditData();\n }\n\n //Despues guardamos los cambios del grid Pagos\n if (gridPagosRef.current) {\n var gridPagos = gridPagosRef.current.instance();\n\n gridPagos.saveEditData();\n }\n\n //Despues guardamos los cambios del grid Billetes MXN\n if (gridBilleteMXNRef.current) {\n var gridBilleteMXN = gridBilleteMXNRef.current.instance();\n\n gridBilleteMXN.saveEditData();\n }\n\n //Despues guardamos los cambios del grid Moneda MXN\n if (gridMonedaMXNRef.current) {\n var gridMonedaMXN = gridMonedaMXNRef.current.instance();\n\n gridMonedaMXN.saveEditData();\n }\n\n //Despues guardamos los cambios del grid Billetes MXN\n if (gridBilleteUSDRef.current) {\n var gridBilleteUSD = gridBilleteUSDRef.current.instance();\n\n gridBilleteUSD.saveEditData();\n }\n\n //Despues guardamos los cambios del grid Moneda USD\n if (gridMonedaUSDRef.current) {\n var gridMonedaUSD = gridMonedaUSDRef.current.instance();\n\n gridMonedaUSD.saveEditData();\n }\n\n //Despues guardamos los cambios del grid Cheque\n if (gridChequeRef.current) {\n var gridCheque = gridChequeRef.current.instance();\n\n gridCheque.saveEditData();\n }\n\n //Despues guardamos los cambios del grid Tarjeta\n if (gridTarjetaRef.current) {\n var gridTarjeta = gridTarjetaRef.current.instance();\n\n gridTarjeta.saveEditData();\n }\n\n //Despues guardamos los cambios del grid ValeDespensa\n if (gridValeDespensaRef.current) {\n var gridValeDespensa = gridValeDespensaRef.current.instance();\n\n gridValeDespensa.saveEditData();\n }\n\n //Despues guardamos los cambios del grid Vale\n if (gridValeRef.current) {\n var gridVale = gridValeRef.current.instance();\n\n gridVale.saveEditData();\n }\n\n //Despues guardamos los cambios del grid Gastos Administrativos Gerente\n if (gridGasAdminGerenteRef.current) {\n var gridGasAdminGerente = gridGasAdminGerenteRef.current.instance();\n\n gridGasAdminGerente.saveEditData();\n }\n\n //Despues guardamos los cambios del grid Gasolina Gerente\n if (gridGasolinaGerenteRef.current) {\n var gridGasolinaGerente = gridGasolinaGerenteRef.current.instance();\n\n gridGasolinaGerente.saveEditData();\n }\n\n //Despues guardamos los cambios del grid Billetes MXN\n if (gridBilleteMXNGerenteRef.current) {\n var gridBilleteMXNGerente = gridBilleteMXNGerenteRef.current.instance();\n\n gridBilleteMXNGerente.saveEditData();\n }\n\n //Despues guardamos los cambios del grid Moneda MXN\n if (gridMonedaMXNGerenteRef.current) {\n var gridMonedaMXNGerente = gridMonedaMXNGerenteRef.current.instance();\n\n gridMonedaMXNGerente.saveEditData();\n }\n\n //Despues guardamos los cambios del grid Tarjeta Bancaria Gerente\n if (gridTarjetaBancGerenteRef.current) {\n var gridTarjetaBancGerente = gridTarjetaBancGerenteRef.current.instance();\n\n gridTarjetaBancGerente.saveEditData();\n }\n\n //Despues guardamos los cambios del grid Vales de Gasolina Gerente\n if (gridValesGasGerenteRef.current) {\n var gridValesGasGerente = gridValesGasGerenteRef.current.instance();\n\n gridValesGasGerente.saveEditData();\n }\n\n //Despues enviamos todo al backend\n let apiName = 'AdminSC';\n let path = '/procesachecklist';\n\n let myInit = {\n headers: {\n 'Content-Type': 'application/json',\n Authorization: `${(await Auth.currentSession()).getAccessToken().getJwtToken()}`\n },\n body: {\n ID: ID,\n payload: checkListPayload,\n action: 'apply',\n username: JSON.parse(JSON.stringify(await Auth.currentAuthenticatedUser())).username\n }\n }\n\n var payloadPost = await API.post(apiName, path, myInit);\n\n if (payloadPost.ok === 'true') {\n if (!ID) {\n setVisibleLoadPanel(false);\n\n setVisibleToast(true);\n setMessageToast('Checklist creado con éxito');\n setTypeToast('success')\n\n ID = payloadPost.newID;\n\n editChecklistButton(ID);\n\n history.push('/ChecklistAud/' + ID.toString());\n }\n else {\n setVisibleLoadPanel(false);\n\n setVisibleToast(true);\n setMessageToast('Checklist Concluido con éxito');\n setTypeToast('success')\n\n setAllowUpdating(false);\n setActivateButton(false);\n setActivateSaveButton(false);\n\n editChecklistButton(ID);\n\n history.push('/ChecklistAud/' + ID.toString());\n }\n }\n else if (payloadPost.ok === 'false') {\n setVisibleLoadPanel(false);\n\n setVisibleToast(true);\n setMessageToast(payloadPost.message);\n setTypeToast('error')\n }\n }\n catch (e) {\n setVisibleLoadPanel(false);\n\n if (e === 'No current user') {\n history.push('/');\n\n window.location.reload();\n }\n }\n };\n\n function printButton() {\n var baseUrl = window.location.href.split('/')[0];\n\n window.open(baseUrl + \"/#/PdfRender?type=checklistaud&id=\" + id, \"_blank\");\n };\n\n function editCheckList(data) {\n return (\n <Link to={`/ChecklistAud/${data.data.ID}`}>\n <button class=\"bg-blue-500 hover:bg-blue-700 text-white py-1 px-3 rounded\" onClick={() => editChecklistButton(data.data.ID)}><FontAwesomeIcon icon={faPencilAlt} /> Editar</button>\n </Link>\n )\n }\n\n function onAutoExpandAllChanged() {\n setAutoExpandAll(!autoExpandAll)\n };\n\n function onAutoExpandAllChecklistChanged() {\n setAutoExpandAllChecklist(!autoExpandAllChecklist)\n };\n\n async function getSucursales() {\n let apiName = 'AdminSC';\n let path = '/getcatalogo';\n\n let myInit = {\n headers: {\n 'Content-Type': 'application/json',\n Authorization: `${(await Auth.currentSession()).getAccessToken().getJwtToken()}`\n },\n queryStringParameters: {\n type: 'Sucursal',\n username: JSON.parse(JSON.stringify(await Auth.currentAuthenticatedUser())).username\n }\n }\n\n var sucursalesGet = await API.get(apiName, path, myInit);\n\n var sucursalesTmp = [];\n for (var sucursalesGetIndex in sucursalesGet) {\n var singleSucursalesGet = sucursalesGet[sucursalesGetIndex];\n\n var singleSucursal = {\n name: singleSucursalesGet.Nombre,\n value: singleSucursalesGet.Sucursal.toString()\n };\n\n sucursalesTmp.push(singleSucursal);\n }\n\n setSucursales(sucursalesTmp);\n\n return sucursalesTmp;\n };\n\n async function getPersonal() {\n let apiName = 'AdminSC';\n let path = '/getcatalogo';\n\n let myInit = {\n headers: {\n 'Content-Type': 'application/json',\n Authorization: `${(await Auth.currentSession()).getAccessToken().getJwtToken()}`\n },\n queryStringParameters: {\n type: 'Personal',\n includeInactive: true,\n username: JSON.parse(JSON.stringify(await Auth.currentAuthenticatedUser())).username\n }\n }\n\n var personalesGet = await API.get(apiName, path, myInit);\n\n var personalesTmp = [];\n for (var personalesGetIndex in personalesGet) {\n var singlePersonalesGet = personalesGet[personalesGetIndex];\n\n var singlePersonal = {\n name: singlePersonalesGet.ApellidoPaterno + ' ' + singlePersonalesGet.ApellidoMaterno + ' ' + singlePersonalesGet.Nombre,\n value: singlePersonalesGet.Personal\n };\n\n personalesTmp.push(singlePersonal);\n }\n\n setPersonales(personalesTmp);\n\n return personalesTmp;\n };\n\n var sucursalDataSource = new DataSource({\n paginate: true,\n store: {\n type: \"array\",\n key: \"Sucursal\",\n data: sucursales\n }\n });\n\n var personalDataSource = new DataSource({\n paginate: true,\n store: {\n type: \"array\",\n key: \"Personal\",\n data: personales\n }\n });\n\n var fechaEmisionEditorOptions = { width: '100%', disabled: !allowNew, text: 'Fecha Emisión' };\n var movimientoEditorOptions = { width: '100%', readOnly: true };\n var estatusEditorOptions = { width: '100%', readOnly: true };\n\n //Opciones Sucursal\n try {\n var sucursalAsignadaEditorOptions = { disabled: !allowNew, dataSource: sucursalDataSource, displayExpr: 'name', valueExpr: 'value', searchEnabled: true, value: (checkListPayload.header.SucursalAsignada.toString() ? checkListPayload.header.SucursalAsignada.toString() : ''), width: '100%' };\n }\n catch (e) {\n var sucursalAsignadaEditorOptions = { disabled: !allowNew, dataSource: sucursalDataSource, displayExpr: 'name', valueExpr: 'value', searchEnabled: true, value: '', width: '100%' };\n }\n\n //Opciones Personal\n try {\n var personalAsignadoEditorOptions = { disabled: !allowNew, dataSource: personalDataSource, displayExpr: 'name', valueExpr: 'value', searchEnabled: true, value: (checkListPayload.header.PersonalAsignado ? checkListPayload.header.PersonalAsignado : ''), width: '100%' };\n }\n catch (e) {\n var personalAsignadoEditorOptions = { disabled: !allowNew, dataSource: personalDataSource, displayExpr: 'name', valueExpr: 'value', searchEnabled: true, value: '', width: '100%' };\n }\n\n var nombreEditorOptions = { width: '100%', readOnly: true };\n\n var nombreSupervisorEditorOptions = { width: '100%', readOnly: true };\n var inicioEvaluacionEditorOptions = { width: '100%', readOnly: true };\n var finEvaluacionEditorOptions = { width: '100%', readOnly: true };\n var duracionEvaluacionEditorOptions = { width: '100%', readOnly: true };\n\n var noVendedoresOptions = { format: { type: 'fixedPoint', precision: 0 }, width: '100%' };\n var noAuxiliaresOptions = { format: { type: 'fixedPoint', precision: 0 }, width: '100%' };\n\n var marcaEditorOptions = { width: '100%' };\n var modeloEditorOptions = { width: '100%' };\n var numeroCelularEditorOptions = { width: '100%', mask: '000-0000-000' };\n\n var importeGridEditorOptions = { format: { type: 'currency', currency: 'MXN', precision: 2 }, width: '100%' };\n var importeEditorOptions = { format: { type: 'currency', currency: 'MXN', precision: 2 }, width: '100%', readOnly: true };\n var cantidadEditorOptions = { format: { type: 'fixedPoint', precision: 0 } };\n\n var arqDiferenciaEditorOptions = { format: { type: 'currency', currency: 'MXN', precision: 2 }, width: '100%', disabled: !conDiferenciaCajaMenor };\n\n var arqGteReposicionMontoEditorOptions = { format: { type: 'currency', currency: 'MXN', precision: 2 }, width: '100%', disabled: !conReposicionCajaMenor };\n\n var arqGteFaltanteEditorOptions = { format: { type: 'currency', currency: 'MXN', precision: 2 }, width: '100%', disabled: !conDiferenciaGteCajaChica };\n\n var arqDineroDevueltoEditorOptions = { width: '100%' };\n\n var uppercaseEditorOptions = { inputAttr: { 'style': 'text-transform: uppercase' } };\n\n var uppercaseCaratulaAudEditorOptions = { inputAttr: { 'style': 'text-transform: uppercase' }, width: '100%' };\n\n var resultadoEditorOptions = { height: 130, width: '100%' };\n\n const denominacionBilleteMXN = [\n { name: '$1,000.00', value: '$1,000.00' },\n { name: '$500.00', value: '$500.00' },\n { name: '$200.00', value: '$200.00' },\n { name: '$100.00', value: '$100.00' },\n { name: '$50.00', value: '$50.00' },\n { name: '$20.00', value: '$20.00' }\n ];\n\n const denominacionMonedaMXN = [\n { name: '$20.00', value: '$20.00' },\n { name: '$10.00', value: '$10.00' },\n { name: '$5.00', value: '$5.00' },\n { name: '$2.00', value: '$2.00' },\n { name: '$1.00', value: '$1.00' },\n { name: 'Centavos', value: 'Centavos' }\n ];\n\n const denominacionBilleteUSD = [\n { name: '$100.00', value: '$100.00' },\n { name: '$50.00', value: '$50.00' },\n { name: '$20.00', value: '$20.00' },\n { name: '$10.00', value: '$10.00' },\n { name: '$5.00', value: '$5.00' },\n { name: '$2.00', value: '$2.00' },\n { name: '$1.00', value: '$1.00' }\n ];\n\n const denominacionMonedaUSD = [\n { name: '$1.00', value: '$1.00' },\n { name: '$0.50', value: '$0.50' },\n { name: '$0.25', value: '$0.25' },\n { name: '$0.10', value: '$0.10' },\n { name: '$0.05', value: '$0.05' },\n { name: '$0.01', value: '$0.01' }\n ];\n\n useEffect(() => {\n window.addEventListener('popstate', (e) => {\n var hash;\n\n try {\n hash = e.target.location.hash;\n }\n catch (e) {\n hash = '';\n }\n\n if (hash === '#/ChecklistAud') {\n history.push('/ChecklistAud');\n\n window.location.reload();\n }\n });\n\n async function initialize() {\n // setVisibleLoadPanel(true);\n\n //Obtenemos el listado de Sucursales\n var sucursalList = await getSucursales();\n\n //Obtenemos el listado de Personales\n var personalList = await getPersonal();\n\n // setVisibleLoadPanel(false);\n }\n\n initialize();\n\n //En caso de solicitar un ID especifico, redireccionamos a ese ID\n if (!props.match.isExact) {\n var urlID = props.location.pathname.replace('/ChecklistAud/', '');\n\n editChecklistButton(urlID);\n }\n\n // eslint-disable-next-line\n }, []);\n\n function overrideOnValueChanged(e) {\n //Deshabilitamos la escritura en los campos tipo select\n if (e.parentType === 'dataRow' && (e.dataField === 'Evaluacion' || e.dataField === 'Uniforme' || e.dataField === 'Presentacion' || e.dataField === 'Disposicion' || e.dataField === 'Actitud' || e.dataField === 'Concepto' || e.dataField === 'Responsable' || e.dataField === 'Trabajador' || e.dataField === 'Bienvenida' || e.dataField === 'DeteccionNecesidades' || e.dataField === 'LaborVenta' || e.dataField === 'ConocimientoProducto' || e.dataField === 'ManejoObjeciones' || e.dataField === 'Cierre' || e.dataField === 'ProductosAdicionales' || e.dataField === 'Denominacion')) {\n e.editorOptions.searchEnabled = false;\n }\n\n //Hacemos la data persistente en cuanto el usuario escriba en el campo\n // if (e.parentType === \"dataRow\") {\n // e.editorOptions.valueChangeEvent = \"input\";\n // }\n }\n\n function overrideOnValueChangedArqueo(e) {\n //Deshabilitamos la escritura en los campos tipo select\n if (e.parentType === 'dataRow' && (e.dataField === 'Evaluacion' || e.dataField === 'Uniforme' || e.dataField === 'Presentacion' || e.dataField === 'Disposicion' || e.dataField === 'Actitud' || e.dataField === 'Concepto' || e.dataField === 'Responsable' || e.dataField === 'Trabajador' || e.dataField === 'Bienvenida' || e.dataField === 'DeteccionNecesidades' || e.dataField === 'LaborVenta' || e.dataField === 'ConocimientoProducto' || e.dataField === 'ManejoObjeciones' || e.dataField === 'Cierre' || e.dataField === 'ProductosAdicionales' || e.dataField === 'Denominacion')) {\n e.editorOptions.searchEnabled = false;\n }\n\n //Hacemos la data persistente en cuanto el usuario escriba en el campo\n // if (e.parentType === \"dataRow\") {\n // e.editorOptions.valueChangeEvent = \"input\";\n // }\n\n if (e.parentType === 'dataRow' && (e.dataField === 'Importe')) {\n e.editorOptions.disabled = true;\n }\n }\n\n function actualizaImporteArqueo(e) {\n var Denominacion = e.newData.Denominacion;\n var Cantidad = e.newData.Cantidad;\n\n if (!Denominacion)\n Denominacion = e.oldData.Denominacion;\n\n if (!Cantidad)\n Cantidad = e.oldData.Cantidad;\n\n if (Denominacion !== 'Centavos')\n Denominacion = parseFloat(Denominacion.replace('$', '').replace(/,/g, ''));\n else\n Denominacion = 0.01;\n\n e.newData.Importe = Cantidad * Denominacion;\n }\n\n function insertaImporteArqueo(e) {\n var Denominacion = e.data.Denominacion;\n var Cantidad = e.data.Cantidad;\n\n if (Denominacion !== 'Centavos')\n Denominacion = parseFloat(Denominacion.replace('$', '').replace(/,/g, ''));\n else\n Denominacion = 0.01;\n\n e.data.Importe = Cantidad * Denominacion;\n }\n\n function actualizaImporteCajaMenor(e) {\n var importePedidos;\n var importePagos;\n var total;\n\n var gridPedidos;\n var gridPagos;\n\n //Obtenemos el total del Grid Pedidos\n if (gridPedidosRef.current) {\n gridPedidos = gridPedidosRef.current.instance();\n\n importePedidos = parseFloat(gridPedidos.getTotalSummaryValue('Importe'));\n }\n else {\n importePedidos = 0;\n }\n\n //Obtenemos el total del Grid Pagos\n if (gridPagosRef.current) {\n gridPagos = gridPagosRef.current.instance();\n\n importePagos = parseFloat(gridPagos.getTotalSummaryValue('Importe'));\n }\n else {\n importePagos = 0;\n }\n\n // Actualizamos el total\n if (datosArqueoRef.current) {\n var formDatosArqueo = datosArqueoRef.current.instance();\n\n formDatosArqueo.updateData('ArqImportePedidos', importePedidos);\n formDatosArqueo.updateData('ArqImportePagos', importePagos);\n\n formDatosArqueo.updateData('ArqValorTotalSistema', importePedidos + importePagos);\n }\n }\n\n function actualizaOtroImporteCajaMenor(e) {\n var importeBilleteMXN;\n var importeMonedaMXN;\n var importeBilleteUSD;\n var importeMonedaUSD;\n var importeCheque;\n var importeTarjeta;\n var importeValeDespensa;\n var importeVale;\n var total;\n\n var gridBilleteMXN;\n var gridMonedaMXN;\n var gridBilleteUSD;\n var gridMonedaUSD;\n var gridCheque;\n var gridTarjeta;\n var gridValeDespensa;\n var gridVale;\n\n //Obtenemos el total del Grid Billete MXN\n if (gridBilleteMXNRef.current) {\n gridBilleteMXN = gridBilleteMXNRef.current.instance();\n\n importeBilleteMXN = parseFloat(gridBilleteMXN.getTotalSummaryValue('Importe'));\n }\n else {\n importeBilleteMXN = 0;\n }\n\n //Obtenemos el total del Grid Moneda MXN\n if (gridMonedaMXNRef.current) {\n gridMonedaMXN = gridMonedaMXNRef.current.instance();\n\n importeMonedaMXN = parseFloat(gridMonedaMXN.getTotalSummaryValue('Importe'));\n }\n else {\n importeMonedaMXN = 0;\n }\n\n //Obtenemos el total del Grid Billete USD\n if (gridBilleteUSDRef.current) {\n gridBilleteUSD = gridBilleteUSDRef.current.instance();\n\n importeBilleteUSD = parseFloat(gridBilleteUSD.getTotalSummaryValue('Importe'));\n }\n else {\n importeBilleteUSD = 0;\n }\n\n //Obtenemos el total del Grid Moneda USD\n if (gridMonedaUSDRef.current) {\n gridMonedaUSD = gridMonedaUSDRef.current.instance();\n\n importeMonedaUSD = parseFloat(gridMonedaUSD.getTotalSummaryValue('Importe'));\n }\n else {\n importeMonedaUSD = 0;\n }\n\n //Obtenemos el total del Grid Cheque\n if (gridChequeRef.current) {\n gridCheque = gridChequeRef.current.instance();\n\n importeCheque = parseFloat(gridCheque.getTotalSummaryValue('Importe'));\n }\n else {\n importeCheque = 0;\n }\n\n //Obtenemos el total del Grid Tarjeta\n if (gridTarjetaRef.current) {\n gridTarjeta = gridTarjetaRef.current.instance();\n\n importeTarjeta = parseFloat(gridTarjeta.getTotalSummaryValue('Importe'));\n }\n else {\n importeTarjeta = 0;\n }\n\n //Obtenemos el total del Grid Vale Despensa\n if (gridValeDespensaRef.current) {\n gridValeDespensa = gridValeDespensaRef.current.instance();\n\n importeValeDespensa = parseFloat(gridValeDespensa.getTotalSummaryValue('Importe'));\n }\n else {\n importeValeDespensa = 0;\n }\n\n //Obtenemos el total del Grid Vale\n if (gridValeRef.current) {\n gridVale = gridValeRef.current.instance();\n\n importeVale = parseFloat(gridVale.getTotalSummaryValue('Importe'));\n }\n else {\n importeVale = 0;\n }\n\n // Actualizamos el total\n if (datosArqueoRef.current) {\n var formDatosArqueo = datosArqueoRef.current.instance();\n\n formDatosArqueo.updateData('ArqEfectivoMXN', importeBilleteMXN + importeMonedaMXN);\n formDatosArqueo.updateData('ArqEfectivoUSD', importeBilleteUSD + importeMonedaUSD);\n formDatosArqueo.updateData('ArqCheques', importeCheque);\n formDatosArqueo.updateData('ArqTarjetaBancaria', importeTarjeta);\n formDatosArqueo.updateData('ArqVales', importeVale + importeValeDespensa);\n formDatosArqueo.updateData('ArqValorTotalCajaMenor', importeBilleteMXN + importeMonedaMXN + importeBilleteUSD + importeMonedaUSD + importeCheque + importeTarjeta + importeVale + importeValeDespensa);\n }\n }\n\n function actualizaGastosGteCajaChica(e) {\n var importeAdministrativo;\n var importeGasolina;\n var total;\n\n var gridGasAdminGerente;\n var gridGasolinaGerente;\n\n //Obtenemos el total del Grid Gastos Administrativos\n if (gridGasAdminGerenteRef.current) {\n gridGasAdminGerente = gridGasAdminGerenteRef.current.instance();\n\n importeAdministrativo = parseFloat(gridGasAdminGerente.getTotalSummaryValue('Importe'));\n }\n else {\n importeAdministrativo = 0;\n }\n\n //Obtenemos el total del Grid Gasolina\n if (gridGasolinaGerenteRef.current) {\n gridGasolinaGerente = gridGasolinaGerenteRef.current.instance();\n\n importeGasolina = parseFloat(gridGasolinaGerente.getTotalSummaryValue('Importe'));\n }\n else {\n importeGasolina = 0;\n }\n\n // Actualizamos el total\n if (datosArqueoGerenteRef.current) {\n var formDatosArqueoGerente = datosArqueoGerenteRef.current.instance();\n\n formDatosArqueoGerente.updateData('ArqGteGastosAdmin', importeAdministrativo);\n formDatosArqueoGerente.updateData('ArqGteGasolina', importeGasolina);\n\n formDatosArqueoGerente.updateData('ArqGteGastosTotal', importeAdministrativo + importeGasolina);\n }\n }\n\n function actualizaDictamenGteCajaChica(e) {\n var importeBilleteMXNGerente;\n var importeMonedaMXNGerente;\n var importeTarjetaBancGerente;\n var importeValeGasGerente;\n var total;\n\n var gridBilleteMXNGerente;\n var gridMonedaMXNGerente;\n var gridTarjetaBancGerente;\n var gridValesGasGerente;\n\n //Obtenemos el total del Grid Billete MXN Gerente\n if (gridBilleteMXNGerenteRef.current) {\n gridBilleteMXNGerente = gridBilleteMXNGerenteRef.current.instance();\n\n importeBilleteMXNGerente = parseFloat(gridBilleteMXNGerente.getTotalSummaryValue('Importe'));\n }\n else {\n importeBilleteMXNGerente = 0;\n }\n\n //Obtenemos el total del Grid Moneda MXN Gerente\n if (gridMonedaMXNGerenteRef.current) {\n gridMonedaMXNGerente = gridMonedaMXNGerenteRef.current.instance();\n\n importeMonedaMXNGerente = parseFloat(gridMonedaMXNGerente.getTotalSummaryValue('Importe'));\n }\n else {\n importeMonedaMXNGerente = 0;\n }\n\n //Obtenemos el total del Grid Tarjeta Banc Gerente\n if (gridTarjetaBancGerenteRef.current) {\n gridTarjetaBancGerente = gridTarjetaBancGerenteRef.current.instance();\n\n importeTarjetaBancGerente = parseFloat(gridTarjetaBancGerente.getTotalSummaryValue('Importe'));\n }\n else {\n importeTarjetaBancGerente = 0;\n }\n\n //Obtenemos el total del Grid Vales Gas Gerente\n if (gridValesGasGerenteRef.current) {\n gridValesGasGerente = gridValesGasGerenteRef.current.instance();\n\n importeValeGasGerente = parseFloat(gridValesGasGerente.getTotalSummaryValue('Importe'));\n }\n else {\n importeValeGasGerente = 0;\n }\n\n // Actualizamos el total\n if (datosArqueoGerenteRef.current) {\n var formDatosArqueoGerente = datosArqueoGerenteRef.current.instance();\n\n formDatosArqueoGerente.updateData('ArqGteEfectivoMXN', importeBilleteMXNGerente + importeMonedaMXNGerente);\n formDatosArqueoGerente.updateData('ArqGteTarjetaBancaria', importeTarjetaBancGerente);\n formDatosArqueoGerente.updateData('ArqGteValeGasolina', importeValeGasGerente);\n\n formDatosArqueoGerente.updateData('ArqGteValorTotalCaja', importeBilleteMXNGerente + importeMonedaMXNGerente + importeTarjetaBancGerente + importeValeGasGerente);\n }\n }\n\n async function uploadChunk(file, uploadInfo) {\n try {\n var responseS3 = await Storage.put(\"/checklist/\" + id + \"/\" + file.name, uploadInfo.chunkBlob, {\n contentType: file.type,\n ACL: 'public-read'\n });\n\n //Obtenemos el nombre del bucket\n let bucketName = Storage._config.AWSS3.bucket;\n\n\n let apiName = 'AdminSC';\n let path = '/uploadattachment';\n\n let myInit = {\n headers: {\n 'Content-Type': 'application/json',\n Authorization: `${(await Auth.currentSession()).getAccessToken().getJwtToken()}`\n },\n body: {\n action: 'register',\n bucketName: bucketName,\n type: 'checklist',\n id: id,\n Key: \"/checklist/\" + id + \"/\" + file.name,\n fileName: file.name,\n username: JSON.parse(JSON.stringify(await Auth.currentAuthenticatedUser())).username\n }\n }\n\n var attachmentsResult = await API.post(apiName, path, myInit);\n\n //Obtenemos los attachments\n var attachmentsGet = await Storage.list(\"/checklist/\" + id);\n var attachmentsAux = [];\n\n for (var attachmentsGetIndex in attachmentsGet) {\n var singleAttachmentsGet = attachmentsGet[attachmentsGetIndex];\n\n var singleAttachment = {\n name: singleAttachmentsGet.key.split('/').pop(),\n isDirectory: false,\n size: singleAttachmentsGet.size,\n };\n\n attachmentsAux.push(singleAttachment);\n }\n\n setAttachments(attachmentsAux);\n\n }\n catch (err) {\n console.log(\"Error uploading file:\", err);\n }\n }\n\n async function onAttachmentDeleting(e) {\n var fileName = e.item.key;\n\n //Primero borramos el archivo de S3\n var attachmentsDelete = await Storage.remove(\"/checklist/\" + id + \"/\" + fileName);\n\n //Despues borramos el attachment en Intelisis\n let bucketName = Storage._config.AWSS3.bucket;\n\n let apiName = 'AdminSC';\n let path = '/uploadattachment';\n\n let myInit = {\n headers: {\n 'Content-Type': 'application/json',\n Authorization: `${(await Auth.currentSession()).getAccessToken().getJwtToken()}`\n },\n body: {\n action: 'delete',\n bucketName: bucketName,\n type: 'checklist',\n id: id,\n Key: \"/checklist/\" + id + \"/\" + fileName,\n fileName: fileName,\n username: JSON.parse(JSON.stringify(await Auth.currentAuthenticatedUser())).username\n }\n }\n\n var attachmentsResult = await API.post(apiName, path, myInit);\n\n //Finalmente sincronizamos el state\n var attachmentsGet = await Storage.list(\"/checklist/\" + id);\n var attachmentsAux = [];\n\n for (var attachmentsGetIndex in attachmentsGet) {\n var singleAttachmentsGet = attachmentsGet[attachmentsGetIndex];\n\n var singleAttachment = {\n name: singleAttachmentsGet.key.split('/').pop(),\n isDirectory: false,\n size: singleAttachmentsGet.size,\n };\n\n attachmentsAux.push(singleAttachment);\n }\n\n setAttachments(attachmentsAux);\n };\n\n function downloadBlob(blob, filename) {\n const url = URL.createObjectURL(blob);\n const a = document.createElement('a');\n a.href = url;\n a.download = filename || 'download';\n const clickHandler = () => {\n setTimeout(() => {\n URL.revokeObjectURL(url);\n a.removeEventListener('click', clickHandler);\n }, 150);\n };\n\n a.addEventListener('click', clickHandler, false);\n\n a.click();\n\n return a;\n };\n\n async function onItemDownloading(e) {\n e.cancel = true;\n\n const downloadFileResponse = await Storage.get(\"/checklist/\" + id + \"/\" + e.item.name, { download: true });\n\n downloadBlob(downloadFileResponse.Body, e.item.name);\n };\n\n function openBlob(blob, filename) {\n const url = URL.createObjectURL(blob);\n\n window.open(url, \"_blank\");\n };\n\n async function onAttachmentOpen(e) {\n const downloadFileResponse = await Storage.get(\"/checklist/\" + id + \"/\" + e.file.name, { download: true });\n\n openBlob(downloadFileResponse.Body, e.file.name);\n };\n\n\n function onHidingToast() {\n setVisibleToast(false);\n }\n\n function refreshButton() {\n if (gridTableroRef.current) {\n var gridTablero = gridTableroRef.current.instance();\n\n gridTablero.refresh();\n }\n }\n\n async function newButton() {\n try {\n setVisibleLoadPanel(true);\n\n let apiName = 'AdminSC';\n let path = '/procesachecklist';\n\n let myInit = {\n headers: {\n 'Content-Type': 'application/json',\n Authorization: `${(await Auth.currentSession()).getAccessToken().getJwtToken()}`\n },\n queryStringParameters: {\n personal: props.personal,\n checklistAccess: props.checklistAccess,\n action: 'new',\n mov: 'Check List Aud',\n username: JSON.parse(JSON.stringify(await Auth.currentAuthenticatedUser())).username\n }\n };\n\n var payloadNew = await API.get(apiName, path, myInit);\n\n setCheckListPayload(payloadNew);\n\n setAttachments([]);\n\n setIsDetail(true);\n setId(undefined);\n setAllowNew(true);\n\n setActivateButton(true);\n setActivateStopwatch(false);\n setActivateSaveButton(true);\n setActivateDeleteButton(true);\n setAllowUpdating(false);\n\n setVisibleLoadPanel(false);\n }\n catch (e) {\n setVisibleLoadPanel(false);\n if (e === 'No current user') {\n history.push('/');\n\n window.location.reload();\n }\n }\n };\n\n async function deleteButton() {\n try {\n if (!window.confirm('¿Desea eliminar el checklist?'))\n return;\n\n setVisibleLoadPanel(true);\n\n var ID = checkListPayload.header.ID;\n\n if (!ID) {\n //Vamos al tablero de control\n history.push('/ChecklistAud');\n return;\n }\n\n let apiName = 'AdminSC';\n let path = '/procesachecklist';\n\n let myInit = {\n headers: {\n 'Content-Type': 'application/json',\n Authorization: `${(await Auth.currentSession()).getAccessToken().getJwtToken()}`\n },\n body: {\n ID: ID,\n payload: checkListPayload,\n action: 'delete',\n username: JSON.parse(JSON.stringify(await Auth.currentAuthenticatedUser())).username\n }\n }\n\n var payloadPost = await API.post(apiName, path, myInit);\n\n if (payloadPost.ok === 'true') {\n setVisibleLoadPanel(false);\n\n setVisibleToast(true);\n setMessageToast('Checklist eliminado con éxito');\n setTypeToast('success')\n\n setIsDetail(false);\n\n //Vamos al tablero de control\n history.push('/ChecklistAud');\n }\n else if (payloadPost.ok === 'false') {\n setVisibleLoadPanel(false);\n\n setVisibleToast(true);\n setMessageToast(payloadPost.message);\n setTypeToast('error')\n }\n }\n catch (e) {\n setVisibleLoadPanel(false);\n\n if (e === 'No current user') {\n history.push('/');\n\n window.location.reload();\n }\n }\n }\n\n function onExporting(e) {\n const workbook = new Workbook();\n const worksheet = workbook.addWorksheet('Datos');\n\n exportDataGrid({\n component: e.component,\n worksheet,\n autoFilterEnabled: true,\n }).then(() => {\n workbook.xlsx.writeBuffer().then((buffer) => {\n saveAs(new Blob([buffer], { type: 'application/octet-stream' }), 'Datos.xlsx');\n });\n });\n e.cancel = true;\n };\n\n return (\n <div>\n {isDetail === false ? (\n <div class=\"bg-gray-200 m-2\">\n <h1 class=\"font-sans inline-block text-xl font-bold text-gray-700 leading-8 align-top mb-1\"><FontAwesomeIcon icon={faList} size=\"lg\" /> Checklist Auditores</h1>\n </div>\n ) :\n (\n <div class=\"bg-gray-200 m-2\">\n <h1 class=\"font-sans inline-block text-xl font-bold text-gray-700 leading-8 align-top mb-1\"><FontAwesomeIcon icon={faUserTie} size=\"xl\" /> {(checkListPayload.header ? checkListPayload.header.Movimiento : 'Check List Aud')}</h1>\n <TransactionStatus {...props} Estatus={checkListPayload.header.Estatus} />\n </div>\n )}\n\n <LoadPanel\n shadingColor=\"rgba(0,0,0,0.4)\"\n visible={visibleLoadPanel}\n showIndicator={true}\n message=\"Por favor espere...\"\n shading={true}\n showPane={true}\n hideOnOutsideClick={false}\n />\n\n <Toast\n visible={visibleToast}\n message={messageToast}\n type={typeToast}\n onHiding={onHidingToast}\n displayTime={5000}\n width={'auto'}\n position={{\n my: 'top center',\n at: 'top center',\n of: window,\n offset: '0 130'\n }}\n />\n\n <div class=\"bg-gray-200 m-2\">\n {isDetail === false ? (\n <div class=\"bg-white p-3 shadow-xl\">\n\n {props.newChecklistAud.toString() === 'true' ?\n (\n <div>\n <Link to=\"/ChecklistAud/undefined\">\n <button class=\"mb-2 bg-green-500 hover:bg-green-700 text-white font-bold py-2 px-4 rounded\" onClick={() => newButton()}><FontAwesomeIcon icon={faFileAlt} /> Nuevo Checklist</button>\n </Link>\n\n <button onClick={refreshButton} type=\"submit\" class=\"ml-4 mb-4 bg-blue-500 hover:bg-blue-700 text-white font-bold py-2 px-4 rounded\">\n <FontAwesomeIcon icon={faArrowsRotate} /> Actualizar\n </button>\n </div>\n ) :\n (\n <div>\n <button onClick={refreshButton} type=\"submit\" class=\"mb-4 bg-blue-500 hover:bg-blue-700 text-white font-bold py-2 px-4 rounded\">\n <FontAwesomeIcon icon={faArrowsRotate} /> Actualizar\n </button>\n </div>\n )}\n\n <div className=\"options mb-2\">\n <div className=\"option\">\n <CheckBox text=\"Expandir todos los grupos\"\n value={autoExpandAll}\n onValueChanged={onAutoExpandAllChanged}>\n </CheckBox>\n </div>\n </div>\n <DataGrid\n height={800}\n id=\"gridContainer\"\n columnsAutoWidth={true}\n filterBuilder={filterBuilder}\n dataSource={store}\n defaultFilterValue={filterValue}\n allowColumnReordering={true}\n allowColumnResizing={true}\n columnResizingMode={\"widget\"}\n showBorders={true}\n rowAlternationEnabled={true}\n showRowLines={true}\n showColumnLines={true}\n remoteOperations={{ filtering: true }}\n ref={gridTableroRef}\n onExporting={onExporting}\n >\n <Scrolling rowRenderingMode='virtual'></Scrolling>\n <Paging defaultPageSize={10} />\n <Pager\n visible={true}\n allowedPageSizes={allowedPageSizes}\n displayMode='compact'\n showPageSizeSelector={true}\n showInfo={true}\n showNavigationButtons={true} />\n <FilterRow visible={true} />\n <FilterPanel visible={true} />\n <FilterBuilderPopup position={filterBuilderPopupPosition} />\n\n <HeaderFilter visible={true} />\n\n <GroupPanel visible={true} />\n <SearchPanel visible={true} />\n <ColumnChooser\n enabled={true}\n mode='select'\n >\n <ColumnChooserSearch\n enabled={true}\n />\n\n <ColumnChooserSelection\n allowSelectAll={true}\n selectByClick={true}\n recursive={true}\n />\n </ColumnChooser>\n <Grouping autoExpandAll={autoExpandAll} />\n\n <StateStoring enabled={true} type=\"localStorage\" storageKey=\"gridContainerChecklistAud\" />\n\n <Export enabled={true} />\n\n <Column caption=\"\" alignment=\"center\" width={100} cellRender={editCheckList} />\n\n <Column dataField=\"MovID\" dataType=\"string\" width={190} caption=\"Folio\" />\n <Column dataField=\"FechaEmision\" caption=\"Fecha Requerida\" dataType=\"date\" width={150} />\n <Column dataField=\"Estatus\" dataType=\"string\" width={150} />\n <Column caption=\"Nombre Sucursal\" dataField=\"Nombre\" dataType=\"string\" groupIndex={1} />\n <Column caption=\"Nombre Auditor\" dataField=\"NombreSupervisor\" dataType=\"string\" width={350} />\n <Column caption=\"Plaza\" dataField=\"Plaza\" dataType=\"string\" width={150} groupIndex={0} />\n </DataGrid>\n </div>\n ) : (<div />)}\n <Route exact path=\"/ChecklistAud/:ID\" render={({ match }) => {\n return (\n <div class=\"bg-gray-200\">\n {isDetail.toString() === 'true' ?\n (\n <div>\n <Link to=\"/ChecklistAud\">\n <button onClick={cancelEditButton} type=\"submit\" class=\"mb-4 bg-red-500 hover:bg-red-700 text-white font-bold py-2 px-4 rounded\">\n <FontAwesomeIcon icon={faArrowRotateLeft} /> Regresar\n </button>\n </Link>\n\n {activateSaveButton.toString() === 'true' ?\n (\n <button onClick={saveButton} type=\"submit\" class=\"ml-4 mb-4 bg-blue-500 hover:bg-blue-700 text-white font-bold py-2 px-4 rounded\">\n <FontAwesomeIcon icon={faSave} /> Guardar Cambios\n </button>\n ) : (\n <button disabled onClick={saveButton} type=\"submit\" class=\"ml-4 mb-4 cursor-not-allowed disabled:opacity-75 bg-gray-500 hover:bg-gray-700 text-white font-bold py-2 px-4 rounded\">\n <FontAwesomeIcon icon={faSave} /> Guardar Cambios\n </button>\n )}\n\n {activateButton.toString() === 'true' ?\n (\n <button onClick={confirmButton} type=\"submit\" class=\"ml-4 mb-4 bg-green-500 hover:bg-green-700 text-white font-bold py-2 px-4 rounded\">\n <FontAwesomeIcon icon={faClipboardCheck} /> Confirmar Checklist\n </button>\n ) : (\n <button disabled onClick={confirmButton} type=\"submit\" class=\"ml-4 mb-4 cursor-not-allowed disabled:opacity-75 bg-gray-500 hover:bg-gray-700 text-white font-bold py-2 px-4 rounded\">\n <FontAwesomeIcon icon={faClipboardCheck} /> Confirmar Checklist\n </button>\n )}\n\n {activateStopwatch.toString() === 'true' ?\n (\n <button onClick={startStopwatch} type=\"submit\" class=\"ml-4 mb-4 bg-yellow-500 hover:bg-yellow-700 text-white font-bold py-2 px-4 rounded\">\n <FontAwesomeIcon icon={faStopwatch} /> Iniciar Checklist\n </button>\n ) : (\n <button disabled onClick={startStopwatch} type=\"submit\" class=\"ml-4 mb-4 cursor-not-allowed disabled:opacity-75 bg-gray-500 hover:bg-gray-700 text-white font-bold py-2 px-4 rounded\">\n <FontAwesomeIcon icon={faStopwatch} /> Iniciar Checklist\n </button>\n )}\n\n <button onClick={printButton} type=\"submit\" class=\"ml-4 mb-4 bg-gray-500 hover:bg-gray-700 text-white font-bold py-2 px-4 rounded\">\n <FontAwesomeIcon icon={faFilePdf} /> PDF\n </button>\n\n {activateDeleteButton.toString() === 'true' && id ?\n (\n <button onClick={deleteButton} type=\"submit\" class=\"ml-4 mb-4 bg-red-500 hover:bg-red-700 text-white font-bold py-2 px-4 rounded\">\n <FontAwesomeIcon icon={faTrash} /> Eliminar\n </button>\n ) :\n (<div></div>)}\n\n <div class=\"h-72\" ref={mapRef} id=\"map\" />\n <div class=\"p-3 mt-40 bg-white shadow-xl\">\n <Form>\n <TabbedItem>\n <TabPanelOptions deferRendering={false} showNavButtons={true} />\n <Tab title=\"Datos Generales\" >\n <Form\n id=\"datosGenerales\"\n labelMode={'outside'}\n formData={checkListPayload.header}\n\n showColonAfterLabel={false}\n labelLocation={'top'}\n colCount={2}\n >\n <GroupItem caption=\"General\">\n <Item cssClass=\"boldText\" dataField=\"Movimiento\" editorOptions={movimientoEditorOptions} />\n <Item dataField=\"FechaEmision\" editorType=\"dxDateBox\" editorOptions={fechaEmisionEditorOptions}>\n <Label text={\"Fecha Emisión\"} />\n </Item>\n </GroupItem>\n <GroupItem caption=\"Sucursal\">\n <Item dataField=\"SucursalAsignada\" editorType=\"dxSelectBox\" editorOptions={sucursalAsignadaEditorOptions} />\n </GroupItem>\n <GroupItem caption=\"Auditor\">\n <Item dataField=\"PersonalAsignado\" editorType=\"dxSelectBox\" editorOptions={personalAsignadoEditorOptions}>\n <Label text={\"Auditor Asignado\"} />\n </Item>\n </GroupItem>\n <GroupItem caption=\"Tiempo\">\n <Item dataField=\"InicioEvaluacion\" editorOptions={inicioEvaluacionEditorOptions}>\n <Label text={\"Inicio Evaluación\"} />\n </Item>\n <Item dataField=\"FinEvaluacion\" editorOptions={finEvaluacionEditorOptions}>\n <Label text={\"Fin Evaluación\"} />\n </Item>\n <Item dataField=\"DuracionEvaluacion\" editorOptions={duracionEvaluacionEditorOptions}>\n <Label text={\"Duración Evaluación\"} />\n </Item>\n </GroupItem>\n </Form>\n </Tab>\n <Tab title=\"Checklist\" >\n <Form\n id=\"datosChecklist\"\n labelMode={'outside'}\n formData={checkListPayload.header}\n readOnly={!allowUpdating}\n showColonAfterLabel={false}\n labelLocation={'top'}\n colCount={1}\n >\n <GroupItem caption=\"# Personal\">\n <Item dataField=\"NoVendedores\" editorType=\"dxNumberBox\" editorOptions={noVendedoresOptions} >\n <Label text={\"Vendedores\"} />\n </Item>\n <Item dataField=\"NoAuxiliares\" editorType=\"dxNumberBox\" editorOptions={noAuxiliaresOptions}>\n <Label text={\"Auxiliares\"} />\n </Item>\n </GroupItem>\n <GroupItem caption=\"Check List\">\n <CheckBox text=\"Expandir todos los grupos\"\n value={autoExpandAllChecklist}\n onValueChanged={onAutoExpandAllChecklistChanged}>\n </CheckBox>\n <DataGrid\n id=\"gridChecklist\"\n columnsAutoWidth={true}\n dataSource={checkListPayload.checklist}\n showBorders={true}\n showColumnLines={true}\n showRowLines={true}\n rowAlternationEnabled={false}\n allowColumnResizing={true}\n columnResizingMode={\"widget\"}\n allowColumnReordering={false}\n onEditorPreparing={overrideOnValueChanged}\n repaintChangesOnly={true}\n >\n <Paging defaultPageSize={100} />\n <Editing\n mode=\"cell\"\n allowUpdating={allowUpdating}\n />\n <Grouping autoExpandAll={autoExpandAllChecklist} />\n\n <Sorting mode=\"none\" />\n <Column dataField=\"Seccion\" caption=\"Sección\" dataType=\"string\" width={200} groupIndex={0} />\n <Column dataField=\"Concepto\" dataType=\"string\" allowEditing={false} width={450} />\n <Column dataField=\"Evaluacion\" caption=\"Evaluacion\" width={140} showEditorAlways={true}>\n <Lookup dataSource={evaluacion} valueExpr=\"value\" displayExpr=\"name\" />\n </Column>\n <Column dataField=\"Comentarios\" width={600} dataType=\"string\" showEditorAlways={true} />\n </DataGrid>\n </GroupItem>\n <GroupItem caption=\"Consecutivos\">\n <DataGrid\n id=\"gridConsecutivos\"\n columnsAutoWidth={true}\n dataSource={checkListPayload.consecutivos}\n showBorders={true}\n showColumnLines={true}\n showRowLines={true}\n rowAlternationEnabled={false}\n allowColumnResizing={true}\n columnResizingMode={\"widget\"}\n allowColumnReordering={false}\n onEditorPreparing={overrideOnValueChanged}\n repaintChangesOnly={true}\n >\n <Editing\n mode=\"cell\"\n allowUpdating={allowUpdating}\n />\n\n <Sorting mode=\"none\" />\n <Column dataField=\"Concepto\" dataType=\"string\" allowEditing={false} width={450} />\n <Column dataField=\"PrimerFolio\" caption=\"Primer Folio\" width={150} dataType=\"string\" showEditorAlways={true} editorOptions={uppercaseEditorOptions} />\n <Column dataField=\"UltimoFolio\" caption=\"Ultimo Folio\" width={150} dataType=\"string\" showEditorAlways={true} editorOptions={uppercaseEditorOptions} />\n </DataGrid>\n </GroupItem>\n <GroupItem caption=\"Marca / Modelo Celulares\">\n <Item dataField=\"MarcaCelular\" editorOptions={marcaEditorOptions} >\n <Label text={\"Marca\"} />\n </Item>\n <Item dataField=\"ModeloCelular\" editorOptions={modeloEditorOptions} >\n <Label text={\"Modelo\"} />\n </Item>\n <Item dataField=\"NumeroCelular\" editorOptions={numeroCelularEditorOptions} >\n <Label text={\"Número Celular\"} />\n </Item>\n </GroupItem>\n <GroupItem caption=\"Check List Celulares\">\n <DataGrid\n id=\"gridCelulares\"\n columnsAutoWidth={true}\n dataSource={checkListPayload.celulares}\n showBorders={true}\n showColumnLines={true}\n showRowLines={true}\n rowAlternationEnabled={false}\n allowColumnResizing={true}\n columnResizingMode={\"widget\"}\n allowColumnReordering={false}\n onEditorPreparing={overrideOnValueChanged}\n repaintChangesOnly={true}\n >\n <Paging defaultPageSize={100} />\n <Editing\n mode=\"cell\"\n allowUpdating={allowUpdating}\n />\n <Grouping autoExpandAll={autoExpandAllChecklist} />\n\n <Sorting mode=\"none\" />\n <Column dataField=\"Concepto\" dataType=\"string\" allowEditing={false} width={450} />\n <Column dataField=\"Evaluacion\" caption=\"Evaluacion\" width={140} showEditorAlways={true}>\n <Lookup dataSource={evaluacion} valueExpr=\"value\" displayExpr=\"name\" />\n </Column>\n <Column dataField=\"Comentarios\" width={600} dataType=\"string\" showEditorAlways={true} />\n </DataGrid>\n </GroupItem>\n </Form>\n </Tab>\n <Tab title=\"Arqueo de Caja\" >\n <Form\n id=\"datosArqueo\"\n labelMode={'outside'}\n formData={checkListPayload.header}\n readOnly={!allowUpdating}\n showColonAfterLabel={false}\n labelLocation={'top'}\n ref={datosArqueoRef}\n onFieldDataChanged={onFieldDatosChecklistChanged}\n colCount={4}\n >\n <GroupItem caption=\"Pedidos\" colSpan={4}>\n <DataGrid\n id=\"gridPedidos\"\n ref={gridPedidosRef}\n columnsAutoWidth={true}\n dataSource={checkListPayload.pedidos}\n showBorders={true}\n showColumnLines={true}\n showRowLines={true}\n rowAlternationEnabled={true}\n allowColumnResizing={true}\n columnResizingMode={\"widget\"}\n allowColumnReordering={false}\n onEditorPreparing={overrideOnValueChanged}\n onRowUpdated={actualizaImporteCajaMenor}\n onRowInserted={actualizaImporteCajaMenor}\n onRowRemoved={actualizaImporteCajaMenor}\n\n repaintChangesOnly={true}\n >\n <Editing\n mode=\"row\"\n allowUpdating={allowUpdating}\n allowAdding={allowUpdating}\n allowDeleting={allowUpdating}\n useIcons={true}\n />\n <Sorting mode=\"none\" />\n\n <Column dataField=\"Fecha\" caption=\"Fecha\" width={150} dataType=\"date\" showEditorAlways={true} />\n <Column dataField=\"Folio\" caption=\"Folio Físico\" width={150} showEditorAlways={true} editorOptions={uppercaseEditorOptions} />\n <Column dataField=\"NumeroPedido\" caption=\"No. Pedido en Sistema\" width={200} showEditorAlways={true} editorOptions={uppercaseEditorOptions} />\n <Column dataField=\"Importe\" caption=\"Importe\" width={150} showEditorAlways={true} editorType=\"dxNumberBox\" editorOptions={importeGridEditorOptions} />\n <Column dataField=\"MetodoPago\" caption=\"Método de Pago\" width={300} showEditorAlways={true} />\n\n <Toolbar>\n <Item name=\"addRowButton\" showText=\"inMenu\" />\n </Toolbar>\n <Summary>\n <GroupItem\n column=\"Importe\"\n summaryType=\"sum\"\n valueFormat=\"$,##0.##\"\n displayFormat=\"Total {0}\"\n showInGroupFooter={false} />\n <TotalItem\n column=\"Importe\"\n summaryType=\"sum\"\n valueFormat=\"$,##0.##\"\n displayFormat=\"Total {0}\"\n showInColumn=\"Importe\" />\n </Summary>\n </DataGrid>\n </GroupItem>\n\n <GroupItem caption=\"Pagos o Anticipos\" colSpan={4}>\n <DataGrid\n id=\"gridPagos\"\n ref={gridPagosRef}\n columnsAutoWidth={true}\n dataSource={checkListPayload.pagos}\n showBorders={true}\n showColumnLines={true}\n showRowLines={true}\n rowAlternationEnabled={true}\n allowColumnResizing={true}\n columnResizingMode={\"widget\"}\n allowColumnReordering={false}\n onEditorPreparing={overrideOnValueChanged}\n onRowUpdated={actualizaImporteCajaMenor}\n onRowInserted={actualizaImporteCajaMenor}\n onRowRemoved={actualizaImporteCajaMenor}\n repaintChangesOnly={true}\n >\n <Editing\n mode=\"row\"\n allowUpdating={allowUpdating}\n allowAdding={allowUpdating}\n allowDeleting={allowUpdating}\n useIcons={true}\n />\n <Sorting mode=\"none\" />\n\n <Column dataField=\"Fecha\" caption=\"Fecha\" width={150} dataType=\"date\" showEditorAlways={true} />\n <Column dataField=\"Folio\" caption=\"Folio Físico\" width={150} showEditorAlways={true} editorOptions={uppercaseEditorOptions} />\n <Column dataField=\"NumeroPedido\" caption=\"No. Pago en Sistema\" width={200} showEditorAlways={true} editorOptions={uppercaseEditorOptions} />\n <Column dataField=\"Importe\" caption=\"Importe\" width={150} showEditorAlways={true} editorType=\"dxNumberBox\" editorOptions={importeGridEditorOptions} />\n <Column dataField=\"MetodoPago\" caption=\"Método de Pago\" width={300} showEditorAlways={true} />\n\n <Toolbar>\n <Item name=\"addRowButton\" showText=\"inMenu\" />\n </Toolbar>\n <Summary>\n <GroupItem\n column=\"Importe\"\n summaryType=\"sum\"\n valueFormat=\"$,##0.##\"\n displayFormat=\"Total {0}\"\n showInGroupFooter={false} />\n <TotalItem\n column=\"Importe\"\n summaryType=\"sum\"\n valueFormat=\"$,##0.##\"\n displayFormat=\"Total {0}\"\n showInColumn=\"Importe\" />\n </Summary>\n </DataGrid>\n </GroupItem>\n\n <GroupItem caption=\"Billetes MXN\" colSpan={4}>\n <DataGrid\n id=\"gridBilleteMXN\"\n ref={gridBilleteMXNRef}\n columnsAutoWidth={true}\n dataSource={checkListPayload.billetemxn}\n showBorders={true}\n showColumnLines={true}\n showRowLines={true}\n rowAlternationEnabled={true}\n allowColumnResizing={true}\n columnResizingMode={\"widget\"}\n allowColumnReordering={false}\n onEditorPreparing={overrideOnValueChangedArqueo}\n onRowUpdating={actualizaImporteArqueo}\n onRowInserting={insertaImporteArqueo}\n onRowUpdated={actualizaOtroImporteCajaMenor}\n onRowInserted={actualizaOtroImporteCajaMenor}\n onRowRemoved={actualizaOtroImporteCajaMenor}\n repaintChangesOnly={true}\n >\n <Editing\n mode=\"row\"\n allowUpdating={allowUpdating}\n allowAdding={allowUpdating}\n allowDeleting={allowUpdating}\n useIcons={true}\n />\n <Sorting mode=\"none\" />\n\n <Column dataField=\"Cantidad\" caption=\"Cantidad\" width={150} showEditorAlways={true} editorType=\"dxNumberBox\" editorOptions={cantidadEditorOptions} />\n <Column dataField=\"Denominacion\" caption=\"Denominación\" width={300} showEditorAlways={true} >\n <Lookup dataSource={denominacionBilleteMXN} valueExpr=\"value\" displayExpr=\"name\" />\n </Column>\n <Column dataField=\"Importe\" caption=\"Importe\" width={150} showEditorAlways={true} editorType=\"dxNumberBox\" editorOptions={importeGridEditorOptions} />\n\n <Toolbar>\n <Item name=\"addRowButton\" showText=\"inMenu\" />\n </Toolbar>\n <Summary>\n <GroupItem\n column=\"Importe\"\n summaryType=\"sum\"\n valueFormat=\"$,##0.##\"\n displayFormat=\"Total {0}\"\n showInGroupFooter={false} />\n <TotalItem\n column=\"Importe\"\n summaryType=\"sum\"\n valueFormat=\"$,##0.##\"\n displayFormat=\"Total {0}\"\n showInColumn=\"Importe\" />\n </Summary>\n </DataGrid>\n </GroupItem>\n\n <GroupItem caption=\"Monedas MXN\" colSpan={4}>\n <DataGrid\n id=\"gridMonedaMXN\"\n ref={gridMonedaMXNRef}\n columnsAutoWidth={true}\n dataSource={checkListPayload.monedamxn}\n showBorders={true}\n showColumnLines={true}\n showRowLines={true}\n rowAlternationEnabled={true}\n allowColumnResizing={true}\n columnResizingMode={\"widget\"}\n allowColumnReordering={false}\n onEditorPreparing={overrideOnValueChangedArqueo}\n onRowUpdating={actualizaImporteArqueo}\n onRowInserting={insertaImporteArqueo}\n onRowUpdated={actualizaOtroImporteCajaMenor}\n onRowInserted={actualizaOtroImporteCajaMenor}\n onRowRemoved={actualizaOtroImporteCajaMenor}\n repaintChangesOnly={true}\n >\n <Editing\n mode=\"row\"\n allowUpdating={allowUpdating}\n allowAdding={allowUpdating}\n allowDeleting={allowUpdating}\n useIcons={true}\n />\n <Sorting mode=\"none\" />\n\n <Column dataField=\"Cantidad\" caption=\"Cantidad\" width={150} showEditorAlways={true} editorType=\"dxNumberBox\" editorOptions={cantidadEditorOptions} />\n <Column dataField=\"Denominacion\" caption=\"Denominación\" width={300} showEditorAlways={true} >\n <Lookup dataSource={denominacionMonedaMXN} valueExpr=\"value\" displayExpr=\"name\" />\n </Column>\n <Column dataField=\"Importe\" caption=\"Importe\" width={150} showEditorAlways={true} editorType=\"dxNumberBox\" editorOptions={importeGridEditorOptions} />\n\n <Toolbar>\n <Item name=\"addRowButton\" showText=\"inMenu\" />\n </Toolbar>\n\n <Summary>\n <GroupItem\n column=\"Importe\"\n summaryType=\"sum\"\n valueFormat=\"$,##0.##\"\n displayFormat=\"Total {0}\"\n showInGroupFooter={false} />\n <TotalItem\n column=\"Importe\"\n summaryType=\"sum\"\n valueFormat=\"$,##0.##\"\n displayFormat=\"Total {0}\"\n showInColumn=\"Importe\" />\n </Summary>\n </DataGrid>\n </GroupItem>\n\n <GroupItem caption=\"Billetes USD\" colSpan={4}>\n <DataGrid\n id=\"gridBilleteUSD\"\n ref={gridBilleteUSDRef}\n columnsAutoWidth={true}\n dataSource={checkListPayload.billeteusd}\n showBorders={true}\n showColumnLines={true}\n showRowLines={true}\n rowAlternationEnabled={true}\n allowColumnResizing={true}\n columnResizingMode={\"widget\"}\n allowColumnReordering={false}\n onEditorPreparing={overrideOnValueChangedArqueo}\n onRowUpdating={actualizaImporteArqueo}\n onRowInserting={insertaImporteArqueo}\n onRowUpdated={actualizaOtroImporteCajaMenor}\n onRowInserted={actualizaOtroImporteCajaMenor}\n onRowRemoved={actualizaOtroImporteCajaMenor}\n repaintChangesOnly={true}\n >\n <Editing\n mode=\"row\"\n allowUpdating={allowUpdating}\n allowAdding={allowUpdating}\n allowDeleting={allowUpdating}\n useIcons={true}\n />\n <Sorting mode=\"none\" />\n\n <Column dataField=\"Cantidad\" caption=\"Cantidad\" width={150} showEditorAlways={true} editorType=\"dxNumberBox\" editorOptions={cantidadEditorOptions} />\n <Column dataField=\"Denominacion\" caption=\"Denominación\" width={300} showEditorAlways={true} >\n <Lookup dataSource={denominacionBilleteUSD} valueExpr=\"value\" displayExpr=\"name\" />\n </Column>\n <Column dataField=\"Importe\" caption=\"Importe\" width={150} showEditorAlways={true} editorType=\"dxNumberBox\" editorOptions={importeGridEditorOptions} />\n\n <Toolbar>\n <Item name=\"addRowButton\" showText=\"inMenu\" />\n </Toolbar>\n\n <Summary>\n <GroupItem\n column=\"Importe\"\n summaryType=\"sum\"\n valueFormat=\"$,##0.##\"\n displayFormat=\"Total {0}\"\n showInGroupFooter={false} />\n <TotalItem\n column=\"Importe\"\n summaryType=\"sum\"\n valueFormat=\"$,##0.##\"\n displayFormat=\"Total {0}\"\n showInColumn=\"Importe\" />\n </Summary>\n </DataGrid>\n </GroupItem>\n\n <GroupItem caption=\"Monedas USD\" colSpan={4}>\n <DataGrid\n id=\"gridMonedaUSD\"\n ref={gridMonedaUSDRef}\n columnsAutoWidth={true}\n dataSource={checkListPayload.monedausd}\n showBorders={true}\n showColumnLines={true}\n showRowLines={true}\n rowAlternationEnabled={true}\n allowColumnResizing={true}\n columnResizingMode={\"widget\"}\n allowColumnReordering={false}\n onEditorPreparing={overrideOnValueChangedArqueo}\n onRowUpdating={actualizaImporteArqueo}\n onRowInserting={insertaImporteArqueo}\n onRowUpdated={actualizaOtroImporteCajaMenor}\n onRowInserted={actualizaOtroImporteCajaMenor}\n onRowRemoved={actualizaOtroImporteCajaMenor}\n repaintChangesOnly={true}\n >\n <Editing\n mode=\"row\"\n allowUpdating={allowUpdating}\n allowAdding={allowUpdating}\n allowDeleting={allowUpdating}\n useIcons={true}\n />\n <Sorting mode=\"none\" />\n\n <Column dataField=\"Cantidad\" caption=\"Cantidad\" width={150} showEditorAlways={true} editorType=\"dxNumberBox\" editorOptions={cantidadEditorOptions} />\n <Column dataField=\"Denominacion\" caption=\"Denominación\" width={300} showEditorAlways={true} >\n <Lookup dataSource={denominacionMonedaUSD} valueExpr=\"value\" displayExpr=\"name\" />\n </Column>\n <Column dataField=\"Importe\" caption=\"Importe\" width={150} showEditorAlways={true} editorType=\"dxNumberBox\" editorOptions={importeGridEditorOptions} />\n\n <Toolbar>\n <Item name=\"addRowButton\" showText=\"inMenu\" />\n </Toolbar>\n\n <Summary>\n <GroupItem\n column=\"Importe\"\n summaryType=\"sum\"\n valueFormat=\"$,##0.##\"\n displayFormat=\"Total {0}\"\n showInGroupFooter={false} />\n <TotalItem\n column=\"Importe\"\n summaryType=\"sum\"\n valueFormat=\"$,##0.##\"\n displayFormat=\"Total {0}\"\n showInColumn=\"Importe\" />\n </Summary>\n </DataGrid>\n </GroupItem>\n\n <GroupItem caption=\"Cheques\" colSpan={4}>\n <DataGrid\n id=\"gridCheque\"\n ref={gridChequeRef}\n columnsAutoWidth={true}\n dataSource={checkListPayload.cheque}\n showBorders={true}\n showColumnLines={true}\n showRowLines={true}\n rowAlternationEnabled={true}\n allowColumnResizing={true}\n columnResizingMode={\"widget\"}\n allowColumnReordering={false}\n onEditorPreparing={overrideOnValueChanged}\n onRowUpdated={actualizaOtroImporteCajaMenor}\n onRowInserted={actualizaOtroImporteCajaMenor}\n onRowRemoved={actualizaOtroImporteCajaMenor}\n repaintChangesOnly={true}\n >\n <Editing\n mode=\"row\"\n allowUpdating={allowUpdating}\n allowAdding={allowUpdating}\n allowDeleting={allowUpdating}\n useIcons={true}\n />\n <Sorting mode=\"none\" />\n\n <Column dataField=\"NumeroCheque\" caption=\"Número de Cheque\" width={200} showEditorAlways={true} editorOptions={uppercaseEditorOptions} />\n <Column dataField=\"Banco\" caption=\"Banco\" width={200} showEditorAlways={true} />\n <Column dataField=\"Importe\" caption=\"Importe\" width={150} showEditorAlways={true} editorType=\"dxNumberBox\" editorOptions={importeGridEditorOptions} />\n\n <Toolbar>\n <Item name=\"addRowButton\" showText=\"inMenu\" />\n </Toolbar>\n\n <Summary>\n <GroupItem\n column=\"Importe\"\n summaryType=\"sum\"\n valueFormat=\"$,##0.##\"\n displayFormat=\"Total {0}\"\n showInGroupFooter={false} />\n <TotalItem\n column=\"Importe\"\n summaryType=\"sum\"\n valueFormat=\"$,##0.##\"\n displayFormat=\"Total {0}\"\n showInColumn=\"Importe\" />\n </Summary>\n </DataGrid>\n </GroupItem>\n\n <GroupItem caption=\"Tarjetas Bancarias\" colSpan={4}>\n <DataGrid\n id=\"gridTarjeta\"\n ref={gridTarjetaRef}\n columnsAutoWidth={true}\n dataSource={checkListPayload.tarjeta}\n showBorders={true}\n showColumnLines={true}\n showRowLines={true}\n rowAlternationEnabled={true}\n allowColumnResizing={true}\n columnResizingMode={\"widget\"}\n allowColumnReordering={false}\n onEditorPreparing={overrideOnValueChanged}\n onRowUpdated={actualizaOtroImporteCajaMenor}\n onRowInserted={actualizaOtroImporteCajaMenor}\n onRowRemoved={actualizaOtroImporteCajaMenor}\n repaintChangesOnly={true}\n >\n <Editing\n mode=\"row\"\n allowUpdating={allowUpdating}\n allowAdding={allowUpdating}\n allowDeleting={allowUpdating}\n useIcons={true}\n />\n <Sorting mode=\"none\" />\n\n <Column dataField=\"Terminacion\" caption=\"Terminación\" width={200} showEditorAlways={true} />\n <Column dataField=\"Terminal\" caption=\"Terminal\" width={200} showEditorAlways={true} />\n <Column dataField=\"Importe\" caption=\"Importe\" width={150} showEditorAlways={true} editorType=\"dxNumberBox\" editorOptions={importeGridEditorOptions} />\n\n <Toolbar>\n <Item name=\"addRowButton\" showText=\"inMenu\" />\n </Toolbar>\n\n <Summary>\n <GroupItem\n column=\"Importe\"\n summaryType=\"sum\"\n valueFormat=\"$,##0.##\"\n displayFormat=\"Total {0}\"\n showInGroupFooter={false} />\n <TotalItem\n column=\"Importe\"\n summaryType=\"sum\"\n valueFormat=\"$,##0.##\"\n displayFormat=\"Total {0}\"\n showInColumn=\"Importe\" />\n </Summary>\n </DataGrid>\n </GroupItem>\n\n <GroupItem caption=\"Vales de Despensa\" colSpan={4}>\n <DataGrid\n id=\"gridValeDespensa\"\n ref={gridValeDespensaRef}\n columnsAutoWidth={true}\n dataSource={checkListPayload.valedespensa}\n showBorders={true}\n showColumnLines={true}\n showRowLines={true}\n rowAlternationEnabled={true}\n allowColumnResizing={true}\n columnResizingMode={\"widget\"}\n allowColumnReordering={false}\n onEditorPreparing={overrideOnValueChanged}\n onRowUpdated={actualizaOtroImporteCajaMenor}\n onRowInserted={actualizaOtroImporteCajaMenor}\n onRowRemoved={actualizaOtroImporteCajaMenor}\n repaintChangesOnly={true}\n >\n <Editing\n mode=\"row\"\n allowUpdating={allowUpdating}\n allowAdding={allowUpdating}\n allowDeleting={allowUpdating}\n useIcons={true}\n />\n <Sorting mode=\"none\" />\n\n <Column dataField=\"NumeroVale\" caption=\"Número de Vale\" width={200} showEditorAlways={true} editorOptions={uppercaseEditorOptions} />\n <Column dataField=\"Empresa\" caption=\"Empresa\" width={200} showEditorAlways={true} />\n <Column dataField=\"Importe\" caption=\"Importe\" width={150} showEditorAlways={true} editorType=\"dxNumberBox\" editorOptions={importeGridEditorOptions} />\n\n <Toolbar>\n <Item name=\"addRowButton\" showText=\"inMenu\" />\n </Toolbar>\n\n <Summary>\n <GroupItem\n column=\"Importe\"\n summaryType=\"sum\"\n valueFormat=\"$,##0.##\"\n displayFormat=\"Total {0}\"\n showInGroupFooter={false} />\n <TotalItem\n column=\"Importe\"\n summaryType=\"sum\"\n valueFormat=\"$,##0.##\"\n displayFormat=\"Total {0}\"\n showInColumn=\"Importe\" />\n </Summary>\n </DataGrid>\n </GroupItem>\n\n <GroupItem caption=\"Vales Saldo a Favor\" colSpan={4}>\n <DataGrid\n id=\"gridVale\"\n ref={gridValeRef}\n columnsAutoWidth={true}\n dataSource={checkListPayload.valesaldofavor}\n showBorders={true}\n showColumnLines={true}\n showRowLines={true}\n rowAlternationEnabled={true}\n allowColumnResizing={true}\n columnResizingMode={\"widget\"}\n allowColumnReordering={false}\n onEditorPreparing={overrideOnValueChanged}\n onRowUpdated={actualizaOtroImporteCajaMenor}\n onRowInserted={actualizaOtroImporteCajaMenor}\n onRowRemoved={actualizaOtroImporteCajaMenor}\n repaintChangesOnly={true}\n >\n <Editing\n mode=\"row\"\n allowUpdating={allowUpdating}\n allowAdding={allowUpdating}\n allowDeleting={allowUpdating}\n useIcons={true}\n />\n <Sorting mode=\"none\" />\n\n <Column dataField=\"Folio\" caption=\"Folio de Vale\" width={200} showEditorAlways={true} editorOptions={uppercaseEditorOptions} />\n <Column dataField=\"Importe\" caption=\"Importe\" width={150} showEditorAlways={true} editorType=\"dxNumberBox\" editorOptions={importeGridEditorOptions} />\n\n <Toolbar>\n <Item name=\"addRowButton\" showText=\"inMenu\" />\n </Toolbar>\n\n <Summary>\n <GroupItem\n column=\"Importe\"\n summaryType=\"sum\"\n valueFormat=\"$,##0.##\"\n displayFormat=\"Total {0}\"\n showInGroupFooter={false} />\n <TotalItem\n column=\"Importe\"\n summaryType=\"sum\"\n valueFormat=\"$,##0.##\"\n displayFormat=\"Total {0}\"\n showInColumn=\"Importe\" />\n </Summary>\n </DataGrid>\n </GroupItem>\n\n <GroupItem caption=\"Caratula resumen de auditoria.\" colSpan={4}>\n <Item dataField=\"ArqUltimoCorte\" editorOptions={uppercaseCaratulaAudEditorOptions} >\n <Label text={\"Ultimo corte\"} />\n </Item>\n <Item dataField=\"ArqPedidosPendientes\" editorOptions={uppercaseCaratulaAudEditorOptions} >\n <Label text={\"Pedidos pend. corte\"} />\n </Item>\n <Item dataField=\"ArqRecibosPendientes\" editorOptions={uppercaseCaratulaAudEditorOptions} >\n <Label text={\"Recibos pend. corte\"} />\n </Item>\n </GroupItem>\n\n <GroupItem caption=\"Cuadre de Caja Menor\" colSpan={4}>\n </GroupItem>\n\n <GroupItem caption=\"Sistema\" colSpan={2}>\n <Item dataField=\"ArqImportePedidos\" editorType=\"dxNumberBox\" editorOptions={importeEditorOptions} >\n <Label text={\"Importe Pedidos\"} />\n </Item>\n <Item dataField=\"ArqImportePagos\" editorType=\"dxNumberBox\" editorOptions={importeEditorOptions} >\n <Label text={\"Importe Pagos\"} />\n </Item>\n <Item cssClass=\"boldTextBgGray\" dataField=\"ArqValorTotalSistema\" editorType=\"dxNumberBox\" editorOptions={importeEditorOptions} >\n <Label text={\"Total\"} />\n </Item>\n </GroupItem>\n\n <GroupItem caption=\"Caja Menor\" colSpan={2}>\n <Item dataField=\"ArqEfectivoMXN\" editorType=\"dxNumberBox\" editorOptions={importeEditorOptions}>\n <Label text={\"Efectivo MXN\"} />\n </Item>\n <Item dataField=\"ArqEfectivoUSD\" editorType=\"dxNumberBox\" editorOptions={importeEditorOptions}>\n <Label text={\"Efectivo USD\"} />\n </Item>\n\n <Item dataField=\"ArqCheques\" editorType=\"dxNumberBox\" editorOptions={importeEditorOptions}>\n <Label text={\"Cheques\"} />\n </Item>\n <Item dataField=\"ArqTarjetaBancaria\" editorType=\"dxNumberBox\" editorOptions={importeEditorOptions}>\n <Label text={\"Tarjetas Banc.\"} />\n </Item>\n <Item dataField=\"ArqVales\" editorType=\"dxNumberBox\" editorOptions={importeEditorOptions}>\n <Label text={\"Vales\"} />\n </Item>\n <Item cssClass=\"boldTextBgGray\" dataField=\"ArqValorTotalCajaMenor\" editorType=\"dxNumberBox\" editorOptions={importeEditorOptions}>\n <Label text={\"Total\"} />\n </Item>\n </GroupItem>\n\n <GroupItem caption=\"Diferencia Caja Menor\" colSpan={2}>\n <GroupItem caption=\"\">\n <Item dataField=\"ArqDiferencia\" editorType=\"dxCheckBox\">\n <Label text={\"Diferencia\"} />\n </Item>\n </GroupItem>\n <GroupItem caption=\"\">\n <Item dataField=\"ArqFaltante\" editorType=\"dxNumberBox\" editorOptions={arqDiferenciaEditorOptions}>\n <Label text={\"Faltante\"} />\n </Item>\n </GroupItem>\n <GroupItem caption=\"\">\n <Item dataField=\"ArqSobrante\" editorType=\"dxNumberBox\" editorOptions={arqDiferenciaEditorOptions}>\n <Label text={\"Sobrante\"} />\n </Item>\n </GroupItem>\n </GroupItem>\n\n <GroupItem caption=\"Dinero en Efectivo\" colSpan={2}>\n <Item dataField=\"ArqDineroPresencia\" >\n <Label text={\"Contado con\"} />\n </Item>\n <Item dataField=\"ArqDineroDevuelto\" editorType=\"dxDateBox\" editorOptions={arqDineroDevueltoEditorOptions} >\n <Label text={\"Devuelto\"} />\n </Item>\n </GroupItem>\n\n <GroupItem caption=\"Resolución y Comentarios\" colSpan={4}>\n <Item dataField=\"ArqAudResolucion\" editorType=\"dxTextArea\" editorOptions={resultadoEditorOptions}>\n <Label text={\"Resolución\"} />\n </Item>\n </GroupItem>\n </Form>\n </Tab>\n <Tab title=\"Arqueo de Caja Gerente\" >\n <Form\n id=\"datosArqueoGerente\"\n ref={datosArqueoGerenteRef}\n labelMode={'outside'}\n formData={checkListPayload.header}\n readOnly={!allowUpdating}\n showColonAfterLabel={false}\n labelLocation={'top'}\n onFieldDataChanged={onFieldDatosArqueoGerenteChanged}\n colCount={4}\n >\n <GroupItem caption=\"Marca / Modelo Celular\" colSpan={4}>\n <Item dataField=\"GteMarcaCelular\" editorOptions={marcaEditorOptions} >\n <Label text={\"Marca\"} />\n </Item>\n <Item dataField=\"GteModeloCelular\" editorOptions={modeloEditorOptions} >\n <Label text={\"Modelo\"} />\n </Item>\n <Item dataField=\"GteNumeroCelular\" editorOptions={numeroCelularEditorOptions} >\n <Label text={\"Número Celular\"} />\n </Item>\n </GroupItem>\n <GroupItem caption=\"Celular / Radio empresarial\" colSpan={4}>\n <DataGrid\n id=\"gridCelularGerente\"\n columnsAutoWidth={true}\n dataSource={checkListPayload.celulargerente}\n showBorders={true}\n showColumnLines={true}\n showRowLines={true}\n rowAlternationEnabled={false}\n allowColumnResizing={true}\n columnResizingMode={\"widget\"}\n allowColumnReordering={false}\n onEditorPreparing={overrideOnValueChanged}\n repaintChangesOnly={true}\n >\n <Paging defaultPageSize={100} />\n <Editing\n mode=\"cell\"\n allowUpdating={allowUpdating}\n />\n <Grouping autoExpandAll={autoExpandAllChecklist} />\n\n <Sorting mode=\"none\" />\n <Column dataField=\"Concepto\" dataType=\"string\" allowEditing={false} width={450} />\n <Column dataField=\"Evaluacion\" caption=\"Evaluacion\" width={140} showEditorAlways={true}>\n <Lookup dataSource={evaluacion} valueExpr=\"value\" displayExpr=\"name\" />\n </Column>\n <Column dataField=\"Comentarios\" width={600} dataType=\"string\" showEditorAlways={true} />\n </DataGrid>\n </GroupItem>\n <GroupItem caption=\"Gastos Administrativos\" colSpan={4}>\n <DataGrid\n id=\"gridGasAdminGerente\"\n ref={gridGasAdminGerenteRef}\n columnsAutoWidth={true}\n dataSource={checkListPayload.gasadmingerente}\n showBorders={true}\n showColumnLines={true}\n showRowLines={true}\n rowAlternationEnabled={true}\n allowColumnResizing={true}\n columnResizingMode={\"widget\"}\n allowColumnReordering={false}\n onEditorPreparing={overrideOnValueChanged}\n onRowUpdated={actualizaGastosGteCajaChica}\n onRowInserted={actualizaGastosGteCajaChica}\n onRowRemoved={actualizaGastosGteCajaChica}\n repaintChangesOnly={true}\n >\n <Editing\n mode=\"row\"\n allowUpdating={allowUpdating}\n allowAdding={allowUpdating}\n allowDeleting={allowUpdating}\n useIcons={true}\n />\n <Sorting mode=\"none\" />\n\n <Column dataField=\"Fecha\" caption=\"Fecha\" width={150} dataType=\"date\" showEditorAlways={true} />\n <Column dataField=\"TipoDocumento\" caption=\"Tipo de Documento\" width={150} showEditorAlways={true} />\n <Column dataField=\"Numero\" caption=\"Numero\" width={150} showEditorAlways={true} editorOptions={uppercaseEditorOptions} />\n <Column dataField=\"Concepto\" caption=\"Concepto\" width={150} showEditorAlways={true} />\n <Column dataField=\"Importe\" caption=\"Importe\" width={150} showEditorAlways={true} editorType=\"dxNumberBox\" editorOptions={importeGridEditorOptions} />\n <Column dataField=\"MetodoPago\" caption=\"Método de Pago\" width={300} showEditorAlways={true} />\n\n <Toolbar>\n <Item name=\"addRowButton\" showText=\"inMenu\" />\n </Toolbar>\n <Summary>\n <GroupItem\n column=\"Importe\"\n summaryType=\"sum\"\n valueFormat=\"$,##0.##\"\n displayFormat=\"Total {0}\"\n showInGroupFooter={false} />\n <TotalItem\n column=\"Importe\"\n summaryType=\"sum\"\n valueFormat=\"$,##0.##\"\n displayFormat=\"Total {0}\"\n showInColumn=\"Importe\" />\n </Summary>\n </DataGrid>\n </GroupItem>\n <GroupItem caption=\"Gastos de Gasolina\" colSpan={4}>\n <DataGrid\n id=\"gridGasolinaGerente\"\n ref={gridGasolinaGerenteRef}\n columnsAutoWidth={true}\n dataSource={checkListPayload.gasolinagerente}\n showBorders={true}\n showColumnLines={true}\n showRowLines={true}\n rowAlternationEnabled={true}\n allowColumnResizing={true}\n columnResizingMode={\"widget\"}\n allowColumnReordering={false}\n onEditorPreparing={overrideOnValueChanged}\n onRowUpdated={actualizaGastosGteCajaChica}\n onRowInserted={actualizaGastosGteCajaChica}\n onRowRemoved={actualizaGastosGteCajaChica}\n repaintChangesOnly={true}\n >\n <Editing\n mode=\"row\"\n allowUpdating={allowUpdating}\n allowAdding={allowUpdating}\n allowDeleting={allowUpdating}\n useIcons={true}\n />\n <Sorting mode=\"none\" />\n\n <Column dataField=\"Fecha\" caption=\"Fecha\" width={150} dataType=\"date\" showEditorAlways={true} />\n <Column dataField=\"Numero\" caption=\"Numero Ticket\" width={150} showEditorAlways={true} editorOptions={uppercaseEditorOptions} />\n <Column dataField=\"Factura\" caption=\"Factura\" width={150} showEditorAlways={true} editorOptions={uppercaseEditorOptions} />\n <Column dataField=\"UnidadSurtida\" caption=\"Unidad Surtida\" width={150} showEditorAlways={true} />\n <Column dataField=\"Importe\" caption=\"Importe\" width={150} showEditorAlways={true} editorType=\"dxNumberBox\" editorOptions={importeGridEditorOptions} />\n <Column dataField=\"MetodoPago\" caption=\"Método de Pago\" width={300} showEditorAlways={true} />\n\n <Toolbar>\n <Item name=\"addRowButton\" showText=\"inMenu\" />\n </Toolbar>\n <Summary>\n <GroupItem\n column=\"Importe\"\n summaryType=\"sum\"\n valueFormat=\"$,##0.##\"\n displayFormat=\"Total {0}\"\n showInGroupFooter={false} />\n <TotalItem\n column=\"Importe\"\n summaryType=\"sum\"\n valueFormat=\"$,##0.##\"\n displayFormat=\"Total {0}\"\n showInColumn=\"Importe\" />\n </Summary>\n </DataGrid>\n </GroupItem>\n\n <GroupItem caption=\"Cuadre de Caja Menor\" colSpan={4}>\n </GroupItem>\n\n <GroupItem caption=\"Billetes MXN\" colSpan={4}>\n <DataGrid\n id=\"gridBilleteMXN\"\n ref={gridBilleteMXNGerenteRef}\n columnsAutoWidth={true}\n dataSource={checkListPayload.billetemxngerente}\n showBorders={true}\n showColumnLines={true}\n showRowLines={true}\n rowAlternationEnabled={true}\n allowColumnResizing={true}\n columnResizingMode={\"widget\"}\n allowColumnReordering={false}\n onEditorPreparing={overrideOnValueChangedArqueo}\n onRowUpdating={actualizaImporteArqueo}\n onRowInserting={insertaImporteArqueo}\n onRowUpdated={actualizaDictamenGteCajaChica}\n onRowInserted={actualizaDictamenGteCajaChica}\n onRowRemoved={actualizaDictamenGteCajaChica}\n repaintChangesOnly={true}\n >\n <Editing\n mode=\"row\"\n allowUpdating={allowUpdating}\n allowAdding={allowUpdating}\n allowDeleting={allowUpdating}\n useIcons={true}\n />\n <Sorting mode=\"none\" />\n\n <Column dataField=\"Cantidad\" caption=\"Cantidad\" width={150} showEditorAlways={true} editorType=\"dxNumberBox\" editorOptions={cantidadEditorOptions} />\n <Column dataField=\"Denominacion\" caption=\"Denominación\" width={300} showEditorAlways={true} >\n <Lookup dataSource={denominacionBilleteMXN} valueExpr=\"value\" displayExpr=\"name\" />\n </Column>\n <Column dataField=\"Importe\" caption=\"Importe\" width={150} showEditorAlways={true} editorType=\"dxNumberBox\" editorOptions={importeEditorOptions} />\n\n <Toolbar>\n <Item name=\"addRowButton\" showText=\"inMenu\" />\n </Toolbar>\n <Summary>\n <GroupItem\n column=\"Importe\"\n summaryType=\"sum\"\n valueFormat=\"$,##0.##\"\n displayFormat=\"Total {0}\"\n showInGroupFooter={false} />\n <TotalItem\n column=\"Importe\"\n summaryType=\"sum\"\n valueFormat=\"$,##0.##\"\n displayFormat=\"Total {0}\"\n showInColumn=\"Importe\" />\n </Summary>\n </DataGrid>\n </GroupItem>\n\n <GroupItem caption=\"Monedas MXN\" colSpan={4}>\n <DataGrid\n id=\"gridMonedaMXN\"\n ref={gridMonedaMXNGerenteRef}\n columnsAutoWidth={true}\n dataSource={checkListPayload.monedamxngerente}\n showBorders={true}\n showColumnLines={true}\n showRowLines={true}\n rowAlternationEnabled={true}\n allowColumnResizing={true}\n columnResizingMode={\"widget\"}\n allowColumnReordering={false}\n onEditorPreparing={overrideOnValueChangedArqueo}\n onRowUpdating={actualizaImporteArqueo}\n onRowInserting={insertaImporteArqueo}\n onRowUpdated={actualizaDictamenGteCajaChica}\n onRowInserted={actualizaDictamenGteCajaChica}\n onRowRemoved={actualizaDictamenGteCajaChica}\n repaintChangesOnly={true}\n >\n <Editing\n mode=\"row\"\n allowUpdating={allowUpdating}\n allowAdding={allowUpdating}\n allowDeleting={allowUpdating}\n useIcons={true}\n />\n <Sorting mode=\"none\" />\n\n <Column dataField=\"Cantidad\" caption=\"Cantidad\" width={150} showEditorAlways={true} editorType=\"dxNumberBox\" editorOptions={cantidadEditorOptions} />\n <Column dataField=\"Denominacion\" caption=\"Denominación\" width={300} showEditorAlways={true} >\n <Lookup dataSource={denominacionMonedaMXN} valueExpr=\"value\" displayExpr=\"name\" />\n </Column>\n <Column dataField=\"Importe\" caption=\"Importe\" width={150} showEditorAlways={true} editorType=\"dxNumberBox\" editorOptions={importeEditorOptions} />\n\n <Toolbar>\n <Item name=\"addRowButton\" showText=\"inMenu\" />\n </Toolbar>\n\n <Summary>\n <GroupItem\n column=\"Importe\"\n summaryType=\"sum\"\n valueFormat=\"$,##0.##\"\n displayFormat=\"Total {0}\"\n showInGroupFooter={false} />\n <TotalItem\n column=\"Importe\"\n summaryType=\"sum\"\n valueFormat=\"$,##0.##\"\n displayFormat=\"Total {0}\"\n showInColumn=\"Importe\" />\n </Summary>\n </DataGrid>\n </GroupItem>\n\n <GroupItem caption=\"Tarjetas Bancarias\" colSpan={4}>\n <DataGrid\n id=\"gridTarjetaBancGerente\"\n ref={gridTarjetaBancGerenteRef}\n columnsAutoWidth={true}\n dataSource={checkListPayload.tarjetabancgerente}\n showBorders={true}\n showColumnLines={true}\n showRowLines={true}\n rowAlternationEnabled={true}\n allowColumnResizing={true}\n columnResizingMode={\"widget\"}\n allowColumnReordering={false}\n onEditorPreparing={overrideOnValueChanged}\n onRowUpdated={actualizaDictamenGteCajaChica}\n onRowInserted={actualizaDictamenGteCajaChica}\n onRowRemoved={actualizaDictamenGteCajaChica}\n repaintChangesOnly={true}\n >\n <Editing\n mode=\"row\"\n allowUpdating={allowUpdating}\n allowAdding={allowUpdating}\n allowDeleting={allowUpdating}\n useIcons={true}\n />\n <Sorting mode=\"none\" />\n\n <Column dataField=\"Banco\" caption=\"Banco\" width={200} showEditorAlways={true} />\n <Column dataField=\"FechaVencimiento\" caption=\"Vencimiento\" width={200} showEditorAlways={true} />\n <Column dataField=\"NumeroTarjeta\" caption=\"Número Tarjeta\" width={200} showEditorAlways={true} />\n <Column dataField=\"Importe\" caption=\"Importe\" width={150} showEditorAlways={true} editorType=\"dxNumberBox\" editorOptions={importeGridEditorOptions} />\n\n <Toolbar>\n <Item name=\"addRowButton\" showText=\"inMenu\" />\n </Toolbar>\n\n <Summary>\n <GroupItem\n column=\"Importe\"\n summaryType=\"sum\"\n valueFormat=\"$,##0.##\"\n displayFormat=\"Total {0}\"\n showInGroupFooter={false} />\n <TotalItem\n column=\"Importe\"\n summaryType=\"sum\"\n valueFormat=\"$,##0.##\"\n displayFormat=\"Total {0}\"\n showInColumn=\"Importe\" />\n </Summary>\n </DataGrid>\n </GroupItem>\n\n <GroupItem caption=\"Vales de Gasolina\" colSpan={4}>\n <DataGrid\n id=\"gridValesGasGerente\"\n ref={gridValesGasGerenteRef}\n columnsAutoWidth={true}\n dataSource={checkListPayload.valegasgerente}\n showBorders={true}\n showColumnLines={true}\n showRowLines={true}\n rowAlternationEnabled={true}\n allowColumnResizing={true}\n columnResizingMode={\"widget\"}\n allowColumnReordering={false}\n onEditorPreparing={overrideOnValueChanged}\n onRowUpdated={actualizaDictamenGteCajaChica}\n onRowInserted={actualizaDictamenGteCajaChica}\n onRowRemoved={actualizaDictamenGteCajaChica}\n repaintChangesOnly={true}\n >\n <Editing\n mode=\"row\"\n allowUpdating={allowUpdating}\n allowAdding={allowUpdating}\n allowDeleting={allowUpdating}\n useIcons={true}\n />\n <Sorting mode=\"none\" />\n\n <Column dataField=\"NumeroTarjeta\" caption=\"Número de Tarjeta\" width={200} showEditorAlways={true} />\n <Column dataField=\"UnidadAsignada\" caption=\"Unidad Asignada\" width={200} showEditorAlways={true} />\n <Column dataField=\"Importe\" caption=\"Importe\" width={150} showEditorAlways={true} editorType=\"dxNumberBox\" editorOptions={importeGridEditorOptions} />\n\n <Toolbar>\n <Item name=\"addRowButton\" showText=\"inMenu\" />\n </Toolbar>\n\n <Summary>\n <GroupItem\n column=\"Importe\"\n summaryType=\"sum\"\n valueFormat=\"$,##0.##\"\n displayFormat=\"Total {0}\"\n showInGroupFooter={false} />\n <TotalItem\n column=\"Importe\"\n summaryType=\"sum\"\n valueFormat=\"$,##0.##\"\n displayFormat=\"Total {0}\"\n showInColumn=\"Importe\" />\n </Summary>\n </DataGrid>\n </GroupItem>\n\n <GroupItem caption=\"Caratula resumen de Auditoria\" colSpan={4}>\n <GroupItem caption=\"\">\n <Item dataField=\"ArqGteReposicion\" editorType=\"dxCheckBox\" >\n <Label text={\"Reposición\"} />\n </Item>\n </GroupItem>\n <GroupItem caption=\"\">\n <Item dataField=\"ArqGteReposicionMonto\" editorType=\"dxNumberBox\" editorOptions={arqGteReposicionMontoEditorOptions}>\n <Label text={\"Monto\"} />\n </Item>\n </GroupItem>\n </GroupItem>\n\n <GroupItem caption=\"Cuadre de Caja Chica\" colSpan={4}>\n </GroupItem>\n\n <GroupItem caption=\"Gastos\" colSpan={2}>\n <Item dataField=\"ArqGteGastosAdmin\" editorType=\"dxNumberBox\" editorOptions={importeEditorOptions} >\n <Label text={\"Administrativo\"} />\n </Item>\n <Item dataField=\"ArqGteGasolina\" editorType=\"dxNumberBox\" editorOptions={importeEditorOptions} >\n <Label text={\"Gasolina\"} />\n </Item>\n <Item cssClass=\"boldTextBgGray\" dataField=\"ArqGteGastosTotal\" editorType=\"dxNumberBox\" editorOptions={importeEditorOptions} >\n <Label text={\"Total Gastos\"} />\n </Item>\n </GroupItem>\n\n <GroupItem caption=\"Dictamen de Auditoría\" colSpan={2}>\n <Item dataField=\"ArqGteEfectivoMXN\" editorType=\"dxNumberBox\" editorOptions={importeEditorOptions} >\n <Label text={\"Efectivo MXN\"} />\n </Item>\n <Item dataField=\"ArqGteTarjetaBancaria\" editorType=\"dxNumberBox\" editorOptions={importeEditorOptions} >\n <Label text={\"Tarjetas Banc.\"} />\n </Item>\n <Item dataField=\"ArqGteValeGasolina\" editorType=\"dxNumberBox\" editorOptions={importeEditorOptions} >\n <Label text={\"Vales Gasolina\"} />\n </Item>\n <Item cssClass=\"boldTextBgGray\" dataField=\"ArqGteValorTotalCaja\" editorType=\"dxNumberBox\" editorOptions={importeEditorOptions} >\n <Label text={\"Total\"} />\n </Item>\n </GroupItem>\n\n <GroupItem caption=\"Diferencia Caja Chica\" colSpan={2}>\n <GroupItem caption=\"\">\n <Item dataField=\"ArqGteDiferencia\" editorType=\"dxCheckBox\">\n <Label text={\"Diferencia\"} />\n </Item>\n </GroupItem>\n <GroupItem caption=\"\">\n <Item dataField=\"ArqGteFaltante\" editorType=\"dxNumberBox\" editorOptions={arqGteFaltanteEditorOptions}>\n <Label text={\"Faltante\"} />\n </Item>\n </GroupItem>\n <GroupItem caption=\"\">\n <Item dataField=\"ArqGteSobrante\" editorType=\"dxNumberBox\" editorOptions={arqGteFaltanteEditorOptions}>\n <Label text={\"Sobrante\"} />\n </Item>\n </GroupItem>\n </GroupItem>\n <GroupItem caption=\"Dinero en Efectivo\" colSpan={2}>\n <Item dataField=\"ArqGteDineroPresencia\" >\n <Label text={\"Contado con\"} />\n </Item>\n </GroupItem>\n\n <GroupItem caption=\"Resolución y Comentarios\" colSpan={4}>\n <Item dataField=\"ArqGteResolucion\" editorType=\"dxTextArea\" editorOptions={resultadoEditorOptions}>\n <Label text={\"Resolución\"} />\n </Item>\n </GroupItem>\n </Form>\n </Tab>\n <Tab title=\"Adjuntar Evidencia\" >\n <div className=\"widget-container\">\n <FileUploader\n multiple={true}\n accept=\"*\"\n uploadMode=\"useButtons\"\n chunkSize={20000000}\n maxFileSize={20000000}\n uploadChunk={uploadChunk}\n disabled={!allowUpdating}\n />\n </div>\n <div id=\"wrapper\" className=\"show-widget\" >\n <div id=\"widget-area\">\n <FileManager id=\"attachmentManager\" fileSystemProvider={attachments} onItemDeleting={onAttachmentDeleting} onItemDownloading={onItemDownloading} onSelectedFileOpened={onAttachmentOpen}>\n <Permissions\n create={false}\n copy={false}\n move={false}\n delete={allowUpdating}\n rename={false}\n upload={false}\n download={true}\n >\n </Permissions>\n </FileManager>\n </div>\n </div>\n </Tab>\n </TabbedItem>\n </Form>\n </div>\n </div>\n ) :\n (<div></div>)\n }\n </div>\n );\n }}\n />\n </div>\n </div>\n );\n}","import React, { useState, useEffect, useRef } from 'react';\n\n// LoadPanel\nimport { LoadPanel } from 'devextreme-react/load-panel';\n\n// Toast\nimport { Toast } from 'devextreme-react/toast';\n\n// maplibre\nimport { createMap } from \"maplibre-gl-js-amplify\";\nimport maplibregl from \"maplibre-gl\";\nimport \"maplibre-gl/dist/maplibre-gl.css\";\nimport \"maplibre-gl-js-amplify/dist/public/amplify-map.css\";\nimport * as turf from \"@turf/turf\";\n\n// Grid\nimport DataGrid, {\n Column, FilterRow, HeaderFilter, FilterPanel, FilterBuilderPopup,\n GroupPanel, Grouping, SearchPanel, Sorting, Editing, Lookup, Toolbar, Item, RequiredRule,\n Scrolling, Pager, Paging, Summary, TotalItem, StateStoring, ColumnChooser, Format, Selection,\n Export, ColumnChooserSearch, ColumnChooserSelection\n} from 'devextreme-react/data-grid';\n\n//CheckBox\nimport CheckBox from 'devextreme-react/check-box';\n\n//Form\nimport Form, { GroupItem, Label, TabbedItem, TabPanelOptions, Tab } from 'devextreme-react/form';\n\nimport { Auth, API, Storage } from 'aws-amplify';\n\n// Ruteador\nimport { Route, Link, useHistory } from \"react-router-dom\";\n\n// Iconos\nimport { FontAwesomeIcon } from \"@fortawesome/react-fontawesome\";\nimport { faPencilAlt } from \"@fortawesome/pro-solid-svg-icons\";\nimport { faArrowRotateLeft } from \"@fortawesome/pro-solid-svg-icons\";\nimport { faSave } from \"@fortawesome/pro-solid-svg-icons\";\nimport { faClipboardCheck } from \"@fortawesome/pro-solid-svg-icons\";\nimport { faList } from \"@fortawesome/pro-duotone-svg-icons\";\nimport { faTruckMoving } from \"@fortawesome/pro-duotone-svg-icons\";\nimport { faWindowClose } from \"@fortawesome/pro-solid-svg-icons\";\nimport { faStopwatch } from \"@fortawesome/pro-solid-svg-icons\";\nimport { faFilePdf } from \"@fortawesome/pro-solid-svg-icons\";\nimport { faArrowsRotate } from \"@fortawesome/pro-solid-svg-icons\";\nimport { faFileAlt } from \"@fortawesome/pro-solid-svg-icons\";\nimport { faTrash } from \"@fortawesome/pro-solid-svg-icons\";\n\n\n//FileUploader\nimport FileUploader from 'devextreme-react/file-uploader';\n\n//FileManager\nimport FileManager, { Permissions } from 'devextreme-react/file-manager';\n\nimport './ChecklistVeh.css';\n\n//Text area\nimport 'devextreme-react/text-area';\n\nimport 'devextreme/data/odata/store';\nimport CustomStore from 'devextreme/data/custom_store';\n\nimport DataSource from 'devextreme/data/data_source';\n\nimport '../ListStyle.css';\n\nimport dxDateBox from \"devextreme/ui/date_box\";\n\nimport dxNumberBox from \"devextreme/ui/number_box\";\n\nimport TransactionStatus from \"../TransactionStatus/TransactionStatus.js\";\n\nimport { Workbook } from 'exceljs';\nimport { saveAs } from 'file-saver';\nimport { exportDataGrid } from 'devextreme/excel_exporter'\n\ndxDateBox.defaultOptions({\n options: {\n dateSerializationFormat: \"yyyy-MM-dd\"\n }\n});\n\ndxNumberBox.defaultOptions({\n options: {\n step: 0\n }\n});\n\nfunction isNotEmpty(value) {\n return value !== undefined && value !== null && value !== '';\n}\n\nexport default function Checklist(props) {\n const history = useHistory();\n\n var mapRef = useRef(null); // Reference to the map DOM element\n\n const [isDetail, setIsDetail] = useState(false);\n const [id, setId] = useState();\n const [checkListPayload, setCheckListPayload] = useState({\n header: {},\n vehiculonissan: {},\n celvehiculonissan: []\n });\n\n const [motivoCancelacion, setMotivoCancelacion] = useState([]);\n\n const [attachments, setAttachments] = useState([]);\n\n const [allowNew, setAllowNew] = useState(false);\n const [allowUpdating, setAllowUpdating] = useState(false);\n const [activateButton, setActivateButton] = useState(false);\n const [activateVoidButton, setActivateVoidButton] = useState(false);\n const [activateStopwatch, setActivateStopwatch] = useState(false);\n const [activateSaveButton, setActivateSaveButton] = useState(false);\n const [activateDeleteButton, setActivateDeleteButton] = useState(false);\n\n const [sucursales, setSucursales] = useState([]);\n const [personales, setPersonales] = useState([]);\n const [vehiculos, setVehiculos] = useState([]);\n\n const [latitude, setLatitude] = useState('');\n const [longitude, setLongitude] = useState('');\n const [autoExpandAll, setAutoExpandAll] = useState(true);\n\n //Controles para los campos tipo Checkbox\n const [conLicenciaConducir, setConLicenciaConducir] = useState(true);\n const [conTarjetaGasolina, setConTarjetaGasolina] = useState(true);\n const [conPolizaSeguro, setConPolizaSeguro] = useState(true);\n const [conPlacas, setConPlacas] = useState(true);\n\n //Controles para expander los grupos del grid de checklist\n const [autoExpandAllChecklist, setAutoExpandAllChecklist] = useState(true);\n\n // setValue para el control tab\n const [value, setValue] = React.useState(0);\n\n //Ref para el form\n const [formDatosGeneralesRef, setFormDatosGeneralesRef] = useState(React.createRef());\n\n // loadPanelPosition para el control FileManager\n const loadPanelPosition = { of: '#file-manager' };\n\n const [visibleLoadPanel, setVisibleLoadPanel] = useState(false);\n\n const [visibleToast, setVisibleToast] = useState(false);\n const [messageToast, setMessageToast] = useState('');\n const [typeToast, setTypeToast] = useState('success');\n\n const handleChange = (event, newValue) => {\n setValue(newValue);\n };\n\n const filterBuilderPopupPosition = {\n of: window,\n at: 'top',\n my: 'top',\n offset: { y: 10 },\n };\n\n const evaluacion = [\n { name: '', value: '' },\n { name: '1 = Deficiente', value: '1 = Deficiente' },\n { name: '2 = Malo', value: '2 = Malo' },\n { name: '3 = Regular', value: '3 = Regular' },\n { name: '4 = Bueno', value: '4 = Bueno' },\n { name: '5 = Excelente', value: '5 = Excelente' },\n { name: 'N.A. = No aplica', value: 'N.A. = No aplica' }\n ]\n\n const allowedPageSizes = [5, 10, 15, 20, 'all'];\n\n const exportFormats = ['xlsx'];\n\n function getOrderDay(rowData) {\n return (new Date(rowData.OrderDate)).getDay();\n }\n\n const filterBuilder = {\n customOperations: [{\n name: 'weekends',\n caption: 'Weekends',\n dataTypes: ['date'],\n icon: 'check',\n hasValue: false,\n calculateFilterExpression: () => [[getOrderDay, '=', 0], 'or', [getOrderDay, '=', 6]],\n }],\n allowHierarchicalFields: true,\n };\n\n const filterValue = [['Estatus', '=', 'Por Confirmar']];\n\n //Ref para el grid Tablero de Control\n const [gridTableroRef, setGridTableroRef] = useState(React.createRef());\n\n async function getCheckListRecords(sqlFilter) {\n try {\n var personal = props.personal;\n var checklistAccess = props.checklistAccess;\n\n if (!checklistAccess || checklistAccess === 'undefined')\n checklistAccess = '';\n\n let apiName = 'AdminSC';\n let path = '/procesachecklist';\n\n let myInit = {\n headers: {\n 'Content-Type': 'application/json',\n Authorization: `${(await Auth.currentSession()).getAccessToken().getJwtToken()}`\n },\n queryStringParameters: {\n personal: personal,\n checklistAccess: checklistAccess,\n action: 'list',\n mov: 'Check List Veh',\n sqlFilter: sqlFilter,\n username: JSON.parse(JSON.stringify(await Auth.currentAuthenticatedUser())).username\n }\n }\n\n var checkListGet = await API.get(apiName, path, myInit);\n }\n catch (e) {\n if (e === 'No current user') {\n history.push('/');\n\n window.location.reload();\n }\n }\n\n return checkListGet;\n }\n\n const store = new CustomStore({\n key: 'ID',\n load(loadOptions) {\n let sqlFilter = '(';\n [\n 'filter'\n ].forEach((i) => {\n if (i in loadOptions && isNotEmpty(loadOptions[i])) {\n var filters = loadOptions[i];\n\n var filtersLength = filters.length;\n\n for (var i = 0; i <= filtersLength; i++) {\n var singleFilter = filters[i];\n var singleFilterType = typeof singleFilter;\n var singleFilterIsArray = Array.isArray(singleFilter);\n var singleFilterIsDate = singleFilter instanceof Date;\n\n if (singleFilter === 'NULL') {\n singleFilter = '0';\n }\n\n if (singleFilterType.toString() === 'object' && singleFilterIsArray) {\n sqlFilter += '(';\n\n var subFiltersLength = singleFilter.length;\n\n for (var i2 = 0; i2 <= subFiltersLength; i2++) {\n var singleSubFilter = singleFilter[i2];\n var singleSubFilterType = typeof singleSubFilter;\n var singleSubFilterIsArray = Array.isArray(singleSubFilter);\n var singleSubFilterIsDate = singleSubFilter instanceof Date\n\n if (singleSubFilter === 'NULL') {\n singleSubFilter = '0';\n }\n\n if (singleSubFilterType.toString() === 'object' && singleSubFilterIsArray) {\n sqlFilter += '(';\n\n var subSubFiltersLength = singleSubFilter.length;\n\n for (var i3 = 0; i3 <= subSubFiltersLength; i3++) {\n var singleSubSubFilter = singleSubFilter[i3];\n var singleSubSubFilterType = typeof singleSubSubFilter;\n var singleSubSubFilterIsArray = Array.isArray(singleSubSubFilter);\n var singleSubSubFilterIsDate = singleSubSubFilter instanceof Date\n\n if (singleSubSubFilter === 'NULL') {\n singleSubSubFilter = '0';\n }\n\n if (singleSubSubFilterType.toString() === 'object' && singleSubSubFilterIsArray) {\n sqlFilter += '(';\n\n var subSubSubFiltersLength = singleSubSubFilter.length;\n\n for (var i4 = 0; i4 <= subSubSubFiltersLength; i4++) {\n var singleSubSubSubFilter = singleSubSubFilter[i4];\n var singleSubSubSubFilterType = typeof singleSubSubSubFilter;\n var singleSubSubSubFilterIsArray = Array.isArray(singleSubSubSubFilter);\n var singleSubSubSubFilterIsDate = singleSubSubSubFilter instanceof Date\n\n if (singleSubSubSubFilter === 'NULL') {\n singleSubSubSubFilter = '0';\n }\n\n if (singleSubSubSubFilterType.toString() === 'object' && singleSubSubSubFilterIsArray) {\n sqlFilter += '(';\n\n var subSubSubSubFiltersLength = singleSubSubSubFilter.length;\n\n for (var i5 = 0; i5 <= subSubSubSubFiltersLength; i5++) {\n var singleSubSubSubSubFilter = singleSubSubSubFilter[i5];\n var singleSubSubSubSubFilterType = typeof singleSubSubSubSubFilter;\n var singleSubSubSubSubFilterIsArray = Array.isArray(singleSubSubSubSubFilter);\n var singleSubSubSubSubFilterIsDate = singleSubSubSubSubFilter instanceof Date\n\n if (singleSubSubSubSubFilter === 'NULL') {\n singleSubSubSubSubFilter = '0';\n }\n\n if (singleSubSubSubSubFilterType.toString() === 'string') {\n if (singleSubSubSubSubFilter === 'contains') {\n filters[i][i2][i3][i4][i5] = 'LIKE';\n singleSubSubSubSubFilter = 'LIKE';\n\n filters[i][i2][i3][i4][i5 + 1] = '\\'%' + filters[i][i2][i3][i4][i5 + 1] + '%\\'';\n }\n else if (singleSubSubSubSubFilter === 'notcontains') {\n filters[i][i2][i3][i4][i5] = 'NOT LIKE';\n singleSubSubSubSubFilter = 'NOT LIKE';\n\n filters[i][i2][i3][i4][i5 + 1] = '\\'%' + filters[i][i2][i3][i4][i5 + 1] + '%\\'';\n }\n else if (singleSubSubSubSubFilter === 'startswith') {\n filters[i][i2][i3][i4][i5] = 'LIKE';\n singleSubSubSubSubFilter = 'LIKE';\n\n filters[i][i2][i3][i4][i5 + 1] = '\\'' + filters[i][i2][i3][i4][i5 + 1] + '%\\'';\n }\n else if (singleSubSubSubSubFilter === 'endswith') {\n filters[i][i2][i3][i4][i5] = 'LIKE';\n singleSubSubSubSubFilter = 'LIKE';\n\n filters[i][i2][i3][i4][i5 + 1] = '\\'%' + filters[i][i2][i3][i4][i5 + 1] + '\\'';\n }\n else if (singleSubSubSubSubFilter === '=' || singleSubSubSubSubFilter === '<>' || singleSubSubSubSubFilter === '>' || singleSubSubSubSubFilter === '>=' || singleSubSubSubSubFilter === '<' || singleSubSubSubSubFilter === '<=') {\n if (!filters[i][i2][i3][i4][i5 + 1])\n filters[i][i2][i3][i4][i5 + 1] = 'NULL';\n else if (typeof filters[i][i2][i3][i4][i5 + 1] === 'string') {\n filters[i][i2][i3][i4][i5 + 1] = '\\'' + filters[i][i2][i3][i4][i5 + 1] + '\\'';\n }\n }\n else if (singleSubSubSubSubFilter === '!') {\n filters[i][i2][i3][i4][i5] = 'NOT';\n singleSubSubSubSubFilter = 'NOT';\n }\n\n sqlFilter += ' ' + singleSubSubSubSubFilter + ' ';\n }\n else if (singleSubSubSubSubFilterType.toString() === 'object' && singleSubSubSubSubFilterIsDate) {\n sqlFilter += ' \\'' + singleSubSubSubSubFilter.toISOString().split('T')[0] + '\\' ';\n }\n else if (singleSubSubSubSubFilterType.toString() === 'number') {\n sqlFilter += ' ' + singleSubSubSubSubFilter.toString() + ' ';\n }\n else if (singleSubSubSubSubFilterType.toString() === 'boolean') {\n if (singleSubSubSubSubFilter.toString() === 'true')\n sqlFilter += '1 ';\n else if (singleSubSubSubSubFilter.toString() === 'false' || singleSubSubSubSubFilter === null || singleSubSubSubSubFilter === undefined)\n sqlFilter += '0 ';\n }\n }\n }\n else if (singleSubSubSubFilterType.toString() === 'string') {\n if (singleSubSubSubFilter === 'contains') {\n filters[i][i2][i3][i4] = 'LIKE';\n singleSubSubSubFilter = 'LIKE';\n\n filters[i][i2][i3][i4 + 1] = '\\'%' + filters[i][i2][i3][i4 + 1] + '%\\'';\n }\n else if (singleSubSubSubFilter === 'notcontains') {\n filters[i][i2][i3][i4] = 'NOT LIKE';\n singleSubSubSubFilter = 'NOT LIKE';\n\n filters[i][i2][i3][i4 + 1] = '\\'%' + filters[i][i2][i3][i4 + 1] + '%\\'';\n }\n else if (singleSubSubSubFilter === 'startswith') {\n filters[i][i2][i3][i4] = 'LIKE';\n singleSubSubSubFilter = 'LIKE';\n\n filters[i][i2][i3][i4 + 1] = '\\'' + filters[i][i2][i3][i4 + 1] + '%\\'';\n }\n else if (singleSubSubSubFilter === 'endswith') {\n filters[i][i2][i3][i4] = 'LIKE';\n singleSubSubSubFilter = 'LIKE';\n\n filters[i][i2][i3][i4 + 1] = '\\'%' + filters[i][i2][i3][i4 + 1] + '\\'';\n }\n else if (singleSubSubSubFilter === '=' || singleSubSubSubFilter === '<>' || singleSubSubSubFilter === '>' || singleSubSubSubFilter === '>=' || singleSubSubSubFilter === '<' || singleSubSubSubFilter === '<=') {\n if (!filters[i][i2][i3][i4 + 1])\n filters[i][i2][i3][i4 + 1] = 'NULL';\n else if (typeof filters[i][i2][i3][i4 + 1] === 'string') {\n filters[i][i2][i3][i4 + 1] = '\\'' + filters[i][i2][i3][i4 + 1] + '\\'';\n }\n }\n else if (singleSubSubSubFilter === '!') {\n filters[i][i2][i3][i4] = 'NOT';\n singleSubSubSubFilter = 'NOT';\n }\n\n sqlFilter += ' ' + singleSubSubSubFilter + ' ';\n }\n else if (singleSubSubSubFilterType.toString() === 'object' && singleSubSubSubFilterIsDate) {\n sqlFilter += ' \\'' + singleSubSubSubFilter.toISOString().split('T')[0] + '\\' ';\n }\n else if (singleSubSubSubFilterType.toString() === 'number') {\n sqlFilter += ' ' + singleSubSubSubFilter.toString() + ' ';\n }\n else if (singleSubSubSubFilterType.toString() === 'boolean') {\n if (singleSubSubSubFilter.toString() === 'true')\n sqlFilter += '1 ';\n else if (singleSubSubSubFilter.toString() === 'false' || singleSubSubSubFilter === null || singleSubSubSubFilter === undefined)\n sqlFilter += '0 ';\n }\n }\n\n sqlFilter += ')';\n }\n else if (singleSubSubFilterType.toString() === 'string') {\n if (singleSubSubFilter === 'contains') {\n filters[i][i2][i3] = 'LIKE';\n singleSubSubFilter = 'LIKE';\n\n filters[i][i2][i3 + 1] = '\\'%' + filters[i][i2][i3 + 1] + '%\\'';\n }\n else if (singleSubSubFilter === 'notcontains') {\n filters[i][i2][i3] = 'NOT LIKE';\n singleSubSubFilter = 'NOT LIKE';\n\n filters[i][i2][i3 + 1] = '\\'%' + filters[i][i2][i3 + 1] + '%\\'';\n }\n else if (singleSubSubFilter === 'startswith') {\n filters[i][i2][i3] = 'LIKE';\n singleSubSubFilter = 'LIKE';\n\n filters[i][i2][i3 + 1] = '\\'' + filters[i][i2][i3 + 1] + '%\\'';\n }\n else if (singleSubSubFilter === 'endswith') {\n filters[i][i2][i3] = 'LIKE';\n singleSubSubFilter = 'LIKE';\n\n filters[i][i2][i3 + 1] = '\\'%' + filters[i][i2][i3 + 1] + '\\'';\n }\n else if (singleSubSubFilter === '=' || singleSubSubFilter === '<>' || singleSubSubFilter === '>' || singleSubSubFilter === '>=' || singleSubSubFilter === '<' || singleSubSubFilter === '<=') {\n if (!filters[i][i2][i3 + 1])\n filters[i][i2][i3 + 1] = 'NULL';\n else if (typeof filters[i][i2][i3 + 1] === 'string') {\n filters[i][i2][i3 + 1] = '\\'' + filters[i][i2][i3 + 1] + '\\'';\n }\n }\n else if (singleSubSubFilter === '!') {\n filters[i][i2][i3] = 'NOT';\n singleSubSubFilter = 'NOT';\n }\n sqlFilter += ' ' + singleSubSubFilter + ' ';\n }\n else if (singleSubSubFilterType.toString() === 'object' && singleSubSubFilterIsDate) {\n sqlFilter += ' \\'' + singleSubSubFilter.toISOString().split('T')[0] + '\\' ';\n }\n else if (singleSubSubFilterType.toString() === 'number') {\n sqlFilter += ' ' + singleSubSubFilter.toString() + ' ';\n }\n else if (singleSubSubFilterType.toString() === 'boolean') {\n if (singleSubSubFilter.toString() === 'true')\n sqlFilter += '1 ';\n else if (singleSubSubFilter.toString() === 'false' || singleSubSubFilter === null || singleSubSubFilter === undefined)\n sqlFilter += '0 ';\n }\n }\n\n sqlFilter += ')';\n }\n else if (singleSubFilterType.toString() === 'string') {\n if (singleSubFilter === 'contains') {\n filters[i][i2] = 'LIKE';\n singleSubFilter = 'LIKE';\n\n filters[i][i2 + 1] = '\\'%' + filters[i][i2 + 1] + '%\\'';\n }\n else if (singleSubFilter === 'notcontains') {\n filters[i][i2] = 'NOT LIKE';\n singleSubFilter = 'NOT LIKE';\n\n filters[i][i2 + 1] = '\\'%' + filters[i][i2 + 1] + '%\\'';\n }\n else if (singleSubFilter === 'startswith') {\n filters[i][i2] = 'LIKE';\n singleSubFilter = 'LIKE';\n\n filters[i][i2 + 1] = '\\'' + filters[i][i2 + 1] + '%\\'';\n }\n else if (singleSubFilter === 'endswith') {\n filters[i][i2] = 'LIKE';\n singleSubFilter = 'LIKE';\n\n filters[i][i2 + 1] = '\\'%' + filters[i][i2 + 1] + '\\'';\n }\n else if (singleSubFilter === '=' || singleSubFilter === '<>' || singleSubFilter === '>' || singleSubFilter === '>=' || singleSubFilter === '<' || singleSubFilter === '<=') {\n if (!filters[i][i2 + 1])\n filters[i][i2 + 1] = 'NULL';\n else if (typeof filters[i][i2 + 1] === 'string') {\n filters[i][i2 + 1] = '\\'' + filters[i][i2 + 1] + '\\'';\n }\n }\n else if (singleSubFilter === '!') {\n filters[i][i2] = 'NOT';\n singleSubFilter = 'NOT';\n }\n sqlFilter += ' ' + singleSubFilter + ' ';\n }\n else if (singleSubFilterType.toString() === 'object' && singleSubFilterIsDate) {\n sqlFilter += ' \\'' + singleSubFilter.toISOString().split('T')[0] + '\\' ';\n }\n else if (singleSubFilterType.toString() === 'number') {\n sqlFilter += ' ' + singleSubFilter.toString() + ' ';\n }\n else if (singleSubFilterType.toString() === 'boolean') {\n if (singleSubFilter.toString() === 'true')\n sqlFilter += '1 ';\n else if (singleSubFilter.toString() === 'false' || singleSubFilter === null || singleSubFilter === undefined)\n sqlFilter += '0 ';\n }\n }\n\n sqlFilter += ')';\n }\n else if (singleFilterType.toString() === 'string') {\n if (singleFilter === 'contains') {\n filters[i] = 'LIKE';\n singleFilter = 'LIKE';\n\n filters[i + 1] = '\\'%' + filters[i + 1] + '%\\'';\n }\n else if (singleFilter === 'notcontains') {\n filters[i] = 'NOT LIKE';\n singleFilter = 'NOT LIKE';\n\n filters[i + 1] = '\\'%' + filters[i + 1] + '%\\'';\n }\n else if (singleFilter === 'startswith') {\n filters[i] = 'LIKE';\n singleFilter = 'LIKE';\n\n filters[i + 1] = '\\'' + filters[i + 1] + '%\\'';\n }\n else if (singleFilter === 'endswith') {\n filters[i] = 'LIKE';\n singleFilter = 'LIKE';\n\n filters[i + 1] = '\\'%' + filters[i + 1] + '\\'';\n }\n else if (singleFilter === '=' || singleFilter === '<>' || singleFilter === '>' || singleFilter === '>=' || singleFilter === '<' || singleFilter === '<=') {\n if (!filters[i + 1])\n filters[i + 1] = 'NULL';\n else if (typeof filters[i + 1] === 'string') {\n filters[i + 1] = '\\'' + filters[i + 1] + '\\'';\n }\n }\n else if (singleFilter === '!') {\n filters[i] = 'NOT';\n singleFilter = 'NOT';\n }\n sqlFilter += ' ' + singleFilter + ' ';\n }\n else if (singleFilterType.toString() === 'object' && singleFilterIsDate) {\n sqlFilter += ' \\'' + singleFilter.toISOString().split('T')[0] + '\\' ';\n }\n else if (singleFilterType.toString() === 'number') {\n sqlFilter += ' ' + singleFilter.toString() + ' ';\n }\n else if (singleFilterType.toString() === 'boolean') {\n if (singleFilter.toString() === 'true')\n sqlFilter += '1 ';\n else if (singleFilter.toString() === 'false' || singleFilter === null || singleFilter === undefined)\n sqlFilter += '0 ';\n }\n }\n\n sqlFilter += ')';\n }\n });\n\n async function getRecords() {\n if (sqlFilter === '(')\n sqlFilter = '';\n\n var records = await getCheckListRecords(sqlFilter);\n return {\n data: records,\n totalCount: records.length\n };\n }\n\n return getRecords()\n .then(function (result) {\n return result;\n })\n .catch(() => { throw new Error('Data Loading Error'); });\n },\n });\n\n async function getCheckListPayload(ID) {\n try {\n var personal = props.personal;\n\n let apiName = 'AdminSC';\n let path = '/procesachecklist';\n\n let myInit = {\n headers: {\n 'Content-Type': 'application/json',\n Authorization: `${(await Auth.currentSession()).getAccessToken().getJwtToken()}`\n },\n queryStringParameters: {\n personal: personal,\n ID: ID,\n action: 'payload',\n mov: 'Check List Veh',\n username: JSON.parse(JSON.stringify(await Auth.currentAuthenticatedUser())).username\n }\n }\n\n var payloadGet = await API.get(apiName, path, myInit);\n\n setCheckListPayload(payloadGet);\n\n //Obtenemos los attachments\n var attachmentsGet = await Storage.list(\"/checklist/\" + ID);\n var attachmentsAux = [];\n\n for (var attachmentsGetIndex in attachmentsGet) {\n var singleAttachmentsGet = attachmentsGet[attachmentsGetIndex];\n\n var singleAttachment = {\n name: singleAttachmentsGet.key.split('/').pop(),\n isDirectory: false,\n size: singleAttachmentsGet.size,\n };\n\n attachmentsAux.push(singleAttachment);\n }\n\n setAttachments(attachmentsAux);\n\n //Asignamos las variables para los controles tipo CheckBox\n setConLicenciaConducir(payloadGet.vehiculonissan.LicenciaConducir);\n setConTarjetaGasolina(payloadGet.vehiculonissan.TarjetaGasolina);\n setConPolizaSeguro(payloadGet.vehiculonissan.PolizaSeguro);\n setConPlacas(payloadGet.vehiculonissan.Placas);\n }\n catch (e) {\n if (e === 'No current user') {\n history.push('/');\n\n window.location.reload();\n }\n }\n\n return payloadGet;\n }\n\n function onFieldVehiculoNissanChanged(e) {\n if (e.dataField === 'LicenciaConducir') {\n setConLicenciaConducir(!conLicenciaConducir);\n }\n if (e.dataField === 'TarjetaGasolina') {\n setConTarjetaGasolina(!conTarjetaGasolina);\n }\n if (e.dataField === 'PolizaSeguro') {\n setConPolizaSeguro(!conPolizaSeguro);\n }\n if (e.dataField === 'Placas') {\n setConPlacas(!conPlacas);\n }\n }\n\n async function renderMap(payload) {\n let map;\n var keys;\n\n //Obtenemos las ubicacion aceptada del checklist\n var locations = {};\n var circles = {};\n\n // Definimos el circulo\n if (payload.header.Longitud && payload.header.Latitud) {\n var center = [payload.header.Longitud, payload.header.Latitud];\n\n var radius = .1;\n var options = {\n steps: 360,\n units: \"kilometers\",\n };\n\n var circle = turf.circle(center, radius, options);\n\n var validLocation = {\n coordinates: circle.geometry.coordinates\n };\n\n locations[payload.header.Nombre] = validLocation;\n locations[payload.header.Nombre].Latitud = payload.header.Latitud;\n locations[payload.header.Nombre].Longitud = payload.header.Longitud;\n\n circles[payload.header.Nombre] = circle;\n }\n // We only want to initialize the underlying maplibre map after the div has been rendered\n // Creamos el mapa\n map = await createMap({\n container: \"map\",\n center: [-101.95812036696248, 23.732791552256273],\n zoom: 4,\n repaint: true\n });\n\n // Definimos el GeolocateControl para poder obtener la posición del usuario\n var geolocate = new maplibregl.GeolocateControl({\n positionOptions: {\n enableHighAccuracy: true\n },\n trackUserLocation: false\n });\n\n // Agregamos el control al mapa\n map.addControl(geolocate);\n\n // Evento al presionar el boton de ubicación del usuario\n geolocate.on('geolocate', function (data) {\n try {\n keys = Object.keys(locations);\n }\n catch (e) {\n keys = [];\n }\n\n var valid = false;\n\n for (var keyIndex in keys) {\n if (valid === false) {\n var singleKey = keys[keyIndex];\n\n var location = locations[singleKey];\n location.name = singleKey;\n\n var centerLatitud = location.Latitud;\n var centerLongitud = location.Longitud;\n\n var centerLatLong = new maplibregl.LngLat(centerLongitud, centerLatitud);\n var userLocationLatLong = new maplibregl.LngLat(data.coords.longitude, data.coords.latitude);\n\n var distance = centerLatLong.distanceTo(userLocationLatLong) / 1000.0;\n\n if (distance <= 0.1) {\n valid = true;\n\n setLatitude(data.coords.latitude);\n setLongitude(data.coords.longitude);\n\n break;\n }\n }\n }\n\n //Asignamos el permiso para editar los grids y los botones\n if (payload.header.Estatus === 'Concluido' || payload.header.Estatus === 'Rechazado') {\n setActivateButton(false);\n setActivateVoidButton(false);\n setActivateSaveButton(false);\n setAllowUpdating(false);\n setActivateStopwatch(false);\n setActivateDeleteButton(false);\n }\n else {\n if (valid === false) {\n setActivateButton(false);\n setActivateVoidButton(false);\n setActivateSaveButton(false);\n setAllowUpdating(false);\n setActivateStopwatch(false);\n setActivateDeleteButton(false);\n }\n else {\n if (payload.header.InicioEvaluacion) {\n setActivateButton(true);\n setActivateVoidButton(true);\n setActivateSaveButton(true);\n setAllowUpdating(true);\n setActivateStopwatch(false);\n setActivateDeleteButton(false);\n }\n else {\n setActivateButton(false);\n setActivateVoidButton(false);\n setActivateSaveButton(false);\n setAllowUpdating(false);\n setActivateStopwatch(true);\n setActivateDeleteButton(false)\n }\n }\n }\n });\n\n map.on('load', function () {\n try {\n keys = Object.keys(locations);\n }\n catch (e) {\n keys = [];\n }\n\n for (var keyIndex in keys) {\n var singleKey = keys[keyIndex];\n\n var circle = circles[singleKey];\n\n var layer = map.getLayer(singleKey);\n\n if (layer)\n map.removeLayer(singleKey);\n\n var source = map.getSource(singleKey);\n\n if (source)\n map.removeSource(singleKey);\n\n map.addSource(singleKey, {\n type: \"geojson\",\n data: circle\n });\n\n //Agregamos el Layer al mapa para mostrarlo\n map.addLayer({\n id: singleKey,\n type: \"fill\",\n source: singleKey,\n paint: {\n \"fill-color\": \"blue\",\n \"fill-opacity\": 0.2\n }\n });\n }\n\n //Ejecutamos el Geolocate Control para poder centrar el mapa a la posición del usuario\n geolocate.trigger();\n });\n\n map.addControl(new maplibregl.NavigationControl(), \"top-right\");\n\n try {\n keys = Object.keys(locations);\n }\n catch (e) {\n keys = [];\n }\n\n for (var keyIndex in keys) {\n var singleKey = keys[keyIndex];\n\n var location = locations[singleKey];\n\n new maplibregl.Marker({\n })\n .setLngLat([location.Longitud, location.Latitud])\n .addTo(map);\n }\n };\n\n async function startStopwatch() {\n try {\n if (!window.confirm('¿Desea iniciar el checklist?'))\n return;\n\n setVisibleLoadPanel(true);\n\n var ID = checkListPayload.header.ID;\n\n //Despues enviamos todo al backend\n let apiName = 'AdminSC';\n let path = '/procesachecklist';\n\n let myInit = {\n headers: {\n 'Content-Type': 'application/json',\n Authorization: `${(await Auth.currentSession()).getAccessToken().getJwtToken()}`\n },\n body: {\n ID: ID,\n payload: checkListPayload,\n action: 'startStopwatch',\n username: JSON.parse(JSON.stringify(await Auth.currentAuthenticatedUser())).username\n }\n }\n\n var payloadPost = await API.post(apiName, path, myInit);\n\n if (payloadPost.ok === 'true') {\n setVisibleLoadPanel(false);\n\n setVisibleToast(true);\n setMessageToast('Se inició el checklist con éxito');\n setTypeToast('success')\n }\n else if (payloadPost.ok === 'false') {\n setVisibleLoadPanel(false);\n\n setVisibleToast(true);\n setMessageToast(payloadPost.message);\n setTypeToast('error')\n }\n\n editChecklistButton(ID);\n }\n catch (e) {\n setVisibleLoadPanel(false);\n\n if (e === 'No current user') {\n history.push('/');\n\n window.location.reload();\n }\n }\n };\n\n async function editChecklistButton(ID) {\n try {\n if (!window.event.metaKey && !window.event.ctrlKey) {\n setVisibleLoadPanel(true);\n\n setIsDetail(true);\n\n setId(ID);\n\n var payload = await getCheckListPayload(ID);\n\n if (payload.header.Estatus === 'Sin Afectar') {\n setAllowNew(true);\n setActivateButton(true);\n setActivateVoidButton(false);\n setActivateStopwatch(false);\n setActivateSaveButton(true);\n setActivateDeleteButton(true);\n setAllowUpdating(false);\n }\n else {\n setAllowNew(false);\n }\n\n setVisibleLoadPanel(false);\n\n if (ID && ID !== 'undefined' && payload.header.Estatus !== 'Sin Afectar') {\n await renderMap(payload);\n }\n }\n }\n catch (e) {\n setVisibleLoadPanel(false);\n\n if (!ID || ID === 'undefined') {\n newButton();\n }\n }\n };\n\n async function cancelEditButton() {\n setIsDetail(false);\n };\n\n async function saveButton() {\n try {\n if (checkListPayload.header.Estatus === 'Sin Afectar') {\n if (!checkListPayload.header.PersonalAsignado || checkListPayload.header.PersonalAsignado === '') {\n setVisibleToast(true);\n setMessageToast('Falta especificar el Auditor')\n setTypeToast('error');\n return;\n }\n if (!checkListPayload.header.SucursalAsignada || checkListPayload.header.SucursalAsignada === '') {\n setVisibleToast(true);\n setMessageToast('Falta especificar la Sucursal')\n setTypeToast('error');\n return;\n }\n if (!checkListPayload.header.NumeroVehiculo || checkListPayload.header.NumeroVehiculo === '') {\n setVisibleToast(true);\n setMessageToast('Falta especificar el vehículo')\n setTypeToast('error');\n return;\n }\n }\n\n setVisibleLoadPanel(true);\n\n var ID = checkListPayload.header.ID;\n\n //Enviamos todo al backend\n let apiName = 'AdminSC';\n let path = '/procesachecklist';\n\n let myInit = {\n headers: {\n 'Content-Type': 'application/json',\n Authorization: `${(await Auth.currentSession()).getAccessToken().getJwtToken()}`\n },\n body: {\n ID: ID,\n payload: checkListPayload,\n action: 'saveChanges',\n username: JSON.parse(JSON.stringify(await Auth.currentAuthenticatedUser())).username,\n s3Bucket: Storage._config.AWSS3.bucket\n }\n }\n\n var payloadPost = await API.post(apiName, path, myInit);\n\n if (payloadPost.ok === 'true') {\n if (!ID) {\n setVisibleToast(true);\n setMessageToast('Se creó el checklist con éxito');\n setTypeToast('success')\n\n ID = payloadPost.newID;\n\n editChecklistButton(ID);\n\n history.push('/ChecklistVeh/' + ID.toString());\n }\n else {\n setVisibleToast(true);\n setMessageToast('Se actualizó el checklist con éxito');\n setTypeToast('success')\n }\n }\n else if (payloadPost.ok === 'false') {\n setVisibleToast(true);\n setMessageToast(payloadPost.message);\n setTypeToast('error')\n }\n\n editChecklistButton(ID);\n\n setVisibleLoadPanel(false);\n }\n catch (e) {\n setVisibleLoadPanel(false);\n\n if (e === 'No current user') {\n history.push('/');\n\n window.location.reload();\n }\n }\n };\n\n async function confirmButton() {\n try {\n if (checkListPayload.header.Estatus === 'Sin Afectar') {\n if (!checkListPayload.header.PersonalAsignado || checkListPayload.header.PersonalAsignado === '') {\n setVisibleToast(true);\n setMessageToast('Falta especificar el Auditor')\n setTypeToast('error');\n return;\n }\n if (!checkListPayload.header.SucursalAsignada || checkListPayload.header.SucursalAsignada === '') {\n setVisibleToast(true);\n setMessageToast('Falta especificar la Sucursal')\n setTypeToast('error');\n return;\n }\n if (!checkListPayload.header.NumeroVehiculo || checkListPayload.header.NumeroVehiculo === '') {\n setVisibleToast(true);\n setMessageToast('Falta especificar el vehículo')\n setTypeToast('error');\n return;\n }\n }\n\n if (!window.confirm('¿Desea confirmar el checklist?'))\n return;\n\n setVisibleLoadPanel(true);\n\n var ID = checkListPayload.header.ID;\n\n //Enviamos todo al backend\n let apiName = 'AdminSC';\n let path = '/procesachecklist';\n\n let myInit = {\n headers: {\n 'Content-Type': 'application/json',\n Authorization: `${(await Auth.currentSession()).getAccessToken().getJwtToken()}`\n },\n body: {\n ID: ID,\n payload: checkListPayload,\n action: 'apply',\n username: JSON.parse(JSON.stringify(await Auth.currentAuthenticatedUser())).username\n }\n }\n\n var payloadPost = await API.post(apiName, path, myInit);\n\n if (payloadPost.ok === 'true') {\n if (!ID) {\n setVisibleLoadPanel(false);\n\n setVisibleToast(true);\n setMessageToast('Checklist creado con éxito');\n setTypeToast('success')\n\n ID = payloadPost.newID;\n\n editChecklistButton(ID);\n\n history.push('/ChecklistVeh/' + ID.toString());\n }\n else {\n setVisibleLoadPanel(false);\n\n setVisibleToast(true);\n setMessageToast('Checklist Concluido con éxito');\n setTypeToast('success')\n\n setAllowUpdating(false);\n setActivateButton(false);\n setActivateVoidButton(false);\n setActivateSaveButton(false);\n\n editChecklistButton(ID);\n\n history.push('/ChecklistVeh/' + ID.toString());\n }\n }\n else if (payloadPost.ok === 'false') {\n setVisibleLoadPanel(false);\n\n setVisibleToast(true);\n setMessageToast(payloadPost.message);\n setTypeToast('error');\n }\n }\n catch (e) {\n setVisibleLoadPanel(false);\n\n if (e === 'No current user') {\n history.push('/');\n\n window.location.reload();\n }\n }\n };\n\n function printButton() {\n var baseUrl = window.location.href.split('/')[0];\n\n window.open(baseUrl + \"/#/PdfRender?type=checklistveh&id=\" + id, \"_blank\");\n };\n\n async function cancelChecklistButton() {\n try {\n if (!window.confirm('¿Desea omitir el checklist?'))\n return;\n\n if (checkListPayload.header.MotivoCancelacion === '' || !checkListPayload.header.MotivoCancelacion) {\n setVisibleToast(true);\n setMessageToast('Favor de especificar el Motivo de Omisión');\n setTypeToast('error')\n\n return;\n }\n\n setVisibleLoadPanel(true);\n\n var ID = checkListPayload.header.ID;\n\n //Enviamos todo al backend\n let apiName = 'AdminSC';\n let path = '/procesachecklist';\n\n let myInit = {\n headers: {\n 'Content-Type': 'application/json',\n Authorization: `${(await Auth.currentSession()).getAccessToken().getJwtToken()}`\n },\n body: {\n ID: ID,\n payload: checkListPayload,\n action: 'void',\n username: JSON.parse(JSON.stringify(await Auth.currentAuthenticatedUser())).username\n }\n }\n\n var payloadPost = await API.post(apiName, path, myInit);\n\n if (payloadPost.ok === 'true') {\n setVisibleLoadPanel(false);\n\n setVisibleToast(true);\n setMessageToast('Checklist omitido con éxito');\n setTypeToast('success')\n\n\n setAllowUpdating(false);\n setActivateButton(false);\n setActivateVoidButton(false);\n\n editChecklistButton(ID);\n\n history.push('/ChecklistVeh/' + ID.toString());\n }\n else if (payloadPost.ok === 'false') {\n setVisibleLoadPanel(false);\n\n setVisibleToast(true);\n setMessageToast(payloadPost.message);\n setTypeToast('error')\n }\n }\n catch (e) {\n setVisibleLoadPanel(false);\n\n if (e === 'No current user') {\n history.push('/');\n\n window.location.reload();\n }\n }\n };\n\n function editCheckList(data) {\n return (\n <Link to={`/ChecklistVeh/${data.data.ID}`}>\n <button class=\"bg-blue-500 hover:bg-blue-700 text-white py-1 px-3 rounded\" onClick={() => editChecklistButton(data.data.ID)}><FontAwesomeIcon icon={faPencilAlt} /> Editar</button>\n </Link>\n )\n }\n\n function onAutoExpandAllChanged() {\n setAutoExpandAll(!autoExpandAll)\n };\n\n function onAutoExpandAllChecklistChanged() {\n setAutoExpandAllChecklist(!autoExpandAllChecklist)\n };\n\n async function getSucursales() {\n let apiName = 'AdminSC';\n let path = '/getcatalogo';\n\n let myInit = {\n headers: {\n 'Content-Type': 'application/json',\n Authorization: `${(await Auth.currentSession()).getAccessToken().getJwtToken()}`\n },\n queryStringParameters: {\n type: 'Sucursal',\n username: JSON.parse(JSON.stringify(await Auth.currentAuthenticatedUser())).username\n }\n }\n\n var sucursalesGet = await API.get(apiName, path, myInit);\n\n var sucursalesTmp = [];\n for (var sucursalesGetIndex in sucursalesGet) {\n var singleSucursalesGet = sucursalesGet[sucursalesGetIndex];\n\n var singleSucursal = {\n name: singleSucursalesGet.Nombre,\n value: singleSucursalesGet.Sucursal.toString()\n };\n\n sucursalesTmp.push(singleSucursal);\n }\n\n setSucursales(sucursalesTmp);\n\n return sucursalesTmp;\n };\n\n async function getPersonal() {\n let apiName = 'AdminSC';\n let path = '/getcatalogo';\n\n let myInit = {\n headers: {\n 'Content-Type': 'application/json',\n Authorization: `${(await Auth.currentSession()).getAccessToken().getJwtToken()}`\n },\n queryStringParameters: {\n type: 'Personal',\n includeInactive: true,\n username: JSON.parse(JSON.stringify(await Auth.currentAuthenticatedUser())).username\n }\n }\n\n var personalesGet = await API.get(apiName, path, myInit);\n\n var personalesTmp = [];\n for (var personalesGetIndex in personalesGet) {\n var singlePersonalesGet = personalesGet[personalesGetIndex];\n\n var singlePersonal = {\n name: singlePersonalesGet.ApellidoPaterno + ' ' + singlePersonalesGet.ApellidoMaterno + ' ' + singlePersonalesGet.Nombre,\n value: singlePersonalesGet.Personal\n };\n\n personalesTmp.push(singlePersonal);\n }\n\n setPersonales(personalesTmp);\n\n return personalesTmp;\n };\n\n async function getVehiculo() {\n let apiName = 'AdminSC';\n let path = '/getcatalogo';\n\n let myInit = {\n headers: {\n 'Content-Type': 'application/json',\n Authorization: `${(await Auth.currentSession()).getAccessToken().getJwtToken()}`\n },\n queryStringParameters: {\n type: 'Vehiculo',\n username: JSON.parse(JSON.stringify(await Auth.currentAuthenticatedUser())).username\n }\n }\n\n var vehiculoGetList = await API.get(apiName, path, myInit);\n\n setVehiculos(vehiculoGetList);\n\n return vehiculoGetList;\n };\n\n var sucursalDataSource = new DataSource({\n paginate: true,\n store: {\n type: \"array\",\n key: \"Sucursal\",\n data: sucursales\n }\n });\n\n var personalDataSource = new DataSource({\n paginate: true,\n store: {\n type: \"array\",\n key: \"Personal\",\n data: personales\n }\n });\n\n var vehiculoDataSource = new DataSource({\n paginate: true,\n store: {\n type: \"array\",\n key: \"Vehiculo\",\n data: vehiculos\n }\n });\n\n var fechaEmisionEditorOptions = { width: '100%', disabled: !allowNew, text: 'Fecha Emisión' };\n var movimientoEditorOptions = { width: '100%', readOnly: true };\n var estatusEditorOptions = { width: '100%', readOnly: true };\n\n //Opciones Sucursal\n try {\n var sucursalAsignadaEditorOptions = { disabled: !allowNew, dataSource: sucursalDataSource, displayExpr: 'name', valueExpr: 'value', searchEnabled: true, value: (checkListPayload.header.SucursalAsignada.toString() ? checkListPayload.header.SucursalAsignada.toString() : ''), width: '100%' };\n }\n catch (e) {\n var sucursalAsignadaEditorOptions = { disabled: !allowNew, dataSource: sucursalDataSource, displayExpr: 'name', valueExpr: 'value', searchEnabled: true, value: '', width: '100%' };\n }\n\n //Opciones Personal\n try {\n var personalAsignadoEditorOptions = { disabled: !allowNew, dataSource: personalDataSource, displayExpr: 'name', valueExpr: 'value', searchEnabled: true, value: (checkListPayload.header.PersonalAsignado ? checkListPayload.header.PersonalAsignado : ''), width: '100%' };\n }\n catch (e) {\n var personalAsignadoEditorOptions = { disabled: !allowNew, dataSource: personalDataSource, displayExpr: 'name', valueExpr: 'value', searchEnabled: true, value: '', width: '100%' };\n }\n\n //Opciones Vehiculo\n try {\n var vehiculoEditorOptions = { disabled: !allowNew, dataSource: vehiculoDataSource, displayExpr: 'name', valueExpr: 'value', searchEnabled: true, value: (checkListPayload.header.NumeroVehiculo ? checkListPayload.header.NumeroVehiculo : ''), width: '100%' };\n }\n catch (e) {\n var vehiculoEditorOptions = { disabled: !allowNew, dataSource: vehiculoDataSource, displayExpr: 'name', valueExpr: 'value', searchEnabled: true, value: '', width: '100%' };\n }\n\n var nombreEditorOptions = { width: '100%', readOnly: true };\n\n var nombreSupervisorEditorOptions = { width: '100%', readOnly: true };\n var inicioEvaluacionEditorOptions = { width: '100%', readOnly: true };\n var finEvaluacionEditorOptions = { width: '100%', readOnly: true };\n var duracionEvaluacionEditorOptions = { width: '100%', readOnly: true };\n\n var numeroVehiculoEditorOptions = { width: '100%', readOnly: true };\n\n try {\n var motivoCancelacionEditorOptions = { items: motivoCancelacion, displayExpr: 'name', valueExpr: 'value', searchEnabled: true, value: (checkListPayload.header.MotivoCancelacion ? checkListPayload.header.MotivoCancelacion : ''), width: '100%', disabled: !allowUpdating };\n }\n catch (e) {\n var motivoCancelacionEditorOptions = { items: motivoCancelacion, displayExpr: 'name', valueExpr: 'value', searchEnabled: true, value: '', width: '100%', disabled: !allowUpdating };\n }\n\n var placaEditorOptions = { width: '100%', readOnly: true };\n var anioEditorOptions = { width: '100%', readOnly: true };\n var marcaVehiculoEditorOptions = { width: '100%', readOnly: true };\n\n var marcaEditorOptions = { width: '100%' };\n var modeloEditorOptions = { width: '100%' };\n var numeroCelularEditorOptions = { width: '100%', mask: '000-0000-000' };\n\n var licenciaConducirEditorOptions = { disabled: !conLicenciaConducir };\n var tarjetaGasolinaEditorOptions = { disabled: !conTarjetaGasolina };\n var polizaSeguroEditorOptions = { disabled: !conPolizaSeguro };\n var placasEditorOptions = { disabled: !conPlacas };\n\n var engineIcon = \"data:image/png;base64,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LMrSn1UeKZgI7BS4OF65IEpe8PfkKE77B4KJAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAIFpBf4fCOEYJ9pXTDoAAAAASUVORK5CYII=\";\n var batteryIcon = \"data:image/png;base64,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BASAjD6rkgABAgQINAEBoHGYECBAgACBDAEBIKPPqiRAgAABAk1AAGgcJgQIECBAIENAAMjosyoJECBAgEATEAAahwkBAgQIEMgQEAAy+qxKAgQIECDQBASAxmFCgAABAgQyBASAjD6rkgABAgQINAEBoHGYECBAgACBDAEBIKPPqiRAgAABAk1AAGgcJgQIECBAIENAAMjosyoJECBAgEATEAAahwkBAgQIEMgQEAAy+qxKAgQIECDQBASAxmFCgAABAgQyBASAjD6rkgABAgQINAEBoHGYECBAgACBDAEBIKPPqiRAgAABAk1AAGgcJgQIECBAIENAAMjosyoJECBAgEATEAAahwkBAgQIEMgQEAAy+qxKAgQIECDQBASAxmFCgAABAgQyBASAjD6rkgABAgQINAEBoHGYECBAgACBDAEBIKPPqiRAgAABAk1AAGgcJgQIECBAIENAAMjosyoJECBAgEATEAAahwkBAgQIEMgQEAAy+qxKAgQIECDQBASAxmFCgAABAgQyBASAjD6rkgABAgQINAEBoHGYECBAgACBDAEBIKPPqiRAgAABAk1AAGgcJgQIECBAIENAAMjosyoJECBAgEATEAAahwkBAgQIEMgQEAAy+qxKAgQIECDQBASAxmFCgAABAgQyBASAjD6rkgABAgQINAEBoHGYECBAgACBDAEBIKPPqiRAgAABAk1AAGgcJgQIECBAIENAAMjosyoJECBAgEATEAAahwkBAgQIEMgQEAAy+qxKAgQIECDQBASAxmFCgAABAgQyBASAjD6rkgABAgQINAEBoHGYECBAgACBDAEBIKPPqiRAgAABAk1AAGgcJgQIECBAIENAAMjosyoJECBAgEATEAAahwkBAgQIEMgQEAAy+qxKAgQIECDQBASAxmFCgAABAgQyBASAjD6rkgABAgQINAEBoHGYECBAgACBDAEBIKPPqiRAgAABAk1AAGgcJgQIECBAIENAAMjosyoJECBAgEATEAAahwkBAgQIEMgQEAAy+qxKAgQIECDQBASAxmFCgAABAgQyBASAjD6rkgABAgQINAEBoHGYECBAgACBDAEBIKPPqiRAgAABAk1AAGgcJgQIECBAIENAAMjosyoJECBAgEATEAAahwkBAgQIEMgQEAAy+qxKAgQIECDQBASAxmFCgAABAgQyBASAjD6rkgABAgQINAEBoHGYECBAgACBDAEBIKPPqiRAgAABAk1AAGgcJgQIECBAIENAAMjosyoJECBAgEATEAAahwkBAgQIEMgQEAAy+qxKAgQIECDQBASAxmFCgAABAgQyBASAjD6rkgABAgQINAEBoHGYECBAgACBDAEBIKPPqiRAgAABAk1AAGgcJgQIECBAIENAAMjosyoJECBAgEATEAAahwkBAgQIEMgQEAAy+qxKAgQIECDQBASAxmFCgAABAgQyBASAjD6rkgABAgQINAEBoHGYECBAgACBDAEBIKPPqiRAgAABAk1AAGgcJgQIECBAIENAAMjosyoJECBAgEATEAAahwkBAgQIEMgQEAAy+qxKAgQIECDQBASAxmFCgAABAgQyBASAjD6rkgABAgQINAEBoHGYECBAgACBDAEBIKPPqiRAgAABAk1AAGgcJgQIECBAIENAAMjosyoJECBAgEATEAAahwkBAgQIEMgQEAAy+qxKAgQIECDQBASAxmFCgAABAgQyBASAjD6rkgABAgQINAEBoHGYECBAgACBDAEBIKPPqiRAgAABAk1AAGgcJgQIECBAIENAAMjosyoJECBAgEATEAAahwkBAgQIEMgQEAAy+qxKAgQIECDQBASAxmFCgAABAgQyBASAjD6rkgABAgQINAEBoHGYECBAgACBDAEBIKPPqiRAgAABAk1AAGgcJgQIECBAIENAAMjosyoJECBAgEATEAAahwkBAgQIEMgQEAAy+qxKAgQIECDQBASAxmFCgAABAgQyBASAjD6rkgABAgQINAEBoHGYECBAgACBDAEBIKPPqiRAgAABAk1AAGgcJgQIECBAIENAAMjosyoJECBAgEATEAAahwkBAgQIEMgQEAAy+qxKAgQIECDQBASAxmFCgAABAgQyBASAjD6rkgABAgQINAEBoHGYECBAgACBDAEBIKPPqiRAgAABAk1AAGgcJgQIECBAIENAAMjosyoJECBAgEATEAAahwkBAgQIEMgQEAAy+qxKAgQIECDQBASAxmFCgAABAgQyBASAjD6rkgABAgQINAEBoHGYECBAgACBDAEBIKPPqiRAgAABAk1AAGgcJgQIECBAIENAAMjosyoJECBAgEATEAAahwkBAgQIEMgQEAAy+qxKAgQIECDQBASAxmFCgAABAgQyBASAjD6rkgABAgQINIEbNbvVjpgQIECAAAEChxfwDMDhW6xAAgQIECBwLiAAnJs4QoAAAQIEDi8gABy+xQokQIAAAQLnAgLAuYkjBAgQIEDg8AICwOFbrEACBAgQIHAuIACcmzhCgAABAgQOLyAAHL7FCiRAgAABAucCAsC5iSMECBAgQODwAgLA4VusQAIECBAgcC4gAJybOEKAAAECBA4vIAAcvsUKJECAAAEC5wICwLmJIwQIECBA4PACAsDhW6xAAgQIECBwLiAAnJs4QoAAAQIEDi8gABy+xQokQIAAAQLnAisAfO/8sCMECBAgQIDAgQXeXgHgvw9coNIIECBAgACBc4H/WgHgG+fHHSFAgAABAgQOLPCvKwC8dOAClUaAAAECBAicC7y8AsCL58cdIUCAAAECBA4s8MKNKu4DNf69xhMHLlRpBAgQIECAwG2Bt+rmZ9YzAG/U+Ivbx/xJgAABAgQIHFzgz6q+76xnANb2CzVeqfHomtgIECBAgACBQwqsX/3/xRr/8sid8v6zbp+q8et35m4IECBAgACB4wl8qUr6yirr9AzA2n+8xnpB4K+tiY0AAQIECBA4lMA/VDW/UeN/VlXbALDmz9T4uxo/vyY2AgQIECBA4BACr1UVv1rjW6dq1osAt9v6bYDfrvHuJ2w/aJ8AAQIECBB46ARerTP+zRrtsf1yAFhVvVxjpYSvr4mNAAECBAgQeGgFvlZn/myNf7xcwelFgJePf6cO/GmNWzV+pcZjNWwECBAgQIDAwyHwTp3mesHf79R4/apTvlsAWJ/7vzXWiwL/pMaTNdavDfg1wUKwESBAgACBayrwZp3Xl2t8tsZ6tf96LL9yu/wiwCs/6c7B9Y6Bz9d4rsYv1/hwjadreHagEGwECBAgQGBngfU7/etf99+o8VKNF2r8dY31LL6NAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECuwn8H4vWgrbDP0X4AAAAAElFTkSuQmCC\";\n var oilIcon = \"data:image/png;base64,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QIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAg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IECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAjsLvD/ANnvn5CAlXSWAAAAAElFTkSuQmCC\";\n var hazardLightIcon = \"data:image/png;base64,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CEAAAhCAAAQgAAEIQAACEIAABCAAAQhAAAIQgAAEIAABCEAAAhCAAAQgAAEIQAACEIAABCAAAQhAAAIQgAAEIAABCEAAAhCAAAQgAAEIQAACEIAABCAAAQhAAAIQgAAEIAABCEAAAhCAAAQgAAEIQAACEIAABCAAAQhAAAIQgAAEIAABCEAAAhCAAAQgAAEIQAACEIAABCAAAQhAAAIQgAAEIAABCEAAAhCAAAQgAAEIQAACEIAABCAAAQhAAAIQgAAEIAABCEAAAhCAAAQgAAEIQAACEIAABCAAAQhAAAIQgAAEIAABCEAAAhCAAAQgAAEIQAACEIAABCAAAQhAAAIQgAAEIAABCEAAAhCAAAQgAAEIQAACEIAABCAAAQhAAAIQgAAEIAABCEAAAhCAAAQgAAEIQAACEIAABCAAAQhAAAIQgAAEIAABCEAAAhCAAAQgAAEIQAACEIAABCAAAQhAAAIQgAAEIAABCEAAAhCAAAQgAAEIQAACEIAABCAAAQhAAAIQgAAEIAABCEAAAhCAAAQgAAEIQAACEIAABCAAAQhAAAIQgAAEIAABCEAAAhCAAAQgAAEIQAACEIAABCAAAQhAAAIQgAAEIAABCEAAAhCAAAQgAAEIQAACEIAABCAAAQhAAAIQgAAEIAABCEAAAhCAAAQgAAEIQAACEIAABCAAAQhAAAIQgAAEIAABCEAAAhCAAAQgAAEIQAACEIAABCAAAQhAAAIQgAAEIAABCEAAAhCAAAQgAAEIQAACEIAABCAAAQhAAAIQgAAEIAABCEAAAhCAAAQgAAEIQAACEIAABCAAAQhAAAIQgAAEIAABCEAAAhCAAAQgAAEIQAACEIAABCAAAQhAAAIQgAAEIAABCEAAAhCAAAQgAAEIQAACEIAABCAAAQhAAAIQgAAEIAABCEAAAhCAAAQgAAEIQAACEIAABCAAAQhAAAIQgAAEIAABCEAAAhCAAAQgAAEIQAACEIAABCAAAQhAAAIQgAAEIAABCEAgPYH/Dy0Qa6JZMO33AAAAAElFTkSuQmCC\";\n var handBrakeIcon = \"data:image/png;base64,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PSJodHRwOi8vbnMuYWRvYmUuY29tL2V4aWYvMS4wLyI+CiAgICAgICAgIDx0aWZmOkNvbXByZXNzaW9uPjE8L3RpZmY6Q29tcHJlc3Npb24+CiAgICAgICAgIDx0aWZmOlJlc29sdXRpb25Vbml0PjI8L3RpZmY6UmVzb2x1dGlvblVuaXQ+CiAgICAgICAgIDx0aWZmOk9yaWVudGF0aW9uPjE8L3RpZmY6T3JpZW50YXRpb24+CiAgICAgICAgIDx0aWZmOlBob3RvbWV0cmljSW50ZXJwcmV0YXRpb24+MjwvdGlmZjpQaG90b21ldHJpY0ludGVycHJldGF0aW9uPgogICAgICAgICA8ZXhpZjpQaXhlbFhEaW1lbnNpb24+NTEyPC9leGlmOlBpeGVsWERpbWVuc2lvbj4KICAgICAgICAgPGV4aWY6UGl4ZWxZRGltZW5zaW9uPjUxMjwvZXhpZjpQaXhlbFlEaW1lbnNpb24+CiAgICAgIDwvcmRmOkRlc2NyaXB0aW9uPgogICA8L3JkZjpSREY+CjwveDp4bXBtZXRhPgrId0DUAABAAElEQVR4Ae3dCbx9U/3/cWWeZzIPGTJFRIQIDUopSaSURkpJpYiURKkUDcqvlFJKk9KkhJKUOYnMfM3zPH/R//2u7/fvut87nLP3Wp+91jmv9Xgsvvfcvdbns577nL3PPWevtWeaiYIAAggggAACCCCAAAIIIIAAAggggAACCCCAAAIIIIAAAggggAACCCCAAAIIIIAAAggggAACCCCAAAIIIIAAAggggAACCCCAAAIIIIAAAggggAACCCCAAAIIIIAAAggggAACCCCAAAIIIIAAAggggAACCCCAAAIIIIAAAggggAACCCCAAAIIIIAAAggggAACCCCAAAIIIIAAAggggAACCCCAAAIIIIAAAggggAACCCCAAAIIIIAAAggggAACCCCAAAIIIIAAAggggAACCCCAAAIIIIAAAggggAACCCCAAAIIIIAAAggggAACCCCAAAIIIIAAAggggAACCCCAAAIIIIAAAggggAACCCCAAAIIIIAAAggggAACCCCAAAIIIIAAAggggAACCCCAAAIIIIAAAggggEDfAjP33YIGCCAwKAJzaiA+BjwxKANiHAgg0LvAM3rflC0RQKBigVWU+w6qK6uuOK0uof+73KR6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QAABBBCoW2CK0n+Bqmf9/f8y8hqA6Q/epX94w1OnP8D/EUAAAQQQQKBKgbOV9UaqTzv5eyQjrwHwz9PLg/rHD1T9+01Vx/qkQA9TEEAAAQQQQKBQAZ/Ht1O9Z6z8ejmx+3oAzxlcfqwOeAwBBBBAAAEEihK4TNnsq3rCRFn18gbA7f1Vgd8IvEf15dN+1v8oCCCAAAIIIFCIwCXK4wjVo1WfmCynXt8AjOxnBf2wo+oqqitOq0vq/2NdT6CHKQgggAACCCCQWOB+9XeLqu/l83vVX6hertpzafIGYKzOZ9eDC6im6m+sGDyGAAIIIIDAsAt4ER+f/B8adgjGjwACCCCAAAIIIIAAAggggAACCCCAAAIIIIAAAggggAACCCCAAAIIIIAAAggggAACCCCAAAIIIIAAAggggAACCCCAAAIIIIAAAggggAACCCCAAAIIIIAAAggggAACCCCAAAIIIIAAAggggAACCCCAAAIIIIAAAggggAACCCCAAAIIIIAAAggggAACCCCAAAIIIIAAAggggAACCCCAAAIIIIAAAggggAACCCCAAAIIIIAAAggggAACCCCAAAIIIIAAAggggAACCCCAAAIIIIAAAggggAACCCCAAAIIIIAAAggggAACCCCAAAIIIIAAAggggAACCCCAAAIIIIAAAggggAACCCCAAAIIIIAAAggggAACCCCAAAIIIIAAAggggAACCCCAAAIIIIAAAggggAACCCDQicD/A6GsVXhewjwAAAAAAElFTkSuQmCC\";\n var safetyBeltIcon = \"data:image/png;base64,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\";\n var turnLightIcon = \"data:image/png;base64,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PSJodHRwOi8vbnMuYWRvYmUuY29tL2V4aWYvMS4wLyI+CiAgICAgICAgIDx0aWZmOkNvbXByZXNzaW9uPjE8L3RpZmY6Q29tcHJlc3Npb24+CiAgICAgICAgIDx0aWZmOlJlc29sdXRpb25Vbml0PjI8L3RpZmY6UmVzb2x1dGlvblVuaXQ+CiAgICAgICAgIDx0aWZmOk9yaWVudGF0aW9uPjE8L3RpZmY6T3JpZW50YXRpb24+CiAgICAgICAgIDx0aWZmOlBob3RvbWV0cmljSW50ZXJwcmV0YXRpb24+MjwvdGlmZjpQaG90b21ldHJpY0ludGVycHJldGF0aW9uPgogICAgICAgICA8ZXhpZjpQaXhlbFhEaW1lbnNpb24+NTEyPC9leGlmOlBpeGVsWERpbWVuc2lvbj4KICAgICAgICAgPGV4aWY6UGl4ZWxZRGltZW5zaW9uPjUxMjwvZXhpZjpQaXhlbFlEaW1lbnNpb24+CiAgICAgIDwvcmRmOkRlc2NyaXB0aW9uPgogICA8L3JkZjpSREY+CjwveDp4bXBtZXRhPgrId0DUAAAqdklEQVR4Ae3dT4gu2XUYcI0kS/k3xJGxPJIV3NHCEoYB24sQCATE4BBQEpnsTDZJULyx8IA3XjmreOWdwAnBiSEJxguvkliLEIbRIt7GZsYkiqV4CizyRhJxjGQ5SLaknDN637zX/b6urj/33rpV9btwp7u/qrr31u9U1Tn9zevud7xDI0CAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgcVuC5w56ZE5sj8N7Y+X3Rn4/+l6K/J/rr0b8eXSNAYN8CfzGW/2L0b0b/4+hfi/5/Hn8dHzQCBM4m8O444b8T/d9Hz4fCd+70fFj8VvR/Hv2vR9cIENiPQN6zee/mPZz38t37O4uAfxf9b0d/V3SNAIGTCPyjOM8vRb/7UBj7+tdi/w9G1wgQ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AQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgcESB/w+GZ9qlpAJtQgAAAABJRU5ErkJggg==\";\n var lowBeamIcon = \"data:image/png;base64,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\";\n var highBeamIcon = \"data:image/png;base64,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AgwAQqwGkkCgUQIrqDVbKjZoi6n6e6KiicUf9HcoblH4LH0/Xqe4SvGwgoJASAEGACFXC0kh0DgB33FwHUX7oMB/+7kJiujlGSV4u8If7p0xQ89xJ0shUNISYACQ1voiWwSaJuAPf+8d8GBg/ZFH70FYciQmjTz6nIMqik/C862pfXdKPzruU3R+yPsbvgcBFAQaI8AAoDGrkoYg0GgBDxQ6BwX+f2uA0Pp7CT33lKL1gd56bP+Qb3+Ob+7CoiCAAAIIIIAAAggggAACCCCAAAIIIIAAAggggAACCCCAAAIIIIAAAggggAACCCCAAAIIIIAAAggggAACCCCAAAIIIIAAAggggAACCCCAAAIIIIAAAggggAACCCCAAAIIIIAAAggggAACCCCAAAIIIIAAAggggAACCCCAAAIIIIAAAggggAACCCCAAAIIIIAAAggggAACCCCAAAIIIIAAAggggAACCCCAAAIIIIAAAggggAACCCCAAAIIIIAAAggggAACCCCAAAIIIIAAAggggAACCCCAAAIIIIAAAggggAACCCCAAAIIIIAAAggggAACCCCAAAIIIIAAAggggAACCCCAAAIIIIAAAggggAACCCCAAAIIIIAAAggggAACCCCAAAIIIIAAAggggAACCCCAAAIIIIAAAggggAACCCCAAAIIIIAAAggggAACCCCAAAIIIIAAAggggAACCCCAAAIIIIAAAggggAACCCCAAAIIIIAAAggggAACCCCAAAIIIIAAAggggAACCCCAAAIIIIAAAggggAACCCCAAAIIIIAAAggggAACCCCAAAIIIIAAAggggAACBr12rAAAAdRJREFUCCCAAAIIIIAAAggggAACCCCAAAIIIIAAAggggAACCCCAAAIIIIAAAggggAACCCCAAAIIIIAAAggggAACCCCAAAIIIIAAAggggAACCCCAAAIIIIAAAggggAACCCCAAAIIIIAAAggggAACCCCAAAIIIIAAAggggAACCCCAAAIIIIAAAggggAACCCCAAAIIIIAAAggggAACCCCAAAIIIIAAAggggAACCCCAAAIIIIAAAggggAACCCCAAAIIIIAAAggggAACCCCAAAIIIIAAAggggAACCCCAAAIIIIAAAggggAACCCCAAAIIIIAAAggggAACCCCAAAIIIIAAAggggAACCCCAAAIIIIAAAggggAACCCCAAAIIIIAAAggggAACCCCAAAIIIIAAAggggAACCCCAAAIIIIAAAggggAACCCCAAAIIIIAAAggggAACCCCAAAIIIIAAAggggAACCCCAAAIIIIAAAggggAACCCCAAAIIIIAAAggggAACCCCAAAIIIIAAAggggAACCCCAAAIIIIAAAggggAACCCCAAAIIIIAAAggggAACCCCAAAIIIIAAAggggAACCCCAAAIIIIAAAggggAACCCCAAAIIIIAAAukK/H8kV9fne99r1gAAAABJRU5ErkJggg==\";\n var absIcon = \"data:image/png;base64,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QEghxh1zNnO3xQRqE9gXFp6A1hmYl2B7335SuyuSMLAJvHwT9FToEmidcdPlbcmODMmSTC35E1gZIf4EWmfcM1czZ1tGEHBBGgGotPhgvD8Dumrps3Hfcm90Nyh/eMLSPQKbIeTtoAt6lIc8uz4Hmeh/C/1lj/Lb/m1QS/cI7ICQL4OuOUHoT2Ib7jB+fYJtO7dJ15NP1Q7fERt8EcoBOq7wm//h0FvG3cDrdYbA6oiU5yh7dwz4GR+MkpPw+pcbob2Fnp/xin2LCZQJbIV/eFfAy8sfjnh/LZYfBr1mxHpebAITE5iLLT8GfQY67DAVD0O9H8pDWhYTqEpgY2ywN/SvoR+H8iEmv4I+DR027ppcRt/oI32lz/R9byhjsZhAVQKzscHfQ/mtfti4Zi5mTmZutlQg4CMAFWD1rMpDuq+A8kITKvdYedjyyuV6MV5vhlpMICQBJkVeAPec5frs0nt+VvzP3zjn6SomxWGvWDyVYLnDykQ76PUPWHYv9L7lr3zf+//9+IzJ2GICIQlsCWN7QYtcy9z7a2iRa/8N75l7LSZgAiZgAiZgAiZgAiZgAiZgAiZgAiZgAiZgAiZgAiZgAiZgAiZgAiZgAiZgAiZgAiZgAiZgAiZgAiZgAiZgAiZgAiZgAiZgAiZgAiZgAiZgAiZgAiZgAiZgAiZgAiZgAiZgAiZgAiZgAiZgAiZgAiZgAiZgAiZgAiZgAiZgAiZgAiZgAiZgAiZgAiZgAiZgAiZgAiZgAiZgAiZgAiZgAiZgAiZgAiZgAiZgAiZgAiZgAiZgAiZgAiZgAiZgAiZgAiZgAiZgAiZgAiZgAiZgAiZgAiZgAiZgAiZgAiZgAiZgAiZgAiZgAiZgAiZgAiZgAiZgAiZgAiZgAiZgAiZgAiZgAiZgAiZgAiZgAiZgAiZgAiZgAiZgAiZgAiZgAiZgAiZgAiZgAiZgAiZgAiZgAiZgAiZgAiZgAiZgAiZgAiZgAiZgAiZgAiZgAiZgAiZgAiZgAiZgAiZgAiZgAiZgAiZgAiZgAiZgAiZgAiZgAiZgAiZgAiZgAiZgAiZgAiZgAiZgAiZgAiZgAiZgAiZgAiZgAiZgAiZgAiZgAiZgAiZgAiZgAiZgAiZgAiZgAiZgAiZgAiZgAiZgAiZgAiZgAiZgAiZgAiZgAiZgAiZgAiZgAiZgAiZgAiZgAiZgAiZgAiZgAiZgAiZgAiZgAiZgAiZgAiZgAiZgAiZgAiZgAiZgAiZgAiZgAiZgAiZgAiZgAiZgAiZgAiZgAiZgAiZgAiZgAiZgAiZgAiZgAiZgAiZgAiZgAiZgAiZgAiZgAiZgAiZgAiZgAiZgAiZgAiZgAiZgAiZgAiZgAiZgAiZgAiZgAiZgAiZgAiZgAiZgAiZgAiZgAiZgAiZgAiZgAiZgAiZgAiZgAiZgAiZgAiZgAiZgAiZgAiZgAiZgAiZgAiZgAiZgAiZgAiZgAiZgAiZgAiZgAiZgAiZgAiZgAiZgAiZgAiZgAiZgAiZgAiZgAiZgAiZgAiZgAiZgAiZgAiZgAiZgAiZgAiZgAiZgAiZgAiZgAiZgAiZgAiZgAg0R+P96vIJbMpOjQgAAAABJRU5ErkJggg==\";\n\n var resultadoEditorOptions = { height: 130, width: '100%' };\n\n var checkEngineApEncEditorOptions = {\n buttons: [{\n name: \"engine\",\n location: \"before\",\n options: {\n icon: engineIcon,\n stylingMode: \"text\",\n onClick: function (e) {\n //code\n }\n }\n }]\n }\n\n var indBateriaEditorOptions = {\n buttons: [{\n name: \"battery\",\n location: \"before\",\n options: {\n icon: batteryIcon,\n stylingMode: \"text\",\n onClick: function (e) {\n //code\n }\n }\n }]\n }\n\n var aceiteApEncEditorOptions = {\n buttons: [{\n name: \"oil\",\n location: \"before\",\n options: {\n icon: oilIcon,\n stylingMode: \"text\",\n onClick: function (e) {\n //code\n }\n }\n }]\n }\n\n var obsFrenoManoEditorOptions = {\n buttons: [{\n name: \"hazardLight\",\n location: \"before\",\n options: {\n icon: hazardLightIcon,\n stylingMode: \"text\",\n onClick: function (e) {\n //code\n }\n }\n }]\n }\n\n var obsIntermitentesEditorOptions = {\n buttons: [{\n name: \"handBrake\",\n location: \"before\",\n options: {\n icon: handBrakeIcon,\n stylingMode: \"text\",\n onClick: function (e) {\n //code\n }\n }\n }]\n }\n\n var obsCinturonSeguridadEditorOptions = {\n buttons: [{\n name: \"safetyBelt\",\n location: \"before\",\n options: {\n icon: safetyBeltIcon,\n stylingMode: \"text\",\n onClick: function (e) {\n //code\n }\n }\n }]\n }\n\n var obsDireccionalesEditorOptions = {\n buttons: [{\n name: \"turnLight\",\n location: \"before\",\n options: {\n icon: turnLightIcon,\n stylingMode: \"text\",\n onClick: function (e) {\n //code\n }\n }\n }]\n }\n\n var obsFrenosABSEditorOptions = {\n buttons: [{\n name: \"abs\",\n location: \"before\",\n options: {\n icon: absIcon,\n stylingMode: \"text\",\n onClick: function (e) {\n //code\n }\n }\n }]\n }\n\n var obsLucesBajasEditorOptions = {\n buttons: [{\n name: \"lowBeam\",\n location: \"before\",\n options: {\n icon: lowBeamIcon,\n stylingMode: \"text\",\n onClick: function (e) {\n //code\n }\n }\n }]\n }\n\n var obsLucesAltasEditorOptions = {\n buttons: [{\n name: \"highBeam\",\n location: \"before\",\n options: {\n icon: highBeamIcon,\n stylingMode: \"text\",\n onClick: function (e) {\n //code\n }\n }\n }]\n }\n\n async function onFieldDatosChecklistChanged(e) {\n if (formDatosGeneralesRef.current) {\n var formDatosGenerales = formDatosGeneralesRef.current.instance();\n\n if (e) {\n if (e.dataField === 'NumeroVehiculo') {\n var NumeroVehiculo = checkListPayload.header.NumeroVehiculo;\n\n if (NumeroVehiculo) {\n for (var vehiculosIndex in vehiculos) {\n var singleVehiculo = vehiculos[vehiculosIndex];\n\n if (singleVehiculo.NumeroVehiculo === NumeroVehiculo) {\n formDatosGenerales.updateData('Placa', singleVehiculo.Placa);\n formDatosGenerales.updateData('Anio', singleVehiculo.Anio);\n formDatosGenerales.updateData('Descripcion', singleVehiculo.Descripcion);\n }\n }\n }\n else {\n formDatosGenerales.updateData('Placa', '');\n formDatosGenerales.updateData('Anio', '');\n formDatosGenerales.updateData('Descripcion', '');\n }\n }\n }\n }\n }\n\n useEffect(() => {\n window.addEventListener('popstate', (e) => {\n var hash;\n\n try {\n hash = e.target.location.hash;\n }\n catch (e) {\n hash = '';\n }\n\n if (hash === '#/ChecklistVeh') {\n history.push('/ChecklistVeh');\n\n window.location.reload();\n }\n });\n\n async function initialize() {\n //Obtenemos el listado de Motivo de Cancelacion\n var getMotivoCancelacionList = await getMotivoCancelacionRecords();\n\n var motivos = [];\n\n for (var motivoIndex in getMotivoCancelacionList) {\n motivos.push({\n name: getMotivoCancelacionList[motivoIndex].value,\n value: getMotivoCancelacionList[motivoIndex].value\n\n });\n }\n\n setMotivoCancelacion(motivos);\n\n //Obtenemos el listado de Sucursales\n var sucursalList = await getSucursales();\n\n //Obtenemos el listado de Personales\n var personalList = await getPersonal();\n\n //Obtenemos el listado de Vehiculos\n var vehiculoList = await getVehiculo();\n }\n\n initialize();\n\n //En caso de solicitar un ID especifico, redireccionamos a ese ID\n if (!props.match.isExact) {\n var urlID = props.location.pathname.replace('/ChecklistVeh/', '');\n\n editChecklistButton(urlID);\n }\n\n // eslint-disable-next-line\n }, []);\n\n function overrideOnValueChanged(e) {\n //Deshabilitamos la escritura en los campos tipo select\n if (e.parentType === 'dataRow' && (e.dataField === 'Evaluacion' || e.dataField === 'Uniforme' || e.dataField === 'Presentacion' || e.dataField === 'Disposicion' || e.dataField === 'Actitud' || e.dataField === 'Concepto' || e.dataField === 'Responsable' || e.dataField === 'Trabajador' || e.dataField === 'Bienvenida' || e.dataField === 'DeteccionNecesidades' || e.dataField === 'LaborVenta' || e.dataField === 'ConocimientoProducto' || e.dataField === 'ManejoObjeciones' || e.dataField === 'Cierre' || e.dataField === 'ProductosAdicionales' || e.dataField === 'Denominacion')) {\n e.editorOptions.searchEnabled = false;\n }\n\n //Hacemos la data persistente en cuanto el usuario escriba en el campo\n // if (e.parentType === \"dataRow\") {\n // e.editorOptions.valueChangeEvent = \"input\";\n // }\n }\n\n async function getMotivoCancelacionRecords() {\n let apiName = 'AdminSC';\n let path = '/getcatalogo';\n\n let myInit = {\n headers: {\n 'Content-Type': 'application/json',\n Authorization: `${(await Auth.currentSession()).getAccessToken().getJwtToken()}`\n },\n queryStringParameters: {\n type: 'MotivoCancelacionChecklist',\n username: JSON.parse(JSON.stringify(await Auth.currentAuthenticatedUser())).username\n }\n }\n\n var responsableGetList = await API.get(apiName, path, myInit);\n\n return responsableGetList;\n }\n\n async function uploadChunk(file, uploadInfo) {\n try {\n var responseS3 = await Storage.put(\"/checklist/\" + id + \"/\" + file.name, uploadInfo.chunkBlob, {\n contentType: file.type,\n ACL: 'public-read'\n });\n\n //Obtenemos el nombre del bucket\n let bucketName = Storage._config.AWSS3.bucket;\n\n\n let apiName = 'AdminSC';\n let path = '/uploadattachment';\n\n let myInit = {\n headers: {\n 'Content-Type': 'application/json',\n Authorization: `${(await Auth.currentSession()).getAccessToken().getJwtToken()}`\n },\n body: {\n action: 'register',\n bucketName: bucketName,\n type: 'checklist',\n id: id,\n Key: \"/checklist/\" + id + \"/\" + file.name,\n fileName: file.name,\n username: JSON.parse(JSON.stringify(await Auth.currentAuthenticatedUser())).username\n }\n }\n\n var attachmentsResult = await API.post(apiName, path, myInit);\n\n //Obtenemos los attachments\n var attachmentsGet = await Storage.list(\"/checklist/\" + id);\n var attachmentsAux = [];\n\n for (var attachmentsGetIndex in attachmentsGet) {\n var singleAttachmentsGet = attachmentsGet[attachmentsGetIndex];\n\n var singleAttachment = {\n name: singleAttachmentsGet.key.split('/').pop(),\n isDirectory: false,\n size: singleAttachmentsGet.size,\n };\n\n attachmentsAux.push(singleAttachment);\n }\n\n setAttachments(attachmentsAux);\n\n }\n catch (err) {\n console.log(\"Error uploading file:\", err);\n }\n }\n\n async function onAttachmentDeleting(e) {\n var fileName = e.item.key;\n\n //Primero borramos el archivo de S3\n var attachmentsDelete = await Storage.remove(\"/checklist/\" + id + \"/\" + fileName);\n\n //Despues borramos el attachment en Intelisis\n let bucketName = Storage._config.AWSS3.bucket;\n\n let apiName = 'AdminSC';\n let path = '/uploadattachment';\n\n let myInit = {\n headers: {\n 'Content-Type': 'application/json',\n Authorization: `${(await Auth.currentSession()).getAccessToken().getJwtToken()}`\n },\n body: {\n action: 'delete',\n bucketName: bucketName,\n type: 'checklist',\n id: id,\n Key: \"/checklist/\" + id + \"/\" + fileName,\n fileName: fileName,\n username: JSON.parse(JSON.stringify(await Auth.currentAuthenticatedUser())).username\n }\n }\n\n var attachmentsResult = await API.post(apiName, path, myInit);\n\n //Finalmente sincronizamos el state\n var attachmentsGet = await Storage.list(\"/checklist/\" + id);\n var attachmentsAux = [];\n\n for (var attachmentsGetIndex in attachmentsGet) {\n var singleAttachmentsGet = attachmentsGet[attachmentsGetIndex];\n\n var singleAttachment = {\n name: singleAttachmentsGet.key.split('/').pop(),\n isDirectory: false,\n size: singleAttachmentsGet.size,\n };\n\n attachmentsAux.push(singleAttachment);\n }\n\n setAttachments(attachmentsAux);\n };\n\n function downloadBlob(blob, filename) {\n const url = URL.createObjectURL(blob);\n const a = document.createElement('a');\n a.href = url;\n a.download = filename || 'download';\n const clickHandler = () => {\n setTimeout(() => {\n URL.revokeObjectURL(url);\n a.removeEventListener('click', clickHandler);\n }, 150);\n };\n\n a.addEventListener('click', clickHandler, false);\n\n a.click();\n\n return a;\n };\n\n async function onItemDownloading(e) {\n e.cancel = true;\n\n const downloadFileResponse = await Storage.get(\"/checklist/\" + id + \"/\" + e.item.name, { download: true });\n\n downloadBlob(downloadFileResponse.Body, e.item.name);\n };\n\n function openBlob(blob, filename) {\n const url = URL.createObjectURL(blob);\n\n window.open(url, \"_blank\");\n };\n\n async function onAttachmentOpen(e) {\n const downloadFileResponse = await Storage.get(\"/checklist/\" + id + \"/\" + e.file.name, { download: true });\n\n openBlob(downloadFileResponse.Body, e.file.name);\n };\n\n function onHidingToast() {\n setVisibleToast(false);\n }\n\n function refreshButton() {\n if (gridTableroRef.current) {\n var gridTablero = gridTableroRef.current.instance();\n\n gridTablero.refresh();\n }\n }\n\n async function newButton() {\n try {\n setVisibleLoadPanel(true);\n\n let apiName = 'AdminSC';\n let path = '/procesachecklist';\n\n let myInit = {\n headers: {\n 'Content-Type': 'application/json',\n Authorization: `${(await Auth.currentSession()).getAccessToken().getJwtToken()}`\n },\n queryStringParameters: {\n personal: props.personal,\n checklistAccess: props.checklistAccess,\n action: 'new',\n mov: 'Check List Veh',\n username: JSON.parse(JSON.stringify(await Auth.currentAuthenticatedUser())).username\n }\n };\n\n var payloadNew = await API.get(apiName, path, myInit);\n\n setCheckListPayload(payloadNew);\n\n setAttachments([]);\n\n setIsDetail(true);\n setId(undefined);\n setAllowNew(true);\n\n setActivateButton(true);\n setActivateVoidButton(false);\n setActivateStopwatch(false);\n setActivateSaveButton(true);\n setActivateDeleteButton(true);\n setAllowUpdating(false);\n\n setVisibleLoadPanel(false);\n }\n catch (e) {\n setVisibleLoadPanel(false);\n if (e === 'No current user') {\n history.push('/');\n\n window.location.reload();\n }\n }\n };\n\n async function deleteButton() {\n try {\n if (!window.confirm('¿Desea eliminar el checklist?'))\n return;\n\n setVisibleLoadPanel(true);\n\n var ID = checkListPayload.header.ID;\n\n if (!ID) {\n //Vamos al tablero de control\n history.push('/ChecklistVeh');\n return;\n }\n\n let apiName = 'AdminSC';\n let path = '/procesachecklist';\n\n let myInit = {\n headers: {\n 'Content-Type': 'application/json',\n Authorization: `${(await Auth.currentSession()).getAccessToken().getJwtToken()}`\n },\n body: {\n ID: ID,\n payload: checkListPayload,\n action: 'delete',\n username: JSON.parse(JSON.stringify(await Auth.currentAuthenticatedUser())).username\n }\n }\n\n var payloadPost = await API.post(apiName, path, myInit);\n\n if (payloadPost.ok === 'true') {\n setVisibleLoadPanel(false);\n\n setVisibleToast(true);\n setMessageToast('Checklist eliminado con éxito');\n setTypeToast('success')\n\n setIsDetail(false);\n\n //Vamos al tablero de control\n history.push('/ChecklistVeh');\n }\n else if (payloadPost.ok === 'false') {\n setVisibleLoadPanel(false);\n\n setVisibleToast(true);\n setMessageToast(payloadPost.message);\n setTypeToast('error')\n }\n }\n catch (e) {\n setVisibleLoadPanel(false);\n\n if (e === 'No current user') {\n history.push('/');\n\n window.location.reload();\n }\n }\n }\n\n function onExporting(e) {\n const workbook = new Workbook();\n const worksheet = workbook.addWorksheet('Datos');\n\n exportDataGrid({\n component: e.component,\n worksheet,\n autoFilterEnabled: true,\n }).then(() => {\n workbook.xlsx.writeBuffer().then((buffer) => {\n saveAs(new Blob([buffer], { type: 'application/octet-stream' }), 'Datos.xlsx');\n });\n });\n e.cancel = true;\n };\n\n return (\n <div>\n {isDetail === false ? (\n <div class=\"bg-gray-200 m-2\">\n <h1 class=\"font-sans inline-block text-xl font-bold text-gray-700 leading-8 align-top mb-1\"><FontAwesomeIcon icon={faList} size=\"lg\" /> Checklist Vehículos</h1>\n </div>\n ) :\n (\n <div class=\"bg-gray-200 m-2\">\n <h1 class=\"font-sans inline-block text-xl font-bold text-gray-700 leading-8 align-top mb-1\"><FontAwesomeIcon icon={faTruckMoving} size=\"xl\" /> {(checkListPayload.header ? checkListPayload.header.Movimiento : 'Check List Veh')}</h1>\n <TransactionStatus {...props} Estatus={checkListPayload.header.Estatus} />\n </div>\n )}\n\n <LoadPanel\n shadingColor=\"rgba(0,0,0,0.4)\"\n visible={visibleLoadPanel}\n showIndicator={true}\n message=\"Por favor espere...\"\n shading={true}\n showPane={true}\n hideOnOutsideClick={false}\n />\n\n <Toast\n visible={visibleToast}\n message={messageToast}\n type={typeToast}\n onHiding={onHidingToast}\n displayTime={5000}\n width={'auto'}\n position={{\n my: 'top center',\n at: 'top center',\n of: window,\n offset: '0 130'\n }}\n />\n\n <div class=\"bg-gray-200 m-2\">\n {isDetail === false ? (\n <div class=\"bg-white p-3 shadow-xl\">\n\n {props.newChecklistVeh.toString() === 'true' ?\n (\n <div>\n <Link to=\"/ChecklistVeh/undefined\">\n <button class=\"mb-2 bg-green-500 hover:bg-green-700 text-white font-bold py-2 px-4 rounded\" onClick={() => newButton()}><FontAwesomeIcon icon={faFileAlt} /> Nuevo Checklist</button>\n </Link>\n\n <button onClick={refreshButton} type=\"submit\" class=\"ml-4 mb-4 bg-blue-500 hover:bg-blue-700 text-white font-bold py-2 px-4 rounded\">\n <FontAwesomeIcon icon={faArrowsRotate} /> Actualizar\n </button>\n </div>\n ) :\n (\n <div>\n <button onClick={refreshButton} type=\"submit\" class=\"mb-4 bg-blue-500 hover:bg-blue-700 text-white font-bold py-2 px-4 rounded\">\n <FontAwesomeIcon icon={faArrowsRotate} /> Actualizar\n </button>\n </div>\n )}\n\n <div className=\"options mb-2\">\n <div className=\"option\">\n <CheckBox text=\"Expandir todos los grupos\"\n value={autoExpandAll}\n onValueChanged={onAutoExpandAllChanged}>\n </CheckBox>\n </div>\n </div>\n <DataGrid\n height={800}\n id=\"gridContainer\"\n columnsAutoWidth={true}\n filterBuilder={filterBuilder}\n dataSource={store}\n defaultFilterValue={filterValue}\n allowColumnReordering={true}\n allowColumnResizing={true}\n columnResizingMode={\"widget\"}\n showBorders={true}\n rowAlternationEnabled={true}\n showRowLines={true}\n showColumnLines={true}\n remoteOperations={{ filtering: true }}\n ref={gridTableroRef}\n onExporting={onExporting}\n >\n <Scrolling rowRenderingMode='virtual'></Scrolling>\n <Paging defaultPageSize={10} />\n <Pager\n visible={true}\n allowedPageSizes={allowedPageSizes}\n displayMode='compact'\n showPageSizeSelector={true}\n showInfo={true}\n showNavigationButtons={true} />\n <FilterRow visible={true} />\n <FilterPanel visible={true} />\n <FilterBuilderPopup position={filterBuilderPopupPosition} />\n\n <HeaderFilter visible={true} />\n\n <GroupPanel visible={true} />\n <SearchPanel visible={true} />\n <ColumnChooser\n enabled={true}\n mode='select'\n >\n <ColumnChooserSearch\n enabled={true}\n />\n\n <ColumnChooserSelection\n allowSelectAll={true}\n selectByClick={true}\n recursive={true}\n />\n </ColumnChooser>\n <Grouping autoExpandAll={autoExpandAll} />\n <StateStoring enabled={true} type=\"localStorage\" storageKey=\"gridContainerChecklistVeh\" />\n <Export enabled={true} />\n\n <Column caption=\"\" alignment=\"center\" width={100} cellRender={editCheckList} />\n\n <Column caption=\"Plaza\" dataField=\"Plaza\" dataType=\"string\" width={150} groupIndex={0} />\n <Column caption=\"Número de Vehículo\" dataField=\"NumeroVehiculo\" dataType=\"string\" width={150} groupIndex={1} />\n <Column caption=\"Placa\" dataField=\"Placa\" dataType=\"string\" width={150} />\n <Column caption=\"Marca\" dataField=\"Descripcion\" dataType=\"string\" width={150} />\n <Column dataField=\"MovID\" dataType=\"string\" width={190} caption=\"Folio\" />\n <Column dataField=\"FechaEmision\" caption=\"Fecha Requerida\" dataType=\"date\" width={150} />\n <Column dataField=\"Estatus\" dataType=\"string\" width={150} />\n <Column caption=\"Nombre Sucursal\" dataField=\"Nombre\" dataType=\"string\" groupIndex={1} />\n <Column caption=\"Nombre Auditor\" dataField=\"NombreSupervisor\" dataType=\"string\" width={350} />\n\n </DataGrid>\n </div>\n ) : (<div />)}\n <Route exact path=\"/ChecklistVeh/:ID\" render={({ match }) => {\n return (\n <div class=\"bg-gray-200\">\n {isDetail.toString() === 'true' ?\n (\n <div>\n <Link to=\"/ChecklistVeh\">\n <button onClick={cancelEditButton} type=\"submit\" class=\"mb-4 bg-red-500 hover:bg-red-700 text-white font-bold py-2 px-4 rounded\">\n <FontAwesomeIcon icon={faArrowRotateLeft} /> Regresar\n </button>\n </Link>\n\n {activateSaveButton.toString() === 'true' ?\n (\n <button onClick={saveButton} type=\"submit\" class=\"ml-4 mb-4 bg-blue-500 hover:bg-blue-700 text-white font-bold py-2 px-4 rounded\">\n <FontAwesomeIcon icon={faSave} /> Guardar Cambios\n </button>\n ) : (\n <button disabled onClick={saveButton} type=\"submit\" class=\"ml-4 mb-4 cursor-not-allowed disabled:opacity-75 bg-gray-500 hover:bg-gray-700 text-white font-bold py-2 px-4 rounded\">\n <FontAwesomeIcon icon={faSave} /> Guardar Cambios\n </button>\n )}\n\n {activateButton.toString() === 'true' ?\n (\n <button onClick={confirmButton} type=\"submit\" class=\"ml-4 mb-4 bg-green-500 hover:bg-green-700 text-white font-bold py-2 px-4 rounded\">\n <FontAwesomeIcon icon={faClipboardCheck} /> Confirmar Checklist\n </button>\n ) : (\n <button disabled onClick={confirmButton} type=\"submit\" class=\"ml-4 mb-4 cursor-not-allowed disabled:opacity-75 bg-gray-500 hover:bg-gray-700 text-white font-bold py-2 px-4 rounded\">\n <FontAwesomeIcon icon={faClipboardCheck} /> Confirmar Checklist\n </button>\n )}\n\n {activateVoidButton.toString() === 'true' ?\n (\n <button onClick={cancelChecklistButton} type=\"submit\" class=\"ml-4 mb-4 bg-red-500 hover:bg-red-700 text-white font-bold py-2 px-4 rounded\">\n <FontAwesomeIcon icon={faWindowClose} /> Omitir Checklist\n </button>\n ) : (\n <button disabled onClick={cancelChecklistButton} type=\"submit\" class=\"ml-4 mb-4 cursor-not-allowed disabled:opacity-75 bg-gray-500 hover:bg-gray-700 text-white font-bold py-2 px-4 rounded\">\n <FontAwesomeIcon icon={faWindowClose} /> Omitir Checklist\n </button>\n )}\n\n {activateStopwatch.toString() === 'true' ?\n (\n <button onClick={startStopwatch} type=\"submit\" class=\"ml-4 mb-4 bg-yellow-500 hover:bg-yellow-700 text-white font-bold py-2 px-4 rounded\">\n <FontAwesomeIcon icon={faStopwatch} /> Iniciar Checklist\n </button>\n ) : (\n <button disabled onClick={startStopwatch} type=\"submit\" class=\"ml-4 mb-4 cursor-not-allowed disabled:opacity-75 bg-gray-500 hover:bg-gray-700 text-white font-bold py-2 px-4 rounded\">\n <FontAwesomeIcon icon={faStopwatch} /> Iniciar Checklist\n </button>\n )}\n\n <button onClick={printButton} type=\"submit\" class=\"ml-4 mb-4 bg-gray-500 hover:bg-gray-700 text-white font-bold py-2 px-4 rounded\">\n <FontAwesomeIcon icon={faFilePdf} /> PDF\n </button>\n\n {activateDeleteButton.toString() === 'true' && id ?\n (\n <button onClick={deleteButton} type=\"submit\" class=\"ml-4 mb-4 bg-red-500 hover:bg-red-700 text-white font-bold py-2 px-4 rounded\">\n <FontAwesomeIcon icon={faTrash} /> Eliminar\n </button>\n ) :\n (<div></div>)}\n\n <div class=\"h-72\" ref={mapRef} id=\"map\" />\n <div class=\"p-3 mt-40 bg-white shadow-xl\">\n <Form>\n <TabbedItem>\n <TabPanelOptions deferRendering={false} showNavButtons={true} />\n <Tab title=\"Datos Generales\" >\n <Form\n id=\"datosGenerales\"\n labelMode={'outside'}\n formData={checkListPayload.header}\n\n showColonAfterLabel={false}\n labelLocation={'top'}\n colCount={2}\n onFieldDataChanged={onFieldDatosChecklistChanged}\n ref={formDatosGeneralesRef}\n >\n <GroupItem caption=\"General\">\n <Item cssClass=\"boldText\" dataField=\"Movimiento\" editorOptions={movimientoEditorOptions} />\n <Item dataField=\"FechaEmision\" editorType=\"dxDateBox\" editorOptions={fechaEmisionEditorOptions}>\n <Label text={\"Fecha Emisión\"} />\n </Item>\n </GroupItem>\n <GroupItem caption=\"Sucursal\">\n <Item dataField=\"SucursalAsignada\" editorType=\"dxSelectBox\" editorOptions={sucursalAsignadaEditorOptions} />\n </GroupItem>\n <GroupItem caption=\"Auditor\">\n <Item dataField=\"PersonalAsignado\" editorType=\"dxSelectBox\" editorOptions={personalAsignadoEditorOptions}>\n <Label text={\"Auditor Asignado\"} />\n </Item>\n </GroupItem>\n\n <GroupItem caption=\"Tiempo\">\n <Item dataField=\"InicioEvaluacion\" editorOptions={inicioEvaluacionEditorOptions}>\n <Label text={\"Inicio Evaluación\"} />\n </Item>\n <Item dataField=\"FinEvaluacion\" editorOptions={finEvaluacionEditorOptions}>\n <Label text={\"Fin Evaluación\"} />\n </Item>\n <Item dataField=\"DuracionEvaluacion\" editorOptions={duracionEvaluacionEditorOptions}>\n <Label text={\"Duración Evaluación\"} />\n </Item>\n </GroupItem>\n\n <GroupItem caption=\"Datos Vehículo\">\n <Item dataField=\"NumeroVehiculo\" editorType=\"dxSelectBox\" editorOptions={vehiculoEditorOptions}>\n <Label text={\"Número de Vehículo\"} />\n </Item>\n <Item dataField=\"Placa\" editorOptions={placaEditorOptions}>\n <Label text={\"Placa\"} />\n </Item>\n <Item dataField=\"Anio\" editorOptions={anioEditorOptions}>\n <Label text={\"Año\"} />\n </Item>\n <Item dataField=\"Descripcion\" editorOptions={marcaVehiculoEditorOptions}>\n <Label text={\"Marca\"} />\n </Item>\n </GroupItem>\n <GroupItem caption=\"Motivo de Omisión\">\n <Item dataField=\"MotivoCancelacion\" editorType=\"dxSelectBox\" editorOptions={motivoCancelacionEditorOptions}>\n <Label text={\"Motivo\"} />\n </Item>\n </GroupItem>\n </Form>\n </Tab>\n <Tab title=\"Checklist Vehículo\" >\n <Form\n id=\"datosVehiculoNissan\"\n labelMode={'outside'}\n formData={checkListPayload.vehiculonissan}\n readOnly={!allowUpdating}\n showColonAfterLabel={false}\n labelLocation={'top'}\n onFieldDataChanged={onFieldVehiculoNissanChanged}\n colCount={3}\n >\n <GroupItem caption=\"Datos Generales\" colSpan={3}>\n <Item dataField=\"Chofer\" editorOptions={modeloEditorOptions} >\n <Label text={\"Chofer\"} />\n </Item>\n <Item dataField=\"Ayudante\" editorOptions={modeloEditorOptions} >\n <Label text={\"Ayudante\"} />\n </Item>\n </GroupItem>\n <GroupItem caption=\"Documentos\" colSpan={3}>\n </GroupItem>\n <Item dataField=\"LicenciaConducir\" editorType=\"dxCheckBox\">\n <Label text={\"Licencia\"} />\n </Item>\n <Item dataField=\"TipoLicencia\" editorOptions={licenciaConducirEditorOptions}>\n <Label text={\"Tipo Licencia\"} />\n </Item>\n <Item dataField=\"VencimientoLicencia\" editorType=\"dxDateBox\" editorOptions={licenciaConducirEditorOptions}>\n <Label text={\"Vencimiento\"} />\n </Item>\n <Item dataField=\"TarjetaGasolina\" editorType=\"dxCheckBox\">\n <Label text={\"Tarjeta Gas.\"} />\n </Item>\n <Item dataField=\"NumeroTarjeta\" editorOptions={tarjetaGasolinaEditorOptions}>\n <Label text={\"Número Tarjeta\"} />\n </Item>\n <Item dataField=\"VencimientoTarjetaGas\" editorType=\"dxDateBox\" editorOptions={tarjetaGasolinaEditorOptions}>\n <Label text={\"Vencimiento\"} />\n </Item>\n <Item dataField=\"PolizaSeguro\" editorType=\"dxCheckBox\">\n <Label text={\"Póliza Seguro\"} />\n </Item>\n <Item dataField=\"NumeroPoliza\" editorOptions={polizaSeguroEditorOptions}>\n <Label text={\"Número Póliza\"} />\n </Item>\n <Item dataField=\"VencimientoPoliza\" editorType=\"dxDateBox\" editorOptions={polizaSeguroEditorOptions}>\n <Label text={\"Vencimiento\"} />\n </Item>\n <Item dataField=\"Placas\" editorType=\"dxCheckBox\">\n <Label text={\"Placas\"} />\n </Item>\n <Item dataField=\"NumeroPlaca\" editorOptions={placasEditorOptions}>\n <Label text={\"Número Placas\"} />\n </Item>\n <Item dataField=\"ObservacionesPlacas\" editorOptions={placasEditorOptions}>\n <Label text={\"Obs.\"} />\n </Item>\n <Item dataField=\"TenenciaRefrendo\" editorType=\"dxCheckBox\" colSpan={3}>\n <Label text={\"Tenencia\"} />\n </Item>\n\n <GroupItem caption=\"Celular / Radio empresarial\" colSpan={3}>\n <GroupItem caption=\"Marca / Modelo\" colSpan={3}>\n <Item dataField=\"NissanMarcaCelular\" editorOptions={marcaEditorOptions} >\n <Label text={\"Marca\"} />\n </Item>\n <Item dataField=\"NissanModeloCelular\" editorOptions={modeloEditorOptions} >\n <Label text={\"Modelo\"} />\n </Item>\n <Item dataField=\"NissanNumeroCelular\" editorOptions={numeroCelularEditorOptions} >\n <Label text={\"Número Celular\"} />\n </Item>\n </GroupItem>\n <GroupItem caption=\"Checklist\" colSpan={3}>\n <DataGrid\n id=\"gridCelularVehiculoNissan\"\n columnsAutoWidth={true}\n dataSource={checkListPayload.celvehiculonissan}\n showBorders={true}\n showColumnLines={true}\n showRowLines={true}\n rowAlternationEnabled={false}\n allowColumnResizing={true}\n columnResizingMode={\"widget\"}\n allowColumnReordering={false}\n onEditorPreparing={overrideOnValueChanged}\n repaintChangesOnly={true}\n >\n <Paging defaultPageSize={100} />\n <Editing\n mode=\"cell\"\n allowUpdating={allowUpdating}\n />\n <Grouping autoExpandAll={autoExpandAllChecklist} />\n\n <Sorting mode=\"none\" />\n <Column dataField=\"Concepto\" dataType=\"string\" allowEditing={false} width={450} />\n <Column dataField=\"Evaluacion\" caption=\"Evaluacion\" width={140} showEditorAlways={true}>\n <Lookup dataSource={evaluacion} valueExpr=\"value\" displayExpr=\"name\" />\n </Column>\n <Column dataField=\"Comentarios\" width={600} dataType=\"string\" showEditorAlways={true} />\n </DataGrid>\n </GroupItem>\n </GroupItem>\n\n <GroupItem caption=\"Vehículo\" colSpan={3}>\n </GroupItem>\n\n <Item dataField=\"LimpiezaExternaCamion\" editorType=\"dxCheckBox\">\n <Label text={\"Limpieza Ext.\"} />\n </Item>\n <Item dataField=\"ObsLimpiezaExternaCamion\" colSpan={2}>\n <Label text={\"Obs.\"} />\n </Item>\n <Item dataField=\"LimpiezaInternaCamion\" editorType=\"dxCheckBox\">\n <Label text={\"Limpieza Int.\"} />\n </Item>\n <Item dataField=\"ObsLimpiezaInternaCamion\" colSpan={2}>\n <Label text={\"Obs.\"} />\n </Item>\n <Item dataField=\"LucesDelanteras\" editorType=\"dxCheckBox\">\n <Label text={\"Luces Delanteras\"} />\n </Item>\n <Item dataField=\"ObsLucesDelanteras\" colSpan={2}>\n <Label text={\"Obs.\"} />\n </Item>\n <Item dataField=\"LlantasUso\" editorType=\"dxCheckBox\">\n <Label text={\"Llantas uso\"} />\n </Item>\n <Item dataField=\"ObsLlantasUso\" colSpan={2}>\n <Label text={\"Obs.\"} />\n </Item>\n <Item dataField=\"LucesTraseras\" editorType=\"dxCheckBox\">\n <Label text={\"Luces traseras\"} />\n </Item>\n <Item dataField=\"ObsLucesTraseras\" colSpan={2}>\n <Label text={\"Obs.\"} />\n </Item>\n <Item dataField=\"LucesReversa\" editorType=\"dxCheckBox\">\n <Label text={\"Luces Reversa\"} />\n </Item>\n <Item dataField=\"ObsLucesReversa\" colSpan={2}>\n <Label text={\"Obs.\"} />\n </Item>\n <Item dataField=\"Bateria\" editorType=\"dxCheckBox\">\n <Label text={\"Batería\"} />\n </Item>\n <Item dataField=\"ObsBateria\" colSpan={2}>\n <Label text={\"Obs.\"} />\n </Item>\n <Item dataField=\"Parabrisas\" editorType=\"dxCheckBox\">\n\n </Item>\n <Item dataField=\"ObsParabrisas\" colSpan={2}>\n <Label text={\"Obs.\"} />\n </Item>\n <Item dataField=\"TaponGas\" editorType=\"dxCheckBox\">\n <Label text={\"Tapón Gas\"} />\n </Item>\n <Item dataField=\"ObsTaponGas\" colSpan={2}>\n <Label text={\"Obs.\"} />\n </Item>\n <Item dataField=\"LlantaRefaccion\" editorType=\"dxCheckBox\">\n <Label text={\"Llanta Refacción\"} />\n </Item>\n <Item dataField=\"ObsLlantaRefaccion\" colSpan={2}>\n <Label text={\"Obs.\"} />\n </Item>\n <Item dataField=\"EquipoCambio\" editorType=\"dxCheckBox\">\n <Label text={\"Equipo cambio\"} />\n </Item>\n <Item dataField=\"ObsEquipoCambio\" colSpan={2}>\n <Label text={\"Obs.\"} />\n </Item>\n <Item dataField=\"Frenos\" editorType=\"dxCheckBox\">\n <Label text={\"Frenos\"} />\n </Item>\n <Item dataField=\"ObsFrenos\" colSpan={2}>\n <Label text={\"Obs.\"} />\n </Item>\n <Item dataField=\"Suspencion\" editorType=\"dxCheckBox\">\n <Label text={\"Suspensión\"} />\n </Item>\n <Item dataField=\"ObsSuspencion\" colSpan={2}>\n <Label text={\"Obs.\"} />\n </Item>\n <Item dataField=\"KilometrajeProximaAfinacion\" colSpan={3} editorType=\"dxNumberBox\">\n <Label text={\"Sig. Afinación\"} />\n </Item>\n\n <GroupItem caption=\"Funcionamiento del Tablero\" colSpan={3}>\n </GroupItem>\n\n <Item dataField=\"MarcadorKilometraje\" editorType=\"dxCheckBox\">\n <Label text={\"Marcador km.\"} />\n </Item>\n <Item dataField=\"ValorMarcadorKilometraje\" >\n <Label text={\"Valor\"} />\n </Item>\n <Item dataField=\"ObsMarcadorKilometraje\" >\n <Label text={\"Obs.\"} />\n </Item>\n <Item dataField=\"MarcadorTacometro\" editorType=\"dxCheckBox\">\n <Label text={\"Tacometro\"} />\n </Item>\n <Item dataField=\"ValorMarcadorTacometro\" >\n <Label text={\"Valor\"} />\n </Item>\n <Item dataField=\"ObsMarcadorTacometro\" >\n <Label text={\"Obs.\"} />\n </Item>\n <Item dataField=\"MarcadorGasolina\" editorType=\"dxCheckBox\">\n <Label text={\"Marcador Gas.\"} />\n </Item>\n <Item dataField=\"ValorMarcadorGasolina\" >\n <Label text={\"Valor\"} />\n </Item>\n <Item dataField=\"ObsMarcadorGasolina\" >\n <Label text={\"Obs.\"} />\n </Item>\n\n\n <GroupItem caption=\"Funcionamiento de luces e indicadores\" colSpan={3}>\n </GroupItem>\n\n <Item dataField=\"CheckEngine\" editorType=\"dxCheckBox\">\n <Label text={\"Check Engine\"} />\n </Item>\n <Item dataField=\"CheckEngineApEnc\" editorOptions={checkEngineApEncEditorOptions}>\n <Label text={\"Ap. / Enc.\"} />\n </Item>\n <Item dataField=\"ObsCheckEngine\">\n <Label text={\"Obs.\"} />\n </Item>\n\n <Item dataField=\"IndBateria\" editorType=\"dxCheckBox\">\n <Label text={\"Batería\"} />\n </Item>\n <Item dataField=\"IndBateriaApEnc\" editorOptions={indBateriaEditorOptions}>\n <Label text={\"Ap. / Enc.\"} />\n </Item>\n <Item dataField=\"ObsIndBateria\" >\n <Label text={\"Obs.\"} />\n </Item>\n <Item dataField=\"Aceite\" editorType=\"dxCheckBox\">\n <Label text={\"Aceite\"} />\n </Item>\n <Item dataField=\"AceiteApEnc\" editorOptions={aceiteApEncEditorOptions}>\n <Label text={\"Ap. / Enc.\"} />\n </Item>\n <Item dataField=\"ObsAceite\" >\n <Label text={\"Obs.\"} />\n </Item>\n\n <Item dataField=\"FrenoMano\" editorType=\"dxCheckBox\">\n <Label text={\"Freno de Mano\"} />\n </Item>\n <Item dataField=\"ObsFrenoMano\" colSpan={2} editorOptions={obsFrenoManoEditorOptions}>\n <Label text={\"Obs.\"} />\n </Item>\n <Item dataField=\"Intermitentes\" editorType=\"dxCheckBox\">\n <Label text={\"Intermitentes\"} />\n </Item>\n <Item dataField=\"ObsIntermitentes\" colSpan={2} editorOptions={obsIntermitentesEditorOptions}>\n <Label text={\"Obs.\"} />\n </Item>\n <Item dataField=\"CinturonSeguridad\" editorType=\"dxCheckBox\">\n <Label text={\"Cinturón Seg.\"} />\n </Item>\n <Item dataField=\"ObsCinturonSeguridad\" colSpan={2} editorOptions={obsCinturonSeguridadEditorOptions}>\n <Label text={\"Obs.\"} />\n </Item>\n <Item dataField=\"Direccionales\" editorType=\"dxCheckBox\">\n <Label text={\"Direccionales\"} />\n </Item>\n <Item dataField=\"ObsDireccionales\" colSpan={2} editorOptions={obsDireccionalesEditorOptions}>\n <Label text={\"Obs.\"} />\n </Item>\n <Item dataField=\"LucesBajas\" editorType=\"dxCheckBox\">\n <Label text={\"Luces Bajas\"} />\n </Item>\n <Item dataField=\"ObsLucesBajas\" colSpan={2} editorOptions={obsLucesBajasEditorOptions}>\n <Label text={\"Obs.\"} />\n </Item>\n <Item dataField=\"LucesAltas\" editorType=\"dxCheckBox\">\n <Label text={\"Luces Altas\"} />\n </Item>\n <Item dataField=\"ObsLucesAltas\" colSpan={2} editorOptions={obsLucesAltasEditorOptions}>\n <Label text={\"Obs.\"} />\n </Item>\n <Item dataField=\"FrenosABS\" editorType=\"dxCheckBox\">\n <Label text={\"Frenos ABS\"} />\n </Item>\n <Item dataField=\"ObsFrenosABS\" colSpan={2} editorOptions={obsFrenosABSEditorOptions}>\n <Label text={\"Obs.\"} />\n </Item>\n\n <GroupItem caption=\"Comentarios\" colSpan={3}>\n <Item dataField=\"Comentarios\" editorType=\"dxTextArea\" editorOptions={resultadoEditorOptions}>\n <Label text={\"Comentarios\"} />\n </Item>\n </GroupItem>\n </Form>\n </Tab>\n <Tab title=\"Adjuntar Evidencia\" >\n <div className=\"widget-container\">\n <FileUploader\n multiple={true}\n accept=\"*\"\n uploadMode=\"useButtons\"\n chunkSize={20000000}\n maxFileSize={20000000}\n uploadChunk={uploadChunk}\n disabled={!allowUpdating}\n />\n </div>\n <div id=\"wrapper\" className=\"show-widget\" >\n <div id=\"widget-area\">\n <FileManager id=\"attachmentManager\" fileSystemProvider={attachments} onItemDeleting={onAttachmentDeleting} onItemDownloading={onItemDownloading} onSelectedFileOpened={onAttachmentOpen}>\n <Permissions\n create={false}\n copy={false}\n move={false}\n delete={allowUpdating}\n rename={false}\n upload={false}\n download={true}\n >\n </Permissions>\n </FileManager>\n </div>\n </div>\n </Tab>\n </TabbedItem>\n </Form>\n </div>\n </div>\n ) :\n (<div></div>)\n }\n </div>\n );\n }}\n />\n </div>\n </div>\n );\n}","import React, { useState, useEffect, useRef } from 'react';\n\n// Toast\nimport { Toast } from 'devextreme-react/toast';\n\nimport { Document, Page } from 'react-pdf/dist/esm/entry.webpack';\nimport 'react-pdf/dist/esm/Page/AnnotationLayer.css';\n\nimport { Watermark } from '@hirohe/react-watermark';\n\nimport './Document.css';\n\n//FileUploader\nimport FileUploader from 'devextreme-react/file-uploader';\n\n//FileManager\nimport FileManager, { Permissions } from 'devextreme-react/file-manager';\n\nimport { Auth, API, Storage } from 'aws-amplify';\n\nexport default function PdfDocument(props) {\n const [numPages, setNumPages] = useState(null);\n const [pageNumber, setPageNumber] = useState(1);\n const [usuario, setUsuario] = useState(props.usuario)\n\n // loadPanelPosition para el control FileManager\n const loadPanelPosition = { of: '#file-manager' };\n\n const [attachments, setAttachments] = useState([]);\n const [pdfDocument, setPdfDocument] = useState(undefined);\n\n const [visibleToast, setVisibleToast] = useState(false);\n const [messageToast, setMessageToast] = useState('');\n const [typeToast, setTypeToast] = useState('success');\n\n const [ok, setOk] = useState(false);\n\n const options = {\n cMapUrl: 'cmaps/',\n cMapPacked: true,\n standardFontDataUrl: 'standard_fonts/',\n };\n\n function onDocumentLoadSuccess({ numPages }) {\n setNumPages(numPages);\n setPageNumber(1);\n }\n\n function changePage(offset) {\n setPageNumber(prevPageNumber => prevPageNumber + offset);\n }\n\n function previousPage() {\n changePage(-1);\n }\n\n function nextPage() {\n changePage(1);\n }\n\n function onItemClick({ pageNumber: itemPageNumber }) {\n setPageNumber(itemPageNumber);\n }\n\n async function uploadChunk(file, uploadInfo) {\n try {\n var responseS3 = await Storage.put(\"/document/manual.pdf\", uploadInfo.chunkBlob, {\n contentType: file.type,\n ACL: 'public-read'\n });\n\n //Obtenemos los attachments\n var attachmentsGet = await Storage.list(\"/document/\");\n var attachmentsAux = [];\n\n for (var attachmentsGetIndex in attachmentsGet) {\n var singleAttachmentsGet = attachmentsGet[attachmentsGetIndex];\n\n var singleAttachment = {\n name: singleAttachmentsGet.key.split('/').pop(),\n isDirectory: false,\n size: singleAttachmentsGet.size,\n };\n\n attachmentsAux.push(singleAttachment);\n }\n\n setVisibleToast(true);\n setMessageToast('Se actualizó el manual con éxito');\n setTypeToast('success')\n\n setAttachments(attachmentsAux);\n }\n catch (err) {\n setVisibleToast(true);\n setMessageToast(\"Error al actualizar el manual \" + err.message);\n setTypeToast('error')\n }\n }\n\n async function onAttachmentDeleting(e) {\n //Primero borramos el archivo de S3\n var attachmentsDelete = await Storage.remove(\"/document/manual.pdf\");\n\n //Obtenemos los attachments\n var attachmentsGet = await Storage.list(\"/document/\");\n var attachmentsAux = [];\n\n for (var attachmentsGetIndex in attachmentsGet) {\n var singleAttachmentsGet = attachmentsGet[attachmentsGetIndex];\n\n var singleAttachment = {\n name: singleAttachmentsGet.key.split('/').pop(),\n isDirectory: false,\n size: singleAttachmentsGet.size,\n };\n\n attachmentsAux.push(singleAttachment);\n }\n\n setVisibleToast(true);\n setMessageToast('Se eliminó el manual con éxito');\n setTypeToast('success')\n\n setAttachments(attachmentsAux);\n };\n\n function downloadBlob(blob, filename) {\n const url = URL.createObjectURL(blob);\n const a = document.createElement('a');\n a.href = url;\n a.download = filename || 'download';\n const clickHandler = () => {\n setTimeout(() => {\n URL.revokeObjectURL(url);\n a.removeEventListener('click', clickHandler);\n }, 150);\n };\n\n a.addEventListener('click', clickHandler, false);\n\n a.click();\n\n return a;\n };\n\n async function onItemDownloading(e) {\n e.cancel = true;\n\n const downloadFileResponse = await Storage.get(\"/document/manual.pdf\", { download: true });\n\n downloadBlob(downloadFileResponse.Body, e.item.name);\n };\n\n function openBlob(blob, filename) {\n const url = URL.createObjectURL(blob);\n\n window.open(url, \"_blank\");\n };\n\n async function onAttachmentOpen(e) {\n const downloadFileResponse = await Storage.get(\"/document/manual.pdf\", { download: true });\n\n openBlob(downloadFileResponse.Body, e.file.name);\n };\n\n useEffect(() => {\n async function initialize() {\n var user = await Auth.currentAuthenticatedUser();\n\n var groups = user.signInUserSession.accessToken.payload[\"cognito:groups\"];\n\n var okAdmin = false;\n\n for (var groupIndex in groups) {\n var singleGroup = groups[groupIndex];\n\n if (singleGroup === 'Admin') {\n setOk(true);\n okAdmin = true;\n }\n }\n\n if (okAdmin === true) {\n var getDocumentList = await Storage.list\n\n //Obtenemos los attachments\n var attachmentsGet = await Storage.list(\"/document/\");\n var attachmentsAux = [];\n\n for (var attachmentsGetIndex in attachmentsGet) {\n var singleAttachmentsGet = attachmentsGet[attachmentsGetIndex];\n\n var singleAttachment = {\n name: singleAttachmentsGet.key.split('/').pop(),\n isDirectory: false,\n size: singleAttachmentsGet.size,\n };\n\n attachmentsAux.push(singleAttachment);\n }\n\n setAttachments(attachmentsAux);\n }\n }\n\n initialize();\n }, [props.isadmin]);\n\n function onHidingToast() {\n setVisibleToast(false);\n }\n\n return (\n <div>\n {ok === true ? (\n <div>\n <Toast\n visible={visibleToast}\n message={messageToast}\n type={typeToast}\n onHiding={onHidingToast}\n displayTime={5000}\n width={'auto'}\n position={{\n my: 'top center',\n at: 'top center',\n of: window,\n offset: '0 130'\n }}\n />\n <div class=\"bg-white p-3 shadow-xl m-2\">\n <div className=\"widget-container\">\n <FileUploader\n multiple={true}\n accept=\"application/pdf\"\n uploadMode=\"useButtons\"\n chunkSize={20000000}\n maxFileSize={20000000}\n uploadChunk={uploadChunk}\n disabled={false}\n />\n </div>\n <div id=\"wrapper\" className=\"show-widget\" >\n <div id=\"widget-area\">\n <FileManager id=\"attachmentManager\" fileSystemProvider={attachments} onItemDeleting={onAttachmentDeleting} onItemDownloading={onItemDownloading} onSelectedFileOpened={onAttachmentOpen}>\n <Permissions\n create={false}\n copy={false}\n move={false}\n delete={true}\n rename={false}\n upload={false}\n download={true}\n >\n </Permissions>\n </FileManager>\n </div>\n </div>\n </div>\n </div>\n ) : (<div></div>)\n }\n </div>\n );\n}\n","import React, { useState, useEffect, useRef } from 'react';\n\n// Toast\nimport { Toast } from 'devextreme-react/toast';\n\nimport { Document, Page } from 'react-pdf/dist/esm/entry.webpack';\nimport 'react-pdf/dist/esm/Page/AnnotationLayer.css';\n\nimport { Watermark } from '@hirohe/react-watermark';\n\nimport './DocumentViewer.css';\n\nimport { Auth, API, Storage } from 'aws-amplify';\n\nexport default function DocumentViewer(props) {\n const [numPages, setNumPages] = useState(null);\n const [pageNumber, setPageNumber] = useState(1);\n const [usuario, setUsuario] = useState(props.usuario)\n\n // loadPanelPosition para el control FileManager\n const loadPanelPosition = { of: '#file-manager' };\n\n const [attachments, setAttachments] = useState([]);\n const [pdfDocument, setPdfDocument] = useState(undefined);\n\n const [visibleToast, setVisibleToast] = useState(false);\n const [messageToast, setMessageToast] = useState('');\n const [typeToast, setTypeToast] = useState('success');\n\n const options = {\n cMapUrl: 'cmaps/',\n cMapPacked: true,\n standardFontDataUrl: 'standard_fonts/',\n };\n\n function onDocumentLoadSuccess({ numPages }) {\n setNumPages(numPages);\n setPageNumber(1);\n }\n\n function changePage(offset) {\n setPageNumber(prevPageNumber => prevPageNumber + offset);\n }\n\n function onItemClick({ pageNumber: itemPageNumber }) {\n setPageNumber(itemPageNumber);\n }\n\n useEffect(() => {\n async function initialize() {\n var pdfGet = await Storage.get(\"/document/manual.pdf\", { download: true });\n\n setPdfDocument(pdfGet.Body);\n }\n\n initialize();\n }, [props.isadmin]);\n\n function onHidingToast() {\n setVisibleToast(false);\n }\n\n return (\n <div>\n <Toast\n visible={visibleToast}\n message={messageToast}\n type={typeToast}\n onHiding={onHidingToast}\n displayTime={5000}\n width={'auto'}\n position={{\n my: 'top center',\n at: 'top center',\n of: window,\n offset: '0 130'\n }}\n />\n <div className=\"pdfDiv\">\n <div className=\"pdfContainer\">\n <div className=\"pdfContainerDocument\">\n <Watermark\n fontFamily=\"Arial, Helvetica, sans-serif\"\n opacity={0.2}\n rotate={-45}\n show\n text={usuario}\n textColor=\"#392D2B\"\n textSize={24}\n >\n <Document\n file={pdfDocument}\n onLoadSuccess={onDocumentLoadSuccess}\n options={options}\n onItemClick={onItemClick}\n >\n <Page pageNumber={pageNumber || 1} />\n </Document>\n </Watermark>\n </div>\n </div>\n </div>\n </div>\n );\n}\n","import React, { useState, useEffect, useRef } from 'react';\n\n// LoadPanel\nimport { LoadPanel } from 'devextreme-react/load-panel';\n\n// Toast\nimport { Toast } from 'devextreme-react/toast';\n\n//Form\nimport Form, { GroupItem, Label } from 'devextreme-react/form';\n\nimport { Auth, API, Storage } from 'aws-amplify';\n\n// Ruteador\nimport { Route, Link, useHistory } from \"react-router-dom\";\n\n// Grid\nimport DataGrid, {\n Column, FilterRow, HeaderFilter, FilterPanel, FilterBuilderPopup,\n GroupPanel, Grouping, SearchPanel, Sorting, Editing, Lookup, Toolbar, Item, RequiredRule,\n Scrolling, Pager, Paging, Summary, TotalItem, StateStoring, ColumnChooser, Format, Selection,\n Export, ColumnChooserSearch, ColumnChooserSelection\n} from 'devextreme-react/data-grid';\n\n//CheckBox\nimport CheckBox from 'devextreme-react/check-box';\n\n// Iconos\nimport { FontAwesomeIcon } from \"@fortawesome/react-fontawesome\";\nimport { faPencilAlt } from \"@fortawesome/pro-solid-svg-icons\";\nimport { faArrowRotateLeft } from \"@fortawesome/pro-solid-svg-icons\";\nimport { faSave } from \"@fortawesome/pro-solid-svg-icons\";\nimport { faClipboardCheck } from \"@fortawesome/pro-solid-svg-icons\";\nimport { faFileAlt } from \"@fortawesome/pro-solid-svg-icons\";\nimport { faTrashAlt } from \"@fortawesome/pro-solid-svg-icons\";\nimport { faBan } from \"@fortawesome/pro-solid-svg-icons\";\nimport { faList } from \"@fortawesome/pro-duotone-svg-icons\";\nimport { faUmbrellaBeach } from \"@fortawesome/pro-duotone-svg-icons\";\nimport { faFilePdf } from \"@fortawesome/pro-solid-svg-icons\";\nimport { faArrowsRotate } from \"@fortawesome/pro-solid-svg-icons\";\n\n// tabs\nimport Tabs from '@mui/material/Tabs';\nimport Tab from '@mui/material/Tab';\nimport Typography from '@mui/material/Typography';\nimport Box from '@mui/material/Box';\n\n//Text area\nimport 'devextreme-react/text-area';\n\nimport 'devextreme/data/odata/store';\nimport CustomStore from 'devextreme/data/custom_store';\n\nimport '../ListStyle.css';\n\nimport dxDateBox from \"devextreme/ui/date_box\";\n\nimport dxNumberBox from \"devextreme/ui/number_box\";\n\nimport TransactionStatus from \"../TransactionStatus/TransactionStatus.js\";\n\nimport { Workbook } from 'exceljs';\nimport { saveAs } from 'file-saver';\nimport { exportDataGrid } from 'devextreme/excel_exporter'\n\ndxDateBox.defaultOptions({\n options: {\n dateSerializationFormat: \"yyyy-MM-dd\"\n }\n});\n\ndxNumberBox.defaultOptions({\n options: {\n step: 0\n }\n});\n\nfunction isNotEmpty(value) {\n return value !== undefined && value !== null && value !== '';\n}\n\nexport default function Vacation(props) {\n const history = useHistory();\n\n // const [vacationRecords, setVacationRecords] = useState([]);\n const [isDetail, setIsDetail] = useState(false);\n const [id, setId] = useState();\n const [vacationPayload, setVacationPayload] = useState({\n header: {},\n detail: [],\n payrollauth: []\n });\n\n const [allowUpdating, setAllowUpdating] = useState(false);\n const [allowUpdatingVoid, setAllowUpdatingVoid] = useState(false);\n const [allowUpdatingGrid, setAllowUpdatingGrid] = useState(false);\n\n const [activateSaveButton, setActivateSaveButton] = useState(false);\n const [activateConfirmButton, setActivateConfirmButton] = useState(false);\n const [activateDeleteButton, setActivateDeleteButton] = useState(false);\n const [activateCancelButton, setActivateCancelButton] = useState(false);\n\n const [autoExpandAll, setAutoExpandAll] = useState(true);\n\n const [motivoRechazo, setMotivoRechazo] = useState([]);\n\n const [personales, setPersonales] = useState([]);\n\n //Ref para el form\n const [formDatosGeneralesRef, setFormDatosGeneralesRef] = useState(React.createRef());\n\n // setValue para el control tab\n const [value, setValue] = React.useState(0);\n\n const [visibleLoadPanel, setVisibleLoadPanel] = useState(false);\n\n const [visibleToast, setVisibleToast] = useState(false);\n const [messageToast, setMessageToast] = useState('');\n const [typeToast, setTypeToast] = useState('success');\n\n const handleChange = (event, newValue) => {\n setValue(newValue);\n };\n\n const filterBuilderPopupPosition = {\n of: window,\n at: 'top',\n my: 'top',\n offset: { y: 10 },\n };\n\n const allowedPageSizes = [5, 10, 15, 20, 'all'];\n\n const exportFormats = ['xlsx'];\n\n function getOrderDay(rowData) {\n return (new Date(rowData.OrderDate)).getDay();\n }\n\n var fechaEmisionEditorOptions = { width: '100%', readOnly: true, text: 'Fecha Emisión' };\n var movimientoEditorOptions = { width: '100%', readOnly: true };\n var nombreSucursalEditorOptions = { width: '100%', readOnly: true };\n var estatusEditorOptions = { width: '100%', readOnly: true };\n var nombreEditorOptions = { width: '100%', readOnly: true };\n var nombreEmpleadoEditorOptions = { width: '100%', readOnly: true };\n\n var fechaIngresoEditorOptions = { width: '100%', readOnly: true };\n var antiguedadEditorOptions = { width: '100%', readOnly: true };\n var fechaDEditorOptions = { width: '100%', disabled: !allowUpdating };\n var fechaAEditorOptions = { width: '100%', disabled: !allowUpdating };\n var numeroDiasEditorOptions = { width: '100%', readOnly: true };\n\n\n var fondoDisponibleEditorOptions = { width: '100%', readOnly: true };\n var restanteDisponibleEditorOptions = { width: '100%', readOnly: true };\n\n try {\n var motivoRechazoEditorOptions = { items: motivoRechazo, displayExpr: 'name', valueExpr: 'value', searchEnabled: true, value: (vacationPayload.header.MotivoRechazo ? vacationPayload.header.MotivoRechazo : ''), width: '100%', disabled: !allowUpdatingVoid };\n }\n catch (e) {\n var motivoRechazoEditorOptions = { items: motivoRechazo, displayExpr: 'name', valueExpr: 'value', searchEnabled: true, value: '', width: '100%', disabled: !allowUpdatingVoid };\n }\n\n try {\n var personalCubreEditorOptions = { items: personales, displayExpr: 'name', valueExpr: 'value', searchEnabled: true, value: (vacationPayload.header.PersonalCubre ? vacationPayload.header.PersonalCubre : ''), width: '100%', disabled: !allowUpdating };\n }\n catch (e) {\n var personalCubreEditorOptions = { items: motivoRechazo, displayExpr: 'name', valueExpr: 'value', searchEnabled: true, value: '', width: '100%', disabled: !allowUpdating };\n }\n\n var observacionesEditorOptions = { height: 130, width: '100%', disabled: !allowUpdatingVoid };\n\n const filterBuilder = {\n customOperations: [{\n name: 'weekends',\n caption: 'Weekends',\n dataTypes: ['date'],\n icon: 'check',\n hasValue: false,\n calculateFilterExpression: () => [[getOrderDay, '=', 0], 'or', [getOrderDay, '=', 6]],\n }],\n allowHierarchicalFields: true,\n };\n\n const filterValue = [['Estatus', '<>', 'Rechazado']];\n\n //Ref para el grid Tablero de Control\n const [gridTableroRef, setGridTableroRef] = useState(React.createRef());\n\n function onAutoExpandAllChanged() {\n setAutoExpandAll(!autoExpandAll)\n };\n\n async function getVacationRecords(sqlFilter) {\n try {\n var personal = props.personal;\n var vacationAccess = props.vacationAccess;\n\n if (!vacationAccess || vacationAccess === 'undefined')\n vacationAccess = '';\n\n let apiName = 'AdminSC';\n let path = '/procesavacaciones';\n\n let myInit = {\n headers: {\n 'Content-Type': 'application/json',\n Authorization: `${(await Auth.currentSession()).getAccessToken().getJwtToken()}`\n },\n queryStringParameters: {\n personal: personal,\n vacationAccess: vacationAccess,\n action: 'list',\n sqlFilter: sqlFilter,\n username: JSON.parse(JSON.stringify(await Auth.currentAuthenticatedUser())).username\n }\n }\n\n var vacationsGet = await API.get(apiName, path, myInit);\n }\n catch (e) {\n if (e === 'No current user') {\n history.push('/');\n\n window.location.reload();\n }\n }\n\n return vacationsGet;\n }\n\n const store = new CustomStore({\n key: 'ID',\n load(loadOptions) {\n let sqlFilter = '(';\n [\n 'filter'\n ].forEach((i) => {\n if (i in loadOptions && isNotEmpty(loadOptions[i])) {\n var filters = loadOptions[i];\n\n var filtersLength = filters.length;\n\n for (var i = 0; i <= filtersLength; i++) {\n var singleFilter = filters[i];\n var singleFilterType = typeof singleFilter;\n var singleFilterIsArray = Array.isArray(singleFilter);\n var singleFilterIsDate = singleFilter instanceof Date;\n\n if (singleFilter === 'NULL') {\n singleFilter = '0';\n }\n\n if (singleFilterType.toString() === 'object' && singleFilterIsArray) {\n sqlFilter += '(';\n\n var subFiltersLength = singleFilter.length;\n\n for (var i2 = 0; i2 <= subFiltersLength; i2++) {\n var singleSubFilter = singleFilter[i2];\n var singleSubFilterType = typeof singleSubFilter;\n var singleSubFilterIsArray = Array.isArray(singleSubFilter);\n var singleSubFilterIsDate = singleSubFilter instanceof Date\n\n if (singleSubFilter === 'NULL') {\n singleSubFilter = '0';\n }\n\n if (singleSubFilterType.toString() === 'object' && singleSubFilterIsArray) {\n sqlFilter += '(';\n\n var subSubFiltersLength = singleSubFilter.length;\n\n for (var i3 = 0; i3 <= subSubFiltersLength; i3++) {\n var singleSubSubFilter = singleSubFilter[i3];\n var singleSubSubFilterType = typeof singleSubSubFilter;\n var singleSubSubFilterIsArray = Array.isArray(singleSubSubFilter);\n var singleSubSubFilterIsDate = singleSubSubFilter instanceof Date\n\n if (singleSubSubFilter === 'NULL') {\n singleSubSubFilter = '0';\n }\n\n if (singleSubSubFilterType.toString() === 'object' && singleSubSubFilterIsArray) {\n sqlFilter += '(';\n\n var subSubSubFiltersLength = singleSubSubFilter.length;\n\n for (var i4 = 0; i4 <= subSubSubFiltersLength; i4++) {\n var singleSubSubSubFilter = singleSubSubFilter[i4];\n var singleSubSubSubFilterType = typeof singleSubSubSubFilter;\n var singleSubSubSubFilterIsArray = Array.isArray(singleSubSubSubFilter);\n var singleSubSubSubFilterIsDate = singleSubSubSubFilter instanceof Date\n\n if (singleSubSubSubFilter === 'NULL') {\n singleSubSubSubFilter = '0';\n }\n\n if (singleSubSubSubFilterType.toString() === 'object' && singleSubSubSubFilterIsArray) {\n sqlFilter += '(';\n\n var subSubSubSubFiltersLength = singleSubSubSubFilter.length;\n\n for (var i5 = 0; i5 <= subSubSubSubFiltersLength; i5++) {\n var singleSubSubSubSubFilter = singleSubSubSubFilter[i5];\n var singleSubSubSubSubFilterType = typeof singleSubSubSubSubFilter;\n var singleSubSubSubSubFilterIsArray = Array.isArray(singleSubSubSubSubFilter);\n var singleSubSubSubSubFilterIsDate = singleSubSubSubSubFilter instanceof Date\n\n if (singleSubSubSubSubFilter === 'NULL') {\n singleSubSubSubSubFilter = '0';\n }\n\n if (singleSubSubSubSubFilterType.toString() === 'string') {\n if (singleSubSubSubSubFilter === 'contains') {\n filters[i][i2][i3][i4][i5] = 'LIKE';\n singleSubSubSubSubFilter = 'LIKE';\n\n filters[i][i2][i3][i4][i5 + 1] = '\\'%' + filters[i][i2][i3][i4][i5 + 1] + '%\\'';\n }\n else if (singleSubSubSubSubFilter === 'notcontains') {\n filters[i][i2][i3][i4][i5] = 'NOT LIKE';\n singleSubSubSubSubFilter = 'NOT LIKE';\n\n filters[i][i2][i3][i4][i5 + 1] = '\\'%' + filters[i][i2][i3][i4][i5 + 1] + '%\\'';\n }\n else if (singleSubSubSubSubFilter === 'startswith') {\n filters[i][i2][i3][i4][i5] = 'LIKE';\n singleSubSubSubSubFilter = 'LIKE';\n\n filters[i][i2][i3][i4][i5 + 1] = '\\'' + filters[i][i2][i3][i4][i5 + 1] + '%\\'';\n }\n else if (singleSubSubSubSubFilter === 'endswith') {\n filters[i][i2][i3][i4][i5] = 'LIKE';\n singleSubSubSubSubFilter = 'LIKE';\n\n filters[i][i2][i3][i4][i5 + 1] = '\\'%' + filters[i][i2][i3][i4][i5 + 1] + '\\'';\n }\n else if (singleSubSubSubSubFilter === '=' || singleSubSubSubSubFilter === '<>' || singleSubSubSubSubFilter === '>' || singleSubSubSubSubFilter === '>=' || singleSubSubSubSubFilter === '<' || singleSubSubSubSubFilter === '<=') {\n if (!filters[i][i2][i3][i4][i5 + 1])\n filters[i][i2][i3][i4][i5 + 1] = 'NULL';\n else if (typeof filters[i][i2][i3][i4][i5 + 1] === 'string') {\n filters[i][i2][i3][i4][i5 + 1] = '\\'' + filters[i][i2][i3][i4][i5 + 1] + '\\'';\n }\n }\n else if (singleSubSubSubSubFilter === '!') {\n filters[i][i2][i3][i4][i5] = 'NOT';\n singleSubSubSubSubFilter = 'NOT';\n }\n\n sqlFilter += ' ' + singleSubSubSubSubFilter + ' ';\n }\n else if (singleSubSubSubSubFilterType.toString() === 'object' && singleSubSubSubSubFilterIsDate) {\n sqlFilter += ' \\'' + singleSubSubSubSubFilter.toISOString().split('T')[0] + '\\' ';\n }\n else if (singleSubSubSubSubFilterType.toString() === 'number') {\n sqlFilter += ' ' + singleSubSubSubSubFilter.toString() + ' ';\n }\n else if (singleSubSubSubSubFilterType.toString() === 'boolean') {\n if (singleSubSubSubSubFilter.toString() === 'true')\n sqlFilter += '1 ';\n else if (singleSubSubSubSubFilter.toString() === 'false' || singleSubSubSubSubFilter === null || singleSubSubSubSubFilter === undefined)\n sqlFilter += '0 ';\n }\n }\n }\n else if (singleSubSubSubFilterType.toString() === 'string') {\n if (singleSubSubSubFilter === 'contains') {\n filters[i][i2][i3][i4] = 'LIKE';\n singleSubSubSubFilter = 'LIKE';\n\n filters[i][i2][i3][i4 + 1] = '\\'%' + filters[i][i2][i3][i4 + 1] + '%\\'';\n }\n else if (singleSubSubSubFilter === 'notcontains') {\n filters[i][i2][i3][i4] = 'NOT LIKE';\n singleSubSubSubFilter = 'NOT LIKE';\n\n filters[i][i2][i3][i4 + 1] = '\\'%' + filters[i][i2][i3][i4 + 1] + '%\\'';\n }\n else if (singleSubSubSubFilter === 'startswith') {\n filters[i][i2][i3][i4] = 'LIKE';\n singleSubSubSubFilter = 'LIKE';\n\n filters[i][i2][i3][i4 + 1] = '\\'' + filters[i][i2][i3][i4 + 1] + '%\\'';\n }\n else if (singleSubSubSubFilter === 'endswith') {\n filters[i][i2][i3][i4] = 'LIKE';\n singleSubSubSubFilter = 'LIKE';\n\n filters[i][i2][i3][i4 + 1] = '\\'%' + filters[i][i2][i3][i4 + 1] + '\\'';\n }\n else if (singleSubSubSubFilter === '=' || singleSubSubSubFilter === '<>' || singleSubSubSubFilter === '>' || singleSubSubSubFilter === '>=' || singleSubSubSubFilter === '<' || singleSubSubSubFilter === '<=') {\n if (!filters[i][i2][i3][i4 + 1])\n filters[i][i2][i3][i4 + 1] = 'NULL';\n else if (typeof filters[i][i2][i3][i4 + 1] === 'string') {\n filters[i][i2][i3][i4 + 1] = '\\'' + filters[i][i2][i3][i4 + 1] + '\\'';\n }\n }\n else if (singleSubSubSubFilter === '!') {\n filters[i][i2][i3][i4] = 'NOT';\n singleSubSubSubFilter = 'NOT';\n }\n\n sqlFilter += ' ' + singleSubSubSubFilter + ' ';\n }\n else if (singleSubSubSubFilterType.toString() === 'object' && singleSubSubSubFilterIsDate) {\n sqlFilter += ' \\'' + singleSubSubSubFilter.toISOString().split('T')[0] + '\\' ';\n }\n else if (singleSubSubSubFilterType.toString() === 'number') {\n sqlFilter += ' ' + singleSubSubSubFilter.toString() + ' ';\n }\n else if (singleSubSubSubFilterType.toString() === 'boolean') {\n if (singleSubSubSubFilter.toString() === 'true')\n sqlFilter += '1 ';\n else if (singleSubSubSubFilter.toString() === 'false' || singleSubSubSubFilter === null || singleSubSubSubFilter === undefined)\n sqlFilter += '0 ';\n }\n }\n\n sqlFilter += ')';\n }\n else if (singleSubSubFilterType.toString() === 'string') {\n if (singleSubSubFilter === 'contains') {\n filters[i][i2][i3] = 'LIKE';\n singleSubSubFilter = 'LIKE';\n\n filters[i][i2][i3 + 1] = '\\'%' + filters[i][i2][i3 + 1] + '%\\'';\n }\n else if (singleSubSubFilter === 'notcontains') {\n filters[i][i2][i3] = 'NOT LIKE';\n singleSubSubFilter = 'NOT LIKE';\n\n filters[i][i2][i3 + 1] = '\\'%' + filters[i][i2][i3 + 1] + '%\\'';\n }\n else if (singleSubSubFilter === 'startswith') {\n filters[i][i2][i3] = 'LIKE';\n singleSubSubFilter = 'LIKE';\n\n filters[i][i2][i3 + 1] = '\\'' + filters[i][i2][i3 + 1] + '%\\'';\n }\n else if (singleSubSubFilter === 'endswith') {\n filters[i][i2][i3] = 'LIKE';\n singleSubSubFilter = 'LIKE';\n\n filters[i][i2][i3 + 1] = '\\'%' + filters[i][i2][i3 + 1] + '\\'';\n }\n else if (singleSubSubFilter === '=' || singleSubSubFilter === '<>' || singleSubSubFilter === '>' || singleSubSubFilter === '>=' || singleSubSubFilter === '<' || singleSubSubFilter === '<=') {\n if (!filters[i][i2][i3 + 1])\n filters[i][i2][i3 + 1] = 'NULL';\n else if (typeof filters[i][i2][i3 + 1] === 'string') {\n filters[i][i2][i3 + 1] = '\\'' + filters[i][i2][i3 + 1] + '\\'';\n }\n }\n else if (singleSubSubFilter === '!') {\n filters[i][i2][i3] = 'NOT';\n singleSubSubFilter = 'NOT';\n }\n sqlFilter += ' ' + singleSubSubFilter + ' ';\n }\n else if (singleSubSubFilterType.toString() === 'object' && singleSubSubFilterIsDate) {\n sqlFilter += ' \\'' + singleSubSubFilter.toISOString().split('T')[0] + '\\' ';\n }\n else if (singleSubSubFilterType.toString() === 'number') {\n sqlFilter += ' ' + singleSubSubFilter.toString() + ' ';\n }\n else if (singleSubSubFilterType.toString() === 'boolean') {\n if (singleSubSubFilter.toString() === 'true')\n sqlFilter += '1 ';\n else if (singleSubSubFilter.toString() === 'false' || singleSubSubFilter === null || singleSubSubFilter === undefined)\n sqlFilter += '0 ';\n }\n }\n\n sqlFilter += ')';\n }\n else if (singleSubFilterType.toString() === 'string') {\n if (singleSubFilter === 'contains') {\n filters[i][i2] = 'LIKE';\n singleSubFilter = 'LIKE';\n\n filters[i][i2 + 1] = '\\'%' + filters[i][i2 + 1] + '%\\'';\n }\n else if (singleSubFilter === 'notcontains') {\n filters[i][i2] = 'NOT LIKE';\n singleSubFilter = 'NOT LIKE';\n\n filters[i][i2 + 1] = '\\'%' + filters[i][i2 + 1] + '%\\'';\n }\n else if (singleSubFilter === 'startswith') {\n filters[i][i2] = 'LIKE';\n singleSubFilter = 'LIKE';\n\n filters[i][i2 + 1] = '\\'' + filters[i][i2 + 1] + '%\\'';\n }\n else if (singleSubFilter === 'endswith') {\n filters[i][i2] = 'LIKE';\n singleSubFilter = 'LIKE';\n\n filters[i][i2 + 1] = '\\'%' + filters[i][i2 + 1] + '\\'';\n }\n else if (singleSubFilter === '=' || singleSubFilter === '<>' || singleSubFilter === '>' || singleSubFilter === '>=' || singleSubFilter === '<' || singleSubFilter === '<=') {\n if (!filters[i][i2 + 1])\n filters[i][i2 + 1] = 'NULL';\n else if (typeof filters[i][i2 + 1] === 'string') {\n filters[i][i2 + 1] = '\\'' + filters[i][i2 + 1] + '\\'';\n }\n }\n else if (singleSubFilter === '!') {\n filters[i][i2] = 'NOT';\n singleSubFilter = 'NOT';\n }\n sqlFilter += ' ' + singleSubFilter + ' ';\n }\n else if (singleSubFilterType.toString() === 'object' && singleSubFilterIsDate) {\n sqlFilter += ' \\'' + singleSubFilter.toISOString().split('T')[0] + '\\' ';\n }\n else if (singleSubFilterType.toString() === 'number') {\n sqlFilter += ' ' + singleSubFilter.toString() + ' ';\n }\n else if (singleSubFilterType.toString() === 'boolean') {\n if (singleSubFilter.toString() === 'true')\n sqlFilter += '1 ';\n else if (singleSubFilter.toString() === 'false' || singleSubFilter === null || singleSubFilter === undefined)\n sqlFilter += '0 ';\n }\n }\n\n sqlFilter += ')';\n }\n else if (singleFilterType.toString() === 'string') {\n if (singleFilter === 'contains') {\n filters[i] = 'LIKE';\n singleFilter = 'LIKE';\n\n filters[i + 1] = '\\'%' + filters[i + 1] + '%\\'';\n }\n else if (singleFilter === 'notcontains') {\n filters[i] = 'NOT LIKE';\n singleFilter = 'NOT LIKE';\n\n filters[i + 1] = '\\'%' + filters[i + 1] + '%\\'';\n }\n else if (singleFilter === 'startswith') {\n filters[i] = 'LIKE';\n singleFilter = 'LIKE';\n\n filters[i + 1] = '\\'' + filters[i + 1] + '%\\'';\n }\n else if (singleFilter === 'endswith') {\n filters[i] = 'LIKE';\n singleFilter = 'LIKE';\n\n filters[i + 1] = '\\'%' + filters[i + 1] + '\\'';\n }\n else if (singleFilter === '=' || singleFilter === '<>' || singleFilter === '>' || singleFilter === '>=' || singleFilter === '<' || singleFilter === '<=') {\n if (!filters[i + 1])\n filters[i + 1] = 'NULL';\n else if (typeof filters[i + 1] === 'string') {\n filters[i + 1] = '\\'' + filters[i + 1] + '\\'';\n }\n }\n else if (singleFilter === '!') {\n filters[i] = 'NOT';\n singleFilter = 'NOT';\n }\n sqlFilter += ' ' + singleFilter + ' ';\n }\n else if (singleFilterType.toString() === 'object' && singleFilterIsDate) {\n sqlFilter += ' \\'' + singleFilter.toISOString().split('T')[0] + '\\' ';\n }\n else if (singleFilterType.toString() === 'number') {\n sqlFilter += ' ' + singleFilter.toString() + ' ';\n }\n else if (singleFilterType.toString() === 'boolean') {\n if (singleFilter.toString() === 'true')\n sqlFilter += '1 ';\n else if (singleFilter.toString() === 'false' || singleFilter === null || singleFilter === undefined)\n sqlFilter += '0 ';\n }\n }\n\n sqlFilter += ')';\n }\n });\n\n async function getRecords() {\n if (sqlFilter === '(')\n sqlFilter = '';\n\n var records = await getVacationRecords(sqlFilter);\n return {\n data: records,\n totalCount: records.length\n };\n }\n\n return getRecords()\n .then(function (result) {\n return result;\n })\n .catch(() => { throw new Error('Data Loading Error'); });\n },\n });\n\n async function getVacationPayload(ID) {\n try {\n var personal = props.personal;\n\n let apiName = 'AdminSC';\n let path = '/procesavacaciones';\n\n let myInit = {\n headers: {\n 'Content-Type': 'application/json',\n Authorization: `${(await Auth.currentSession()).getAccessToken().getJwtToken()}`\n },\n queryStringParameters: {\n personal: personal,\n ID: ID,\n action: 'payload',\n username: JSON.parse(JSON.stringify(await Auth.currentAuthenticatedUser())).username\n }\n }\n\n var payloadGet = await API.get(apiName, path, myInit);\n\n setVacationPayload(payloadGet);\n }\n catch (e) {\n if (e === 'No current user') {\n history.push('/');\n\n window.location.reload();\n }\n }\n\n return payloadGet;\n }\n\n async function getMotivoRechazoRecords() {\n let apiName = 'AdminSC';\n let path = '/getcatalogo';\n\n let myInit = {\n headers: {\n 'Content-Type': 'application/json',\n Authorization: `${(await Auth.currentSession()).getAccessToken().getJwtToken()}`\n },\n queryStringParameters: {\n type: 'MotivoRechazoVacaciones',\n username: JSON.parse(JSON.stringify(await Auth.currentAuthenticatedUser())).username\n }\n }\n\n var responsableGetList = await API.get(apiName, path, myInit);\n\n return responsableGetList;\n }\n\n async function editVacationButton(ID) {\n try {\n if (!window.event.metaKey && !window.event.ctrlKey) {\n setVisibleLoadPanel(true);\n\n setIsDetail(true);\n setId(ID);\n\n var payload = await getVacationPayload(ID);\n\n var isPayrollAuth = false;\n\n if (payload.header.Estatus === 'Sin Afectar') {\n if (props.personal.trim() === payload.header.Personal.trim()) {\n setActivateSaveButton(true);\n setActivateConfirmButton(true);\n setActivateDeleteButton(true);\n setActivateCancelButton(false);\n setAllowUpdating(true);\n setAllowUpdatingVoid(false);\n setAllowUpdatingGrid(false);\n }\n else {\n setActivateSaveButton(false);\n setActivateConfirmButton(false);\n setActivateDeleteButton(false);\n setActivateCancelButton(false);\n setAllowUpdating(false);\n setAllowUpdatingVoid(false);\n setAllowUpdatingGrid(false);\n }\n }\n else if (payload.header.Estatus === 'Por Autorizar') {\n if (props.personal.trim() === payload.header.Personal.trim()) {\n setActivateSaveButton(false);\n setAllowUpdatingVoid(true);\n setAllowUpdatingGrid(false);\n }\n else {\n setActivateSaveButton(false);\n setAllowUpdatingVoid(false);\n setAllowUpdatingGrid(false);\n }\n\n if (props.personal.trim().toUpperCase() === payload.header.Supervisor.trim().toUpperCase()) {\n setActivateConfirmButton(true);\n setAllowUpdating(true);\n }\n else {\n setActivateConfirmButton(false);\n setAllowUpdating(false);\n }\n\n if (props.personal.trim() === payload.header.Personal.trim()) {\n setActivateDeleteButton(false);\n setActivateCancelButton(true);\n setAllowUpdating(false);\n }\n else {\n setActivateDeleteButton(false);\n setActivateCancelButton(false);\n setAllowUpdating(false);\n }\n }\n else if (payload.header.Estatus === 'Pendiente') {\n setActivateSaveButton(true);\n setActivateDeleteButton(false);\n setAllowUpdating(false);\n\n for (var payrollauthIndex in payload.payrollauth) {\n var singlePayrollauth = payload.payrollauth[payrollauthIndex];\n\n if (props.personal === singlePayrollauth.Personal) {\n isPayrollAuth = true;\n }\n }\n\n if (isPayrollAuth === true) {\n setActivateConfirmButton(true);\n setActivateSaveButton(true);\n setAllowUpdatingGrid(true);\n setAllowUpdatingVoid(true);\n setActivateCancelButton(true);\n\n }\n else {\n setActivateConfirmButton(false);\n setActivateSaveButton(false);\n setAllowUpdatingGrid(false);\n setAllowUpdatingVoid(false);\n setActivateCancelButton(false);\n }\n }\n else if (payload.header.Estatus === 'Concluido') {\n setActivateSaveButton(false);\n setActivateConfirmButton(false);\n setActivateDeleteButton(false);\n setActivateCancelButton(false);\n setAllowUpdating(false);\n setAllowUpdatingVoid(false);\n setAllowUpdatingGrid(false);\n }\n else if (payload.header.Estatus === 'Rechazado') {\n setActivateSaveButton(false);\n setActivateConfirmButton(false);\n setActivateDeleteButton(false);\n setActivateCancelButton(false);\n setAllowUpdating(false);\n setAllowUpdatingVoid(false);\n setAllowUpdatingGrid(false);\n }\n\n setVisibleLoadPanel(false);\n }\n }\n catch (e) {\n setVisibleLoadPanel(false);\n\n if (!ID || ID === 'undefined') {\n newButton();\n }\n }\n };\n\n async function cancelEditButton() {\n setIsDetail(false);\n\n // var getVacations = await getVacationRecords(props.personal);\n\n // setVacationRecords(getVacations);\n };\n\n async function saveButton() {\n try {\n setVisibleLoadPanel(true);\n\n var ID = vacationPayload.header.ID;\n\n //Despues enviamos todo al backend\n let apiName = 'AdminSC';\n let path = '/procesavacaciones';\n\n let myInit = {\n headers: {\n 'Content-Type': 'application/json',\n Authorization: `${(await Auth.currentSession()).getAccessToken().getJwtToken()}`\n },\n body: {\n ID: ID,\n payload: vacationPayload,\n action: 'saveChanges',\n s3Bucket: Storage._config.AWSS3.bucket,\n username: JSON.parse(JSON.stringify(await Auth.currentAuthenticatedUser())).username\n }\n }\n\n var payloadPost = await API.post(apiName, path, myInit);\n\n if (payloadPost.ok === 'true') {\n if (!ID) {\n setVisibleToast(true);\n setMessageToast('Se creó la solicitud con éxito');\n setTypeToast('success')\n\n ID = payloadPost.newID;\n\n // setActivateConfirmButton(true);\n\n editVacationButton(ID);\n\n history.push('/Vacation/' + ID.toString());\n }\n else {\n setVisibleToast(true);\n setMessageToast('Se actualizó la solicitud con éxito');\n setTypeToast('success')\n\n editVacationButton(ID);\n }\n }\n else if (payloadPost.ok === 'false') {\n setVisibleToast(true);\n setMessageToast(payloadPost.message);\n setTypeToast('error')\n }\n\n setVisibleLoadPanel(false);\n }\n catch (e) {\n setVisibleLoadPanel(false);\n\n if (e === 'No current user') {\n history.push('/');\n\n window.location.reload();\n }\n }\n };\n\n async function newButton() {\n try {\n var personal = props.personal;\n\n let apiName = 'AdminSC';\n let path = '/procesavacaciones';\n\n let myInit = {\n headers: {\n 'Content-Type': 'application/json',\n Authorization: `${(await Auth.currentSession()).getAccessToken().getJwtToken()}`\n },\n queryStringParameters: {\n personal: personal,\n action: 'new',\n username: JSON.parse(JSON.stringify(await Auth.currentAuthenticatedUser())).username\n }\n };\n\n var payloadNew = await API.get(apiName, path, myInit);\n\n setVacationPayload(payloadNew);\n\n setIsDetail(true);\n setId(undefined);\n\n setActivateSaveButton(true);\n setActivateConfirmButton(false);\n setActivateDeleteButton(false);\n setAllowUpdating(true);\n }\n catch (e) {\n if (e === 'No current user') {\n history.push('/');\n\n window.location.reload();\n }\n }\n };\n\n async function confirmButton() {\n try {\n if (!window.confirm('¿Desea confirmar la solicitud?'))\n return;\n\n setVisibleLoadPanel(true);\n\n var ID = vacationPayload.header.ID;\n\n let apiName = 'AdminSC';\n let path = '/procesavacaciones';\n\n let myInit = {\n headers: {\n 'Content-Type': 'application/json',\n Authorization: `${(await Auth.currentSession()).getAccessToken().getJwtToken()}`\n },\n body: {\n ID: ID,\n payload: vacationPayload,\n action: 'apply',\n username: JSON.parse(JSON.stringify(await Auth.currentAuthenticatedUser())).username\n }\n }\n\n var payloadPost = await API.post(apiName, path, myInit);\n\n if (payloadPost.ok === 'true') {\n setVisibleLoadPanel(false);\n\n setVisibleToast(true);\n setMessageToast('Solicitud aplicada con éxito');\n setTypeToast('success')\n // setAllowUpdating(false);\n // setActivateButton(false);\n\n //Vamos al tablero de control\n setIsDetail(false);\n\n //Obtenemos los registros actualizados\n // var getVacations = await getVacationRecords(props.personal);\n // setVacationRecords(getVacations);\n\n //Vamos al tablero de control\n history.push('/Vacation');\n }\n else if (payloadPost.ok === 'false') {\n setVisibleLoadPanel(false);\n\n setVisibleToast(true);\n setMessageToast(payloadPost.message);\n setTypeToast('error')\n }\n }\n catch (e) {\n setVisibleLoadPanel(false);\n\n if (e === 'No current user') {\n history.push('/');\n\n window.location.reload();\n }\n }\n };\n\n async function deleteButton() {\n try {\n if (!window.confirm('¿Desea eliminar la solicitud?'))\n return;\n\n setVisibleLoadPanel(true);\n\n var ID = vacationPayload.header.ID;\n\n let apiName = 'AdminSC';\n let path = '/procesavacaciones';\n\n let myInit = {\n headers: {\n 'Content-Type': 'application/json',\n Authorization: `${(await Auth.currentSession()).getAccessToken().getJwtToken()}`\n },\n body: {\n ID: ID,\n payload: vacationPayload,\n action: 'delete',\n username: JSON.parse(JSON.stringify(await Auth.currentAuthenticatedUser())).username\n }\n }\n\n var payloadPost = await API.post(apiName, path, myInit);\n\n if (payloadPost.ok === 'true') {\n setVisibleLoadPanel(false);\n\n setVisibleToast(true);\n setMessageToast('Solicitud eliminada con éxito');\n setTypeToast('success')\n\n setIsDetail(false);\n\n //Obtenemos los registros actualizados\n // var getVacations = await getVacationRecords(props.personal);\n // setVacationRecords(getVacations);\n\n //Vamos al tablero de control\n history.push('/Vacation');\n }\n else if (payloadPost.ok === 'false') {\n setVisibleLoadPanel(false);\n\n setVisibleToast(true);\n setMessageToast(payloadPost.message);\n setTypeToast('error')\n }\n }\n catch (e) {\n setVisibleLoadPanel(false);\n\n if (e === 'No current user') {\n history.push('/');\n\n window.location.reload();\n }\n }\n }\n\n async function cancelButton() {\n try {\n if (!window.confirm('¿Desea rechazar la solicitud?'))\n return;\n\n if (vacationPayload.header.MotivoRechazo === '' || !vacationPayload.header.MotivoRechazo) {\n setVisibleToast(true);\n setMessageToast('Favor de especificar el Motivo de Rechazo');\n setTypeToast('error')\n return;\n }\n\n setVisibleLoadPanel(true);\n\n var ID = vacationPayload.header.ID;\n\n let apiName = 'AdminSC';\n let path = '/procesavacaciones';\n\n let myInit = {\n headers: {\n 'Content-Type': 'application/json',\n Authorization: `${(await Auth.currentSession()).getAccessToken().getJwtToken()}`\n },\n body: {\n ID: ID,\n payload: vacationPayload,\n action: 'void',\n username: JSON.parse(JSON.stringify(await Auth.currentAuthenticatedUser())).username\n }\n }\n\n var payloadPost = await API.post(apiName, path, myInit);\n\n if (payloadPost.ok === 'true') {\n setVisibleLoadPanel(false);\n\n setVisibleToast(true);\n setMessageToast('Solicitud rechazada con éxito');\n setTypeToast('success')\n\n setIsDetail(false);\n\n //Obtenemos los registros actualizados\n // var getVacations = await getVacationRecords(props.personal);\n // setVacationRecords(getVacations);\n\n //Vamos al tablero de control\n history.push('/Vacation');\n }\n else if (payloadPost.ok === 'false') {\n setVisibleLoadPanel(false);\n\n setVisibleToast(true);\n setMessageToast(payloadPost.message);\n setTypeToast('error')\n }\n }\n catch (e) {\n setVisibleLoadPanel(false);\n\n if (e === 'No current user') {\n history.push('/');\n\n window.location.reload();\n }\n }\n }\n\n function printButton() {\n var baseUrl = window.location.href.split('/')[0];\n\n window.open(baseUrl + \"/#/PdfRender?type=vacation&id=\" + id, \"_blank\");\n };\n\n function editVacation(data) {\n return (\n <Link to={`/Vacation/${data.data.ID}`}>\n <button class=\"bg-blue-500 hover:bg-blue-700 text-white py-1 px-3 rounded\" onClick={() => editVacationButton(data.data.ID)}><FontAwesomeIcon icon={faPencilAlt} /> Editar</button>\n </Link>\n )\n }\n\n async function onFieldDatosVacacionChanged(e) {\n var payload = JSON.parse(JSON.stringify(vacationPayload));\n\n payload.personal = props.personal;\n payload.action = 'days';\n payload.username = JSON.parse(JSON.stringify(await Auth.currentAuthenticatedUser())).username;\n\n if (payload.header.FechaD && payload.header.FechaA) {\n let apiName = 'AdminSC';\n let path = '/procesavacaciones';\n\n let myInit = {\n headers: {\n 'Content-Type': 'application/json',\n Authorization: `${(await Auth.currentSession()).getAccessToken().getJwtToken()}`\n },\n body: payload\n };\n\n var daysResult = await API.post(apiName, path, myInit);\n\n if (formDatosGeneralesRef.current) {\n var formDatosGenerales = formDatosGeneralesRef.current.instance();\n\n try {\n formDatosGenerales.updateData('NumeroDias', daysResult.result.NumeroDias);\n }\n catch (e) {\n formDatosGenerales.updateData('NumeroDias', 0);\n }\n\n }\n }\n }\n\n useEffect(() => {\n window.addEventListener('popstate', (e) => {\n var hash;\n\n try {\n hash = e.target.location.hash;\n }\n catch (e) {\n hash = '';\n }\n\n if (hash === '#/Vacation') {\n history.push('/Vacation');\n\n window.location.reload();\n }\n });\n\n async function initialize() {\n //Obtenemos sus solicitudes de vacaciones\n // var getVacationList = await getVacationRecords(props.personal);\n\n // setVacationRecords(getVacationList);\n\n //Obtenemos el listado de Motivo de Rechazo\n var getMotivoRechazoList = await getMotivoRechazoRecords();\n\n var motivos = [];\n\n for (var motivoIndex in getMotivoRechazoList) {\n motivos.push({\n name: getMotivoRechazoList[motivoIndex].value,\n value: getMotivoRechazoList[motivoIndex].value\n });\n }\n\n setMotivoRechazo(motivos);\n\n // Obtenemos el listado de personal\n let apiNamePersonal = 'AdminSC';\n let pathPersonal = '/getcatalogo';\n\n let myInitPersonal = {\n headers: {\n 'Content-Type': 'application/json',\n Authorization: `${(await Auth.currentSession()).getAccessToken().getJwtToken()}`\n },\n queryStringParameters: {\n type: 'Personal',\n includeInactive: false,\n username: JSON.parse(JSON.stringify(await Auth.currentAuthenticatedUser())).username\n }\n }\n\n var personalGet = await API.get(apiNamePersonal, pathPersonal, myInitPersonal);\n\n var personalestmp = [];\n\n for (var personalIndex in personalGet) {\n personalestmp.push({\n value: personalGet[personalIndex].Personal,\n name: personalGet[personalIndex].ApellidoPaterno + ' ' +\n personalGet[personalIndex].ApellidoMaterno + ' ' +\n personalGet[personalIndex].Nombre\n });\n }\n\n setPersonales(personalestmp);\n }\n\n initialize();\n\n //En caso de solicitar un ID especifico, redireccionamos a ese ID\n if (!props.match.isExact) {\n var urlID = props.location.pathname.replace('/Vacation/', '');\n\n editVacationButton(urlID);\n }\n\n // eslint-disable-next-line\n }, []);\n\n function overrideOnValueChanged(e) {\n //Hacemos la data persistente en cuanto el usuario escriba en el campo\n // if (e.parentType === \"dataRow\") {\n // e.editorOptions.valueChangeEvent = \"input\";\n // }\n }\n\n function onHidingToast() {\n setVisibleToast(false);\n }\n\n function refreshButton() {\n if (gridTableroRef.current) {\n var gridTablero = gridTableroRef.current.instance();\n\n gridTablero.refresh();\n }\n }\n\n function onExporting(e) {\n const workbook = new Workbook();\n const worksheet = workbook.addWorksheet('Datos');\n\n exportDataGrid({\n component: e.component,\n worksheet,\n autoFilterEnabled: true,\n }).then(() => {\n workbook.xlsx.writeBuffer().then((buffer) => {\n saveAs(new Blob([buffer], { type: 'application/octet-stream' }), 'Datos.xlsx');\n });\n });\n e.cancel = true;\n };\n\n return (\n <div>\n {isDetail === false ? (\n <div class=\"bg-gray-200 m-2\">\n <h1 class=\"font-sans inline-block text-xl font-bold text-gray-700 leading-8 align-top mb-1\"><FontAwesomeIcon icon={faList} size=\"lg\" /> Solicitudes de Vacaciones</h1>\n </div>\n ) :\n (\n <div class=\"bg-gray-200 m-2\">\n <h1 class=\"font-sans inline-block text-xl font-bold text-gray-700 leading-8 align-top mb-1\"><FontAwesomeIcon icon={faUmbrellaBeach} size=\"xl\" /> {(vacationPayload.header ? vacationPayload.header.Movimiento : 'Solicitud Vac')}</h1>\n <TransactionStatus {...props} Estatus={vacationPayload.header.Estatus} />\n </div>\n )}\n\n <LoadPanel\n shadingColor=\"rgba(0,0,0,0.4)\"\n visible={visibleLoadPanel}\n showIndicator={true}\n message=\"Por favor espere...\"\n shading={true}\n showPane={true}\n hideOnOutsideClick={false}\n />\n\n <Toast\n visible={visibleToast}\n message={messageToast}\n type={typeToast}\n onHiding={onHidingToast}\n displayTime={5000}\n width={'auto'}\n position={{\n my: 'top center',\n at: 'top center',\n of: window,\n offset: '0 130'\n }}\n />\n\n <div class=\"bg-gray-200 m-2\">\n {isDetail === false ? (\n <div class=\"bg-white p-3 shadow-xl\">\n <Link to=\"/Vacation/undefined\">\n <button class=\"mb-2 bg-green-500 hover:bg-green-700 text-white font-bold py-2 px-4 rounded\" onClick={() => newButton()}><FontAwesomeIcon icon={faFileAlt} /> Nueva Solicitud de Vacaciones</button>\n </Link>\n\n <button onClick={refreshButton} type=\"submit\" class=\"ml-4 mb-4 bg-blue-500 hover:bg-blue-700 text-white font-bold py-2 px-4 rounded\">\n <FontAwesomeIcon icon={faArrowsRotate} /> Actualizar\n </button>\n\n <div className=\"options mb-2\">\n <div className=\"option\">\n <CheckBox text=\"Expandir todos los grupos\"\n value={autoExpandAll}\n onValueChanged={onAutoExpandAllChanged}></CheckBox>\n </div>\n </div>\n <DataGrid\n height={800}\n id=\"gridContainer\"\n columnsAutoWidth={true}\n filterBuilder={filterBuilder}\n dataSource={store}\n defaultFilterValue={filterValue}\n allowColumnReordering={true}\n allowColumnResizing={true}\n columnResizingMode={\"widget\"}\n showBorders={true}\n rowAlternationEnabled={true}\n showRowLines={true}\n showColumnLines={true}\n remoteOperations={{ filtering: true }}\n ref={gridTableroRef}\n onExporting={onExporting}\n >\n <Scrolling rowRenderingMode='virtual'></Scrolling>\n <Paging defaultPageSize={10} />\n <Pager\n visible={true}\n allowedPageSizes={allowedPageSizes}\n displayMode='compact'\n showPageSizeSelector={true}\n showInfo={true}\n showNavigationButtons={true}\n />\n <FilterRow visible={true} />\n <FilterPanel visible={true} />\n <FilterBuilderPopup position={filterBuilderPopupPosition} />\n\n <HeaderFilter visible={true} />\n\n <GroupPanel visible={true} />\n <SearchPanel visible={true} />\n <ColumnChooser\n enabled={true}\n mode='select'\n >\n <ColumnChooserSearch\n enabled={true}\n />\n\n <ColumnChooserSelection\n allowSelectAll={true}\n selectByClick={true}\n recursive={true}\n />\n </ColumnChooser>\n <Grouping autoExpandAll={autoExpandAll} />\n <StateStoring enabled={true} type=\"localStorage\" storageKey=\"gridContainerVacation\" />\n <Export enabled={true} />\n\n <Column caption=\"\" alignment=\"center\" width={100} cellRender={editVacation} />\n\n <Column dataField=\"MovID\" dataType=\"string\" width={190} caption=\"Folio\" />\n <Column dataField=\"FechaEmision\" caption=\"Fecha Emisión\" dataType=\"date\" width={150} />\n <Column dataField=\"FechaD\" caption=\"De Fecha\" dataType=\"date\" width={150} />\n <Column dataField=\"FechaA\" caption=\"A Fecha\" dataType=\"date\" width={150} />\n <Column dataField=\"Estatus\" dataType=\"string\" width={150} />\n <Column dataField=\"NombreEmpleado\" dataType=\"string\" groupIndex={1} />\n <Column caption=\"Plaza\" dataField=\"Plaza\" dataType=\"string\" width={150} groupIndex={0} />\n </DataGrid>\n </div>\n ) : (<div />)}\n <Route exact path=\"/Vacation/:ID\" render={({ match }) => {\n return (\n <div class=\"bg-gray-200\">\n {isDetail.toString() === 'true' ?\n (\n <div>\n <Link to=\"/Vacation\">\n <button onClick={cancelEditButton} type=\"submit\" class=\"mb-4 bg-red-500 hover:bg-red-700 text-white font-bold py-2 px-4 rounded\">\n <FontAwesomeIcon icon={faArrowRotateLeft} /> Regresar\n </button>\n </Link>\n\n {activateSaveButton.toString() === 'true' ?\n (\n <button onClick={saveButton} type=\"submit\" class=\"ml-4 mb-4 bg-blue-500 hover:bg-blue-700 text-white font-bold py-2 px-4 rounded\">\n <FontAwesomeIcon icon={faSave} /> Guardar Cambios\n </button>\n ) : (\n <button disabled onClick={saveButton} type=\"submit\" class=\"ml-4 mb-4 cursor-not-allowed disabled:opacity-75 bg-gray-500 hover:bg-gray-700 text-white font-bold py-2 px-4 rounded\">\n <FontAwesomeIcon icon={faSave} /> Guardar Cambios\n </button>\n )}\n\n {activateConfirmButton.toString() === 'true' ?\n (\n <button onClick={confirmButton} type=\"submit\" class=\"ml-4 mb-4 bg-green-500 hover:bg-green-700 text-white font-bold py-2 px-4 rounded\">\n <FontAwesomeIcon icon={faClipboardCheck} /> Confirmar Solicitud\n </button>\n ) : (\n <button disabled onClick={confirmButton} type=\"submit\" class=\"ml-4 mb-4 cursor-not-allowed disabled:opacity-75 bg-gray-500 hover:bg-gray-700 text-white font-bold py-2 px-4 rounded\">\n <FontAwesomeIcon icon={faClipboardCheck} /> Confirmar Solicitud\n </button>\n )}\n\n {activateDeleteButton.toString() === 'true' && id ?\n (\n <button onClick={deleteButton} type=\"submit\" class=\"ml-4 mb-4 bg-gray-500 hover:bg-gray-700 text-white font-bold py-2 px-4 rounded\">\n <FontAwesomeIcon icon={faTrashAlt} /> Eliminar Solicitud\n </button>\n ) : (\n <button disabled onClick={deleteButton} type=\"submit\" class=\"ml-4 mb-4 cursor-not-allowed disabled:opacity-75 bg-gray-500 hover:bg-gray-700 text-white font-bold py-2 px-4 rounded\">\n <FontAwesomeIcon icon={faTrashAlt} /> Eliminar Solicitud\n </button>\n )}\n\n {activateCancelButton.toString() === 'true' && id ?\n (\n <button onClick={cancelButton} type=\"submit\" class=\"ml-4 mb-4 bg-gray-500 hover:bg-gray-700 text-white font-bold py-2 px-4 rounded\">\n <FontAwesomeIcon icon={faBan} /> Rechazar Solicitud\n </button>\n ) : (\n <button disabled onClick={cancelButton} type=\"submit\" class=\"ml-4 mb-4 cursor-not-allowed disabled:opacity-75 bg-gray-500 hover:bg-gray-700 text-white font-bold py-2 px-4 rounded\">\n <FontAwesomeIcon icon={faBan} /> Rechazar Solicitud\n </button>\n )}\n\n <button onClick={printButton} type=\"submit\" class=\"ml-4 mb-4 bg-gray-500 hover:bg-gray-700 text-white font-bold py-2 px-4 rounded\">\n <FontAwesomeIcon icon={faFilePdf} /> PDF\n </button>\n <div class=\"bg-white p-4 shadow-xl\">\n <Form\n id=\"datosGenerales\"\n labelMode={'outside'}\n formData={vacationPayload.header}\n ref={formDatosGeneralesRef}\n showColonAfterLabel={false}\n labelLocation={'top'}\n colCount={2}\n onFieldDataChanged={onFieldDatosVacacionChanged}\n >\n <GroupItem caption=\"General\">\n <Item cssClass=\"boldText\" dataField=\"Movimiento\" editorOptions={movimientoEditorOptions} />\n <Item dataField=\"FechaEmision\" editorType=\"dxDateBox\" editorOptions={fechaEmisionEditorOptions}>\n <Label text={\"Fecha Emisión\"} />\n </Item>\n </GroupItem>\n <GroupItem caption=\"Datos del Empleado\">\n <Item dataField=\"Personal\" editorOptions={nombreEmpleadoEditorOptions} >\n <Label text={\"Clave Empleado\"} />\n </Item>\n <Item dataField=\"NombreEmpleado\" editorOptions={nombreEmpleadoEditorOptions} >\n <Label text={\"Nombre Empleado\"} />\n </Item>\n <Item dataField=\"NombreSucursal\" editorOptions={nombreSucursalEditorOptions} >\n <Label text={\"Sucursal\"} />\n </Item>\n <Item dataField=\"FechaIngreso\" editorType=\"dxDateBox\" editorOptions={fechaIngresoEditorOptions} >\n <Label text={\"Fecha de Ingreso\"} />\n </Item>\n <Item dataField=\"Antiguedad\" editorOptions={antiguedadEditorOptions} >\n <Label text={\"Años Laborados\"} />\n </Item>\n <Item cssClass=\"boldText\" dataField=\"FondoDisponible\" editorOptions={fondoDisponibleEditorOptions} >\n <Label text={\"Días de Fondo Disponibles\"} />\n </Item>\n <Item cssClass=\"boldText\" dataField=\"RestanteDisponible\" editorOptions={restanteDisponibleEditorOptions} >\n <Label text={\"Días Restantes Disponibles\"} />\n </Item>\n </GroupItem>\n <GroupItem caption=\"Datos Jefe Directo\">\n <Item dataField=\"Supervisor\" editorOptions={nombreEmpleadoEditorOptions} >\n <Label text={\"Clave\"} />\n </Item>\n <Item dataField=\"NombreSupervisor\" editorOptions={nombreEmpleadoEditorOptions} >\n <Label text={\"Nombre\"} />\n </Item>\n <Item dataField=\"CorreoSupervisor\" editorOptions={nombreEmpleadoEditorOptions} >\n <Label text={\"eMail\"} />\n </Item>\n </GroupItem>\n <GroupItem caption=\"Datos Solicitud\">\n <Item dataField=\"FechaD\" editorType=\"dxDateBox\" editorOptions={fechaDEditorOptions} >\n <Label text={\"De Fecha\"} />\n </Item>\n <Item dataField=\"FechaA\" editorType=\"dxDateBox\" editorOptions={fechaAEditorOptions} >\n <Label text={\"A Fecha\"} />\n </Item>\n <Item dataField=\"NumeroDias\" editorOptions={numeroDiasEditorOptions} >\n <Label text={\"Número de Días\"} />\n </Item>\n <Item dataField=\"PersonalCubre\" editorType=\"dxSelectBox\" editorOptions={personalCubreEditorOptions} >\n <Label text={\"Personal que cubre\"} />\n </Item>\n </GroupItem>\n <GroupItem caption=\"Motivo de Rechazo\">\n <Item dataField=\"MotivoRechazo\" editorType=\"dxSelectBox\" editorOptions={motivoRechazoEditorOptions} >\n <Label text={\"Motivo\"} />\n </Item>\n <Item dataField=\"Observaciones\" editorOptions={observacionesEditorOptions} editorType=\"dxTextArea\" >\n <Label text={\"Observaciones\"} />\n </Item>\n </GroupItem>\n <GroupItem caption=\"Detalle\">\n <DataGrid\n id=\"gridCelularVehiculoNissan\"\n columnsAutoWidth={true}\n dataSource={vacationPayload.detail}\n showBorders={true}\n showColumnLines={true}\n showRowLines={true}\n rowAlternationEnabled={false}\n allowColumnResizing={true}\n columnResizingMode={\"widget\"}\n allowColumnReordering={false}\n onEditorPreparing={overrideOnValueChanged}\n repaintChangesOnly={true}\n >\n <Paging defaultPageSize={100} />\n <Editing\n mode=\"cell\"\n allowUpdating={allowUpdatingGrid}\n />\n\n <Sorting mode=\"none\" />\n <Column dataField=\"Tipo\" dataType=\"string\" allowEditing={false} width={150} />\n <Column dataField=\"Cantidad\" width={150} dataType=\"string\" showEditorAlways={true} />\n </DataGrid>\n </GroupItem>\n </Form>\n </div>\n </div>\n ) :\n (<div></div>)}\n </div>\n )\n }}\n />\n </div>\n </div>\n );\n}","import \"@aws-amplify/ui-react/styles.css\";\n\nimport {\n Authenticator,\n ThemeProvider,\n Theme,\n useTheme,\n View,\n Image,\n Text,\n Heading,\n Button,\n useAuthenticator\n\n} from '@aws-amplify/ui-react';\n\nimport { Auth } from 'aws-amplify';\n\nimport { I18n } from 'aws-amplify';\n\nimport { translations } from '@aws-amplify/ui-react';\n\nimport '@aws-amplify/ui-react/styles.css';\n\nimport './Signin.css';\n\nI18n.putVocabularies(translations);\n\nI18n.setLanguage('es');\n\nI18n.putVocabularies({\n es: {\n 'Sign In': 'Iniciar sesión',\n 'Please fill out this field.': 'Favor de introducir este campo'\n }\n});\n\nconst Signin = (props) => {\n const formFields = {\n signIn: {\n username: {\n labelHidden: false,\n label: 'Usuario:',\n placeholder: 'Introduzca su usuario',\n isRequired: true,\n order: 1\n },\n password: {\n labelHidden: false,\n label: 'Contraseña:',\n placeholder: 'Introduzca su contraseña:',\n isRequired: true,\n order: 2,\n }\n }\n };\n\n const components = {\n Header() {\n const { tokens } = useTheme();\n\n return (\n <View textAlign=\"center\" padding={tokens.space.large}>\n </View>\n );\n },\n Footer() {\n const { tokens } = useTheme();\n\n return (\n <View textAlign=\"center\" padding={tokens.space.large}>\n </View>\n );\n },\n\n SignIn: {\n Header() {\n const { tokens } = useTheme();\n\n return (\n <Heading\n padding={`${tokens.space.xl} 0 0 ${tokens.space.xl}`}\n level={4}\n >\n Inicio de sesión\n </Heading>\n );\n },\n Footer() {\n const { toResetPassword } = useAuthenticator();\n\n return (\n <View textAlign=\"center\">\n </View>\n );\n },\n }\n };\n\n const services = {\n async handleSignIn(formData) {\n let { username, password } = formData;\n\n return Auth.signIn(username, password)\n .then((user) => {\n props.handleAuthStateChange('signedin');\n })\n }\n };\n\n return (\n <div>\n {props.status === 'signedout' ?\n <Authenticator\n formFields={formFields}\n components={components}\n loginMechanisms={['username']}\n hideSignUp\n >\n </Authenticator>\n :\n <div>\n </div>\n }\n </div>\n )\n}\n\nexport default Signin;","\nfunction Signout() {\n return (\n <div>\n </div>\n );\n}\nexport default Signout;","import React, { useState, useEffect, useRef } from 'react';\n\n// LoadPanel\nimport { LoadPanel } from 'devextreme-react/load-panel';\n\n// Toast\nimport { Toast } from 'devextreme-react/toast';\n\n// Iconos\nimport { FontAwesomeIcon } from \"@fortawesome/react-fontawesome\";\nimport { faSave } from \"@fortawesome/pro-solid-svg-icons\";\nimport { faUserPlus } from \"@fortawesome/pro-duotone-svg-icons\";\n\n\nimport { Auth, API, Storage } from 'aws-amplify';\n\n// Ruteador\nimport { Route, Link, useHistory } from \"react-router-dom\";\n\n//Form\nimport Form, { GroupItem, Label, Item } from 'devextreme-react/form';\n\n//Validator\nimport { EmailRule, CustomRule, RequiredRule } from 'devextreme-react/validator';\n\nexport default function Register() {\n const [signUpPayload, setSignUpPayload] = useState({\n emailaddress: '',\n username: '',\n password: ''\n });\n\n const [visibleLoadPanel, setVisibleLoadPanel] = useState(false);\n\n const [visibleToast, setVisibleToast] = useState(false);\n const [messageToast, setMessageToast] = useState('');\n const [typeToast, setTypeToast] = useState('success');\n const [ok, setOk] = useState(false);\n\n //Ref para el form\n const [formSignUpRef, setFormSignUpRef] = useState(React.createRef());\n\n var passwordEditorOptions = { width: '40%', disabled: false, mode: 'password' };\n var userNameEditorOptions = { width: '40%', readOnly: false };\n var emailEditorOptions = { width: '40%', disabled: false, mode: 'email' };\n\n\n async function saveButton() {\n if (formSignUpRef.current) {\n var formSignUp = formSignUpRef.current.instance();\n var isValid = formSignUp.validate();\n var okAdmin = false;\n\n if (!isValid.isValid) {\n setVisibleToast(true);\n setMessageToast(isValid.brokenRules[0].message);\n setTypeToast('error');\n return;\n }\n }\n\n var user = await Auth.currentAuthenticatedUser();\n\n var groups = user.signInUserSession.accessToken.payload[\"cognito:groups\"];\n\n for (var groupIndex in groups) {\n var singleGroup = groups[groupIndex];\n\n if (singleGroup === 'Admin') {\n okAdmin = true;\n }\n }\n\n if (okAdmin === false) {\n setVisibleToast(true);\n setMessageToast('Unauthorized');\n setTypeToast('error');\n return;\n }\n\n var email = signUpPayload.emailaddress;\n var username = signUpPayload.username;\n var password = signUpPayload.password;\n\n if (password.length < 8) {\n setVisibleToast(true);\n setMessageToast('La contraseña debe tener mínimo 8 caracteres');\n setTypeToast('error')\n return;\n }\n\n setVisibleLoadPanel(true);\n\n try {\n // Obtenemos el token\n let apiNameToken = 'AdminSC';\n let pathToken = '/getValidationToken';\n\n let myInitToken = {\n headers: {\n 'Content-Type': 'application/json',\n Authorization: `${(await Auth.currentSession()).getAccessToken().getJwtToken()}`\n },\n queryStringParameters: {\n }\n }\n\n var validationToken = await API.post(apiNameToken, pathToken, myInitToken);\n\n await Auth.signUp({\n username,\n password,\n attributes: {\n email, // optional but not in this case as MFA/Verification code wil be emailed\n },\n validationData: {\n qs: validationToken[0].Value\n }\n });\n\n setVisibleToast(true);\n setMessageToast('Usuario creado con éxito');\n setTypeToast('success')\n\n } catch (error) {\n setVisibleToast(true);\n setMessageToast(error.message);\n setTypeToast('error')\n }\n\n setVisibleLoadPanel(false);\n }\n\n function onHidingToast() {\n setVisibleToast(false);\n }\n\n useEffect(() => {\n async function initialize() {\n var user = await Auth.currentAuthenticatedUser();\n\n var groups = user.signInUserSession.accessToken.payload[\"cognito:groups\"];\n\n for (var groupIndex in groups) {\n var singleGroup = groups[groupIndex];\n\n if (singleGroup === 'Admin') {\n setOk(true);\n }\n }\n }\n\n initialize();\n });\n\n return (\n <div>\n {ok === true ? (\n <div>\n <div class=\"bg-gray-200 m-2\">\n <h1 class=\"font-sans inline-block text-xl font-bold text-gray-700 leading-8 align-top mb-1\"><FontAwesomeIcon icon={faUserPlus} size=\"xl\" /> Agregar Usuario</h1>\n </div>\n <div className=\"bg-white p-4 shadow-xl m-2\">\n <LoadPanel\n shadingColor=\"rgba(0,0,0,0.4)\"\n visible={visibleLoadPanel}\n showIndicator={true}\n message=\"Por favor espere...\"\n shading={true}\n showPane={true}\n hideOnOutsideClick={false}\n />\n\n <Toast\n visible={visibleToast}\n message={messageToast}\n type={typeToast}\n onHiding={onHidingToast}\n displayTime={5000}\n width={'auto'}\n position={{\n my: 'top center',\n at: 'top center',\n of: window,\n offset: '0 130'\n }}\n />\n <Form\n id=\"formSignUp\"\n labelMode={'outside'}\n formData={signUpPayload}\n disabled={false}\n showColonAfterLabel={false}\n labelLocation={'top'}\n colCount={1}\n ref={formSignUpRef}\n >\n <GroupItem caption=\"Datos usuario\">\n <Item dataField=\"emailaddress\" editorOptions={emailEditorOptions}>\n <Label text={\"Correo Electrónico\"} />\n <EmailRule message=\"eMail incorrecto\" />\n <RequiredRule message=\"eMail es requerido\" />\n </Item>\n <Item dataField=\"username\" editorOptions={userNameEditorOptions}>\n <Label text={\"Usuario\"} />\n <RequiredRule message=\"Usuario es requerido\" />\n </Item>\n <Item dataField=\"password\" editorOptions={passwordEditorOptions}>\n <Label text={\"Contraseña\"} />\n <RequiredRule message=\"Contraseña es requerida\" />\n </Item>\n </GroupItem>\n </Form>\n\n <button onClick={saveButton} type=\"submit\" class=\"bg-blue-500 hover:bg-blue-700 text-white font-bold py-2 px-4 rounded\">\n <FontAwesomeIcon icon={faSave} /> Guardar Cambios\n </button>\n </div>\n </div>\n ) : (<div></div>)\n }\n </div>\n )\n}","import React, { useState, useEffect, useRef, useMemo } from 'react';\n\n// LoadPanel\nimport { LoadPanel } from 'devextreme-react/load-panel';\n\n// Toast\nimport { Toast } from 'devextreme-react/toast';\n\n// Grid\nimport DataGrid, {\n Column, FilterRow, HeaderFilter, FilterPanel, FilterBuilderPopup,\n GroupPanel, Grouping, SearchPanel, Sorting, Editing, Lookup, Toolbar, Item, RequiredRule,\n Scrolling, Pager, Paging, Summary, TotalItem, StateStoring, ColumnChooser, Export,\n ColumnChooserSearch, ColumnChooserSelection\n} from 'devextreme-react/data-grid';\n\n//CheckBox\nimport CheckBox from 'devextreme-react/check-box';\n\n//TagBox\nimport TagBox from \"devextreme/ui/tag_box\";\n\n//Form\nimport Form, { GroupItem, Label, TabbedItem, TabPanelOptions, Tab } from 'devextreme-react/form';\n\nimport { Auth, API, Storage } from 'aws-amplify';\n\n// Ruteador\nimport { Route, Link, useHistory } from \"react-router-dom\";\n\n// Iconos\nimport { FontAwesomeIcon } from \"@fortawesome/react-fontawesome\";\nimport { faPencilAlt } from \"@fortawesome/pro-solid-svg-icons\";\nimport { faArrowRotateLeft } from \"@fortawesome/pro-solid-svg-icons\";\nimport { faSave } from \"@fortawesome/pro-solid-svg-icons\";\nimport { faList } from \"@fortawesome/pro-duotone-svg-icons\";\nimport { faUser } from \"@fortawesome/pro-duotone-svg-icons\";\nimport { faTrashAlt } from \"@fortawesome/pro-solid-svg-icons\";\n\nimport './Users.css';\n\nimport DataSource from 'devextreme/data/data_source';\n\nimport '../ListStyle.css';\n\nimport { Workbook } from 'exceljs';\nimport { saveAs } from 'file-saver';\nimport { exportDataGrid } from 'devextreme/excel_exporter'\n\nexport default function Users(props) {\n const history = useHistory();\n\n const [isDetail, setIsDetail] = useState(false);\n const [userName, setUserName] = useState();\n const [userRecords, setUserRecords] = useState([]);\n\n //Controles para los campos tipo Checkbox\n const [conAsistencia, setConAsistencia] = useState(true);\n const [conChecklist, setConChecklist] = useState(true);\n const [conChecklistVeh, setConChecklistVeh] = useState(true);\n const [conChecklistAud, setConChecklistAud] = useState(true);\n const [conVacaciones, setConVacaciones] = useState(true);\n const [conProcesarFacturas, setConProcesarFacturas] = useState(true);\n const [conProcesarFacturasSucursal, setConProcesarFacturasSucursal] = useState(true);\n const [conProcesarFacturasBodega, setConProcesarFacturasBodega] = useState(true);\n\n const [conEstimate, setConEstimate] = useState(true);\n const [conLostDeal, setConLostDeal] = useState(true);\n const [conSalesOrder, setConSalesOrder] = useState(true);\n const [conInvoice, setConInvoice] = useState(true);\n const [conDirectDelivery, setConDirectDelivery] = useState(true);\n const [conDirectReturn, setConDirectReturn] = useState(true);\n const [conDeliveryRequest, setConDeliveryRequest] = useState(true);\n const [conReturnRequest, setConReturnRequest] = useState(true);\n const [conTransferOrder, setConTransferOrder] = useState(true);\n const [conSalesOrderMod, setConSalesOrderMod] = useState(true);\n const [conShipmentRequest, setConShipmentRequest] = useState(true);\n const [conCashRegister, setConCashRegister] = useState(true);\n const [conCustomerPayment, setConCustomerPayment] = useState(true);\n const [conInvTransferOrder, setConInvTransferOrder] = useState(true);\n const [conInventoryTransfer, setConInventoryTransfer] = useState(true);\n const [conInvItemFulfillment, setConInvItemFulfillment] = useState(true);\n const [conInvItemReceipt, setConInvItemReceipt] = useState(true);\n const [conSendWMS, setConSendWMS] = useState(true);\n const [conReceiveWMS, setConReceiveWMS] = useState(true);\n const [conProductsWMS, setConProductsWMS] = useState(true);\n const [conCreateLabelWMS, setConCreateLabelWMS] = useState(true);\n const [conReceiveOrderWMS, setConReceiveOrderWMS] = useState(true);\n const [conFulfillmentOrderWMS, setConFulfillmentOrderWMS] = useState(true);\n const [conAdjustItemWMS, setConAdjustItemWMS] = useState(true);\n const [conItemCountWMS, setConItemCountWMS] = useState(true);\n const [conPOSuggestionsReport, setConPOSuggestionsReport] = useState(true);\n\n const [sucursales, setSucursales] = useState([]);\n const [plazas, setPlazas] = useState([]);\n const [personales, setPersonales] = useState([]);\n const [usuarios, setUsuarios] = useState([]);\n const [agentes, setAgentes] = useState([]);\n\n const [userPayload, setUserPayload] = useState({\n });\n\n const [autoExpandAll, setAutoExpandAll] = useState(true);\n\n //Controles para expander los grupos del grid de checklist\n const [autoExpandAllChecklist, setAutoExpandAllChecklist] = useState(true);\n\n const [visibleLoadPanel, setVisibleLoadPanel] = useState(false);\n\n const [visibleToast, setVisibleToast] = useState(false);\n const [messageToast, setMessageToast] = useState('');\n const [typeToast, setTypeToast] = useState('success');\n\n const [ok, setOk] = useState(false);\n\n const filterBuilder = useMemo(() => {\n return {\n customOperations: [{\n name: 'weekends',\n caption: 'Weekends',\n dataTypes: ['date'],\n icon: 'check',\n hasValue: false,\n calculateFilterExpression: () => [[getOrderDay, '=', 0], 'or', [getOrderDay, '=', 6]],\n }],\n allowHierarchicalFields: true,\n };\n }, []);\n\n const filterBuilderPopupPosition = useMemo(() => {\n return {\n of: window,\n at: 'top',\n my: 'top',\n offset: { y: 10 },\n };\n }, []);\n\n const allowedPageSizes = useMemo(() => {\n return [5, 10, 15, 20, 'all'];\n }, []);\n\n const exportFormats = useMemo(() => {\n return ['xlsx'];\n }, []);\n\n function getOrderDay(rowData) {\n return (new Date(rowData.OrderDate)).getDay();\n };\n\n async function getSucursales() {\n let apiName = 'AdminSC';\n let path = '/getcatalogo';\n\n let myInit = {\n headers: {\n 'Content-Type': 'application/json',\n Authorization: `${(await Auth.currentSession()).getAccessToken().getJwtToken()}`\n },\n queryStringParameters: {\n type: 'Sucursal',\n username: JSON.parse(JSON.stringify(await Auth.currentAuthenticatedUser())).username\n }\n }\n\n var sucursalesGet = await API.get(apiName, path, myInit);\n\n var sucursalesTmp = [];\n for (var sucursalesGetIndex in sucursalesGet) {\n var singleSucursalesGet = sucursalesGet[sucursalesGetIndex];\n\n var singleSucursal = {\n name: singleSucursalesGet.Nombre,\n value: singleSucursalesGet.Sucursal.toString()\n };\n\n sucursalesTmp.push(singleSucursal);\n }\n\n setSucursales(sucursalesTmp);\n\n var plazasTmp = ['(TODAS)'];\n\n for (var sucursalIndex in sucursalesGet) {\n var singleSucursal = sucursalesGet[sucursalIndex];\n\n var existe = false;\n for (var plazaIndex in plazasTmp) {\n var singlePlaza = plazasTmp[plazaIndex];\n\n if (singlePlaza === singleSucursal.Grupo)\n existe = true;\n }\n\n if (existe === false && singleSucursal.Grupo)\n plazasTmp.push(singleSucursal.Grupo);\n }\n\n setPlazas(plazasTmp);\n\n return sucursalesTmp;\n };\n\n async function getPersonal() {\n let apiName = 'AdminSC';\n let path = '/getcatalogo';\n\n let myInit = {\n headers: {\n 'Content-Type': 'application/json',\n Authorization: `${(await Auth.currentSession()).getAccessToken().getJwtToken()}`\n },\n queryStringParameters: {\n type: 'Personal',\n includeInactive: true,\n username: JSON.parse(JSON.stringify(await Auth.currentAuthenticatedUser())).username\n }\n }\n\n var personalesGet = await API.get(apiName, path, myInit);\n\n var personalesTmp = [];\n for (var personalesGetIndex in personalesGet) {\n var singlePersonalesGet = personalesGet[personalesGetIndex];\n\n var singlePersonal = {\n name: singlePersonalesGet.ApellidoPaterno + ' ' + singlePersonalesGet.ApellidoMaterno + ' ' + singlePersonalesGet.Nombre,\n value: singlePersonalesGet.Personal\n };\n\n personalesTmp.push(singlePersonal);\n }\n\n setPersonales(personalesTmp);\n\n return personalesTmp;\n };\n\n async function getUsuario() {\n let apiName = 'AdminSC';\n let path = '/getcatalogo';\n\n let myInit = {\n headers: {\n 'Content-Type': 'application/json',\n Authorization: `${(await Auth.currentSession()).getAccessToken().getJwtToken()}`\n },\n queryStringParameters: {\n type: 'Usuario',\n username: JSON.parse(JSON.stringify(await Auth.currentAuthenticatedUser())).username\n }\n }\n\n var usuariosGet = await API.get(apiName, path, myInit);\n\n setUsuarios(usuariosGet);\n\n return usuariosGet;\n };\n\n async function getAgente() {\n let apiName = 'AdminSC';\n let path = '/getcatalogo';\n\n let myInit = {\n headers: {\n 'Content-Type': 'application/json',\n Authorization: `${(await Auth.currentSession()).getAccessToken().getJwtToken()}`\n },\n queryStringParameters: {\n type: 'Agente',\n username: JSON.parse(JSON.stringify(await Auth.currentAuthenticatedUser())).username\n }\n }\n\n var agentesGet = await API.get(apiName, path, myInit);\n\n setAgentes(agentesGet);\n\n return agentesGet;\n };\n\n async function getUsersList(sucursalList, personalList, usuarioList, agenteList) {\n\n // Obtenemos los usuarios de Cognito\n let apiNameCognito = 'AdminQueries';\n let pathCognito = '/listUsers';\n\n let myInitCognito = {\n headers: {\n 'Content-Type': 'application/json',\n Authorization: `${(await Auth.currentSession()).getAccessToken().getJwtToken()}`\n }\n }\n\n const { NextToken, ...restCognito } = await API.get(apiNameCognito, pathCognito, myInitCognito);\n\n var users = [];\n\n // Obtenemos los atributos de los usuarios desde SQL\n let apiName = 'AdminSC';\n let path = '/procesausuariowebcfg';\n\n let myInit = {\n headers: {\n 'Content-Type': 'application/json',\n Authorization: `${(await Auth.currentSession()).getAccessToken().getJwtToken()}`\n },\n queryStringParameters: {\n action: 'list',\n usernamereq: JSON.parse(JSON.stringify(await Auth.currentAuthenticatedUser())).username,\n }\n }\n\n var usersGet = await API.get(apiName, path, myInit);\n\n for (var singleUserIndex in restCognito.Users) {\n var singleUser = restCognito.Users[singleUserIndex];\n\n var addUser = {\n Username: singleUser.Username,\n Enabled: singleUser.Enabled,\n isAdmin: singleUser.isAdmin,\n lastModifiedDate: singleUser.UserLastModifiedDate,\n createdDate: singleUser.UserCreateDate,\n cognitoUserStatus: singleUser.UserStatus\n };\n\n if (singleUser.Enabled)\n addUser.Enabled = 'Activo'\n else\n addUser.Enabled = 'Inactivo'\n\n if (singleUser.isAdmin)\n addUser.isAdmin = 'Admin'\n else\n addUser.isAdmin = ''\n\n // Agregamos el email\n for (var attributeIndex in singleUser.Attributes) {\n var singleAttribute = singleUser.Attributes[attributeIndex];\n\n if (singleAttribute.Name === 'email')\n addUser.Email = singleAttribute.Value;\n }\n\n // Agregamos el resto de los atributos\n for (var usersGetIndex in usersGet) {\n var singleUserGet = usersGet[usersGetIndex];\n\n if (singleUserGet.username === singleUser.Username) {\n addUser.Sucursal = singleUserGet.Sucursal;\n addUser.Personal = singleUserGet.Personal;\n addUser.Usuario = singleUserGet.Usuario;\n addUser.Agente = singleUserGet.Agente;\n addUser.AsistenciaPlaza = singleUserGet.AsistenciaPlaza;\n addUser.Attendance = (singleUserGet.Attendance ? true : false);\n addUser.CheckList = (singleUserGet.CheckList ? true : false);\n addUser.CheckListAud = (singleUserGet.CheckListAud ? true : false);\n addUser.ChecklistPlaza = singleUserGet.ChecklistPlaza;\n addUser.CheckListVeh = (singleUserGet.CheckListVeh ? true : false);\n addUser.Commission = (singleUserGet.Commission ? true : false);\n addUser.Document = (singleUserGet.Document ? true : false);\n addUser.Incentive = (singleUserGet.Incentive ? true : false);\n addUser.Kibana = (singleUserGet.Kibana ? true : false);\n addUser.ProcesarFacturas = (singleUserGet.ProcesarFacturas ? true : false);\n addUser.ProcesarFacturasSucursal = (singleUserGet.ProcesarFacturasSucursal ? true : false);\n addUser.ProcesarFacturasBodega = (singleUserGet.ProcesarFacturasBodega ? true : false);\n addUser.PriceList = (singleUserGet.PriceList ? true : false);\n addUser.AfectarFacturas = (singleUserGet.AfectarFacturas ? true : false);\n addUser.Vacation = (singleUserGet.Vacation ? true : false);\n addUser.VacationPlaza = singleUserGet.VacationPlaza;\n addUser.NewCheckList = (singleUserGet.NewCheckList ? true : false);\n addUser.NewCheckListAud = (singleUserGet.NewCheckListAud ? true : false);\n addUser.NewCheckListVeh = (singleUserGet.NewCheckListVeh ? true : false);\n addUser.Estimate = (singleUserGet.Estimate ? true : false);\n addUser.LostDeal = (singleUserGet.LostDeal ? true : false);\n addUser.SalesOrder = (singleUserGet.SalesOrder ? true : false);\n addUser.Invoice = (singleUserGet.Invoice ? true : false);\n addUser.DirectDelivery = (singleUserGet.DirectDelivery ? true : false);\n addUser.DirectReturn = (singleUserGet.DirectReturn ? true : false);\n addUser.DeliveryRequest = (singleUserGet.DeliveryRequest ? true : false);\n addUser.ReturnRequest = (singleUserGet.ReturnRequest ? true : false);\n addUser.TransferOrder = (singleUserGet.TransferOrder ? true : false);\n addUser.SalesOrderMod = (singleUserGet.SalesOrderMod ? true : false);\n addUser.ShipmentRequest = (singleUserGet.ShipmentRequest ? true : false);\n addUser.CashRegister = (singleUserGet.CashRegister ? true : false);\n addUser.CustomerPayment = (singleUserGet.CustomerPayment ? true : false);\n addUser.InvTransferOrder = (singleUserGet.InvTransferOrder ? true : false);\n addUser.InvLevels = (singleUserGet.InvLevels ? true : false);\n addUser.InvLevelsIncCost = (singleUserGet.InvLevelsIncCost ? true : false);\n addUser.Kardex = (singleUserGet.Kardex ? true : false);\n addUser.ApproveDelivery = (singleUserGet.ApproveDelivery ? true : false);\n addUser.VoidDeliveryTransactions = (singleUserGet.VoidDeliveryTransactions ? true : false);\n addUser.SalesOrderModUpdatePrices = (singleUserGet.SalesOrderModUpdatePrices ? true : false);\n addUser.ApproveSalesOrderMod = (singleUserGet.ApproveSalesOrderMod ? true : false);\n addUser.RegenerateCFDi = (singleUserGet.RegenerateCFDi ? true : false);\n addUser.SendCFDi = (singleUserGet.SendCFDi ? true : false);\n addUser.InvItemFulfillment = (singleUserGet.InvItemFulfillment ? true : false);\n addUser.InvItemReceipt = (singleUserGet.InvItemReceipt ? true : false);\n\n addUser.RepComparativoVentas = (singleUserGet.RepComparativoVentas ? true : false);\n addUser.POSuggestionsReport = (singleUserGet.POSuggestionsReport ? true : false);\n addUser.POSuggestionsReportCfg = (singleUserGet.POSuggestionsReportCfg ? true : false);\n\n addUser.ExploreBarcodes = (singleUserGet.ExploreBarcodes ? true : false);\n addUser.ExploreBarcodeCosts = (singleUserGet.ExploreBarcodeCosts ? true : false);\n \n addUser.InventoryTransfer = (singleUserGet.InventoryTransfer ? true : false);\n addUser.SalesPlaza = singleUserGet.SalesPlaza;\n\n addUser.EstimateLevel = singleUserGet.EstimateLevel;\n addUser.LostDealLevel = singleUserGet.LostDealLevel;\n addUser.SalesOrderLevel = singleUserGet.SalesOrderLevel;\n addUser.InvoiceLevel = singleUserGet.InvoiceLevel;\n addUser.DirectDeliveryLevel = singleUserGet.DirectDeliveryLevel;\n addUser.DirectReturnLevel = singleUserGet.DirectReturnLevel;\n addUser.DeliveryRequestLevel = singleUserGet.DeliveryRequestLevel;\n addUser.ReturnRequestLevel = singleUserGet.ReturnRequestLevel;\n addUser.TransferOrderLevel = singleUserGet.TransferOrderLevel;\n addUser.SalesOrderModLevel = singleUserGet.SalesOrderModLevel;\n addUser.ShipmentRequestLevel = singleUserGet.ShipmentRequestLevel;\n addUser.CashRegisterLevel = singleUserGet.CashRegisterLevel;\n addUser.CustomerPaymentLevel = singleUserGet.CustomerPaymentLevel;\n addUser.InvTransferOrderLevel = singleUserGet.InvTransferOrderLevel;\n addUser.ApproveInvTransferOrder = singleUserGet.ApproveInvTransferOrder;\n addUser.ApproveInventoryTransfer = singleUserGet.ApproveInventoryTransfer;\n addUser.InventoryTransferLevel = singleUserGet.InventoryTransferLevel;\n addUser.InvItemFulfillmentLevel = singleUserGet.InvItemFulfillmentLevel;\n addUser.InvItemReceiptLevel = singleUserGet.InvItemReceiptLevel;\n addUser.SendWMS = singleUserGet.SendWMS;\n addUser.PickWMS = singleUserGet.PickWMS;\n addUser.PackWMS = singleUserGet.PackWMS;\n addUser.ShipWMS = singleUserGet.ShipWMS;\n addUser.ReceiveWMS = singleUserGet.ReceiveWMS;\n addUser.ProductsWMS = singleUserGet.ProductsWMS;\n addUser.CreateLabelWMS = singleUserGet.CreateLabelWMS;\n addUser.CreateLabelWMSLevel = singleUserGet.CreateLabelWMSLevel;\n addUser.ReceiveOrderWMS = singleUserGet.ReceiveOrderWMS;\n addUser.FulfillmentOrderWMS = singleUserGet.FulfillmentOrderWMS;\n addUser.AssignFulfillmentOrderWMS = singleUserGet.AssignFulfillmentOrderWMS;\n addUser.ReceiveOrderWMSLevel = singleUserGet.ReceiveOrderWMSLevel;\n addUser.FulfillmentOrderWMSLevel = singleUserGet.FulfillmentOrderWMSLevel;\n addUser.MoveItemWMS = singleUserGet.MoveItemWMS;\n addUser.AdjustItemWMS = singleUserGet.AdjustItemWMS;\n addUser.AdjustmentWMS = singleUserGet.AdjustmentWMS;\n addUser.ApproveAdjustItemWMS = singleUserGet.ApproveAdjustItemWMS;\n addUser.MoveWMS = singleUserGet.MoveWMS;\n addUser.CountWMS = singleUserGet.CountWMS;\n addUser.CloseSalesOrder = singleUserGet.CloseSalesOrder;\n addUser.AdjustItemWMSLevel = singleUserGet.AdjustItemWMSLevel;\n addUser.ItemCountWMS = singleUserGet.ItemCountWMS;\n addUser.ItemCountWMSLevel = singleUserGet.ItemCountWMSLevel;\n addUser.ApproveItemCountWMS = singleUserGet.ApproveItemCountWMS;\n }\n }\n\n // Agregamos el nombre de la sucursal\n for (var singleSucursalIndex in sucursalList) {\n var singleSucursal = sucursalList[singleSucursalIndex];\n\n if (singleSucursal && (addUser.Sucursal || addUser.Sucursal === 0)) {\n if (singleSucursal.value.toString() === addUser.Sucursal.toString()) {\n addUser.Sucursal = singleSucursal.name;\n break;\n }\n }\n }\n\n // Agregamos el nombre del Personal\n for (var singlePersonalIndex in personalList) {\n var singlePersonal = personalList[singlePersonalIndex];\n\n if (singlePersonal && addUser.Personal) {\n if (singlePersonal.value.toString() === addUser.Personal.toString()) {\n // addUser.Personal = singlePersonal.ApellidoPaterno + ' ' + singlePersonal.ApellidoMaterno + ' ' + singlePersonal.Nombre;\n addUser.Personal = singlePersonal.name;\n break;\n }\n }\n }\n\n // Agregamos el nombre del Usuario\n for (var singleUsuarioIndex in usuarioList) {\n var singleUsuario = usuarioList[singleUsuarioIndex];\n\n if (singleUsuario && addUser.Usuario) {\n if (singleUsuario.value.toString() === addUser.Usuario.toString()) {\n addUser.Usuario = singleUsuario.name;\n break;\n }\n }\n }\n\n // Agregamos el nombre del Agente\n for (var singleAgenteIndex in agenteList) {\n var singleAgente = agenteList[singleAgenteIndex];\n\n if (singleAgente && addUser.Agente) {\n if (singleAgente.value.toString() === addUser.Agente.toString()) {\n addUser.Agente = singleAgente.name;\n break;\n }\n }\n }\n\n users.push(addUser);\n }\n\n setUserRecords(users);\n };\n\n async function getUserPayload(propsUsername) {\n try {\n // Obtenemos los usuarios de Cognito\n let apiNameCognito = 'AdminQueries';\n let pathCognito = '/getUser';\n\n let myInitCognito = {\n headers: {\n 'Content-Type': 'application/json',\n Authorization: `${(await Auth.currentSession()).getAccessToken().getJwtToken()}`\n },\n queryStringParameters: {\n username: propsUsername,\n usernamereq: JSON.parse(JSON.stringify(await Auth.currentAuthenticatedUser())).username\n }\n }\n\n var userGetCognito = await API.get(apiNameCognito, pathCognito, myInitCognito);\n\n // Obtenemos los atributos de los usuarios desde SQL\n let apiName = 'AdminSC';\n let path = '/procesausuariowebcfg';\n\n let myInit = {\n headers: {\n 'Content-Type': 'application/json',\n Authorization: `${(await Auth.currentSession()).getAccessToken().getJwtToken()}`\n },\n queryStringParameters: {\n action: 'payload',\n username: propsUsername,\n usernamereq: JSON.parse(JSON.stringify(await Auth.currentAuthenticatedUser())).username\n }\n }\n\n var userAttributes = await API.get(apiName, path, myInit);\n\n var user = {\n Username: userGetCognito.Username,\n Enabled: userGetCognito.Enabled,\n isAdmin: ''\n };\n\n if (user.Enabled)\n user.Enabled = 'Activo'\n else\n user.Enabled = 'Inactivo'\n\n for (var attributeIndex in userGetCognito.UserAttributes) {\n var singleAttribute = userGetCognito.UserAttributes[attributeIndex];\n\n if (singleAttribute.Name === 'email')\n user.Email = singleAttribute.Value;\n }\n\n if (userAttributes.attributes.Sucursal || userAttributes.attributes.Sucursal === 0)\n user.Sucursal = userAttributes.attributes.Sucursal.toString();\n\n\n user.Personal = userAttributes.attributes.Personal;\n user.Usuario = userAttributes.attributes.Usuario;\n user.Agente = userAttributes.attributes.Agente;\n user.Attendance = (userAttributes.attributes.Attendance ? true : false);\n\n if (userAttributes.attributes.AsistenciaPlaza) {\n if (userAttributes.attributes.AsistenciaPlaza !== '' && userAttributes.attributes.AsistenciaPlaza !== '|') {\n var asistenciaPlaza = userAttributes.attributes.AsistenciaPlaza.split('|');\n asistenciaPlaza.pop();\n user.asistenciaPlaza = asistenciaPlaza;\n }\n else {\n user.asistenciaPlaza = [];\n }\n }\n else {\n user.asistenciaPlaza = [];\n }\n\n user.PriceList = (userAttributes.attributes.PriceList ? true : false);\n user.Commission = (userAttributes.attributes.Commission ? true : false);\n user.Incentive = (userAttributes.attributes.Incentive ? true : false);\n user.CheckList = (userAttributes.attributes.CheckList ? true : false);\n user.CheckListAud = (userAttributes.attributes.CheckListAud ? true : false);\n user.CheckListVeh = (userAttributes.attributes.CheckListVeh ? true : false);\n\n if (userAttributes.attributes.ChecklistPlaza) {\n if (userAttributes.attributes.ChecklistPlaza !== '' && userAttributes.attributes.ChecklistPlaza !== '|') {\n var checklistPlaza = userAttributes.attributes.ChecklistPlaza.split('|');\n checklistPlaza.pop();\n user.checklistPlaza = checklistPlaza;\n }\n else {\n user.checklistPlaza = [];\n }\n }\n else {\n user.checklistPlaza = [];\n }\n\n user.Document = (userAttributes.attributes.Document ? true : false);\n user.Vacation = (userAttributes.attributes.Vacation ? true : false);\n\n if (userAttributes.attributes.VacationPlaza) {\n if (userAttributes.attributes.VacationPlaza !== '' && userAttributes.attributes.VacationPlaza !== '|') {\n var vacationPlaza = userAttributes.attributes.VacationPlaza.split('|');\n vacationPlaza.pop();\n user.vacationPlaza = vacationPlaza;\n }\n else {\n user.vacationPlaza = [];\n }\n }\n else {\n user.vacationPlaza = [];\n }\n\n if (userAttributes.attributes.SalesPlaza) {\n if (userAttributes.attributes.SalesPlaza !== '' && userAttributes.attributes.SalesPlaza !== '|') {\n var salesPlaza = userAttributes.attributes.SalesPlaza.split('|');\n salesPlaza.pop();\n user.salesPlaza = salesPlaza;\n }\n else {\n user.salesPlaza = [];\n }\n }\n else {\n user.salesPlaza = [];\n }\n\n user.Kibana = (userAttributes.attributes.Kibana ? true : false);\n user.ProcesarFacturas = (userAttributes.attributes.ProcesarFacturas ? true : false);\n user.ProcesarFacturasSucursal = (userAttributes.attributes.ProcesarFacturasSucursal ? true : false);\n user.ProcesarFacturasBodega = (userAttributes.attributes.ProcesarFacturasBodega ? true : false);\n user.AfectarFacturas = (userAttributes.attributes.AfectarFacturas ? true : false);\n user.NewCheckList = (userAttributes.attributes.NewCheckList ? true : false);\n user.NewCheckListAud = (userAttributes.attributes.NewCheckListAud ? true : false);\n user.NewCheckListVeh = (userAttributes.attributes.NewCheckListVeh ? true : false);\n user.Estimate = (userAttributes.attributes.Estimate ? true : false);\n user.LostDeal = (userAttributes.attributes.LostDeal ? true : false);\n user.SalesOrder = (userAttributes.attributes.SalesOrder ? true : false);\n user.Invoice = (userAttributes.attributes.Invoice ? true : false);\n user.DirectDelivery = (userAttributes.attributes.DirectDelivery ? true : false);\n user.DirectReturn = (userAttributes.attributes.DirectReturn ? true : false);\n user.DeliveryRequest = (userAttributes.attributes.DeliveryRequest ? true : false);\n user.ReturnRequest = (userAttributes.attributes.ReturnRequest ? true : false);\n user.TransferOrder = (userAttributes.attributes.TransferOrder ? true : false);\n user.SalesOrderMod = (userAttributes.attributes.SalesOrderMod ? true : false);\n user.ShipmentRequest = (userAttributes.attributes.ShipmentRequest ? true : false);\n user.CashRegister = (userAttributes.attributes.CashRegister ? true : false);\n user.CustomerPayment = (userAttributes.attributes.CustomerPayment ? true : false);\n user.InvTransferOrder = (userAttributes.attributes.InvTransferOrder ? true : false);\n user.InvLevels = (userAttributes.attributes.InvLevels ? true : false);\n user.InvLevelsIncCost = (userAttributes.attributes.InvLevelsIncCost ? true : false);\n user.Kardex = (userAttributes.attributes.Kardex ? true : false);\n user.ApproveDelivery = (userAttributes.attributes.ApproveDelivery ? true : false);\n user.VoidDeliveryTransactions = (userAttributes.attributes.VoidDeliveryTransactions ? true : false);\n user.SalesOrderModUpdatePrices = (userAttributes.attributes.SalesOrderModUpdatePrices ? true : false);\n user.ApproveSalesOrderMod = (userAttributes.attributes.ApproveSalesOrderMod ? true : false);\n user.RegenerateCFDi = (userAttributes.attributes.RegenerateCFDi ? true : false);\n user.SendCFDi = (userAttributes.attributes.SendCFDi ? true : false);\n user.RepComparativoVentas = (userAttributes.attributes.RepComparativoVentas ? true : false);\n user.POSuggestionsReport = (userAttributes.attributes.POSuggestionsReport ? true : false);\n user.POSuggestionsReportCfg = (userAttributes.attributes.POSuggestionsReportCfg ? true : false);\n\n user.ExploreBarcodes = (userAttributes.attributes.ExploreBarcodes ? true : false);\n user.ExploreBarcodeCosts = (userAttributes.attributes.ExploreBarcodeCosts ? true : false);\n \n user.InventoryTransfer = (userAttributes.attributes.InventoryTransfer ? true : false);\n user.ApproveInvTransferOrder = (userAttributes.attributes.ApproveInvTransferOrder ? true : false);\n user.ApproveInventoryTransfer = (userAttributes.attributes.ApproveInventoryTransfer ? true : false);\n user.InvItemFulfillment = (userAttributes.attributes.InvItemFulfillment ? true : false);\n user.InvItemReceipt = (userAttributes.attributes.InvItemReceipt ? true : false);\n\n user.EstimateLevel = userAttributes.attributes.EstimateLevel;\n user.LostDealLevel = userAttributes.attributes.LostDealLevel;\n user.SalesOrderLevel = userAttributes.attributes.SalesOrderLevel;\n user.InvoiceLevel = userAttributes.attributes.InvoiceLevel;\n user.DirectDeliveryLevel = userAttributes.attributes.DirectDeliveryLevel;\n user.DirectReturnLevel = userAttributes.attributes.DirectReturnLevel;\n user.DeliveryRequestLevel = userAttributes.attributes.DeliveryRequestLevel;\n user.ReturnRequestLevel = userAttributes.attributes.ReturnRequestLevel;\n user.TransferOrderLevel = userAttributes.attributes.TransferOrderLevel;\n user.SalesOrderModLevel = userAttributes.attributes.SalesOrderModLevel;\n user.ShipmentRequestLevel = userAttributes.attributes.ShipmentRequestLevel;\n user.CashRegisterLevel = userAttributes.attributes.CashRegisterLevel;\n user.CustomerPaymentLevel = userAttributes.attributes.CustomerPaymentLevel;\n user.InvTransferOrderLevel = userAttributes.attributes.InvTransferOrderLevel;\n user.InventoryTransferLevel = userAttributes.attributes.InventoryTransferLevel;\n user.InvItemFulfillmentLevel = userAttributes.attributes.InvItemFulfillmentLevel;\n user.InvItemReceiptLevel = userAttributes.attributes.InvItemReceiptLevel;\n user.SendWMS = (userAttributes.attributes.SendWMS ? true : false);\n user.PickWMS = (userAttributes.attributes.PickWMS ? true : false);\n user.PackWMS = (userAttributes.attributes.PackWMS ? true : false);\n user.ShipWMS = (userAttributes.attributes.ShipWMS ? true : false);\n user.ReceiveWMS = (userAttributes.attributes.ReceiveWMS ? true : false);\n user.ProductsWMS = (userAttributes.attributes.ProductsWMS ? true : false);\n user.CreateLabelWMS = (userAttributes.attributes.CreateLabelWMS ? true : false);\n user.CreateLabelWMSLevel = userAttributes.attributes.CreateLabelWMSLevel;\n user.ReceiveOrderWMS = (userAttributes.attributes.ReceiveOrderWMS ? true : false);\n user.ReceiveOrderWMSLevel = userAttributes.attributes.ReceiveOrderWMSLevel;\n user.FulfillmentOrderWMS = (userAttributes.attributes.FulfillmentOrderWMS ? true : false);\n user.AssignFulfillmentOrderWMS = (userAttributes.attributes.AssignFulfillmentOrderWMS ? true : false);\n user.FulfillmentOrderWMSLevel = userAttributes.attributes.FulfillmentOrderWMSLevel;\n user.AdjustmentWMS = (userAttributes.attributes.AdjustmentWMS ? true : false);\n user.ApproveAdjustItemWMS = (userAttributes.attributes.ApproveAdjustItemWMS ? true : false);\n user.AdjustItemWMS = (userAttributes.attributes.AdjustItemWMS ? true : false);\n user.MoveWMS = (userAttributes.attributes.MoveWMS ? true : false);\n user.CountWMS = (userAttributes.attributes.CountWMS ? true : false);\n user.CloseSalesOrder = (userAttributes.attributes.CloseSalesOrder ? true : false);\n user.MoveItemWMS = (userAttributes.attributes.MoveItemWMS ? true : false);\n user.AdjustItemWMSLevel = userAttributes.attributes.AdjustItemWMSLevel;\n\n user.ItemCountWMS = (userAttributes.attributes.ItemCountWMS ? true : false);\n user.ApproveItemCountWMS = (userAttributes.attributes.ApproveItemCountWMS ? true : false);\n user.ItemCountWMSLevel = userAttributes.attributes.ItemCountWMSLevel;\n\n let apiNameGroups = 'AdminQueries';\n let pathGroups = '/listGroupsForUser';\n\n let myInitGroups = {\n headers: {\n 'Content-Type': 'application/json',\n Authorization: `${(await Auth.currentSession()).getAccessToken().getJwtToken()}`\n },\n queryStringParameters: {\n username: propsUsername,\n usernamereq: JSON.parse(JSON.stringify(await Auth.currentAuthenticatedUser())).username\n }\n }\n\n var userGroupsGet = await API.get(apiNameGroups, pathGroups, myInitGroups);\n\n for (var groupIndex in userGroupsGet.Groups) {\n var singleGroup = userGroupsGet.Groups[groupIndex];\n\n user.isAdmin = singleGroup.GroupName;\n }\n\n //Asignamos las variables para los controles tipo CheckBox\n setConAsistencia(user.Attendance);\n setConChecklist(user.CheckList);\n setConChecklistAud(user.CheckListAud);\n setConChecklistVeh(user.CheckListVeh);\n setConVacaciones(user.Vacation)\n setConProcesarFacturas(user.ProcesarFacturas);\n setConProcesarFacturasBodega(user.ProcesarFacturasBodega);\n setConProcesarFacturasSucursal(user.ProcesarFacturasSucursal);\n setConEstimate(user.Estimate);\n setConLostDeal(user.LostDeal);\n setConSalesOrder(user.SalesOrder);\n setConInvoice(user.Invoice);\n setConDirectDelivery(user.DirectDelivery);\n setConDirectReturn(user.DirectReturn);\n setConDeliveryRequest(user.DeliveryRequest);\n setConReturnRequest(user.ReturnRequest);\n setConTransferOrder(user.TransferOrder);\n setConSalesOrderMod(user.SalesOrderMod);\n setConShipmentRequest(user.ShipmentRequest);\n setConCashRegister(user.CashRegister);\n setConCustomerPayment(user.CustomerPayment);\n setConInvTransferOrder(user.InvTransferOrder);\n setConInventoryTransfer(user.InventoryTransfer);\n setConInvItemFulfillment(user.InvItemFulfillment);\n setConInvItemReceipt(user.InvItemReceipt);\n setConSendWMS(user.SendWMS);\n setConReceiveWMS(user.ReceiveWMS);\n setConProductsWMS(user.ProductsWMS);\n setConCreateLabelWMS(user.CreateLabelWMS);\n setConReceiveOrderWMS(user.ReceiveOrderWMS);\n setConFulfillmentOrderWMS(user.FulfillmentOrderWMS);\n setConAdjustItemWMS(user.AdjustItemWMS);\n setConItemCountWMS(user.ItemCountWMS);\n setConPOSuggestionsReport(user.POSuggestionsReport);\n }\n catch (e) {\n if (e === 'No current user') {\n history.push('/');\n\n window.location.reload();\n }\n }\n\n return user;\n }\n\n async function editUserButton(Username) {\n if (!window.event.metaKey && !window.event.ctrlKey) {\n setVisibleLoadPanel(true);\n\n setIsDetail(true);\n\n setUserName(Username);\n\n var payload = await getUserPayload(Username);\n\n setUserPayload(payload);\n\n setVisibleLoadPanel(false);\n }\n };\n\n async function cancelEditButton() {\n setVisibleLoadPanel(true);\n\n setIsDetail(false);\n\n var sucursalList = await getSucursales();\n var personalList = await getPersonal();\n var usuarioList = await getUsuario();\n var agenteList = await getAgente();\n\n await getUsersList(sucursalList, personalList, usuarioList, agenteList);\n\n setVisibleLoadPanel(false);\n\n history.push('/Users');\n };\n\n async function deleteUser() {\n try {\n var username = userPayload.Username;\n\n if (username) {\n var r = window.confirm('Se eliminará el usuario ' + username + '. ¿Desea Continuar?');\n\n if (r) {\n let apiNameCognito = 'AdminQueries';\n let pathCognito = '/deleteUser';\n\n let myInitCognito = {\n headers: {\n 'Content-Type': 'application/json',\n Authorization: `${(await Auth.currentSession()).getAccessToken().getJwtToken()}`\n },\n body: {\n username: username\n }\n }\n\n let apiName = 'AdminSC';\n let path = '/procesausuariowebcfg';\n\n let myInit = {\n headers: {\n 'Content-Type': 'application/json',\n Authorization: `${(await Auth.currentSession()).getAccessToken().getJwtToken()}`\n },\n body: {\n username: username,\n usernamereq: JSON.parse(JSON.stringify(await Auth.currentAuthenticatedUser())).username,\n action: 'archive',\n }\n }\n\n try {\n setVisibleLoadPanel(true);\n\n await API.post(apiNameCognito, pathCognito, myInitCognito);\n\n await API.post(apiName, path, myInit);\n\n setVisibleToast(true);\n setMessageToast('Usuario eliminado con éxito');\n setTypeToast('success')\n\n setIsDetail(false);\n\n var sucursalList = await getSucursales();\n var personalList = await getPersonal();\n var usuarioList = await getUsuario();\n var agenteList = await getAgente();\n\n await getUsersList(sucursalList, personalList, usuarioList, agenteList);\n\n setVisibleLoadPanel(false);\n\n history.push('/Users');\n\n }\n catch (error) {\n setVisibleLoadPanel(false);\n\n setVisibleToast(true);\n setMessageToast(error.message);\n setTypeToast('error')\n }\n }\n }\n }\n catch (e) {\n if (e === 'No current user') {\n history.push('/');\n\n window.location.reload();\n }\n }\n }\n\n async function saveButton() {\n try {\n var username = userPayload.Username;\n var password = userPayload.Password;\n var confirmpassword = userPayload.ConfirmPassword;\n var group = userPayload.isAdmin;\n var sucursal = userPayload.Sucursal;\n var personal = userPayload.Personal;\n var usuario = userPayload.Usuario;\n var agente = userPayload.Agente;\n var email = userPayload.Email;\n var isenabled = userPayload.Enabled;\n var Attendance = userPayload.Attendance;\n var CheckList = userPayload.CheckList;\n var CheckListAud = userPayload.CheckListAud;\n var CheckListVeh = userPayload.CheckListVeh;\n var Commission = userPayload.Commission;\n var Document = userPayload.Document;\n var Incentive = userPayload.Incentive;\n var Kibana = userPayload.Kibana;\n var ProcesarFacturas = userPayload.ProcesarFacturas;\n var ProcesarFacturasSucursal = userPayload.ProcesarFacturasSucursal;\n var ProcesarFacturasBodega = userPayload.ProcesarFacturasBodega;\n var AfectarFacturas = userPayload.AfectarFacturas;\n var PriceList = userPayload.PriceList;\n var Vacation = userPayload.Vacation;\n var NewCheckList = userPayload.NewCheckList;\n var NewCheckListAud = userPayload.NewCheckListAud;\n var NewCheckListVeh = userPayload.NewCheckListVeh;\n var Estimate = userPayload.Estimate;\n var LostDeal = userPayload.LostDeal;\n var SalesOrder = userPayload.SalesOrder;\n var Invoice = userPayload.Invoice;\n var DirectDelivery = userPayload.DirectDelivery;\n var DirectReturn = userPayload.DirectReturn;\n var DeliveryRequest = userPayload.DeliveryRequest;\n var ReturnRequest = userPayload.ReturnRequest;\n var TransferOrder = userPayload.TransferOrder;\n var SalesOrderMod = userPayload.SalesOrderMod;\n var ShipmentRequest = userPayload.ShipmentRequest;\n var CashRegister = userPayload.CashRegister;\n var CustomerPayment = userPayload.CustomerPayment;\n var InvTransferOrder = userPayload.InvTransferOrder;\n var InvLevels = userPayload.InvLevels;\n var InvLevelsIncCost = userPayload.InvLevelsIncCost;\n var Kardex = userPayload.Kardex;\n var ApproveDelivery = userPayload.ApproveDelivery;\n var VoidDeliveryTransactions = userPayload.VoidDeliveryTransactions;\n var SalesOrderModUpdatePrices = userPayload.SalesOrderModUpdatePrices;\n var ApproveSalesOrderMod = userPayload.ApproveSalesOrderMod;\n var RegenerateCFDi = userPayload.RegenerateCFDi;\n var SendCFDi = userPayload.SendCFDi;\n var RepComparativoVentas = userPayload.RepComparativoVentas;\n var POSuggestionsReport = userPayload.POSuggestionsReport;\n var POSuggestionsReportCfg = userPayload.POSuggestionsReportCfg;\n var ExploreBarcodes = userPayload.ExploreBarcodes;\n var ExploreBarcodeCosts = userPayload.ExploreBarcodeCosts;\n \n var InventoryTransfer = userPayload.InventoryTransfer;\n var EstimateLevel = userPayload.EstimateLevel;\n var LostDealLevel = userPayload.LostDealLevel;\n var SalesOrderLevel = userPayload.SalesOrderLevel;\n var InvoiceLevel = userPayload.InvoiceLevel;\n var DirectDeliveryLevel = userPayload.DirectDeliveryLevel;\n var DirectReturnLevel = userPayload.DirectReturnLevel;\n var DeliveryRequestLevel = userPayload.DeliveryRequestLevel;\n var ReturnRequestLevel = userPayload.ReturnRequestLevel;\n var TransferOrderLevel = userPayload.TransferOrderLevel;\n var SalesOrderModLevel = userPayload.SalesOrderModLevel;\n var ShipmentRequestLevel = userPayload.ShipmentRequestLevel;\n var CashRegisterLevel = userPayload.CashRegisterLevel;\n var CustomerPaymentLevel = userPayload.CustomerPaymentLevel;\n var InvTransferOrderLevel = userPayload.InvTransferOrderLevel;\n var InventoryTransferLevel = userPayload.InventoryTransferLevel;\n var ApproveInvTransferOrder = userPayload.ApproveInvTransferOrder;\n var ApproveInventoryTransfer = userPayload.ApproveInventoryTransfer;\n var InvItemFulfillment = userPayload.InvItemFulfillment;\n var InvItemFulfillmentLevel = userPayload.InvItemFulfillmentLevel;\n var InvItemReceipt = userPayload.InvItemReceipt;\n var InvItemReceiptLevel = userPayload.InvItemReceiptLevel;\n\n var asistenciaPlaza = userPayload.asistenciaPlaza;\n var checklistPlaza = userPayload.checklistPlaza;\n var vacationPlaza = userPayload.vacationPlaza;\n var salesPlaza = userPayload.salesPlaza;\n\n var SendWMS = userPayload.SendWMS;\n var PickWMS = userPayload.PickWMS;\n var PackWMS = userPayload.PackWMS;\n var ShipWMS = userPayload.ShipWMS;\n\n var ReceiveWMS = userPayload.ReceiveWMS;\n var ProductsWMS = userPayload.ProductsWMS;\n\n var CreateLabelWMS = userPayload.CreateLabelWMS;\n var CreateLabelWMSLevel = userPayload.CreateLabelWMSLevel;\n var ReceiveOrderWMS = userPayload.ReceiveOrderWMS;\n var ReceiveOrderWMSLevel = userPayload.ReceiveOrderWMSLevel;\n var FulfillmentOrderWMS = userPayload.FulfillmentOrderWMS;\n var AssignFulfillmentOrderWMS = userPayload.AssignFulfillmentOrderWMS;\n var FulfillmentOrderWMSLevel = userPayload.FulfillmentOrderWMSLevel;\n var AdjustmentWMS = userPayload.AdjustmentWMS;\n var ApproveAdjustItemWMS = userPayload.ApproveAdjustItemWMS;\n var AdjustItemWMS = userPayload.AdjustItemWMS;\n var MoveWMS = userPayload.MoveWMS;\n var CountWMS = userPayload.CountWMS;\n var CloseSalesOrder = userPayload.CloseSalesOrder;\n var MoveItemWMS = userPayload.MoveItemWMS;\n var AdjustItemWMSLevel = userPayload.AdjustItemWMSLevel;\n var ItemCountWMS = userPayload.ItemCountWMS;\n var ItemCountWMSLevel = userPayload.ItemCountWMSLevel;\n var ApproveItemCountWMS = userPayload.ApproveItemCountWMS;\n\n var okAdmin = false;\n var user = await Auth.currentAuthenticatedUser();\n var groups = user.signInUserSession.accessToken.payload[\"cognito:groups\"];\n\n for (var groupIndex in groups) {\n var singleGroup = groups[groupIndex];\n\n if (singleGroup === 'Admin') {\n okAdmin = true;\n }\n }\n\n if (okAdmin === false) {\n setVisibleToast(true);\n setMessageToast('Unauthorized');\n setTypeToast('error');\n return;\n }\n\n if (!Attendance)\n Attendance = false;\n if (!CheckList)\n CheckList = false;\n if (!CheckListAud)\n CheckListAud = false;\n if (!CheckListVeh)\n CheckListVeh = false;\n if (!Commission)\n Commission = false;\n if (!Document)\n Document = false;\n if (!Incentive)\n Incentive = false;\n if (!Kibana)\n Kibana = false;\n if (!ProcesarFacturas)\n ProcesarFacturas = false;\n if (!ProcesarFacturasSucursal)\n ProcesarFacturasSucursal = false;\n if (!ProcesarFacturasBodega)\n ProcesarFacturasBodega = false;\n if (!AfectarFacturas)\n AfectarFacturas = false;\n if (!PriceList)\n PriceList = false;\n if (!Vacation)\n Vacation = false;\n if (!NewCheckList)\n NewCheckList = false;\n if (!NewCheckListAud)\n NewCheckListAud = false;\n if (!NewCheckListVeh)\n NewCheckListVeh = false;\n if (!Estimate)\n Estimate = false;\n if (!LostDeal)\n LostDeal = false;\n if (!SalesOrder)\n SalesOrder = false;\n if (!Invoice)\n Invoice = false;\n if (!DirectDelivery)\n DirectDelivery = false;\n if (!DirectReturn)\n DirectReturn = false;\n if (!DeliveryRequest)\n DeliveryRequest = false;\n if (!ReturnRequest)\n ReturnRequest = false;\n if (!TransferOrder)\n TransferOrder = false;\n if (!SalesOrderMod)\n SalesOrderMod = false;\n if (!ShipmentRequest)\n ShipmentRequest = false;\n if (!CashRegister)\n CashRegister = false;\n if (!CustomerPayment)\n CustomerPayment = false;\n if (!InvTransferOrder)\n InvTransferOrder = false;\n if (!InvLevels)\n InvLevels = false;\n if (!InvLevelsIncCost)\n InvLevelsIncCost = false;\n if (!Kardex)\n Kardex = false;\n if (!ApproveDelivery)\n ApproveDelivery = false;\n if (!VoidDeliveryTransactions)\n VoidDeliveryTransactions = false;\n if (!SalesOrderModUpdatePrices)\n SalesOrderModUpdatePrices = false;\n if (!ApproveSalesOrderMod)\n ApproveSalesOrderMod = false;\n if (!RegenerateCFDi)\n RegenerateCFDi = false;\n if (!SendCFDi)\n SendCFDi = false;\n if (!RepComparativoVentas)\n RepComparativoVentas = false;\n if (!POSuggestionsReport)\n POSuggestionsReport = false;\n if (!POSuggestionsReportCfg)\n POSuggestionsReportCfg = false;\n if (!ExploreBarcodes)\n ExploreBarcodes = false;\n if (!ExploreBarcodeCosts)\n ExploreBarcodeCosts = false;\n if (!InventoryTransfer)\n InventoryTransfer = false;\n if (!InvItemFulfillment)\n InvItemFulfillment = false;\n if (!InvItemReceipt)\n InvItemReceipt = false;\n if (!SendWMS)\n SendWMS = false;\n if (!PickWMS)\n PickWMS = false;\n if (!PackWMS)\n PackWMS = false;\n if (!ShipWMS)\n ShipWMS = false;\n if (!ReceiveWMS)\n ReceiveWMS = false;\n if (!ProductsWMS)\n ProductsWMS = false;\n if (!CreateLabelWMS)\n CreateLabelWMS = false;\n if (!ReceiveOrderWMS)\n ReceiveOrderWMS = false;\n if (!FulfillmentOrderWMS)\n FulfillmentOrderWMS = false;\n if (!AssignFulfillmentOrderWMS)\n AssignFulfillmentOrderWMS = false;\n if (!AdjustmentWMS)\n AdjustmentWMS = false;\n if (!ApproveAdjustItemWMS)\n ApproveAdjustItemWMS = false;\n if (!AdjustItemWMS)\n AdjustItemWMS = false;\n if (!MoveWMS)\n MoveWMS = false;\n if (!CountWMS)\n CountWMS = false;\n if (!CloseSalesOrder)\n CloseSalesOrder = false;\n if (!MoveItemWMS)\n MoveItemWMS = false;\n if(!ItemCountWMS)\n ItemCountWMS = false;\n if (!ApproveItemCountWMS)\n ApproveItemCountWMS = false;\n\n if (username) {\n if (!password)\n password = '';\n if (!confirmpassword)\n confirmpassword = '';\n if (!group)\n group = '';\n\n if (!sucursal && sucursal !== 0)\n sucursal = '';\n\n if (!personal)\n personal = '';\n\n if (!usuario)\n usuario = '';\n\n if (!agente)\n agente = '';\n\n if (password) {\n if (password.length < 8) {\n setVisibleToast(true);\n setMessageToast('La contraseña debe tener mínimo 8 caracteres');\n setTypeToast('error')\n return;\n }\n if (password !== confirmpassword) {\n setVisibleToast(true);\n setMessageToast('Las contraseñas no coinciden');\n setTypeToast('error')\n return;\n }\n }\n\n try {\n var attendanceAccess = asistenciaPlaza.join('|') + '|';\n }\n catch (e) {\n var attendanceAccess = '';\n }\n\n try {\n var checklistAccess = checklistPlaza.join('|') + '|';\n }\n catch (e) {\n var checklistAccess = '';\n }\n\n try {\n var vacationAccess = vacationPlaza.join('|') + '|';\n }\n catch (e) {\n var vacationAccess = '';\n }\n\n try {\n var salesAccess = salesPlaza.join('|') + '|';\n }\n catch (e) {\n var salesAccess = '';\n }\n\n // Actualizamos los datos en Cognito\n let apiNameCognito = 'AdminQueries';\n let pathCognito = '/updateUser';\n\n let myInitCognito = {\n headers: {\n 'Content-Type': 'application/json',\n Authorization: `${(await Auth.currentSession()).getAccessToken().getJwtToken()}`\n },\n body: {\n email: email,\n username: username,\n password: password,\n confirmpassword: confirmpassword,\n isenabled: isenabled,\n group: group\n }\n }\n\n // Actualizamos los datos en SQL\n let apiName = 'AdminSC';\n let path = '/procesausuariowebcfg';\n\n let myInit = {\n headers: {\n 'Content-Type': 'application/json',\n Authorization: `${(await Auth.currentSession()).getAccessToken().getJwtToken()}`\n },\n body: {\n username: username,\n usernamereq: JSON.parse(JSON.stringify(await Auth.currentAuthenticatedUser())).username,\n action: 'saveChanges',\n attributes: {\n username: username,\n grupo: group,\n Sucursal: sucursal,\n Personal: personal,\n Usuario: usuario,\n Agente: agente,\n Attendance: (Attendance ? 1 : 0),\n AsistenciaPlaza: attendanceAccess,\n PriceList: (PriceList ? 1 : 0),\n Commission: (Commission ? 1 : 0),\n Incentive: (Incentive ? 1 : 0),\n CheckList: (CheckList ? 1 : 0),\n CheckListAud: (CheckListAud ? 1 : 0),\n CheckListVeh: (CheckListVeh ? 1 : 0),\n ChecklistPlaza: checklistAccess,\n Document: (Document ? 1 : 0),\n Vacation: (Vacation ? 1 : 0),\n VacationPlaza: vacationAccess,\n Kibana: (Kibana ? 1 : 0),\n ProcesarFacturas: (ProcesarFacturas ? 1 : 0),\n ProcesarFacturasSucursal: (ProcesarFacturasSucursal ? 1 : 0),\n ProcesarFacturasBodega: (ProcesarFacturasBodega ? 1 : 0),\n AfectarFacturas: (AfectarFacturas ? 1 : 0),\n NewCheckList: (NewCheckList ? 1 : 0),\n NewCheckListAud: (NewCheckListAud ? 1 : 0),\n NewCheckListVeh: (NewCheckListVeh ? 1 : 0),\n Estimate: (Estimate ? 1 : 0),\n LostDeal: (LostDeal ? 1 : 0),\n SalesOrder: (SalesOrder ? 1 : 0),\n Invoice: (Invoice ? 1 : 0),\n DirectDelivery: (DirectDelivery ? 1 : 0),\n DirectReturn: (DirectReturn ? 1 : 0),\n DeliveryRequest: (DeliveryRequest ? 1 : 0),\n ReturnRequest: (ReturnRequest ? 1 : 0),\n TransferOrder: (TransferOrder ? 1 : 0),\n SalesOrderMod: (SalesOrderMod ? 1 : 0),\n ShipmentRequest: (ShipmentRequest ? 1 : 0),\n CashRegister: (CashRegister ? 1 : 0),\n CustomerPayment: (CustomerPayment ? 1 : 0),\n InvTransferOrder: (InvTransferOrder ? 1 : 0),\n InvLevels: (InvLevels ? 1 : 0),\n InvLevelsIncCost: (InvLevelsIncCost ? 1 : 0),\n Kardex: (Kardex ? 1 : 0),\n ApproveDelivery: (ApproveDelivery ? 1 : 0),\n VoidDeliveryTransactions: (VoidDeliveryTransactions ? 1 : 0),\n SalesOrderModUpdatePrices: (SalesOrderModUpdatePrices ? 1 : 0),\n ApproveSalesOrderMod: (ApproveSalesOrderMod ? 1 : 0),\n RegenerateCFDi: (RegenerateCFDi ? 1 : 0),\n SendCFDi: (SendCFDi ? 1 : 0),\n RepComparativoVentas: (RepComparativoVentas ? 1 : 0),\n POSuggestionsReport: (POSuggestionsReport ? 1 : 0),\n POSuggestionsReportCfg: (POSuggestionsReportCfg ? 1 : 0),\n ExploreBarcodes: (ExploreBarcodes ? 1 : 0),\n ExploreBarcodeCosts: (ExploreBarcodeCosts ? 1 : 0),\n InventoryTransfer: (InventoryTransfer ? 1 : 0),\n EstimateLevel: EstimateLevel,\n LostDealLevel: LostDealLevel,\n SalesOrderLevel: SalesOrderLevel,\n InvoiceLevel: InvoiceLevel,\n DirectDeliveryLevel: DirectDeliveryLevel,\n DirectReturnLevel: DirectReturnLevel,\n DeliveryRequestLevel: DeliveryRequestLevel,\n ReturnRequestLevel: ReturnRequestLevel,\n TransferOrderLevel: TransferOrderLevel,\n SalesOrderModLevel: SalesOrderModLevel,\n ShipmentRequestLevel: ShipmentRequestLevel,\n CashRegisterLevel: CashRegisterLevel,\n CustomerPaymentLevel: CustomerPaymentLevel,\n InvTransferOrderLevel: InvTransferOrderLevel,\n InventoryTransferLevel: InventoryTransferLevel,\n ApproveInvTransferOrder: (ApproveInvTransferOrder ? 1 : 0),\n ApproveInventoryTransfer: (ApproveInventoryTransfer ? 1 : 0),\n SalesPlaza: salesAccess,\n InvItemFulfillment: (InvItemFulfillment ? 1 : 0),\n InvItemFulfillmentLevel: InvItemFulfillmentLevel,\n InvItemReceipt: (InvItemReceipt ? 1 : 0),\n InvItemReceiptLevel: InvItemReceiptLevel,\n SendWMS: (SendWMS ? 1 : 0),\n PickWMS: (PickWMS ? 1 : 0),\n PackWMS: (PackWMS ? 1 : 0),\n ShipWMS: (ShipWMS ? 1 : 0),\n ReceiveWMS: (ReceiveWMS ? 1 : 0),\n ProductsWMS: (ProductsWMS ? 1 : 0),\n CreateLabelWMS: (CreateLabelWMS ? 1 : 0),\n CreateLabelWMSLevel: CreateLabelWMSLevel,\n ReceiveOrderWMS: (ReceiveOrderWMS ? 1 : 0),\n ReceiveOrderWMSLevel: ReceiveOrderWMSLevel,\n FulfillmentOrderWMS: (FulfillmentOrderWMS ? 1 : 0),\n AssignFulfillmentOrderWMS: (AssignFulfillmentOrderWMS ? 1 : 0),\n FulfillmentOrderWMSLevel: FulfillmentOrderWMSLevel,\n AdjustmentWMS: (AdjustmentWMS ? 1 : 0),\n ApproveAdjustItemWMS: (ApproveAdjustItemWMS ? 1 : 0),\n AdjustItemWMS: (AdjustItemWMS ? 1 : 0),\n MoveWMS: (MoveWMS ? 1 : 0),\n CountWMS: (CountWMS ? 1 : 0),\n CloseSalesOrder: (CloseSalesOrder ? 1 : 0),\n MoveItemWMS: (MoveItemWMS ? 1 : 0),\n AdjustItemWMSLevel: AdjustItemWMSLevel,\n ItemCountWMS: (ItemCountWMS ? 1 : 0),\n ItemCountWMSLevel: ItemCountWMSLevel,\n ApproveItemCountWMS: (ApproveItemCountWMS ? 1 : 0)\n }\n }\n }\n\n try {\n setVisibleLoadPanel(true);\n\n await API.post(apiNameCognito, pathCognito, myInitCognito);\n\n var payloadPost = await API.post(apiName, path, myInit);\n\n setVisibleLoadPanel(false);\n\n if (payloadPost.ok === 'true') {\n setVisibleToast(true);\n setMessageToast('Usuario actualizado con éxito');\n setTypeToast('success')\n }\n else {\n setVisibleToast(true);\n setMessageToast(payloadPost.message);\n setTypeToast('error')\n }\n }\n catch (error) {\n setVisibleLoadPanel(false);\n\n setVisibleToast(true);\n setMessageToast(error.message);\n setTypeToast('error')\n }\n }\n }\n catch (e) {\n if (e === 'No current user') {\n history.push('/');\n\n window.location.reload();\n }\n }\n };\n\n\n const onFieldDataChanged = React.useCallback((e) => {\n if (e.dataField === 'Attendance') {\n setConAsistencia(!conAsistencia);\n }\n if (e.dataField === 'CheckList') {\n setConChecklist(!conChecklist);\n }\n if (e.dataField === 'CheckListAud') {\n setConChecklistAud(!conChecklistAud);\n }\n if (e.dataField === 'CheckListVeh') {\n setConChecklistVeh(!conChecklistVeh);\n }\n if (e.dataField === 'Vacation') {\n setConVacaciones(!conVacaciones);\n }\n if (e.dataField === 'ProcesarFacturas') {\n setConProcesarFacturas(!conProcesarFacturas);\n }\n if (e.dataField === 'ProcesarFacturasBodega') {\n setConProcesarFacturasBodega(!conProcesarFacturasBodega);\n }\n if (e.dataField === 'ProcesarFacturasSucursal') {\n setConProcesarFacturasSucursal(!conProcesarFacturasSucursal);\n }\n if (e.dataField === 'Estimate') {\n setConEstimate(!conEstimate)\n }\n if (e.dataField === 'LostDeal') {\n setConLostDeal(!conLostDeal)\n }\n if (e.dataField === 'SalesOrder') {\n setConSalesOrder(!conSalesOrder)\n }\n if (e.dataField === 'Invoice') {\n setConInvoice(!conInvoice)\n }\n if (e.dataField === 'DirectDelivery') {\n setConDirectDelivery(!conDirectDelivery)\n }\n if (e.dataField === 'DirectReturn') {\n setConDirectReturn(!conDirectReturn)\n }\n if (e.dataField === 'DeliveryRequest') {\n setConDeliveryRequest(!conDeliveryRequest)\n }\n if (e.dataField === 'ReturnRequest') {\n setConReturnRequest(!conReturnRequest)\n }\n if (e.dataField === 'TransferOrder') {\n setConTransferOrder(!conTransferOrder)\n }\n if (e.dataField === 'SalesOrderMod') {\n setConSalesOrderMod(!conSalesOrderMod)\n }\n if (e.dataField === 'ShipmentRequest') {\n setConShipmentRequest(!conShipmentRequest)\n }\n if (e.dataField === 'CashRegister') {\n setConCashRegister(!conCashRegister)\n }\n if (e.dataField === 'CustomerPayment') {\n setConCustomerPayment(!conCustomerPayment)\n }\n if (e.dataField === 'InvTransferOrder') {\n setConInvTransferOrder(!conInvTransferOrder)\n }\n if (e.dataField === 'InventoryTransfer') {\n setConInventoryTransfer(!conInventoryTransfer)\n }\n if (e.dataField === 'InventoryTransfer') {\n setConInventoryTransfer(!conInventoryTransfer)\n }\n if (e.dataField === 'InvItemFulfillment') {\n setConInvItemFulfillment(!conInvItemFulfillment)\n }\n if (e.dataField === 'InvItemReceipt') {\n setConInvItemReceipt(!conInvItemReceipt)\n }\n if (e.dataField === 'SendWMS') {\n setConSendWMS(!conSendWMS)\n }\n if (e.dataField === 'ReceiveWMS') {\n setConReceiveWMS(!conReceiveWMS)\n }\n if (e.dataField === 'ProductsWMS') {\n setConProductsWMS(!conProductsWMS)\n }\n if (e.dataField === 'CreateLabelWMS') {\n setConCreateLabelWMS(!conCreateLabelWMS)\n }\n if (e.dataField === 'ReceiveOrderWMS') {\n setConReceiveOrderWMS(!conReceiveOrderWMS)\n }\n if (e.dataField === 'FulfillmentOrderWMS') {\n setConFulfillmentOrderWMS(!conFulfillmentOrderWMS)\n }\n if (e.dataField === 'AdjustItemWMS') {\n setConAdjustItemWMS(!conAdjustItemWMS)\n }\n if (e.dataField === 'ItemCountWMS') {\n setConItemCountWMS(!conItemCountWMS)\n }\n if (e.dataField === 'POSuggestionsReport') {\n setConPOSuggestionsReport(!conPOSuggestionsReport)\n }\n }, [conAsistencia, conChecklist, conChecklistAud, conChecklistVeh, conVacaciones, conProcesarFacturas, conProcesarFacturasBodega, conProcesarFacturasSucursal, conEstimate, conLostDeal, conSalesOrder, conInvoice, conDirectDelivery, conDirectReturn, conDeliveryRequest, conReturnRequest, conTransferOrder, conSalesOrderMod, conShipmentRequest, conCashRegister, conCustomerPayment, conInvTransferOrder, conInventoryTransfer, conInvItemFulfillment, conInvItemReceipt, conProductsWMS, conReceiveWMS, conSendWMS, conCreateLabelWMS, conReceiveOrderWMS, conFulfillmentOrderWMS, conAdjustItemWMS, conItemCountWMS, conPOSuggestionsReport]);\n\n function editUser(data) {\n return (\n <Link to={`/Users/${data.data.Username}`}>\n <button class=\"bg-blue-500 hover:bg-blue-700 text-white py-1 px-3 rounded\" onClick={() => editUserButton(data.data.Username)}><FontAwesomeIcon icon={faPencilAlt} /> Editar</button>\n </Link>\n )\n }\n\n function userEnabled(data) {\n return (\n <span className={data.data.Enabled === \"Activo\" ? \"px-2 py-1 font-semibold leading-tight text-green-700 bg-green-100 rounded-sm\" : \"px-2 py-1 font-semibold leading-tight text-red-700 bg-red-100 rounded-sm\"}> {data.data.Enabled} </span>\n )\n }\n\n function userAdmin(data) {\n return (\n <span className={data.data.isAdmin === \"Admin\" ? \"px-2 py-1 font-semibold leading-tight text-pink-700 bg-pink-100 rounded-sm}\" : \"\"} > {data.data.isAdmin === \"Admin\" ? \"Si\" : \"\"}</span>\n )\n }\n\n const onAutoExpandAllChanged = React.useCallback(() => {\n setAutoExpandAll(!autoExpandAll)\n }, [autoExpandAll]);\n\n const onAutoExpandAllChecklistChanged = React.useCallback(() => {\n setAutoExpandAllChecklist(!autoExpandAllChecklist)\n }, [autoExpandAllChecklist]);\n\n var personalDataSource = useMemo(() => {\n return new DataSource({\n paginate: true,\n store: {\n type: \"array\",\n key: \"Personal\",\n data: personales\n }\n });\n }, [personales]);\n\n var usuarioDataSource = useMemo(() => {\n return new DataSource({\n paginate: true,\n store: {\n type: \"array\",\n key: \"Usuario\",\n data: usuarios\n }\n });\n }, [usuarios]);\n\n var agenteDataSource = useMemo(() => {\n return new DataSource({\n paginate: true,\n store: {\n type: \"array\",\n key: \"Agente\",\n data: agentes\n }\n });\n }, [agentes]);\n\n var sucursalDataSource = useMemo(() => {\n return new DataSource({\n paginate: true,\n store: {\n type: \"array\",\n key: \"Sucursal\",\n data: sucursales\n }\n });\n }, [sucursales]);\n\n var userNameEditorOptions = useMemo(() => {\n return { width: '100%', readOnly: true };\n }, []);\n\n var passwordEditorOptions = useMemo(() => {\n return { width: '100%', disabled: false, mode: 'password' };\n }, []);\n\n //Opciones Grupo del Usuario\n const isAdminOptions = useMemo(() => {\n return [\n { value: '', name: '' },\n { value: 'Admin', name: 'Admin' }\n ];\n }, []);\n\n try {\n var isAdminEditorOptions = useMemo(() => {\n return {\n items: isAdminOptions,\n displayExpr: 'name',\n valueExpr: 'value',\n searchEnabled: true,\n showClearButton: true,\n value: (userPayload.isAdmin ? userPayload.isAdmin : ''), width: '100%'\n };\n }, [isAdminOptions, userPayload.isAdmin]);\n }\n catch (e) {\n var isAdminEditorOptions = {\n items: isAdminOptions,\n displayExpr: 'name',\n valueExpr: 'value',\n searchEnabled: true,\n showClearButton: true,\n value: '',\n width: '100%'\n };\n }\n\n //Opciones Estatus del Usuario\n const enabledOptions = useMemo(() => {\n return [\n { value: 'Activo', name: 'Activo' },\n { value: 'Inactivo', name: 'Inactivo' }\n ];\n }, []);\n\n try {\n var enabledEditorOptions = useMemo(() => {\n return {\n items: enabledOptions,\n displayExpr: 'name',\n valueExpr: 'value',\n searchEnabled: true,\n value: (userPayload.Enabled ? userPayload.Enabled : ''), width: '100%'\n };\n }, [enabledOptions, userPayload.Enabled]);\n }\n catch (e) {\n var enabledEditorOptions = {\n items: enabledOptions,\n displayExpr: 'name',\n valueExpr: 'value',\n searchEnabled: true,\n value: '',\n width: '100%'\n };\n }\n\n //Opciones Sucursal Asociada del Usuario\n try {\n var sucursalEditorOptions = useMemo(() => {\n return {\n dataSource: sucursalDataSource,\n displayExpr: 'name',\n valueExpr: 'value',\n searchEnabled: true,\n showClearButton: true,\n value: (userPayload.Sucursal ? userPayload.Sucursal : ''), width: '100%'\n };\n }, [sucursalDataSource, userPayload.Sucursal]);\n }\n catch (e) {\n var sucursalEditorOptions = {\n dataSource: sucursalDataSource,\n displayExpr: 'name',\n valueExpr: 'value',\n searchEnabled: true,\n showClearButton: true,\n value: '',\n width: '100%'\n };\n }\n\n //Opciones Personal Asociado del Usuario\n try {\n var personalEditorOptions = useMemo(() => {\n return {\n dataSource: personalDataSource,\n displayExpr: 'name',\n valueExpr: 'value',\n searchEnabled: true,\n showClearButton: true,\n value: (userPayload.Personal ? userPayload.Personal : ''), width: '100%'\n };\n }, [personalDataSource, userPayload.Personal]);\n }\n catch (e) {\n var personalEditorOptions = {\n dataSource: personalDataSource,\n displayExpr: 'name',\n valueExpr: 'value',\n searchEnabled: true,\n showClearButton: true,\n value: '',\n width: '100%'\n };\n }\n\n //Opciones Usuario Asociado del Usuario\n try {\n var usuarioEditorOptions = useMemo(() => {\n return {\n dataSource: usuarioDataSource,\n displayExpr: 'name',\n valueExpr: 'value',\n searchEnabled: true,\n showClearButton: true,\n value: (userPayload.Usuario ? userPayload.Usuario : ''), width: '100%'\n };\n }, [usuarioDataSource, userPayload.Usuario]);\n }\n catch (e) {\n var usuarioEditorOptions = {\n dataSource: usuarioDataSource,\n displayExpr: 'name',\n valueExpr: 'value',\n searchEnabled: true,\n showClearButton: true,\n value: '',\n width: '100%'\n };\n }\n\n //Opciones Agente Asociado del Usuario\n try {\n var agenteEditorOptions = useMemo(() => {\n return {\n dataSource: agenteDataSource,\n displayExpr: 'name',\n valueExpr: 'value',\n searchEnabled: true,\n showClearButton: true,\n value: (userPayload.Agente ? userPayload.Agente : ''), width: '100%'\n };\n }, [agenteDataSource, userPayload.Agente]);\n }\n catch (e) {\n var agenteEditorOptions = {\n dataSource: agenteDataSource,\n displayExpr: 'name',\n valueExpr: 'value',\n searchEnabled: true,\n showClearButton: true,\n value: '',\n width: '100%'\n };\n }\n\n //Opciones Asistencia Plaza\n var asistenciaPlazaEditorOptions = useMemo(() => {\n return {\n dataSource: plazas,\n openOnFieldClick: true,\n readOnly: false,\n searchEnabled: true,\n showClearButton: true,\n width: '100%',\n disabled: !conAsistencia,\n visible: conAsistencia\n };\n }, [plazas, conAsistencia]);\n\n //Opciones Checklist Plaza\n var checklistPlazaEditorOptions = useMemo(() => {\n return {\n dataSource: plazas,\n openOnFieldClick: true,\n readOnly: false,\n searchEnabled: true,\n showClearButton: true,\n width: '100%',\n disabled: !(conChecklist || conChecklistAud || conChecklistVeh), visible: (conChecklist || conChecklistAud || conChecklistVeh)\n };\n }, [plazas, conChecklist, conChecklistAud, conChecklistVeh]);\n\n //Opciones Vacation Plaza\n var vacationPlazaEditorOptions = useMemo(() => {\n return {\n dataSource: plazas,\n openOnFieldClick: true,\n readOnly: false,\n searchEnabled: true,\n showClearButton: true,\n width: '100%',\n disabled: !conVacaciones,\n visible: conVacaciones\n };\n }, [plazas, conVacaciones]);\n\n //Opciones Send WMS\n var sendWMSEditorOptions = useMemo(() => {\n return {\n disabled: !conSendWMS\n };\n }, [conSendWMS]);\n\n //Opciones Send WMS\n var productsWMSEditorOptions = useMemo(() => {\n return {\n disabled: !conProductsWMS\n };\n }, [conProductsWMS]);\n\n //Opciones Sales Plaza\n var salesPlazaEditorOptions = useMemo(() => {\n return {\n dataSource: plazas,\n openOnFieldClick: true,\n readOnly: false,\n searchEnabled: true,\n showClearButton: true,\n width: '100%',\n };\n }, [plazas]);\n\n //Opciones Afectar Facturas\n var afectarFacturasEditorOptions = useMemo(() => {\n return {\n readOnly: false,\n width: '100%',\n disabled: !(conProcesarFacturas || conProcesarFacturasBodega || conProcesarFacturasSucursal)\n };\n }, [conProcesarFacturas, conProcesarFacturasBodega, conProcesarFacturasSucursal]);\n\n //Opciones NewChecklist\n var newChecklistEditorOptions = useMemo(() => {\n return {\n readOnly: false,\n width: '100%',\n disabled: !conChecklist\n };\n }, [conChecklist]);\n\n //Opciones NewChecklistAud\n var newChecklistAudEditorOptions = useMemo(() => {\n return {\n readOnly: false,\n width: '100%',\n disabled: !conChecklistAud\n };\n }, [conChecklistAud]);\n\n //Opciones NewChecklistVeh\n var newChecklistVehEditorOptions = useMemo(() => {\n return {\n readOnly: false,\n width: '100%',\n disabled: !conChecklistVeh\n };\n }, [conChecklistVeh]);\n\n //Opciones Nivel de Permiso\n const levelOptions = useMemo(() => {\n return [\n { value: 'Ver', name: 'Ver' },\n { value: 'Editar', name: 'Editar' }\n ];\n }, []);\n\n try {\n var estimateLevelEditorOptions = useMemo(() => {\n return {\n items: levelOptions,\n displayExpr: 'name',\n valueExpr: 'value',\n searchEnabled: false,\n value: (userPayload.EstimateLevel ? userPayload.EstimateLevel : ''), width: '50%', disabled: !conEstimate\n };\n }, [levelOptions, userPayload.EstimateLevel, conEstimate]);\n }\n catch (e) {\n var estimateLevelEditorOptions = {\n items: levelOptions,\n displayExpr: 'name',\n valueExpr: 'value',\n searchEnabled: false,\n value: '',\n width: '50%'\n };\n }\n\n try {\n var lostDealLevelEditorOptions = useMemo(() => {\n return {\n items: levelOptions,\n displayExpr: 'name',\n valueExpr: 'value',\n searchEnabled: false,\n value: (userPayload.LostDealLevel ? userPayload.LostDealLevel : ''), width: '50%', disabled: !conLostDeal\n };\n }, [levelOptions, userPayload.LostDealLevel, conLostDeal]);\n }\n catch (e) {\n var lostDealLevelEditorOptions = {\n items: levelOptions,\n displayExpr: 'name',\n valueExpr: 'value',\n searchEnabled: false,\n value: '',\n width: '50%'\n };\n }\n\n try {\n var salesOrderLevelEditorOptions = useMemo(() => {\n return {\n items: levelOptions,\n displayExpr: 'name',\n valueExpr: 'value',\n searchEnabled: false,\n value: (userPayload.SalesOrderLevel ? userPayload.SalesOrderLevel : ''),\n width: '50%',\n disabled: !conSalesOrder\n };\n }, [levelOptions, userPayload.SalesOrderLevel, conSalesOrder]);\n }\n catch (e) {\n var salesOrderLevelEditorOptions = {\n items: levelOptions,\n displayExpr: 'name',\n valueExpr: 'value',\n searchEnabled: false,\n value: '',\n width: '50%'\n };\n }\n\n try {\n var invoiceLevelEditorOptions = useMemo(() => {\n return {\n items: levelOptions,\n displayExpr: 'name',\n valueExpr: 'value',\n searchEnabled: false,\n value: (userPayload.InvoiceLevel ? userPayload.InvoiceLevel : ''),\n width: '50%',\n disabled: !conInvoice\n };\n }, [levelOptions, userPayload.InvoiceLevel, conInvoice]);\n }\n catch (e) {\n var invoiceLevelEditorOptions = {\n items: levelOptions,\n displayExpr: 'name',\n valueExpr: 'value',\n searchEnabled: false,\n value: '',\n width: '50%'\n };\n }\n\n try {\n var directDeliveryLevelEditorOptions = useMemo(() => {\n return {\n items: levelOptions,\n displayExpr: 'name',\n valueExpr: 'value',\n searchEnabled: false,\n value: (userPayload.DirectDeliveryLevel ? userPayload.DirectDeliveryLevel : ''),\n width: '50%',\n disabled: !conDirectDelivery\n };\n }, [levelOptions, userPayload.DirectDeliveryLevel, conDirectDelivery]);\n }\n catch (e) {\n var directDeliveryLevelEditorOptions = {\n items: levelOptions,\n displayExpr: 'name',\n valueExpr: 'value',\n searchEnabled: false,\n value: '',\n width: '50%'\n };\n }\n\n try {\n var directReturnLevelEditorOptions = useMemo(() => {\n return {\n items: levelOptions,\n displayExpr: 'name',\n valueExpr: 'value',\n searchEnabled: false,\n value: (userPayload.DirectReturnLevel ? userPayload.DirectReturnLevel : ''),\n width: '50%',\n disabled: !conDirectReturn\n };\n }, [levelOptions, userPayload.DirectReturnLevel, conDirectReturn]);\n }\n catch (e) {\n var directReturnLevelEditorOptions = {\n items: levelOptions,\n displayExpr: 'name',\n valueExpr: 'value',\n searchEnabled: false,\n value: '',\n width: '50%'\n };\n }\n\n try {\n var deliveryRequestLevelEditorOptions = useMemo(() => {\n return {\n items: levelOptions,\n displayExpr: 'name',\n valueExpr: 'value',\n searchEnabled: false,\n value: (userPayload.DeliveryRequestLevel ? userPayload.DeliveryRequestLevel : ''),\n width: '50%',\n disabled: !conDeliveryRequest\n };\n }, [levelOptions, userPayload.DeliveryRequestLevel, conDeliveryRequest]);\n }\n catch (e) {\n var deliveryRequestLevelEditorOptions = {\n items: levelOptions,\n displayExpr: 'name',\n valueExpr: 'value',\n searchEnabled: false,\n value: '',\n width: '50%'\n };\n }\n\n try {\n var returnRequestLevelEditorOptions = useMemo(() => {\n return {\n items: levelOptions,\n displayExpr: 'name',\n valueExpr: 'value',\n searchEnabled: false,\n value: (userPayload.ReturnRequestLevel ? userPayload.ReturnRequestLevel : ''),\n width: '50%',\n disabled: !conReturnRequest\n };\n }, [levelOptions, userPayload.ReturnRequestLevel, conReturnRequest]);\n }\n catch (e) {\n var returnRequestLevelEditorOptions = {\n items: levelOptions,\n displayExpr: 'name',\n valueExpr: 'value',\n searchEnabled: false,\n value: '',\n width: '50%'\n };\n }\n\n try {\n var transferOrderLevelEditorOptions = useMemo(() => {\n return {\n items: levelOptions,\n displayExpr: 'name',\n valueExpr: 'value',\n searchEnabled: false,\n value: (userPayload.TransferOrderLevel ? userPayload.TransferOrderLevel : ''),\n width: '50%',\n disabled: !conTransferOrder\n };\n }, [levelOptions, userPayload.TransferOrderLevel, conTransferOrder]);\n }\n catch (e) {\n var transferOrderLevelEditorOptions = {\n items: levelOptions,\n displayExpr: 'name',\n valueExpr: 'value',\n searchEnabled: false,\n value: '',\n width: '50%'\n };\n }\n\n try {\n var salesOrderModLevelEditorOptions = useMemo(() => {\n return {\n items: levelOptions,\n displayExpr: 'name',\n valueExpr: 'value',\n searchEnabled: false,\n value: (userPayload.SalesOrderModLevel ? userPayload.SalesOrderModLevel : ''),\n width: '50%',\n disabled: !conSalesOrderMod\n };\n }, [levelOptions, userPayload.SalesOrderModLevel, conSalesOrderMod]);\n }\n catch (e) {\n var salesOrderModLevelEditorOptions = {\n items: levelOptions,\n displayExpr: 'name',\n valueExpr: 'value',\n searchEnabled: false,\n value: '',\n width: '50%'\n };\n }\n\n try {\n var shipmentRequestLevelEditorOptions = useMemo(() => {\n return {\n items: levelOptions,\n displayExpr: 'name',\n valueExpr: 'value',\n searchEnabled: false,\n value: (userPayload.ShipmentRequestLevel ? userPayload.ShipmentRequestLevel : ''),\n width: '50%',\n disabled: !conShipmentRequest\n };\n }, [levelOptions, userPayload.ShipmentRequestLevel, conShipmentRequest]);\n }\n catch (e) {\n var shipmentRequestLevelEditorOptions = {\n items: levelOptions,\n displayExpr: 'name',\n valueExpr: 'value',\n searchEnabled: false,\n value: '',\n width: '50%'\n };\n }\n\n try {\n var cashRegisterLevelEditorOptions = useMemo(() => {\n return {\n items: levelOptions,\n displayExpr: 'name',\n valueExpr: 'value',\n searchEnabled: false,\n value: (userPayload.CashRegisterLevel ? userPayload.CashRegisterLevel : ''),\n width: '50%',\n disabled: !conCashRegister\n };\n }, [levelOptions, userPayload.CashRegisterLevel, conCashRegister]);\n }\n catch (e) {\n var cashRegisterLevelEditorOptions = {\n items: levelOptions,\n displayExpr: 'name',\n valueExpr: 'value',\n searchEnabled: false,\n value: '',\n width: '50%'\n };\n }\n\n try {\n var customerPaymentLevelEditorOptions = useMemo(() => {\n return {\n items: levelOptions,\n displayExpr: 'name',\n valueExpr: 'value',\n searchEnabled: false,\n value: (userPayload.CustomerPaymentLevel ? userPayload.CustomerPaymentLevel : ''),\n width: '50%',\n disabled: !conCustomerPayment\n };\n }, [levelOptions, userPayload.CustomerPaymentLevel, conCustomerPayment]);\n }\n catch (e) {\n var customerPaymentLevelEditorOptions = {\n items: levelOptions,\n displayExpr: 'name',\n valueExpr: 'value',\n searchEnabled: false,\n value: '',\n width: '50%'\n };\n }\n\n try {\n var invTransferOrderLevelEditorOptions = useMemo(() => {\n return {\n items: levelOptions,\n displayExpr: 'name',\n valueExpr: 'value',\n searchEnabled: false,\n value: (userPayload.InvTransferOrderLevel ? userPayload.InvTransferOrderLevel : ''),\n width: '50%',\n disabled: !conInvTransferOrder\n };\n }, [levelOptions, userPayload.InvTransferOrderLevel, conInvTransferOrder]);\n }\n catch (e) {\n var invTransferOrderLevelEditorOptions = {\n items: levelOptions,\n displayExpr: 'name',\n valueExpr: 'value',\n searchEnabled: false,\n value: '',\n width: '50%'\n };\n }\n\n try {\n var invItemFulfillmentLevelEditorOptions = useMemo(() => {\n return {\n items: levelOptions,\n displayExpr: 'name',\n valueExpr: 'value',\n searchEnabled: false,\n value: (userPayload.InvItemFulfillmentLevel ? userPayload.InvItemFulfillmentLevel : ''),\n width: '50%',\n disabled: !conInvItemFulfillment\n };\n }, [levelOptions, userPayload.InvItemFulfillmentLevel, conInvItemFulfillment]);\n }\n catch (e) {\n var invItemFulfillmentLevelEditorOptions = {\n items: levelOptions,\n displayExpr: 'name',\n valueExpr: 'value',\n searchEnabled: false,\n value: '',\n width: '50%'\n };\n }\n\n try {\n var invItemReceiptLevelEditorOptions = useMemo(() => {\n return {\n items: levelOptions,\n displayExpr: 'name',\n valueExpr: 'value',\n searchEnabled: false,\n value: (userPayload.InvItemReceiptLevel ? userPayload.InvItemReceiptLevel : ''),\n width: '50%',\n disabled: !conInvItemReceipt\n };\n }, [levelOptions, userPayload.InvItemReceiptLevel, conInvItemReceipt]);\n }\n catch (e) {\n var invItemReceiptLevelEditorOptions = {\n items: levelOptions,\n displayExpr: 'name',\n valueExpr: 'value',\n searchEnabled: false,\n value: '',\n width: '50%'\n };\n }\n\n\n try {\n var inventoryTransferLevelEditorOptions = useMemo(() => {\n return {\n items: levelOptions,\n displayExpr: 'name',\n valueExpr: 'value',\n searchEnabled: false,\n value: (userPayload.InventoryTransferLevel ? userPayload.InventoryTransferLevel : ''),\n width: '50%',\n disabled: !conInventoryTransfer\n };\n }, [levelOptions, conInventoryTransfer, userPayload.InventoryTransferLevel]);\n }\n catch (e) {\n var inventoryTransferLevelEditorOptions = {\n items: levelOptions,\n displayExpr: 'name',\n valueExpr: 'value',\n searchEnabled: false,\n value: '',\n width: '50%'\n };\n }\n\n try {\n var createLabelWMSLevelEditorOptions = useMemo(() => {\n return {\n items: levelOptions,\n displayExpr: 'name',\n valueExpr: 'value',\n searchEnabled: false,\n value: (userPayload.CreateLabelWMSLevel ? userPayload.CreateLabelWMSLevel : ''),\n width: '50%',\n disabled: !conCreateLabelWMS\n };\n }, [levelOptions, conCreateLabelWMS, userPayload.CreateLabelWMSLevel]);\n }\n catch (e) {\n var createLabelWMSLevelEditorOptions = {\n items: levelOptions,\n displayExpr: 'name',\n valueExpr: 'value',\n searchEnabled: false,\n value: '',\n width: '50%'\n };\n }\n\n try {\n var receiveOrderWMSLevelEditorOptions = useMemo(() => {\n return {\n items: levelOptions,\n displayExpr: 'name',\n valueExpr: 'value',\n searchEnabled: false,\n value: (userPayload.ReceiveOrderWMSLevel ? userPayload.ReceiveOrderWMSLevel : ''),\n width: '50%',\n disabled: !conReceiveOrderWMS\n };\n }, [levelOptions, conReceiveOrderWMS, userPayload.ReceiveOrderWMSLevel]);\n }\n catch (e) {\n var receiveOrderWMSLevelEditorOptions = {\n items: levelOptions,\n displayExpr: 'name',\n valueExpr: 'value',\n searchEnabled: false,\n value: '',\n width: '50%'\n };\n }\n\n try {\n var fulfillmentOrderWMSLevelEditorOptions = useMemo(() => {\n return {\n items: levelOptions,\n displayExpr: 'name',\n valueExpr: 'value',\n searchEnabled: false,\n value: (userPayload.FulfillmentOrderWMSLevel ? userPayload.FulfillmentOrderWMSLevel : ''),\n width: '50%',\n disabled: !conFulfillmentOrderWMS\n };\n }, [levelOptions, conFulfillmentOrderWMS, userPayload.FulfillmentOrderWMSLevel]);\n }\n catch (e) {\n var fulfillmentOrderWMSLevelEditorOptions = {\n items: levelOptions,\n displayExpr: 'name',\n valueExpr: 'value',\n searchEnabled: false,\n value: '',\n width: '50%'\n };\n }\n\n try {\n var assignFulfillmentOrderWMSEditorOptions = useMemo(() => {\n return {\n disabled: !conFulfillmentOrderWMS\n };\n }, [conFulfillmentOrderWMS]);\n }\n catch (e) {\n var assignFulfillmentOrderWMSEditorOptions = {\n disabled: false\n };\n }\n\n try {\n var poSuggestionsReportCfgEditorOptions = useMemo(() => {\n return {\n disabled: !conPOSuggestionsReport\n };\n }, [conPOSuggestionsReport]);\n }\n catch (e) {\n var poSuggestionsReportCfgEditorOptions = {\n disabled: false\n };\n }\n \n try {\n var adjustItemWMSLevelEditorOptions = useMemo(() => {\n return {\n items: levelOptions,\n displayExpr: 'name',\n valueExpr: 'value',\n searchEnabled: false,\n value: (userPayload.AdjustItemWMSLevel ? userPayload.AdjustItemWMSLevel : ''),\n width: '50%',\n disabled: !conAdjustItemWMS\n };\n }, [levelOptions, conAdjustItemWMS, userPayload.AdjustItemWMSLevel]);\n }\n catch (e) {\n var adjustItemWMSLevelEditorOptions = {\n items: levelOptions,\n displayExpr: 'name',\n valueExpr: 'value',\n searchEnabled: false,\n value: '',\n width: '50%'\n };\n }\n\n try {\n var itemCountWMSLevelEditorOptions = useMemo(() => {\n return {\n items: levelOptions,\n displayExpr: 'name',\n valueExpr: 'value',\n searchEnabled: false,\n value: (userPayload.ItemCountWMSLevel ? userPayload.ItemCountWMSLevel : ''),\n width: '50%',\n disabled: !conItemCountWMS\n };\n }, [levelOptions, conItemCountWMS, userPayload.ItemCountWMSLevel]);\n }\n catch (e) {\n var itemCountWMSLevelEditorOptions = {\n items: levelOptions,\n displayExpr: 'name',\n valueExpr: 'value',\n searchEnabled: false,\n value: '',\n width: '50%'\n };\n }\n\n var approveItemCountWMSLevelEditorOptions = useMemo(() => {\n return {\n readOnly: false,\n width: '100%',\n disabled: !conItemCountWMS\n };\n }, [conItemCountWMS]);\n\n var approveAdjustItemWMSLevelEditorOptions = useMemo(() => {\n return {\n readOnly: false,\n width: '100%',\n disabled: !conAdjustItemWMS\n };\n }, [conAdjustItemWMS]);\n\n var approveInventoryTransferEditorOptions = useMemo(() => {\n return {\n readOnly: false,\n width: '100%',\n disabled: !conInventoryTransfer\n };\n }, [conInventoryTransfer]);\n\n //Opciones Modificacion Pedidos\n var salesOrderModPermissionEditorOptions = useMemo(() => {\n return {\n readOnly: false,\n width: '100%',\n disabled: !conSalesOrderMod\n };\n }, [conSalesOrderMod]);\n\n var toastPosition = useMemo(() => {\n return {\n my: 'top center',\n at: 'top center',\n of: window,\n offset: '0 130'\n }\n }, []);\n\n useEffect(() => {\n window.addEventListener('popstate', (e) => {\n var hash;\n\n try {\n hash = e.target.location.hash;\n }\n catch (e) {\n hash = '';\n }\n\n if (hash === '#/Users') {\n history.push('/Users');\n\n window.location.reload();\n }\n });\n\n async function initialize() {\n setVisibleLoadPanel(true);\n\n var user = await Auth.currentAuthenticatedUser();\n\n var groups = user.signInUserSession.accessToken.payload[\"cognito:groups\"];\n\n var okAdmin = false;\n\n for (var groupIndex in groups) {\n var singleGroup = groups[groupIndex];\n\n if (singleGroup === 'Admin') {\n setOk(true);\n okAdmin = true;\n }\n }\n\n if (okAdmin === true) {\n var sucursalList = await getSucursales();\n var personalList = await getPersonal();\n var usuarioList = await getUsuario();\n var agenteList = await getAgente();\n\n await getUsersList(sucursalList, personalList, usuarioList, agenteList);\n }\n\n setVisibleLoadPanel(false);\n }\n\n initialize();\n\n // En caso de solicitar un ID especifico, redireccionamos a ese ID\n if (!props.match.isExact) {\n var urlID = props.location.pathname.replace('/Users/', '');\n\n editUserButton(urlID);\n }\n\n // eslint-disable-next-line\n }, []);\n\n const onHidingToast = React.useCallback(() => {\n setVisibleToast(false);\n }, []);\n\n function onExporting(e) {\n const workbook = new Workbook();\n const worksheet = workbook.addWorksheet('Datos');\n\n exportDataGrid({\n component: e.component,\n worksheet,\n autoFilterEnabled: true,\n }).then(() => {\n workbook.xlsx.writeBuffer().then((buffer) => {\n saveAs(new Blob([buffer], { type: 'application/octet-stream' }), 'Datos.xlsx');\n });\n });\n e.cancel = true;\n };\n\n return (\n <div>\n {isDetail === false ? (\n <div class=\"bg-gray-200 m-2\">\n <h1 class=\"font-sans inline-block text-xl font-bold text-gray-700 leading-8 align-top mb-1\"><FontAwesomeIcon icon={faList} size=\"lg\" /> Usuarios</h1>\n </div>\n ) :\n (\n <div class=\"bg-gray-200 m-2\">\n <h1 class=\"font-sans inline-block text-xl font-bold text-gray-700 leading-8 align-top mb-1\"><FontAwesomeIcon icon={faUser} size=\"xl\" /> {userPayload.Username}</h1>\n </div>\n )}\n\n <LoadPanel\n shadingColor=\"rgba(0,0,0,0.4)\"\n visible={visibleLoadPanel}\n showIndicator={true}\n message=\"Por favor espere...\"\n shading={true}\n showPane={true}\n hideOnOutsideClick={false}\n />\n\n <Toast\n visible={visibleToast}\n message={messageToast}\n type={typeToast}\n onHiding={onHidingToast}\n displayTime={5000}\n width={'auto'}\n position={toastPosition}\n />\n\n <div class=\"bg-gray-200 m-2\">\n {isDetail === false ? (\n <div class=\"bg-white p-3 shadow-xl\">\n <div className=\"options mb-2\">\n <div className=\"option\">\n <CheckBox text=\"Expandir todos los grupos\"\n value={autoExpandAll}\n onValueChanged={onAutoExpandAllChanged}>\n </CheckBox>\n </div>\n </div>\n <DataGrid\n height={800}\n id=\"gridContainer\"\n columnsAutoWidth={true}\n filterBuilder={filterBuilder}\n dataSource={userRecords}\n allowColumnReordering={true}\n allowColumnResizing={true}\n columnResizingMode=\"widget\"\n showBorders={true}\n rowAlternationEnabled={true}\n showRowLines={true}\n showColumnLines={true}\n onExporting={onExporting}\n >\n <Scrolling rowRenderingMode='virtual'></Scrolling>\n <Paging defaultPageSize={10} />\n <Pager\n visible={true}\n allowedPageSizes={allowedPageSizes}\n displayMode='compact'\n showPageSizeSelector={true}\n showInfo={true}\n showNavigationButtons={true} />\n <FilterRow visible={true} />\n <FilterPanel visible={true} />\n <FilterBuilderPopup position={filterBuilderPopupPosition} />\n\n <HeaderFilter visible={true} />\n\n <GroupPanel visible={true} />\n <SearchPanel visible={true} />\n <ColumnChooser\n enabled={true}\n mode='select'\n >\n <ColumnChooserSearch\n enabled={true}\n />\n\n <ColumnChooserSelection\n allowSelectAll={true}\n selectByClick={true}\n recursive={true}\n />\n </ColumnChooser>\n <Grouping autoExpandAll={autoExpandAll} />\n <Export enabled={true} />\n <StateStoring enabled={true} type=\"localStorage\" storageKey=\"gridContainerListUsers\" />\n\n <Column caption=\"\" alignment=\"center\" width={100} cellRender={editUser} />\n\n <Column caption=\"Usuario\" dataField=\"Username\" dataType=\"string\" width={150} />\n\n <Column caption=\"Fecha Ultima Modificacion\" dataField=\"lastModifiedDate\" dataType=\"string\" width={200} visible={false} />\n <Column caption=\"Fecha Creacion\" dataField=\"createdDate\" dataType=\"string\" width={200} visible={false} />\n <Column caption=\"Estatus Cognito\" dataField=\"cognitoUserStatus\" dataType=\"string\" width={200} visible={false} />\n\n <Column caption=\"Correo Electronico\" dataField=\"Email\" dataType=\"string\" width={200} />\n\n <Column caption=\"Estatus\" alignment=\"center\" width={120} cellRender={userEnabled} />\n\n <Column caption=\"Personal Asociado\" dataField=\"Personal\" dataType=\"string\" width={300} />\n <Column caption=\"Usuario Asociado\" dataField=\"Usuario\" dataType=\"string\" width={300} />\n <Column caption=\"Agente Asociado\" dataField=\"Agente\" dataType=\"string\" width={300} />\n <Column caption=\"Sucursal\" dataField=\"Sucursal\" dataType=\"string\" width={200} />\n\n <Column caption=\"Administrador\" alignment=\"center\" width={200} cellRender={userAdmin} />\n\n <Column caption=\"Plazas Asistencia\" dataField=\"AsistenciaPlaza\" visible={false} width={200} />\n <Column caption=\"Asistencia\" dataField=\"Attendance\" visible={false} width={200} />\n <Column caption=\"Checklist Supervisores\" dataField=\"CheckList\" visible={false} width={200} />\n <Column caption=\"Checklist Auditores\" dataField=\"CheckListAud\" visible={false} width={200} />\n <Column caption=\"Plazas Checklist\" dataField=\"ChecklistPlaza\" visible={false} width={200} />\n <Column caption=\"Checklist Vehículos\" dataField=\"CheckListVeh\" visible={false} width={200} />\n <Column caption=\"Comisiones\" dataField=\"Commission\" visible={false} width={200} />\n <Column caption=\"Manual de Capacitación\" dataField=\"Document\" visible={false} width={200} />\n <Column caption=\"Incentivos\" dataField=\"Incentive\" visible={false} width={200} />\n <Column caption=\"Kibana\" dataField=\"Kibana\" visible={false} width={200} />\n <Column caption=\"Procesar Facturas\" dataField=\"ProcesarFacturas\" visible={false} width={200} />\n <Column caption=\"Procesar Facturas Sucursal\" dataField=\"ProcesarFacturasSucursal\" visible={false} width={200} />\n <Column caption=\"Procesar Facturas Bodega\" dataField=\"ProcesarFacturasBodega\" visible={false} width={200} />\n <Column caption=\"Afectar Facturas\" dataField=\"AfectarFacturas\" visible={false} width={200} />\n <Column caption=\"Lista de Precios\" dataField=\"PriceList\" visible={false} width={200} />\n <Column caption=\"Solicitud de Vacaciones\" dataField=\"Vacation\" visible={false} width={200} />\n <Column caption=\"Plazas Solicitud de Vacaciones\" dataField=\"VacationPlaza\" visible={false} width={200} />\n <Column caption=\"Plazas Ventas\" dataField=\"SalesPlaza\" visible={false} width={200} />\n\n <Column caption=\"Crear Checklist Supervisores\" dataField=\"NewCheckList\" visible={false} width={200} />\n <Column caption=\"Crear Checklist Auditores\" dataField=\"NewCheckListAud\" visible={false} width={200} />\n <Column caption=\"Crear Checklist Vehículos\" dataField=\"NewCheckListVeh\" visible={false} width={200} />\n\n <Column caption=\"Cotizaciones\" dataField=\"Estimate\" visible={false} width={200} />\n <Column caption=\"Venta Perdida\" dataField=\"LostDeal\" visible={false} width={200} />\n <Column caption=\"Pedido\" dataField=\"SalesOrder\" visible={false} width={200} />\n <Column caption=\"Herramienta Cierre Pedidos\" dataField=\"CloseSalesOrder\" visible={false} width={200} />\n <Column caption=\"Factura\" dataField=\"Invoice\" visible={false} width={200} />\n <Column caption=\"Entrega Directa\" dataField=\"DirectDelivery\" visible={false} width={200} />\n <Column caption=\"Devolución Directa\" dataField=\"DirectReturn\" visible={false} width={200} />\n <Column caption=\"Solicitud Envío\" dataField=\"DeliveryRequest\" visible={false} width={200} />\n <Column caption=\"Solicitud Devolución\" dataField=\"ReturnRequest\" visible={false} width={200} />\n <Column caption=\"Solicitud Traspaso\" dataField=\"TransferOrder\" visible={false} width={200} />\n <Column caption=\"Sol Modificación\" dataField=\"SalesOrderMod\" visible={false} width={200} />\n <Column caption=\"Solicitud Embarque\" dataField=\"ShipmentRequest\" visible={false} width={200} />\n <Column caption=\"Corte Caja\" dataField=\"CashRegister\" visible={false} width={200} />\n <Column caption=\"Anticipo Saldo\" dataField=\"CustomerPayment\" visible={false} width={200} />\n <Column caption=\"Solicitud Traspaso\" dataField=\"InvTransferOrder\" visible={false} width={200} />\n <Column caption=\"Explorador Inventarios\" dataField=\"InvLevels\" visible={false} width={200} />\n <Column caption=\"Explorador Inventarios con costos\" dataField=\"InvLevelsIncCost\" visible={false} width={200} />\n <Column caption=\"Explorador Kardex\" dataField=\"Kardex\" visible={false} width={200} />\n <Column caption=\"Autorizar Transferencias\" dataField=\"ApproveInventoryTransfer\" visible={false} width={200} />\n <Column caption=\"Autorizar Entregas de Mercancía\" dataField=\"ApproveDelivery\" visible={false} width={200} />\n <Column caption=\"Prog - Cancelar transacciones Concluidas\" dataField=\"VoidDeliveryTransactions\" visible={false} width={200} />\n <Column caption=\"Mod - Permitir Modificar Precios\" dataField=\"SalesOrderModUpdatePrices\" visible={false} width={200} />\n <Column caption=\"Mod - Autorizar Modificaciones\" dataField=\"ApproveSalesOrderMod\" visible={false} width={200} />\n <Column caption=\"Regenerar CFDi\" dataField=\"RegenerateCFDi\" visible={false} width={200} />\n <Column caption=\"Enviar CFDi\" dataField=\"SendCFDi\" visible={false} width={200} />\n <Column caption=\"Reporte Comparativo Ventas\" dataField=\"RepComparativoVentas\" visible={false} width={200} />\n <Column caption=\"Reporte Sugerencia de Compras\" dataField=\"POSuggestionsReport\" visible={false} width={200} />\n <Column caption=\"Cfg. Reporte Sugerencia de Compras\" dataField=\"POSuggestionsReportCfg\" visible={false} width={200} />\n \n <Column caption=\"Explorador WMS Barcodes\" dataField=\"ExploreBarcodes\" visible={false} width={200} />\n <Column caption=\"Explorador WMS Barcodes con Costos\" dataField=\"ExploreBarcodeCosts\" visible={false} width={200} />\n \n <Column caption=\"Transferencia de Inventario\" dataField=\"InventoryTransfer\" visible={false} width={200} />\n <Column caption=\"Salida Traspaso\" dataField=\"InvItemFulfillment\" visible={false} width={200} />\n <Column caption=\"Recibo Traspaso\" dataField=\"InvItemReceipt\" visible={false} width={200} />\n\n <Column caption=\"Nivel Cotizaciones\" dataField=\"EstimateLevel\" visible={false} width={200} />\n <Column caption=\"Nivel Venta Perdida\" dataField=\"LostDealLevel\" visible={false} width={200} />\n <Column caption=\"Nivel Pedido\" dataField=\"SalesOrderLevel\" visible={false} width={200} />\n <Column caption=\"Nivel Factura\" dataField=\"InvoiceLevel\" visible={false} width={200} />\n <Column caption=\"Nivel Entrega Directa\" dataField=\"DirectDeliveryLevel\" visible={false} width={200} />\n <Column caption=\"Nivel Devolución Directa\" dataField=\"DirectReturnLevel\" visible={false} width={200} />\n <Column caption=\"Nivel Solicitud Envío\" dataField=\"DeliveryRequestLevel\" visible={false} width={200} />\n <Column caption=\"Nivel Solicitud Devolución\" dataField=\"ReturnRequestLevel\" visible={false} width={200} />\n <Column caption=\"Nivel Solicitud Traspaso\" dataField=\"TransferOrderLevel\" visible={false} width={200} />\n <Column caption=\"Nivel Sol Modificación\" dataField=\"SalesOrderModLevel\" visible={false} width={200} />\n <Column caption=\"Nivel Solicitud Embarque\" dataField=\"ShipmentRequestLevel\" visible={false} width={200} />\n <Column caption=\"Nivel Corte Caja\" dataField=\"CashRegisterLevel\" visible={false} width={200} />\n <Column caption=\"Nivel Anticipo Saldo\" dataField=\"CustomerPaymentLevel\" visible={false} width={200} />\n <Column caption=\"Nivel Inventario - Solicitud Traspaso\" dataField=\"InvTransferOrderLevel\" visible={false} width={200} />\n <Column caption=\"Nivel Inventario - Autorizar Solicitud Traspaso\" dataField=\"ApproveInvTransferOrder\" visible={false} width={200} />\n <Column caption=\"Nivel Transferencia de Inventario\" dataField=\"InventoryTransferLevel\" visible={false} width={200} />\n <Column caption=\"Nivel Salida Traspaso\" dataField=\"InvItemFulfillmentLevel\" visible={false} width={200} />\n <Column caption=\"Nivel Recibo Traspaso\" dataField=\"InvItemReceiptLevel\" visible={false} width={200} />\n\n <Column caption=\"Procesar Envío WMS HH\" dataField=\"SendWMS\" visible={false} width={200} />\n <Column caption=\"Procesar Pick WMS HH\" dataField=\"PickWMS\" visible={false} width={200} />\n <Column caption=\"Procesar Pack WMS HH\" dataField=\"PackWMS\" visible={false} width={200} />\n <Column caption=\"Procesar Ship WMS HH\" dataField=\"ShipWMS\" visible={false} width={200} />\n <Column caption=\"Procesar Recibos WMS HH\" dataField=\"ReceiveWMS\" visible={false} width={200} />\n <Column caption=\"Procesar Productos WMS HH\" dataField=\"ProductsWMS\" visible={false} width={200} />\n <Column caption=\"Procesar Ajuste WMS HH\" dataField=\"AdjustmentWMS\" visible={false} width={200} />\n <Column caption=\"Procesar Acomodo WMS HH\" dataField=\"MoveWMS\" visible={false} width={200} />\n <Column caption=\"Procesar Conteo Cíclico WMS HH\" dataField=\"CountWMS\" visible={false} width={200} />\n\n <Column caption=\"Alta Etiqueta WMS\" dataField=\"CreateLabelWMS\" visible={false} width={200} />\n <Column caption=\"Nivel Alta Etiqueta WMS\" dataField=\"CreateLabelWMSLevel\" visible={false} width={200} />\n <Column caption=\"Orden Recibo WMS\" dataField=\"ReceiveOrderWMS\" visible={false} width={200} />\n <Column caption=\"Nivel Orden Recibo WMS\" dataField=\"ReceiveOrderWMSLevel\" visible={false} width={200} />\n <Column caption=\"Orden Surtido WMS\" dataField=\"FulfillmentOrderWMS\" visible={false} width={200} />\n <Column caption=\"Reasignar Barcode Surtido WMS\" dataField=\"AssignFulfillmentOrderWMS\" visible={false} width={200} />\n <Column caption=\"Nivel Orden Surtido WMS\" dataField=\"FulfillmentOrderWMSLevel\" visible={false} width={200} />\n <Column caption=\"Ajuste WMS\" dataField=\"AdjustItemWMS\" visible={false} width={200} />\n <Column caption=\"Autorizar Ajuste WMS\" dataField=\"ApproveAdjustItemWMS\" visible={false} width={200} />\n <Column caption=\"Nivel Ajuste WMS\" dataField=\"AdjustItemWMSLevel\" visible={false} width={200} />\n\n <Column caption=\"Conteo Cíclico WMS\" dataField=\"ItemCountWMS\" visible={false} width={200} />\n <Column caption=\"Autorizar Conteo Cíclico WMS\" dataField=\"ApproveItemCountWMS\" visible={false} width={200} />\n <Column caption=\"Nivel Conteo Cíclico WMS\" dataField=\"ItemCountWMSLevel\" visible={false} width={200} />\n\n <Column caption=\"Acomodo WMS\" dataField=\"MoveItemWMS\" visible={false} width={200} />\n\n </DataGrid>\n </div>\n ) : (<div />)}\n <Route exact path=\"/Users/:userName\" render={({ match }) => {\n return (\n <div class=\"bg-gray-200\">\n {isDetail.toString() === 'true' ?\n (\n <div>\n <Link to=\"/Users\">\n <button onClick={cancelEditButton} type=\"submit\" class=\"mb-4 bg-red-500 hover:bg-red-700 text-white font-bold py-2 px-4 rounded\">\n <FontAwesomeIcon icon={faArrowRotateLeft} /> Regresar\n </button>\n </Link>\n\n <button onClick={saveButton} type=\"submit\" class=\"ml-4 mb-4 bg-blue-500 hover:bg-blue-700 text-white font-bold py-2 px-4 rounded\">\n <FontAwesomeIcon icon={faSave} /> Guardar Cambios\n </button>\n\n <button onClick={deleteUser} type=\"submit\" class=\"ml-4 mb-4 bg-gray-500 hover:bg-gray-700 text-white font-bold py-2 px-4 rounded\">\n <FontAwesomeIcon icon={faTrashAlt} /> Eliminar Usuario\n </button>\n\n <div class=\"mt-1 bg-white pt-3 shadow-xl\">\n <div class=\"ml-4 mr-4 bg-white pt-3\">\n <Form\n id=\"datosGenerales\"\n labelMode={'outside'}\n formData={userPayload}\n\n showColonAfterLabel={false}\n labelLocation={'top'}\n colCount={2}\n onFieldDataChanged={onFieldDataChanged}\n >\n <GroupItem caption=\"Datos Generales\">\n <Item cssClass=\"boldText\" dataField=\"Username\" editorOptions={userNameEditorOptions} />\n <Item cssClass=\"boldText\" dataField=\"Email\" editorOptions={userNameEditorOptions} />\n <Item dataField=\"Enabled\" editorType=\"dxSelectBox\" editorOptions={enabledEditorOptions} >\n <Label text=\"Estatus\" />\n </Item>\n <Item dataField=\"isAdmin\" editorType=\"dxSelectBox\" editorOptions={isAdminEditorOptions} >\n <Label text=\"Grupo\" />\n </Item>\n <Item dataField=\"Sucursal\" editorType=\"dxSelectBox\" editorOptions={sucursalEditorOptions} >\n <Label text=\"Sucursal Asociada\" />\n </Item>\n\n <Item dataField=\"Personal\" editorType=\"dxSelectBox\" editorOptions={personalEditorOptions} >\n <Label text=\"Personal Asociado\" />\n </Item>\n\n <Item dataField=\"Usuario\" editorType=\"dxSelectBox\" editorOptions={usuarioEditorOptions} >\n <Label text=\"Usuario Asociado\" />\n </Item>\n\n <Item dataField=\"Agente\" editorType=\"dxSelectBox\" editorOptions={agenteEditorOptions} >\n <Label text=\"Agente Asociado\" />\n </Item>\n </GroupItem>\n <GroupItem caption=\"Contraseña\">\n <Item dataField=\"Password\" editorOptions={passwordEditorOptions} >\n <Label text=\"Contraseña\" />\n </Item>\n <Item dataField=\"ConfirmPassword\" editorOptions={passwordEditorOptions} >\n <Label text=\"Confirmar Contraseña\" />\n </Item>\n </GroupItem>\n <GroupItem caption=\"Accesos\" colSpan={2}>\n <TabbedItem>\n <TabPanelOptions deferRendering={false} showNavButtons={true} />\n\n <Tab title=\"Asistencia\">\n <Item dataField=\"Attendance\" editorType=\"dxCheckBox\">\n <Label text=\"Asistencia\" />\n </Item>\n <Item dataField=\"asistenciaPlaza\" editorType=\"dxTagBox\" editorOptions={asistenciaPlazaEditorOptions} >\n <Label text=\"Plazas\" />\n </Item>\n </Tab>\n <Tab title=\"Ventas\">\n <TabbedItem>\n <TabPanelOptions deferRendering={false} showNavButtons={true} />\n <Tab title=\"Cfg. General\">\n <Item dataField=\"salesPlaza\" editorType=\"dxTagBox\" editorOptions={salesPlazaEditorOptions} >\n <Label text=\"Acceso Plazas\" />\n </Item>\n <Item dataField=\"RegenerateCFDi\" editorType=\"dxCheckBox\">\n <Label text=\"Regenerar CFDi\" />\n </Item>\n <Item dataField=\"SendCFDi\" editorType=\"dxCheckBox\">\n <Label text=\"Enviar CFDi\" />\n </Item>\n </Tab>\n <Tab title=\"Cotizaciones\">\n <Item dataField=\"Estimate\" editorType=\"dxCheckBox\">\n <Label text=\"Cotizaciones\" />\n </Item>\n <Item dataField=\"EstimateLevel\" editorType=\"dxSelectBox\" editorOptions={estimateLevelEditorOptions} >\n <Label text=\"Nivel Permiso\" />\n </Item>\n </Tab>\n <Tab title=\"Venta Perdida\">\n <Item dataField=\"LostDeal\" editorType=\"dxCheckBox\">\n <Label text=\"Venta Perdida\" />\n </Item>\n <Item dataField=\"LostDealLevel\" editorType=\"dxSelectBox\" editorOptions={lostDealLevelEditorOptions} >\n <Label text=\"Nivel Permiso\" />\n </Item>\n </Tab>\n <Tab title=\"Pedidos\">\n <Item dataField=\"SalesOrder\" editorType=\"dxCheckBox\">\n <Label text=\"Pedidos\" />\n </Item>\n <Item dataField=\"SalesOrderLevel\" editorType=\"dxSelectBox\" editorOptions={salesOrderLevelEditorOptions} >\n <Label text=\"Nivel Permiso\" />\n </Item>\n <Item dataField=\"CloseSalesOrder\" editorType=\"dxCheckBox\" >\n <Label text=\"Herramienta Cierre Pedidos\" />\n </Item>\n </Tab>\n <Tab title=\"Facturas\">\n <Item dataField=\"Invoice\" editorType=\"dxCheckBox\">\n <Label text=\"Facturas\" />\n </Item>\n <Item dataField=\"InvoiceLevel\" editorType=\"dxSelectBox\" editorOptions={invoiceLevelEditorOptions} >\n <Label text=\"Nivel Permiso\" />\n </Item>\n </Tab>\n <Tab title=\"Lista de Precios\">\n <Item dataField=\"PriceList\" editorType=\"dxCheckBox\">\n <Label text=\"Lista de Precios\" />\n </Item>\n </Tab>\n <Tab title=\"Procesar Facturas\">\n <Item dataField=\"ProcesarFacturas\" editorType=\"dxCheckBox\">\n <Label text=\"Procesar Facturas\" />\n </Item>\n <Item dataField=\"ProcesarFacturasSucursal\" editorType=\"dxCheckBox\">\n <Label text=\"Procesar Facturas Sucursal\" />\n </Item>\n <Item dataField=\"ProcesarFacturasBodega\" editorType=\"dxCheckBox\">\n <Label text=\"Procesar Facturas Bodega\" />\n </Item>\n <Item dataField=\"AfectarFacturas\" editorType=\"dxCheckBox\" editorOptions={afectarFacturasEditorOptions}>\n <Label text=\"Afectar Facturas\" />\n </Item>\n </Tab>\n </TabbedItem>\n </Tab>\n <Tab title=\"Programación de Pedidos\">\n <TabbedItem>\n <TabPanelOptions deferRendering={false} showNavButtons={true} />\n <Tab title=\"Entrega Directa\">\n <Item dataField=\"DirectDelivery\" editorType=\"dxCheckBox\">\n <Label text=\"Entrega Directa\" />\n </Item>\n <Item dataField=\"DirectDeliveryLevel\" editorType=\"dxSelectBox\" editorOptions={directDeliveryLevelEditorOptions} >\n <Label text=\"Nivel Permiso\" />\n </Item>\n </Tab>\n <Tab title=\"Devolución Directa\">\n <Item dataField=\"DirectReturn\" editorType=\"dxCheckBox\">\n <Label text=\"Devolución Directa\" />\n </Item>\n <Item dataField=\"DirectReturnLevel\" editorType=\"dxSelectBox\" editorOptions={directReturnLevelEditorOptions} >\n <Label text=\"Nivel Permiso\" />\n </Item>\n </Tab>\n <Tab title=\"Solicitud Envío\">\n <Item dataField=\"DeliveryRequest\" editorType=\"dxCheckBox\">\n <Label text=\"Solicitud Envío\" />\n </Item>\n <Item dataField=\"DeliveryRequestLevel\" editorType=\"dxSelectBox\" editorOptions={deliveryRequestLevelEditorOptions} >\n <Label text=\"Nivel Permiso\" />\n </Item>\n </Tab>\n <Tab title=\"Solicitud Devolución\">\n <Item dataField=\"ReturnRequest\" editorType=\"dxCheckBox\">\n <Label text=\"Solicitud Devolución\" />\n </Item>\n <Item dataField=\"ReturnRequestLevel\" editorType=\"dxSelectBox\" editorOptions={returnRequestLevelEditorOptions} >\n <Label text=\"Nivel Permiso\" />\n </Item>\n </Tab>\n <Tab title=\"Solicitud de Traspaso\">\n <Item dataField=\"TransferOrder\" editorType=\"dxCheckBox\">\n <Label text=\"Solicitud Traspaso\" />\n </Item>\n <Item dataField=\"TransferOrderLevel\" editorType=\"dxSelectBox\" editorOptions={transferOrderLevelEditorOptions} >\n <Label text=\"Nivel Permiso\" />\n </Item>\n </Tab>\n\n <Tab title=\"Permisos Generales\">\n <Item dataField=\"ApproveDelivery\" editorType=\"dxCheckBox\">\n <Label text=\"Autorizar Entregas de Mercancía\" />\n </Item>\n <Item dataField=\"VoidDeliveryTransactions\" editorType=\"dxCheckBox\">\n <Label text=\"Cancelar transacciones Concluidas\" />\n </Item>\n </Tab>\n\n </TabbedItem>\n </Tab>\n <Tab title=\"Modificación de Pedidos\">\n <Item dataField=\"SalesOrderMod\" editorType=\"dxCheckBox\">\n <Label text=\"Sol Modificación\" />\n </Item>\n <Item dataField=\"SalesOrderModLevel\" editorType=\"dxSelectBox\" editorOptions={salesOrderModLevelEditorOptions} >\n <Label text=\"Nivel Permiso\" />\n </Item>\n <Item dataField=\"SalesOrderModUpdatePrices\" editorType=\"dxCheckBox\" editorOptions={salesOrderModPermissionEditorOptions}>\n <Label text=\"Permitir Modificar Precios\" />\n </Item>\n <Item dataField=\"ApproveSalesOrderMod\" editorType=\"dxCheckBox\" editorOptions={salesOrderModPermissionEditorOptions}>\n <Label text=\"Autorizar Modificaciones\" />\n </Item>\n </Tab>\n <Tab title=\"Embarques\">\n <Item dataField=\"ShipmentRequest\" editorType=\"dxCheckBox\">\n <Label text=\"Solicitud Embarque\" />\n </Item>\n <Item dataField=\"ShipmentRequestLevel\" editorType=\"dxSelectBox\" editorOptions={shipmentRequestLevelEditorOptions} >\n <Label text=\"Nivel Permiso\" />\n </Item>\n </Tab>\n <Tab title=\"Corte de Caja\">\n <Item dataField=\"CashRegister\" editorType=\"dxCheckBox\">\n <Label text=\"Corte Caja\" />\n </Item>\n <Item dataField=\"CashRegisterLevel\" editorType=\"dxSelectBox\" editorOptions={cashRegisterLevelEditorOptions} >\n <Label text=\"Nivel Permiso\" />\n </Item>\n </Tab>\n <Tab title=\"Cuentas por Cobrar\">\n <Item dataField=\"CustomerPayment\" editorType=\"dxCheckBox\">\n <Label text=\"Anticipo Saldo\" />\n </Item>\n <Item dataField=\"CustomerPaymentLevel\" editorType=\"dxSelectBox\" editorOptions={customerPaymentLevelEditorOptions} >\n <Label text=\"Nivel Permiso\" />\n </Item>\n </Tab>\n <Tab title=\"Inventario\">\n <TabbedItem>\n <TabPanelOptions deferRendering={false} showNavButtons={true} />\n <Tab title=\"Solicitud Traspaso\">\n <Item dataField=\"InvTransferOrder\" editorType=\"dxCheckBox\">\n <Label text=\"Solicitud Traspaso\" />\n </Item>\n <Item dataField=\"InvTransferOrderLevel\" editorType=\"dxSelectBox\" editorOptions={invTransferOrderLevelEditorOptions} >\n <Label text=\"Nivel Permiso\" />\n </Item>\n <Item dataField=\"ApproveInvTransferOrder\" editorType=\"dxCheckBox\" editorOptions={invTransferOrderLevelEditorOptions} >\n <Label text=\"Autorizar Solicitud Traspaso\" />\n </Item>\n </Tab>\n <Tab title=\"Salida Traspaso\">\n <Item dataField=\"InvItemFulfillment\" editorType=\"dxCheckBox\">\n <Label text=\"Salida Traspaso\" />\n </Item>\n <Item dataField=\"InvItemFulfillmentLevel\" editorType=\"dxSelectBox\" editorOptions={invItemFulfillmentLevelEditorOptions} >\n <Label text=\"Nivel Permiso\" />\n </Item>\n </Tab>\n <Tab title=\"Recibo Traspaso\">\n <Item dataField=\"InvItemReceipt\" editorType=\"dxCheckBox\">\n <Label text=\"Recibo Traspaso\" />\n </Item>\n <Item dataField=\"InvItemReceiptLevel\" editorType=\"dxSelectBox\" editorOptions={invItemReceiptLevelEditorOptions} >\n <Label text=\"Nivel Permiso\" />\n </Item>\n </Tab>\n <Tab title=\"Transferencia de Inventario\">\n <Item dataField=\"InventoryTransfer\" editorType=\"dxCheckBox\">\n <Label text=\"Transferencia de Inventario\" />\n </Item>\n <Item dataField=\"InventoryTransferLevel\" editorType=\"dxSelectBox\" editorOptions={inventoryTransferLevelEditorOptions} >\n <Label text=\"Nivel Permiso\" />\n </Item>\n <Item dataField=\"ApproveInventoryTransfer\" editorType=\"dxCheckBox\" editorOptions={approveInventoryTransferEditorOptions} >\n <Label text=\"Autorizar Transferencia\" />\n </Item>\n </Tab>\n </TabbedItem>\n </Tab>\n <Tab title=\"Comisiones e Incentivos\">\n <TabbedItem>\n <TabPanelOptions deferRendering={false} showNavButtons={true} />\n <Tab title=\"Comisiones\">\n <Item dataField=\"Commission\" editorType=\"dxCheckBox\">\n <Label text=\"Comisiones\" />\n </Item>\n </Tab>\n <Tab title=\"Incentivos\">\n <Item dataField=\"Incentive\" editorType=\"dxCheckBox\">\n <Label text=\"Incentivos\" />\n </Item>\n </Tab>\n </TabbedItem>\n </Tab>\n <Tab title=\"Checklist\">\n <TabbedItem>\n <TabPanelOptions deferRendering={false} showNavButtons={true} />\n <Tab title=\"Supervisores\">\n <Item dataField=\"CheckList\" editorType=\"dxCheckBox\">\n <Label text=\"Checklist Supervisores\" />\n </Item>\n <Item dataField=\"NewCheckList\" editorType=\"dxCheckBox\" editorOptions={newChecklistEditorOptions}>\n <Label text=\"Crear Checklist\" />\n </Item>\n </Tab>\n <Tab title=\"Auditores\">\n <Item dataField=\"CheckListAud\" editorType=\"dxCheckBox\">\n <Label text=\"Checklist Auditores\" />\n </Item>\n <Item dataField=\"NewCheckListAud\" editorType=\"dxCheckBox\" editorOptions={newChecklistAudEditorOptions}>\n <Label text=\"Crear Checklist\" />\n </Item>\n </Tab>\n <Tab title=\"Vehículos\">\n <Item dataField=\"CheckListVeh\" editorType=\"dxCheckBox\">\n <Label text=\"Checklist Vehículos\" />\n </Item>\n <Item dataField=\"NewCheckListVeh\" editorType=\"dxCheckBox\" editorOptions={newChecklistVehEditorOptions}>\n <Label text=\"Crear Checklist\" />\n </Item>\n </Tab>\n <Tab title=\"Plazas\">\n <Item dataField=\"checklistPlaza\" editorType=\"dxTagBox\" editorOptions={checklistPlazaEditorOptions} >\n <Label text=\"Plazas\" />\n </Item>\n </Tab>\n </TabbedItem>\n </Tab>\n <Tab title=\"Manual de capacitación\">\n <Item dataField=\"Document\" editorType=\"dxCheckBox\">\n <Label text=\"Manual de Capacitación\" />\n </Item>\n </Tab>\n <Tab title=\"Solicitud de vacaciones\">\n <Item dataField=\"Vacation\" editorType=\"dxCheckBox\">\n <Label text=\"Solicitud de Vacaciones\" />\n </Item>\n <Item dataField=\"vacationPlaza\" editorType=\"dxTagBox\" editorOptions={vacationPlazaEditorOptions} >\n <Label text=\"Plazas\" />\n </Item>\n </Tab>\n <Tab title=\"Kibana\">\n <Item dataField=\"Kibana\" editorType=\"dxCheckBox\">\n <Label text=\"Kibana\" />\n </Item>\n </Tab>\n <Tab title=\"Exploradores\">\n <Item dataField=\"InvLevels\" editorType=\"dxCheckBox\">\n <Label text=\"Inventarios\" />\n </Item>\n <Item dataField=\"InvLevelsIncCost\" editorType=\"dxCheckBox\">\n <Label text=\"Inventarios con costos\" />\n </Item>\n <Item dataField=\"Kardex\" editorType=\"dxCheckBox\">\n <Label text=\"Kardex\" />\n </Item>\n <Item dataField=\"ExploreBarcodes\" editorType=\"dxCheckBox\">\n <Label text=\"WMS Barcodes\" />\n </Item>\n <Item dataField=\"ExploreBarcodeCosts\" editorType=\"dxCheckBox\">\n <Label text=\"WMS Barcodes con Costos\" />\n </Item> \n </Tab>\n <Tab title=\"Reportes\">\n <Item dataField=\"RepComparativoVentas\" editorType=\"dxCheckBox\">\n <Label text=\"Comparativo Ventas\" />\n </Item>\n <Item dataField=\"POSuggestionsReport\" editorType=\"dxCheckBox\">\n <Label text=\"Sugerencia de Compras\" />\n </Item>\n <Item dataField=\"POSuggestionsReportCfg\" editorType=\"dxCheckBox\" editorOptions={poSuggestionsReportCfgEditorOptions} >\n <Label text=\"Configuración Sugerencia de Compras\" />\n </Item>\n </Tab>\n <Tab title=\"WMS\">\n <TabbedItem>\n <Tab title=\"Alta Barcode\">\n <Item dataField=\"CreateLabelWMS\" editorType=\"dxCheckBox\">\n <Label text=\"Alta Barcode\" />\n </Item>\n <Item dataField=\"CreateLabelWMSLevel\" editorType=\"dxSelectBox\" editorOptions={createLabelWMSLevelEditorOptions} >\n <Label text=\"Nivel Permiso\" />\n </Item>\n </Tab>\n <Tab title=\"Orden Recibo\">\n <Item dataField=\"ReceiveOrderWMS\" editorType=\"dxCheckBox\">\n <Label text=\"Orden Recibo\" />\n </Item>\n <Item dataField=\"ReceiveOrderWMSLevel\" editorType=\"dxSelectBox\" editorOptions={receiveOrderWMSLevelEditorOptions} >\n <Label text=\"Nivel Permiso\" />\n </Item>\n </Tab>\n <Tab title=\"Orden Surtido\">\n <Item dataField=\"FulfillmentOrderWMS\" editorType=\"dxCheckBox\">\n <Label text=\"Orden Surtido\" />\n </Item>\n <Item dataField=\"AssignFulfillmentOrderWMS\" editorType=\"dxCheckBox\" editorOptions={assignFulfillmentOrderWMSEditorOptions} >\n <Label text=\"Reasignar Barcode\" />\n </Item>\n <Item dataField=\"FulfillmentOrderWMSLevel\" editorType=\"dxSelectBox\" editorOptions={fulfillmentOrderWMSLevelEditorOptions} >\n <Label text=\"Nivel Permiso\" />\n </Item>\n </Tab>\n <Tab title=\"Acomodo\">\n <Item dataField=\"MoveItemWMS\" editorType=\"dxCheckBox\">\n <Label text=\"Acomodo\" />\n </Item>\n </Tab>\n <Tab title=\"Ajuste\">\n <Item dataField=\"AdjustItemWMS\" editorType=\"dxCheckBox\">\n <Label text=\"Ajuste\" />\n </Item>\n <Item dataField=\"AdjustItemWMSLevel\" editorType=\"dxSelectBox\" editorOptions={adjustItemWMSLevelEditorOptions} >\n <Label text=\"Nivel Permiso\" />\n </Item>\n <Item dataField=\"ApproveAdjustItemWMS\" editorType=\"dxCheckBox\" editorOptions={approveAdjustItemWMSLevelEditorOptions} >\n <Label text=\"Autorizar Ajuste\" />\n </Item>\n </Tab>\n <Tab title=\"Conteo Cíclico\">\n <Item dataField=\"ItemCountWMS\" editorType=\"dxCheckBox\">\n <Label text=\"Conteo Cíclico\" />\n </Item>\n <Item dataField=\"ItemCountWMSLevel\" editorType=\"dxSelectBox\" editorOptions={itemCountWMSLevelEditorOptions} >\n <Label text=\"Nivel Permiso\" />\n </Item>\n <Item dataField=\"ApproveItemCountWMS\" editorType=\"dxCheckBox\" editorOptions={approveItemCountWMSLevelEditorOptions} >\n <Label text=\"Autorizar Conteo Cíclico\" />\n </Item>\n </Tab>\n <Tab title=\"Procesar Envios Handheld\">\n <Item dataField=\"SendWMS\" editorType=\"dxCheckBox\">\n <Label text=\"Procesar Envios\" />\n </Item>\n <Item dataField=\"PickWMS\" editorType=\"dxCheckBox\" editorOptions={sendWMSEditorOptions} >\n <Label text=\"Procesar Pick\" />\n </Item>\n <Item dataField=\"PackWMS\" editorType=\"dxCheckBox\" editorOptions={sendWMSEditorOptions} >\n <Label text=\"Procesar Pack\" />\n </Item>\n <Item dataField=\"ShipWMS\" editorType=\"dxCheckBox\" editorOptions={sendWMSEditorOptions} >\n <Label text=\"Procesar Ship\" />\n </Item>\n </Tab>\n <Tab title=\"Procesar Recibos Handheld\">\n <Item dataField=\"ReceiveWMS\" editorType=\"dxCheckBox\">\n <Label text=\"Procesar Recibos\" />\n </Item>\n </Tab>\n <Tab title=\"Procesar Productos Handheld\">\n <Item dataField=\"ProductsWMS\" editorType=\"dxCheckBox\">\n <Label text=\"Procesar Productos\" />\n </Item>\n <Item dataField=\"AdjustmentWMS\" editorType=\"dxCheckBox\" editorOptions={productsWMSEditorOptions} >\n <Label text=\"Procesar Ajuste\" />\n </Item>\n <Item dataField=\"MoveWMS\" editorType=\"dxCheckBox\" editorOptions={productsWMSEditorOptions} >\n <Label text=\"Procesar Acomodo\" />\n </Item>\n <Item dataField=\"CountWMS\" editorType=\"dxCheckBox\" editorOptions={productsWMSEditorOptions} >\n <Label text=\"Procesar Conteo Cíclico\" />\n </Item>\n </Tab>\n </TabbedItem>\n </Tab>\n </TabbedItem>\n </GroupItem>\n </Form>\n </div>\n </div>\n </div>\n ) :\n (<div></div>)\n }\n </div>\n );\n }}\n />\n </div>\n </div>\n );\n}","import React, { useState, useEffect, useRef } from 'react';\n\n// Iconos\nimport { FontAwesomeIcon } from \"@fortawesome/react-fontawesome\";\nimport { faTable } from \"@fortawesome/pro-solid-svg-icons\";\nimport { faList } from \"@fortawesome/pro-duotone-svg-icons\";\nimport { faFilePdf } from \"@fortawesome/pro-duotone-svg-icons\";\nimport { faPencilAlt } from \"@fortawesome/pro-solid-svg-icons\";\nimport { faArrowRotateLeft } from \"@fortawesome/pro-solid-svg-icons\";\nimport { faSave } from \"@fortawesome/pro-solid-svg-icons\";\nimport { faDownload } from \"@fortawesome/pro-solid-svg-icons\";\n\nimport { Auth, API, Storage } from 'aws-amplify';\n\n// Ruteador\nimport { Route, Link, useHistory } from \"react-router-dom\";\n\n// Grid\nimport DataGrid, {\n Column, FilterRow, HeaderFilter, FilterPanel, FilterBuilderPopup,\n GroupPanel, Grouping, SearchPanel, Sorting, Editing, Lookup, Toolbar, Item, RequiredRule,\n Scrolling, Pager, Paging, Summary, TotalItem, StateStoring\n} from 'devextreme-react/data-grid';\n\nimport '../ListStyle.css';\n\nexport default function PdfTemplate(props) {\n const history = useHistory();\n\n const [templateRecords, setTemplateRecords] = useState([]);\n const [tipo, setTipo] = useState();\n\n const allowedPageSizes = [5, 10, 15, 20, 'all'];\n\n const filterBuilderPopupPosition = {\n of: window,\n at: 'top',\n my: 'top',\n offset: { y: 10 },\n };\n\n async function getTemplateRecords() {\n try {\n let apiName = 'AdminSC';\n let path = '/procesapdftemplate';\n\n let myInit = {\n headers: {\n 'Content-Type': 'application/json',\n Authorization: `${(await Auth.currentSession()).getAccessToken().getJwtToken()}`\n },\n queryStringParameters: {\n action: 'list',\n username: JSON.parse(JSON.stringify(await Auth.currentAuthenticatedUser())).username\n }\n }\n\n var templatesGet = await API.get(apiName, path, myInit);\n }\n catch (e) {\n if (e === 'No current user') {\n history.push('/');\n\n window.location.reload();\n }\n }\n\n return templatesGet;\n }\n\n async function editTemplateButton(Tipo) {\n var baseUrl = window.location.href.split('/')[0];\n\n window.open(baseUrl + \"/#/PdfEditor?type=\" + Tipo, \"_blank\");\n };\n\n function editTemplate(data) {\n return (\n <Link to={`/PdfTemplate/${data.data.Tipo}`}>\n <button class=\"bg-blue-500 hover:bg-blue-700 text-white py-1 px-3 rounded\" onClick={() => editTemplateButton(data.data.Tipo)}><FontAwesomeIcon icon={faPencilAlt} /> Editar</button>\n </Link>\n )\n }\n\n async function downloadJSONButton(Tipo) {\n let apiNamePayload = 'AdminSC';\n let pathPayload;\n let myInitPayload;\n\n Tipo = Tipo.toLowerCase();\n\n if (Tipo === 'vacation') {\n pathPayload = '/procesavacaciones';\n\n myInitPayload = {\n headers: {\n 'Content-Type': 'application/json',\n Authorization: `${(await Auth.currentSession()).getAccessToken().getJwtToken()}`\n },\n queryStringParameters: {\n ID: 0,\n action: 'payload'\n }\n };\n }\n else if (Tipo === 'checklistaud') {\n pathPayload = '/procesachecklist';\n\n myInitPayload = {\n headers: {\n 'Content-Type': 'application/json',\n Authorization: `${(await Auth.currentSession()).getAccessToken().getJwtToken()}`\n },\n queryStringParameters: {\n personal: '',\n ID: 0,\n action: 'payload',\n mov: 'Check List Aud'\n }\n };\n }\n else if (Tipo === 'checklist') {\n pathPayload = '/procesachecklist';\n\n myInitPayload = {\n headers: {\n 'Content-Type': 'application/json',\n Authorization: `${(await Auth.currentSession()).getAccessToken().getJwtToken()}`\n },\n queryStringParameters: {\n personal: '',\n ID: 0,\n action: 'payload',\n mov: 'Check List'\n }\n };\n }\n else if (Tipo === 'checklistveh') {\n pathPayload = '/procesachecklist';\n\n myInitPayload = {\n headers: {\n 'Content-Type': 'application/json',\n Authorization: `${(await Auth.currentSession()).getAccessToken().getJwtToken()}`\n },\n queryStringParameters: {\n personal: '',\n ID: 0,\n action: 'payload',\n mov: 'Check List Veh'\n }\n };\n }\n else if (Tipo === 'invoice') {\n pathPayload = '/procesafacturaslote';\n\n myInitPayload = {\n headers: {\n 'Content-Type': 'application/json',\n Authorization: `${(await Auth.currentSession()).getAccessToken().getJwtToken()}`\n },\n body: {\n action: 'payload',\n invoices: [{ ID: 0 }]\n }\n };\n }\n else if (Tipo === 'directdelivery') {\n pathPayload = '/procesaentregadirecta';\n\n myInitPayload = {\n headers: {\n 'Content-Type': 'application/json',\n Authorization: `${(await Auth.currentSession()).getAccessToken().getJwtToken()}`\n },\n queryStringParameters: {\n ID: 0,\n action: 'payload'\n }\n };\n }\n else if (Tipo === 'deliveryrequest') {\n pathPayload = '/procesasolenvio';\n\n myInitPayload = {\n headers: {\n 'Content-Type': 'application/json',\n Authorization: `${(await Auth.currentSession()).getAccessToken().getJwtToken()}`\n },\n queryStringParameters: {\n ID: 0,\n action: 'payload'\n }\n };\n }\n else if (Tipo === 'directreturn') {\n pathPayload = '/procesadevoluciondirecta';\n\n myInitPayload = {\n headers: {\n 'Content-Type': 'application/json',\n Authorization: `${(await Auth.currentSession()).getAccessToken().getJwtToken()}`\n },\n queryStringParameters: {\n ID: 0,\n action: 'payload'\n }\n };\n }\n else if (Tipo === 'returnrequest') {\n pathPayload = '/procesasoldevolucion';\n\n myInitPayload = {\n headers: {\n 'Content-Type': 'application/json',\n Authorization: `${(await Auth.currentSession()).getAccessToken().getJwtToken()}`\n },\n queryStringParameters: {\n ID: 0,\n action: 'payload'\n }\n };\n }\n else if (Tipo === 'salesordermod') {\n pathPayload = '/procesamodpedido';\n\n myInitPayload = {\n headers: {\n 'Content-Type': 'application/json',\n Authorization: `${(await Auth.currentSession()).getAccessToken().getJwtToken()}`\n },\n queryStringParameters: {\n ID: 0,\n action: 'payload'\n }\n };\n }\n else if (Tipo === 'customerpayment') {\n pathPayload = '/procesaanticiposaldo';\n\n myInitPayload = {\n headers: {\n 'Content-Type': 'application/json',\n Authorization: `${(await Auth.currentSession()).getAccessToken().getJwtToken()}`\n },\n queryStringParameters: {\n ID: 0,\n action: 'payload'\n }\n };\n }\n else if (Tipo === 'salesorder') {\n pathPayload = '/procesapedidos';\n\n myInitPayload = {\n headers: {\n 'Content-Type': 'application/json',\n Authorization: `${(await Auth.currentSession()).getAccessToken().getJwtToken()}`\n },\n queryStringParameters: {\n ID: 0,\n action: 'payload'\n }\n };\n }\n else if (Tipo === 'estimate') {\n pathPayload = '/procesacotizaciones';\n\n myInitPayload = {\n headers: {\n 'Content-Type': 'application/json',\n Authorization: `${(await Auth.currentSession()).getAccessToken().getJwtToken()}`\n },\n queryStringParameters: {\n ID: 0,\n action: 'payload'\n }\n };\n }\n else if (Tipo === 'inventorytransfer') {\n pathPayload = '/procesatransferencias';\n\n myInitPayload = {\n headers: {\n 'Content-Type': 'application/json',\n Authorization: `${(await Auth.currentSession()).getAccessToken().getJwtToken()}`\n },\n queryStringParameters: {\n ID: 0,\n action: 'payload'\n }\n };\n }\n else if (Tipo === 'shipmentrequest') {\n pathPayload = '/procesasolembarque';\n\n myInitPayload = {\n headers: {\n 'Content-Type': 'application/json',\n Authorization: `${(await Auth.currentSession()).getAccessToken().getJwtToken()}`\n },\n queryStringParameters: {\n ID: 0,\n action: 'payload'\n }\n };\n }\n else if (Tipo === 'transferorder') {\n pathPayload = '/procesasoltraspaso';\n\n myInitPayload = {\n headers: {\n 'Content-Type': 'application/json',\n Authorization: `${(await Auth.currentSession()).getAccessToken().getJwtToken()}`\n },\n queryStringParameters: {\n ID: 0,\n action: 'payload'\n }\n };\n }\n else if (Tipo === 'invtransferorder') {\n pathPayload = '/procesainvsoltraspaso';\n\n myInitPayload = {\n headers: {\n 'Content-Type': 'application/json',\n Authorization: `${(await Auth.currentSession()).getAccessToken().getJwtToken()}`\n },\n queryStringParameters: {\n ID: 0,\n action: 'payload'\n }\n };\n }\n else if (Tipo === 'warehousepositionwms') {\n pathPayload = '/procesaalmacenposicion';\n\n myInitPayload = {\n headers: {\n 'Content-Type': 'application/json',\n Authorization: `${(await Auth.currentSession()).getAccessToken().getJwtToken()}`\n },\n queryStringParameters: {\n ID: 0,\n action: 'payload',\n username: JSON.parse(JSON.stringify(await Auth.currentAuthenticatedUser())).username\n }\n };\n }\n\n if (Tipo === 'labelwms') {\n var payloadGet = [1234567890, 2, 3, 4, 5, 6, 7, 8, 9, 10]\n }\n else {\n if (Tipo !== 'invoice')\n var payloadGet = await API.get(apiNamePayload, pathPayload, myInitPayload);\n else\n var payloadGet = await API.post(apiNamePayload, pathPayload, myInitPayload);\n }\n\n\n const url = window.URL.createObjectURL(\n new Blob([JSON.stringify(payloadGet)]),\n );\n\n const link = document.createElement('a');\n\n link.href = url;\n\n link.setAttribute('download', 'JSON.json');\n\n // Append to html link element page\n document.body.appendChild(link);\n\n // Start download\n link.click();\n\n // Clean up and remove the link\n link.parentNode.removeChild(link);\n }\n\n function downloadJSON(data) {\n return (\n <button class=\"bg-pink-500 hover:bg-pink-700 text-white py-1 px-3 rounded\" onClick={() => downloadJSONButton(data.data.Tipo)}><FontAwesomeIcon icon={faDownload} /> Descargar JSON</button>\n )\n }\n\n useEffect(() => {\n async function initialize() {\n //Obtenemos los templates\n var getTemplateList = await getTemplateRecords();\n\n setTemplateRecords(getTemplateList);\n }\n\n initialize();\n // eslint-disable-next-line\n }, []);\n\n return (\n <div>\n <div class=\"bg-gray-200 m-2\">\n <h1 class=\"font-sans inline-block text-xl font-bold text-gray-700 leading-8 align-top mb-1\"><FontAwesomeIcon icon={faList} size=\"lg\" /> PDF Templates</h1>\n </div>\n <div class=\"bg-gray-200 m-2\">\n <div class=\"bg-white p-3 shadow-xl\">\n <DataGrid\n height={800}\n id=\"gridContainer\"\n columnsAutoWidth={true}\n dataSource={templateRecords}\n allowColumnReordering={true}\n allowColumnResizing={true}\n columnResizingMode={\"widget\"}\n showBorders={true}\n rowAlternationEnabled={true}\n showRowLines={true}\n showColumnLines={true}\n keyExpr=\"Tipo\"\n >\n <Scrolling rowRenderingMode='virtual'></Scrolling>\n <Paging defaultPageSize={10} />\n <Pager\n visible={true}\n allowedPageSizes={allowedPageSizes}\n displayMode='compact'\n showPageSizeSelector={true}\n showInfo={true}\n showNavigationButtons={true}\n />\n <FilterRow visible={true} />\n <FilterPanel visible={true} />\n <FilterBuilderPopup position={filterBuilderPopupPosition} />\n\n <HeaderFilter visible={true} />\n\n <GroupPanel visible={true} />\n <SearchPanel visible={true} />\n\n <StateStoring enabled={true} type=\"localStorage\" storageKey=\"gridContainerPDFTemplate\" />\n\n <Column caption=\"\" alignment=\"center\" width={100} cellRender={editTemplate} />\n\n <Column dataField=\"Tipo\" dataType=\"string\" width={300} />\n\n <Column caption=\"\" alignment=\"center\" width={200} cellRender={downloadJSON} />\n </DataGrid>\n </div>\n </div>\n </div>\n )\n};","import React, { useState, useEffect, useRef } from 'react';\n\nimport { Auth, API, Storage } from 'aws-amplify';\n\n// Ruteador\nimport { Route, Link, useHistory } from \"react-router-dom\";\n\n\nimport { Stimulsoft } from 'stimulsoft-reports-js/Scripts/stimulsoft.viewer';\nimport 'stimulsoft-reports-js/Css/stimulsoft.viewer.office2013.whiteblue.css';\nimport './App.css';\n\nexport default function PdfRender(props) {\n const [viewer, setViewer] = useState();\n const [report, setReport] = useState();\n\n useEffect(() => {\n async function initialize() {\n //Obtenemos los parámetros\n try {\n var type = window.location.href.split('?')[1].split('&')[0].split('=')[1];\n var id = window.location.href.split('?')[1].split('&')[1].split('=')[1];\n\n // Primero obtenemos el template\n let apiNameTemplate = 'AdminSC';\n let pathTemplate = '/procesapdftemplate';\n\n let myInitTemplate = {\n headers: {\n 'Content-Type': 'application/json',\n Authorization: `${(await Auth.currentSession()).getAccessToken().getJwtToken()}`\n },\n queryStringParameters: {\n Tipo: type,\n action: 'payload',\n username: JSON.parse(JSON.stringify(await Auth.currentAuthenticatedUser())).username\n }\n }\n\n var templateGet = await API.get(apiNameTemplate, pathTemplate, myInitTemplate);\n\n var plantilla = templateGet.header.Plantilla;\n\n // Despues obtenemos el payload\n let apiNamePayload = 'AdminSC';\n let pathPayload;\n let myInitPayload;\n\n if (type === 'vacation') {\n pathPayload = '/procesavacaciones';\n\n myInitPayload = {\n headers: {\n 'Content-Type': 'application/json',\n Authorization: `${(await Auth.currentSession()).getAccessToken().getJwtToken()}`\n },\n queryStringParameters: {\n ID: id,\n action: 'payload',\n username: JSON.parse(JSON.stringify(await Auth.currentAuthenticatedUser())).username\n }\n }\n }\n else if (type === 'checklistaud') {\n pathPayload = '/procesachecklist';\n\n myInitPayload = {\n headers: {\n 'Content-Type': 'application/json',\n Authorization: `${(await Auth.currentSession()).getAccessToken().getJwtToken()}`\n },\n queryStringParameters: {\n personal: '',\n ID: id,\n action: 'payload',\n mov: 'Check List Aud',\n username: JSON.parse(JSON.stringify(await Auth.currentAuthenticatedUser())).username\n }\n }\n }\n else if (type === 'checklist') {\n pathPayload = '/procesachecklist';\n\n myInitPayload = {\n headers: {\n 'Content-Type': 'application/json',\n Authorization: `${(await Auth.currentSession()).getAccessToken().getJwtToken()}`\n },\n queryStringParameters: {\n personal: '',\n ID: id,\n action: 'payload',\n mov: 'Check List',\n username: JSON.parse(JSON.stringify(await Auth.currentAuthenticatedUser())).username\n }\n }\n }\n else if (type === 'checklistveh') {\n pathPayload = '/procesachecklist';\n\n myInitPayload = {\n headers: {\n 'Content-Type': 'application/json',\n Authorization: `${(await Auth.currentSession()).getAccessToken().getJwtToken()}`\n },\n queryStringParameters: {\n personal: '',\n ID: id,\n action: 'payload',\n mov: 'Check List Veh',\n username: JSON.parse(JSON.stringify(await Auth.currentAuthenticatedUser())).username\n }\n }\n }\n else if (type === 'invoice') {\n id = id.split('%2C');\n\n var invoices = [];\n\n for (var idIndex in id) {\n if (id[idIndex])\n invoices.push({ ID: id[idIndex] });\n }\n\n pathPayload = '/procesafacturaslote';\n\n myInitPayload = {\n headers: {\n 'Content-Type': 'application/json',\n Authorization: `${(await Auth.currentSession()).getAccessToken().getJwtToken()}`\n },\n body: {\n action: 'payload',\n invoices: invoices,\n username: JSON.parse(JSON.stringify(await Auth.currentAuthenticatedUser())).username\n }\n }\n }\n else if (type === 'directdelivery') {\n pathPayload = '/procesaentregadirecta';\n\n myInitPayload = {\n headers: {\n 'Content-Type': 'application/json',\n Authorization: `${(await Auth.currentSession()).getAccessToken().getJwtToken()}`\n },\n queryStringParameters: {\n ID: id,\n action: 'payload',\n username: JSON.parse(JSON.stringify(await Auth.currentAuthenticatedUser())).username\n }\n };\n }\n else if (type === 'deliveryrequest') {\n pathPayload = '/procesasolenvio';\n\n myInitPayload = {\n headers: {\n 'Content-Type': 'application/json',\n Authorization: `${(await Auth.currentSession()).getAccessToken().getJwtToken()}`\n },\n queryStringParameters: {\n ID: id,\n action: 'payload',\n username: JSON.parse(JSON.stringify(await Auth.currentAuthenticatedUser())).username\n }\n };\n }\n else if (type === 'directreturn') {\n pathPayload = '/procesadevoluciondirecta';\n\n myInitPayload = {\n headers: {\n 'Content-Type': 'application/json',\n Authorization: `${(await Auth.currentSession()).getAccessToken().getJwtToken()}`\n },\n queryStringParameters: {\n ID: id,\n action: 'payload',\n username: JSON.parse(JSON.stringify(await Auth.currentAuthenticatedUser())).username\n }\n };\n }\n else if (type === 'returnrequest') {\n pathPayload = '/procesasoldevolucion';\n\n myInitPayload = {\n headers: {\n 'Content-Type': 'application/json',\n Authorization: `${(await Auth.currentSession()).getAccessToken().getJwtToken()}`\n },\n queryStringParameters: {\n ID: id,\n action: 'payload',\n username: JSON.parse(JSON.stringify(await Auth.currentAuthenticatedUser())).username\n }\n };\n }\n else if (type === 'salesordermod') {\n pathPayload = '/procesamodpedido';\n\n myInitPayload = {\n headers: {\n 'Content-Type': 'application/json',\n Authorization: `${(await Auth.currentSession()).getAccessToken().getJwtToken()}`\n },\n queryStringParameters: {\n ID: id,\n action: 'payload',\n username: JSON.parse(JSON.stringify(await Auth.currentAuthenticatedUser())).username\n }\n };\n }\n else if (type === 'customerpayment') {\n pathPayload = '/procesaanticiposaldo';\n\n myInitPayload = {\n headers: {\n 'Content-Type': 'application/json',\n Authorization: `${(await Auth.currentSession()).getAccessToken().getJwtToken()}`\n },\n queryStringParameters: {\n ID: id,\n action: 'payload',\n username: JSON.parse(JSON.stringify(await Auth.currentAuthenticatedUser())).username\n }\n };\n }\n else if (type === 'salesorder') {\n pathPayload = '/procesapedidos';\n\n myInitPayload = {\n headers: {\n 'Content-Type': 'application/json',\n Authorization: `${(await Auth.currentSession()).getAccessToken().getJwtToken()}`\n },\n queryStringParameters: {\n ID: id,\n action: 'payload',\n username: JSON.parse(JSON.stringify(await Auth.currentAuthenticatedUser())).username\n }\n };\n }\n else if (type === 'estimate') {\n pathPayload = '/procesacotizaciones';\n\n myInitPayload = {\n headers: {\n 'Content-Type': 'application/json',\n Authorization: `${(await Auth.currentSession()).getAccessToken().getJwtToken()}`\n },\n queryStringParameters: {\n ID: id,\n action: 'payload',\n username: JSON.parse(JSON.stringify(await Auth.currentAuthenticatedUser())).username\n }\n };\n }\n else if (type === 'inventorytransfer') {\n pathPayload = '/procesatransferencias';\n\n myInitPayload = {\n headers: {\n 'Content-Type': 'application/json',\n Authorization: `${(await Auth.currentSession()).getAccessToken().getJwtToken()}`\n },\n queryStringParameters: {\n ID: id,\n action: 'payload',\n username: JSON.parse(JSON.stringify(await Auth.currentAuthenticatedUser())).username\n }\n };\n }\n else if (type === 'shipmentrequest') {\n pathPayload = '/procesasolembarque';\n\n myInitPayload = {\n headers: {\n 'Content-Type': 'application/json',\n Authorization: `${(await Auth.currentSession()).getAccessToken().getJwtToken()}`\n },\n queryStringParameters: {\n ID: id,\n action: 'payload',\n username: JSON.parse(JSON.stringify(await Auth.currentAuthenticatedUser())).username\n }\n };\n }\n else if (type === 'transferorder') {\n pathPayload = '/procesasoltraspaso';\n\n myInitPayload = {\n headers: {\n 'Content-Type': 'application/json',\n Authorization: `${(await Auth.currentSession()).getAccessToken().getJwtToken()}`\n },\n queryStringParameters: {\n ID: id,\n action: 'payload',\n username: JSON.parse(JSON.stringify(await Auth.currentAuthenticatedUser())).username\n }\n };\n }\n else if (type === 'invtransferorder') {\n pathPayload = '/procesainvsoltraspaso';\n\n myInitPayload = {\n headers: {\n 'Content-Type': 'application/json',\n Authorization: `${(await Auth.currentSession()).getAccessToken().getJwtToken()}`\n },\n queryStringParameters: {\n ID: id,\n action: 'payload',\n username: JSON.parse(JSON.stringify(await Auth.currentAuthenticatedUser())).username\n }\n };\n }\n else if (type === 'warehousepositionwms') {\n pathPayload = '/procesaalmacenposicion';\n\n myInitPayload = {\n headers: {\n 'Content-Type': 'application/json',\n Authorization: `${(await Auth.currentSession()).getAccessToken().getJwtToken()}`\n },\n queryStringParameters: {\n Almacen: id.split('__@@__')[0],\n Posicion: id.split('__@@__')[1],\n action: 'payload',\n username: JSON.parse(JSON.stringify(await Auth.currentAuthenticatedUser())).username\n }\n };\n }\n\n if (type === 'labelwms') {\n id = id.split('%2C');\n\n var payloadGet = [];\n\n for (var idIndex in id) {\n if (id[idIndex])\n payloadGet.push(id[idIndex]);\n }\n }\n else {\n if (type !== 'invoice')\n var payloadGet = await API.get(apiNamePayload, pathPayload, myInitPayload);\n else\n var payloadGet = await API.post(apiNamePayload, pathPayload, myInitPayload);\n }\n\n // Obtenemos la licencia\n let apiNameLicense = 'AdminSC';\n let pathLicense = '/getStimulsoftLicense';\n\n let myInitLicense = {\n headers: {\n 'Content-Type': 'application/json',\n Authorization: `${(await Auth.currentSession()).getAccessToken().getJwtToken()}`\n },\n queryStringParameters: {\n }\n }\n \n var stiLicense = await API.post(apiNameLicense, pathLicense, myInitLicense);\n\n Stimulsoft.Base.StiLicense.key = stiLicense[0].Value\n\n // Visualizador del reporte\n var tmpOptions = new Stimulsoft.Viewer.StiViewerOptions();\n tmpOptions.appearance.scrollbarsMode = true;\n tmpOptions.appearance.fullScreenMode = true;\n tmpOptions.toolbar.showOpenButton = false;\n tmpOptions.toolbar.showSaveButton = false;\n\n var tmpViewer = new Stimulsoft.Viewer.StiViewer(tmpOptions, 'StiViewer', false);\n var tmpReport = new Stimulsoft.Report.StiReport();\n\n tmpReport.load(plantilla);\n\n // Create new DataSet object\n var dataSet = new Stimulsoft.System.Data.DataSet(\"JSON\");\n\n // Load JSON data file from specified URL to the DataSet object\n dataSet.readJson(payloadGet);\n\n // Remove all connections from the report template\n tmpReport.dictionary.databases.clear();\n\n // Register DataSet object\n tmpReport.regData(\"JSON\", \"JSON\", dataSet);\n\n tmpViewer.report = tmpReport;\n\n tmpViewer.renderHtml('viewer');\n }\n catch (e) {\n }\n }\n\n initialize();\n\n // eslint-disable-next-line\n }, []);\n\n return (\n <div id=\"viewer\" className=\"App\">\n </div>\n );\n}","import React, { useState, useEffect, useRef } from 'react';\n\nimport { Auth, API, Storage } from 'aws-amplify';\n\nimport { Stimulsoft } from 'stimulsoft-reports-js/Scripts/stimulsoft.blockly.editor';\nimport 'stimulsoft-reports-js/Css/stimulsoft.designer.office2013.whiteblue.css';\nimport 'stimulsoft-reports-js/Css/stimulsoft.viewer.office2013.whiteblue.css';\nimport './App.css';\n\nexport default function PdfEditor(props) {\n useEffect(() => {\n async function initialize() {\n //Obtenemos los parámetros\n try {\n var type = window.location.href.split('?')[1].split('&')[0].split('=')[1].toLowerCase();\n\n // Primero obtenemos el template\n let apiNameTemplate = 'AdminSC';\n let pathTemplate = '/procesapdftemplate';\n\n let myInitTemplate = {\n headers: {\n 'Content-Type': 'application/json',\n Authorization: `${(await Auth.currentSession()).getAccessToken().getJwtToken()}`\n },\n queryStringParameters: {\n Tipo: type,\n action: 'payload',\n username: JSON.parse(JSON.stringify(await Auth.currentAuthenticatedUser())).username\n }\n }\n\n var templateGet = await API.get(apiNameTemplate, pathTemplate, myInitTemplate);\n\n var plantilla = templateGet.header.Plantilla;\n\n // Obtenemos la licencia\n let apiNameLicense = 'AdminSC';\n let pathLicense = '/getStimulsoftLicense';\n\n let myInitLicense = {\n headers: {\n 'Content-Type': 'application/json',\n Authorization: `${(await Auth.currentSession()).getAccessToken().getJwtToken()}`\n },\n queryStringParameters: {\n }\n }\n \n var stiLicense = await API.post(apiNameLicense, pathLicense, myInitLicense);\n\n Stimulsoft.Base.StiLicense.key = stiLicense[0].Value\n\n var options = new Stimulsoft.Designer.StiDesignerOptions();\n options.appearance.fullScreenMode = true;\n options.appearance.showSaveDialog = false;\n\n options.toolbar.showFileMenuNew = false;\n options.toolbar.showFileMenuNewReport = false;\n options.toolbar.showFileMenuOpen = false;\n options.toolbar.showFileMenuSaveAs = false;\n options.toolbar.showAboutButton = false;\n options.toolbar.showFileMenu = false;\n options.toolbar.showFileMenuAbout = false;\n options.toolbar.showFileMenuClose = false;\n options.toolbar.showFileMenuExit = false;\n options.toolbar.showFileMenuInfo = false;\n options.toolbar.showFileMenuNew = false;\n options.toolbar.showFileMenuNewDashboard = false;\n options.toolbar.showFileMenuNewReport = false;\n options.toolbar.showFileMenuOpen = false;\n options.toolbar.showSaveButton = true;\n\n var designer = new Stimulsoft.Designer.StiDesigner(options, 'StiDesigner', false);\n var report = new Stimulsoft.Report.StiReport();\n\n report.load(plantilla);\n\n designer.report = report;\n\n designer.renderHtml('designer');\n\n // Assign the onSaveReport event function\n designer.onSaveReport = async function (e) {\n var jsonStr = e.report.saveToJsonString();\n\n let apiName = 'AdminSC';\n let path = '/procesapdftemplate';\n\n let myInit = {\n headers: {\n 'Content-Type': 'application/json',\n Authorization: `${(await Auth.currentSession()).getAccessToken().getJwtToken()}`\n },\n body: {\n Tipo: type,\n payload: {\n header: {\n Tipo: type,\n Plantilla: jsonStr\n }\n },\n action: 'saveChanges',\n username: JSON.parse(JSON.stringify(await Auth.currentAuthenticatedUser())).username\n }\n };\n\n var payloadPost = await API.post(apiName, path, myInit);\n\n if (payloadPost.ok === 'true') {\n alert('Se actualizó el template con éxito');\n }\n else if (payloadPost.ok === 'false')\n alert(payloadPost.message);\n }\n }\n catch (e) {\n }\n }\n\n initialize();\n\n // eslint-disable-next-line\n }, []);\n\n return (\n <div id=\"designer\" className=\"App\">\n\n </div>\n );\n};\n","import React, { useState, useEffect, useRef } from 'react';\n\n// LoadPanel\nimport { LoadPanel } from 'devextreme-react/load-panel';\n\n// Toast\nimport { Toast } from 'devextreme-react/toast';\n\n// Iconos\nimport { FontAwesomeIcon } from \"@fortawesome/react-fontawesome\";\nimport { faSave } from \"@fortawesome/pro-solid-svg-icons\";\nimport { faKey } from \"@fortawesome/pro-duotone-svg-icons\";\n\nimport { Auth, API, Storage } from 'aws-amplify';\n\n// Ruteador\nimport { Route, Link, useHistory } from \"react-router-dom\";\n\n//Form\nimport Form, { GroupItem, Label, Item } from 'devextreme-react/form';\n\n//Validator\nimport { EmailRule, CustomRule, RequiredRule } from 'devextreme-react/validator';\n\nexport default function PasswordChange(props) {\n useEffect(() => {\n async function initialize() {\n var checkLoggedIn = await Auth.currentAuthenticatedUser();\n\n var newState = {\n userName: checkLoggedIn.username,\n oldPassword: '',\n newPassword: '',\n confirmPassword: ''\n };\n\n setPasswordPayload(newState);\n }\n\n initialize();\n // eslint-disable-next-line\n }, []);\n\n const history = useHistory();\n\n const [passwordPayload, setPasswordPayload] = useState({\n userName: '',\n oldPassword: '',\n newPassword: '',\n confirmPassword: ''\n });\n\n var userNameEditorOptions = { width: '40%', readOnly: true };\n var passwordEditorOptions = { width: '40%', disabled: false, mode: 'password' };\n\n const [visibleLoadPanel, setVisibleLoadPanel] = useState(false);\n\n const [visibleToast, setVisibleToast] = useState(false);\n const [messageToast, setMessageToast] = useState('');\n const [typeToast, setTypeToast] = useState('success');\n\n //Ref para el form\n const [formPasswordRef, setFormPasswordRef] = useState(React.createRef());\n\n async function saveButton() {\n if (formPasswordRef.current) {\n var formSignUp = formPasswordRef.current.instance();\n var isValid = formSignUp.validate();\n\n if (!isValid.isValid) {\n setVisibleToast(true);\n setMessageToast(isValid.brokenRules[0].message);\n setTypeToast('error');\n return;\n }\n }\n\n var userName = passwordPayload.userName;\n var oldPassword = passwordPayload.oldPassword;\n var newPassword = passwordPayload.newPassword;\n var confirmPassword = passwordPayload.confirmPassword;\n\n if (!newPassword)\n newPassword = '';\n if (!confirmPassword)\n confirmPassword = '';\n\n if (!userName) {\n setVisibleToast(true);\n setMessageToast('Usuario incorrecto');\n setTypeToast('error')\n\n return;\n }\n if (!oldPassword) {\n setVisibleToast(true);\n setMessageToast('Contraseña actual incorrecta');\n setTypeToast('error')\n\n return;\n }\n if (!oldPassword) {\n setVisibleToast(true);\n setMessageToast('Contraseña actual incorrecta');\n setTypeToast('error')\n\n return;\n }\n\n if ((newPassword !== confirmPassword) || newPassword === '' || confirmPassword === '') {\n setVisibleToast(true);\n setMessageToast('Las contraseñas no coinciden');\n setTypeToast('error')\n\n return;\n }\n\n setVisibleLoadPanel(true);\n\n var user = await Auth.currentAuthenticatedUser();\n\n try {\n var result = await Auth.changePassword(user, oldPassword, newPassword);\n\n setVisibleToast(true);\n setMessageToast('Se cambió la contraseña con éxito');\n setTypeToast('success')\n\n setVisibleLoadPanel(false);\n }\n catch (e) {\n setVisibleLoadPanel(false);\n\n if (e.toString().indexOf('LimitExceededException') >= 0) {\n setVisibleToast(true);\n setMessageToast('Ha excedido los intentos. Intente más tarde');\n setTypeToast('error')\n }\n else if (e.toString().indexOf('NotAuthorizedException') >= 0) {\n setVisibleToast(true);\n setMessageToast('Usuario o contraseña incorrectos');\n setTypeToast('error')\n }\n else if (e.toString().indexOf('InvalidPasswordException: Password did not conform with policy: Password not long enough') >= 0) {\n setVisibleToast(true);\n setMessageToast('La contraseña nueva no cumple con la política. Longitud Incorrecta');\n setTypeToast('error');\n }\n else {\n setVisibleToast(true);\n setMessageToast(e);\n setTypeToast('error');\n }\n }\n }\n\n function onHidingToast() {\n setVisibleToast(false);\n }\n\n return (\n <div>\n <div class=\"bg-gray-200 m-2\">\n <h1 class=\"font-sans inline-block text-xl font-bold text-gray-700 leading-8 align-top mb-1\"><FontAwesomeIcon icon={faKey} size=\"xl\" /> Cambio de contraseña</h1>\n </div>\n <button onClick={saveButton} type=\"submit\" class=\"ml-2 mb-4 bg-blue-500 hover:bg-blue-700 text-white font-bold py-2 px-4 rounded\">\n <FontAwesomeIcon icon={faSave} /> Guardar Cambios\n </button>\n <div className=\"m-2 bg-white p-4 shadow-xl\">\n <LoadPanel\n shadingColor=\"rgba(0,0,0,0.4)\"\n visible={visibleLoadPanel}\n showIndicator={true}\n message=\"Por favor espere...\"\n shading={true}\n showPane={true}\n hideOnOutsideClick={false}\n />\n\n <Toast\n visible={visibleToast}\n message={messageToast}\n type={typeToast}\n onHiding={onHidingToast}\n displayTime={5000}\n width={'auto'}\n position={{\n my: 'top center',\n at: 'top center',\n of: window,\n offset: '0 130'\n }}\n />\n <Form\n id=\"formPassword\"\n labelMode={'outside'}\n formData={passwordPayload}\n disabled={false}\n showColonAfterLabel={false}\n labelLocation={'top'}\n colCount={1}\n ref={formPasswordRef}\n >\n <Item cssClass=\"boldText\" dataField=\"userName\" editorOptions={userNameEditorOptions}>\n <Label text={\"Usuario\"} />\n <RequiredRule message=\"Usuario es requerido\" />\n </Item>\n <Item dataField=\"oldPassword\" editorOptions={passwordEditorOptions}>\n <Label text={\"Contraseña Actual\"} />\n <RequiredRule message=\"Contraseña Actual es requerida\" />\n </Item>\n <Item dataField=\"newPassword\" editorOptions={passwordEditorOptions}>\n <Label text={\"Nueva Contraseña\"} />\n <RequiredRule message=\"Nueva Contraseña es requerida\" />\n </Item>\n <Item dataField=\"confirmPassword\" editorOptions={passwordEditorOptions}>\n <Label text={\"Confirmar Contraseña\"} />\n <RequiredRule message=\"Confirmar Contraseña es requerida\" />\n </Item>\n </Form>\n </div>\n </div>\n )\n};","import React, { useState, useEffect, useRef } from 'react';\n\n// LoadPanel\nimport { LoadPanel } from 'devextreme-react/load-panel';\n\n// Toast\nimport { Toast } from 'devextreme-react/toast';\n\n// Grid\nimport DataGrid, {\n Column, FilterRow, HeaderFilter, FilterPanel, FilterBuilderPopup,\n GroupPanel, Grouping, SearchPanel, Sorting, Editing, Lookup, Toolbar, Item, RequiredRule,\n Scrolling, Pager, Paging, Summary, TotalItem, StateStoring, ColumnChooser, Format, Selection,\n GroupItem, Export, ColumnChooserSearch, ColumnChooserSelection\n} from 'devextreme-react/data-grid';\n\n//CheckBox\nimport CheckBox from 'devextreme-react/check-box';\n\nimport SelectBox from 'devextreme-react/select-box';\n\nimport { Auth, API, Storage } from 'aws-amplify';\n\n// Ruteador\nimport { Route, Link, useHistory } from \"react-router-dom\";\n\n// Iconos\nimport { FontAwesomeIcon } from \"@fortawesome/react-fontawesome\";\nimport { faList } from \"@fortawesome/pro-duotone-svg-icons\";\nimport { faPrint } from \"@fortawesome/pro-solid-svg-icons\";\nimport { faPlay } from \"@fortawesome/pro-solid-svg-icons\";\nimport { faArrowsRotate } from \"@fortawesome/pro-solid-svg-icons\";\n\nimport 'devextreme/data/odata/store';\nimport CustomStore from 'devextreme/data/custom_store';\n\nimport Lambda from 'aws-sdk/clients/lambda';\n\nimport '../ListStyle.css';\n\nimport dxDateBox from \"devextreme/ui/date_box\";\n\nimport dxNumberBox from \"devextreme/ui/number_box\";\n\nimport { Workbook } from 'exceljs';\nimport { saveAs } from 'file-saver';\nimport { exportDataGrid } from 'devextreme/excel_exporter'\n\ndxDateBox.defaultOptions({\n options: {\n dateSerializationFormat: \"yyyy-MM-dd\"\n }\n});\n\ndxNumberBox.defaultOptions({\n options: {\n step: 0\n }\n});\n\nfunction isNotEmpty(value) {\n return value !== undefined && value !== null && value !== '';\n}\n\nexport default function ProcessInvoice(props) {\n const history = useHistory();\n\n //Controles para expander los grupos del grid de checklist\n const [autoExpandAllChecklist, setAutoExpandAllChecklist] = useState(true);\n\n const [autoExpandAll, setAutoExpandAll] = useState(true);\n\n //Ref para el grid Facturas\n const [gridFacturasRef, setGridFacturasRef] = useState(React.createRef());\n\n const [visibleLoadPanel, setVisibleLoadPanel] = useState(false);\n\n const filterBuilderPopupPosition = {\n of: window,\n at: 'top',\n my: 'top',\n offset: { y: 10 },\n };\n\n const [visibleToast, setVisibleToast] = useState(false);\n const [messageToast, setMessageToast] = useState('');\n const [typeToast, setTypeToast] = useState('success');\n\n const allowedPageSizes = [5, 10, 15, 20, 'all'];\n\n const exportFormats = ['xlsx'];\n\n function getOrderDay(rowData) {\n return (new Date(rowData.OrderDate)).getDay();\n }\n\n const filterBuilder = {\n customOperations: [{\n name: 'weekends',\n caption: 'Weekends',\n dataTypes: ['date'],\n icon: 'check',\n hasValue: false,\n calculateFilterExpression: () => [[getOrderDay, '=', 0], 'or', [getOrderDay, '=', 6]],\n }],\n allowHierarchicalFields: true,\n };\n\n const filterValue = [['Estatus', '=', 'Sin Afectar']];\n\n async function getInvoiceRecords(sqlFilter) {\n try {\n let apiName = 'AdminSC';\n let path = '/procesafacturaslote';\n\n let myInit = {\n headers: {\n 'Content-Type': 'application/json',\n Authorization: `${(await Auth.currentSession()).getAccessToken().getJwtToken()}`\n },\n queryStringParameters: {\n action: 'list',\n sqlFilter: sqlFilter,\n nivel: 'ProcesarFactura',\n usuario: props.usuario,\n username: JSON.parse(JSON.stringify(await Auth.currentAuthenticatedUser())).username\n }\n }\n\n var invoicesGet = await API.get(apiName, path, myInit);\n }\n catch (e) {\n if (e === 'No current user') {\n history.push('/');\n\n window.location.reload();\n }\n }\n\n return invoicesGet;\n }\n\n const store = new CustomStore({\n key: 'ID',\n load(loadOptions) {\n let sqlFilter = '(';\n [\n 'filter'\n ].forEach((i) => {\n if (i in loadOptions && isNotEmpty(loadOptions[i])) {\n var filters = loadOptions[i];\n\n var filtersLength = filters.length;\n\n for (var i = 0; i <= filtersLength; i++) {\n var singleFilter = filters[i];\n var singleFilterType = typeof singleFilter;\n var singleFilterIsArray = Array.isArray(singleFilter);\n var singleFilterIsDate = singleFilter instanceof Date;\n\n if (singleFilter === 'NULL') {\n singleFilter = '0';\n }\n\n if (singleFilterType.toString() === 'object' && singleFilterIsArray) {\n sqlFilter += '(';\n\n var subFiltersLength = singleFilter.length;\n\n for (var i2 = 0; i2 <= subFiltersLength; i2++) {\n var singleSubFilter = singleFilter[i2];\n var singleSubFilterType = typeof singleSubFilter;\n var singleSubFilterIsArray = Array.isArray(singleSubFilter);\n var singleSubFilterIsDate = singleSubFilter instanceof Date\n\n if (singleSubFilter === 'NULL') {\n singleSubFilter = '0';\n }\n\n if (singleSubFilterType.toString() === 'object' && singleSubFilterIsArray) {\n sqlFilter += '(';\n\n var subSubFiltersLength = singleSubFilter.length;\n\n for (var i3 = 0; i3 <= subSubFiltersLength; i3++) {\n var singleSubSubFilter = singleSubFilter[i3];\n var singleSubSubFilterType = typeof singleSubSubFilter;\n var singleSubSubFilterIsArray = Array.isArray(singleSubSubFilter);\n var singleSubSubFilterIsDate = singleSubSubFilter instanceof Date\n\n if (singleSubSubFilter === 'NULL') {\n singleSubSubFilter = '0';\n }\n\n if (singleSubSubFilterType.toString() === 'object' && singleSubSubFilterIsArray) {\n sqlFilter += '(';\n\n var subSubSubFiltersLength = singleSubSubFilter.length;\n\n for (var i4 = 0; i4 <= subSubSubFiltersLength; i4++) {\n var singleSubSubSubFilter = singleSubSubFilter[i4];\n var singleSubSubSubFilterType = typeof singleSubSubSubFilter;\n var singleSubSubSubFilterIsArray = Array.isArray(singleSubSubSubFilter);\n var singleSubSubSubFilterIsDate = singleSubSubSubFilter instanceof Date\n\n if (singleSubSubSubFilter === 'NULL') {\n singleSubSubSubFilter = '0';\n }\n\n if (singleSubSubSubFilterType.toString() === 'object' && singleSubSubSubFilterIsArray) {\n sqlFilter += '(';\n\n var subSubSubSubFiltersLength = singleSubSubSubFilter.length;\n\n for (var i5 = 0; i5 <= subSubSubSubFiltersLength; i5++) {\n var singleSubSubSubSubFilter = singleSubSubSubFilter[i5];\n var singleSubSubSubSubFilterType = typeof singleSubSubSubSubFilter;\n var singleSubSubSubSubFilterIsArray = Array.isArray(singleSubSubSubSubFilter);\n var singleSubSubSubSubFilterIsDate = singleSubSubSubSubFilter instanceof Date\n\n if (singleSubSubSubSubFilter === 'NULL') {\n singleSubSubSubSubFilter = '0';\n }\n\n if (singleSubSubSubSubFilterType.toString() === 'string') {\n if (singleSubSubSubSubFilter === 'contains') {\n filters[i][i2][i3][i4][i5] = 'LIKE';\n singleSubSubSubSubFilter = 'LIKE';\n\n filters[i][i2][i3][i4][i5 + 1] = '\\'%' + filters[i][i2][i3][i4][i5 + 1] + '%\\'';\n }\n else if (singleSubSubSubSubFilter === 'notcontains') {\n filters[i][i2][i3][i4][i5] = 'NOT LIKE';\n singleSubSubSubSubFilter = 'NOT LIKE';\n\n filters[i][i2][i3][i4][i5 + 1] = '\\'%' + filters[i][i2][i3][i4][i5 + 1] + '%\\'';\n }\n else if (singleSubSubSubSubFilter === 'startswith') {\n filters[i][i2][i3][i4][i5] = 'LIKE';\n singleSubSubSubSubFilter = 'LIKE';\n\n filters[i][i2][i3][i4][i5 + 1] = '\\'' + filters[i][i2][i3][i4][i5 + 1] + '%\\'';\n }\n else if (singleSubSubSubSubFilter === 'endswith') {\n filters[i][i2][i3][i4][i5] = 'LIKE';\n singleSubSubSubSubFilter = 'LIKE';\n\n filters[i][i2][i3][i4][i5 + 1] = '\\'%' + filters[i][i2][i3][i4][i5 + 1] + '\\'';\n }\n else if (singleSubSubSubSubFilter === '=' || singleSubSubSubSubFilter === '<>' || singleSubSubSubSubFilter === '>' || singleSubSubSubSubFilter === '>=' || singleSubSubSubSubFilter === '<' || singleSubSubSubSubFilter === '<=') {\n if (!filters[i][i2][i3][i4][i5 + 1])\n filters[i][i2][i3][i4][i5 + 1] = 'NULL';\n else if (typeof filters[i][i2][i3][i4][i5 + 1] === 'string') {\n filters[i][i2][i3][i4][i5 + 1] = '\\'' + filters[i][i2][i3][i4][i5 + 1] + '\\'';\n }\n }\n else if (singleSubSubSubSubFilter === '!') {\n filters[i][i2][i3][i4][i5] = 'NOT';\n singleSubSubSubSubFilter = 'NOT';\n }\n\n sqlFilter += ' ' + singleSubSubSubSubFilter + ' ';\n }\n else if (singleSubSubSubSubFilterType.toString() === 'object' && singleSubSubSubSubFilterIsDate) {\n sqlFilter += ' \\'' + singleSubSubSubSubFilter.toISOString().split('T')[0] + '\\' ';\n }\n else if (singleSubSubSubSubFilterType.toString() === 'number') {\n sqlFilter += ' ' + singleSubSubSubSubFilter.toString() + ' ';\n }\n else if (singleSubSubSubSubFilterType.toString() === 'boolean') {\n if (singleSubSubSubSubFilter.toString() === 'true')\n sqlFilter += '1 ';\n else if (singleSubSubSubSubFilter.toString() === 'false' || singleSubSubSubSubFilter === null || singleSubSubSubSubFilter === undefined)\n sqlFilter += '0 ';\n }\n }\n }\n else if (singleSubSubSubFilterType.toString() === 'string') {\n if (singleSubSubSubFilter === 'contains') {\n filters[i][i2][i3][i4] = 'LIKE';\n singleSubSubSubFilter = 'LIKE';\n\n filters[i][i2][i3][i4 + 1] = '\\'%' + filters[i][i2][i3][i4 + 1] + '%\\'';\n }\n else if (singleSubSubSubFilter === 'notcontains') {\n filters[i][i2][i3][i4] = 'NOT LIKE';\n singleSubSubSubFilter = 'NOT LIKE';\n\n filters[i][i2][i3][i4 + 1] = '\\'%' + filters[i][i2][i3][i4 + 1] + '%\\'';\n }\n else if (singleSubSubSubFilter === 'startswith') {\n filters[i][i2][i3][i4] = 'LIKE';\n singleSubSubSubFilter = 'LIKE';\n\n filters[i][i2][i3][i4 + 1] = '\\'' + filters[i][i2][i3][i4 + 1] + '%\\'';\n }\n else if (singleSubSubSubFilter === 'endswith') {\n filters[i][i2][i3][i4] = 'LIKE';\n singleSubSubSubFilter = 'LIKE';\n\n filters[i][i2][i3][i4 + 1] = '\\'%' + filters[i][i2][i3][i4 + 1] + '\\'';\n }\n else if (singleSubSubSubFilter === '=' || singleSubSubSubFilter === '<>' || singleSubSubSubFilter === '>' || singleSubSubSubFilter === '>=' || singleSubSubSubFilter === '<' || singleSubSubSubFilter === '<=') {\n if (!filters[i][i2][i3][i4 + 1])\n filters[i][i2][i3][i4 + 1] = 'NULL';\n else if (typeof filters[i][i2][i3][i4 + 1] === 'string') {\n filters[i][i2][i3][i4 + 1] = '\\'' + filters[i][i2][i3][i4 + 1] + '\\'';\n }\n }\n else if (singleSubSubSubFilter === '!') {\n filters[i][i2][i3][i4] = 'NOT';\n singleSubSubSubFilter = 'NOT';\n }\n\n sqlFilter += ' ' + singleSubSubSubFilter + ' ';\n }\n else if (singleSubSubSubFilterType.toString() === 'object' && singleSubSubSubFilterIsDate) {\n sqlFilter += ' \\'' + singleSubSubSubFilter.toISOString().split('T')[0] + '\\' ';\n }\n else if (singleSubSubSubFilterType.toString() === 'number') {\n sqlFilter += ' ' + singleSubSubSubFilter.toString() + ' ';\n }\n else if (singleSubSubSubFilterType.toString() === 'boolean') {\n if (singleSubSubSubFilter.toString() === 'true')\n sqlFilter += '1 ';\n else if (singleSubSubSubFilter.toString() === 'false' || singleSubSubSubFilter === null || singleSubSubSubFilter === undefined)\n sqlFilter += '0 ';\n }\n }\n\n sqlFilter += ')';\n }\n else if (singleSubSubFilterType.toString() === 'string') {\n if (singleSubSubFilter === 'contains') {\n filters[i][i2][i3] = 'LIKE';\n singleSubSubFilter = 'LIKE';\n\n filters[i][i2][i3 + 1] = '\\'%' + filters[i][i2][i3 + 1] + '%\\'';\n }\n else if (singleSubSubFilter === 'notcontains') {\n filters[i][i2][i3] = 'NOT LIKE';\n singleSubSubFilter = 'NOT LIKE';\n\n filters[i][i2][i3 + 1] = '\\'%' + filters[i][i2][i3 + 1] + '%\\'';\n }\n else if (singleSubSubFilter === 'startswith') {\n filters[i][i2][i3] = 'LIKE';\n singleSubSubFilter = 'LIKE';\n\n filters[i][i2][i3 + 1] = '\\'' + filters[i][i2][i3 + 1] + '%\\'';\n }\n else if (singleSubSubFilter === 'endswith') {\n filters[i][i2][i3] = 'LIKE';\n singleSubSubFilter = 'LIKE';\n\n filters[i][i2][i3 + 1] = '\\'%' + filters[i][i2][i3 + 1] + '\\'';\n }\n else if (singleSubSubFilter === '=' || singleSubSubFilter === '<>' || singleSubSubFilter === '>' || singleSubSubFilter === '>=' || singleSubSubFilter === '<' || singleSubSubFilter === '<=') {\n if (!filters[i][i2][i3 + 1])\n filters[i][i2][i3 + 1] = 'NULL';\n else if (typeof filters[i][i2][i3 + 1] === 'string') {\n filters[i][i2][i3 + 1] = '\\'' + filters[i][i2][i3 + 1] + '\\'';\n }\n }\n else if (singleSubSubFilter === '!') {\n filters[i][i2][i3] = 'NOT';\n singleSubSubFilter = 'NOT';\n }\n sqlFilter += ' ' + singleSubSubFilter + ' ';\n }\n else if (singleSubSubFilterType.toString() === 'object' && singleSubSubFilterIsDate) {\n sqlFilter += ' \\'' + singleSubSubFilter.toISOString().split('T')[0] + '\\' ';\n }\n else if (singleSubSubFilterType.toString() === 'number') {\n sqlFilter += ' ' + singleSubSubFilter.toString() + ' ';\n }\n else if (singleSubSubFilterType.toString() === 'boolean') {\n if (singleSubSubFilter.toString() === 'true')\n sqlFilter += '1 ';\n else if (singleSubSubFilter.toString() === 'false' || singleSubSubFilter === null || singleSubSubFilter === undefined)\n sqlFilter += '0 ';\n }\n }\n\n sqlFilter += ')';\n }\n else if (singleSubFilterType.toString() === 'string') {\n if (singleSubFilter === 'contains') {\n filters[i][i2] = 'LIKE';\n singleSubFilter = 'LIKE';\n\n filters[i][i2 + 1] = '\\'%' + filters[i][i2 + 1] + '%\\'';\n }\n else if (singleSubFilter === 'notcontains') {\n filters[i][i2] = 'NOT LIKE';\n singleSubFilter = 'NOT LIKE';\n\n filters[i][i2 + 1] = '\\'%' + filters[i][i2 + 1] + '%\\'';\n }\n else if (singleSubFilter === 'startswith') {\n filters[i][i2] = 'LIKE';\n singleSubFilter = 'LIKE';\n\n filters[i][i2 + 1] = '\\'' + filters[i][i2 + 1] + '%\\'';\n }\n else if (singleSubFilter === 'endswith') {\n filters[i][i2] = 'LIKE';\n singleSubFilter = 'LIKE';\n\n filters[i][i2 + 1] = '\\'%' + filters[i][i2 + 1] + '\\'';\n }\n else if (singleSubFilter === '=' || singleSubFilter === '<>' || singleSubFilter === '>' || singleSubFilter === '>=' || singleSubFilter === '<' || singleSubFilter === '<=') {\n if (!filters[i][i2 + 1])\n filters[i][i2 + 1] = 'NULL';\n else if (typeof filters[i][i2 + 1] === 'string') {\n filters[i][i2 + 1] = '\\'' + filters[i][i2 + 1] + '\\'';\n }\n }\n else if (singleSubFilter === '!') {\n filters[i][i2] = 'NOT';\n singleSubFilter = 'NOT';\n }\n sqlFilter += ' ' + singleSubFilter + ' ';\n }\n else if (singleSubFilterType.toString() === 'object' && singleSubFilterIsDate) {\n sqlFilter += ' \\'' + singleSubFilter.toISOString().split('T')[0] + '\\' ';\n }\n else if (singleSubFilterType.toString() === 'number') {\n sqlFilter += ' ' + singleSubFilter.toString() + ' ';\n }\n else if (singleSubFilterType.toString() === 'boolean') {\n if (singleSubFilter.toString() === 'true')\n sqlFilter += '1 ';\n else if (singleSubFilter.toString() === 'false' || singleSubFilter === null || singleSubFilter === undefined)\n sqlFilter += '0 ';\n }\n }\n\n sqlFilter += ')';\n }\n else if (singleFilterType.toString() === 'string') {\n if (singleFilter === 'contains') {\n filters[i] = 'LIKE';\n singleFilter = 'LIKE';\n\n filters[i + 1] = '\\'%' + filters[i + 1] + '%\\'';\n }\n else if (singleFilter === 'notcontains') {\n filters[i] = 'NOT LIKE';\n singleFilter = 'NOT LIKE';\n\n filters[i + 1] = '\\'%' + filters[i + 1] + '%\\'';\n }\n else if (singleFilter === 'startswith') {\n filters[i] = 'LIKE';\n singleFilter = 'LIKE';\n\n filters[i + 1] = '\\'' + filters[i + 1] + '%\\'';\n }\n else if (singleFilter === 'endswith') {\n filters[i] = 'LIKE';\n singleFilter = 'LIKE';\n\n filters[i + 1] = '\\'%' + filters[i + 1] + '\\'';\n }\n else if (singleFilter === '=' || singleFilter === '<>' || singleFilter === '>' || singleFilter === '>=' || singleFilter === '<' || singleFilter === '<=') {\n if (!filters[i + 1])\n filters[i + 1] = 'NULL';\n else if (typeof filters[i + 1] === 'string') {\n filters[i + 1] = '\\'' + filters[i + 1] + '\\'';\n }\n }\n else if (singleFilter === '!') {\n filters[i] = 'NOT';\n singleFilter = 'NOT';\n }\n sqlFilter += ' ' + singleFilter + ' ';\n }\n else if (singleFilterType.toString() === 'object' && singleFilterIsDate) {\n sqlFilter += ' \\'' + singleFilter.toISOString().split('T')[0] + '\\' ';\n }\n else if (singleFilterType.toString() === 'number') {\n sqlFilter += ' ' + singleFilter.toString() + ' ';\n }\n else if (singleFilterType.toString() === 'boolean') {\n if (singleFilter.toString() === 'true')\n sqlFilter += '1 ';\n else if (singleFilter.toString() === 'false' || singleFilter === null || singleFilter === undefined)\n sqlFilter += '0 ';\n }\n }\n\n sqlFilter += ')';\n }\n });\n\n async function getRecords() {\n if (sqlFilter === '(')\n sqlFilter = '';\n\n var records = await getInvoiceRecords(sqlFilter);\n return {\n data: records,\n totalCount: records.length\n };\n }\n\n return getRecords()\n .then(function (result) {\n return result;\n })\n .catch(() => { throw new Error('Data Loading Error'); });\n },\n });\n\n function onAutoExpandAllChanged() {\n setAutoExpandAll(!autoExpandAll)\n };\n\n function onAutoExpandAllChecklistChanged() {\n setAutoExpandAllChecklist(!autoExpandAllChecklist)\n };\n\n function onSelectionChanged({ selectedRowKeys, selectedRowsData }) {\n }\n\n function onOptionChanged(e) {\n if (e.name !== 'focusedRowIndex' && e.name !== 'focusedColumnIndex' && e.name !== 'selectedRowKeys') {\n e.component.on(\"contentReady\", () => {\n e.component.off(\"contentReady\");\n e.component.clearSelection();\n });\n }\n }\n\n function estatusInvoice(data) {\n return (\n <span className={data.data.Estatus === \"Concluido\" ? \"px-2 py-1 font-semibold leading-tight text-green-700 bg-green-100 rounded-sm\" : \"px-2 py-1 font-semibold leading-tight text-red-700 bg-red-100 rounded-sm\"}> {data.data.Estatus} </span>\n )\n }\n\n async function processButton() {\n if (!props.usuario) {\n setVisibleToast(true);\n setMessageToast('Configuración de usuario incorrecta. Comunicarse con el área de sistemas');\n setTypeToast('error')\n return;\n }\n\n if (gridFacturasRef.current) {\n var gridFacturas = gridFacturasRef.current.instance();\n\n var keys = gridFacturas.getSelectedRowKeys();\n\n var arrayInvoice = [];\n\n for (var keysIndex in keys) {\n arrayInvoice.push({\n ID: keys[keysIndex]\n });\n }\n\n if (arrayInvoice.length === 0) {\n setVisibleToast(true);\n setMessageToast('Falta seleccionar las facturas a Afectar');\n setTypeToast('error')\n }\n else {\n if (!window.confirm('Se afectarán ' + arrayInvoice.length + ' facturas. ¿Desea continuar?'))\n return;\n\n setVisibleLoadPanel(true);\n\n var lambdaFunction;\n\n if (window.location.href.indexOf('sandbox.') >= 0 || window.location.href.indexOf('localhost') >= 0)\n lambdaFunction = 'procesaFacturasLote-dev';\n else if (window.location.href.indexOf('sandboxtampico.') >= 0)\n lambdaFunction = 'procesaFacturasLote-devleona';\n else if (window.location.href.indexOf('tampico.') >= 0)\n lambdaFunction = 'procesaFacturasLote-prodleona';\n else\n lambdaFunction = 'procesaFacturasLote-prod';\n\n Auth.currentCredentials()\n .then(credentials => {\n const lambda = new Lambda({\n credentials: Auth.essentialCredentials(credentials),\n region: 'us-east-1'\n });\n\n var params = {\n FunctionName: lambdaFunction,\n Payload: JSON.stringify({\n action: 'process',\n usuario: props.usuario,\n invoices: arrayInvoice\n })\n };\n\n lambda.invoke(params, function (err, data) {\n if (err) {\n setVisibleLoadPanel(false);\n\n console.log(err, err.stack);\n }\n else {\n setVisibleLoadPanel(false);\n\n setVisibleToast(true);\n setMessageToast('Proceso concluido');\n setTypeToast('success');\n\n gridFacturas.refresh();\n }\n });\n })\n\n }\n }\n };\n\n function printButton() {\n if (!props.usuario) {\n setVisibleToast(true);\n setMessageToast('Configuración de usuario incorrecta. Comunicarse con el área de sistemas');\n setTypeToast('error')\n\n return;\n }\n\n if (gridFacturasRef.current) {\n var gridFacturas = gridFacturasRef.current.instance();\n\n var keys = gridFacturas.getSelectedRowKeys();\n\n var arrayInvoice = [];\n\n var pdfArray = '';\n\n for (var keysIndex in keys) {\n arrayInvoice.push({\n ID: keys[keysIndex]\n });\n\n pdfArray += keys[keysIndex].toString() + '%2C';\n }\n\n if (arrayInvoice.length === 0) {\n setVisibleToast(true);\n setMessageToast('Falta seleccionar las facturas a Imprimir');\n setTypeToast('error')\n }\n else {\n if (!window.confirm('Se imprimirán ' + arrayInvoice.length + ' facturas. ¿Desea continuar?'))\n return;\n\n setVisibleLoadPanel(true);\n\n var lambdaFunction;\n\n if (window.location.href.indexOf('sandbox.') >= 0 || window.location.href.indexOf('localhost') >= 0)\n lambdaFunction = 'procesaFacturasLote-dev';\n else if (window.location.href.indexOf('sandboxtampico.') >= 0)\n lambdaFunction = 'procesaFacturasLote-devleona';\n else if (window.location.href.indexOf('tampico.') >= 0)\n lambdaFunction = 'procesaFacturasLote-prodleona';\n else\n lambdaFunction = 'procesaFacturasLote-prod';\n\n Auth.currentCredentials()\n .then(credentials => {\n const lambda = new Lambda({\n credentials: Auth.essentialCredentials(credentials),\n region: 'us-east-1'\n });\n\n var params = {\n FunctionName: lambdaFunction,\n Payload: JSON.stringify({\n action: 'print',\n usuario: props.usuario,\n invoices: arrayInvoice\n })\n };\n\n lambda.invoke(params, function (err, data) {\n if (err) {\n setVisibleLoadPanel(false);\n\n console.log(err, err.stack);\n }\n else {\n setVisibleLoadPanel(false);\n\n setVisibleToast(true);\n setMessageToast('Proceso concluido');\n setTypeToast('success');\n\n gridFacturas.refresh();\n\n var baseUrl = window.location.href.split('/')[0];\n\n window.open(baseUrl + \"/#/PdfRender?type=invoice&id=\" + pdfArray, \"_blank\");\n }\n });\n })\n }\n }\n };\n\n function refreshButton() {\n if (gridFacturasRef.current) {\n var gridFacturas = gridFacturasRef.current.instance();\n\n gridFacturas.refresh();\n }\n }\n\n useEffect(() => {\n // eslint-disable-next-line\n\n }, []);\n\n function onHidingToast() {\n setVisibleToast(false);\n }\n\n function onExporting(e) {\n const workbook = new Workbook();\n const worksheet = workbook.addWorksheet('Datos');\n\n exportDataGrid({\n component: e.component,\n worksheet,\n autoFilterEnabled: true,\n }).then(() => {\n workbook.xlsx.writeBuffer().then((buffer) => {\n saveAs(new Blob([buffer], { type: 'application/octet-stream' }), 'Datos.xlsx');\n });\n });\n e.cancel = true;\n };\n\n return (\n <div>\n <div class=\"bg-gray-200 m-2\">\n <h1 class=\"font-sans inline-block text-xl font-bold text-gray-700 leading-8 align-top mb-1\"><FontAwesomeIcon icon={faList} size=\"lg\" /> Procesar Facturas</h1>\n </div>\n\n <div class=\"bg-gray-200 m-2\">\n {props.afectarFacturas.toString() === 'true' ?\n (\n <button onClick={processButton} type=\"submit\" class=\"mb-4 bg-green-500 hover:bg-green-700 text-white font-bold py-2 px-4 rounded\">\n <FontAwesomeIcon icon={faPlay} /> Afectar\n </button>\n ) :\n (\n <div></div>\n )\n }\n\n {props.afectarFacturas.toString() === 'true' ?\n (\n <button onClick={printButton} type=\"submit\" class=\"ml-4 mb-4 bg-gray-500 hover:bg-gray-700 text-white font-bold py-2 px-4 rounded\">\n <FontAwesomeIcon icon={faPrint} /> Imprimir\n </button>\n ) :\n (\n <button onClick={printButton} type=\"submit\" class=\"mb-4 bg-gray-500 hover:bg-gray-700 text-white font-bold py-2 px-4 rounded\">\n <FontAwesomeIcon icon={faPrint} /> Imprimir\n </button>\n )\n }\n\n <button onClick={refreshButton} type=\"submit\" class=\"ml-4 mb-4 bg-blue-500 hover:bg-blue-700 text-white font-bold py-2 px-4 rounded\">\n <FontAwesomeIcon icon={faArrowsRotate} /> Actualizar\n </button>\n\n <LoadPanel\n shadingColor=\"rgba(0,0,0,0.4)\"\n visible={visibleLoadPanel}\n showIndicator={true}\n message=\"Por favor espere...\"\n shading={true}\n showPane={true}\n hideOnOutsideClick={false}\n />\n\n <Toast\n visible={visibleToast}\n message={messageToast}\n type={typeToast}\n onHiding={onHidingToast}\n displayTime={5000}\n width={'auto'}\n position={{\n my: 'top center',\n at: 'top center',\n of: window,\n offset: '0 130'\n }}\n />\n\n <div class=\"bg-white p-3 shadow-xl\">\n <div className=\"options mb-2\">\n <div className=\"option\">\n <CheckBox text=\"Expandir todos los grupos\"\n value={autoExpandAll}\n onValueChanged={onAutoExpandAllChanged}>\n </CheckBox>\n </div>\n </div>\n <DataGrid\n id=\"gridInvoices\"\n columnsAutoWidth={true}\n filterBuilder={filterBuilder}\n dataSource={store}\n defaultFilterValue={filterValue}\n allowColumnReordering={true}\n allowColumnResizing={true}\n columnResizingMode={\"widget\"}\n showBorders={true}\n rowAlternationEnabled={true}\n showRowLines={true}\n showColumnLines={true}\n remoteOperations={{ filtering: true }}\n onSelectionChanged={onSelectionChanged}\n onOptionChanged={onOptionChanged}\n ref={gridFacturasRef}\n onExporting={onExporting}\n >\n <Scrolling rowRenderingMode='virtual'></Scrolling>\n <Paging defaultPageSize={0} />\n <Pager\n visible={true}\n allowedPageSizes={allowedPageSizes}\n displayMode='compact'\n showPageSizeSelector={true}\n showInfo={true}\n showNavigationButtons={true} />\n <FilterRow visible={true} />\n <FilterPanel visible={true} />\n <FilterBuilderPopup position={filterBuilderPopupPosition} />\n\n <HeaderFilter visible={true} />\n\n <GroupPanel visible={true} />\n <SearchPanel visible={true} />\n <ColumnChooser\n enabled={true}\n mode='select'\n >\n <ColumnChooserSearch\n enabled={true}\n />\n\n <ColumnChooserSelection\n allowSelectAll={true}\n selectByClick={true}\n recursive={true}\n />\n </ColumnChooser>\n <Grouping autoExpandAll={autoExpandAll} />\n <StateStoring enabled={true} type=\"localStorage\" storageKey=\"gridProcesarFacturas\" />\n <Export enabled={true} />\n\n <Selection\n mode=\"multiple\"\n selectAllMode={'page'}\n showCheckBoxesMode={'always'}\n />\n\n <Column dataField=\"ID\" dataType=\"number\" width={120} caption=\"ID\" visible={false} />\n <Column dataField=\"Mov\" dataType=\"string\" width={110} caption=\"Movimiento\" />\n <Column dataField=\"MovID\" dataType=\"string\" width={110} caption=\"Folio\" />\n <Column dataField=\"FechaEmision\" caption=\"Fecha Emisión\" dataType=\"date\" width={130} />\n <Column caption=\"Estatus Transacción\" alignment=\"center\" width={120} cellRender={estatusInvoice} visible={false} />\n <Column dataField=\"Estatus\" caption=\"Estatus\" dataType=\"string\" width={120} />\n <Column dataField=\"NombreSucursal\" caption=\"Nombre Sucursal\" dataType=\"string\" width={250} />\n\n <Column dataField=\"Pedido\" dataType=\"string\" width={120} />\n <Column dataField=\"TipoPedido\" caption=\"Tipo de Pedido\" dataType=\"string\" width={130} />\n <Column dataField=\"Importe\" caption=\"Importe\" dataType=\"number\" width={150} visible={false}>\n <Format\n type=\"currency\"\n precision={2}\n />\n </Column>\n <Column dataField=\"Impuestos\" caption=\"Impuestos\" dataType=\"number\" width={150} visible={false}>\n <Format\n type=\"currency\"\n precision={2}\n />\n </Column>\n <Column dataField=\"ImporteTotal\" caption=\"Importe Total\" dataType=\"number\" width={150}>\n <Format\n type=\"currency\"\n precision={2}\n />\n </Column>\n <Column dataField=\"Cliente\" caption=\"Cliente\" dataType=\"string\" width={150} />\n <Column dataField=\"NombreCliente\" caption=\"Nombre Cliente\" dataType=\"string\" width={250} />\n\n <Column dataField=\"Sucursal\" dataType=\"number\" width={150} visible={false} />\n <Column dataField=\"Plaza\" dataType=\"string\" width={250} visible={false} />\n\n <Column dataField=\"IDPedido\" caption=\"ID Pedido\" dataType=\"number\" width={150} visible={false} />\n <Column dataField=\"Anticipos\" dataType=\"number\" width={150} visible={false}>\n <Format\n type=\"currency\"\n precision={2}\n />\n </Column>\n\n <Column dataField=\"EstatusProg\" caption=\"Estatus Programación\" dataType=\"string\" width={150} />\n <Column dataField=\"TipoProgramacion\" caption=\"Tipo Programación\" dataType=\"string\" width={150} />\n <Column dataField=\"FechaVenta\" caption=\"Fecha de Venta\" dataType=\"date\" width={150} visible={false} />\n <Column dataField=\"FechaProgramada\" caption=\"Fecha Programada\" dataType=\"date\" width={150} visible={false} />\n <Column dataField=\"Comentarios\" dataType=\"string\" width={150} visible={false} />\n <Column dataField=\"PorcEntrega\" caption=\"% Entrega\" dataType=\"number\" width={150} >\n <Format\n type=\"percent\"\n />\n </Column>\n\n <Column dataField=\"SituacionFacturacion\" caption=\"Situación Facturación\" dataType=\"string\" width={150} visible={false} />\n <Column dataField=\"FechaImpresion\" caption=\"Fecha Impresión\" dataType=\"datetime\" width={150} visible={false} />\n <Column dataField=\"UsuarioImpresion\" caption=\"Usuario Impresión\" dataType=\"string\" width={150} visible={false} />\n <Column dataField=\"PlazaEntrega\" dataType=\"string\" width={250} caption=\"Plaza Entrega\" visible={false} />\n\n <Summary>\n <GroupItem\n column=\"Importe\"\n summaryType=\"sum\"\n valueFormat=\"$,##0.##\"\n displayFormat=\"Total {0}\"\n showInGroupFooter={false}>\n </GroupItem>\n <TotalItem\n column=\"Importe\"\n summaryType=\"sum\"\n valueFormat=\"$,##0.##\"\n displayFormat=\"Total {0}\"\n showInColumn=\"Importe\">\n </TotalItem>\n </Summary>\n </DataGrid>\n </div>\n </div>\n </div>\n );\n}","import React, { useState, useEffect, useRef } from 'react';\n\n// LoadPanel\nimport { LoadPanel } from 'devextreme-react/load-panel';\n\n// Toast\nimport { Toast } from 'devextreme-react/toast';\n\n// Grid\nimport DataGrid, {\n Column, FilterRow, HeaderFilter, FilterPanel, FilterBuilderPopup,\n GroupPanel, Grouping, SearchPanel, Sorting, Editing, Lookup, Toolbar, Item, RequiredRule,\n Scrolling, Pager, Paging, Summary, TotalItem, StateStoring, ColumnChooser, Format, Selection,\n GroupItem, Export, ColumnChooserSearch, ColumnChooserSelection\n} from 'devextreme-react/data-grid';\n\n//CheckBox\nimport CheckBox from 'devextreme-react/check-box';\n\nimport SelectBox from 'devextreme-react/select-box';\n\nimport { Auth, API, Storage } from 'aws-amplify';\n\n// Ruteador\nimport { Route, Link, useHistory } from \"react-router-dom\";\n\n// Iconos\nimport { FontAwesomeIcon } from \"@fortawesome/react-fontawesome\";\nimport { faList } from \"@fortawesome/pro-duotone-svg-icons\";\nimport { faPrint } from \"@fortawesome/pro-solid-svg-icons\";\nimport { faPlay } from \"@fortawesome/pro-solid-svg-icons\";\nimport { faArrowsRotate } from \"@fortawesome/pro-solid-svg-icons\";\n\nimport 'devextreme/data/odata/store';\nimport CustomStore from 'devextreme/data/custom_store';\n\nimport Lambda from 'aws-sdk/clients/lambda';\n\nimport '../ListStyle.css';\n\nimport dxDateBox from \"devextreme/ui/date_box\";\n\nimport dxNumberBox from \"devextreme/ui/number_box\";\n\nimport { Workbook } from 'exceljs';\nimport { saveAs } from 'file-saver';\nimport { exportDataGrid } from 'devextreme/excel_exporter'\n\ndxDateBox.defaultOptions({\n options: {\n dateSerializationFormat: \"yyyy-MM-dd\"\n }\n});\n\ndxNumberBox.defaultOptions({\n options: {\n step: 0\n }\n});\n\nfunction isNotEmpty(value) {\n return value !== undefined && value !== null && value !== '';\n}\n\nexport default function ProcessInvoice(props) {\n const history = useHistory();\n\n //Controles para expander los grupos del grid de checklist\n const [autoExpandAllChecklist, setAutoExpandAllChecklist] = useState(true);\n\n const [autoExpandAll, setAutoExpandAll] = useState(true);\n\n //Ref para el grid Facturas\n const [gridFacturasRef, setGridFacturasRef] = useState(React.createRef());\n\n const [visibleLoadPanel, setVisibleLoadPanel] = useState(false);\n\n const filterBuilderPopupPosition = {\n of: window,\n at: 'top',\n my: 'top',\n offset: { y: 10 },\n };\n\n const [visibleToast, setVisibleToast] = useState(false);\n const [messageToast, setMessageToast] = useState('');\n const [typeToast, setTypeToast] = useState('success');\n\n const allowedPageSizes = [5, 10, 15, 20, 'all'];\n\n const exportFormats = ['xlsx'];\n\n function getOrderDay(rowData) {\n return (new Date(rowData.OrderDate)).getDay();\n }\n\n const filterBuilder = {\n customOperations: [{\n name: 'weekends',\n caption: 'Weekends',\n dataTypes: ['date'],\n icon: 'check',\n hasValue: false,\n calculateFilterExpression: () => [[getOrderDay, '=', 0], 'or', [getOrderDay, '=', 6]],\n }],\n allowHierarchicalFields: true,\n };\n\n const filterValue = [['Estatus', '=', 'Sin Afectar']];\n\n async function getInvoiceRecords(sqlFilter) {\n try {\n let apiName = 'AdminSC';\n let path = '/procesafacturaslote';\n\n let myInit = {\n headers: {\n 'Content-Type': 'application/json',\n Authorization: `${(await Auth.currentSession()).getAccessToken().getJwtToken()}`\n },\n queryStringParameters: {\n action: 'list',\n sqlFilter: sqlFilter,\n nivel: 'ProcesarFacturaSucursal',\n usuario: props.usuario,\n username: JSON.parse(JSON.stringify(await Auth.currentAuthenticatedUser())).username\n }\n }\n\n var invoicesGet = await API.get(apiName, path, myInit);\n }\n catch (e) {\n if (e === 'No current user') {\n history.push('/');\n\n window.location.reload();\n }\n }\n\n return invoicesGet;\n }\n\n const store = new CustomStore({\n key: 'ID',\n load(loadOptions) {\n let sqlFilter = '(';\n [\n 'filter'\n ].forEach((i) => {\n if (i in loadOptions && isNotEmpty(loadOptions[i])) {\n var filters = loadOptions[i];\n\n var filtersLength = filters.length;\n\n for (var i = 0; i <= filtersLength; i++) {\n var singleFilter = filters[i];\n var singleFilterType = typeof singleFilter;\n var singleFilterIsArray = Array.isArray(singleFilter);\n var singleFilterIsDate = singleFilter instanceof Date;\n\n if (singleFilter === 'NULL') {\n singleFilter = '0';\n }\n\n if (singleFilterType.toString() === 'object' && singleFilterIsArray) {\n sqlFilter += '(';\n\n var subFiltersLength = singleFilter.length;\n\n for (var i2 = 0; i2 <= subFiltersLength; i2++) {\n var singleSubFilter = singleFilter[i2];\n var singleSubFilterType = typeof singleSubFilter;\n var singleSubFilterIsArray = Array.isArray(singleSubFilter);\n var singleSubFilterIsDate = singleSubFilter instanceof Date\n\n if (singleSubFilter === 'NULL') {\n singleSubFilter = '0';\n }\n\n if (singleSubFilterType.toString() === 'object' && singleSubFilterIsArray) {\n sqlFilter += '(';\n\n var subSubFiltersLength = singleSubFilter.length;\n\n for (var i3 = 0; i3 <= subSubFiltersLength; i3++) {\n var singleSubSubFilter = singleSubFilter[i3];\n var singleSubSubFilterType = typeof singleSubSubFilter;\n var singleSubSubFilterIsArray = Array.isArray(singleSubSubFilter);\n var singleSubSubFilterIsDate = singleSubSubFilter instanceof Date\n\n if (singleSubSubFilter === 'NULL') {\n singleSubSubFilter = '0';\n }\n\n if (singleSubSubFilterType.toString() === 'object' && singleSubSubFilterIsArray) {\n sqlFilter += '(';\n\n var subSubSubFiltersLength = singleSubSubFilter.length;\n\n for (var i4 = 0; i4 <= subSubSubFiltersLength; i4++) {\n var singleSubSubSubFilter = singleSubSubFilter[i4];\n var singleSubSubSubFilterType = typeof singleSubSubSubFilter;\n var singleSubSubSubFilterIsArray = Array.isArray(singleSubSubSubFilter);\n var singleSubSubSubFilterIsDate = singleSubSubSubFilter instanceof Date\n\n if (singleSubSubSubFilter === 'NULL') {\n singleSubSubSubFilter = '0';\n }\n\n if (singleSubSubSubFilterType.toString() === 'object' && singleSubSubSubFilterIsArray) {\n sqlFilter += '(';\n\n var subSubSubSubFiltersLength = singleSubSubSubFilter.length;\n\n for (var i5 = 0; i5 <= subSubSubSubFiltersLength; i5++) {\n var singleSubSubSubSubFilter = singleSubSubSubFilter[i5];\n var singleSubSubSubSubFilterType = typeof singleSubSubSubSubFilter;\n var singleSubSubSubSubFilterIsArray = Array.isArray(singleSubSubSubSubFilter);\n var singleSubSubSubSubFilterIsDate = singleSubSubSubSubFilter instanceof Date\n\n if (singleSubSubSubSubFilter === 'NULL') {\n singleSubSubSubSubFilter = '0';\n }\n\n if (singleSubSubSubSubFilterType.toString() === 'string') {\n if (singleSubSubSubSubFilter === 'contains') {\n filters[i][i2][i3][i4][i5] = 'LIKE';\n singleSubSubSubSubFilter = 'LIKE';\n\n filters[i][i2][i3][i4][i5 + 1] = '\\'%' + filters[i][i2][i3][i4][i5 + 1] + '%\\'';\n }\n else if (singleSubSubSubSubFilter === 'notcontains') {\n filters[i][i2][i3][i4][i5] = 'NOT LIKE';\n singleSubSubSubSubFilter = 'NOT LIKE';\n\n filters[i][i2][i3][i4][i5 + 1] = '\\'%' + filters[i][i2][i3][i4][i5 + 1] + '%\\'';\n }\n else if (singleSubSubSubSubFilter === 'startswith') {\n filters[i][i2][i3][i4][i5] = 'LIKE';\n singleSubSubSubSubFilter = 'LIKE';\n\n filters[i][i2][i3][i4][i5 + 1] = '\\'' + filters[i][i2][i3][i4][i5 + 1] + '%\\'';\n }\n else if (singleSubSubSubSubFilter === 'endswith') {\n filters[i][i2][i3][i4][i5] = 'LIKE';\n singleSubSubSubSubFilter = 'LIKE';\n\n filters[i][i2][i3][i4][i5 + 1] = '\\'%' + filters[i][i2][i3][i4][i5 + 1] + '\\'';\n }\n else if (singleSubSubSubSubFilter === '=' || singleSubSubSubSubFilter === '<>' || singleSubSubSubSubFilter === '>' || singleSubSubSubSubFilter === '>=' || singleSubSubSubSubFilter === '<' || singleSubSubSubSubFilter === '<=') {\n if (!filters[i][i2][i3][i4][i5 + 1])\n filters[i][i2][i3][i4][i5 + 1] = 'NULL';\n else if (typeof filters[i][i2][i3][i4][i5 + 1] === 'string') {\n filters[i][i2][i3][i4][i5 + 1] = '\\'' + filters[i][i2][i3][i4][i5 + 1] + '\\'';\n }\n }\n else if (singleSubSubSubSubFilter === '!') {\n filters[i][i2][i3][i4][i5] = 'NOT';\n singleSubSubSubSubFilter = 'NOT';\n }\n\n sqlFilter += ' ' + singleSubSubSubSubFilter + ' ';\n }\n else if (singleSubSubSubSubFilterType.toString() === 'object' && singleSubSubSubSubFilterIsDate) {\n sqlFilter += ' \\'' + singleSubSubSubSubFilter.toISOString().split('T')[0] + '\\' ';\n }\n else if (singleSubSubSubSubFilterType.toString() === 'number') {\n sqlFilter += ' ' + singleSubSubSubSubFilter.toString() + ' ';\n }\n else if (singleSubSubSubSubFilterType.toString() === 'boolean') {\n if (singleSubSubSubSubFilter.toString() === 'true')\n sqlFilter += '1 ';\n else if (singleSubSubSubSubFilter.toString() === 'false' || singleSubSubSubSubFilter === null || singleSubSubSubSubFilter === undefined)\n sqlFilter += '0 ';\n }\n }\n }\n else if (singleSubSubSubFilterType.toString() === 'string') {\n if (singleSubSubSubFilter === 'contains') {\n filters[i][i2][i3][i4] = 'LIKE';\n singleSubSubSubFilter = 'LIKE';\n\n filters[i][i2][i3][i4 + 1] = '\\'%' + filters[i][i2][i3][i4 + 1] + '%\\'';\n }\n else if (singleSubSubSubFilter === 'notcontains') {\n filters[i][i2][i3][i4] = 'NOT LIKE';\n singleSubSubSubFilter = 'NOT LIKE';\n\n filters[i][i2][i3][i4 + 1] = '\\'%' + filters[i][i2][i3][i4 + 1] + '%\\'';\n }\n else if (singleSubSubSubFilter === 'startswith') {\n filters[i][i2][i3][i4] = 'LIKE';\n singleSubSubSubFilter = 'LIKE';\n\n filters[i][i2][i3][i4 + 1] = '\\'' + filters[i][i2][i3][i4 + 1] + '%\\'';\n }\n else if (singleSubSubSubFilter === 'endswith') {\n filters[i][i2][i3][i4] = 'LIKE';\n singleSubSubSubFilter = 'LIKE';\n\n filters[i][i2][i3][i4 + 1] = '\\'%' + filters[i][i2][i3][i4 + 1] + '\\'';\n }\n else if (singleSubSubSubFilter === '=' || singleSubSubSubFilter === '<>' || singleSubSubSubFilter === '>' || singleSubSubSubFilter === '>=' || singleSubSubSubFilter === '<' || singleSubSubSubFilter === '<=') {\n if (!filters[i][i2][i3][i4 + 1])\n filters[i][i2][i3][i4 + 1] = 'NULL';\n else if (typeof filters[i][i2][i3][i4 + 1] === 'string') {\n filters[i][i2][i3][i4 + 1] = '\\'' + filters[i][i2][i3][i4 + 1] + '\\'';\n }\n }\n else if (singleSubSubSubFilter === '!') {\n filters[i][i2][i3][i4] = 'NOT';\n singleSubSubSubFilter = 'NOT';\n }\n\n sqlFilter += ' ' + singleSubSubSubFilter + ' ';\n }\n else if (singleSubSubSubFilterType.toString() === 'object' && singleSubSubSubFilterIsDate) {\n sqlFilter += ' \\'' + singleSubSubSubFilter.toISOString().split('T')[0] + '\\' ';\n }\n else if (singleSubSubSubFilterType.toString() === 'number') {\n sqlFilter += ' ' + singleSubSubSubFilter.toString() + ' ';\n }\n else if (singleSubSubSubFilterType.toString() === 'boolean') {\n if (singleSubSubSubFilter.toString() === 'true')\n sqlFilter += '1 ';\n else if (singleSubSubSubFilter.toString() === 'false' || singleSubSubSubFilter === null || singleSubSubSubFilter === undefined)\n sqlFilter += '0 ';\n }\n }\n\n sqlFilter += ')';\n }\n else if (singleSubSubFilterType.toString() === 'string') {\n if (singleSubSubFilter === 'contains') {\n filters[i][i2][i3] = 'LIKE';\n singleSubSubFilter = 'LIKE';\n\n filters[i][i2][i3 + 1] = '\\'%' + filters[i][i2][i3 + 1] + '%\\'';\n }\n else if (singleSubSubFilter === 'notcontains') {\n filters[i][i2][i3] = 'NOT LIKE';\n singleSubSubFilter = 'NOT LIKE';\n\n filters[i][i2][i3 + 1] = '\\'%' + filters[i][i2][i3 + 1] + '%\\'';\n }\n else if (singleSubSubFilter === 'startswith') {\n filters[i][i2][i3] = 'LIKE';\n singleSubSubFilter = 'LIKE';\n\n filters[i][i2][i3 + 1] = '\\'' + filters[i][i2][i3 + 1] + '%\\'';\n }\n else if (singleSubSubFilter === 'endswith') {\n filters[i][i2][i3] = 'LIKE';\n singleSubSubFilter = 'LIKE';\n\n filters[i][i2][i3 + 1] = '\\'%' + filters[i][i2][i3 + 1] + '\\'';\n }\n else if (singleSubSubFilter === '=' || singleSubSubFilter === '<>' || singleSubSubFilter === '>' || singleSubSubFilter === '>=' || singleSubSubFilter === '<' || singleSubSubFilter === '<=') {\n if (!filters[i][i2][i3 + 1])\n filters[i][i2][i3 + 1] = 'NULL';\n else if (typeof filters[i][i2][i3 + 1] === 'string') {\n filters[i][i2][i3 + 1] = '\\'' + filters[i][i2][i3 + 1] + '\\'';\n }\n }\n else if (singleSubSubFilter === '!') {\n filters[i][i2][i3] = 'NOT';\n singleSubSubFilter = 'NOT';\n }\n sqlFilter += ' ' + singleSubSubFilter + ' ';\n }\n else if (singleSubSubFilterType.toString() === 'object' && singleSubSubFilterIsDate) {\n sqlFilter += ' \\'' + singleSubSubFilter.toISOString().split('T')[0] + '\\' ';\n }\n else if (singleSubSubFilterType.toString() === 'number') {\n sqlFilter += ' ' + singleSubSubFilter.toString() + ' ';\n }\n else if (singleSubSubFilterType.toString() === 'boolean') {\n if (singleSubSubFilter.toString() === 'true')\n sqlFilter += '1 ';\n else if (singleSubSubFilter.toString() === 'false' || singleSubSubFilter === null || singleSubSubFilter === undefined)\n sqlFilter += '0 ';\n }\n }\n\n sqlFilter += ')';\n }\n else if (singleSubFilterType.toString() === 'string') {\n if (singleSubFilter === 'contains') {\n filters[i][i2] = 'LIKE';\n singleSubFilter = 'LIKE';\n\n filters[i][i2 + 1] = '\\'%' + filters[i][i2 + 1] + '%\\'';\n }\n else if (singleSubFilter === 'notcontains') {\n filters[i][i2] = 'NOT LIKE';\n singleSubFilter = 'NOT LIKE';\n\n filters[i][i2 + 1] = '\\'%' + filters[i][i2 + 1] + '%\\'';\n }\n else if (singleSubFilter === 'startswith') {\n filters[i][i2] = 'LIKE';\n singleSubFilter = 'LIKE';\n\n filters[i][i2 + 1] = '\\'' + filters[i][i2 + 1] + '%\\'';\n }\n else if (singleSubFilter === 'endswith') {\n filters[i][i2] = 'LIKE';\n singleSubFilter = 'LIKE';\n\n filters[i][i2 + 1] = '\\'%' + filters[i][i2 + 1] + '\\'';\n }\n else if (singleSubFilter === '=' || singleSubFilter === '<>' || singleSubFilter === '>' || singleSubFilter === '>=' || singleSubFilter === '<' || singleSubFilter === '<=') {\n if (!filters[i][i2 + 1])\n filters[i][i2 + 1] = 'NULL';\n else if (typeof filters[i][i2 + 1] === 'string') {\n filters[i][i2 + 1] = '\\'' + filters[i][i2 + 1] + '\\'';\n }\n }\n else if (singleSubFilter === '!') {\n filters[i][i2] = 'NOT';\n singleSubFilter = 'NOT';\n }\n sqlFilter += ' ' + singleSubFilter + ' ';\n }\n else if (singleSubFilterType.toString() === 'object' && singleSubFilterIsDate) {\n sqlFilter += ' \\'' + singleSubFilter.toISOString().split('T')[0] + '\\' ';\n }\n else if (singleSubFilterType.toString() === 'number') {\n sqlFilter += ' ' + singleSubFilter.toString() + ' ';\n }\n else if (singleSubFilterType.toString() === 'boolean') {\n if (singleSubFilter.toString() === 'true')\n sqlFilter += '1 ';\n else if (singleSubFilter.toString() === 'false' || singleSubFilter === null || singleSubFilter === undefined)\n sqlFilter += '0 ';\n }\n }\n\n sqlFilter += ')';\n }\n else if (singleFilterType.toString() === 'string') {\n if (singleFilter === 'contains') {\n filters[i] = 'LIKE';\n singleFilter = 'LIKE';\n\n filters[i + 1] = '\\'%' + filters[i + 1] + '%\\'';\n }\n else if (singleFilter === 'notcontains') {\n filters[i] = 'NOT LIKE';\n singleFilter = 'NOT LIKE';\n\n filters[i + 1] = '\\'%' + filters[i + 1] + '%\\'';\n }\n else if (singleFilter === 'startswith') {\n filters[i] = 'LIKE';\n singleFilter = 'LIKE';\n\n filters[i + 1] = '\\'' + filters[i + 1] + '%\\'';\n }\n else if (singleFilter === 'endswith') {\n filters[i] = 'LIKE';\n singleFilter = 'LIKE';\n\n filters[i + 1] = '\\'%' + filters[i + 1] + '\\'';\n }\n else if (singleFilter === '=' || singleFilter === '<>' || singleFilter === '>' || singleFilter === '>=' || singleFilter === '<' || singleFilter === '<=') {\n if (!filters[i + 1])\n filters[i + 1] = 'NULL';\n else if (typeof filters[i + 1] === 'string') {\n filters[i + 1] = '\\'' + filters[i + 1] + '\\'';\n }\n }\n else if (singleFilter === '!') {\n filters[i] = 'NOT';\n singleFilter = 'NOT';\n }\n sqlFilter += ' ' + singleFilter + ' ';\n }\n else if (singleFilterType.toString() === 'object' && singleFilterIsDate) {\n sqlFilter += ' \\'' + singleFilter.toISOString().split('T')[0] + '\\' ';\n }\n else if (singleFilterType.toString() === 'number') {\n sqlFilter += ' ' + singleFilter.toString() + ' ';\n }\n else if (singleFilterType.toString() === 'boolean') {\n if (singleFilter.toString() === 'true')\n sqlFilter += '1 ';\n else if (singleFilter.toString() === 'false' || singleFilter === null || singleFilter === undefined)\n sqlFilter += '0 ';\n }\n }\n\n sqlFilter += ')';\n }\n });\n\n async function getRecords() {\n if (sqlFilter === '(')\n sqlFilter = '';\n\n var records = await getInvoiceRecords(sqlFilter);\n return {\n data: records,\n totalCount: records.length\n };\n }\n\n return getRecords()\n .then(function (result) {\n return result;\n })\n .catch(() => { throw new Error('Data Loading Error'); });\n },\n });\n\n function onAutoExpandAllChanged() {\n setAutoExpandAll(!autoExpandAll)\n };\n\n function onAutoExpandAllChecklistChanged() {\n setAutoExpandAllChecklist(!autoExpandAllChecklist)\n };\n\n function onSelectionChanged({ selectedRowKeys, selectedRowsData }) {\n }\n\n function onOptionChanged(e) {\n if (e.name !== 'focusedRowIndex' && e.name !== 'focusedColumnIndex' && e.name !== 'selectedRowKeys') {\n e.component.on(\"contentReady\", () => {\n e.component.off(\"contentReady\");\n e.component.clearSelection();\n });\n }\n }\n\n function estatusInvoice(data) {\n return (\n <span className={data.data.Estatus === \"Concluido\" ? \"px-2 py-1 font-semibold leading-tight text-green-700 bg-green-100 rounded-sm\" : \"px-2 py-1 font-semibold leading-tight text-red-700 bg-red-100 rounded-sm\"}> {data.data.Estatus} </span>\n )\n }\n\n async function processButton() {\n if (!props.usuario) {\n setVisibleToast(true);\n setMessageToast('Configuración de usuario incorrecta. Comunicarse con el área de sistemas');\n setTypeToast('error')\n return;\n }\n\n if (gridFacturasRef.current) {\n var gridFacturas = gridFacturasRef.current.instance();\n\n var keys = gridFacturas.getSelectedRowKeys();\n\n var arrayInvoice = [];\n\n for (var keysIndex in keys) {\n arrayInvoice.push({\n ID: keys[keysIndex]\n });\n }\n\n if (arrayInvoice.length === 0) {\n setVisibleToast(true);\n setMessageToast('Falta seleccionar las facturas a Afectar');\n setTypeToast('error')\n }\n else {\n if (!window.confirm('Se afectarán ' + arrayInvoice.length + ' facturas. ¿Desea continuar?'))\n return;\n\n setVisibleLoadPanel(true);\n\n var lambdaFunction;\n\n if (window.location.href.indexOf('sandbox.') >= 0 || window.location.href.indexOf('localhost') >= 0)\n lambdaFunction = 'procesaFacturasLote-dev';\n else if (window.location.href.indexOf('sandboxtampico.') >= 0)\n lambdaFunction = 'procesaFacturasLote-devleona';\n else if (window.location.href.indexOf('tampico.') >= 0)\n lambdaFunction = 'procesaFacturasLote-prodleona';\n else\n lambdaFunction = 'procesaFacturasLote-prod';\n\n Auth.currentCredentials()\n .then(credentials => {\n const lambda = new Lambda({\n credentials: Auth.essentialCredentials(credentials),\n region: 'us-east-1'\n });\n\n var params = {\n FunctionName: lambdaFunction,\n Payload: JSON.stringify({\n action: 'process',\n usuario: props.usuario,\n invoices: arrayInvoice\n })\n };\n\n lambda.invoke(params, function (err, data) {\n if (err) {\n setVisibleLoadPanel(false);\n\n console.log(err, err.stack);\n }\n else {\n setVisibleLoadPanel(false);\n\n setVisibleToast(true);\n setMessageToast('Proceso concluido');\n setTypeToast('success');\n\n gridFacturas.refresh();\n }\n });\n })\n\n }\n }\n };\n\n function printButton() {\n if (!props.usuario) {\n setVisibleToast(true);\n setMessageToast('Configuración de usuario incorrecta. Comunicarse con el área de sistemas');\n setTypeToast('error')\n\n return;\n }\n\n if (gridFacturasRef.current) {\n var gridFacturas = gridFacturasRef.current.instance();\n\n var keys = gridFacturas.getSelectedRowKeys();\n\n var arrayInvoice = [];\n\n var pdfArray = '';\n\n for (var keysIndex in keys) {\n arrayInvoice.push({\n ID: keys[keysIndex]\n });\n\n pdfArray += keys[keysIndex].toString() + '%2C';\n }\n\n if (arrayInvoice.length === 0) {\n setVisibleToast(true);\n setMessageToast('Falta seleccionar las facturas a Imprimir');\n setTypeToast('error')\n }\n else {\n if (!window.confirm('Se imprimirán ' + arrayInvoice.length + ' facturas. ¿Desea continuar?'))\n return;\n\n setVisibleLoadPanel(true);\n\n var lambdaFunction;\n\n if (window.location.href.indexOf('sandbox.') >= 0 || window.location.href.indexOf('localhost') >= 0)\n lambdaFunction = 'procesaFacturasLote-dev';\n else if (window.location.href.indexOf('sandboxtampico.') >= 0)\n lambdaFunction = 'procesaFacturasLote-devleona';\n else if (window.location.href.indexOf('tampico.') >= 0)\n lambdaFunction = 'procesaFacturasLote-prodleona';\n else\n lambdaFunction = 'procesaFacturasLote-prod';\n\n Auth.currentCredentials()\n .then(credentials => {\n const lambda = new Lambda({\n credentials: Auth.essentialCredentials(credentials),\n region: 'us-east-1'\n });\n\n var params = {\n FunctionName: lambdaFunction,\n Payload: JSON.stringify({\n action: 'printLoc',\n usuario: props.usuario,\n invoices: arrayInvoice\n })\n };\n\n lambda.invoke(params, function (err, data) {\n if (err) {\n setVisibleLoadPanel(false);\n\n console.log(err, err.stack);\n }\n else {\n setVisibleLoadPanel(false);\n\n setVisibleToast(true);\n setMessageToast('Proceso concluido');\n setTypeToast('success');\n\n gridFacturas.refresh();\n\n var baseUrl = window.location.href.split('/')[0];\n\n window.open(baseUrl + \"/#/PdfRender?type=invoice&id=\" + pdfArray, \"_blank\");\n }\n });\n })\n }\n }\n };\n\n function refreshButton() {\n if (gridFacturasRef.current) {\n var gridFacturas = gridFacturasRef.current.instance();\n\n gridFacturas.refresh();\n }\n }\n\n useEffect(() => {\n // eslint-disable-next-line\n\n }, []);\n\n function onHidingToast() {\n setVisibleToast(false);\n }\n\n function onExporting(e) {\n const workbook = new Workbook();\n const worksheet = workbook.addWorksheet('Datos');\n\n exportDataGrid({\n component: e.component,\n worksheet,\n autoFilterEnabled: true,\n }).then(() => {\n workbook.xlsx.writeBuffer().then((buffer) => {\n saveAs(new Blob([buffer], { type: 'application/octet-stream' }), 'Datos.xlsx');\n });\n });\n e.cancel = true;\n };\n\n return (\n <div>\n <div class=\"bg-gray-200 m-2\">\n <h1 class=\"font-sans inline-block text-xl font-bold text-gray-700 leading-8 align-top mb-1\"><FontAwesomeIcon icon={faList} size=\"lg\" /> Procesar Facturas - Sucursal</h1>\n </div>\n\n <div class=\"bg-gray-200 m-2\">\n {props.afectarFacturas.toString() === 'true' ?\n (\n <button onClick={processButton} type=\"submit\" class=\"mb-4 bg-green-500 hover:bg-green-700 text-white font-bold py-2 px-4 rounded\">\n <FontAwesomeIcon icon={faPlay} /> Afectar\n </button>\n ) :\n (\n <div></div>\n )\n }\n\n {props.afectarFacturas.toString() === 'true' ?\n (\n <button onClick={printButton} type=\"submit\" class=\"ml-4 mb-4 bg-gray-500 hover:bg-gray-700 text-white font-bold py-2 px-4 rounded\">\n <FontAwesomeIcon icon={faPrint} /> Imprimir\n </button>\n ) :\n (\n <button onClick={printButton} type=\"submit\" class=\"mb-4 bg-gray-500 hover:bg-gray-700 text-white font-bold py-2 px-4 rounded\">\n <FontAwesomeIcon icon={faPrint} /> Imprimir\n </button>\n )\n }\n\n <button onClick={refreshButton} type=\"submit\" class=\"ml-4 mb-4 bg-blue-500 hover:bg-blue-700 text-white font-bold py-2 px-4 rounded\">\n <FontAwesomeIcon icon={faArrowsRotate} /> Actualizar\n </button>\n\n <LoadPanel\n shadingColor=\"rgba(0,0,0,0.4)\"\n visible={visibleLoadPanel}\n showIndicator={true}\n message=\"Por favor espere...\"\n shading={true}\n showPane={true}\n hideOnOutsideClick={false}\n />\n\n <Toast\n visible={visibleToast}\n message={messageToast}\n type={typeToast}\n onHiding={onHidingToast}\n displayTime={5000}\n width={'auto'}\n position={{\n my: 'top center',\n at: 'top center',\n of: window,\n offset: '0 130'\n }}\n />\n\n <div class=\"bg-white p-3 shadow-xl\">\n <div className=\"options mb-2\">\n <div className=\"option\">\n <CheckBox text=\"Expandir todos los grupos\"\n value={autoExpandAll}\n onValueChanged={onAutoExpandAllChanged}>\n </CheckBox>\n </div>\n </div>\n <DataGrid\n id=\"gridInvoices\"\n columnsAutoWidth={true}\n filterBuilder={filterBuilder}\n dataSource={store}\n defaultFilterValue={filterValue}\n allowColumnReordering={true}\n allowColumnResizing={true}\n columnResizingMode={\"widget\"}\n showBorders={true}\n rowAlternationEnabled={true}\n showRowLines={true}\n showColumnLines={true}\n remoteOperations={{ filtering: true }}\n onSelectionChanged={onSelectionChanged}\n onOptionChanged={onOptionChanged}\n ref={gridFacturasRef}\n onExporting={onExporting}\n >\n <Scrolling rowRenderingMode='virtual'></Scrolling>\n <Paging defaultPageSize={0} />\n <Pager\n visible={true}\n allowedPageSizes={allowedPageSizes}\n displayMode='compact'\n showPageSizeSelector={true}\n showInfo={true}\n showNavigationButtons={true} />\n <FilterRow visible={true} />\n <FilterPanel visible={true} />\n <FilterBuilderPopup position={filterBuilderPopupPosition} />\n\n <HeaderFilter visible={true} />\n\n <GroupPanel visible={true} />\n <SearchPanel visible={true} />\n <ColumnChooser\n enabled={true}\n mode='select'\n >\n <ColumnChooserSearch\n enabled={true}\n />\n\n <ColumnChooserSelection\n allowSelectAll={true}\n selectByClick={true}\n recursive={true}\n />\n </ColumnChooser>\n <Grouping autoExpandAll={autoExpandAll} />\n <StateStoring enabled={true} type=\"localStorage\" storageKey=\"gridProcesarFacturasSucursal\" />\n <Export enabled={true} />\n\n <Selection\n mode=\"multiple\"\n selectAllMode={'page'}\n showCheckBoxesMode={'always'}\n />\n\n <Column dataField=\"ID\" dataType=\"number\" width={120} caption=\"ID\" visible={false} />\n <Column dataField=\"Mov\" dataType=\"string\" width={110} caption=\"Movimiento\" />\n <Column dataField=\"MovID\" dataType=\"string\" width={110} caption=\"Folio\" />\n <Column dataField=\"FechaEmision\" caption=\"Fecha Emisión\" dataType=\"date\" width={130} />\n <Column caption=\"Estatus Transacción\" alignment=\"center\" width={120} cellRender={estatusInvoice} visible={false} />\n <Column dataField=\"Estatus\" caption=\"Estatus\" dataType=\"string\" width={120} />\n <Column dataField=\"NombreSucursal\" caption=\"Nombre Sucursal\" dataType=\"string\" width={250} />\n\n <Column dataField=\"Pedido\" dataType=\"string\" width={120} />\n <Column dataField=\"TipoPedido\" caption=\"Tipo de Pedido\" dataType=\"string\" width={130} />\n <Column dataField=\"Importe\" caption=\"Importe\" dataType=\"number\" width={150} visible={false}>\n <Format\n type=\"currency\"\n precision={2}\n />\n </Column>\n <Column dataField=\"Impuestos\" caption=\"Impuestos\" dataType=\"number\" width={150} visible={false}>\n <Format\n type=\"currency\"\n precision={2}\n />\n </Column>\n <Column dataField=\"ImporteTotal\" caption=\"Importe Total\" dataType=\"number\" width={150}>\n <Format\n type=\"currency\"\n precision={2}\n />\n </Column>\n <Column dataField=\"Cliente\" caption=\"Cliente\" dataType=\"string\" width={150} />\n <Column dataField=\"NombreCliente\" caption=\"Nombre Cliente\" dataType=\"string\" width={250} />\n\n <Column dataField=\"Sucursal\" dataType=\"number\" width={150} visible={false} />\n <Column dataField=\"Plaza\" dataType=\"string\" width={250} visible={false} />\n\n <Column dataField=\"IDPedido\" caption=\"ID Pedido\" dataType=\"number\" width={150} visible={false} />\n <Column dataField=\"Anticipos\" dataType=\"number\" width={150} visible={false}>\n <Format\n type=\"currency\"\n precision={2}\n />\n </Column>\n\n <Column dataField=\"EstatusProg\" caption=\"Estatus Programación\" dataType=\"string\" width={150} />\n <Column dataField=\"TipoProgramacion\" caption=\"Tipo Programación\" dataType=\"string\" width={150} />\n <Column dataField=\"FechaVenta\" caption=\"Fecha de Venta\" dataType=\"date\" width={150} visible={false} />\n <Column dataField=\"FechaProgramada\" caption=\"Fecha Programada\" dataType=\"date\" width={150} visible={false} />\n <Column dataField=\"Comentarios\" dataType=\"string\" width={150} visible={false} />\n <Column dataField=\"PorcEntrega\" caption=\"% Entrega\" dataType=\"number\" width={150} >\n <Format\n type=\"percent\"\n />\n </Column>\n\n <Column dataField=\"SituacionFacturacionSucursal\" caption=\"Situación Facturación\" width={150} visible={false} />\n <Column dataField=\"FechaImpresionSucursal\" caption=\"Fecha Impresión\" dataType=\"datetime\" width={150} visible={false} />\n <Column dataField=\"UsuarioImpresion\" caption=\"Usuario Impresión\" width={150} visible={false} />\n <Column dataField=\"PlazaEntrega\" dataType=\"string\" width={250} caption=\"Plaza Entrega\" visible={false} />\n\n <Summary>\n <GroupItem\n column=\"Importe\"\n summaryType=\"sum\"\n valueFormat=\"$,##0.##\"\n displayFormat=\"Total {0}\"\n showInGroupFooter={false}>\n </GroupItem>\n <TotalItem\n column=\"Importe\"\n summaryType=\"sum\"\n valueFormat=\"$,##0.##\"\n displayFormat=\"Total {0}\"\n showInColumn=\"Importe\">\n </TotalItem>\n </Summary>\n </DataGrid>\n </div>\n </div>\n </div>\n );\n}","import React, { useState, useEffect, useRef } from 'react';\n\n// LoadPanel\nimport { LoadPanel } from 'devextreme-react/load-panel';\n\n// Toast\nimport { Toast } from 'devextreme-react/toast';\n\n// Grid\nimport DataGrid, {\n Column, FilterRow, HeaderFilter, FilterPanel, FilterBuilderPopup,\n GroupPanel, Grouping, SearchPanel, Sorting, Editing, Lookup, Toolbar, Item, RequiredRule,\n Scrolling, Pager, Paging, Summary, TotalItem, StateStoring, ColumnChooser, Format, Selection,\n GroupItem, Export, ColumnChooserSearch, ColumnChooserSelection\n} from 'devextreme-react/data-grid';\n\n//CheckBox\nimport CheckBox from 'devextreme-react/check-box';\n\nimport SelectBox from 'devextreme-react/select-box';\n\nimport { Auth, API, Storage } from 'aws-amplify';\n\n// Ruteador\nimport { Route, Link, useHistory } from \"react-router-dom\";\n\n// Iconos\nimport { FontAwesomeIcon } from \"@fortawesome/react-fontawesome\";\nimport { faList } from \"@fortawesome/pro-duotone-svg-icons\";\nimport { faPrint } from \"@fortawesome/pro-solid-svg-icons\";\nimport { faPlay } from \"@fortawesome/pro-solid-svg-icons\";\nimport { faArrowsRotate } from \"@fortawesome/pro-solid-svg-icons\";\n\nimport 'devextreme/data/odata/store';\nimport CustomStore from 'devextreme/data/custom_store';\n\nimport Lambda from 'aws-sdk/clients/lambda';\n\nimport '../ListStyle.css';\n\nimport dxDateBox from \"devextreme/ui/date_box\";\n\nimport dxNumberBox from \"devextreme/ui/number_box\";\n\nimport { Workbook } from 'exceljs';\nimport { saveAs } from 'file-saver';\nimport { exportDataGrid } from 'devextreme/excel_exporter'\n\ndxDateBox.defaultOptions({\n options: {\n dateSerializationFormat: \"yyyy-MM-dd\"\n }\n});\n\ndxNumberBox.defaultOptions({\n options: {\n step: 0\n }\n});\n\nfunction isNotEmpty(value) {\n return value !== undefined && value !== null && value !== '';\n}\n\nexport default function ProcessInvoice(props) {\n const history = useHistory();\n\n //Controles para expander los grupos del grid de checklist\n const [autoExpandAllChecklist, setAutoExpandAllChecklist] = useState(true);\n\n const [autoExpandAll, setAutoExpandAll] = useState(true);\n\n //Ref para el grid Facturas\n const [gridFacturasRef, setGridFacturasRef] = useState(React.createRef());\n\n const [visibleLoadPanel, setVisibleLoadPanel] = useState(false);\n\n const filterBuilderPopupPosition = {\n of: window,\n at: 'top',\n my: 'top',\n offset: { y: 10 },\n };\n\n const [visibleToast, setVisibleToast] = useState(false);\n const [messageToast, setMessageToast] = useState('');\n const [typeToast, setTypeToast] = useState('success');\n\n const allowedPageSizes = [5, 10, 15, 20, 'all'];\n\n const exportFormats = ['xlsx'];\n\n function getOrderDay(rowData) {\n return (new Date(rowData.OrderDate)).getDay();\n }\n\n const filterBuilder = {\n customOperations: [{\n name: 'weekends',\n caption: 'Weekends',\n dataTypes: ['date'],\n icon: 'check',\n hasValue: false,\n calculateFilterExpression: () => [[getOrderDay, '=', 0], 'or', [getOrderDay, '=', 6]],\n }],\n allowHierarchicalFields: true,\n };\n\n const filterValue = [['Estatus', '=', 'Sin Afectar']];\n\n async function getInvoiceRecords(sqlFilter) {\n try {\n let apiName = 'AdminSC';\n let path = '/procesafacturaslote';\n\n let myInit = {\n headers: {\n 'Content-Type': 'application/json',\n Authorization: `${(await Auth.currentSession()).getAccessToken().getJwtToken()}`\n },\n queryStringParameters: {\n action: 'list',\n sqlFilter: sqlFilter,\n nivel: 'ProcesarFacturaBodega',\n usuario: props.usuario,\n username: JSON.parse(JSON.stringify(await Auth.currentAuthenticatedUser())).username\n }\n }\n\n var invoicesGet = await API.get(apiName, path, myInit);\n }\n catch (e) {\n if (e === 'No current user') {\n history.push('/');\n\n window.location.reload();\n }\n }\n\n return invoicesGet;\n }\n\n const store = new CustomStore({\n key: 'ID',\n load(loadOptions) {\n let sqlFilter = '(';\n [\n 'filter'\n ].forEach((i) => {\n if (i in loadOptions && isNotEmpty(loadOptions[i])) {\n var filters = loadOptions[i];\n\n var filtersLength = filters.length;\n\n for (var i = 0; i <= filtersLength; i++) {\n var singleFilter = filters[i];\n var singleFilterType = typeof singleFilter;\n var singleFilterIsArray = Array.isArray(singleFilter);\n var singleFilterIsDate = singleFilter instanceof Date;\n\n if (singleFilter === 'NULL') {\n singleFilter = '0';\n }\n\n if (singleFilterType.toString() === 'object' && singleFilterIsArray) {\n sqlFilter += '(';\n\n var subFiltersLength = singleFilter.length;\n\n for (var i2 = 0; i2 <= subFiltersLength; i2++) {\n var singleSubFilter = singleFilter[i2];\n var singleSubFilterType = typeof singleSubFilter;\n var singleSubFilterIsArray = Array.isArray(singleSubFilter);\n var singleSubFilterIsDate = singleSubFilter instanceof Date\n\n if (singleSubFilter === 'NULL') {\n singleSubFilter = '0';\n }\n\n if (singleSubFilterType.toString() === 'object' && singleSubFilterIsArray) {\n sqlFilter += '(';\n\n var subSubFiltersLength = singleSubFilter.length;\n\n for (var i3 = 0; i3 <= subSubFiltersLength; i3++) {\n var singleSubSubFilter = singleSubFilter[i3];\n var singleSubSubFilterType = typeof singleSubSubFilter;\n var singleSubSubFilterIsArray = Array.isArray(singleSubSubFilter);\n var singleSubSubFilterIsDate = singleSubSubFilter instanceof Date\n\n if (singleSubSubFilter === 'NULL') {\n singleSubSubFilter = '0';\n }\n\n if (singleSubSubFilterType.toString() === 'object' && singleSubSubFilterIsArray) {\n sqlFilter += '(';\n\n var subSubSubFiltersLength = singleSubSubFilter.length;\n\n for (var i4 = 0; i4 <= subSubSubFiltersLength; i4++) {\n var singleSubSubSubFilter = singleSubSubFilter[i4];\n var singleSubSubSubFilterType = typeof singleSubSubSubFilter;\n var singleSubSubSubFilterIsArray = Array.isArray(singleSubSubSubFilter);\n var singleSubSubSubFilterIsDate = singleSubSubSubFilter instanceof Date\n\n if (singleSubSubSubFilter === 'NULL') {\n singleSubSubSubFilter = '0';\n }\n\n if (singleSubSubSubFilterType.toString() === 'object' && singleSubSubSubFilterIsArray) {\n sqlFilter += '(';\n\n var subSubSubSubFiltersLength = singleSubSubSubFilter.length;\n\n for (var i5 = 0; i5 <= subSubSubSubFiltersLength; i5++) {\n var singleSubSubSubSubFilter = singleSubSubSubFilter[i5];\n var singleSubSubSubSubFilterType = typeof singleSubSubSubSubFilter;\n var singleSubSubSubSubFilterIsArray = Array.isArray(singleSubSubSubSubFilter);\n var singleSubSubSubSubFilterIsDate = singleSubSubSubSubFilter instanceof Date\n\n if (singleSubSubSubSubFilter === 'NULL') {\n singleSubSubSubSubFilter = '0';\n }\n\n if (singleSubSubSubSubFilterType.toString() === 'string') {\n if (singleSubSubSubSubFilter === 'contains') {\n filters[i][i2][i3][i4][i5] = 'LIKE';\n singleSubSubSubSubFilter = 'LIKE';\n\n filters[i][i2][i3][i4][i5 + 1] = '\\'%' + filters[i][i2][i3][i4][i5 + 1] + '%\\'';\n }\n else if (singleSubSubSubSubFilter === 'notcontains') {\n filters[i][i2][i3][i4][i5] = 'NOT LIKE';\n singleSubSubSubSubFilter = 'NOT LIKE';\n\n filters[i][i2][i3][i4][i5 + 1] = '\\'%' + filters[i][i2][i3][i4][i5 + 1] + '%\\'';\n }\n else if (singleSubSubSubSubFilter === 'startswith') {\n filters[i][i2][i3][i4][i5] = 'LIKE';\n singleSubSubSubSubFilter = 'LIKE';\n\n filters[i][i2][i3][i4][i5 + 1] = '\\'' + filters[i][i2][i3][i4][i5 + 1] + '%\\'';\n }\n else if (singleSubSubSubSubFilter === 'endswith') {\n filters[i][i2][i3][i4][i5] = 'LIKE';\n singleSubSubSubSubFilter = 'LIKE';\n\n filters[i][i2][i3][i4][i5 + 1] = '\\'%' + filters[i][i2][i3][i4][i5 + 1] + '\\'';\n }\n else if (singleSubSubSubSubFilter === '=' || singleSubSubSubSubFilter === '<>' || singleSubSubSubSubFilter === '>' || singleSubSubSubSubFilter === '>=' || singleSubSubSubSubFilter === '<' || singleSubSubSubSubFilter === '<=') {\n if (!filters[i][i2][i3][i4][i5 + 1])\n filters[i][i2][i3][i4][i5 + 1] = 'NULL';\n else if (typeof filters[i][i2][i3][i4][i5 + 1] === 'string') {\n filters[i][i2][i3][i4][i5 + 1] = '\\'' + filters[i][i2][i3][i4][i5 + 1] + '\\'';\n }\n }\n else if (singleSubSubSubSubFilter === '!') {\n filters[i][i2][i3][i4][i5] = 'NOT';\n singleSubSubSubSubFilter = 'NOT';\n }\n\n sqlFilter += ' ' + singleSubSubSubSubFilter + ' ';\n }\n else if (singleSubSubSubSubFilterType.toString() === 'object' && singleSubSubSubSubFilterIsDate) {\n sqlFilter += ' \\'' + singleSubSubSubSubFilter.toISOString().split('T')[0] + '\\' ';\n }\n else if (singleSubSubSubSubFilterType.toString() === 'number') {\n sqlFilter += ' ' + singleSubSubSubSubFilter.toString() + ' ';\n }\n else if (singleSubSubSubSubFilterType.toString() === 'boolean') {\n if (singleSubSubSubSubFilter.toString() === 'true')\n sqlFilter += '1 ';\n else if (singleSubSubSubSubFilter.toString() === 'false' || singleSubSubSubSubFilter === null || singleSubSubSubSubFilter === undefined)\n sqlFilter += '0 ';\n }\n }\n }\n else if (singleSubSubSubFilterType.toString() === 'string') {\n if (singleSubSubSubFilter === 'contains') {\n filters[i][i2][i3][i4] = 'LIKE';\n singleSubSubSubFilter = 'LIKE';\n\n filters[i][i2][i3][i4 + 1] = '\\'%' + filters[i][i2][i3][i4 + 1] + '%\\'';\n }\n else if (singleSubSubSubFilter === 'notcontains') {\n filters[i][i2][i3][i4] = 'NOT LIKE';\n singleSubSubSubFilter = 'NOT LIKE';\n\n filters[i][i2][i3][i4 + 1] = '\\'%' + filters[i][i2][i3][i4 + 1] + '%\\'';\n }\n else if (singleSubSubSubFilter === 'startswith') {\n filters[i][i2][i3][i4] = 'LIKE';\n singleSubSubSubFilter = 'LIKE';\n\n filters[i][i2][i3][i4 + 1] = '\\'' + filters[i][i2][i3][i4 + 1] + '%\\'';\n }\n else if (singleSubSubSubFilter === 'endswith') {\n filters[i][i2][i3][i4] = 'LIKE';\n singleSubSubSubFilter = 'LIKE';\n\n filters[i][i2][i3][i4 + 1] = '\\'%' + filters[i][i2][i3][i4 + 1] + '\\'';\n }\n else if (singleSubSubSubFilter === '=' || singleSubSubSubFilter === '<>' || singleSubSubSubFilter === '>' || singleSubSubSubFilter === '>=' || singleSubSubSubFilter === '<' || singleSubSubSubFilter === '<=') {\n if (!filters[i][i2][i3][i4 + 1])\n filters[i][i2][i3][i4 + 1] = 'NULL';\n else if (typeof filters[i][i2][i3][i4 + 1] === 'string') {\n filters[i][i2][i3][i4 + 1] = '\\'' + filters[i][i2][i3][i4 + 1] + '\\'';\n }\n }\n else if (singleSubSubSubFilter === '!') {\n filters[i][i2][i3][i4] = 'NOT';\n singleSubSubSubFilter = 'NOT';\n }\n\n sqlFilter += ' ' + singleSubSubSubFilter + ' ';\n }\n else if (singleSubSubSubFilterType.toString() === 'object' && singleSubSubSubFilterIsDate) {\n sqlFilter += ' \\'' + singleSubSubSubFilter.toISOString().split('T')[0] + '\\' ';\n }\n else if (singleSubSubSubFilterType.toString() === 'number') {\n sqlFilter += ' ' + singleSubSubSubFilter.toString() + ' ';\n }\n else if (singleSubSubSubFilterType.toString() === 'boolean') {\n if (singleSubSubSubFilter.toString() === 'true')\n sqlFilter += '1 ';\n else if (singleSubSubSubFilter.toString() === 'false' || singleSubSubSubFilter === null || singleSubSubSubFilter === undefined)\n sqlFilter += '0 ';\n }\n }\n\n sqlFilter += ')';\n }\n else if (singleSubSubFilterType.toString() === 'string') {\n if (singleSubSubFilter === 'contains') {\n filters[i][i2][i3] = 'LIKE';\n singleSubSubFilter = 'LIKE';\n\n filters[i][i2][i3 + 1] = '\\'%' + filters[i][i2][i3 + 1] + '%\\'';\n }\n else if (singleSubSubFilter === 'notcontains') {\n filters[i][i2][i3] = 'NOT LIKE';\n singleSubSubFilter = 'NOT LIKE';\n\n filters[i][i2][i3 + 1] = '\\'%' + filters[i][i2][i3 + 1] + '%\\'';\n }\n else if (singleSubSubFilter === 'startswith') {\n filters[i][i2][i3] = 'LIKE';\n singleSubSubFilter = 'LIKE';\n\n filters[i][i2][i3 + 1] = '\\'' + filters[i][i2][i3 + 1] + '%\\'';\n }\n else if (singleSubSubFilter === 'endswith') {\n filters[i][i2][i3] = 'LIKE';\n singleSubSubFilter = 'LIKE';\n\n filters[i][i2][i3 + 1] = '\\'%' + filters[i][i2][i3 + 1] + '\\'';\n }\n else if (singleSubSubFilter === '=' || singleSubSubFilter === '<>' || singleSubSubFilter === '>' || singleSubSubFilter === '>=' || singleSubSubFilter === '<' || singleSubSubFilter === '<=') {\n if (!filters[i][i2][i3 + 1])\n filters[i][i2][i3 + 1] = 'NULL';\n else if (typeof filters[i][i2][i3 + 1] === 'string') {\n filters[i][i2][i3 + 1] = '\\'' + filters[i][i2][i3 + 1] + '\\'';\n }\n }\n else if (singleSubSubFilter === '!') {\n filters[i][i2][i3] = 'NOT';\n singleSubSubFilter = 'NOT';\n }\n sqlFilter += ' ' + singleSubSubFilter + ' ';\n }\n else if (singleSubSubFilterType.toString() === 'object' && singleSubSubFilterIsDate) {\n sqlFilter += ' \\'' + singleSubSubFilter.toISOString().split('T')[0] + '\\' ';\n }\n else if (singleSubSubFilterType.toString() === 'number') {\n sqlFilter += ' ' + singleSubSubFilter.toString() + ' ';\n }\n else if (singleSubSubFilterType.toString() === 'boolean') {\n if (singleSubSubFilter.toString() === 'true')\n sqlFilter += '1 ';\n else if (singleSubSubFilter.toString() === 'false' || singleSubSubFilter === null || singleSubSubFilter === undefined)\n sqlFilter += '0 ';\n }\n }\n\n sqlFilter += ')';\n }\n else if (singleSubFilterType.toString() === 'string') {\n if (singleSubFilter === 'contains') {\n filters[i][i2] = 'LIKE';\n singleSubFilter = 'LIKE';\n\n filters[i][i2 + 1] = '\\'%' + filters[i][i2 + 1] + '%\\'';\n }\n else if (singleSubFilter === 'notcontains') {\n filters[i][i2] = 'NOT LIKE';\n singleSubFilter = 'NOT LIKE';\n\n filters[i][i2 + 1] = '\\'%' + filters[i][i2 + 1] + '%\\'';\n }\n else if (singleSubFilter === 'startswith') {\n filters[i][i2] = 'LIKE';\n singleSubFilter = 'LIKE';\n\n filters[i][i2 + 1] = '\\'' + filters[i][i2 + 1] + '%\\'';\n }\n else if (singleSubFilter === 'endswith') {\n filters[i][i2] = 'LIKE';\n singleSubFilter = 'LIKE';\n\n filters[i][i2 + 1] = '\\'%' + filters[i][i2 + 1] + '\\'';\n }\n else if (singleSubFilter === '=' || singleSubFilter === '<>' || singleSubFilter === '>' || singleSubFilter === '>=' || singleSubFilter === '<' || singleSubFilter === '<=') {\n if (!filters[i][i2 + 1])\n filters[i][i2 + 1] = 'NULL';\n else if (typeof filters[i][i2 + 1] === 'string') {\n filters[i][i2 + 1] = '\\'' + filters[i][i2 + 1] + '\\'';\n }\n }\n else if (singleSubFilter === '!') {\n filters[i][i2] = 'NOT';\n singleSubFilter = 'NOT';\n }\n sqlFilter += ' ' + singleSubFilter + ' ';\n }\n else if (singleSubFilterType.toString() === 'object' && singleSubFilterIsDate) {\n sqlFilter += ' \\'' + singleSubFilter.toISOString().split('T')[0] + '\\' ';\n }\n else if (singleSubFilterType.toString() === 'number') {\n sqlFilter += ' ' + singleSubFilter.toString() + ' ';\n }\n else if (singleSubFilterType.toString() === 'boolean') {\n if (singleSubFilter.toString() === 'true')\n sqlFilter += '1 ';\n else if (singleSubFilter.toString() === 'false' || singleSubFilter === null || singleSubFilter === undefined)\n sqlFilter += '0 ';\n }\n }\n\n sqlFilter += ')';\n }\n else if (singleFilterType.toString() === 'string') {\n if (singleFilter === 'contains') {\n filters[i] = 'LIKE';\n singleFilter = 'LIKE';\n\n filters[i + 1] = '\\'%' + filters[i + 1] + '%\\'';\n }\n else if (singleFilter === 'notcontains') {\n filters[i] = 'NOT LIKE';\n singleFilter = 'NOT LIKE';\n\n filters[i + 1] = '\\'%' + filters[i + 1] + '%\\'';\n }\n else if (singleFilter === 'startswith') {\n filters[i] = 'LIKE';\n singleFilter = 'LIKE';\n\n filters[i + 1] = '\\'' + filters[i + 1] + '%\\'';\n }\n else if (singleFilter === 'endswith') {\n filters[i] = 'LIKE';\n singleFilter = 'LIKE';\n\n filters[i + 1] = '\\'%' + filters[i + 1] + '\\'';\n }\n else if (singleFilter === '=' || singleFilter === '<>' || singleFilter === '>' || singleFilter === '>=' || singleFilter === '<' || singleFilter === '<=') {\n if (!filters[i + 1])\n filters[i + 1] = 'NULL';\n else if (typeof filters[i + 1] === 'string') {\n filters[i + 1] = '\\'' + filters[i + 1] + '\\'';\n }\n }\n else if (singleFilter === '!') {\n filters[i] = 'NOT';\n singleFilter = 'NOT';\n }\n sqlFilter += ' ' + singleFilter + ' ';\n }\n else if (singleFilterType.toString() === 'object' && singleFilterIsDate) {\n sqlFilter += ' \\'' + singleFilter.toISOString().split('T')[0] + '\\' ';\n }\n else if (singleFilterType.toString() === 'number') {\n sqlFilter += ' ' + singleFilter.toString() + ' ';\n }\n else if (singleFilterType.toString() === 'boolean') {\n if (singleFilter.toString() === 'true')\n sqlFilter += '1 ';\n else if (singleFilter.toString() === 'false' || singleFilter === null || singleFilter === undefined)\n sqlFilter += '0 ';\n }\n }\n\n sqlFilter += ')';\n }\n });\n\n async function getRecords() {\n if (sqlFilter === '(')\n sqlFilter = '';\n\n var records = await getInvoiceRecords(sqlFilter);\n return {\n data: records,\n totalCount: records.length\n };\n }\n\n return getRecords()\n .then(function (result) {\n return result;\n })\n .catch(() => { throw new Error('Data Loading Error'); });\n },\n });\n\n function onAutoExpandAllChanged() {\n setAutoExpandAll(!autoExpandAll)\n };\n\n function onAutoExpandAllChecklistChanged() {\n setAutoExpandAllChecklist(!autoExpandAllChecklist)\n };\n\n function onSelectionChanged({ selectedRowKeys, selectedRowsData }) {\n }\n\n function onOptionChanged(e) {\n if (e.name !== 'focusedRowIndex' && e.name !== 'focusedColumnIndex' && e.name !== 'selectedRowKeys') {\n e.component.on(\"contentReady\", () => {\n e.component.off(\"contentReady\");\n e.component.clearSelection();\n });\n }\n }\n\n function estatusInvoice(data) {\n return (\n <span className={data.data.Estatus === \"Concluido\" ? \"px-2 py-1 font-semibold leading-tight text-green-700 bg-green-100 rounded-sm\" : \"px-2 py-1 font-semibold leading-tight text-red-700 bg-red-100 rounded-sm\"}> {data.data.Estatus} </span>\n )\n }\n\n async function processButton() {\n if (!props.usuario) {\n setVisibleToast(true);\n setMessageToast('Configuración de usuario incorrecta. Comunicarse con el área de sistemas');\n setTypeToast('error')\n return;\n }\n\n if (gridFacturasRef.current) {\n var gridFacturas = gridFacturasRef.current.instance();\n\n var keys = gridFacturas.getSelectedRowKeys();\n\n var arrayInvoice = [];\n\n for (var keysIndex in keys) {\n arrayInvoice.push({\n ID: keys[keysIndex]\n });\n }\n\n if (arrayInvoice.length === 0) {\n setVisibleToast(true);\n setMessageToast('Falta seleccionar las facturas a Afectar');\n setTypeToast('error')\n }\n else {\n if (!window.confirm('Se afectarán ' + arrayInvoice.length + ' facturas. ¿Desea continuar?'))\n return;\n\n setVisibleLoadPanel(true);\n\n var lambdaFunction;\n\n if (window.location.href.indexOf('sandbox.') >= 0 || window.location.href.indexOf('localhost') >= 0)\n lambdaFunction = 'procesaFacturasLote-dev';\n else if (window.location.href.indexOf('sandboxtampico.') >= 0)\n lambdaFunction = 'procesaFacturasLote-devleona';\n else if (window.location.href.indexOf('tampico.') >= 0)\n lambdaFunction = 'procesaFacturasLote-prodleona';\n else\n lambdaFunction = 'procesaFacturasLote-prod';\n\n Auth.currentCredentials()\n .then(credentials => {\n const lambda = new Lambda({\n credentials: Auth.essentialCredentials(credentials),\n region: 'us-east-1'\n });\n\n var params = {\n FunctionName: lambdaFunction,\n Payload: JSON.stringify({\n action: 'process',\n usuario: props.usuario,\n invoices: arrayInvoice\n })\n };\n\n lambda.invoke(params, function (err, data) {\n if (err) {\n setVisibleLoadPanel(false);\n\n console.log(err, err.stack);\n }\n else {\n setVisibleLoadPanel(false);\n\n setVisibleToast(true);\n setMessageToast('Proceso concluido');\n setTypeToast('success');\n\n gridFacturas.refresh();\n }\n });\n })\n\n }\n }\n };\n\n function printButton() {\n if (!props.usuario) {\n setVisibleToast(true);\n setMessageToast('Configuración de usuario incorrecta. Comunicarse con el área de sistemas');\n setTypeToast('error')\n\n return;\n }\n\n if (gridFacturasRef.current) {\n var gridFacturas = gridFacturasRef.current.instance();\n\n var keys = gridFacturas.getSelectedRowKeys();\n\n var arrayInvoice = [];\n\n var pdfArray = '';\n\n for (var keysIndex in keys) {\n arrayInvoice.push({\n ID: keys[keysIndex]\n });\n\n pdfArray += keys[keysIndex].toString() + '%2C';\n }\n\n if (arrayInvoice.length === 0) {\n setVisibleToast(true);\n setMessageToast('Falta seleccionar las facturas a Imprimir');\n setTypeToast('error')\n }\n else {\n if (!window.confirm('Se imprimirán ' + arrayInvoice.length + ' facturas. ¿Desea continuar?'))\n return;\n\n setVisibleLoadPanel(true);\n\n var lambdaFunction;\n\n if (window.location.href.indexOf('sandbox.') >= 0 || window.location.href.indexOf('localhost') >= 0)\n lambdaFunction = 'procesaFacturasLote-dev';\n else if (window.location.href.indexOf('sandboxtampico.') >= 0)\n lambdaFunction = 'procesaFacturasLote-devleona';\n else if (window.location.href.indexOf('tampico.') >= 0)\n lambdaFunction = 'procesaFacturasLote-prodleona';\n else\n lambdaFunction = 'procesaFacturasLote-prod';\n\n Auth.currentCredentials()\n .then(credentials => {\n const lambda = new Lambda({\n credentials: Auth.essentialCredentials(credentials),\n region: 'us-east-1'\n });\n\n var params = {\n FunctionName: lambdaFunction,\n Payload: JSON.stringify({\n action: 'printWHS',\n usuario: props.usuario,\n invoices: arrayInvoice\n })\n };\n\n lambda.invoke(params, function (err, data) {\n if (err) {\n setVisibleLoadPanel(false);\n\n console.log(err, err.stack);\n }\n else {\n setVisibleLoadPanel(false);\n\n setVisibleToast(true);\n setMessageToast('Proceso concluido');\n setTypeToast('success');\n\n gridFacturas.refresh();\n\n var baseUrl = window.location.href.split('/')[0];\n\n window.open(baseUrl + \"/#/PdfRender?type=invoice&id=\" + pdfArray, \"_blank\");\n }\n });\n })\n }\n }\n };\n\n function refreshButton() {\n if (gridFacturasRef.current) {\n var gridFacturas = gridFacturasRef.current.instance();\n\n gridFacturas.refresh();\n }\n }\n\n useEffect(() => {\n // eslint-disable-next-line\n\n }, []);\n\n function onHidingToast() {\n setVisibleToast(false);\n }\n\n function onExporting(e) {\n const workbook = new Workbook();\n const worksheet = workbook.addWorksheet('Datos');\n\n exportDataGrid({\n component: e.component,\n worksheet,\n autoFilterEnabled: true,\n }).then(() => {\n workbook.xlsx.writeBuffer().then((buffer) => {\n saveAs(new Blob([buffer], { type: 'application/octet-stream' }), 'Datos.xlsx');\n });\n });\n e.cancel = true;\n };\n\n return (\n <div>\n <div class=\"bg-gray-200 m-2\">\n <h1 class=\"font-sans inline-block text-xl font-bold text-gray-700 leading-8 align-top mb-1\"><FontAwesomeIcon icon={faList} size=\"lg\" /> Procesar Facturas - Bodega</h1>\n </div>\n\n <div class=\"bg-gray-200 m-2\">\n {props.afectarFacturas.toString() === 'true' ?\n (\n <button onClick={processButton} type=\"submit\" class=\"mb-4 bg-green-500 hover:bg-green-700 text-white font-bold py-2 px-4 rounded\">\n <FontAwesomeIcon icon={faPlay} /> Afectar\n </button>\n ) :\n (\n <div></div>\n )\n }\n\n {props.afectarFacturas.toString() === 'true' ?\n (\n <button onClick={printButton} type=\"submit\" class=\"ml-4 mb-4 bg-gray-500 hover:bg-gray-700 text-white font-bold py-2 px-4 rounded\">\n <FontAwesomeIcon icon={faPrint} /> Imprimir\n </button>\n ) :\n (\n <button onClick={printButton} type=\"submit\" class=\"mb-4 bg-gray-500 hover:bg-gray-700 text-white font-bold py-2 px-4 rounded\">\n <FontAwesomeIcon icon={faPrint} /> Imprimir\n </button>\n )\n }\n\n <button onClick={refreshButton} type=\"submit\" class=\"ml-4 mb-4 bg-blue-500 hover:bg-blue-700 text-white font-bold py-2 px-4 rounded\">\n <FontAwesomeIcon icon={faArrowsRotate} /> Actualizar\n </button>\n\n <LoadPanel\n shadingColor=\"rgba(0,0,0,0.4)\"\n visible={visibleLoadPanel}\n showIndicator={true}\n message=\"Por favor espere...\"\n shading={true}\n showPane={true}\n hideOnOutsideClick={false}\n />\n\n <Toast\n visible={visibleToast}\n message={messageToast}\n type={typeToast}\n onHiding={onHidingToast}\n displayTime={5000}\n width={'auto'}\n position={{\n my: 'top center',\n at: 'top center',\n of: window,\n offset: '0 130'\n }}\n />\n\n <div class=\"bg-white p-3 shadow-xl\">\n <div className=\"options mb-2\">\n <div className=\"option\">\n <CheckBox text=\"Expandir todos los grupos\"\n value={autoExpandAll}\n onValueChanged={onAutoExpandAllChanged}>\n </CheckBox>\n </div>\n </div>\n <DataGrid\n id=\"gridInvoices\"\n columnsAutoWidth={true}\n filterBuilder={filterBuilder}\n dataSource={store}\n defaultFilterValue={filterValue}\n allowColumnReordering={true}\n allowColumnResizing={true}\n columnResizingMode={\"widget\"}\n showBorders={true}\n rowAlternationEnabled={true}\n showRowLines={true}\n showColumnLines={true}\n remoteOperations={{ filtering: true }}\n onSelectionChanged={onSelectionChanged}\n onOptionChanged={onOptionChanged}\n ref={gridFacturasRef}\n onExporting={onExporting}\n >\n <Scrolling rowRenderingMode='virtual'></Scrolling>\n <Paging defaultPageSize={0} />\n <Pager\n visible={true}\n allowedPageSizes={allowedPageSizes}\n displayMode='compact'\n showPageSizeSelector={true}\n showInfo={true}\n showNavigationButtons={true} />\n <FilterRow visible={true} />\n <FilterPanel visible={true} />\n <FilterBuilderPopup position={filterBuilderPopupPosition} />\n\n <HeaderFilter visible={true} />\n\n <GroupPanel visible={true} />\n <SearchPanel visible={true} />\n <ColumnChooser\n enabled={true}\n mode='select'\n >\n <ColumnChooserSearch\n enabled={true}\n />\n\n <ColumnChooserSelection\n allowSelectAll={true}\n selectByClick={true}\n recursive={true}\n />\n </ColumnChooser>\n <Grouping autoExpandAll={autoExpandAll} />\n <StateStoring enabled={true} type=\"localStorage\" storageKey=\"gridProcesarFacturasBodega\" />\n <Export enabled={true} />\n\n <Selection\n mode=\"multiple\"\n selectAllMode={'page'}\n showCheckBoxesMode={'always'}\n />\n\n <Column dataField=\"ID\" dataType=\"number\" width={120} caption=\"ID\" visible={false} />\n <Column dataField=\"Mov\" dataType=\"string\" width={110} caption=\"Movimiento\" />\n <Column dataField=\"MovID\" dataType=\"string\" width={110} caption=\"Folio\" />\n <Column dataField=\"FechaEmision\" caption=\"Fecha Emisión\" dataType=\"date\" width={130} />\n <Column caption=\"Estatus Transacción\" alignment=\"center\" width={120} cellRender={estatusInvoice} visible={false} />\n <Column dataField=\"Estatus\" caption=\"Estatus\" dataType=\"string\" width={120} />\n <Column dataField=\"NombreSucursal\" caption=\"Nombre Sucursal\" dataType=\"string\" width={250} />\n\n <Column dataField=\"Pedido\" dataType=\"string\" width={120} />\n <Column dataField=\"TipoPedido\" caption=\"Tipo de Pedido\" dataType=\"string\" width={130} />\n <Column dataField=\"Importe\" caption=\"Importe\" dataType=\"number\" width={150} visible={false}>\n <Format\n type=\"currency\"\n precision={2}\n />\n </Column>\n <Column dataField=\"Impuestos\" caption=\"Impuestos\" dataType=\"number\" width={150} visible={false}>\n <Format\n type=\"currency\"\n precision={2}\n />\n </Column>\n <Column dataField=\"ImporteTotal\" caption=\"Importe Total\" dataType=\"number\" width={150}>\n <Format\n type=\"currency\"\n precision={2}\n />\n </Column>\n <Column dataField=\"Cliente\" caption=\"Cliente\" dataType=\"string\" width={150} />\n <Column dataField=\"NombreCliente\" caption=\"Nombre Cliente\" dataType=\"string\" width={250} />\n\n <Column dataField=\"Sucursal\" dataType=\"number\" width={150} visible={false} />\n <Column dataField=\"Plaza\" dataType=\"string\" width={250} visible={false} />\n\n <Column dataField=\"IDPedido\" caption=\"ID Pedido\" dataType=\"number\" width={150} visible={false} />\n <Column dataField=\"Anticipos\" dataType=\"number\" width={150} visible={false}>\n <Format\n type=\"currency\"\n precision={2}\n />\n </Column>\n\n <Column dataField=\"EstatusProg\" caption=\"Estatus Programación\" dataType=\"string\" width={150} />\n <Column dataField=\"TipoProgramacion\" caption=\"Tipo Programación\" dataType=\"string\" width={150} />\n <Column dataField=\"FechaVenta\" caption=\"Fecha de Venta\" dataType=\"date\" width={150} visible={false} />\n <Column dataField=\"FechaProgramada\" caption=\"Fecha Programada\" dataType=\"date\" width={150} visible={false} />\n <Column dataField=\"Comentarios\" dataType=\"string\" width={150} visible={false} />\n <Column dataField=\"PorcEntrega\" caption=\"% Entrega\" dataType=\"number\" width={150} >\n <Format\n type=\"percent\"\n />\n </Column>\n\n <Column dataField=\"SituacionFacturacionBodega\" caption=\"Situación Facturación\" width={150} visible={false} />\n <Column dataField=\"FechaImpresionBodega\" caption=\"Fecha Impresión\" dataType=\"datetime\" width={150} visible={false} />\n <Column dataField=\"UsuarioImpresionBodega\" caption=\"Usuario Impresión\" width={150} visible={false} />\n <Column dataField=\"PlazaEntrega\" dataType=\"string\" width={250} caption=\"Plaza Entrega\" visible={false} />\n\n <Summary>\n <GroupItem\n column=\"Importe\"\n summaryType=\"sum\"\n valueFormat=\"$,##0.##\"\n displayFormat=\"Total {0}\"\n showInGroupFooter={false}>\n </GroupItem>\n <TotalItem\n column=\"Importe\"\n summaryType=\"sum\"\n valueFormat=\"$,##0.##\"\n displayFormat=\"Total {0}\"\n showInColumn=\"Importe\">\n </TotalItem>\n </Summary>\n </DataGrid>\n </div>\n </div>\n </div>\n );\n}","import React, { useState, useEffect, useRef, useMemo } from 'react';\n\n// LoadPanel\nimport { LoadPanel } from 'devextreme-react/load-panel';\n\n// Toast\nimport { Toast } from 'devextreme-react/toast';\n\n//Form\nimport Form, { GroupItem, Label, TabbedItem, TabPanelOptions, Tab, EmptyItem } from 'devextreme-react/form';\n\n//Validator\nimport { EmailRule, CustomRule } from 'devextreme-react/validator';\n\nimport { Auth, API, Storage } from 'aws-amplify';\n\n// Ruteador\nimport { Route, Link, useHistory } from \"react-router-dom\";\n\n// Grid\nimport DataGrid, {\n Column, FilterRow, HeaderFilter, FilterPanel, FilterBuilderPopup,\n GroupPanel, Grouping, SearchPanel, Sorting, Editing, Lookup, Toolbar, Item, RequiredRule,\n Scrolling, Pager, Paging, Summary, TotalItem, StateStoring, ColumnChooser, Format, Selection,\n Export, ColumnChooserSearch, ColumnChooserSelection\n} from 'devextreme-react/data-grid';\n\n//CheckBox\nimport CheckBox from 'devextreme-react/check-box';\n\n//ContextMenu\nimport ContextMenu from 'devextreme-react/context-menu';\n\n// Iconos\nimport { FontAwesomeIcon } from \"@fortawesome/react-fontawesome\";\nimport { faGlasses } from \"@fortawesome/pro-solid-svg-icons\";\nimport { faPencilAlt } from \"@fortawesome/pro-solid-svg-icons\";\nimport { faArrowRotateLeft } from \"@fortawesome/pro-solid-svg-icons\";\nimport { faSave } from \"@fortawesome/pro-solid-svg-icons\";\nimport { faList } from \"@fortawesome/pro-duotone-svg-icons\";\nimport { faFilePdf } from \"@fortawesome/pro-solid-svg-icons\";\nimport { faArrowsRotate } from \"@fortawesome/pro-solid-svg-icons\";\nimport { faFileAlt } from \"@fortawesome/pro-solid-svg-icons\";\nimport { faCommentDollar } from \"@fortawesome/pro-duotone-svg-icons\";\nimport { faPlay } from \"@fortawesome/pro-solid-svg-icons\";\nimport { faTrash } from \"@fortawesome/pro-solid-svg-icons\";\nimport { faWindowClose } from \"@fortawesome/pro-solid-svg-icons\";\nimport { faArrowUpRightFromSquare } from \"@fortawesome/pro-solid-svg-icons\";\nimport { faCirclePhone as faCirclePhoneButton } from \"@fortawesome/pro-solid-svg-icons\";\nimport { faCartPlus as faCartPlusButton } from \"@fortawesome/pro-solid-svg-icons\";\nimport { faCartMinus as faCartMinusButton } from \"@fortawesome/pro-solid-svg-icons\";\nimport { faHandshake } from \"@fortawesome/pro-solid-svg-icons\";\nimport { faThumbsDown } from \"@fortawesome/pro-solid-svg-icons\";\nimport { faEnvelope } from \"@fortawesome/pro-solid-svg-icons\";\n\n// Iconos tablero de Control\nimport { faFilterCircleDollar } from \"@fortawesome/pro-duotone-svg-icons\";\nimport { faCirclePhone } from \"@fortawesome/pro-duotone-svg-icons\";\nimport { faCartPlus } from \"@fortawesome/pro-duotone-svg-icons\";\nimport { faCartMinus } from \"@fortawesome/pro-duotone-svg-icons\";\n\nimport 'devextreme/data/odata/store';\nimport CustomStore from 'devextreme/data/custom_store';\n\nimport DataSource from 'devextreme/data/data_source';\n\nimport '../ListStyle.css';\n\n//FileUploader\nimport FileUploader from 'devextreme-react/file-uploader';\n\n//FileManager\nimport FileManager, { Permissions } from 'devextreme-react/file-manager';\n\nimport dxDateBox from \"devextreme/ui/date_box\";\n\nimport dxNumberBox from \"devextreme/ui/number_box\";\n\nimport TransactionStatus from \"../TransactionStatus/TransactionStatus.js\";\n\nimport Lambda from 'aws-sdk/clients/lambda';\n\nimport { Workbook } from 'exceljs';\nimport { saveAs } from 'file-saver';\nimport { exportDataGrid } from 'devextreme/excel_exporter'\n\ndxDateBox.defaultOptions({\n options: {\n dateSerializationFormat: \"yyyy-MM-dd\"\n }\n});\n\ndxNumberBox.defaultOptions({\n options: {\n step: 0\n }\n});\n\nfunction isNotEmpty(value) {\n return value !== undefined && value !== null && value !== '';\n}\n\nexport default function Estimate(props) {\n const history = useHistory();\n\n const [isDetail, setIsDetail] = useState(false);\n const [id, setId] = useState();\n const [permissionLevel, setPermissionLevel] = useState(props.nivel);\n const [estimatePayload, setEstimatePayload] = useState({\n header: {},\n detail: [],\n shippingAddress: {},\n billingAddress: {},\n relatedRecords: [],\n movEstatusLog: []\n });\n\n const [lostDeal, setLostDeal] = useState(props.lostDeal);\n const [lostDealLevel, setLostDealLevel] = useState(props.lostDealLevel);\n\n const [salesOrder, setSalesOrder] = useState(props.salesOrder);\n const [salesOrderLevel, setSalesOrderLevel] = useState(props.salesOrderLevel);\n\n const [autoExpandAll, setAutoExpandAll] = useState(true);\n\n // setValue para el control tab\n const [value, setValue] = React.useState(0);\n\n const [visibleLoadPanel, setVisibleLoadPanel] = useState(false);\n\n const [visibleToast, setVisibleToast] = useState(false);\n const [messageToast, setMessageToast] = useState('');\n const [typeToast, setTypeToast] = useState('success');\n\n const [fiscalRegimen, setFiscalRegimen] = useState([]);\n const [filtroUsoCFDI, setFiltroUsoCFDI] = useState([]);\n const [usuarios, setUsuarios] = useState([]);\n const [agente, setAgente] = useState(props.agente);\n const [sucursal, setSucursal] = useState(props.sucursal);\n const [agentes, setAgentes] = useState([]);\n const [listaPrecios, setListaPrecios] = useState([]);\n const [conceptos, setConceptos] = useState([]);\n const [condiciones, setCondiciones] = useState([]);\n const [colonias, setColonias] = useState([]);\n const [colonias1, setColonias1] = useState([]);\n\n const [activateUpdateGrid, setActivateUpdateGrid] = useState(false);\n const [acceptCustomValues, setAcceptCustomValue] = useState(false);\n const [activateSaveButton, setActivateSaveButton] = useState(false);\n const [activateConfirmButton, setActivateConfirmButton] = useState(false);\n const [activateDeleteButton, setActivateDeleteButton] = useState(false);\n const [activateCancelButton, setActivateCancelButton] = useState(false);\n const [activatePDFButton, setActivatePDFButton] = useState(false);\n const [activateUpdateForm, setActivateUpdateForm] = useState(false);\n const [activateAttachments, setActivateAttachments] = useState(false);\n const [activateSinAfectarPendienteFields, setActivateSinAfectarPendienteFields] = useState(false);\n const [activateSinAfectarFields, setActivateSinAfectarFields] = useState(false);\n const [activateCambiarCliente, setActivateCambiarCliente] = useState(false);\n const [activatePorLlamar, setActivatePorLlamar] = useState(false);\n const [activateCompra, setActivateCompra] = useState(false);\n const [activateBaja, setActivateBaja] = useState(false);\n const [activatePedido, setActivatePedido] = useState(false);\n const [activateVentaPerdida, setActivateVentaPerdida] = useState(false);\n const [activateSendEstimate, setActivateSendEstimate] = useState(false);\n\n const [conDatosIguales, setConDatosIguales] = useState(false);\n const [conCambiarCliente, setConCambiarCliente] = useState(false);\n const [conAutorizacionPrecio, setConAutorizacionPrecio] = useState(false);\n\n //Ref para el form\n const [formDatosGeneralesRef, setFormDatosGeneralesRef] = useState(React.createRef());\n\n //Ref para el grid Articulos\n const [gridArticulosRef, setGridArticulosRef] = useState(React.createRef());\n\n const [attachments, setAttachments] = useState([]);\n\n const handleChange = (event, newValue) => {\n setValue(newValue);\n };\n\n const tipoPedido = useMemo(() => {\n return [\n { name: 'NORMAL', value: 'NORMAL' },\n { name: 'INSTITUCIONAL', value: 'INSTITUCIONAL' }\n ];\n }, []);\n\n const filterBuilderPopupPosition = {\n of: window,\n at: 'top',\n my: 'top',\n offset: { y: 10 },\n };\n\n const allowedPageSizes = [5, 10, 15, 20, 'all'];\n\n const exportFormats = ['xlsx'];\n\n function getOrderDay(rowData) {\n return (new Date(rowData.OrderDate)).getDay();\n }\n\n const filterBuilder = {\n customOperations: [{\n name: 'weekends',\n caption: 'Weekends',\n dataTypes: ['date'],\n icon: 'check',\n hasValue: false,\n calculateFilterExpression: () => [[getOrderDay, '=', 0], 'or', [getOrderDay, '=', 6]],\n }],\n allowHierarchicalFields: true,\n };\n\n const filterValue = [['Estatus', '=', 'Sin Afectar']];\n\n //Ref para el grid Tablero de Control\n const [gridTableroRef, setGridTableroRef] = useState(React.createRef());\n\n function onAutoExpandAllChanged() {\n setAutoExpandAll(!autoExpandAll)\n };\n\n const getEstimateRecords = React.useCallback(async (sqlFilter) => {\n try {\n let apiName = 'AdminSC';\n let path = '/procesacotizaciones';\n\n let myInit = {\n headers: {\n 'Content-Type': 'application/json',\n Authorization: `${(await Auth.currentSession()).getAccessToken().getJwtToken()}`\n },\n queryStringParameters: {\n action: 'list',\n sqlFilter: sqlFilter,\n salesAccess: props.salesAccess,\n sucursal: props.sucursal,\n username: JSON.parse(JSON.stringify(await Auth.currentAuthenticatedUser())).username,\n }\n }\n\n var estimatesGet = await API.get(apiName, path, myInit);\n }\n catch (e) {\n if (e === 'No current user') {\n history.push('/');\n\n window.location.reload();\n }\n }\n\n return estimatesGet;\n }, [history, props.salesAccess, props.sucursal]);\n\n const getCliente = React.useCallback(async (sqlFilter) => {\n let apiName = 'AdminSC';\n let path = '/getcatalogo';\n\n let myInit = {\n headers: {\n 'Content-Type': 'application/json',\n Authorization: `${(await Auth.currentSession()).getAccessToken().getJwtToken()}`\n },\n queryStringParameters: {\n type: 'Cliente',\n username: JSON.parse(JSON.stringify(await Auth.currentAuthenticatedUser())).username,\n sqlFilter: sqlFilter\n }\n }\n\n var articulosGet = await API.get(apiName, path, myInit);\n\n return articulosGet;\n }, []);\n\n const getArticulo = React.useCallback(async (sqlFilter) => {\n let apiName = 'AdminSC';\n let path = '/getcatalogo';\n\n var ListaPreciosEsp = estimatePayload.header.ListaPreciosEsp;\n\n let myInit = {\n headers: {\n 'Content-Type': 'application/json',\n Authorization: `${(await Auth.currentSession()).getAccessToken().getJwtToken()}`\n },\n queryStringParameters: {\n type: 'ObtenerPrecioArticuloPedido',\n username: JSON.parse(JSON.stringify(await Auth.currentAuthenticatedUser())).username,\n sqlFilter: sqlFilter,\n ListaPreciosEsp: ListaPreciosEsp\n }\n }\n\n var articulosGet = await API.get(apiName, path, myInit);\n\n return articulosGet;\n }, [estimatePayload.header.ListaPreciosEsp]);\n\n const getAgente = React.useCallback(async () => {\n let apiName = 'AdminSC';\n let path = '/getcatalogo';\n\n let myInit = {\n headers: {\n 'Content-Type': 'application/json',\n Authorization: `${(await Auth.currentSession()).getAccessToken().getJwtToken()}`\n },\n queryStringParameters: {\n type: 'Agente',\n username: JSON.parse(JSON.stringify(await Auth.currentAuthenticatedUser())).username\n }\n }\n\n var agentesGet = await API.get(apiName, path, myInit);\n\n setAgentes(agentesGet);\n\n return agentesGet;\n }, []);\n\n const getListaPrecios = React.useCallback(async () => {\n let apiName = 'AdminSC';\n let path = '/getcatalogo';\n\n let myInit = {\n headers: {\n 'Content-Type': 'application/json',\n Authorization: `${(await Auth.currentSession()).getAccessToken().getJwtToken()}`\n },\n queryStringParameters: {\n type: 'ListaPrecios',\n sucursal: sucursal,\n username: JSON.parse(JSON.stringify(await Auth.currentAuthenticatedUser())).username\n }\n }\n\n var listaPreciosGet = await API.get(apiName, path, myInit);\n\n setListaPrecios(listaPreciosGet);\n\n return listaPreciosGet;\n }, [sucursal]);\n\n const getConceptos = React.useCallback(async () => {\n let apiName = 'AdminSC';\n let path = '/getcatalogo';\n\n let myInit = {\n headers: {\n 'Content-Type': 'application/json',\n Authorization: `${(await Auth.currentSession()).getAccessToken().getJwtToken()}`\n },\n queryStringParameters: {\n type: 'Concepto',\n modulo: 'VTAS',\n username: JSON.parse(JSON.stringify(await Auth.currentAuthenticatedUser())).username\n }\n }\n\n var conceptosGet = await API.get(apiName, path, myInit);\n\n setConceptos(conceptosGet);\n\n return conceptosGet;\n }, []);\n\n const getCondiciones = React.useCallback(async () => {\n let apiName = 'AdminSC';\n let path = '/getcatalogo';\n\n let myInit = {\n headers: {\n 'Content-Type': 'application/json',\n Authorization: `${(await Auth.currentSession()).getAccessToken().getJwtToken()}`\n },\n queryStringParameters: {\n type: 'Condicion',\n username: JSON.parse(JSON.stringify(await Auth.currentAuthenticatedUser())).username\n }\n }\n\n var condicionesGet = await API.get(apiName, path, myInit);\n\n setCondiciones(condicionesGet);\n\n return condicionesGet;\n }, []);\n\n const getFiscalRegimen = React.useCallback(async (sqlFilter) => {\n let apiName = 'AdminSC';\n let path = '/getcatalogo';\n\n let myInit = {\n headers: {\n 'Content-Type': 'application/json',\n Authorization: `${(await Auth.currentSession()).getAccessToken().getJwtToken()}`\n },\n queryStringParameters: {\n type: 'FiscalRegimen',\n username: JSON.parse(JSON.stringify(await Auth.currentAuthenticatedUser())).username,\n sqlFilter: sqlFilter\n }\n }\n\n var fiscalRegimenGet = await API.get(apiName, path, myInit);\n\n setFiscalRegimen(fiscalRegimenGet);\n }, []);\n\n const getCodigoPostal = React.useCallback(async (sqlFilter) => {\n let apiName = 'AdminSC';\n let path = '/getcatalogo';\n\n let myInit = {\n headers: {\n 'Content-Type': 'application/json',\n Authorization: `${(await Auth.currentSession()).getAccessToken().getJwtToken()}`\n },\n queryStringParameters: {\n type: 'CodigoPostal',\n username: JSON.parse(JSON.stringify(await Auth.currentAuthenticatedUser())).username,\n sqlFilter: sqlFilter\n }\n }\n\n var articulosGet = await API.get(apiName, path, myInit);\n\n return articulosGet;\n }, []);\n\n const getColonia = React.useCallback(async (CodigoPostal, isLoading) => {\n if (isLoading === true)\n setVisibleLoadPanel(true);\n\n var tmpUsoCFDI = [];\n let apiName = 'AdminSC';\n let path = '/getcatalogo';\n\n let myInit = {\n headers: {\n 'Content-Type': 'application/json',\n Authorization: `${(await Auth.currentSession()).getAccessToken().getJwtToken()}`\n },\n queryStringParameters: {\n type: 'Colonia',\n username: JSON.parse(JSON.stringify(await Auth.currentAuthenticatedUser())).username,\n sqlFilter: CodigoPostal\n }\n }\n\n var coloniasGet = await API.get(apiName, path, myInit);\n\n setColonias(coloniasGet);\n\n if (isLoading === true)\n setVisibleLoadPanel(false);\n }, []);\n\n const getColonia1 = React.useCallback(async (CodigoPostal, isLoading) => {\n if (isLoading === true)\n setVisibleLoadPanel(true);\n\n var tmpUsoCFDI = [];\n let apiName = 'AdminSC';\n let path = '/getcatalogo';\n\n let myInit = {\n headers: {\n 'Content-Type': 'application/json',\n Authorization: `${(await Auth.currentSession()).getAccessToken().getJwtToken()}`\n },\n queryStringParameters: {\n type: 'Colonia',\n username: JSON.parse(JSON.stringify(await Auth.currentAuthenticatedUser())).username,\n sqlFilter: CodigoPostal\n }\n }\n\n var coloniasGet = await API.get(apiName, path, myInit);\n\n setColonias1(coloniasGet);\n\n if (isLoading === true)\n setVisibleLoadPanel(false);\n }, []);\n\n const store = useMemo(() => {\n return new CustomStore({\n key: 'ID',\n load(loadOptions) {\n let sqlFilter = '(';\n [\n 'filter'\n ].forEach((i) => {\n if (i in loadOptions && isNotEmpty(loadOptions[i])) {\n var filters = loadOptions[i];\n\n var filtersLength = filters.length;\n\n for (var i = 0; i <= filtersLength; i++) {\n var singleFilter = filters[i];\n var singleFilterType = typeof singleFilter;\n var singleFilterIsArray = Array.isArray(singleFilter);\n var singleFilterIsDate = singleFilter instanceof Date;\n\n if (singleFilter === 'NULL') {\n singleFilter = '0';\n }\n\n if (singleFilterType.toString() === 'object' && singleFilterIsArray) {\n sqlFilter += '(';\n\n var subFiltersLength = singleFilter.length;\n\n for (var i2 = 0; i2 <= subFiltersLength; i2++) {\n var singleSubFilter = singleFilter[i2];\n var singleSubFilterType = typeof singleSubFilter;\n var singleSubFilterIsArray = Array.isArray(singleSubFilter);\n var singleSubFilterIsDate = singleSubFilter instanceof Date\n\n if (singleSubFilter === 'NULL') {\n singleSubFilter = '0';\n }\n\n if (singleSubFilterType.toString() === 'object' && singleSubFilterIsArray) {\n sqlFilter += '(';\n\n var subSubFiltersLength = singleSubFilter.length;\n\n for (var i3 = 0; i3 <= subSubFiltersLength; i3++) {\n var singleSubSubFilter = singleSubFilter[i3];\n var singleSubSubFilterType = typeof singleSubSubFilter;\n var singleSubSubFilterIsArray = Array.isArray(singleSubSubFilter);\n var singleSubSubFilterIsDate = singleSubSubFilter instanceof Date\n\n if (singleSubSubFilter === 'NULL') {\n singleSubSubFilter = '0';\n }\n\n if (singleSubSubFilterType.toString() === 'object' && singleSubSubFilterIsArray) {\n sqlFilter += '(';\n\n var subSubSubFiltersLength = singleSubSubFilter.length;\n\n for (var i4 = 0; i4 <= subSubSubFiltersLength; i4++) {\n var singleSubSubSubFilter = singleSubSubFilter[i4];\n var singleSubSubSubFilterType = typeof singleSubSubSubFilter;\n var singleSubSubSubFilterIsArray = Array.isArray(singleSubSubSubFilter);\n var singleSubSubSubFilterIsDate = singleSubSubSubFilter instanceof Date\n\n if (singleSubSubSubFilter === 'NULL') {\n singleSubSubSubFilter = '0';\n }\n\n if (singleSubSubSubFilterType.toString() === 'object' && singleSubSubSubFilterIsArray) {\n sqlFilter += '(';\n\n var subSubSubSubFiltersLength = singleSubSubSubFilter.length;\n\n for (var i5 = 0; i5 <= subSubSubSubFiltersLength; i5++) {\n var singleSubSubSubSubFilter = singleSubSubSubFilter[i5];\n var singleSubSubSubSubFilterType = typeof singleSubSubSubSubFilter;\n var singleSubSubSubSubFilterIsArray = Array.isArray(singleSubSubSubSubFilter);\n var singleSubSubSubSubFilterIsDate = singleSubSubSubSubFilter instanceof Date\n\n if (singleSubSubSubSubFilter === 'NULL') {\n singleSubSubSubSubFilter = '0';\n }\n\n if (singleSubSubSubSubFilterType.toString() === 'string') {\n if (singleSubSubSubSubFilter === 'contains') {\n filters[i][i2][i3][i4][i5] = 'LIKE';\n singleSubSubSubSubFilter = 'LIKE';\n\n filters[i][i2][i3][i4][i5 + 1] = '\\'%' + filters[i][i2][i3][i4][i5 + 1] + '%\\'';\n }\n else if (singleSubSubSubSubFilter === 'notcontains') {\n filters[i][i2][i3][i4][i5] = 'NOT LIKE';\n singleSubSubSubSubFilter = 'NOT LIKE';\n\n filters[i][i2][i3][i4][i5 + 1] = '\\'%' + filters[i][i2][i3][i4][i5 + 1] + '%\\'';\n }\n else if (singleSubSubSubSubFilter === 'startswith') {\n filters[i][i2][i3][i4][i5] = 'LIKE';\n singleSubSubSubSubFilter = 'LIKE';\n\n filters[i][i2][i3][i4][i5 + 1] = '\\'' + filters[i][i2][i3][i4][i5 + 1] + '%\\'';\n }\n else if (singleSubSubSubSubFilter === 'endswith') {\n filters[i][i2][i3][i4][i5] = 'LIKE';\n singleSubSubSubSubFilter = 'LIKE';\n\n filters[i][i2][i3][i4][i5 + 1] = '\\'%' + filters[i][i2][i3][i4][i5 + 1] + '\\'';\n }\n else if (singleSubSubSubSubFilter === '=' || singleSubSubSubSubFilter === '<>' || singleSubSubSubSubFilter === '>' || singleSubSubSubSubFilter === '>=' || singleSubSubSubSubFilter === '<' || singleSubSubSubSubFilter === '<=') {\n if (!filters[i][i2][i3][i4][i5 + 1])\n filters[i][i2][i3][i4][i5 + 1] = 'NULL';\n else if (typeof filters[i][i2][i3][i4][i5 + 1] === 'string') {\n filters[i][i2][i3][i4][i5 + 1] = '\\'' + filters[i][i2][i3][i4][i5 + 1] + '\\'';\n }\n }\n else if (singleSubSubSubSubFilter === '!') {\n filters[i][i2][i3][i4][i5] = 'NOT';\n singleSubSubSubSubFilter = 'NOT';\n }\n\n sqlFilter += ' ' + singleSubSubSubSubFilter + ' ';\n }\n else if (singleSubSubSubSubFilterType.toString() === 'object' && singleSubSubSubSubFilterIsDate) {\n sqlFilter += ' \\'' + singleSubSubSubSubFilter.toISOString().split('T')[0] + '\\' ';\n }\n else if (singleSubSubSubSubFilterType.toString() === 'number') {\n sqlFilter += ' ' + singleSubSubSubSubFilter.toString() + ' ';\n }\n else if (singleSubSubSubSubFilterType.toString() === 'boolean') {\n if (singleSubSubSubSubFilter.toString() === 'true')\n sqlFilter += '1 ';\n else if (singleSubSubSubSubFilter.toString() === 'false' || singleSubSubSubSubFilter === null || singleSubSubSubSubFilter === undefined)\n sqlFilter += '0 ';\n }\n }\n }\n else if (singleSubSubSubFilterType.toString() === 'string') {\n if (singleSubSubSubFilter === 'contains') {\n filters[i][i2][i3][i4] = 'LIKE';\n singleSubSubSubFilter = 'LIKE';\n\n filters[i][i2][i3][i4 + 1] = '\\'%' + filters[i][i2][i3][i4 + 1] + '%\\'';\n }\n else if (singleSubSubSubFilter === 'notcontains') {\n filters[i][i2][i3][i4] = 'NOT LIKE';\n singleSubSubSubFilter = 'NOT LIKE';\n\n filters[i][i2][i3][i4 + 1] = '\\'%' + filters[i][i2][i3][i4 + 1] + '%\\'';\n }\n else if (singleSubSubSubFilter === 'startswith') {\n filters[i][i2][i3][i4] = 'LIKE';\n singleSubSubSubFilter = 'LIKE';\n\n filters[i][i2][i3][i4 + 1] = '\\'' + filters[i][i2][i3][i4 + 1] + '%\\'';\n }\n else if (singleSubSubSubFilter === 'endswith') {\n filters[i][i2][i3][i4] = 'LIKE';\n singleSubSubSubFilter = 'LIKE';\n\n filters[i][i2][i3][i4 + 1] = '\\'%' + filters[i][i2][i3][i4 + 1] + '\\'';\n }\n else if (singleSubSubSubFilter === '=' || singleSubSubSubFilter === '<>' || singleSubSubSubFilter === '>' || singleSubSubSubFilter === '>=' || singleSubSubSubFilter === '<' || singleSubSubSubFilter === '<=') {\n if (!filters[i][i2][i3][i4 + 1])\n filters[i][i2][i3][i4 + 1] = 'NULL';\n else if (typeof filters[i][i2][i3][i4 + 1] === 'string') {\n filters[i][i2][i3][i4 + 1] = '\\'' + filters[i][i2][i3][i4 + 1] + '\\'';\n }\n }\n else if (singleSubSubSubFilter === '!') {\n filters[i][i2][i3][i4] = 'NOT';\n singleSubSubSubFilter = 'NOT';\n }\n\n sqlFilter += ' ' + singleSubSubSubFilter + ' ';\n }\n else if (singleSubSubSubFilterType.toString() === 'object' && singleSubSubSubFilterIsDate) {\n sqlFilter += ' \\'' + singleSubSubSubFilter.toISOString().split('T')[0] + '\\' ';\n }\n else if (singleSubSubSubFilterType.toString() === 'number') {\n sqlFilter += ' ' + singleSubSubSubFilter.toString() + ' ';\n }\n else if (singleSubSubSubFilterType.toString() === 'boolean') {\n if (singleSubSubSubFilter.toString() === 'true')\n sqlFilter += '1 ';\n else if (singleSubSubSubFilter.toString() === 'false' || singleSubSubSubFilter === null || singleSubSubSubFilter === undefined)\n sqlFilter += '0 ';\n }\n }\n\n sqlFilter += ')';\n }\n else if (singleSubSubFilterType.toString() === 'string') {\n if (singleSubSubFilter === 'contains') {\n filters[i][i2][i3] = 'LIKE';\n singleSubSubFilter = 'LIKE';\n\n filters[i][i2][i3 + 1] = '\\'%' + filters[i][i2][i3 + 1] + '%\\'';\n }\n else if (singleSubSubFilter === 'notcontains') {\n filters[i][i2][i3] = 'NOT LIKE';\n singleSubSubFilter = 'NOT LIKE';\n\n filters[i][i2][i3 + 1] = '\\'%' + filters[i][i2][i3 + 1] + '%\\'';\n }\n else if (singleSubSubFilter === 'startswith') {\n filters[i][i2][i3] = 'LIKE';\n singleSubSubFilter = 'LIKE';\n\n filters[i][i2][i3 + 1] = '\\'' + filters[i][i2][i3 + 1] + '%\\'';\n }\n else if (singleSubSubFilter === 'endswith') {\n filters[i][i2][i3] = 'LIKE';\n singleSubSubFilter = 'LIKE';\n\n filters[i][i2][i3 + 1] = '\\'%' + filters[i][i2][i3 + 1] + '\\'';\n }\n else if (singleSubSubFilter === '=' || singleSubSubFilter === '<>' || singleSubSubFilter === '>' || singleSubSubFilter === '>=' || singleSubSubFilter === '<' || singleSubSubFilter === '<=') {\n if (!filters[i][i2][i3 + 1])\n filters[i][i2][i3 + 1] = 'NULL';\n else if (typeof filters[i][i2][i3 + 1] === 'string') {\n filters[i][i2][i3 + 1] = '\\'' + filters[i][i2][i3 + 1] + '\\'';\n }\n }\n else if (singleSubSubFilter === '!') {\n filters[i][i2][i3] = 'NOT';\n singleSubSubFilter = 'NOT';\n }\n sqlFilter += ' ' + singleSubSubFilter + ' ';\n }\n else if (singleSubSubFilterType.toString() === 'object' && singleSubSubFilterIsDate) {\n sqlFilter += ' \\'' + singleSubSubFilter.toISOString().split('T')[0] + '\\' ';\n }\n else if (singleSubSubFilterType.toString() === 'number') {\n sqlFilter += ' ' + singleSubSubFilter.toString() + ' ';\n }\n else if (singleSubSubFilterType.toString() === 'boolean') {\n if (singleSubSubFilter.toString() === 'true')\n sqlFilter += '1 ';\n else if (singleSubSubFilter.toString() === 'false' || singleSubSubFilter === null || singleSubSubFilter === undefined)\n sqlFilter += '0 ';\n }\n }\n\n sqlFilter += ')';\n }\n else if (singleSubFilterType.toString() === 'string') {\n if (singleSubFilter === 'contains') {\n filters[i][i2] = 'LIKE';\n singleSubFilter = 'LIKE';\n\n filters[i][i2 + 1] = '\\'%' + filters[i][i2 + 1] + '%\\'';\n }\n else if (singleSubFilter === 'notcontains') {\n filters[i][i2] = 'NOT LIKE';\n singleSubFilter = 'NOT LIKE';\n\n filters[i][i2 + 1] = '\\'%' + filters[i][i2 + 1] + '%\\'';\n }\n else if (singleSubFilter === 'startswith') {\n filters[i][i2] = 'LIKE';\n singleSubFilter = 'LIKE';\n\n filters[i][i2 + 1] = '\\'' + filters[i][i2 + 1] + '%\\'';\n }\n else if (singleSubFilter === 'endswith') {\n filters[i][i2] = 'LIKE';\n singleSubFilter = 'LIKE';\n\n filters[i][i2 + 1] = '\\'%' + filters[i][i2 + 1] + '\\'';\n }\n else if (singleSubFilter === '=' || singleSubFilter === '<>' || singleSubFilter === '>' || singleSubFilter === '>=' || singleSubFilter === '<' || singleSubFilter === '<=') {\n if (!filters[i][i2 + 1])\n filters[i][i2 + 1] = 'NULL';\n else if (typeof filters[i][i2 + 1] === 'string') {\n filters[i][i2 + 1] = '\\'' + filters[i][i2 + 1] + '\\'';\n }\n }\n else if (singleSubFilter === '!') {\n filters[i][i2] = 'NOT';\n singleSubFilter = 'NOT';\n }\n sqlFilter += ' ' + singleSubFilter + ' ';\n }\n else if (singleSubFilterType.toString() === 'object' && singleSubFilterIsDate) {\n sqlFilter += ' \\'' + singleSubFilter.toISOString().split('T')[0] + '\\' ';\n }\n else if (singleSubFilterType.toString() === 'number') {\n sqlFilter += ' ' + singleSubFilter.toString() + ' ';\n }\n else if (singleSubFilterType.toString() === 'boolean') {\n if (singleSubFilter.toString() === 'true')\n sqlFilter += '1 ';\n else if (singleSubFilter.toString() === 'false' || singleSubFilter === null || singleSubFilter === undefined)\n sqlFilter += '0 ';\n }\n }\n\n sqlFilter += ')';\n }\n else if (singleFilterType.toString() === 'string') {\n if (singleFilter === 'contains') {\n filters[i] = 'LIKE';\n singleFilter = 'LIKE';\n\n filters[i + 1] = '\\'%' + filters[i + 1] + '%\\'';\n }\n else if (singleFilter === 'notcontains') {\n filters[i] = 'NOT LIKE';\n singleFilter = 'NOT LIKE';\n\n filters[i + 1] = '\\'%' + filters[i + 1] + '%\\'';\n }\n else if (singleFilter === 'startswith') {\n filters[i] = 'LIKE';\n singleFilter = 'LIKE';\n\n filters[i + 1] = '\\'' + filters[i + 1] + '%\\'';\n }\n else if (singleFilter === 'endswith') {\n filters[i] = 'LIKE';\n singleFilter = 'LIKE';\n\n filters[i + 1] = '\\'%' + filters[i + 1] + '\\'';\n }\n else if (singleFilter === '=' || singleFilter === '<>' || singleFilter === '>' || singleFilter === '>=' || singleFilter === '<' || singleFilter === '<=') {\n if (!filters[i + 1])\n filters[i + 1] = 'NULL';\n else if (typeof filters[i + 1] === 'string') {\n filters[i + 1] = '\\'' + filters[i + 1] + '\\'';\n }\n }\n else if (singleFilter === '!') {\n filters[i] = 'NOT';\n singleFilter = 'NOT';\n }\n sqlFilter += ' ' + singleFilter + ' ';\n }\n else if (singleFilterType.toString() === 'object' && singleFilterIsDate) {\n sqlFilter += ' \\'' + singleFilter.toISOString().split('T')[0] + '\\' ';\n }\n else if (singleFilterType.toString() === 'number') {\n sqlFilter += ' ' + singleFilter.toString() + ' ';\n }\n else if (singleFilterType.toString() === 'boolean') {\n if (singleFilter.toString() === 'true')\n sqlFilter += '1 ';\n else if (singleFilter.toString() === 'false' || singleFilter === null || singleFilter === undefined)\n sqlFilter += '0 ';\n }\n }\n\n sqlFilter += ')';\n }\n });\n\n async function getRecords() {\n if (sqlFilter === '(')\n sqlFilter = '';\n\n var records = await getEstimateRecords(sqlFilter);\n return {\n data: records,\n totalCount: records.length\n };\n }\n\n return getRecords()\n .then(function (result) {\n return result;\n })\n .catch(() => { throw new Error('Data Loading Error'); });\n }\n })\n }, [getEstimateRecords]);\n\n const storeCliente = useMemo(() => {\n return new CustomStore({\n key: 'value',\n load(loadOptions) {\n let sqlFilter = '';\n [\n 'filter'\n ].forEach((i) => {\n sqlFilter = loadOptions.searchValue;\n });\n\n async function getRecords() {\n if (sqlFilter) {\n var records = await getCliente(sqlFilter);\n\n return {\n data: records,\n totalCount: records.length\n };\n }\n else {\n return {\n data: [],\n totalCount: 0\n };\n }\n }\n\n return getRecords()\n .then(function (result) {\n return result;\n })\n .catch(() => { throw new Error('Data Loading Error'); });\n },\n byKey: (key) => {\n /*\n async function getRecords(key) {\n var records = await getCliente(key);\n\n return records;\n }\n\n return getRecords(key);\n */\n return {\n name: estimatePayload.header.CteNombre,\n value: estimatePayload.header.Cliente\n };\n }\n })\n }, [getCliente, estimatePayload.header.CteNombre, estimatePayload.header.Cliente]);\n\n const storeArticulo = useMemo(() => {\n return new CustomStore({\n key: 'value',\n load(loadOptions) {\n let sqlFilter = '';\n [\n 'filter'\n ].forEach((i) => {\n sqlFilter = loadOptions.searchValue;\n });\n\n async function getRecords() {\n if (sqlFilter) {\n var records = await getArticulo(sqlFilter);\n\n return {\n data: records,\n totalCount: records.length\n };\n }\n else {\n return {\n data: [],\n totalCount: 0\n };\n }\n }\n\n return getRecords()\n .then(function (result) {\n return result;\n })\n .catch(() => { throw new Error('Data Loading Error'); });\n },\n byKey: (key) => {\n async function getRecords(key) {\n var records = await getArticulo(key);\n\n return records;\n }\n\n return getRecords(key);\n }\n })\n }, [getArticulo]);\n\n const storeCodigoPostal = useMemo(() => {\n return new CustomStore({\n key: 'value',\n load(loadOptions) {\n let sqlFilter = '';\n [\n 'filter'\n ].forEach((i) => {\n sqlFilter = loadOptions.searchValue;\n });\n\n async function getRecords() {\n if (sqlFilter) {\n var records = await getCodigoPostal(sqlFilter);\n\n return {\n data: records,\n totalCount: records.length\n };\n }\n else {\n return {\n data: [],\n totalCount: 0\n };\n }\n }\n\n return getRecords()\n .then(function (result) {\n return result;\n })\n .catch(() => { throw new Error('Data Loading Error'); });\n },\n byKey: (key) => {\n async function getRecords(key) {\n var records = await getCodigoPostal(key);\n\n return records;\n }\n\n return getRecords(key);\n }\n })\n }, [getCodigoPostal]);\n\n const onSelectionClienteChanged = React.useCallback(async (e) => {\n if (e.selectedItem) {\n var value = e.selectedItem.value;\n var rfc = e.selectedItem.rfc;\n\n if (!rfc && estimatePayload.header.RFC) {\n rfc = estimatePayload.header.RFC;\n }\n\n if (formDatosGeneralesRef.current) {\n var formDatosGenerales = formDatosGeneralesRef.current.instance();\n\n if (value) {\n formDatosGenerales.updateData('header.RFC', rfc);\n }\n else {\n formDatosGenerales.updateData('header.RFC', undefined);\n }\n }\n }\n else {\n if (formDatosGeneralesRef.current) {\n var formDatosGenerales = formDatosGeneralesRef.current.instance();\n\n formDatosGenerales.updateData('header.RFC', undefined);\n }\n }\n }, [formDatosGeneralesRef, estimatePayload.header.RFC]);\n\n const onSelectionCodigoPostalChanged = React.useCallback((e) => {\n if (e.selectedItem) {\n var value = e.selectedItem.value;\n var ClaveEstado = e.selectedItem.ClaveEstado;\n var ClaveMunicipio = e.selectedItem.ClaveMunicipio;\n var ClaveLocalidad = e.selectedItem.ClaveLocalidad;\n var ClavePais = e.selectedItem.ClavePais;\n\n if (formDatosGeneralesRef.current) {\n var formDatosGenerales = formDatosGeneralesRef.current.instance();\n\n if (value) {\n formDatosGenerales.updateData('shippingAddress.ClaveMunicipio', ClaveMunicipio);\n formDatosGenerales.updateData('shippingAddress.ClaveLocalidad', ClaveLocalidad);\n formDatosGenerales.updateData('shippingAddress.ClaveEstado', ClaveEstado);\n formDatosGenerales.updateData('shippingAddress.ClavePais', ClavePais);\n }\n else {\n formDatosGenerales.updateData('shippingAddress.ClaveMunicipio', undefined);\n formDatosGenerales.updateData('shippingAddress.ClaveLocalidad', undefined);\n formDatosGenerales.updateData('shippingAddress.ClaveEstado', undefined);\n formDatosGenerales.updateData('shippingAddress.ClavePais', undefined);\n }\n }\n }\n else {\n if (formDatosGeneralesRef.current) {\n var formDatosGenerales = formDatosGeneralesRef.current.instance();\n\n formDatosGenerales.updateData('shippingAddress.ClaveMunicipio', undefined);\n formDatosGenerales.updateData('shippingAddress.ClaveLocalidad', undefined);\n formDatosGenerales.updateData('shippingAddress.ClaveEstado', undefined);\n formDatosGenerales.updateData('shippingAddress.ClavePais', undefined);\n }\n }\n }, [formDatosGeneralesRef]);\n\n const onSelectionCodigoPostal1Changed = React.useCallback((e) => {\n if (e.selectedItem) {\n var value = e.selectedItem.value;\n var ClaveEstado = e.selectedItem.ClaveEstado;\n var ClaveMunicipio = e.selectedItem.ClaveMunicipio;\n var ClaveLocalidad = e.selectedItem.ClaveLocalidad;\n var ClavePais = e.selectedItem.ClavePais;\n\n if (formDatosGeneralesRef.current) {\n var formDatosGenerales = formDatosGeneralesRef.current.instance();\n\n if (value) {\n formDatosGenerales.updateData('billingAddress.ClaveMunicipio1', ClaveMunicipio);\n formDatosGenerales.updateData('billingAddress.ClaveLocalidad1', ClaveLocalidad);\n formDatosGenerales.updateData('billingAddress.ClaveEstado1', ClaveEstado);\n formDatosGenerales.updateData('billingAddress.ClavePais1', ClavePais);\n }\n else {\n formDatosGenerales.updateData('billingAddress.ClaveMunicipio1', undefined);\n formDatosGenerales.updateData('billingAddress.ClaveLocalidad1', undefined);\n formDatosGenerales.updateData('billingAddress.ClaveEstado1', undefined);\n formDatosGenerales.updateData('billingAddress.ClavePais1', undefined);\n }\n }\n }\n else {\n if (formDatosGeneralesRef.current) {\n var formDatosGenerales = formDatosGeneralesRef.current.instance();\n\n formDatosGenerales.updateData('billingAddress.ClaveMunicipio1', undefined);\n formDatosGenerales.updateData('billingAddress.ClaveLocalidad1', undefined);\n formDatosGenerales.updateData('billingAddress.ClaveEstado1', undefined);\n formDatosGenerales.updateData('billingAddress.ClavePais1', undefined);\n }\n }\n }, [formDatosGeneralesRef]);\n\n var fechaEmisionEditorOptions = useMemo(() => {\n return {\n width: '100%',\n readOnly: true\n };\n }, []);\n\n var movimientoEditorOptions = useMemo(() => {\n return {\n width: '100%',\n readOnly: true\n };\n }, []);\n\n var rfcEditorOptions = useMemo(() => {\n return {\n width: '100%',\n readOnly: true,\n inputAttr: {\n 'style': 'text-transform: uppercase'\n }\n };\n }, []);\n\n var cantidadEditorOptions = useMemo(() => {\n return {\n format: '#'\n };\n }, []);\n\n\n var rfc1EditorOptions = useMemo(() => {\n return {\n width: '100%',\n inputAttr: {\n 'style': 'text-transform: uppercase'\n }\n };\n }, []);\n\n var razonSocial1EditorOptions = useMemo(() => {\n return {\n width: '100%',\n readOnly: conDatosIguales || (estimatePayload.header.Estatus === 'Concluido' || estimatePayload.header.Estatus === 'Cancelado'),\n inputAttr: {\n 'style': 'text-transform: uppercase'\n }\n };\n }, [estimatePayload.header.Estatus, conDatosIguales]);\n\n var telefonos1EditorOptions = useMemo(() => {\n return {\n width: '100%',\n readOnly: conDatosIguales || (estimatePayload.header.Estatus === 'Concluido' || estimatePayload.header.Estatus === 'Cancelado'),\n inputAttr: {\n 'style': 'text-transform: uppercase'\n },\n mask: '(00) 0000-0000'\n };\n }, [estimatePayload.header.Estatus, conDatosIguales]);\n\n var direccion1EditorOptions = useMemo(() => {\n return {\n width: \"100%\",\n readOnly: conDatosIguales || (estimatePayload.header.Estatus === 'Concluido' || estimatePayload.header.Estatus === 'Cancelado'),\n inputAttr: { style: \"text-transform: uppercase\" },\n };\n }, [estimatePayload.header.Estatus, conDatosIguales]);\n\n var claveMunicipio1EditorOptions = useMemo(() => {\n return {\n width: \"100%\",\n readOnly: true,\n inputAttr: { style: \"text-transform: uppercase\" },\n };\n }, []);\n\n var claveLocalidad1EditorOptions = useMemo(() => {\n return {\n width: \"100%\",\n readOnly: true,\n inputAttr: { style: \"text-transform: uppercase\" },\n };\n }, []);\n\n var claveEstado1EditorOptions = useMemo(() => {\n return {\n width: \"100%\",\n readOnly: true,\n inputAttr: { style: \"text-transform: uppercase\" },\n };\n }, []);\n\n var clavePais1EditorOptions = useMemo(() => {\n return {\n width: \"100%\",\n readOnly: true,\n inputAttr: { style: \"text-transform: uppercase\" },\n };\n }, []);\n\n var nombreEditorOptions = useMemo(() => {\n return {\n width: \"100%\",\n inputAttr: { style: \"text-transform: uppercase\" },\n readOnly: !activateSinAfectarPendienteFields,\n };\n }, [activateSinAfectarPendienteFields]);\n\n var telefonoEditorOptions = useMemo(() => {\n return {\n width: \"100%\",\n inputAttr: { style: \"text-transform: uppercase\" },\n mask: \"(00) 0000-0000\",\n readOnly: !activateSinAfectarPendienteFields,\n };\n }, [activateSinAfectarPendienteFields]);\n\n var direccionEditorOptions = useMemo(() => {\n return {\n width: \"100%\",\n inputAttr: { style: \"text-transform: uppercase\" },\n readOnly: !activateSinAfectarPendienteFields,\n };\n }, [activateSinAfectarPendienteFields]);\n\n var entreCallesEditorOptions = useMemo(() => {\n return {\n width: \"100%\",\n inputAttr: { style: \"text-transform: uppercase\" },\n readOnly: !activateSinAfectarPendienteFields,\n };\n }, [activateSinAfectarPendienteFields]);\n\n var claveMunicipioEditorOptions = useMemo(() => {\n return {\n width: \"100%\",\n inputAttr: { style: \"text-transform: uppercase\" },\n readOnly: true,\n };\n }, []);\n\n var claveLocalidadEditorOptions = useMemo(() => {\n return {\n width: \"100%\",\n inputAttr: { style: \"text-transform: uppercase\" },\n readOnly: true,\n };\n }, []);\n\n var claveEstadoEditorOptions = useMemo(() => {\n return {\n width: \"100%\",\n inputAttr: { style: \"text-transform: uppercase\" },\n readOnly: true,\n };\n }, []);\n\n var clavePaisEditorOptions = useMemo(() => {\n return {\n width: \"100%\",\n inputAttr: { style: \"text-transform: uppercase\" },\n readOnly: true,\n };\n }, []);\n\n var emailEditorOptions = useMemo(() => {\n return {\n width: \"100%\",\n inputAttr: { style: \"text-transform: lowercase\" },\n readOnly: !activateSinAfectarPendienteFields,\n };\n }, [activateSinAfectarPendienteFields]);\n\n var cambiarClienteEditorOptions = useMemo(() => {\n return {\n readOnly: !activateCambiarCliente\n };\n }, [activateCambiarCliente]);\n\n var usuarioDataSource = useMemo(() => {\n return new DataSource({\n paginate: true,\n store: {\n type: \"array\",\n key: \"Usuario\",\n data: usuarios\n }\n });\n }, [usuarios]);\n\n var agenteDataSource = useMemo(() => {\n return new DataSource({\n paginate: true,\n store: {\n type: \"array\",\n key: \"Agente\",\n data: agentes\n }\n });\n }, [agentes]);\n\n var listaPreciosDataSource = useMemo(() => {\n return new DataSource({\n paginate: true,\n store: {\n type: \"array\",\n key: \"ListaPrecios\",\n data: listaPrecios\n }\n });\n }, [listaPrecios]);\n\n var conceptosDataSource = useMemo(() => {\n return new DataSource({\n paginate: true,\n store: {\n type: \"array\",\n key: \"Concepto\",\n data: conceptos\n }\n });\n }, [conceptos]);\n\n var condicionesDataSource = useMemo(() => {\n return new DataSource({\n paginate: true,\n store: {\n type: \"array\",\n key: \"Condicion\",\n data: condiciones\n }\n });\n }, [condiciones]);\n\n var coloniaDataSource = useMemo(() => {\n return new DataSource({\n paginate: true,\n store: {\n type: \"array\",\n key: \"Colonia\",\n data: colonias\n }\n });\n }, [colonias]);\n\n var colonia1DataSource = useMemo(() => {\n return new DataSource({\n paginate: true,\n store: {\n type: \"array\",\n key: \"Colonia\",\n data: colonias1\n }\n });\n }, [colonias1]);\n\n var scCodigoAutorizaPreciosEditorOptions = useMemo(() => {\n return {\n readOnly: !activateSinAfectarFields\n };\n }, [activateSinAfectarFields]);\n\n var scFechaAutorizaPreciosEditorOptions = useMemo(() => {\n return {\n readOnly: !activateSinAfectarFields\n };\n }, [activateSinAfectarFields]);\n\n var scMotivoAutorizaPreciosEditorOptions = useMemo(() => {\n return {\n readOnly: !activateSinAfectarFields\n };\n }, [activateSinAfectarFields]);\n\n var scComentariosAutorizaPreciosEditorOptions = useMemo(() => {\n return {\n readOnly: !activateSinAfectarFields\n };\n }, [activateSinAfectarFields]);\n\n var observacionesEditorOptions = useMemo(() => {\n return {\n readOnly: !activateSinAfectarFields\n };\n }, [activateSinAfectarFields]);\n\n //Opciones Usuario Autoriza\n try {\n var usuarioAutorizaEditorOptions = useMemo(() => {\n return {\n dataSource: usuarioDataSource,\n displayExpr: 'name',\n valueExpr: 'value',\n searchEnabled: true,\n value: (estimatePayload.header.SCUsuarioAutorizaPrecios ? estimatePayload.header.SCUsuarioAutorizaPrecios : ''),\n width: '100%',\n readOnly: !activateSinAfectarFields\n };\n }, [usuarioDataSource, estimatePayload.header.SCUsuarioAutorizaPrecios, activateSinAfectarFields]);\n }\n catch (e) {\n var usuarioAutorizaEditorOptions = {\n dataSource: usuarioDataSource,\n displayExpr: 'name',\n valueExpr: 'value',\n searchEnabled: true,\n value: '',\n width: '100%',\n readOnly: !activateSinAfectarFields\n };\n }\n\n //Opciones Agente \n try {\n var agenteEditorOptions = useMemo(() => {\n return {\n dataSource: agenteDataSource,\n displayExpr: 'name',\n valueExpr: 'value',\n searchEnabled: true,\n readOnly: true,\n value: (estimatePayload.header.Agente ? estimatePayload.header.Agente : ''), width: '100%'\n };\n }, [agenteDataSource, estimatePayload.header.Agente]);\n }\n catch (e) {\n var agenteEditorOptions = {\n dataSource: agenteDataSource,\n displayExpr: 'name',\n valueExpr: 'value',\n searchEnabled: true,\n readOnly: true,\n value: '',\n width: '100%'\n };\n };\n\n //Opciones Tipo de Pedido \n try {\n var tipoPedidoEditorOptions = useMemo(() => {\n return {\n dataSource: tipoPedido,\n displayExpr: 'name',\n valueExpr: 'value',\n searchEnabled: true,\n value: (estimatePayload.header.SCTipoPedido ? estimatePayload.header.SCTipoPedido : ''),\n width: '100%',\n readOnly: !activateSinAfectarFields\n };\n }, [tipoPedido, estimatePayload.header.SCTipoPedido, activateSinAfectarFields]);\n }\n catch (e) {\n var tipoPedidoEditorOptions = {\n dataSource: tipoPedido,\n displayExpr: 'name',\n valueExpr: 'value',\n searchEnabled: true,\n value: '',\n width: '100%',\n readOnly: !activateSinAfectarFields\n };\n };\n\n //Opciones Lista Precios \n try {\n var listaPreciosEditorOptions = useMemo(() => {\n return {\n dataSource: listaPreciosDataSource,\n displayExpr: 'name',\n valueExpr: 'value',\n searchEnabled: true,\n value: (estimatePayload.header.ListaPreciosEsp ? estimatePayload.header.ListaPreciosEsp : ''),\n width: '100%',\n readOnly: !activateSinAfectarFields\n };\n }, [listaPreciosDataSource, estimatePayload.header.ListaPreciosEsp, activateSinAfectarFields]);\n }\n catch (e) {\n var listaPreciosEditorOptions = {\n dataSource: listaPreciosDataSource,\n displayExpr: 'name',\n valueExpr: 'value',\n searchEnabled: true,\n value: '',\n width: '100%',\n readOnly: !activateSinAfectarFields\n };\n };\n\n //Opciones Conceptos\n try {\n var conceptosEditorOptions = useMemo(() => {\n return {\n dataSource: conceptosDataSource,\n displayExpr: 'name',\n valueExpr: 'value',\n searchEnabled: true,\n value: (estimatePayload.header.Concepto ? estimatePayload.header.Concepto : ''),\n width: '100%',\n readOnly: !activateSinAfectarFields\n };\n }, [conceptosDataSource, estimatePayload.header.Concepto, activateSinAfectarFields]);\n }\n catch (e) {\n var conceptosEditorOptions = {\n dataSource: conceptosDataSource,\n displayExpr: 'name',\n valueExpr: 'value',\n searchEnabled: true,\n value: '',\n width: '100%',\n readOnly: !activateSinAfectarFields\n };\n };\n\n //Opciones Condicion\n try {\n var condicionEditorOptions = useMemo(() => {\n return {\n dataSource: condicionesDataSource,\n displayExpr: 'name',\n valueExpr: 'value',\n searchEnabled: true,\n value: (estimatePayload.header.Condicion ? estimatePayload.header.Condicion : ''),\n width: '100%',\n readOnly: !activateSinAfectarFields\n };\n }, [condicionesDataSource, estimatePayload.header.Condicion, activateSinAfectarFields]);\n }\n catch (e) {\n var condicionEditorOptions = {\n dataSource: condicionesDataSource,\n displayExpr: 'name',\n valueExpr: 'value',\n searchEnabled: true,\n value: '',\n width: '100%',\n readOnly: !activateSinAfectarFields\n };\n };\n\n //Opciones Régimen Fiscal\n try {\n var fiscalRegimenEditorOptions = useMemo(() => {\n return {\n dataSource: fiscalRegimen,\n displayExpr: 'name',\n valueExpr: 'value',\n searchEnabled: true,\n value: (estimatePayload.billingAddress.FiscalRegimen ? estimatePayload.billingAddress.FiscalRegimen : ''),\n width: '100%'\n };\n }, [fiscalRegimen, estimatePayload.billingAddress.FiscalRegimen]);\n }\n catch (e) {\n var fiscalRegimenEditorOptions = {\n dataSource: fiscalRegimen,\n displayExpr: 'name',\n valueExpr: 'value',\n searchEnabled: true,\n value: '',\n width: '100%'\n };\n }\n\n //Opciones Uso CFDI\n try {\n var usoCFDIEditorOptions = useMemo(() => {\n return {\n dataSource: filtroUsoCFDI,\n displayExpr: 'name',\n valueExpr: 'value',\n searchEnabled: true,\n acceptCustomValue: ((estimatePayload.header.Estatus === 'Sin Afectar') ? false : true),\n value: (estimatePayload.billingAddress.SATCatUsoCFDI ? estimatePayload.billingAddress.SATCatUsoCFDI : ''),\n width: '100%'\n };\n }, [filtroUsoCFDI, estimatePayload.header.Estatus, estimatePayload.billingAddress.SATCatUsoCFDI]);\n }\n catch (e) {\n var usoCFDIEditorOptions = {\n dataSource: filtroUsoCFDI,\n displayExpr: 'name',\n valueExpr: 'value',\n acceptCustomValue: ((estimatePayload.header.Estatus === 'Sin Afectar') ? false : true),\n searchEnabled: true,\n value: '',\n width: '100%'\n };\n }\n\n //Opciones del campo Cliente\n try {\n var clienteEditorOptions = useMemo(() => {\n return {\n dataSource: storeCliente,\n displayExpr: 'name',\n valueExpr: 'value',\n searchEnabled: true,\n showClearButton: true,\n acceptCustomValue: false,\n disabled: ((estimatePayload.header.Estatus !== 'Sin Afectar') || (estimatePayload.header.Estatus === 'Sin Afectar' && !conCambiarCliente)),\n searchTimeout: 100,\n width: '100%',\n clearButtonText: 'Cerrar',\n noDataText: 'No se encontraron resultados',\n onSelectionChanged: onSelectionClienteChanged\n };\n }, [storeCliente, conCambiarCliente, onSelectionClienteChanged, estimatePayload.header.Estatus]);\n }\n catch (e) {\n var clienteEditorOptions = {\n dataSource: storeCliente,\n displayExpr: 'name',\n valueExpr: 'value',\n searchEnabled: true,\n acceptCustomValue: false,\n disabled: ((estimatePayload.header.Estatus !== 'Sin Afectar') || (estimatePayload.header.Estatus === 'Sin Afectar' && !conCambiarCliente)),\n width: '100%',\n onSelectionChanged: onSelectionClienteChanged\n };\n };\n\n\n //Opciones del campo Codigo Postal\n try {\n var codigoPostalEditorOptions = useMemo(() => {\n return {\n dataSource: storeCodigoPostal,\n displayExpr: 'name',\n valueExpr: 'value',\n searchEnabled: true,\n showClearButton: true,\n acceptCustomValue: false,\n searchTimeout: 1500,\n width: '100%',\n clearButtonText: 'Cerrar',\n noDataText: 'No se encontraron resultados',\n onSelectionChanged: onSelectionCodigoPostalChanged\n };\n }, [onSelectionCodigoPostalChanged, storeCodigoPostal]);\n }\n catch (e) {\n var codigoPostalEditorOptions = {\n dataSource: storeCodigoPostal,\n displayExpr: 'name',\n valueExpr: 'value',\n searchEnabled: true,\n acceptCustomValue: false,\n width: '100%',\n onSelectionChanged: onSelectionCodigoPostalChanged\n };\n };\n\n // Opciones del campo Colonia\n try {\n var claveColoniaEditorOptions = useMemo(() => {\n return {\n dataSource: coloniaDataSource,\n displayExpr: 'name',\n valueExpr: 'value',\n searchEnabled: true,\n value: (estimatePayload.shippingAddress.ClaveColonia ? estimatePayload.shippingAddress.ClaveColonia : ''),\n width: '100%'\n };\n }, [coloniaDataSource, estimatePayload.shippingAddress.ClaveColonia]);\n }\n catch (e) {\n var claveColoniaEditorOptions = {\n dataSource: coloniaDataSource,\n displayExpr: 'name',\n valueExpr: 'value',\n searchEnabled: true,\n value: '',\n width: '100%'\n };\n };\n\n //Opciones del campo Codigo Postal 1\n try {\n var codigoPostal1EditorOptions = useMemo(() => {\n return {\n dataSource: storeCodigoPostal,\n displayExpr: 'name',\n valueExpr: 'value',\n searchEnabled: true,\n showClearButton: true,\n acceptCustomValue: false,\n searchTimeout: 1500,\n width: '100%',\n clearButtonText: 'Cerrar',\n noDataText: 'No se encontraron resultados',\n onSelectionChanged: onSelectionCodigoPostal1Changed,\n disabled: conDatosIguales || (estimatePayload.header.Estatus === 'Concluido' || estimatePayload.header.Estatus === 'Cancelado')\n };\n }, [conDatosIguales, onSelectionCodigoPostal1Changed, estimatePayload.header.Estatus, storeCodigoPostal]);\n }\n catch (e) {\n var codigoPostal1EditorOptions = {\n dataSource: storeCodigoPostal,\n displayExpr: 'name',\n valueExpr: 'value',\n searchEnabled: true,\n acceptCustomValue: false,\n width: '100%',\n onSelectionChanged: onSelectionCodigoPostal1Changed,\n disabled: conDatosIguales || (estimatePayload.header.Estatus === 'Concluido' || estimatePayload.header.Estatus === 'Cancelado')\n };\n };\n\n // Opciones del campo Colonia 1\n try {\n var claveColonia1EditorOptions = useMemo(() => {\n return {\n dataSource: colonia1DataSource,\n displayExpr: 'name',\n valueExpr: 'value',\n searchEnabled: true,\n value: (estimatePayload.billingAddress.ClaveColonia1 ? estimatePayload.billingAddress.ClaveColonia1 : ''),\n width: '100%',\n readOnly: conDatosIguales || (estimatePayload.header.Estatus === 'Concluido' || estimatePayload.header.Estatus === 'Cancelado')\n };\n }, [colonia1DataSource, estimatePayload.billingAddress.ClaveColonia1, estimatePayload.header.Estatus, conDatosIguales]);\n }\n catch (e) {\n var claveColonia1EditorOptions = {\n dataSource: colonia1DataSource,\n displayExpr: 'name',\n valueExpr: 'value',\n searchEnabled: true,\n value: '',\n width: '100%',\n readOnly: conDatosIguales || (estimatePayload.header.Estatus === 'Concluido' || estimatePayload.header.Estatus === 'Cancelado')\n };\n };\n\n //Opciones del campo Articulo\n try {\n var articuloEditorOptions = useMemo(() => {\n return {\n dataSource: storeArticulo,\n displayExpr: 'name',\n valueExpr: 'value',\n searchEnabled: true,\n showClearButton: true,\n acceptCustomValue: false,\n disabled: false,\n // searchTimeout: 500,\n width: '100%',\n clearButtonText: 'Cerrar',\n noDataText: 'No se encontraron resultados'\n };\n }, [storeArticulo]);\n }\n catch (e) {\n var articuloEditorOptions = {\n dataSource: storeArticulo,\n displayExpr: 'name',\n valueExpr: 'value',\n searchEnabled: true,\n acceptCustomValue: false,\n width: '100%'\n };\n }\n\n async function uploadChunk(file, uploadInfo) {\n try {\n var responseS3 = await Storage.put(\"/vtas/\" + id + \"/\" + file.name, uploadInfo.chunkBlob, {\n contentType: file.type,\n ACL: 'public-read'\n });\n\n //Obtenemos el nombre del bucket\n let bucketName = Storage._config.AWSS3.bucket;\n\n\n let apiName = 'AdminSC';\n let path = '/uploadattachment';\n\n let myInit = {\n headers: {\n 'Content-Type': 'application/json',\n Authorization: `${(await Auth.currentSession()).getAccessToken().getJwtToken()}`\n },\n body: {\n action: 'register',\n bucketName: bucketName,\n type: 'vtas',\n id: id,\n Key: \"/vtas/\" + id + \"/\" + file.name,\n fileName: file.name,\n username: JSON.parse(JSON.stringify(await Auth.currentAuthenticatedUser())).username\n }\n }\n\n var attachmentsResult = await API.post(apiName, path, myInit);\n\n //Obtenemos los attachments\n var attachmentsGet = await Storage.list(\"/vtas/\" + id);\n var attachmentsAux = [];\n\n for (var attachmentsGetIndex in attachmentsGet) {\n var singleAttachmentsGet = attachmentsGet[attachmentsGetIndex];\n\n var singleAttachment = {\n name: singleAttachmentsGet.key.split('/').pop(),\n isDirectory: false,\n size: singleAttachmentsGet.size,\n };\n\n attachmentsAux.push(singleAttachment);\n }\n\n setAttachments(attachmentsAux);\n }\n catch (err) {\n console.log(\"Error uploading file:\", err);\n }\n }\n\n async function onAttachmentDeleting(e) {\n var fileName = e.item.key;\n\n //Primero borramos el archivo de S3\n var attachmentsDelete = await Storage.remove(\"/vtas/\" + id + \"/\" + fileName);\n\n //Despues borramos el attachment en Intelisis\n let bucketName = Storage._config.AWSS3.bucket;\n\n let apiName = 'AdminSC';\n let path = '/uploadattachment';\n\n let myInit = {\n headers: {\n 'Content-Type': 'application/json',\n Authorization: `${(await Auth.currentSession()).getAccessToken().getJwtToken()}`\n },\n body: {\n action: 'delete',\n bucketName: bucketName,\n type: 'vtas',\n id: id,\n Key: \"/vtas/\" + id + \"/\" + fileName,\n fileName: fileName,\n username: JSON.parse(JSON.stringify(await Auth.currentAuthenticatedUser())).username\n }\n }\n\n var attachmentsResult = await API.post(apiName, path, myInit);\n\n //Finalmente sincronizamos el state\n var attachmentsGet = await Storage.list(\"/vtas/\" + id);\n var attachmentsAux = [];\n\n for (var attachmentsGetIndex in attachmentsGet) {\n var singleAttachmentsGet = attachmentsGet[attachmentsGetIndex];\n\n var singleAttachment = {\n name: singleAttachmentsGet.key.split('/').pop(),\n isDirectory: false,\n size: singleAttachmentsGet.size,\n };\n\n attachmentsAux.push(singleAttachment);\n }\n\n setAttachments(attachmentsAux);\n };\n\n function downloadBlob(blob, filename) {\n const url = URL.createObjectURL(blob);\n const a = document.createElement('a');\n a.href = url;\n a.download = filename || 'download';\n const clickHandler = () => {\n setTimeout(() => {\n URL.revokeObjectURL(url);\n a.removeEventListener('click', clickHandler);\n }, 150);\n };\n\n a.addEventListener('click', clickHandler, false);\n\n a.click();\n\n return a;\n };\n\n async function onItemDownloading(e) {\n e.cancel = true;\n\n const downloadFileResponse = await Storage.get(\"/vtas/\" + id + \"/\" + e.item.name, { download: true });\n\n downloadBlob(downloadFileResponse.Body, e.item.name);\n };\n\n function openBlob(blob, filename) {\n const url = URL.createObjectURL(blob);\n\n window.open(url, \"_blank\");\n };\n\n async function onAttachmentOpen(e) {\n const downloadFileResponse = await Storage.get(\"/vtas/\" + id + \"/\" + e.file.name, { download: true });\n\n openBlob(downloadFileResponse.Body, e.file.name);\n };\n\n const getEstimatePayload = React.useCallback(async (ID) => {\n try {\n let apiName = 'AdminSC';\n let path = '/procesacotizaciones';\n\n let myInit = {\n headers: {\n 'Content-Type': 'application/json',\n Authorization: `${(await Auth.currentSession()).getAccessToken().getJwtToken()}`\n },\n queryStringParameters: {\n ID: ID,\n action: 'payload',\n username: JSON.parse(JSON.stringify(await Auth.currentAuthenticatedUser())).username\n }\n }\n\n var payloadGet = await API.get(apiName, path, myInit);\n\n setEstimatePayload(payloadGet);\n\n //Obtenemos los attachments\n var attachmentsGet = await Storage.list(\"/vtas/\" + ID);\n var attachmentsAux = [];\n\n for (var attachmentsGetIndex in attachmentsGet) {\n var singleAttachmentsGet = attachmentsGet[attachmentsGetIndex];\n\n var singleAttachment = {\n name: singleAttachmentsGet.key.split('/').pop(),\n isDirectory: false,\n size: singleAttachmentsGet.size,\n };\n\n attachmentsAux.push(singleAttachment);\n }\n\n setAttachments(attachmentsAux);\n }\n catch (e) {\n if (e === 'No current user') {\n history.push('/');\n\n window.location.reload();\n }\n }\n\n return payloadGet;\n }, [history]);\n\n function editEstimate(data) {\n return (\n <Link to={`/Estimate/${data.data.ID}`}>\n <button class=\"bg-blue-500 hover:bg-blue-700 text-white py-1 px-3 rounded\" onClick={() => editButton(data.data.ID)}><FontAwesomeIcon icon={permissionLevel === 'Editar' ? faPencilAlt : faGlasses} /> {permissionLevel === 'Editar' ? 'Editar' : 'Ver'}</button>\n </Link>\n )\n }\n\n function openRelatedRecord(redirect) {\n if (redirect) {\n var baseUrl = window.location.href.split('#/')[0];\n\n redirect = baseUrl + '#' + redirect;\n\n window.open(redirect, \"_blank\");\n }\n };\n\n function openRelatedRecordButton(data) {\n return (\n <button onClick={() => openRelatedRecord(data.data.redirect)}><FontAwesomeIcon icon={faArrowUpRightFromSquare} /></button>\n )\n };\n\n function estatusRelatedRecords(data) {\n return (\n <TransactionStatus {...props} Estatus={data.data.Estatus} />\n )\n };\n\n const getUsoCFDIValido = React.useCallback(async (FiscalRegimen, isLoading) => {\n if (isLoading === true)\n setVisibleLoadPanel(true);\n\n var tmpUsoCFDI = [];\n let apiName = 'AdminSC';\n let path = '/getcatalogo';\n\n let myInit = {\n headers: {\n 'Content-Type': 'application/json',\n Authorization: `${(await Auth.currentSession()).getAccessToken().getJwtToken()}`\n },\n queryStringParameters: {\n type: 'UsoCFDI',\n username: JSON.parse(JSON.stringify(await Auth.currentAuthenticatedUser())).username\n }\n }\n\n var usoCFDIGet = await API.get(apiName, path, myInit);\n\n for (var usoCFDIIndex in usoCFDIGet) {\n var singleUsoCFDI = usoCFDIGet[usoCFDIIndex];\n\n if (singleUsoCFDI.FiscalRegimen === FiscalRegimen) {\n tmpUsoCFDI.push({\n name: singleUsoCFDI.ClaveUsoCFDI + ' - ' + singleUsoCFDI.Descripcion,\n value: singleUsoCFDI.ClaveUsoCFDI\n })\n }\n }\n\n setFiltroUsoCFDI(tmpUsoCFDI);\n\n if (isLoading === true)\n setVisibleLoadPanel(false);\n }, []);\n\n function blobToBase64(blob) {\n return new Promise((resolve, _) => {\n const reader = new FileReader();\n reader.onloadend = () => resolve(reader.result);\n reader.readAsDataURL(blob);\n });\n };\n\n const sendEstimateFile = React.useCallback(async (Movimiento, ID) => {\n try {\n let apiName = 'AdminSC';\n let path = '/enviarcorreo';\n\n let pdfFile = await Storage.get(\"/vtas/\" + ID + \"/\" + Movimiento.trim() + '.pdf', { download: true });\n\n if (!pdfFile) {\n return;\n }\n\n let pdfFileContents = await blobToBase64(pdfFile.Body);\n\n pdfFileContents = pdfFileContents.toString().split('base64,')[1];\n\n if (!pdfFileContents) {\n return;\n }\n\n let myInit = {\n headers: {\n 'Content-Type': 'application/json',\n Authorization: `${(await Auth.currentSession()).getAccessToken().getJwtToken()}`\n },\n body: {\n ToAddresses: [estimatePayload.shippingAddress.eMail],\n // BccAddresses: [],\n // CcAddresses: [],\n Body: Movimiento.trim(),\n Subject: Movimiento.trim(),\n Source: 'admin@supercolchones.com',\n Attachments: [{\n filename: Movimiento.trim() + '.pdf',\n content: pdfFileContents,\n encoding: 'base64'\n }\n ],\n username: JSON.parse(JSON.stringify(await Auth.currentAuthenticatedUser())).username\n }\n };\n\n var sendEstimate = await API.post(apiName, path, myInit);\n\n return sendEstimate;\n }\n catch (e) {\n }\n }, [estimatePayload.shippingAddress.eMail]);\n\n const newButton = React.useCallback(async () => {\n try {\n let apiName = 'AdminSC';\n let path = '/procesacotizaciones';\n\n let myInit = {\n headers: {\n 'Content-Type': 'application/json',\n Authorization: `${(await Auth.currentSession()).getAccessToken().getJwtToken()}`\n },\n queryStringParameters: {\n action: 'new',\n username: JSON.parse(JSON.stringify(await Auth.currentAuthenticatedUser())).username,\n usuario: props.usuario,\n sucursal: props.sucursal\n }\n };\n\n var payloadNew = await API.get(apiName, path, myInit);\n\n setEstimatePayload(payloadNew);\n\n setAttachments([]);\n\n setIsDetail(true);\n setId(undefined);\n\n setConDatosIguales(true);\n setConCambiarCliente(false);\n setConAutorizacionPrecio(false);\n\n await getUsoCFDIValido(payloadNew.billingAddress.FiscalRegimen, false);\n\n setActivateUpdateForm(true);\n setAcceptCustomValue(false);\n setActivateSaveButton(true);\n setActivateDeleteButton(false);\n setActivateCancelButton(false);\n setActivateConfirmButton(false);\n setActivatePDFButton(false);\n setActivateAttachments(false);\n setActivateUpdateGrid(true);\n setActivateSinAfectarPendienteFields(true);\n setActivateSinAfectarFields(true);\n setActivateCambiarCliente(true);\n\n setActivatePorLlamar(false);\n setActivateCompra(false);\n setActivateBaja(false);\n\n setActivatePedido(false);\n setActivateVentaPerdida(false);\n setActivateSendEstimate(false);\n\n setVisibleLoadPanel(false);\n }\n catch (e) {\n if (e === 'No current user') {\n history.push('/');\n\n window.location.reload();\n }\n }\n }, [getUsoCFDIValido, history, props.sucursal, props.usuario]);\n\n const editButton = React.useCallback(async (ID) => {\n try {\n if (!window.event.metaKey && !window.event.ctrlKey) {\n setVisibleLoadPanel(true);\n\n setIsDetail(true);\n setId(ID);\n\n var payload = await getEstimatePayload(ID);\n\n // Obtenemos el Uso de CFDI\n await getUsoCFDIValido(payload.billingAddress.FiscalRegimen, false);\n\n // Obtenemos las colonias de Entrega\n await getColonia(payload.shippingAddress.CodigoPostal, false)\n\n // Obtenemos las colonias de Facturacion\n if (payload.billingAddress.CodigoPostal1)\n await getColonia1(payload.billingAddress.CodigoPostal1, false)\n\n setConDatosIguales(payload.billingAddress.DFIguales);\n\n setConCambiarCliente(payload.header.SCCapturaCliente);\n\n if (payload.header.SCUsuarioAutorizaPrecios && payload.header.SCCodigoAutorizaPrecios)\n setConAutorizacionPrecio(true);\n else\n setConAutorizacionPrecio(false);\n\n if (permissionLevel === 'Editar') {\n if (payload.header.Estatus === 'Sin Afectar') {\n setActivateUpdateGrid(true);\n setAcceptCustomValue(false);\n setActivateSaveButton(true);\n setActivateDeleteButton(false);\n setActivateCancelButton(false);\n setActivatePDFButton(false);\n setActivateUpdateForm(true);\n setActivateAttachments(true);\n\n setActivateConfirmButton(true);\n\n setActivateSinAfectarPendienteFields(true);\n setActivateSinAfectarFields(true);\n\n if (!payload.header.Cliente)\n setActivateCambiarCliente(true);\n else\n setActivateCambiarCliente(false);\n\n setActivatePorLlamar(false);\n setActivateCompra(false);\n setActivateBaja(false);\n setActivatePedido(false);\n setActivateVentaPerdida(false);\n setActivateSendEstimate(false);\n }\n else if (payload.header.Estatus === 'Por Confirmar') {\n setActivateUpdateGrid(true);\n setAcceptCustomValue(false);\n setActivateSaveButton(true);\n setActivateDeleteButton(false);\n setActivateCancelButton(true);\n setActivatePDFButton(true);\n setActivateUpdateForm(true);\n setActivateAttachments(true);\n\n setActivateConfirmButton(false);\n\n setActivateSinAfectarPendienteFields(true);\n setActivateSinAfectarFields(true);\n\n if (!payload.header.Cliente)\n setActivateCambiarCliente(true);\n else\n setActivateCambiarCliente(false);\n\n setActivatePorLlamar(true);\n setActivateCompra(true);\n setActivateBaja(true);\n\n if (payload.header.Situacion === 'En Proceso' || payload.header.Situacion === '') {\n setActivateVentaPerdida(false);\n setActivatePedido(false);\n }\n else if (payload.header.Situacion === 'Por Llamar') {\n setActivateVentaPerdida(false);\n setActivatePedido(false);\n }\n else if (payload.header.Situacion === 'Compra') {\n setActivateVentaPerdida(false);\n\n if (salesOrder && salesOrderLevel === 'Editar')\n setActivatePedido(true);\n else\n setActivatePedido(false);\n }\n else if (payload.header.Situacion === 'Baja') {\n\n if (lostDeal && lostDealLevel === 'Editar')\n setActivateVentaPerdida(true);\n else\n setActivateVentaPerdida(false);\n\n setActivatePedido(false);\n }\n\n setActivateSendEstimate(true);\n }\n else if (payload.header.Estatus === 'Concluido') {\n setActivateUpdateGrid(false);\n setAcceptCustomValue(true);\n setActivateSaveButton(false);\n setActivateDeleteButton(false);\n setActivateCancelButton(false);\n setActivatePDFButton(true);\n setActivateUpdateForm(false);\n setActivateAttachments(false);\n\n setActivateConfirmButton(false);\n\n setActivateSinAfectarPendienteFields(false);\n setActivateSinAfectarFields(false);\n\n setActivateCambiarCliente(false);\n\n setActivatePorLlamar(false);\n setActivateCompra(false);\n setActivateBaja(false);\n\n setActivateVentaPerdida(false);\n setActivatePedido(false);\n setActivateSendEstimate(false);\n }\n else if (payload.header.Estatus === 'Cancelado') {\n setActivateUpdateGrid(false);\n setAcceptCustomValue(true);\n setActivateSaveButton(false);\n setActivateDeleteButton(false);\n setActivateCancelButton(false);\n setActivatePDFButton(true);\n setActivateUpdateForm(false);\n setActivateAttachments(false);\n\n setActivateConfirmButton(false);\n\n setActivateSinAfectarPendienteFields(false);\n setActivateSinAfectarFields(false);\n\n setActivateCambiarCliente(false);\n\n setActivatePorLlamar(false);\n setActivateCompra(false);\n setActivateBaja(false);\n\n setActivateVentaPerdida(false);\n setActivatePedido(false);\n setActivateSendEstimate(false);\n }\n }\n else if (permissionLevel === 'Ver') {\n setActivateUpdateGrid(false);\n setAcceptCustomValue(true);\n setActivateSaveButton(false);\n setActivateDeleteButton(false);\n setActivateCancelButton(false);\n setActivatePDFButton(true);\n setActivateUpdateForm(false);\n setActivateAttachments(false);\n\n setActivateConfirmButton(false);\n\n setActivateSinAfectarPendienteFields(false);\n setActivateSinAfectarFields(false);\n\n setActivateCambiarCliente(false);\n\n setActivatePorLlamar(false);\n setActivateCompra(false);\n setActivateBaja(false);\n\n setActivateVentaPerdida(false);\n setActivatePedido(false);\n setActivateSendEstimate(false);\n }\n\n setVisibleLoadPanel(false);\n }\n }\n catch (e) {\n setVisibleLoadPanel(false);\n\n if (!ID || ID === 'undefined') {\n newButton();\n }\n }\n }, [getColonia, getColonia1, getEstimatePayload, getUsoCFDIValido, newButton, permissionLevel, lostDeal, lostDealLevel, salesOrder, salesOrderLevel]);\n\n async function cancelEditButton() {\n setIsDetail(false);\n };\n\n async function saveButton() {\n if (formDatosGeneralesRef.current) {\n var formDatosGenerales = formDatosGeneralesRef.current.instance();\n var isValid = formDatosGenerales.validate();\n\n if (!isValid.isValid) {\n setVisibleToast(true);\n setMessageToast(isValid.brokenRules[0].message);\n setTypeToast('error');\n return;\n }\n }\n\n try {\n setVisibleLoadPanel(true);\n\n var ID = estimatePayload.header.ID;\n\n //Primero guardamos los cambios del grid Articulos\n if (gridArticulosRef.current) {\n var gridArticulos = gridArticulosRef.current.instance();\n\n gridArticulos.saveEditData();\n }\n\n //Despues enviamos todo al backend\n let apiName = 'AdminSC';\n let path = '/procesacotizaciones';\n\n let myInit = {\n headers: {\n 'Content-Type': 'application/json',\n Authorization: `${(await Auth.currentSession()).getAccessToken().getJwtToken()}`\n },\n body: {\n ID: ID,\n payload: estimatePayload,\n action: 'saveChanges',\n username: JSON.parse(JSON.stringify(await Auth.currentAuthenticatedUser())).username,\n usuario: props.usuario,\n sucursal: props.sucursal,\n s3Bucket: Storage._config.AWSS3.bucket\n }\n }\n\n var payloadPost = await API.post(apiName, path, myInit);\n\n if (payloadPost.ok === 'true') {\n if (!ID) {\n setVisibleToast(true);\n setMessageToast('Se creó la Cotización con éxito');\n setTypeToast('success')\n\n ID = payloadPost.newID;\n\n editButton(ID);\n\n history.push('/Estimate/' + ID.toString());\n }\n else {\n setVisibleToast(true);\n setMessageToast('Se actualizó la Cotización con éxito');\n setTypeToast('success')\n }\n }\n else if (payloadPost.ok === 'false') {\n setVisibleToast(true);\n setMessageToast(payloadPost.message);\n setTypeToast('error')\n }\n\n editButton(ID);\n\n setVisibleLoadPanel(false);\n }\n catch (e) {\n setVisibleLoadPanel(false);\n\n if (e === 'No current user') {\n history.push('/');\n\n window.location.reload();\n }\n }\n };\n\n const confirmButton = React.useCallback(async () => {\n if (formDatosGeneralesRef.current) {\n var formDatosGenerales = formDatosGeneralesRef.current.instance();\n var isValid = formDatosGenerales.validate();\n\n if (!isValid.isValid) {\n setVisibleToast(true);\n setMessageToast(isValid.brokenRules[0].message);\n setTypeToast('error');\n return;\n }\n }\n\n try {\n setVisibleLoadPanel(true);\n\n var ID = estimatePayload.header.ID;\n\n //Primero guardamos los cambios del grid Articulos\n if (gridArticulosRef.current) {\n var gridArticulos = gridArticulosRef.current.instance();\n\n gridArticulos.saveEditData();\n }\n\n var lambdaFunction;\n\n if (window.location.href.indexOf('sandbox.') >= 0 || window.location.href.indexOf('localhost') >= 0)\n lambdaFunction = 'procesaCotizaciones-dev';\n else if (window.location.href.indexOf('sandboxtampico.') >= 0)\n lambdaFunction = 'procesaCotizaciones-devleona';\n else if (window.location.href.indexOf('tampico.') >= 0)\n lambdaFunction = 'procesaCotizaciones-prodleona';\n else\n lambdaFunction = 'procesaCotizaciones-prod';\n\n Auth.currentCredentials()\n .then(credentials => {\n const lambda = new Lambda({\n credentials: Auth.essentialCredentials(credentials),\n region: 'us-east-1'\n });\n\n var params = {\n FunctionName: lambdaFunction,\n Payload: JSON.stringify({\n ID: ID,\n payload: estimatePayload,\n action: 'apply',\n username: props.username,\n usuario: props.usuario,\n sucursal: props.sucursal,\n s3Bucket: Storage._config.AWSS3.bucket\n })\n };\n\n lambda.invoke(params, function (err, data) {\n if (err) {\n setVisibleLoadPanel(false);\n\n setVisibleToast(true);\n setMessageToast(err.message);\n setTypeToast('error');\n }\n else {\n var payloadPost = JSON.parse(JSON.parse(data.Payload).body);\n\n if (payloadPost.ok === 'true') {\n setVisibleToast(true);\n setMessageToast('Cotización aplicada correctamente');\n setTypeToast('success');\n\n editButton(ID);\n\n setVisibleLoadPanel(false);\n }\n else if (payloadPost.ok === 'false') {\n setVisibleToast(true);\n\n if (!payloadPost.message || payloadPost.message === '' || payloadPost.message === 'Error SQL')\n setMessageToast('No se pudo aplicar la Cotización');\n else\n setMessageToast(payloadPost.message);\n\n setTypeToast('error')\n\n editButton(ID);\n\n setVisibleLoadPanel(false);\n }\n }\n });\n })\n }\n catch (e) {\n setVisibleLoadPanel(false);\n\n if (e === 'No current user') {\n history.push('/');\n\n window.location.reload();\n }\n }\n }, [editButton, formDatosGeneralesRef, gridArticulosRef, history, props.sucursal, props.username, props.usuario, estimatePayload]);\n\n async function voidButton() {\n try {\n if (!window.confirm('¿Desea cancelar la Cotización?'))\n return;\n\n setVisibleLoadPanel(true);\n\n var ID = estimatePayload.header.ID;\n\n //Guardamos los cambios del grid\n if (gridArticulosRef.current) {\n var gridArticulos = gridArticulosRef.current.instance();\n\n gridArticulos.saveEditData();\n }\n\n //Despues enviamos todo al backend\n let apiName = 'AdminSC';\n let path = '/procesacotizaciones';\n\n let myInit = {\n headers: {\n 'Content-Type': 'application/json',\n Authorization: `${(await Auth.currentSession()).getAccessToken().getJwtToken()}`\n },\n body: {\n ID: ID,\n payload: estimatePayload,\n action: 'void',\n username: JSON.parse(JSON.stringify(await Auth.currentAuthenticatedUser())).username,\n usuario: props.usuario,\n sucursal: props.sucursal\n }\n }\n\n var payloadPost = await API.post(apiName, path, myInit);\n\n if (payloadPost.ok === 'true') {\n setVisibleToast(true);\n setMessageToast('Se canceló la Cotización');\n setTypeToast('success')\n }\n else if (payloadPost.ok === 'false') {\n setVisibleToast(true);\n setMessageToast(payloadPost.message);\n setTypeToast('error')\n }\n\n editButton(ID);\n\n setVisibleLoadPanel(false);\n }\n catch (e) {\n setVisibleLoadPanel(false);\n\n if (e === 'No current user') {\n history.push('/');\n\n window.location.reload();\n }\n }\n };\n\n function refreshButton() {\n if (gridTableroRef.current) {\n var gridTablero = gridTableroRef.current.instance();\n\n gridTablero.refresh();\n }\n }\n\n async function deleteButton() {\n };\n\n function printButton() {\n var baseUrl = window.location.href.split('/')[0];\n\n window.open(baseUrl + \"/#/PdfRender?type=estimate&id=\" + id, \"_blank\");\n };\n\n async function callButton() {\n if (formDatosGeneralesRef.current) {\n var formDatosGenerales = formDatosGeneralesRef.current.instance();\n var isValid = formDatosGenerales.validate();\n\n if (!isValid.isValid) {\n setVisibleToast(true);\n setMessageToast(isValid.brokenRules[0].message);\n setTypeToast('error');\n return;\n }\n }\n\n try {\n setVisibleLoadPanel(true);\n\n var ID = estimatePayload.header.ID;\n\n //Primero guardamos los cambios del grid Articulos\n if (gridArticulosRef.current) {\n var gridArticulos = gridArticulosRef.current.instance();\n\n gridArticulos.saveEditData();\n }\n\n //Despues enviamos todo al backend\n let apiName = 'AdminSC';\n let path = '/procesacotizaciones';\n\n let myInit = {\n headers: {\n 'Content-Type': 'application/json',\n Authorization: `${(await Auth.currentSession()).getAccessToken().getJwtToken()}`\n },\n body: {\n ID: ID,\n payload: estimatePayload,\n action: 'isCall',\n username: JSON.parse(JSON.stringify(await Auth.currentAuthenticatedUser())).username,\n usuario: props.usuario,\n sucursal: props.sucursal,\n s3Bucket: Storage._config.AWSS3.bucket\n }\n }\n\n var payloadPost = await API.post(apiName, path, myInit);\n\n if (payloadPost.ok === 'true') {\n setVisibleToast(true);\n setMessageToast('Situación actualizada correctamente');\n setTypeToast('success');\n }\n else if (payloadPost.ok === 'false') {\n setVisibleToast(true);\n setMessageToast(payloadPost.message);\n setTypeToast('error')\n }\n\n editButton(ID);\n\n setVisibleLoadPanel(false);\n }\n catch (e) {\n setVisibleLoadPanel(false);\n\n if (e === 'No current user') {\n history.push('/');\n\n window.location.reload();\n }\n }\n };\n\n async function wonButton() {\n if (formDatosGeneralesRef.current) {\n var formDatosGenerales = formDatosGeneralesRef.current.instance();\n var isValid = formDatosGenerales.validate();\n\n if (!isValid.isValid) {\n setVisibleToast(true);\n setMessageToast(isValid.brokenRules[0].message);\n setTypeToast('error');\n return;\n }\n }\n\n try {\n setVisibleLoadPanel(true);\n\n var ID = estimatePayload.header.ID;\n\n //Primero guardamos los cambios del grid Articulos\n if (gridArticulosRef.current) {\n var gridArticulos = gridArticulosRef.current.instance();\n\n gridArticulos.saveEditData();\n }\n\n //Despues enviamos todo al backend\n let apiName = 'AdminSC';\n let path = '/procesacotizaciones';\n\n let myInit = {\n headers: {\n 'Content-Type': 'application/json',\n Authorization: `${(await Auth.currentSession()).getAccessToken().getJwtToken()}`\n },\n body: {\n ID: ID,\n payload: estimatePayload,\n action: 'isWon',\n username: JSON.parse(JSON.stringify(await Auth.currentAuthenticatedUser())).username,\n usuario: props.usuario,\n sucursal: props.sucursal,\n s3Bucket: Storage._config.AWSS3.bucket\n }\n }\n\n var payloadPost = await API.post(apiName, path, myInit);\n\n if (payloadPost.ok === 'true') {\n setVisibleToast(true);\n setMessageToast('Situación actualizada correctamente');\n setTypeToast('success')\n }\n else if (payloadPost.ok === 'false') {\n setVisibleToast(true);\n setMessageToast(payloadPost.message);\n setTypeToast('error')\n }\n\n editButton(ID);\n\n setVisibleLoadPanel(false);\n }\n catch (e) {\n setVisibleLoadPanel(false);\n\n if (e === 'No current user') {\n history.push('/');\n\n window.location.reload();\n }\n }\n };\n\n async function lostButton() {\n if (formDatosGeneralesRef.current) {\n var formDatosGenerales = formDatosGeneralesRef.current.instance();\n var isValid = formDatosGenerales.validate();\n\n if (!isValid.isValid) {\n setVisibleToast(true);\n setMessageToast(isValid.brokenRules[0].message);\n setTypeToast('error');\n return;\n }\n }\n\n try {\n setVisibleLoadPanel(true);\n\n var ID = estimatePayload.header.ID;\n\n //Primero guardamos los cambios del grid Articulos\n if (gridArticulosRef.current) {\n var gridArticulos = gridArticulosRef.current.instance();\n\n gridArticulos.saveEditData();\n }\n\n //Despues enviamos todo al backend\n let apiName = 'AdminSC';\n let path = '/procesacotizaciones';\n\n let myInit = {\n headers: {\n 'Content-Type': 'application/json',\n Authorization: `${(await Auth.currentSession()).getAccessToken().getJwtToken()}`\n },\n body: {\n ID: ID,\n payload: estimatePayload,\n action: 'isLost',\n username: JSON.parse(JSON.stringify(await Auth.currentAuthenticatedUser())).username,\n usuario: props.usuario,\n sucursal: props.sucursal,\n s3Bucket: Storage._config.AWSS3.bucket\n }\n }\n\n var payloadPost = await API.post(apiName, path, myInit);\n\n if (payloadPost.ok === 'true') {\n setVisibleToast(true);\n setMessageToast('Situación actualizada correctamente');\n setTypeToast('success')\n }\n else if (payloadPost.ok === 'false') {\n setVisibleToast(true);\n setMessageToast(payloadPost.message);\n setTypeToast('error')\n }\n\n editButton(ID);\n\n setVisibleLoadPanel(false);\n }\n catch (e) {\n setVisibleLoadPanel(false);\n\n if (e === 'No current user') {\n history.push('/');\n\n window.location.reload();\n }\n }\n };\n\n const lostDealButton = React.useCallback(async () => {\n if (!window.confirm('¿Desea generar la Venta Perdida?'))\n return;\n\n if (formDatosGeneralesRef.current) {\n var formDatosGenerales = formDatosGeneralesRef.current.instance();\n var isValid = formDatosGenerales.validate();\n\n if (!isValid.isValid) {\n setVisibleToast(true);\n setMessageToast(isValid.brokenRules[0].message);\n setTypeToast('error');\n return;\n }\n }\n\n try {\n setVisibleLoadPanel(true);\n\n var ID = estimatePayload.header.ID;\n\n //Primero guardamos los cambios del grid Articulos\n if (gridArticulosRef.current) {\n var gridArticulos = gridArticulosRef.current.instance();\n\n gridArticulos.saveEditData();\n }\n\n var lambdaFunction;\n\n if (window.location.href.indexOf('sandbox.') >= 0 || window.location.href.indexOf('localhost') >= 0)\n lambdaFunction = 'procesaCotizaciones-dev';\n else if (window.location.href.indexOf('sandboxtampico.') >= 0)\n lambdaFunction = 'procesaCotizaciones-devleona';\n else if (window.location.href.indexOf('tampico.') >= 0)\n lambdaFunction = 'procesaCotizaciones-prodleona';\n else\n lambdaFunction = 'procesaCotizaciones-prod';\n\n Auth.currentCredentials()\n .then(credentials => {\n const lambda = new Lambda({\n credentials: Auth.essentialCredentials(credentials),\n region: 'us-east-1'\n });\n\n var params = {\n FunctionName: lambdaFunction,\n Payload: JSON.stringify({\n ID: ID,\n payload: estimatePayload,\n action: 'lostDeal',\n username: props.username,\n usuario: props.usuario,\n sucursal: props.sucursal,\n s3Bucket: Storage._config.AWSS3.bucket\n })\n };\n\n lambda.invoke(params, function (err, data) {\n if (err) {\n setVisibleLoadPanel(false);\n\n setVisibleToast(true);\n setMessageToast(err.message);\n setTypeToast('error');\n }\n else {\n var payloadPost = JSON.parse(JSON.parse(data.Payload).body);\n\n if (payloadPost.ok === 'true') {\n setVisibleToast(true);\n setMessageToast('Se generó la Venta Perdida');\n setTypeToast('success');\n\n setVisibleLoadPanel(false);\n\n var newID = payloadPost.newID;\n\n var baseUrl = window.location.href.split('/')[0];\n\n window.open(baseUrl + \"/#/LostDeal/\" + newID, \"_blank\");\n\n window.location.reload();\n }\n else if (payloadPost.ok === 'false') {\n setVisibleToast(true);\n\n if (!payloadPost.message || payloadPost.message === '' || payloadPost.message === 'Error SQL')\n setMessageToast('No se pudo generar la Venta Perdida');\n else\n setMessageToast(payloadPost.message);\n\n setTypeToast('error')\n\n editButton(ID);\n\n setVisibleLoadPanel(false);\n }\n }\n });\n })\n }\n catch (e) {\n setVisibleLoadPanel(false);\n\n if (e === 'No current user') {\n history.push('/');\n\n window.location.reload();\n }\n }\n }, [editButton, formDatosGeneralesRef, gridArticulosRef, history, props.sucursal, props.username, props.usuario, estimatePayload]);\n\n const salesOrderButton = React.useCallback(async () => {\n if (!window.confirm('¿Desea generar el Pedido?'))\n return;\n\n if (formDatosGeneralesRef.current) {\n var formDatosGenerales = formDatosGeneralesRef.current.instance();\n var isValid = formDatosGenerales.validate();\n\n if (!isValid.isValid) {\n setVisibleToast(true);\n setMessageToast(isValid.brokenRules[0].message);\n setTypeToast('error');\n return;\n }\n }\n\n try {\n setVisibleLoadPanel(true);\n\n var ID = estimatePayload.header.ID;\n\n //Primero guardamos los cambios del grid Articulos\n if (gridArticulosRef.current) {\n var gridArticulos = gridArticulosRef.current.instance();\n\n gridArticulos.saveEditData();\n }\n\n var lambdaFunction;\n\n if (window.location.href.indexOf('sandbox.') >= 0 || window.location.href.indexOf('localhost') >= 0)\n lambdaFunction = 'procesaCotizaciones-dev';\n else if (window.location.href.indexOf('sandboxtampico.') >= 0)\n lambdaFunction = 'procesaCotizaciones-devleona';\n else if (window.location.href.indexOf('tampico.') >= 0)\n lambdaFunction = 'procesaCotizaciones-prodleona';\n else\n lambdaFunction = 'procesaCotizaciones-prod';\n\n Auth.currentCredentials()\n .then(credentials => {\n const lambda = new Lambda({\n credentials: Auth.essentialCredentials(credentials),\n region: 'us-east-1'\n });\n\n var params = {\n FunctionName: lambdaFunction,\n Payload: JSON.stringify({\n ID: ID,\n payload: estimatePayload,\n action: 'salesOrder',\n username: props.username,\n usuario: props.usuario,\n sucursal: props.sucursal,\n s3Bucket: Storage._config.AWSS3.bucket\n })\n };\n\n lambda.invoke(params, function (err, data) {\n if (err) {\n setVisibleLoadPanel(false);\n\n setVisibleToast(true);\n setMessageToast(err.message);\n setTypeToast('error');\n }\n else {\n var payloadPost = JSON.parse(JSON.parse(data.Payload).body);\n\n if (payloadPost.ok === 'true') {\n setVisibleToast(true);\n setMessageToast('Se generó el Pedido');\n setTypeToast('success');\n\n setVisibleLoadPanel(false);\n\n var newID = payloadPost.newID;\n\n var baseUrl = window.location.href.split('/')[0];\n\n window.open(baseUrl + \"/#/SalesOrder/\" + newID, \"_blank\");\n\n window.location.reload();\n }\n else if (payloadPost.ok === 'false') {\n setVisibleToast(true);\n\n if (!payloadPost.message || payloadPost.message === '' || payloadPost.message === 'Error SQL')\n setMessageToast('No se pudo generar el Pedido');\n else\n setMessageToast(payloadPost.message);\n\n setTypeToast('error')\n\n editButton(ID);\n\n setVisibleLoadPanel(false);\n }\n }\n });\n })\n }\n catch (e) {\n setVisibleLoadPanel(false);\n\n if (e === 'No current user') {\n history.push('/');\n\n window.location.reload();\n }\n }\n }, [editButton, formDatosGeneralesRef, gridArticulosRef, history, props.sucursal, props.username, props.usuario, estimatePayload]);\n\n async function sendEstimateButton() {\n var modulo = 'vtas';\n var type = 'estimate';\n\n try {\n //Primero obtenemos el payload actualizado\n var payload = await getEstimatePayload(id);\n\n setVisibleLoadPanel(true);\n\n // Despues enviamos el payload a la API crearPDF\n // *********************************************\n let apiName = 'AdminSC';\n let path = '/crearpdf';\n\n let myInit = {\n headers: {\n 'Content-Type': 'application/json',\n Authorization: `${(await Auth.currentSession()).getAccessToken().getJwtToken()}`\n },\n body: {\n type: type,\n payload: payload,\n bucketName: Storage._config.AWSS3.bucket,\n fileKey: `public//${modulo}/${id}/${payload.header.Mov.trim()} ${payload.header.MovID.trim()}.pdf`,\n contentType: 'application/pdf',\n username: JSON.parse(JSON.stringify(await Auth.currentAuthenticatedUser())).username\n }\n }\n\n var pdfPost = await API.post(apiName, path, myInit);\n // *********************************************\n\n if (pdfPost.message.indexOf('Error') >= 0) {\n setVisibleLoadPanel(false);\n\n setVisibleToast(true);\n setMessageToast(pdfPost.message);\n setTypeToast('error');\n return;\n }\n\n sendEstimateFile(payload.header.Movimiento, payload.header.ID);\n\n setVisibleLoadPanel(false);\n\n setVisibleToast(true);\n setMessageToast('Se envió la Cotización con éxito');\n setTypeToast('success')\n }\n catch (e) {\n setVisibleLoadPanel(false);\n\n if (e === 'No current user') {\n history.push('/');\n\n window.location.reload();\n }\n }\n };\n\n const getUsuario = React.useCallback(async () => {\n let apiName = 'AdminSC';\n let path = '/getcatalogo';\n\n let myInit = {\n headers: {\n 'Content-Type': 'application/json',\n Authorization: `${(await Auth.currentSession()).getAccessToken().getJwtToken()}`\n },\n queryStringParameters: {\n type: 'Usuario',\n username: JSON.parse(JSON.stringify(await Auth.currentAuthenticatedUser())).username\n }\n }\n\n var usuariosGet = await API.get(apiName, path, myInit);\n\n setUsuarios(usuariosGet);\n\n }, []);\n\n const iconoSituacion = React.useCallback((data) => {\n var Situacion = data.data.Situacion;\n\n if (!Situacion)\n Situacion = '';\n\n if (Situacion === 'En Proceso') {\n return (<div class=\"inline-block text-xl\"><FontAwesomeIcon icon={faFilterCircleDollar} /></div>);\n }\n else if (Situacion === 'Por Llamar') {\n return (<div class=\"inline-block text-xl\"><FontAwesomeIcon icon={faCirclePhone} /></div>);\n }\n else if (Situacion === 'Compra') {\n return (<div class=\"inline-block text-xl\"><FontAwesomeIcon icon={faCartPlus} /></div>);\n }\n else if (Situacion === 'Baja') {\n return (<div class=\"inline-block text-xl\"><FontAwesomeIcon icon={faCartMinus} /></div>);\n }\n\n }, []);\n\n useEffect(() => {\n window.addEventListener('popstate', (e) => {\n var hash;\n\n try {\n hash = e.target.location.hash;\n }\n catch (e) {\n hash = '';\n }\n\n if (hash === '#/Estimate') {\n history.push('/Estimate');\n\n window.location.reload();\n }\n });\n\n async function initialize() {\n setVisibleLoadPanel(true);\n\n await getFiscalRegimen();\n\n await getUsuario();\n\n await getAgente();\n\n await getListaPrecios();\n\n await getConceptos();\n\n await getCondiciones();\n\n setVisibleLoadPanel(false);\n }\n\n initialize();\n\n //En caso de solicitar un ID especifico, redireccionamos a ese ID\n if (!props.match.isExact) {\n var urlID = props.location.pathname.replace('/Estimate/', '');\n\n if (urlID === 'undefined')\n urlID = undefined;\n\n if (urlID)\n editButton(urlID);\n else\n newButton();\n }\n\n // eslint-disable-next-line\n }, []);\n\n const overrideOnValueChanged = React.useCallback((e) => {\n //Hacemos la data persistente en cuanto el usuario escriba en el campo\n // if (e.parentType === \"dataRow\") {\n // e.editorOptions.valueChangeEvent = \"input\";\n // }\n }, []);\n\n const onHidingToast = React.useCallback(() => {\n setVisibleToast(false);\n }, []);\n\n const onFieldDatosGeneralesChanged = React.useCallback(async (e) => {\n var dataField = e.dataField;\n var value = e.value;\n\n if (formDatosGeneralesRef.current) {\n var formDatosGenerales = formDatosGeneralesRef.current.instance();\n\n if (e.dataField === 'billingAddress.DFIguales') {\n setConDatosIguales(value);\n\n formDatosGenerales.updateData('billingAddress.RazonSocial1', undefined);\n formDatosGenerales.updateData('billingAddress.Telefonos1', undefined);\n formDatosGenerales.updateData('billingAddress.Direccion1', undefined);\n formDatosGenerales.updateData('billingAddress.CodigoPostal1', undefined);\n formDatosGenerales.updateData('billingAddress.ClaveColonia1', undefined);\n formDatosGenerales.updateData('billingAddress.ClaveMunicipio1', undefined);\n formDatosGenerales.updateData('billingAddress.ClaveLocalidad1', undefined);\n formDatosGenerales.updateData('billingAddress.ClaveEstado1', undefined);\n formDatosGenerales.updateData('billingAddress.ClavePais1', undefined);\n }\n else if (e.dataField === 'header.SCCapturaCliente') {\n setConCambiarCliente(value);\n\n formDatosGenerales.updateData('header.Cliente', undefined);\n formDatosGenerales.updateData('header.RFC', undefined);\n }\n else if (e.dataField === 'billingAddress.FiscalRegimen') {\n formDatosGenerales.updateData('billingAddress.SATCatUsoCFDI', undefined);\n\n\n if (e.value) {\n await getUsoCFDIValido(e.value, true);\n }\n }\n else if (e.dataField === 'shippingAddress.CodigoPostal') {\n formDatosGenerales.updateData('shippingAddress.ClaveColonia', undefined);\n\n if (e.value) {\n await getColonia(e.value, true);\n }\n }\n else if (e.dataField === 'billingAddress.CodigoPostal1') {\n formDatosGenerales.updateData('billingAddress.ClaveColonia1', undefined);\n\n if (e.value) {\n await getColonia1(e.value, true);\n }\n }\n else if (e.dataField === 'header.SCUsuarioAutorizaPrecios' || e.dataField === 'header.SCCodigoAutorizaPrecios') {\n var SCUsuarioAutorizaPrecios = estimatePayload.header.SCUsuarioAutorizaPrecios;\n var SCCodigoAutorizaPrecios = estimatePayload.header.SCCodigoAutorizaPrecios;\n\n if (SCUsuarioAutorizaPrecios && SCCodigoAutorizaPrecios)\n setConAutorizacionPrecio(true);\n else\n setConAutorizacionPrecio(false);\n }\n }\n }, [formDatosGeneralesRef, getColonia, getColonia1, getUsoCFDIValido, estimatePayload.header.SCCodigoAutorizaPrecios, estimatePayload.header.SCUsuarioAutorizaPrecios]);\n\n const datosFacturacionValidationCallback = React.useCallback((e) => {\n if (!conDatosIguales) {\n if (e.value !== '' && e.value && e.value !== null) {\n return true;\n }\n else {\n return false;\n }\n }\n else {\n return true;\n }\n }, [conDatosIguales]);\n\n const onEditorArticulosPreparing = React.useCallback((e) => {\n if (e.parentType === \"dataRow\") {\n if (e.dataField === \"Articulo\") {\n\n e.editorOptions.displayExpr = \"name\";\n e.editorOptions.valueExpr = \"value\";\n e.editorOptions.searchEnabled = true;\n e.editorOptions.showClearButton = true;\n e.editorOptions.acceptCustomValue = false;\n e.editorOptions.clearButtonText = 'Cerrar';\n e.editorOptions.noDataText = 'No se encontraron resultados';\n\n const defaultValueChangeHandler = e.editorOptions.onValueChanged;\n // var ListaPreciosEsp = estimatePayload.header.ListaPreciosEsp; \n\n e.editorOptions.onValueChanged = function (ev) {\n let selectedItem = ev.component.option(\"selectedItem\");\n e.setValue(selectedItem);\n };\n }\n if (e.dataField === \"Cantidad\") {\n e.editorOptions.min = 1;\n }\n if (e.dataField === \"Precio\") {\n e.editorOptions.min = 0.0;\n }\n }\n }, []);\n\n const onEditingStartArticulos = React.useCallback((e) => {\n var ListaPreciosEsp = estimatePayload.header.ListaPreciosEsp;\n\n if (!ListaPreciosEsp) {\n setVisibleToast(true);\n setMessageToast('Falta especificar la Lista de Precios del Pedido')\n setTypeToast('error');\n e.cancel = true;\n }\n }, [estimatePayload.header.ListaPreciosEsp]);\n\n const setCellValueArticulo = React.useCallback((rowData, value) => {\n rowData.Articulo = value.value;\n rowData.ArtDescripcion = value.name;\n rowData.Cantidad = 1;\n rowData.Precio = value.Price;\n rowData.Importe = value.Price;\n }, []);\n\n const setCellValueCantidad = React.useCallback((rowData, value, currentRowData) => {\n var Cantidad = parseFloat(value);\n var Precio = parseFloat(currentRowData.Precio);\n\n rowData.Importe = parseFloat((Cantidad * Precio).toFixed(2));\n rowData.Cantidad = parseFloat(Cantidad);\n }, []);\n\n const setCellValuePrecio = React.useCallback((rowData, value, currentRowData) => {\n var Cantidad = parseFloat(currentRowData.Cantidad);\n var Precio = parseFloat(value);\n\n rowData.Importe = parseFloat((Cantidad * Precio).toFixed(2));\n rowData.Precio = parseFloat(Precio);\n }, []);\n\n function onExporting(e) {\n const workbook = new Workbook();\n const worksheet = workbook.addWorksheet('Datos');\n\n exportDataGrid({\n component: e.component,\n worksheet,\n autoFilterEnabled: true,\n }).then(() => {\n workbook.xlsx.writeBuffer().then((buffer) => {\n saveAs(new Blob([buffer], { type: 'application/octet-stream' }), 'Datos.xlsx');\n });\n });\n e.cancel = true;\n };\n\n return (\n <div>\n {isDetail === false ? (\n <div class=\"bg-gray-200 m-2\">\n <h1 class=\"font-sans inline-block text-xl font-bold text-gray-700 leading-8 align-top mb-1\"><FontAwesomeIcon icon={faList} size=\"lg\" /> Cotizaciones</h1>\n </div>\n ) :\n (\n <div class=\"bg-gray-200 m-2\">\n <h1 class=\"font-sans inline-block text-xl font-bold text-gray-700 leading-8 align-top mb-1\"><FontAwesomeIcon icon={faCommentDollar} size=\"xl\" /> {(estimatePayload.header ? estimatePayload.header.Movimiento : 'Cotización')}</h1>\n <TransactionStatus {...props} Estatus={estimatePayload.header.Estatus} />\n </div>\n )}\n\n <LoadPanel\n shadingColor=\"rgba(0,0,0,0.4)\"\n visible={visibleLoadPanel}\n showIndicator={true}\n message=\"Por favor espere...\"\n shading={true}\n showPane={true}\n hideOnOutsideClick={false}\n />\n\n <Toast\n visible={visibleToast}\n message={messageToast}\n type={typeToast}\n onHiding={onHidingToast}\n displayTime={5000}\n width={'auto'}\n position={{\n my: 'top center',\n at: 'top center',\n of: window,\n offset: '0 130'\n }}\n />\n\n <div class=\"bg-gray-200 m-2\">\n {isDetail === false ? (\n <div class=\"bg-white p-3 shadow-xl\">\n\n {permissionLevel === 'Editar' ?\n (\n <div>\n <Link to=\"/Estimate/undefined\">\n <button class=\"mb-2 bg-green-500 hover:bg-green-700 text-white font-bold py-2 px-4 rounded\" onClick={() => newButton()}><FontAwesomeIcon icon={faFileAlt} /> Nueva Cotización</button>\n </Link>\n\n <button onClick={refreshButton} type=\"submit\" class=\"ml-4 mb-4 bg-blue-500 hover:bg-blue-700 text-white font-bold py-2 px-4 rounded\">\n <FontAwesomeIcon icon={faArrowsRotate} /> Actualizar\n </button>\n </div>\n ) :\n (\n <div>\n <button onClick={refreshButton} type=\"submit\" class=\"mb-4 bg-blue-500 hover:bg-blue-700 text-white font-bold py-2 px-4 rounded\">\n <FontAwesomeIcon icon={faArrowsRotate} /> Actualizar\n </button>\n </div>\n )}\n\n <div className=\"options mb-2\">\n <div className=\"option\">\n <CheckBox text=\"Expandir todos los grupos\"\n value={autoExpandAll}\n onValueChanged={onAutoExpandAllChanged}></CheckBox>\n </div>\n </div>\n <DataGrid\n height={800}\n id=\"gridContainer\"\n columnsAutoWidth={true}\n filterBuilder={filterBuilder}\n dataSource={store}\n defaultFilterValue={filterValue}\n allowColumnReordering={true}\n allowColumnResizing={true}\n columnResizingMode={\"widget\"}\n showBorders={true}\n rowAlternationEnabled={true}\n showRowLines={true}\n showColumnLines={true}\n remoteOperations={{ filtering: true }}\n ref={gridTableroRef}\n onExporting={onExporting}\n >\n <Scrolling rowRenderingMode='virtual'></Scrolling>\n <Paging defaultPageSize={10} />\n <Pager\n visible={true}\n allowedPageSizes={allowedPageSizes}\n displayMode='compact'\n showPageSizeSelector={true}\n showInfo={true}\n showNavigationButtons={true}\n />\n <FilterRow visible={true} />\n <FilterPanel visible={true} />\n <FilterBuilderPopup position={filterBuilderPopupPosition} />\n\n <HeaderFilter visible={true} />\n\n <GroupPanel visible={true} />\n <SearchPanel visible={true} />\n <ColumnChooser\n enabled={true}\n mode='select'\n >\n <ColumnChooserSearch\n enabled={true}\n />\n\n <ColumnChooserSelection\n allowSelectAll={true}\n selectByClick={true}\n recursive={true}\n />\n </ColumnChooser>\n <Grouping autoExpandAll={autoExpandAll} />\n <StateStoring enabled={true} type=\"localStorage\" storageKey=\"gridContainerEstimate\" />\n <Export enabled={true} />\n\n <Column caption=\"\" alignment=\"center\" width={100} cellRender={editEstimate} />\n <Column dataField=\"MovID\" dataType=\"string\" width={110} caption=\"Folio\" />\n <Column caption=\"Situación\" alignment=\"center\" width={130} cellRender={iconoSituacion} />\n <Column dataField=\"FechaEmision\" caption=\"Fecha Emisión\" dataType=\"date\" width={130} />\n <Column dataField=\"Estatus\" dataType=\"string\" width={120} />\n <Column dataField=\"NombreCliente\" caption=\"Nombre Cliente\" dataType=\"string\" width={250} />\n <Column caption=\"Plaza\" dataField=\"Plaza\" dataType=\"string\" width={150} visible={false} />\n\n <Column dataField=\"ID\" dataType=\"number\" width={150} visible={false} />\n <Column dataField=\"Mov\" dataType=\"string\" width={190} caption=\"Tipo Movimiento\" visible={false} />\n <Column dataField=\"Movimiento\" dataType=\"string\" width={190} visible={false} />\n <Column dataField=\"Importe\" caption=\"Importe\" dataType=\"number\" width={150} visible={false}>\n <Format\n type=\"currency\"\n precision={2}\n />\n </Column>\n <Column dataField=\"Impuestos\" caption=\"Impuestos\" dataType=\"number\" width={150} visible={false}>\n <Format\n type=\"currency\"\n precision={2}\n />\n </Column>\n <Column dataField=\"ImporteTotal\" caption=\"Importe Total\" dataType=\"number\" width={150}>\n <Format\n type=\"currency\"\n precision={2}\n />\n </Column>\n\n <Column dataField=\"Almacen\" dataType=\"string\" width={190} caption=\"Almacén\" visible={false} />\n <Column dataField=\"NombreAlmacen\" dataType=\"string\" width={190} caption=\"Nombre Almacén\" visible={false} />\n <Column dataField=\"Agente\" dataType=\"string\" width={190} visible={false} />\n <Column dataField=\"NombreAgente\" dataType=\"string\" width={190} visible={false} />\n <Column dataField=\"Cliente\" dataType=\"string\" width={190} visible={false} />\n <Column dataField=\"Sucursal\" dataType=\"number\" width={150} visible={false} />\n <Column dataField=\"NombreSucursal\" dataType=\"string\" width={190} visible={false} />\n <Column dataField=\"Usuario\" dataType=\"string\" width={190} visible={false} />\n <Column dataField=\"NombreUsuario\" dataType=\"string\" width={190} visible={false} />\n\n <Summary>\n <GroupItem\n column=\"Importe\"\n summaryType=\"sum\"\n valueFormat=\"$,##0.##\"\n displayFormat=\"Importe {0}\"\n showInGroupFooter={false}>\n </GroupItem>\n <GroupItem\n column=\"Impuestos\"\n summaryType=\"sum\"\n valueFormat=\"$,##0.##\"\n displayFormat=\"Impuestos {0}\"\n showInGroupFooter={false}>\n </GroupItem>\n <GroupItem\n column=\"ImporteTotal\"\n summaryType=\"sum\"\n valueFormat=\"$,##0.##\"\n displayFormat=\"Importe Total {0}\"\n showInGroupFooter={false}>\n </GroupItem>\n <TotalItem\n column=\"Importe\"\n summaryType=\"sum\"\n valueFormat=\"$,##0.##\"\n displayFormat=\"Importe {0}\"\n showInColumn=\"Importe\">\n </TotalItem>\n <TotalItem\n column=\"Impuestos\"\n summaryType=\"sum\"\n valueFormat=\"$,##0.##\"\n displayFormat=\"Impuestos {0}\"\n showInColumn=\"Impuestos\">\n </TotalItem>\n <TotalItem\n column=\"ImporteTotal\"\n summaryType=\"sum\"\n valueFormat=\"$,##0.##\"\n displayFormat=\"Importe Total {0}\"\n showInColumn=\"ImporteTotal\">\n </TotalItem>\n </Summary>\n </DataGrid>\n </div>\n ) : (<div />)}\n <Route exact path=\"/Estimate/:ID\" render={({ match }) => {\n return (\n <div class=\"bg-gray-200\">\n {isDetail.toString() === 'true' ?\n (\n <div>\n <Link to=\"/Estimate\">\n <button onClick={cancelEditButton} type=\"submit\" class=\"mb-4 bg-red-500 hover:bg-red-700 text-white font-bold py-2 px-4 rounded\">\n <FontAwesomeIcon icon={faArrowRotateLeft} /> Regresar\n </button>\n </Link>\n\n {activateSaveButton.toString() === 'true' ?\n (\n <button onClick={saveButton} type=\"submit\" class=\"ml-4 mb-4 bg-blue-500 hover:bg-blue-700 text-white font-bold py-2 px-4 rounded\">\n <FontAwesomeIcon icon={faSave} /> Guardar Cambios\n </button>\n ) : (\n <div class=\"inline-block\"></div>\n )}\n\n {activatePorLlamar.toString() === 'true' ?\n (\n <button onClick={callButton} type=\"submit\" class=\"ml-4 mb-4 bg-blue-500 hover:bg-blue-700 text-white font-bold py-2 px-4 rounded\">\n <FontAwesomeIcon icon={faCirclePhoneButton} /> Por Llamar\n </button>\n ) : (\n <div class=\"inline-block\"></div>\n )}\n\n {activateCompra.toString() === 'true' ?\n (\n <button onClick={wonButton} type=\"submit\" class=\"ml-4 mb-4 bg-blue-500 hover:bg-blue-700 text-white font-bold py-2 px-4 rounded\">\n <FontAwesomeIcon icon={faCartPlusButton} /> Compra\n </button>\n ) : (\n <div class=\"inline-block\"></div>\n )}\n\n {activateBaja.toString() === 'true' ?\n (\n <button onClick={lostButton} type=\"submit\" class=\"ml-4 mb-4 bg-blue-500 hover:bg-blue-700 text-white font-bold py-2 px-4 rounded\">\n <FontAwesomeIcon icon={faCartMinusButton} /> Baja\n </button>\n ) : (\n <div class=\"inline-block\"></div>\n )}\n\n {activatePedido.toString() === 'true' ?\n (\n <button onClick={salesOrderButton} type=\"submit\" class=\"ml-4 mb-4 bg-green-500 hover:bg-green-700 text-white font-bold py-2 px-4 rounded\">\n <FontAwesomeIcon icon={faHandshake} /> Crear Pedido\n </button>\n ) : (\n <div class=\"inline-block\"></div>\n )}\n\n {activateVentaPerdida.toString() === 'true' ?\n (\n <button onClick={lostDealButton} type=\"submit\" class=\"ml-4 mb-4 bg-green-500 hover:bg-green-700 text-white font-bold py-2 px-4 rounded\">\n <FontAwesomeIcon icon={faThumbsDown} /> Crear Venta Perdida\n </button>\n ) : (\n <div class=\"inline-block\"></div>\n )}\n\n {activateConfirmButton.toString() === 'true' && id ?\n (\n <button onClick={confirmButton} type=\"submit\" class=\"ml-4 mb-4 bg-green-500 hover:bg-green-700 text-white font-bold py-2 px-4 rounded\">\n <FontAwesomeIcon icon={faPlay} /> Afectar\n </button>\n ) : (\n <div class=\"inline-block\"></div>\n )}\n\n {activateDeleteButton.toString() === 'true' && id ?\n (\n <button onClick={deleteButton} type=\"submit\" class=\"ml-4 mb-4 bg-red-500 hover:bg-red-700 text-white font-bold py-2 px-4 rounded\">\n <FontAwesomeIcon icon={faTrash} /> Eliminar\n </button>\n ) :\n (\n <div class=\"inline-block\"></div>\n )}\n\n {activateCancelButton.toString() === 'true' && id ?\n (\n <button onClick={voidButton} type=\"submit\" class=\"ml-4 mb-4 bg-red-500 hover:bg-red-700 text-white font-bold py-2 px-4 rounded\">\n <FontAwesomeIcon icon={faWindowClose} /> Cancelar\n </button>\n ) :\n (\n <div class=\"inline-block\"></div>\n )}\n\n {activatePDFButton.toString() === 'true' && id ?\n (\n <button onClick={printButton} type=\"submit\" class=\"ml-4 mb-4 bg-gray-500 hover:bg-gray-700 text-white font-bold py-2 px-4 rounded\">\n <FontAwesomeIcon icon={faFilePdf} /> PDF\n </button>\n ) :\n (\n <div class=\"inline-block\"></div>\n )}\n\n {activateSendEstimate && id ?\n (\n <button onClick={sendEstimateButton} type=\"submit\" class=\"ml-4 mb-4 bg-blue-500 hover:bg-blue-700 text-white font-bold py-2 px-4 rounded\">\n <FontAwesomeIcon icon={faEnvelope} /> Enviar Cotización\n </button>\n ) :\n (\n <div class=\"inline-block\"></div>\n )}\n\n <div class=\"bg-white p-4 shadow-xl\">\n <Form\n id=\"formTransaccion\"\n labelMode={'outside'}\n formData={estimatePayload}\n readOnly={!activateUpdateForm}\n showColonAfterLabel={false}\n labelLocation={'top'}\n onFieldDataChanged={onFieldDatosGeneralesChanged}\n ref={formDatosGeneralesRef}\n >\n <TabbedItem>\n <TabPanelOptions deferRendering={false} showNavButtons={true} />\n <Tab title=\"Datos Generales\" colCount={2}>\n <GroupItem caption=\"General\" colCount={2}>\n <Item cssClass=\"boldText\" colSpan={2} dataField=\"header.Movimiento\" editorOptions={movimientoEditorOptions} >\n <Label text={\"Movimiento\"} />\n </Item>\n <Item dataField=\"header.FechaEmision\" editorType=\"dxDateBox\" editorOptions={fechaEmisionEditorOptions}>\n <Label text={\"Fecha Emisión\"} />\n </Item>\n <Item dataField=\"header.SCTipoPedido\" editorType=\"dxSelectBox\" editorOptions={tipoPedidoEditorOptions} >\n <RequiredRule message=\"Tipo de Pedido es requerido\" />\n <Label text=\"Tipo de Pedido\" />\n </Item>\n <Item dataField=\"header.Concepto\" editorType=\"dxSelectBox\" editorOptions={conceptosEditorOptions} colSpan={2}>\n <Label text={\"Fuente\"} />\n </Item>\n <Item dataField=\"header.Condicion\" editorType=\"dxSelectBox\" editorOptions={condicionEditorOptions} >\n <RequiredRule message=\"Condiciones es requerido\" />\n <Label text={\"Condiciones\"} />\n </Item>\n <Item dataField=\"header.ListaPreciosEsp\" editorType=\"dxSelectBox\" editorOptions={listaPreciosEditorOptions} >\n <RequiredRule message=\"Lista de Precios es requerido\" />\n <Label text={\"Lista de Precios\"} />\n </Item>\n <Item dataField=\"header.Agente\" editorType=\"dxSelectBox\" editorOptions={agenteEditorOptions} colSpan={2} >\n <RequiredRule message=\"Vendedor es requerido\" />\n <Label text={\"Vendedor\"} />\n </Item>\n </GroupItem>\n <GroupItem caption=\"Cliente\" colCount={2}>\n <Item dataField=\"header.SCCapturaCliente\" editorType=\"dxCheckBox\" colSpan={2} editorOptions={cambiarClienteEditorOptions}>\n <Label text={\"Cambiar Cliente\"} />\n </Item>\n <Item dataField=\"header.Cliente\" colSpan={2} editorType=\"dxLookup\" editorOptions={clienteEditorOptions} >\n <Label text={\"Cliente\"} />\n </Item>\n <Item dataField=\"header.RFC\" editorOptions={rfcEditorOptions}>\n <Label text={\"RFC\"} />\n </Item>\n </GroupItem>\n <GroupItem caption=\"Artículos\" colSpan={2}>\n <DataGrid\n id=\"gridArticulos\"\n ref={gridArticulosRef}\n columnsAutoWidth={true}\n dataSource={estimatePayload.detail}\n showBorders={true}\n showColumnLines={true}\n showRowLines={true}\n rowAlternationEnabled={true}\n allowColumnResizing={true}\n columnResizingMode=\"widget\"\n allowColumnReordering={false}\n repaintChangesOnly={true}\n onEditorPreparing={onEditorArticulosPreparing}\n onEditingStart={onEditingStartArticulos}\n >\n <Scrolling\n mode='virtual'\n />\n <Editing\n mode=\"cell\"\n newRowPosition=\"last\"\n allowUpdating={activateUpdateGrid}\n allowAdding={activateUpdateGrid}\n allowDeleting={activateUpdateGrid}\n />\n\n <Sorting mode=\"none\" />\n\n <Column dataField=\"Renglon\" width={190} visible={false} />\n <Column dataField=\"Articulo\" caption=\"Artículo\" width={600} setCellValue={setCellValueArticulo} calculateDisplayValue=\"ArtDescripcion\" >\n <Lookup\n dataSource={storeArticulo}\n displayExpr=\"name\"\n valueExpr=\"value\"\n searchEnabled={true}\n showClearButton={true}\n acceptCustomValue={false}\n clearButtonText='Cerrar'\n noDataText='No se encontraron resultados'\n />\n <RequiredRule message=\"Artículo es requerido\" />\n </Column>\n <Column dataField=\"ArtDescripcion\" width={400} allowEditing={false} visible={false} />\n <Column dataField=\"Cantidad\" width={80} setCellValue={setCellValueCantidad} dataType=\"number\" editorOptions={cantidadEditorOptions}>\n <RequiredRule message=\"Cantidad es requerida\" />\n </Column>\n <Column dataField=\"Precio\" width={110} allowEditing={conAutorizacionPrecio} setCellValue={setCellValuePrecio} dataType=\"number\">\n <RequiredRule message=\"Precio es requerido\" />\n <Format\n type=\"currency\"\n precision={2}\n\n />\n </Column>\n <Column dataField=\"Importe\" width={150} allowEditing={false} dataType=\"number\">\n <Format\n type=\"currency\"\n precision={2}\n />\n </Column>\n <Summary>\n <TotalItem\n column=\"Importe\"\n summaryType=\"sum\"\n valueFormat=\"$,##0.##\"\n displayFormat=\"Total {0}\"\n showInColumn=\"Importe\"\n />\n </Summary>\n </DataGrid>\n </GroupItem>\n </Tab>\n <Tab title=\"Datos de Envío\">\n <Item dataField=\"shippingAddress.Nombre\" editorOptions={nombreEditorOptions} >\n <Label text={\"Nombre\"} />\n <RequiredRule message=\"Nombre es requerido\" />\n </Item>\n <Item dataField=\"shippingAddress.Telefono\" editorOptions={telefonoEditorOptions} >\n <Label text={\"Teléfono\"} />\n <RequiredRule message=\"Teléfono es requerido\" />\n </Item>\n <Item dataField=\"shippingAddress.Direccion\" editorOptions={direccionEditorOptions} >\n <Label text={\"Dirección\"} />\n <RequiredRule message=\"Dirección es requerida\" />\n </Item>\n <Item dataField=\"shippingAddress.EntreCalles\" editorOptions={entreCallesEditorOptions} >\n <Label text={\"Entre Calles\"} />\n <RequiredRule message=\"Entre Calles es requerida\" />\n </Item>\n <Item dataField=\"shippingAddress.CodigoPostal\" editorType=\"dxLookup\" editorOptions={codigoPostalEditorOptions} >\n <Label text={\"Código Postal\"} />\n <RequiredRule message=\"Código Postal es requerido\" />\n </Item>\n <Item dataField=\"shippingAddress.ClaveColonia\" editorType=\"dxSelectBox\" editorOptions={claveColoniaEditorOptions} >\n <Label text={\"Colonia\"} />\n <RequiredRule message=\"Colonia es requerida\" />\n </Item>\n <Item dataField=\"shippingAddress.ClaveMunicipio\" editorOptions={claveMunicipioEditorOptions} >\n <Label text={\"Municipio\"} />\n </Item>\n <Item dataField=\"shippingAddress.ClaveLocalidad\" editorOptions={claveLocalidadEditorOptions} >\n <Label text={\"Localidad\"} />\n </Item>\n <Item dataField=\"shippingAddress.ClaveEstado\" editorOptions={claveEstadoEditorOptions} >\n <Label text={\"Estado\"} />\n </Item>\n <Item dataField=\"shippingAddress.ClavePais\" editorOptions={clavePaisEditorOptions} >\n <Label text={\"País\"} />\n </Item>\n <Item dataField=\"shippingAddress.eMail\" editorOptions={emailEditorOptions} >\n <Label text={\"eMail\"} />\n <EmailRule message=\"eMail incorrecto\" />\n <RequiredRule message=\"eMail es requerido\" />\n </Item>\n </Tab>\n <Tab title=\"Datos de Facturación\">\n <Item dataField=\"billingAddress.DFIguales\" editorType=\"dxCheckBox\">\n <Label text={\"Datos Iguales\"} />\n </Item>\n <Item dataField=\"billingAddress.RFC1\" editorOptions={rfc1EditorOptions}>\n <Label text={\"RFC\"} />\n <RequiredRule message=\"RFC es requerido\" />\n </Item>\n <Item dataField=\"billingAddress.RazonSocial1\" editorOptions={razonSocial1EditorOptions}>\n <Label text={\"Razón Social\"} />\n <CustomRule type=\"custom\" validationCallback={datosFacturacionValidationCallback} message=\"Razón Social es requerida\" />\n </Item>\n <Item dataField=\"billingAddress.Telefonos1\" editorOptions={telefonos1EditorOptions}>\n <Label text={\"Teléfono\"} />\n <CustomRule type=\"custom\" validationCallback={datosFacturacionValidationCallback} message=\"Teléfono es requerido\" />\n </Item>\n <Item dataField=\"billingAddress.Direccion1\" editorOptions={direccion1EditorOptions}>\n <Label text={\"Dirección\"} />\n <CustomRule type=\"custom\" validationCallback={datosFacturacionValidationCallback} message=\"Dirección es requerido\" />\n </Item>\n <Item dataField=\"billingAddress.CodigoPostal1\" editorType=\"dxLookup\" editorOptions={codigoPostal1EditorOptions} >\n <Label text={\"Código Postal\"} />\n <CustomRule type=\"custom\" validationCallback={datosFacturacionValidationCallback} message=\"Código Postal es requerido\" />\n </Item>\n <Item dataField=\"billingAddress.ClaveColonia1\" editorType=\"dxSelectBox\" editorOptions={claveColonia1EditorOptions}>\n <Label text={\"Colonia\"} />\n <CustomRule type=\"custom\" validationCallback={datosFacturacionValidationCallback} message=\"Colonia es requerida\" />\n </Item>\n <Item dataField=\"billingAddress.ClaveMunicipio1\" editorOptions={claveMunicipio1EditorOptions}>\n <Label text={\"Municipio\"} />\n </Item>\n <Item dataField=\"billingAddress.ClaveLocalidad1\" editorOptions={claveLocalidad1EditorOptions}>\n <Label text={\"Localidad\"} />\n </Item>\n <Item dataField=\"billingAddress.ClaveEstado1\" editorOptions={claveEstado1EditorOptions}>\n <Label text={\"Estado\"} />\n </Item>\n <Item dataField=\"billingAddress.ClavePais1\" editorOptions={clavePais1EditorOptions}>\n <Label text={\"País\"} />\n </Item>\n <Item dataField=\"billingAddress.FiscalRegimen\" editorType=\"dxSelectBox\" editorOptions={fiscalRegimenEditorOptions}>\n <Label text={\"Régimen Fiscal\"} />\n <RequiredRule message=\"Régimen Fiscal es requerido\" />\n </Item>\n <Item dataField=\"billingAddress.SATCatUsoCFDI\" editorType=\"dxSelectBox\" editorOptions={usoCFDIEditorOptions} >\n <Label text={\"Uso CFDi\"} />\n <RequiredRule message=\"Uso CFDi requerido\" />\n </Item>\n\n </Tab>\n <Tab title=\"Autorización de Precios\" colCount={2} >\n <Item dataField=\"header.SCUsuarioAutorizaPrecios\" editorType=\"dxSelectBox\" editorOptions={usuarioAutorizaEditorOptions}>\n <Label text=\"Usuario Autoriza\" />\n </Item>\n <Item dataField=\"header.SCCodigoAutorizaPrecios\" editorOptions={scCodigoAutorizaPreciosEditorOptions}>\n <Label text=\"Código\" />\n </Item>\n <Item dataField=\"header.SCFechaAutorizaPrecios\" editorType=\"dxDateBox\" editorOptions={scFechaAutorizaPreciosEditorOptions}>\n <Label text=\"Fecha Autorización\" />\n </Item>\n <Item dataField=\"header.SCMotivoAutorizaPrecios\" editorOptions={scMotivoAutorizaPreciosEditorOptions}>\n <Label text=\"Motivo\" />\n </Item>\n <Item dataField=\"header.SCComentariosAutorizaPrecios\" editorType=\"dxTextArea\" editorOptions={scComentariosAutorizaPreciosEditorOptions}>\n <Label text=\"Comentarios\" />\n </Item>\n </Tab>\n <Tab title=\"Observaciones\" >\n <Item dataField=\"header.Observaciones\" editorType=\"dxTextArea\" editorOptions={observacionesEditorOptions}>\n <Label text=\"Observaciones\" visible={false} />\n </Item>\n </Tab>\n <Tab title=\"Registros Relacionados\">\n <DataGrid\n id=\"gridRelatedRecords\"\n columnsAutoWidth={true}\n dataSource={estimatePayload.relatedRecords}\n allowColumnReordering={true}\n allowColumnResizing={true}\n columnResizingMode={\"widget\"}\n showBorders={true}\n rowAlternationEnabled={true}\n showRowLines={true}\n showColumnLines={true}\n >\n <HeaderFilter visible={false} />\n\n <Column dataField=\"name\" dataType=\"string\" width={300} caption=\"Transacción\" />\n <Column caption=\"Estatus\" alignment=\"center\" width={150} cellRender={estatusRelatedRecords} />\n <Column caption=\"\" alignment=\"center\" width={50} cellRender={openRelatedRecordButton} />\n <Column dataField=\"FechaEmision\" dataType=\"date\" width={150} caption=\"Fecha Emisión\" />\n <Column dataField=\"ImporteTotal\" caption=\"Importe Total\" dataType=\"number\" width={180} >\n <Format\n type=\"currency\"\n precision={2}\n />\n </Column>\n </DataGrid>\n </Tab>\n <Tab title=\"Log Estatus\">\n <DataGrid\n id=\"gridLogEstatus\"\n columnsAutoWidth={true}\n dataSource={estimatePayload.movEstatusLog}\n allowColumnReordering={true}\n allowColumnResizing={true}\n columnResizingMode={\"widget\"}\n showBorders={true}\n rowAlternationEnabled={true}\n showRowLines={true}\n showColumnLines={true}\n >\n <HeaderFilter visible={false} />\n <Column dataField=\"Usuario\" dataType=\"string\" width={350} caption=\"Usuario\" />\n <Column caption=\"Estatus\" alignment=\"center\" width={150} cellRender={estatusRelatedRecords} />\n <Column dataField=\"Fecha\" dataType=\"datetime\" width={300} caption=\"Fecha\" />\n </DataGrid>\n </Tab>\n <Tab title=\"Archivos Anexos\" >\n <div className=\"widget-container\">\n <FileUploader\n multiple={true}\n accept=\"*\"\n uploadMode=\"useButtons\"\n chunkSize={20000000}\n maxFileSize={20000000}\n uploadChunk={uploadChunk}\n disabled={!activateAttachments}\n />\n </div>\n <div id=\"wrapper\" className=\"show-widget\" >\n <div id=\"widget-area\">\n <FileManager id=\"attachmentManager\" fileSystemProvider={attachments} onItemDeleting={onAttachmentDeleting} onItemDownloading={onItemDownloading} onSelectedFileOpened={onAttachmentOpen}>\n <Permissions\n create={false}\n copy={false}\n move={false}\n delete={activateAttachments}\n rename={false}\n upload={false}\n download={true}\n >\n </Permissions>\n </FileManager>\n </div>\n </div>\n </Tab>\n </TabbedItem>\n </Form>\n </div>\n </div>\n ) :\n (\n <div></div>\n )\n }\n </div>\n )\n }}\n />\n </div>\n </div>\n );\n}","import React, { useState, useEffect, useMemo } from 'react';\n\n// LoadPanel\nimport { LoadPanel } from 'devextreme-react/load-panel';\n\n// Toast\nimport { Toast } from 'devextreme-react/toast';\n\n//Form\nimport Form, { GroupItem, Label, TabbedItem, TabPanelOptions, Tab } from 'devextreme-react/form';\n\nimport { Auth, API, Storage } from 'aws-amplify';\n\n// Ruteador\nimport { Route, Link, useHistory } from \"react-router-dom\";\n\n// Grid\nimport DataGrid, {\n Column, FilterRow, HeaderFilter, FilterPanel, FilterBuilderPopup,\n GroupPanel, Grouping, SearchPanel, Sorting, Editing, Lookup, Item, RequiredRule,\n Scrolling, Pager, Paging, Summary, TotalItem, StateStoring, ColumnChooser, Format,\n Export, ColumnChooserSearch, ColumnChooserSelection\n} from 'devextreme-react/data-grid';\n\n//CheckBox\nimport CheckBox from 'devextreme-react/check-box';\n\n// Iconos\nimport { FontAwesomeIcon } from \"@fortawesome/react-fontawesome\";\nimport { faGlasses } from \"@fortawesome/pro-solid-svg-icons\";\nimport { faPencilAlt } from \"@fortawesome/pro-solid-svg-icons\";\nimport { faArrowRotateLeft } from \"@fortawesome/pro-solid-svg-icons\";\nimport { faList } from \"@fortawesome/pro-duotone-svg-icons\";\nimport { faFilePdf } from \"@fortawesome/pro-solid-svg-icons\";\nimport { faArrowsRotate } from \"@fortawesome/pro-solid-svg-icons\";\nimport { faThumbsDown } from \"@fortawesome/pro-duotone-svg-icons\";\nimport { faArrowUpRightFromSquare } from \"@fortawesome/pro-solid-svg-icons\";\nimport { faPlay } from \"@fortawesome/pro-solid-svg-icons\";\nimport { faTrash } from \"@fortawesome/pro-solid-svg-icons\";\n\nimport 'devextreme/data/odata/store';\nimport CustomStore from 'devextreme/data/custom_store';\n\nimport DataSource from 'devextreme/data/data_source';\n\nimport '../ListStyle.css';\n\n//FileUploader\nimport FileUploader from 'devextreme-react/file-uploader';\n\n//FileManager\nimport FileManager, { Permissions } from 'devextreme-react/file-manager';\n\nimport dxDateBox from \"devextreme/ui/date_box\";\n\nimport dxNumberBox from \"devextreme/ui/number_box\";\n\nimport TransactionStatus from \"../TransactionStatus/TransactionStatus.js\";\n\nimport Lambda from 'aws-sdk/clients/lambda';\n\nimport { Workbook } from 'exceljs';\nimport { saveAs } from 'file-saver';\nimport { exportDataGrid } from 'devextreme/excel_exporter'\n\ndxDateBox.defaultOptions({\n options: {\n dateSerializationFormat: \"yyyy-MM-dd\"\n }\n});\n\ndxNumberBox.defaultOptions({\n options: {\n step: 0\n }\n});\n\nfunction isNotEmpty(value) {\n return value !== undefined && value !== null && value !== '';\n}\n\nexport default function LostDeal(props) {\n const history = useHistory();\n\n const [isDetail, setIsDetail] = useState(false);\n const [id, setId] = useState();\n const [permissionLevel] = useState(props.nivel);\n const [lostDealPayload, setLostDealPayload] = useState({\n header: {},\n detail: [],\n relatedRecords: [],\n movEstatusLog: []\n });\n\n const [autoExpandAll, setAutoExpandAll] = useState(true);\n\n const [visibleLoadPanel, setVisibleLoadPanel] = useState(false);\n\n const [visibleToast, setVisibleToast] = useState(false);\n const [messageToast, setMessageToast] = useState('');\n const [typeToast, setTypeToast] = useState('success');\n\n const [sucursal] = useState(props.sucursal);\n const [agentes, setAgentes] = useState([]);\n const [listaPrecios, setListaPrecios] = useState([]);\n const [conceptos, setConceptos] = useState([]);\n const [condiciones, setCondiciones] = useState([]);\n\n const [activateConfirmButton, setActivateConfirmButton] = useState(false);\n const [activateDeleteButton, setActivateDeleteButton] = useState(false);\n const [activatePDFButton, setActivatePDFButton] = useState(false);\n const [activateAttachments, setActivateAttachments] = useState(false);\n\n //Ref para el form\n const [formDatosGeneralesRef] = useState(React.createRef());\n\n //Ref para el grid Articulos\n const [gridArticulosRef] = useState(React.createRef());\n\n const [attachments, setAttachments] = useState([]);\n\n const filterBuilderPopupPosition = {\n of: window,\n at: 'top',\n my: 'top',\n offset: { y: 10 },\n };\n\n const allowedPageSizes = [5, 10, 15, 20, 'all'];\n\n const exportFormats = ['xlsx'];\n\n function getOrderDay(rowData) {\n return (new Date(rowData.OrderDate)).getDay();\n }\n\n const filterBuilder = {\n customOperations: [{\n name: 'weekends',\n caption: 'Weekends',\n dataTypes: ['date'],\n icon: 'check',\n hasValue: false,\n calculateFilterExpression: () => [[getOrderDay, '=', 0], 'or', [getOrderDay, '=', 6]],\n }],\n allowHierarchicalFields: true,\n };\n\n const filterValue = [['Estatus', '=', 'Sin Afectar']];\n\n //Ref para el grid Tablero de Control\n const [gridTableroRef] = useState(React.createRef());\n\n function onAutoExpandAllChanged() {\n setAutoExpandAll(!autoExpandAll)\n };\n\n const getLostDealRecords = React.useCallback(async (sqlFilter) => {\n try {\n let apiName = 'AdminSC';\n let path = '/procesaventaperdida';\n\n let myInit = {\n headers: {\n 'Content-Type': 'application/json',\n Authorization: `${(await Auth.currentSession()).getAccessToken().getJwtToken()}`\n },\n queryStringParameters: {\n action: 'list',\n sqlFilter: sqlFilter,\n salesAccess: props.salesAccess,\n sucursal: props.sucursal,\n username: JSON.parse(JSON.stringify(await Auth.currentAuthenticatedUser())).username\n }\n }\n\n var lostDealGet = await API.get(apiName, path, myInit);\n }\n catch (e) {\n if (e === 'No current user') {\n history.push('/');\n\n window.location.reload();\n }\n }\n\n return lostDealGet;\n }, [history, props.salesAccess, props.sucursal]);\n\n const getCliente = React.useCallback(async (sqlFilter) => {\n let apiName = 'AdminSC';\n let path = '/getcatalogo';\n\n let myInit = {\n headers: {\n 'Content-Type': 'application/json',\n Authorization: `${(await Auth.currentSession()).getAccessToken().getJwtToken()}`\n },\n queryStringParameters: {\n type: 'Cliente',\n username: JSON.parse(JSON.stringify(await Auth.currentAuthenticatedUser())).username,\n sqlFilter: sqlFilter\n }\n }\n\n var articulosGet = await API.get(apiName, path, myInit);\n\n return articulosGet;\n }, []);\n\n const getArticulo = React.useCallback(async (sqlFilter) => {\n let apiName = 'AdminSC';\n let path = '/getcatalogo';\n\n var ListaPreciosEsp = lostDealPayload.header.ListaPreciosEsp;\n\n let myInit = {\n headers: {\n 'Content-Type': 'application/json',\n Authorization: `${(await Auth.currentSession()).getAccessToken().getJwtToken()}`\n },\n queryStringParameters: {\n type: 'ObtenerPrecioArticuloPedido',\n username: JSON.parse(JSON.stringify(await Auth.currentAuthenticatedUser())).username,\n sqlFilter: sqlFilter,\n ListaPreciosEsp: ListaPreciosEsp\n }\n }\n\n var articulosGet = await API.get(apiName, path, myInit);\n\n return articulosGet;\n }, [lostDealPayload.header.ListaPreciosEsp]);\n\n const getAgente = React.useCallback(async () => {\n let apiName = 'AdminSC';\n let path = '/getcatalogo';\n\n let myInit = {\n headers: {\n 'Content-Type': 'application/json',\n Authorization: `${(await Auth.currentSession()).getAccessToken().getJwtToken()}`\n },\n queryStringParameters: {\n type: 'Agente',\n username: JSON.parse(JSON.stringify(await Auth.currentAuthenticatedUser())).username\n }\n }\n\n var agentesGet = await API.get(apiName, path, myInit);\n\n setAgentes(agentesGet);\n\n return agentesGet;\n }, []);\n\n const getListaPrecios = React.useCallback(async () => {\n let apiName = 'AdminSC';\n let path = '/getcatalogo';\n\n let myInit = {\n headers: {\n 'Content-Type': 'application/json',\n Authorization: `${(await Auth.currentSession()).getAccessToken().getJwtToken()}`\n },\n queryStringParameters: {\n type: 'ListaPrecios',\n sucursal: sucursal,\n username: JSON.parse(JSON.stringify(await Auth.currentAuthenticatedUser())).username\n }\n }\n\n var listaPreciosGet = await API.get(apiName, path, myInit);\n\n setListaPrecios(listaPreciosGet);\n\n return listaPreciosGet;\n }, [sucursal]);\n\n const getConceptos = React.useCallback(async () => {\n let apiName = 'AdminSC';\n let path = '/getcatalogo';\n\n let myInit = {\n headers: {\n 'Content-Type': 'application/json',\n Authorization: `${(await Auth.currentSession()).getAccessToken().getJwtToken()}`\n },\n queryStringParameters: {\n type: 'Concepto',\n modulo: 'VTAS',\n username: JSON.parse(JSON.stringify(await Auth.currentAuthenticatedUser())).username\n }\n }\n\n var conceptosGet = await API.get(apiName, path, myInit);\n\n setConceptos(conceptosGet);\n\n return conceptosGet;\n }, []);\n\n const getCondiciones = React.useCallback(async () => {\n let apiName = 'AdminSC';\n let path = '/getcatalogo';\n\n let myInit = {\n headers: {\n 'Content-Type': 'application/json',\n Authorization: `${(await Auth.currentSession()).getAccessToken().getJwtToken()}`\n },\n queryStringParameters: {\n type: 'Condicion',\n username: JSON.parse(JSON.stringify(await Auth.currentAuthenticatedUser())).username\n }\n }\n\n var condicionesGet = await API.get(apiName, path, myInit);\n\n setCondiciones(condicionesGet);\n\n return condicionesGet;\n }, []);\n\n const store = useMemo(() => {\n return new CustomStore({\n key: 'ID',\n load(loadOptions) {\n let sqlFilter = '(';\n [\n 'filter'\n ].forEach((i) => {\n if (i in loadOptions && isNotEmpty(loadOptions[i])) {\n var filters = loadOptions[i];\n\n var filtersLength = filters.length;\n\n for (var i = 0; i <= filtersLength; i++) {\n var singleFilter = filters[i];\n var singleFilterType = typeof singleFilter;\n var singleFilterIsArray = Array.isArray(singleFilter);\n var singleFilterIsDate = singleFilter instanceof Date;\n\n if (singleFilter === 'NULL') {\n singleFilter = '0';\n }\n\n if (singleFilterType.toString() === 'object' && singleFilterIsArray) {\n sqlFilter += '(';\n\n var subFiltersLength = singleFilter.length;\n\n for (var i2 = 0; i2 <= subFiltersLength; i2++) {\n var singleSubFilter = singleFilter[i2];\n var singleSubFilterType = typeof singleSubFilter;\n var singleSubFilterIsArray = Array.isArray(singleSubFilter);\n var singleSubFilterIsDate = singleSubFilter instanceof Date\n\n if (singleSubFilter === 'NULL') {\n singleSubFilter = '0';\n }\n\n if (singleSubFilterType.toString() === 'object' && singleSubFilterIsArray) {\n sqlFilter += '(';\n\n var subSubFiltersLength = singleSubFilter.length;\n\n for (var i3 = 0; i3 <= subSubFiltersLength; i3++) {\n var singleSubSubFilter = singleSubFilter[i3];\n var singleSubSubFilterType = typeof singleSubSubFilter;\n var singleSubSubFilterIsArray = Array.isArray(singleSubSubFilter);\n var singleSubSubFilterIsDate = singleSubSubFilter instanceof Date\n\n if (singleSubSubFilter === 'NULL') {\n singleSubSubFilter = '0';\n }\n\n if (singleSubSubFilterType.toString() === 'object' && singleSubSubFilterIsArray) {\n sqlFilter += '(';\n\n var subSubSubFiltersLength = singleSubSubFilter.length;\n\n for (var i4 = 0; i4 <= subSubSubFiltersLength; i4++) {\n var singleSubSubSubFilter = singleSubSubFilter[i4];\n var singleSubSubSubFilterType = typeof singleSubSubSubFilter;\n var singleSubSubSubFilterIsArray = Array.isArray(singleSubSubSubFilter);\n var singleSubSubSubFilterIsDate = singleSubSubSubFilter instanceof Date\n\n if (singleSubSubSubFilter === 'NULL') {\n singleSubSubSubFilter = '0';\n }\n\n if (singleSubSubSubFilterType.toString() === 'object' && singleSubSubSubFilterIsArray) {\n sqlFilter += '(';\n\n var subSubSubSubFiltersLength = singleSubSubSubFilter.length;\n\n for (var i5 = 0; i5 <= subSubSubSubFiltersLength; i5++) {\n var singleSubSubSubSubFilter = singleSubSubSubFilter[i5];\n var singleSubSubSubSubFilterType = typeof singleSubSubSubSubFilter;\n var singleSubSubSubSubFilterIsArray = Array.isArray(singleSubSubSubSubFilter);\n var singleSubSubSubSubFilterIsDate = singleSubSubSubSubFilter instanceof Date\n\n if (singleSubSubSubSubFilter === 'NULL') {\n singleSubSubSubSubFilter = '0';\n }\n\n if (singleSubSubSubSubFilterType.toString() === 'string') {\n if (singleSubSubSubSubFilter === 'contains') {\n filters[i][i2][i3][i4][i5] = 'LIKE';\n singleSubSubSubSubFilter = 'LIKE';\n\n filters[i][i2][i3][i4][i5 + 1] = '\\'%' + filters[i][i2][i3][i4][i5 + 1] + '%\\'';\n }\n else if (singleSubSubSubSubFilter === 'notcontains') {\n filters[i][i2][i3][i4][i5] = 'NOT LIKE';\n singleSubSubSubSubFilter = 'NOT LIKE';\n\n filters[i][i2][i3][i4][i5 + 1] = '\\'%' + filters[i][i2][i3][i4][i5 + 1] + '%\\'';\n }\n else if (singleSubSubSubSubFilter === 'startswith') {\n filters[i][i2][i3][i4][i5] = 'LIKE';\n singleSubSubSubSubFilter = 'LIKE';\n\n filters[i][i2][i3][i4][i5 + 1] = '\\'' + filters[i][i2][i3][i4][i5 + 1] + '%\\'';\n }\n else if (singleSubSubSubSubFilter === 'endswith') {\n filters[i][i2][i3][i4][i5] = 'LIKE';\n singleSubSubSubSubFilter = 'LIKE';\n\n filters[i][i2][i3][i4][i5 + 1] = '\\'%' + filters[i][i2][i3][i4][i5 + 1] + '\\'';\n }\n else if (singleSubSubSubSubFilter === '=' || singleSubSubSubSubFilter === '<>' || singleSubSubSubSubFilter === '>' || singleSubSubSubSubFilter === '>=' || singleSubSubSubSubFilter === '<' || singleSubSubSubSubFilter === '<=') {\n if (!filters[i][i2][i3][i4][i5 + 1])\n filters[i][i2][i3][i4][i5 + 1] = 'NULL';\n else if (typeof filters[i][i2][i3][i4][i5 + 1] === 'string') {\n filters[i][i2][i3][i4][i5 + 1] = '\\'' + filters[i][i2][i3][i4][i5 + 1] + '\\'';\n }\n }\n else if (singleSubSubSubSubFilter === '!') {\n filters[i][i2][i3][i4][i5] = 'NOT';\n singleSubSubSubSubFilter = 'NOT';\n }\n\n sqlFilter += ' ' + singleSubSubSubSubFilter + ' ';\n }\n else if (singleSubSubSubSubFilterType.toString() === 'object' && singleSubSubSubSubFilterIsDate) {\n sqlFilter += ' \\'' + singleSubSubSubSubFilter.toISOString().split('T')[0] + '\\' ';\n }\n else if (singleSubSubSubSubFilterType.toString() === 'number') {\n sqlFilter += ' ' + singleSubSubSubSubFilter.toString() + ' ';\n }\n else if (singleSubSubSubSubFilterType.toString() === 'boolean') {\n if (singleSubSubSubSubFilter.toString() === 'true')\n sqlFilter += '1 ';\n else if (singleSubSubSubSubFilter.toString() === 'false' || singleSubSubSubSubFilter === null || singleSubSubSubSubFilter === undefined)\n sqlFilter += '0 ';\n }\n }\n }\n else if (singleSubSubSubFilterType.toString() === 'string') {\n if (singleSubSubSubFilter === 'contains') {\n filters[i][i2][i3][i4] = 'LIKE';\n singleSubSubSubFilter = 'LIKE';\n\n filters[i][i2][i3][i4 + 1] = '\\'%' + filters[i][i2][i3][i4 + 1] + '%\\'';\n }\n else if (singleSubSubSubFilter === 'notcontains') {\n filters[i][i2][i3][i4] = 'NOT LIKE';\n singleSubSubSubFilter = 'NOT LIKE';\n\n filters[i][i2][i3][i4 + 1] = '\\'%' + filters[i][i2][i3][i4 + 1] + '%\\'';\n }\n else if (singleSubSubSubFilter === 'startswith') {\n filters[i][i2][i3][i4] = 'LIKE';\n singleSubSubSubFilter = 'LIKE';\n\n filters[i][i2][i3][i4 + 1] = '\\'' + filters[i][i2][i3][i4 + 1] + '%\\'';\n }\n else if (singleSubSubSubFilter === 'endswith') {\n filters[i][i2][i3][i4] = 'LIKE';\n singleSubSubSubFilter = 'LIKE';\n\n filters[i][i2][i3][i4 + 1] = '\\'%' + filters[i][i2][i3][i4 + 1] + '\\'';\n }\n else if (singleSubSubSubFilter === '=' || singleSubSubSubFilter === '<>' || singleSubSubSubFilter === '>' || singleSubSubSubFilter === '>=' || singleSubSubSubFilter === '<' || singleSubSubSubFilter === '<=') {\n if (!filters[i][i2][i3][i4 + 1])\n filters[i][i2][i3][i4 + 1] = 'NULL';\n else if (typeof filters[i][i2][i3][i4 + 1] === 'string') {\n filters[i][i2][i3][i4 + 1] = '\\'' + filters[i][i2][i3][i4 + 1] + '\\'';\n }\n }\n else if (singleSubSubSubFilter === '!') {\n filters[i][i2][i3][i4] = 'NOT';\n singleSubSubSubFilter = 'NOT';\n }\n\n sqlFilter += ' ' + singleSubSubSubFilter + ' ';\n }\n else if (singleSubSubSubFilterType.toString() === 'object' && singleSubSubSubFilterIsDate) {\n sqlFilter += ' \\'' + singleSubSubSubFilter.toISOString().split('T')[0] + '\\' ';\n }\n else if (singleSubSubSubFilterType.toString() === 'number') {\n sqlFilter += ' ' + singleSubSubSubFilter.toString() + ' ';\n }\n else if (singleSubSubSubFilterType.toString() === 'boolean') {\n if (singleSubSubSubFilter.toString() === 'true')\n sqlFilter += '1 ';\n else if (singleSubSubSubFilter.toString() === 'false' || singleSubSubSubFilter === null || singleSubSubSubFilter === undefined)\n sqlFilter += '0 ';\n }\n }\n\n sqlFilter += ')';\n }\n else if (singleSubSubFilterType.toString() === 'string') {\n if (singleSubSubFilter === 'contains') {\n filters[i][i2][i3] = 'LIKE';\n singleSubSubFilter = 'LIKE';\n\n filters[i][i2][i3 + 1] = '\\'%' + filters[i][i2][i3 + 1] + '%\\'';\n }\n else if (singleSubSubFilter === 'notcontains') {\n filters[i][i2][i3] = 'NOT LIKE';\n singleSubSubFilter = 'NOT LIKE';\n\n filters[i][i2][i3 + 1] = '\\'%' + filters[i][i2][i3 + 1] + '%\\'';\n }\n else if (singleSubSubFilter === 'startswith') {\n filters[i][i2][i3] = 'LIKE';\n singleSubSubFilter = 'LIKE';\n\n filters[i][i2][i3 + 1] = '\\'' + filters[i][i2][i3 + 1] + '%\\'';\n }\n else if (singleSubSubFilter === 'endswith') {\n filters[i][i2][i3] = 'LIKE';\n singleSubSubFilter = 'LIKE';\n\n filters[i][i2][i3 + 1] = '\\'%' + filters[i][i2][i3 + 1] + '\\'';\n }\n else if (singleSubSubFilter === '=' || singleSubSubFilter === '<>' || singleSubSubFilter === '>' || singleSubSubFilter === '>=' || singleSubSubFilter === '<' || singleSubSubFilter === '<=') {\n if (!filters[i][i2][i3 + 1])\n filters[i][i2][i3 + 1] = 'NULL';\n else if (typeof filters[i][i2][i3 + 1] === 'string') {\n filters[i][i2][i3 + 1] = '\\'' + filters[i][i2][i3 + 1] + '\\'';\n }\n }\n else if (singleSubSubFilter === '!') {\n filters[i][i2][i3] = 'NOT';\n singleSubSubFilter = 'NOT';\n }\n sqlFilter += ' ' + singleSubSubFilter + ' ';\n }\n else if (singleSubSubFilterType.toString() === 'object' && singleSubSubFilterIsDate) {\n sqlFilter += ' \\'' + singleSubSubFilter.toISOString().split('T')[0] + '\\' ';\n }\n else if (singleSubSubFilterType.toString() === 'number') {\n sqlFilter += ' ' + singleSubSubFilter.toString() + ' ';\n }\n else if (singleSubSubFilterType.toString() === 'boolean') {\n if (singleSubSubFilter.toString() === 'true')\n sqlFilter += '1 ';\n else if (singleSubSubFilter.toString() === 'false' || singleSubSubFilter === null || singleSubSubFilter === undefined)\n sqlFilter += '0 ';\n }\n }\n\n sqlFilter += ')';\n }\n else if (singleSubFilterType.toString() === 'string') {\n if (singleSubFilter === 'contains') {\n filters[i][i2] = 'LIKE';\n singleSubFilter = 'LIKE';\n\n filters[i][i2 + 1] = '\\'%' + filters[i][i2 + 1] + '%\\'';\n }\n else if (singleSubFilter === 'notcontains') {\n filters[i][i2] = 'NOT LIKE';\n singleSubFilter = 'NOT LIKE';\n\n filters[i][i2 + 1] = '\\'%' + filters[i][i2 + 1] + '%\\'';\n }\n else if (singleSubFilter === 'startswith') {\n filters[i][i2] = 'LIKE';\n singleSubFilter = 'LIKE';\n\n filters[i][i2 + 1] = '\\'' + filters[i][i2 + 1] + '%\\'';\n }\n else if (singleSubFilter === 'endswith') {\n filters[i][i2] = 'LIKE';\n singleSubFilter = 'LIKE';\n\n filters[i][i2 + 1] = '\\'%' + filters[i][i2 + 1] + '\\'';\n }\n else if (singleSubFilter === '=' || singleSubFilter === '<>' || singleSubFilter === '>' || singleSubFilter === '>=' || singleSubFilter === '<' || singleSubFilter === '<=') {\n if (!filters[i][i2 + 1])\n filters[i][i2 + 1] = 'NULL';\n else if (typeof filters[i][i2 + 1] === 'string') {\n filters[i][i2 + 1] = '\\'' + filters[i][i2 + 1] + '\\'';\n }\n }\n else if (singleSubFilter === '!') {\n filters[i][i2] = 'NOT';\n singleSubFilter = 'NOT';\n }\n sqlFilter += ' ' + singleSubFilter + ' ';\n }\n else if (singleSubFilterType.toString() === 'object' && singleSubFilterIsDate) {\n sqlFilter += ' \\'' + singleSubFilter.toISOString().split('T')[0] + '\\' ';\n }\n else if (singleSubFilterType.toString() === 'number') {\n sqlFilter += ' ' + singleSubFilter.toString() + ' ';\n }\n else if (singleSubFilterType.toString() === 'boolean') {\n if (singleSubFilter.toString() === 'true')\n sqlFilter += '1 ';\n else if (singleSubFilter.toString() === 'false' || singleSubFilter === null || singleSubFilter === undefined)\n sqlFilter += '0 ';\n }\n }\n\n sqlFilter += ')';\n }\n else if (singleFilterType.toString() === 'string') {\n if (singleFilter === 'contains') {\n filters[i] = 'LIKE';\n singleFilter = 'LIKE';\n\n filters[i + 1] = '\\'%' + filters[i + 1] + '%\\'';\n }\n else if (singleFilter === 'notcontains') {\n filters[i] = 'NOT LIKE';\n singleFilter = 'NOT LIKE';\n\n filters[i + 1] = '\\'%' + filters[i + 1] + '%\\'';\n }\n else if (singleFilter === 'startswith') {\n filters[i] = 'LIKE';\n singleFilter = 'LIKE';\n\n filters[i + 1] = '\\'' + filters[i + 1] + '%\\'';\n }\n else if (singleFilter === 'endswith') {\n filters[i] = 'LIKE';\n singleFilter = 'LIKE';\n\n filters[i + 1] = '\\'%' + filters[i + 1] + '\\'';\n }\n else if (singleFilter === '=' || singleFilter === '<>' || singleFilter === '>' || singleFilter === '>=' || singleFilter === '<' || singleFilter === '<=') {\n if (!filters[i + 1])\n filters[i + 1] = 'NULL';\n else if (typeof filters[i + 1] === 'string') {\n filters[i + 1] = '\\'' + filters[i + 1] + '\\'';\n }\n }\n else if (singleFilter === '!') {\n filters[i] = 'NOT';\n singleFilter = 'NOT';\n }\n sqlFilter += ' ' + singleFilter + ' ';\n }\n else if (singleFilterType.toString() === 'object' && singleFilterIsDate) {\n sqlFilter += ' \\'' + singleFilter.toISOString().split('T')[0] + '\\' ';\n }\n else if (singleFilterType.toString() === 'number') {\n sqlFilter += ' ' + singleFilter.toString() + ' ';\n }\n else if (singleFilterType.toString() === 'boolean') {\n if (singleFilter.toString() === 'true')\n sqlFilter += '1 ';\n else if (singleFilter.toString() === 'false' || singleFilter === null || singleFilter === undefined)\n sqlFilter += '0 ';\n }\n }\n\n sqlFilter += ')';\n }\n });\n\n async function getRecords() {\n if (sqlFilter === '(')\n sqlFilter = '';\n\n var records = await getLostDealRecords(sqlFilter);\n return {\n data: records,\n totalCount: records.length\n };\n }\n\n return getRecords()\n .then(function (result) {\n return result;\n })\n .catch(() => { throw new Error('Data Loading Error'); });\n }\n })\n }, [getLostDealRecords]);\n\n const storeCliente = useMemo(() => {\n return new CustomStore({\n key: 'value',\n load(loadOptions) {\n let sqlFilter = '';\n [\n 'filter'\n ].forEach((i) => {\n sqlFilter = loadOptions.searchValue;\n });\n\n async function getRecords() {\n if (sqlFilter) {\n var records = await getCliente(sqlFilter);\n\n return {\n data: records,\n totalCount: records.length\n };\n }\n else {\n return {\n data: [],\n totalCount: 0\n };\n }\n }\n\n return getRecords()\n .then(function (result) {\n return result;\n })\n .catch(() => { throw new Error('Data Loading Error'); });\n },\n byKey: (key) => {\n /*\n async function getRecords(key) {\n var records = await getCliente(key);\n\n return records;\n }\n\n return getRecords(key);\n */\n return {\n name: lostDealPayload.header.CteNombre,\n value: lostDealPayload.header.Cliente\n };\n }\n })\n }, [getCliente, lostDealPayload.header.CteNombre, lostDealPayload.header.Cliente]);\n\n const storeArticulo = useMemo(() => {\n return new CustomStore({\n key: 'value',\n load(loadOptions) {\n let sqlFilter = '';\n [\n 'filter'\n ].forEach((i) => {\n sqlFilter = loadOptions.searchValue;\n });\n\n async function getRecords() {\n if (sqlFilter) {\n var records = await getArticulo(sqlFilter);\n\n return {\n data: records,\n totalCount: records.length\n };\n }\n else {\n return {\n data: [],\n totalCount: 0\n };\n }\n }\n\n return getRecords()\n .then(function (result) {\n return result;\n })\n .catch(() => { throw new Error('Data Loading Error'); });\n },\n byKey: (key) => {\n async function getRecords(key) {\n var records = await getArticulo(key);\n\n return records;\n }\n\n return getRecords(key);\n }\n })\n }, [getArticulo]);\n\n var fechaEmisionEditorOptions = useMemo(() => {\n return {\n width: '100%',\n readOnly: true\n };\n }, []);\n\n var movimientoEditorOptions = useMemo(() => {\n return {\n width: '100%',\n readOnly: true\n };\n }, []);\n\n var pedidoEditorOptions = useMemo(() => {\n return {\n width: '100%',\n readOnly: true\n };\n }, []);\n\n var origenEditorOptions = useMemo(() => {\n return {\n width: '100%',\n readOnly: true\n };\n }, []);\n\n var rfcEditorOptions = useMemo(() => {\n return {\n width: '100%',\n readOnly: true,\n inputAttr: {\n 'style': 'text-transform: uppercase'\n }\n };\n }, []);\n\n var cantidadEditorOptions = useMemo(() => {\n return {\n format: '#'\n };\n }, []);\n\n var listaPreciosDataSource = useMemo(() => {\n return new DataSource({\n paginate: true,\n store: {\n type: \"array\",\n key: \"ListaPrecios\",\n data: listaPrecios\n }\n });\n }, [listaPrecios]);\n\n var condicionesDataSource = useMemo(() => {\n return new DataSource({\n paginate: true,\n store: {\n type: \"array\",\n key: \"Condicion\",\n data: condiciones\n }\n });\n }, [condiciones]);\n\n var agenteDataSource = useMemo(() => {\n return new DataSource({\n paginate: true,\n store: {\n type: \"array\",\n key: \"Agente\",\n data: agentes\n }\n });\n }, [agentes]);\n\n var observacionesEditorOptions = useMemo(() => {\n return {\n readOnly: true\n };\n }, []);\n\n //Opciones Agente \n try {\n var agenteEditorOptions = useMemo(() => {\n return {\n dataSource: agenteDataSource,\n displayExpr: 'name',\n valueExpr: 'value',\n searchEnabled: true,\n readOnly: true,\n value: (lostDealPayload.header.Agente ? lostDealPayload.header.Agente : ''), width: '100%'\n };\n }, [agenteDataSource, lostDealPayload.header.Agente]);\n }\n catch (e) {\n var agenteEditorOptions = {\n dataSource: agenteDataSource,\n displayExpr: 'name',\n valueExpr: 'value',\n searchEnabled: true,\n readOnly: true,\n value: '',\n width: '100%'\n };\n };\n\n //Opciones Lista Precios \n try {\n var listaPreciosEditorOptions = useMemo(() => {\n return {\n dataSource: listaPreciosDataSource,\n displayExpr: 'name',\n valueExpr: 'value',\n searchEnabled: true,\n value: (lostDealPayload.header.ListaPreciosEsp ? lostDealPayload.header.ListaPreciosEsp : ''),\n width: '100%'\n };\n }, [listaPreciosDataSource, lostDealPayload.header.ListaPreciosEsp]);\n }\n catch (e) {\n var listaPreciosEditorOptions = {\n dataSource: listaPreciosDataSource,\n displayExpr: 'name',\n valueExpr: 'value',\n searchEnabled: true,\n value: '',\n width: '100%'\n };\n };\n\n //Opciones Condicion\n try {\n var condicionEditorOptions = useMemo(() => {\n return {\n dataSource: condicionesDataSource,\n displayExpr: 'name',\n valueExpr: 'value',\n searchEnabled: true,\n value: (lostDealPayload.header.Condicion ? lostDealPayload.header.Condicion : ''),\n width: '100%'\n };\n }, [condicionesDataSource, lostDealPayload.header.Condicion]);\n }\n catch (e) {\n var condicionEditorOptions = {\n dataSource: condicionesDataSource,\n displayExpr: 'name',\n valueExpr: 'value',\n searchEnabled: true,\n value: '',\n width: '100%'\n };\n };\n\n //Opciones del campo Cliente\n try {\n var clienteEditorOptions = useMemo(() => {\n return {\n dataSource: storeCliente,\n displayExpr: 'name',\n valueExpr: 'value',\n searchEnabled: true,\n showClearButton: true,\n acceptCustomValue: false,\n disabled: ((lostDealPayload.header.Estatus !== 'Sin Afectar')),\n searchTimeout: 100,\n width: '100%',\n clearButtonText: 'Cerrar',\n noDataText: 'No se encontraron resultados'\n };\n }, [storeCliente, lostDealPayload.header.Estatus]);\n }\n catch (e) {\n var clienteEditorOptions = {\n dataSource: storeCliente,\n displayExpr: 'name',\n valueExpr: 'value',\n searchEnabled: true,\n acceptCustomValue: false,\n disabled: ((lostDealPayload.header.Estatus !== 'Sin Afectar')),\n width: '100%'\n };\n };\n\n async function uploadChunk(file, uploadInfo) {\n try {\n var responseS3 = await Storage.put(\"/vtas/\" + id + \"/\" + file.name, uploadInfo.chunkBlob, {\n contentType: file.type,\n ACL: 'public-read'\n });\n\n //Obtenemos el nombre del bucket\n let bucketName = Storage._config.AWSS3.bucket;\n\n\n let apiName = 'AdminSC';\n let path = '/uploadattachment';\n\n let myInit = {\n headers: {\n 'Content-Type': 'application/json',\n Authorization: `${(await Auth.currentSession()).getAccessToken().getJwtToken()}`\n },\n body: {\n action: 'register',\n bucketName: bucketName,\n type: 'vtas',\n id: id,\n Key: \"/vtas/\" + id + \"/\" + file.name,\n fileName: file.name,\n username: JSON.parse(JSON.stringify(await Auth.currentAuthenticatedUser())).username\n }\n }\n\n var attachmentsResult = await API.post(apiName, path, myInit);\n\n //Obtenemos los attachments\n var attachmentsGet = await Storage.list(\"/vtas/\" + id);\n var attachmentsAux = [];\n\n for (var attachmentsGetIndex in attachmentsGet) {\n var singleAttachmentsGet = attachmentsGet[attachmentsGetIndex];\n\n var singleAttachment = {\n name: singleAttachmentsGet.key.split('/').pop(),\n isDirectory: false,\n size: singleAttachmentsGet.size,\n };\n\n attachmentsAux.push(singleAttachment);\n }\n\n setAttachments(attachmentsAux);\n }\n catch (err) {\n console.log(\"Error uploading file:\", err);\n }\n }\n\n async function onAttachmentDeleting(e) {\n var fileName = e.item.key;\n\n //Primero borramos el archivo de S3\n var attachmentsDelete = await Storage.remove(\"/vtas/\" + id + \"/\" + fileName);\n\n //Despues borramos el attachment en Intelisis\n let bucketName = Storage._config.AWSS3.bucket;\n\n let apiName = 'AdminSC';\n let path = '/uploadattachment';\n\n let myInit = {\n headers: {\n 'Content-Type': 'application/json',\n Authorization: `${(await Auth.currentSession()).getAccessToken().getJwtToken()}`\n },\n body: {\n action: 'delete',\n bucketName: bucketName,\n type: 'vtas',\n id: id,\n Key: \"/vtas/\" + id + \"/\" + fileName,\n fileName: fileName,\n username: JSON.parse(JSON.stringify(await Auth.currentAuthenticatedUser())).username\n }\n }\n\n var attachmentsResult = await API.post(apiName, path, myInit);\n\n //Finalmente sincronizamos el state\n var attachmentsGet = await Storage.list(\"/vtas/\" + id);\n var attachmentsAux = [];\n\n for (var attachmentsGetIndex in attachmentsGet) {\n var singleAttachmentsGet = attachmentsGet[attachmentsGetIndex];\n\n var singleAttachment = {\n name: singleAttachmentsGet.key.split('/').pop(),\n isDirectory: false,\n size: singleAttachmentsGet.size,\n };\n\n attachmentsAux.push(singleAttachment);\n }\n\n setAttachments(attachmentsAux);\n };\n\n function downloadBlob(blob, filename) {\n const url = URL.createObjectURL(blob);\n const a = document.createElement('a');\n a.href = url;\n a.download = filename || 'download';\n const clickHandler = () => {\n setTimeout(() => {\n URL.revokeObjectURL(url);\n a.removeEventListener('click', clickHandler);\n }, 150);\n };\n\n a.addEventListener('click', clickHandler, false);\n\n a.click();\n\n return a;\n };\n\n async function onItemDownloading(e) {\n e.cancel = true;\n\n const downloadFileResponse = await Storage.get(\"/vtas/\" + id + \"/\" + e.item.name, { download: true });\n\n downloadBlob(downloadFileResponse.Body, e.item.name);\n };\n\n function openBlob(blob, filename) {\n const url = URL.createObjectURL(blob);\n\n window.open(url, \"_blank\");\n };\n\n async function onAttachmentOpen(e) {\n const downloadFileResponse = await Storage.get(\"/vtas/\" + id + \"/\" + e.file.name, { download: true });\n\n openBlob(downloadFileResponse.Body, e.file.name);\n };\n\n function editLostDeal(data) {\n return (\n <Link to={`/LostDeal/${data.data.ID}`}>\n <button class=\"bg-blue-500 hover:bg-blue-700 text-white py-1 px-3 rounded\" onClick={() => editButton(data.data.ID)}><FontAwesomeIcon icon={permissionLevel === 'Editar' ? faPencilAlt : faGlasses} /> {permissionLevel === 'Editar' ? 'Editar' : 'Ver'}</button>\n </Link>\n )\n }\n\n function openRelatedRecord(redirect) {\n if (redirect) {\n var baseUrl = window.location.href.split('#/')[0];\n\n redirect = baseUrl + '#' + redirect;\n\n window.open(redirect, \"_blank\");\n }\n };\n\n function openRelatedRecordButton(data) {\n return (\n <button onClick={() => openRelatedRecord(data.data.redirect)}><FontAwesomeIcon icon={faArrowUpRightFromSquare} /></button>\n )\n };\n\n function estatusRelatedRecords(data) {\n return (\n <TransactionStatus {...props} Estatus={data.data.Estatus} />\n )\n };\n\n const getlostDealPayload = React.useCallback(async (ID) => {\n try {\n let apiName = 'AdminSC';\n let path = '/procesaventaperdida';\n\n let myInit = {\n headers: {\n 'Content-Type': 'application/json',\n Authorization: `${(await Auth.currentSession()).getAccessToken().getJwtToken()}`\n },\n queryStringParameters: {\n ID: ID,\n action: 'payload',\n username: JSON.parse(JSON.stringify(await Auth.currentAuthenticatedUser())).username\n }\n }\n\n var payloadGet = await API.get(apiName, path, myInit);\n\n setLostDealPayload(payloadGet);\n\n //Obtenemos los attachments\n var attachmentsGet = await Storage.list(\"/vtas/\" + ID);\n var attachmentsAux = [];\n\n for (var attachmentsGetIndex in attachmentsGet) {\n var singleAttachmentsGet = attachmentsGet[attachmentsGetIndex];\n\n var singleAttachment = {\n name: singleAttachmentsGet.key.split('/').pop(),\n isDirectory: false,\n size: singleAttachmentsGet.size,\n };\n\n attachmentsAux.push(singleAttachment);\n }\n\n setAttachments(attachmentsAux);\n }\n catch (e) {\n if (e === 'No current user') {\n history.push('/');\n\n window.location.reload();\n }\n }\n\n return payloadGet;\n\n }, [history]);\n\n const editButton = React.useCallback(async (ID) => {\n try {\n if (!window.event.metaKey && !window.event.ctrlKey) {\n setVisibleLoadPanel(true);\n\n setIsDetail(true);\n setId(ID);\n\n var payload = await getlostDealPayload(ID);\n\n if (permissionLevel === 'Editar') {\n if (payload.header.Estatus === 'Sin Afectar') {\n setActivatePDFButton(false);\n setActivateConfirmButton(true);\n setActivateAttachments(false);\n\n if (!payload.header.MovID)\n setActivateDeleteButton(true);\n }\n else if (payload.header.Estatus === 'Concluido') {\n setActivatePDFButton(false);\n setActivateConfirmButton(false);\n setActivateDeleteButton(false);\n setActivateAttachments(false);\n }\n else if (payload.header.Estatus === 'Cancelado') {\n setActivatePDFButton(false);\n setActivateConfirmButton(false);\n setActivateDeleteButton(false);\n setActivateAttachments(false);\n }\n }\n else if (permissionLevel === 'Ver') {\n setActivatePDFButton(false);\n setActivateConfirmButton(false);\n setActivateDeleteButton(false);\n setActivateAttachments(false);\n }\n\n setVisibleLoadPanel(false);\n }\n }\n catch (e) {\n setVisibleLoadPanel(false);\n }\n }, [getlostDealPayload, permissionLevel]);\n\n async function cancelEditButton() {\n setIsDetail(false);\n };\n\n function printButton() {\n var pdfArray = [];\n var baseUrl = window.location.href.split('/')[0];\n\n pdfArray.push(lostDealPayload.header.ID);\n\n window.open(baseUrl + \"/#/PdfRender?type=lostdeal&id=\" + pdfArray, \"_blank\");\n };\n\n async function confirmButton() {\n try {\n setVisibleLoadPanel(true);\n\n var ID = lostDealPayload.header.ID;\n\n var lambdaFunction;\n\n if (window.location.href.indexOf('sandbox.') >= 0 || window.location.href.indexOf('localhost') >= 0)\n lambdaFunction = 'procesaVentaPerdida-dev';\n else if (window.location.href.indexOf('sandboxtampico.') >= 0)\n lambdaFunction = 'procesaVentaPerdida-devleona';\n else if (window.location.href.indexOf('tampico.') >= 0)\n lambdaFunction = 'procesaVentaPerdida-prodleona';\n else\n lambdaFunction = 'procesaVentaPerdida-prod';\n\n Auth.currentCredentials()\n .then(credentials => {\n const lambda = new Lambda({\n credentials: Auth.essentialCredentials(credentials),\n region: 'us-east-1'\n });\n\n var params = {\n FunctionName: lambdaFunction,\n Payload: JSON.stringify({\n ID: ID,\n payload: lostDealPayload,\n action: 'apply',\n username: props.username,\n usuario: props.usuario,\n sucursal: props.sucursal,\n s3Bucket: Storage._config.AWSS3.bucket\n })\n };\n\n lambda.invoke(params, function (err, data) {\n if (err) {\n setVisibleLoadPanel(false);\n\n setVisibleToast(true);\n setMessageToast(err.message);\n setTypeToast('error');\n }\n else {\n var payloadPost = JSON.parse(JSON.parse(data.Payload).body);\n\n if (payloadPost.ok === 'true') {\n setVisibleToast(true);\n setMessageToast('Venta Perdida aplicada correctamente');\n setTypeToast('success');\n\n editButton(ID);\n\n setVisibleLoadPanel(false);\n }\n else if (payloadPost.ok === 'false') {\n setVisibleToast(true);\n\n if (!payloadPost.message || payloadPost.message === '' || payloadPost.message === 'Error SQL')\n setMessageToast('No se pudo aplicar la Venta Perdida');\n else\n setMessageToast(payloadPost.message);\n\n setTypeToast('error')\n\n editButton(ID);\n\n setVisibleLoadPanel(false);\n }\n }\n });\n })\n }\n catch (e) {\n setVisibleLoadPanel(false);\n\n if (e === 'No current user') {\n history.push('/');\n\n window.location.reload();\n }\n }\n };\n\n function refreshButton() {\n if (gridTableroRef.current) {\n var gridTablero = gridTableroRef.current.instance();\n\n gridTablero.refresh();\n }\n };\n\n useEffect(() => {\n window.addEventListener('popstate', (e) => {\n var hash;\n\n try {\n hash = e.target.location.hash;\n }\n catch (e) {\n hash = '';\n }\n\n if (hash === '#/LostDeal') {\n history.push('/LostDeal');\n\n window.location.reload();\n }\n });\n\n async function initialize() {\n setVisibleLoadPanel(true);\n\n await getAgente();\n\n await getListaPrecios();\n\n await getConceptos();\n\n await getCondiciones();\n\n setVisibleLoadPanel(false);\n }\n\n initialize();\n\n //En caso de solicitar un ID especifico, redireccionamos a ese ID\n if (!props.match.isExact) {\n var urlID = props.location.pathname.replace('/LostDeal/', '');\n\n if (urlID === 'undefined')\n urlID = undefined;\n\n if (urlID)\n editButton(urlID);\n else\n history.push('/LostDeal')\n }\n\n // eslint-disable-next-line\n }, []);\n\n function onHidingToast() {\n setVisibleToast(false);\n }\n\n async function deleteButton() {\n try {\n if (!window.confirm('¿Desea eliminar la Venta Perdida?'))\n return;\n\n setVisibleLoadPanel(true);\n\n var ID = lostDealPayload.header.ID;\n\n if (!ID) {\n //Vamos al tablero de control\n history.push('/LostDeal');\n return;\n }\n\n let apiName = 'AdminSC';\n let path = '/procesaventaperdida';\n\n let myInit = {\n headers: {\n 'Content-Type': 'application/json',\n Authorization: `${(await Auth.currentSession()).getAccessToken().getJwtToken()}`\n },\n body: {\n ID: ID,\n payload: lostDealPayload,\n action: 'delete',\n username: JSON.parse(JSON.stringify(await Auth.currentAuthenticatedUser())).username,\n usuario: props.usuario,\n sucursal: props.sucursal\n }\n }\n\n var payloadPost = await API.post(apiName, path, myInit);\n\n if (payloadPost.ok === 'true') {\n setVisibleLoadPanel(false);\n\n setVisibleToast(true);\n setMessageToast('Venta Perdida eliminada con éxito');\n setTypeToast('success')\n\n setIsDetail(false);\n\n //Vamos al tablero de control\n history.push('/LostDeal');\n }\n else if (payloadPost.ok === 'false') {\n setVisibleLoadPanel(false);\n\n setVisibleToast(true);\n setMessageToast(payloadPost.message);\n setTypeToast('error')\n }\n }\n catch (e) {\n setVisibleLoadPanel(false);\n\n if (e === 'No current user') {\n history.push('/');\n\n window.location.reload();\n }\n }\n }\n\n function onExporting(e) {\n const workbook = new Workbook();\n const worksheet = workbook.addWorksheet('Datos');\n\n exportDataGrid({\n component: e.component,\n worksheet,\n autoFilterEnabled: true,\n }).then(() => {\n workbook.xlsx.writeBuffer().then((buffer) => {\n saveAs(new Blob([buffer], { type: 'application/octet-stream' }), 'Datos.xlsx');\n });\n });\n e.cancel = true;\n };\n\n return (\n <div>\n {isDetail === false ? (\n <div class=\"bg-gray-200 m-2\">\n <h1 class=\"font-sans inline-block text-xl font-bold text-gray-700 leading-8 align-top mb-1\"><FontAwesomeIcon icon={faList} size=\"lg\" /> Ventas Perdidas</h1>\n </div>\n ) :\n (\n <div class=\"bg-gray-200 m-2\">\n <h1 class=\"font-sans inline-block text-xl font-bold text-gray-700 leading-8 align-top mb-1\"><FontAwesomeIcon icon={faThumbsDown} size=\"xl\" /> {(lostDealPayload.header ? lostDealPayload.header.Movimiento : 'Venta Perdida')}</h1>\n <TransactionStatus {...props} Estatus={lostDealPayload.header.Estatus} />\n </div>\n )}\n\n <LoadPanel\n shadingColor=\"rgba(0,0,0,0.4)\"\n visible={visibleLoadPanel}\n showIndicator={true}\n message=\"Por favor espere...\"\n shading={true}\n showPane={true}\n hideOnOutsideClick={false}\n />\n\n <Toast\n visible={visibleToast}\n message={messageToast}\n type={typeToast}\n onHiding={onHidingToast}\n displayTime={5000}\n width={'auto'}\n position={{\n my: 'top center',\n at: 'top center',\n of: window,\n offset: '0 130'\n }}\n />\n\n <div class=\"bg-gray-200 m-2\">\n {isDetail === false ? (\n <div class=\"bg-white p-3 shadow-xl\">\n <div>\n <button onClick={refreshButton} type=\"submit\" class=\"mb-4 bg-blue-500 hover:bg-blue-700 text-white font-bold py-2 px-4 rounded\">\n <FontAwesomeIcon icon={faArrowsRotate} /> Actualizar\n </button>\n </div>\n <div className=\"options mb-2\">\n <div className=\"option\">\n <CheckBox text=\"Expandir todos los grupos\"\n value={autoExpandAll}\n onValueChanged={onAutoExpandAllChanged}></CheckBox>\n </div>\n </div>\n <DataGrid\n height={800}\n id=\"gridContainer\"\n columnsAutoWidth={true}\n filterBuilder={filterBuilder}\n dataSource={store}\n defaultFilterValue={filterValue}\n allowColumnReordering={true}\n allowColumnResizing={true}\n columnResizingMode={\"widget\"}\n showBorders={true}\n rowAlternationEnabled={true}\n showRowLines={true}\n showColumnLines={true}\n remoteOperations={{ filtering: true }}\n ref={gridTableroRef}\n onExporting={onExporting}\n >\n <Scrolling rowRenderingMode='virtual'></Scrolling>\n <Paging defaultPageSize={10} />\n <Pager\n visible={true}\n allowedPageSizes={allowedPageSizes}\n displayMode='compact'\n showPageSizeSelector={true}\n showInfo={true}\n showNavigationButtons={true}\n />\n <FilterRow visible={true} />\n <FilterPanel visible={true} />\n <FilterBuilderPopup position={filterBuilderPopupPosition} />\n\n <HeaderFilter visible={true} />\n\n <GroupPanel visible={true} />\n <SearchPanel visible={true} />\n <ColumnChooser\n enabled={true}\n mode='select'\n >\n <ColumnChooserSearch\n enabled={true}\n />\n\n <ColumnChooserSelection\n allowSelectAll={true}\n selectByClick={true}\n recursive={true}\n />\n </ColumnChooser>\n <Grouping autoExpandAll={autoExpandAll} />\n <StateStoring enabled={true} type=\"localStorage\" storageKey=\"gridContainerLostDeal\" />\n <Export enabled={true} />\n\n <Column caption=\"\" alignment=\"center\" width={100} cellRender={editLostDeal} />\n\n <Column dataField=\"MovID\" dataType=\"string\" width={110} caption=\"Folio\" />\n <Column dataField=\"FechaEmision\" caption=\"Fecha Emisión\" dataType=\"date\" width={130} />\n <Column dataField=\"Estatus\" dataType=\"string\" width={120} />\n <Column dataField=\"NombreCliente\" caption=\"Nombre Cliente\" dataType=\"string\" width={250} />\n <Column dataField=\"Plaza\" caption=\"Plaza\" dataType=\"string\" width={150} visible={false} />\n <Column dataField=\"Pedido\" dataType=\"string\" width={150} />\n\n <Column dataField=\"ID\" dataType=\"number\" width={150} visible={false} />\n <Column dataField=\"Mov\" dataType=\"string\" width={190} caption=\"Tipo Movimiento\" visible={false} />\n <Column dataField=\"Movimiento\" dataType=\"string\" width={190} visible={false} />\n <Column dataField=\"Importe\" caption=\"Importe\" dataType=\"number\" width={150} visible={false}>\n <Format\n type=\"currency\"\n precision={2}\n />\n </Column>\n <Column dataField=\"Impuestos\" caption=\"Impuestos\" dataType=\"number\" width={150} visible={false}>\n <Format\n type=\"currency\"\n precision={2}\n />\n </Column>\n <Column dataField=\"ImporteTotal\" caption=\"Importe Total\" dataType=\"number\" width={150}>\n <Format\n type=\"currency\"\n precision={2}\n />\n </Column>\n\n <Column dataField=\"Almacen\" dataType=\"string\" width={190} caption=\"Almacén\" visible={false} />\n <Column dataField=\"NombreAlmacen\" dataType=\"string\" width={190} caption=\"Nombre Almacén\" visible={false} />\n <Column dataField=\"Agente\" dataType=\"string\" width={190} visible={false} />\n <Column dataField=\"NombreAgente\" dataType=\"string\" width={190} visible={false} />\n <Column dataField=\"Cliente\" dataType=\"string\" width={190} visible={false} />\n <Column dataField=\"Sucursal\" dataType=\"number\" width={150} visible={false} />\n <Column dataField=\"NombreSucursal\" dataType=\"string\" width={190} visible={false} />\n <Column dataField=\"Usuario\" dataType=\"string\" width={190} visible={false} />\n <Column dataField=\"NombreUsuario\" dataType=\"string\" width={190} visible={false} />\n <Column dataField=\"Origen\" dataType=\"string\" width={190} visible={false} />\n\n <Summary>\n <GroupItem\n column=\"Importe\"\n summaryType=\"sum\"\n valueFormat=\"$,##0.##\"\n displayFormat=\"Importe {0}\"\n showInGroupFooter={false}>\n </GroupItem>\n <GroupItem\n column=\"Impuestos\"\n summaryType=\"sum\"\n valueFormat=\"$,##0.##\"\n displayFormat=\"Impuestos {0}\"\n showInGroupFooter={false}>\n </GroupItem>\n <GroupItem\n column=\"ImporteTotal\"\n summaryType=\"sum\"\n valueFormat=\"$,##0.##\"\n displayFormat=\"Importe Total {0}\"\n showInGroupFooter={false}>\n </GroupItem>\n <TotalItem\n column=\"Importe\"\n summaryType=\"sum\"\n valueFormat=\"$,##0.##\"\n displayFormat=\"Importe {0}\"\n showInColumn=\"Importe\">\n </TotalItem>\n <TotalItem\n column=\"Impuestos\"\n summaryType=\"sum\"\n valueFormat=\"$,##0.##\"\n displayFormat=\"Impuestos {0}\"\n showInColumn=\"Impuestos\">\n </TotalItem>\n <TotalItem\n column=\"ImporteTotal\"\n summaryType=\"sum\"\n valueFormat=\"$,##0.##\"\n displayFormat=\"Importe Total {0}\"\n showInColumn=\"ImporteTotal\">\n </TotalItem>\n </Summary>\n </DataGrid>\n </div>\n ) : (<div />)}\n <Route exact path=\"/LostDeal/:ID\" render={({ match }) => {\n return (\n <div class=\"bg-gray-200\">\n {isDetail.toString() === 'true' ?\n (\n <div>\n <Link to=\"/LostDeal\">\n <button onClick={cancelEditButton} type=\"submit\" class=\"mb-4 bg-red-500 hover:bg-red-700 text-white font-bold py-2 px-4 rounded\">\n <FontAwesomeIcon icon={faArrowRotateLeft} /> Regresar\n </button>\n </Link>\n\n {activateConfirmButton.toString() === 'true' && id ?\n (\n <button onClick={confirmButton} type=\"submit\" class=\"ml-4 mb-4 bg-green-500 hover:bg-green-700 text-white font-bold py-2 px-4 rounded\">\n <FontAwesomeIcon icon={faPlay} /> Afectar\n </button>\n ) : (\n <div class=\"inline-block\"></div>\n )}\n\n {activateDeleteButton.toString() === 'true' && id ?\n (\n <button onClick={deleteButton} type=\"submit\" class=\"ml-4 mb-4 bg-red-500 hover:bg-red-700 text-white font-bold py-2 px-4 rounded\">\n <FontAwesomeIcon icon={faTrash} /> Eliminar\n </button>\n ) :\n (\n <div class=\"inline-block\"></div>\n )}\n\n\n {activatePDFButton.toString() === 'true' && id ?\n (\n <button onClick={printButton} type=\"submit\" class=\"ml-4 mb-4 bg-gray-500 hover:bg-gray-700 text-white font-bold py-2 px-4 rounded\">\n <FontAwesomeIcon icon={faFilePdf} /> PDF\n </button>\n ) :\n (\n <div class=\"inline-block\"></div>\n )}\n\n <div class=\"bg-white p-4 shadow-xl\">\n <Form\n id=\"formTransaccion\"\n labelMode={'outside'}\n formData={lostDealPayload}\n readOnly={true}\n showColonAfterLabel={false}\n labelLocation={'top'}\n ref={formDatosGeneralesRef}\n >\n <TabbedItem>\n <TabPanelOptions deferRendering={false} showNavButtons={true} />\n <Tab title=\"Datos Generales\" colCount={2}>\n <GroupItem caption=\"General\" colCount={2}>\n <Item cssClass=\"boldText\" colSpan={2} dataField=\"header.Movimiento\" editorOptions={movimientoEditorOptions} >\n <Label text={\"Movimiento\"} />\n </Item>\n <Item dataField=\"header.FechaEmision\" editorType=\"dxDateBox\" editorOptions={fechaEmisionEditorOptions}>\n <Label text={\"Fecha Emisión\"} />\n </Item>\n <Item dataField=\"header.SCRama\" editorOptions={pedidoEditorOptions} >\n <Label text={\"Pedido\"} />\n </Item>\n <Item dataField=\"header.Condicion\" editorType=\"dxSelectBox\" editorOptions={condicionEditorOptions} >\n <RequiredRule message=\"Condiciones es requerido\" />\n <Label text={\"Condiciones\"} />\n </Item>\n <Item dataField=\"header.ListaPreciosEsp\" editorType=\"dxSelectBox\" editorOptions={listaPreciosEditorOptions} >\n <RequiredRule message=\"Lista de Precios es requerido\" />\n <Label text={\"Lista de Precios\"} />\n </Item>\n <Item dataField=\"header.Agente\" editorType=\"dxSelectBox\" editorOptions={agenteEditorOptions} colSpan={2} >\n <RequiredRule message=\"Vendedor es requerido\" />\n <Label text={\"Vendedor\"} />\n </Item>\n <Item dataField=\"header.Origen\" editorOptions={origenEditorOptions} colSpan={2} >\n <Label text={\"Origen\"} />\n </Item>\n </GroupItem>\n <GroupItem caption=\"Cliente\" colCount={2}>\n <Item dataField=\"header.Cliente\" colSpan={2} editorType=\"dxLookup\" editorOptions={clienteEditorOptions} >\n <Label text={\"Cliente\"} />\n </Item>\n <Item dataField=\"header.cte_RFC\" editorOptions={rfcEditorOptions}>\n <Label text={\"RFC\"} />\n </Item>\n </GroupItem>\n <GroupItem caption=\"Artículos\" colSpan={2}>\n <DataGrid\n id=\"gridArticulos\"\n ref={gridArticulosRef}\n columnsAutoWidth={true}\n dataSource={lostDealPayload.detail}\n showBorders={true}\n showColumnLines={true}\n showRowLines={true}\n rowAlternationEnabled={true}\n allowColumnResizing={true}\n columnResizingMode=\"widget\"\n allowColumnReordering={false}\n repaintChangesOnly={true}\n >\n <Scrolling\n mode='virtual'\n />\n <Editing\n mode=\"cell\"\n newRowPosition=\"last\"\n allowUpdating={false}\n allowAdding={false}\n allowDeleting={false}\n />\n\n <Sorting mode=\"none\" />\n\n <Column dataField=\"Renglon\" width={190} visible={false} />\n <Column dataField=\"Articulo\" caption=\"Artículo\" width={600} calculateDisplayValue=\"ArtDescripcion\" >\n <Lookup\n dataSource={storeArticulo}\n displayExpr=\"name\"\n valueExpr=\"value\"\n searchEnabled={true}\n showClearButton={true}\n acceptCustomValue={false}\n clearButtonText='Cerrar'\n noDataText='No se encontraron resultados'\n />\n <RequiredRule message=\"Artículo es requerido\" />\n </Column>\n <Column dataField=\"ArtDescripcion\" width={400} allowEditing={false} visible={false} />\n <Column dataField=\"Cantidad\" width={80} dataType=\"number\" editorOptions={cantidadEditorOptions}>\n <RequiredRule message=\"Cantidad es requerida\" />\n </Column>\n <Column dataField=\"Precio\" width={110} dataType=\"number\">\n <RequiredRule message=\"Precio es requerido\" />\n <Format\n type=\"currency\"\n precision={2}\n\n />\n </Column>\n <Column dataField=\"Importe\" width={150} allowEditing={false} dataType=\"number\">\n <Format\n type=\"currency\"\n precision={2}\n />\n </Column>\n <Summary>\n <TotalItem\n column=\"Importe\"\n summaryType=\"sum\"\n valueFormat=\"$,##0.##\"\n displayFormat=\"Total {0}\"\n showInColumn=\"Importe\"\n />\n </Summary>\n </DataGrid>\n </GroupItem>\n </Tab>\n <Tab title=\"Observaciones\" >\n <Item dataField=\"header.Observaciones\" editorType=\"dxTextArea\" editorOptions={observacionesEditorOptions}>\n <Label text=\"Observaciones\" visible={false} />\n </Item>\n </Tab>\n <Tab title=\"Registros Relacionados\">\n <DataGrid\n id=\"gridRelatedRecords\"\n columnsAutoWidth={true}\n dataSource={lostDealPayload.relatedRecords}\n allowColumnReordering={true}\n allowColumnResizing={true}\n columnResizingMode={\"widget\"}\n showBorders={true}\n rowAlternationEnabled={true}\n showRowLines={true}\n showColumnLines={true}\n >\n <HeaderFilter visible={false} />\n\n <Column dataField=\"name\" dataType=\"string\" width={300} caption=\"Transacción\" />\n <Column caption=\"Estatus\" alignment=\"center\" width={150} cellRender={estatusRelatedRecords} />\n <Column caption=\"\" alignment=\"center\" width={50} cellRender={openRelatedRecordButton} />\n <Column dataField=\"FechaEmision\" dataType=\"date\" width={150} caption=\"Fecha Emisión\" />\n <Column dataField=\"ImporteTotal\" caption=\"Importe Total\" dataType=\"number\" width={180} >\n <Format\n type=\"currency\"\n precision={2}\n />\n </Column>\n </DataGrid>\n </Tab>\n <Tab title=\"Log Estatus\">\n <DataGrid\n id=\"gridLogEstatus\"\n columnsAutoWidth={true}\n dataSource={lostDealPayload.movEstatusLog}\n allowColumnReordering={true}\n allowColumnResizing={true}\n columnResizingMode={\"widget\"}\n showBorders={true}\n rowAlternationEnabled={true}\n showRowLines={true}\n showColumnLines={true}\n >\n <HeaderFilter visible={false} />\n <Column dataField=\"Usuario\" dataType=\"string\" width={350} caption=\"Usuario\" />\n <Column caption=\"Estatus\" alignment=\"center\" width={150} cellRender={estatusRelatedRecords} />\n <Column dataField=\"Fecha\" dataType=\"datetime\" width={300} caption=\"Fecha\" />\n </DataGrid>\n </Tab>\n <Tab title=\"Archivos Anexos\" >\n <div className=\"widget-container\">\n <FileUploader\n multiple={true}\n accept=\"*\"\n uploadMode=\"useButtons\"\n chunkSize={20000000}\n maxFileSize={20000000}\n uploadChunk={uploadChunk}\n disabled={!activateAttachments}\n />\n </div>\n <div id=\"wrapper\" className=\"show-widget\" >\n <div id=\"widget-area\">\n <FileManager id=\"attachmentManager\" fileSystemProvider={attachments} onItemDeleting={onAttachmentDeleting} onItemDownloading={onItemDownloading} onSelectedFileOpened={onAttachmentOpen}>\n <Permissions\n create={false}\n copy={false}\n move={false}\n delete={false}\n rename={false}\n upload={false}\n download={true}\n >\n </Permissions>\n </FileManager>\n </div>\n </div>\n </Tab>\n </TabbedItem>\n </Form>\n </div>\n </div>\n ) :\n (\n <div></div>\n )\n }\n </div>\n )\n }}\n />\n </div>\n </div>\n );\n}\n","import React, { useState, useEffect, useRef, useMemo } from 'react';\n\n// LoadPanel\nimport { LoadPanel } from 'devextreme-react/load-panel';\n\n// Toast\nimport { Toast } from 'devextreme-react/toast';\n\n//Form\nimport Form, { GroupItem, Label, TabbedItem, TabPanelOptions, Tab, EmptyItem } from 'devextreme-react/form';\n\n//Validator\nimport { EmailRule, CustomRule } from 'devextreme-react/validator';\n\nimport { Auth, API, Storage } from 'aws-amplify';\n\n// Ruteador\nimport { Route, Link, useHistory } from \"react-router-dom\";\n\n// Grid\nimport DataGrid, {\n Column, FilterRow, HeaderFilter, FilterPanel, FilterBuilderPopup,\n GroupPanel, Grouping, SearchPanel, Sorting, Editing, Lookup, Toolbar, Item, RequiredRule,\n Scrolling, Pager, Paging, Summary, TotalItem, StateStoring, ColumnChooser, Format, Selection,\n Export, ColumnChooserSearch, ColumnChooserSelection\n} from 'devextreme-react/data-grid';\n\n//CheckBox\nimport CheckBox from 'devextreme-react/check-box';\n\n//ContextMenu\nimport ContextMenu from 'devextreme-react/context-menu';\n\n// Iconos\nimport { FontAwesomeIcon } from \"@fortawesome/react-fontawesome\";\nimport { faGlasses } from \"@fortawesome/pro-solid-svg-icons\";\nimport { faPencilAlt } from \"@fortawesome/pro-solid-svg-icons\";\nimport { faArrowRotateLeft } from \"@fortawesome/pro-solid-svg-icons\";\nimport { faSave } from \"@fortawesome/pro-solid-svg-icons\";\nimport { faList } from \"@fortawesome/pro-duotone-svg-icons\";\nimport { faFilePdf } from \"@fortawesome/pro-solid-svg-icons\";\nimport { faArrowsRotate } from \"@fortawesome/pro-solid-svg-icons\";\nimport { faFileAlt } from \"@fortawesome/pro-solid-svg-icons\";\nimport { faHandshake } from \"@fortawesome/pro-duotone-svg-icons\";\nimport { faPlay } from \"@fortawesome/pro-solid-svg-icons\";\nimport { faTrash } from \"@fortawesome/pro-solid-svg-icons\";\nimport { faWindowClose } from \"@fortawesome/pro-solid-svg-icons\";\nimport { faArrowUpRightFromSquare } from \"@fortawesome/pro-solid-svg-icons\";\nimport { faBoxTaped as faBoxTapedButton } from \"@fortawesome/pro-solid-svg-icons\";\nimport { faBoxOpenFull as faBoxOpenFullButton } from \"@fortawesome/pro-solid-svg-icons\";\nimport { faPiggyBank } from \"@fortawesome/pro-solid-svg-icons\";\nimport { faQrcode } from \"@fortawesome/pro-solid-svg-icons\";\nimport { faPrint as faPrintButton } from \"@fortawesome/pro-solid-svg-icons\";\nimport { faPersonDolly } from \"@fortawesome/pro-solid-svg-icons\";\nimport { faTruckFast } from \"@fortawesome/pro-solid-svg-icons\";\nimport { faRightLeft } from \"@fortawesome/pro-solid-svg-icons\";\nimport { faPersonCarryBox } from \"@fortawesome/pro-solid-svg-icons\";\nimport { faHandHoldingBox } from \"@fortawesome/pro-solid-svg-icons\";\nimport { faCircleInfo } from \"@fortawesome/pro-solid-svg-icons\";\n\n\n// Iconos tablero de control\nimport { faPlaneCircleExclamation } from \"@fortawesome/pro-duotone-svg-icons\";\nimport { faPlaneCircleCheck } from \"@fortawesome/pro-duotone-svg-icons\";\nimport { faCoins } from \"@fortawesome/pro-duotone-svg-icons\";\nimport { faMoneyBill } from \"@fortawesome/pro-duotone-svg-icons\";\nimport { faBadgeCheck } from \"@fortawesome/pro-duotone-svg-icons\";\nimport { faCircleExclamation } from \"@fortawesome/pro-duotone-svg-icons\";\nimport { faBan } from \"@fortawesome/pro-duotone-svg-icons\";\nimport { faPrint } from \"@fortawesome/pro-duotone-svg-icons\";\nimport { faRotateLeft } from \"@fortawesome/pro-duotone-svg-icons\";\nimport { faBoxTaped } from \"@fortawesome/pro-duotone-svg-icons\";\nimport { faBoxOpenFull } from \"@fortawesome/pro-duotone-svg-icons\";\n\nimport 'devextreme/data/odata/store';\nimport CustomStore from 'devextreme/data/custom_store';\n\nimport DataSource from 'devextreme/data/data_source';\n\nimport '../ListStyle.css';\n\n//FileUploader\nimport FileUploader from 'devextreme-react/file-uploader';\n\n//FileManager\nimport FileManager, { Permissions } from 'devextreme-react/file-manager';\n\nimport dxDateBox from \"devextreme/ui/date_box\";\n\nimport dxNumberBox from \"devextreme/ui/number_box\";\n\nimport TransactionStatus from \"../TransactionStatus/TransactionStatus.js\";\n\nimport Lambda from 'aws-sdk/clients/lambda';\n\nimport { Popup, Position, ToolbarItem } from 'devextreme-react/popup';\n\nimport ScrollView from 'devextreme-react/scroll-view';\n\nimport { Workbook } from 'exceljs';\nimport { saveAs } from 'file-saver';\nimport { exportDataGrid } from 'devextreme/excel_exporter'\n\ndxDateBox.defaultOptions({\n options: {\n dateSerializationFormat: \"yyyy-MM-dd\"\n }\n});\n\ndxNumberBox.defaultOptions({\n options: {\n step: 0\n }\n});\n\nfunction isNotEmpty(value) {\n return value !== undefined && value !== null && value !== '';\n}\n\nexport default function SalesOrder(props) {\n const history = useHistory();\n\n const [isDetail, setIsDetail] = useState(false);\n const [id, setId] = useState();\n const [permissionLevel, setPermissionLevel] = useState(props.nivel);\n const [salesOrderPayload, setSalesOrderPayload] = useState({\n header: {},\n detail: [],\n shippingAddress: {},\n billingAddress: {},\n relatedRecords: [],\n movEstatusLog: []\n });\n\n const [customerPayment, setCustomerPayment] = useState(props.customerPayment);\n const [customerPaymentLevel, setCustomerPaymentLevel] = useState(props.customerPaymentLevel);\n\n const [directDelivery, setDirectDelivery] = useState(props.directDelivery);\n const [directDeliveryLevel, setDirectDeliveryLevel] = useState(props.directDeliveryLevel);\n\n const [deliveryRequest, setDeliveryRequest] = useState(props.deliveryRequest);\n const [deliveryRequestLevel, setDeliveryRequestLevel] = useState(props.deliveryRequestLevel);\n\n const [directReturn, setdirectReturn] = useState(props.directReturn);\n const [directReturnLevel, setdirectReturnLevel] = useState(props.directReturnLevel);\n\n const [returnRequest, setreturnRequest] = useState(props.returnRequest);\n const [returnRequestLevel, setreturnRequestLevel] = useState(props.returnRequestLevel);\n\n const [transferOrder, settransferOrder] = useState(props.transferOrder);\n const [transferOrderLevel, setTransferOrderLevel] = useState(props.transferOrderLevel);\n\n const [autoExpandAll, setAutoExpandAll] = useState(true);\n\n // setValue para el control tab\n const [value, setValue] = React.useState(0);\n\n const [visibleLoadPanel, setVisibleLoadPanel] = useState(false);\n\n const [visibleToast, setVisibleToast] = useState(false);\n const [messageToast, setMessageToast] = useState('');\n const [typeToast, setTypeToast] = useState('success');\n\n const [popupVisible, setPopupVisible] = useState(false);\n const [popupTitle, setPopupTitle] = useState('Íconos Pedido');\n\n const [fiscalRegimen, setFiscalRegimen] = useState([]);\n const [filtroUsoCFDI, setFiltroUsoCFDI] = useState([]);\n const [usuarios, setUsuarios] = useState([]);\n const [agente, setAgente] = useState(props.agente);\n const [sucursal, setSucursal] = useState(props.sucursal);\n const [agentes, setAgentes] = useState([]);\n const [listaPrecios, setListaPrecios] = useState([]);\n const [conceptos, setConceptos] = useState([]);\n const [condiciones, setCondiciones] = useState([]);\n const [colonias, setColonias] = useState([]);\n const [colonias1, setColonias1] = useState([]);\n\n const [activateUpdateGrid, setActivateUpdateGrid] = useState(false);\n const [acceptCustomValues, setAcceptCustomValue] = useState(false);\n const [activateSaveButton, setActivateSaveButton] = useState(false);\n const [activateConfirmButton, setActivateConfirmButton] = useState(false);\n const [activateDeleteButton, setActivateDeleteButton] = useState(false);\n const [activateCancelButton, setActivateCancelButton] = useState(false);\n const [activatePDFButton, setActivatePDFButton] = useState(false);\n const [activateUpdateForm, setActivateUpdateForm] = useState(false);\n const [activateAttachments, setActivateAttachments] = useState(false);\n const [activateSeparado, setActivateSeparado] = useState(false);\n const [activateFacturable, setActivateFacturable] = useState(false);\n const [activateCustomerPayment, setActivateCustomerPayment] = useState(false);\n const [activateDirectDelivery, setActivateDirectDelivery] = useState(false);\n const [activateDeliveryRequest, setActivateDeliveryRequest] = useState(false);\n const [activateDirectReturn, setActivateDirectReturn] = useState(false);\n const [activateReturnRequest, setActivateReturnRequest] = useState(false);\n const [activateTransferOrder, setActivateTransferOrder] = useState(false);\n\n const [activatePrintInvoice, setActivatePrintInvoice] = useState(false);\n const [activateCSF, setActivateCSF] = useState(false);\n const [activateSinAfectarPendienteFields, setActivateSinAfectarPendienteFields] = useState(false);\n const [activateSinAfectarFields, setActivateSinAfectarFields] = useState(false);\n const [activateCambiarCliente, setActivateCambiarCliente] = useState(false);\n const [activatePUEPPD, setActivatePUEPPD] = useState(false);\n\n const [conDatosIguales, setConDatosIguales] = useState(false);\n const [conCambiarCliente, setConCambiarCliente] = useState(false);\n const [conAutorizacionPrecio, setConAutorizacionPrecio] = useState(false);\n\n //Ref para el form\n const [formDatosGeneralesRef, setFormDatosGeneralesRef] = useState(React.createRef());\n\n //Ref para el grid Articulos\n const [gridArticulosRef, setGridArticulosRef] = useState(React.createRef());\n\n //Ref para el grid Icono Ayuda\n const [gridIconoAyudaRef, setGridIconoAyudaRef] = useState(React.createRef());\n\n const [attachments, setAttachments] = useState([]);\n\n const [storeAyuda] = useState([\n {\n Tipo: 'Estatus general',\n Descripcion: 'Pedido cerrado',\n Icono: 'faBadgeCheck'\n },\n {\n Tipo: 'Estatus general',\n Descripcion: 'Pedido abierto',\n Icono: 'faCircleExclamation'\n },\n {\n Tipo: 'Estatus general',\n Descripcion: 'Pedido cancelado',\n Icono: 'faBan'\n },\n {\n Tipo: 'Situación pedido',\n Descripcion: 'Pedido facturable',\n Icono: 'faBoxTaped'\n },\n {\n Tipo: 'Situación pedido',\n Descripcion: 'Pedido separado',\n Icono: 'faBoxOpenFull'\n },\n {\n Tipo: 'Programación',\n Descripcion: 'Programación nula',\n Icono: 'programacionNula'\n },\n {\n Tipo: 'Programación',\n Descripcion: 'Programación parcial',\n Icono: 'programacionParcial'\n },\n {\n Tipo: 'Programación',\n Descripcion: 'Programación total',\n Icono: 'programacionTotal'\n },\n {\n Tipo: 'Entrega',\n Descripcion: 'Entrega parcial',\n Icono: 'faPlaneCircleExclamation'\n },\n {\n Tipo: 'Entrega',\n Descripcion: 'Entrega total',\n Icono: 'faPlaneCircleCheck'\n },\n {\n Tipo: 'Pago',\n Descripcion: 'Pago parcial',\n Icono: 'faCoins'\n },\n {\n Tipo: 'Pago',\n Descripcion: 'Pago total',\n Icono: 'faMoneyBill'\n },\n {\n Tipo: 'Factura',\n Descripcion: 'Factura impresa',\n Icono: 'faPrint'\n },\n {\n Tipo: 'Mercancía pendiente recolección',\n Descripcion: 'Mercancía pendiente recolección',\n Icono: 'faRotateLeft'\n },\n ]);\n\n const handleChange = (event, newValue) => {\n setValue(newValue);\n };\n\n const tipoPedido = useMemo(() => {\n return [\n { name: 'NORMAL', value: 'NORMAL' },\n { name: 'INSTITUCIONAL', value: 'INSTITUCIONAL' }\n ];\n }, []);\n\n const filterBuilderPopupPosition = {\n of: window,\n at: 'top',\n my: 'top',\n offset: { y: 10 },\n };\n\n const allowedPageSizes = [5, 10, 15, 20, 'all'];\n\n const exportFormats = ['xlsx'];\n\n function getOrderDay(rowData) {\n return (new Date(rowData.OrderDate)).getDay();\n }\n\n const filterBuilder = {\n customOperations: [{\n name: 'weekends',\n caption: 'Weekends',\n dataTypes: ['date'],\n icon: 'check',\n hasValue: false,\n calculateFilterExpression: () => [[getOrderDay, '=', 0], 'or', [getOrderDay, '=', 6]],\n }],\n allowHierarchicalFields: true,\n };\n\n const filterValue = [['Estatus', '=', 'Sin Afectar']];\n\n //Ref para el grid Tablero de Control\n const [gridTableroRef, setGridTableroRef] = useState(React.createRef());\n\n function onAutoExpandAllChanged() {\n setAutoExpandAll(!autoExpandAll)\n };\n\n const getSalesOrderRecords = React.useCallback(async (sqlFilter) => {\n try {\n let apiName = 'AdminSC';\n let path = '/procesapedidos';\n\n let myInit = {\n headers: {\n 'Content-Type': 'application/json',\n Authorization: `${(await Auth.currentSession()).getAccessToken().getJwtToken()}`\n },\n queryStringParameters: {\n action: 'list',\n sqlFilter: sqlFilter,\n salesAccess: props.salesAccess,\n sucursal: props.sucursal,\n username: JSON.parse(JSON.stringify(await Auth.currentAuthenticatedUser())).username\n }\n }\n\n var salesOrdersGet = await API.get(apiName, path, myInit);\n }\n catch (e) {\n if (e === 'No current user') {\n history.push('/');\n\n window.location.reload();\n }\n }\n\n return salesOrdersGet;\n\n }, [history, props.salesAccess, props.sucursal]);\n\n const getCliente = React.useCallback(async (sqlFilter) => {\n let apiName = 'AdminSC';\n let path = '/getcatalogo';\n\n let myInit = {\n headers: {\n 'Content-Type': 'application/json',\n Authorization: `${(await Auth.currentSession()).getAccessToken().getJwtToken()}`\n },\n queryStringParameters: {\n type: 'Cliente',\n username: JSON.parse(JSON.stringify(await Auth.currentAuthenticatedUser())).username,\n sqlFilter: sqlFilter\n }\n }\n\n var articulosGet = await API.get(apiName, path, myInit);\n\n return articulosGet;\n }, []);\n\n const getArticulo = React.useCallback(async (sqlFilter) => {\n let apiName = 'AdminSC';\n let path = '/getcatalogo';\n\n var ListaPreciosEsp = salesOrderPayload.header.ListaPreciosEsp;\n\n let myInit = {\n headers: {\n 'Content-Type': 'application/json',\n Authorization: `${(await Auth.currentSession()).getAccessToken().getJwtToken()}`\n },\n queryStringParameters: {\n type: 'ObtenerPrecioArticuloPedido',\n username: JSON.parse(JSON.stringify(await Auth.currentAuthenticatedUser())).username,\n sqlFilter: sqlFilter,\n ListaPreciosEsp: ListaPreciosEsp\n }\n }\n\n var articulosGet = await API.get(apiName, path, myInit);\n\n return articulosGet;\n }, [salesOrderPayload.header.ListaPreciosEsp]);\n\n const getAgente = React.useCallback(async () => {\n let apiName = 'AdminSC';\n let path = '/getcatalogo';\n\n let myInit = {\n headers: {\n 'Content-Type': 'application/json',\n Authorization: `${(await Auth.currentSession()).getAccessToken().getJwtToken()}`\n },\n queryStringParameters: {\n type: 'Agente',\n username: JSON.parse(JSON.stringify(await Auth.currentAuthenticatedUser())).username\n }\n }\n\n var agentesGet = await API.get(apiName, path, myInit);\n\n setAgentes(agentesGet);\n\n return agentesGet;\n }, []);\n\n const getListaPrecios = React.useCallback(async () => {\n let apiName = 'AdminSC';\n let path = '/getcatalogo';\n\n let myInit = {\n headers: {\n 'Content-Type': 'application/json',\n Authorization: `${(await Auth.currentSession()).getAccessToken().getJwtToken()}`\n },\n queryStringParameters: {\n type: 'ListaPrecios',\n sucursal: sucursal,\n username: JSON.parse(JSON.stringify(await Auth.currentAuthenticatedUser())).username\n }\n }\n\n var listaPreciosGet = await API.get(apiName, path, myInit);\n\n setListaPrecios(listaPreciosGet);\n\n return listaPreciosGet;\n }, [sucursal]);\n\n const getConceptos = React.useCallback(async () => {\n let apiName = 'AdminSC';\n let path = '/getcatalogo';\n\n let myInit = {\n headers: {\n 'Content-Type': 'application/json',\n Authorization: `${(await Auth.currentSession()).getAccessToken().getJwtToken()}`\n },\n queryStringParameters: {\n type: 'Concepto',\n modulo: 'VTAS',\n username: JSON.parse(JSON.stringify(await Auth.currentAuthenticatedUser())).username\n }\n }\n\n var conceptosGet = await API.get(apiName, path, myInit);\n\n setConceptos(conceptosGet);\n\n return conceptosGet;\n }, []);\n\n const getCondiciones = React.useCallback(async () => {\n let apiName = 'AdminSC';\n let path = '/getcatalogo';\n\n let myInit = {\n headers: {\n 'Content-Type': 'application/json',\n Authorization: `${(await Auth.currentSession()).getAccessToken().getJwtToken()}`\n },\n queryStringParameters: {\n type: 'Condicion',\n username: JSON.parse(JSON.stringify(await Auth.currentAuthenticatedUser())).username\n }\n }\n\n var condicionesGet = await API.get(apiName, path, myInit);\n\n setCondiciones(condicionesGet);\n\n return condicionesGet;\n }, []);\n\n const getFiscalRegimen = React.useCallback(async (sqlFilter) => {\n let apiName = 'AdminSC';\n let path = '/getcatalogo';\n\n let myInit = {\n headers: {\n 'Content-Type': 'application/json',\n Authorization: `${(await Auth.currentSession()).getAccessToken().getJwtToken()}`\n },\n queryStringParameters: {\n type: 'FiscalRegimen',\n username: JSON.parse(JSON.stringify(await Auth.currentAuthenticatedUser())).username,\n sqlFilter: sqlFilter\n }\n }\n\n var fiscalRegimenGet = await API.get(apiName, path, myInit);\n\n setFiscalRegimen(fiscalRegimenGet);\n }, []);\n\n const getCodigoPostal = React.useCallback(async (sqlFilter) => {\n let apiName = 'AdminSC';\n let path = '/getcatalogo';\n\n let myInit = {\n headers: {\n 'Content-Type': 'application/json',\n Authorization: `${(await Auth.currentSession()).getAccessToken().getJwtToken()}`\n },\n queryStringParameters: {\n type: 'CodigoPostal',\n username: JSON.parse(JSON.stringify(await Auth.currentAuthenticatedUser())).username,\n sqlFilter: sqlFilter\n }\n }\n\n var articulosGet = await API.get(apiName, path, myInit);\n\n return articulosGet;\n }, []);\n\n const getColonia = React.useCallback(async (CodigoPostal, isLoading) => {\n if (isLoading === true)\n setVisibleLoadPanel(true);\n\n var tmpUsoCFDI = [];\n let apiName = 'AdminSC';\n let path = '/getcatalogo';\n\n let myInit = {\n headers: {\n 'Content-Type': 'application/json',\n Authorization: `${(await Auth.currentSession()).getAccessToken().getJwtToken()}`\n },\n queryStringParameters: {\n type: 'Colonia',\n username: JSON.parse(JSON.stringify(await Auth.currentAuthenticatedUser())).username,\n sqlFilter: CodigoPostal\n }\n }\n\n var coloniasGet = await API.get(apiName, path, myInit);\n\n setColonias(coloniasGet);\n\n if (isLoading === true)\n setVisibleLoadPanel(false);\n }, []);\n\n const getColonia1 = React.useCallback(async (CodigoPostal, isLoading) => {\n if (isLoading === true)\n setVisibleLoadPanel(true);\n\n var tmpUsoCFDI = [];\n let apiName = 'AdminSC';\n let path = '/getcatalogo';\n\n let myInit = {\n headers: {\n 'Content-Type': 'application/json',\n Authorization: `${(await Auth.currentSession()).getAccessToken().getJwtToken()}`\n },\n queryStringParameters: {\n type: 'Colonia',\n username: JSON.parse(JSON.stringify(await Auth.currentAuthenticatedUser())).username,\n sqlFilter: CodigoPostal\n }\n }\n\n var coloniasGet = await API.get(apiName, path, myInit);\n\n setColonias1(coloniasGet);\n\n if (isLoading === true)\n setVisibleLoadPanel(false);\n }, []);\n\n const store = useMemo(() => {\n return new CustomStore({\n key: 'ID',\n load(loadOptions) {\n let sqlFilter = '(';\n [\n 'filter'\n ].forEach((i) => {\n if (i in loadOptions && isNotEmpty(loadOptions[i])) {\n var filters = loadOptions[i];\n\n var filtersLength = filters.length;\n\n for (var i = 0; i <= filtersLength; i++) {\n var singleFilter = filters[i];\n var singleFilterType = typeof singleFilter;\n var singleFilterIsArray = Array.isArray(singleFilter);\n var singleFilterIsDate = singleFilter instanceof Date;\n\n if (singleFilter === 'NULL') {\n singleFilter = '0';\n }\n\n if (singleFilterType.toString() === 'object' && singleFilterIsArray) {\n sqlFilter += '(';\n\n var subFiltersLength = singleFilter.length;\n\n for (var i2 = 0; i2 <= subFiltersLength; i2++) {\n var singleSubFilter = singleFilter[i2];\n var singleSubFilterType = typeof singleSubFilter;\n var singleSubFilterIsArray = Array.isArray(singleSubFilter);\n var singleSubFilterIsDate = singleSubFilter instanceof Date\n\n if (singleSubFilter === 'NULL') {\n singleSubFilter = '0';\n }\n\n if (singleSubFilterType.toString() === 'object' && singleSubFilterIsArray) {\n sqlFilter += '(';\n\n var subSubFiltersLength = singleSubFilter.length;\n\n for (var i3 = 0; i3 <= subSubFiltersLength; i3++) {\n var singleSubSubFilter = singleSubFilter[i3];\n var singleSubSubFilterType = typeof singleSubSubFilter;\n var singleSubSubFilterIsArray = Array.isArray(singleSubSubFilter);\n var singleSubSubFilterIsDate = singleSubSubFilter instanceof Date\n\n if (singleSubSubFilter === 'NULL') {\n singleSubSubFilter = '0';\n }\n\n if (singleSubSubFilterType.toString() === 'object' && singleSubSubFilterIsArray) {\n sqlFilter += '(';\n\n var subSubSubFiltersLength = singleSubSubFilter.length;\n\n for (var i4 = 0; i4 <= subSubSubFiltersLength; i4++) {\n var singleSubSubSubFilter = singleSubSubFilter[i4];\n var singleSubSubSubFilterType = typeof singleSubSubSubFilter;\n var singleSubSubSubFilterIsArray = Array.isArray(singleSubSubSubFilter);\n var singleSubSubSubFilterIsDate = singleSubSubSubFilter instanceof Date\n\n if (singleSubSubSubFilter === 'NULL') {\n singleSubSubSubFilter = '0';\n }\n\n if (singleSubSubSubFilterType.toString() === 'object' && singleSubSubSubFilterIsArray) {\n sqlFilter += '(';\n\n var subSubSubSubFiltersLength = singleSubSubSubFilter.length;\n\n for (var i5 = 0; i5 <= subSubSubSubFiltersLength; i5++) {\n var singleSubSubSubSubFilter = singleSubSubSubFilter[i5];\n var singleSubSubSubSubFilterType = typeof singleSubSubSubSubFilter;\n var singleSubSubSubSubFilterIsArray = Array.isArray(singleSubSubSubSubFilter);\n var singleSubSubSubSubFilterIsDate = singleSubSubSubSubFilter instanceof Date\n\n if (singleSubSubSubSubFilter === 'NULL') {\n singleSubSubSubSubFilter = '0';\n }\n\n if (singleSubSubSubSubFilterType.toString() === 'string') {\n if (singleSubSubSubSubFilter === 'contains') {\n filters[i][i2][i3][i4][i5] = 'LIKE';\n singleSubSubSubSubFilter = 'LIKE';\n\n filters[i][i2][i3][i4][i5 + 1] = '\\'%' + filters[i][i2][i3][i4][i5 + 1] + '%\\'';\n }\n else if (singleSubSubSubSubFilter === 'notcontains') {\n filters[i][i2][i3][i4][i5] = 'NOT LIKE';\n singleSubSubSubSubFilter = 'NOT LIKE';\n\n filters[i][i2][i3][i4][i5 + 1] = '\\'%' + filters[i][i2][i3][i4][i5 + 1] + '%\\'';\n }\n else if (singleSubSubSubSubFilter === 'startswith') {\n filters[i][i2][i3][i4][i5] = 'LIKE';\n singleSubSubSubSubFilter = 'LIKE';\n\n filters[i][i2][i3][i4][i5 + 1] = '\\'' + filters[i][i2][i3][i4][i5 + 1] + '%\\'';\n }\n else if (singleSubSubSubSubFilter === 'endswith') {\n filters[i][i2][i3][i4][i5] = 'LIKE';\n singleSubSubSubSubFilter = 'LIKE';\n\n filters[i][i2][i3][i4][i5 + 1] = '\\'%' + filters[i][i2][i3][i4][i5 + 1] + '\\'';\n }\n else if (singleSubSubSubSubFilter === '=' || singleSubSubSubSubFilter === '<>' || singleSubSubSubSubFilter === '>' || singleSubSubSubSubFilter === '>=' || singleSubSubSubSubFilter === '<' || singleSubSubSubSubFilter === '<=') {\n if (!filters[i][i2][i3][i4][i5 + 1])\n filters[i][i2][i3][i4][i5 + 1] = 'NULL';\n else if (typeof filters[i][i2][i3][i4][i5 + 1] === 'string') {\n filters[i][i2][i3][i4][i5 + 1] = '\\'' + filters[i][i2][i3][i4][i5 + 1] + '\\'';\n }\n }\n else if (singleSubSubSubSubFilter === '!') {\n filters[i][i2][i3][i4][i5] = 'NOT';\n singleSubSubSubSubFilter = 'NOT';\n }\n\n sqlFilter += ' ' + singleSubSubSubSubFilter + ' ';\n }\n else if (singleSubSubSubSubFilterType.toString() === 'object' && singleSubSubSubSubFilterIsDate) {\n sqlFilter += ' \\'' + singleSubSubSubSubFilter.toISOString().split('T')[0] + '\\' ';\n }\n else if (singleSubSubSubSubFilterType.toString() === 'number') {\n sqlFilter += ' ' + singleSubSubSubSubFilter.toString() + ' ';\n }\n else if (singleSubSubSubSubFilterType.toString() === 'boolean') {\n if (singleSubSubSubSubFilter.toString() === 'true')\n sqlFilter += '1 ';\n else if (singleSubSubSubSubFilter.toString() === 'false' || singleSubSubSubSubFilter === null || singleSubSubSubSubFilter === undefined)\n sqlFilter += '0 ';\n }\n }\n }\n else if (singleSubSubSubFilterType.toString() === 'string') {\n if (singleSubSubSubFilter === 'contains') {\n filters[i][i2][i3][i4] = 'LIKE';\n singleSubSubSubFilter = 'LIKE';\n\n filters[i][i2][i3][i4 + 1] = '\\'%' + filters[i][i2][i3][i4 + 1] + '%\\'';\n }\n else if (singleSubSubSubFilter === 'notcontains') {\n filters[i][i2][i3][i4] = 'NOT LIKE';\n singleSubSubSubFilter = 'NOT LIKE';\n\n filters[i][i2][i3][i4 + 1] = '\\'%' + filters[i][i2][i3][i4 + 1] + '%\\'';\n }\n else if (singleSubSubSubFilter === 'startswith') {\n filters[i][i2][i3][i4] = 'LIKE';\n singleSubSubSubFilter = 'LIKE';\n\n filters[i][i2][i3][i4 + 1] = '\\'' + filters[i][i2][i3][i4 + 1] + '%\\'';\n }\n else if (singleSubSubSubFilter === 'endswith') {\n filters[i][i2][i3][i4] = 'LIKE';\n singleSubSubSubFilter = 'LIKE';\n\n filters[i][i2][i3][i4 + 1] = '\\'%' + filters[i][i2][i3][i4 + 1] + '\\'';\n }\n else if (singleSubSubSubFilter === '=' || singleSubSubSubFilter === '<>' || singleSubSubSubFilter === '>' || singleSubSubSubFilter === '>=' || singleSubSubSubFilter === '<' || singleSubSubSubFilter === '<=') {\n if (!filters[i][i2][i3][i4 + 1])\n filters[i][i2][i3][i4 + 1] = 'NULL';\n else if (typeof filters[i][i2][i3][i4 + 1] === 'string') {\n filters[i][i2][i3][i4 + 1] = '\\'' + filters[i][i2][i3][i4 + 1] + '\\'';\n }\n }\n else if (singleSubSubSubFilter === '!') {\n filters[i][i2][i3][i4] = 'NOT';\n singleSubSubSubFilter = 'NOT';\n }\n\n sqlFilter += ' ' + singleSubSubSubFilter + ' ';\n }\n else if (singleSubSubSubFilterType.toString() === 'object' && singleSubSubSubFilterIsDate) {\n sqlFilter += ' \\'' + singleSubSubSubFilter.toISOString().split('T')[0] + '\\' ';\n }\n else if (singleSubSubSubFilterType.toString() === 'number') {\n sqlFilter += ' ' + singleSubSubSubFilter.toString() + ' ';\n }\n else if (singleSubSubSubFilterType.toString() === 'boolean') {\n if (singleSubSubSubFilter.toString() === 'true')\n sqlFilter += '1 ';\n else if (singleSubSubSubFilter.toString() === 'false' || singleSubSubSubFilter === null || singleSubSubSubFilter === undefined)\n sqlFilter += '0 ';\n }\n }\n\n sqlFilter += ')';\n }\n else if (singleSubSubFilterType.toString() === 'string') {\n if (singleSubSubFilter === 'contains') {\n filters[i][i2][i3] = 'LIKE';\n singleSubSubFilter = 'LIKE';\n\n filters[i][i2][i3 + 1] = '\\'%' + filters[i][i2][i3 + 1] + '%\\'';\n }\n else if (singleSubSubFilter === 'notcontains') {\n filters[i][i2][i3] = 'NOT LIKE';\n singleSubSubFilter = 'NOT LIKE';\n\n filters[i][i2][i3 + 1] = '\\'%' + filters[i][i2][i3 + 1] + '%\\'';\n }\n else if (singleSubSubFilter === 'startswith') {\n filters[i][i2][i3] = 'LIKE';\n singleSubSubFilter = 'LIKE';\n\n filters[i][i2][i3 + 1] = '\\'' + filters[i][i2][i3 + 1] + '%\\'';\n }\n else if (singleSubSubFilter === 'endswith') {\n filters[i][i2][i3] = 'LIKE';\n singleSubSubFilter = 'LIKE';\n\n filters[i][i2][i3 + 1] = '\\'%' + filters[i][i2][i3 + 1] + '\\'';\n }\n else if (singleSubSubFilter === '=' || singleSubSubFilter === '<>' || singleSubSubFilter === '>' || singleSubSubFilter === '>=' || singleSubSubFilter === '<' || singleSubSubFilter === '<=') {\n if (!filters[i][i2][i3 + 1])\n filters[i][i2][i3 + 1] = 'NULL';\n else if (typeof filters[i][i2][i3 + 1] === 'string') {\n filters[i][i2][i3 + 1] = '\\'' + filters[i][i2][i3 + 1] + '\\'';\n }\n }\n else if (singleSubSubFilter === '!') {\n filters[i][i2][i3] = 'NOT';\n singleSubSubFilter = 'NOT';\n }\n sqlFilter += ' ' + singleSubSubFilter + ' ';\n }\n else if (singleSubSubFilterType.toString() === 'object' && singleSubSubFilterIsDate) {\n sqlFilter += ' \\'' + singleSubSubFilter.toISOString().split('T')[0] + '\\' ';\n }\n else if (singleSubSubFilterType.toString() === 'number') {\n sqlFilter += ' ' + singleSubSubFilter.toString() + ' ';\n }\n else if (singleSubSubFilterType.toString() === 'boolean') {\n if (singleSubSubFilter.toString() === 'true')\n sqlFilter += '1 ';\n else if (singleSubSubFilter.toString() === 'false' || singleSubSubFilter === null || singleSubSubFilter === undefined)\n sqlFilter += '0 ';\n }\n }\n\n sqlFilter += ')';\n }\n else if (singleSubFilterType.toString() === 'string') {\n if (singleSubFilter === 'contains') {\n filters[i][i2] = 'LIKE';\n singleSubFilter = 'LIKE';\n\n filters[i][i2 + 1] = '\\'%' + filters[i][i2 + 1] + '%\\'';\n }\n else if (singleSubFilter === 'notcontains') {\n filters[i][i2] = 'NOT LIKE';\n singleSubFilter = 'NOT LIKE';\n\n filters[i][i2 + 1] = '\\'%' + filters[i][i2 + 1] + '%\\'';\n }\n else if (singleSubFilter === 'startswith') {\n filters[i][i2] = 'LIKE';\n singleSubFilter = 'LIKE';\n\n filters[i][i2 + 1] = '\\'' + filters[i][i2 + 1] + '%\\'';\n }\n else if (singleSubFilter === 'endswith') {\n filters[i][i2] = 'LIKE';\n singleSubFilter = 'LIKE';\n\n filters[i][i2 + 1] = '\\'%' + filters[i][i2 + 1] + '\\'';\n }\n else if (singleSubFilter === '=' || singleSubFilter === '<>' || singleSubFilter === '>' || singleSubFilter === '>=' || singleSubFilter === '<' || singleSubFilter === '<=') {\n if (!filters[i][i2 + 1])\n filters[i][i2 + 1] = 'NULL';\n else if (typeof filters[i][i2 + 1] === 'string') {\n filters[i][i2 + 1] = '\\'' + filters[i][i2 + 1] + '\\'';\n }\n }\n else if (singleSubFilter === '!') {\n filters[i][i2] = 'NOT';\n singleSubFilter = 'NOT';\n }\n sqlFilter += ' ' + singleSubFilter + ' ';\n }\n else if (singleSubFilterType.toString() === 'object' && singleSubFilterIsDate) {\n sqlFilter += ' \\'' + singleSubFilter.toISOString().split('T')[0] + '\\' ';\n }\n else if (singleSubFilterType.toString() === 'number') {\n sqlFilter += ' ' + singleSubFilter.toString() + ' ';\n }\n else if (singleSubFilterType.toString() === 'boolean') {\n if (singleSubFilter.toString() === 'true')\n sqlFilter += '1 ';\n else if (singleSubFilter.toString() === 'false' || singleSubFilter === null || singleSubFilter === undefined)\n sqlFilter += '0 ';\n }\n }\n\n sqlFilter += ')';\n }\n else if (singleFilterType.toString() === 'string') {\n if (singleFilter === 'contains') {\n filters[i] = 'LIKE';\n singleFilter = 'LIKE';\n\n filters[i + 1] = '\\'%' + filters[i + 1] + '%\\'';\n }\n else if (singleFilter === 'notcontains') {\n filters[i] = 'NOT LIKE';\n singleFilter = 'NOT LIKE';\n\n filters[i + 1] = '\\'%' + filters[i + 1] + '%\\'';\n }\n else if (singleFilter === 'startswith') {\n filters[i] = 'LIKE';\n singleFilter = 'LIKE';\n\n filters[i + 1] = '\\'' + filters[i + 1] + '%\\'';\n }\n else if (singleFilter === 'endswith') {\n filters[i] = 'LIKE';\n singleFilter = 'LIKE';\n\n filters[i + 1] = '\\'%' + filters[i + 1] + '\\'';\n }\n else if (singleFilter === '=' || singleFilter === '<>' || singleFilter === '>' || singleFilter === '>=' || singleFilter === '<' || singleFilter === '<=') {\n if (!filters[i + 1])\n filters[i + 1] = 'NULL';\n else if (typeof filters[i + 1] === 'string') {\n filters[i + 1] = '\\'' + filters[i + 1] + '\\'';\n }\n }\n else if (singleFilter === '!') {\n filters[i] = 'NOT';\n singleFilter = 'NOT';\n }\n sqlFilter += ' ' + singleFilter + ' ';\n }\n else if (singleFilterType.toString() === 'object' && singleFilterIsDate) {\n sqlFilter += ' \\'' + singleFilter.toISOString().split('T')[0] + '\\' ';\n }\n else if (singleFilterType.toString() === 'number') {\n sqlFilter += ' ' + singleFilter.toString() + ' ';\n }\n else if (singleFilterType.toString() === 'boolean') {\n if (singleFilter.toString() === 'true')\n sqlFilter += '1 ';\n else if (singleFilter.toString() === 'false' || singleFilter === null || singleFilter === undefined)\n sqlFilter += '0 ';\n }\n }\n\n sqlFilter += ')';\n }\n });\n\n async function getRecords() {\n if (sqlFilter === '(')\n sqlFilter = '';\n\n var records = await getSalesOrderRecords(sqlFilter);\n return {\n data: records,\n totalCount: records.length\n };\n }\n\n return getRecords()\n .then(function (result) {\n return result;\n })\n .catch(() => { throw new Error('Data Loading Error'); });\n }\n })\n }, [getSalesOrderRecords]);\n\n const storeCliente = useMemo(() => {\n return new CustomStore({\n key: 'value',\n load(loadOptions) {\n let sqlFilter = '';\n [\n 'filter'\n ].forEach((i) => {\n sqlFilter = loadOptions.searchValue;\n });\n\n async function getRecords() {\n if (sqlFilter) {\n var records = await getCliente(sqlFilter);\n\n return {\n data: records,\n totalCount: records.length\n };\n }\n else {\n return {\n data: [],\n totalCount: 0\n };\n }\n }\n\n return getRecords()\n .then(function (result) {\n return result;\n })\n .catch(() => { throw new Error('Data Loading Error'); });\n },\n byKey: (key) => {\n /*\n async function getRecords(key) {\n var records = await getCliente(key);\n\n return records;\n }\n\n return getRecords(key);\n */\n return {\n name: salesOrderPayload.header.CteNombre,\n value: salesOrderPayload.header.Cliente\n };\n }\n })\n }, [getCliente, salesOrderPayload.header.CteNombre, salesOrderPayload.header.Cliente]);\n\n const storeArticulo = useMemo(() => {\n return new CustomStore({\n key: 'value',\n load(loadOptions) {\n let sqlFilter = '';\n [\n 'filter'\n ].forEach((i) => {\n sqlFilter = loadOptions.searchValue;\n });\n\n async function getRecords() {\n if (sqlFilter) {\n var records = await getArticulo(sqlFilter);\n\n return {\n data: records,\n totalCount: records.length\n };\n }\n else {\n return {\n data: [],\n totalCount: 0\n };\n }\n }\n\n return getRecords()\n .then(function (result) {\n return result;\n })\n .catch(() => { throw new Error('Data Loading Error'); });\n },\n byKey: (key) => {\n async function getRecords(key) {\n var records = await getArticulo(key);\n\n return records;\n }\n\n return getRecords(key);\n }\n })\n }, [getArticulo]);\n\n const storeCodigoPostal = useMemo(() => {\n return new CustomStore({\n key: 'value',\n load(loadOptions) {\n let sqlFilter = '';\n [\n 'filter'\n ].forEach((i) => {\n sqlFilter = loadOptions.searchValue;\n });\n\n async function getRecords() {\n if (sqlFilter) {\n var records = await getCodigoPostal(sqlFilter);\n\n return {\n data: records,\n totalCount: records.length\n };\n }\n else {\n return {\n data: [],\n totalCount: 0\n };\n }\n }\n\n return getRecords()\n .then(function (result) {\n return result;\n })\n .catch(() => { throw new Error('Data Loading Error'); });\n },\n byKey: (key) => {\n async function getRecords(key) {\n var records = await getCodigoPostal(key);\n\n return records;\n }\n\n return getRecords(key);\n }\n })\n }, [getCodigoPostal]);\n\n const onSelectionClienteChanged = React.useCallback(async (e) => {\n if (e.selectedItem) {\n var value = e.selectedItem.value;\n var rfc = e.selectedItem.rfc;\n\n if (!rfc && salesOrderPayload.header.RFC) {\n rfc = salesOrderPayload.header.RFC;\n }\n\n if (formDatosGeneralesRef.current) {\n var formDatosGenerales = formDatosGeneralesRef.current.instance();\n\n if (value) {\n formDatosGenerales.updateData('header.RFC', rfc);\n }\n else {\n formDatosGenerales.updateData('header.RFC', undefined);\n }\n }\n }\n else {\n if (formDatosGeneralesRef.current) {\n var formDatosGenerales = formDatosGeneralesRef.current.instance();\n\n formDatosGenerales.updateData('header.RFC', undefined);\n }\n }\n }, [formDatosGeneralesRef, salesOrderPayload.header.RFC]);\n\n const onSelectionCodigoPostalChanged = React.useCallback((e) => {\n if (e.selectedItem) {\n var value = e.selectedItem.value;\n var ClaveEstado = e.selectedItem.ClaveEstado;\n var ClaveMunicipio = e.selectedItem.ClaveMunicipio;\n var ClaveLocalidad = e.selectedItem.ClaveLocalidad;\n var ClavePais = e.selectedItem.ClavePais;\n\n if (formDatosGeneralesRef.current) {\n var formDatosGenerales = formDatosGeneralesRef.current.instance();\n \n if (value) {\n formDatosGenerales.updateData('shippingAddress.ClaveMunicipio', ClaveMunicipio);\n formDatosGenerales.updateData('shippingAddress.ClaveLocalidad', ClaveLocalidad);\n formDatosGenerales.updateData('shippingAddress.ClaveEstado', ClaveEstado);\n formDatosGenerales.updateData('shippingAddress.ClavePais', ClavePais);\n }\n else {\n formDatosGenerales.updateData('shippingAddress.ClaveMunicipio', undefined);\n formDatosGenerales.updateData('shippingAddress.ClaveLocalidad', undefined);\n formDatosGenerales.updateData('shippingAddress.ClaveEstado', undefined);\n formDatosGenerales.updateData('shippingAddress.ClavePais', undefined);\n }\n }\n }\n else {\n if (formDatosGeneralesRef.current) {\n var formDatosGenerales = formDatosGeneralesRef.current.instance();\n\n formDatosGenerales.updateData('shippingAddress.ClaveMunicipio', undefined);\n formDatosGenerales.updateData('shippingAddress.ClaveLocalidad', undefined);\n formDatosGenerales.updateData('shippingAddress.ClaveEstado', undefined);\n formDatosGenerales.updateData('shippingAddress.ClavePais', undefined);\n }\n }\n }, [formDatosGeneralesRef]);\n\n const onSelectionCodigoPostal1Changed = React.useCallback((e) => {\n if (e.selectedItem) {\n var value = e.selectedItem.value;\n var ClaveEstado = e.selectedItem.ClaveEstado;\n var ClaveMunicipio = e.selectedItem.ClaveMunicipio;\n var ClaveLocalidad = e.selectedItem.ClaveLocalidad;\n var ClavePais = e.selectedItem.ClavePais;\n \n if (formDatosGeneralesRef.current) {\n var formDatosGenerales = formDatosGeneralesRef.current.instance();\n\n if (value) {\n formDatosGenerales.updateData('billingAddress.ClaveMunicipio1', ClaveMunicipio);\n formDatosGenerales.updateData('billingAddress.ClaveLocalidad1', ClaveLocalidad);\n formDatosGenerales.updateData('billingAddress.ClaveEstado1', ClaveEstado);\n formDatosGenerales.updateData('billingAddress.ClavePais1', ClavePais);\n }\n else {\n formDatosGenerales.updateData('billingAddress.ClaveMunicipio1', undefined);\n formDatosGenerales.updateData('billingAddress.ClaveLocalidad1', undefined);\n formDatosGenerales.updateData('billingAddress.ClaveEstado1', undefined);\n formDatosGenerales.updateData('billingAddress.ClavePais1', undefined);\n }\n }\n }\n else {\n if (formDatosGeneralesRef.current) {\n var formDatosGenerales = formDatosGeneralesRef.current.instance();\n\n formDatosGenerales.updateData('billingAddress.ClaveMunicipio1', undefined);\n formDatosGenerales.updateData('billingAddress.ClaveLocalidad1', undefined);\n formDatosGenerales.updateData('billingAddress.ClaveEstado1', undefined);\n formDatosGenerales.updateData('billingAddress.ClavePais1', undefined);\n }\n }\n }, [formDatosGeneralesRef]);\n\n var fechaEmisionEditorOptions = useMemo(() => {\n return {\n width: '100%',\n readOnly: true\n };\n }, []);\n\n var movimientoEditorOptions = useMemo(() => {\n return {\n width: '100%',\n readOnly: true\n };\n }, []);\n\n var monedaEditorOptions = useMemo(() => {\n return {\n width: '100%',\n readOnly: true\n };\n }, []);\n\n var rfcEditorOptions = useMemo(() => {\n return {\n width: '100%',\n readOnly: true,\n inputAttr: {\n 'style': 'text-transform: uppercase'\n }\n };\n }, []);\n\n var tipoCambioEditorOptions = useMemo(() => {\n return {\n width: '100%',\n format: {\n type: 'currency',\n currency: 'MXN',\n precision: 2\n }\n };\n }, []);\n\n var cantidadEditorOptions = useMemo(() => {\n return {\n format: '#'\n };\n }, []);\n\n var rfc1EditorOptions = useMemo(() => {\n return {\n width: '100%',\n inputAttr: {\n 'style': 'text-transform: uppercase'\n }\n };\n }, []);\n\n var razonSocial1EditorOptions = useMemo(() => {\n return {\n width: '100%',\n readOnly: conDatosIguales || (salesOrderPayload.header.Estatus === 'Concluido' || salesOrderPayload.header.Estatus === 'Cancelado'),\n inputAttr: {\n 'style': 'text-transform: uppercase'\n }\n };\n }, [salesOrderPayload.header.Estatus, conDatosIguales]);\n\n var telefonos1EditorOptions = useMemo(() => {\n return {\n width: '100%',\n readOnly: conDatosIguales || (salesOrderPayload.header.Estatus === 'Concluido' || salesOrderPayload.header.Estatus === 'Cancelado'),\n inputAttr: {\n 'style': 'text-transform: uppercase'\n },\n mask: '(00) 0000-0000'\n };\n }, [salesOrderPayload.header.Estatus, conDatosIguales]);\n\n var direccion1EditorOptions = useMemo(() => {\n return {\n width: \"100%\",\n readOnly: conDatosIguales || (salesOrderPayload.header.Estatus === 'Concluido' || salesOrderPayload.header.Estatus === 'Cancelado'),\n inputAttr: { style: \"text-transform: uppercase\" },\n };\n }, [salesOrderPayload.header.Estatus, conDatosIguales]);\n\n var claveMunicipio1EditorOptions = useMemo(() => {\n return {\n width: \"100%\",\n readOnly: true,\n inputAttr: { style: \"text-transform: uppercase\" },\n };\n }, []);\n\n var claveLocalidad1EditorOptions = useMemo(() => {\n return {\n width: \"100%\",\n readOnly: true,\n inputAttr: { style: \"text-transform: uppercase\" },\n };\n }, []);\n\n var claveEstado1EditorOptions = useMemo(() => {\n return {\n width: \"100%\",\n readOnly: true,\n inputAttr: { style: \"text-transform: uppercase\" },\n };\n }, []);\n\n var clavePais1EditorOptions = useMemo(() => {\n return {\n width: \"100%\",\n readOnly: true,\n inputAttr: { style: \"text-transform: uppercase\" },\n };\n }, []);\n\n var nombreEditorOptions = useMemo(() => {\n return {\n width: \"100%\",\n inputAttr: { style: \"text-transform: uppercase\" },\n readOnly: !activateSinAfectarPendienteFields,\n };\n }, [activateSinAfectarPendienteFields]);\n\n var telefonoEditorOptions = useMemo(() => {\n return {\n width: \"100%\",\n inputAttr: { style: \"text-transform: uppercase\" },\n mask: \"(00) 0000-0000\",\n readOnly: !activateSinAfectarPendienteFields,\n };\n }, [activateSinAfectarPendienteFields]);\n\n var direccionEditorOptions = useMemo(() => {\n return {\n width: \"100%\",\n inputAttr: { style: \"text-transform: uppercase\" },\n readOnly: !activateSinAfectarPendienteFields,\n };\n }, [activateSinAfectarPendienteFields]);\n\n var entreCallesEditorOptions = useMemo(() => {\n return {\n width: \"100%\",\n inputAttr: { style: \"text-transform: uppercase\" },\n readOnly: !activateSinAfectarPendienteFields,\n };\n }, [activateSinAfectarPendienteFields]);\n\n var claveMunicipioEditorOptions = useMemo(() => {\n return {\n width: \"100%\",\n inputAttr: { style: \"text-transform: uppercase\" },\n readOnly: true,\n };\n }, []);\n\n var claveLocalidadEditorOptions = useMemo(() => {\n return {\n width: \"100%\",\n inputAttr: { style: \"text-transform: uppercase\" },\n readOnly: true,\n };\n }, []);\n\n var claveEstadoEditorOptions = useMemo(() => {\n return {\n width: \"100%\",\n inputAttr: { style: \"text-transform: uppercase\" },\n readOnly: true,\n };\n }, []);\n\n var clavePaisEditorOptions = useMemo(() => {\n return {\n width: \"100%\",\n inputAttr: { style: \"text-transform: uppercase\" },\n readOnly: true,\n };\n }, []);\n\n var emailEditorOptions = useMemo(() => {\n return {\n width: \"100%\",\n inputAttr: { style: \"text-transform: lowercase\" },\n readOnly: !activateSinAfectarPendienteFields,\n };\n }, [activateSinAfectarPendienteFields]);\n\n var cambiarClienteEditorOptions = useMemo(() => {\n return {\n readOnly: !activateCambiarCliente\n };\n }, [activateCambiarCliente]);\n\n var puePPDEditorOptions = useMemo(() => {\n return {\n readOnly: !activatePUEPPD\n };\n }, [activatePUEPPD]);\n\n var usuarioDataSource = useMemo(() => {\n return new DataSource({\n paginate: true,\n store: {\n type: \"array\",\n key: \"Usuario\",\n data: usuarios\n }\n });\n }, [usuarios]);\n\n var agenteDataSource = useMemo(() => {\n return new DataSource({\n paginate: true,\n store: {\n type: \"array\",\n key: \"Agente\",\n data: agentes\n }\n });\n }, [agentes]);\n\n var listaPreciosDataSource = useMemo(() => {\n return new DataSource({\n paginate: true,\n store: {\n type: \"array\",\n key: \"ListaPrecios\",\n data: listaPrecios\n }\n });\n }, [listaPrecios]);\n\n var conceptosDataSource = useMemo(() => {\n return new DataSource({\n paginate: true,\n store: {\n type: \"array\",\n key: \"Concepto\",\n data: conceptos\n }\n });\n }, [conceptos]);\n\n var condicionesDataSource = useMemo(() => {\n return new DataSource({\n paginate: true,\n store: {\n type: \"array\",\n key: \"Condicion\",\n data: condiciones\n }\n });\n }, [condiciones]);\n\n var coloniaDataSource = useMemo(() => {\n return new DataSource({\n paginate: true,\n store: {\n type: \"array\",\n key: \"Colonia\",\n data: colonias\n }\n });\n }, [colonias]);\n\n var colonia1DataSource = useMemo(() => {\n return new DataSource({\n paginate: true,\n store: {\n type: \"array\",\n key: \"Colonia\",\n data: colonias1\n }\n });\n }, [colonias1]);\n\n var scCodigoAutorizaPreciosEditorOptions = useMemo(() => {\n return {\n readOnly: !activateSinAfectarFields\n };\n }, [activateSinAfectarFields]);\n\n var scFechaAutorizaPreciosEditorOptions = useMemo(() => {\n return {\n readOnly: !activateSinAfectarFields\n };\n }, [activateSinAfectarFields]);\n\n var scMotivoAutorizaPreciosEditorOptions = useMemo(() => {\n return {\n readOnly: !activateSinAfectarFields\n };\n }, [activateSinAfectarFields]);\n\n var scComentariosAutorizaPreciosEditorOptions = useMemo(() => {\n return {\n readOnly: !activateSinAfectarFields\n };\n }, [activateSinAfectarFields]);\n\n var folioeCommerceEditorOptions = useMemo(() => {\n return {\n readOnly: true\n };\n }, []);\n\n var importeTotaleCommerceEditorOptions = useMemo(() => {\n return {\n format: {\n type: 'currency',\n currency: 'MXN',\n precision: 2\n },\n readOnly: true\n };\n }, []);\n\n var eCommerceFechaCreacionEditorOptions = useMemo(() => {\n return {\n readOnly: true,\n type: 'datetime'\n };\n }, []);\n\n var plazaEntregaEditorOptions = useMemo(() => {\n return {\n readOnly: true\n };\n }, []);\n\n var observacionesEditorOptions = useMemo(() => {\n return {\n readOnly: !activateSinAfectarFields\n };\n }, [activateSinAfectarFields]);\n\n //Opciones Usuario Autoriza\n try {\n var usuarioAutorizaEditorOptions = useMemo(() => {\n return {\n dataSource: usuarioDataSource,\n displayExpr: 'name',\n valueExpr: 'value',\n searchEnabled: true,\n value: (salesOrderPayload.header.SCUsuarioAutorizaPrecios ? salesOrderPayload.header.SCUsuarioAutorizaPrecios : ''),\n width: '100%',\n readOnly: !activateSinAfectarFields\n };\n }, [usuarioDataSource, salesOrderPayload.header.SCUsuarioAutorizaPrecios, activateSinAfectarFields]);\n }\n catch (e) {\n var usuarioAutorizaEditorOptions = {\n dataSource: usuarioDataSource,\n displayExpr: 'name',\n valueExpr: 'value',\n searchEnabled: true,\n value: '',\n width: '100%',\n readOnly: !activateSinAfectarFields\n };\n }\n\n //Opciones Agente \n try {\n var agenteEditorOptions = useMemo(() => {\n return {\n dataSource: agenteDataSource,\n displayExpr: 'name',\n valueExpr: 'value',\n searchEnabled: true,\n readOnly: true,\n value: (salesOrderPayload.header.Agente ? salesOrderPayload.header.Agente : ''), width: '100%'\n };\n }, [agenteDataSource, salesOrderPayload.header.Agente]);\n }\n catch (e) {\n var agenteEditorOptions = {\n dataSource: agenteDataSource,\n displayExpr: 'name',\n valueExpr: 'value',\n searchEnabled: true,\n readOnly: true,\n value: '',\n width: '100%'\n };\n };\n\n //Opciones Tipo de Pedido \n try {\n var tipoPedidoEditorOptions = useMemo(() => {\n return {\n dataSource: tipoPedido,\n displayExpr: 'name',\n valueExpr: 'value',\n searchEnabled: true,\n value: (salesOrderPayload.header.SCTipoPedido ? salesOrderPayload.header.SCTipoPedido : ''),\n width: '100%',\n readOnly: !activateSinAfectarFields\n };\n }, [tipoPedido, salesOrderPayload.header.SCTipoPedido, activateSinAfectarFields]);\n }\n catch (e) {\n var tipoPedidoEditorOptions = {\n dataSource: tipoPedido,\n displayExpr: 'name',\n valueExpr: 'value',\n searchEnabled: true,\n value: '',\n width: '100%',\n readOnly: !activateSinAfectarFields\n };\n };\n\n //Opciones Lista Precios \n try {\n var listaPreciosEditorOptions = useMemo(() => {\n return {\n dataSource: listaPreciosDataSource,\n displayExpr: 'name',\n valueExpr: 'value',\n searchEnabled: true,\n value: (salesOrderPayload.header.ListaPreciosEsp ? salesOrderPayload.header.ListaPreciosEsp : ''),\n width: '100%',\n readOnly: !activateSinAfectarFields\n };\n }, [listaPreciosDataSource, salesOrderPayload.header.ListaPreciosEsp, activateSinAfectarFields]);\n }\n catch (e) {\n var listaPreciosEditorOptions = {\n dataSource: listaPreciosDataSource,\n displayExpr: 'name',\n valueExpr: 'value',\n searchEnabled: true,\n value: '',\n width: '100%',\n readOnly: !activateSinAfectarFields\n };\n };\n\n //Opciones Conceptos\n try {\n var conceptosEditorOptions = useMemo(() => {\n return {\n dataSource: conceptosDataSource,\n displayExpr: 'name',\n valueExpr: 'value',\n searchEnabled: true,\n value: (salesOrderPayload.header.Concepto ? salesOrderPayload.header.Concepto : ''),\n width: '100%',\n readOnly: !activateSinAfectarFields\n };\n }, [conceptosDataSource, salesOrderPayload.header.Concepto, activateSinAfectarFields]);\n }\n catch (e) {\n var conceptosEditorOptions = {\n dataSource: conceptosDataSource,\n displayExpr: 'name',\n valueExpr: 'value',\n searchEnabled: true,\n value: '',\n width: '100%',\n readOnly: !activateSinAfectarFields\n };\n };\n\n //Opciones Condicion\n try {\n var condicionEditorOptions = useMemo(() => {\n return {\n dataSource: condicionesDataSource,\n displayExpr: 'name',\n valueExpr: 'value',\n searchEnabled: true,\n value: (salesOrderPayload.header.Condicion ? salesOrderPayload.header.Condicion : ''),\n width: '100%',\n readOnly: !activateSinAfectarFields\n };\n }, [condicionesDataSource, salesOrderPayload.header.Condicion, activateSinAfectarFields]);\n }\n catch (e) {\n var condicionEditorOptions = {\n dataSource: condicionesDataSource,\n displayExpr: 'name',\n valueExpr: 'value',\n searchEnabled: true,\n value: '',\n width: '100%',\n readOnly: !activateSinAfectarFields\n };\n };\n\n //Opciones Régimen Fiscal\n try {\n var fiscalRegimenEditorOptions = useMemo(() => {\n return {\n dataSource: fiscalRegimen,\n displayExpr: 'name',\n valueExpr: 'value',\n searchEnabled: true,\n value: (salesOrderPayload.billingAddress.FiscalRegimen ? salesOrderPayload.billingAddress.FiscalRegimen : ''),\n width: '100%'\n };\n }, [fiscalRegimen, salesOrderPayload.billingAddress.FiscalRegimen]);\n }\n catch (e) {\n var fiscalRegimenEditorOptions = {\n dataSource: fiscalRegimen,\n displayExpr: 'name',\n valueExpr: 'value',\n searchEnabled: true,\n value: '',\n width: '100%'\n };\n }\n\n //Opciones Uso CFDI\n try {\n var usoCFDIEditorOptions = useMemo(() => {\n return {\n dataSource: filtroUsoCFDI,\n displayExpr: 'name',\n valueExpr: 'value',\n searchEnabled: true,\n acceptCustomValue: ((salesOrderPayload.header.Estatus === 'Sin Afectar') ? false : true),\n value: (salesOrderPayload.billingAddress.SATCatUsoCFDI ? salesOrderPayload.billingAddress.SATCatUsoCFDI : ''),\n width: '100%'\n };\n }, [filtroUsoCFDI, salesOrderPayload.header.Estatus, salesOrderPayload.billingAddress.SATCatUsoCFDI]);\n }\n catch (e) {\n var usoCFDIEditorOptions = {\n dataSource: filtroUsoCFDI,\n displayExpr: 'name',\n valueExpr: 'value',\n acceptCustomValue: ((salesOrderPayload.header.Estatus === 'Sin Afectar') ? false : true),\n searchEnabled: true,\n value: '',\n width: '100%'\n };\n }\n\n //Opciones del campo Cliente\n try {\n var clienteEditorOptions = useMemo(() => {\n return {\n dataSource: storeCliente,\n displayExpr: 'name',\n valueExpr: 'value',\n searchEnabled: true,\n showClearButton: true,\n acceptCustomValue: false,\n disabled: ((salesOrderPayload.header.Estatus !== 'Sin Afectar') || (salesOrderPayload.header.Estatus === 'Sin Afectar' && !conCambiarCliente)),\n searchTimeout: 100,\n width: '100%',\n clearButtonText: 'Cerrar',\n noDataText: 'No se encontraron resultados',\n onSelectionChanged: onSelectionClienteChanged\n };\n }, [storeCliente, conCambiarCliente, onSelectionClienteChanged, salesOrderPayload.header.Estatus]);\n }\n catch (e) {\n var clienteEditorOptions = {\n dataSource: storeCliente,\n displayExpr: 'name',\n valueExpr: 'value',\n searchEnabled: true,\n acceptCustomValue: false,\n disabled: ((salesOrderPayload.header.Estatus !== 'Sin Afectar') || (salesOrderPayload.header.Estatus === 'Sin Afectar' && !conCambiarCliente)),\n width: '100%',\n onSelectionChanged: onSelectionClienteChanged\n };\n };\n\n\n //Opciones del campo Codigo Postal\n try {\n var codigoPostalEditorOptions = useMemo(() => {\n return {\n dataSource: storeCodigoPostal,\n displayExpr: 'name',\n valueExpr: 'value',\n searchEnabled: true,\n showClearButton: true,\n acceptCustomValue: false,\n searchTimeout: 1500,\n width: '100%',\n clearButtonText: 'Cerrar',\n noDataText: 'No se encontraron resultados',\n onSelectionChanged: onSelectionCodigoPostalChanged\n };\n }, [onSelectionCodigoPostalChanged, storeCodigoPostal]);\n }\n catch (e) {\n var codigoPostalEditorOptions = {\n dataSource: storeCodigoPostal,\n displayExpr: 'name',\n valueExpr: 'value',\n searchEnabled: true,\n acceptCustomValue: false,\n width: '100%',\n onSelectionChanged: onSelectionCodigoPostalChanged\n };\n };\n\n // Opciones del campo Colonia\n try {\n var claveColoniaEditorOptions = useMemo(() => {\n return {\n dataSource: coloniaDataSource,\n displayExpr: 'name',\n valueExpr: 'value',\n searchEnabled: true,\n value: (salesOrderPayload.shippingAddress.ClaveColonia ? salesOrderPayload.shippingAddress.ClaveColonia : ''),\n width: '100%'\n };\n }, [coloniaDataSource, salesOrderPayload.shippingAddress.ClaveColonia]);\n }\n catch (e) {\n var claveColoniaEditorOptions = {\n dataSource: coloniaDataSource,\n displayExpr: 'name',\n valueExpr: 'value',\n searchEnabled: true,\n value: '',\n width: '100%'\n };\n };\n\n //Opciones del campo Codigo Postal 1\n try {\n var codigoPostal1EditorOptions = useMemo(() => {\n return {\n dataSource: storeCodigoPostal,\n displayExpr: 'name',\n valueExpr: 'value',\n searchEnabled: true,\n showClearButton: true,\n acceptCustomValue: false,\n searchTimeout: 1500,\n width: '100%',\n clearButtonText: 'Cerrar',\n noDataText: 'No se encontraron resultados',\n onSelectionChanged: onSelectionCodigoPostal1Changed,\n disabled: conDatosIguales || (salesOrderPayload.header.Estatus === 'Concluido' || salesOrderPayload.header.Estatus === 'Cancelado')\n };\n }, [conDatosIguales, onSelectionCodigoPostal1Changed, salesOrderPayload.header.Estatus, storeCodigoPostal]);\n }\n catch (e) {\n var codigoPostal1EditorOptions = {\n dataSource: storeCodigoPostal,\n displayExpr: 'name',\n valueExpr: 'value',\n searchEnabled: true,\n acceptCustomValue: false,\n width: '100%',\n onSelectionChanged: onSelectionCodigoPostal1Changed,\n disabled: conDatosIguales || (salesOrderPayload.header.Estatus === 'Concluido' || salesOrderPayload.header.Estatus === 'Cancelado')\n };\n };\n\n // Opciones del campo Colonia 1\n try {\n var claveColonia1EditorOptions = useMemo(() => {\n return {\n dataSource: colonia1DataSource,\n displayExpr: 'name',\n valueExpr: 'value',\n searchEnabled: true,\n value: (salesOrderPayload.billingAddress.ClaveColonia1 ? salesOrderPayload.billingAddress.ClaveColonia1 : ''),\n width: '100%',\n readOnly: conDatosIguales || (salesOrderPayload.header.Estatus === 'Concluido' || salesOrderPayload.header.Estatus === 'Cancelado')\n };\n }, [colonia1DataSource, salesOrderPayload.billingAddress.ClaveColonia1, salesOrderPayload.header.Estatus, conDatosIguales]);\n }\n catch (e) {\n var claveColonia1EditorOptions = {\n dataSource: colonia1DataSource,\n displayExpr: 'name',\n valueExpr: 'value',\n searchEnabled: true,\n value: '',\n width: '100%',\n readOnly: conDatosIguales || (salesOrderPayload.header.Estatus === 'Concluido' || salesOrderPayload.header.Estatus === 'Cancelado')\n };\n };\n\n //Opciones del campo Articulo\n try {\n var articuloEditorOptions = useMemo(() => {\n return {\n dataSource: storeArticulo,\n displayExpr: 'name',\n valueExpr: 'value',\n searchEnabled: true,\n showClearButton: true,\n acceptCustomValue: false,\n disabled: false,\n // searchTimeout: 500,\n width: '100%',\n clearButtonText: 'Cerrar',\n noDataText: 'No se encontraron resultados'\n };\n }, [storeArticulo]);\n }\n catch (e) {\n var articuloEditorOptions = {\n dataSource: storeArticulo,\n displayExpr: 'name',\n valueExpr: 'value',\n searchEnabled: true,\n acceptCustomValue: false,\n width: '100%'\n };\n }\n\n async function uploadChunk(file, uploadInfo) {\n try {\n var responseS3 = await Storage.put(\"/vtas/\" + id + \"/\" + file.name, uploadInfo.chunkBlob, {\n contentType: file.type,\n ACL: 'public-read'\n });\n\n //Obtenemos el nombre del bucket\n let bucketName = Storage._config.AWSS3.bucket;\n\n\n let apiName = 'AdminSC';\n let path = '/uploadattachment';\n\n let myInit = {\n headers: {\n 'Content-Type': 'application/json',\n Authorization: `${(await Auth.currentSession()).getAccessToken().getJwtToken()}`\n },\n body: {\n action: 'register',\n bucketName: bucketName,\n type: 'vtas',\n id: id,\n Key: \"/vtas/\" + id + \"/\" + file.name,\n fileName: file.name,\n username: JSON.parse(JSON.stringify(await Auth.currentAuthenticatedUser())).username\n }\n }\n\n var attachmentsResult = await API.post(apiName, path, myInit);\n\n //Obtenemos los attachments\n var attachmentsGet = await Storage.list(\"/vtas/\" + id);\n var attachmentsAux = [];\n\n for (var attachmentsGetIndex in attachmentsGet) {\n var singleAttachmentsGet = attachmentsGet[attachmentsGetIndex];\n\n var singleAttachment = {\n name: singleAttachmentsGet.key.split('/').pop(),\n isDirectory: false,\n size: singleAttachmentsGet.size,\n };\n\n attachmentsAux.push(singleAttachment);\n }\n\n setAttachments(attachmentsAux);\n }\n catch (err) {\n console.log(\"Error uploading file:\", err);\n }\n }\n\n async function onAttachmentDeleting(e) {\n var fileName = e.item.key;\n\n //Primero borramos el archivo de S3\n var attachmentsDelete = await Storage.remove(\"/vtas/\" + id + \"/\" + fileName);\n\n //Despues borramos el attachment en Intelisis\n let bucketName = Storage._config.AWSS3.bucket;\n\n let apiName = 'AdminSC';\n let path = '/uploadattachment';\n\n let myInit = {\n headers: {\n 'Content-Type': 'application/json',\n Authorization: `${(await Auth.currentSession()).getAccessToken().getJwtToken()}`\n },\n body: {\n action: 'delete',\n bucketName: bucketName,\n type: 'vtas',\n id: id,\n Key: \"/vtas/\" + id + \"/\" + fileName,\n fileName: fileName,\n username: JSON.parse(JSON.stringify(await Auth.currentAuthenticatedUser())).username\n }\n }\n\n var attachmentsResult = await API.post(apiName, path, myInit);\n\n //Finalmente sincronizamos el state\n var attachmentsGet = await Storage.list(\"/vtas/\" + id);\n var attachmentsAux = [];\n\n for (var attachmentsGetIndex in attachmentsGet) {\n var singleAttachmentsGet = attachmentsGet[attachmentsGetIndex];\n\n var singleAttachment = {\n name: singleAttachmentsGet.key.split('/').pop(),\n isDirectory: false,\n size: singleAttachmentsGet.size,\n };\n\n attachmentsAux.push(singleAttachment);\n }\n\n setAttachments(attachmentsAux);\n };\n\n function downloadBlob(blob, filename) {\n const url = URL.createObjectURL(blob);\n const a = document.createElement('a');\n a.href = url;\n a.download = filename || 'download';\n const clickHandler = () => {\n setTimeout(() => {\n URL.revokeObjectURL(url);\n a.removeEventListener('click', clickHandler);\n }, 150);\n };\n\n a.addEventListener('click', clickHandler, false);\n\n a.click();\n\n return a;\n };\n\n async function onItemDownloading(e) {\n e.cancel = true;\n\n const downloadFileResponse = await Storage.get(\"/vtas/\" + id + \"/\" + e.item.name, { download: true });\n\n downloadBlob(downloadFileResponse.Body, e.item.name);\n };\n\n function openBlob(blob, filename) {\n const url = URL.createObjectURL(blob);\n\n window.open(url, \"_blank\");\n };\n\n async function onAttachmentOpen(e) {\n const downloadFileResponse = await Storage.get(\"/vtas/\" + id + \"/\" + e.file.name, { download: true });\n\n openBlob(downloadFileResponse.Body, e.file.name);\n };\n\n const getSalesOrderPayload = React.useCallback(async (ID) => {\n try {\n let apiName = 'AdminSC';\n let path = '/procesapedidos';\n\n let myInit = {\n headers: {\n 'Content-Type': 'application/json',\n Authorization: `${(await Auth.currentSession()).getAccessToken().getJwtToken()}`\n },\n queryStringParameters: {\n ID: ID,\n action: 'payload',\n username: JSON.parse(JSON.stringify(await Auth.currentAuthenticatedUser())).username\n }\n }\n\n var payloadGet = await API.get(apiName, path, myInit);\n\n setSalesOrderPayload(payloadGet);\n\n //Obtenemos los attachments\n var attachmentsGet = await Storage.list(\"/vtas/\" + ID);\n var attachmentsAux = [];\n\n for (var attachmentsGetIndex in attachmentsGet) {\n var singleAttachmentsGet = attachmentsGet[attachmentsGetIndex];\n\n var singleAttachment = {\n name: singleAttachmentsGet.key.split('/').pop(),\n isDirectory: false,\n size: singleAttachmentsGet.size,\n };\n\n attachmentsAux.push(singleAttachment);\n }\n\n setAttachments(attachmentsAux);\n }\n catch (e) {\n if (e === 'No current user') {\n history.push('/');\n\n window.location.reload();\n }\n }\n\n return payloadGet;\n }, [history]);\n\n function editSalesOrder(data) {\n return (\n <Link to={`/SalesOrder/${data.data.ID}`}>\n <button class=\"bg-blue-500 hover:bg-blue-700 text-white py-1 px-3 rounded\" onClick={() => editButton(data.data.ID)}><FontAwesomeIcon icon={permissionLevel === 'Editar' ? faPencilAlt : faGlasses} /> {permissionLevel === 'Editar' ? 'Editar' : 'Ver'}</button>\n </Link>\n )\n }\n\n function openRelatedRecord(redirect) {\n if (redirect) {\n var baseUrl = window.location.href.split('#/')[0];\n\n redirect = baseUrl + '#' + redirect;\n\n window.open(redirect, \"_blank\");\n }\n };\n\n function openRelatedRecordButton(data) {\n return (\n <button onClick={() => openRelatedRecord(data.data.redirect)}><FontAwesomeIcon icon={faArrowUpRightFromSquare} /></button>\n )\n };\n\n function estatusRelatedRecords(data) {\n return (\n <TransactionStatus {...props} Estatus={data.data.Estatus} />\n )\n };\n\n const getUsoCFDIValido = React.useCallback(async (FiscalRegimen, isLoading) => {\n if (isLoading === true)\n setVisibleLoadPanel(true);\n\n var tmpUsoCFDI = [];\n let apiName = 'AdminSC';\n let path = '/getcatalogo';\n\n let myInit = {\n headers: {\n 'Content-Type': 'application/json',\n Authorization: `${(await Auth.currentSession()).getAccessToken().getJwtToken()}`\n },\n queryStringParameters: {\n type: 'UsoCFDI',\n username: JSON.parse(JSON.stringify(await Auth.currentAuthenticatedUser())).username\n }\n }\n\n var usoCFDIGet = await API.get(apiName, path, myInit);\n\n for (var usoCFDIIndex in usoCFDIGet) {\n var singleUsoCFDI = usoCFDIGet[usoCFDIIndex];\n\n if (singleUsoCFDI.FiscalRegimen === FiscalRegimen) {\n tmpUsoCFDI.push({\n name: singleUsoCFDI.ClaveUsoCFDI + ' - ' + singleUsoCFDI.Descripcion,\n value: singleUsoCFDI.ClaveUsoCFDI\n })\n }\n }\n\n setFiltroUsoCFDI(tmpUsoCFDI);\n\n if (isLoading === true)\n setVisibleLoadPanel(false);\n }, []);\n\n const generateCFDiPDF = React.useCallback(async (payload, payloadFactura) => {\n var modulo = 'vtas';\n var type = 'invoice';\n\n try {\n // Despues enviamos el payload a la API crearPDF\n // *********************************************\n let apiName = 'AdminSC';\n let path = '/crearpdf';\n\n let myInit = {\n headers: {\n 'Content-Type': 'application/json',\n Authorization: `${(await Auth.currentSession()).getAccessToken().getJwtToken()}`\n },\n body: {\n type: type,\n payload: payloadFactura,\n bucketName: Storage._config.AWSS3.bucket,\n fileKey: `public//${modulo}/${payload.header.IDFactura}/${payload.header.MovimientoFactura.trim()}.pdf`,\n contentType: 'application/pdf',\n username: JSON.parse(JSON.stringify(await Auth.currentAuthenticatedUser())).username\n }\n }\n\n var pdfPost = await API.post(apiName, path, myInit);\n\n // *********************************************\n\n if (pdfPost.message.indexOf('Error') >= 0) {\n setVisibleToast(true);\n setMessageToast(pdfPost.message);\n setTypeToast('error');\n return;\n }\n else {\n return pdfPost;\n }\n }\n catch (e) {\n setVisibleLoadPanel(false);\n\n if (e === 'No current user') {\n history.push('/');\n\n window.location.reload();\n }\n }\n }, [history]);\n\n const getInvoicePayload = React.useCallback(async (IDFactura) => {\n try {\n let apiName = 'AdminSC';\n let path = '/procesapedidos';\n\n let myInit = {\n headers: {\n 'Content-Type': 'application/json',\n Authorization: `${(await Auth.currentSession()).getAccessToken().getJwtToken()}`\n },\n body: {\n action: 'invoicePayload',\n username: JSON.parse(JSON.stringify(await Auth.currentAuthenticatedUser())).username,\n invoices: [{ ID: IDFactura }]\n }\n };\n\n var payloadGet = await API.post(apiName, path, myInit);\n\n return payloadGet;\n }\n catch (e) {\n if (e === 'No current user') {\n history.push('/');\n\n window.location.reload();\n }\n }\n }, [history]);\n\n function blobToBase64(blob) {\n return new Promise((resolve, _) => {\n const reader = new FileReader();\n reader.onloadend = () => resolve(reader.result);\n reader.readAsDataURL(blob);\n });\n };\n\n const sendCFDiFiles = React.useCallback(async (hideToast, MovimientoFactura, IDFactura) => {\n try {\n let apiName = 'AdminSC';\n let path = '/enviarcorreo';\n\n let pdfFile = await Storage.get(\"/vtas/\" + IDFactura + \"/\" + MovimientoFactura.trim() + '.pdf', { download: true });\n let xmlFile = await Storage.get(\"/vtas/\" + IDFactura + \"/\" + MovimientoFactura.trim() + '.xml', { download: true });\n\n if (!pdfFile || !xmlFile) {\n return;\n }\n\n if (!hideToast)\n setVisibleLoadPanel(true);\n\n let xmlFileContents = await blobToBase64(xmlFile.Body);\n let pdfFileContents = await blobToBase64(pdfFile.Body);\n\n xmlFileContents = xmlFileContents.toString().split('base64,')[1];\n pdfFileContents = pdfFileContents.toString().split('base64,')[1];\n\n if (!xmlFileContents || !pdfFileContents) {\n if (!hideToast)\n setVisibleLoadPanel(false);\n\n setVisibleToast(true);\n setMessageToast('Archivos CFDi incorrectos');\n setTypeToast('error');\n return;\n }\n\n let myInit = {\n headers: {\n 'Content-Type': 'application/json',\n Authorization: `${(await Auth.currentSession()).getAccessToken().getJwtToken()}`\n },\n body: {\n ToAddresses: [salesOrderPayload.shippingAddress.eMail],\n // BccAddresses: [],\n // CcAddresses: [],\n Body: 'CFDi ' + MovimientoFactura.trim(),\n Subject: 'CFDi ' + MovimientoFactura.trim(),\n Source: 'admin@supercolchones.com',\n Attachments: [{\n filename: MovimientoFactura.trim() + '.xml',\n content: xmlFileContents,\n encoding: 'base64'\n },\n {\n filename: MovimientoFactura.trim() + '.pdf',\n content: pdfFileContents,\n encoding: 'base64'\n }\n ],\n username: JSON.parse(JSON.stringify(await Auth.currentAuthenticatedUser())).username\n }\n }\n\n var sendCFDiPost = await API.post(apiName, path, myInit);\n\n if (sendCFDiPost.message.indexOf('Error') >= 0) {\n if (!hideToast)\n setVisibleLoadPanel(false);\n\n setVisibleToast(true);\n setMessageToast(sendCFDiPost.message);\n setTypeToast('error');\n }\n else {\n if (hideToast === false) {\n setVisibleLoadPanel(false);\n\n setVisibleToast(true);\n setMessageToast(sendCFDiPost.message);\n setTypeToast('success');\n }\n }\n\n return sendCFDiPost;\n }\n catch (e) {\n setVisibleToast(true);\n setMessageToast(e.message);\n setTypeToast('error');\n }\n }, [salesOrderPayload.shippingAddress.eMail]);\n\n const newButton = React.useCallback(async () => {\n try {\n let apiName = 'AdminSC';\n let path = '/procesapedidos';\n\n let myInit = {\n headers: {\n 'Content-Type': 'application/json',\n Authorization: `${(await Auth.currentSession()).getAccessToken().getJwtToken()}`\n },\n queryStringParameters: {\n action: 'new',\n username: JSON.parse(JSON.stringify(await Auth.currentAuthenticatedUser())).username,\n usuario: props.usuario,\n sucursal: props.sucursal\n }\n };\n\n var payloadNew = await API.get(apiName, path, myInit);\n\n setSalesOrderPayload(payloadNew);\n\n setAttachments([]);\n\n setIsDetail(true);\n setId(undefined);\n\n setConDatosIguales(true);\n setConCambiarCliente(false);\n setConAutorizacionPrecio(false);\n\n await getUsoCFDIValido(payloadNew.billingAddress.FiscalRegimen, false);\n\n setActivateUpdateForm(true);\n setAcceptCustomValue(false);\n setActivateSaveButton(true);\n setActivateDeleteButton(false);\n setActivateCancelButton(false);\n setActivateConfirmButton(false);\n setActivatePDFButton(false);\n setActivateAttachments(false);\n setActivateUpdateGrid(true);\n setActivateSeparado(false);\n setActivateFacturable(false);\n setActivateCustomerPayment(false);\n setActivateDirectDelivery(false);\n setActivateDeliveryRequest(false);\n setActivateDirectReturn(false);\n setActivateReturnRequest(false);\n setActivateTransferOrder(false);\n setActivatePrintInvoice(false);\n setActivateCSF(false);\n setActivateSinAfectarPendienteFields(true);\n setActivateSinAfectarFields(true);\n setActivateCambiarCliente(true);\n setActivatePUEPPD(true);\n\n setVisibleLoadPanel(false);\n }\n catch (e) {\n if (e === 'No current user') {\n history.push('/');\n\n window.location.reload();\n }\n }\n }, [getUsoCFDIValido, history, props.sucursal, props.usuario]);\n\n\n const editButton = React.useCallback(async (ID) => {\n try {\n if (!window.event.metaKey && !window.event.ctrlKey) {\n setVisibleLoadPanel(true);\n\n setIsDetail(true);\n setId(ID);\n\n var payload = await getSalesOrderPayload(ID);\n\n // Obtenemos el Uso de CFDI\n await getUsoCFDIValido(payload.billingAddress.FiscalRegimen, false);\n\n // Obtenemos las colonias de Entrega\n await getColonia(payload.shippingAddress.CodigoPostal, false)\n\n // Obtenemos las colonias de Facturacion\n if (payload.billingAddress.CodigoPostal1)\n await getColonia1(payload.billingAddress.CodigoPostal1, false)\n\n setConDatosIguales(payload.billingAddress.DFIguales);\n\n setConCambiarCliente(payload.header.SCCapturaCliente);\n\n if (payload.header.SCUsuarioAutorizaPrecios && payload.header.SCCodigoAutorizaPrecios)\n setConAutorizacionPrecio(true);\n else\n setConAutorizacionPrecio(false);\n\n if (permissionLevel === 'Editar') {\n var ImporteTotal = parseFloat(payload.header.ImporteTotal);\n var Anticipos = parseFloat(payload.header.Anticipos);\n var EstatusProg = payload.header.EstatusProg;\n var MPR = payload.header.MPR;\n\n if (!ImporteTotal)\n ImporteTotal = 0;\n if (!Anticipos)\n Anticipos = 0;\n if (!EstatusProg)\n EstatusProg = '';\n if (!MPR)\n MPR = 'NO';\n\n if (payload.header.Estatus === 'Sin Afectar') {\n setActivateUpdateGrid(true);\n setAcceptCustomValue(false);\n setActivateSaveButton(true);\n setActivateDeleteButton(false);\n setActivateCancelButton(false);\n setActivatePDFButton(false);\n setActivateUpdateForm(true);\n setActivateAttachments(true);\n\n if (!payload.header.Situacion) {\n setActivateSeparado(true);\n setActivateFacturable(false);\n setActivateConfirmButton(false);\n }\n else if (payload.header.Situacion === 'Separado No Programable') {\n setActivateSeparado(false);\n setActivateFacturable(true);\n setActivateConfirmButton(false);\n }\n else if (payload.header.Situacion === 'Facturable') {\n setActivateSeparado(false);\n setActivateFacturable(false);\n setActivateConfirmButton(true);\n }\n\n if ((Anticipos < ImporteTotal) && customerPayment && customerPaymentLevel === 'Editar' && payload.header.Situacion) {\n setActivateCustomerPayment(true);\n }\n else {\n setActivateCustomerPayment(false);\n }\n\n if ((EstatusProg === 'NULA' || EstatusProg === 'PARCIAL') && directDelivery && directDeliveryLevel === 'Editar' && payload.header.Situacion === 'Facturable') {\n setActivateDirectDelivery(true);\n }\n else {\n setActivateDirectDelivery(false);\n }\n\n if ((EstatusProg === 'NULA' || EstatusProg === 'PARCIAL') && deliveryRequest && deliveryRequestLevel === 'Editar' && payload.header.Situacion === 'Facturable') {\n setActivateDeliveryRequest(true);\n }\n else {\n setActivateDeliveryRequest(false);\n }\n\n if ((MPR === 'SI') && directReturn && directReturnLevel === 'Editar' && payload.header.Situacion === 'Facturable') {\n setActivateDirectReturn(true);\n }\n else {\n setActivateDirectReturn(false);\n }\n\n if ((MPR === 'SI') && returnRequest && returnRequestLevel === 'Editar' && payload.header.Situacion === 'Facturable') {\n setActivateReturnRequest(true);\n }\n else {\n setActivateReturnRequest(false);\n }\n\n if ((EstatusProg === 'NULA' || EstatusProg === 'PARCIAL') && transferOrder && transferOrderLevel === 'Editar' && payload.header.Situacion === 'Facturable') {\n setActivateTransferOrder(true);\n }\n else {\n setActivateTransferOrder(false);\n }\n\n if (!payload.header.Cliente) {\n setActivateCSF(false);\n }\n\n setActivateSinAfectarPendienteFields(true);\n setActivateSinAfectarFields(true);\n\n if (!payload.header.Cliente)\n setActivateCambiarCliente(true);\n else\n setActivateCambiarCliente(false);\n\n if (payload.relatedRecords.length > 0)\n setActivatePUEPPD(false);\n else\n setActivatePUEPPD(true);\n }\n else if (payload.header.Estatus === 'Pendiente') {\n setActivateUpdateGrid(false);\n setAcceptCustomValue(false);\n setActivateSaveButton(true);\n setActivateDeleteButton(false);\n setActivateCancelButton(false);\n setActivatePDFButton(false);\n setActivateUpdateForm(true);\n setActivateAttachments(false);\n\n setActivateSeparado(false);\n setActivateFacturable(false);\n setActivateConfirmButton(true);\n\n if ((Anticipos < ImporteTotal) && customerPayment && customerPaymentLevel === 'Editar') {\n setActivateCustomerPayment(true);\n }\n else {\n setActivateCustomerPayment(false);\n }\n\n if ((EstatusProg === 'NULA' || EstatusProg === 'PARCIAL') && directDelivery && directDeliveryLevel === 'Editar') {\n setActivateDirectDelivery(true);\n }\n else {\n setActivateDirectDelivery(false);\n }\n\n if ((EstatusProg === 'NULA' || EstatusProg === 'PARCIAL') && deliveryRequest && deliveryRequestLevel === 'Editar') {\n setActivateDeliveryRequest(true);\n }\n else {\n setActivateDeliveryRequest(false);\n }\n\n if ((MPR === 'SI') && directReturn && directReturnLevel === 'Editar') {\n setActivateDirectReturn(true);\n }\n else {\n setActivateDirectReturn(false);\n }\n\n if ((MPR === 'SI') && returnRequest && returnRequestLevel === 'Editar') {\n setActivateReturnRequest(true);\n }\n else {\n setActivateReturnRequest(false);\n }\n\n if ((EstatusProg === 'NULA' || EstatusProg === 'PARCIAL') && transferOrder && transferOrderLevel === 'Editar' && payload.header.Situacion === 'Facturable') {\n setActivateTransferOrder(true);\n }\n else {\n setActivateTransferOrder(false);\n }\n\n setActivateCSF(false);\n\n setActivateSinAfectarPendienteFields(true);\n setActivateSinAfectarFields(false);\n\n setActivateCambiarCliente(false);\n\n setActivatePUEPPD(false);\n }\n else if (payload.header.Estatus === 'Concluido') {\n setActivateUpdateGrid(false);\n setAcceptCustomValue(true);\n setActivateSaveButton(false);\n setActivateDeleteButton(false);\n setActivateCancelButton(false);\n setActivatePDFButton(false);\n setActivateUpdateForm(false);\n setActivateAttachments(false);\n\n setActivateSeparado(false);\n setActivateFacturable(false);\n setActivateConfirmButton(false);\n\n if ((Anticipos < ImporteTotal) && customerPayment && customerPaymentLevel === 'Editar') {\n setActivateCustomerPayment(true);\n }\n else {\n setActivateCustomerPayment(false);\n }\n\n if ((EstatusProg === 'NULA' || EstatusProg === 'PARCIAL') && directDelivery && directDeliveryLevel === 'Editar') {\n setActivateDirectDelivery(true);\n }\n else {\n setActivateDirectDelivery(false);\n }\n\n if ((EstatusProg === 'NULA' || EstatusProg === 'PARCIAL') && deliveryRequest && deliveryRequestLevel === 'Editar') {\n setActivateDeliveryRequest(true);\n }\n else {\n setActivateDeliveryRequest(false);\n }\n\n if ((MPR === 'SI') && directReturn && directReturnLevel === 'Editar') {\n setActivateDirectReturn(true);\n }\n else {\n setActivateDirectReturn(false);\n }\n\n if ((MPR === 'SI') && returnRequest && returnRequestLevel === 'Editar') {\n setActivateReturnRequest(true);\n }\n else {\n setActivateReturnRequest(false);\n }\n\n if ((EstatusProg === 'NULA' || EstatusProg === 'PARCIAL') && transferOrder && transferOrderLevel === 'Editar') {\n setActivateTransferOrder(true);\n }\n else {\n setActivateTransferOrder(false);\n }\n\n if (payload.header.IDFactura)\n setActivatePrintInvoice(true);\n\n setActivateCSF(false);\n\n setActivateSinAfectarPendienteFields(false);\n setActivateSinAfectarFields(false);\n\n setActivateCambiarCliente(false);\n\n setActivatePUEPPD(false);\n }\n else if (payload.header.Estatus === 'Cancelado') {\n setActivateUpdateGrid(false);\n setAcceptCustomValue(true);\n setActivateSaveButton(false);\n setActivateDeleteButton(false);\n setActivateCancelButton(false);\n setActivatePDFButton(false);\n setActivateUpdateForm(false);\n setActivateAttachments(false);\n\n setActivateSeparado(false);\n setActivateFacturable(false);\n setActivateConfirmButton(false);\n\n setActivateCustomerPayment(false);\n\n setActivateDirectDelivery(false);\n setActivateDeliveryRequest(false);\n\n if ((MPR === 'SI') && directReturn && directReturnLevel === 'Editar') {\n setActivateDirectReturn(true);\n }\n else {\n setActivateDirectReturn(false);\n }\n\n if ((MPR === 'SI') && returnRequest && returnRequestLevel === 'Editar') {\n setActivateReturnRequest(true);\n }\n else {\n setActivateReturnRequest(false);\n }\n\n setActivateTransferOrder(false);\n\n if (payload.header.IDFactura)\n setActivatePrintInvoice(true);\n\n setActivateCSF(false);\n\n setActivateSinAfectarPendienteFields(false);\n setActivateSinAfectarFields(false);\n\n setActivateCambiarCliente(false);\n\n setActivatePUEPPD(false);\n }\n }\n else if (permissionLevel === 'Ver') {\n setActivateUpdateGrid(false);\n setAcceptCustomValue(true);\n setActivateSaveButton(false);\n setActivateDeleteButton(false);\n setActivateCancelButton(false);\n setActivatePDFButton(false);\n setActivateUpdateForm(false);\n setActivateAttachments(false);\n\n setActivateSeparado(false);\n setActivateFacturable(false);\n setActivateConfirmButton(false);\n\n setActivateCustomerPayment(false);\n setActivateDirectDelivery(false);\n setActivateDeliveryRequest(false);\n setActivateDirectReturn(false);\n setActivateReturnRequest(false);\n setActivateTransferOrder(false);\n\n if (payload.header.IDFactura)\n setActivatePrintInvoice(true);\n\n setActivateCSF(false);\n\n setActivateSinAfectarPendienteFields(false);\n setActivateSinAfectarFields(false);\n\n setActivateCambiarCliente(false);\n\n setActivatePUEPPD(false);\n }\n\n setVisibleLoadPanel(false);\n }\n }\n catch (e) {\n setVisibleLoadPanel(false);\n\n if (!ID || ID === 'undefined') {\n newButton();\n }\n }\n }, [customerPayment, customerPaymentLevel, getColonia, getColonia1, getSalesOrderPayload, getUsoCFDIValido, newButton, permissionLevel, deliveryRequest, deliveryRequestLevel, directDelivery, directDeliveryLevel, directReturn, directReturnLevel, returnRequest, returnRequestLevel, transferOrder, transferOrderLevel]);\n\n async function cancelEditButton() {\n setIsDetail(false);\n };\n\n function csfButton() {\n };\n\n async function saveButton() {\n if (formDatosGeneralesRef.current) {\n var formDatosGenerales = formDatosGeneralesRef.current.instance();\n var isValid = formDatosGenerales.validate();\n\n if (!isValid.isValid) {\n setVisibleToast(true);\n setMessageToast(isValid.brokenRules[0].message);\n setTypeToast('error');\n return;\n }\n }\n\n try {\n setVisibleLoadPanel(true);\n\n var ID = salesOrderPayload.header.ID;\n\n //Primero guardamos los cambios del grid Articulos\n if (gridArticulosRef.current) {\n var gridArticulos = gridArticulosRef.current.instance();\n\n gridArticulos.saveEditData();\n }\n\n //Despues enviamos todo al backend\n let apiName = 'AdminSC';\n let path = '/procesapedidos';\n\n let myInit = {\n headers: {\n 'Content-Type': 'application/json',\n Authorization: `${(await Auth.currentSession()).getAccessToken().getJwtToken()}`\n },\n body: {\n ID: ID,\n payload: salesOrderPayload,\n action: 'saveChanges',\n username: JSON.parse(JSON.stringify(await Auth.currentAuthenticatedUser())).username,\n usuario: props.usuario,\n sucursal: props.sucursal,\n s3Bucket: Storage._config.AWSS3.bucket\n }\n }\n\n var payloadPost = await API.post(apiName, path, myInit);\n\n if (payloadPost.ok === 'true') {\n if (!ID) {\n setVisibleToast(true);\n setMessageToast('Se creó el Pedido con éxito');\n setTypeToast('success')\n\n ID = payloadPost.newID;\n\n editButton(ID);\n\n history.push('/SalesOrder/' + ID.toString());\n }\n else {\n setVisibleToast(true);\n setMessageToast('Se actualizó el Pedido con éxito');\n setTypeToast('success')\n }\n }\n else if (payloadPost.ok === 'false') {\n setVisibleToast(true);\n setMessageToast(payloadPost.message);\n setTypeToast('error')\n }\n\n editButton(ID);\n\n setVisibleLoadPanel(false);\n }\n catch (e) {\n setVisibleLoadPanel(false);\n\n if (e === 'No current user') {\n history.push('/');\n\n window.location.reload();\n }\n }\n };\n\n const confirmButton = React.useCallback(async () => {\n if (formDatosGeneralesRef.current) {\n var formDatosGenerales = formDatosGeneralesRef.current.instance();\n var isValid = formDatosGenerales.validate();\n\n if (!isValid.isValid) {\n setVisibleToast(true);\n setMessageToast(isValid.brokenRules[0].message);\n setTypeToast('error');\n return;\n }\n }\n\n try {\n setVisibleLoadPanel(true);\n\n var ID = salesOrderPayload.header.ID;\n\n //Primero guardamos los cambios del grid Articulos\n if (gridArticulosRef.current) {\n var gridArticulos = gridArticulosRef.current.instance();\n\n gridArticulos.saveEditData();\n }\n\n var lambdaFunction;\n\n if (window.location.href.indexOf('sandbox.') >= 0 || window.location.href.indexOf('localhost') >= 0)\n lambdaFunction = 'procesaPedidos-dev';\n else if (window.location.href.indexOf('sandboxtampico.') >= 0)\n lambdaFunction = 'procesaPedidos-devleona';\n else if (window.location.href.indexOf('tampico.') >= 0)\n lambdaFunction = 'procesaPedidos-prodleona';\n else\n lambdaFunction = 'procesaPedidos-prod';\n\n Auth.currentCredentials()\n .then(credentials => {\n const lambda = new Lambda({\n credentials: Auth.essentialCredentials(credentials),\n region: 'us-east-1'\n });\n\n var params = {\n FunctionName: lambdaFunction,\n Payload: JSON.stringify({\n ID: ID,\n payload: salesOrderPayload,\n action: 'apply',\n username: props.username,\n usuario: props.usuario,\n sucursal: props.sucursal,\n s3Bucket: Storage._config.AWSS3.bucket\n })\n };\n\n lambda.invoke(params, function (err, data) {\n if (err) {\n setVisibleLoadPanel(false);\n\n setVisibleToast(true);\n setMessageToast(err.message);\n setTypeToast('error');\n }\n else {\n var payloadPost = JSON.parse(JSON.parse(data.Payload).body);\n\n if (payloadPost.ok === 'true') {\n //Primero obtenemos el payload actualizado\n async function checkCFDiStatus() {\n var payload = await getSalesOrderPayload(id);\n\n if (payload.header.IDFactura) {\n // Generamos el PDF\n\n // Primero obtenemos el payload de la factura\n var payloadFactura = await getInvoicePayload(payload.header.IDFactura);\n\n // Después generamos el PDF\n var pdfPost = await generateCFDiPDF(payload, payloadFactura);\n\n // Finalmente enviamos el correo electrónico\n var sendCFDiPost = await sendCFDiFiles(true, payload.header.MovimientoFactura, payload.header.IDFactura);\n }\n\n setVisibleToast(true);\n setMessageToast('Pedido facturado correctamente');\n setTypeToast('success');\n\n editButton(ID);\n\n setVisibleLoadPanel(false);\n };\n\n checkCFDiStatus();\n }\n else if (payloadPost.ok === 'false') {\n setVisibleToast(true);\n\n if (!payloadPost.message || payloadPost.message === '' || payloadPost.message === 'Error SQL')\n setMessageToast('No se pudo facturar el Pedido');\n else\n setMessageToast(payloadPost.message);\n\n setTypeToast('error')\n\n editButton(ID);\n\n setVisibleLoadPanel(false);\n }\n }\n });\n })\n }\n catch (e) {\n setVisibleLoadPanel(false);\n\n if (e === 'No current user') {\n history.push('/');\n\n window.location.reload();\n }\n }\n }, [editButton, formDatosGeneralesRef, getSalesOrderPayload, gridArticulosRef, history, id, props.sucursal, props.username, props.usuario, salesOrderPayload, generateCFDiPDF, sendCFDiFiles, getInvoicePayload]);\n\n async function voidButton() {\n };\n\n function refreshButton() {\n if (gridTableroRef.current) {\n var gridTablero = gridTableroRef.current.instance();\n\n gridTablero.refresh();\n }\n }\n\n async function deleteButton() {\n };\n\n function printButton() {\n var baseUrl = window.location.href.split('/')[0];\n\n window.open(baseUrl + \"/#/PdfRender?type=salesorder&id=\" + id, \"_blank\");\n };\n\n function printInvoiceButton() {\n var pdfArray = [];\n var baseUrl = window.location.href.split('/')[0];\n\n pdfArray.push(salesOrderPayload.header.IDFactura);\n\n window.open(baseUrl + \"/#/PdfRender?type=invoice&id=\" + pdfArray, \"_blank\");\n };\n\n async function reservedButton() {\n if (formDatosGeneralesRef.current) {\n var formDatosGenerales = formDatosGeneralesRef.current.instance();\n var isValid = formDatosGenerales.validate();\n\n if (!isValid.isValid) {\n setVisibleToast(true);\n setMessageToast(isValid.brokenRules[0].message);\n setTypeToast('error');\n return;\n }\n }\n\n try {\n setVisibleLoadPanel(true);\n\n var ID = salesOrderPayload.header.ID;\n\n //Primero guardamos los cambios del grid Articulos\n if (gridArticulosRef.current) {\n var gridArticulos = gridArticulosRef.current.instance();\n\n gridArticulos.saveEditData();\n }\n\n //Despues enviamos todo al backend\n let apiName = 'AdminSC';\n let path = '/procesapedidos';\n\n let myInit = {\n headers: {\n 'Content-Type': 'application/json',\n Authorization: `${(await Auth.currentSession()).getAccessToken().getJwtToken()}`\n },\n body: {\n ID: ID,\n payload: salesOrderPayload,\n action: 'isReserved',\n username: JSON.parse(JSON.stringify(await Auth.currentAuthenticatedUser())).username,\n usuario: props.usuario,\n sucursal: props.sucursal,\n s3Bucket: Storage._config.AWSS3.bucket\n }\n }\n\n var payloadPost = await API.post(apiName, path, myInit);\n\n if (payloadPost.ok === 'true') {\n setVisibleToast(true);\n setMessageToast('Situación actualizada correctamente');\n setTypeToast('success')\n }\n else if (payloadPost.ok === 'false') {\n setVisibleToast(true);\n setMessageToast(payloadPost.message);\n setTypeToast('error')\n }\n\n editButton(ID);\n\n setVisibleLoadPanel(false);\n }\n catch (e) {\n setVisibleLoadPanel(false);\n\n if (e === 'No current user') {\n history.push('/');\n\n window.location.reload();\n }\n }\n };\n\n async function billableButton() {\n if (formDatosGeneralesRef.current) {\n var formDatosGenerales = formDatosGeneralesRef.current.instance();\n var isValid = formDatosGenerales.validate();\n\n if (!isValid.isValid) {\n setVisibleToast(true);\n setMessageToast(isValid.brokenRules[0].message);\n setTypeToast('error');\n return;\n }\n }\n\n try {\n setVisibleLoadPanel(true);\n\n var ID = salesOrderPayload.header.ID;\n\n //Primero guardamos los cambios del grid Articulos\n if (gridArticulosRef.current) {\n var gridArticulos = gridArticulosRef.current.instance();\n\n gridArticulos.saveEditData();\n }\n\n //Despues enviamos todo al backend\n let apiName = 'AdminSC';\n let path = '/procesapedidos';\n\n let myInit = {\n headers: {\n 'Content-Type': 'application/json',\n Authorization: `${(await Auth.currentSession()).getAccessToken().getJwtToken()}`\n },\n body: {\n ID: ID,\n payload: salesOrderPayload,\n action: 'isBillable',\n username: JSON.parse(JSON.stringify(await Auth.currentAuthenticatedUser())).username,\n usuario: props.usuario,\n sucursal: props.sucursal,\n s3Bucket: Storage._config.AWSS3.bucket\n }\n }\n\n var payloadPost = await API.post(apiName, path, myInit);\n\n if (payloadPost.ok === 'true') {\n setVisibleToast(true);\n setMessageToast('Situación actualizada correctamente');\n setTypeToast('success')\n }\n else if (payloadPost.ok === 'false') {\n setVisibleToast(true);\n setMessageToast(payloadPost.message);\n setTypeToast('error')\n }\n\n editButton(ID);\n\n setVisibleLoadPanel(false);\n }\n catch (e) {\n setVisibleLoadPanel(false);\n\n if (e === 'No current user') {\n history.push('/');\n\n window.location.reload();\n }\n }\n };\n\n async function customerPaymentButton() {\n await saveButton();\n\n var baseUrl = window.location.href.split('/')[0];\n var SCRama = salesOrderPayload.header.MovID;\n\n window.open(baseUrl + \"/#/CustomerPayment/undefined?salesorder=\" + SCRama, \"_blank\");\n };\n\n async function directDeliveryButton() {\n await saveButton();\n\n var baseUrl = window.location.href.split('/')[0];\n var SCRama = salesOrderPayload.header.MovID;\n\n window.open(baseUrl + \"/#/DirectDelivery/undefined?salesorder=\" + SCRama, \"_blank\");\n };\n\n async function deliveryRequestButton() {\n await saveButton();\n\n var baseUrl = window.location.href.split('/')[0];\n var SCRama = salesOrderPayload.header.MovID;\n\n window.open(baseUrl + \"/#/DeliveryRequest/undefined?salesorder=\" + SCRama, \"_blank\");\n };\n\n async function transferOrderButton() {\n await saveButton();\n\n var baseUrl = window.location.href.split('/')[0];\n var SCRama = salesOrderPayload.header.MovID;\n\n window.open(baseUrl + \"/#/TransferOrder/undefined?salesorder=\" + SCRama, \"_blank\");\n };\n\n\n async function directReturnButton() {\n await saveButton();\n\n var baseUrl = window.location.href.split('/')[0];\n var SCRama = salesOrderPayload.header.MovID;\n\n window.open(baseUrl + \"/#/DirectReturn/undefined?salesorder=\" + SCRama, \"_blank\");\n };\n\n async function returnRequestButton() {\n await saveButton();\n\n var baseUrl = window.location.href.split('/')[0];\n var SCRama = salesOrderPayload.header.MovID;\n\n window.open(baseUrl + \"/#/ReturnRequest/undefined?salesorder=\" + SCRama, \"_blank\");\n };\n\n const getUsuario = React.useCallback(async () => {\n let apiName = 'AdminSC';\n let path = '/getcatalogo';\n\n let myInit = {\n headers: {\n 'Content-Type': 'application/json',\n Authorization: `${(await Auth.currentSession()).getAccessToken().getJwtToken()}`\n },\n queryStringParameters: {\n type: 'Usuario',\n username: JSON.parse(JSON.stringify(await Auth.currentAuthenticatedUser())).username\n }\n }\n\n var usuariosGet = await API.get(apiName, path, myInit);\n\n setUsuarios(usuariosGet);\n\n }, []);\n\n const iconoProgramacion = React.useCallback((data) => {\n var EstatusProg = data.data.EstatusProg;\n\n if (EstatusProg === 'NULA') {\n return (<div class=\"inline-block w-5 h-5 bg-red-500 rounded-full\"></div>)\n }\n else if (EstatusProg === 'PARCIAL') {\n return (<div class=\"inline-block w-5 h-5 bg-yellow-400 rounded-full\"></div>)\n }\n else if (EstatusProg === 'TOTAL') {\n return (<div class=\"inline-block w-5 h-5 bg-green-400 rounded-full\"></div>)\n }\n }, []);\n\n const iconoEntrega = React.useCallback((data) => {\n var PorcEntrega = data.data.PorcEntrega;\n\n if (!PorcEntrega)\n PorcEntrega = 0;\n\n if (PorcEntrega > 0 && PorcEntrega < 1) {\n return (<div class=\"inline-block text-xl\"><FontAwesomeIcon icon={faPlaneCircleExclamation} /></div>)\n }\n else if (PorcEntrega >= 1) {\n return (<div class=\"inline-block text-xl\"><FontAwesomeIcon icon={faPlaneCircleCheck} /></div>)\n }\n }, []);\n\n const iconoPago = React.useCallback((data) => {\n var ImporteTotal = parseFloat(data.data.ImporteTotal);\n var Anticipos = parseFloat(data.data.Anticipos);\n\n if (!ImporteTotal)\n ImporteTotal = 0;\n if (!Anticipos)\n Anticipos = 0;\n\n if (Anticipos > 0 && Anticipos < ImporteTotal) {\n return (<div class=\"inline-block text-xl\"><FontAwesomeIcon icon={faCoins} /></div>)\n }\n else if (Anticipos > 0 && Anticipos >= ImporteTotal) {\n return (<div class=\"inline-block text-xl\"><FontAwesomeIcon icon={faMoneyBill} /></div>)\n }\n }, []);\n\n const iconoFactura = React.useCallback((data) => {\n var SCSituacionFact = data.data.SCSituacionFact;\n\n if (!SCSituacionFact)\n SCSituacionFact = 'NO';\n\n if (SCSituacionFact === 'SI')\n return (<div class=\"inline-block text-xl\"><FontAwesomeIcon icon={faPrint} /></div>)\n }, []);\n\n const iconoMPR = React.useCallback((data) => {\n var MPR = data.data.MPR;\n\n if (!MPR)\n MPR = 'NO';\n\n if (MPR === 'SI')\n return (<div class=\"inline-block text-xl\"><FontAwesomeIcon icon={faRotateLeft} /></div>)\n }, []);\n\n const iconoSituacion = React.useCallback((data) => {\n var Situacion = data.data.Situacion;\n var Estatus = data.data.Estatus;\n\n if (!Situacion)\n Situacion = '';\n\n if (Situacion === 'Separado No Programable')\n return (<div class=\"inline-block text-xl\"><FontAwesomeIcon icon={faBoxOpenFull} /></div>)\n else if (Situacion === 'Facturable' || Estatus === 'Concluido')\n return (<div class=\"inline-block text-xl\"><FontAwesomeIcon icon={faBoxTaped} /></div>)\n }, []);\n\n const iconoEstatusGeneral = React.useCallback((data) => {\n var Estatus = data.data.Estatus;\n var Anticipos = parseFloat(data.data.Anticipos);\n var ImporteTotal = parseFloat(data.data.ImporteTotal);\n var PorcEntrega = parseFloat(data.data.PorcEntrega);\n var SCSituacionFact = data.data.SCSituacionFact;\n var MPR = data.data.MPR;\n\n if (!ImporteTotal)\n ImporteTotal = 0;\n if (!Anticipos)\n Anticipos = 0;\n if (!PorcEntrega)\n PorcEntrega = 0;\n if (!SCSituacionFact)\n SCSituacionFact = 'NO';\n if (!MPR)\n MPR = 'NO';\n\n if (Estatus === 'Cancelado') {\n return (<div class=\"inline-block text-xl\"><FontAwesomeIcon icon={faBan} /></div>);\n }\n else {\n if (Anticipos >= ImporteTotal && PorcEntrega >= 1 && SCSituacionFact === 'SI' && MPR === 'NO') {\n return (<div class=\"inline-block text-xl\"><FontAwesomeIcon icon={faBadgeCheck} /></div>);\n }\n else {\n return (<div class=\"inline-block text-xl\"><FontAwesomeIcon icon={faCircleExclamation} /></div>);\n }\n }\n }, []);\n\n const iconHelp = React.useCallback((data) => {\n var Icono = data.data.Icono;\n\n if (Icono === 'faPlaneCircleExclamation') {\n return (<div class=\"inline-block text-xl\"><FontAwesomeIcon icon={faPlaneCircleExclamation} /></div>);\n }\n else if (Icono === 'faPlaneCircleCheck') {\n return (<div class=\"inline-block text-xl\"><FontAwesomeIcon icon={faPlaneCircleCheck} /></div>);\n }\n else if (Icono === 'faCoins') {\n return (<div class=\"inline-block text-xl\"><FontAwesomeIcon icon={faCoins} /></div>);\n }\n else if (Icono === 'faMoneyBill') {\n return (<div class=\"inline-block text-xl\"><FontAwesomeIcon icon={faMoneyBill} /></div>);\n }\n else if (Icono === 'faBadgeCheck') {\n return (<div class=\"inline-block text-xl\"><FontAwesomeIcon icon={faBadgeCheck} /></div>);\n }\n else if (Icono === 'faCircleExclamation') {\n return (<div class=\"inline-block text-xl\"><FontAwesomeIcon icon={faCircleExclamation} /></div>);\n }\n else if (Icono === 'faBan') {\n return (<div class=\"inline-block text-xl\"><FontAwesomeIcon icon={faBan} /></div>);\n }\n else if (Icono === 'faPrint') {\n return (<div class=\"inline-block text-xl\"><FontAwesomeIcon icon={faPrint} /></div>);\n }\n else if (Icono === 'faRotateLeft') {\n return (<div class=\"inline-block text-xl\"><FontAwesomeIcon icon={faRotateLeft} /></div>);\n }\n else if (Icono === 'faBoxTaped') {\n return (<div class=\"inline-block text-xl\"><FontAwesomeIcon icon={faBoxTaped} /></div>);\n }\n else if (Icono === 'faBoxOpenFull') {\n return (<div class=\"inline-block text-xl\"><FontAwesomeIcon icon={faBoxOpenFull} /></div>);\n }\n else if (Icono === 'programacionNula') {\n return (<div class=\"inline-block w-5 h-5 bg-red-500 rounded-full\"></div>)\n }\n else if (Icono === 'programacionParcial') {\n return (<div class=\"inline-block w-5 h-5 bg-yellow-400 rounded-full\"></div>)\n }\n else if (Icono === 'programacionTotal') {\n return (<div class=\"inline-block w-5 h-5 bg-green-400 rounded-full\"></div>)\n }\n }, []);\n\n useEffect(() => {\n window.addEventListener('popstate', (e) => {\n var hash;\n\n try {\n hash = e.target.location.hash;\n }\n catch (e) {\n hash = '';\n }\n\n if (hash === '#/SalesOrder') {\n history.push('/SalesOrder');\n\n window.location.reload();\n }\n });\n\n async function initialize() {\n setVisibleLoadPanel(true);\n\n await getFiscalRegimen();\n\n await getUsuario();\n\n await getAgente();\n\n await getListaPrecios();\n\n await getConceptos();\n\n await getCondiciones();\n\n setVisibleLoadPanel(false);\n }\n\n initialize();\n\n //En caso de solicitar un ID especifico, redireccionamos a ese ID\n if (!props.match.isExact) {\n var urlID = props.location.pathname.replace('/SalesOrder/', '');\n\n if (urlID === 'undefined')\n urlID = undefined;\n\n if (urlID)\n editButton(urlID);\n else\n newButton();\n }\n\n // eslint-disable-next-line\n }, []);\n\n const overrideOnValueChanged = React.useCallback((e) => {\n //Hacemos la data persistente en cuanto el usuario escriba en el campo\n // if (e.parentType === \"dataRow\") {\n // e.editorOptions.valueChangeEvent = \"input\";\n // }\n }, []);\n\n const onHidingToast = React.useCallback(() => {\n setVisibleToast(false);\n }, []);\n\n const onFieldDatosGeneralesChanged = React.useCallback(async (e) => {\n var dataField = e.dataField;\n var value = e.value;\n\n if (formDatosGeneralesRef.current) {\n var formDatosGenerales = formDatosGeneralesRef.current.instance();\n\n if (e.dataField === 'billingAddress.DFIguales') {\n setConDatosIguales(value);\n\n formDatosGenerales.updateData('billingAddress.RazonSocial1', undefined);\n formDatosGenerales.updateData('billingAddress.Telefonos1', undefined);\n formDatosGenerales.updateData('billingAddress.Direccion1', undefined);\n formDatosGenerales.updateData('billingAddress.CodigoPostal1', undefined);\n formDatosGenerales.updateData('billingAddress.ClaveColonia1', undefined);\n formDatosGenerales.updateData('billingAddress.ClaveMunicipio1', undefined);\n formDatosGenerales.updateData('billingAddress.ClaveLocalidad1', undefined);\n formDatosGenerales.updateData('billingAddress.ClaveEstado1', undefined);\n formDatosGenerales.updateData('billingAddress.ClavePais1', undefined);\n }\n else if (e.dataField === 'header.SCCapturaCliente') {\n setConCambiarCliente(value);\n\n formDatosGenerales.updateData('header.Cliente', undefined);\n formDatosGenerales.updateData('header.RFC', undefined);\n }\n else if (e.dataField === 'billingAddress.FiscalRegimen') {\n formDatosGenerales.updateData('billingAddress.SATCatUsoCFDI', undefined);\n\n\n if (e.value) {\n await getUsoCFDIValido(e.value, true);\n }\n }\n else if (e.dataField === 'shippingAddress.CodigoPostal') {\n formDatosGenerales.updateData('shippingAddress.ClaveColonia', undefined);\n\n if (e.value) {\n await getColonia(e.value, true);\n }\n }\n else if (e.dataField === 'billingAddress.CodigoPostal1') {\n formDatosGenerales.updateData('billingAddress.ClaveColonia1', undefined);\n\n if (e.value) {\n await getColonia1(e.value, true);\n }\n }\n else if (e.dataField === 'header.SCUsuarioAutorizaPrecios' || e.dataField === 'header.SCCodigoAutorizaPrecios') {\n var SCUsuarioAutorizaPrecios = salesOrderPayload.header.SCUsuarioAutorizaPrecios;\n var SCCodigoAutorizaPrecios = salesOrderPayload.header.SCCodigoAutorizaPrecios;\n\n if (SCUsuarioAutorizaPrecios && SCCodigoAutorizaPrecios)\n setConAutorizacionPrecio(true);\n else\n setConAutorizacionPrecio(false);\n }\n }\n }, [formDatosGeneralesRef, getColonia, getColonia1, getUsoCFDIValido, salesOrderPayload.header.SCCodigoAutorizaPrecios, salesOrderPayload.header.SCUsuarioAutorizaPrecios]);\n\n const datosFacturacionValidationCallback = React.useCallback((e) => {\n if (!conDatosIguales) {\n if (e.value !== '' && e.value && e.value !== null) {\n return true;\n }\n else {\n return false;\n }\n }\n else {\n return true;\n }\n }, [conDatosIguales]);\n\n const onEditorArticulosPreparing = React.useCallback((e) => {\n if (e.parentType === \"dataRow\") {\n if (e.dataField === \"Articulo\") {\n\n e.editorOptions.displayExpr = \"name\";\n e.editorOptions.valueExpr = \"value\";\n e.editorOptions.searchEnabled = true;\n e.editorOptions.showClearButton = true;\n e.editorOptions.acceptCustomValue = false;\n e.editorOptions.clearButtonText = 'Cerrar';\n e.editorOptions.noDataText = 'No se encontraron resultados';\n\n const defaultValueChangeHandler = e.editorOptions.onValueChanged;\n // var ListaPreciosEsp = salesOrderPayload.header.ListaPreciosEsp; \n\n e.editorOptions.onValueChanged = function (ev) {\n let selectedItem = ev.component.option(\"selectedItem\");\n e.setValue(selectedItem);\n };\n }\n if (e.dataField === \"Cantidad\") {\n e.editorOptions.min = 1;\n }\n if (e.dataField === \"Precio\") {\n e.editorOptions.min = 0.0;\n }\n }\n }, []);\n\n const onEditingStartArticulos = React.useCallback((e) => {\n var ListaPreciosEsp = salesOrderPayload.header.ListaPreciosEsp;\n\n if (!ListaPreciosEsp) {\n setVisibleToast(true);\n setMessageToast('Falta especificar la Lista de Precios del Pedido')\n setTypeToast('error');\n e.cancel = true;\n }\n }, [salesOrderPayload.header.ListaPreciosEsp]);\n\n const setCellValueArticulo = React.useCallback((rowData, value) => {\n rowData.Articulo = value.value;\n rowData.ArtDescripcion = value.name;\n rowData.Cantidad = 1;\n rowData.Precio = value.Price;\n rowData.Importe = value.Price;\n }, []);\n\n const setCellValueCantidad = React.useCallback((rowData, value, currentRowData) => {\n var Cantidad = parseFloat(value);\n var Precio = parseFloat(currentRowData.Precio);\n\n rowData.Importe = parseFloat((Cantidad * Precio).toFixed(2));\n rowData.Cantidad = parseFloat(Cantidad);\n }, []);\n\n const setCellValuePrecio = React.useCallback((rowData, value, currentRowData) => {\n var Cantidad = parseFloat(currentRowData.Cantidad);\n var Precio = parseFloat(value);\n\n rowData.Importe = parseFloat((Cantidad * Precio).toFixed(2));\n rowData.Precio = parseFloat(Precio);\n }, []);\n\n const hidePopupInfo = React.useCallback(() => {\n setPopupVisible(false);\n }, []);\n\n const helpButton = React.useCallback(() => {\n if (gridIconoAyudaRef.current) {\n var gridIconoAyuda = gridIconoAyudaRef.current.instance();\n\n gridIconoAyuda.refresh();\n }\n\n setPopupVisible(true);\n }, [gridIconoAyudaRef]);\n\n function onExporting(e) {\n const workbook = new Workbook();\n const worksheet = workbook.addWorksheet('Datos');\n\n exportDataGrid({\n component: e.component,\n worksheet,\n autoFilterEnabled: true,\n }).then(() => {\n workbook.xlsx.writeBuffer().then((buffer) => {\n saveAs(new Blob([buffer], { type: 'application/octet-stream' }), 'Datos.xlsx');\n });\n });\n e.cancel = true;\n };\n\n return (\n <div>\n {isDetail === false ? (\n <div class=\"bg-gray-200 m-2\">\n <h1 class=\"font-sans inline-block text-xl font-bold text-gray-700 leading-8 align-top mb-1\"><FontAwesomeIcon icon={faList} size=\"lg\" /> Pedidos</h1>\n </div>\n ) :\n (\n <div class=\"bg-gray-200 m-2\">\n <h1 class=\"font-sans inline-block text-xl font-bold text-gray-700 leading-8 align-top mb-1\"><FontAwesomeIcon icon={faHandshake} size=\"xl\" /> {(salesOrderPayload.header ? salesOrderPayload.header.Movimiento : 'Pedido')}</h1>\n <TransactionStatus {...props} Estatus={salesOrderPayload.header.Estatus} />\n </div>\n )}\n\n <LoadPanel\n shadingColor=\"rgba(0,0,0,0.4)\"\n visible={visibleLoadPanel}\n showIndicator={true}\n message=\"Por favor espere...\"\n shading={true}\n showPane={true}\n hideOnOutsideClick={false}\n />\n\n <Toast\n visible={visibleToast}\n message={messageToast}\n type={typeToast}\n onHiding={onHidingToast}\n displayTime={5000}\n width={'auto'}\n position={{\n my: 'top center',\n at: 'top center',\n of: window,\n offset: '0 130'\n }}\n />\n <Popup\n visible={popupVisible}\n onHiding={hidePopupInfo}\n dragEnabled={true}\n hideOnOutsideClick={true}\n showCloseButton={true}\n showTitle={true}\n title={popupTitle}\n width={610}\n height={600}\n >\n <ScrollView\n scrollByContent={true}\n showScrollbar=\"always\"\n >\n <div>\n <DataGrid\n id=\"gridAyuda\"\n columnsAutoWidth={false}\n dataSource={storeAyuda}\n allowColumnReordering={false}\n allowColumnResizing={true}\n columnResizingMode={\"widget\"}\n showBorders={true}\n rowAlternationEnabled={true}\n showRowLines={true}\n showColumnLines={true}\n ref={gridIconoAyudaRef}\n >\n <Paging defaultPageSize={50} />\n <Grouping allowCollapsing={true} />\n <Column dataField=\"Tipo\" caption=\"Tipo\" width={100} dataType=\"string\" groupIndex={1} />\n <Column caption=\"Ícono\" alignment=\"center\" width={100} cellRender={iconHelp} />\n <Column dataField=\"Descripcion\" dataType=\"string\" width={400} caption=\"Descripción\" />\n </DataGrid>\n </div>\n </ScrollView>\n </Popup>\n\n <div class=\"bg-gray-200 m-2\">\n {isDetail === false ? (\n <div class=\"bg-white p-3 shadow-xl\">\n\n {permissionLevel === 'Editar' ?\n (\n <div>\n <Link to=\"/SalesOrder/undefined\">\n <button class=\"mb-2 bg-green-500 hover:bg-green-700 text-white font-bold py-2 px-4 rounded\" onClick={() => newButton()}><FontAwesomeIcon icon={faFileAlt} /> Nuevo Pedido</button>\n </Link>\n\n <button onClick={refreshButton} type=\"submit\" class=\"ml-4 mb-4 bg-blue-500 hover:bg-blue-700 text-white font-bold py-2 px-4 rounded\">\n <FontAwesomeIcon icon={faArrowsRotate} /> Actualizar\n </button>\n\n <button onClick={helpButton} type=\"submit\" class=\"ml-4 mb-4 bg-blue-500 hover:bg-blue-700 text-white font-bold py-2 px-4 rounded\">\n <FontAwesomeIcon icon={faCircleInfo} /> Información\n </button>\n </div>\n ) :\n (\n <div>\n <button onClick={refreshButton} type=\"submit\" class=\"mb-4 bg-blue-500 hover:bg-blue-700 text-white font-bold py-2 px-4 rounded\">\n <FontAwesomeIcon icon={faArrowsRotate} /> Actualizar\n </button>\n\n <button onClick={helpButton} type=\"submit\" class=\"ml-4 mb-4 bg-blue-500 hover:bg-blue-700 text-white font-bold py-2 px-4 rounded\">\n <FontAwesomeIcon icon={faCircleInfo} /> Información\n </button>\n </div>\n )}\n\n <div className=\"options mb-2\">\n <div className=\"option\">\n <CheckBox text=\"Expandir todos los grupos\"\n value={autoExpandAll}\n onValueChanged={onAutoExpandAllChanged}>\n </CheckBox>\n </div>\n </div>\n\n <DataGrid\n height={800}\n id=\"gridContainer\"\n columnsAutoWidth={true}\n filterBuilder={filterBuilder}\n dataSource={store}\n defaultFilterValue={filterValue}\n allowColumnReordering={true}\n allowColumnResizing={true}\n columnResizingMode={\"widget\"}\n showBorders={true}\n rowAlternationEnabled={true}\n showRowLines={true}\n showColumnLines={true}\n remoteOperations={{ filtering: true }}\n ref={gridTableroRef}\n onExporting={onExporting}\n >\n <Scrolling rowRenderingMode='virtual'></Scrolling>\n <Paging defaultPageSize={10} />\n <Pager\n visible={true}\n allowedPageSizes={allowedPageSizes}\n displayMode='compact'\n showPageSizeSelector={true}\n showInfo={true}\n showNavigationButtons={true}\n />\n <FilterRow visible={true} />\n <FilterPanel visible={true} />\n <FilterBuilderPopup position={filterBuilderPopupPosition} />\n\n <HeaderFilter visible={true} />\n\n <GroupPanel visible={true} />\n <SearchPanel visible={true} />\n <ColumnChooser\n enabled={true}\n mode='select'\n >\n <ColumnChooserSearch\n enabled={true}\n />\n\n <ColumnChooserSelection\n allowSelectAll={true}\n selectByClick={true}\n recursive={true}\n />\n </ColumnChooser>\n <Grouping autoExpandAll={autoExpandAll} />\n <StateStoring enabled={true} type=\"localStorage\" storageKey=\"gridContainerSalesOrder\" />\n <Export enabled={true} />\n\n <Column caption=\"\" alignment=\"center\" width={100} cellRender={editSalesOrder} />\n\n <Column caption=\"Estatus General\" alignment=\"center\" width={130} cellRender={iconoEstatusGeneral} />\n <Column caption=\"Situación Pedido\" alignment=\"center\" width={130} cellRender={iconoSituacion} />\n <Column caption=\"Programación\" alignment=\"center\" width={110} cellRender={iconoProgramacion} />\n <Column caption=\"Entrega\" alignment=\"center\" width={100} cellRender={iconoEntrega} />\n <Column caption=\"Pago\" alignment=\"center\" width={100} cellRender={iconoPago} />\n <Column caption=\"Factura\" alignment=\"center\" width={100} cellRender={iconoFactura} />\n <Column caption=\"M. P. R.\" alignment=\"center\" width={100} cellRender={iconoMPR} />\n\n <Column dataField=\"MovID\" dataType=\"string\" width={110} caption=\"Folio\" />\n <Column dataField=\"FechaEmision\" caption=\"Fecha Emisión\" dataType=\"date\" width={130} />\n <Column dataField=\"Estatus\" dataType=\"string\" width={120} />\n <Column dataField=\"NombreCliente\" caption=\"Nombre Cliente\" dataType=\"string\" width={250} />\n <Column dataField=\"Plaza\" caption=\"Plaza\" dataType=\"string\" width={150} visible={false} />\n\n <Column dataField=\"ID\" dataType=\"number\" width={150} visible={false} />\n <Column dataField=\"Mov\" dataType=\"string\" width={190} caption=\"Tipo Movimiento\" visible={false} />\n <Column dataField=\"Movimiento\" dataType=\"string\" width={190} visible={false} />\n <Column dataField=\"Situacion\" dataType=\"string\" width={190} caption=\"Situación\" visible={false} />\n <Column dataField=\"Importe\" caption=\"Importe\" dataType=\"number\" width={150} visible={false}>\n <Format\n type=\"currency\"\n precision={2}\n />\n </Column>\n <Column dataField=\"Impuestos\" caption=\"Impuestos\" dataType=\"number\" width={150} visible={false}>\n <Format\n type=\"currency\"\n precision={2}\n />\n </Column>\n <Column dataField=\"ImporteTotal\" caption=\"Importe Total\" dataType=\"number\" width={150}>\n <Format\n type=\"currency\"\n precision={2}\n />\n </Column>\n <Column dataField=\"SCSituacionFact\" dataType=\"string\" width={190} caption=\"Situación Facturación\" visible={false} />\n <Column dataField=\"SCTipoPedido\" dataType=\"string\" width={190} caption=\"Tipo de Pedido\" visible={false} />\n <Column dataField=\"SCSituacionMPR\" dataType=\"string\" width={190} caption=\"Situación MPR\" visible={false} />\n <Column dataField=\"folioeCommerce\" dataType=\"string\" width={190} caption=\"Folio eCommerce\" visible={false} />\n <Column dataField=\"cuponeCommerce\" dataType=\"string\" width={190} caption=\"Cupón eCommerce\" visible={false} />\n <Column dataField=\"importeTotaleCommerce\" dataType=\"string\" width={190} caption=\"Importe Total eCommerce\" visible={false}>\n <Format\n type=\"currency\"\n precision={2}\n />\n </Column>\n <Column dataField=\"eCommerceFechaCreacion\" dataType=\"datetime\" width={190} caption=\"eCommerce Fecha Creación\" visible={false} />\n <Column dataField=\"PlazaEntrega\" dataType=\"string\" width={250} caption=\"Plaza Entrega\" visible={false} />\n <Column dataField=\"Almacen\" dataType=\"string\" width={190} caption=\"Almacén\" visible={false} />\n <Column dataField=\"NombreAlmacen\" dataType=\"string\" width={190} caption=\"Nombre Almacén\" visible={false} />\n <Column dataField=\"Agente\" dataType=\"string\" width={190} visible={false} />\n <Column dataField=\"NombreAgente\" dataType=\"string\" width={190} visible={false} />\n <Column dataField=\"Cliente\" dataType=\"string\" width={190} visible={false} />\n <Column dataField=\"Sucursal\" dataType=\"number\" width={150} visible={false} />\n <Column dataField=\"NombreSucursal\" dataType=\"string\" width={190} visible={false} />\n <Column dataField=\"Usuario\" dataType=\"string\" width={190} visible={false} />\n <Column dataField=\"NombreUsuario\" dataType=\"string\" width={190} visible={false} />\n <Column dataField=\"Origen\" dataType=\"string\" width={190} visible={false} />\n <Column dataField=\"EstatusProg\" width={190} dataType=\"string\" caption=\"Estatus Programación\" visible={false} />\n <Column dataField=\"TipoProgramacion\" width={190} dataType=\"string\" caption=\"Tipo Programación\" visible={false} />\n <Column dataField=\"Observaciones\" width={190} dataType=\"string\" caption=\"Observaciones\" visible={false} />\n <Column dataField=\"PorcEntrega\" caption=\"% Entrega\" dataType=\"number\" width={150} visible={false} >\n <Format\n type=\"percent\"\n />\n </Column>\n <Column dataField=\"Anticipos\" dataType=\"number\" width={150} visible={false}>\n <Format\n type=\"currency\"\n precision={2}\n />\n </Column>\n <Column dataField=\"MPR\" dataType=\"string\" width={190} caption=\"MPR\" visible={false} />\n\n <Column dataField=\"PedidoCerrado\" dataType=\"boolean\" width={190} caption=\"Pedido Cerrado\" visible={false} />\n <Column dataField=\"CerradoFecha\" dataType=\"date\" width={190} caption=\"Pedido Cerrado Fecha\" visible={false} />\n <Column dataField=\"CerradoUsuarioWeb\" dataType=\"string\" width={190} caption=\"Pedido Cerrado Usuario\" visible={false} />\n <Column dataField=\"Saldo\" caption=\"Saldo\" dataType=\"number\" width={150} visible={false}>\n <Format\n type=\"currency\"\n precision={2}\n />\n </Column>\n <Summary>\n <GroupItem\n column=\"Importe\"\n summaryType=\"sum\"\n valueFormat=\"$,##0.##\"\n displayFormat=\"Importe {0}\"\n showInGroupFooter={false}>\n </GroupItem>\n <GroupItem\n column=\"Impuestos\"\n summaryType=\"sum\"\n valueFormat=\"$,##0.##\"\n displayFormat=\"Impuestos {0}\"\n showInGroupFooter={false}>\n </GroupItem>\n <GroupItem\n column=\"ImporteTotal\"\n summaryType=\"sum\"\n valueFormat=\"$,##0.##\"\n displayFormat=\"Importe Total {0}\"\n showInGroupFooter={false}>\n </GroupItem>\n <GroupItem\n column=\"Saldo\"\n summaryType=\"sum\"\n valueFormat=\"$,##0.##\"\n displayFormat=\"Saldo {0}\"\n showInGroupFooter={false}>\n </GroupItem>\n <TotalItem\n column=\"Importe\"\n summaryType=\"sum\"\n valueFormat=\"$,##0.##\"\n displayFormat=\"Importe {0}\"\n showInColumn=\"Importe\">\n </TotalItem>\n <TotalItem\n column=\"Impuestos\"\n summaryType=\"sum\"\n valueFormat=\"$,##0.##\"\n displayFormat=\"Impuestos {0}\"\n showInColumn=\"Impuestos\">\n </TotalItem>\n <TotalItem\n column=\"ImporteTotal\"\n summaryType=\"sum\"\n valueFormat=\"$,##0.##\"\n displayFormat=\"Importe Total {0}\"\n showInColumn=\"ImporteTotal\">\n </TotalItem>\n <TotalItem\n column=\"Saldo\"\n summaryType=\"sum\"\n valueFormat=\"$,##0.##\"\n displayFormat=\"Saldo {0}\"\n showInColumn=\"Saldo\">\n </TotalItem>\n </Summary>\n </DataGrid>\n </div>\n ) : (<div />)}\n <Route exact path=\"/SalesOrder/:ID\" render={({ match }) => {\n return (\n <div class=\"bg-gray-200\">\n {isDetail.toString() === 'true' ?\n (\n <div>\n <Link to=\"/SalesOrder\">\n <button onClick={cancelEditButton} type=\"submit\" class=\"mb-4 bg-red-500 hover:bg-red-700 text-white font-bold py-2 px-4 rounded\">\n <FontAwesomeIcon icon={faArrowRotateLeft} /> Regresar\n </button>\n </Link>\n\n\n {activateCSF.toString() === 'true' ?\n (\n <button onClick={csfButton} type=\"submit\" class=\"ml-4 mb-4 bg-blue-500 hover:bg-blue-700 text-white font-bold py-2 px-4 rounded\">\n <FontAwesomeIcon icon={faQrcode} /> Leer CSF\n </button>\n ) : (\n <div class=\"inline-block\"></div>\n )}\n\n\n {activateSaveButton.toString() === 'true' ?\n (\n <button onClick={saveButton} type=\"submit\" class=\"ml-4 mb-4 bg-blue-500 hover:bg-blue-700 text-white font-bold py-2 px-4 rounded\">\n <FontAwesomeIcon icon={faSave} /> Guardar Cambios\n </button>\n ) : (\n <div class=\"inline-block\"></div>\n )}\n\n {activateSeparado.toString() === 'true' ?\n (\n <button onClick={reservedButton} type=\"submit\" class=\"ml-4 mb-4 bg-blue-500 hover:bg-blue-700 text-white font-bold py-2 px-4 rounded\">\n <FontAwesomeIcon icon={faBoxOpenFullButton} /> Separado\n </button>\n ) : (\n <div class=\"inline-block\"></div>\n )}\n\n {activateFacturable.toString() === 'true' ?\n (\n <button onClick={billableButton} type=\"submit\" class=\"ml-4 mb-4 bg-blue-500 hover:bg-blue-700 text-white font-bold py-2 px-4 rounded\">\n <FontAwesomeIcon icon={faBoxTapedButton} /> Facturable\n </button>\n ) : (\n <div class=\"inline-block\"></div>\n )}\n\n {activateCustomerPayment.toString() === 'true' ?\n (\n <button onClick={customerPaymentButton} type=\"submit\" class=\"ml-4 mb-4 bg-blue-500 hover:bg-blue-700 text-white font-bold py-2 px-4 rounded\">\n <FontAwesomeIcon icon={faPiggyBank} /> Anticipo Saldo\n </button>\n ) : (\n <div class=\"inline-block\"></div>\n )}\n\n {activateDirectDelivery.toString() === 'true' ?\n (\n <button onClick={directDeliveryButton} type=\"submit\" class=\"ml-4 mb-4 bg-blue-500 hover:bg-blue-700 text-white font-bold py-2 px-4 rounded\">\n <FontAwesomeIcon icon={faPersonDolly} /> Entrega Directa\n </button>\n ) : (\n <div class=\"inline-block\"></div>\n )}\n\n {activateDeliveryRequest.toString() === 'true' ?\n (\n <button onClick={deliveryRequestButton} type=\"submit\" class=\"ml-4 mb-4 bg-blue-500 hover:bg-blue-700 text-white font-bold py-2 px-4 rounded\">\n <FontAwesomeIcon icon={faTruckFast} /> Solicitud Envío\n </button>\n ) : (\n <div class=\"inline-block\"></div>\n )}\n\n {activateTransferOrder.toString() === 'true' ?\n (\n <button onClick={transferOrderButton} type=\"submit\" class=\"ml-4 mb-4 bg-blue-500 hover:bg-blue-700 text-white font-bold py-2 px-4 rounded\">\n <FontAwesomeIcon icon={faRightLeft} /> Solicitud Traspaso\n </button>\n ) : (\n <div class=\"inline-block\"></div>\n )}\n\n {activateDirectReturn.toString() === 'true' ?\n (\n <button onClick={directReturnButton} type=\"submit\" class=\"ml-4 mb-4 bg-blue-500 hover:bg-blue-700 text-white font-bold py-2 px-4 rounded\">\n <FontAwesomeIcon icon={faPersonCarryBox} /> Devolución Directa\n </button>\n ) : (\n <div class=\"inline-block\"></div>\n )}\n\n {activateReturnRequest.toString() === 'true' ?\n (\n <button onClick={returnRequestButton} type=\"submit\" class=\"ml-4 mb-4 bg-blue-500 hover:bg-blue-700 text-white font-bold py-2 px-4 rounded\">\n <FontAwesomeIcon icon={faHandHoldingBox} /> Solicitud Devolución\n </button>\n ) : (\n <div class=\"inline-block\"></div>\n )}\n\n {activateConfirmButton.toString() === 'true' && id ?\n (\n <button onClick={confirmButton} type=\"submit\" class=\"ml-4 mb-4 bg-green-500 hover:bg-green-700 text-white font-bold py-2 px-4 rounded\">\n <FontAwesomeIcon icon={faPlay} /> Facturar\n </button>\n ) : (\n <div class=\"inline-block\"></div>\n )}\n\n {activateDeleteButton.toString() === 'true' && id ?\n (\n <button onClick={deleteButton} type=\"submit\" class=\"ml-4 mb-4 bg-red-500 hover:bg-red-700 text-white font-bold py-2 px-4 rounded\">\n <FontAwesomeIcon icon={faTrash} /> Eliminar\n </button>\n ) :\n (\n <div class=\"inline-block\"></div>\n )}\n\n {activateCancelButton.toString() === 'true' && id ?\n (\n <button onClick={voidButton} type=\"submit\" class=\"ml-4 mb-4 bg-red-500 hover:bg-red-700 text-white font-bold py-2 px-4 rounded\">\n <FontAwesomeIcon icon={faWindowClose} /> Cancelar\n </button>\n ) :\n (\n <div class=\"inline-block\"></div>\n )}\n\n {activatePrintInvoice.toString() === 'true' ?\n (\n <button onClick={printInvoiceButton} type=\"submit\" class=\"ml-4 mb-4 bg-gray-500 hover:bg-gray-700 text-white font-bold py-2 px-4 rounded\">\n <FontAwesomeIcon icon={faPrintButton} /> Imprimir Factura\n </button>\n ) : (\n <div class=\"inline-block\"></div>\n )}\n\n {activatePDFButton.toString() === 'true' && id ?\n (\n <button onClick={printButton} type=\"submit\" class=\"ml-4 mb-4 bg-gray-500 hover:bg-gray-700 text-white font-bold py-2 px-4 rounded\">\n <FontAwesomeIcon icon={faFilePdf} /> PDF\n </button>\n ) :\n (\n <div class=\"inline-block\"></div>\n )}\n\n <div class=\"bg-white p-4 shadow-xl\">\n <Form\n id=\"formTransaccion\"\n labelMode={'outside'}\n formData={salesOrderPayload}\n readOnly={!activateUpdateForm}\n showColonAfterLabel={false}\n labelLocation={'top'}\n onFieldDataChanged={onFieldDatosGeneralesChanged}\n ref={formDatosGeneralesRef}\n >\n <TabbedItem>\n <TabPanelOptions deferRendering={false} showNavButtons={true} />\n <Tab title=\"Datos Generales\" colCount={2}>\n <GroupItem caption=\"General\" colCount={2}>\n <Item cssClass=\"boldText\" colSpan={2} dataField=\"header.Movimiento\" editorOptions={movimientoEditorOptions} >\n <Label text={\"Movimiento\"} />\n </Item>\n <Item dataField=\"header.FechaEmision\" editorType=\"dxDateBox\" editorOptions={fechaEmisionEditorOptions}>\n <Label text={\"Fecha Emisión\"} />\n </Item>\n <Item dataField=\"header.SCTipoPedido\" editorType=\"dxSelectBox\" editorOptions={tipoPedidoEditorOptions} >\n <RequiredRule message=\"Tipo de Pedido es requerido\" />\n <Label text=\"Tipo de Pedido\" />\n </Item>\n <Item dataField=\"header.Concepto\" editorType=\"dxSelectBox\" editorOptions={conceptosEditorOptions} colSpan={2}>\n <Label text={\"Fuente\"} />\n </Item>\n <Item dataField=\"header.Condicion\" editorType=\"dxSelectBox\" editorOptions={condicionEditorOptions} >\n <RequiredRule message=\"Condiciones es requerido\" />\n <Label text={\"Condiciones\"} />\n </Item>\n <Item dataField=\"header.ListaPreciosEsp\" editorType=\"dxSelectBox\" editorOptions={listaPreciosEditorOptions} >\n <RequiredRule message=\"Lista de Precios es requerido\" />\n <Label text={\"Lista de Precios\"} />\n </Item>\n <Item dataField=\"header.Agente\" editorType=\"dxSelectBox\" editorOptions={agenteEditorOptions} colSpan={2} >\n <RequiredRule message=\"Vendedor es requerido\" />\n <Label text={\"Vendedor\"} />\n </Item>\n <Item dataField=\"header.SCPedidoPagoUnico\" editorType=\"dxCheckBox\" editorOptions={puePPDEditorOptions}>\n <Label text={\"Pagado en una exhibición\"} />\n </Item>\n </GroupItem>\n <GroupItem caption=\"Cliente\" colCount={2}>\n <Item dataField=\"header.SCCapturaCliente\" editorType=\"dxCheckBox\" colSpan={2} editorOptions={cambiarClienteEditorOptions}>\n <Label text={\"Cambiar Cliente\"} />\n </Item>\n <Item dataField=\"header.Cliente\" colSpan={2} editorType=\"dxLookup\" editorOptions={clienteEditorOptions} >\n <Label text={\"Cliente\"} />\n </Item>\n <Item dataField=\"header.RFC\" editorOptions={rfcEditorOptions}>\n <Label text={\"RFC\"} />\n </Item>\n </GroupItem>\n <GroupItem caption=\"Artículos\" colSpan={2}>\n <DataGrid\n id=\"gridArticulos\"\n ref={gridArticulosRef}\n columnsAutoWidth={true}\n dataSource={salesOrderPayload.detail}\n showBorders={true}\n showColumnLines={true}\n showRowLines={true}\n rowAlternationEnabled={true}\n allowColumnResizing={true}\n columnResizingMode=\"widget\"\n allowColumnReordering={false}\n repaintChangesOnly={true}\n onEditorPreparing={onEditorArticulosPreparing}\n onEditingStart={onEditingStartArticulos}\n >\n <Scrolling\n mode='virtual'\n />\n <Editing\n mode=\"cell\"\n newRowPosition=\"last\"\n allowUpdating={activateUpdateGrid}\n allowAdding={activateUpdateGrid}\n allowDeleting={activateUpdateGrid}\n />\n\n <Sorting mode=\"none\" />\n\n <Column dataField=\"Renglon\" width={190} visible={false} />\n <Column dataField=\"Articulo\" caption=\"Artículo\" width={600} setCellValue={setCellValueArticulo} calculateDisplayValue=\"ArtDescripcion\" >\n <Lookup\n dataSource={storeArticulo}\n displayExpr=\"name\"\n valueExpr=\"value\"\n searchEnabled={true}\n showClearButton={true}\n acceptCustomValue={false}\n clearButtonText='Cerrar'\n noDataText='No se encontraron resultados'\n />\n <RequiredRule message=\"Artículo es requerido\" />\n </Column>\n <Column dataField=\"ArtDescripcion\" width={400} allowEditing={false} visible={false} />\n <Column dataField=\"Cantidad\" width={80} setCellValue={setCellValueCantidad} dataType=\"number\" editorOptions={cantidadEditorOptions}>\n <RequiredRule message=\"Cantidad es requerida\" />\n </Column>\n <Column dataField=\"Precio\" width={110} allowEditing={conAutorizacionPrecio} setCellValue={setCellValuePrecio} dataType=\"number\">\n <RequiredRule message=\"Precio es requerido\" />\n <Format\n type=\"currency\"\n precision={2}\n\n />\n </Column>\n <Column dataField=\"Importe\" width={150} allowEditing={false} dataType=\"number\">\n <Format\n type=\"currency\"\n precision={2}\n />\n </Column>\n <Summary>\n <TotalItem\n column=\"Importe\"\n summaryType=\"sum\"\n valueFormat=\"$,##0.##\"\n displayFormat=\"Total {0}\"\n showInColumn=\"Importe\"\n />\n </Summary>\n </DataGrid>\n </GroupItem>\n </Tab>\n <Tab title=\"Datos de Envío\">\n <Item dataField=\"shippingAddress.Nombre\" editorOptions={nombreEditorOptions} >\n <Label text={\"Nombre\"} />\n <RequiredRule message=\"Nombre es requerido\" />\n </Item>\n <Item dataField=\"shippingAddress.Telefono\" editorOptions={telefonoEditorOptions} >\n <Label text={\"Teléfono\"} />\n <RequiredRule message=\"Teléfono es requerido\" />\n </Item>\n <Item dataField=\"shippingAddress.Direccion\" editorOptions={direccionEditorOptions} >\n <Label text={\"Dirección\"} />\n <RequiredRule message=\"Dirección es requerida\" />\n </Item>\n <Item dataField=\"shippingAddress.EntreCalles\" editorOptions={entreCallesEditorOptions} >\n <Label text={\"Entre Calles\"} />\n <RequiredRule message=\"Entre Calles es requerida\" />\n </Item>\n <Item dataField=\"shippingAddress.CodigoPostal\" editorType=\"dxLookup\" editorOptions={codigoPostalEditorOptions} >\n <Label text={\"Código Postal\"} />\n <RequiredRule message=\"Código Postal es requerido\" />\n </Item>\n <Item dataField=\"shippingAddress.ClaveColonia\" editorType=\"dxSelectBox\" editorOptions={claveColoniaEditorOptions} >\n <Label text={\"Colonia\"} />\n <RequiredRule message=\"Colonia es requerida\" />\n </Item>\n <Item dataField=\"shippingAddress.ClaveMunicipio\" editorOptions={claveMunicipioEditorOptions} >\n <Label text={\"Municipio\"} />\n </Item>\n <Item dataField=\"shippingAddress.ClaveLocalidad\" editorOptions={claveLocalidadEditorOptions} >\n <Label text={\"Localidad\"} />\n </Item>\n <Item dataField=\"shippingAddress.ClaveEstado\" editorOptions={claveEstadoEditorOptions} >\n <Label text={\"Estado\"} />\n </Item>\n <Item dataField=\"shippingAddress.ClavePais\" editorOptions={clavePaisEditorOptions} >\n <Label text={\"País\"} />\n </Item>\n <Item dataField=\"shippingAddress.eMail\" editorOptions={emailEditorOptions} >\n <Label text={\"eMail\"} />\n <EmailRule message=\"eMail incorrecto\" />\n <RequiredRule message=\"eMail es requerido\" />\n </Item>\n </Tab>\n <Tab title=\"Datos de Facturación\">\n <Item dataField=\"billingAddress.DFIguales\" editorType=\"dxCheckBox\">\n <Label text={\"Datos Iguales\"} />\n </Item>\n <Item dataField=\"billingAddress.RFC1\" editorOptions={rfc1EditorOptions}>\n <Label text={\"RFC\"} />\n <RequiredRule message=\"RFC es requerido\" />\n </Item>\n <Item dataField=\"billingAddress.RazonSocial1\" editorOptions={razonSocial1EditorOptions}>\n <Label text={\"Razón Social\"} />\n <CustomRule type=\"custom\" validationCallback={datosFacturacionValidationCallback} message=\"Razón Social es requerida\" />\n </Item>\n <Item dataField=\"billingAddress.Telefonos1\" editorOptions={telefonos1EditorOptions}>\n <Label text={\"Teléfono\"} />\n <CustomRule type=\"custom\" validationCallback={datosFacturacionValidationCallback} message=\"Teléfono es requerido\" />\n </Item>\n <Item dataField=\"billingAddress.Direccion1\" editorOptions={direccion1EditorOptions}>\n <Label text={\"Dirección\"} />\n <CustomRule type=\"custom\" validationCallback={datosFacturacionValidationCallback} message=\"Dirección es requerido\" />\n </Item>\n <Item dataField=\"billingAddress.CodigoPostal1\" editorType=\"dxLookup\" editorOptions={codigoPostal1EditorOptions} >\n <Label text={\"Código Postal\"} />\n <CustomRule type=\"custom\" validationCallback={datosFacturacionValidationCallback} message=\"Código Postal es requerido\" />\n </Item>\n <Item dataField=\"billingAddress.ClaveColonia1\" editorType=\"dxSelectBox\" editorOptions={claveColonia1EditorOptions}>\n <Label text={\"Colonia\"} />\n <CustomRule type=\"custom\" validationCallback={datosFacturacionValidationCallback} message=\"Colonia es requerida\" />\n </Item>\n <Item dataField=\"billingAddress.ClaveMunicipio1\" editorOptions={claveMunicipio1EditorOptions}>\n <Label text={\"Municipio\"} />\n </Item>\n <Item dataField=\"billingAddress.ClaveLocalidad1\" editorOptions={claveLocalidad1EditorOptions}>\n <Label text={\"Localidad\"} />\n </Item>\n <Item dataField=\"billingAddress.ClaveEstado1\" editorOptions={claveEstado1EditorOptions}>\n <Label text={\"Estado\"} />\n </Item>\n <Item dataField=\"billingAddress.ClavePais1\" editorOptions={clavePais1EditorOptions}>\n <Label text={\"País\"} />\n </Item>\n <Item dataField=\"billingAddress.FiscalRegimen\" editorType=\"dxSelectBox\" editorOptions={fiscalRegimenEditorOptions}>\n <Label text={\"Régimen Fiscal\"} />\n <RequiredRule message=\"Régimen Fiscal es requerido\" />\n </Item>\n <Item dataField=\"billingAddress.SATCatUsoCFDI\" editorType=\"dxSelectBox\" editorOptions={usoCFDIEditorOptions} >\n <Label text={\"Uso CFDi\"} />\n <RequiredRule message=\"Uso CFDi requerido\" />\n </Item>\n\n </Tab>\n <Tab title=\"Autorización de Precios\" colCount={2} >\n <Item dataField=\"header.SCUsuarioAutorizaPrecios\" editorType=\"dxSelectBox\" editorOptions={usuarioAutorizaEditorOptions}>\n <Label text=\"Usuario Autoriza\" />\n </Item>\n <Item dataField=\"header.SCCodigoAutorizaPrecios\" editorOptions={scCodigoAutorizaPreciosEditorOptions}>\n <Label text=\"Código\" />\n </Item>\n <Item dataField=\"header.SCFechaAutorizaPrecios\" editorType=\"dxDateBox\" editorOptions={scFechaAutorizaPreciosEditorOptions}>\n <Label text=\"Fecha Autorización\" />\n </Item>\n <Item dataField=\"header.SCMotivoAutorizaPrecios\" editorOptions={scMotivoAutorizaPreciosEditorOptions}>\n <Label text=\"Motivo\" />\n </Item>\n <Item dataField=\"header.SCComentariosAutorizaPrecios\" editorType=\"dxTextArea\" editorOptions={scComentariosAutorizaPreciosEditorOptions}>\n <Label text=\"Comentarios\" />\n </Item>\n </Tab>\n <Tab title=\"eCommerce\" colCount={2} >\n <Item dataField=\"header.folioeCommerce\" editorOptions={folioeCommerceEditorOptions}>\n <Label text=\"Folio eCommerce\" />\n </Item>\n <Item dataField=\"header.importeTotaleCommerce\" editorType=\"dxNumberBox\" editorOptions={importeTotaleCommerceEditorOptions}>\n <Label text=\"Importe Total eCommerce\" />\n </Item>\n <Item dataField=\"header.eCommerceFechaCreacion\" editorType=\"dxDateBox\" editorOptions={eCommerceFechaCreacionEditorOptions}>\n <Label text=\"eCommerce Fecha Creación\" />\n </Item>\n <Item dataField=\"header.PlazaEntrega\" editorOptions={plazaEntregaEditorOptions}>\n <Label text=\"Plaza Entrega\" />\n </Item>\n </Tab>\n <Tab title=\"Observaciones\" >\n <Item dataField=\"header.Observaciones\" editorType=\"dxTextArea\" editorOptions={observacionesEditorOptions}>\n <Label text=\"Observaciones\" visible={false} />\n </Item>\n </Tab>\n <Tab title=\"Registros Relacionados\">\n <DataGrid\n id=\"gridRelatedRecords\"\n columnsAutoWidth={true}\n dataSource={salesOrderPayload.relatedRecords}\n allowColumnReordering={true}\n allowColumnResizing={true}\n columnResizingMode={\"widget\"}\n showBorders={true}\n rowAlternationEnabled={true}\n showRowLines={true}\n showColumnLines={true}\n >\n <HeaderFilter visible={false} />\n\n <Column dataField=\"name\" dataType=\"string\" width={300} caption=\"Transacción\" />\n <Column caption=\"Estatus\" alignment=\"center\" width={150} cellRender={estatusRelatedRecords} />\n <Column caption=\"\" alignment=\"center\" width={50} cellRender={openRelatedRecordButton} />\n <Column dataField=\"FechaEmision\" dataType=\"date\" width={150} caption=\"Fecha Emisión\" />\n <Column dataField=\"ImporteTotal\" caption=\"Importe Total\" dataType=\"number\" width={180} >\n <Format\n type=\"currency\"\n precision={2}\n />\n </Column>\n </DataGrid>\n </Tab>\n <Tab title=\"Log Estatus\">\n <DataGrid\n id=\"gridLogEstatus\"\n columnsAutoWidth={true}\n dataSource={salesOrderPayload.movEstatusLog}\n allowColumnReordering={true}\n allowColumnResizing={true}\n columnResizingMode={\"widget\"}\n showBorders={true}\n rowAlternationEnabled={true}\n showRowLines={true}\n showColumnLines={true}\n >\n <HeaderFilter visible={false} />\n <Column dataField=\"Usuario\" dataType=\"string\" width={350} caption=\"Usuario\" />\n <Column caption=\"Estatus\" alignment=\"center\" width={150} cellRender={estatusRelatedRecords} />\n <Column dataField=\"Fecha\" dataType=\"datetime\" width={300} caption=\"Fecha\" />\n </DataGrid>\n </Tab>\n <Tab title=\"Archivos Anexos\" >\n <div className=\"widget-container\">\n <FileUploader\n multiple={true}\n accept=\"*\"\n uploadMode=\"useButtons\"\n chunkSize={20000000}\n maxFileSize={20000000}\n uploadChunk={uploadChunk}\n disabled={!activateAttachments}\n />\n </div>\n <div id=\"wrapper\" className=\"show-widget\" >\n <div id=\"widget-area\">\n <FileManager id=\"attachmentManager\" fileSystemProvider={attachments} onItemDeleting={onAttachmentDeleting} onItemDownloading={onItemDownloading} onSelectedFileOpened={onAttachmentOpen}>\n <Permissions\n create={false}\n copy={false}\n move={false}\n delete={activateAttachments}\n rename={false}\n upload={false}\n download={true}\n >\n </Permissions>\n </FileManager>\n </div>\n </div>\n </Tab>\n </TabbedItem>\n </Form>\n </div>\n </div>\n ) :\n (\n <div></div>\n )\n }\n </div>\n )\n }}\n />\n </div>\n </div>\n );\n}\n","import React, { useState, useEffect, useMemo } from 'react';\n\n// LoadPanel\nimport { LoadPanel } from 'devextreme-react/load-panel';\n\n// Toast\nimport { Toast } from 'devextreme-react/toast';\n\n//Form\nimport Form, { GroupItem, Label, TabbedItem, TabPanelOptions, Tab } from 'devextreme-react/form';\n\nimport { Auth, API, Storage } from 'aws-amplify';\n\n// Ruteador\nimport { Route, Link, useHistory } from \"react-router-dom\";\n\n// Grid\nimport DataGrid, {\n Column, FilterRow, HeaderFilter, FilterPanel, FilterBuilderPopup,\n GroupPanel, Grouping, SearchPanel, Sorting, Editing, Lookup, Item, RequiredRule,\n Scrolling, Pager, Paging, Summary, TotalItem, StateStoring, ColumnChooser, Format,\n Export, ColumnChooserSearch, ColumnChooserSelection\n} from 'devextreme-react/data-grid';\n\n//CheckBox\nimport CheckBox from 'devextreme-react/check-box';\n\n// Iconos\nimport { FontAwesomeIcon } from \"@fortawesome/react-fontawesome\";\nimport { faGlasses } from \"@fortawesome/pro-solid-svg-icons\";\nimport { faPencilAlt } from \"@fortawesome/pro-solid-svg-icons\";\nimport { faArrowRotateLeft } from \"@fortawesome/pro-solid-svg-icons\";\nimport { faList } from \"@fortawesome/pro-duotone-svg-icons\";\nimport { faFilePdf } from \"@fortawesome/pro-solid-svg-icons\";\nimport { faArrowsRotate } from \"@fortawesome/pro-solid-svg-icons\";\nimport { faFileInvoiceDollar } from \"@fortawesome/pro-duotone-svg-icons\";\nimport { faArrowUpRightFromSquare } from \"@fortawesome/pro-solid-svg-icons\";\nimport { faFiles } from \"@fortawesome/pro-solid-svg-icons\";\nimport { faEnvelope } from \"@fortawesome/pro-solid-svg-icons\";\nimport { faPlay } from \"@fortawesome/pro-solid-svg-icons\";\nimport { faTrash } from \"@fortawesome/pro-solid-svg-icons\";\n\nimport 'devextreme/data/odata/store';\nimport CustomStore from 'devextreme/data/custom_store';\n\nimport DataSource from 'devextreme/data/data_source';\n\nimport '../ListStyle.css';\n\n//FileUploader\nimport FileUploader from 'devextreme-react/file-uploader';\n\n//FileManager\nimport FileManager, { Permissions } from 'devextreme-react/file-manager';\n\nimport dxDateBox from \"devextreme/ui/date_box\";\n\nimport dxNumberBox from \"devextreme/ui/number_box\";\n\nimport TransactionStatus from \"../TransactionStatus/TransactionStatus.js\";\n\nimport Lambda from 'aws-sdk/clients/lambda';\n\nimport { Workbook } from 'exceljs';\nimport { saveAs } from 'file-saver';\nimport { exportDataGrid } from 'devextreme/excel_exporter'\n\ndxDateBox.defaultOptions({\n options: {\n dateSerializationFormat: \"yyyy-MM-dd\"\n }\n});\n\ndxNumberBox.defaultOptions({\n options: {\n step: 0\n }\n});\n\nfunction isNotEmpty(value) {\n return value !== undefined && value !== null && value !== '';\n}\n\nexport default function Invoice(props) {\n const history = useHistory();\n\n const [isDetail, setIsDetail] = useState(false);\n const [id, setId] = useState();\n const [permissionLevel] = useState(props.nivel);\n const [invoicePayload, setInvoicePayload] = useState({\n header: {},\n detail: [],\n relatedRecords: [],\n movEstatusLog: []\n });\n\n const [autoExpandAll, setAutoExpandAll] = useState(true);\n\n const [visibleLoadPanel, setVisibleLoadPanel] = useState(false);\n\n const [visibleToast, setVisibleToast] = useState(false);\n const [messageToast, setMessageToast] = useState('');\n const [typeToast, setTypeToast] = useState('success');\n\n const [sucursal] = useState(props.sucursal);\n const [agentes, setAgentes] = useState([]);\n const [listaPrecios, setListaPrecios] = useState([]);\n const [conceptos, setConceptos] = useState([]);\n const [condiciones, setCondiciones] = useState([]);\n\n const [activateConfirmButton, setActivateConfirmButton] = useState(false);\n const [activateDeleteButton, setActivateDeleteButton] = useState(false);\n const [activatePDFButton, setActivatePDFButton] = useState(false);\n const [activateRegenerateCFDi, setActivateRegenerateCFDi] = useState(false);\n const [activateSendCFDi, setActivateSendCFDi] = useState(false);\n const [activateAttachments, setActivateAttachments] = useState(false);\n\n const [regenerateCFDi] = useState(props.regenerateCFDi);\n const [sendCFDi] = useState(props.sendCFDi);\n\n //Ref para el form\n const [formDatosGeneralesRef] = useState(React.createRef());\n\n //Ref para el grid Articulos\n const [gridArticulosRef] = useState(React.createRef());\n\n const [attachments, setAttachments] = useState([]);\n\n const filterBuilderPopupPosition = {\n of: window,\n at: 'top',\n my: 'top',\n offset: { y: 10 },\n };\n\n const allowedPageSizes = [5, 10, 15, 20, 'all'];\n\n const exportFormats = ['xlsx'];\n\n function getOrderDay(rowData) {\n return (new Date(rowData.OrderDate)).getDay();\n }\n\n const filterBuilder = {\n customOperations: [{\n name: 'weekends',\n caption: 'Weekends',\n dataTypes: ['date'],\n icon: 'check',\n hasValue: false,\n calculateFilterExpression: () => [[getOrderDay, '=', 0], 'or', [getOrderDay, '=', 6]],\n }],\n allowHierarchicalFields: true,\n };\n\n const filterValue = [['Estatus', '=', 'Sin Afectar']];\n\n //Ref para el grid Tablero de Control\n const [gridTableroRef] = useState(React.createRef());\n\n function onAutoExpandAllChanged() {\n setAutoExpandAll(!autoExpandAll)\n };\n\n const getInvoiceRecords = React.useCallback(async (sqlFilter) => {\n try {\n let apiName = 'AdminSC';\n let path = '/procesafacturas';\n\n let myInit = {\n headers: {\n 'Content-Type': 'application/json',\n Authorization: `${(await Auth.currentSession()).getAccessToken().getJwtToken()}`\n },\n queryStringParameters: {\n action: 'list',\n sqlFilter: sqlFilter,\n salesAccess: props.salesAccess,\n sucursal: props.sucursal,\n username: JSON.parse(JSON.stringify(await Auth.currentAuthenticatedUser())).username\n }\n }\n\n var invoicesGet = await API.get(apiName, path, myInit);\n }\n catch (e) {\n if (e === 'No current user') {\n history.push('/');\n\n window.location.reload();\n }\n }\n\n return invoicesGet;\n }, [history, props.salesAccess, props.sucursal]);\n\n const getCliente = React.useCallback(async (sqlFilter) => {\n let apiName = 'AdminSC';\n let path = '/getcatalogo';\n\n let myInit = {\n headers: {\n 'Content-Type': 'application/json',\n Authorization: `${(await Auth.currentSession()).getAccessToken().getJwtToken()}`\n },\n queryStringParameters: {\n type: 'Cliente',\n username: JSON.parse(JSON.stringify(await Auth.currentAuthenticatedUser())).username,\n sqlFilter: sqlFilter\n }\n }\n\n var articulosGet = await API.get(apiName, path, myInit);\n\n return articulosGet;\n }, []);\n\n const getArticulo = React.useCallback(async (sqlFilter) => {\n let apiName = 'AdminSC';\n let path = '/getcatalogo';\n\n var ListaPreciosEsp = invoicePayload.header.ListaPreciosEsp;\n\n let myInit = {\n headers: {\n 'Content-Type': 'application/json',\n Authorization: `${(await Auth.currentSession()).getAccessToken().getJwtToken()}`\n },\n queryStringParameters: {\n type: 'ObtenerPrecioArticuloPedido',\n username: JSON.parse(JSON.stringify(await Auth.currentAuthenticatedUser())).username,\n sqlFilter: sqlFilter,\n ListaPreciosEsp: ListaPreciosEsp\n }\n }\n\n var articulosGet = await API.get(apiName, path, myInit);\n\n return articulosGet;\n }, [invoicePayload.header.ListaPreciosEsp]);\n\n const getAgente = React.useCallback(async () => {\n let apiName = 'AdminSC';\n let path = '/getcatalogo';\n\n let myInit = {\n headers: {\n 'Content-Type': 'application/json',\n Authorization: `${(await Auth.currentSession()).getAccessToken().getJwtToken()}`\n },\n queryStringParameters: {\n type: 'Agente',\n username: JSON.parse(JSON.stringify(await Auth.currentAuthenticatedUser())).username\n }\n }\n\n var agentesGet = await API.get(apiName, path, myInit);\n\n setAgentes(agentesGet);\n\n return agentesGet;\n }, []);\n\n const getListaPrecios = React.useCallback(async () => {\n let apiName = 'AdminSC';\n let path = '/getcatalogo';\n\n let myInit = {\n headers: {\n 'Content-Type': 'application/json',\n Authorization: `${(await Auth.currentSession()).getAccessToken().getJwtToken()}`\n },\n queryStringParameters: {\n type: 'ListaPrecios',\n sucursal: sucursal,\n username: JSON.parse(JSON.stringify(await Auth.currentAuthenticatedUser())).username\n }\n }\n\n var listaPreciosGet = await API.get(apiName, path, myInit);\n\n setListaPrecios(listaPreciosGet);\n\n return listaPreciosGet;\n }, [sucursal]);\n\n const getConceptos = React.useCallback(async () => {\n let apiName = 'AdminSC';\n let path = '/getcatalogo';\n\n let myInit = {\n headers: {\n 'Content-Type': 'application/json',\n Authorization: `${(await Auth.currentSession()).getAccessToken().getJwtToken()}`\n },\n queryStringParameters: {\n type: 'Concepto',\n modulo: 'VTAS',\n username: JSON.parse(JSON.stringify(await Auth.currentAuthenticatedUser())).username\n }\n }\n\n var conceptosGet = await API.get(apiName, path, myInit);\n\n setConceptos(conceptosGet);\n\n return conceptosGet;\n }, []);\n\n const getCondiciones = React.useCallback(async () => {\n let apiName = 'AdminSC';\n let path = '/getcatalogo';\n\n let myInit = {\n headers: {\n 'Content-Type': 'application/json',\n Authorization: `${(await Auth.currentSession()).getAccessToken().getJwtToken()}`\n },\n queryStringParameters: {\n type: 'Condicion',\n username: JSON.parse(JSON.stringify(await Auth.currentAuthenticatedUser())).username\n }\n }\n\n var condicionesGet = await API.get(apiName, path, myInit);\n\n setCondiciones(condicionesGet);\n\n return condicionesGet;\n }, []);\n\n const store = useMemo(() => {\n return new CustomStore({\n key: 'ID',\n load(loadOptions) {\n let sqlFilter = '(';\n [\n 'filter'\n ].forEach((i) => {\n if (i in loadOptions && isNotEmpty(loadOptions[i])) {\n var filters = loadOptions[i];\n\n var filtersLength = filters.length;\n\n for (var i = 0; i <= filtersLength; i++) {\n var singleFilter = filters[i];\n var singleFilterType = typeof singleFilter;\n var singleFilterIsArray = Array.isArray(singleFilter);\n var singleFilterIsDate = singleFilter instanceof Date;\n\n if (singleFilter === 'NULL') {\n singleFilter = '0';\n }\n\n if (singleFilterType.toString() === 'object' && singleFilterIsArray) {\n sqlFilter += '(';\n\n var subFiltersLength = singleFilter.length;\n\n for (var i2 = 0; i2 <= subFiltersLength; i2++) {\n var singleSubFilter = singleFilter[i2];\n var singleSubFilterType = typeof singleSubFilter;\n var singleSubFilterIsArray = Array.isArray(singleSubFilter);\n var singleSubFilterIsDate = singleSubFilter instanceof Date\n\n if (singleSubFilter === 'NULL') {\n singleSubFilter = '0';\n }\n\n if (singleSubFilterType.toString() === 'object' && singleSubFilterIsArray) {\n sqlFilter += '(';\n\n var subSubFiltersLength = singleSubFilter.length;\n\n for (var i3 = 0; i3 <= subSubFiltersLength; i3++) {\n var singleSubSubFilter = singleSubFilter[i3];\n var singleSubSubFilterType = typeof singleSubSubFilter;\n var singleSubSubFilterIsArray = Array.isArray(singleSubSubFilter);\n var singleSubSubFilterIsDate = singleSubSubFilter instanceof Date\n\n if (singleSubSubFilter === 'NULL') {\n singleSubSubFilter = '0';\n }\n\n if (singleSubSubFilterType.toString() === 'object' && singleSubSubFilterIsArray) {\n sqlFilter += '(';\n\n var subSubSubFiltersLength = singleSubSubFilter.length;\n\n for (var i4 = 0; i4 <= subSubSubFiltersLength; i4++) {\n var singleSubSubSubFilter = singleSubSubFilter[i4];\n var singleSubSubSubFilterType = typeof singleSubSubSubFilter;\n var singleSubSubSubFilterIsArray = Array.isArray(singleSubSubSubFilter);\n var singleSubSubSubFilterIsDate = singleSubSubSubFilter instanceof Date\n\n if (singleSubSubSubFilter === 'NULL') {\n singleSubSubSubFilter = '0';\n }\n\n if (singleSubSubSubFilterType.toString() === 'object' && singleSubSubSubFilterIsArray) {\n sqlFilter += '(';\n\n var subSubSubSubFiltersLength = singleSubSubSubFilter.length;\n\n for (var i5 = 0; i5 <= subSubSubSubFiltersLength; i5++) {\n var singleSubSubSubSubFilter = singleSubSubSubFilter[i5];\n var singleSubSubSubSubFilterType = typeof singleSubSubSubSubFilter;\n var singleSubSubSubSubFilterIsArray = Array.isArray(singleSubSubSubSubFilter);\n var singleSubSubSubSubFilterIsDate = singleSubSubSubSubFilter instanceof Date\n\n if (singleSubSubSubSubFilter === 'NULL') {\n singleSubSubSubSubFilter = '0';\n }\n\n if (singleSubSubSubSubFilterType.toString() === 'string') {\n if (singleSubSubSubSubFilter === 'contains') {\n filters[i][i2][i3][i4][i5] = 'LIKE';\n singleSubSubSubSubFilter = 'LIKE';\n\n filters[i][i2][i3][i4][i5 + 1] = '\\'%' + filters[i][i2][i3][i4][i5 + 1] + '%\\'';\n }\n else if (singleSubSubSubSubFilter === 'notcontains') {\n filters[i][i2][i3][i4][i5] = 'NOT LIKE';\n singleSubSubSubSubFilter = 'NOT LIKE';\n\n filters[i][i2][i3][i4][i5 + 1] = '\\'%' + filters[i][i2][i3][i4][i5 + 1] + '%\\'';\n }\n else if (singleSubSubSubSubFilter === 'startswith') {\n filters[i][i2][i3][i4][i5] = 'LIKE';\n singleSubSubSubSubFilter = 'LIKE';\n\n filters[i][i2][i3][i4][i5 + 1] = '\\'' + filters[i][i2][i3][i4][i5 + 1] + '%\\'';\n }\n else if (singleSubSubSubSubFilter === 'endswith') {\n filters[i][i2][i3][i4][i5] = 'LIKE';\n singleSubSubSubSubFilter = 'LIKE';\n\n filters[i][i2][i3][i4][i5 + 1] = '\\'%' + filters[i][i2][i3][i4][i5 + 1] + '\\'';\n }\n else if (singleSubSubSubSubFilter === '=' || singleSubSubSubSubFilter === '<>' || singleSubSubSubSubFilter === '>' || singleSubSubSubSubFilter === '>=' || singleSubSubSubSubFilter === '<' || singleSubSubSubSubFilter === '<=') {\n if (!filters[i][i2][i3][i4][i5 + 1])\n filters[i][i2][i3][i4][i5 + 1] = 'NULL';\n else if (typeof filters[i][i2][i3][i4][i5 + 1] === 'string') {\n filters[i][i2][i3][i4][i5 + 1] = '\\'' + filters[i][i2][i3][i4][i5 + 1] + '\\'';\n }\n }\n else if (singleSubSubSubSubFilter === '!') {\n filters[i][i2][i3][i4][i5] = 'NOT';\n singleSubSubSubSubFilter = 'NOT';\n }\n\n sqlFilter += ' ' + singleSubSubSubSubFilter + ' ';\n }\n else if (singleSubSubSubSubFilterType.toString() === 'object' && singleSubSubSubSubFilterIsDate) {\n sqlFilter += ' \\'' + singleSubSubSubSubFilter.toISOString().split('T')[0] + '\\' ';\n }\n else if (singleSubSubSubSubFilterType.toString() === 'number') {\n sqlFilter += ' ' + singleSubSubSubSubFilter.toString() + ' ';\n }\n else if (singleSubSubSubSubFilterType.toString() === 'boolean') {\n if (singleSubSubSubSubFilter.toString() === 'true')\n sqlFilter += '1 ';\n else if (singleSubSubSubSubFilter.toString() === 'false' || singleSubSubSubSubFilter === null || singleSubSubSubSubFilter === undefined)\n sqlFilter += '0 ';\n }\n }\n }\n else if (singleSubSubSubFilterType.toString() === 'string') {\n if (singleSubSubSubFilter === 'contains') {\n filters[i][i2][i3][i4] = 'LIKE';\n singleSubSubSubFilter = 'LIKE';\n\n filters[i][i2][i3][i4 + 1] = '\\'%' + filters[i][i2][i3][i4 + 1] + '%\\'';\n }\n else if (singleSubSubSubFilter === 'notcontains') {\n filters[i][i2][i3][i4] = 'NOT LIKE';\n singleSubSubSubFilter = 'NOT LIKE';\n\n filters[i][i2][i3][i4 + 1] = '\\'%' + filters[i][i2][i3][i4 + 1] + '%\\'';\n }\n else if (singleSubSubSubFilter === 'startswith') {\n filters[i][i2][i3][i4] = 'LIKE';\n singleSubSubSubFilter = 'LIKE';\n\n filters[i][i2][i3][i4 + 1] = '\\'' + filters[i][i2][i3][i4 + 1] + '%\\'';\n }\n else if (singleSubSubSubFilter === 'endswith') {\n filters[i][i2][i3][i4] = 'LIKE';\n singleSubSubSubFilter = 'LIKE';\n\n filters[i][i2][i3][i4 + 1] = '\\'%' + filters[i][i2][i3][i4 + 1] + '\\'';\n }\n else if (singleSubSubSubFilter === '=' || singleSubSubSubFilter === '<>' || singleSubSubSubFilter === '>' || singleSubSubSubFilter === '>=' || singleSubSubSubFilter === '<' || singleSubSubSubFilter === '<=') {\n if (!filters[i][i2][i3][i4 + 1])\n filters[i][i2][i3][i4 + 1] = 'NULL';\n else if (typeof filters[i][i2][i3][i4 + 1] === 'string') {\n filters[i][i2][i3][i4 + 1] = '\\'' + filters[i][i2][i3][i4 + 1] + '\\'';\n }\n }\n else if (singleSubSubSubFilter === '!') {\n filters[i][i2][i3][i4] = 'NOT';\n singleSubSubSubFilter = 'NOT';\n }\n\n sqlFilter += ' ' + singleSubSubSubFilter + ' ';\n }\n else if (singleSubSubSubFilterType.toString() === 'object' && singleSubSubSubFilterIsDate) {\n sqlFilter += ' \\'' + singleSubSubSubFilter.toISOString().split('T')[0] + '\\' ';\n }\n else if (singleSubSubSubFilterType.toString() === 'number') {\n sqlFilter += ' ' + singleSubSubSubFilter.toString() + ' ';\n }\n else if (singleSubSubSubFilterType.toString() === 'boolean') {\n if (singleSubSubSubFilter.toString() === 'true')\n sqlFilter += '1 ';\n else if (singleSubSubSubFilter.toString() === 'false' || singleSubSubSubFilter === null || singleSubSubSubFilter === undefined)\n sqlFilter += '0 ';\n }\n }\n\n sqlFilter += ')';\n }\n else if (singleSubSubFilterType.toString() === 'string') {\n if (singleSubSubFilter === 'contains') {\n filters[i][i2][i3] = 'LIKE';\n singleSubSubFilter = 'LIKE';\n\n filters[i][i2][i3 + 1] = '\\'%' + filters[i][i2][i3 + 1] + '%\\'';\n }\n else if (singleSubSubFilter === 'notcontains') {\n filters[i][i2][i3] = 'NOT LIKE';\n singleSubSubFilter = 'NOT LIKE';\n\n filters[i][i2][i3 + 1] = '\\'%' + filters[i][i2][i3 + 1] + '%\\'';\n }\n else if (singleSubSubFilter === 'startswith') {\n filters[i][i2][i3] = 'LIKE';\n singleSubSubFilter = 'LIKE';\n\n filters[i][i2][i3 + 1] = '\\'' + filters[i][i2][i3 + 1] + '%\\'';\n }\n else if (singleSubSubFilter === 'endswith') {\n filters[i][i2][i3] = 'LIKE';\n singleSubSubFilter = 'LIKE';\n\n filters[i][i2][i3 + 1] = '\\'%' + filters[i][i2][i3 + 1] + '\\'';\n }\n else if (singleSubSubFilter === '=' || singleSubSubFilter === '<>' || singleSubSubFilter === '>' || singleSubSubFilter === '>=' || singleSubSubFilter === '<' || singleSubSubFilter === '<=') {\n if (!filters[i][i2][i3 + 1])\n filters[i][i2][i3 + 1] = 'NULL';\n else if (typeof filters[i][i2][i3 + 1] === 'string') {\n filters[i][i2][i3 + 1] = '\\'' + filters[i][i2][i3 + 1] + '\\'';\n }\n }\n else if (singleSubSubFilter === '!') {\n filters[i][i2][i3] = 'NOT';\n singleSubSubFilter = 'NOT';\n }\n sqlFilter += ' ' + singleSubSubFilter + ' ';\n }\n else if (singleSubSubFilterType.toString() === 'object' && singleSubSubFilterIsDate) {\n sqlFilter += ' \\'' + singleSubSubFilter.toISOString().split('T')[0] + '\\' ';\n }\n else if (singleSubSubFilterType.toString() === 'number') {\n sqlFilter += ' ' + singleSubSubFilter.toString() + ' ';\n }\n else if (singleSubSubFilterType.toString() === 'boolean') {\n if (singleSubSubFilter.toString() === 'true')\n sqlFilter += '1 ';\n else if (singleSubSubFilter.toString() === 'false' || singleSubSubFilter === null || singleSubSubFilter === undefined)\n sqlFilter += '0 ';\n }\n }\n\n sqlFilter += ')';\n }\n else if (singleSubFilterType.toString() === 'string') {\n if (singleSubFilter === 'contains') {\n filters[i][i2] = 'LIKE';\n singleSubFilter = 'LIKE';\n\n filters[i][i2 + 1] = '\\'%' + filters[i][i2 + 1] + '%\\'';\n }\n else if (singleSubFilter === 'notcontains') {\n filters[i][i2] = 'NOT LIKE';\n singleSubFilter = 'NOT LIKE';\n\n filters[i][i2 + 1] = '\\'%' + filters[i][i2 + 1] + '%\\'';\n }\n else if (singleSubFilter === 'startswith') {\n filters[i][i2] = 'LIKE';\n singleSubFilter = 'LIKE';\n\n filters[i][i2 + 1] = '\\'' + filters[i][i2 + 1] + '%\\'';\n }\n else if (singleSubFilter === 'endswith') {\n filters[i][i2] = 'LIKE';\n singleSubFilter = 'LIKE';\n\n filters[i][i2 + 1] = '\\'%' + filters[i][i2 + 1] + '\\'';\n }\n else if (singleSubFilter === '=' || singleSubFilter === '<>' || singleSubFilter === '>' || singleSubFilter === '>=' || singleSubFilter === '<' || singleSubFilter === '<=') {\n if (!filters[i][i2 + 1])\n filters[i][i2 + 1] = 'NULL';\n else if (typeof filters[i][i2 + 1] === 'string') {\n filters[i][i2 + 1] = '\\'' + filters[i][i2 + 1] + '\\'';\n }\n }\n else if (singleSubFilter === '!') {\n filters[i][i2] = 'NOT';\n singleSubFilter = 'NOT';\n }\n sqlFilter += ' ' + singleSubFilter + ' ';\n }\n else if (singleSubFilterType.toString() === 'object' && singleSubFilterIsDate) {\n sqlFilter += ' \\'' + singleSubFilter.toISOString().split('T')[0] + '\\' ';\n }\n else if (singleSubFilterType.toString() === 'number') {\n sqlFilter += ' ' + singleSubFilter.toString() + ' ';\n }\n else if (singleSubFilterType.toString() === 'boolean') {\n if (singleSubFilter.toString() === 'true')\n sqlFilter += '1 ';\n else if (singleSubFilter.toString() === 'false' || singleSubFilter === null || singleSubFilter === undefined)\n sqlFilter += '0 ';\n }\n }\n\n sqlFilter += ')';\n }\n else if (singleFilterType.toString() === 'string') {\n if (singleFilter === 'contains') {\n filters[i] = 'LIKE';\n singleFilter = 'LIKE';\n\n filters[i + 1] = '\\'%' + filters[i + 1] + '%\\'';\n }\n else if (singleFilter === 'notcontains') {\n filters[i] = 'NOT LIKE';\n singleFilter = 'NOT LIKE';\n\n filters[i + 1] = '\\'%' + filters[i + 1] + '%\\'';\n }\n else if (singleFilter === 'startswith') {\n filters[i] = 'LIKE';\n singleFilter = 'LIKE';\n\n filters[i + 1] = '\\'' + filters[i + 1] + '%\\'';\n }\n else if (singleFilter === 'endswith') {\n filters[i] = 'LIKE';\n singleFilter = 'LIKE';\n\n filters[i + 1] = '\\'%' + filters[i + 1] + '\\'';\n }\n else if (singleFilter === '=' || singleFilter === '<>' || singleFilter === '>' || singleFilter === '>=' || singleFilter === '<' || singleFilter === '<=') {\n if (!filters[i + 1])\n filters[i + 1] = 'NULL';\n else if (typeof filters[i + 1] === 'string') {\n filters[i + 1] = '\\'' + filters[i + 1] + '\\'';\n }\n }\n else if (singleFilter === '!') {\n filters[i] = 'NOT';\n singleFilter = 'NOT';\n }\n sqlFilter += ' ' + singleFilter + ' ';\n }\n else if (singleFilterType.toString() === 'object' && singleFilterIsDate) {\n sqlFilter += ' \\'' + singleFilter.toISOString().split('T')[0] + '\\' ';\n }\n else if (singleFilterType.toString() === 'number') {\n sqlFilter += ' ' + singleFilter.toString() + ' ';\n }\n else if (singleFilterType.toString() === 'boolean') {\n if (singleFilter.toString() === 'true')\n sqlFilter += '1 ';\n else if (singleFilter.toString() === 'false' || singleFilter === null || singleFilter === undefined)\n sqlFilter += '0 ';\n }\n }\n\n sqlFilter += ')';\n }\n });\n\n async function getRecords() {\n if (sqlFilter === '(')\n sqlFilter = '';\n\n var records = await getInvoiceRecords(sqlFilter);\n return {\n data: records,\n totalCount: records.length\n };\n }\n\n return getRecords()\n .then(function (result) {\n return result;\n })\n .catch(() => { throw new Error('Data Loading Error'); });\n }\n })\n }, [getInvoiceRecords]);\n\n const storeCliente = useMemo(() => {\n return new CustomStore({\n key: 'value',\n load(loadOptions) {\n let sqlFilter = '';\n [\n 'filter'\n ].forEach((i) => {\n sqlFilter = loadOptions.searchValue;\n });\n\n async function getRecords() {\n if (sqlFilter) {\n var records = await getCliente(sqlFilter);\n\n return {\n data: records,\n totalCount: records.length\n };\n }\n else {\n return {\n data: [],\n totalCount: 0\n };\n }\n }\n\n return getRecords()\n .then(function (result) {\n return result;\n })\n .catch(() => { throw new Error('Data Loading Error'); });\n },\n byKey: (key) => {\n /*\n async function getRecords(key) {\n var records = await getCliente(key);\n\n return records;\n }\n\n return getRecords(key);\n */\n return {\n name: invoicePayload.header.CteNombre,\n value: invoicePayload.header.Cliente\n };\n }\n })\n }, [getCliente, invoicePayload.header.CteNombre, invoicePayload.header.Cliente]);\n\n const storeArticulo = useMemo(() => {\n return new CustomStore({\n key: 'value',\n load(loadOptions) {\n let sqlFilter = '';\n [\n 'filter'\n ].forEach((i) => {\n sqlFilter = loadOptions.searchValue;\n });\n\n async function getRecords() {\n if (sqlFilter) {\n var records = await getArticulo(sqlFilter);\n\n return {\n data: records,\n totalCount: records.length\n };\n }\n else {\n return {\n data: [],\n totalCount: 0\n };\n }\n }\n\n return getRecords()\n .then(function (result) {\n return result;\n })\n .catch(() => { throw new Error('Data Loading Error'); });\n },\n byKey: (key) => {\n async function getRecords(key) {\n var records = await getArticulo(key);\n\n return records;\n }\n\n return getRecords(key);\n }\n })\n }, [getArticulo]);\n\n var fechaEmisionEditorOptions = useMemo(() => {\n return {\n width: '100%',\n readOnly: true\n };\n }, []);\n\n var movimientoEditorOptions = useMemo(() => {\n return {\n width: '100%',\n readOnly: true\n };\n }, []);\n\n var pedidoEditorOptions = useMemo(() => {\n return {\n width: '100%',\n readOnly: true\n };\n }, []);\n\n var rfcEditorOptions = useMemo(() => {\n return {\n width: '100%',\n readOnly: true,\n inputAttr: {\n 'style': 'text-transform: uppercase'\n }\n };\n }, []);\n\n var cantidadEditorOptions = useMemo(() => {\n return {\n format: '#'\n };\n }, []);\n\n var listaPreciosDataSource = useMemo(() => {\n return new DataSource({\n paginate: true,\n store: {\n type: \"array\",\n key: \"ListaPrecios\",\n data: listaPrecios\n }\n });\n }, [listaPrecios]);\n\n var condicionesDataSource = useMemo(() => {\n return new DataSource({\n paginate: true,\n store: {\n type: \"array\",\n key: \"Condicion\",\n data: condiciones\n }\n });\n }, [condiciones]);\n\n var agenteDataSource = useMemo(() => {\n return new DataSource({\n paginate: true,\n store: {\n type: \"array\",\n key: \"Agente\",\n data: agentes\n }\n });\n }, [agentes]);\n\n var observacionesEditorOptions = useMemo(() => {\n return {\n readOnly: true\n };\n }, []);\n\n var datosCFDIEditorOptions = useMemo(() => {\n return { width: '100%', readOnly: true };\n }, []);\n\n //Opciones Agente \n try {\n var agenteEditorOptions = useMemo(() => {\n return {\n dataSource: agenteDataSource,\n displayExpr: 'name',\n valueExpr: 'value',\n searchEnabled: true,\n readOnly: true,\n value: (invoicePayload.header.Agente ? invoicePayload.header.Agente : ''), width: '100%'\n };\n }, [agenteDataSource, invoicePayload.header.Agente]);\n }\n catch (e) {\n var agenteEditorOptions = {\n dataSource: agenteDataSource,\n displayExpr: 'name',\n valueExpr: 'value',\n searchEnabled: true,\n readOnly: true,\n value: '',\n width: '100%'\n };\n };\n\n //Opciones Lista Precios \n try {\n var listaPreciosEditorOptions = useMemo(() => {\n return {\n dataSource: listaPreciosDataSource,\n displayExpr: 'name',\n valueExpr: 'value',\n searchEnabled: true,\n value: (invoicePayload.header.ListaPreciosEsp ? invoicePayload.header.ListaPreciosEsp : ''),\n width: '100%'\n };\n }, [listaPreciosDataSource, invoicePayload.header.ListaPreciosEsp]);\n }\n catch (e) {\n var listaPreciosEditorOptions = {\n dataSource: listaPreciosDataSource,\n displayExpr: 'name',\n valueExpr: 'value',\n searchEnabled: true,\n value: '',\n width: '100%'\n };\n };\n\n //Opciones Condicion\n try {\n var condicionEditorOptions = useMemo(() => {\n return {\n dataSource: condicionesDataSource,\n displayExpr: 'name',\n valueExpr: 'value',\n searchEnabled: true,\n value: (invoicePayload.header.Condicion ? invoicePayload.header.Condicion : ''),\n width: '100%'\n };\n }, [condicionesDataSource, invoicePayload.header.Condicion]);\n }\n catch (e) {\n var condicionEditorOptions = {\n dataSource: condicionesDataSource,\n displayExpr: 'name',\n valueExpr: 'value',\n searchEnabled: true,\n value: '',\n width: '100%'\n };\n };\n\n //Opciones del campo Cliente\n try {\n var clienteEditorOptions = useMemo(() => {\n return {\n dataSource: storeCliente,\n displayExpr: 'name',\n valueExpr: 'value',\n searchEnabled: true,\n showClearButton: true,\n acceptCustomValue: false,\n disabled: ((invoicePayload.header.Estatus !== 'Sin Afectar')),\n searchTimeout: 100,\n width: '100%',\n clearButtonText: 'Cerrar',\n noDataText: 'No se encontraron resultados'\n };\n }, [storeCliente, invoicePayload.header.Estatus]);\n }\n catch (e) {\n var clienteEditorOptions = {\n dataSource: storeCliente,\n displayExpr: 'name',\n valueExpr: 'value',\n searchEnabled: true,\n acceptCustomValue: false,\n disabled: ((invoicePayload.header.Estatus !== 'Sin Afectar')),\n width: '100%'\n };\n };\n\n async function uploadChunk(file, uploadInfo) {\n try {\n var responseS3 = await Storage.put(\"/vtas/\" + id + \"/\" + file.name, uploadInfo.chunkBlob, {\n contentType: file.type,\n ACL: 'public-read'\n });\n\n //Obtenemos el nombre del bucket\n let bucketName = Storage._config.AWSS3.bucket;\n\n\n let apiName = 'AdminSC';\n let path = '/uploadattachment';\n\n let myInit = {\n headers: {\n 'Content-Type': 'application/json',\n Authorization: `${(await Auth.currentSession()).getAccessToken().getJwtToken()}`\n },\n body: {\n action: 'register',\n bucketName: bucketName,\n type: 'vtas',\n id: id,\n Key: \"/vtas/\" + id + \"/\" + file.name,\n fileName: file.name,\n username: JSON.parse(JSON.stringify(await Auth.currentAuthenticatedUser())).username\n }\n }\n\n var attachmentsResult = await API.post(apiName, path, myInit);\n\n //Obtenemos los attachments\n var attachmentsGet = await Storage.list(\"/vtas/\" + id);\n var attachmentsAux = [];\n\n for (var attachmentsGetIndex in attachmentsGet) {\n var singleAttachmentsGet = attachmentsGet[attachmentsGetIndex];\n\n var singleAttachment = {\n name: singleAttachmentsGet.key.split('/').pop(),\n isDirectory: false,\n size: singleAttachmentsGet.size,\n };\n\n attachmentsAux.push(singleAttachment);\n }\n\n setAttachments(attachmentsAux);\n }\n catch (err) {\n console.log(\"Error uploading file:\", err);\n }\n }\n\n async function onAttachmentDeleting(e) {\n var fileName = e.item.key;\n\n //Primero borramos el archivo de S3\n var attachmentsDelete = await Storage.remove(\"/vtas/\" + id + \"/\" + fileName);\n\n //Despues borramos el attachment en Intelisis\n let bucketName = Storage._config.AWSS3.bucket;\n\n let apiName = 'AdminSC';\n let path = '/uploadattachment';\n\n let myInit = {\n headers: {\n 'Content-Type': 'application/json',\n Authorization: `${(await Auth.currentSession()).getAccessToken().getJwtToken()}`\n },\n body: {\n action: 'delete',\n bucketName: bucketName,\n type: 'vtas',\n id: id,\n Key: \"/vtas/\" + id + \"/\" + fileName,\n fileName: fileName,\n username: JSON.parse(JSON.stringify(await Auth.currentAuthenticatedUser())).username\n }\n }\n\n var attachmentsResult = await API.post(apiName, path, myInit);\n\n //Finalmente sincronizamos el state\n var attachmentsGet = await Storage.list(\"/vtas/\" + id);\n var attachmentsAux = [];\n\n for (var attachmentsGetIndex in attachmentsGet) {\n var singleAttachmentsGet = attachmentsGet[attachmentsGetIndex];\n\n var singleAttachment = {\n name: singleAttachmentsGet.key.split('/').pop(),\n isDirectory: false,\n size: singleAttachmentsGet.size,\n };\n\n attachmentsAux.push(singleAttachment);\n }\n\n setAttachments(attachmentsAux);\n };\n\n function downloadBlob(blob, filename) {\n const url = URL.createObjectURL(blob);\n const a = document.createElement('a');\n a.href = url;\n a.download = filename || 'download';\n const clickHandler = () => {\n setTimeout(() => {\n URL.revokeObjectURL(url);\n a.removeEventListener('click', clickHandler);\n }, 150);\n };\n\n a.addEventListener('click', clickHandler, false);\n\n a.click();\n\n return a;\n };\n\n async function onItemDownloading(e) {\n e.cancel = true;\n\n const downloadFileResponse = await Storage.get(\"/vtas/\" + id + \"/\" + e.item.name, { download: true });\n\n downloadBlob(downloadFileResponse.Body, e.item.name);\n };\n\n function openBlob(blob, filename) {\n const url = URL.createObjectURL(blob);\n\n window.open(url, \"_blank\");\n };\n\n async function onAttachmentOpen(e) {\n const downloadFileResponse = await Storage.get(\"/vtas/\" + id + \"/\" + e.file.name, { download: true });\n\n openBlob(downloadFileResponse.Body, e.file.name);\n };\n\n function editInvoice(data) {\n return (\n <Link to={`/Invoice/${data.data.ID}`}>\n <button class=\"bg-blue-500 hover:bg-blue-700 text-white py-1 px-3 rounded\" onClick={() => editButton(data.data.ID)}><FontAwesomeIcon icon={permissionLevel === 'Editar' ? faPencilAlt : faGlasses} /> {permissionLevel === 'Editar' ? 'Editar' : 'Ver'}</button>\n </Link>\n )\n }\n\n function openRelatedRecord(redirect) {\n if (redirect) {\n var baseUrl = window.location.href.split('#/')[0];\n\n redirect = baseUrl + '#' + redirect;\n\n window.open(redirect, \"_blank\");\n }\n };\n\n function openRelatedRecordButton(data) {\n return (\n <button onClick={() => openRelatedRecord(data.data.redirect)}><FontAwesomeIcon icon={faArrowUpRightFromSquare} /></button>\n )\n };\n\n function estatusRelatedRecords(data) {\n return (\n <TransactionStatus {...props} Estatus={data.data.Estatus} />\n )\n };\n\n const getInvoicePayload = React.useCallback(async (ID) => {\n try {\n let apiName = 'AdminSC';\n let path = '/procesafacturas';\n\n let myInit = {\n headers: {\n 'Content-Type': 'application/json',\n Authorization: `${(await Auth.currentSession()).getAccessToken().getJwtToken()}`\n },\n body: {\n action: 'payload',\n invoices: [{ ID: ID }],\n username: JSON.parse(JSON.stringify(await Auth.currentAuthenticatedUser())).username\n }\n };\n\n var payloadGet = await API.post(apiName, path, myInit);\n\n setInvoicePayload(payloadGet);\n\n //Obtenemos los attachments\n var attachmentsGet = await Storage.list(\"/vtas/\" + ID);\n var attachmentsAux = [];\n\n for (var attachmentsGetIndex in attachmentsGet) {\n var singleAttachmentsGet = attachmentsGet[attachmentsGetIndex];\n\n var singleAttachment = {\n name: singleAttachmentsGet.key.split('/').pop(),\n isDirectory: false,\n size: singleAttachmentsGet.size,\n };\n\n attachmentsAux.push(singleAttachment);\n }\n\n setAttachments(attachmentsAux);\n }\n catch (e) {\n if (e === 'No current user') {\n history.push('/');\n\n window.location.reload();\n }\n }\n\n return payloadGet;\n\n }, [history]);\n\n function blobToBase64(blob) {\n return new Promise((resolve, _) => {\n const reader = new FileReader();\n reader.onloadend = () => resolve(reader.result);\n reader.readAsDataURL(blob);\n });\n };\n\n const sendCFDiFiles = React.useCallback(async (hideToast, MovimientoFactura, IDFactura) => {\n try {\n let apiName = 'AdminSC';\n let path = '/enviarcorreo';\n\n let pdfFile = await Storage.get(\"/vtas/\" + IDFactura + \"/\" + MovimientoFactura.trim() + '.pdf', { download: true });\n let xmlFile = await Storage.get(\"/vtas/\" + IDFactura + \"/\" + MovimientoFactura.trim() + '.xml', { download: true });\n\n if (!pdfFile || !xmlFile) {\n return;\n }\n\n if (!hideToast)\n setVisibleLoadPanel(true);\n\n let xmlFileContents = await blobToBase64(xmlFile.Body);\n let pdfFileContents = await blobToBase64(pdfFile.Body);\n\n xmlFileContents = xmlFileContents.toString().split('base64,')[1];\n pdfFileContents = pdfFileContents.toString().split('base64,')[1];\n\n if (!xmlFileContents || !pdfFileContents) {\n if (!hideToast)\n setVisibleLoadPanel(false);\n\n setVisibleToast(true);\n setMessageToast('Archivos CFDi incorrectos');\n setTypeToast('error');\n return;\n }\n\n let myInit = {\n headers: {\n 'Content-Type': 'application/json',\n Authorization: `${(await Auth.currentSession()).getAccessToken().getJwtToken()}`\n },\n body: {\n ToAddresses: [invoicePayload.header.cte_CorreoElectronico],\n // BccAddresses: [],\n // CcAddresses: [],\n Body: 'CFDi ' + MovimientoFactura.trim(),\n Subject: 'CFDi ' + MovimientoFactura.trim(),\n Source: 'admin@supercolchones.com',\n Attachments: [{\n filename: MovimientoFactura.trim() + '.xml',\n content: xmlFileContents,\n encoding: 'base64'\n },\n {\n filename: MovimientoFactura.trim() + '.pdf',\n content: pdfFileContents,\n encoding: 'base64'\n }\n ],\n username: JSON.parse(JSON.stringify(await Auth.currentAuthenticatedUser())).username\n }\n }\n\n var sendCFDiPost = await API.post(apiName, path, myInit);\n\n if (sendCFDiPost.message.indexOf('Error') >= 0) {\n if (!hideToast)\n setVisibleLoadPanel(false);\n\n setVisibleToast(true);\n setMessageToast(sendCFDiPost.message);\n setTypeToast('error');\n }\n else {\n if (hideToast === false) {\n setVisibleLoadPanel(false);\n\n setVisibleToast(true);\n setMessageToast(sendCFDiPost.message);\n setTypeToast('success');\n }\n }\n\n return sendCFDiPost;\n }\n catch (e) {\n setVisibleToast(true);\n setMessageToast(e.message);\n setTypeToast('error');\n }\n }, [invoicePayload.header.cte_CorreoElectronico]);\n\n const editButton = React.useCallback(async (ID) => {\n try {\n if (!window.event.metaKey && !window.event.ctrlKey) {\n setVisibleLoadPanel(true);\n\n setIsDetail(true);\n setId(ID);\n\n var payload = await getInvoicePayload(ID);\n\n if (permissionLevel === 'Editar') {\n if (payload.header.Estatus === 'Sin Afectar') {\n setActivatePDFButton(false);\n setActivateRegenerateCFDi(false);\n setActivateSendCFDi(false);\n setActivateConfirmButton(true);\n setActivateAttachments(false);\n\n if (!payload.header.MovID)\n setActivateDeleteButton(true);\n }\n else if (payload.header.Estatus === 'Concluido') {\n setActivatePDFButton(true);\n setActivateConfirmButton(false);\n setActivateDeleteButton(false);\n setActivateAttachments(false);\n\n if (regenerateCFDi && payload.header.cfdi_CFDIUUID)\n setActivateRegenerateCFDi(true);\n else\n setActivateRegenerateCFDi(false);\n\n if (sendCFDi && payload.header.cfdi_CFDIUUID)\n setActivateSendCFDi(true);\n else\n setActivateSendCFDi(false);\n }\n else if (payload.header.Estatus === 'Cancelado') {\n setActivatePDFButton(true);\n setActivateConfirmButton(false);\n setActivateDeleteButton(false);\n setActivateAttachments(false);\n\n if (regenerateCFDi && payload.header.cfdi_CFDIUUID)\n setActivateRegenerateCFDi(true);\n else\n setActivateRegenerateCFDi(false);\n\n if (sendCFDi && payload.header.cfdi_CFDIUUID)\n setActivateSendCFDi(true);\n else\n setActivateSendCFDi(false);\n }\n }\n else if (permissionLevel === 'Ver') {\n setActivatePDFButton(true);\n setActivateRegenerateCFDi(false);\n setActivateSendCFDi(false);\n setActivateConfirmButton(false);\n setActivateDeleteButton(false);\n setActivateAttachments(false);\n }\n\n setVisibleLoadPanel(false);\n }\n }\n catch (e) {\n setVisibleLoadPanel(false);\n }\n }, [getInvoicePayload, permissionLevel, regenerateCFDi, sendCFDi]);\n\n async function generateCFDiFiles(hideToast) {\n var modulo = 'vtas';\n var type = 'invoice';\n\n try {\n //Primero obtenemos el payload actualizado\n var payload = await getInvoicePayload(id);\n\n // En caso de no existir folio fiscal no es necesario crear los archivos\n if (!payload.header.cfdi_CFDIUUID)\n return;\n\n if (!hideToast)\n setVisibleLoadPanel(true);\n\n // Despues enviamos el payload a la API crearPDF\n // *********************************************\n let apiName = 'AdminSC';\n let path = '/crearpdf';\n\n let myInit = {\n headers: {\n 'Content-Type': 'application/json',\n Authorization: `${(await Auth.currentSession()).getAccessToken().getJwtToken()}`\n },\n body: {\n type: type,\n payload: payload,\n bucketName: Storage._config.AWSS3.bucket,\n fileKey: `public//${modulo}/${id}/${payload.header.Mov.trim()} ${payload.header.MovID.trim()}.pdf`,\n contentType: 'application/pdf',\n username: JSON.parse(JSON.stringify(await Auth.currentAuthenticatedUser())).username\n }\n }\n\n var pdfPost = await API.post(apiName, path, myInit);\n // *********************************************\n\n if (pdfPost.message.indexOf('Error') >= 0) {\n if (!hideToast)\n setVisibleLoadPanel(false);\n\n setVisibleToast(true);\n setMessageToast(pdfPost.message);\n setTypeToast('error');\n return;\n }\n\n // Despues enviamos el payload a la API crearXML\n // *********************************************\n apiName = 'AdminSC';\n path = '/crearxml';\n\n myInit = {\n headers: {\n 'Content-Type': 'application/json',\n Authorization: `${(await Auth.currentSession()).getAccessToken().getJwtToken()}`\n },\n body: {\n modulo: modulo,\n id: id,\n bucketName: Storage._config.AWSS3.bucket,\n fileKey: `public//${modulo}/${id}/${payload.header.Mov.trim()} ${payload.header.MovID.trim()}.xml`,\n contentType: 'text/xml',\n username: JSON.parse(JSON.stringify(await Auth.currentAuthenticatedUser())).username\n }\n }\n\n var xmlPost = await API.post(apiName, path, myInit);\n // *********************************************\n if (!hideToast) {\n setVisibleLoadPanel(false);\n\n setVisibleToast(true);\n setMessageToast('Se generaron los archivos CFDi con éxito');\n setTypeToast('success')\n }\n }\n catch (e) {\n setVisibleLoadPanel(false);\n\n if (e === 'No current user') {\n history.push('/');\n\n window.location.reload();\n }\n }\n };\n\n async function generateCFDiPDF(payload) {\n var modulo = 'vtas';\n var type = 'invoice';\n\n try {\n // En caso de no existir folio fiscal no es necesario crear los archivos\n if (!payload.header.cfdi_CFDIUUID)\n return;\n\n // Despues enviamos el payload a la API crearPDF\n // *********************************************\n let apiName = 'AdminSC';\n let path = '/crearpdf';\n\n let myInit = {\n headers: {\n 'Content-Type': 'application/json',\n Authorization: `${(await Auth.currentSession()).getAccessToken().getJwtToken()}`\n },\n body: {\n type: type,\n payload: payload,\n bucketName: Storage._config.AWSS3.bucket,\n fileKey: `public//${modulo}/${id}/${payload.header.Mov.trim()} ${payload.header.MovID.trim()}.pdf`,\n contentType: 'application/pdf',\n username: JSON.parse(JSON.stringify(await Auth.currentAuthenticatedUser())).username\n }\n }\n\n var pdfPost = await API.post(apiName, path, myInit);\n // *********************************************\n\n if (pdfPost.message.indexOf('Error') >= 0) {\n setVisibleToast(true);\n setMessageToast(pdfPost.message);\n setTypeToast('error');\n return;\n }\n else {\n return pdfPost;\n }\n }\n catch (e) {\n setVisibleLoadPanel(false);\n\n if (e === 'No current user') {\n history.push('/');\n\n window.location.reload();\n }\n }\n };\n async function regenerateCFDiFilesButton() {\n await generateCFDiFiles(false);\n };\n\n async function sendCFDiFilesButton() {\n await sendCFDiFiles(false, invoicePayload.header.Movimiento, invoicePayload.header.ID);\n }\n\n async function cancelEditButton() {\n setIsDetail(false);\n };\n\n function printButton() {\n var pdfArray = [];\n var baseUrl = window.location.href.split('/')[0];\n\n pdfArray.push(invoicePayload.header.ID);\n\n window.open(baseUrl + \"/#/PdfRender?type=invoice&id=\" + pdfArray, \"_blank\");\n };\n\n async function confirmButton() {\n try {\n setVisibleLoadPanel(true);\n\n var ID = invoicePayload.header.ID;\n\n var lambdaFunction;\n\n if (window.location.href.indexOf('sandbox.') >= 0 || window.location.href.indexOf('localhost') >= 0)\n lambdaFunction = 'procesaFacturas-dev';\n else if (window.location.href.indexOf('sandboxtampico.') >= 0)\n lambdaFunction = 'procesaFacturas-devleona';\n else if (window.location.href.indexOf('tampico.') >= 0)\n lambdaFunction = 'procesaFacturas-prodleona';\n else\n lambdaFunction = 'procesaFacturas-prod';\n\n Auth.currentCredentials()\n .then(credentials => {\n const lambda = new Lambda({\n credentials: Auth.essentialCredentials(credentials),\n region: 'us-east-1'\n });\n\n var params = {\n FunctionName: lambdaFunction,\n Payload: JSON.stringify({\n ID: ID,\n payload: invoicePayload,\n action: 'apply',\n username: props.username,\n usuario: props.usuario,\n sucursal: props.sucursal,\n s3Bucket: Storage._config.AWSS3.bucket\n })\n };\n\n lambda.invoke(params, function (err, data) {\n if (err) {\n setVisibleLoadPanel(false);\n\n setVisibleToast(true);\n setMessageToast(err.message);\n setTypeToast('error');\n }\n else {\n var payloadPost = JSON.parse(JSON.parse(data.Payload).body);\n\n if (payloadPost.ok === 'true') {\n async function checkCFDiStatus() {\n //Primero obtenemos el payload actualizado\n var payload = await getInvoicePayload(id);\n\n if (payload.header.cfdi_CFDIUUID) {\n // Despues generamos el PDF\n var pdfPost = await generateCFDiPDF(payload);\n\n // Finalmente enviamos el correo electrónico\n var sendCFDiPost = await sendCFDiFiles(true, payload.header.Movimiento, payload.header.ID);\n }\n\n setVisibleToast(true);\n setMessageToast('Factura aplicada correctamente');\n setTypeToast('success');\n\n editButton(ID);\n\n setVisibleLoadPanel(false);\n };\n\n checkCFDiStatus();\n\n window.opener.location.reload();\n }\n else if (payloadPost.ok === 'false') {\n setVisibleToast(true);\n\n if (!payloadPost.message || payloadPost.message === '' || payloadPost.message === 'Error SQL')\n setMessageToast('No se pudo aplicar la Factura');\n else\n setMessageToast(payloadPost.message);\n\n setTypeToast('error')\n\n editButton(ID);\n\n setVisibleLoadPanel(false);\n }\n }\n });\n })\n }\n catch (e) {\n setVisibleLoadPanel(false);\n\n if (e === 'No current user') {\n history.push('/');\n\n window.location.reload();\n }\n }\n };\n\n function refreshButton() {\n if (gridTableroRef.current) {\n var gridTablero = gridTableroRef.current.instance();\n\n gridTablero.refresh();\n }\n };\n\n useEffect(() => {\n window.addEventListener('popstate', (e) => {\n var hash;\n\n try {\n hash = e.target.location.hash;\n }\n catch (e) {\n hash = '';\n }\n\n if (hash === '#/Invoice') {\n history.push('/Invoice');\n\n window.location.reload();\n }\n });\n\n async function initialize() {\n setVisibleLoadPanel(true);\n\n await getAgente();\n\n await getListaPrecios();\n\n await getConceptos();\n\n await getCondiciones();\n\n setVisibleLoadPanel(false);\n }\n\n initialize();\n\n //En caso de solicitar un ID especifico, redireccionamos a ese ID\n if (!props.match.isExact) {\n var urlID = props.location.pathname.replace('/Invoice/', '');\n\n if (urlID === 'undefined')\n urlID = undefined;\n\n if (urlID)\n editButton(urlID);\n else\n history.push('/Invoice')\n }\n\n // eslint-disable-next-line\n }, []);\n\n function onHidingToast() {\n setVisibleToast(false);\n }\n\n async function deleteButton() {\n try {\n if (!window.confirm('¿Desea eliminar la Factura?'))\n return;\n\n setVisibleLoadPanel(true);\n\n var ID = invoicePayload.header.ID;\n\n if (!ID) {\n //Vamos al tablero de control\n history.push('/Invoice');\n return;\n }\n\n let apiName = 'AdminSC';\n let path = '/procesafacturas';\n\n let myInit = {\n headers: {\n 'Content-Type': 'application/json',\n Authorization: `${(await Auth.currentSession()).getAccessToken().getJwtToken()}`\n },\n body: {\n ID: ID,\n payload: invoicePayload,\n action: 'delete',\n username: JSON.parse(JSON.stringify(await Auth.currentAuthenticatedUser())).username,\n usuario: props.usuario,\n sucursal: props.sucursal,\n }\n }\n\n var payloadPost = await API.post(apiName, path, myInit);\n\n if (payloadPost.ok === 'true') {\n setVisibleLoadPanel(false);\n\n setVisibleToast(true);\n setMessageToast('Factura eliminada con éxito');\n setTypeToast('success')\n\n setIsDetail(false);\n\n //Vamos al tablero de control\n history.push('/Invoice');\n }\n else if (payloadPost.ok === 'false') {\n setVisibleLoadPanel(false);\n\n setVisibleToast(true);\n setMessageToast(payloadPost.message);\n setTypeToast('error')\n }\n }\n catch (e) {\n setVisibleLoadPanel(false);\n\n if (e === 'No current user') {\n history.push('/');\n\n window.location.reload();\n }\n }\n }\n\n function onExporting(e) {\n const workbook = new Workbook();\n const worksheet = workbook.addWorksheet('Datos');\n\n exportDataGrid({\n component: e.component,\n worksheet,\n autoFilterEnabled: true,\n }).then(() => {\n workbook.xlsx.writeBuffer().then((buffer) => {\n saveAs(new Blob([buffer], { type: 'application/octet-stream' }), 'Datos.xlsx');\n });\n });\n e.cancel = true;\n };\n\n return (\n <div>\n {isDetail === false ? (\n <div class=\"bg-gray-200 m-2\">\n <h1 class=\"font-sans inline-block text-xl font-bold text-gray-700 leading-8 align-top mb-1\"><FontAwesomeIcon icon={faList} size=\"lg\" /> Facturas</h1>\n </div>\n ) :\n (\n <div class=\"bg-gray-200 m-2\">\n <h1 class=\"font-sans inline-block text-xl font-bold text-gray-700 leading-8 align-top mb-1\"><FontAwesomeIcon icon={faFileInvoiceDollar} size=\"xl\" /> {(invoicePayload.header ? invoicePayload.header.Movimiento : 'Factura')}</h1>\n <TransactionStatus {...props} Estatus={invoicePayload.header.Estatus} />\n </div>\n )}\n\n <LoadPanel\n shadingColor=\"rgba(0,0,0,0.4)\"\n visible={visibleLoadPanel}\n showIndicator={true}\n message=\"Por favor espere...\"\n shading={true}\n showPane={true}\n hideOnOutsideClick={false}\n />\n\n <Toast\n visible={visibleToast}\n message={messageToast}\n type={typeToast}\n onHiding={onHidingToast}\n displayTime={5000}\n width={'auto'}\n position={{\n my: 'top center',\n at: 'top center',\n of: window,\n offset: '0 130'\n }}\n />\n\n <div class=\"bg-gray-200 m-2\">\n {isDetail === false ? (\n <div class=\"bg-white p-3 shadow-xl\">\n <div>\n <button onClick={refreshButton} type=\"submit\" class=\"mb-4 bg-blue-500 hover:bg-blue-700 text-white font-bold py-2 px-4 rounded\">\n <FontAwesomeIcon icon={faArrowsRotate} /> Actualizar\n </button>\n </div>\n <div className=\"options mb-2\">\n <div className=\"option\">\n <CheckBox text=\"Expandir todos los grupos\"\n value={autoExpandAll}\n onValueChanged={onAutoExpandAllChanged}></CheckBox>\n </div>\n </div>\n <DataGrid\n height={800}\n id=\"gridContainer\"\n columnsAutoWidth={true}\n filterBuilder={filterBuilder}\n dataSource={store}\n defaultFilterValue={filterValue}\n allowColumnReordering={true}\n allowColumnResizing={true}\n columnResizingMode={\"widget\"}\n showBorders={true}\n rowAlternationEnabled={true}\n showRowLines={true}\n showColumnLines={true}\n remoteOperations={{ filtering: true }}\n ref={gridTableroRef}\n onExporting={onExporting}\n >\n <Scrolling rowRenderingMode='virtual'></Scrolling>\n <Paging defaultPageSize={10} />\n <Pager\n visible={true}\n allowedPageSizes={allowedPageSizes}\n displayMode='compact'\n showPageSizeSelector={true}\n showInfo={true}\n showNavigationButtons={true}\n />\n <FilterRow visible={true} />\n <FilterPanel visible={true} />\n <FilterBuilderPopup position={filterBuilderPopupPosition} />\n\n <HeaderFilter visible={true} />\n\n <GroupPanel visible={true} />\n <SearchPanel visible={true} />\n <ColumnChooser\n enabled={true}\n mode='select'\n >\n <ColumnChooserSearch\n enabled={true}\n />\n\n <ColumnChooserSelection\n allowSelectAll={true}\n selectByClick={true}\n recursive={true}\n />\n </ColumnChooser>\n <Grouping autoExpandAll={autoExpandAll} />\n <StateStoring enabled={true} type=\"localStorage\" storageKey=\"gridContainerInvoice\" />\n <Export enabled={true} />\n\n <Column caption=\"\" alignment=\"center\" width={100} cellRender={editInvoice} />\n\n <Column dataField=\"MovID\" dataType=\"string\" width={110} caption=\"Folio\" />\n <Column dataField=\"FechaEmision\" caption=\"Fecha Emisión\" dataType=\"date\" width={130} />\n <Column dataField=\"Estatus\" dataType=\"string\" width={120} />\n <Column dataField=\"NombreCliente\" caption=\"Nombre Cliente\" dataType=\"string\" width={250} />\n <Column dataField=\"Plaza\" caption=\"Plaza\" dataType=\"string\" width={150} visible={false} />\n <Column dataField=\"Pedido\" dataType=\"string\" width={150} />\n\n <Column dataField=\"ID\" dataType=\"number\" width={150} visible={false} />\n <Column dataField=\"Mov\" dataType=\"string\" width={190} caption=\"Tipo Movimiento\" visible={false} />\n <Column dataField=\"Movimiento\" dataType=\"string\" width={190} visible={false} />\n <Column dataField=\"SCSituacionCom\" dataType=\"string\" width={190} caption=\"Situación Comisiones\" visible={false} />\n <Column dataField=\"SCSituacionInc\" dataType=\"string\" width={190} caption=\"Situación Incentivos\" visible={false} />\n\n <Column dataField=\"Importe\" caption=\"Importe\" dataType=\"number\" width={150} visible={false}>\n <Format\n type=\"currency\"\n precision={2}\n />\n </Column>\n <Column dataField=\"Impuestos\" caption=\"Impuestos\" dataType=\"number\" width={150} visible={false}>\n <Format\n type=\"currency\"\n precision={2}\n />\n </Column>\n <Column dataField=\"ImporteTotal\" caption=\"Importe Total\" dataType=\"number\" width={150}>\n <Format\n type=\"currency\"\n precision={2}\n />\n </Column>\n\n <Column dataField=\"Almacen\" dataType=\"string\" width={190} caption=\"Almacén\" visible={false} />\n <Column dataField=\"NombreAlmacen\" dataType=\"string\" width={190} caption=\"Nombre Almacén\" visible={false} />\n <Column dataField=\"Agente\" dataType=\"string\" width={190} visible={false} />\n <Column dataField=\"NombreAgente\" dataType=\"string\" width={190} visible={false} />\n <Column dataField=\"Cliente\" dataType=\"string\" width={190} visible={false} />\n <Column dataField=\"Sucursal\" dataType=\"number\" width={150} visible={false} />\n <Column dataField=\"NombreSucursal\" dataType=\"string\" width={190} visible={false} />\n <Column dataField=\"Usuario\" dataType=\"string\" width={190} visible={false} />\n <Column dataField=\"NombreUsuario\" dataType=\"string\" width={190} visible={false} />\n <Column dataField=\"Origen\" dataType=\"string\" width={190} visible={false} />\n\n <Column dataField=\"CFDIFechaTimbrado\" dataType=\"datetime\" caption=\"CFDI - Fecha Certificación\" width={190} visible={false} />\n <Column dataField=\"CFDIUUID\" dataType=\"string\" caption=\"CFDI - UUID\" width={190} visible={false} />\n <Column dataField=\"PlazaEntrega\" dataType=\"string\" width={250} caption=\"Plaza Entrega\" visible={false} />\n\n <Summary>\n <GroupItem\n column=\"Importe\"\n summaryType=\"sum\"\n valueFormat=\"$,##0.##\"\n displayFormat=\"Importe {0}\"\n showInGroupFooter={false}>\n </GroupItem>\n <GroupItem\n column=\"Impuestos\"\n summaryType=\"sum\"\n valueFormat=\"$,##0.##\"\n displayFormat=\"Impuestos {0}\"\n showInGroupFooter={false}>\n </GroupItem>\n <GroupItem\n column=\"ImporteTotal\"\n summaryType=\"sum\"\n valueFormat=\"$,##0.##\"\n displayFormat=\"Importe Total {0}\"\n showInGroupFooter={false}>\n </GroupItem>\n <TotalItem\n column=\"Importe\"\n summaryType=\"sum\"\n valueFormat=\"$,##0.##\"\n displayFormat=\"Importe {0}\"\n showInColumn=\"Importe\">\n </TotalItem>\n <TotalItem\n column=\"Impuestos\"\n summaryType=\"sum\"\n valueFormat=\"$,##0.##\"\n displayFormat=\"Impuestos {0}\"\n showInColumn=\"Impuestos\">\n </TotalItem>\n <TotalItem\n column=\"ImporteTotal\"\n summaryType=\"sum\"\n valueFormat=\"$,##0.##\"\n displayFormat=\"Importe Total {0}\"\n showInColumn=\"ImporteTotal\">\n </TotalItem>\n </Summary>\n </DataGrid>\n </div>\n ) : (<div />)}\n <Route exact path=\"/Invoice/:ID\" render={({ match }) => {\n return (\n <div class=\"bg-gray-200\">\n {isDetail.toString() === 'true' ?\n (\n <div>\n <Link to=\"/Invoice\">\n <button onClick={cancelEditButton} type=\"submit\" class=\"mb-4 bg-red-500 hover:bg-red-700 text-white font-bold py-2 px-4 rounded\">\n <FontAwesomeIcon icon={faArrowRotateLeft} /> Regresar\n </button>\n </Link>\n\n {activateConfirmButton.toString() === 'true' && id ?\n (\n <button onClick={confirmButton} type=\"submit\" class=\"ml-4 mb-4 bg-green-500 hover:bg-green-700 text-white font-bold py-2 px-4 rounded\">\n <FontAwesomeIcon icon={faPlay} /> Afectar\n </button>\n ) : (\n <div class=\"inline-block\"></div>\n )}\n\n {activateDeleteButton.toString() === 'true' && id ?\n (\n <button onClick={deleteButton} type=\"submit\" class=\"ml-4 mb-4 bg-red-500 hover:bg-red-700 text-white font-bold py-2 px-4 rounded\">\n <FontAwesomeIcon icon={faTrash} /> Eliminar\n </button>\n ) :\n (\n <div class=\"inline-block\"></div>\n )}\n\n\n {activatePDFButton.toString() === 'true' && id ?\n (\n <button onClick={printButton} type=\"submit\" class=\"ml-4 mb-4 bg-gray-500 hover:bg-gray-700 text-white font-bold py-2 px-4 rounded\">\n <FontAwesomeIcon icon={faFilePdf} /> PDF\n </button>\n ) :\n (\n <div class=\"inline-block\"></div>\n )}\n\n {activateRegenerateCFDi && id ?\n (\n <button onClick={regenerateCFDiFilesButton} type=\"submit\" class=\"ml-4 mb-4 bg-blue-500 hover:bg-blue-700 text-white font-bold py-2 px-4 rounded\">\n <FontAwesomeIcon icon={faFiles} /> Regenerar CFDi\n </button>\n ) :\n (\n <div class=\"inline-block\"></div>\n )}\n\n {activateSendCFDi && id ?\n (\n <button onClick={sendCFDiFilesButton} type=\"submit\" class=\"ml-4 mb-4 bg-blue-500 hover:bg-blue-700 text-white font-bold py-2 px-4 rounded\">\n <FontAwesomeIcon icon={faEnvelope} /> Reenviar CFDi\n </button>\n ) :\n (\n <div class=\"inline-block\"></div>\n )}\n\n <div class=\"bg-white p-4 shadow-xl\">\n <Form\n id=\"formTransaccion\"\n labelMode={'outside'}\n formData={invoicePayload}\n readOnly={true}\n showColonAfterLabel={false}\n labelLocation={'top'}\n ref={formDatosGeneralesRef}\n >\n <TabbedItem>\n <TabPanelOptions deferRendering={false} showNavButtons={true} />\n <Tab title=\"Datos Generales\" colCount={2}>\n <GroupItem caption=\"General\" colCount={2}>\n <Item cssClass=\"boldText\" colSpan={2} dataField=\"header.Movimiento\" editorOptions={movimientoEditorOptions} >\n <Label text={\"Movimiento\"} />\n </Item>\n <Item dataField=\"header.FechaEmision\" editorType=\"dxDateBox\" editorOptions={fechaEmisionEditorOptions}>\n <Label text={\"Fecha Emisión\"} />\n </Item>\n <Item dataField=\"header.SCRama\" editorOptions={pedidoEditorOptions} >\n <Label text={\"Pedido\"} />\n </Item>\n <Item dataField=\"header.Condicion\" editorType=\"dxSelectBox\" editorOptions={condicionEditorOptions} >\n <RequiredRule message=\"Condiciones es requerido\" />\n <Label text={\"Condiciones\"} />\n </Item>\n <Item dataField=\"header.ListaPreciosEsp\" editorType=\"dxSelectBox\" editorOptions={listaPreciosEditorOptions} >\n <RequiredRule message=\"Lista de Precios es requerido\" />\n <Label text={\"Lista de Precios\"} />\n </Item>\n <Item dataField=\"header.Agente\" editorType=\"dxSelectBox\" editorOptions={agenteEditorOptions} colSpan={2} >\n <RequiredRule message=\"Vendedor es requerido\" />\n <Label text={\"Vendedor\"} />\n </Item>\n </GroupItem>\n <GroupItem caption=\"Cliente\" colCount={2}>\n <Item dataField=\"header.Cliente\" colSpan={2} editorType=\"dxLookup\" editorOptions={clienteEditorOptions} >\n <Label text={\"Cliente\"} />\n </Item>\n <Item dataField=\"header.cte_RFC\" editorOptions={rfcEditorOptions}>\n <Label text={\"RFC\"} />\n </Item>\n </GroupItem>\n <GroupItem caption=\"Artículos\" colSpan={2}>\n <DataGrid\n id=\"gridArticulos\"\n ref={gridArticulosRef}\n columnsAutoWidth={true}\n dataSource={invoicePayload.detail}\n showBorders={true}\n showColumnLines={true}\n showRowLines={true}\n rowAlternationEnabled={true}\n allowColumnResizing={true}\n columnResizingMode=\"widget\"\n allowColumnReordering={false}\n repaintChangesOnly={true}\n >\n <Scrolling\n mode='virtual'\n />\n <Editing\n mode=\"cell\"\n newRowPosition=\"last\"\n allowUpdating={false}\n allowAdding={false}\n allowDeleting={false}\n />\n\n <Sorting mode=\"none\" />\n\n <Column dataField=\"Renglon\" width={190} visible={false} />\n <Column dataField=\"Articulo\" caption=\"Artículo\" width={600} calculateDisplayValue=\"ArtDescripcion\" >\n <Lookup\n dataSource={storeArticulo}\n displayExpr=\"name\"\n valueExpr=\"value\"\n searchEnabled={true}\n showClearButton={true}\n acceptCustomValue={false}\n clearButtonText='Cerrar'\n noDataText='No se encontraron resultados'\n />\n <RequiredRule message=\"Artículo es requerido\" />\n </Column>\n <Column dataField=\"ArtDescripcion\" width={400} allowEditing={false} visible={false} />\n <Column dataField=\"Cantidad\" width={80} dataType=\"number\" editorOptions={cantidadEditorOptions}>\n <RequiredRule message=\"Cantidad es requerida\" />\n </Column>\n <Column dataField=\"Precio\" width={110} dataType=\"number\">\n <RequiredRule message=\"Precio es requerido\" />\n <Format\n type=\"currency\"\n precision={2}\n\n />\n </Column>\n <Column dataField=\"Importe\" width={150} allowEditing={false} dataType=\"number\">\n <Format\n type=\"currency\"\n precision={2}\n />\n </Column>\n <Summary>\n <TotalItem\n column=\"Importe\"\n summaryType=\"sum\"\n valueFormat=\"$,##0.##\"\n displayFormat=\"Total {0}\"\n showInColumn=\"Importe\"\n />\n </Summary>\n </DataGrid>\n </GroupItem>\n </Tab>\n <Tab title=\"Observaciones\" >\n <Item dataField=\"header.Observaciones\" editorType=\"dxTextArea\" editorOptions={observacionesEditorOptions}>\n <Label text=\"Observaciones\" visible={false} />\n </Item>\n </Tab>\n <Tab title=\"Registros Relacionados\">\n <DataGrid\n id=\"gridRelatedRecords\"\n columnsAutoWidth={true}\n dataSource={invoicePayload.relatedRecords}\n allowColumnReordering={true}\n allowColumnResizing={true}\n columnResizingMode={\"widget\"}\n showBorders={true}\n rowAlternationEnabled={true}\n showRowLines={true}\n showColumnLines={true}\n >\n <HeaderFilter visible={false} />\n\n <Column dataField=\"name\" dataType=\"string\" width={300} caption=\"Transacción\" />\n <Column caption=\"Estatus\" alignment=\"center\" width={150} cellRender={estatusRelatedRecords} />\n <Column caption=\"\" alignment=\"center\" width={50} cellRender={openRelatedRecordButton} />\n <Column dataField=\"FechaEmision\" dataType=\"date\" width={150} caption=\"Fecha Emisión\" />\n <Column dataField=\"ImporteTotal\" caption=\"Importe Total\" dataType=\"number\" width={180} >\n <Format\n type=\"currency\"\n precision={2}\n />\n </Column>\n </DataGrid>\n </Tab>\n\n <Tab title=\"CFDi\" colCount={2}>\n <Item dataField=\"header.cfdi_CFDIFechaTimbrado\" editorOptions={datosCFDIEditorOptions}>\n <Label text=\"Fecha Certificación\" />\n </Item>\n <Item dataField=\"header.cfdi_CFDIUUID\" editorOptions={datosCFDIEditorOptions}>\n <Label text=\"UUID\" />\n </Item>\n <Item dataField=\"header.cfdi_CFDITipoComprobante\" editorOptions={datosCFDIEditorOptions}>\n <Label text=\"Tipo de Comprobante\" />\n </Item>\n </Tab>\n <Tab title=\"Log Estatus\">\n <DataGrid\n id=\"gridLogEstatus\"\n columnsAutoWidth={true}\n dataSource={invoicePayload.movEstatusLog}\n allowColumnReordering={true}\n allowColumnResizing={true}\n columnResizingMode={\"widget\"}\n showBorders={true}\n rowAlternationEnabled={true}\n showRowLines={true}\n showColumnLines={true}\n >\n <HeaderFilter visible={false} />\n <Column dataField=\"Usuario\" dataType=\"string\" width={350} caption=\"Usuario\" />\n <Column caption=\"Estatus\" alignment=\"center\" width={150} cellRender={estatusRelatedRecords} />\n <Column dataField=\"Fecha\" dataType=\"datetime\" width={300} caption=\"Fecha\" />\n </DataGrid>\n </Tab>\n <Tab title=\"Archivos Anexos\" >\n <div className=\"widget-container\">\n <FileUploader\n multiple={true}\n accept=\"*\"\n uploadMode=\"useButtons\"\n chunkSize={20000000}\n maxFileSize={20000000}\n uploadChunk={uploadChunk}\n disabled={!activateAttachments}\n />\n </div>\n <div id=\"wrapper\" className=\"show-widget\" >\n <div id=\"widget-area\">\n <FileManager id=\"attachmentManager\" fileSystemProvider={attachments} onItemDeleting={onAttachmentDeleting} onItemDownloading={onItemDownloading} onSelectedFileOpened={onAttachmentOpen}>\n <Permissions\n create={false}\n copy={false}\n move={false}\n delete={false}\n rename={false}\n upload={false}\n download={true}\n >\n </Permissions>\n </FileManager>\n </div>\n </div>\n </Tab>\n </TabbedItem>\n </Form>\n </div>\n </div>\n ) :\n (\n <div></div>\n )\n }\n </div>\n )\n }}\n />\n </div>\n </div>\n );\n}\n","import React, { useState, useEffect, useRef, useMemo } from 'react';\n\n// LoadPanel\nimport { LoadPanel } from 'devextreme-react/load-panel';\n\n// Toast\nimport { Toast } from 'devextreme-react/toast';\n\n//Form\nimport Form, { GroupItem, Label, TabbedItem, TabPanelOptions, Tab, EmptyItem } from 'devextreme-react/form';\n\nimport { Auth, API, Storage } from 'aws-amplify';\n\n// Ruteador\nimport { Route, Link, useHistory } from \"react-router-dom\";\n\n// Grid\nimport DataGrid, {\n Column, FilterRow, HeaderFilter, FilterPanel, FilterBuilderPopup,\n GroupPanel, Grouping, SearchPanel, Sorting, Editing, Lookup, Toolbar, Item, RequiredRule,\n Scrolling, Pager, Paging, Summary, TotalItem, StateStoring, ColumnChooser, Format, Selection,\n Export, ColumnChooserSearch, ColumnChooserSelection\n} from 'devextreme-react/data-grid';\n\n//CheckBox\nimport CheckBox from 'devextreme-react/check-box';\n\n//ContextMenu\nimport ContextMenu from 'devextreme-react/context-menu';\n\n// Iconos\nimport { FontAwesomeIcon } from \"@fortawesome/react-fontawesome\";\nimport { faGlasses } from \"@fortawesome/pro-solid-svg-icons\";\nimport { faPencilAlt } from \"@fortawesome/pro-solid-svg-icons\";\nimport { faArrowRotateLeft } from \"@fortawesome/pro-solid-svg-icons\";\nimport { faSave } from \"@fortawesome/pro-solid-svg-icons\";\nimport { faList } from \"@fortawesome/pro-duotone-svg-icons\";\nimport { faFilePdf } from \"@fortawesome/pro-solid-svg-icons\";\nimport { faArrowsRotate } from \"@fortawesome/pro-solid-svg-icons\";\nimport { faFileAlt } from \"@fortawesome/pro-solid-svg-icons\";\nimport { faPiggyBank } from \"@fortawesome/pro-duotone-svg-icons\";\nimport { faPlay } from \"@fortawesome/pro-solid-svg-icons\";\nimport { faTrash } from \"@fortawesome/pro-solid-svg-icons\";\nimport { faWindowClose } from \"@fortawesome/pro-solid-svg-icons\";\nimport { faFiles } from \"@fortawesome/pro-solid-svg-icons\";\nimport { faEnvelope } from \"@fortawesome/pro-solid-svg-icons\";\n\n\nimport 'devextreme/data/odata/store';\nimport CustomStore from 'devextreme/data/custom_store';\n\nimport DataSource from 'devextreme/data/data_source';\n\nimport '../ListStyle.css';\n\n//FileUploader\nimport FileUploader from 'devextreme-react/file-uploader';\n\n//FileManager\nimport FileManager, { Permissions } from 'devextreme-react/file-manager';\n\nimport dxDateBox from \"devextreme/ui/date_box\";\n\nimport dxNumberBox from \"devextreme/ui/number_box\";\n\nimport TransactionStatus from \"../TransactionStatus/TransactionStatus.js\";\n\nimport Lambda from 'aws-sdk/clients/lambda';\n\nimport { Workbook } from 'exceljs';\nimport { saveAs } from 'file-saver';\nimport { exportDataGrid } from 'devextreme/excel_exporter'\n\ndxDateBox.defaultOptions({\n options: {\n dateSerializationFormat: \"yyyy-MM-dd\"\n }\n});\n\ndxNumberBox.defaultOptions({\n options: {\n step: 0\n }\n});\n\nfunction isNotEmpty(value) {\n return value !== undefined && value !== null && value !== '';\n}\n\nexport default function CustomerPayment(props) {\n const history = useHistory();\n\n const [isDetail, setIsDetail] = useState(false);\n const [id, setId] = useState();\n const [permissionLevel, setPermissionLevel] = useState(props.nivel);\n const [customerPaymentPayload, setCustomerPaymentPayload] = useState({\n header: {},\n movEstatusLog: []\n });\n\n const [autoExpandAll, setAutoExpandAll] = useState(true);\n\n // setValue para el control tab\n const [value, setValue] = React.useState(0);\n\n const [visibleLoadPanel, setVisibleLoadPanel] = useState(false);\n\n const [visibleToast, setVisibleToast] = useState(false);\n const [messageToast, setMessageToast] = useState('');\n const [typeToast, setTypeToast] = useState('success');\n\n const [acceptCustomValues, setAcceptCustomValue] = useState(false);\n const [activateSaveButton, setActivateSaveButton] = useState(false);\n const [activateConfirmButton, setActivateConfirmButton] = useState(false);\n const [activateDeleteButton, setActivateDeleteButton] = useState(false);\n const [activateCancelButton, setActivateCancelButton] = useState(false);\n const [activatePDFButton, setActivatePDFButton] = useState(false);\n const [activateUpdateForm, setActivateUpdateForm] = useState(false);\n const [activateAttachments, setActivateAttachments] = useState(false);\n const [activateRegenerateCFDi, setActivateRegenerateCFDi] = useState(false);\n const [activateSendCFDi, setActivateSendCFDi] = useState(false);\n\n const [requiereDigitosTarjeta, setRequiereDigitosTarjeta] = useState(false);\n const [esPostfechado, setEsPostfechado] = useState(false);\n\n const [formaPago, setFormaPago] = useState([]);\n const [usuarios, setUsuarios] = useState([]);\n\n const [regenerateCFDi, setRegenerateCFDi] = useState(props.regenerateCFDi);\n const [sendCFDi, setSendCFDi] = useState(props.sendCFDi);\n\n //Ref para el form\n const [formDatosGeneralesRef, setFormDatosGeneralesRef] = useState(React.createRef());\n\n const [attachments, setAttachments] = useState([]);\n\n const handleChange = (event, newValue) => {\n setValue(newValue);\n };\n\n const filterBuilderPopupPosition = {\n of: window,\n at: 'top',\n my: 'top',\n offset: { y: 10 },\n };\n\n const allowedPageSizes = [5, 10, 15, 20, 'all'];\n\n const exportFormats = ['xlsx'];\n\n function getOrderDay(rowData) {\n return (new Date(rowData.OrderDate)).getDay();\n }\n\n const filterBuilder = {\n customOperations: [{\n name: 'weekends',\n caption: 'Weekends',\n dataTypes: ['date'],\n icon: 'check',\n hasValue: false,\n calculateFilterExpression: () => [[getOrderDay, '=', 0], 'or', [getOrderDay, '=', 6]],\n }],\n allowHierarchicalFields: true,\n };\n\n const filterValue = [['Estatus', '=', 'Sin Afectar']];\n\n //Ref para el grid Tablero de Control\n const [gridTableroRef, setGridTableroRef] = useState(React.createRef());\n\n function onAutoExpandAllChanged() {\n setAutoExpandAll(!autoExpandAll)\n };\n\n async function getCustomerPaymentRecords(sqlFilter) {\n try {\n let apiName = 'AdminSC';\n let path = '/procesaanticiposaldo';\n\n let myInit = {\n headers: {\n 'Content-Type': 'application/json',\n Authorization: `${(await Auth.currentSession()).getAccessToken().getJwtToken()}`\n },\n queryStringParameters: {\n action: 'list',\n sqlFilter: sqlFilter,\n salesAccess: props.salesAccess,\n sucursal: props.sucursal,\n username: JSON.parse(JSON.stringify(await Auth.currentAuthenticatedUser())).username\n }\n }\n\n var customerPaymentsGet = await API.get(apiName, path, myInit);\n }\n catch (e) {\n if (e === 'No current user') {\n history.push('/');\n\n window.location.reload();\n }\n }\n\n return customerPaymentsGet;\n }\n\n const store = new CustomStore({\n key: 'ID',\n load(loadOptions) {\n let sqlFilter = '(';\n [\n 'filter'\n ].forEach((i) => {\n if (i in loadOptions && isNotEmpty(loadOptions[i])) {\n var filters = loadOptions[i];\n\n var filtersLength = filters.length;\n\n for (var i = 0; i <= filtersLength; i++) {\n var singleFilter = filters[i];\n var singleFilterType = typeof singleFilter;\n var singleFilterIsArray = Array.isArray(singleFilter);\n var singleFilterIsDate = singleFilter instanceof Date;\n\n if (singleFilter === 'NULL') {\n singleFilter = '0';\n }\n\n if (singleFilterType.toString() === 'object' && singleFilterIsArray) {\n sqlFilter += '(';\n\n var subFiltersLength = singleFilter.length;\n\n for (var i2 = 0; i2 <= subFiltersLength; i2++) {\n var singleSubFilter = singleFilter[i2];\n var singleSubFilterType = typeof singleSubFilter;\n var singleSubFilterIsArray = Array.isArray(singleSubFilter);\n var singleSubFilterIsDate = singleSubFilter instanceof Date\n\n if (singleSubFilter === 'NULL') {\n singleSubFilter = '0';\n }\n\n if (singleSubFilterType.toString() === 'object' && singleSubFilterIsArray) {\n sqlFilter += '(';\n\n var subSubFiltersLength = singleSubFilter.length;\n\n for (var i3 = 0; i3 <= subSubFiltersLength; i3++) {\n var singleSubSubFilter = singleSubFilter[i3];\n var singleSubSubFilterType = typeof singleSubSubFilter;\n var singleSubSubFilterIsArray = Array.isArray(singleSubSubFilter);\n var singleSubSubFilterIsDate = singleSubSubFilter instanceof Date\n\n if (singleSubSubFilter === 'NULL') {\n singleSubSubFilter = '0';\n }\n\n if (singleSubSubFilterType.toString() === 'object' && singleSubSubFilterIsArray) {\n sqlFilter += '(';\n\n var subSubSubFiltersLength = singleSubSubFilter.length;\n\n for (var i4 = 0; i4 <= subSubSubFiltersLength; i4++) {\n var singleSubSubSubFilter = singleSubSubFilter[i4];\n var singleSubSubSubFilterType = typeof singleSubSubSubFilter;\n var singleSubSubSubFilterIsArray = Array.isArray(singleSubSubSubFilter);\n var singleSubSubSubFilterIsDate = singleSubSubSubFilter instanceof Date\n\n if (singleSubSubSubFilter === 'NULL') {\n singleSubSubSubFilter = '0';\n }\n\n if (singleSubSubSubFilterType.toString() === 'object' && singleSubSubSubFilterIsArray) {\n sqlFilter += '(';\n\n var subSubSubSubFiltersLength = singleSubSubSubFilter.length;\n\n for (var i5 = 0; i5 <= subSubSubSubFiltersLength; i5++) {\n var singleSubSubSubSubFilter = singleSubSubSubFilter[i5];\n var singleSubSubSubSubFilterType = typeof singleSubSubSubSubFilter;\n var singleSubSubSubSubFilterIsArray = Array.isArray(singleSubSubSubSubFilter);\n var singleSubSubSubSubFilterIsDate = singleSubSubSubSubFilter instanceof Date\n\n if (singleSubSubSubSubFilter === 'NULL') {\n singleSubSubSubSubFilter = '0';\n }\n\n if (singleSubSubSubSubFilterType.toString() === 'string') {\n if (singleSubSubSubSubFilter === 'contains') {\n filters[i][i2][i3][i4][i5] = 'LIKE';\n singleSubSubSubSubFilter = 'LIKE';\n\n filters[i][i2][i3][i4][i5 + 1] = '\\'%' + filters[i][i2][i3][i4][i5 + 1] + '%\\'';\n }\n else if (singleSubSubSubSubFilter === 'notcontains') {\n filters[i][i2][i3][i4][i5] = 'NOT LIKE';\n singleSubSubSubSubFilter = 'NOT LIKE';\n\n filters[i][i2][i3][i4][i5 + 1] = '\\'%' + filters[i][i2][i3][i4][i5 + 1] + '%\\'';\n }\n else if (singleSubSubSubSubFilter === 'startswith') {\n filters[i][i2][i3][i4][i5] = 'LIKE';\n singleSubSubSubSubFilter = 'LIKE';\n\n filters[i][i2][i3][i4][i5 + 1] = '\\'' + filters[i][i2][i3][i4][i5 + 1] + '%\\'';\n }\n else if (singleSubSubSubSubFilter === 'endswith') {\n filters[i][i2][i3][i4][i5] = 'LIKE';\n singleSubSubSubSubFilter = 'LIKE';\n\n filters[i][i2][i3][i4][i5 + 1] = '\\'%' + filters[i][i2][i3][i4][i5 + 1] + '\\'';\n }\n else if (singleSubSubSubSubFilter === '=' || singleSubSubSubSubFilter === '<>' || singleSubSubSubSubFilter === '>' || singleSubSubSubSubFilter === '>=' || singleSubSubSubSubFilter === '<' || singleSubSubSubSubFilter === '<=') {\n if (!filters[i][i2][i3][i4][i5 + 1])\n filters[i][i2][i3][i4][i5 + 1] = 'NULL';\n else if (typeof filters[i][i2][i3][i4][i5 + 1] === 'string') {\n filters[i][i2][i3][i4][i5 + 1] = '\\'' + filters[i][i2][i3][i4][i5 + 1] + '\\'';\n }\n }\n else if (singleSubSubSubSubFilter === '!') {\n filters[i][i2][i3][i4][i5] = 'NOT';\n singleSubSubSubSubFilter = 'NOT';\n }\n\n sqlFilter += ' ' + singleSubSubSubSubFilter + ' ';\n }\n else if (singleSubSubSubSubFilterType.toString() === 'object' && singleSubSubSubSubFilterIsDate) {\n sqlFilter += ' \\'' + singleSubSubSubSubFilter.toISOString().split('T')[0] + '\\' ';\n }\n else if (singleSubSubSubSubFilterType.toString() === 'number') {\n sqlFilter += ' ' + singleSubSubSubSubFilter.toString() + ' ';\n }\n else if (singleSubSubSubSubFilterType.toString() === 'boolean') {\n if (singleSubSubSubSubFilter.toString() === 'true')\n sqlFilter += '1 ';\n else if (singleSubSubSubSubFilter.toString() === 'false' || singleSubSubSubSubFilter === null || singleSubSubSubSubFilter === undefined)\n sqlFilter += '0 ';\n }\n }\n }\n else if (singleSubSubSubFilterType.toString() === 'string') {\n if (singleSubSubSubFilter === 'contains') {\n filters[i][i2][i3][i4] = 'LIKE';\n singleSubSubSubFilter = 'LIKE';\n\n filters[i][i2][i3][i4 + 1] = '\\'%' + filters[i][i2][i3][i4 + 1] + '%\\'';\n }\n else if (singleSubSubSubFilter === 'notcontains') {\n filters[i][i2][i3][i4] = 'NOT LIKE';\n singleSubSubSubFilter = 'NOT LIKE';\n\n filters[i][i2][i3][i4 + 1] = '\\'%' + filters[i][i2][i3][i4 + 1] + '%\\'';\n }\n else if (singleSubSubSubFilter === 'startswith') {\n filters[i][i2][i3][i4] = 'LIKE';\n singleSubSubSubFilter = 'LIKE';\n\n filters[i][i2][i3][i4 + 1] = '\\'' + filters[i][i2][i3][i4 + 1] + '%\\'';\n }\n else if (singleSubSubSubFilter === 'endswith') {\n filters[i][i2][i3][i4] = 'LIKE';\n singleSubSubSubFilter = 'LIKE';\n\n filters[i][i2][i3][i4 + 1] = '\\'%' + filters[i][i2][i3][i4 + 1] + '\\'';\n }\n else if (singleSubSubSubFilter === '=' || singleSubSubSubFilter === '<>' || singleSubSubSubFilter === '>' || singleSubSubSubFilter === '>=' || singleSubSubSubFilter === '<' || singleSubSubSubFilter === '<=') {\n if (!filters[i][i2][i3][i4 + 1])\n filters[i][i2][i3][i4 + 1] = 'NULL';\n else if (typeof filters[i][i2][i3][i4 + 1] === 'string') {\n filters[i][i2][i3][i4 + 1] = '\\'' + filters[i][i2][i3][i4 + 1] + '\\'';\n }\n }\n else if (singleSubSubSubFilter === '!') {\n filters[i][i2][i3][i4] = 'NOT';\n singleSubSubSubFilter = 'NOT';\n }\n\n sqlFilter += ' ' + singleSubSubSubFilter + ' ';\n }\n else if (singleSubSubSubFilterType.toString() === 'object' && singleSubSubSubFilterIsDate) {\n sqlFilter += ' \\'' + singleSubSubSubFilter.toISOString().split('T')[0] + '\\' ';\n }\n else if (singleSubSubSubFilterType.toString() === 'number') {\n sqlFilter += ' ' + singleSubSubSubFilter.toString() + ' ';\n }\n else if (singleSubSubSubFilterType.toString() === 'boolean') {\n if (singleSubSubSubFilter.toString() === 'true')\n sqlFilter += '1 ';\n else if (singleSubSubSubFilter.toString() === 'false' || singleSubSubSubFilter === null || singleSubSubSubFilter === undefined)\n sqlFilter += '0 ';\n }\n }\n\n sqlFilter += ')';\n }\n else if (singleSubSubFilterType.toString() === 'string') {\n if (singleSubSubFilter === 'contains') {\n filters[i][i2][i3] = 'LIKE';\n singleSubSubFilter = 'LIKE';\n\n filters[i][i2][i3 + 1] = '\\'%' + filters[i][i2][i3 + 1] + '%\\'';\n }\n else if (singleSubSubFilter === 'notcontains') {\n filters[i][i2][i3] = 'NOT LIKE';\n singleSubSubFilter = 'NOT LIKE';\n\n filters[i][i2][i3 + 1] = '\\'%' + filters[i][i2][i3 + 1] + '%\\'';\n }\n else if (singleSubSubFilter === 'startswith') {\n filters[i][i2][i3] = 'LIKE';\n singleSubSubFilter = 'LIKE';\n\n filters[i][i2][i3 + 1] = '\\'' + filters[i][i2][i3 + 1] + '%\\'';\n }\n else if (singleSubSubFilter === 'endswith') {\n filters[i][i2][i3] = 'LIKE';\n singleSubSubFilter = 'LIKE';\n\n filters[i][i2][i3 + 1] = '\\'%' + filters[i][i2][i3 + 1] + '\\'';\n }\n else if (singleSubSubFilter === '=' || singleSubSubFilter === '<>' || singleSubSubFilter === '>' || singleSubSubFilter === '>=' || singleSubSubFilter === '<' || singleSubSubFilter === '<=') {\n if (!filters[i][i2][i3 + 1])\n filters[i][i2][i3 + 1] = 'NULL';\n else if (typeof filters[i][i2][i3 + 1] === 'string') {\n filters[i][i2][i3 + 1] = '\\'' + filters[i][i2][i3 + 1] + '\\'';\n }\n }\n else if (singleSubSubFilter === '!') {\n filters[i][i2][i3] = 'NOT';\n singleSubSubFilter = 'NOT';\n }\n sqlFilter += ' ' + singleSubSubFilter + ' ';\n }\n else if (singleSubSubFilterType.toString() === 'object' && singleSubSubFilterIsDate) {\n sqlFilter += ' \\'' + singleSubSubFilter.toISOString().split('T')[0] + '\\' ';\n }\n else if (singleSubSubFilterType.toString() === 'number') {\n sqlFilter += ' ' + singleSubSubFilter.toString() + ' ';\n }\n else if (singleSubSubFilterType.toString() === 'boolean') {\n if (singleSubSubFilter.toString() === 'true')\n sqlFilter += '1 ';\n else if (singleSubSubFilter.toString() === 'false' || singleSubSubFilter === null || singleSubSubFilter === undefined)\n sqlFilter += '0 ';\n }\n }\n\n sqlFilter += ')';\n }\n else if (singleSubFilterType.toString() === 'string') {\n if (singleSubFilter === 'contains') {\n filters[i][i2] = 'LIKE';\n singleSubFilter = 'LIKE';\n\n filters[i][i2 + 1] = '\\'%' + filters[i][i2 + 1] + '%\\'';\n }\n else if (singleSubFilter === 'notcontains') {\n filters[i][i2] = 'NOT LIKE';\n singleSubFilter = 'NOT LIKE';\n\n filters[i][i2 + 1] = '\\'%' + filters[i][i2 + 1] + '%\\'';\n }\n else if (singleSubFilter === 'startswith') {\n filters[i][i2] = 'LIKE';\n singleSubFilter = 'LIKE';\n\n filters[i][i2 + 1] = '\\'' + filters[i][i2 + 1] + '%\\'';\n }\n else if (singleSubFilter === 'endswith') {\n filters[i][i2] = 'LIKE';\n singleSubFilter = 'LIKE';\n\n filters[i][i2 + 1] = '\\'%' + filters[i][i2 + 1] + '\\'';\n }\n else if (singleSubFilter === '=' || singleSubFilter === '<>' || singleSubFilter === '>' || singleSubFilter === '>=' || singleSubFilter === '<' || singleSubFilter === '<=') {\n if (!filters[i][i2 + 1])\n filters[i][i2 + 1] = 'NULL';\n else if (typeof filters[i][i2 + 1] === 'string') {\n filters[i][i2 + 1] = '\\'' + filters[i][i2 + 1] + '\\'';\n }\n }\n else if (singleSubFilter === '!') {\n filters[i][i2] = 'NOT';\n singleSubFilter = 'NOT';\n }\n sqlFilter += ' ' + singleSubFilter + ' ';\n }\n else if (singleSubFilterType.toString() === 'object' && singleSubFilterIsDate) {\n sqlFilter += ' \\'' + singleSubFilter.toISOString().split('T')[0] + '\\' ';\n }\n else if (singleSubFilterType.toString() === 'number') {\n sqlFilter += ' ' + singleSubFilter.toString() + ' ';\n }\n else if (singleSubFilterType.toString() === 'boolean') {\n if (singleSubFilter.toString() === 'true')\n sqlFilter += '1 ';\n else if (singleSubFilter.toString() === 'false' || singleSubFilter === null || singleSubFilter === undefined)\n sqlFilter += '0 ';\n }\n }\n\n sqlFilter += ')';\n }\n else if (singleFilterType.toString() === 'string') {\n if (singleFilter === 'contains') {\n filters[i] = 'LIKE';\n singleFilter = 'LIKE';\n\n filters[i + 1] = '\\'%' + filters[i + 1] + '%\\'';\n }\n else if (singleFilter === 'notcontains') {\n filters[i] = 'NOT LIKE';\n singleFilter = 'NOT LIKE';\n\n filters[i + 1] = '\\'%' + filters[i + 1] + '%\\'';\n }\n else if (singleFilter === 'startswith') {\n filters[i] = 'LIKE';\n singleFilter = 'LIKE';\n\n filters[i + 1] = '\\'' + filters[i + 1] + '%\\'';\n }\n else if (singleFilter === 'endswith') {\n filters[i] = 'LIKE';\n singleFilter = 'LIKE';\n\n filters[i + 1] = '\\'%' + filters[i + 1] + '\\'';\n }\n else if (singleFilter === '=' || singleFilter === '<>' || singleFilter === '>' || singleFilter === '>=' || singleFilter === '<' || singleFilter === '<=') {\n if (!filters[i + 1])\n filters[i + 1] = 'NULL';\n else if (typeof filters[i + 1] === 'string') {\n filters[i + 1] = '\\'' + filters[i + 1] + '\\'';\n }\n }\n else if (singleFilter === '!') {\n filters[i] = 'NOT';\n singleFilter = 'NOT';\n }\n sqlFilter += ' ' + singleFilter + ' ';\n }\n else if (singleFilterType.toString() === 'object' && singleFilterIsDate) {\n sqlFilter += ' \\'' + singleFilter.toISOString().split('T')[0] + '\\' ';\n }\n else if (singleFilterType.toString() === 'number') {\n sqlFilter += ' ' + singleFilter.toString() + ' ';\n }\n else if (singleFilterType.toString() === 'boolean') {\n if (singleFilter.toString() === 'true')\n sqlFilter += '1 ';\n else if (singleFilter.toString() === 'false' || singleFilter === null || singleFilter === undefined)\n sqlFilter += '0 ';\n }\n }\n\n sqlFilter += ')';\n }\n });\n\n async function getRecords() {\n if (sqlFilter === '(')\n sqlFilter = '';\n\n var records = await getCustomerPaymentRecords(sqlFilter);\n return {\n data: records,\n totalCount: records.length\n };\n }\n\n return getRecords()\n .then(function (result) {\n return result;\n })\n .catch(() => { throw new Error('Data Loading Error'); });\n },\n });\n\n var fechaEmisionEditorOptions = { width: '100%', readOnly: true };\n var movimientoEditorOptions = { width: '100%', readOnly: true };\n var clienteEditorOptions = { width: '100%', readOnly: true };\n var nombreClienteEditorOptions = { width: '100%', readOnly: true };\n var importeEditorOptions = { width: '100%', format: { type: 'currency', currency: 'MXN', precision: 2 }, readOnly: (customerPaymentPayload.header.SCPedidoPagoUnico || customerPaymentPayload.header.Estatus !== 'Sin Afectar') };\n var impuestosEditorOptions = { width: '100%', format: { type: 'currency', currency: 'MXN', precision: 2 }, readOnly: true };\n var saldoPedidoEditorOptions = { width: '100%', format: { type: 'currency', currency: 'MXN', precision: 2 }, readOnly: true, visible: (customerPaymentPayload.header.Estatus === 'Sin Afectar') };\n var monedaEditorOptions = { width: '100%', readOnly: true };\n var tipoCambioEditorOptions = { width: '100%', format: { type: 'currency', currency: 'MXN', precision: 2 }, readOnly: true };\n var pedidoEditorOptions = { width: '100%', readOnly: true };\n var scPedidoPagoUnicoEditorOptions = { width: '100%', readOnly: true };\n var ctaDineroEditorOptions = { width: '100%', readOnly: true };\n var notaCancelacionEditorOptions = { width: '100%', readOnly: !activateCancelButton };\n var datosCFDIEditorOptions = { width: '100%', readOnly: true };\n var devolucionSaldoEditorOptions = { width: '100%', readOnly: true };\n\n var digitosTarjetaEditorOptions = { width: '100%', readOnly: !requiereDigitosTarjeta, min: 1111, max: 9999 };\n var postfechadoEditorOptions = { width: '100%' };\n var fechaPostfechadoEditorOptions = { width: '100%', readOnly: !esPostfechado, visible: esPostfechado };\n\n var usuarioDataSource = useMemo(() => {\n return new DataSource({\n paginate: true,\n store: {\n type: \"array\",\n key: \"Usuario\",\n data: usuarios\n }\n });\n }, [usuarios]);\n\n const storeSCReferencia = new CustomStore({\n key: 'value',\n load(loadOptions) {\n let sqlFilter = '';\n [\n 'filter'\n ].forEach((i) => {\n sqlFilter = loadOptions.searchValue;\n });\n\n async function getRecords() {\n var records = await getSCReferencia(sqlFilter);\n\n return {\n data: records,\n totalCount: records.length\n };\n }\n\n return getRecords()\n .then(function (result) {\n return result;\n })\n .catch(() => { throw new Error('Data Loading Error'); });\n },\n byKey: (key) => {\n return {\n name: key,\n value: key\n };\n }\n });\n\n const formaPagoDataSource = new DataSource({\n store: formaPago,\n key: 'FormaPago',\n group: 'Tipo',\n });\n\n //Opciones del campo FormaCobro\n try {\n var formaCobroEditorOptions = {\n dataSource: formaPagoDataSource,\n grouped: true,\n searchEnabled: true,\n showClearButton: true,\n displayExpr: 'FormaPago',\n valueExpr: 'FormaPago',\n value: (customerPaymentPayload.header.FormaCobro ? customerPaymentPayload.header.FormaCobro : ''),\n width: '100%',\n clearButtonText: 'Cerrar',\n noDataText: 'No se encontraron resultados'\n }\n }\n catch (e) {\n var formaCobroEditorOptions = {\n dataSource: formaPagoDataSource,\n grouped: true,\n searchEnabled: true,\n showClearButton: true,\n valueExpr: 'FormaPago',\n displayExpr: 'FormaPago',\n width: '100%',\n clearButtonText: 'Cerrar',\n noDataText: 'No se encontraron resultados'\n };\n }\n\n //Opciones del campo Pedido\n try {\n var scReferenciaEditorOptions = {\n dataSource: storeSCReferencia,\n displayExpr: 'name',\n valueExpr: 'value',\n searchEnabled: true,\n showClearButton: true,\n value: (customerPaymentPayload.header.SCReferencia ? customerPaymentPayload.header.SCReferencia : ''),\n searchTimeout: 1500,\n width: '100%',\n clearButtonText: 'Cerrar',\n noDataText: 'No se encontraron resultados'\n };\n }\n catch (e) {\n var scReferenciaEditorOptions = {\n dataSource: storeSCReferencia,\n displayExpr: 'name',\n valueExpr: 'value',\n searchEnabled: true,\n value: '',\n width: '100%'\n };\n }\n\n //Opciones Usuario Asociado del Usuario\n try {\n var usuarioAutorizaEditorOptions = useMemo(() => {\n return {\n dataSource: usuarioDataSource,\n displayExpr: 'name',\n valueExpr: 'value',\n searchEnabled: true,\n value: (customerPaymentPayload.header.SCUsuarioCancela ? customerPaymentPayload.header.SCUsuarioCancela : ''), width: '100%',\n readOnly: !activateCancelButton\n };\n }, [usuarioDataSource, customerPaymentPayload.header.SCUsuarioCancela, activateCancelButton]);\n }\n catch (e) {\n var usuarioAutorizaEditorOptions = {\n dataSource: usuarioDataSource,\n displayExpr: 'name',\n valueExpr: 'value',\n searchEnabled: true,\n value: '',\n width: '100%'\n };\n }\n\n async function uploadChunk(file, uploadInfo) {\n try {\n var responseS3 = await Storage.put(\"/cxc/\" + id + \"/\" + file.name, uploadInfo.chunkBlob, {\n contentType: file.type,\n ACL: 'public-read'\n });\n\n //Obtenemos el nombre del bucket\n let bucketName = Storage._config.AWSS3.bucket;\n\n\n let apiName = 'AdminSC';\n let path = '/uploadattachment';\n\n let myInit = {\n headers: {\n 'Content-Type': 'application/json',\n Authorization: `${(await Auth.currentSession()).getAccessToken().getJwtToken()}`\n },\n body: {\n action: 'register',\n bucketName: bucketName,\n type: 'cxc',\n id: id,\n Key: \"/cxc/\" + id + \"/\" + file.name,\n fileName: file.name,\n username: JSON.parse(JSON.stringify(await Auth.currentAuthenticatedUser())).username\n }\n }\n\n var attachmentsResult = await API.post(apiName, path, myInit);\n\n //Obtenemos los attachments\n var attachmentsGet = await Storage.list(\"/cxc/\" + id);\n var attachmentsAux = [];\n\n for (var attachmentsGetIndex in attachmentsGet) {\n var singleAttachmentsGet = attachmentsGet[attachmentsGetIndex];\n\n var singleAttachment = {\n name: singleAttachmentsGet.key.split('/').pop(),\n isDirectory: false,\n size: singleAttachmentsGet.size,\n };\n\n attachmentsAux.push(singleAttachment);\n }\n\n setAttachments(attachmentsAux);\n }\n catch (err) {\n console.log(\"Error uploading file:\", err);\n }\n }\n\n async function onAttachmentDeleting(e) {\n var fileName = e.item.key;\n\n //Primero borramos el archivo de S3\n var attachmentsDelete = await Storage.remove(\"/cxc/\" + id + \"/\" + fileName);\n\n //Despues borramos el attachment en Intelisis\n let bucketName = Storage._config.AWSS3.bucket;\n\n let apiName = 'AdminSC';\n let path = '/uploadattachment';\n\n let myInit = {\n headers: {\n 'Content-Type': 'application/json',\n Authorization: `${(await Auth.currentSession()).getAccessToken().getJwtToken()}`\n },\n body: {\n action: 'delete',\n bucketName: bucketName,\n type: 'cxc',\n id: id,\n Key: \"/cxc/\" + id + \"/\" + fileName,\n fileName: fileName,\n username: JSON.parse(JSON.stringify(await Auth.currentAuthenticatedUser())).username\n }\n }\n\n var attachmentsResult = await API.post(apiName, path, myInit);\n\n //Finalmente sincronizamos el state\n var attachmentsGet = await Storage.list(\"/cxc/\" + id);\n var attachmentsAux = [];\n\n for (var attachmentsGetIndex in attachmentsGet) {\n var singleAttachmentsGet = attachmentsGet[attachmentsGetIndex];\n\n var singleAttachment = {\n name: singleAttachmentsGet.key.split('/').pop(),\n isDirectory: false,\n size: singleAttachmentsGet.size,\n };\n\n attachmentsAux.push(singleAttachment);\n }\n\n setAttachments(attachmentsAux);\n };\n\n function downloadBlob(blob, filename) {\n const url = URL.createObjectURL(blob);\n const a = document.createElement('a');\n a.href = url;\n a.download = filename || 'download';\n const clickHandler = () => {\n setTimeout(() => {\n URL.revokeObjectURL(url);\n a.removeEventListener('click', clickHandler);\n }, 150);\n };\n\n a.addEventListener('click', clickHandler, false);\n\n a.click();\n\n return a;\n };\n\n async function onItemDownloading(e) {\n e.cancel = true;\n\n const downloadFileResponse = await Storage.get(\"/cxc/\" + id + \"/\" + e.item.name, { download: true });\n\n downloadBlob(downloadFileResponse.Body, e.item.name);\n };\n\n function openBlob(blob, filename) {\n const url = URL.createObjectURL(blob);\n\n window.open(url, \"_blank\");\n };\n\n async function onAttachmentOpen(e) {\n const downloadFileResponse = await Storage.get(\"/cxc/\" + id + \"/\" + e.file.name, { download: true });\n\n openBlob(downloadFileResponse.Body, e.file.name);\n };\n\n async function getCustomerPaymentPayload(ID) {\n try {\n let apiName = 'AdminSC';\n let path = '/procesaanticiposaldo';\n\n let myInit = {\n headers: {\n 'Content-Type': 'application/json',\n Authorization: `${(await Auth.currentSession()).getAccessToken().getJwtToken()}`\n },\n queryStringParameters: {\n ID: ID,\n action: 'payload',\n username: JSON.parse(JSON.stringify(await Auth.currentAuthenticatedUser())).username\n }\n }\n\n var payloadGet = await API.get(apiName, path, myInit);\n\n setCustomerPaymentPayload(payloadGet);\n\n //Obtenemos los attachments\n var attachmentsGet = await Storage.list(\"/cxc/\" + ID);\n var attachmentsAux = [];\n\n for (var attachmentsGetIndex in attachmentsGet) {\n var singleAttachmentsGet = attachmentsGet[attachmentsGetIndex];\n\n var singleAttachment = {\n name: singleAttachmentsGet.key.split('/').pop(),\n isDirectory: false,\n size: singleAttachmentsGet.size,\n };\n\n attachmentsAux.push(singleAttachment);\n }\n\n setAttachments(attachmentsAux);\n }\n catch (e) {\n if (e === 'No current user') {\n history.push('/');\n\n window.location.reload();\n }\n }\n\n return payloadGet;\n }\n\n async function getInvoicePayload(IDFactura) {\n try {\n let apiName = 'AdminSC';\n let path = '/procesaanticiposaldo';\n\n let myInit = {\n headers: {\n 'Content-Type': 'application/json',\n Authorization: `${(await Auth.currentSession()).getAccessToken().getJwtToken()}`\n },\n body: {\n action: 'invoicePayload',\n invoices: [{ ID: IDFactura }],\n username: JSON.parse(JSON.stringify(await Auth.currentAuthenticatedUser())).username\n }\n };\n\n var payloadGet = await API.post(apiName, path, myInit);\n\n return payloadGet;\n }\n catch (e) {\n if (e === 'No current user') {\n history.push('/');\n\n window.location.reload();\n }\n }\n\n return payloadGet;\n }\n\n function editCustomerPayment(data) {\n return (\n <Link to={`/CustomerPayment/${data.data.ID}`}>\n <button class=\"bg-blue-500 hover:bg-blue-700 text-white py-1 px-3 rounded\" onClick={() => editButton(data.data.ID)}><FontAwesomeIcon icon={permissionLevel === 'Editar' ? faPencilAlt : faGlasses} /> {permissionLevel === 'Editar' ? 'Editar' : 'Ver'}</button>\n </Link>\n )\n }\n\n async function editButton(ID) {\n try {\n if (!window.event.metaKey && !window.event.ctrlKey) {\n setVisibleLoadPanel(true);\n\n setIsDetail(true);\n setId(ID);\n\n var payload = await getCustomerPaymentPayload(ID);\n setEsPostfechado(payload.header.SCPostfechado);\n\n if (payload.header.SCReferencia) {\n await getFormaPago(payload.header.SCReferencia);\n }\n\n if (permissionLevel === 'Editar') {\n if (payload.header.Estatus === 'Sin Afectar') {\n setActivateUpdateForm(true);\n setAcceptCustomValue(false);\n setActivateSaveButton(true);\n setActivateDeleteButton(true);\n setActivateConfirmButton(true);\n setActivatePDFButton(true);\n setActivateCancelButton(false);\n setActivateAttachments(true);\n setActivateRegenerateCFDi(false);\n setActivateSendCFDi(false);\n }\n else if (payload.header.Estatus === 'Concluido') {\n setActivateUpdateForm(false);\n setAcceptCustomValue(true);\n setActivateSaveButton(false);\n setActivateDeleteButton(false);\n setActivateConfirmButton(false);\n setActivatePDFButton(true);\n setActivateCancelButton(true);\n setActivateAttachments(false);\n\n if (regenerateCFDi && payload.header.CFDIUUID)\n setActivateRegenerateCFDi(true);\n else\n setActivateRegenerateCFDi(false);\n\n if (sendCFDi && payload.header.CFDIUUID)\n setActivateSendCFDi(true);\n else\n setActivateSendCFDi(false);\n }\n else if (payload.header.Estatus === 'Cancelado') {\n setActivateUpdateForm(false);\n setAcceptCustomValue(true);\n setActivateSaveButton(false);\n setActivateDeleteButton(false);\n setActivateConfirmButton(false);\n setActivatePDFButton(true);\n setActivateCancelButton(false);\n setActivateAttachments(false);\n\n if (regenerateCFDi && payload.header.CFDIUUID)\n setActivateRegenerateCFDi(true);\n else\n setActivateRegenerateCFDi(false);\n\n if (sendCFDi && payload.header.CFDIUUID)\n setActivateSendCFDi(true);\n else\n setActivateSendCFDi(false);\n }\n }\n else if (permissionLevel === 'Ver') {\n setActivateUpdateForm(false);\n setAcceptCustomValue(true);\n setActivateSaveButton(false);\n setActivateDeleteButton(false);\n setActivateConfirmButton(false);\n setActivatePDFButton(true);\n setActivateCancelButton(false);\n setActivateAttachments(false);\n setActivateRegenerateCFDi(false);\n setActivateSendCFDi(false);\n }\n\n setVisibleLoadPanel(false);\n }\n }\n catch (e) {\n setVisibleLoadPanel(false);\n\n if (!ID || ID === 'undefined') {\n newButton();\n }\n }\n };\n\n async function cancelEditButton() {\n setIsDetail(false);\n };\n\n async function saveButton() {\n try {\n if (customerPaymentPayload.header.Estatus === 'Sin Afectar') {\n if (!customerPaymentPayload.header.SCReferencia || customerPaymentPayload.header.SCReferencia === '') {\n setVisibleToast(true);\n setMessageToast('Falta especificar la Referencia')\n setTypeToast('error');\n return;\n }\n if (!customerPaymentPayload.header.Cliente || customerPaymentPayload.header.Cliente === '') {\n setVisibleToast(true);\n setMessageToast('Falta especificar el Cliente')\n setTypeToast('error');\n return;\n }\n if (!customerPaymentPayload.header.FormaCobro || customerPaymentPayload.header.FormaCobro === '') {\n setVisibleToast(true);\n setMessageToast('Falta especificar la Forma de Cobro')\n setTypeToast('error');\n return;\n }\n if (!customerPaymentPayload.header.Importe || customerPaymentPayload.header.Importe <= 0) {\n setVisibleToast(true);\n setMessageToast('Falta especificar el Importe')\n setTypeToast('error');\n return;\n }\n if (customerPaymentPayload.header.SCPostfechado && !customerPaymentPayload.header.SCFechaPostfechado) {\n setVisibleToast(true);\n setMessageToast('Falta especificar la Fecha Postfechada')\n setTypeToast('error');\n return;\n }\n if (requiereDigitosTarjeta && (!customerPaymentPayload.header.SCDigitosTarjeta || customerPaymentPayload.header.SCDigitosTarjeta === 0)) {\n setVisibleToast(true);\n setMessageToast('Falta especificar los Dígitos de la Tarjeta')\n setTypeToast('error');\n return;\n }\n }\n\n setVisibleLoadPanel(true);\n\n var ID = customerPaymentPayload.header.ID;\n\n //Despues enviamos todo al backend\n let apiName = 'AdminSC';\n let path = '/procesaanticiposaldo';\n\n let myInit = {\n headers: {\n 'Content-Type': 'application/json',\n Authorization: `${(await Auth.currentSession()).getAccessToken().getJwtToken()}`\n },\n body: {\n ID: ID,\n payload: customerPaymentPayload,\n action: 'saveChanges',\n username: JSON.parse(JSON.stringify(await Auth.currentAuthenticatedUser())).username,\n usuario: props.usuario,\n sucursal: props.sucursal,\n s3Bucket: Storage._config.AWSS3.bucket\n }\n }\n\n var payloadPost = await API.post(apiName, path, myInit);\n\n if (payloadPost.ok === 'true') {\n if (!ID) {\n setVisibleToast(true);\n setMessageToast('Se creó el Anticipo Saldo con éxito');\n setTypeToast('success')\n\n ID = payloadPost.newID;\n\n editButton(ID);\n\n history.push('/CustomerPayment/' + ID.toString());\n }\n else {\n setVisibleToast(true);\n setMessageToast('Se actualizó el Anticipo Saldo con éxito');\n setTypeToast('success')\n }\n }\n else if (payloadPost.ok === 'false') {\n setVisibleToast(true);\n setMessageToast(payloadPost.message);\n setTypeToast('error')\n }\n\n editButton(ID);\n\n setVisibleLoadPanel(false);\n }\n catch (e) {\n setVisibleLoadPanel(false);\n\n if (e === 'No current user') {\n history.push('/');\n\n window.location.reload();\n }\n }\n };\n\n async function confirmButton() {\n var SaldoPedido = parseFloat(customerPaymentPayload.header.SaldoPedido);\n var Importe = parseFloat(customerPaymentPayload.header.Importe);\n var SCPedidoPagoUnico = parseFloat(customerPaymentPayload.header.SCPedidoPagoUnico);\n\n if (!SaldoPedido)\n SaldoPedido = 0.0;\n if (!Importe)\n Importe = 0.0;\n\n try {\n if (customerPaymentPayload.header.Estatus === 'Sin Afectar') {\n if (!customerPaymentPayload.header.SCReferencia || customerPaymentPayload.header.SCReferencia === '') {\n setVisibleToast(true);\n setMessageToast('Falta especificar la Referencia')\n setTypeToast('error');\n return;\n }\n if (!customerPaymentPayload.header.Cliente || customerPaymentPayload.header.Cliente === '') {\n setVisibleToast(true);\n setMessageToast('Falta especificar el Cliente')\n setTypeToast('error');\n return;\n }\n if (!customerPaymentPayload.header.FormaCobro || customerPaymentPayload.header.FormaCobro === '') {\n setVisibleToast(true);\n setMessageToast('Falta especificar la Forma de Cobro')\n setTypeToast('error');\n return;\n }\n if (Importe <= 0) {\n setVisibleToast(true);\n setMessageToast('Falta especificar el Importe')\n setTypeToast('error');\n return;\n }\n if (SaldoPedido <= 0) {\n setVisibleToast(true);\n setMessageToast('El Pedido no tiene Saldo Pendiente')\n setTypeToast('error');\n return;\n }\n if (Importe > SaldoPedido) {\n setVisibleToast(true);\n setMessageToast('El Importe a aplicar es mayor que el Saldo Pendiente del Pedido')\n setTypeToast('error');\n return;\n }\n }\n\n if (Importe === SaldoPedido) {\n if (!window.confirm('Al aplicar el Anticipo por el Saldo del Pedido ya no podrá modificarse el Pedido. ¿Deseas continuar?'))\n return;\n }\n\n setVisibleLoadPanel(true);\n\n var ID = customerPaymentPayload.header.ID;\n\n var lambdaFunction;\n\n if (window.location.href.indexOf('sandbox.') >= 0 || window.location.href.indexOf('localhost') >= 0)\n lambdaFunction = 'procesaAnticipoSaldo-dev';\n else if (window.location.href.indexOf('sandboxtampico.') >= 0)\n lambdaFunction = 'procesaAnticipoSaldo-devleona';\n else if (window.location.href.indexOf('tampico.') >= 0)\n lambdaFunction = 'procesaAnticipoSaldo-prodleona';\n else\n lambdaFunction = 'procesaAnticipoSaldo-prod';\n\n Auth.currentCredentials()\n .then(credentials => {\n const lambda = new Lambda({\n credentials: Auth.essentialCredentials(credentials),\n region: 'us-east-1'\n });\n\n var params = {\n FunctionName: lambdaFunction,\n Payload: JSON.stringify({\n ID: ID,\n payload: customerPaymentPayload,\n action: 'apply',\n username: props.username,\n usuario: props.usuario,\n sucursal: props.sucursal,\n s3Bucket: Storage._config.AWSS3.bucket\n })\n };\n\n lambda.invoke(params, function (err, data) {\n if (err) {\n setVisibleLoadPanel(false);\n\n setVisibleToast(true);\n setMessageToast(err.message);\n setTypeToast('error');\n }\n else {\n var payloadPost = JSON.parse(JSON.parse(data.Payload).body);\n\n if (payloadPost.ok === 'true') {\n async function checkCFDiStatus() {\n //Primero obtenemos el payload actualizado\n var payload = await getCustomerPaymentPayload(id);\n\n if (payload.header.CFDIUUID) {\n // Despues generamos el PDF\n var pdfPost = await generateCFDiPDF(payload);\n\n // Finalmente enviamos el correo electrónico\n var sendCFDiPost = await sendCFDiFiles(true, payload.header.Movimiento);\n }\n\n if (payload.header.IDFactura) {\n // Primero obtenemos el payload de la factura\n var payloadFactura = await getInvoicePayload(payload.header.IDFactura);\n\n // Después generamos el PDF\n var pdfPost = await generateInvoiceCFDiPDF(payload, payloadFactura);\n\n // Finalmente enviamos el correo electrónico\n var sendCFDiPost = await sendInvoiceCFDiFiles(true, payload.header.MovimientoFactura, payload.header.IDFactura);\n }\n\n setVisibleToast(true);\n setMessageToast('Anticipo Saldo aplicado correctamente');\n setTypeToast('success');\n\n editButton(ID);\n\n setVisibleLoadPanel(false);\n };\n\n checkCFDiStatus();\n\n window.opener.location.reload();\n }\n else if (payloadPost.ok === 'false') {\n\n setVisibleToast(true);\n\n if (!payloadPost.message || payloadPost.message === '' || payloadPost.message === 'Error SQL')\n setMessageToast('No se pudo aplicar el Anticipo Saldo');\n else\n setMessageToast(payloadPost.message);\n\n setTypeToast('error')\n\n editButton(ID);\n\n setVisibleLoadPanel(false);\n }\n }\n });\n })\n /*\n //Despues enviamos todo al backend\n let apiName = 'AdminSC';\n let path = '/procesaanticiposaldo';\n\n let myInit = { \n headers: {\n 'Content-Type' : 'application/json',\n Authorization: `${(await Auth.currentSession()).getAccessToken().getJwtToken()}`\n },\n body: {\n ID: ID,\n payload: customerPaymentPayload,\n action: 'apply',\n username: props.username,\n usuario: props.usuario,\n sucursal: props.sucursal,\n s3Bucket: Storage._config.AWSS3.bucket\n }\n }\n\n var payloadPost = await API.post(apiName, path, myInit);\n\n if(payloadPost.ok === 'true'){\n //Primero obtenemos el payload actualizado\n var payload = await getCustomerPaymentPayload(id);\n\n // Despues generamos el PDF\n var pdfPost = await generateCFDiPDF(payload);\n\n // Finalmente enviamos el correo electrónico\n var sendCFDiPost = await sendCFDiFiles(true, payload.header.Movimiento);\n\n setVisibleToast(true);\n setMessageToast('Se afectó el Anticipo Saldo con éxito');\n setTypeToast('success')\n }\n else if(payloadPost.ok === 'false'){\n setVisibleToast(true);\n setMessageToast(payloadPost.message);\n setTypeToast('error')\n }\n\n editButton(ID);\n\n setVisibleLoadPanel(false);\n */\n }\n catch (e) {\n setVisibleLoadPanel(false);\n\n if (e === 'No current user') {\n history.push('/');\n\n window.location.reload();\n }\n }\n };\n\n async function voidButton() {\n try {\n if (!customerPaymentPayload.header.SCUsuarioCancela || customerPaymentPayload.header.SCUsuarioCancela === '') {\n setVisibleToast(true);\n setMessageToast('Falta especificar el Usuario que autoriza la cancelación')\n setTypeToast('error');\n return;\n }\n\n if (!customerPaymentPayload.header.SCCancelaNota || customerPaymentPayload.header.SCCancelaNota === '') {\n setVisibleToast(true);\n setMessageToast('Falta especificar la Nota de cancelación')\n setTypeToast('error');\n return;\n }\n\n if (!window.confirm('¿Desea cancelar el Anticipo Saldo?'))\n return;\n\n setVisibleLoadPanel(true);\n\n var ID = customerPaymentPayload.header.ID;\n\n //Despues enviamos todo al backend\n let apiName = 'AdminSC';\n let path = '/procesaanticiposaldo';\n\n let myInit = {\n headers: {\n 'Content-Type': 'application/json',\n Authorization: `${(await Auth.currentSession()).getAccessToken().getJwtToken()}`\n },\n body: {\n ID: ID,\n payload: customerPaymentPayload,\n action: 'void',\n username: JSON.parse(JSON.stringify(await Auth.currentAuthenticatedUser())).username,\n usuario: props.usuario,\n sucursal: props.sucursal\n }\n }\n\n var payloadPost = await API.post(apiName, path, myInit);\n\n if (payloadPost.ok === 'true') {\n setVisibleToast(true);\n setMessageToast('Se canceló el Anticipo Saldo');\n setTypeToast('success')\n }\n else if (payloadPost.ok === 'false') {\n setVisibleToast(true);\n setMessageToast(payloadPost.message);\n setTypeToast('error')\n }\n\n editButton(ID);\n\n setVisibleLoadPanel(false);\n }\n catch (e) {\n setVisibleLoadPanel(false);\n\n if (e === 'No current user') {\n history.push('/');\n\n window.location.reload();\n }\n }\n };\n\n function refreshButton() {\n if (gridTableroRef.current) {\n var gridTablero = gridTableroRef.current.instance();\n\n gridTablero.refresh();\n }\n }\n\n async function newButton(salesorder) {\n try {\n let apiName = 'AdminSC';\n let path = '/procesaanticiposaldo';\n\n let myInit = {\n headers: {\n 'Content-Type': 'application/json',\n Authorization: `${(await Auth.currentSession()).getAccessToken().getJwtToken()}`\n },\n queryStringParameters: {\n action: 'new',\n salesorder: salesorder,\n username: JSON.parse(JSON.stringify(await Auth.currentAuthenticatedUser())).username,\n usuario: props.usuario,\n sucursal: props.sucursal,\n }\n };\n\n var payloadNew = await API.get(apiName, path, myInit);\n\n if (payloadNew.header.SCReferencia) {\n await getFormaPago(payloadNew.header.SCReferencia);\n }\n\n setCustomerPaymentPayload(payloadNew);\n\n setAttachments([]);\n\n setIsDetail(true);\n setId(undefined);\n\n setActivateUpdateForm(true);\n setAcceptCustomValue(false);\n setActivateSaveButton(true);\n setActivateDeleteButton(false);\n setActivateConfirmButton(false);\n setActivatePDFButton(false);\n setActivateCancelButton(false);\n setActivateAttachments(false);\n setActivateRegenerateCFDi(false);\n setActivateSendCFDi(false);\n setRequiereDigitosTarjeta(false);\n setEsPostfechado(false);\n\n setVisibleLoadPanel(false);\n }\n catch (e) {\n if (e === 'No current user') {\n history.push('/');\n\n window.location.reload();\n }\n }\n };\n\n async function deleteButton() {\n try {\n if (!window.confirm('¿Desea eliminar el Anticipo Saldo?'))\n return;\n\n setVisibleLoadPanel(true);\n\n var ID = customerPaymentPayload.header.ID;\n\n if (!ID) {\n //Vamos al tablero de control\n history.push('/CustomerPayment');\n return;\n }\n\n let apiName = 'AdminSC';\n let path = '/procesaanticiposaldo';\n\n let myInit = {\n headers: {\n 'Content-Type': 'application/json',\n Authorization: `${(await Auth.currentSession()).getAccessToken().getJwtToken()}`\n },\n body: {\n ID: ID,\n payload: customerPaymentPayload,\n action: 'delete',\n username: JSON.parse(JSON.stringify(await Auth.currentAuthenticatedUser())).username,\n usuario: props.usuario,\n sucursal: props.sucursal\n }\n }\n\n var payloadPost = await API.post(apiName, path, myInit);\n\n if (payloadPost.ok === 'true') {\n setVisibleLoadPanel(false);\n\n setVisibleToast(true);\n setMessageToast('Anticipo Saldo eliminado con éxito');\n setTypeToast('success')\n\n setIsDetail(false);\n\n //Vamos al tablero de control\n history.push('/CustomerPayment');\n }\n else if (payloadPost.ok === 'false') {\n setVisibleLoadPanel(false);\n\n setVisibleToast(true);\n setMessageToast(payloadPost.message);\n setTypeToast('error')\n }\n }\n catch (e) {\n setVisibleLoadPanel(false);\n\n if (e === 'No current user') {\n history.push('/');\n\n window.location.reload();\n }\n }\n }\n\n function printButton() {\n var baseUrl = window.location.href.split('/')[0];\n\n window.open(baseUrl + \"/#/PdfRender?type=customerpayment&id=\" + id, \"_blank\");\n };\n\n async function regenerateCFDiFilesButton() {\n await generateCFDiFiles(false);\n };\n\n async function generateCFDiFiles(hideToast) {\n var modulo = 'cxc';\n var type = 'customerpayment';\n\n try {\n //Primero obtenemos el payload actualizado\n var payload = await getCustomerPaymentPayload(id);\n\n // En caso de no existir folio fiscal no es necesario crear los archivos\n if (!payload.header.CFDIUUID)\n return;\n\n if (!hideToast)\n setVisibleLoadPanel(true);\n\n // Despues enviamos el payload a la API crearPDF\n // *********************************************\n let apiName = 'AdminSC';\n let path = '/crearpdf';\n\n let myInit = {\n headers: {\n 'Content-Type': 'application/json',\n Authorization: `${(await Auth.currentSession()).getAccessToken().getJwtToken()}`\n },\n body: {\n type: type,\n payload: payload,\n bucketName: Storage._config.AWSS3.bucket,\n fileKey: `public//${modulo}/${id}/${payload.header.Mov.trim()} ${payload.header.MovID.trim()}.pdf`,\n contentType: 'application/pdf',\n username: JSON.parse(JSON.stringify(await Auth.currentAuthenticatedUser())).username\n }\n }\n\n var pdfPost = await API.post(apiName, path, myInit);\n // *********************************************\n\n if (pdfPost.message.indexOf('Error') >= 0) {\n if (!hideToast)\n setVisibleLoadPanel(false);\n\n setVisibleToast(true);\n setMessageToast(pdfPost.message);\n setTypeToast('error');\n return;\n }\n\n // Despues enviamos el payload a la API crearXML\n // *********************************************\n apiName = 'AdminSC';\n path = '/crearxml';\n\n myInit = {\n headers: {\n 'Content-Type': 'application/json',\n Authorization: `${(await Auth.currentSession()).getAccessToken().getJwtToken()}`\n },\n body: {\n modulo: modulo,\n id: id,\n bucketName: Storage._config.AWSS3.bucket,\n fileKey: `public//${modulo}/${id}/${payload.header.Mov.trim()} ${payload.header.MovID.trim()}.xml`,\n contentType: 'text/xml',\n username: JSON.parse(JSON.stringify(await Auth.currentAuthenticatedUser())).username\n }\n }\n\n var xmlPost = await API.post(apiName, path, myInit);\n // *********************************************\n if (!hideToast) {\n setVisibleLoadPanel(false);\n\n setVisibleToast(true);\n setMessageToast('Se generaron los archivos CFDi con éxito');\n setTypeToast('success')\n }\n }\n catch (e) {\n setVisibleLoadPanel(false);\n\n if (e === 'No current user') {\n history.push('/');\n\n window.location.reload();\n }\n }\n\n };\n\n async function generateCFDiPDF(payload) {\n var modulo = 'cxc';\n var type = 'customerpayment';\n\n try {\n // En caso de no existir folio fiscal no es necesario crear los archivos\n if (!payload.header.CFDIUUID)\n return;\n\n // Despues enviamos el payload a la API crearPDF\n // *********************************************\n let apiName = 'AdminSC';\n let path = '/crearpdf';\n\n let myInit = {\n headers: {\n 'Content-Type': 'application/json',\n Authorization: `${(await Auth.currentSession()).getAccessToken().getJwtToken()}`\n },\n body: {\n type: type,\n payload: payload,\n bucketName: Storage._config.AWSS3.bucket,\n fileKey: `public//${modulo}/${id}/${payload.header.Mov.trim()} ${payload.header.MovID.trim()}.pdf`,\n contentType: 'application/pdf',\n username: JSON.parse(JSON.stringify(await Auth.currentAuthenticatedUser())).username\n }\n }\n\n var pdfPost = await API.post(apiName, path, myInit);\n // *********************************************\n\n if (pdfPost.message.indexOf('Error') >= 0) {\n setVisibleToast(true);\n setMessageToast(pdfPost.message);\n setTypeToast('error');\n return;\n }\n else {\n return pdfPost;\n }\n }\n catch (e) {\n setVisibleLoadPanel(false);\n\n if (e === 'No current user') {\n history.push('/');\n\n window.location.reload();\n }\n }\n\n };\n\n async function generateInvoiceCFDiPDF(payload, payloadFactura) {\n var modulo = 'vtas';\n var type = 'invoice';\n\n try {\n // Despues enviamos el payload a la API crearPDF\n // *********************************************\n let apiName = 'AdminSC';\n let path = '/crearpdf';\n\n let myInit = {\n headers: {\n 'Content-Type': 'application/json',\n Authorization: `${(await Auth.currentSession()).getAccessToken().getJwtToken()}`\n },\n body: {\n type: type,\n payload: payloadFactura,\n bucketName: Storage._config.AWSS3.bucket,\n fileKey: `public//${modulo}/${payload.header.IDFactura}/${payload.header.MovimientoFactura.trim()}.pdf`,\n contentType: 'application/pdf',\n username: JSON.parse(JSON.stringify(await Auth.currentAuthenticatedUser())).username\n }\n }\n\n var pdfPost = await API.post(apiName, path, myInit);\n\n // *********************************************\n\n if (pdfPost.message.indexOf('Error') >= 0) {\n setVisibleToast(true);\n setMessageToast(pdfPost.message);\n setTypeToast('error');\n return;\n }\n else {\n return pdfPost;\n }\n }\n catch (e) {\n setVisibleLoadPanel(false);\n\n if (e === 'No current user') {\n history.push('/');\n\n window.location.reload();\n }\n }\n };\n\n function blobToBase64(blob) {\n return new Promise((resolve, _) => {\n const reader = new FileReader();\n reader.onloadend = () => resolve(reader.result);\n reader.readAsDataURL(blob);\n });\n }\n\n async function sendCFDiFilesButton() {\n await sendCFDiFiles(false, customerPaymentPayload.header.Movimiento);\n }\n\n async function sendCFDiFiles(hideToast, Movimiento) {\n try {\n let apiName = 'AdminSC';\n let path = '/enviarcorreo';\n\n let pdfFile = await Storage.get(\"/cxc/\" + id + \"/\" + Movimiento.trim() + '.pdf', { download: true });\n let xmlFile = await Storage.get(\"/cxc/\" + id + \"/\" + Movimiento.trim() + '.xml', { download: true });\n\n if (!pdfFile || !xmlFile) {\n return;\n }\n\n if (!hideToast)\n setVisibleLoadPanel(true);\n\n let xmlFileContents = await blobToBase64(xmlFile.Body);\n let pdfFileContents = await blobToBase64(pdfFile.Body);\n\n xmlFileContents = xmlFileContents.toString().split('base64,')[1];\n pdfFileContents = pdfFileContents.toString().split('base64,')[1];\n\n if (!xmlFileContents || !pdfFileContents) {\n if (!hideToast)\n setVisibleLoadPanel(false);\n\n setVisibleToast(true);\n setMessageToast('Archivos CFDi incorrectos');\n setTypeToast('error');\n return;\n }\n\n let myInit = {\n headers: {\n 'Content-Type': 'application/json',\n Authorization: `${(await Auth.currentSession()).getAccessToken().getJwtToken()}`\n },\n body: {\n ToAddresses: [customerPaymentPayload.header.cte_CorreoElectronico],\n // BccAddresses: [],\n // CcAddresses: [],\n Body: 'CFDi ' + Movimiento.trim(),\n Subject: 'CFDi ' + Movimiento.trim(),\n Source: 'admin@supercolchones.com',\n Attachments: [{\n filename: Movimiento.trim() + '.xml',\n content: xmlFileContents,\n encoding: 'base64'\n },\n {\n filename: Movimiento.trim() + '.pdf',\n content: pdfFileContents,\n encoding: 'base64'\n }\n ],\n username: JSON.parse(JSON.stringify(await Auth.currentAuthenticatedUser())).username\n }\n }\n\n var sendCFDiPost = await API.post(apiName, path, myInit);\n\n if (sendCFDiPost.message.indexOf('Error') >= 0) {\n if (!hideToast)\n setVisibleLoadPanel(false);\n\n setVisibleToast(true);\n setMessageToast(sendCFDiPost.message);\n setTypeToast('error');\n }\n else {\n if (hideToast === false) {\n setVisibleLoadPanel(false);\n\n setVisibleToast(true);\n setMessageToast(sendCFDiPost.message);\n setTypeToast('success');\n }\n }\n\n return sendCFDiPost;\n }\n catch (e) {\n setVisibleToast(true);\n setMessageToast(e.message);\n setTypeToast('error');\n }\n }\n\n async function sendInvoiceCFDiFiles(hideToast, MovimientoFactura, IDFactura) {\n try {\n let apiName = 'AdminSC';\n let path = '/enviarcorreo';\n\n let pdfFile = await Storage.get(\"/vtas/\" + IDFactura + \"/\" + MovimientoFactura.trim() + '.pdf', { download: true });\n let xmlFile = await Storage.get(\"/vtas/\" + IDFactura + \"/\" + MovimientoFactura.trim() + '.xml', { download: true });\n\n if (!pdfFile || !xmlFile) {\n return;\n }\n\n if (!hideToast)\n setVisibleLoadPanel(true);\n\n let xmlFileContents = await blobToBase64(xmlFile.Body);\n let pdfFileContents = await blobToBase64(pdfFile.Body);\n\n xmlFileContents = xmlFileContents.toString().split('base64,')[1];\n pdfFileContents = pdfFileContents.toString().split('base64,')[1];\n\n if (!xmlFileContents || !pdfFileContents) {\n if (!hideToast)\n setVisibleLoadPanel(false);\n\n setVisibleToast(true);\n setMessageToast('Archivos CFDi incorrectos');\n setTypeToast('error');\n return;\n }\n\n let myInit = {\n headers: {\n 'Content-Type': 'application/json',\n Authorization: `${(await Auth.currentSession()).getAccessToken().getJwtToken()}`\n },\n body: {\n ToAddresses: [customerPaymentPayload.header.cte_CorreoElectronico],\n // BccAddresses: [],\n // CcAddresses: [],\n Body: 'CFDi ' + MovimientoFactura.trim(),\n Subject: 'CFDi ' + MovimientoFactura.trim(),\n Source: 'admin@supercolchones.com',\n Attachments: [{\n filename: MovimientoFactura.trim() + '.xml',\n content: xmlFileContents,\n encoding: 'base64'\n },\n {\n filename: MovimientoFactura.trim() + '.pdf',\n content: pdfFileContents,\n encoding: 'base64'\n }\n ],\n username: JSON.parse(JSON.stringify(await Auth.currentAuthenticatedUser())).username\n }\n }\n\n var sendCFDiPost = await API.post(apiName, path, myInit);\n\n if (sendCFDiPost.message.indexOf('Error') >= 0) {\n if (!hideToast)\n setVisibleLoadPanel(false);\n\n setVisibleToast(true);\n setMessageToast(sendCFDiPost.message);\n setTypeToast('error');\n }\n else {\n if (hideToast === false) {\n setVisibleLoadPanel(false);\n\n setVisibleToast(true);\n setMessageToast(sendCFDiPost.message);\n setTypeToast('success');\n }\n }\n\n return sendCFDiPost;\n }\n catch (e) {\n setVisibleToast(true);\n setMessageToast(e.message);\n setTypeToast('error');\n }\n }\n\n async function getSCReferencia(sqlFilter) {\n let apiName = 'AdminSC';\n let path = '/getcatalogo';\n\n let myInit = {\n headers: {\n 'Content-Type': 'application/json',\n Authorization: `${(await Auth.currentSession()).getAccessToken().getJwtToken()}`\n },\n queryStringParameters: {\n type: 'SCReferenciaAnticipoSaldo',\n username: JSON.parse(JSON.stringify(await Auth.currentAuthenticatedUser())).username,\n sqlFilter: sqlFilter\n }\n }\n\n var scReferencia = await API.get(apiName, path, myInit);\n var tmpSCReferencia = [];\n\n for (var scReferenciaIndex in scReferencia) {\n\n tmpSCReferencia.push({\n name: scReferencia[scReferenciaIndex].SCReferencia,\n value: scReferencia[scReferenciaIndex].SCReferencia\n })\n }\n\n return tmpSCReferencia;\n };\n\n async function getFormaPago(SCReferencia) {\n try {\n let apiName = 'AdminSC';\n let path = '/getcatalogo';\n\n let myInit = {\n headers: {\n 'Content-Type': 'application/json',\n Authorization: `${(await Auth.currentSession()).getAccessToken().getJwtToken()}`\n },\n queryStringParameters: {\n type: 'FormaPago',\n screferencia: SCReferencia,\n username: JSON.parse(JSON.stringify(await Auth.currentAuthenticatedUser())).username\n }\n }\n\n var formaPagoGet = await API.get(apiName, path, myInit);\n\n setFormaPago(formaPagoGet);\n }\n catch (e) {\n if (e === 'No current user') {\n history.push('/');\n\n window.location.reload();\n }\n }\n };\n\n useEffect(() => {\n window.addEventListener('popstate', (e) => {\n var hash;\n\n try {\n hash = e.target.location.hash;\n }\n catch (e) {\n hash = '';\n }\n\n if (hash === '#/CustomerPayment') {\n history.push('/CustomerPayment');\n\n window.location.reload();\n }\n });\n async function initialize() {\n setVisibleLoadPanel(true);\n\n await getUsuario();\n\n setVisibleLoadPanel(false);\n }\n\n initialize();\n\n\n //En caso de solicitar un ID especifico, redireccionamos a ese ID\n if (!props.match.isExact) {\n var urlID = props.location.pathname.replace('/CustomerPayment/', '');\n\n var search = props.location.search;\n var salesorder;\n\n if (search)\n salesorder = search.replace('?salesorder=', '');\n\n if (urlID === 'undefined')\n urlID = undefined;\n\n if (urlID)\n editButton(urlID);\n else\n newButton(salesorder);\n }\n\n // eslint-disable-next-line\n }, []);\n\n function overrideOnValueChanged(e) {\n //Hacemos la data persistente en cuanto el usuario escriba en el campo\n // if (e.parentType === \"dataRow\") {\n // e.editorOptions.valueChangeEvent = \"input\";\n // }\n };\n\n function onHidingToast() {\n setVisibleToast(false);\n };\n\n const onFieldDatosGeneralesChanged = React.useCallback((e) => {\n var dataField = e.dataField;\n var value = e.value;\n\n if (formDatosGeneralesRef.current) {\n var formDatosGenerales = formDatosGeneralesRef.current.instance();\n\n if (e.dataField === 'SCReferencia') {\n if (e.value) {\n async function getSalesOrderInfo() {\n try {\n setVisibleLoadPanel(true);\n\n let apiName = 'AdminSC';\n let path = '/procesaanticiposaldo';\n\n let myInit = {\n headers: {\n 'Content-Type': 'application/json',\n Authorization: `${(await Auth.currentSession()).getAccessToken().getJwtToken()}`\n },\n queryStringParameters: {\n action: 'getSalesOrderInfo',\n screferencia: value,\n username: JSON.parse(JSON.stringify(await Auth.currentAuthenticatedUser())).username\n }\n };\n\n var payloadNew = await API.get(apiName, path, myInit);\n\n formDatosGenerales.updateData('Pedido', payloadNew.header.Pedido);\n formDatosGenerales.updateData('Cliente', payloadNew.header.Cliente);\n formDatosGenerales.updateData('NombreCliente', payloadNew.header.NombreCliente);\n formDatosGenerales.updateData('Importe', payloadNew.header.Importe);\n formDatosGenerales.updateData('SaldoPedido', payloadNew.header.Importe);\n formDatosGenerales.updateData('Impuestos', payloadNew.header.Impuestos);\n formDatosGenerales.updateData('SCPedidoPagoUnico', payloadNew.header.SCPedidoPagoUnico);\n\n setVisibleLoadPanel(false);\n }\n catch (e) {\n if (e === 'No current user') {\n history.push('/');\n\n window.location.reload();\n }\n }\n }\n\n getSalesOrderInfo();\n\n async function getFormaPagoReferencia(SCReferencia) {\n try {\n let apiName = 'AdminSC';\n let path = '/getcatalogo';\n\n let myInit = {\n headers: {\n 'Content-Type': 'application/json',\n Authorization: `${(await Auth.currentSession()).getAccessToken().getJwtToken()}`\n },\n queryStringParameters: {\n type: 'FormaPago',\n screferencia: SCReferencia,\n username: JSON.parse(JSON.stringify(await Auth.currentAuthenticatedUser())).username\n }\n }\n\n var formaPagoGet = await API.get(apiName, path, myInit);\n\n setFormaPago(formaPagoGet);\n }\n catch (e) {\n if (e === 'No current user') {\n history.push('/');\n\n window.location.reload();\n }\n }\n };\n\n getFormaPagoReferencia(e.value);\n }\n else {\n formDatosGenerales.updateData('Pedido', undefined);\n formDatosGenerales.updateData('Cliente', undefined);\n formDatosGenerales.updateData('NombreCliente', undefined);\n formDatosGenerales.updateData('Importe', undefined);\n formDatosGenerales.updateData('SaldoPedido', undefined);\n formDatosGenerales.updateData('Impuestos', undefined);\n formDatosGenerales.updateData('SCPedidoPagoUnico', false);\n\n setFormaPago([]);\n }\n }\n else if (e.dataField === 'FormaCobro') {\n formDatosGenerales.updateData('SCDigitosTarjeta', undefined);\n\n for (var formaPagoIndex in formaPago) {\n var singleFormaPago = formaPago[formaPagoIndex];\n\n if (singleFormaPago.FormaPago === value) {\n setRequiereDigitosTarjeta(singleFormaPago.SCRequiereDigitosTarjeta);\n }\n }\n }\n else if (e.dataField === 'SCPostfechado') {\n formDatosGenerales.updateData('SCFechaPostfechado', undefined);\n\n setEsPostfechado(value);\n }\n }\n }, [formDatosGeneralesRef, history, formaPago])\n\n async function getUsuario() {\n let apiName = 'AdminSC';\n let path = '/getcatalogo';\n\n let myInit = {\n headers: {\n 'Content-Type': 'application/json',\n Authorization: `${(await Auth.currentSession()).getAccessToken().getJwtToken()}`\n },\n queryStringParameters: {\n type: 'Usuario',\n username: JSON.parse(JSON.stringify(await Auth.currentAuthenticatedUser())).username\n }\n }\n\n var usuariosGet = await API.get(apiName, path, myInit);\n\n setUsuarios(usuariosGet);\n };\n\n function estatusRelatedRecords(data) {\n return (\n <TransactionStatus {...props} Estatus={data.data.Estatus} />\n )\n };\n\n function onExporting(e) {\n const workbook = new Workbook();\n const worksheet = workbook.addWorksheet('Datos');\n\n exportDataGrid({\n component: e.component,\n worksheet,\n autoFilterEnabled: true,\n }).then(() => {\n workbook.xlsx.writeBuffer().then((buffer) => {\n saveAs(new Blob([buffer], { type: 'application/octet-stream' }), 'Datos.xlsx');\n });\n });\n e.cancel = true;\n };\n\n return (\n <div>\n {isDetail === false ? (\n <div class=\"bg-gray-200 m-2\">\n <h1 class=\"font-sans inline-block text-xl font-bold text-gray-700 leading-8 align-top mb-1\"><FontAwesomeIcon icon={faList} size=\"lg\" /> Anticipos Saldo</h1>\n </div>\n ) :\n (\n <div class=\"bg-gray-200 m-2\">\n <h1 class=\"font-sans inline-block text-xl font-bold text-gray-700 leading-8 align-top mb-1\"><FontAwesomeIcon icon={faPiggyBank} size=\"xl\" /> {(customerPaymentPayload.header ? customerPaymentPayload.header.Movimiento : 'Anticipo Saldo')}</h1>\n <TransactionStatus {...props} Estatus={customerPaymentPayload.header.Estatus} />\n </div>\n )}\n\n <LoadPanel\n shadingColor=\"rgba(0,0,0,0.4)\"\n visible={visibleLoadPanel}\n showIndicator={true}\n message=\"Por favor espere...\"\n shading={true}\n showPane={true}\n hideOnOutsideClick={false}\n />\n\n <Toast\n visible={visibleToast}\n message={messageToast}\n type={typeToast}\n onHiding={onHidingToast}\n displayTime={5000}\n width={'auto'}\n position={{\n my: 'top center',\n at: 'top center',\n of: window,\n offset: '0 130'\n }}\n />\n\n <div class=\"bg-gray-200 m-2\">\n {isDetail === false ? (\n <div class=\"bg-white p-3 shadow-xl\">\n\n {permissionLevel === 'Editar' ?\n (\n <div>\n <Link to=\"/CustomerPayment/undefined\">\n <button class=\"mb-2 bg-green-500 hover:bg-green-700 text-white font-bold py-2 px-4 rounded\" onClick={() => newButton()}><FontAwesomeIcon icon={faFileAlt} /> Nuevo Anticipo Saldo</button>\n </Link>\n\n <button onClick={refreshButton} type=\"submit\" class=\"ml-4 mb-4 bg-blue-500 hover:bg-blue-700 text-white font-bold py-2 px-4 rounded\">\n <FontAwesomeIcon icon={faArrowsRotate} /> Actualizar\n </button>\n </div>\n ) :\n (\n <div>\n <button onClick={refreshButton} type=\"submit\" class=\"mb-4 bg-blue-500 hover:bg-blue-700 text-white font-bold py-2 px-4 rounded\">\n <FontAwesomeIcon icon={faArrowsRotate} /> Actualizar\n </button>\n </div>\n )}\n\n <div className=\"options mb-2\">\n <div className=\"option\">\n <CheckBox text=\"Expandir todos los grupos\"\n value={autoExpandAll}\n onValueChanged={onAutoExpandAllChanged}></CheckBox>\n </div>\n </div>\n\n <DataGrid\n height={800}\n id=\"gridContainer\"\n columnsAutoWidth={true}\n filterBuilder={filterBuilder}\n dataSource={store}\n defaultFilterValue={filterValue}\n allowColumnReordering={true}\n allowColumnResizing={true}\n columnResizingMode={\"widget\"}\n showBorders={true}\n rowAlternationEnabled={true}\n showRowLines={true}\n showColumnLines={true}\n remoteOperations={{ filtering: true }}\n ref={gridTableroRef}\n onExporting={onExporting}\n >\n <Scrolling rowRenderingMode='virtual'></Scrolling>\n <Paging defaultPageSize={10} />\n <Pager\n visible={true}\n allowedPageSizes={allowedPageSizes}\n displayMode='compact'\n showPageSizeSelector={true}\n showInfo={true}\n showNavigationButtons={true}\n />\n <FilterRow visible={true} />\n <FilterPanel visible={true} />\n <FilterBuilderPopup position={filterBuilderPopupPosition} />\n\n <HeaderFilter visible={true} />\n\n <GroupPanel visible={true} />\n <SearchPanel visible={true} />\n <ColumnChooser\n enabled={true}\n mode='select'\n >\n <ColumnChooserSearch\n enabled={true}\n />\n\n <ColumnChooserSelection\n allowSelectAll={true}\n selectByClick={true}\n recursive={true}\n />\n </ColumnChooser>\n <Grouping autoExpandAll={autoExpandAll} />\n <StateStoring enabled={true} type=\"localStorage\" storageKey=\"gridContainerCustomerPayment\" />\n <Export enabled={true} />\n\n <Column caption=\"\" alignment=\"center\" width={100} cellRender={editCustomerPayment} />\n\n <Column dataField=\"MovID\" dataType=\"string\" width={110} caption=\"Folio\" />\n <Column dataField=\"FechaEmision\" caption=\"Fecha Emisión\" dataType=\"date\" width={130} />\n <Column dataField=\"Estatus\" dataType=\"string\" width={120} />\n <Column dataField=\"NombreCliente\" caption=\"Nombre Cliente\" dataType=\"string\" width={250} />\n <Column caption=\"Plaza\" dataField=\"Plaza\" dataType=\"string\" width={150} visible={false} />\n <Column dataField=\"Pedido\" dataType=\"string\" width={150} />\n\n <Column dataField=\"ID\" dataType=\"number\" width={150} visible={false} />\n <Column dataField=\"Mov\" dataType=\"string\" width={190} caption=\"Tipo Movimiento\" visible={false} />\n <Column dataField=\"Movimiento\" dataType=\"string\" width={190} visible={false} />\n <Column dataField=\"Importe\" caption=\"Importe\" dataType=\"number\" width={150} visible={false}>\n <Format\n type=\"currency\"\n precision={2}\n />\n </Column>\n <Column dataField=\"Impuestos\" caption=\"Impuestos\" dataType=\"number\" width={150} visible={false}>\n <Format\n type=\"currency\"\n precision={2}\n />\n </Column>\n <Column dataField=\"ImporteTotal\" caption=\"Importe Total\" dataType=\"number\" width={150}>\n <Format\n type=\"currency\"\n precision={2}\n />\n </Column>\n\n <Column dataField=\"Cliente\" dataType=\"string\" width={190} visible={false} />\n <Column dataField=\"Sucursal\" dataType=\"number\" width={150} visible={false} />\n <Column dataField=\"NombreSucursal\" dataType=\"string\" width={190} visible={false} />\n <Column dataField=\"Usuario\" dataType=\"string\" width={190} visible={false} />\n <Column dataField=\"NombreUsuario\" dataType=\"string\" width={190} visible={false} />\n <Column dataField=\"FormaCobro\" dataType=\"string\" width={190} visible={false} />\n <Column dataField=\"CFDIFechaTimbrado\" dataType=\"datetime\" caption=\"CFDI - Fecha Certificación\" width={190} visible={false} />\n <Column dataField=\"CFDIUUID\" dataType=\"string\" caption=\"CFDI - UUID\" width={190} visible={false} />\n <Column dataField=\"CFDICancelado\" dataType=\"boolean\" caption=\"CFDI - Cancelado\" width={190} visible={false} />\n <Column dataField=\"DevolucionSaldo\" dataType=\"string\" caption=\"Devolución Saldo\" width={190} visible={false} />\n\n <Column dataField=\"ReferenciaBanco\" dataType=\"string\" caption=\"Referencia Banco\" width={190} visible={false} />\n <Column dataField=\"CorteCaja\" dataType=\"string\" caption=\"Corte Caja\" width={190} visible={false} />\n\n <Summary>\n <GroupItem\n column=\"Importe\"\n summaryType=\"sum\"\n valueFormat=\"$,##0.##\"\n displayFormat=\"Importe {0}\"\n showInGroupFooter={false}>\n </GroupItem>\n <GroupItem\n column=\"Impuestos\"\n summaryType=\"sum\"\n valueFormat=\"$,##0.##\"\n displayFormat=\"Impuestos {0}\"\n showInGroupFooter={false}>\n </GroupItem>\n <GroupItem\n column=\"ImporteTotal\"\n summaryType=\"sum\"\n valueFormat=\"$,##0.##\"\n displayFormat=\"Importe Total {0}\"\n showInGroupFooter={false}>\n </GroupItem>\n <TotalItem\n column=\"Importe\"\n summaryType=\"sum\"\n valueFormat=\"$,##0.##\"\n displayFormat=\"Importe {0}\"\n showInColumn=\"Importe\">\n </TotalItem>\n <TotalItem\n column=\"Impuestos\"\n summaryType=\"sum\"\n valueFormat=\"$,##0.##\"\n displayFormat=\"Impuestos {0}\"\n showInColumn=\"Impuestos\">\n </TotalItem>\n <TotalItem\n column=\"ImporteTotal\"\n summaryType=\"sum\"\n valueFormat=\"$,##0.##\"\n displayFormat=\"Importe Total {0}\"\n showInColumn=\"ImporteTotal\">\n </TotalItem>\n </Summary>\n </DataGrid>\n </div>\n ) : (<div />)}\n <Route exact path=\"/CustomerPayment/:ID\" render={({ match }) => {\n return (\n <div class=\"bg-gray-200\">\n {isDetail.toString() === 'true' ?\n (\n <div>\n <Link to=\"/CustomerPayment\">\n <button onClick={cancelEditButton} type=\"submit\" class=\"mb-4 bg-red-500 hover:bg-red-700 text-white font-bold py-2 px-4 rounded\">\n <FontAwesomeIcon icon={faArrowRotateLeft} /> Regresar\n </button>\n </Link>\n\n {activateSaveButton.toString() === 'true' ?\n (\n <button onClick={saveButton} type=\"submit\" class=\"ml-4 mb-4 bg-blue-500 hover:bg-blue-700 text-white font-bold py-2 px-4 rounded\">\n <FontAwesomeIcon icon={faSave} /> Guardar Cambios\n </button>\n ) : (\n <div class=\"inline-block\"></div>\n )}\n\n {activateConfirmButton.toString() === 'true' && id ?\n (\n <button onClick={confirmButton} type=\"submit\" class=\"ml-4 mb-4 bg-green-500 hover:bg-green-700 text-white font-bold py-2 px-4 rounded\">\n <FontAwesomeIcon icon={faPlay} /> Afectar\n </button>\n ) : (\n <div class=\"inline-block\"></div>\n )}\n\n {activateDeleteButton.toString() === 'true' && id ?\n (\n <button onClick={deleteButton} type=\"submit\" class=\"ml-4 mb-4 bg-red-500 hover:bg-red-700 text-white font-bold py-2 px-4 rounded\">\n <FontAwesomeIcon icon={faTrash} /> Eliminar\n </button>\n ) :\n (\n <div class=\"inline-block\"></div>\n )}\n\n {activateCancelButton.toString() === 'true' && id ?\n (\n <button onClick={voidButton} type=\"submit\" class=\"ml-4 mb-4 bg-red-500 hover:bg-red-700 text-white font-bold py-2 px-4 rounded\">\n <FontAwesomeIcon icon={faWindowClose} /> Cancelar\n </button>\n ) :\n (\n <div class=\"inline-block\"></div>\n )}\n\n {activatePDFButton.toString() === 'true' && id ?\n (\n <button onClick={printButton} type=\"submit\" class=\"ml-4 mb-4 bg-gray-500 hover:bg-gray-700 text-white font-bold py-2 px-4 rounded\">\n <FontAwesomeIcon icon={faFilePdf} /> PDF\n </button>\n ) :\n (\n <div class=\"inline-block\"></div>\n )}\n\n {activateRegenerateCFDi && id ?\n (\n <button onClick={regenerateCFDiFilesButton} type=\"submit\" class=\"ml-4 mb-4 bg-blue-500 hover:bg-blue-700 text-white font-bold py-2 px-4 rounded\">\n <FontAwesomeIcon icon={faFiles} /> Regenerar CFDi\n </button>\n ) :\n (\n <div class=\"inline-block\"></div>\n )}\n\n {activateSendCFDi && id ?\n (\n <button onClick={sendCFDiFilesButton} type=\"submit\" class=\"ml-4 mb-4 bg-blue-500 hover:bg-blue-700 text-white font-bold py-2 px-4 rounded\">\n <FontAwesomeIcon icon={faEnvelope} /> Reenviar CFDi\n </button>\n ) :\n (\n <div class=\"inline-block\"></div>\n )}\n\n <div class=\"bg-white p-4 shadow-xl\">\n <Form\n id=\"formTransaccion\"\n labelMode={'outside'}\n formData={customerPaymentPayload.header}\n readOnly={!activateUpdateForm}\n showColonAfterLabel={false}\n labelLocation={'top'}\n onFieldDataChanged={onFieldDatosGeneralesChanged}\n ref={formDatosGeneralesRef}\n >\n <TabbedItem>\n <TabPanelOptions deferRendering={false} showNavButtons={true} />\n <Tab title=\"Datos Generales\" colCount={2}>\n <GroupItem caption=\"General\" colCount={2}>\n <Item cssClass=\"boldText\" colSpan={2} dataField=\"Movimiento\" editorOptions={movimientoEditorOptions} />\n <Item dataField=\"FechaEmision\" editorType=\"dxDateBox\" editorOptions={fechaEmisionEditorOptions}>\n <Label text={\"Fecha Emisión\"} />\n </Item>\n <Item dataField=\"CtaDinero\" editorOptions={ctaDineroEditorOptions} >\n <Label text=\"Cuenta\" />\n </Item>\n <Item dataField=\"Moneda\" editorOptions={monedaEditorOptions} >\n <Label text=\"Moneda\" />\n </Item>\n <Item dataField=\"TipoCambio\" editorType=\"dxNumberBox\" editorOptions={tipoCambioEditorOptions} >\n <Label text=\"Tipo de Cambio\" />\n </Item>\n </GroupItem>\n <GroupItem caption=\"Pago\" colCount={2}>\n <Item dataField=\"FormaCobro\" colSpan={2} editorType=\"dxLookup\" editorOptions={formaCobroEditorOptions} >\n <Label text=\"Forma de Cobro\" />\n </Item>\n <Item dataField=\"SCDigitosTarjeta\" editorType=\"dxNumberBox\" editorOptions={digitosTarjetaEditorOptions} >\n <Label text=\"Dígitos Tarjeta\" />\n </Item>\n <EmptyItem />\n <Item dataField=\"Importe\" editorType=\"dxNumberBox\" editorOptions={importeEditorOptions} >\n <Label text=\"Importe\" />\n </Item>\n <Item dataField=\"Impuestos\" editorType=\"dxNumberBox\" editorOptions={impuestosEditorOptions} >\n <Label text=\"Impuestos\" />\n </Item>\n <Item dataField=\"SCPostfechado\" editorType=\"dxCheckBox\" editorOptions={postfechadoEditorOptions} >\n <Label text=\"Postfechado\" />\n </Item>\n <Item dataField=\"SCFechaPostfechado\" editorType=\"dxDateBox\" editorOptions={fechaPostfechadoEditorOptions} >\n <Label text=\"Fecha\" visible={esPostfechado} />\n </Item>\n\n </GroupItem>\n <GroupItem caption=\"Pedido\" colCount={2}>\n <Item dataField=\"SCReferencia\" colSpan={2} editorType=\"dxLookup\" editorOptions={scReferenciaEditorOptions} >\n <Label text=\"Referencia\" />\n </Item>\n <Item dataField=\"Cliente\" editorOptions={clienteEditorOptions} >\n <Label text=\"Cliente\" />\n </Item>\n <Item dataField=\"Pedido\" editorOptions={pedidoEditorOptions} >\n <Label text=\"Pedido\" />\n </Item>\n <Item dataField=\"NombreCliente\" colSpan={2} editorOptions={nombreClienteEditorOptions} >\n <Label text=\"Nombre Cliente\" />\n </Item>\n <Item dataField=\"SaldoPedido\" editorType=\"dxNumberBox\" editorOptions={saldoPedidoEditorOptions} >\n <Label text=\"Saldo\" visible={(customerPaymentPayload.header.Estatus === 'Sin Afectar')} />\n </Item>\n <Item dataField=\"SCPedidoPagoUnico\" editorType=\"dxCheckBox\" colSpan={2} editorOptions={scPedidoPagoUnicoEditorOptions} >\n <Label text=\"Pagado en una exhibición\" />\n </Item>\n </GroupItem>\n </Tab>\n <Tab title=\"Observaciones\" >\n <Item dataField=\"Observaciones\" editorType=\"dxTextArea\" >\n <Label text=\"Observaciones\" visible={false} />\n </Item>\n </Tab>\n <Tab title=\"Datos Cancelación\" visible={customerPaymentPayload.header.Estatus === 'Concluido' || customerPaymentPayload.header.Estatus === 'Cancelado'} >\n <GroupItem caption=\"Autorización\" colCount={1}>\n <Item dataField=\"SCUsuarioCancela\" editorType=\"dxSelectBox\" editorOptions={usuarioAutorizaEditorOptions}>\n <Label text=\"Usuario Autorización\" />\n </Item>\n <Item dataField=\"SCCancelaNota\" editorType=\"dxTextArea\" editorOptions={notaCancelacionEditorOptions}>\n <Label text=\"Nota Cancelación\" />\n </Item>\n </GroupItem>\n <GroupItem caption=\"Cancelación Movimiento\" colCount={1}>\n <Item dataField=\"DevolucionSaldo\" editorOptions={devolucionSaldoEditorOptions}>\n <Label text=\"Devolución Saldo\" />\n </Item>\n </GroupItem>\n </Tab>\n\n <Tab title=\"CFDi\" colCount={2}>\n <Item dataField=\"CFDIFechaTimbrado\" editorOptions={datosCFDIEditorOptions}>\n <Label text=\"Fecha Certificación\" />\n </Item>\n <Item dataField=\"CFDIUUID\" editorOptions={datosCFDIEditorOptions}>\n <Label text=\"UUID\" />\n </Item>\n <Item dataField=\"CFDICancelado\" editorType=\"dxCheckBox\" editorOptions={datosCFDIEditorOptions}>\n <Label text=\"CFDi Cancelado\" />\n </Item>\n <Item dataField=\"cfdi_TipoComprobante\" editorOptions={datosCFDIEditorOptions}>\n <Label text=\"Tipo de Comprobante\" />\n </Item>\n </Tab>\n <Tab title=\"Log Estatus\">\n <DataGrid\n id=\"gridLogEstatus\"\n columnsAutoWidth={true}\n dataSource={customerPaymentPayload.movEstatusLog}\n allowColumnReordering={true}\n allowColumnResizing={true}\n columnResizingMode={\"widget\"}\n showBorders={true}\n rowAlternationEnabled={true}\n showRowLines={true}\n showColumnLines={true}\n >\n <HeaderFilter visible={false} />\n <Column dataField=\"Usuario\" dataType=\"string\" width={350} caption=\"Usuario\" />\n <Column caption=\"Estatus\" alignment=\"center\" width={150} cellRender={estatusRelatedRecords} />\n <Column dataField=\"Fecha\" dataType=\"datetime\" width={300} caption=\"Fecha\" />\n </DataGrid>\n </Tab>\n <Tab title=\"Archivos Anexos\" >\n <div className=\"widget-container\">\n <FileUploader\n multiple={true}\n accept=\"*\"\n uploadMode=\"useButtons\"\n chunkSize={20000000}\n maxFileSize={20000000}\n uploadChunk={uploadChunk}\n disabled={!activateAttachments}\n />\n </div>\n <div id=\"wrapper\" className=\"show-widget\" >\n <div id=\"widget-area\">\n <FileManager id=\"attachmentManager\" fileSystemProvider={attachments} onItemDeleting={onAttachmentDeleting} onItemDownloading={onItemDownloading} onSelectedFileOpened={onAttachmentOpen}>\n <Permissions\n create={false}\n copy={false}\n move={false}\n delete={activateAttachments}\n rename={false}\n upload={false}\n download={true}\n >\n </Permissions>\n </FileManager>\n </div>\n </div>\n </Tab>\n </TabbedItem>\n </Form>\n </div>\n </div>\n ) :\n (\n <div></div>\n )\n }\n </div>\n )\n }}\n />\n </div>\n </div>\n );\n}\n","import React, { useState, useEffect, useRef, useMemo } from 'react';\n\n// LoadPanel\nimport { LoadPanel } from 'devextreme-react/load-panel';\n\n// Toast\nimport { Toast } from 'devextreme-react/toast';\n\n//Form\nimport Form, { GroupItem, Label, TabbedItem, TabPanelOptions, Tab } from 'devextreme-react/form';\n\nimport { Auth, API, Storage } from 'aws-amplify';\n\n// Ruteador\nimport { Route, Link, useHistory } from \"react-router-dom\";\n\n// Grid\nimport DataGrid, {\n Column, FilterRow, HeaderFilter, FilterPanel, FilterBuilderPopup,\n GroupPanel, Grouping, SearchPanel, Sorting, Editing, Lookup, Toolbar, Item, RequiredRule,\n Scrolling, Pager, Paging, Summary, TotalItem, StateStoring, ColumnChooser, Format, Selection,\n Export, ColumnChooserSearch, ColumnChooserSelection\n} from 'devextreme-react/data-grid';\n\n//CheckBox\nimport CheckBox from 'devextreme-react/check-box';\n\n//ContextMenu\nimport ContextMenu from 'devextreme-react/context-menu';\n\n// Iconos\nimport { FontAwesomeIcon } from \"@fortawesome/react-fontawesome\";\nimport { faGlasses } from \"@fortawesome/pro-solid-svg-icons\";\nimport { faPencilAlt } from \"@fortawesome/pro-solid-svg-icons\";\nimport { faArrowRotateLeft } from \"@fortawesome/pro-solid-svg-icons\";\nimport { faSave } from \"@fortawesome/pro-solid-svg-icons\";\nimport { faList } from \"@fortawesome/pro-duotone-svg-icons\";\nimport { faFilePdf } from \"@fortawesome/pro-solid-svg-icons\";\nimport { faArrowsRotate } from \"@fortawesome/pro-solid-svg-icons\";\nimport { faFileAlt } from \"@fortawesome/pro-solid-svg-icons\";\nimport { faPenNib } from \"@fortawesome/pro-duotone-svg-icons\";\nimport { faPlay } from \"@fortawesome/pro-solid-svg-icons\";\nimport { faTrash } from \"@fortawesome/pro-solid-svg-icons\";\nimport { faLightbulb } from \"@fortawesome/pro-solid-svg-icons\";\nimport { faCircleCheck } from \"@fortawesome/pro-solid-svg-icons\";\nimport { faCircleX } from \"@fortawesome/pro-solid-svg-icons\";\nimport { faWindowClose } from \"@fortawesome/pro-solid-svg-icons\";\nimport { faThumbsUp } from \"@fortawesome/pro-solid-svg-icons\";\nimport { faThumbsDown } from \"@fortawesome/pro-solid-svg-icons\";\nimport { faPenFancy } from \"@fortawesome/pro-solid-svg-icons\";\nimport { faCartPlus } from \"@fortawesome/pro-solid-svg-icons\";\nimport { faMoneyCheckDollar } from \"@fortawesome/pro-solid-svg-icons\";\nimport { faBadgeDollar } from \"@fortawesome/pro-solid-svg-icons\";\nimport { faArrowUpRightFromSquare } from \"@fortawesome/pro-solid-svg-icons\";\n\n\nimport 'devextreme/data/odata/store';\nimport CustomStore from 'devextreme/data/custom_store';\n\nimport DataSource from 'devextreme/data/data_source';\n\nimport '../ListStyle.css';\n\n//FileUploader\nimport FileUploader from 'devextreme-react/file-uploader';\n\n//FileManager\nimport FileManager, { Permissions } from 'devextreme-react/file-manager';\n\nimport dxDateBox from \"devextreme/ui/date_box\";\n\nimport dxNumberBox from \"devextreme/ui/number_box\";\n\nimport { Popup, Position, ToolbarItem } from 'devextreme-react/popup';\n\nimport TransactionStatus from \"../TransactionStatus/TransactionStatus.js\";\n\nimport Lambda from 'aws-sdk/clients/lambda';\n\nimport { Workbook } from 'exceljs';\nimport { saveAs } from 'file-saver';\nimport { exportDataGrid } from 'devextreme/excel_exporter'\n\ndxDateBox.defaultOptions({\n options: {\n dateSerializationFormat: \"yyyy-MM-dd\"\n }\n});\n\ndxNumberBox.defaultOptions({\n options: {\n step: 0\n }\n});\n\nfunction isNotEmpty(value) {\n return value !== undefined && value !== null && value !== '';\n}\n\nexport default function SalesOrderMod(props) {\n const history = useHistory();\n\n const [isDetail, setIsDetail] = useState(false);\n const [id, setId] = useState();\n const [permissionLevel, setPermissionLevel] = useState(props.nivel);\n const [salesOrderModUpdatePrices, setSalesOrderModUpdatePrices] = useState(props.salesOrderModUpdatePrices);\n const [approveSalesOrderMod, setApproveSalesOrderMod] = useState(props.approveSalesOrderMod);\n const [salesOrderModPayload, setSalesOrderModPayload] = useState({\n header: {},\n detail: [],\n movEstatusLog: []\n });\n\n const [addItemPayload, setAddItemPayload] = useState({\n Action: undefined,\n Renglon: undefined,\n RenglonID: undefined,\n SCSerieLote: undefined,\n Articulo: undefined,\n Cantidad: undefined,\n Precio: undefined\n });\n\n const [createCheckPayload, setCreateCheckPayload] = useState({\n Action: 'createCheck',\n SituacionGastosAdmin: 'NO',\n PorcentajeGA: 0\n });\n\n const [autoExpandAll, setAutoExpandAll] = useState(true);\n\n // setValue para el control tab\n const [value, setValue] = React.useState(0);\n\n const [visibleLoadPanel, setVisibleLoadPanel] = useState(false);\n\n const [visibleToast, setVisibleToast] = useState(false);\n const [messageToast, setMessageToast] = useState('');\n const [typeToast, setTypeToast] = useState('success');\n\n const [popupVisible, setPopupVisible] = useState(false);\n const [popupCheckVisible, setPopupCheckVisible] = useState(false);\n const [popupTitle, setPopupTitle] = useState('');\n\n const [fiscalRegimen, setFiscalRegimen] = useState([]);\n const [filtroUsoCFDI, setFiltroUsoCFDI] = useState([]);\n const [usuarios, setUsuarios] = useState([]);\n\n const [activateUpdateForm, setActivateUpdateForm] = useState(false);\n const [activateCustomSalesOrderField, setActivateCustomSalesOrderField] = useState(false);\n const [acceptCustomValues, setAcceptCustomValue] = useState(false);\n const [activateSaveButton, setActivateSaveButton] = useState(false);\n const [activateDeleteButton, setActivateDeleteButton] = useState(false);\n const [activateCancelButton, setActivateCancelButton] = useState(false);\n const [activateConfirmButton, setActivateConfirmButton] = useState(false);\n const [activateApproveButton, setActivateApproveButton] = useState(false);\n const [activatePDFButton, setActivatePDFButton] = useState(false);\n const [activateAttachments, setActivateAttachments] = useState(false);\n const [activateModifyData, setActivateModifyData] = useState(false);\n const [activateModifyItems, setActivateModifyItems] = useState(false);\n const [activateGetSalesOrderData, setActivateGetSalesOrderData] = useState(false);\n const [activateUpdateGrid, setActivateUpdateGrid] = useState(false);\n const [activateMoneyReturn, setActivateMoneyReturn] = useState(false);\n\n //Ref para el grid Tablero de Control\n const [gridTableroRef, setGridTableroRef] = useState(React.createRef());\n\n const [attachments, setAttachments] = useState([]);\n\n //Ref para el form\n const [formDatosGeneralesRef, setFormDatosGeneralesRef] = useState(React.createRef());\n\n //Ref para el form Add Item\n const [formAddItemRef, setFormAddItemRef] = useState(React.createRef());\n\n //Ref para el form Create Check\n const [formCreateCheckRef, setFormCreateCheckRef] = useState(React.createRef());\n\n //Ref para el grid Articulos Finales\n const [gridArticulosFinalesRef, setGridArticulosFinalesRef] = useState(React.createRef());\n\n //Ref para el grid Articulos Agregados\n const [gridArticulosAgregadosRef, setGridArticulosAgregadosRef] = useState(React.createRef());\n\n //Ref para el grid Articulos Eliminados\n const [gridArticulosEliminadosRef, setGridArticulosEliminadosRef] = useState(React.createRef());\n\n const handleChange = (event, newValue) => {\n setValue(newValue);\n };\n\n const filterBuilderPopupPosition = {\n of: window,\n at: 'top',\n my: 'top',\n offset: { y: 10 },\n };\n\n const allowedPageSizes = [5, 10, 15, 20, 'all'];\n\n const exportFormats = ['xlsx'];\n\n function getOrderDay(rowData) {\n return (new Date(rowData.OrderDate)).getDay();\n }\n\n const filterBuilder = {\n customOperations: [{\n name: 'weekends',\n caption: 'Weekends',\n dataTypes: ['date'],\n icon: 'check',\n hasValue: false,\n calculateFilterExpression: () => [[getOrderDay, '=', 0], 'or', [getOrderDay, '=', 6]],\n }],\n allowHierarchicalFields: true,\n };\n\n const filterValue = [['Estatus', '=', 'Sin Afectar']];\n\n function onAutoExpandAllChanged() {\n setAutoExpandAll(!autoExpandAll)\n };\n\n async function getSalesOrderModRecords(sqlFilter) {\n try {\n let apiName = 'AdminSC';\n let path = '/procesamodpedido';\n\n let myInit = {\n headers: {\n 'Content-Type': 'application/json',\n Authorization: `${(await Auth.currentSession()).getAccessToken().getJwtToken()}`\n },\n queryStringParameters: {\n action: 'list',\n sqlFilter: sqlFilter,\n salesAccess: props.salesAccess,\n sucursal: props.sucursal,\n username: JSON.parse(JSON.stringify(await Auth.currentAuthenticatedUser())).username\n }\n }\n\n var salesOrderModGet = await API.get(apiName, path, myInit);\n }\n catch (e) {\n if (e === 'No current user') {\n history.push('/');\n\n window.location.reload();\n }\n }\n\n return salesOrderModGet;\n }\n\n const store = new CustomStore({\n key: 'ID',\n load(loadOptions) {\n let sqlFilter = '(';\n [\n 'filter'\n ].forEach((i) => {\n if (i in loadOptions && isNotEmpty(loadOptions[i])) {\n var filters = loadOptions[i];\n\n var filtersLength = filters.length;\n\n for (var i = 0; i <= filtersLength; i++) {\n var singleFilter = filters[i];\n var singleFilterType = typeof singleFilter;\n var singleFilterIsArray = Array.isArray(singleFilter);\n var singleFilterIsDate = singleFilter instanceof Date;\n\n if (singleFilter === 'NULL') {\n singleFilter = '0';\n }\n\n if (singleFilterType.toString() === 'object' && singleFilterIsArray) {\n sqlFilter += '(';\n\n var subFiltersLength = singleFilter.length;\n\n for (var i2 = 0; i2 <= subFiltersLength; i2++) {\n var singleSubFilter = singleFilter[i2];\n var singleSubFilterType = typeof singleSubFilter;\n var singleSubFilterIsArray = Array.isArray(singleSubFilter);\n var singleSubFilterIsDate = singleSubFilter instanceof Date\n\n if (singleSubFilter === 'NULL') {\n singleSubFilter = '0';\n }\n\n if (singleSubFilterType.toString() === 'object' && singleSubFilterIsArray) {\n sqlFilter += '(';\n\n var subSubFiltersLength = singleSubFilter.length;\n\n for (var i3 = 0; i3 <= subSubFiltersLength; i3++) {\n var singleSubSubFilter = singleSubFilter[i3];\n var singleSubSubFilterType = typeof singleSubSubFilter;\n var singleSubSubFilterIsArray = Array.isArray(singleSubSubFilter);\n var singleSubSubFilterIsDate = singleSubSubFilter instanceof Date\n\n if (singleSubSubFilter === 'NULL') {\n singleSubSubFilter = '0';\n }\n\n if (singleSubSubFilterType.toString() === 'object' && singleSubSubFilterIsArray) {\n sqlFilter += '(';\n\n var subSubSubFiltersLength = singleSubSubFilter.length;\n\n for (var i4 = 0; i4 <= subSubSubFiltersLength; i4++) {\n var singleSubSubSubFilter = singleSubSubFilter[i4];\n var singleSubSubSubFilterType = typeof singleSubSubSubFilter;\n var singleSubSubSubFilterIsArray = Array.isArray(singleSubSubSubFilter);\n var singleSubSubSubFilterIsDate = singleSubSubSubFilter instanceof Date\n\n if (singleSubSubSubFilter === 'NULL') {\n singleSubSubSubFilter = '0';\n }\n\n if (singleSubSubSubFilterType.toString() === 'object' && singleSubSubSubFilterIsArray) {\n sqlFilter += '(';\n\n var subSubSubSubFiltersLength = singleSubSubSubFilter.length;\n\n for (var i5 = 0; i5 <= subSubSubSubFiltersLength; i5++) {\n var singleSubSubSubSubFilter = singleSubSubSubFilter[i5];\n var singleSubSubSubSubFilterType = typeof singleSubSubSubSubFilter;\n var singleSubSubSubSubFilterIsArray = Array.isArray(singleSubSubSubSubFilter);\n var singleSubSubSubSubFilterIsDate = singleSubSubSubSubFilter instanceof Date\n\n if (singleSubSubSubSubFilter === 'NULL') {\n singleSubSubSubSubFilter = '0';\n }\n\n if (singleSubSubSubSubFilterType.toString() === 'string') {\n if (singleSubSubSubSubFilter === 'contains') {\n filters[i][i2][i3][i4][i5] = 'LIKE';\n singleSubSubSubSubFilter = 'LIKE';\n\n filters[i][i2][i3][i4][i5 + 1] = '\\'%' + filters[i][i2][i3][i4][i5 + 1] + '%\\'';\n }\n else if (singleSubSubSubSubFilter === 'notcontains') {\n filters[i][i2][i3][i4][i5] = 'NOT LIKE';\n singleSubSubSubSubFilter = 'NOT LIKE';\n\n filters[i][i2][i3][i4][i5 + 1] = '\\'%' + filters[i][i2][i3][i4][i5 + 1] + '%\\'';\n }\n else if (singleSubSubSubSubFilter === 'startswith') {\n filters[i][i2][i3][i4][i5] = 'LIKE';\n singleSubSubSubSubFilter = 'LIKE';\n\n filters[i][i2][i3][i4][i5 + 1] = '\\'' + filters[i][i2][i3][i4][i5 + 1] + '%\\'';\n }\n else if (singleSubSubSubSubFilter === 'endswith') {\n filters[i][i2][i3][i4][i5] = 'LIKE';\n singleSubSubSubSubFilter = 'LIKE';\n\n filters[i][i2][i3][i4][i5 + 1] = '\\'%' + filters[i][i2][i3][i4][i5 + 1] + '\\'';\n }\n else if (singleSubSubSubSubFilter === '=' || singleSubSubSubSubFilter === '<>' || singleSubSubSubSubFilter === '>' || singleSubSubSubSubFilter === '>=' || singleSubSubSubSubFilter === '<' || singleSubSubSubSubFilter === '<=') {\n if (!filters[i][i2][i3][i4][i5 + 1])\n filters[i][i2][i3][i4][i5 + 1] = 'NULL';\n else if (typeof filters[i][i2][i3][i4][i5 + 1] === 'string') {\n filters[i][i2][i3][i4][i5 + 1] = '\\'' + filters[i][i2][i3][i4][i5 + 1] + '\\'';\n }\n }\n else if (singleSubSubSubSubFilter === '!') {\n filters[i][i2][i3][i4][i5] = 'NOT';\n singleSubSubSubSubFilter = 'NOT';\n }\n\n sqlFilter += ' ' + singleSubSubSubSubFilter + ' ';\n }\n else if (singleSubSubSubSubFilterType.toString() === 'object' && singleSubSubSubSubFilterIsDate) {\n sqlFilter += ' \\'' + singleSubSubSubSubFilter.toISOString().split('T')[0] + '\\' ';\n }\n else if (singleSubSubSubSubFilterType.toString() === 'number') {\n sqlFilter += ' ' + singleSubSubSubSubFilter.toString() + ' ';\n }\n else if (singleSubSubSubSubFilterType.toString() === 'boolean') {\n if (singleSubSubSubSubFilter.toString() === 'true')\n sqlFilter += '1 ';\n else if (singleSubSubSubSubFilter.toString() === 'false' || singleSubSubSubSubFilter === null || singleSubSubSubSubFilter === undefined)\n sqlFilter += '0 ';\n }\n }\n }\n else if (singleSubSubSubFilterType.toString() === 'string') {\n if (singleSubSubSubFilter === 'contains') {\n filters[i][i2][i3][i4] = 'LIKE';\n singleSubSubSubFilter = 'LIKE';\n\n filters[i][i2][i3][i4 + 1] = '\\'%' + filters[i][i2][i3][i4 + 1] + '%\\'';\n }\n else if (singleSubSubSubFilter === 'notcontains') {\n filters[i][i2][i3][i4] = 'NOT LIKE';\n singleSubSubSubFilter = 'NOT LIKE';\n\n filters[i][i2][i3][i4 + 1] = '\\'%' + filters[i][i2][i3][i4 + 1] + '%\\'';\n }\n else if (singleSubSubSubFilter === 'startswith') {\n filters[i][i2][i3][i4] = 'LIKE';\n singleSubSubSubFilter = 'LIKE';\n\n filters[i][i2][i3][i4 + 1] = '\\'' + filters[i][i2][i3][i4 + 1] + '%\\'';\n }\n else if (singleSubSubSubFilter === 'endswith') {\n filters[i][i2][i3][i4] = 'LIKE';\n singleSubSubSubFilter = 'LIKE';\n\n filters[i][i2][i3][i4 + 1] = '\\'%' + filters[i][i2][i3][i4 + 1] + '\\'';\n }\n else if (singleSubSubSubFilter === '=' || singleSubSubSubFilter === '<>' || singleSubSubSubFilter === '>' || singleSubSubSubFilter === '>=' || singleSubSubSubFilter === '<' || singleSubSubSubFilter === '<=') {\n if (!filters[i][i2][i3][i4 + 1])\n filters[i][i2][i3][i4 + 1] = 'NULL';\n else if (typeof filters[i][i2][i3][i4 + 1] === 'string') {\n filters[i][i2][i3][i4 + 1] = '\\'' + filters[i][i2][i3][i4 + 1] + '\\'';\n }\n }\n else if (singleSubSubSubFilter === '!') {\n filters[i][i2][i3][i4] = 'NOT';\n singleSubSubSubFilter = 'NOT';\n }\n\n sqlFilter += ' ' + singleSubSubSubFilter + ' ';\n }\n else if (singleSubSubSubFilterType.toString() === 'object' && singleSubSubSubFilterIsDate) {\n sqlFilter += ' \\'' + singleSubSubSubFilter.toISOString().split('T')[0] + '\\' ';\n }\n else if (singleSubSubSubFilterType.toString() === 'number') {\n sqlFilter += ' ' + singleSubSubSubFilter.toString() + ' ';\n }\n else if (singleSubSubSubFilterType.toString() === 'boolean') {\n if (singleSubSubSubFilter.toString() === 'true')\n sqlFilter += '1 ';\n else if (singleSubSubSubFilter.toString() === 'false' || singleSubSubSubFilter === null || singleSubSubSubFilter === undefined)\n sqlFilter += '0 ';\n }\n }\n\n sqlFilter += ')';\n }\n else if (singleSubSubFilterType.toString() === 'string') {\n if (singleSubSubFilter === 'contains') {\n filters[i][i2][i3] = 'LIKE';\n singleSubSubFilter = 'LIKE';\n\n filters[i][i2][i3 + 1] = '\\'%' + filters[i][i2][i3 + 1] + '%\\'';\n }\n else if (singleSubSubFilter === 'notcontains') {\n filters[i][i2][i3] = 'NOT LIKE';\n singleSubSubFilter = 'NOT LIKE';\n\n filters[i][i2][i3 + 1] = '\\'%' + filters[i][i2][i3 + 1] + '%\\'';\n }\n else if (singleSubSubFilter === 'startswith') {\n filters[i][i2][i3] = 'LIKE';\n singleSubSubFilter = 'LIKE';\n\n filters[i][i2][i3 + 1] = '\\'' + filters[i][i2][i3 + 1] + '%\\'';\n }\n else if (singleSubSubFilter === 'endswith') {\n filters[i][i2][i3] = 'LIKE';\n singleSubSubFilter = 'LIKE';\n\n filters[i][i2][i3 + 1] = '\\'%' + filters[i][i2][i3 + 1] + '\\'';\n }\n else if (singleSubSubFilter === '=' || singleSubSubFilter === '<>' || singleSubSubFilter === '>' || singleSubSubFilter === '>=' || singleSubSubFilter === '<' || singleSubSubFilter === '<=') {\n if (!filters[i][i2][i3 + 1])\n filters[i][i2][i3 + 1] = 'NULL';\n else if (typeof filters[i][i2][i3 + 1] === 'string') {\n filters[i][i2][i3 + 1] = '\\'' + filters[i][i2][i3 + 1] + '\\'';\n }\n }\n else if (singleSubSubFilter === '!') {\n filters[i][i2][i3] = 'NOT';\n singleSubSubFilter = 'NOT';\n }\n sqlFilter += ' ' + singleSubSubFilter + ' ';\n }\n else if (singleSubSubFilterType.toString() === 'object' && singleSubSubFilterIsDate) {\n sqlFilter += ' \\'' + singleSubSubFilter.toISOString().split('T')[0] + '\\' ';\n }\n else if (singleSubSubFilterType.toString() === 'number') {\n sqlFilter += ' ' + singleSubSubFilter.toString() + ' ';\n }\n else if (singleSubSubFilterType.toString() === 'boolean') {\n if (singleSubSubFilter.toString() === 'true')\n sqlFilter += '1 ';\n else if (singleSubSubFilter.toString() === 'false' || singleSubSubFilter === null || singleSubSubFilter === undefined)\n sqlFilter += '0 ';\n }\n }\n\n sqlFilter += ')';\n }\n else if (singleSubFilterType.toString() === 'string') {\n if (singleSubFilter === 'contains') {\n filters[i][i2] = 'LIKE';\n singleSubFilter = 'LIKE';\n\n filters[i][i2 + 1] = '\\'%' + filters[i][i2 + 1] + '%\\'';\n }\n else if (singleSubFilter === 'notcontains') {\n filters[i][i2] = 'NOT LIKE';\n singleSubFilter = 'NOT LIKE';\n\n filters[i][i2 + 1] = '\\'%' + filters[i][i2 + 1] + '%\\'';\n }\n else if (singleSubFilter === 'startswith') {\n filters[i][i2] = 'LIKE';\n singleSubFilter = 'LIKE';\n\n filters[i][i2 + 1] = '\\'' + filters[i][i2 + 1] + '%\\'';\n }\n else if (singleSubFilter === 'endswith') {\n filters[i][i2] = 'LIKE';\n singleSubFilter = 'LIKE';\n\n filters[i][i2 + 1] = '\\'%' + filters[i][i2 + 1] + '\\'';\n }\n else if (singleSubFilter === '=' || singleSubFilter === '<>' || singleSubFilter === '>' || singleSubFilter === '>=' || singleSubFilter === '<' || singleSubFilter === '<=') {\n if (!filters[i][i2 + 1])\n filters[i][i2 + 1] = 'NULL';\n else if (typeof filters[i][i2 + 1] === 'string') {\n filters[i][i2 + 1] = '\\'' + filters[i][i2 + 1] + '\\'';\n }\n }\n else if (singleSubFilter === '!') {\n filters[i][i2] = 'NOT';\n singleSubFilter = 'NOT';\n }\n sqlFilter += ' ' + singleSubFilter + ' ';\n }\n else if (singleSubFilterType.toString() === 'object' && singleSubFilterIsDate) {\n sqlFilter += ' \\'' + singleSubFilter.toISOString().split('T')[0] + '\\' ';\n }\n else if (singleSubFilterType.toString() === 'number') {\n sqlFilter += ' ' + singleSubFilter.toString() + ' ';\n }\n else if (singleSubFilterType.toString() === 'boolean') {\n if (singleSubFilter.toString() === 'true')\n sqlFilter += '1 ';\n else if (singleSubFilter.toString() === 'false' || singleSubFilter === null || singleSubFilter === undefined)\n sqlFilter += '0 ';\n }\n }\n\n sqlFilter += ')';\n }\n else if (singleFilterType.toString() === 'string') {\n if (singleFilter === 'contains') {\n filters[i] = 'LIKE';\n singleFilter = 'LIKE';\n\n filters[i + 1] = '\\'%' + filters[i + 1] + '%\\'';\n }\n else if (singleFilter === 'notcontains') {\n filters[i] = 'NOT LIKE';\n singleFilter = 'NOT LIKE';\n\n filters[i + 1] = '\\'%' + filters[i + 1] + '%\\'';\n }\n else if (singleFilter === 'startswith') {\n filters[i] = 'LIKE';\n singleFilter = 'LIKE';\n\n filters[i + 1] = '\\'' + filters[i + 1] + '%\\'';\n }\n else if (singleFilter === 'endswith') {\n filters[i] = 'LIKE';\n singleFilter = 'LIKE';\n\n filters[i + 1] = '\\'%' + filters[i + 1] + '\\'';\n }\n else if (singleFilter === '=' || singleFilter === '<>' || singleFilter === '>' || singleFilter === '>=' || singleFilter === '<' || singleFilter === '<=') {\n if (!filters[i + 1])\n filters[i + 1] = 'NULL';\n else if (typeof filters[i + 1] === 'string') {\n filters[i + 1] = '\\'' + filters[i + 1] + '\\'';\n }\n }\n else if (singleFilter === '!') {\n filters[i] = 'NOT';\n singleFilter = 'NOT';\n }\n sqlFilter += ' ' + singleFilter + ' ';\n }\n else if (singleFilterType.toString() === 'object' && singleFilterIsDate) {\n sqlFilter += ' \\'' + singleFilter.toISOString().split('T')[0] + '\\' ';\n }\n else if (singleFilterType.toString() === 'number') {\n sqlFilter += ' ' + singleFilter.toString() + ' ';\n }\n else if (singleFilterType.toString() === 'boolean') {\n if (singleFilter.toString() === 'true')\n sqlFilter += '1 ';\n else if (singleFilter.toString() === 'false' || singleFilter === null || singleFilter === undefined)\n sqlFilter += '0 ';\n }\n }\n\n sqlFilter += ')';\n }\n });\n\n async function getRecords() {\n if (sqlFilter === '(')\n sqlFilter = '';\n\n var records = await getSalesOrderModRecords(sqlFilter);\n return {\n data: records,\n totalCount: records.length\n };\n }\n\n return getRecords()\n .then(function (result) {\n return result;\n })\n .catch(() => { throw new Error('Data Loading Error'); });\n },\n });\n\n var fechaEmisionEditorOptions = { width: '100%', readOnly: true };\n var movimientoEditorOptions = { width: '100%', readOnly: true };\n var datosClienteEditorOptions = { width: '100%', readOnly: true };\n var estatusEditorOptions = { width: '100%', readOnly: true };\n var autorizacionEditorOptions = { width: '100%', readOnly: true };\n var cancelacionTotalEditorOptions = { width: '100%', readOnly: true };\n var saldoEditorOptions = { width: '100%', readOnly: true };\n var precioEditorOptions = { format: { type: 'currency', currency: 'MXN', precision: 2 }, width: '100%', disabled: !(salesOrderModPayload.header.SCUsuarioAutorizaPrecios && salesOrderModPayload.header.SCCodigoAutorizaPrecios) };\n var uppercaseEditorOptions = { inputAttr: { 'style': 'text-transform: uppercase' } };\n\n var usuarioDataSource = useMemo(() => {\n return new DataSource({\n paginate: true,\n store: {\n type: \"array\",\n key: \"Usuario\",\n data: usuarios\n }\n });\n }, [usuarios]);\n\n const situacionGastosAdminDataSource = [\n { name: 'SI', value: 'SI' },\n { name: 'NO', value: 'NO' }\n ]\n\n try {\n var fiscalRegimenEditorOptions = {\n dataSource: fiscalRegimen,\n displayExpr: 'name',\n valueExpr: 'value',\n searchEnabled: true,\n value: (salesOrderModPayload.customerData.FiscalRegimen ? salesOrderModPayload.customerData.FiscalRegimen : ''),\n width: '100%'\n };\n }\n catch (e) {\n var fiscalRegimenEditorOptions = {\n dataSource: fiscalRegimen,\n displayExpr: 'name',\n valueExpr: 'value',\n searchEnabled: true,\n value: '',\n width: '100%'\n };\n }\n\n try {\n var usoCFDIEditorOptions = {\n dataSource: filtroUsoCFDI,\n displayExpr: 'name',\n valueExpr: 'value',\n searchEnabled: true,\n acceptCustomValue: ((salesOrderModPayload.header.Estatus === 'Sin Afectar') ? false : true),\n value: (salesOrderModPayload.customerData.SATCatUsoCFDI ? salesOrderModPayload.customerData.SATCatUsoCFDI : ''),\n width: '100%'\n };\n }\n catch (e) {\n var usoCFDIEditorOptions = {\n dataSource: filtroUsoCFDI,\n displayExpr: 'name',\n valueExpr: 'value',\n acceptCustomValue: ((salesOrderModPayload.header.Estatus === 'Sin Afectar') ? false : true),\n searchEnabled: true,\n value: '',\n width: '100%'\n };\n }\n\n //Opciones Usuario Asociado del Usuario\n try {\n var usuarioAutorizaEditorOptions = useMemo(() => {\n return {\n dataSource: usuarioDataSource,\n displayExpr: 'name',\n valueExpr: 'value',\n searchEnabled: true,\n value: (salesOrderModPayload.header.SCUsuarioAutorizaPrecios ? salesOrderModPayload.header.SCUsuarioAutorizaPrecios : ''), width: '100%'\n };\n }, [usuarioDataSource, salesOrderModPayload.header.SCUsuarioAutorizaPrecios]);\n }\n catch (e) {\n var usuarioAutorizaEditorOptions = {\n dataSource: usuarioDataSource,\n displayExpr: 'name',\n valueExpr: 'value',\n searchEnabled: true,\n value: '',\n width: '100%'\n };\n }\n\n const storePedido = new CustomStore({\n key: 'value',\n load(loadOptions) {\n let sqlFilter = '';\n [\n 'filter'\n ].forEach((i) => {\n sqlFilter = loadOptions.searchValue;\n });\n\n async function getRecords() {\n if (sqlFilter) {\n var records = await getPedidos(sqlFilter);\n\n return {\n data: records,\n totalCount: records.length\n };\n }\n else {\n return {\n data: [],\n totalCount: 0\n };\n }\n }\n\n return getRecords()\n .then(function (result) {\n return result;\n })\n .catch(() => { throw new Error('Data Loading Error'); });\n },\n byKey: (key) => {\n return {\n name: key,\n value: key\n };\n }\n });\n\n //Opciones del campo Pedido\n try {\n var pedidoEditorOptions = {\n dataSource: storePedido,\n displayExpr: 'name',\n valueExpr: 'value',\n searchEnabled: true,\n showClearButton: true,\n acceptCustomValue: !activateCustomSalesOrderField,\n value: (salesOrderModPayload.header.Pedido ? salesOrderModPayload.header.Pedido : ''),\n disabled: !activateCustomSalesOrderField,\n searchTimeout: 1500,\n width: '100%',\n clearButtonText: 'Cerrar',\n noDataText: 'No se encontraron resultados'\n };\n }\n catch (e) {\n var pedidoEditorOptions = {\n dataSource: storePedido,\n displayExpr: 'name',\n valueExpr: 'value',\n searchEnabled: true,\n acceptCustomValue: acceptCustomValues,\n value: '',\n width: '100%'\n };\n }\n\n const storeArticulo = new CustomStore({\n key: 'value',\n load(loadOptions) {\n let sqlFilter = '';\n [\n 'filter'\n ].forEach((i) => {\n sqlFilter = loadOptions.searchValue;\n });\n\n async function getRecords() {\n if (sqlFilter) {\n var records = await getArticulo(sqlFilter);\n\n return {\n data: records,\n totalCount: records.length\n };\n }\n else {\n return {\n data: [],\n totalCount: 0\n };\n }\n }\n\n return getRecords()\n .then(function (result) {\n return result;\n })\n .catch(() => { throw new Error('Data Loading Error'); });\n },\n byKey: (key) => {\n async function getRecords(key) {\n var records = await getArticulo(key);\n\n return records;\n }\n\n return getRecords(key);\n }\n });\n\n //Opciones del campo Articulo\n try {\n var articuloEditorOptions = {\n dataSource: storeArticulo,\n displayExpr: 'name',\n valueExpr: 'value',\n searchEnabled: true,\n showClearButton: true,\n acceptCustomValue: false,\n disabled: false,\n searchTimeout: 1500,\n width: '100%',\n clearButtonText: 'Cerrar',\n noDataText: 'No se encontraron resultados'\n };\n }\n catch (e) {\n var articuloEditorOptions = {\n dataSource: storeArticulo,\n displayExpr: 'name',\n valueExpr: 'value',\n searchEnabled: true,\n acceptCustomValue: false,\n width: '100%'\n };\n }\n\n var situacionGastosAdminEditorOptions = {\n dataSource: situacionGastosAdminDataSource,\n displayExpr: 'name',\n valueExpr: 'value',\n searchEnabled: false,\n width: '100%'\n };\n\n var porcentajeGAEditorOptions = {\n format: 'percent'\n };\n\n async function uploadChunk(file, uploadInfo) {\n try {\n var responseS3 = await Storage.put(\"/mod/\" + id + \"/\" + file.name, uploadInfo.chunkBlob, {\n contentType: file.type,\n ACL: 'public-read'\n });\n\n //Obtenemos el nombre del bucket\n let bucketName = Storage._config.AWSS3.bucket;\n\n\n let apiName = 'AdminSC';\n let path = '/uploadattachment';\n\n let myInit = {\n headers: {\n 'Content-Type': 'application/json',\n Authorization: `${(await Auth.currentSession()).getAccessToken().getJwtToken()}`\n },\n body: {\n action: 'register',\n bucketName: bucketName,\n type: 'mod',\n id: id,\n Key: \"/mod/\" + id + \"/\" + file.name,\n fileName: file.name,\n username: JSON.parse(JSON.stringify(await Auth.currentAuthenticatedUser())).username\n }\n }\n\n var attachmentsResult = await API.post(apiName, path, myInit);\n\n //Obtenemos los attachments\n var attachmentsGet = await Storage.list(\"/mod/\" + id);\n var attachmentsAux = [];\n\n for (var attachmentsGetIndex in attachmentsGet) {\n var singleAttachmentsGet = attachmentsGet[attachmentsGetIndex];\n\n var singleAttachment = {\n name: singleAttachmentsGet.key.split('/').pop(),\n isDirectory: false,\n size: singleAttachmentsGet.size,\n };\n\n attachmentsAux.push(singleAttachment);\n }\n\n setAttachments(attachmentsAux);\n }\n catch (err) {\n console.log(\"Error uploading file:\", err);\n }\n }\n\n async function onAttachmentDeleting(e) {\n var fileName = e.item.key;\n\n //Primero borramos el archivo de S3\n var attachmentsDelete = await Storage.remove(\"/mod/\" + id + \"/\" + fileName);\n\n //Despues borramos el attachment en Intelisis\n let bucketName = Storage._config.AWSS3.bucket;\n\n let apiName = 'AdminSC';\n let path = '/uploadattachment';\n\n let myInit = {\n headers: {\n 'Content-Type': 'application/json',\n Authorization: `${(await Auth.currentSession()).getAccessToken().getJwtToken()}`\n },\n body: {\n action: 'delete',\n bucketName: bucketName,\n type: 'mod',\n id: id,\n Key: \"/mod/\" + id + \"/\" + fileName,\n fileName: fileName,\n username: JSON.parse(JSON.stringify(await Auth.currentAuthenticatedUser())).username\n }\n }\n\n var attachmentsResult = await API.post(apiName, path, myInit);\n\n //Finalmente sincronizamos el state\n var attachmentsGet = await Storage.list(\"/mod/\" + id);\n var attachmentsAux = [];\n\n for (var attachmentsGetIndex in attachmentsGet) {\n var singleAttachmentsGet = attachmentsGet[attachmentsGetIndex];\n\n var singleAttachment = {\n name: singleAttachmentsGet.key.split('/').pop(),\n isDirectory: false,\n size: singleAttachmentsGet.size,\n };\n\n attachmentsAux.push(singleAttachment);\n }\n\n setAttachments(attachmentsAux);\n };\n\n function downloadBlob(blob, filename) {\n const url = URL.createObjectURL(blob);\n const a = document.createElement('a');\n a.href = url;\n a.download = filename || 'download';\n const clickHandler = () => {\n setTimeout(() => {\n URL.revokeObjectURL(url);\n a.removeEventListener('click', clickHandler);\n }, 150);\n };\n\n a.addEventListener('click', clickHandler, false);\n\n a.click();\n\n return a;\n };\n\n async function onItemDownloading(e) {\n e.cancel = true;\n\n const downloadFileResponse = await Storage.get(\"/mod/\" + id + \"/\" + e.item.name, { download: true });\n\n downloadBlob(downloadFileResponse.Body, e.item.name);\n };\n\n function openBlob(blob, filename) {\n const url = URL.createObjectURL(blob);\n\n window.open(url, \"_blank\");\n };\n\n async function onAttachmentOpen(e) {\n const downloadFileResponse = await Storage.get(\"/mod/\" + id + \"/\" + e.file.name, { download: true });\n\n openBlob(downloadFileResponse.Body, e.file.name);\n };\n\n async function getSalesOrderModPayload(ID) {\n try {\n let apiName = 'AdminSC';\n let path = '/procesamodpedido';\n\n let myInit = {\n headers: {\n 'Content-Type': 'application/json',\n Authorization: `${(await Auth.currentSession()).getAccessToken().getJwtToken()}`\n },\n queryStringParameters: {\n ID: ID,\n action: 'payload',\n username: JSON.parse(JSON.stringify(await Auth.currentAuthenticatedUser())).username\n }\n }\n\n var payloadGet = await API.get(apiName, path, myInit);\n\n setSalesOrderModPayload(payloadGet);\n\n //Obtenemos los attachments\n var attachmentsGet = await Storage.list(\"/mod/\" + ID);\n var attachmentsAux = [];\n\n for (var attachmentsGetIndex in attachmentsGet) {\n var singleAttachmentsGet = attachmentsGet[attachmentsGetIndex];\n\n var singleAttachment = {\n name: singleAttachmentsGet.key.split('/').pop(),\n isDirectory: false,\n size: singleAttachmentsGet.size,\n };\n\n attachmentsAux.push(singleAttachment);\n }\n\n setAttachments(attachmentsAux);\n }\n catch (e) {\n if (e === 'No current user') {\n history.push('/');\n\n window.location.reload();\n }\n }\n\n return payloadGet;\n };\n\n async function getInvoicePayload(IDFactura) {\n try {\n let apiName = 'AdminSC';\n let path = '/procesaanticiposaldo';\n\n let myInit = {\n headers: {\n 'Content-Type': 'application/json',\n Authorization: `${(await Auth.currentSession()).getAccessToken().getJwtToken()}`\n },\n body: {\n action: 'invoicePayload',\n invoices: [{ ID: IDFactura }],\n username: JSON.parse(JSON.stringify(await Auth.currentAuthenticatedUser())).username\n }\n };\n\n var payloadGet = await API.post(apiName, path, myInit);\n\n return payloadGet;\n }\n catch (e) {\n if (e === 'No current user') {\n history.push('/');\n\n window.location.reload();\n }\n }\n\n return payloadGet;\n };\n\n function editSalesOrderMod(data) {\n return (\n <Link to={`/SalesOrderMod/${data.data.ID}`}>\n <button class=\"bg-blue-500 hover:bg-blue-700 text-white py-1 px-3 rounded\" onClick={() => editButton(data.data.ID)}><FontAwesomeIcon icon={permissionLevel === 'Editar' ? faPencilAlt : faGlasses} /> {permissionLevel === 'Editar' ? 'Editar' : 'Ver'}</button>\n </Link>\n )\n }\n\n function openRelatedRecord(redirect) {\n if (redirect) {\n var baseUrl = window.location.href.split('#/')[0];\n\n redirect = baseUrl + '#' + redirect;\n\n window.open(redirect, \"_blank\");\n }\n }\n\n function openRelatedRecordButton(data) {\n return (\n <button onClick={() => openRelatedRecord(data.data.redirect)}><FontAwesomeIcon icon={faArrowUpRightFromSquare} /></button>\n )\n }\n\n function estatusRelatedRecords(data) {\n return (\n <TransactionStatus {...props} Estatus={data.data.Estatus} />\n )\n };\n\n async function generateInvoiceCFDiPDF(payload, payloadFactura) {\n var modulo = 'vtas';\n var type = 'invoice';\n\n try {\n // Despues enviamos el payload a la API crearPDF\n // *********************************************\n let apiName = 'AdminSC';\n let path = '/crearpdf';\n\n let myInit = {\n headers: {\n 'Content-Type': 'application/json',\n Authorization: `${(await Auth.currentSession()).getAccessToken().getJwtToken()}`\n },\n body: {\n type: type,\n payload: payloadFactura,\n bucketName: Storage._config.AWSS3.bucket,\n fileKey: `public//${modulo}/${payload.header.IDFactura}/${payload.header.MovimientoFactura.trim()}.pdf`,\n contentType: 'application/pdf',\n username: JSON.parse(JSON.stringify(await Auth.currentAuthenticatedUser())).username\n }\n }\n\n var pdfPost = await API.post(apiName, path, myInit);\n\n // *********************************************\n\n if (pdfPost.message.indexOf('Error') >= 0) {\n setVisibleToast(true);\n setMessageToast(pdfPost.message);\n setTypeToast('error');\n return;\n }\n else {\n return pdfPost;\n }\n }\n catch (e) {\n setVisibleLoadPanel(false);\n\n if (e === 'No current user') {\n history.push('/');\n\n window.location.reload();\n }\n }\n };\n\n function blobToBase64(blob) {\n return new Promise((resolve, _) => {\n const reader = new FileReader();\n reader.onloadend = () => resolve(reader.result);\n reader.readAsDataURL(blob);\n });\n };\n\n async function sendInvoiceCFDiFiles(hideToast, MovimientoFactura, IDFactura) {\n try {\n let apiName = 'AdminSC';\n let path = '/enviarcorreo';\n\n let pdfFile = await Storage.get(\"/vtas/\" + IDFactura + \"/\" + MovimientoFactura.trim() + '.pdf', { download: true });\n let xmlFile = await Storage.get(\"/vtas/\" + IDFactura + \"/\" + MovimientoFactura.trim() + '.xml', { download: true });\n\n if (!pdfFile || !xmlFile) {\n return;\n }\n\n if (!hideToast)\n setVisibleLoadPanel(true);\n\n let xmlFileContents = await blobToBase64(xmlFile.Body);\n let pdfFileContents = await blobToBase64(pdfFile.Body);\n\n xmlFileContents = xmlFileContents.toString().split('base64,')[1];\n pdfFileContents = pdfFileContents.toString().split('base64,')[1];\n\n if (!xmlFileContents || !pdfFileContents) {\n if (!hideToast)\n setVisibleLoadPanel(false);\n\n setVisibleToast(true);\n setMessageToast('Archivos CFDi incorrectos');\n setTypeToast('error');\n return;\n }\n\n let myInit = {\n headers: {\n 'Content-Type': 'application/json',\n Authorization: `${(await Auth.currentSession()).getAccessToken().getJwtToken()}`\n },\n body: {\n ToAddresses: [salesOrderModPayload.header.cte_CorreoElectronico],\n // BccAddresses: [],\n // CcAddresses: [],\n Body: 'CFDi ' + MovimientoFactura.trim(),\n Subject: 'CFDi ' + MovimientoFactura.trim(),\n Source: 'admin@supercolchones.com',\n Attachments: [{\n filename: MovimientoFactura.trim() + '.xml',\n content: xmlFileContents,\n encoding: 'base64'\n },\n {\n filename: MovimientoFactura.trim() + '.pdf',\n content: pdfFileContents,\n encoding: 'base64'\n }\n ],\n username: JSON.parse(JSON.stringify(await Auth.currentAuthenticatedUser())).username\n }\n }\n\n var sendCFDiPost = await API.post(apiName, path, myInit);\n\n if (sendCFDiPost.message.indexOf('Error') >= 0) {\n if (!hideToast)\n setVisibleLoadPanel(false);\n\n setVisibleToast(true);\n setMessageToast(sendCFDiPost.message);\n setTypeToast('error');\n }\n else {\n if (hideToast === false) {\n setVisibleLoadPanel(false);\n\n setVisibleToast(true);\n setMessageToast(sendCFDiPost.message);\n setTypeToast('success');\n }\n }\n\n return sendCFDiPost;\n }\n catch (e) {\n setVisibleToast(true);\n setMessageToast(e.message);\n setTypeToast('error');\n }\n }\n\n async function editButton(ID) {\n try {\n if (!window.event.metaKey && !window.event.ctrlKey) {\n\n setVisibleLoadPanel(true);\n\n setIsDetail(true);\n setId(ID);\n\n var payload = await getSalesOrderModPayload(ID);\n\n if (payload.header.Estatus === 'Sin Afectar' && payload.header.CancelacionTotal === false) {\n // Obtenemos los Uso de CFDI Válido para el régimen fiscal\n await getUsoCFDIValido(payload.customerData.FiscalRegimen);\n }\n\n if (payload.header.Pedido) {\n setActivateCustomSalesOrderField(false);\n }\n else {\n setActivateCustomSalesOrderField(true);\n }\n\n if (permissionLevel === 'Editar') {\n if (payload.header.Estatus === 'Sin Afectar') {\n if (payload.header.CancelacionTotal === true) {\n setActivateUpdateForm(false);\n setAcceptCustomValue(true);\n setActivateSaveButton(false);\n setActivateDeleteButton(false);\n setActivateConfirmButton(true);\n setActivateApproveButton(false);\n setActivatePDFButton(true);\n setActivateCancelButton(true);\n setActivateAttachments(true);\n setActivateModifyData(false);\n setActivateModifyItems(true);\n setActivateGetSalesOrderData(false);\n setActivateUpdateGrid(false);\n setActivateMoneyReturn(false);\n }\n else {\n setActivateUpdateForm(true);\n setAcceptCustomValue(false);\n setActivateSaveButton(true);\n setActivateDeleteButton(false);\n setActivateConfirmButton(true);\n setActivateApproveButton(false);\n setActivatePDFButton(true);\n setActivateCancelButton(true);\n setActivateAttachments(true);\n setActivateMoneyReturn(false);\n setActivateModifyData(payload.header.ModificarDatos);\n setActivateModifyItems(payload.header.ModificarMercancia);\n setActivateGetSalesOrderData(true);\n setActivateUpdateGrid(payload.header.ModificarMercancia);\n }\n }\n else if (payload.header.Estatus === 'Pendiente') {\n setActivateUpdateForm(false);\n setAcceptCustomValue(true);\n setActivateSaveButton(false);\n setActivateDeleteButton(false);\n\n if (payload.header.Autorizado === false && approveSalesOrderMod)\n setActivateApproveButton(true);\n else\n setActivateApproveButton(false);\n\n if (payload.header.Autorizado === true)\n setActivateConfirmButton(true);\n else\n setActivateConfirmButton(false);\n\n setActivatePDFButton(true);\n setActivateCancelButton(true);\n setActivateAttachments(false);\n\n\n setActivateModifyData(payload.header.ModificarDatos);\n setActivateModifyItems(payload.header.ModificarMercancia);\n setActivateGetSalesOrderData(false);\n setActivateUpdateGrid(false);\n setActivateMoneyReturn(false);\n }\n else if (payload.header.Estatus === 'Cancelado') {\n setActivateUpdateForm(false);\n setAcceptCustomValue(true);\n setActivateSaveButton(false);\n setActivateDeleteButton(false);\n setActivateConfirmButton(false);\n setActivateApproveButton(false);\n setActivatePDFButton(true);\n setActivateCancelButton(false);\n setActivateAttachments(false);\n setActivateModifyData(payload.header.ModificarDatos);\n setActivateModifyItems((payload.header.ModificarMercancia || payload.header.CancelacionTotal));\n setActivateGetSalesOrderData(false);\n setActivateUpdateGrid(false);\n setActivateMoneyReturn(false);\n }\n else if (payload.header.Estatus === 'Concluido') {\n setActivateUpdateForm(false);\n setAcceptCustomValue(true);\n setActivateSaveButton(false);\n setActivateDeleteButton(false);\n setActivateConfirmButton(false);\n setActivateApproveButton(false);\n setActivatePDFButton(true);\n setActivateCancelButton(true);\n setActivateAttachments(false);\n setActivateModifyData(payload.header.ModificarDatos);\n setActivateModifyItems((payload.header.ModificarMercancia || payload.header.CancelacionTotal));\n setActivateGetSalesOrderData(false);\n setActivateUpdateGrid(false);\n setActivateMoneyReturn(false);\n }\n else if (payload.header.Estatus === 'Autorizado') {\n setActivateUpdateForm(false);\n setAcceptCustomValue(true);\n setActivateSaveButton(false);\n setActivateDeleteButton(false);\n setActivateConfirmButton(false);\n setActivateApproveButton(false);\n setActivatePDFButton(true);\n setActivateCancelButton(true);\n setActivateAttachments(false);\n setActivateModifyData(payload.header.ModificarDatos);\n setActivateModifyItems((payload.header.ModificarMercancia || payload.header.CancelacionTotal));\n setActivateGetSalesOrderData(false);\n setActivateUpdateGrid(false);\n setActivateMoneyReturn(true);\n }\n }\n else if (permissionLevel === 'Ver') {\n setActivateUpdateForm(false);\n setAcceptCustomValue(true);\n setActivateSaveButton(false);\n setActivateDeleteButton(false);\n setActivateConfirmButton(false);\n setActivateApproveButton(false);\n setActivatePDFButton(true);\n setActivateCancelButton(false);\n setActivateAttachments(false);\n setActivateModifyData(payload.header.ModificarDatos);\n setActivateModifyItems((payload.header.ModificarMercancia || payload.header.CancelacionTotal));\n setActivateGetSalesOrderData(false);\n setActivateUpdateGrid(false);\n setActivateMoneyReturn(false);\n }\n\n setVisibleLoadPanel(false);\n }\n }\n catch (e) {\n setVisibleLoadPanel(false);\n\n if (!ID || ID === 'undefined') {\n newButton();\n }\n }\n };\n\n async function saveButton() {\n try {\n if (salesOrderModPayload.header.Estatus === 'Sin Afectar') {\n if (!salesOrderModPayload.header.Pedido || salesOrderModPayload.header.Pedido === '') {\n setVisibleToast(true);\n setMessageToast('Falta especificar el Pedido')\n setTypeToast('error');\n return;\n }\n if (!salesOrderModPayload.header.Motivo || salesOrderModPayload.header.Motivo === '') {\n setVisibleToast(true);\n setMessageToast('Falta especificar el Motivo')\n setTypeToast('error');\n return;\n }\n }\n\n setVisibleLoadPanel(true);\n\n var ID = salesOrderModPayload.header.ID;\n\n //Despues enviamos todo al backend\n let apiName = 'AdminSC';\n let path = '/procesamodpedido';\n\n let myInit = {\n headers: {\n 'Content-Type': 'application/json',\n Authorization: `${(await Auth.currentSession()).getAccessToken().getJwtToken()}`\n },\n body: {\n ID: ID,\n payload: salesOrderModPayload,\n action: 'saveChanges',\n username: JSON.parse(JSON.stringify(await Auth.currentAuthenticatedUser())).username,\n usuario: props.usuario,\n sucursal: props.sucursal,\n s3Bucket: Storage._config.AWSS3.bucket\n }\n }\n\n var payloadPost = await API.post(apiName, path, myInit);\n\n if (payloadPost.ok === 'true') {\n if (!ID) {\n setVisibleToast(true);\n setMessageToast('Se creó la Solicitud de Modificación con éxito');\n setTypeToast('success')\n\n ID = payloadPost.newID;\n\n editButton(ID);\n\n history.push('/SalesOrderMod/' + ID.toString());\n }\n else {\n setVisibleToast(true);\n setMessageToast('Se actualizó la Solicitud de Modificación con éxito');\n setTypeToast('success')\n }\n }\n else if (payloadPost.ok === 'false') {\n setVisibleToast(true);\n setMessageToast(payloadPost.message);\n setTypeToast('error')\n }\n\n editButton(ID);\n\n setVisibleLoadPanel(false);\n }\n catch (e) {\n setVisibleLoadPanel(false);\n\n if (e === 'No current user') {\n history.push('/');\n\n window.location.reload();\n }\n }\n };\n\n async function approveButton() {\n try {\n setVisibleLoadPanel(true);\n\n var ID = salesOrderModPayload.header.ID;\n\n //Despues enviamos todo al backend\n let apiName = 'AdminSC';\n let path = '/procesamodpedido';\n\n let myInit = {\n headers: {\n 'Content-Type': 'application/json',\n Authorization: `${(await Auth.currentSession()).getAccessToken().getJwtToken()}`\n },\n body: {\n ID: ID,\n payload: salesOrderModPayload,\n action: 'approve',\n username: JSON.parse(JSON.stringify(await Auth.currentAuthenticatedUser())).username,\n usuario: props.usuario,\n sucursal: props.sucursal\n }\n }\n\n var payloadPost = await API.post(apiName, path, myInit);\n\n if (payloadPost.ok === 'true') {\n setVisibleToast(true);\n setMessageToast('Solicitud de Modificación Autorizada');\n setTypeToast('success')\n }\n else if (payloadPost.ok === 'false') {\n setVisibleToast(true);\n setMessageToast(payloadPost.message);\n setTypeToast('error')\n }\n\n editButton(ID);\n\n setVisibleLoadPanel(false);\n }\n catch (e) {\n setVisibleLoadPanel(false);\n\n if (e === 'No current user') {\n history.push('/');\n\n window.location.reload();\n }\n }\n };\n\n async function confirmButton() {\n try {\n if (salesOrderModPayload.header.Estatus === 'Sin Afectar') {\n if (!salesOrderModPayload.header.Pedido || salesOrderModPayload.header.Pedido === '') {\n setVisibleToast(true);\n setMessageToast('Falta especificar el Pedido')\n setTypeToast('error');\n return;\n }\n if (!salesOrderModPayload.header.Motivo || salesOrderModPayload.header.Motivo === '') {\n setVisibleToast(true);\n setMessageToast('Falta especificar el Motivo')\n setTypeToast('error');\n return;\n }\n }\n\n setVisibleLoadPanel(true);\n\n var ID = salesOrderModPayload.header.ID;\n\n var lambdaFunction;\n\n if (window.location.href.indexOf('sandbox.') >= 0 || window.location.href.indexOf('localhost') >= 0)\n lambdaFunction = 'procesaModPedido-dev';\n else if (window.location.href.indexOf('sandboxtampico.') >= 0)\n lambdaFunction = 'procesaModPedido-devleona';\n else if (window.location.href.indexOf('tampico.') >= 0)\n lambdaFunction = 'procesaModPedido-prodleona';\n else\n lambdaFunction = 'procesaModPedido-prod';\n\n Auth.currentCredentials()\n .then(credentials => {\n const lambda = new Lambda({\n credentials: Auth.essentialCredentials(credentials),\n region: 'us-east-1'\n });\n\n var params = {\n FunctionName: lambdaFunction,\n Payload: JSON.stringify({\n ID: ID,\n payload: salesOrderModPayload,\n action: 'apply',\n username: props.username,\n usuario: props.usuario,\n sucursal: props.sucursal\n })\n };\n\n lambda.invoke(params, function (err, data) {\n if (err) {\n setVisibleLoadPanel(false);\n\n setVisibleToast(true);\n setMessageToast(err.message);\n setTypeToast('error');\n }\n else {\n var payloadPost = JSON.parse(JSON.parse(data.Payload).body);\n\n if (payloadPost.ok === 'true') {\n async function checkCFDiStatus() {\n //Primero obtenemos el payload actualizado\n var payload = await getSalesOrderModPayload(id);\n\n if (payload.header.IDFactura) {\n // Primero obtenemos el payload de la factura\n var payloadFactura = await getInvoicePayload(payload.header.IDFactura);\n\n // Después generamos el PDF\n var pdfPost = await generateInvoiceCFDiPDF(payload, payloadFactura);\n\n // Finalmente enviamos el correo electrónico\n var sendCFDiPost = await sendInvoiceCFDiFiles(true, payload.header.MovimientoFactura, payload.header.IDFactura);\n }\n\n setVisibleToast(true);\n setMessageToast('Sol. Modificación aplicada correctamente');\n setTypeToast('success');\n\n editButton(ID);\n\n setVisibleLoadPanel(false);\n };\n\n checkCFDiStatus();\n }\n else if (payloadPost.ok === 'false') {\n\n setVisibleToast(true);\n\n if (!payloadPost.message || payloadPost.message === '' || payloadPost.message === 'Error SQL')\n setMessageToast('No se pudo aplicar la Sol. Modificación');\n else\n setMessageToast(payloadPost.message);\n\n setTypeToast('error')\n\n editButton(ID);\n\n setVisibleLoadPanel(false);\n }\n }\n });\n })\n\n /*\n //Despues enviamos todo al backend\n let apiName = 'AdminSC';\n let path = '/procesamodpedido';\n\n let myInit = { \n headers: {\n 'Content-Type' : 'application/json',\n Authorization: `${(await Auth.currentSession()).getAccessToken().getJwtToken()}`\n },\n body: {\n ID: ID,\n payload: salesOrderModPayload,\n action: 'apply',\n username: props.username,\n usuario: props.usuario,\n sucursal: props.sucursal\n }\n }\n\n var payloadPost = await API.post(apiName, path, myInit); \n\n if(payloadPost.ok === 'true'){\n setVisibleToast(true);\n setMessageToast('Se afectó la Solicitud de Modificación con éxito');\n setTypeToast('success')\n }\n else if(payloadPost.ok === 'false'){\n setVisibleToast(true);\n setMessageToast(payloadPost.message);\n setTypeToast('error')\n }\n\n editButton(ID);\n\n setVisibleLoadPanel(false);\n */\n }\n catch (e) {\n setVisibleLoadPanel(false);\n\n if (e === 'No current user') {\n history.push('/');\n\n window.location.reload();\n }\n }\n };\n\n async function cancelSalesOrder() {\n try {\n if (salesOrderModPayload.header.Estatus === 'Sin Afectar') {\n if (!salesOrderModPayload.header.Pedido || salesOrderModPayload.header.Pedido === '') {\n setVisibleToast(true);\n setMessageToast('Falta especificar el Pedido')\n setTypeToast('error');\n return;\n }\n if (!salesOrderModPayload.header.Motivo || salesOrderModPayload.header.Motivo === '') {\n setVisibleToast(true);\n setMessageToast('Falta especificar el Motivo')\n setTypeToast('error');\n return;\n }\n }\n\n if (!window.confirm('¿Desea cancelar totalmente el Pedido?'))\n return;\n\n setVisibleLoadPanel(true);\n\n var ID = salesOrderModPayload.header.ID;\n\n //Despues enviamos todo al backend\n let apiName = 'AdminSC';\n let path = '/procesamodpedido';\n\n let myInit = {\n headers: {\n 'Content-Type': 'application/json',\n Authorization: `${(await Auth.currentSession()).getAccessToken().getJwtToken()}`\n },\n body: {\n ID: ID,\n payload: salesOrderModPayload,\n action: 'cancelSalesOrder',\n username: JSON.parse(JSON.stringify(await Auth.currentAuthenticatedUser())).username,\n usuario: props.usuario,\n sucursal: props.sucursal\n }\n }\n\n var payloadPost = await API.post(apiName, path, myInit);\n\n if (payloadPost.ok === 'true') {\n setVisibleToast(true);\n setMessageToast('Información actualizada con éxito');\n setTypeToast('success')\n }\n else if (payloadPost.ok === 'false') {\n setVisibleToast(true);\n setMessageToast(payloadPost.message);\n setTypeToast('error')\n }\n\n editButton(ID);\n\n setVisibleLoadPanel(false);\n }\n catch (e) {\n setVisibleLoadPanel(false);\n\n if (e === 'No current user') {\n history.push('/');\n\n window.location.reload();\n }\n }\n };\n\n async function updateSalesOrderInfo() {\n try {\n if (salesOrderModPayload.header.Estatus === 'Sin Afectar') {\n if (!salesOrderModPayload.header.Pedido || salesOrderModPayload.header.Pedido === '') {\n setVisibleToast(true);\n setMessageToast('Falta especificar el Pedido')\n setTypeToast('error');\n return;\n }\n if (!salesOrderModPayload.header.Motivo || salesOrderModPayload.header.Motivo === '') {\n setVisibleToast(true);\n setMessageToast('Falta especificar el Motivo')\n setTypeToast('error');\n return;\n }\n }\n\n setVisibleLoadPanel(true);\n\n var ID = salesOrderModPayload.header.ID;\n\n //Despues enviamos todo al backend\n let apiName = 'AdminSC';\n let path = '/procesamodpedido';\n\n let myInit = {\n headers: {\n 'Content-Type': 'application/json',\n Authorization: `${(await Auth.currentSession()).getAccessToken().getJwtToken()}`\n },\n body: {\n ID: ID,\n payload: salesOrderModPayload,\n action: 'updateSalesOrderInfo',\n username: JSON.parse(JSON.stringify(await Auth.currentAuthenticatedUser())).username,\n usuario: props.usuario,\n sucursal: props.sucursal\n }\n }\n\n var payloadPost = await API.post(apiName, path, myInit);\n\n if (payloadPost.ok === 'true') {\n setVisibleToast(true);\n setMessageToast('Información actualizada con éxito');\n setTypeToast('success')\n }\n else if (payloadPost.ok === 'false') {\n setVisibleToast(true);\n setMessageToast(payloadPost.message);\n setTypeToast('error')\n }\n\n editButton(ID);\n\n setVisibleLoadPanel(false);\n }\n catch (e) {\n setVisibleLoadPanel(false);\n\n if (e === 'No current user') {\n history.push('/');\n\n window.location.reload();\n }\n }\n }\n\n async function cancelEditButton() {\n setIsDetail(false);\n };\n\n async function voidButton() {\n try {\n if (salesOrderModPayload.header.Estatus === 'Sin Afectar') {\n if (!salesOrderModPayload.header.Pedido || salesOrderModPayload.header.Pedido === '') {\n setVisibleToast(true);\n setMessageToast('Falta especificar el Pedido')\n setTypeToast('error');\n return;\n }\n if (!salesOrderModPayload.header.Motivo || salesOrderModPayload.header.Motivo === '') {\n setVisibleToast(true);\n setMessageToast('Falta especificar el Motivo')\n setTypeToast('error');\n return;\n }\n }\n\n if (!window.confirm('¿Desea cancelar la Solicitud de Modificación?'))\n return;\n\n setVisibleLoadPanel(true);\n\n var ID = salesOrderModPayload.header.ID;\n\n //Despues enviamos todo al backend\n let apiName = 'AdminSC';\n let path = '/procesamodpedido';\n\n let myInit = {\n headers: {\n 'Content-Type': 'application/json',\n Authorization: `${(await Auth.currentSession()).getAccessToken().getJwtToken()}`\n },\n body: {\n ID: ID,\n payload: salesOrderModPayload,\n action: 'void',\n username: JSON.parse(JSON.stringify(await Auth.currentAuthenticatedUser())).username,\n usuario: props.usuario,\n sucursal: props.sucursal\n }\n }\n\n var payloadPost = await API.post(apiName, path, myInit);\n\n if (payloadPost.ok === 'true') {\n setVisibleToast(true);\n setMessageToast('Solicitud de Modificación cancelada con éxito');\n setTypeToast('success')\n }\n else if (payloadPost.ok === 'false') {\n setVisibleToast(true);\n setMessageToast(payloadPost.message);\n setTypeToast('error')\n }\n\n editButton(ID);\n\n setVisibleLoadPanel(false);\n }\n catch (e) {\n setVisibleLoadPanel(false);\n\n if (e === 'No current user') {\n history.push('/');\n\n window.location.reload();\n }\n }\n };\n\n function refreshButton() {\n if (gridTableroRef.current) {\n var gridTablero = gridTableroRef.current.instance();\n\n gridTablero.refresh();\n }\n }\n\n async function newButton(salesorder) {\n try {\n let apiName = 'AdminSC';\n let path = '/procesamodpedido';\n\n let myInit = {\n headers: {\n 'Content-Type': 'application/json',\n Authorization: `${(await Auth.currentSession()).getAccessToken().getJwtToken()}`\n },\n queryStringParameters: {\n action: 'new',\n salesorder: salesorder,\n username: JSON.parse(JSON.stringify(await Auth.currentAuthenticatedUser())).username,\n usuario: props.usuario,\n sucursal: props.sucursal\n }\n };\n\n var payloadNew = await API.get(apiName, path, myInit);\n\n setSalesOrderModPayload(payloadNew);\n\n setAttachments([]);\n\n setIsDetail(true);\n setId(undefined);\n\n setActivateUpdateForm(true);\n setActivateCustomSalesOrderField(true);\n setAcceptCustomValue(false);\n setActivateSaveButton(true);\n setActivateDeleteButton(false);\n setActivateCancelButton(false);\n setActivateConfirmButton(false);\n setActivateApproveButton(false);\n setActivatePDFButton(false);\n setActivateAttachments(false);\n setActivateModifyData(false);\n setActivateModifyItems(false);\n setActivateGetSalesOrderData(false);\n setActivateUpdateGrid(false);\n setActivateMoneyReturn(false);\n\n setVisibleLoadPanel(false);\n }\n catch (e) {\n if (e === 'No current user') {\n history.push('/');\n\n window.location.reload();\n }\n }\n };\n\n async function deleteButton() {\n }\n\n async function deleteItemButton(Renglon) {\n try {\n if (salesOrderModPayload.header.Estatus === 'Sin Afectar') {\n if (!salesOrderModPayload.header.Pedido || salesOrderModPayload.header.Pedido === '') {\n setVisibleToast(true);\n setMessageToast('Falta especificar el Pedido')\n setTypeToast('error');\n return;\n }\n if (!salesOrderModPayload.header.Motivo || salesOrderModPayload.header.Motivo === '') {\n setVisibleToast(true);\n setMessageToast('Falta especificar el Motivo')\n setTypeToast('error');\n return;\n }\n }\n\n setVisibleLoadPanel(true);\n\n var ID = salesOrderModPayload.header.ID;\n\n //Despues enviamos todo al backend\n let apiName = 'AdminSC';\n let path = '/procesamodpedido';\n\n let myInit = {\n headers: {\n 'Content-Type': 'application/json',\n Authorization: `${(await Auth.currentSession()).getAccessToken().getJwtToken()}`\n },\n body: {\n ID: ID,\n payload: salesOrderModPayload,\n action: 'deleteItem',\n username: JSON.parse(JSON.stringify(await Auth.currentAuthenticatedUser())).username,\n usuario: props.usuario,\n sucursal: props.sucursal,\n renglon: Renglon\n }\n }\n\n var payloadPost = await API.post(apiName, path, myInit);\n\n if (payloadPost.ok === 'true') {\n setVisibleToast(true);\n setMessageToast('Se eliminó el artículo con éxito');\n setTypeToast('success')\n }\n else if (payloadPost.ok === 'false') {\n setVisibleToast(true);\n setMessageToast(payloadPost.message);\n setTypeToast('error')\n }\n\n editButton(ID);\n\n setVisibleLoadPanel(false);\n }\n catch (e) {\n setVisibleLoadPanel(false);\n\n if (e === 'No current user') {\n history.push('/');\n\n window.location.reload();\n }\n }\n }\n\n async function updateItemButton(Renglon, Articulo, Cantidad, Precio, RenglonID, SCSerieLote) {\n setAddItemPayload({\n Action: 'updateItem',\n Renglon: Renglon,\n RenglonID: RenglonID,\n SCSerieLote: SCSerieLote,\n Articulo: Articulo.trim(),\n Cantidad: Cantidad,\n Precio: Precio\n });\n\n setPopupTitle('Modificar Artículo');\n setPopupVisible(true);\n };\n\n function printButton() {\n var baseUrl = window.location.href.split('/')[0];\n\n window.open(baseUrl + \"/#/PdfRender?type=salesordermod&id=\" + id, \"_blank\");\n };\n\n async function addItemButton() {\n setAddItemPayload({\n Action: 'addItem',\n Renglon: undefined,\n RenglonID: undefined,\n SCSerieLote: undefined,\n Articulo: undefined,\n Cantidad: undefined,\n Precio: undefined\n });\n\n setPopupTitle('Agregar Artículo');\n setPopupVisible(true);\n };\n\n async function confirmAddButton() {\n try {\n var Articulo = addItemPayload.Articulo;\n var Precio = addItemPayload.Precio;\n var Cantidad = addItemPayload.Cantidad;\n var Action = addItemPayload.Action;\n var Renglon = addItemPayload.Renglon;\n var RenglonID = addItemPayload.RenglonID;\n var SCSerieLote = addItemPayload.SCSerieLote;\n\n if (salesOrderModPayload.header.Estatus === 'Sin Afectar') {\n if (!salesOrderModPayload.header.Pedido || salesOrderModPayload.header.Pedido === '') {\n setVisibleToast(true);\n setMessageToast('Falta especificar el Pedido')\n setTypeToast('error');\n return;\n }\n if (!salesOrderModPayload.header.Motivo || salesOrderModPayload.header.Motivo === '') {\n setVisibleToast(true);\n setMessageToast('Falta especificar el Motivo')\n setTypeToast('error');\n return;\n }\n if (!Articulo) {\n setVisibleToast(true);\n setMessageToast('Falta especificar el Artículo')\n setTypeToast('error');\n return;\n }\n if (!Precio && Precio !== 0) {\n setVisibleToast(true);\n setMessageToast('Falta especificar el Precio')\n setTypeToast('error');\n return;\n }\n if (!Cantidad) {\n setVisibleToast(true);\n setMessageToast('Falta especificar la Cantidad')\n setTypeToast('error');\n return;\n }\n if (Action === 'updateItem' && (!Renglon || !RenglonID || !SCSerieLote)) {\n setVisibleToast(true);\n setMessageToast('Datos Incorrectos')\n setTypeToast('error');\n return;\n }\n }\n\n setVisibleLoadPanel(true);\n\n var ID = salesOrderModPayload.header.ID;\n\n //Despues enviamos todo al backend\n let apiName = 'AdminSC';\n let path = '/procesamodpedido';\n\n let myInit = {\n headers: {\n 'Content-Type': 'application/json',\n Authorization: `${(await Auth.currentSession()).getAccessToken().getJwtToken()}`\n },\n body: {\n ID: ID,\n payload: salesOrderModPayload,\n action: Action,\n username: JSON.parse(JSON.stringify(await Auth.currentAuthenticatedUser())).username,\n usuario: props.usuario,\n sucursal: props.sucursal,\n articulo: Articulo,\n precio: Precio,\n cantidad: Cantidad,\n renglon: Renglon,\n renglonid: RenglonID,\n scserielote: SCSerieLote\n }\n }\n\n var payloadPost = await API.post(apiName, path, myInit);\n\n if (payloadPost.ok === 'true') {\n setVisibleToast(true);\n\n if (Action === 'addItem')\n setMessageToast('Se agregó el artículo con éxito');\n else if (Action === 'updateItem')\n setMessageToast('Se actualizó el artículo con éxito');\n setTypeToast('success')\n }\n else if (payloadPost.ok === 'false') {\n setVisibleToast(true);\n setMessageToast(payloadPost.message);\n setTypeToast('error')\n }\n\n setPopupVisible(false);\n\n editButton(ID);\n\n setVisibleLoadPanel(false);\n }\n catch (e) {\n setVisibleLoadPanel(false);\n\n if (e === 'No current user') {\n history.push('/');\n\n window.location.reload();\n }\n }\n };\n\n async function confirmCheckButton() {\n try {\n var SituacionGastosAdmin = createCheckPayload.SituacionGastosAdmin;\n var PorcentajeGA = createCheckPayload.PorcentajeGA;\n\n if (SituacionGastosAdmin === 'NO')\n PorcentajeGA = 0;\n else if (SituacionGastosAdmin === 'SI') {\n if (PorcentajeGA > 1.0 || PorcentajeGA === 0 || PorcentajeGA < 0) {\n setVisibleToast(true);\n setMessageToast('Porcentaje incorrecto')\n setTypeToast('error');\n return;\n }\n }\n\n setVisibleLoadPanel(true);\n\n var ID = salesOrderModPayload.header.ID;\n\n //Despues enviamos todo al backend\n let apiName = 'AdminSC';\n let path = '/procesamodpedido';\n\n let myInit = {\n headers: {\n 'Content-Type': 'application/json',\n Authorization: `${(await Auth.currentSession()).getAccessToken().getJwtToken()}`\n },\n body: {\n ID: ID,\n payload: salesOrderModPayload,\n action: 'createCheck',\n username: JSON.parse(JSON.stringify(await Auth.currentAuthenticatedUser())).username,\n usuario: props.usuario,\n sucursal: props.sucursal,\n situaciongastosadmin: SituacionGastosAdmin,\n porcentajega: PorcentajeGA\n }\n }\n\n var payloadPost = await API.post(apiName, path, myInit);\n\n if (payloadPost.ok === 'true') {\n setVisibleToast(true);\n setMessageToast('Se generó el cheque con éxito');\n setTypeToast('success')\n }\n else if (payloadPost.ok === 'false') {\n setVisibleToast(true);\n setMessageToast(payloadPost.message);\n setTypeToast('error')\n }\n\n setPopupVisible(false);\n\n editButton(ID);\n\n setVisibleLoadPanel(false);\n }\n catch (e) {\n setVisibleLoadPanel(false);\n\n if (e === 'No current user') {\n history.push('/');\n\n window.location.reload();\n }\n }\n };\n\n async function getUsuario() {\n let apiName = 'AdminSC';\n let path = '/getcatalogo';\n\n let myInit = {\n headers: {\n 'Content-Type': 'application/json',\n Authorization: `${(await Auth.currentSession()).getAccessToken().getJwtToken()}`\n },\n queryStringParameters: {\n type: 'Usuario',\n username: JSON.parse(JSON.stringify(await Auth.currentAuthenticatedUser())).username\n }\n }\n\n var usuariosGet = await API.get(apiName, path, myInit);\n\n setUsuarios(usuariosGet);\n };\n\n async function getArticulo(sqlFilter) {\n let apiName = 'AdminSC';\n let path = '/getcatalogo';\n\n let myInit = {\n headers: {\n 'Content-Type': 'application/json',\n Authorization: `${(await Auth.currentSession()).getAccessToken().getJwtToken()}`\n },\n queryStringParameters: {\n type: 'Articulo',\n username: JSON.parse(JSON.stringify(await Auth.currentAuthenticatedUser())).username,\n sqlFilter: sqlFilter\n }\n }\n\n var articulosGet = await API.get(apiName, path, myInit);\n\n return articulosGet;\n };\n\n async function getPedidos(sqlFilter) {\n let apiName = 'AdminSC';\n let path = '/getcatalogo';\n\n let myInit = {\n headers: {\n 'Content-Type': 'application/json',\n Authorization: `${(await Auth.currentSession()).getAccessToken().getJwtToken()}`\n },\n queryStringParameters: {\n type: 'PedidoSolModificacion',\n username: JSON.parse(JSON.stringify(await Auth.currentAuthenticatedUser())).username,\n sqlFilter: sqlFilter\n }\n }\n\n var pedidosGet = await API.get(apiName, path, myInit);\n var tmpPedidos = [];\n\n for (var pedidosGetIndex in pedidosGet) {\n\n tmpPedidos.push({\n name: pedidosGet[pedidosGetIndex].SCRama,\n value: pedidosGet[pedidosGetIndex].SCRama\n })\n }\n\n return tmpPedidos;\n };\n\n async function getPrice(ID, Articulo) {\n let apiName = 'AdminSC';\n let path = '/getcatalogo';\n\n let myInit = {\n headers: {\n 'Content-Type': 'application/json',\n Authorization: `${(await Auth.currentSession()).getAccessToken().getJwtToken()}`\n },\n queryStringParameters: {\n type: 'ObtenerPrecioArticuloMod',\n ID: ID,\n Articulo: Articulo,\n username: JSON.parse(JSON.stringify(await Auth.currentAuthenticatedUser())).username\n }\n }\n\n var priceGet = await API.get(apiName, path, myInit);\n\n return priceGet;\n };\n\n async function getFiscalRegimen(sqlFilter) {\n let apiName = 'AdminSC';\n let path = '/getcatalogo';\n\n let myInit = {\n headers: {\n 'Content-Type': 'application/json',\n Authorization: `${(await Auth.currentSession()).getAccessToken().getJwtToken()}`\n },\n queryStringParameters: {\n type: 'FiscalRegimen',\n username: JSON.parse(JSON.stringify(await Auth.currentAuthenticatedUser())).username,\n sqlFilter: sqlFilter\n }\n }\n\n var fiscalRegimenGet = await API.get(apiName, path, myInit);\n\n setFiscalRegimen(fiscalRegimenGet);\n };\n\n async function getUsoCFDIValido(FiscalRegimen) {\n setVisibleLoadPanel(true);\n\n var tmpUsoCFDI = [];\n let apiName = 'AdminSC';\n let path = '/getcatalogo';\n\n let myInit = {\n headers: {\n 'Content-Type': 'application/json',\n Authorization: `${(await Auth.currentSession()).getAccessToken().getJwtToken()}`\n },\n queryStringParameters: {\n type: 'UsoCFDI',\n username: JSON.parse(JSON.stringify(await Auth.currentAuthenticatedUser())).username\n }\n }\n\n var usoCFDIGet = await API.get(apiName, path, myInit);\n\n for (var usoCFDIIndex in usoCFDIGet) {\n var singleUsoCFDI = usoCFDIGet[usoCFDIIndex];\n\n if (singleUsoCFDI.FiscalRegimen === FiscalRegimen) {\n tmpUsoCFDI.push({\n name: singleUsoCFDI.ClaveUsoCFDI + ' - ' + singleUsoCFDI.Descripcion,\n value: singleUsoCFDI.ClaveUsoCFDI\n })\n }\n }\n\n setFiltroUsoCFDI(tmpUsoCFDI);\n\n setVisibleLoadPanel(false);\n };\n\n async function createCoupon() {\n try {\n if (salesOrderModPayload.header.Estatus === 'Sin Afectar') {\n if (!salesOrderModPayload.header.Pedido || salesOrderModPayload.header.Pedido === '') {\n setVisibleToast(true);\n setMessageToast('Falta especificar el Pedido')\n setTypeToast('error');\n return;\n }\n if (!salesOrderModPayload.header.Motivo || salesOrderModPayload.header.Motivo === '') {\n setVisibleToast(true);\n setMessageToast('Falta especificar el Motivo')\n setTypeToast('error');\n return;\n }\n }\n\n setVisibleLoadPanel(true);\n\n var ID = salesOrderModPayload.header.ID;\n\n //Despues enviamos todo al backend\n let apiName = 'AdminSC';\n let path = '/procesamodpedido';\n\n let myInit = {\n headers: {\n 'Content-Type': 'application/json',\n Authorization: `${(await Auth.currentSession()).getAccessToken().getJwtToken()}`\n },\n body: {\n ID: ID,\n payload: salesOrderModPayload,\n action: 'createCoupon',\n username: JSON.parse(JSON.stringify(await Auth.currentAuthenticatedUser())).username,\n usuario: props.usuario,\n sucursal: props.sucursal\n }\n }\n\n var payloadPost = await API.post(apiName, path, myInit);\n\n if (payloadPost.ok === 'true') {\n setVisibleToast(true);\n setMessageToast('Se creó el Vale con éxito');\n setTypeToast('success')\n }\n else if (payloadPost.ok === 'false') {\n setVisibleToast(true);\n setMessageToast(payloadPost.message);\n setTypeToast('error')\n }\n\n editButton(ID);\n\n setVisibleLoadPanel(false);\n }\n catch (e) {\n setVisibleLoadPanel(false);\n\n if (e === 'No current user') {\n history.push('/');\n\n window.location.reload();\n }\n }\n };\n\n async function createCheck() {\n setCreateCheckPayload({\n Action: 'createCheck',\n SituacionGastosAdmin: 'NO',\n PorcentajeGA: 0\n });\n\n setPopupCheckVisible(true);\n };\n\n\n useEffect(() => {\n window.addEventListener('popstate', (e) => {\n var hash;\n\n try {\n hash = e.target.location.hash;\n }\n catch (e) {\n hash = '';\n }\n\n if (hash === '#/SalesOrderMod') {\n history.push('/SalesOrderMod');\n\n window.location.reload();\n }\n });\n\n async function initialize() {\n setVisibleLoadPanel(true);\n\n await getFiscalRegimen();\n\n await getUsuario();\n\n setVisibleLoadPanel(false);\n }\n\n initialize();\n\n //En caso de solicitar un ID especifico, redireccionamos a ese ID\n if (!props.match.isExact) {\n var urlID = props.location.pathname.replace('/SalesOrderMod/', '');\n\n var search = props.location.search;\n var salesorder;\n\n if (search)\n salesorder = search.replace('?salesorder=', '');\n\n if (urlID === 'undefined')\n urlID = undefined;\n\n if (urlID)\n editButton(urlID);\n else\n newButton(salesorder);\n }\n\n // eslint-disable-next-line\n }, []);\n\n function overrideOnValueChanged(e) {\n //Hacemos la data persistente en cuanto el usuario escriba en el campo\n // if (e.parentType === \"dataRow\") {\n // e.editorOptions.valueChangeEvent = \"input\";\n // }\n }\n\n function onHidingToast() {\n setVisibleToast(false);\n };\n\n function onFieldDatosModificacionChanged(e) {\n var dataField = e.dataField;\n var value = e.value;\n\n\n if (formDatosGeneralesRef.current) {\n var formDatosGenerales = formDatosGeneralesRef.current.instance();\n\n if (e.dataField === 'header.Pedido') {\n if (e.value) {\n async function getSalesOrderInfo() {\n try {\n setVisibleLoadPanel(true);\n\n let apiName = 'AdminSC';\n let path = '/procesamodpedido';\n\n let myInit = {\n headers: {\n 'Content-Type': 'application/json',\n Authorization: `${(await Auth.currentSession()).getAccessToken().getJwtToken()}`\n },\n queryStringParameters: {\n action: 'getSalesOrderInfo',\n salesOrder: value,\n username: JSON.parse(JSON.stringify(await Auth.currentAuthenticatedUser())).username\n }\n };\n\n var payloadNew = await API.get(apiName, path, myInit);\n\n formDatosGenerales.updateData('header.Cliente', payloadNew.header.Cliente);\n\n setVisibleLoadPanel(false);\n }\n catch (e) {\n if (e === 'No current user') {\n history.push('/');\n\n window.location.reload();\n }\n }\n }\n\n getSalesOrderInfo();\n }\n else {\n formDatosGenerales.updateData('header.Cliente', undefined);\n }\n }\n else if (e.dataField === 'customerData.FiscalRegimen') {\n formDatosGenerales.updateData('customerData.SATCatUsoCFDI', undefined);\n\n async function getUsoCFDI(FiscalRegimen) {\n await getUsoCFDIValido(FiscalRegimen);\n }\n\n if (e.value) {\n getUsoCFDI(e.value);\n }\n }\n }\n };\n\n function onFieldAddItemChanged(e) {\n var dataField = e.dataField;\n var value = e.value;\n\n\n if (formAddItemRef.current) {\n var formAddItem = formAddItemRef.current.instance();\n\n if (e.dataField === 'Articulo') {\n if (e.value) {\n async function getItemPrice() {\n try {\n setVisibleLoadPanel(true);\n\n let apiName = 'AdminSC';\n let path = '/getcatalogo';\n\n let myInit = {\n headers: {\n 'Content-Type': 'application/json',\n Authorization: `${(await Auth.currentSession()).getAccessToken().getJwtToken()}`\n },\n queryStringParameters: {\n type: 'ObtenerPrecioArticuloMod',\n ID: id,\n Articulo: e.value,\n username: JSON.parse(JSON.stringify(await Auth.currentAuthenticatedUser())).username\n }\n };\n\n var price = await API.get(apiName, path, myInit);\n\n formAddItem.updateData('Precio', price[0].Price);\n\n setVisibleLoadPanel(false);\n }\n catch (e) {\n if (e === 'No current user') {\n history.push('/');\n\n window.location.reload();\n }\n }\n }\n\n getItemPrice();\n }\n else {\n formAddItem.updateData('Precio', undefined);\n\n setVisibleLoadPanel(false);\n }\n }\n }\n }\n\n function deleteItem(data) {\n if (permissionLevel === 'Editar' && data.data.VentaDRenglon && salesOrderModPayload.header.Estatus === 'Sin Afectar') {\n return (\n <button class=\"bg-red-500 hover:bg-red-700 text-white py-1 px-3 rounded\" onClick={() => deleteItemButton(data.data.Renglon)}><FontAwesomeIcon icon={faTrash} /></button>\n );\n }\n };\n\n function updateItem(data) {\n if (permissionLevel === 'Editar' && data.data.VentaDRenglon && salesOrderModPayload.header.Estatus === 'Sin Afectar')\n return (\n <button class=\"bg-blue-500 hover:bg-blue-700 text-white py-1 px-3 rounded\" onClick={() => updateItemButton(data.data.Renglon, data.data.Articulo, data.data.Cantidad, data.data.Precio, data.data.RenglonID, data.data.SCSerieLote)}><FontAwesomeIcon icon={faPenFancy} /></button>\n )\n };\n\n function hidePopupInfo() {\n setPopupVisible(false);\n };\n\n function hidePopupCheckInfo() {\n setPopupCheckVisible(false);\n };\n\n function onExporting(e) {\n const workbook = new Workbook();\n const worksheet = workbook.addWorksheet('Datos');\n\n exportDataGrid({\n component: e.component,\n worksheet,\n autoFilterEnabled: true,\n }).then(() => {\n workbook.xlsx.writeBuffer().then((buffer) => {\n saveAs(new Blob([buffer], { type: 'application/octet-stream' }), 'Datos.xlsx');\n });\n });\n e.cancel = true;\n };\n\n return (\n <div>\n {isDetail === false ? (\n <div class=\"bg-gray-200 m-2\">\n <h1 class=\"font-sans inline-block text-xl font-bold text-gray-700 leading-8 align-top mb-1\"><FontAwesomeIcon icon={faList} size=\"lg\" /> Solicitudes de Modificación</h1>\n </div>\n ) :\n (\n <div class=\"bg-gray-200 m-2\">\n <h1 class=\"font-sans inline-block text-xl font-bold text-gray-700 leading-8 align-top mb-1\"><FontAwesomeIcon icon={faPenNib} size=\"xl\" /> {(salesOrderModPayload.header ? salesOrderModPayload.header.Movimiento : 'Sol Modificación')}</h1>\n <TransactionStatus {...props} Estatus={salesOrderModPayload.header.Estatus} />\n </div>\n )}\n\n <LoadPanel\n shadingColor=\"rgba(0,0,0,0.4)\"\n visible={visibleLoadPanel}\n showIndicator={true}\n message=\"Por favor espere...\"\n shading={true}\n showPane={true}\n hideOnOutsideClick={false}\n />\n\n <Toast\n visible={visibleToast}\n message={messageToast}\n type={typeToast}\n onHiding={onHidingToast}\n displayTime={5000}\n width={'auto'}\n position={{\n my: 'top center',\n at: 'top center',\n of: window,\n offset: '0 130'\n }}\n />\n\n <div class=\"bg-gray-200 m-2\">\n {isDetail === false ? (\n <div class=\"bg-white p-3 shadow-xl\">\n\n {permissionLevel === 'Editar' ?\n (\n <div>\n <Link to=\"/SalesOrderMod/undefined\">\n <button class=\"mb-2 bg-green-500 hover:bg-green-700 text-white font-bold py-2 px-4 rounded\" onClick={() => newButton()}><FontAwesomeIcon icon={faFileAlt} /> Nueva Sol. Modificación</button>\n </Link>\n\n <button onClick={refreshButton} type=\"submit\" class=\"ml-4 mb-4 bg-blue-500 hover:bg-blue-700 text-white font-bold py-2 px-4 rounded\">\n <FontAwesomeIcon icon={faArrowsRotate} /> Actualizar\n </button>\n </div>\n ) :\n (\n <div>\n <button onClick={refreshButton} type=\"submit\" class=\"mb-4 bg-blue-500 hover:bg-blue-700 text-white font-bold py-2 px-4 rounded\">\n <FontAwesomeIcon icon={faArrowsRotate} /> Actualizar\n </button>\n </div>\n )}\n\n <div className=\"options mb-2\">\n <div className=\"option\">\n <CheckBox text=\"Expandir todos los grupos\"\n value={autoExpandAll}\n onValueChanged={onAutoExpandAllChanged}></CheckBox>\n </div>\n </div>\n <DataGrid\n height={800}\n id=\"gridContainer\"\n columnsAutoWidth={true}\n filterBuilder={filterBuilder}\n dataSource={store}\n defaultFilterValue={filterValue}\n allowColumnReordering={true}\n allowColumnResizing={true}\n columnResizingMode={\"widget\"}\n showBorders={true}\n rowAlternationEnabled={true}\n showRowLines={true}\n showColumnLines={true}\n remoteOperations={{ filtering: true }}\n ref={gridTableroRef}\n onExporting={onExporting}\n >\n <Scrolling rowRenderingMode='virtual'></Scrolling>\n <Paging defaultPageSize={10} />\n <Pager\n visible={true}\n allowedPageSizes={allowedPageSizes}\n displayMode='compact'\n showPageSizeSelector={true}\n showInfo={true}\n showNavigationButtons={true}\n />\n <FilterRow visible={true} />\n <FilterPanel visible={true} />\n <FilterBuilderPopup position={filterBuilderPopupPosition} />\n\n <HeaderFilter visible={true} />\n\n <GroupPanel visible={true} />\n <SearchPanel visible={true} />\n <ColumnChooser\n enabled={true}\n mode='select'\n >\n <ColumnChooserSearch\n enabled={true}\n />\n\n <ColumnChooserSelection\n allowSelectAll={true}\n selectByClick={true}\n recursive={true}\n />\n </ColumnChooser>\n <Grouping autoExpandAll={autoExpandAll} />\n <StateStoring enabled={true} type=\"localStorage\" storageKey=\"gridContainerSalesOrderMod\" />\n <Export enabled={true} />\n\n <Column caption=\"\" alignment=\"center\" width={100} cellRender={editSalesOrderMod} />\n\n <Column dataField=\"MovID\" dataType=\"string\" width={110} caption=\"Folio\" />\n <Column dataField=\"FechaEmision\" caption=\"Fecha Emisión\" dataType=\"date\" width={130} />\n <Column dataField=\"Pedido\" dataType=\"string\" width={120} />\n <Column dataField=\"Estatus\" dataType=\"string\" width={120} />\n <Column dataField=\"Plaza\" caption=\"Plaza\" dataType=\"string\" width={150} visible={false} />\n\n <Column dataField=\"ID\" dataType=\"number\" width={150} visible={false} />\n <Column dataField=\"Mov\" dataType=\"string\" width={190} caption=\"Tipo Movimiento\" visible={false} />\n <Column dataField=\"Movimiento\" dataType=\"string\" width={190} visible={false} />\n\n <Column dataField=\"Sucursal\" dataType=\"number\" width={150} visible={false} />\n <Column dataField=\"NombreSucursal\" dataType=\"string\" width={190} visible={false} />\n <Column dataField=\"Usuario\" dataType=\"string\" width={190} visible={false} />\n <Column dataField=\"NombreUsuario\" dataType=\"string\" width={190} visible={false} />\n\n <Column dataField=\"ModificarDatos\" dataType=\"boolean\" width={190} visible={false} />\n <Column dataField=\"ModificarMercancia\" dataType=\"boolean\" width={190} visible={false} />\n <Column dataField=\"CancelacionTotal\" dataType=\"boolean\" width={190} visible={false} />\n <Column dataField=\"SituacionSaldo\" dataType=\"string\" width={190} visible={false} />\n <Column dataField=\"SituacionGastosAdmin\" dataType=\"string\" width={190} visible={false} />\n <Column dataField=\"Vale\" dataType=\"string\" width={190} visible={false} />\n <Column dataField=\"Cheque\" dataType=\"string\" width={190} visible={false} />\n </DataGrid>\n </div>\n ) : (<div />)}\n <Route exact path=\"/SalesOrderMod/:ID\" render={({ match }) => {\n return (\n <div class=\"bg-gray-200\">\n {isDetail.toString() === 'true' ?\n (\n <div>\n <Link to=\"/SalesOrderMod\">\n <button onClick={cancelEditButton} type=\"submit\" class=\"mb-4 bg-red-500 hover:bg-red-700 text-white font-bold py-2 px-4 rounded\">\n <FontAwesomeIcon icon={faArrowRotateLeft} /> Regresar\n </button>\n </Link>\n\n {activateSaveButton.toString() === 'true' ?\n (\n <button onClick={saveButton} type=\"submit\" class=\"ml-4 mb-4 bg-blue-500 hover:bg-blue-700 text-white font-bold py-2 px-4 rounded\">\n <FontAwesomeIcon icon={faSave} /> Guardar Cambios\n </button>\n ) : (\n <div class=\"inline-block\"></div>\n )}\n\n {activateConfirmButton.toString() === 'true' && id ?\n (\n <button onClick={confirmButton} type=\"submit\" class=\"ml-4 mb-4 bg-green-500 hover:bg-green-700 text-white font-bold py-2 px-4 rounded\">\n <FontAwesomeIcon icon={faPlay} /> Afectar\n </button>\n ) : (\n <div class=\"inline-block\"></div>\n )}\n\n {activateApproveButton.toString() === 'true' && id ?\n (\n <button onClick={approveButton} type=\"submit\" class=\"ml-4 mb-4 bg-green-500 hover:bg-green-700 text-white font-bold py-2 px-4 rounded\">\n <FontAwesomeIcon icon={faThumbsUp} /> Autorizar\n </button>\n ) : (\n <div class=\"inline-block\"></div>\n )}\n\n {activateGetSalesOrderData.toString() === 'true' && id ?\n (\n <button onClick={updateSalesOrderInfo} type=\"submit\" class=\"ml-4 mb-4 bg-yellow-500 hover:bg-yellow-700 text-white font-bold py-2 px-4 rounded\">\n <FontAwesomeIcon icon={faLightbulb} /> Obtener Información\n </button>\n ) :\n (\n <div class=\"inline-block\"></div>\n )}\n\n {activateGetSalesOrderData.toString() === 'true' && id ?\n (\n <button onClick={cancelSalesOrder} type=\"submit\" class=\"ml-4 mb-4 bg-blue-500 hover:bg-blue-700 text-white font-bold py-2 px-4 rounded\">\n <FontAwesomeIcon icon={faThumbsDown} /> Cancelación Total\n </button>\n ) :\n (\n <div class=\"inline-block\"></div>\n )}\n\n {activateGetSalesOrderData.toString() === 'true' && id ?\n (\n <button onClick={addItemButton} type=\"submit\" class=\"ml-4 mb-4 bg-blue-500 hover:bg-blue-700 text-white font-bold py-2 px-4 rounded\">\n <FontAwesomeIcon icon={faCartPlus} /> Agregar Artículo\n </button>\n ) :\n (\n <div class=\"inline-block\"></div>\n )}\n\n {activateMoneyReturn.toString() === 'true' && id ?\n (\n <button onClick={createCoupon} type=\"submit\" class=\"ml-4 mb-4 bg-blue-500 hover:bg-blue-700 text-white font-bold py-2 px-4 rounded\">\n <FontAwesomeIcon icon={faBadgeDollar} /> Crear Vale\n </button>\n ) :\n (\n <div class=\"inline-block\"></div>\n )}\n\n {activateMoneyReturn.toString() === 'true' && id ?\n (\n <button onClick={createCheck} type=\"submit\" class=\"ml-4 mb-4 bg-blue-500 hover:bg-blue-700 text-white font-bold py-2 px-4 rounded\">\n <FontAwesomeIcon icon={faMoneyCheckDollar} /> Crear Cheque\n </button>\n ) :\n (\n <div class=\"inline-block\"></div>\n )}\n\n\n {activateDeleteButton.toString() === 'true' && id ?\n (\n <button onClick={deleteButton} type=\"submit\" class=\"ml-4 mb-4 bg-red-500 hover:bg-red-700 text-white font-bold py-2 px-4 rounded\">\n <FontAwesomeIcon icon={faTrash} /> Eliminar\n </button>\n ) :\n (\n <div class=\"inline-block\"></div>\n )}\n\n {activateCancelButton.toString() === 'true' && id ?\n (\n <button onClick={voidButton} type=\"submit\" class=\"ml-4 mb-4 bg-red-500 hover:bg-red-700 text-white font-bold py-2 px-4 rounded\">\n <FontAwesomeIcon icon={faWindowClose} /> Cancelar\n </button>\n ) :\n (\n <div class=\"inline-block\"></div>\n )}\n\n {activatePDFButton.toString() === 'true' && id ?\n (\n <button onClick={printButton} type=\"submit\" class=\"ml-4 mb-4 bg-gray-500 hover:bg-gray-700 text-white font-bold py-2 px-4 rounded\">\n <FontAwesomeIcon icon={faFilePdf} /> PDF\n </button>\n ) :\n (\n <div class=\"inline-block\"></div>\n )}\n\n <div class=\"bg-white p-4 shadow-xl\">\n <Popup\n visible={popupVisible}\n onHiding={hidePopupInfo}\n dragEnabled={true}\n hideOnOutsideClick={false}\n showCloseButton={true}\n showTitle={true}\n title={popupTitle}\n width={600}\n height={400}\n resizeEnabled={true}\n >\n <button onClick={confirmAddButton} type=\"submit\" class=\"mb-4 bg-blue-500 hover:bg-blue-700 text-white font-bold py-2 px-4 rounded\">\n <FontAwesomeIcon icon={faSave} /> Guardar Cambios\n </button>\n\n <Form\n id=\"formAddItem\"\n labelMode={'outside'}\n formData={addItemPayload}\n readOnly={!activateUpdateForm}\n showColonAfterLabel={false}\n labelLocation={'top'}\n onFieldDataChanged={onFieldAddItemChanged}\n ref={formAddItemRef}\n >\n <Item dataField=\"Articulo\" editorType=\"dxLookup\" editorOptions={articuloEditorOptions}>\n <Label text=\"Artículo\" />\n </Item>\n <Item dataField=\"Cantidad\" editorType=\"dxNumberBox\" >\n <Label text=\"Cantidad\" />\n </Item>\n <Item dataField=\"Precio\" editorType=\"dxNumberBox\" editorOptions={precioEditorOptions} >\n <Label text=\"Precio\" />\n </Item>\n </Form>\n </Popup>\n\n <Popup\n visible={popupCheckVisible}\n onHiding={hidePopupCheckInfo}\n dragEnabled={true}\n hideOnOutsideClick={false}\n showCloseButton={true}\n showTitle={true}\n title=\"Crear Cheque\"\n width={600}\n height={280}\n resizeEnabled={true}\n >\n <button onClick={confirmCheckButton} type=\"submit\" class=\"mb-4 bg-blue-500 hover:bg-blue-700 text-white font-bold py-2 px-4 rounded\">\n <FontAwesomeIcon icon={faSave} /> Guardar Cambios\n </button>\n\n <Form\n id=\"formCreateCheck\"\n labelMode={'outside'}\n formData={createCheckPayload}\n readOnly={!activateMoneyReturn}\n showColonAfterLabel={false}\n labelLocation={'top'}\n ref={formCreateCheckRef}\n >\n <Item dataField=\"SituacionGastosAdmin\" editorType=\"dxSelectBox\" editorOptions={situacionGastosAdminEditorOptions}>\n <Label text=\"Gastos Administrativos\" />\n </Item>\n <Item dataField=\"PorcentajeGA\" editorType=\"dxNumberBox\" editorOptions={porcentajeGAEditorOptions}>\n <Label text=\"Porcentaje\" />\n </Item>\n </Form>\n </Popup>\n\n <Form\n id=\"formTransaccion\"\n labelMode={'outside'}\n formData={salesOrderModPayload}\n readOnly={!activateUpdateForm}\n showColonAfterLabel={false}\n labelLocation={'top'}\n onFieldDataChanged={onFieldDatosModificacionChanged}\n ref={formDatosGeneralesRef}\n >\n <TabbedItem>\n <TabPanelOptions deferRendering={false} showNavButtons={true} />\n <Tab title=\"Datos Generales\" colCount={3}>\n <GroupItem caption=\"General\">\n <Item cssClass=\"boldText\" dataField=\"header.Movimiento\" editorOptions={movimientoEditorOptions} >\n <Label text={\"Movimiento\"} />\n </Item>\n <Item dataField=\"header.FechaEmision\" editorType=\"dxDateBox\" editorOptions={fechaEmisionEditorOptions}>\n <Label text={\"Fecha Emisión\"} />\n </Item>\n <Item dataField=\"header.Pedido\" editorType=\"dxLookup\" editorOptions={pedidoEditorOptions}>\n <Label text=\"Pedido\" />\n </Item>\n <Item dataField=\"header.Cliente\" editorOptions={datosClienteEditorOptions} >\n <Label text=\"Cliente\" />\n </Item>\n <Item dataField=\"header.Motivo\" >\n <Label text=\"Motivo\" />\n </Item>\n <Item dataField=\"header.ModificarDatos\" editorType=\"dxCheckBox\">\n <Label text=\"Modificar Datos\" />\n </Item>\n <Item dataField=\"header.ModificarMercancia\" editorType=\"dxCheckBox\">\n <Label text=\"Modificar Mercancía\" />\n </Item>\n <Item dataField=\"header.CancelacionTotal\" editorType=\"dxCheckBox\" editorOptions={cancelacionTotalEditorOptions} >\n <Label text=\"Cancelación Total\" />\n </Item>\n </GroupItem>\n <GroupItem caption=\"Datos Modificación\" colSpan={2}>\n <TabbedItem>\n <Tab title=\"Datos Facturación\" visible={activateModifyData} >\n <Item dataField=\"customerData.RFC\" editorOptions={uppercaseEditorOptions}>\n <Label text=\"RFC\" />\n </Item>\n <Item dataField=\"customerData.RazonSocial\" editorOptions={uppercaseEditorOptions}>\n <Label text=\"Razón Social\" />\n </Item>\n <Item dataField=\"customerData.Direccion\" editorOptions={uppercaseEditorOptions}>\n <Label text=\"Dirección\" />\n </Item>\n <Item dataField=\"customerData.Colonia\" editorOptions={uppercaseEditorOptions}>\n <Label text=\"Colonia\" />\n </Item>\n <Item dataField=\"customerData.Pais\" editorOptions={uppercaseEditorOptions}>\n <Label text=\"País\" />\n </Item>\n <Item dataField=\"customerData.Estado\" editorOptions={uppercaseEditorOptions}>\n <Label text=\"Estado\" />\n </Item>\n <Item dataField=\"customerData.CodigoPostal\" editorOptions={uppercaseEditorOptions}>\n <Label text=\"Código Postal\" />\n </Item>\n <Item dataField=\"customerData.Delegacion\" editorOptions={uppercaseEditorOptions}>\n <Label text=\"Delegación\" />\n </Item>\n <Item dataField=\"customerData.FiscalRegimen\" editorType=\"dxSelectBox\" editorOptions={fiscalRegimenEditorOptions} >\n <Label text=\"Régimen Fiscal\" />\n </Item>\n <Item dataField=\"customerData.SATCatUsoCFDI\" editorType=\"dxSelectBox\" editorOptions={usoCFDIEditorOptions} >\n <Label text=\"Uso CFDI\" />\n </Item>\n </Tab>\n <Tab title=\"Mercancía Final\" visible={activateModifyItems}>\n <DataGrid\n id=\"gridArticulosFinales\"\n ref={gridArticulosFinalesRef}\n columnsAutoWidth={true}\n dataSource={salesOrderModPayload.items}\n showBorders={true}\n showColumnLines={true}\n showRowLines={true}\n rowAlternationEnabled={true}\n allowColumnResizing={true}\n columnResizingMode=\"widget\"\n allowColumnReordering={false}\n repaintChangesOnly={false}\n >\n <Editing\n mode=\"cell\"\n allowUpdating={false}\n allowAdding={false}\n allowDeleting={false}\n />\n <Sorting mode=\"none\" />\n\n <Column dataField=\"Renglon\" width={190} visible={false} allowEditing={false} />\n <Column dataField=\"Articulo\" caption=\"Artículo\" width={80} allowEditing={false} />\n <Column dataField=\"Descripcion\" caption=\"Descripción\" width={280} allowEditing={false} />\n <Column dataField=\"Cantidad\" width={80} allowEditing={false} dataType=\"number\" />\n <Column dataField=\"Precio\" width={110} allowEditing={false} dataType=\"number\">\n <Format\n type=\"currency\"\n precision={2}\n />\n </Column>\n <Column dataField=\"Importe\" width={110} allowEditing={false} dataType=\"number\">\n <Format\n type=\"currency\"\n precision={2}\n />\n </Column>\n <Column caption=\"\" alignment=\"center\" width={60} cellRender={deleteItem} />\n <Column caption=\"\" alignment=\"center\" width={60} cellRender={updateItem} />\n </DataGrid>\n </Tab>\n <Tab title=\"Mercancía Agregada\" visible={activateModifyItems}>\n <DataGrid\n id=\"gridArticulosAgregados\"\n ref={gridArticulosAgregadosRef}\n columnsAutoWidth={true}\n dataSource={salesOrderModPayload.addedItems}\n showBorders={true}\n showColumnLines={true}\n showRowLines={true}\n rowAlternationEnabled={true}\n allowColumnResizing={true}\n columnResizingMode=\"widget\"\n allowColumnReordering={false}\n repaintChangesOnly={false}\n >\n <Editing\n mode=\"cell\"\n allowUpdating={activateUpdateGrid}\n allowAdding={false}\n allowDeleting={false}\n />\n <Sorting mode=\"none\" />\n\n <Column dataField=\"Renglon\" width={190} visible={false} allowEditing={false} />\n <Column dataField=\"Articulo\" caption=\"Artículo\" width={80} allowEditing={false} />\n <Column dataField=\"Descripcion\" caption=\"Descripción\" width={280} allowEditing={false} />\n <Column dataField=\"Cantidad\" width={80} allowEditing={false} dataType=\"number\" />\n <Column dataField=\"Precio\" width={110} allowEditing={false} dataType=\"number\">\n <Format\n type=\"currency\"\n precision={2}\n />\n </Column>\n <Column dataField=\"Importe\" width={110} allowEditing={false} dataType=\"number\">\n <Format\n type=\"currency\"\n precision={2}\n />\n </Column>\n </DataGrid>\n </Tab>\n <Tab title=\"Mercancía Eliminada\" visible={activateModifyItems}>\n <DataGrid\n id=\"gridArticulosEliminados\"\n ref={gridArticulosEliminadosRef}\n columnsAutoWidth={true}\n dataSource={salesOrderModPayload.removedItems}\n showBorders={true}\n showColumnLines={true}\n showRowLines={true}\n rowAlternationEnabled={true}\n allowColumnResizing={true}\n columnResizingMode=\"widget\"\n allowColumnReordering={false}\n repaintChangesOnly={false}\n >\n <Editing\n mode=\"cell\"\n allowUpdating={activateUpdateGrid}\n allowAdding={false}\n allowDeleting={false}\n />\n <Sorting mode=\"none\" />\n\n <Column dataField=\"Renglon\" width={190} visible={false} allowEditing={false} />\n <Column dataField=\"Articulo\" caption=\"Artículo\" width={80} allowEditing={false} />\n <Column dataField=\"Descripcion\" caption=\"Descripción\" width={280} allowEditing={false} />\n <Column dataField=\"Cantidad\" width={80} allowEditing={false} dataType=\"number\" />\n <Column dataField=\"Precio\" width={110} allowEditing={false} dataType=\"number\">\n <Format\n type=\"currency\"\n precision={2}\n />\n </Column>\n <Column dataField=\"Importe\" width={110} allowEditing={false} dataType=\"number\">\n <Format\n type=\"currency\"\n precision={2}\n />\n </Column>\n </DataGrid>\n </Tab>\n </TabbedItem>\n </GroupItem>\n </Tab>\n <Tab title=\"Autorización de Precios\" colCount={2} visible={salesOrderModUpdatePrices}>\n <Item dataField=\"header.SCUsuarioAutorizaPrecios\" editorType=\"dxSelectBox\" editorOptions={usuarioAutorizaEditorOptions}>\n <Label text=\"Usuario Autoriza\" />\n </Item>\n <Item dataField=\"header.SCCodigoAutorizaPrecios\" >\n <Label text=\"Código\" />\n </Item>\n <Item dataField=\"header.SCFechaAutorizaPrecios\" editorType=\"dxDateBox\">\n <Label text=\"Fecha Autorización\" />\n </Item>\n <Item dataField=\"header.SCMotivoAutorizaPrecios\" >\n <Label text=\"Motivo\" />\n </Item>\n <Item dataField=\"header.SCComentariosAutorizaPrecios\" editorType=\"dxTextArea\">\n <Label text=\"Comentarios\" />\n </Item>\n </Tab>\n <Tab title=\"Autorización\" colCount={2}>\n <Item dataField=\"header.Autorizado\" editorType=\"dxCheckBox\" editorOptions={autorizacionEditorOptions} >\n <Label text=\"Autorizado\" />\n </Item>\n <Item dataField=\"header.Autoriza\" editorOptions={autorizacionEditorOptions} >\n <Label text=\"Autorizado por\" />\n </Item>\n <Item dataField=\"header.FechaAutorizacion\" editorOptions={autorizacionEditorOptions} >\n <Label text=\"Fecha Autorización\" />\n </Item>\n </Tab>\n <Tab title=\"Observaciones\" >\n <Item dataField=\"header.Observaciones\" editorType=\"dxTextArea\" >\n <Label text=\"Observaciones\" visible={false} />\n </Item>\n </Tab>\n <Tab title=\"Saldo a Favor Cliente\" colCount={2}>\n <Item dataField=\"header.SituacionSaldo\" editorOptions={saldoEditorOptions}>\n <Label text=\"Situación Saldo\" />\n </Item>\n <Item dataField=\"header.Vale\" editorOptions={saldoEditorOptions}>\n <Label text=\"Vale\" />\n </Item>\n <Item dataField=\"header.MovIDChequeVale\" editorOptions={saldoEditorOptions}>\n <Label text=\"Cheque\" />\n </Item>\n <Item dataField=\"header.SituacionGastosAdmin\" editorOptions={saldoEditorOptions}>\n <Label text=\"Genera Gastos Administrativos\" />\n </Item>\n <Item dataField=\"header.PorcentajeGA\" editorType=\"dxNumberBox\" editorOptions={saldoEditorOptions}>\n <Label text=\"Porcentaje Gastos Administrativos\" />\n </Item>\n </Tab>\n <Tab title=\"Log Estatus\">\n <DataGrid\n id=\"gridLogEstatus\"\n columnsAutoWidth={true}\n dataSource={salesOrderModPayload.movEstatusLog}\n allowColumnReordering={true}\n allowColumnResizing={true}\n columnResizingMode={\"widget\"}\n showBorders={true}\n rowAlternationEnabled={true}\n showRowLines={true}\n showColumnLines={true}\n >\n <HeaderFilter visible={false} />\n <Column dataField=\"Usuario\" dataType=\"string\" width={350} caption=\"Usuario\" />\n <Column caption=\"Estatus\" alignment=\"center\" width={150} cellRender={estatusRelatedRecords} />\n <Column dataField=\"Fecha\" dataType=\"datetime\" width={300} caption=\"Fecha\" />\n </DataGrid>\n </Tab>\n <Tab title=\"Registros Relacionados\">\n <DataGrid\n id=\"gridRelatedRecords\"\n columnsAutoWidth={true}\n dataSource={salesOrderModPayload.relatedRecords}\n allowColumnReordering={true}\n allowColumnResizing={true}\n columnResizingMode={\"widget\"}\n showBorders={true}\n rowAlternationEnabled={true}\n showRowLines={true}\n showColumnLines={true}\n >\n <HeaderFilter visible={false} />\n\n <Column dataField=\"name\" dataType=\"string\" width={300} caption=\"Transacción\" />\n <Column caption=\"Estatus\" alignment=\"center\" width={150} cellRender={estatusRelatedRecords} />\n <Column caption=\"\" alignment=\"center\" width={50} cellRender={openRelatedRecordButton} />\n <Column dataField=\"FechaEmision\" dataType=\"date\" width={150} caption=\"Fecha Emisión\" />\n <Column dataField=\"ImporteTotal\" caption=\"Importe Total\" dataType=\"number\" width={180} >\n <Format\n type=\"currency\"\n precision={2}\n />\n </Column>\n </DataGrid>\n </Tab>\n <Tab title=\"Archivos Anexos\" >\n <div className=\"widget-container\">\n <FileUploader\n multiple={true}\n accept=\"*\"\n uploadMode=\"useButtons\"\n chunkSize={20000000}\n maxFileSize={20000000}\n uploadChunk={uploadChunk}\n disabled={!activateAttachments}\n />\n </div>\n <div id=\"wrapper\" className=\"show-widget\" >\n <div id=\"widget-area\">\n <FileManager id=\"attachmentManager\" fileSystemProvider={attachments} onItemDeleting={onAttachmentDeleting} onItemDownloading={onItemDownloading} onSelectedFileOpened={onAttachmentOpen}>\n <Permissions\n create={false}\n copy={false}\n move={false}\n delete={activateAttachments}\n rename={false}\n upload={false}\n download={true}\n >\n </Permissions>\n </FileManager>\n </div>\n </div>\n </Tab>\n </TabbedItem>\n </Form>\n </div>\n </div>\n ) :\n (\n <div></div>\n )\n }\n </div>\n )\n }}\n />\n </div>\n </div>\n );\n}\n","import React, { useState, useEffect, useRef, useMemo } from 'react';\n\n// LoadPanel\nimport { LoadPanel } from 'devextreme-react/load-panel';\n\n// Toast\nimport { Toast } from 'devextreme-react/toast';\n\n//Form\nimport Form, { GroupItem, Label, TabbedItem, TabPanelOptions, Tab } from 'devextreme-react/form';\n\nimport { Auth, API, Storage } from 'aws-amplify';\n\n// Ruteador\nimport { Route, Link, useHistory } from \"react-router-dom\";\n\n// Grid\nimport DataGrid, {\n Column, FilterRow, HeaderFilter, FilterPanel, FilterBuilderPopup,\n GroupPanel, Grouping, SearchPanel, Sorting, Editing, Lookup, Toolbar, Item, RequiredRule,\n Scrolling, Pager, Paging, Summary, TotalItem, StateStoring, ColumnChooser, Format, Selection,\n Export, ColumnChooserSearch, ColumnChooserSelection\n} from 'devextreme-react/data-grid';\n\nimport { GroupItem as GroupItemGrid } from 'devextreme-react/data-grid';\n\n//CheckBox\nimport CheckBox from 'devextreme-react/check-box';\n\n//ContextMenu\nimport ContextMenu from 'devextreme-react/context-menu';\n\n// Iconos\nimport { FontAwesomeIcon } from \"@fortawesome/react-fontawesome\";\nimport { faGlasses } from \"@fortawesome/pro-solid-svg-icons\";\nimport { faPencilAlt } from \"@fortawesome/pro-solid-svg-icons\";\nimport { faArrowRotateLeft } from \"@fortawesome/pro-solid-svg-icons\";\nimport { faSave } from \"@fortawesome/pro-solid-svg-icons\";\nimport { faList } from \"@fortawesome/pro-duotone-svg-icons\";\nimport { faFilePdf } from \"@fortawesome/pro-solid-svg-icons\";\nimport { faArrowsRotate } from \"@fortawesome/pro-solid-svg-icons\";\nimport { faFileAlt } from \"@fortawesome/pro-solid-svg-icons\";\nimport { faCashRegister } from \"@fortawesome/pro-duotone-svg-icons\";\nimport { faPlay } from \"@fortawesome/pro-solid-svg-icons\";\nimport { faLightbulb } from \"@fortawesome/pro-solid-svg-icons\";\nimport { faTrash } from \"@fortawesome/pro-solid-svg-icons\";\nimport { faWindowClose } from \"@fortawesome/pro-solid-svg-icons\";\nimport { faCalendarDays } from \"@fortawesome/pro-solid-svg-icons\";\nimport { faLinkSlash } from \"@fortawesome/pro-solid-svg-icons\";\n\nimport 'devextreme/data/odata/store';\nimport CustomStore from 'devextreme/data/custom_store';\n\nimport DataSource from 'devextreme/data/data_source';\n\nimport '../ListStyle.css';\n\n//FileUploader\nimport FileUploader from 'devextreme-react/file-uploader';\n\n//FileManager\nimport FileManager, { Permissions } from 'devextreme-react/file-manager';\n\nimport dxDateBox from \"devextreme/ui/date_box\";\n\nimport dxNumberBox from \"devextreme/ui/number_box\";\n\nimport TransactionStatus from \"../TransactionStatus/TransactionStatus.js\";\n\nimport { Workbook } from 'exceljs';\nimport { saveAs } from 'file-saver';\nimport { exportDataGrid } from 'devextreme/excel_exporter'\n\ndxDateBox.defaultOptions({\n options: {\n dateSerializationFormat: \"yyyy-MM-dd\"\n }\n});\n\ndxNumberBox.defaultOptions({\n options: {\n step: 0\n }\n});\n\nfunction isNotEmpty(value) {\n return value !== undefined && value !== null && value !== '';\n}\n\nexport default function CashRegister(props) {\n const history = useHistory();\n\n const [isDetail, setIsDetail] = useState(false);\n const [id, setId] = useState();\n const [permissionLevel, setPermissionLevel] = useState(props.nivel);\n const [cashRegisterPayload, setCashRegisterPayload] = useState({\n header: {},\n detail: [],\n movEstatusLog: []\n });\n\n const [contextMenuItems, setContextMenuItems] = useState([]);\n const [autoExpandAll, setAutoExpandAll] = useState(true);\n\n // setValue para el control tab\n const [value, setValue] = React.useState(0);\n\n const [visibleLoadPanel, setVisibleLoadPanel] = useState(false);\n\n const [visibleToast, setVisibleToast] = useState(false);\n const [messageToast, setMessageToast] = useState('');\n const [typeToast, setTypeToast] = useState('success');\n\n const [activateUpdateForm, setActivateUpdateForm] = useState(false);\n const [activateUpdateGrid, setActivateUpdateGrid] = useState(false);\n const [activateDeleteGrid, setActivateDeleteGrid] = useState(false);\n const [activateSaveButton, setActivateSaveButton] = useState(false);\n const [activateDeleteButton, setActivateDeleteButton] = useState(false);\n const [activateCancelButton, setActivateCancelButton] = useState(false);\n const [activateConfirmButton, setActivateConfirmButton] = useState(false);\n const [activateGetCustPaymentButton, setActivateGetCustPaymentButton] = useState(false);\n const [activatePDFButton, setActivatePDFButton] = useState(false);\n const [activateAttachments, setActivateAttachments] = useState(false);\n const [activateDates, setActivateDates] = useState(false);\n const [activateClearPayments, setActivateClearPayments] = useState(false);\n\n //Ref para el grid Articulos\n const [gridTransaccionesCashRegisterRef, setGridTransaccionesCashRegisterRef] = useState(React.createRef());\n\n //Ref para el form\n const [formDatosGeneralesRef, setFormDatosGeneralesRef] = useState(React.createRef());\n\n const [attachments, setAttachments] = useState([]);\n\n const handleChange = (event, newValue) => {\n setValue(newValue);\n };\n\n const filterBuilderPopupPosition = {\n of: window,\n at: 'top',\n my: 'top',\n offset: { y: 10 },\n };\n\n const allowedPageSizes = [5, 10, 15, 20, 'all'];\n\n const exportFormats = ['xlsx'];\n\n function getOrderDay(rowData) {\n return (new Date(rowData.OrderDate)).getDay();\n }\n\n const filterBuilder = {\n customOperations: [{\n name: 'weekends',\n caption: 'Weekends',\n dataTypes: ['date'],\n icon: 'check',\n hasValue: false,\n calculateFilterExpression: () => [[getOrderDay, '=', 0], 'or', [getOrderDay, '=', 6]],\n }],\n allowHierarchicalFields: true,\n };\n\n const filterValue = [['Estatus', '=', 'Sin Afectar']];\n\n //Ref para el grid Tablero de Control\n const [gridTableroRef, setGridTableroRef] = useState(React.createRef());\n\n function onAutoExpandAllChanged() {\n setAutoExpandAll(!autoExpandAll)\n };\n\n async function getCashRegisterRecords(sqlFilter) {\n try {\n let apiName = 'AdminSC';\n let path = '/procesacortecaja';\n\n let myInit = {\n headers: {\n 'Content-Type': 'application/json',\n Authorization: `${(await Auth.currentSession()).getAccessToken().getJwtToken()}`\n },\n queryStringParameters: {\n action: 'list',\n sqlFilter: sqlFilter,\n salesAccess: props.salesAccess,\n sucursal: props.sucursal,\n usuario: props.usuario,\n username: JSON.parse(JSON.stringify(await Auth.currentAuthenticatedUser())).username\n }\n }\n\n var cashRegisterGet = await API.get(apiName, path, myInit);\n }\n catch (e) {\n if (e === 'No current user') {\n history.push('/');\n\n window.location.reload();\n }\n }\n\n return cashRegisterGet;\n }\n\n const store = new CustomStore({\n key: 'ID',\n load(loadOptions) {\n let sqlFilter = '(';\n [\n 'filter'\n ].forEach((i) => {\n if (i in loadOptions && isNotEmpty(loadOptions[i])) {\n var filters = loadOptions[i];\n\n var filtersLength = filters.length;\n\n for (var i = 0; i <= filtersLength; i++) {\n var singleFilter = filters[i];\n var singleFilterType = typeof singleFilter;\n var singleFilterIsArray = Array.isArray(singleFilter);\n var singleFilterIsDate = singleFilter instanceof Date;\n\n if (singleFilter === 'NULL') {\n singleFilter = '0';\n }\n\n if (singleFilterType.toString() === 'object' && singleFilterIsArray) {\n sqlFilter += '(';\n\n var subFiltersLength = singleFilter.length;\n\n for (var i2 = 0; i2 <= subFiltersLength; i2++) {\n var singleSubFilter = singleFilter[i2];\n var singleSubFilterType = typeof singleSubFilter;\n var singleSubFilterIsArray = Array.isArray(singleSubFilter);\n var singleSubFilterIsDate = singleSubFilter instanceof Date\n\n if (singleSubFilter === 'NULL') {\n singleSubFilter = '0';\n }\n\n if (singleSubFilterType.toString() === 'object' && singleSubFilterIsArray) {\n sqlFilter += '(';\n\n var subSubFiltersLength = singleSubFilter.length;\n\n for (var i3 = 0; i3 <= subSubFiltersLength; i3++) {\n var singleSubSubFilter = singleSubFilter[i3];\n var singleSubSubFilterType = typeof singleSubSubFilter;\n var singleSubSubFilterIsArray = Array.isArray(singleSubSubFilter);\n var singleSubSubFilterIsDate = singleSubSubFilter instanceof Date\n\n if (singleSubSubFilter === 'NULL') {\n singleSubSubFilter = '0';\n }\n\n if (singleSubSubFilterType.toString() === 'object' && singleSubSubFilterIsArray) {\n sqlFilter += '(';\n\n var subSubSubFiltersLength = singleSubSubFilter.length;\n\n for (var i4 = 0; i4 <= subSubSubFiltersLength; i4++) {\n var singleSubSubSubFilter = singleSubSubFilter[i4];\n var singleSubSubSubFilterType = typeof singleSubSubSubFilter;\n var singleSubSubSubFilterIsArray = Array.isArray(singleSubSubSubFilter);\n var singleSubSubSubFilterIsDate = singleSubSubSubFilter instanceof Date\n\n if (singleSubSubSubFilter === 'NULL') {\n singleSubSubSubFilter = '0';\n }\n\n if (singleSubSubSubFilterType.toString() === 'object' && singleSubSubSubFilterIsArray) {\n sqlFilter += '(';\n\n var subSubSubSubFiltersLength = singleSubSubSubFilter.length;\n\n for (var i5 = 0; i5 <= subSubSubSubFiltersLength; i5++) {\n var singleSubSubSubSubFilter = singleSubSubSubFilter[i5];\n var singleSubSubSubSubFilterType = typeof singleSubSubSubSubFilter;\n var singleSubSubSubSubFilterIsArray = Array.isArray(singleSubSubSubSubFilter);\n var singleSubSubSubSubFilterIsDate = singleSubSubSubSubFilter instanceof Date\n\n if (singleSubSubSubSubFilter === 'NULL') {\n singleSubSubSubSubFilter = '0';\n }\n\n if (singleSubSubSubSubFilterType.toString() === 'string') {\n if (singleSubSubSubSubFilter === 'contains') {\n filters[i][i2][i3][i4][i5] = 'LIKE';\n singleSubSubSubSubFilter = 'LIKE';\n\n filters[i][i2][i3][i4][i5 + 1] = '\\'%' + filters[i][i2][i3][i4][i5 + 1] + '%\\'';\n }\n else if (singleSubSubSubSubFilter === 'notcontains') {\n filters[i][i2][i3][i4][i5] = 'NOT LIKE';\n singleSubSubSubSubFilter = 'NOT LIKE';\n\n filters[i][i2][i3][i4][i5 + 1] = '\\'%' + filters[i][i2][i3][i4][i5 + 1] + '%\\'';\n }\n else if (singleSubSubSubSubFilter === 'startswith') {\n filters[i][i2][i3][i4][i5] = 'LIKE';\n singleSubSubSubSubFilter = 'LIKE';\n\n filters[i][i2][i3][i4][i5 + 1] = '\\'' + filters[i][i2][i3][i4][i5 + 1] + '%\\'';\n }\n else if (singleSubSubSubSubFilter === 'endswith') {\n filters[i][i2][i3][i4][i5] = 'LIKE';\n singleSubSubSubSubFilter = 'LIKE';\n\n filters[i][i2][i3][i4][i5 + 1] = '\\'%' + filters[i][i2][i3][i4][i5 + 1] + '\\'';\n }\n else if (singleSubSubSubSubFilter === '=' || singleSubSubSubSubFilter === '<>' || singleSubSubSubSubFilter === '>' || singleSubSubSubSubFilter === '>=' || singleSubSubSubSubFilter === '<' || singleSubSubSubSubFilter === '<=') {\n if (!filters[i][i2][i3][i4][i5 + 1])\n filters[i][i2][i3][i4][i5 + 1] = 'NULL';\n else if (typeof filters[i][i2][i3][i4][i5 + 1] === 'string') {\n filters[i][i2][i3][i4][i5 + 1] = '\\'' + filters[i][i2][i3][i4][i5 + 1] + '\\'';\n }\n }\n else if (singleSubSubSubSubFilter === '!') {\n filters[i][i2][i3][i4][i5] = 'NOT';\n singleSubSubSubSubFilter = 'NOT';\n }\n\n sqlFilter += ' ' + singleSubSubSubSubFilter + ' ';\n }\n else if (singleSubSubSubSubFilterType.toString() === 'object' && singleSubSubSubSubFilterIsDate) {\n sqlFilter += ' \\'' + singleSubSubSubSubFilter.toISOString().split('T')[0] + '\\' ';\n }\n else if (singleSubSubSubSubFilterType.toString() === 'number') {\n sqlFilter += ' ' + singleSubSubSubSubFilter.toString() + ' ';\n }\n else if (singleSubSubSubSubFilterType.toString() === 'boolean') {\n if (singleSubSubSubSubFilter.toString() === 'true')\n sqlFilter += '1 ';\n else if (singleSubSubSubSubFilter.toString() === 'false' || singleSubSubSubSubFilter === null || singleSubSubSubSubFilter === undefined)\n sqlFilter += '0 ';\n }\n }\n }\n else if (singleSubSubSubFilterType.toString() === 'string') {\n if (singleSubSubSubFilter === 'contains') {\n filters[i][i2][i3][i4] = 'LIKE';\n singleSubSubSubFilter = 'LIKE';\n\n filters[i][i2][i3][i4 + 1] = '\\'%' + filters[i][i2][i3][i4 + 1] + '%\\'';\n }\n else if (singleSubSubSubFilter === 'notcontains') {\n filters[i][i2][i3][i4] = 'NOT LIKE';\n singleSubSubSubFilter = 'NOT LIKE';\n\n filters[i][i2][i3][i4 + 1] = '\\'%' + filters[i][i2][i3][i4 + 1] + '%\\'';\n }\n else if (singleSubSubSubFilter === 'startswith') {\n filters[i][i2][i3][i4] = 'LIKE';\n singleSubSubSubFilter = 'LIKE';\n\n filters[i][i2][i3][i4 + 1] = '\\'' + filters[i][i2][i3][i4 + 1] + '%\\'';\n }\n else if (singleSubSubSubFilter === 'endswith') {\n filters[i][i2][i3][i4] = 'LIKE';\n singleSubSubSubFilter = 'LIKE';\n\n filters[i][i2][i3][i4 + 1] = '\\'%' + filters[i][i2][i3][i4 + 1] + '\\'';\n }\n else if (singleSubSubSubFilter === '=' || singleSubSubSubFilter === '<>' || singleSubSubSubFilter === '>' || singleSubSubSubFilter === '>=' || singleSubSubSubFilter === '<' || singleSubSubSubFilter === '<=') {\n if (!filters[i][i2][i3][i4 + 1])\n filters[i][i2][i3][i4 + 1] = 'NULL';\n else if (typeof filters[i][i2][i3][i4 + 1] === 'string') {\n filters[i][i2][i3][i4 + 1] = '\\'' + filters[i][i2][i3][i4 + 1] + '\\'';\n }\n }\n else if (singleSubSubSubFilter === '!') {\n filters[i][i2][i3][i4] = 'NOT';\n singleSubSubSubFilter = 'NOT';\n }\n\n sqlFilter += ' ' + singleSubSubSubFilter + ' ';\n }\n else if (singleSubSubSubFilterType.toString() === 'object' && singleSubSubSubFilterIsDate) {\n sqlFilter += ' \\'' + singleSubSubSubFilter.toISOString().split('T')[0] + '\\' ';\n }\n else if (singleSubSubSubFilterType.toString() === 'number') {\n sqlFilter += ' ' + singleSubSubSubFilter.toString() + ' ';\n }\n else if (singleSubSubSubFilterType.toString() === 'boolean') {\n if (singleSubSubSubFilter.toString() === 'true')\n sqlFilter += '1 ';\n else if (singleSubSubSubFilter.toString() === 'false' || singleSubSubSubFilter === null || singleSubSubSubFilter === undefined)\n sqlFilter += '0 ';\n }\n }\n\n sqlFilter += ')';\n }\n else if (singleSubSubFilterType.toString() === 'string') {\n if (singleSubSubFilter === 'contains') {\n filters[i][i2][i3] = 'LIKE';\n singleSubSubFilter = 'LIKE';\n\n filters[i][i2][i3 + 1] = '\\'%' + filters[i][i2][i3 + 1] + '%\\'';\n }\n else if (singleSubSubFilter === 'notcontains') {\n filters[i][i2][i3] = 'NOT LIKE';\n singleSubSubFilter = 'NOT LIKE';\n\n filters[i][i2][i3 + 1] = '\\'%' + filters[i][i2][i3 + 1] + '%\\'';\n }\n else if (singleSubSubFilter === 'startswith') {\n filters[i][i2][i3] = 'LIKE';\n singleSubSubFilter = 'LIKE';\n\n filters[i][i2][i3 + 1] = '\\'' + filters[i][i2][i3 + 1] + '%\\'';\n }\n else if (singleSubSubFilter === 'endswith') {\n filters[i][i2][i3] = 'LIKE';\n singleSubSubFilter = 'LIKE';\n\n filters[i][i2][i3 + 1] = '\\'%' + filters[i][i2][i3 + 1] + '\\'';\n }\n else if (singleSubSubFilter === '=' || singleSubSubFilter === '<>' || singleSubSubFilter === '>' || singleSubSubFilter === '>=' || singleSubSubFilter === '<' || singleSubSubFilter === '<=') {\n if (!filters[i][i2][i3 + 1])\n filters[i][i2][i3 + 1] = 'NULL';\n else if (typeof filters[i][i2][i3 + 1] === 'string') {\n filters[i][i2][i3 + 1] = '\\'' + filters[i][i2][i3 + 1] + '\\'';\n }\n }\n else if (singleSubSubFilter === '!') {\n filters[i][i2][i3] = 'NOT';\n singleSubSubFilter = 'NOT';\n }\n sqlFilter += ' ' + singleSubSubFilter + ' ';\n }\n else if (singleSubSubFilterType.toString() === 'object' && singleSubSubFilterIsDate) {\n sqlFilter += ' \\'' + singleSubSubFilter.toISOString().split('T')[0] + '\\' ';\n }\n else if (singleSubSubFilterType.toString() === 'number') {\n sqlFilter += ' ' + singleSubSubFilter.toString() + ' ';\n }\n else if (singleSubSubFilterType.toString() === 'boolean') {\n if (singleSubSubFilter.toString() === 'true')\n sqlFilter += '1 ';\n else if (singleSubSubFilter.toString() === 'false' || singleSubSubFilter === null || singleSubSubFilter === undefined)\n sqlFilter += '0 ';\n }\n }\n\n sqlFilter += ')';\n }\n else if (singleSubFilterType.toString() === 'string') {\n if (singleSubFilter === 'contains') {\n filters[i][i2] = 'LIKE';\n singleSubFilter = 'LIKE';\n\n filters[i][i2 + 1] = '\\'%' + filters[i][i2 + 1] + '%\\'';\n }\n else if (singleSubFilter === 'notcontains') {\n filters[i][i2] = 'NOT LIKE';\n singleSubFilter = 'NOT LIKE';\n\n filters[i][i2 + 1] = '\\'%' + filters[i][i2 + 1] + '%\\'';\n }\n else if (singleSubFilter === 'startswith') {\n filters[i][i2] = 'LIKE';\n singleSubFilter = 'LIKE';\n\n filters[i][i2 + 1] = '\\'' + filters[i][i2 + 1] + '%\\'';\n }\n else if (singleSubFilter === 'endswith') {\n filters[i][i2] = 'LIKE';\n singleSubFilter = 'LIKE';\n\n filters[i][i2 + 1] = '\\'%' + filters[i][i2 + 1] + '\\'';\n }\n else if (singleSubFilter === '=' || singleSubFilter === '<>' || singleSubFilter === '>' || singleSubFilter === '>=' || singleSubFilter === '<' || singleSubFilter === '<=') {\n if (!filters[i][i2 + 1])\n filters[i][i2 + 1] = 'NULL';\n else if (typeof filters[i][i2 + 1] === 'string') {\n filters[i][i2 + 1] = '\\'' + filters[i][i2 + 1] + '\\'';\n }\n }\n else if (singleSubFilter === '!') {\n filters[i][i2] = 'NOT';\n singleSubFilter = 'NOT';\n }\n sqlFilter += ' ' + singleSubFilter + ' ';\n }\n else if (singleSubFilterType.toString() === 'object' && singleSubFilterIsDate) {\n sqlFilter += ' \\'' + singleSubFilter.toISOString().split('T')[0] + '\\' ';\n }\n else if (singleSubFilterType.toString() === 'number') {\n sqlFilter += ' ' + singleSubFilter.toString() + ' ';\n }\n else if (singleSubFilterType.toString() === 'boolean') {\n if (singleSubFilter.toString() === 'true')\n sqlFilter += '1 ';\n else if (singleSubFilter.toString() === 'false' || singleSubFilter === null || singleSubFilter === undefined)\n sqlFilter += '0 ';\n }\n }\n\n sqlFilter += ')';\n }\n else if (singleFilterType.toString() === 'string') {\n if (singleFilter === 'contains') {\n filters[i] = 'LIKE';\n singleFilter = 'LIKE';\n\n filters[i + 1] = '\\'%' + filters[i + 1] + '%\\'';\n }\n else if (singleFilter === 'notcontains') {\n filters[i] = 'NOT LIKE';\n singleFilter = 'NOT LIKE';\n\n filters[i + 1] = '\\'%' + filters[i + 1] + '%\\'';\n }\n else if (singleFilter === 'startswith') {\n filters[i] = 'LIKE';\n singleFilter = 'LIKE';\n\n filters[i + 1] = '\\'' + filters[i + 1] + '%\\'';\n }\n else if (singleFilter === 'endswith') {\n filters[i] = 'LIKE';\n singleFilter = 'LIKE';\n\n filters[i + 1] = '\\'%' + filters[i + 1] + '\\'';\n }\n else if (singleFilter === '=' || singleFilter === '<>' || singleFilter === '>' || singleFilter === '>=' || singleFilter === '<' || singleFilter === '<=') {\n if (!filters[i + 1])\n filters[i + 1] = 'NULL';\n else if (typeof filters[i + 1] === 'string') {\n filters[i + 1] = '\\'' + filters[i + 1] + '\\'';\n }\n }\n else if (singleFilter === '!') {\n filters[i] = 'NOT';\n singleFilter = 'NOT';\n }\n sqlFilter += ' ' + singleFilter + ' ';\n }\n else if (singleFilterType.toString() === 'object' && singleFilterIsDate) {\n sqlFilter += ' \\'' + singleFilter.toISOString().split('T')[0] + '\\' ';\n }\n else if (singleFilterType.toString() === 'number') {\n sqlFilter += ' ' + singleFilter.toString() + ' ';\n }\n else if (singleFilterType.toString() === 'boolean') {\n if (singleFilter.toString() === 'true')\n sqlFilter += '1 ';\n else if (singleFilter.toString() === 'false' || singleFilter === null || singleFilter === undefined)\n sqlFilter += '0 ';\n }\n }\n\n sqlFilter += ')';\n }\n });\n\n async function getRecords() {\n if (sqlFilter === '(')\n sqlFilter = '';\n\n var records = await getCashRegisterRecords(sqlFilter);\n return {\n data: records,\n totalCount: records.length\n };\n }\n\n return getRecords()\n .then(function (result) {\n return result;\n })\n .catch(() => { throw new Error('Data Loading Error'); });\n },\n });\n\n var fechaEmisionEditorOptions = useMemo(() => {\n return {\n width: '100%',\n readOnly: true\n };\n }, []);\n\n var fechaPostfechadoEditorOptions = useMemo(() => {\n return {\n width: '100%',\n readOnly: !activateDates\n };\n }, [activateDates]);\n\n var fechaRealDepositoEditorOptions = useMemo(() => {\n return {\n width: '100%',\n readOnly: !activateDates\n };\n }, [activateDates]);\n\n var movimientoEditorOptions = useMemo(() => {\n return {\n width: '100%',\n readOnly: true\n };\n }, []);\n\n var cajaEditorOptions = useMemo(() => {\n return {\n width: '100%',\n readOnly: true\n };\n }, []);\n\n async function uploadChunk(file, uploadInfo) {\n try {\n var responseS3 = await Storage.put(\"/sccc/\" + id + \"/\" + file.name, uploadInfo.chunkBlob, {\n contentType: file.type,\n ACL: 'public-read'\n });\n\n //Obtenemos el nombre del bucket\n let bucketName = Storage._config.AWSS3.bucket;\n\n\n let apiName = 'AdminSC';\n let path = '/uploadattachment';\n\n let myInit = {\n headers: {\n 'Content-Type': 'application/json',\n Authorization: `${(await Auth.currentSession()).getAccessToken().getJwtToken()}`\n },\n body: {\n action: 'register',\n bucketName: bucketName,\n type: 'sccc',\n id: id,\n Key: \"/sccc/\" + id + \"/\" + file.name,\n fileName: file.name,\n username: JSON.parse(JSON.stringify(await Auth.currentAuthenticatedUser())).username\n }\n }\n\n var attachmentsResult = await API.post(apiName, path, myInit);\n\n //Obtenemos los attachments\n var attachmentsGet = await Storage.list(\"/sccc/\" + id);\n var attachmentsAux = [];\n\n for (var attachmentsGetIndex in attachmentsGet) {\n var singleAttachmentsGet = attachmentsGet[attachmentsGetIndex];\n\n var singleAttachment = {\n name: singleAttachmentsGet.key.split('/').pop(),\n isDirectory: false,\n size: singleAttachmentsGet.size,\n };\n\n attachmentsAux.push(singleAttachment);\n }\n\n setAttachments(attachmentsAux);\n }\n catch (err) {\n console.log(\"Error uploading file:\", err);\n }\n }\n\n async function onAttachmentDeleting(e) {\n var fileName = e.item.key;\n\n //Primero borramos el archivo de S3\n var attachmentsDelete = await Storage.remove(\"/sccc/\" + id + \"/\" + fileName);\n\n //Despues borramos el attachment en Intelisis\n let bucketName = Storage._config.AWSS3.bucket;\n\n let apiName = 'AdminSC';\n let path = '/uploadattachment';\n\n let myInit = {\n headers: {\n 'Content-Type': 'application/json',\n Authorization: `${(await Auth.currentSession()).getAccessToken().getJwtToken()}`\n },\n body: {\n action: 'delete',\n bucketName: bucketName,\n type: 'sccc',\n id: id,\n Key: \"/sccc/\" + id + \"/\" + fileName,\n fileName: fileName,\n username: JSON.parse(JSON.stringify(await Auth.currentAuthenticatedUser())).username\n }\n }\n\n var attachmentsResult = await API.post(apiName, path, myInit);\n\n //Finalmente sincronizamos el state\n var attachmentsGet = await Storage.list(\"/sccc/\" + id);\n var attachmentsAux = [];\n\n for (var attachmentsGetIndex in attachmentsGet) {\n var singleAttachmentsGet = attachmentsGet[attachmentsGetIndex];\n\n var singleAttachment = {\n name: singleAttachmentsGet.key.split('/').pop(),\n isDirectory: false,\n size: singleAttachmentsGet.size,\n };\n\n attachmentsAux.push(singleAttachment);\n }\n\n setAttachments(attachmentsAux);\n };\n\n function downloadBlob(blob, filename) {\n const url = URL.createObjectURL(blob);\n const a = document.createElement('a');\n a.href = url;\n a.download = filename || 'download';\n const clickHandler = () => {\n setTimeout(() => {\n URL.revokeObjectURL(url);\n a.removeEventListener('click', clickHandler);\n }, 150);\n };\n\n a.addEventListener('click', clickHandler, false);\n\n a.click();\n\n return a;\n };\n\n async function onItemDownloading(e) {\n e.cancel = true;\n\n const downloadFileResponse = await Storage.get(\"/sccc/\" + id + \"/\" + e.item.name, { download: true });\n\n downloadBlob(downloadFileResponse.Body, e.item.name);\n };\n\n function openBlob(blob, filename) {\n const url = URL.createObjectURL(blob);\n\n window.open(url, \"_blank\");\n };\n\n async function onAttachmentOpen(e) {\n const downloadFileResponse = await Storage.get(\"/sccc/\" + id + \"/\" + e.file.name, { download: true });\n\n openBlob(downloadFileResponse.Body, e.file.name);\n };\n\n const getCashRegisterPayload = React.useCallback(async (ID) => {\n try {\n let apiName = 'AdminSC';\n let path = '/procesacortecaja';\n\n let myInit = {\n headers: {\n 'Content-Type': 'application/json',\n Authorization: `${(await Auth.currentSession()).getAccessToken().getJwtToken()}`\n },\n queryStringParameters: {\n ID: ID,\n action: 'payload',\n usuario: props.usuario,\n username: JSON.parse(JSON.stringify(await Auth.currentAuthenticatedUser())).username\n }\n }\n\n var payloadGet = await API.get(apiName, path, myInit);\n\n setCashRegisterPayload(payloadGet);\n\n //Obtenemos los attachments\n var attachmentsGet = await Storage.list(\"/sccc/\" + ID);\n var attachmentsAux = [];\n\n for (var attachmentsGetIndex in attachmentsGet) {\n var singleAttachmentsGet = attachmentsGet[attachmentsGetIndex];\n\n var singleAttachment = {\n name: singleAttachmentsGet.key.split('/').pop(),\n isDirectory: false,\n size: singleAttachmentsGet.size,\n };\n\n attachmentsAux.push(singleAttachment);\n }\n\n setAttachments(attachmentsAux);\n }\n catch (e) {\n if (e === 'No current user') {\n history.push('/');\n\n window.location.reload();\n }\n }\n\n return payloadGet;\n }, [history, props.usuario]);\n\n function editCashRegister(data) {\n return (\n <Link to={`/CashRegister/${data.data.ID}`}>\n <button class=\"bg-blue-500 hover:bg-blue-700 text-white py-1 px-3 rounded\" onClick={() => editButton(data.data.ID)}><FontAwesomeIcon icon={permissionLevel === 'Editar' ? faPencilAlt : faGlasses} /> {permissionLevel === 'Editar' ? 'Editar' : 'Ver'}</button>\n </Link>\n )\n }\n\n const newButton = React.useCallback(async () => {\n var sucursal = parseInt(props.sucursal);\n\n if (!sucursal && sucursal !== 0) {\n alert('Configuración de usuario incorrecta. Comunicarse con el área de sistemas');\n\n setCashRegisterPayload({\n header: {},\n detail: [],\n movEstatusLog: []\n });\n\n setIsDetail(false);\n\n return;\n }\n\n try {\n let apiName = 'AdminSC';\n let path = '/procesacortecaja';\n\n let myInit = {\n headers: {\n 'Content-Type': 'application/json',\n Authorization: `${(await Auth.currentSession()).getAccessToken().getJwtToken()}`\n },\n queryStringParameters: {\n action: 'new',\n username: JSON.parse(JSON.stringify(await Auth.currentAuthenticatedUser())).username,\n usuario: props.usuario,\n sucursal: props.sucursal\n }\n };\n\n var payloadNew = await API.get(apiName, path, myInit);\n\n setCashRegisterPayload(payloadNew);\n\n setAttachments([]);\n\n setIsDetail(true);\n setId(undefined);\n\n setActivateUpdateForm(true);\n setActivateUpdateGrid(true);\n setActivateDeleteGrid(true);\n setActivateSaveButton(true);\n setActivateDeleteButton(false);\n setActivateCancelButton(false);\n setActivateConfirmButton(false);\n setActivateGetCustPaymentButton(false);\n setActivateClearPayments(false);\n setActivatePDFButton(false);\n setActivateAttachments(false);\n setActivateDates(false);\n\n setVisibleLoadPanel(false);\n setContextMenuItems([]);\n }\n catch (e) {\n if (e === 'No current user') {\n history.push('/');\n\n window.location.reload();\n }\n }\n }, [history, props.sucursal, props.usuario]);\n\n const editButton = React.useCallback(async (ID) => {\n try {\n if (!window.event.metaKey && !window.event.ctrlKey) {\n setVisibleLoadPanel(true);\n\n setIsDetail(true);\n setId(ID);\n\n var payload = await getCashRegisterPayload(ID);\n\n if (permissionLevel === 'Editar') {\n if (payload.header.Estatus === 'Sin Afectar') {\n setActivateUpdateForm(true);\n setActivateUpdateGrid(true);\n setActivateDeleteGrid(true);\n setActivateSaveButton(true);\n setActivateDeleteButton(false);\n setActivateCancelButton(true);\n setActivateConfirmButton(true);\n setActivateGetCustPaymentButton(true);\n setActivateClearPayments(true);\n setActivatePDFButton(true);\n setActivateAttachments(true);\n setActivateDates(false);\n\n setVisibleLoadPanel(false);\n setContextMenuItems([]);\n }\n else if (payload.header.Estatus === 'Pendiente') {\n setActivateUpdateForm(true);\n setActivateUpdateGrid(true);\n setActivateDeleteGrid(false);\n setActivateSaveButton(true);\n setActivateDeleteButton(false);\n setActivateCancelButton(true);\n setActivateConfirmButton(true);\n setActivateGetCustPaymentButton(false);\n setActivateClearPayments(true);\n setActivatePDFButton(true);\n setActivateAttachments(true);\n setActivateDates(true);\n\n setVisibleLoadPanel(false);\n setContextMenuItems([]);\n }\n else if (payload.header.Estatus === 'En Revision') {\n setActivateUpdateForm(false);\n setActivateUpdateGrid(false);\n setActivateDeleteGrid(false);\n setActivateSaveButton(false);\n setActivateDeleteButton(false);\n setActivateCancelButton(false);\n setActivateConfirmButton(false);\n setActivateGetCustPaymentButton(false);\n setActivateClearPayments(false);\n setActivatePDFButton(true);\n setActivateAttachments(false);\n setActivateDates(false);\n\n setVisibleLoadPanel(false);\n setContextMenuItems([]);\n }\n else if (payload.header.Estatus === 'Cancelado') {\n setActivateUpdateForm(false);\n setActivateUpdateGrid(false);\n setActivateDeleteGrid(false);\n setActivateSaveButton(false);\n setActivateDeleteButton(false);\n setActivateCancelButton(false);\n setActivateConfirmButton(false);\n setActivateGetCustPaymentButton(false);\n setActivateClearPayments(false);\n setActivatePDFButton(true);\n setActivateAttachments(false);\n setActivateDates(false);\n\n setVisibleLoadPanel(false);\n setContextMenuItems([]);\n }\n else if (payload.header.Estatus === 'Concluido') {\n setActivateUpdateForm(false);\n setActivateUpdateGrid(false);\n setActivateDeleteGrid(false);\n setActivateSaveButton(false);\n setActivateDeleteButton(false);\n setActivateCancelButton(false);\n setActivateConfirmButton(false);\n setActivateGetCustPaymentButton(false);\n setActivateClearPayments(false);\n setActivatePDFButton(true);\n setActivateAttachments(false);\n setActivateDates(false);\n\n setVisibleLoadPanel(false);\n setContextMenuItems([]);\n }\n }\n else if (permissionLevel === 'Ver') {\n setActivateUpdateForm(false);\n setActivateUpdateGrid(false);\n setActivateDeleteGrid(false);\n setActivateSaveButton(false);\n setActivateDeleteButton(false);\n setActivateCancelButton(false);\n setActivateConfirmButton(false);\n setActivateGetCustPaymentButton(false);\n setActivateClearPayments(false);\n setActivatePDFButton(true);\n setActivateAttachments(false);\n setActivateDates(false);\n\n setVisibleLoadPanel(false);\n setContextMenuItems([]);\n }\n\n setVisibleLoadPanel(false);\n }\n }\n catch (e) {\n setVisibleLoadPanel(false);\n\n if (!ID || ID === 'undefined') {\n newButton();\n }\n }\n }, [getCashRegisterPayload, newButton, permissionLevel]);\n\n async function cancelEditButton() {\n setIsDetail(false);\n };\n\n const saveButton = React.useCallback(async () => {\n try {\n setVisibleLoadPanel(true);\n\n var ID = cashRegisterPayload.header.ID;\n\n //Guardamos los cambios del grid\n if (gridTransaccionesCashRegisterRef.current) {\n var gridTransacciones = gridTransaccionesCashRegisterRef.current.instance();\n\n gridTransacciones.saveEditData();\n }\n\n //Despues enviamos todo al backend\n let apiName = 'AdminSC';\n let path = '/procesacortecaja';\n\n let myInit = {\n headers: {\n 'Content-Type': 'application/json',\n Authorization: `${(await Auth.currentSession()).getAccessToken().getJwtToken()}`\n },\n body: {\n ID: ID,\n payload: cashRegisterPayload,\n action: 'saveChanges',\n username: JSON.parse(JSON.stringify(await Auth.currentAuthenticatedUser())).username,\n usuario: props.usuario,\n sucursal: props.sucursal,\n s3Bucket: Storage._config.AWSS3.bucket\n }\n }\n\n var payloadPost = await API.post(apiName, path, myInit);\n\n if (payloadPost.ok === 'true') {\n if (!ID) {\n setVisibleToast(true);\n setMessageToast('Se creó el Corte de Caja con éxito');\n setTypeToast('success')\n\n ID = payloadPost.newID;\n\n editButton(ID);\n\n history.push('/CashRegister/' + ID.toString());\n }\n else {\n setVisibleToast(true);\n setMessageToast('Se actualizó el Corte de Caja con éxito');\n setTypeToast('success')\n }\n }\n else if (payloadPost.ok === 'false') {\n setVisibleToast(true);\n setMessageToast(payloadPost.message);\n setTypeToast('error')\n }\n\n editButton(ID);\n\n setVisibleLoadPanel(false);\n }\n catch (e) {\n setVisibleLoadPanel(false);\n\n if (e === 'No current user') {\n history.push('/');\n\n window.location.reload();\n }\n }\n }, [cashRegisterPayload, editButton, gridTransaccionesCashRegisterRef, history, props.sucursal, props.usuario]);\n\n async function confirmButton() {\n var ID = cashRegisterPayload.header.ID;\n\n try {\n setVisibleLoadPanel(true);\n\n //Guardamos los cambios del grid\n if (gridTransaccionesCashRegisterRef.current) {\n var gridTransacciones = gridTransaccionesCashRegisterRef.current.instance();\n\n gridTransacciones.saveEditData();\n }\n\n //Despues enviamos todo al backend\n let apiName = 'AdminSC';\n let path = '/procesacortecaja';\n\n let myInit = {\n headers: {\n 'Content-Type': 'application/json',\n Authorization: `${(await Auth.currentSession()).getAccessToken().getJwtToken()}`\n },\n body: {\n ID: ID,\n payload: cashRegisterPayload,\n action: 'apply',\n username: JSON.parse(JSON.stringify(await Auth.currentAuthenticatedUser())).username,\n usuario: props.usuario,\n sucursal: props.sucursal\n }\n }\n\n var payloadPost = await API.post(apiName, path, myInit);\n\n if (payloadPost.ok === 'true') {\n setVisibleToast(true);\n setMessageToast('Se afectó el Corte de Caja con éxito');\n setTypeToast('success')\n }\n else if (payloadPost.ok === 'false') {\n setVisibleToast(true);\n setMessageToast(payloadPost.message);\n setTypeToast('error')\n }\n\n editButton(ID);\n\n setVisibleLoadPanel(false);\n }\n catch (e) {\n setVisibleLoadPanel(false);\n\n if (e === 'No current user') {\n history.push('/');\n\n window.location.reload();\n }\n }\n };\n\n async function getCustPaymentsButton() {\n try {\n setVisibleLoadPanel(true);\n\n var ID = cashRegisterPayload.header.ID;\n\n //Guardamos los cambios del grid\n if (gridTransaccionesCashRegisterRef.current) {\n var gridTransacciones = gridTransaccionesCashRegisterRef.current.instance();\n\n gridTransacciones.saveEditData();\n }\n\n //Despues enviamos todo al backend\n let apiName = 'AdminSC';\n let path = '/procesacortecaja';\n\n let myInit = {\n headers: {\n 'Content-Type': 'application/json',\n Authorization: `${(await Auth.currentSession()).getAccessToken().getJwtToken()}`\n },\n body: {\n ID: ID,\n payload: cashRegisterPayload,\n action: 'getCustPaymentInfo',\n username: JSON.parse(JSON.stringify(await Auth.currentAuthenticatedUser())).username,\n usuario: props.usuario,\n sucursal: props.sucursal\n }\n }\n\n var payloadPost = await API.post(apiName, path, myInit);\n\n if (payloadPost.ok === 'true') {\n setVisibleToast(true);\n setMessageToast('Transacciones actualizadas con éxito');\n setTypeToast('success')\n }\n else if (payloadPost.ok === 'false') {\n setVisibleToast(true);\n setMessageToast(payloadPost.message);\n setTypeToast('error')\n }\n\n editButton(ID);\n\n setVisibleLoadPanel(false);\n }\n catch (e) {\n setVisibleLoadPanel(false);\n\n if (e === 'No current user') {\n history.push('/');\n\n window.location.reload();\n }\n }\n };\n\n async function updFechaListado() {\n await saveButton();\n\n var ID = cashRegisterPayload.header.ID;\n\n try {\n setVisibleLoadPanel(true);\n\n //Guardamos los cambios del grid\n if (gridTransaccionesCashRegisterRef.current) {\n var gridTransacciones = gridTransaccionesCashRegisterRef.current.instance();\n\n gridTransacciones.saveEditData();\n }\n\n //Despues enviamos todo al backend\n let apiName = 'AdminSC';\n let path = '/procesacortecaja';\n\n let myInit = {\n headers: {\n 'Content-Type': 'application/json',\n Authorization: `${(await Auth.currentSession()).getAccessToken().getJwtToken()}`\n },\n body: {\n ID: ID,\n payload: cashRegisterPayload,\n action: 'updFechaListado',\n username: JSON.parse(JSON.stringify(await Auth.currentAuthenticatedUser())).username,\n usuario: props.usuario,\n sucursal: props.sucursal\n }\n }\n\n var payloadPost = await API.post(apiName, path, myInit);\n\n if (payloadPost.ok === 'true') {\n setVisibleToast(true);\n setMessageToast('Fechas actualizadas con éxito');\n setTypeToast('success')\n }\n else if (payloadPost.ok === 'false') {\n setVisibleToast(true);\n setMessageToast(payloadPost.message);\n setTypeToast('error')\n }\n\n editButton(ID);\n\n setVisibleLoadPanel(false);\n }\n catch (e) {\n setVisibleLoadPanel(false);\n\n if (e === 'No current user') {\n history.push('/');\n\n window.location.reload();\n }\n }\n };\n\n async function updFechaDeposito() {\n await saveButton();\n\n var ID = cashRegisterPayload.header.ID;\n\n try {\n setVisibleLoadPanel(true);\n\n //Guardamos los cambios del grid\n if (gridTransaccionesCashRegisterRef.current) {\n var gridTransacciones = gridTransaccionesCashRegisterRef.current.instance();\n\n gridTransacciones.saveEditData();\n }\n\n //Despues enviamos todo al backend\n let apiName = 'AdminSC';\n let path = '/procesacortecaja';\n\n let myInit = {\n headers: {\n 'Content-Type': 'application/json',\n Authorization: `${(await Auth.currentSession()).getAccessToken().getJwtToken()}`\n },\n body: {\n ID: ID,\n payload: cashRegisterPayload,\n action: 'updFechaDeposito',\n username: JSON.parse(JSON.stringify(await Auth.currentAuthenticatedUser())).username,\n usuario: props.usuario,\n sucursal: props.sucursal\n }\n }\n\n var payloadPost = await API.post(apiName, path, myInit);\n\n if (payloadPost.ok === 'true') {\n setVisibleToast(true);\n setMessageToast('Fechas actualizadas con éxito');\n setTypeToast('success')\n }\n else if (payloadPost.ok === 'false') {\n setVisibleToast(true);\n setMessageToast(payloadPost.message);\n setTypeToast('error')\n }\n\n editButton(ID);\n\n setVisibleLoadPanel(false);\n }\n catch (e) {\n setVisibleLoadPanel(false);\n\n if (e === 'No current user') {\n history.push('/');\n\n window.location.reload();\n }\n }\n };\n\n async function releasePaymentsButton() {\n try {\n if (!window.confirm('¿Desea liberar todos los Cobros?'))\n return;\n\n setVisibleLoadPanel(true);\n\n var ID = cashRegisterPayload.header.ID;\n\n //Despues enviamos todo al backend\n let apiName = 'AdminSC';\n let path = '/procesacortecaja';\n\n let myInit = {\n headers: {\n 'Content-Type': 'application/json',\n Authorization: `${(await Auth.currentSession()).getAccessToken().getJwtToken()}`\n },\n body: {\n ID: ID,\n payload: cashRegisterPayload,\n action: 'releasePayments',\n username: JSON.parse(JSON.stringify(await Auth.currentAuthenticatedUser())).username,\n usuario: props.usuario,\n sucursal: props.sucursal\n }\n }\n\n var payloadPost = await API.post(apiName, path, myInit);\n\n if (payloadPost.ok === 'true') {\n setVisibleToast(true);\n setMessageToast('Se liberaron los Cobros del Corte de Caja');\n setTypeToast('success')\n }\n else if (payloadPost.ok === 'false') {\n setVisibleToast(true);\n setMessageToast(payloadPost.message);\n setTypeToast('error')\n }\n\n editButton(ID);\n\n setVisibleLoadPanel(false);\n }\n catch (e) {\n setVisibleLoadPanel(false);\n\n if (e === 'No current user') {\n history.push('/');\n\n window.location.reload();\n }\n }\n }\n\n async function voidButton() {\n try {\n if (!window.confirm('¿Desea cancelar el Corte de Caja?'))\n return;\n\n setVisibleLoadPanel(true);\n\n var ID = cashRegisterPayload.header.ID;\n\n //Guardamos los cambios del grid\n if (gridTransaccionesCashRegisterRef.current) {\n var gridTransacciones = gridTransaccionesCashRegisterRef.current.instance();\n\n gridTransacciones.saveEditData();\n }\n\n //Despues enviamos todo al backend\n let apiName = 'AdminSC';\n let path = '/procesacortecaja';\n\n let myInit = {\n headers: {\n 'Content-Type': 'application/json',\n Authorization: `${(await Auth.currentSession()).getAccessToken().getJwtToken()}`\n },\n body: {\n ID: ID,\n payload: cashRegisterPayload,\n action: 'void',\n username: JSON.parse(JSON.stringify(await Auth.currentAuthenticatedUser())).username,\n usuario: props.usuario,\n sucursal: props.sucursal\n }\n }\n\n var payloadPost = await API.post(apiName, path, myInit);\n\n if (payloadPost.ok === 'true') {\n setVisibleToast(true);\n setMessageToast('Se canceló el Corte de Caja');\n setTypeToast('success')\n }\n else if (payloadPost.ok === 'false') {\n setVisibleToast(true);\n setMessageToast(payloadPost.message);\n setTypeToast('error')\n }\n\n editButton(ID);\n\n setVisibleLoadPanel(false);\n }\n catch (e) {\n setVisibleLoadPanel(false);\n\n if (e === 'No current user') {\n history.push('/');\n\n window.location.reload();\n }\n }\n };\n\n function refreshButton() {\n if (gridTableroRef.current) {\n var gridTablero = gridTableroRef.current.instance();\n\n gridTablero.refresh();\n }\n }\n\n async function deleteButton() {\n try {\n if (!window.confirm('¿Desea eliminar el Corte de Caja?'))\n return;\n\n setVisibleLoadPanel(true);\n\n var ID = cashRegisterPayload.header.ID;\n\n if (!ID) {\n //Vamos al tablero de control\n history.push('/CashRegister');\n return;\n }\n\n let apiName = 'AdminSC';\n let path = '/procesacortecaja';\n\n let myInit = {\n headers: {\n 'Content-Type': 'application/json',\n Authorization: `${(await Auth.currentSession()).getAccessToken().getJwtToken()}`\n },\n body: {\n ID: ID,\n payload: cashRegisterPayload,\n action: 'delete',\n username: JSON.parse(JSON.stringify(await Auth.currentAuthenticatedUser())).username,\n usuario: props.usuario,\n sucursal: props.sucursal\n }\n }\n\n var payloadPost = await API.post(apiName, path, myInit);\n\n if (payloadPost.ok === 'true') {\n setVisibleLoadPanel(false);\n\n setVisibleToast(true);\n setMessageToast('Corte de Caja eliminado con éxito');\n setTypeToast('success')\n\n setIsDetail(false);\n\n //Vamos al tablero de control\n history.push('/CashRegister');\n }\n else if (payloadPost.ok === 'false') {\n setVisibleLoadPanel(false);\n\n setVisibleToast(true);\n setMessageToast(payloadPost.message);\n setTypeToast('error')\n }\n }\n catch (e) {\n setVisibleLoadPanel(false);\n\n if (e === 'No current user') {\n history.push('/');\n\n window.location.reload();\n }\n }\n }\n\n function printButton() {\n var baseUrl = window.location.href.split('/')[0];\n\n window.open(baseUrl + \"/#/PdfRender?type=cashregister&id=\" + id, \"_blank\");\n };\n\n useEffect(() => {\n window.addEventListener('popstate', (e) => {\n var hash;\n\n try {\n hash = e.target.location.hash;\n }\n catch (e) {\n hash = '';\n }\n\n if (hash === '#/CashRegister') {\n history.push('/CashRegister');\n\n window.location.reload();\n }\n });\n\n async function initialize() {\n setVisibleLoadPanel(true);\n\n setVisibleLoadPanel(false);\n }\n\n initialize();\n\n //En caso de solicitar un ID especifico, redireccionamos a ese ID\n if (!props.match.isExact) {\n var urlID = props.location.pathname.replace('/CashRegister/', '');\n\n if (urlID === 'undefined')\n urlID = undefined;\n\n if (urlID)\n editButton(urlID);\n }\n\n // eslint-disable-next-line\n }, []);\n\n function onHidingToast() {\n setVisibleToast(false);\n }\n\n function contextMenuItemClick(e) {\n // if(e.itemData.text === 'Seleccionar Todo'){\n // selectAllButton();\n // }\n // else if(e.itemData.text === 'Eliminar Selección'){\n // selectNothingButton();\n // }\n };\n\n function estatusRelatedRecords(data) {\n return (\n <TransactionStatus {...props} Estatus={data.data.Estatus} />\n )\n };\n\n async function deleteCustPymtButton(ID, CxcID, MovID) {\n try {\n if (!window.confirm('¿Desea liberar el Cobro ' + MovID + '?'))\n return;\n\n setVisibleLoadPanel(true);\n\n var ID = cashRegisterPayload.header.ID;\n\n //Despues enviamos todo al backend\n let apiName = 'AdminSC';\n let path = '/procesacortecaja';\n\n let myInit = {\n headers: {\n 'Content-Type': 'application/json',\n Authorization: `${(await Auth.currentSession()).getAccessToken().getJwtToken()}`\n },\n body: {\n ID: ID,\n CxcID: CxcID,\n payload: cashRegisterPayload,\n action: 'releaseCustPymt',\n username: JSON.parse(JSON.stringify(await Auth.currentAuthenticatedUser())).username,\n usuario: props.usuario,\n sucursal: props.sucursal\n }\n }\n\n var payloadPost = await API.post(apiName, path, myInit);\n\n if (payloadPost.ok === 'true') {\n setVisibleToast(true);\n setMessageToast('Se eliminó el Cobro con éxito');\n setTypeToast('success')\n }\n else if (payloadPost.ok === 'false') {\n setVisibleToast(true);\n setMessageToast(payloadPost.message);\n setTypeToast('error')\n }\n\n editButton(ID);\n\n setVisibleLoadPanel(false);\n }\n catch (e) {\n setVisibleLoadPanel(false);\n\n if (e === 'No current user') {\n history.push('/');\n\n window.location.reload();\n }\n }\n }\n\n function deleteCustPymt(data) {\n if (permissionLevel === 'Editar' && cashRegisterPayload.header.HabilitarLiberar === 'true') {\n return (\n <button class=\"bg-red-500 hover:bg-red-700 text-white py-1 px-3 rounded\" onClick={() => deleteCustPymtButton(data.data.ID, data.data.CxcID, data.data.MovID)}><FontAwesomeIcon icon={faTrash} /></button>\n );\n }\n };\n\n function onExporting(e) {\n const workbook = new Workbook();\n const worksheet = workbook.addWorksheet('Datos');\n\n exportDataGrid({\n component: e.component,\n worksheet,\n autoFilterEnabled: true,\n }).then(() => {\n workbook.xlsx.writeBuffer().then((buffer) => {\n saveAs(new Blob([buffer], { type: 'application/octet-stream' }), 'Datos.xlsx');\n });\n });\n e.cancel = true;\n };\n\n return (\n <div>\n {isDetail === false ? (\n <div class=\"bg-gray-200 m-2\">\n <h1 class=\"font-sans inline-block text-xl font-bold text-gray-700 leading-8 align-top mb-1\"><FontAwesomeIcon icon={faList} size=\"lg\" /> Cortes Caja</h1>\n </div>\n ) :\n (\n <div class=\"bg-gray-200 m-2\">\n <h1 class=\"font-sans inline-block text-xl font-bold text-gray-700 leading-8 align-top mb-1\"><FontAwesomeIcon icon={faCashRegister} size=\"xl\" /> {(cashRegisterPayload.header ? cashRegisterPayload.header.Movimiento : 'Corte Caja')}</h1>\n <TransactionStatus {...props} Estatus={cashRegisterPayload.header.Estatus} />\n </div>\n )}\n\n <LoadPanel\n shadingColor=\"rgba(0,0,0,0.4)\"\n visible={visibleLoadPanel}\n showIndicator={true}\n message=\"Por favor espere...\"\n shading={true}\n showPane={true}\n hideOnOutsideClick={false}\n />\n\n <Toast\n visible={visibleToast}\n message={messageToast}\n type={typeToast}\n onHiding={onHidingToast}\n displayTime={5000}\n width={'auto'}\n position={{\n my: 'top center',\n at: 'top center',\n of: window,\n offset: '0 130'\n }}\n />\n\n <div class=\"bg-gray-200 m-2\">\n {isDetail === false ? (\n <div class=\"bg-white p-3 shadow-xl\">\n\n {permissionLevel === 'Editar' ?\n (\n <div>\n <Link to=\"/CashRegister/undefined\">\n <button class=\"mb-2 bg-green-500 hover:bg-green-700 text-white font-bold py-2 px-4 rounded\" onClick={() => newButton()}><FontAwesomeIcon icon={faFileAlt} /> Nuevo Corte Caja</button>\n </Link>\n\n <button onClick={refreshButton} type=\"submit\" class=\"ml-4 mb-4 bg-blue-500 hover:bg-blue-700 text-white font-bold py-2 px-4 rounded\">\n <FontAwesomeIcon icon={faArrowsRotate} /> Actualizar\n </button>\n </div>\n ) :\n (\n <div>\n <button onClick={refreshButton} type=\"submit\" class=\"mb-4 bg-blue-500 hover:bg-blue-700 text-white font-bold py-2 px-4 rounded\">\n <FontAwesomeIcon icon={faArrowsRotate} /> Actualizar\n </button>\n </div>\n )}\n\n <div className=\"options mb-2\">\n <div className=\"option\">\n <CheckBox text=\"Expandir todos los grupos\"\n value={autoExpandAll}\n onValueChanged={onAutoExpandAllChanged}></CheckBox>\n </div>\n </div>\n <DataGrid\n height={800}\n id=\"gridContainer\"\n columnsAutoWidth={true}\n filterBuilder={filterBuilder}\n dataSource={store}\n defaultFilterValue={filterValue}\n allowColumnReordering={true}\n allowColumnResizing={true}\n columnResizingMode={\"widget\"}\n showBorders={true}\n rowAlternationEnabled={true}\n showRowLines={true}\n showColumnLines={true}\n remoteOperations={{ filtering: true }}\n ref={gridTableroRef}\n onExporting={onExporting}\n >\n <Scrolling rowRenderingMode='virtual'></Scrolling>\n <Paging defaultPageSize={10} />\n <Pager\n visible={true}\n allowedPageSizes={allowedPageSizes}\n displayMode='compact'\n showPageSizeSelector={true}\n showInfo={true}\n showNavigationButtons={true}\n />\n <FilterRow visible={true} />\n <FilterPanel visible={true} />\n <FilterBuilderPopup position={filterBuilderPopupPosition} />\n\n <HeaderFilter visible={true} />\n\n <GroupPanel visible={true} />\n <SearchPanel visible={true} />\n <ColumnChooser\n enabled={true}\n mode='select'\n >\n <ColumnChooserSearch\n enabled={true}\n />\n\n <ColumnChooserSelection\n allowSelectAll={true}\n selectByClick={true}\n recursive={true}\n />\n </ColumnChooser>\n <Grouping autoExpandAll={autoExpandAll} />\n <StateStoring enabled={true} type=\"localStorage\" storageKey=\"gridContainerCashRegister\" />\n <Export enabled={true} />\n\n <Column caption=\"\" alignment=\"center\" width={100} cellRender={editCashRegister} />\n <Column dataField=\"MovID\" dataType=\"string\" width={110} caption=\"Folio\" />\n <Column dataField=\"FechaEmision\" caption=\"Fecha Emisión\" dataType=\"date\" width={130} />\n <Column dataField=\"Estatus\" dataType=\"string\" width={120} />\n <Column caption=\"Plaza\" dataField=\"Plaza\" dataType=\"string\" width={150} visible={false} />\n\n <Column dataField=\"ID\" dataType=\"number\" width={150} visible={false} />\n <Column dataField=\"Mov\" dataType=\"string\" width={190} caption=\"Tipo Movimiento\" visible={false} />\n <Column dataField=\"Movimiento\" dataType=\"string\" width={190} visible={false} />\n <Column dataField=\"Caja\" caption=\"Caja\" dataType=\"string\" width={150} />\n <Column dataField=\"NombreCaja\" caption=\"Nombre Caja\" dataType=\"string\" width={150} visible={false} />\n <Column dataField=\"Importe\" caption=\"Importe\" dataType=\"number\" width={150} >\n <Format\n type=\"currency\"\n precision={2}\n />\n </Column>\n <Column dataField=\"SCFechaPostfechado\" caption=\"Fecha Listado\" dataType=\"date\" width={200} />\n <Column dataField=\"SCFechaRealDeposito\" caption=\"Fecha Real Depósito\" dataType=\"date\" width={200} />\n\n <Column dataField=\"Sucursal\" dataType=\"number\" width={150} visible={false} />\n <Column dataField=\"NombreSucursal\" dataType=\"string\" width={190} visible={false} />\n <Column dataField=\"Usuario\" dataType=\"string\" width={190} visible={false} />\n <Column dataField=\"NombreUsuario\" dataType=\"string\" width={190} visible={false} />\n\n <Summary>\n <GroupItem\n column=\"Importe\"\n summaryType=\"sum\"\n valueFormat=\"$,##0.##\"\n displayFormat=\"Importe {0}\"\n showInGroupFooter={false}>\n </GroupItem>\n <TotalItem\n column=\"Importe\"\n summaryType=\"sum\"\n valueFormat=\"$,##0.##\"\n displayFormat=\"Importe {0}\"\n showInColumn=\"Importe\">\n </TotalItem>\n </Summary>\n </DataGrid>\n </div>\n ) : (<div />)}\n <Route exact path=\"/CashRegister/:ID\" render={({ match }) => {\n return (\n <div class=\"bg-gray-200\">\n {isDetail.toString() === 'true' ?\n (\n <div>\n <Link to=\"/CashRegister\">\n <button onClick={cancelEditButton} type=\"submit\" class=\"mb-4 bg-red-500 hover:bg-red-700 text-white font-bold py-2 px-4 rounded\">\n <FontAwesomeIcon icon={faArrowRotateLeft} /> Regresar\n </button>\n </Link>\n\n {activateSaveButton.toString() === 'true' ?\n (\n <button onClick={saveButton} type=\"submit\" class=\"ml-4 mb-4 bg-blue-500 hover:bg-blue-700 text-white font-bold py-2 px-4 rounded\">\n <FontAwesomeIcon icon={faSave} /> Guardar Cambios\n </button>\n ) : (\n <div class=\"inline-block\"></div>\n )}\n\n {activateConfirmButton.toString() === 'true' && id ?\n (\n <button onClick={confirmButton} type=\"submit\" class=\"ml-4 mb-4 bg-green-500 hover:bg-green-700 text-white font-bold py-2 px-4 rounded\">\n <FontAwesomeIcon icon={faPlay} /> Afectar\n </button>\n ) : (\n <div class=\"inline-block\"></div>\n )}\n\n {activateGetCustPaymentButton.toString() === 'true' && id ?\n (\n <button onClick={getCustPaymentsButton} type=\"submit\" class=\"ml-4 mb-4 bg-yellow-500 hover:bg-yellow-700 text-white font-bold py-2 px-4 rounded\">\n <FontAwesomeIcon icon={faLightbulb} /> Sugerir Corte\n </button>\n ) :\n (\n <div class=\"inline-block\"></div>\n )}\n\n {activateDates.toString() === 'true' && id ?\n (\n <button onClick={updFechaListado} type=\"submit\" class=\"ml-4 mb-4 bg-yellow-500 hover:bg-yellow-700 text-white font-bold py-2 px-4 rounded\">\n <FontAwesomeIcon icon={faCalendarDays} /> Fecha Listado\n </button>\n ) :\n (\n <div class=\"inline-block\"></div>\n )}\n\n {activateDates.toString() === 'true' && id ?\n (\n <button onClick={updFechaDeposito} type=\"submit\" class=\"ml-4 mb-4 bg-yellow-500 hover:bg-yellow-700 text-white font-bold py-2 px-4 rounded\">\n <FontAwesomeIcon icon={faCalendarDays} /> Fecha Real Depósito\n </button>\n ) :\n (\n <div class=\"inline-block\"></div>\n )}\n\n {activateClearPayments.toString() === 'true' && id ?\n (\n <button onClick={releasePaymentsButton} type=\"submit\" class=\"ml-4 mb-4 bg-red-500 hover:bg-red-700 text-white font-bold py-2 px-4 rounded\">\n <FontAwesomeIcon icon={faLinkSlash} /> Liberar Cobros\n </button>\n ) :\n (\n <div class=\"inline-block\"></div>\n )}\n\n {activateDeleteButton.toString() === 'true' && id ?\n (\n <button onClick={deleteButton} type=\"submit\" class=\"ml-4 mb-4 bg-red-500 hover:bg-red-700 text-white font-bold py-2 px-4 rounded\">\n <FontAwesomeIcon icon={faTrash} /> Eliminar\n </button>\n ) :\n (\n <div class=\"inline-block\"></div>\n )}\n\n {activateCancelButton.toString() === 'true' && id ?\n (\n <button onClick={voidButton} type=\"submit\" class=\"ml-4 mb-4 bg-red-500 hover:bg-red-700 text-white font-bold py-2 px-4 rounded\">\n <FontAwesomeIcon icon={faWindowClose} /> Cancelar\n </button>\n ) :\n (\n <div class=\"inline-block\"></div>\n )}\n\n {activatePDFButton.toString() === 'true' && id ?\n (\n <button onClick={printButton} type=\"submit\" class=\"ml-4 mb-4 bg-gray-500 hover:bg-gray-700 text-white font-bold py-2 px-4 rounded\">\n <FontAwesomeIcon icon={faFilePdf} /> PDF\n </button>\n ) :\n (\n <div class=\"inline-block\"></div>\n )}\n\n <div class=\"bg-white p-4 shadow-xl\">\n <ContextMenu\n dataSource={contextMenuItems}\n width={200}\n target=\"#gridTransacciones\"\n onItemClick={contextMenuItemClick}\n />\n\n <Form\n id=\"formTransaccion\"\n labelMode={'outside'}\n formData={cashRegisterPayload.header}\n readOnly={!activateUpdateForm}\n showColonAfterLabel={false}\n labelLocation={'top'}\n ref={formDatosGeneralesRef}\n >\n <TabbedItem>\n <TabPanelOptions deferRendering={false} showNavButtons={true} />\n <Tab title=\"Datos Generales\" colCount={3}>\n <GroupItem>\n <GroupItem caption=\"General\">\n <Item cssClass=\"boldText\" dataField=\"Movimiento\" editorOptions={movimientoEditorOptions} />\n <Item dataField=\"FechaEmision\" editorType=\"dxDateBox\" editorOptions={fechaEmisionEditorOptions}>\n <Label text={\"Fecha Emisión\"} />\n </Item>\n <Item dataField=\"NombreCaja\" editorOptions={cajaEditorOptions}>\n <Label text={\"Caja\"} />\n </Item>\n </GroupItem>\n <GroupItem caption=\"Fechas\">\n <Item dataField=\"SCFechaPostfechado\" editorType=\"dxDateBox\" editorOptions={fechaPostfechadoEditorOptions}>\n <Label text={\"Fecha Listado\"} />\n </Item>\n <Item dataField=\"SCFechaRealDeposito\" editorType=\"dxDateBox\" editorOptions={fechaRealDepositoEditorOptions}>\n <Label text={\"Fecha Real Depósito\"} />\n </Item>\n </GroupItem>\n </GroupItem>\n <GroupItem caption=\"Transacciones\" colSpan={2} >\n <DataGrid\n id=\"gridTransaccionesCashRegister\"\n columnsAutoWidth={true}\n filterBuilder={filterBuilder}\n dataSource={cashRegisterPayload.detail}\n allowColumnReordering={true}\n allowColumnResizing={true}\n columnResizingMode={\"widget\"}\n showBorders={true}\n rowAlternationEnabled={true}\n showRowLines={true}\n showColumnLines={true}\n ref={gridTransaccionesCashRegisterRef}\n onExporting={onExporting}\n >\n <Scrolling rowRenderingMode='virtual'></Scrolling>\n <Paging defaultPageSize={10} />\n <Pager\n visible={true}\n allowedPageSizes={allowedPageSizes}\n displayMode='compact'\n showPageSizeSelector={true}\n showInfo={true}\n showNavigationButtons={true}\n />\n <HeaderFilter visible={true} />\n <FilterRow visible={true} />\n <FilterPanel visible={true} />\n <FilterBuilderPopup position={filterBuilderPopupPosition} />\n\n <GroupPanel visible={true} />\n <SearchPanel visible={true} />\n <ColumnChooser\n enabled={true}\n mode='select'\n >\n <ColumnChooserSearch\n enabled={true}\n />\n\n <ColumnChooserSelection\n allowSelectAll={true}\n selectByClick={true}\n recursive={true}\n />\n </ColumnChooser>\n <Grouping autoExpandAll={autoExpandAll} />\n <StateStoring enabled={true} type=\"localStorage\" storageKey=\"gridTransaccionesCashRegister\" />\n <Export enabled={true} />\n\n <Editing\n mode=\"cell\"\n allowUpdating={activateUpdateGrid}\n allowAdding={false}\n allowDeleting={activateDeleteGrid}\n useIcons={true}\n />\n <Sorting mode=\"none\" />\n\n <Column dataField=\"Renglon\" width={190} visible={false} allowEditing={false} />\n <Column dataField=\"SCRama\" dataType=\"string\" caption=\"Pedido\" width={90} allowEditing={false} />\n <Column dataField=\"FechaEmisionPedido\" dataType=\"date\" caption=\"Fecha Pedido\" width={120} allowEditing={false} />\n <Column dataField=\"MovID\" dataType=\"string\" caption=\"No. Pago\" width={120} allowEditing={false} />\n <Column dataField=\"FormaPago\" dataType=\"string\" caption=\"Forma Pago\" width={300} allowEditing={false} />\n <Column dataField=\"Importe\" caption=\"Importe\" dataType=\"number\" width={120} allowEditing={false} >\n <Format\n type=\"currency\"\n precision={2}\n />\n </Column>\n <Column dataField=\"SCFechaPostfechado\" dataType=\"date\" caption=\"Fecha Listado\" width={120} allowEditing={activateDates} />\n <Column dataField=\"SCFechaRealDeposito\" dataType=\"date\" caption=\"Fecha Real Depósito\" width={135} allowEditing={activateDates} />\n <Column caption=\"\" alignment=\"center\" width={60} cellRender={deleteCustPymt} />\n <Summary>\n <GroupItemGrid\n column=\"Importe\"\n summaryType=\"sum\"\n valueFormat=\"$,##0.##\"\n displayFormat=\"Importe {0}\"\n showInGroupFooter={false}>\n </GroupItemGrid>\n <TotalItem\n column=\"Importe\"\n summaryType=\"sum\"\n valueFormat=\"$,##0.##\"\n displayFormat=\"Importe {0}\"\n showInColumn=\"Importe\">\n </TotalItem>\n </Summary>\n </DataGrid>\n </GroupItem>\n </Tab>\n <Tab title=\"Observaciones\" >\n <Item dataField=\"Observaciones\" editorType=\"dxTextArea\" >\n <Label text=\"Observaciones\" visible={false} />\n </Item>\n </Tab>\n <Tab title=\"Log Estatus\">\n <DataGrid\n id=\"gridLogEstatus\"\n columnsAutoWidth={true}\n dataSource={cashRegisterPayload.movEstatusLog}\n allowColumnReordering={true}\n allowColumnResizing={true}\n columnResizingMode={\"widget\"}\n showBorders={true}\n rowAlternationEnabled={true}\n showRowLines={true}\n showColumnLines={true}\n >\n <HeaderFilter visible={false} />\n <Column dataField=\"Usuario\" dataType=\"string\" width={350} caption=\"Usuario\" />\n <Column caption=\"Estatus\" alignment=\"center\" width={150} cellRender={estatusRelatedRecords} />\n <Column dataField=\"Fecha\" dataType=\"datetime\" width={300} caption=\"Fecha\" />\n </DataGrid>\n </Tab>\n <Tab title=\"Archivos Anexos\" >\n <div className=\"widget-container\">\n <FileUploader\n multiple={true}\n accept=\"*\"\n uploadMode=\"useButtons\"\n chunkSize={20000000}\n maxFileSize={20000000}\n uploadChunk={uploadChunk}\n disabled={!activateAttachments}\n />\n </div>\n <div id=\"wrapper\" className=\"show-widget\" >\n <div id=\"widget-area\">\n <FileManager id=\"attachmentManager\" fileSystemProvider={attachments} onItemDeleting={onAttachmentDeleting} onItemDownloading={onItemDownloading} onSelectedFileOpened={onAttachmentOpen}>\n <Permissions\n create={false}\n copy={false}\n move={false}\n delete={activateAttachments}\n rename={false}\n upload={false}\n download={true}\n >\n </Permissions>\n </FileManager>\n </div>\n </div>\n </Tab>\n </TabbedItem>\n </Form>\n </div>\n </div>\n ) :\n (\n <div></div>\n )\n }\n </div>\n )\n }}\n />\n </div>\n </div>\n );\n}\n","import React, { useState, useEffect, useRef, useMemo } from 'react';\n\n// LoadPanel\nimport { LoadPanel } from 'devextreme-react/load-panel';\n\n// Toast\nimport { Toast } from 'devextreme-react/toast';\n\n//Form\nimport Form, { GroupItem, Label, TabbedItem, TabPanelOptions, Tab } from 'devextreme-react/form';\n\nimport { Auth, API, Storage } from 'aws-amplify';\n\n// Ruteador\nimport { Route, Link, useHistory } from \"react-router-dom\";\n\n// Grid\nimport DataGrid, {\n Column, FilterRow, HeaderFilter, FilterPanel, FilterBuilderPopup,\n GroupPanel, Grouping, SearchPanel, Sorting, Editing, Lookup, Toolbar, Item, RequiredRule,\n Scrolling, Pager, Paging, Summary, TotalItem, StateStoring, ColumnChooser, Format, Selection,\n Export, ColumnChooserSearch, ColumnChooserSelection\n} from 'devextreme-react/data-grid';\n\n//CheckBox\nimport CheckBox from 'devextreme-react/check-box';\n\n//ContextMenu\nimport ContextMenu from 'devextreme-react/context-menu';\n\n// Iconos\nimport { FontAwesomeIcon } from \"@fortawesome/react-fontawesome\";\nimport { faGlasses } from \"@fortawesome/pro-solid-svg-icons\";\nimport { faPencilAlt } from \"@fortawesome/pro-solid-svg-icons\";\nimport { faArrowRotateLeft } from \"@fortawesome/pro-solid-svg-icons\";\nimport { faSave } from \"@fortawesome/pro-solid-svg-icons\";\nimport { faList } from \"@fortawesome/pro-duotone-svg-icons\";\nimport { faFilePdf } from \"@fortawesome/pro-solid-svg-icons\";\nimport { faArrowsRotate } from \"@fortawesome/pro-solid-svg-icons\";\nimport { faFileAlt } from \"@fortawesome/pro-solid-svg-icons\";\nimport { faPersonDolly } from \"@fortawesome/pro-duotone-svg-icons\";\nimport { faPlay } from \"@fortawesome/pro-solid-svg-icons\";\nimport { faTrash } from \"@fortawesome/pro-solid-svg-icons\";\nimport { faLightbulb } from \"@fortawesome/pro-solid-svg-icons\";\nimport { faCircleCheck } from \"@fortawesome/pro-solid-svg-icons\";\nimport { faCircleX } from \"@fortawesome/pro-solid-svg-icons\";\nimport { faWindowClose } from \"@fortawesome/pro-solid-svg-icons\";\nimport { faThumbsUp } from \"@fortawesome/pro-solid-svg-icons\";\nimport { faArrowUpRightFromSquare } from \"@fortawesome/pro-solid-svg-icons\";\n\nimport 'devextreme/data/odata/store';\nimport CustomStore from 'devextreme/data/custom_store';\n\nimport DataSource from 'devextreme/data/data_source';\n\nimport '../ListStyle.css';\n\n//FileUploader\nimport FileUploader from 'devextreme-react/file-uploader';\n\n//FileManager\nimport FileManager, { Permissions } from 'devextreme-react/file-manager';\n\nimport dxDateBox from \"devextreme/ui/date_box\";\n\nimport dxNumberBox from \"devextreme/ui/number_box\";\n\nimport TransactionStatus from \"../TransactionStatus/TransactionStatus.js\";\n\nimport { Workbook } from 'exceljs';\nimport { saveAs } from 'file-saver';\nimport { exportDataGrid } from 'devextreme/excel_exporter'\n\ndxDateBox.defaultOptions({\n options: {\n dateSerializationFormat: \"yyyy-MM-dd\"\n }\n});\n\ndxNumberBox.defaultOptions({\n options: {\n step: 0\n }\n});\n\nfunction isNotEmpty(value) {\n return value !== undefined && value !== null && value !== '';\n}\n\nexport default function DirectDelivery(props) {\n const history = useHistory();\n\n const [isDetail, setIsDetail] = useState(false);\n const [id, setId] = useState();\n const [permissionLevel, setPermissionLevel] = useState(props.nivel);\n const [voidDeliveryTransactions, setVoidDeliveryTransactions] = useState(props.voidDeliveryTransactions);\n const [approveDelivery, setApproveDelivery] = useState(props.approveDelivery);\n const [directDeliveryPayload, setDirectDeliveryPayload] = useState({\n header: {},\n detail: [],\n movEstatusLog: []\n });\n\n const [paqueteria, setPaqueteria] = useState([]);\n const [almacenes, setAlmacenes] = useState([]);\n const [contextMenuItems, setContextMenuItems] = useState([]);\n const [autoExpandAll, setAutoExpandAll] = useState(true);\n\n // setValue para el control tab\n const [value, setValue] = React.useState(0);\n\n const [visibleLoadPanel, setVisibleLoadPanel] = useState(false);\n\n const [visibleToast, setVisibleToast] = useState(false);\n const [messageToast, setMessageToast] = useState('');\n const [typeToast, setTypeToast] = useState('success');\n\n const [activateUpdateForm, setActivateUpdateForm] = useState(false);\n const [activateUpdateGrid, setActivateUpdateGrid] = useState(false);\n const [activateCustomSalesOrderField, setActivateCustomSalesOrderField] = useState(false);\n const [activateCustomWarehouseField, setActivateCustomWarehouseField] = useState(false);\n const [acceptCustomValues, setAcceptCustomValue] = useState(false);\n const [activateSaveButton, setActivateSaveButton] = useState(false);\n const [activateDeleteButton, setActivateDeleteButton] = useState(false);\n const [activateCancelButton, setActivateCancelButton] = useState(false);\n const [activateConfirmButton, setActivateConfirmButton] = useState(false);\n const [activateApproveButton, setActivateApproveButton] = useState(false);\n const [activateGetItemButton, setActivateGetItemButton] = useState(false);\n const [activateSelectItemButton, setActivateSelectItemButton] = useState(false);\n const [activatePDFButton, setActivatePDFButton] = useState(false);\n const [activateCantidadButton, setActivateCantidadButton] = useState(false);\n const [activateCantidad2Button, setActivateCantidad2Button] = useState(false);\n const [activateAttachments, setActivateAttachments] = useState(false);\n const [activatePaqueteria, setActivatePaqueteria] = useState(false);\n\n //Ref para el grid Articulos\n const [gridArticulosRef, setGridArticulosRef] = useState(React.createRef());\n\n //Ref para el form\n const [formDatosGeneralesRef, setFormDatosGeneralesRef] = useState(React.createRef());\n\n const [attachments, setAttachments] = useState([]);\n\n const handleChange = (event, newValue) => {\n setValue(newValue);\n };\n\n const filterBuilderPopupPosition = {\n of: window,\n at: 'top',\n my: 'top',\n offset: { y: 10 },\n };\n\n const allowedPageSizes = [5, 10, 15, 20, 'all'];\n\n const exportFormats = ['xlsx'];\n\n function getOrderDay(rowData) {\n return (new Date(rowData.OrderDate)).getDay();\n }\n\n const filterBuilder = {\n customOperations: [{\n name: 'weekends',\n caption: 'Weekends',\n dataTypes: ['date'],\n icon: 'check',\n hasValue: false,\n calculateFilterExpression: () => [[getOrderDay, '=', 0], 'or', [getOrderDay, '=', 6]],\n }],\n allowHierarchicalFields: true,\n };\n\n const filterValue = [['Estatus', '=', 'Sin Afectar']];\n\n //Ref para el grid Tablero de Control\n const [gridTableroRef, setGridTableroRef] = useState(React.createRef());\n\n function onAutoExpandAllChanged() {\n setAutoExpandAll(!autoExpandAll)\n };\n\n async function getDirectDeliveryRecords(sqlFilter) {\n try {\n let apiName = 'AdminSC';\n let path = '/procesaentregadirecta';\n\n let myInit = {\n headers: {\n 'Content-Type': 'application/json',\n Authorization: `${(await Auth.currentSession()).getAccessToken().getJwtToken()}`\n },\n queryStringParameters: {\n action: 'list',\n sqlFilter: sqlFilter,\n salesAccess: props.salesAccess,\n sucursal: props.sucursal,\n usuario: props.usuario,\n username: JSON.parse(JSON.stringify(await Auth.currentAuthenticatedUser())).username\n }\n }\n\n var directDeliveryGet = await API.get(apiName, path, myInit);\n }\n catch (e) {\n if (e === 'No current user') {\n history.push('/');\n\n window.location.reload();\n }\n }\n\n return directDeliveryGet;\n }\n\n const store = new CustomStore({\n key: 'ID',\n load(loadOptions) {\n let sqlFilter = '(';\n [\n 'filter'\n ].forEach((i) => {\n if (i in loadOptions && isNotEmpty(loadOptions[i])) {\n var filters = loadOptions[i];\n\n var filtersLength = filters.length;\n\n for (var i = 0; i <= filtersLength; i++) {\n var singleFilter = filters[i];\n var singleFilterType = typeof singleFilter;\n var singleFilterIsArray = Array.isArray(singleFilter);\n var singleFilterIsDate = singleFilter instanceof Date;\n\n if (singleFilter === 'NULL') {\n singleFilter = '0';\n }\n\n if (singleFilterType.toString() === 'object' && singleFilterIsArray) {\n sqlFilter += '(';\n\n var subFiltersLength = singleFilter.length;\n\n for (var i2 = 0; i2 <= subFiltersLength; i2++) {\n var singleSubFilter = singleFilter[i2];\n var singleSubFilterType = typeof singleSubFilter;\n var singleSubFilterIsArray = Array.isArray(singleSubFilter);\n var singleSubFilterIsDate = singleSubFilter instanceof Date\n\n if (singleSubFilter === 'NULL') {\n singleSubFilter = '0';\n }\n\n if (singleSubFilterType.toString() === 'object' && singleSubFilterIsArray) {\n sqlFilter += '(';\n\n var subSubFiltersLength = singleSubFilter.length;\n\n for (var i3 = 0; i3 <= subSubFiltersLength; i3++) {\n var singleSubSubFilter = singleSubFilter[i3];\n var singleSubSubFilterType = typeof singleSubSubFilter;\n var singleSubSubFilterIsArray = Array.isArray(singleSubSubFilter);\n var singleSubSubFilterIsDate = singleSubSubFilter instanceof Date\n\n if (singleSubSubFilter === 'NULL') {\n singleSubSubFilter = '0';\n }\n\n if (singleSubSubFilterType.toString() === 'object' && singleSubSubFilterIsArray) {\n sqlFilter += '(';\n\n var subSubSubFiltersLength = singleSubSubFilter.length;\n\n for (var i4 = 0; i4 <= subSubSubFiltersLength; i4++) {\n var singleSubSubSubFilter = singleSubSubFilter[i4];\n var singleSubSubSubFilterType = typeof singleSubSubSubFilter;\n var singleSubSubSubFilterIsArray = Array.isArray(singleSubSubSubFilter);\n var singleSubSubSubFilterIsDate = singleSubSubSubFilter instanceof Date\n\n if (singleSubSubSubFilter === 'NULL') {\n singleSubSubSubFilter = '0';\n }\n\n if (singleSubSubSubFilterType.toString() === 'object' && singleSubSubSubFilterIsArray) {\n sqlFilter += '(';\n\n var subSubSubSubFiltersLength = singleSubSubSubFilter.length;\n\n for (var i5 = 0; i5 <= subSubSubSubFiltersLength; i5++) {\n var singleSubSubSubSubFilter = singleSubSubSubFilter[i5];\n var singleSubSubSubSubFilterType = typeof singleSubSubSubSubFilter;\n var singleSubSubSubSubFilterIsArray = Array.isArray(singleSubSubSubSubFilter);\n var singleSubSubSubSubFilterIsDate = singleSubSubSubSubFilter instanceof Date\n\n if (singleSubSubSubSubFilter === 'NULL') {\n singleSubSubSubSubFilter = '0';\n }\n\n if (singleSubSubSubSubFilterType.toString() === 'string') {\n if (singleSubSubSubSubFilter === 'contains') {\n filters[i][i2][i3][i4][i5] = 'LIKE';\n singleSubSubSubSubFilter = 'LIKE';\n\n filters[i][i2][i3][i4][i5 + 1] = '\\'%' + filters[i][i2][i3][i4][i5 + 1] + '%\\'';\n }\n else if (singleSubSubSubSubFilter === 'notcontains') {\n filters[i][i2][i3][i4][i5] = 'NOT LIKE';\n singleSubSubSubSubFilter = 'NOT LIKE';\n\n filters[i][i2][i3][i4][i5 + 1] = '\\'%' + filters[i][i2][i3][i4][i5 + 1] + '%\\'';\n }\n else if (singleSubSubSubSubFilter === 'startswith') {\n filters[i][i2][i3][i4][i5] = 'LIKE';\n singleSubSubSubSubFilter = 'LIKE';\n\n filters[i][i2][i3][i4][i5 + 1] = '\\'' + filters[i][i2][i3][i4][i5 + 1] + '%\\'';\n }\n else if (singleSubSubSubSubFilter === 'endswith') {\n filters[i][i2][i3][i4][i5] = 'LIKE';\n singleSubSubSubSubFilter = 'LIKE';\n\n filters[i][i2][i3][i4][i5 + 1] = '\\'%' + filters[i][i2][i3][i4][i5 + 1] + '\\'';\n }\n else if (singleSubSubSubSubFilter === '=' || singleSubSubSubSubFilter === '<>' || singleSubSubSubSubFilter === '>' || singleSubSubSubSubFilter === '>=' || singleSubSubSubSubFilter === '<' || singleSubSubSubSubFilter === '<=') {\n if (!filters[i][i2][i3][i4][i5 + 1])\n filters[i][i2][i3][i4][i5 + 1] = 'NULL';\n else if (typeof filters[i][i2][i3][i4][i5 + 1] === 'string') {\n filters[i][i2][i3][i4][i5 + 1] = '\\'' + filters[i][i2][i3][i4][i5 + 1] + '\\'';\n }\n }\n else if (singleSubSubSubSubFilter === '!') {\n filters[i][i2][i3][i4][i5] = 'NOT';\n singleSubSubSubSubFilter = 'NOT';\n }\n\n sqlFilter += ' ' + singleSubSubSubSubFilter + ' ';\n }\n else if (singleSubSubSubSubFilterType.toString() === 'object' && singleSubSubSubSubFilterIsDate) {\n sqlFilter += ' \\'' + singleSubSubSubSubFilter.toISOString().split('T')[0] + '\\' ';\n }\n else if (singleSubSubSubSubFilterType.toString() === 'number') {\n sqlFilter += ' ' + singleSubSubSubSubFilter.toString() + ' ';\n }\n else if (singleSubSubSubSubFilterType.toString() === 'boolean') {\n if (singleSubSubSubSubFilter.toString() === 'true')\n sqlFilter += '1 ';\n else if (singleSubSubSubSubFilter.toString() === 'false' || singleSubSubSubSubFilter === null || singleSubSubSubSubFilter === undefined)\n sqlFilter += '0 ';\n }\n }\n }\n else if (singleSubSubSubFilterType.toString() === 'string') {\n if (singleSubSubSubFilter === 'contains') {\n filters[i][i2][i3][i4] = 'LIKE';\n singleSubSubSubFilter = 'LIKE';\n\n filters[i][i2][i3][i4 + 1] = '\\'%' + filters[i][i2][i3][i4 + 1] + '%\\'';\n }\n else if (singleSubSubSubFilter === 'notcontains') {\n filters[i][i2][i3][i4] = 'NOT LIKE';\n singleSubSubSubFilter = 'NOT LIKE';\n\n filters[i][i2][i3][i4 + 1] = '\\'%' + filters[i][i2][i3][i4 + 1] + '%\\'';\n }\n else if (singleSubSubSubFilter === 'startswith') {\n filters[i][i2][i3][i4] = 'LIKE';\n singleSubSubSubFilter = 'LIKE';\n\n filters[i][i2][i3][i4 + 1] = '\\'' + filters[i][i2][i3][i4 + 1] + '%\\'';\n }\n else if (singleSubSubSubFilter === 'endswith') {\n filters[i][i2][i3][i4] = 'LIKE';\n singleSubSubSubFilter = 'LIKE';\n\n filters[i][i2][i3][i4 + 1] = '\\'%' + filters[i][i2][i3][i4 + 1] + '\\'';\n }\n else if (singleSubSubSubFilter === '=' || singleSubSubSubFilter === '<>' || singleSubSubSubFilter === '>' || singleSubSubSubFilter === '>=' || singleSubSubSubFilter === '<' || singleSubSubSubFilter === '<=') {\n if (!filters[i][i2][i3][i4 + 1])\n filters[i][i2][i3][i4 + 1] = 'NULL';\n else if (typeof filters[i][i2][i3][i4 + 1] === 'string') {\n filters[i][i2][i3][i4 + 1] = '\\'' + filters[i][i2][i3][i4 + 1] + '\\'';\n }\n }\n else if (singleSubSubSubFilter === '!') {\n filters[i][i2][i3][i4] = 'NOT';\n singleSubSubSubFilter = 'NOT';\n }\n\n sqlFilter += ' ' + singleSubSubSubFilter + ' ';\n }\n else if (singleSubSubSubFilterType.toString() === 'object' && singleSubSubSubFilterIsDate) {\n sqlFilter += ' \\'' + singleSubSubSubFilter.toISOString().split('T')[0] + '\\' ';\n }\n else if (singleSubSubSubFilterType.toString() === 'number') {\n sqlFilter += ' ' + singleSubSubSubFilter.toString() + ' ';\n }\n else if (singleSubSubSubFilterType.toString() === 'boolean') {\n if (singleSubSubSubFilter.toString() === 'true')\n sqlFilter += '1 ';\n else if (singleSubSubSubFilter.toString() === 'false' || singleSubSubSubFilter === null || singleSubSubSubFilter === undefined)\n sqlFilter += '0 ';\n }\n }\n\n sqlFilter += ')';\n }\n else if (singleSubSubFilterType.toString() === 'string') {\n if (singleSubSubFilter === 'contains') {\n filters[i][i2][i3] = 'LIKE';\n singleSubSubFilter = 'LIKE';\n\n filters[i][i2][i3 + 1] = '\\'%' + filters[i][i2][i3 + 1] + '%\\'';\n }\n else if (singleSubSubFilter === 'notcontains') {\n filters[i][i2][i3] = 'NOT LIKE';\n singleSubSubFilter = 'NOT LIKE';\n\n filters[i][i2][i3 + 1] = '\\'%' + filters[i][i2][i3 + 1] + '%\\'';\n }\n else if (singleSubSubFilter === 'startswith') {\n filters[i][i2][i3] = 'LIKE';\n singleSubSubFilter = 'LIKE';\n\n filters[i][i2][i3 + 1] = '\\'' + filters[i][i2][i3 + 1] + '%\\'';\n }\n else if (singleSubSubFilter === 'endswith') {\n filters[i][i2][i3] = 'LIKE';\n singleSubSubFilter = 'LIKE';\n\n filters[i][i2][i3 + 1] = '\\'%' + filters[i][i2][i3 + 1] + '\\'';\n }\n else if (singleSubSubFilter === '=' || singleSubSubFilter === '<>' || singleSubSubFilter === '>' || singleSubSubFilter === '>=' || singleSubSubFilter === '<' || singleSubSubFilter === '<=') {\n if (!filters[i][i2][i3 + 1])\n filters[i][i2][i3 + 1] = 'NULL';\n else if (typeof filters[i][i2][i3 + 1] === 'string') {\n filters[i][i2][i3 + 1] = '\\'' + filters[i][i2][i3 + 1] + '\\'';\n }\n }\n else if (singleSubSubFilter === '!') {\n filters[i][i2][i3] = 'NOT';\n singleSubSubFilter = 'NOT';\n }\n sqlFilter += ' ' + singleSubSubFilter + ' ';\n }\n else if (singleSubSubFilterType.toString() === 'object' && singleSubSubFilterIsDate) {\n sqlFilter += ' \\'' + singleSubSubFilter.toISOString().split('T')[0] + '\\' ';\n }\n else if (singleSubSubFilterType.toString() === 'number') {\n sqlFilter += ' ' + singleSubSubFilter.toString() + ' ';\n }\n else if (singleSubSubFilterType.toString() === 'boolean') {\n if (singleSubSubFilter.toString() === 'true')\n sqlFilter += '1 ';\n else if (singleSubSubFilter.toString() === 'false' || singleSubSubFilter === null || singleSubSubFilter === undefined)\n sqlFilter += '0 ';\n }\n }\n\n sqlFilter += ')';\n }\n else if (singleSubFilterType.toString() === 'string') {\n if (singleSubFilter === 'contains') {\n filters[i][i2] = 'LIKE';\n singleSubFilter = 'LIKE';\n\n filters[i][i2 + 1] = '\\'%' + filters[i][i2 + 1] + '%\\'';\n }\n else if (singleSubFilter === 'notcontains') {\n filters[i][i2] = 'NOT LIKE';\n singleSubFilter = 'NOT LIKE';\n\n filters[i][i2 + 1] = '\\'%' + filters[i][i2 + 1] + '%\\'';\n }\n else if (singleSubFilter === 'startswith') {\n filters[i][i2] = 'LIKE';\n singleSubFilter = 'LIKE';\n\n filters[i][i2 + 1] = '\\'' + filters[i][i2 + 1] + '%\\'';\n }\n else if (singleSubFilter === 'endswith') {\n filters[i][i2] = 'LIKE';\n singleSubFilter = 'LIKE';\n\n filters[i][i2 + 1] = '\\'%' + filters[i][i2 + 1] + '\\'';\n }\n else if (singleSubFilter === '=' || singleSubFilter === '<>' || singleSubFilter === '>' || singleSubFilter === '>=' || singleSubFilter === '<' || singleSubFilter === '<=') {\n if (!filters[i][i2 + 1])\n filters[i][i2 + 1] = 'NULL';\n else if (typeof filters[i][i2 + 1] === 'string') {\n filters[i][i2 + 1] = '\\'' + filters[i][i2 + 1] + '\\'';\n }\n }\n else if (singleSubFilter === '!') {\n filters[i][i2] = 'NOT';\n singleSubFilter = 'NOT';\n }\n sqlFilter += ' ' + singleSubFilter + ' ';\n }\n else if (singleSubFilterType.toString() === 'object' && singleSubFilterIsDate) {\n sqlFilter += ' \\'' + singleSubFilter.toISOString().split('T')[0] + '\\' ';\n }\n else if (singleSubFilterType.toString() === 'number') {\n sqlFilter += ' ' + singleSubFilter.toString() + ' ';\n }\n else if (singleSubFilterType.toString() === 'boolean') {\n if (singleSubFilter.toString() === 'true')\n sqlFilter += '1 ';\n else if (singleSubFilter.toString() === 'false' || singleSubFilter === null || singleSubFilter === undefined)\n sqlFilter += '0 ';\n }\n }\n\n sqlFilter += ')';\n }\n else if (singleFilterType.toString() === 'string') {\n if (singleFilter === 'contains') {\n filters[i] = 'LIKE';\n singleFilter = 'LIKE';\n\n filters[i + 1] = '\\'%' + filters[i + 1] + '%\\'';\n }\n else if (singleFilter === 'notcontains') {\n filters[i] = 'NOT LIKE';\n singleFilter = 'NOT LIKE';\n\n filters[i + 1] = '\\'%' + filters[i + 1] + '%\\'';\n }\n else if (singleFilter === 'startswith') {\n filters[i] = 'LIKE';\n singleFilter = 'LIKE';\n\n filters[i + 1] = '\\'' + filters[i + 1] + '%\\'';\n }\n else if (singleFilter === 'endswith') {\n filters[i] = 'LIKE';\n singleFilter = 'LIKE';\n\n filters[i + 1] = '\\'%' + filters[i + 1] + '\\'';\n }\n else if (singleFilter === '=' || singleFilter === '<>' || singleFilter === '>' || singleFilter === '>=' || singleFilter === '<' || singleFilter === '<=') {\n if (!filters[i + 1])\n filters[i + 1] = 'NULL';\n else if (typeof filters[i + 1] === 'string') {\n filters[i + 1] = '\\'' + filters[i + 1] + '\\'';\n }\n }\n else if (singleFilter === '!') {\n filters[i] = 'NOT';\n singleFilter = 'NOT';\n }\n sqlFilter += ' ' + singleFilter + ' ';\n }\n else if (singleFilterType.toString() === 'object' && singleFilterIsDate) {\n sqlFilter += ' \\'' + singleFilter.toISOString().split('T')[0] + '\\' ';\n }\n else if (singleFilterType.toString() === 'number') {\n sqlFilter += ' ' + singleFilter.toString() + ' ';\n }\n else if (singleFilterType.toString() === 'boolean') {\n if (singleFilter.toString() === 'true')\n sqlFilter += '1 ';\n else if (singleFilter.toString() === 'false' || singleFilter === null || singleFilter === undefined)\n sqlFilter += '0 ';\n }\n }\n\n sqlFilter += ')';\n }\n });\n\n async function getRecords() {\n if (sqlFilter === '(')\n sqlFilter = '';\n\n var records = await getDirectDeliveryRecords(sqlFilter);\n return {\n data: records,\n totalCount: records.length\n };\n }\n\n return getRecords()\n .then(function (result) {\n return result;\n })\n .catch(() => { throw new Error('Data Loading Error'); });\n },\n });\n\n var fechaEmisionEditorOptions = { width: '100%', readOnly: true };\n var movimientoEditorOptions = { width: '100%', readOnly: true };\n var datosClienteEditorOptions = { width: '100%', readOnly: true };\n var estatusEditorOptions = { width: '100%', readOnly: true };\n var autorizacionEditorOptions = { width: '100%', readOnly: true };\n var numeroGuiaEditorOptions = { width: '100%' };\n\n const storePedido = new CustomStore({\n key: 'value',\n load(loadOptions) {\n let sqlFilter = '';\n [\n 'filter'\n ].forEach((i) => {\n sqlFilter = loadOptions.searchValue;\n });\n\n async function getRecords() {\n var records = await getPedidos(sqlFilter);\n\n return {\n data: records,\n totalCount: records.length\n };\n }\n\n return getRecords()\n .then(function (result) {\n return result;\n })\n .catch(() => { throw new Error('Data Loading Error'); });\n },\n byKey: (key) => {\n return {\n name: key,\n value: key\n };\n }\n });\n\n //Opciones del campo Pedido\n try {\n var pedidoEditorOptions = {\n dataSource: storePedido,\n displayExpr: 'name',\n valueExpr: 'value',\n searchEnabled: true,\n showClearButton: true,\n acceptCustomValue: !activateCustomSalesOrderField,\n value: (directDeliveryPayload.header.Pedido ? directDeliveryPayload.header.Pedido : ''),\n disabled: !activateCustomSalesOrderField,\n searchTimeout: 1500,\n width: '100%',\n clearButtonText: 'Cerrar',\n noDataText: 'No se encontraron resultados'\n };\n }\n catch (e) {\n var pedidoEditorOptions = {\n dataSource: storePedido,\n displayExpr: 'name',\n valueExpr: 'value',\n searchEnabled: true,\n acceptCustomValue: acceptCustomValues,\n value: '',\n width: '100%'\n };\n }\n\n var almacenDataSource = useMemo(() => {\n return new DataSource({\n paginate: true,\n store: {\n type: \"array\",\n key: \"Almacen\",\n data: almacenes\n }\n });\n }, [almacenes]);\n\n var paqueteriaDataSource = useMemo(() => {\n return new DataSource({\n paginate: true,\n store: {\n type: \"array\",\n key: \"Paqueteria\",\n data: paqueteria\n }\n });\n }, [paqueteria]);\n\n //Opciones del campo Almacen\n try {\n var almacenEditorOptions = useMemo(() => {\n return {\n dataSource: almacenDataSource,\n displayExpr: 'name',\n valueExpr: 'value',\n searchEnabled: true,\n acceptCustomValue: !activateCustomWarehouseField,\n value: (directDeliveryPayload.header.Almacen ? directDeliveryPayload.header.Almacen : ''),\n width: '100%'\n };\n }, [activateCustomWarehouseField, almacenDataSource, directDeliveryPayload.header.Almacen]);\n }\n catch (e) {\n var almacenEditorOptions = {\n dataSource: almacenDataSource,\n displayExpr: 'name',\n valueExpr: 'value',\n searchEnabled: true,\n acceptCustomValue: acceptCustomValues,\n value: '',\n width: '100%'\n };\n }\n\n //Opciones del campo Paqueteria\n try {\n var paqueteriaEditorOptions = {\n dataSource: paqueteriaDataSource,\n displayExpr: 'name',\n valueExpr: 'value',\n searchEnabled: true,\n acceptCustomValue: !acceptCustomValues,\n value: (directDeliveryPayload.header.Paqueteria ? directDeliveryPayload.header.Paqueteria : ''),\n width: '100%'\n };\n }\n catch (e) {\n var paqueteriaEditorOptions = {\n dataSource: paqueteriaDataSource,\n displayExpr: 'name',\n valueExpr: 'value',\n searchEnabled: true,\n acceptCustomValue: acceptCustomValues,\n value: '',\n width: '100%'\n };\n }\n\n async function uploadChunk(file, uploadInfo) {\n try {\n var responseS3 = await Storage.put(\"/prog/\" + id + \"/\" + file.name, uploadInfo.chunkBlob, {\n contentType: file.type,\n ACL: 'public-read'\n });\n\n //Obtenemos el nombre del bucket\n let bucketName = Storage._config.AWSS3.bucket;\n\n\n let apiName = 'AdminSC';\n let path = '/uploadattachment';\n\n let myInit = {\n headers: {\n 'Content-Type': 'application/json',\n Authorization: `${(await Auth.currentSession()).getAccessToken().getJwtToken()}`\n },\n body: {\n action: 'register',\n bucketName: bucketName,\n type: 'prog',\n id: id,\n Key: \"/prog/\" + id + \"/\" + file.name,\n fileName: file.name,\n username: JSON.parse(JSON.stringify(await Auth.currentAuthenticatedUser())).username\n }\n }\n\n var attachmentsResult = await API.post(apiName, path, myInit);\n\n //Obtenemos los attachments\n var attachmentsGet = await Storage.list(\"/prog/\" + id);\n var attachmentsAux = [];\n\n for (var attachmentsGetIndex in attachmentsGet) {\n var singleAttachmentsGet = attachmentsGet[attachmentsGetIndex];\n\n var singleAttachment = {\n name: singleAttachmentsGet.key.split('/').pop(),\n isDirectory: false,\n size: singleAttachmentsGet.size,\n };\n\n attachmentsAux.push(singleAttachment);\n }\n\n setAttachments(attachmentsAux);\n }\n catch (err) {\n console.log(\"Error uploading file:\", err);\n }\n }\n\n async function onAttachmentDeleting(e) {\n var fileName = e.item.key;\n\n //Primero borramos el archivo de S3\n var attachmentsDelete = await Storage.remove(\"/prog/\" + id + \"/\" + fileName);\n\n //Despues borramos el attachment en Intelisis\n let bucketName = Storage._config.AWSS3.bucket;\n\n let apiName = 'AdminSC';\n let path = '/uploadattachment';\n\n let myInit = {\n headers: {\n 'Content-Type': 'application/json',\n Authorization: `${(await Auth.currentSession()).getAccessToken().getJwtToken()}`\n },\n body: {\n action: 'delete',\n bucketName: bucketName,\n type: 'prog',\n id: id,\n Key: \"/prog/\" + id + \"/\" + fileName,\n fileName: fileName,\n username: JSON.parse(JSON.stringify(await Auth.currentAuthenticatedUser())).username\n }\n }\n\n var attachmentsResult = await API.post(apiName, path, myInit);\n\n //Finalmente sincronizamos el state\n var attachmentsGet = await Storage.list(\"/prog/\" + id);\n var attachmentsAux = [];\n\n for (var attachmentsGetIndex in attachmentsGet) {\n var singleAttachmentsGet = attachmentsGet[attachmentsGetIndex];\n\n var singleAttachment = {\n name: singleAttachmentsGet.key.split('/').pop(),\n isDirectory: false,\n size: singleAttachmentsGet.size,\n };\n\n attachmentsAux.push(singleAttachment);\n }\n\n setAttachments(attachmentsAux);\n };\n\n function downloadBlob(blob, filename) {\n const url = URL.createObjectURL(blob);\n const a = document.createElement('a');\n a.href = url;\n a.download = filename || 'download';\n const clickHandler = () => {\n setTimeout(() => {\n URL.revokeObjectURL(url);\n a.removeEventListener('click', clickHandler);\n }, 150);\n };\n\n a.addEventListener('click', clickHandler, false);\n\n a.click();\n\n return a;\n };\n\n async function onItemDownloading(e) {\n e.cancel = true;\n\n const downloadFileResponse = await Storage.get(\"/prog/\" + id + \"/\" + e.item.name, { download: true });\n\n downloadBlob(downloadFileResponse.Body, e.item.name);\n };\n\n function openBlob(blob, filename) {\n const url = URL.createObjectURL(blob);\n\n window.open(url, \"_blank\");\n };\n\n async function onAttachmentOpen(e) {\n const downloadFileResponse = await Storage.get(\"/prog/\" + id + \"/\" + e.file.name, { download: true });\n\n openBlob(downloadFileResponse.Body, e.file.name);\n };\n\n async function getDirectDeliveryPayload(ID) {\n try {\n let apiName = 'AdminSC';\n let path = '/procesaentregadirecta';\n\n let myInit = {\n headers: {\n 'Content-Type': 'application/json',\n Authorization: `${(await Auth.currentSession()).getAccessToken().getJwtToken()}`\n },\n queryStringParameters: {\n ID: ID,\n action: 'payload',\n username: JSON.parse(JSON.stringify(await Auth.currentAuthenticatedUser())).username\n }\n }\n\n var payloadGet = await API.get(apiName, path, myInit);\n\n setDirectDeliveryPayload(payloadGet);\n\n //Obtenemos los attachments\n var attachmentsGet = await Storage.list(\"/prog/\" + ID);\n var attachmentsAux = [];\n\n for (var attachmentsGetIndex in attachmentsGet) {\n var singleAttachmentsGet = attachmentsGet[attachmentsGetIndex];\n\n var singleAttachment = {\n name: singleAttachmentsGet.key.split('/').pop(),\n isDirectory: false,\n size: singleAttachmentsGet.size,\n };\n\n attachmentsAux.push(singleAttachment);\n }\n\n setAttachments(attachmentsAux);\n }\n catch (e) {\n if (e === 'No current user') {\n history.push('/');\n\n window.location.reload();\n }\n }\n\n return payloadGet;\n }\n\n async function fnSCWebEnableTransactionButtons(sucursal) {\n let apiName = 'AdminSC';\n let path = '/getcatalogo';\n\n let myInit = {\n headers: {\n 'Content-Type': 'application/json',\n Authorization: `${(await Auth.currentSession()).getAccessToken().getJwtToken()}`\n },\n queryStringParameters: {\n type: 'fnSCWebEnableTransactionButtons',\n username: JSON.parse(JSON.stringify(await Auth.currentAuthenticatedUser())).username,\n sucursal: sucursal\n }\n }\n\n var permissionGet = await API.get(apiName, path, myInit);\n\n try {\n return permissionGet[0].Permission;\n }\n catch (e) {\n return false;\n }\n }\n\n function editDirectDelivery(data) {\n return (\n <Link to={`/DirectDelivery/${data.data.ID}`}>\n <button class=\"bg-blue-500 hover:bg-blue-700 text-white py-1 px-3 rounded\" onClick={() => editButton(data.data.ID)}><FontAwesomeIcon icon={permissionLevel === 'Editar' ? faPencilAlt : faGlasses} /> {permissionLevel === 'Editar' ? 'Editar' : 'Ver'}</button>\n </Link>\n )\n }\n\n async function editButton(ID) {\n try {\n if (!window.event.metaKey && !window.event.ctrlKey) {\n setVisibleLoadPanel(true);\n\n setIsDetail(true);\n setId(ID);\n\n var payload = await getDirectDeliveryPayload(ID);\n\n if (payload.header.Pedido) {\n setActivateCustomSalesOrderField(false);\n }\n else {\n setActivateCustomSalesOrderField(true);\n }\n\n if (permissionLevel === 'Editar') {\n if (payload.header.Estatus === 'Sin Afectar') {\n setActivateUpdateForm(true);\n setActivateUpdateGrid(true);\n setAcceptCustomValue(false);\n setActivateSaveButton(true);\n setActivateDeleteButton(false);\n setActivateConfirmButton(true);\n setActivateApproveButton(false);\n setActivateGetItemButton(true);\n setActivateSelectItemButton(true);\n setActivatePDFButton(true);\n setActivateCustomWarehouseField(false);\n setActivateCancelButton(true);\n setActivateCantidadButton(true);\n setActivateCantidad2Button(false);\n setActivateAttachments(true);\n\n setActivatePaqueteria(payload.header.EntregaPaqueteria);\n\n setContextMenuItems([\n { text: 'Seleccionar Todo', icon: 'selectall' },\n { text: 'Eliminar Selección', icon: 'unselectall' }\n ]);\n }\n else if (payload.header.Estatus === 'Pendiente') {\n var enableButtons = await fnSCWebEnableTransactionButtons(payload.header.Sucursal);\n\n setActivateUpdateForm(false);\n setActivateUpdateGrid(enableButtons);\n setAcceptCustomValue(true);\n setActivateSaveButton(enableButtons);\n setActivateDeleteButton(false);\n setActivateConfirmButton(enableButtons);\n\n if (payload.header.RequiereAutorizacion === true && payload.header.Autorizado === false && approveDelivery)\n setActivateApproveButton(true);\n else\n setActivateApproveButton(false);\n\n setActivateGetItemButton(false);\n setActivateSelectItemButton(enableButtons);\n setActivatePDFButton(true);\n setActivateCustomWarehouseField(true);\n setActivateCancelButton(enableButtons);\n setActivateCantidadButton(false);\n setActivateCantidad2Button(true);\n setActivateAttachments(enableButtons);\n\n setActivatePaqueteria(payload.header.EntregaPaqueteria);\n\n if (enableButtons)\n setContextMenuItems([\n { text: 'Seleccionar Todo', icon: 'selectall' },\n { text: 'Eliminar Selección', icon: 'unselectall' }\n ]);\n else\n setContextMenuItems([]);\n }\n else if (payload.header.Estatus === 'Cancelado') {\n setActivateUpdateForm(false);\n setActivateUpdateGrid(false);\n setAcceptCustomValue(true);\n setActivateSaveButton(false);\n setActivateDeleteButton(false);\n setActivateConfirmButton(false);\n setActivateApproveButton(false);\n setActivateGetItemButton(false);\n setActivateSelectItemButton(false);\n setActivatePDFButton(true);\n setActivateCustomWarehouseField(true);\n setActivateCancelButton(false);\n setActivateCantidadButton(false);\n setActivateCantidad2Button(false);\n setActivateAttachments(false);\n\n setContextMenuItems([]);\n\n setActivatePaqueteria(payload.header.EntregaPaqueteria);\n }\n else if (payload.header.Estatus === 'Concluido') {\n setActivateUpdateForm(false);\n setActivateUpdateGrid(false);\n setAcceptCustomValue(true);\n setActivateSaveButton(false);\n setActivateDeleteButton(false);\n setActivateConfirmButton(false);\n setActivateApproveButton(false);\n setActivateGetItemButton(false);\n setActivateSelectItemButton(false);\n setActivatePDFButton(true);\n setActivateCustomWarehouseField(true);\n setActivateCancelButton(voidDeliveryTransactions);\n setActivateCantidadButton(false);\n setActivateCantidad2Button(false);\n setActivateAttachments(false);\n\n setContextMenuItems([]);\n\n setActivatePaqueteria(payload.header.EntregaPaqueteria);\n }\n }\n else if (permissionLevel === 'Ver') {\n setActivateUpdateForm(false);\n setActivateUpdateGrid(false);\n setAcceptCustomValue(true);\n setActivateSaveButton(false);\n setActivateDeleteButton(false);\n setActivateConfirmButton(false);\n setActivateGetItemButton(false);\n setActivateSelectItemButton(false);\n setActivatePDFButton(true);\n setActivateCustomWarehouseField(true);\n setActivateCancelButton(false);\n setActivateCantidadButton(false);\n setActivateCantidad2Button(false);\n setActivateAttachments(false);\n\n setContextMenuItems([]);\n\n setActivatePaqueteria(payload.header.EntregaPaqueteria);\n }\n\n setVisibleLoadPanel(false);\n }\n }\n catch (e) {\n setVisibleLoadPanel(false);\n\n if (!ID || ID === 'undefined') {\n newButton();\n }\n }\n };\n\n async function cancelEditButton() {\n setIsDetail(false);\n };\n\n async function saveButton() {\n try {\n if (directDeliveryPayload.header.Estatus === 'Sin Afectar') {\n if (!directDeliveryPayload.header.Pedido || directDeliveryPayload.header.Pedido === '') {\n setVisibleToast(true);\n setMessageToast('Falta especificar el Pedido')\n setTypeToast('error');\n return;\n }\n if (!directDeliveryPayload.header.Almacen || directDeliveryPayload.header.Almacen === '') {\n setVisibleToast(true);\n setMessageToast('Falta especificar el Almacén')\n setTypeToast('error');\n return;\n }\n }\n\n setVisibleLoadPanel(true);\n\n var ID = directDeliveryPayload.header.ID;\n\n //Guardamos los cambios del grid\n if (gridArticulosRef.current) {\n var gridArticulos = gridArticulosRef.current.instance();\n\n gridArticulos.saveEditData();\n }\n\n //Despues enviamos todo al backend\n let apiName = 'AdminSC';\n let path = '/procesaentregadirecta';\n\n let myInit = {\n headers: {\n 'Content-Type': 'application/json',\n Authorization: `${(await Auth.currentSession()).getAccessToken().getJwtToken()}`\n },\n body: {\n ID: ID,\n payload: directDeliveryPayload,\n action: 'saveChanges',\n username: JSON.parse(JSON.stringify(await Auth.currentAuthenticatedUser())).username,\n usuario: props.usuario,\n sucursal: props.sucursal,\n s3Bucket: Storage._config.AWSS3.bucket\n }\n }\n\n var payloadPost = await API.post(apiName, path, myInit);\n\n if (payloadPost.ok === 'true') {\n if (!ID) {\n setVisibleToast(true);\n setMessageToast('Se creó la Entrega Directa con éxito');\n setTypeToast('success')\n\n ID = payloadPost.newID;\n\n editButton(ID);\n\n history.push('/DirectDelivery/' + ID.toString());\n }\n else {\n setVisibleToast(true);\n setMessageToast('Se actualizó la Entrega Directa con éxito');\n setTypeToast('success')\n }\n }\n else if (payloadPost.ok === 'false') {\n setVisibleToast(true);\n setMessageToast(payloadPost.message);\n setTypeToast('error')\n }\n\n editButton(ID);\n\n setVisibleLoadPanel(false);\n }\n catch (e) {\n setVisibleLoadPanel(false);\n\n if (e === 'No current user') {\n history.push('/');\n\n window.location.reload();\n }\n }\n };\n\n async function approveButton() {\n try {\n\n setVisibleLoadPanel(true);\n\n var ID = directDeliveryPayload.header.ID;\n\n //Despues enviamos todo al backend\n let apiName = 'AdminSC';\n let path = '/procesaentregadirecta';\n\n let myInit = {\n headers: {\n 'Content-Type': 'application/json',\n Authorization: `${(await Auth.currentSession()).getAccessToken().getJwtToken()}`\n },\n body: {\n ID: ID,\n payload: directDeliveryPayload,\n action: 'approve',\n username: JSON.parse(JSON.stringify(await Auth.currentAuthenticatedUser())).username,\n usuario: props.usuario,\n sucursal: props.sucursal\n }\n }\n\n var payloadPost = await API.post(apiName, path, myInit);\n\n if (payloadPost.ok === 'true') {\n setVisibleToast(true);\n setMessageToast('Entrega Directa Autorizada');\n setTypeToast('success')\n }\n else if (payloadPost.ok === 'false') {\n setVisibleToast(true);\n setMessageToast(payloadPost.message);\n setTypeToast('error')\n }\n\n editButton(ID);\n\n setVisibleLoadPanel(false);\n }\n catch (e) {\n setVisibleLoadPanel(false);\n\n if (e === 'No current user') {\n history.push('/');\n\n window.location.reload();\n }\n }\n };\n\n async function confirmButton() {\n var ID = directDeliveryPayload.header.ID;\n\n try {\n if (directDeliveryPayload.header.Estatus === 'Sin Afectar') {\n if (!directDeliveryPayload.header.Pedido || directDeliveryPayload.header.Pedido === '') {\n setVisibleToast(true);\n setMessageToast('Falta especificar el Pedido')\n setTypeToast('error');\n return;\n }\n if (!directDeliveryPayload.header.Almacen || directDeliveryPayload.header.Almacen === '') {\n setVisibleToast(true);\n setMessageToast('Falta especificar el Almacén')\n setTypeToast('error');\n return;\n }\n if (ID && directDeliveryPayload.header.EntregaPaqueteria && (!directDeliveryPayload.header.Paqueteria || directDeliveryPayload.header.Paqueteria === '')) {\n setVisibleToast(true);\n setMessageToast('Falta especificar la Paquetería')\n setTypeToast('error');\n return;\n }\n if (ID && directDeliveryPayload.header.EntregaPaqueteria && (!directDeliveryPayload.header.NumeroGuia || directDeliveryPayload.header.NumeroGuia === '')) {\n setVisibleToast(true);\n setMessageToast('Falta especificar el Número de Guía')\n setTypeToast('error');\n return;\n }\n }\n\n setVisibleLoadPanel(true);\n\n //Guardamos los cambios del grid\n if (gridArticulosRef.current) {\n var gridArticulos = gridArticulosRef.current.instance();\n\n gridArticulos.saveEditData();\n }\n\n //Despues enviamos todo al backend\n let apiName = 'AdminSC';\n let path = '/procesaentregadirecta';\n\n let myInit = {\n headers: {\n 'Content-Type': 'application/json',\n Authorization: `${(await Auth.currentSession()).getAccessToken().getJwtToken()}`\n },\n body: {\n ID: ID,\n payload: directDeliveryPayload,\n action: 'apply',\n username: JSON.parse(JSON.stringify(await Auth.currentAuthenticatedUser())).username,\n usuario: props.usuario,\n sucursal: props.sucursal\n }\n }\n\n var payloadPost = await API.post(apiName, path, myInit);\n\n if (payloadPost.ok === 'true') {\n setVisibleToast(true);\n setMessageToast('Se afectó la Entrega Directa con éxito');\n setTypeToast('success')\n }\n else if (payloadPost.ok === 'false') {\n setVisibleToast(true);\n setMessageToast(payloadPost.message);\n setTypeToast('error')\n }\n\n editButton(ID);\n\n setVisibleLoadPanel(false);\n }\n catch (e) {\n setVisibleLoadPanel(false);\n\n if (e === 'No current user') {\n history.push('/');\n\n window.location.reload();\n }\n }\n };\n\n async function getItemsButton() {\n try {\n if (directDeliveryPayload.header.Estatus === 'Sin Afectar') {\n if (!directDeliveryPayload.header.Pedido || directDeliveryPayload.header.Pedido === '') {\n setVisibleToast(true);\n setMessageToast('Falta especificar el Pedido')\n setTypeToast('error');\n return;\n }\n if (!directDeliveryPayload.header.Almacen || directDeliveryPayload.header.Almacen === '') {\n setVisibleToast(true);\n setMessageToast('Falta especificar el Almacén')\n setTypeToast('error');\n return;\n }\n }\n\n setVisibleLoadPanel(true);\n\n var ID = directDeliveryPayload.header.ID;\n\n //Guardamos los cambios del grid\n if (gridArticulosRef.current) {\n var gridArticulos = gridArticulosRef.current.instance();\n\n gridArticulos.saveEditData();\n }\n\n //Despues enviamos todo al backend\n let apiName = 'AdminSC';\n let path = '/procesaentregadirecta';\n\n let myInit = {\n headers: {\n 'Content-Type': 'application/json',\n Authorization: `${(await Auth.currentSession()).getAccessToken().getJwtToken()}`\n },\n body: {\n ID: ID,\n payload: directDeliveryPayload,\n action: 'getItems',\n username: JSON.parse(JSON.stringify(await Auth.currentAuthenticatedUser())).username,\n usuario: props.usuario,\n sucursal: props.sucursal\n }\n }\n\n var payloadPost = await API.post(apiName, path, myInit);\n\n if (payloadPost.ok === 'true') {\n setVisibleToast(true);\n setMessageToast('Artículos actualizados con éxito');\n setTypeToast('success')\n }\n else if (payloadPost.ok === 'false') {\n setVisibleToast(true);\n setMessageToast(payloadPost.message);\n setTypeToast('error')\n }\n\n editButton(ID);\n\n setVisibleLoadPanel(false);\n }\n catch (e) {\n setVisibleLoadPanel(false);\n\n if (e === 'No current user') {\n history.push('/');\n\n window.location.reload();\n }\n }\n };\n\n async function selectAllButton() {\n try {\n if (directDeliveryPayload.header.Estatus === 'Sin Afectar') {\n if (!directDeliveryPayload.header.Pedido || directDeliveryPayload.header.Pedido === '') {\n setVisibleToast(true);\n setMessageToast('Falta especificar el Pedido')\n setTypeToast('error');\n return;\n }\n if (!directDeliveryPayload.header.Almacen || directDeliveryPayload.header.Almacen === '') {\n setVisibleToast(true);\n setMessageToast('Falta especificar el Almacén')\n setTypeToast('error');\n return;\n }\n }\n\n setVisibleLoadPanel(true);\n\n var ID = directDeliveryPayload.header.ID;\n\n //Guardamos los cambios del grid\n if (gridArticulosRef.current) {\n var gridArticulos = gridArticulosRef.current.instance();\n\n gridArticulos.saveEditData();\n }\n\n //Despues enviamos todo al backend\n let apiName = 'AdminSC';\n let path = '/procesaentregadirecta';\n\n let myInit = {\n headers: {\n 'Content-Type': 'application/json',\n Authorization: `${(await Auth.currentSession()).getAccessToken().getJwtToken()}`\n },\n body: {\n ID: ID,\n payload: directDeliveryPayload,\n action: 'selectAll',\n username: JSON.parse(JSON.stringify(await Auth.currentAuthenticatedUser())).username,\n usuario: props.usuario,\n sucursal: props.sucursal\n }\n }\n\n var payloadPost = await API.post(apiName, path, myInit);\n\n if (payloadPost.ok === 'true') {\n setVisibleToast(true);\n setMessageToast('Artículos seleccionados con éxito');\n setTypeToast('success')\n }\n else if (payloadPost.ok === 'false') {\n setVisibleToast(true);\n setMessageToast(payloadPost.message);\n setTypeToast('error')\n }\n\n editButton(ID);\n\n setVisibleLoadPanel(false);\n }\n catch (e) {\n setVisibleLoadPanel(false);\n\n if (e === 'No current user') {\n history.push('/');\n\n window.location.reload();\n }\n }\n };\n\n async function voidButton() {\n try {\n if (!window.confirm('¿Desea cancelar la Entrega Directa?'))\n return;\n\n setVisibleLoadPanel(true);\n\n var ID = directDeliveryPayload.header.ID;\n\n //Guardamos los cambios del grid\n if (gridArticulosRef.current) {\n var gridArticulos = gridArticulosRef.current.instance();\n\n gridArticulos.saveEditData();\n }\n\n //Despues enviamos todo al backend\n let apiName = 'AdminSC';\n let path = '/procesaentregadirecta';\n\n let myInit = {\n headers: {\n 'Content-Type': 'application/json',\n Authorization: `${(await Auth.currentSession()).getAccessToken().getJwtToken()}`\n },\n body: {\n ID: ID,\n payload: directDeliveryPayload,\n action: 'void',\n username: JSON.parse(JSON.stringify(await Auth.currentAuthenticatedUser())).username,\n usuario: props.usuario,\n sucursal: props.sucursal\n }\n }\n\n var payloadPost = await API.post(apiName, path, myInit);\n\n if (payloadPost.ok === 'true') {\n setVisibleToast(true);\n setMessageToast('Se canceló la Entrega Directa');\n setTypeToast('success')\n }\n else if (payloadPost.ok === 'false') {\n setVisibleToast(true);\n setMessageToast(payloadPost.message);\n setTypeToast('error')\n }\n\n editButton(ID);\n\n setVisibleLoadPanel(false);\n }\n catch (e) {\n setVisibleLoadPanel(false);\n\n if (e === 'No current user') {\n history.push('/');\n\n window.location.reload();\n }\n }\n };\n\n async function selectNothingButton() {\n try {\n if (directDeliveryPayload.header.Estatus === 'Sin Afectar') {\n if (!directDeliveryPayload.header.Pedido || directDeliveryPayload.header.Pedido === '') {\n setVisibleToast(true);\n setMessageToast('Falta especificar el Pedido')\n setTypeToast('error');\n return;\n }\n if (!directDeliveryPayload.header.Almacen || directDeliveryPayload.header.Almacen === '') {\n setVisibleToast(true);\n setMessageToast('Falta especificar el Almacén')\n setTypeToast('error');\n return;\n }\n }\n\n setVisibleLoadPanel(true);\n\n var ID = directDeliveryPayload.header.ID;\n\n //Guardamos los cambios del grid\n if (gridArticulosRef.current) {\n var gridArticulos = gridArticulosRef.current.instance();\n\n gridArticulos.saveEditData();\n }\n\n //Despues enviamos todo al backend\n let apiName = 'AdminSC';\n let path = '/procesaentregadirecta';\n\n let myInit = {\n headers: {\n 'Content-Type': 'application/json',\n Authorization: `${(await Auth.currentSession()).getAccessToken().getJwtToken()}`\n },\n body: {\n ID: ID,\n payload: directDeliveryPayload,\n action: 'selectNothing',\n username: JSON.parse(JSON.stringify(await Auth.currentAuthenticatedUser())).username,\n usuario: props.usuario,\n sucursal: props.sucursal\n }\n }\n\n var payloadPost = await API.post(apiName, path, myInit);\n\n if (payloadPost.ok === 'true') {\n setVisibleToast(true);\n setMessageToast('Artículos seleccionados con éxito');\n setTypeToast('success')\n }\n else if (payloadPost.ok === 'false') {\n setVisibleToast(true);\n setMessageToast(payloadPost.message);\n setTypeToast('error')\n }\n\n editButton(ID);\n\n setVisibleLoadPanel(false);\n }\n catch (e) {\n setVisibleLoadPanel(false);\n\n if (e === 'No current user') {\n history.push('/');\n\n window.location.reload();\n }\n }\n };\n\n function refreshButton() {\n if (gridTableroRef.current) {\n var gridTablero = gridTableroRef.current.instance();\n\n gridTablero.refresh();\n }\n }\n\n async function newButton(salesorder) {\n try {\n let apiName = 'AdminSC';\n let path = '/procesaentregadirecta';\n\n let myInit = {\n headers: {\n 'Content-Type': 'application/json',\n Authorization: `${(await Auth.currentSession()).getAccessToken().getJwtToken()}`\n },\n queryStringParameters: {\n action: 'new',\n salesorder: salesorder,\n username: JSON.parse(JSON.stringify(await Auth.currentAuthenticatedUser())).username,\n usuario: props.usuario,\n sucursal: props.sucursal\n }\n };\n\n var payloadNew = await API.get(apiName, path, myInit);\n\n setDirectDeliveryPayload(payloadNew);\n\n setAttachments([]);\n\n setIsDetail(true);\n setId(undefined);\n\n setActivateCustomSalesOrderField(true);\n setActivateCustomWarehouseField(true);\n setActivateUpdateForm(true);\n setActivateUpdateGrid(true);\n setAcceptCustomValue(false);\n setActivateSaveButton(true);\n setActivateDeleteButton(false);\n setActivateConfirmButton(false);\n setActivatePDFButton(false);\n setActivateGetItemButton(false);\n setActivateSelectItemButton(false);\n setActivateCancelButton(false);\n setActivateCantidadButton(false);\n setActivateCantidad2Button(false);\n setActivateAttachments(false);\n\n setVisibleLoadPanel(false);\n setContextMenuItems([]);\n\n setActivatePaqueteria(false);\n }\n catch (e) {\n if (e === 'No current user') {\n history.push('/');\n\n window.location.reload();\n }\n }\n };\n\n async function deleteButton() {\n try {\n if (!window.confirm('¿Desea eliminar la Entrega Directa?'))\n return;\n\n setVisibleLoadPanel(true);\n\n var ID = directDeliveryPayload.header.ID;\n\n if (!ID) {\n //Vamos al tablero de control\n history.push('/DirectDelivery');\n return;\n }\n\n let apiName = 'AdminSC';\n let path = '/procesaentregadirecta';\n\n let myInit = {\n headers: {\n 'Content-Type': 'application/json',\n Authorization: `${(await Auth.currentSession()).getAccessToken().getJwtToken()}`\n },\n body: {\n ID: ID,\n payload: directDeliveryPayload,\n action: 'delete',\n username: JSON.parse(JSON.stringify(await Auth.currentAuthenticatedUser())).username,\n usuario: props.usuario,\n sucursal: props.sucursal\n }\n }\n\n var payloadPost = await API.post(apiName, path, myInit);\n\n if (payloadPost.ok === 'true') {\n setVisibleLoadPanel(false);\n\n setVisibleToast(true);\n setMessageToast('Entrega Directa eliminada con éxito');\n setTypeToast('success')\n\n setIsDetail(false);\n\n //Vamos al tablero de control\n history.push('/DirectDelivery');\n }\n else if (payloadPost.ok === 'false') {\n setVisibleLoadPanel(false);\n\n setVisibleToast(true);\n setMessageToast(payloadPost.message);\n setTypeToast('error')\n }\n }\n catch (e) {\n setVisibleLoadPanel(false);\n\n if (e === 'No current user') {\n history.push('/');\n\n window.location.reload();\n }\n }\n }\n\n function printButton() {\n var baseUrl = window.location.href.split('/')[0];\n\n window.open(baseUrl + \"/#/PdfRender?type=directdelivery&id=\" + id, \"_blank\");\n };\n\n function openRelatedRecord(redirect) {\n if (redirect) {\n var baseUrl = window.location.href.split('#/')[0];\n\n redirect = baseUrl + '#' + redirect;\n\n window.open(redirect, \"_blank\");\n }\n };\n\n function openRelatedRecordButton(data) {\n return (\n <button onClick={() => openRelatedRecord(data.data.redirect)}><FontAwesomeIcon icon={faArrowUpRightFromSquare} /></button>\n )\n };\n\n async function getPedidos(sqlFilter) {\n let apiName = 'AdminSC';\n let path = '/getcatalogo';\n\n let myInit = {\n headers: {\n 'Content-Type': 'application/json',\n Authorization: `${(await Auth.currentSession()).getAccessToken().getJwtToken()}`\n },\n queryStringParameters: {\n type: 'PedidoEntregaDirecta',\n username: JSON.parse(JSON.stringify(await Auth.currentAuthenticatedUser())).username,\n sqlFilter: sqlFilter\n }\n }\n\n var pedidosGet = await API.get(apiName, path, myInit);\n var tmpPedidos = [];\n\n for (var pedidosGetIndex in pedidosGet) {\n\n tmpPedidos.push({\n name: pedidosGet[pedidosGetIndex].SCRama,\n value: pedidosGet[pedidosGetIndex].SCRama\n })\n }\n\n return tmpPedidos;\n };\n\n async function getAlmacenes() {\n let apiName = 'AdminSC';\n let path = '/getcatalogo';\n\n let myInit = {\n headers: {\n 'Content-Type': 'application/json',\n Authorization: `${(await Auth.currentSession()).getAccessToken().getJwtToken()}`\n },\n queryStringParameters: {\n type: 'AlmacenNormal',\n username: JSON.parse(JSON.stringify(await Auth.currentAuthenticatedUser())).username\n }\n }\n\n var pedidosGet = await API.get(apiName, path, myInit);\n\n setAlmacenes(pedidosGet);\n };\n\n async function getPaqueteria() {\n let apiName = 'AdminSC';\n let path = '/getcatalogo';\n\n let myInit = {\n headers: {\n 'Content-Type': 'application/json',\n Authorization: `${(await Auth.currentSession()).getAccessToken().getJwtToken()}`\n },\n queryStringParameters: {\n type: 'Paqueteria',\n username: JSON.parse(JSON.stringify(await Auth.currentAuthenticatedUser())).username\n }\n }\n\n var paqueteriaGet = await API.get(apiName, path, myInit);\n\n setPaqueteria(paqueteriaGet);\n };\n\n useEffect(() => {\n window.addEventListener('popstate', (e) => {\n var hash;\n\n try {\n hash = e.target.location.hash;\n }\n catch (e) {\n hash = '';\n }\n\n if (hash === '#/DirectDelivery') {\n history.push('/DirectDelivery');\n\n window.location.reload();\n }\n });\n\n async function initialize() {\n setVisibleLoadPanel(true);\n\n await getAlmacenes();\n\n await getPaqueteria();\n\n setVisibleLoadPanel(false);\n }\n\n initialize();\n\n //En caso de solicitar un ID especifico, redireccionamos a ese ID\n if (!props.match.isExact) {\n var urlID = props.location.pathname.replace('/DirectDelivery/', '');\n\n var search = props.location.search;\n var salesorder;\n\n if (search)\n salesorder = search.replace('?salesorder=', '');\n\n if (urlID === 'undefined')\n urlID = undefined;\n\n if (urlID)\n editButton(urlID);\n else\n newButton(salesorder);\n }\n\n // eslint-disable-next-line\n }, []);\n\n function overrideOnValueChanged(e) {\n //Hacemos la data persistente en cuanto el usuario escriba en el campo\n // if (e.parentType === \"dataRow\") {\n // e.editorOptions.valueChangeEvent = \"input\";\n // }\n }\n\n function onHidingToast() {\n setVisibleToast(false);\n }\n\n const onFieldDatosProgramacionChanged = React.useCallback((e) => {\n var dataField = e.dataField;\n var value = e.value;\n\n\n if (formDatosGeneralesRef.current) {\n var formDatosGenerales = formDatosGeneralesRef.current.instance();\n\n if (e.dataField === 'Pedido') {\n if (e.value) {\n async function getSalesOrderInfo() {\n try {\n setVisibleLoadPanel(true);\n\n let apiName = 'AdminSC';\n let path = '/procesaentregadirecta';\n\n let myInit = {\n headers: {\n 'Content-Type': 'application/json',\n Authorization: `${(await Auth.currentSession()).getAccessToken().getJwtToken()}`\n },\n queryStringParameters: {\n action: 'getSalesOrderInfo',\n salesOrder: value,\n username: JSON.parse(JSON.stringify(await Auth.currentAuthenticatedUser())).username\n }\n };\n\n var payloadNew = await API.get(apiName, path, myInit);\n\n formDatosGenerales.updateData('NombreCliente', payloadNew.header.NombreCliente);\n formDatosGenerales.updateData('Telefono', payloadNew.header.Telefono);\n formDatosGenerales.updateData('Direccion', payloadNew.header.Direccion);\n formDatosGenerales.updateData('Colonia', payloadNew.header.Colonia);\n formDatosGenerales.updateData('CodigoPostal', payloadNew.header.CodigoPostal);\n formDatosGenerales.updateData('Estado', payloadNew.header.Estado);\n formDatosGenerales.updateData('Municipio', payloadNew.header.Municipio);\n formDatosGenerales.updateData('Pais', payloadNew.header.Pais);\n\n setVisibleLoadPanel(false);\n }\n catch (e) {\n if (e === 'No current user') {\n history.push('/');\n\n window.location.reload();\n }\n }\n }\n\n getSalesOrderInfo();\n }\n else {\n formDatosGenerales.updateData('NombreCliente', undefined);\n formDatosGenerales.updateData('Telefono', undefined);\n formDatosGenerales.updateData('Direccion', undefined);\n formDatosGenerales.updateData('Colonia', undefined);\n formDatosGenerales.updateData('CodigoPostal', undefined);\n formDatosGenerales.updateData('Estado', undefined);\n formDatosGenerales.updateData('Municipio', undefined);\n formDatosGenerales.updateData('Pais', undefined);\n }\n }\n }\n }, [formDatosGeneralesRef, history])\n\n function contextMenuItemClick(e) {\n if (e.itemData.text === 'Seleccionar Todo') {\n selectAllButton();\n }\n else if (e.itemData.text === 'Eliminar Selección') {\n selectNothingButton();\n }\n };\n\n function estatusRelatedRecords(data) {\n return (\n <TransactionStatus {...props} Estatus={data.data.Estatus} />\n )\n };\n\n function onExporting(e) {\n const workbook = new Workbook();\n const worksheet = workbook.addWorksheet('Datos');\n\n exportDataGrid({\n component: e.component,\n worksheet,\n autoFilterEnabled: true,\n }).then(() => {\n workbook.xlsx.writeBuffer().then((buffer) => {\n saveAs(new Blob([buffer], { type: 'application/octet-stream' }), 'Datos.xlsx');\n });\n });\n e.cancel = true;\n };\n\n return (\n <div>\n {isDetail === false ? (\n <div class=\"bg-gray-200 m-2\">\n <h1 class=\"font-sans inline-block text-xl font-bold text-gray-700 leading-8 align-top mb-1\"><FontAwesomeIcon icon={faList} size=\"lg\" /> Entregas Directas</h1>\n </div>\n ) :\n (\n <div class=\"bg-gray-200 m-2\">\n <h1 class=\"font-sans inline-block text-xl font-bold text-gray-700 leading-8 align-top mb-1\"><FontAwesomeIcon icon={faPersonDolly} size=\"xl\" /> {(directDeliveryPayload.header ? directDeliveryPayload.header.Movimiento : 'Entrega Directa')}</h1>\n <TransactionStatus {...props} Estatus={directDeliveryPayload.header.Estatus} />\n </div>\n )}\n\n <LoadPanel\n shadingColor=\"rgba(0,0,0,0.4)\"\n visible={visibleLoadPanel}\n showIndicator={true}\n message=\"Por favor espere...\"\n shading={true}\n showPane={true}\n hideOnOutsideClick={false}\n />\n\n <Toast\n visible={visibleToast}\n message={messageToast}\n type={typeToast}\n onHiding={onHidingToast}\n displayTime={5000}\n width={'auto'}\n position={{\n my: 'top center',\n at: 'top center',\n of: window,\n offset: '0 130'\n }}\n />\n\n <div class=\"bg-gray-200 m-2\">\n {isDetail === false ? (\n <div class=\"bg-white p-3 shadow-xl\">\n\n {permissionLevel === 'Editar' ?\n (\n <div>\n <Link to=\"/DirectDelivery/undefined\">\n <button class=\"mb-2 bg-green-500 hover:bg-green-700 text-white font-bold py-2 px-4 rounded\" onClick={() => newButton()}><FontAwesomeIcon icon={faFileAlt} /> Nueva Entrega Directa</button>\n </Link>\n\n <button onClick={refreshButton} type=\"submit\" class=\"ml-4 mb-4 bg-blue-500 hover:bg-blue-700 text-white font-bold py-2 px-4 rounded\">\n <FontAwesomeIcon icon={faArrowsRotate} /> Actualizar\n </button>\n </div>\n ) :\n (\n <div>\n <button onClick={refreshButton} type=\"submit\" class=\"mb-4 bg-blue-500 hover:bg-blue-700 text-white font-bold py-2 px-4 rounded\">\n <FontAwesomeIcon icon={faArrowsRotate} /> Actualizar\n </button>\n </div>\n )}\n\n <div className=\"options mb-2\">\n <div className=\"option\">\n <CheckBox text=\"Expandir todos los grupos\"\n value={autoExpandAll}\n onValueChanged={onAutoExpandAllChanged}></CheckBox>\n </div>\n </div>\n <DataGrid\n height={800}\n id=\"gridContainer\"\n columnsAutoWidth={true}\n filterBuilder={filterBuilder}\n dataSource={store}\n defaultFilterValue={filterValue}\n allowColumnReordering={true}\n allowColumnResizing={true}\n columnResizingMode={\"widget\"}\n showBorders={true}\n rowAlternationEnabled={true}\n showRowLines={true}\n showColumnLines={true}\n remoteOperations={{ filtering: true }}\n ref={gridTableroRef}\n onExporting={onExporting}\n >\n <Scrolling rowRenderingMode='virtual'></Scrolling>\n <Paging defaultPageSize={10} />\n <Pager\n visible={true}\n allowedPageSizes={allowedPageSizes}\n displayMode='compact'\n showPageSizeSelector={true}\n showInfo={true}\n showNavigationButtons={true}\n />\n <FilterRow visible={true} />\n <FilterPanel visible={true} />\n <FilterBuilderPopup position={filterBuilderPopupPosition} />\n\n <HeaderFilter visible={true} />\n\n <GroupPanel visible={true} />\n <SearchPanel visible={true} />\n <ColumnChooser\n enabled={true}\n mode='select'\n >\n <ColumnChooserSearch\n enabled={true}\n />\n\n <ColumnChooserSelection\n allowSelectAll={true}\n selectByClick={true}\n recursive={true}\n />\n </ColumnChooser>\n <Grouping autoExpandAll={autoExpandAll} />\n <StateStoring enabled={true} type=\"localStorage\" storageKey=\"gridContainerDirectDelivery\" />\n <Export enabled={true} />\n\n <Column caption=\"\" alignment=\"center\" width={100} cellRender={editDirectDelivery} />\n <Column dataField=\"MovID\" dataType=\"string\" width={110} caption=\"Folio\" />\n <Column dataField=\"FechaEmision\" caption=\"Fecha Emisión\" dataType=\"date\" width={130} />\n <Column dataField=\"FechaProgramada\" caption=\"Fecha Programada\" dataType=\"date\" width={130} visible={false} />\n <Column dataField=\"Estatus\" dataType=\"string\" width={120} />\n <Column dataField=\"Pedido\" dataType=\"string\" width={120} />\n <Column caption=\"Plaza\" dataField=\"Plaza\" dataType=\"string\" width={150} visible={false} />\n\n <Column dataField=\"ID\" dataType=\"number\" width={150} visible={false} />\n <Column dataField=\"Mov\" dataType=\"string\" width={190} caption=\"Tipo Movimiento\" visible={false} />\n <Column dataField=\"Movimiento\" dataType=\"string\" width={190} visible={false} />\n\n <Column dataField=\"Almacen\" dataType=\"string\" width={190} caption=\"Almacén\" visible={false} />\n <Column dataField=\"NombreAlmacen\" dataType=\"string\" width={190} caption=\"Nombre Almacén\" visible={false} />\n <Column dataField=\"Sucursal\" dataType=\"number\" width={150} visible={false} />\n <Column dataField=\"NombreSucursal\" dataType=\"string\" width={190} visible={false} />\n <Column dataField=\"Usuario\" dataType=\"string\" width={190} visible={false} />\n <Column dataField=\"NombreUsuario\" dataType=\"string\" width={190} visible={false} />\n <Column dataField=\"UsuarioOriginal\" dataType=\"string\" width={190} visible={false} />\n <Column dataField=\"RequiereAutorizacion\" dataType=\"boolean\" caption=\"Requiere Autorización\" width={200} visible={false} />\n <Column dataField=\"Autorizado\" dataType=\"boolean\" width={150} visible={false} />\n <Column dataField=\"Autoriza\" caption=\"Autorizado Por\" dataType=\"string\" width={200} visible={false} />\n <Column dataField=\"FechaAutorizacion\" caption=\"Fecha Autorización\" dataType=\"datetime\" width={200} visible={false} />\n <Column dataField=\"EntregaPaqueteria\" dataType=\"boolean\" caption=\"Entrega por Paquetería\" width={200} visible={false} />\n <Column dataField=\"Paqueteria\" dataType=\"string\" caption=\"Paquetería\" width={200} visible={false} />\n <Column dataField=\"NumeroGuia\" dataType=\"string\" caption=\"Número de Guía\" width={200} visible={false} />\n </DataGrid>\n </div>\n ) : (<div />)}\n <Route exact path=\"/DirectDelivery/:ID\" render={({ match }) => {\n return (\n <div class=\"bg-gray-200\">\n {isDetail.toString() === 'true' ?\n (\n <div>\n <Link to=\"/DirectDelivery\">\n <button onClick={cancelEditButton} type=\"submit\" class=\"mb-4 bg-red-500 hover:bg-red-700 text-white font-bold py-2 px-4 rounded\">\n <FontAwesomeIcon icon={faArrowRotateLeft} /> Regresar\n </button>\n </Link>\n\n {activateSaveButton.toString() === 'true' ?\n (\n <button onClick={saveButton} type=\"submit\" class=\"ml-4 mb-4 bg-blue-500 hover:bg-blue-700 text-white font-bold py-2 px-4 rounded\">\n <FontAwesomeIcon icon={faSave} /> Guardar Cambios\n </button>\n ) : (\n <div class=\"inline-block\"></div>\n )}\n\n {activateConfirmButton.toString() === 'true' && id ?\n (\n <button onClick={confirmButton} type=\"submit\" class=\"ml-4 mb-4 bg-green-500 hover:bg-green-700 text-white font-bold py-2 px-4 rounded\">\n <FontAwesomeIcon icon={faPlay} /> Afectar\n </button>\n ) : (\n <div class=\"inline-block\"></div>\n )}\n\n {activateApproveButton.toString() === 'true' && id ?\n (\n <button onClick={approveButton} type=\"submit\" class=\"ml-4 mb-4 bg-green-500 hover:bg-green-700 text-white font-bold py-2 px-4 rounded\">\n <FontAwesomeIcon icon={faThumbsUp} /> Autorizar\n </button>\n ) : (\n <div class=\"inline-block\"></div>\n )}\n\n {activateGetItemButton.toString() === 'true' && id ?\n (\n <button onClick={getItemsButton} type=\"submit\" class=\"ml-4 mb-4 bg-yellow-500 hover:bg-yellow-700 text-white font-bold py-2 px-4 rounded\">\n <FontAwesomeIcon icon={faLightbulb} /> Obtener Artículos\n </button>\n ) :\n (\n <div class=\"inline-block\"></div>\n )}\n\n {activateSelectItemButton.toString() === 'true' && id ?\n (\n <button onClick={selectAllButton} type=\"submit\" class=\"ml-4 mb-4 bg-blue-500 hover:bg-blue-700 text-white font-bold py-2 px-4 rounded\">\n <FontAwesomeIcon icon={faCircleCheck} /> Todo\n </button>\n ) :\n (\n <div class=\"inline-block\"></div>\n )}\n\n {activateSelectItemButton.toString() === 'true' && id ?\n (\n <button onClick={selectNothingButton} type=\"submit\" class=\"ml-4 mb-4 bg-blue-500 hover:bg-blue-700 text-white font-bold py-2 px-4 rounded\">\n <FontAwesomeIcon icon={faCircleX} /> Nada\n </button>\n ) :\n (\n <div class=\"inline-block\"></div>\n )}\n\n {activateDeleteButton.toString() === 'true' && id ?\n (\n <button onClick={deleteButton} type=\"submit\" class=\"ml-4 mb-4 bg-red-500 hover:bg-red-700 text-white font-bold py-2 px-4 rounded\">\n <FontAwesomeIcon icon={faTrash} /> Eliminar\n </button>\n ) :\n (\n <div class=\"inline-block\"></div>\n )}\n\n {activateCancelButton.toString() === 'true' && id ?\n (\n <button onClick={voidButton} type=\"submit\" class=\"ml-4 mb-4 bg-red-500 hover:bg-red-700 text-white font-bold py-2 px-4 rounded\">\n <FontAwesomeIcon icon={faWindowClose} /> Cancelar\n </button>\n ) :\n (\n <div class=\"inline-block\"></div>\n )}\n\n {activatePDFButton.toString() === 'true' && id ?\n (\n <button onClick={printButton} type=\"submit\" class=\"ml-4 mb-4 bg-gray-500 hover:bg-gray-700 text-white font-bold py-2 px-4 rounded\">\n <FontAwesomeIcon icon={faFilePdf} /> PDF\n </button>\n ) :\n (\n <div class=\"inline-block\"></div>\n )}\n\n <div class=\"bg-white p-4 shadow-xl\">\n <ContextMenu\n dataSource={contextMenuItems}\n width={200}\n target=\"#gridArticulos\"\n onItemClick={contextMenuItemClick}\n />\n\n <Form\n id=\"formTransaccion\"\n labelMode={'outside'}\n formData={directDeliveryPayload.header}\n readOnly={!activateUpdateForm}\n showColonAfterLabel={false}\n labelLocation={'top'}\n onFieldDataChanged={onFieldDatosProgramacionChanged}\n ref={formDatosGeneralesRef}\n >\n <TabbedItem>\n <TabPanelOptions deferRendering={false} showNavButtons={true} />\n <Tab title=\"Datos Generales\" colCount={7}>\n <GroupItem caption=\"General\" colSpan={2} >\n <Item cssClass=\"boldText\" dataField=\"Movimiento\" editorOptions={movimientoEditorOptions} />\n <Item dataField=\"FechaEmision\" editorType=\"dxDateBox\" editorOptions={fechaEmisionEditorOptions}>\n <Label text={\"Fecha Emisión\"} />\n </Item>\n <Item dataField=\"FechaProgramada\" editorType=\"dxDateBox\" >\n <Label text={\"Fecha Programada\"} />\n </Item>\n <Item dataField=\"Pedido\" editorType=\"dxLookup\" editorOptions={pedidoEditorOptions} >\n <Label text=\"Pedido\" />\n </Item>\n <Item dataField=\"Almacen\" editorType=\"dxSelectBox\" editorOptions={almacenEditorOptions} >\n <Label text=\"Almacén\" />\n </Item>\n <Item dataField=\"EntregaPaqueteria\" editorType=\"dxCheckBox\" >\n <Label text=\"Entrega por paquetería\" />\n </Item>\n </GroupItem>\n <GroupItem caption=\"Artículos\" colSpan={5} >\n <DataGrid\n id=\"gridArticulos\"\n ref={gridArticulosRef}\n columnsAutoWidth={true}\n dataSource={directDeliveryPayload.detail}\n showBorders={true}\n showColumnLines={true}\n showRowLines={true}\n rowAlternationEnabled={true}\n allowColumnResizing={true}\n columnResizingMode=\"widget\"\n allowColumnReordering={false}\n repaintChangesOnly={false}\n >\n <Editing\n mode=\"cell\"\n allowUpdating={activateUpdateGrid}\n allowAdding={false}\n allowDeleting={false}\n />\n <Sorting mode=\"none\" />\n\n <Column dataField=\"Renglon\" width={190} visible={false} allowEditing={false} />\n <Column dataField=\"Articulo\" caption=\"Artículo\" width={100} allowEditing={false} />\n <Column dataField=\"Descripcion\" caption=\"Descripción\" width={350} allowEditing={false} />\n <Column dataField=\"Cantidad\" caption=\"Cantidad\" width={80} allowEditing={false} dataType=\"number\" />\n <Column dataField=\"CantidadA\" caption=\"Programación\" width={110} allowEditing={activateCantidadButton} visible={directDeliveryPayload.header.Estatus === 'Sin Afectar' || directDeliveryPayload.header.Estatus === 'Pendiente' || directDeliveryPayload.header.Estatus === 'Disponible' || directDeliveryPayload.header.Estatus === 'Concluido'} dataType=\"number\" />\n <Column dataField=\"CantidadProcesadaWMS\" caption=\"Proc. WMS\" width={100} allowEditing={false} visible={directDeliveryPayload.header.Estatus === 'Pendiente' || directDeliveryPayload.header.Estatus === 'Concluido'} dataType=\"number\" />\n <Column dataField=\"CantidadEmpacadaWMS\" caption=\"Emp. WMS\" width={100} allowEditing={false} visible={directDeliveryPayload.header.Estatus === 'Pendiente' || directDeliveryPayload.header.Estatus === 'Concluido'} dataType=\"number\" />\n <Column dataField=\"CantidadEnviadaWMS\" caption=\"Env. WMS\" width={100} allowEditing={false} visible={directDeliveryPayload.header.Estatus === 'Pendiente' || directDeliveryPayload.header.Estatus === 'Concluido'} dataType=\"number\" />\n\n <Column dataField=\"CantidadA2\" caption=\"Entrega\" width={100} allowEditing={activateCantidad2Button} visible={directDeliveryPayload.header.Estatus === 'Pendiente' || directDeliveryPayload.header.Estatus === 'Concluido'} dataType=\"number\" />\n </DataGrid>\n </GroupItem>\n </Tab>\n <Tab title=\"Datos del Cliente\" colCount={3}>\n <Item dataField=\"NombreCliente\" editorOptions={datosClienteEditorOptions} >\n <Label text=\"Nombre\" />\n </Item>\n <Item dataField=\"Telefono\" editorOptions={datosClienteEditorOptions} >\n <Label text=\"Teléfono\" />\n </Item>\n <Item dataField=\"Direccion\" editorOptions={datosClienteEditorOptions} >\n <Label text=\"Dirección\" />\n </Item>\n <Item dataField=\"Colonia\" editorOptions={datosClienteEditorOptions} />\n <Item dataField=\"CodigoPostal\" editorOptions={datosClienteEditorOptions} >\n <Label text=\"C.P.\" />\n </Item>\n <Item dataField=\"Estado\" editorOptions={datosClienteEditorOptions} />\n <Item dataField=\"Municipio\" editorOptions={datosClienteEditorOptions} />\n <Item dataField=\"Pais\" editorOptions={datosClienteEditorOptions} >\n <Label text=\"País\" />\n </Item>\n </Tab>\n <Tab title=\"Paquetería\" colCount={3} visible={activatePaqueteria}>\n <Item dataField=\"Paqueteria\" editorType=\"dxSelectBox\" editorOptions={paqueteriaEditorOptions} >\n <Label text=\"Paquetería\" />\n </Item>\n <Item dataField=\"NumeroGuia\" editorOptions={numeroGuiaEditorOptions} >\n <Label text=\"Número de Guía\" />\n </Item>\n </Tab>\n <Tab title=\"Autorización\" colCount={2}>\n <Item dataField=\"RequiereAutorizacion\" editorType=\"dxCheckBox\" editorOptions={autorizacionEditorOptions} >\n <Label text=\"Requiere Autorización\" />\n </Item>\n <Item dataField=\"Autorizado\" editorType=\"dxCheckBox\" editorOptions={autorizacionEditorOptions} >\n <Label text=\"Autorizado\" />\n </Item>\n <Item dataField=\"Autoriza\" editorOptions={autorizacionEditorOptions} >\n <Label text=\"Autorizado por\" />\n </Item>\n <Item dataField=\"FechaAutorizacion\" editorOptions={autorizacionEditorOptions} >\n <Label text=\"Fecha Autorización\" />\n </Item>\n </Tab>\n <Tab title=\"Observaciones\" >\n <Item dataField=\"Observaciones\" editorType=\"dxTextArea\" >\n <Label text=\"Observaciones\" visible={false} />\n </Item>\n </Tab>\n <Tab title=\"Registros Relacionados\">\n <DataGrid\n id=\"gridRelatedRecords\"\n columnsAutoWidth={true}\n dataSource={directDeliveryPayload.relatedRecords}\n allowColumnReordering={true}\n allowColumnResizing={true}\n columnResizingMode={\"widget\"}\n showBorders={true}\n rowAlternationEnabled={true}\n showRowLines={true}\n showColumnLines={true}\n >\n <HeaderFilter visible={false} />\n\n <Column dataField=\"name\" dataType=\"string\" width={300} caption=\"Transacción\" />\n <Column caption=\"Estatus\" alignment=\"center\" width={150} cellRender={estatusRelatedRecords} />\n <Column caption=\"\" alignment=\"center\" width={50} cellRender={openRelatedRecordButton} />\n <Column dataField=\"FechaEmision\" dataType=\"date\" width={150} caption=\"Fecha Emisión\" />\n </DataGrid>\n </Tab>\n <Tab title=\"Log Estatus\">\n <DataGrid\n id=\"gridLogEstatus\"\n columnsAutoWidth={true}\n dataSource={directDeliveryPayload.movEstatusLog}\n allowColumnReordering={true}\n allowColumnResizing={true}\n columnResizingMode={\"widget\"}\n showBorders={true}\n rowAlternationEnabled={true}\n showRowLines={true}\n showColumnLines={true}\n >\n <HeaderFilter visible={false} />\n <Column dataField=\"Usuario\" dataType=\"string\" width={350} caption=\"Usuario\" />\n <Column caption=\"Estatus\" alignment=\"center\" width={150} cellRender={estatusRelatedRecords} />\n <Column dataField=\"Fecha\" dataType=\"datetime\" width={300} caption=\"Fecha\" />\n </DataGrid>\n </Tab>\n <Tab title=\"Archivos Anexos\" >\n <div className=\"widget-container\">\n <FileUploader\n multiple={true}\n accept=\"*\"\n uploadMode=\"useButtons\"\n chunkSize={20000000}\n maxFileSize={20000000}\n uploadChunk={uploadChunk}\n disabled={!activateAttachments}\n />\n </div>\n <div id=\"wrapper\" className=\"show-widget\" >\n <div id=\"widget-area\">\n <FileManager id=\"attachmentManager\" fileSystemProvider={attachments} onItemDeleting={onAttachmentDeleting} onItemDownloading={onItemDownloading} onSelectedFileOpened={onAttachmentOpen}>\n <Permissions\n create={false}\n copy={false}\n move={false}\n delete={activateAttachments}\n rename={false}\n upload={false}\n download={true}\n >\n </Permissions>\n </FileManager>\n </div>\n </div>\n </Tab>\n </TabbedItem>\n </Form>\n </div>\n </div>\n ) :\n (\n <div></div>\n )\n }\n </div>\n )\n }}\n />\n </div>\n </div>\n );\n}\n","import React, { useState, useEffect, useRef, useMemo } from 'react';\n\n// LoadPanel\nimport { LoadPanel } from 'devextreme-react/load-panel';\n\n// Toast\nimport { Toast } from 'devextreme-react/toast';\n\n//Form\nimport Form, { GroupItem, Label, TabbedItem, TabPanelOptions, Tab } from 'devextreme-react/form';\n\nimport { Auth, API, Storage } from 'aws-amplify';\n\n// Ruteador\nimport { Route, Link, useHistory } from \"react-router-dom\";\n\n// Grid\nimport DataGrid, {\n Column, FilterRow, HeaderFilter, FilterPanel, FilterBuilderPopup,\n GroupPanel, Grouping, SearchPanel, Sorting, Editing, Lookup, Toolbar, Item, RequiredRule,\n Scrolling, Pager, Paging, Summary, TotalItem, StateStoring, ColumnChooser, Format, Selection,\n Export, ColumnChooserSearch, ColumnChooserSelection\n} from 'devextreme-react/data-grid';\n\n//CheckBox\nimport CheckBox from 'devextreme-react/check-box';\n\n//ContextMenu\nimport ContextMenu from 'devextreme-react/context-menu';\n\n// Iconos\nimport { FontAwesomeIcon } from \"@fortawesome/react-fontawesome\";\nimport { faGlasses } from \"@fortawesome/pro-solid-svg-icons\";\nimport { faPencilAlt } from \"@fortawesome/pro-solid-svg-icons\";\nimport { faArrowRotateLeft } from \"@fortawesome/pro-solid-svg-icons\";\nimport { faSave } from \"@fortawesome/pro-solid-svg-icons\";\nimport { faList } from \"@fortawesome/pro-duotone-svg-icons\";\nimport { faFilePdf } from \"@fortawesome/pro-solid-svg-icons\";\nimport { faArrowsRotate } from \"@fortawesome/pro-solid-svg-icons\";\nimport { faFileAlt } from \"@fortawesome/pro-solid-svg-icons\";\nimport { faPersonCarryBox } from \"@fortawesome/pro-duotone-svg-icons\";\nimport { faPlay } from \"@fortawesome/pro-solid-svg-icons\";\nimport { faTrash } from \"@fortawesome/pro-solid-svg-icons\";\nimport { faLightbulb } from \"@fortawesome/pro-solid-svg-icons\";\nimport { faCircleCheck } from \"@fortawesome/pro-solid-svg-icons\";\nimport { faCircleX } from \"@fortawesome/pro-solid-svg-icons\";\nimport { faWindowClose } from \"@fortawesome/pro-solid-svg-icons\";\nimport { faThumbsUp } from \"@fortawesome/pro-solid-svg-icons\";\nimport { faArrowUpRightFromSquare } from \"@fortawesome/pro-solid-svg-icons\";\n\nimport 'devextreme/data/odata/store';\nimport CustomStore from 'devextreme/data/custom_store';\n\nimport DataSource from 'devextreme/data/data_source';\n\nimport '../ListStyle.css';\n\n//FileUploader\nimport FileUploader from 'devextreme-react/file-uploader';\n\n//FileManager\nimport FileManager, { Permissions } from 'devextreme-react/file-manager';\n\nimport dxDateBox from \"devextreme/ui/date_box\";\n\nimport dxNumberBox from \"devextreme/ui/number_box\";\n\nimport TransactionStatus from \"../TransactionStatus/TransactionStatus.js\";\n\nimport { Workbook } from 'exceljs';\nimport { saveAs } from 'file-saver';\nimport { exportDataGrid } from 'devextreme/excel_exporter'\n\ndxDateBox.defaultOptions({\n options: {\n dateSerializationFormat: \"yyyy-MM-dd\"\n }\n});\n\ndxNumberBox.defaultOptions({\n options: {\n step: 0\n }\n});\n\nfunction isNotEmpty(value) {\n return value !== undefined && value !== null && value !== '';\n}\n\nexport default function DirectReturn(props) {\n const history = useHistory();\n\n const [isDetail, setIsDetail] = useState(false);\n const [id, setId] = useState();\n const [permissionLevel, setPermissionLevel] = useState(props.nivel);\n const [voidDeliveryTransactions, setVoidDeliveryTransactions] = useState(props.voidDeliveryTransactions);\n const [approveDelivery, setApproveDelivery] = useState(props.approveDelivery);\n const [directReturnPayload, setDirectReturnPayload] = useState({\n header: {},\n detail: [],\n movEstatusLog: []\n });\n\n const [paqueteria, setPaqueteria] = useState([]);\n const [almacenes, setAlmacenes] = useState([]);\n const [contextMenuItems, setContextMenuItems] = useState([]);\n const [autoExpandAll, setAutoExpandAll] = useState(true);\n\n // setValue para el control tab\n const [value, setValue] = React.useState(0);\n\n const [visibleLoadPanel, setVisibleLoadPanel] = useState(false);\n\n const [visibleToast, setVisibleToast] = useState(false);\n const [messageToast, setMessageToast] = useState('');\n const [typeToast, setTypeToast] = useState('success');\n\n const [activateUpdateForm, setActivateUpdateForm] = useState(false);\n const [activateUpdateGrid, setActivateUpdateGrid] = useState(false);\n const [activateCustomSalesOrderField, setActivateCustomSalesOrderField] = useState(false);\n const [activateCustomWarehouseField, setActivateCustomWarehouseField] = useState(false);\n const [acceptCustomValues, setAcceptCustomValue] = useState(false);\n const [activateSaveButton, setActivateSaveButton] = useState(false);\n const [activateDeleteButton, setActivateDeleteButton] = useState(false);\n const [activateCancelButton, setActivateCancelButton] = useState(false);\n const [activateConfirmButton, setActivateConfirmButton] = useState(false);\n const [activateApproveButton, setActivateApproveButton] = useState(false);\n const [activateGetItemButton, setActivateGetItemButton] = useState(false);\n const [activateSelectItemButton, setActivateSelectItemButton] = useState(false);\n const [activatePDFButton, setActivatePDFButton] = useState(false);\n const [activateCantidadButton, setActivateCantidadButton] = useState(false);\n const [activateCantidad2Button, setActivateCantidad2Button] = useState(false);\n const [activateAttachments, setActivateAttachments] = useState(false);\n const [activatePaqueteria, setActivatePaqueteria] = useState(false);\n\n //Ref para el grid Articulos\n const [gridArticulosRef, setGridArticulosRef] = useState(React.createRef());\n\n //Ref para el form\n const [formDatosGeneralesRef, setFormDatosGeneralesRef] = useState(React.createRef());\n\n const [attachments, setAttachments] = useState([]);\n\n const handleChange = (event, newValue) => {\n setValue(newValue);\n };\n\n const filterBuilderPopupPosition = {\n of: window,\n at: 'top',\n my: 'top',\n offset: { y: 10 },\n };\n\n const allowedPageSizes = [5, 10, 15, 20, 'all'];\n\n const exportFormats = ['xlsx'];\n\n function getOrderDay(rowData) {\n return (new Date(rowData.OrderDate)).getDay();\n }\n\n const filterBuilder = {\n customOperations: [{\n name: 'weekends',\n caption: 'Weekends',\n dataTypes: ['date'],\n icon: 'check',\n hasValue: false,\n calculateFilterExpression: () => [[getOrderDay, '=', 0], 'or', [getOrderDay, '=', 6]],\n }],\n allowHierarchicalFields: true,\n };\n\n const filterValue = [['Estatus', '=', 'Sin Afectar']];\n\n //Ref para el grid Tablero de Control\n const [gridTableroRef, setGridTableroRef] = useState(React.createRef());\n\n function onAutoExpandAllChanged() {\n setAutoExpandAll(!autoExpandAll)\n };\n\n async function getDirectReturnRecords(sqlFilter) {\n try {\n let apiName = 'AdminSC';\n let path = '/procesadevoluciondirecta';\n\n let myInit = {\n headers: {\n 'Content-Type': 'application/json',\n Authorization: `${(await Auth.currentSession()).getAccessToken().getJwtToken()}`\n },\n queryStringParameters: {\n action: 'list',\n sqlFilter: sqlFilter,\n salesAccess: props.salesAccess,\n sucursal: props.sucursal,\n usuario: props.usuario,\n username: JSON.parse(JSON.stringify(await Auth.currentAuthenticatedUser())).username\n }\n }\n\n var directReturnGet = await API.get(apiName, path, myInit);\n }\n catch (e) {\n if (e === 'No current user') {\n history.push('/');\n\n window.location.reload();\n }\n }\n\n return directReturnGet;\n }\n\n const store = new CustomStore({\n key: 'ID',\n load(loadOptions) {\n let sqlFilter = '(';\n [\n 'filter'\n ].forEach((i) => {\n if (i in loadOptions && isNotEmpty(loadOptions[i])) {\n var filters = loadOptions[i];\n\n var filtersLength = filters.length;\n\n for (var i = 0; i <= filtersLength; i++) {\n var singleFilter = filters[i];\n var singleFilterType = typeof singleFilter;\n var singleFilterIsArray = Array.isArray(singleFilter);\n var singleFilterIsDate = singleFilter instanceof Date;\n\n if (singleFilter === 'NULL') {\n singleFilter = '0';\n }\n\n if (singleFilterType.toString() === 'object' && singleFilterIsArray) {\n sqlFilter += '(';\n\n var subFiltersLength = singleFilter.length;\n\n for (var i2 = 0; i2 <= subFiltersLength; i2++) {\n var singleSubFilter = singleFilter[i2];\n var singleSubFilterType = typeof singleSubFilter;\n var singleSubFilterIsArray = Array.isArray(singleSubFilter);\n var singleSubFilterIsDate = singleSubFilter instanceof Date\n\n if (singleSubFilter === 'NULL') {\n singleSubFilter = '0';\n }\n\n if (singleSubFilterType.toString() === 'object' && singleSubFilterIsArray) {\n sqlFilter += '(';\n\n var subSubFiltersLength = singleSubFilter.length;\n\n for (var i3 = 0; i3 <= subSubFiltersLength; i3++) {\n var singleSubSubFilter = singleSubFilter[i3];\n var singleSubSubFilterType = typeof singleSubSubFilter;\n var singleSubSubFilterIsArray = Array.isArray(singleSubSubFilter);\n var singleSubSubFilterIsDate = singleSubSubFilter instanceof Date\n\n if (singleSubSubFilter === 'NULL') {\n singleSubSubFilter = '0';\n }\n\n if (singleSubSubFilterType.toString() === 'object' && singleSubSubFilterIsArray) {\n sqlFilter += '(';\n\n var subSubSubFiltersLength = singleSubSubFilter.length;\n\n for (var i4 = 0; i4 <= subSubSubFiltersLength; i4++) {\n var singleSubSubSubFilter = singleSubSubFilter[i4];\n var singleSubSubSubFilterType = typeof singleSubSubSubFilter;\n var singleSubSubSubFilterIsArray = Array.isArray(singleSubSubSubFilter);\n var singleSubSubSubFilterIsDate = singleSubSubSubFilter instanceof Date\n\n if (singleSubSubSubFilter === 'NULL') {\n singleSubSubSubFilter = '0';\n }\n\n if (singleSubSubSubFilterType.toString() === 'object' && singleSubSubSubFilterIsArray) {\n sqlFilter += '(';\n\n var subSubSubSubFiltersLength = singleSubSubSubFilter.length;\n\n for (var i5 = 0; i5 <= subSubSubSubFiltersLength; i5++) {\n var singleSubSubSubSubFilter = singleSubSubSubFilter[i5];\n var singleSubSubSubSubFilterType = typeof singleSubSubSubSubFilter;\n var singleSubSubSubSubFilterIsArray = Array.isArray(singleSubSubSubSubFilter);\n var singleSubSubSubSubFilterIsDate = singleSubSubSubSubFilter instanceof Date\n\n if (singleSubSubSubSubFilter === 'NULL') {\n singleSubSubSubSubFilter = '0';\n }\n\n if (singleSubSubSubSubFilterType.toString() === 'string') {\n if (singleSubSubSubSubFilter === 'contains') {\n filters[i][i2][i3][i4][i5] = 'LIKE';\n singleSubSubSubSubFilter = 'LIKE';\n\n filters[i][i2][i3][i4][i5 + 1] = '\\'%' + filters[i][i2][i3][i4][i5 + 1] + '%\\'';\n }\n else if (singleSubSubSubSubFilter === 'notcontains') {\n filters[i][i2][i3][i4][i5] = 'NOT LIKE';\n singleSubSubSubSubFilter = 'NOT LIKE';\n\n filters[i][i2][i3][i4][i5 + 1] = '\\'%' + filters[i][i2][i3][i4][i5 + 1] + '%\\'';\n }\n else if (singleSubSubSubSubFilter === 'startswith') {\n filters[i][i2][i3][i4][i5] = 'LIKE';\n singleSubSubSubSubFilter = 'LIKE';\n\n filters[i][i2][i3][i4][i5 + 1] = '\\'' + filters[i][i2][i3][i4][i5 + 1] + '%\\'';\n }\n else if (singleSubSubSubSubFilter === 'endswith') {\n filters[i][i2][i3][i4][i5] = 'LIKE';\n singleSubSubSubSubFilter = 'LIKE';\n\n filters[i][i2][i3][i4][i5 + 1] = '\\'%' + filters[i][i2][i3][i4][i5 + 1] + '\\'';\n }\n else if (singleSubSubSubSubFilter === '=' || singleSubSubSubSubFilter === '<>' || singleSubSubSubSubFilter === '>' || singleSubSubSubSubFilter === '>=' || singleSubSubSubSubFilter === '<' || singleSubSubSubSubFilter === '<=') {\n if (!filters[i][i2][i3][i4][i5 + 1])\n filters[i][i2][i3][i4][i5 + 1] = 'NULL';\n else if (typeof filters[i][i2][i3][i4][i5 + 1] === 'string') {\n filters[i][i2][i3][i4][i5 + 1] = '\\'' + filters[i][i2][i3][i4][i5 + 1] + '\\'';\n }\n }\n else if (singleSubSubSubSubFilter === '!') {\n filters[i][i2][i3][i4][i5] = 'NOT';\n singleSubSubSubSubFilter = 'NOT';\n }\n\n sqlFilter += ' ' + singleSubSubSubSubFilter + ' ';\n }\n else if (singleSubSubSubSubFilterType.toString() === 'object' && singleSubSubSubSubFilterIsDate) {\n sqlFilter += ' \\'' + singleSubSubSubSubFilter.toISOString().split('T')[0] + '\\' ';\n }\n else if (singleSubSubSubSubFilterType.toString() === 'number') {\n sqlFilter += ' ' + singleSubSubSubSubFilter.toString() + ' ';\n }\n else if (singleSubSubSubSubFilterType.toString() === 'boolean') {\n if (singleSubSubSubSubFilter.toString() === 'true')\n sqlFilter += '1 ';\n else if (singleSubSubSubSubFilter.toString() === 'false' || singleSubSubSubSubFilter === null || singleSubSubSubSubFilter === undefined)\n sqlFilter += '0 ';\n }\n }\n }\n else if (singleSubSubSubFilterType.toString() === 'string') {\n if (singleSubSubSubFilter === 'contains') {\n filters[i][i2][i3][i4] = 'LIKE';\n singleSubSubSubFilter = 'LIKE';\n\n filters[i][i2][i3][i4 + 1] = '\\'%' + filters[i][i2][i3][i4 + 1] + '%\\'';\n }\n else if (singleSubSubSubFilter === 'notcontains') {\n filters[i][i2][i3][i4] = 'NOT LIKE';\n singleSubSubSubFilter = 'NOT LIKE';\n\n filters[i][i2][i3][i4 + 1] = '\\'%' + filters[i][i2][i3][i4 + 1] + '%\\'';\n }\n else if (singleSubSubSubFilter === 'startswith') {\n filters[i][i2][i3][i4] = 'LIKE';\n singleSubSubSubFilter = 'LIKE';\n\n filters[i][i2][i3][i4 + 1] = '\\'' + filters[i][i2][i3][i4 + 1] + '%\\'';\n }\n else if (singleSubSubSubFilter === 'endswith') {\n filters[i][i2][i3][i4] = 'LIKE';\n singleSubSubSubFilter = 'LIKE';\n\n filters[i][i2][i3][i4 + 1] = '\\'%' + filters[i][i2][i3][i4 + 1] + '\\'';\n }\n else if (singleSubSubSubFilter === '=' || singleSubSubSubFilter === '<>' || singleSubSubSubFilter === '>' || singleSubSubSubFilter === '>=' || singleSubSubSubFilter === '<' || singleSubSubSubFilter === '<=') {\n if (!filters[i][i2][i3][i4 + 1])\n filters[i][i2][i3][i4 + 1] = 'NULL';\n else if (typeof filters[i][i2][i3][i4 + 1] === 'string') {\n filters[i][i2][i3][i4 + 1] = '\\'' + filters[i][i2][i3][i4 + 1] + '\\'';\n }\n }\n else if (singleSubSubSubFilter === '!') {\n filters[i][i2][i3][i4] = 'NOT';\n singleSubSubSubFilter = 'NOT';\n }\n\n sqlFilter += ' ' + singleSubSubSubFilter + ' ';\n }\n else if (singleSubSubSubFilterType.toString() === 'object' && singleSubSubSubFilterIsDate) {\n sqlFilter += ' \\'' + singleSubSubSubFilter.toISOString().split('T')[0] + '\\' ';\n }\n else if (singleSubSubSubFilterType.toString() === 'number') {\n sqlFilter += ' ' + singleSubSubSubFilter.toString() + ' ';\n }\n else if (singleSubSubSubFilterType.toString() === 'boolean') {\n if (singleSubSubSubFilter.toString() === 'true')\n sqlFilter += '1 ';\n else if (singleSubSubSubFilter.toString() === 'false' || singleSubSubSubFilter === null || singleSubSubSubFilter === undefined)\n sqlFilter += '0 ';\n }\n }\n\n sqlFilter += ')';\n }\n else if (singleSubSubFilterType.toString() === 'string') {\n if (singleSubSubFilter === 'contains') {\n filters[i][i2][i3] = 'LIKE';\n singleSubSubFilter = 'LIKE';\n\n filters[i][i2][i3 + 1] = '\\'%' + filters[i][i2][i3 + 1] + '%\\'';\n }\n else if (singleSubSubFilter === 'notcontains') {\n filters[i][i2][i3] = 'NOT LIKE';\n singleSubSubFilter = 'NOT LIKE';\n\n filters[i][i2][i3 + 1] = '\\'%' + filters[i][i2][i3 + 1] + '%\\'';\n }\n else if (singleSubSubFilter === 'startswith') {\n filters[i][i2][i3] = 'LIKE';\n singleSubSubFilter = 'LIKE';\n\n filters[i][i2][i3 + 1] = '\\'' + filters[i][i2][i3 + 1] + '%\\'';\n }\n else if (singleSubSubFilter === 'endswith') {\n filters[i][i2][i3] = 'LIKE';\n singleSubSubFilter = 'LIKE';\n\n filters[i][i2][i3 + 1] = '\\'%' + filters[i][i2][i3 + 1] + '\\'';\n }\n else if (singleSubSubFilter === '=' || singleSubSubFilter === '<>' || singleSubSubFilter === '>' || singleSubSubFilter === '>=' || singleSubSubFilter === '<' || singleSubSubFilter === '<=') {\n if (!filters[i][i2][i3 + 1])\n filters[i][i2][i3 + 1] = 'NULL';\n else if (typeof filters[i][i2][i3 + 1] === 'string') {\n filters[i][i2][i3 + 1] = '\\'' + filters[i][i2][i3 + 1] + '\\'';\n }\n }\n else if (singleSubSubFilter === '!') {\n filters[i][i2][i3] = 'NOT';\n singleSubSubFilter = 'NOT';\n }\n sqlFilter += ' ' + singleSubSubFilter + ' ';\n }\n else if (singleSubSubFilterType.toString() === 'object' && singleSubSubFilterIsDate) {\n sqlFilter += ' \\'' + singleSubSubFilter.toISOString().split('T')[0] + '\\' ';\n }\n else if (singleSubSubFilterType.toString() === 'number') {\n sqlFilter += ' ' + singleSubSubFilter.toString() + ' ';\n }\n else if (singleSubSubFilterType.toString() === 'boolean') {\n if (singleSubSubFilter.toString() === 'true')\n sqlFilter += '1 ';\n else if (singleSubSubFilter.toString() === 'false' || singleSubSubFilter === null || singleSubSubFilter === undefined)\n sqlFilter += '0 ';\n }\n }\n\n sqlFilter += ')';\n }\n else if (singleSubFilterType.toString() === 'string') {\n if (singleSubFilter === 'contains') {\n filters[i][i2] = 'LIKE';\n singleSubFilter = 'LIKE';\n\n filters[i][i2 + 1] = '\\'%' + filters[i][i2 + 1] + '%\\'';\n }\n else if (singleSubFilter === 'notcontains') {\n filters[i][i2] = 'NOT LIKE';\n singleSubFilter = 'NOT LIKE';\n\n filters[i][i2 + 1] = '\\'%' + filters[i][i2 + 1] + '%\\'';\n }\n else if (singleSubFilter === 'startswith') {\n filters[i][i2] = 'LIKE';\n singleSubFilter = 'LIKE';\n\n filters[i][i2 + 1] = '\\'' + filters[i][i2 + 1] + '%\\'';\n }\n else if (singleSubFilter === 'endswith') {\n filters[i][i2] = 'LIKE';\n singleSubFilter = 'LIKE';\n\n filters[i][i2 + 1] = '\\'%' + filters[i][i2 + 1] + '\\'';\n }\n else if (singleSubFilter === '=' || singleSubFilter === '<>' || singleSubFilter === '>' || singleSubFilter === '>=' || singleSubFilter === '<' || singleSubFilter === '<=') {\n if (!filters[i][i2 + 1])\n filters[i][i2 + 1] = 'NULL';\n else if (typeof filters[i][i2 + 1] === 'string') {\n filters[i][i2 + 1] = '\\'' + filters[i][i2 + 1] + '\\'';\n }\n }\n else if (singleSubFilter === '!') {\n filters[i][i2] = 'NOT';\n singleSubFilter = 'NOT';\n }\n sqlFilter += ' ' + singleSubFilter + ' ';\n }\n else if (singleSubFilterType.toString() === 'object' && singleSubFilterIsDate) {\n sqlFilter += ' \\'' + singleSubFilter.toISOString().split('T')[0] + '\\' ';\n }\n else if (singleSubFilterType.toString() === 'number') {\n sqlFilter += ' ' + singleSubFilter.toString() + ' ';\n }\n else if (singleSubFilterType.toString() === 'boolean') {\n if (singleSubFilter.toString() === 'true')\n sqlFilter += '1 ';\n else if (singleSubFilter.toString() === 'false' || singleSubFilter === null || singleSubFilter === undefined)\n sqlFilter += '0 ';\n }\n }\n\n sqlFilter += ')';\n }\n else if (singleFilterType.toString() === 'string') {\n if (singleFilter === 'contains') {\n filters[i] = 'LIKE';\n singleFilter = 'LIKE';\n\n filters[i + 1] = '\\'%' + filters[i + 1] + '%\\'';\n }\n else if (singleFilter === 'notcontains') {\n filters[i] = 'NOT LIKE';\n singleFilter = 'NOT LIKE';\n\n filters[i + 1] = '\\'%' + filters[i + 1] + '%\\'';\n }\n else if (singleFilter === 'startswith') {\n filters[i] = 'LIKE';\n singleFilter = 'LIKE';\n\n filters[i + 1] = '\\'' + filters[i + 1] + '%\\'';\n }\n else if (singleFilter === 'endswith') {\n filters[i] = 'LIKE';\n singleFilter = 'LIKE';\n\n filters[i + 1] = '\\'%' + filters[i + 1] + '\\'';\n }\n else if (singleFilter === '=' || singleFilter === '<>' || singleFilter === '>' || singleFilter === '>=' || singleFilter === '<' || singleFilter === '<=') {\n if (!filters[i + 1])\n filters[i + 1] = 'NULL';\n else if (typeof filters[i + 1] === 'string') {\n filters[i + 1] = '\\'' + filters[i + 1] + '\\'';\n }\n }\n else if (singleFilter === '!') {\n filters[i] = 'NOT';\n singleFilter = 'NOT';\n }\n sqlFilter += ' ' + singleFilter + ' ';\n }\n else if (singleFilterType.toString() === 'object' && singleFilterIsDate) {\n sqlFilter += ' \\'' + singleFilter.toISOString().split('T')[0] + '\\' ';\n }\n else if (singleFilterType.toString() === 'number') {\n sqlFilter += ' ' + singleFilter.toString() + ' ';\n }\n else if (singleFilterType.toString() === 'boolean') {\n if (singleFilter.toString() === 'true')\n sqlFilter += '1 ';\n else if (singleFilter.toString() === 'false' || singleFilter === null || singleFilter === undefined)\n sqlFilter += '0 ';\n }\n }\n\n sqlFilter += ')';\n }\n });\n\n async function getRecords() {\n if (sqlFilter === '(')\n sqlFilter = '';\n\n var records = await getDirectReturnRecords(sqlFilter);\n return {\n data: records,\n totalCount: records.length\n };\n }\n\n return getRecords()\n .then(function (result) {\n return result;\n })\n .catch(() => { throw new Error('Data Loading Error'); });\n },\n });\n\n var fechaEmisionEditorOptions = { width: '100%', readOnly: true };\n var movimientoEditorOptions = { width: '100%', readOnly: true };\n var datosClienteEditorOptions = { width: '100%', readOnly: true };\n var estatusEditorOptions = { width: '100%', readOnly: true };\n var autorizacionEditorOptions = { width: '100%', readOnly: true };\n var numeroGuiaEditorOptions = { width: '100%' };\n\n var almacenDataSource = useMemo(() => {\n return new DataSource({\n paginate: true,\n store: {\n type: \"array\",\n key: \"Almacen\",\n data: almacenes\n }\n });\n }, [almacenes]);\n\n var paqueteriaDataSource = useMemo(() => {\n return new DataSource({\n paginate: true,\n store: {\n type: \"array\",\n key: \"Paqueteria\",\n data: paqueteria\n }\n });\n }, [paqueteria]);\n\n const storePedido = new CustomStore({\n key: 'value',\n load(loadOptions) {\n let sqlFilter = '';\n [\n 'filter'\n ].forEach((i) => {\n sqlFilter = loadOptions.searchValue;\n });\n\n async function getRecords() {\n var records = await getPedidos(sqlFilter);\n\n return {\n data: records,\n totalCount: records.length\n };\n }\n\n return getRecords()\n .then(function (result) {\n return result;\n })\n .catch(() => { throw new Error('Data Loading Error'); });\n },\n byKey: (key) => {\n return {\n name: key,\n value: key\n };\n }\n });\n\n //Opciones del campo Pedido\n try {\n var pedidoEditorOptions = {\n dataSource: storePedido,\n displayExpr: 'name',\n valueExpr: 'value',\n searchEnabled: true,\n showClearButton: true,\n acceptCustomValue: !activateCustomSalesOrderField,\n value: (directReturnPayload.header.Pedido ? directReturnPayload.header.Pedido : ''),\n disabled: !activateCustomSalesOrderField,\n searchTimeout: 1500,\n width: '100%',\n clearButtonText: 'Cerrar',\n noDataText: 'No se encontraron resultados'\n };\n }\n catch (e) {\n var pedidoEditorOptions = {\n dataSource: storePedido,\n displayExpr: 'name',\n valueExpr: 'value',\n searchEnabled: true,\n acceptCustomValue: acceptCustomValues,\n value: '',\n width: '100%'\n };\n }\n\n //Opciones del campo Almacen\n try {\n var almacenEditorOptions = useMemo(() => {\n return {\n dataSource: almacenDataSource,\n displayExpr: 'name',\n valueExpr: 'value',\n searchEnabled: true,\n acceptCustomValue: !activateCustomWarehouseField,\n value: (directReturnPayload.header.Almacen ? directReturnPayload.header.Almacen : ''),\n width: '100%'\n };\n }, [activateCustomWarehouseField, almacenDataSource, directReturnPayload.header.Almacen]);\n }\n catch (e) {\n var almacenEditorOptions = {\n dataSource: almacenDataSource,\n displayExpr: 'name',\n valueExpr: 'value',\n searchEnabled: true,\n acceptCustomValue: acceptCustomValues,\n value: '',\n width: '100%'\n };\n }\n\n //Opciones del campo Paqueteria\n try {\n var paqueteriaEditorOptions = {\n dataSource: paqueteriaDataSource,\n displayExpr: 'name',\n valueExpr: 'value',\n searchEnabled: true,\n acceptCustomValue: !acceptCustomValues,\n value: (directReturnPayload.header.Paqueteria ? directReturnPayload.header.Paqueteria : ''),\n width: '100%'\n };\n }\n catch (e) {\n var paqueteriaEditorOptions = {\n dataSource: paqueteriaDataSource,\n displayExpr: 'name',\n valueExpr: 'value',\n searchEnabled: true,\n acceptCustomValue: acceptCustomValues,\n value: '',\n width: '100%'\n };\n }\n\n async function uploadChunk(file, uploadInfo) {\n try {\n var responseS3 = await Storage.put(\"/prog/\" + id + \"/\" + file.name, uploadInfo.chunkBlob, {\n contentType: file.type,\n ACL: 'public-read'\n });\n\n //Obtenemos el nombre del bucket\n let bucketName = Storage._config.AWSS3.bucket;\n\n\n let apiName = 'AdminSC';\n let path = '/uploadattachment';\n\n let myInit = {\n headers: {\n 'Content-Type': 'application/json',\n Authorization: `${(await Auth.currentSession()).getAccessToken().getJwtToken()}`\n },\n body: {\n action: 'register',\n bucketName: bucketName,\n type: 'prog',\n id: id,\n Key: \"/prog/\" + id + \"/\" + file.name,\n fileName: file.name,\n username: JSON.parse(JSON.stringify(await Auth.currentAuthenticatedUser())).username\n }\n }\n\n var attachmentsResult = await API.post(apiName, path, myInit);\n\n //Obtenemos los attachments\n var attachmentsGet = await Storage.list(\"/prog/\" + id);\n var attachmentsAux = [];\n\n for (var attachmentsGetIndex in attachmentsGet) {\n var singleAttachmentsGet = attachmentsGet[attachmentsGetIndex];\n\n var singleAttachment = {\n name: singleAttachmentsGet.key.split('/').pop(),\n isDirectory: false,\n size: singleAttachmentsGet.size,\n };\n\n attachmentsAux.push(singleAttachment);\n }\n\n setAttachments(attachmentsAux);\n }\n catch (err) {\n console.log(\"Error uploading file:\", err);\n }\n }\n\n async function onAttachmentDeleting(e) {\n var fileName = e.item.key;\n\n //Primero borramos el archivo de S3\n var attachmentsDelete = await Storage.remove(\"/prog/\" + id + \"/\" + fileName);\n\n //Despues borramos el attachment en Intelisis\n let bucketName = Storage._config.AWSS3.bucket;\n\n let apiName = 'AdminSC';\n let path = '/uploadattachment';\n\n let myInit = {\n headers: {\n 'Content-Type': 'application/json',\n Authorization: `${(await Auth.currentSession()).getAccessToken().getJwtToken()}`\n },\n body: {\n action: 'delete',\n bucketName: bucketName,\n type: 'prog',\n id: id,\n Key: \"/prog/\" + id + \"/\" + fileName,\n fileName: fileName,\n username: JSON.parse(JSON.stringify(await Auth.currentAuthenticatedUser())).username\n }\n }\n\n var attachmentsResult = await API.post(apiName, path, myInit);\n\n //Finalmente sincronizamos el state\n var attachmentsGet = await Storage.list(\"/prog/\" + id);\n var attachmentsAux = [];\n\n for (var attachmentsGetIndex in attachmentsGet) {\n var singleAttachmentsGet = attachmentsGet[attachmentsGetIndex];\n\n var singleAttachment = {\n name: singleAttachmentsGet.key.split('/').pop(),\n isDirectory: false,\n size: singleAttachmentsGet.size,\n };\n\n attachmentsAux.push(singleAttachment);\n }\n\n setAttachments(attachmentsAux);\n };\n\n function downloadBlob(blob, filename) {\n const url = URL.createObjectURL(blob);\n const a = document.createElement('a');\n a.href = url;\n a.download = filename || 'download';\n const clickHandler = () => {\n setTimeout(() => {\n URL.revokeObjectURL(url);\n a.removeEventListener('click', clickHandler);\n }, 150);\n };\n\n a.addEventListener('click', clickHandler, false);\n\n a.click();\n\n return a;\n };\n\n async function onItemDownloading(e) {\n e.cancel = true;\n\n const downloadFileResponse = await Storage.get(\"/prog/\" + id + \"/\" + e.item.name, { download: true });\n\n downloadBlob(downloadFileResponse.Body, e.item.name);\n };\n\n function openBlob(blob, filename) {\n const url = URL.createObjectURL(blob);\n\n window.open(url, \"_blank\");\n };\n\n async function onAttachmentOpen(e) {\n const downloadFileResponse = await Storage.get(\"/prog/\" + id + \"/\" + e.file.name, { download: true });\n\n openBlob(downloadFileResponse.Body, e.file.name);\n };\n\n\n async function getDirectReturnPayload(ID) {\n try {\n let apiName = 'AdminSC';\n let path = '/procesadevoluciondirecta';\n\n let myInit = {\n headers: {\n 'Content-Type': 'application/json',\n Authorization: `${(await Auth.currentSession()).getAccessToken().getJwtToken()}`\n },\n queryStringParameters: {\n ID: ID,\n action: 'payload',\n username: JSON.parse(JSON.stringify(await Auth.currentAuthenticatedUser())).username\n }\n }\n\n var payloadGet = await API.get(apiName, path, myInit);\n\n setDirectReturnPayload(payloadGet);\n\n //Obtenemos los attachments\n var attachmentsGet = await Storage.list(\"/prog/\" + ID);\n var attachmentsAux = [];\n\n for (var attachmentsGetIndex in attachmentsGet) {\n var singleAttachmentsGet = attachmentsGet[attachmentsGetIndex];\n\n var singleAttachment = {\n name: singleAttachmentsGet.key.split('/').pop(),\n isDirectory: false,\n size: singleAttachmentsGet.size,\n };\n\n attachmentsAux.push(singleAttachment);\n }\n\n setAttachments(attachmentsAux);\n }\n catch (e) {\n if (e === 'No current user') {\n history.push('/');\n\n window.location.reload();\n }\n }\n\n return payloadGet;\n }\n\n async function fnSCWebEnableTransactionButtons(sucursal) {\n let apiName = 'AdminSC';\n let path = '/getcatalogo';\n\n let myInit = {\n headers: {\n 'Content-Type': 'application/json',\n Authorization: `${(await Auth.currentSession()).getAccessToken().getJwtToken()}`\n },\n queryStringParameters: {\n type: 'fnSCWebEnableTransactionButtons',\n username: JSON.parse(JSON.stringify(await Auth.currentAuthenticatedUser())).username,\n sucursal: sucursal\n }\n }\n\n var permissionGet = await API.get(apiName, path, myInit);\n\n try {\n return permissionGet[0].Permission;\n }\n catch (e) {\n return false;\n }\n }\n\n function editDirectReturn(data) {\n return (\n <Link to={`/DirectReturn/${data.data.ID}`}>\n <button class=\"bg-blue-500 hover:bg-blue-700 text-white py-1 px-3 rounded\" onClick={() => editButton(data.data.ID)}><FontAwesomeIcon icon={permissionLevel === 'Editar' ? faPencilAlt : faGlasses} /> {permissionLevel === 'Editar' ? 'Editar' : 'Ver'}</button>\n </Link>\n )\n }\n\n async function editButton(ID) {\n try {\n if (!window.event.metaKey && !window.event.ctrlKey) {\n setVisibleLoadPanel(true);\n\n setIsDetail(true);\n setId(ID);\n\n var payload = await getDirectReturnPayload(ID);\n\n if (payload.header.Pedido) {\n setActivateCustomSalesOrderField(false);\n }\n else {\n setActivateCustomSalesOrderField(true);\n }\n\n if (permissionLevel === 'Editar') {\n if (payload.header.Estatus === 'Sin Afectar') {\n setActivateUpdateForm(true);\n setActivateUpdateGrid(true);\n setAcceptCustomValue(false);\n setActivateSaveButton(true);\n setActivateDeleteButton(false);\n setActivateConfirmButton(true);\n setActivateApproveButton(false);\n setActivateGetItemButton(true);\n setActivateSelectItemButton(true);\n setActivatePDFButton(true);\n setActivateCustomWarehouseField(false);\n setActivateCancelButton(true);\n setActivateCantidadButton(true);\n setActivateCantidad2Button(false);\n setActivateAttachments(true);\n\n setActivatePaqueteria(payload.header.EntregaPaqueteria);\n\n setContextMenuItems([\n { text: 'Seleccionar Todo', icon: 'selectall' },\n { text: 'Eliminar Selección', icon: 'unselectall' }\n ]);\n }\n else if (payload.header.Estatus === 'Pendiente') {\n var enableButtons = await fnSCWebEnableTransactionButtons(payload.header.Sucursal);\n\n setActivateUpdateForm(false);\n setActivateUpdateGrid(enableButtons);\n setAcceptCustomValue(true);\n setActivateSaveButton(enableButtons);\n setActivateDeleteButton(false);\n setActivateConfirmButton(enableButtons);\n\n if (payload.header.RequiereAutorizacion === true && payload.header.Autorizado === false && approveDelivery)\n setActivateApproveButton(true);\n else\n setActivateApproveButton(false);\n\n setActivateGetItemButton(false);\n setActivateSelectItemButton(enableButtons);\n setActivatePDFButton(true);\n setActivateCustomWarehouseField(true);\n setActivateCancelButton(enableButtons);\n setActivateCantidadButton(false);\n setActivateCantidad2Button(true);\n setActivateAttachments(enableButtons);\n\n setActivatePaqueteria(payload.header.EntregaPaqueteria);\n\n if (enableButtons)\n setContextMenuItems([\n { text: 'Seleccionar Todo', icon: 'selectall' },\n { text: 'Eliminar Selección', icon: 'unselectall' }\n ]);\n else\n setContextMenuItems([]);\n }\n else if (payload.header.Estatus === 'Cancelado') {\n setActivateUpdateForm(false);\n setActivateUpdateGrid(false);\n setAcceptCustomValue(true);\n setActivateSaveButton(false);\n setActivateDeleteButton(false);\n setActivateConfirmButton(false);\n setActivateApproveButton(false);\n setActivateGetItemButton(false);\n setActivateSelectItemButton(false);\n setActivatePDFButton(true);\n setActivateCustomWarehouseField(true);\n setActivateCancelButton(false);\n setActivateCantidadButton(false);\n setActivateCantidad2Button(false);\n setActivateAttachments(false);\n\n setContextMenuItems([]);\n\n setActivatePaqueteria(payload.header.EntregaPaqueteria);\n }\n else if (payload.header.Estatus === 'Concluido') {\n setActivateUpdateForm(false);\n setActivateUpdateGrid(false);\n setAcceptCustomValue(true);\n setActivateSaveButton(false);\n setActivateDeleteButton(false);\n setActivateConfirmButton(false);\n setActivateApproveButton(false);\n setActivateGetItemButton(false);\n setActivateSelectItemButton(false);\n setActivatePDFButton(true);\n setActivateCustomWarehouseField(true);\n setActivateCancelButton(voidDeliveryTransactions);\n setActivateCantidadButton(false);\n setActivateCantidad2Button(false);\n setActivateAttachments(false);\n\n setContextMenuItems([]);\n\n setActivatePaqueteria(payload.header.EntregaPaqueteria);\n }\n }\n else if (permissionLevel === 'Ver') {\n setActivateUpdateForm(false);\n setActivateUpdateGrid(false);\n setAcceptCustomValue(true);\n setActivateSaveButton(false);\n setActivateDeleteButton(false);\n setActivateConfirmButton(false);\n setActivateGetItemButton(false);\n setActivateSelectItemButton(false);\n setActivatePDFButton(true);\n setActivateCustomWarehouseField(true);\n setActivateCancelButton(false);\n setActivateCantidadButton(false);\n setActivateCantidad2Button(false);\n setActivateAttachments(false);\n\n setContextMenuItems([]);\n\n setActivatePaqueteria(payload.header.EntregaPaqueteria);\n }\n\n setVisibleLoadPanel(false);\n }\n }\n catch (e) {\n setVisibleLoadPanel(false);\n\n if (!ID || ID === 'undefined') {\n newButton();\n }\n }\n };\n\n async function cancelEditButton() {\n setIsDetail(false);\n };\n\n async function saveButton() {\n try {\n if (directReturnPayload.header.Estatus === 'Sin Afectar') {\n if (!directReturnPayload.header.Pedido || directReturnPayload.header.Pedido === '') {\n setVisibleToast(true);\n setMessageToast('Falta especificar el Pedido')\n setTypeToast('error');\n return;\n }\n if (!directReturnPayload.header.Almacen || directReturnPayload.header.Almacen === '') {\n setVisibleToast(true);\n setMessageToast('Falta especificar el Almacén')\n setTypeToast('error');\n return;\n }\n }\n\n setVisibleLoadPanel(true);\n\n var ID = directReturnPayload.header.ID;\n\n //Guardamos los cambios del grid\n if (gridArticulosRef.current) {\n var gridArticulos = gridArticulosRef.current.instance();\n\n gridArticulos.saveEditData();\n }\n\n //Despues enviamos todo al backend\n let apiName = 'AdminSC';\n let path = '/procesadevoluciondirecta';\n\n let myInit = {\n headers: {\n 'Content-Type': 'application/json',\n Authorization: `${(await Auth.currentSession()).getAccessToken().getJwtToken()}`\n },\n body: {\n ID: ID,\n payload: directReturnPayload,\n action: 'saveChanges',\n username: JSON.parse(JSON.stringify(await Auth.currentAuthenticatedUser())).username,\n usuario: props.usuario,\n sucursal: props.sucursal,\n s3Bucket: Storage._config.AWSS3.bucket\n }\n }\n\n var payloadPost = await API.post(apiName, path, myInit);\n\n if (payloadPost.ok === 'true') {\n if (!ID) {\n setVisibleToast(true);\n setMessageToast('Se creó la Devolución Directa con éxito');\n setTypeToast('success')\n\n ID = payloadPost.newID;\n\n editButton(ID);\n\n history.push('/DirectReturn/' + ID.toString());\n }\n else {\n setVisibleToast(true);\n setMessageToast('Se actualizó la Devolución Directa con éxito');\n setTypeToast('success')\n }\n }\n else if (payloadPost.ok === 'false') {\n setVisibleToast(true);\n setMessageToast(payloadPost.message);\n setTypeToast('error')\n }\n\n editButton(ID);\n\n setVisibleLoadPanel(false);\n }\n catch (e) {\n setVisibleLoadPanel(false);\n\n if (e === 'No current user') {\n history.push('/');\n\n window.location.reload();\n }\n }\n };\n\n async function approveButton() {\n try {\n\n setVisibleLoadPanel(true);\n\n var ID = directReturnPayload.header.ID;\n\n //Despues enviamos todo al backend\n let apiName = 'AdminSC';\n let path = '/procesadevoluciondirecta';\n\n let myInit = {\n headers: {\n 'Content-Type': 'application/json',\n Authorization: `${(await Auth.currentSession()).getAccessToken().getJwtToken()}`\n },\n body: {\n ID: ID,\n payload: directReturnPayload,\n action: 'approve',\n username: JSON.parse(JSON.stringify(await Auth.currentAuthenticatedUser())).username,\n usuario: props.usuario,\n sucursal: props.sucursal\n }\n }\n\n var payloadPost = await API.post(apiName, path, myInit);\n\n if (payloadPost.ok === 'true') {\n setVisibleToast(true);\n setMessageToast('Devolución Directa Autorizada');\n setTypeToast('success')\n }\n else if (payloadPost.ok === 'false') {\n setVisibleToast(true);\n setMessageToast(payloadPost.message);\n setTypeToast('error')\n }\n\n editButton(ID);\n\n setVisibleLoadPanel(false);\n }\n catch (e) {\n setVisibleLoadPanel(false);\n\n if (e === 'No current user') {\n history.push('/');\n\n window.location.reload();\n }\n }\n };\n\n async function confirmButton() {\n var ID = directReturnPayload.header.ID;\n\n try {\n if (directReturnPayload.header.Estatus === 'Sin Afectar') {\n if (!directReturnPayload.header.Pedido || directReturnPayload.header.Pedido === '') {\n setVisibleToast(true);\n setMessageToast('Falta especificar el Pedido')\n setTypeToast('error');\n return;\n }\n if (!directReturnPayload.header.Almacen || directReturnPayload.header.Almacen === '') {\n setVisibleToast(true);\n setMessageToast('Falta especificar el Almacén')\n setTypeToast('error');\n return;\n }\n if (ID && directReturnPayload.header.EntregaPaqueteria && (!directReturnPayload.header.Paqueteria || directReturnPayload.header.Paqueteria === '')) {\n setVisibleToast(true);\n setMessageToast('Falta especificar la Paquetería')\n setTypeToast('error');\n return;\n }\n if (ID && directReturnPayload.header.EntregaPaqueteria && (!directReturnPayload.header.NumeroGuia || directReturnPayload.header.NumeroGuia === '')) {\n setVisibleToast(true);\n setMessageToast('Falta especificar el Número de Guía')\n setTypeToast('error');\n return;\n }\n }\n\n setVisibleLoadPanel(true);\n\n\n //Guardamos los cambios del grid\n if (gridArticulosRef.current) {\n var gridArticulos = gridArticulosRef.current.instance();\n\n gridArticulos.saveEditData();\n }\n\n //Despues enviamos todo al backend\n let apiName = 'AdminSC';\n let path = '/procesadevoluciondirecta';\n\n let myInit = {\n headers: {\n 'Content-Type': 'application/json',\n Authorization: `${(await Auth.currentSession()).getAccessToken().getJwtToken()}`\n },\n body: {\n ID: ID,\n payload: directReturnPayload,\n action: 'apply',\n username: JSON.parse(JSON.stringify(await Auth.currentAuthenticatedUser())).username,\n usuario: props.usuario,\n sucursal: props.sucursal\n }\n }\n\n var payloadPost = await API.post(apiName, path, myInit);\n\n if (payloadPost.ok === 'true') {\n setVisibleToast(true);\n setMessageToast('Se afectó la Devolución Directa con éxito');\n setTypeToast('success')\n }\n else if (payloadPost.ok === 'false') {\n setVisibleToast(true);\n setMessageToast(payloadPost.message);\n setTypeToast('error')\n }\n\n editButton(ID);\n\n setVisibleLoadPanel(false);\n }\n catch (e) {\n setVisibleLoadPanel(false);\n\n if (e === 'No current user') {\n history.push('/');\n\n window.location.reload();\n }\n }\n };\n\n async function getItemsButton() {\n try {\n if (directReturnPayload.header.Estatus === 'Sin Afectar') {\n if (!directReturnPayload.header.Pedido || directReturnPayload.header.Pedido === '') {\n setVisibleToast(true);\n setMessageToast('Falta especificar el Pedido')\n setTypeToast('error');\n return;\n }\n if (!directReturnPayload.header.Almacen || directReturnPayload.header.Almacen === '') {\n setVisibleToast(true);\n setMessageToast('Falta especificar el Almacén')\n setTypeToast('error');\n return;\n }\n }\n\n setVisibleLoadPanel(true);\n\n var ID = directReturnPayload.header.ID;\n\n //Guardamos los cambios del grid\n if (gridArticulosRef.current) {\n var gridArticulos = gridArticulosRef.current.instance();\n\n gridArticulos.saveEditData();\n }\n\n //Despues enviamos todo al backend\n let apiName = 'AdminSC';\n let path = '/procesadevoluciondirecta';\n\n let myInit = {\n headers: {\n 'Content-Type': 'application/json',\n Authorization: `${(await Auth.currentSession()).getAccessToken().getJwtToken()}`\n },\n body: {\n ID: ID,\n payload: directReturnPayload,\n action: 'getItems',\n username: JSON.parse(JSON.stringify(await Auth.currentAuthenticatedUser())).username,\n usuario: props.usuario,\n sucursal: props.sucursal\n }\n }\n\n var payloadPost = await API.post(apiName, path, myInit);\n\n if (payloadPost.ok === 'true') {\n setVisibleToast(true);\n setMessageToast('Artículos actualizados con éxito');\n setTypeToast('success')\n }\n else if (payloadPost.ok === 'false') {\n setVisibleToast(true);\n setMessageToast(payloadPost.message);\n setTypeToast('error')\n }\n\n editButton(ID);\n\n setVisibleLoadPanel(false);\n }\n catch (e) {\n setVisibleLoadPanel(false);\n\n if (e === 'No current user') {\n history.push('/');\n\n window.location.reload();\n }\n }\n };\n\n async function selectAllButton() {\n try {\n if (directReturnPayload.header.Estatus === 'Sin Afectar') {\n if (!directReturnPayload.header.Pedido || directReturnPayload.header.Pedido === '') {\n setVisibleToast(true);\n setMessageToast('Falta especificar el Pedido')\n setTypeToast('error');\n return;\n }\n if (!directReturnPayload.header.Almacen || directReturnPayload.header.Almacen === '') {\n setVisibleToast(true);\n setMessageToast('Falta especificar el Almacén')\n setTypeToast('error');\n return;\n }\n }\n\n setVisibleLoadPanel(true);\n\n var ID = directReturnPayload.header.ID;\n\n //Guardamos los cambios del grid\n if (gridArticulosRef.current) {\n var gridArticulos = gridArticulosRef.current.instance();\n\n gridArticulos.saveEditData();\n }\n\n //Despues enviamos todo al backend\n let apiName = 'AdminSC';\n let path = '/procesadevoluciondirecta';\n\n let myInit = {\n headers: {\n 'Content-Type': 'application/json',\n Authorization: `${(await Auth.currentSession()).getAccessToken().getJwtToken()}`\n },\n body: {\n ID: ID,\n payload: directReturnPayload,\n action: 'selectAll',\n username: JSON.parse(JSON.stringify(await Auth.currentAuthenticatedUser())).username,\n usuario: props.usuario,\n sucursal: props.sucursal\n }\n }\n\n var payloadPost = await API.post(apiName, path, myInit);\n\n if (payloadPost.ok === 'true') {\n setVisibleToast(true);\n setMessageToast('Artículos seleccionados con éxito');\n setTypeToast('success')\n }\n else if (payloadPost.ok === 'false') {\n setVisibleToast(true);\n setMessageToast(payloadPost.message);\n setTypeToast('error')\n }\n\n editButton(ID);\n\n setVisibleLoadPanel(false);\n }\n catch (e) {\n setVisibleLoadPanel(false);\n\n if (e === 'No current user') {\n history.push('/');\n\n window.location.reload();\n }\n }\n };\n\n async function voidButton() {\n try {\n if (!window.confirm('¿Desea cancelar la Devolución Directa?'))\n return;\n\n setVisibleLoadPanel(true);\n\n var ID = directReturnPayload.header.ID;\n\n //Guardamos los cambios del grid\n if (gridArticulosRef.current) {\n var gridArticulos = gridArticulosRef.current.instance();\n\n gridArticulos.saveEditData();\n }\n\n //Despues enviamos todo al backend\n let apiName = 'AdminSC';\n let path = '/procesadevoluciondirecta';\n\n let myInit = {\n headers: {\n 'Content-Type': 'application/json',\n Authorization: `${(await Auth.currentSession()).getAccessToken().getJwtToken()}`\n },\n body: {\n ID: ID,\n payload: directReturnPayload,\n action: 'void',\n username: JSON.parse(JSON.stringify(await Auth.currentAuthenticatedUser())).username,\n usuario: props.usuario,\n sucursal: props.sucursal\n }\n }\n\n var payloadPost = await API.post(apiName, path, myInit);\n\n if (payloadPost.ok === 'true') {\n setVisibleToast(true);\n setMessageToast('Se canceló la Devolución Directa');\n setTypeToast('success')\n }\n else if (payloadPost.ok === 'false') {\n setVisibleToast(true);\n setMessageToast(payloadPost.message);\n setTypeToast('error')\n }\n\n editButton(ID);\n\n setVisibleLoadPanel(false);\n }\n catch (e) {\n setVisibleLoadPanel(false);\n\n if (e === 'No current user') {\n history.push('/');\n\n window.location.reload();\n }\n }\n };\n\n async function selectNothingButton() {\n try {\n if (directReturnPayload.header.Estatus === 'Sin Afectar') {\n if (!directReturnPayload.header.Pedido || directReturnPayload.header.Pedido === '') {\n setVisibleToast(true);\n setMessageToast('Falta especificar el Pedido')\n setTypeToast('error');\n return;\n }\n if (!directReturnPayload.header.Almacen || directReturnPayload.header.Almacen === '') {\n setVisibleToast(true);\n setMessageToast('Falta especificar el Almacén')\n setTypeToast('error');\n return;\n }\n }\n\n setVisibleLoadPanel(true);\n\n var ID = directReturnPayload.header.ID;\n\n //Guardamos los cambios del grid\n if (gridArticulosRef.current) {\n var gridArticulos = gridArticulosRef.current.instance();\n\n gridArticulos.saveEditData();\n }\n\n //Despues enviamos todo al backend\n let apiName = 'AdminSC';\n let path = '/procesadevoluciondirecta';\n\n let myInit = {\n headers: {\n 'Content-Type': 'application/json',\n Authorization: `${(await Auth.currentSession()).getAccessToken().getJwtToken()}`\n },\n body: {\n ID: ID,\n payload: directReturnPayload,\n action: 'selectNothing',\n username: JSON.parse(JSON.stringify(await Auth.currentAuthenticatedUser())).username,\n usuario: props.usuario,\n sucursal: props.sucursal\n }\n }\n\n var payloadPost = await API.post(apiName, path, myInit);\n\n if (payloadPost.ok === 'true') {\n setVisibleToast(true);\n setMessageToast('Artículos seleccionados con éxito');\n setTypeToast('success')\n }\n else if (payloadPost.ok === 'false') {\n setVisibleToast(true);\n setMessageToast(payloadPost.message);\n setTypeToast('error')\n }\n\n editButton(ID);\n\n setVisibleLoadPanel(false);\n }\n catch (e) {\n setVisibleLoadPanel(false);\n\n if (e === 'No current user') {\n history.push('/');\n\n window.location.reload();\n }\n }\n };\n\n function refreshButton() {\n if (gridTableroRef.current) {\n var gridTablero = gridTableroRef.current.instance();\n\n gridTablero.refresh();\n }\n }\n\n async function newButton(salesorder) {\n try {\n let apiName = 'AdminSC';\n let path = '/procesadevoluciondirecta';\n\n let myInit = {\n headers: {\n 'Content-Type': 'application/json',\n Authorization: `${(await Auth.currentSession()).getAccessToken().getJwtToken()}`\n },\n queryStringParameters: {\n action: 'new',\n salesorder: salesorder,\n username: JSON.parse(JSON.stringify(await Auth.currentAuthenticatedUser())).username,\n usuario: props.usuario,\n sucursal: props.sucursal\n }\n };\n\n var payloadNew = await API.get(apiName, path, myInit);\n\n setDirectReturnPayload(payloadNew);\n\n setAttachments([]);\n\n setIsDetail(true);\n setId(undefined);\n\n setActivateCustomSalesOrderField(true);\n setActivateCustomWarehouseField(true);\n setActivateUpdateForm(true);\n setActivateUpdateGrid(true);\n setAcceptCustomValue(false);\n setActivateSaveButton(true);\n setActivateDeleteButton(false);\n setActivateConfirmButton(false);\n setActivatePDFButton(false);\n setActivateGetItemButton(false);\n setActivateSelectItemButton(false);\n setActivateCancelButton(false);\n setActivateCantidadButton(false);\n setActivateCantidad2Button(false);\n setActivateAttachments(false);\n\n setVisibleLoadPanel(false);\n setContextMenuItems([]);\n }\n catch (e) {\n if (e === 'No current user') {\n history.push('/');\n\n window.location.reload();\n }\n }\n };\n\n async function deleteButton() {\n try {\n if (!window.confirm('¿Desea eliminar la Devolución Directa?'))\n return;\n\n setVisibleLoadPanel(true);\n\n var ID = directReturnPayload.header.ID;\n\n if (!ID) {\n //Vamos al tablero de control\n history.push('/DirectReturn');\n return;\n }\n\n let apiName = 'AdminSC';\n let path = '/procesadevoluciondirecta';\n\n let myInit = {\n headers: {\n 'Content-Type': 'application/json',\n Authorization: `${(await Auth.currentSession()).getAccessToken().getJwtToken()}`\n },\n body: {\n ID: ID,\n payload: directReturnPayload,\n action: 'delete',\n username: JSON.parse(JSON.stringify(await Auth.currentAuthenticatedUser())).username,\n usuario: props.usuario,\n sucursal: props.sucursal\n }\n }\n\n var payloadPost = await API.post(apiName, path, myInit);\n\n if (payloadPost.ok === 'true') {\n setVisibleLoadPanel(false);\n\n setVisibleToast(true);\n setMessageToast('Devolución Directa eliminada con éxito');\n setTypeToast('success')\n\n setIsDetail(false);\n\n //Vamos al tablero de control\n history.push('/DirectReturn');\n }\n else if (payloadPost.ok === 'false') {\n setVisibleLoadPanel(false);\n\n setVisibleToast(true);\n setMessageToast(payloadPost.message);\n setTypeToast('error')\n }\n }\n catch (e) {\n setVisibleLoadPanel(false);\n\n if (e === 'No current user') {\n history.push('/');\n\n window.location.reload();\n }\n }\n }\n\n function printButton() {\n var baseUrl = window.location.href.split('/')[0];\n\n window.open(baseUrl + \"/#/PdfRender?type=directreturn&id=\" + id, \"_blank\");\n };\n\n function openRelatedRecord(redirect) {\n if (redirect) {\n var baseUrl = window.location.href.split('#/')[0];\n\n redirect = baseUrl + '#' + redirect;\n\n window.open(redirect, \"_blank\");\n }\n };\n\n function openRelatedRecordButton(data) {\n return (\n <button onClick={() => openRelatedRecord(data.data.redirect)}><FontAwesomeIcon icon={faArrowUpRightFromSquare} /></button>\n )\n };\n\n async function getPedidos(sqlFilter) {\n let apiName = 'AdminSC';\n let path = '/getcatalogo';\n\n let myInit = {\n headers: {\n 'Content-Type': 'application/json',\n Authorization: `${(await Auth.currentSession()).getAccessToken().getJwtToken()}`\n },\n queryStringParameters: {\n type: 'PedidoDevolucionDirecta',\n username: JSON.parse(JSON.stringify(await Auth.currentAuthenticatedUser())).username,\n sqlFilter: sqlFilter\n }\n }\n\n var pedidosGet = await API.get(apiName, path, myInit);\n var tmpPedidos = [];\n\n for (var pedidosGetIndex in pedidosGet) {\n\n tmpPedidos.push({\n name: pedidosGet[pedidosGetIndex].SCRama,\n value: pedidosGet[pedidosGetIndex].SCRama\n })\n }\n\n return tmpPedidos;\n };\n\n async function getAlmacenes() {\n let apiName = 'AdminSC';\n let path = '/getcatalogo';\n\n let myInit = {\n headers: {\n 'Content-Type': 'application/json',\n Authorization: `${(await Auth.currentSession()).getAccessToken().getJwtToken()}`\n },\n queryStringParameters: {\n type: 'AlmacenNormal',\n username: JSON.parse(JSON.stringify(await Auth.currentAuthenticatedUser())).username\n }\n }\n\n var pedidosGet = await API.get(apiName, path, myInit);\n\n setAlmacenes(pedidosGet);\n };\n\n async function getPaqueteria() {\n let apiName = 'AdminSC';\n let path = '/getcatalogo';\n\n let myInit = {\n headers: {\n 'Content-Type': 'application/json',\n Authorization: `${(await Auth.currentSession()).getAccessToken().getJwtToken()}`\n },\n queryStringParameters: {\n type: 'Paqueteria',\n username: JSON.parse(JSON.stringify(await Auth.currentAuthenticatedUser())).username\n }\n }\n\n var paqueteriaGet = await API.get(apiName, path, myInit);\n\n setPaqueteria(paqueteriaGet);\n };\n\n useEffect(() => {\n window.addEventListener('popstate', (e) => {\n var hash;\n\n try {\n hash = e.target.location.hash;\n }\n catch (e) {\n hash = '';\n }\n\n if (hash === '#/DirectReturn') {\n history.push('/DirectReturn');\n\n window.location.reload();\n }\n });\n\n async function initialize() {\n setVisibleLoadPanel(true);\n\n await getAlmacenes();\n\n await getPaqueteria();\n\n setVisibleLoadPanel(false);\n }\n\n initialize();\n\n //En caso de solicitar un ID especifico, redireccionamos a ese ID\n if (!props.match.isExact) {\n var urlID = props.location.pathname.replace('/DirectReturn/', '');\n\n var search = props.location.search;\n var salesorder;\n\n if (search)\n salesorder = search.replace('?salesorder=', '');\n\n if (urlID === 'undefined')\n urlID = undefined;\n\n if (urlID)\n editButton(urlID);\n else\n newButton(salesorder);\n }\n\n // eslint-disable-next-line\n }, []);\n\n function overrideOnValueChanged(e) {\n //Hacemos la data persistente en cuanto el usuario escriba en el campo\n // if (e.parentType === \"dataRow\") {\n // e.editorOptions.valueChangeEvent = \"input\";\n // }\n }\n\n function onHidingToast() {\n setVisibleToast(false);\n }\n\n const onFieldDatosProgramacionChanged = React.useCallback((e) => {\n var dataField = e.dataField;\n var value = e.value;\n\n\n if (formDatosGeneralesRef.current) {\n var formDatosGenerales = formDatosGeneralesRef.current.instance();\n\n if (e.dataField === 'Pedido') {\n if (e.value) {\n async function getSalesOrderInfo() {\n try {\n setVisibleLoadPanel(true);\n\n let apiName = 'AdminSC';\n let path = '/procesadevoluciondirecta';\n\n let myInit = {\n headers: {\n 'Content-Type': 'application/json',\n Authorization: `${(await Auth.currentSession()).getAccessToken().getJwtToken()}`\n },\n queryStringParameters: {\n action: 'getSalesOrderInfo',\n salesOrder: value,\n username: JSON.parse(JSON.stringify(await Auth.currentAuthenticatedUser())).username\n }\n };\n\n var payloadNew = await API.get(apiName, path, myInit);\n\n formDatosGenerales.updateData('NombreCliente', payloadNew.header.NombreCliente);\n formDatosGenerales.updateData('Telefono', payloadNew.header.Telefono);\n formDatosGenerales.updateData('Direccion', payloadNew.header.Direccion);\n formDatosGenerales.updateData('Colonia', payloadNew.header.Colonia);\n formDatosGenerales.updateData('CodigoPostal', payloadNew.header.CodigoPostal);\n formDatosGenerales.updateData('Estado', payloadNew.header.Estado);\n formDatosGenerales.updateData('Municipio', payloadNew.header.Municipio);\n formDatosGenerales.updateData('Pais', payloadNew.header.Pais);\n\n setVisibleLoadPanel(false);\n }\n catch (e) {\n if (e === 'No current user') {\n history.push('/');\n\n window.location.reload();\n }\n }\n }\n\n getSalesOrderInfo();\n }\n else {\n formDatosGenerales.updateData('NombreCliente', undefined);\n formDatosGenerales.updateData('Telefono', undefined);\n formDatosGenerales.updateData('Direccion', undefined);\n formDatosGenerales.updateData('Colonia', undefined);\n formDatosGenerales.updateData('CodigoPostal', undefined);\n formDatosGenerales.updateData('Estado', undefined);\n formDatosGenerales.updateData('Municipio', undefined);\n formDatosGenerales.updateData('Pais', undefined);\n }\n }\n }\n }, [formDatosGeneralesRef, history])\n\n function contextMenuItemClick(e) {\n if (e.itemData.text === 'Seleccionar Todo') {\n selectAllButton();\n }\n else if (e.itemData.text === 'Eliminar Selección') {\n selectNothingButton();\n }\n };\n\n function estatusRelatedRecords(data) {\n return (\n <TransactionStatus {...props} Estatus={data.data.Estatus} />\n )\n };\n\n function onExporting(e) {\n const workbook = new Workbook();\n const worksheet = workbook.addWorksheet('Datos');\n\n exportDataGrid({\n component: e.component,\n worksheet,\n autoFilterEnabled: true,\n }).then(() => {\n workbook.xlsx.writeBuffer().then((buffer) => {\n saveAs(new Blob([buffer], { type: 'application/octet-stream' }), 'Datos.xlsx');\n });\n });\n e.cancel = true;\n };\n\n return (\n <div>\n {isDetail === false ? (\n <div class=\"bg-gray-200 m-2\">\n <h1 class=\"font-sans inline-block text-xl font-bold text-gray-700 leading-8 align-top mb-1\"><FontAwesomeIcon icon={faList} size=\"lg\" /> Devoluciones Directas</h1>\n </div>\n ) :\n (\n <div class=\"bg-gray-200 m-2\">\n <h1 class=\"font-sans inline-block text-xl font-bold text-gray-700 leading-8 align-top mb-1\"><FontAwesomeIcon icon={faPersonCarryBox} size=\"xl\" /> {(directReturnPayload.header ? directReturnPayload.header.Movimiento : 'Devolución Directa')}</h1>\n <TransactionStatus {...props} Estatus={directReturnPayload.header.Estatus} />\n </div>\n )}\n\n <LoadPanel\n shadingColor=\"rgba(0,0,0,0.4)\"\n visible={visibleLoadPanel}\n showIndicator={true}\n message=\"Por favor espere...\"\n shading={true}\n showPane={true}\n hideOnOutsideClick={false}\n />\n\n <Toast\n visible={visibleToast}\n message={messageToast}\n type={typeToast}\n onHiding={onHidingToast}\n displayTime={5000}\n width={'auto'}\n position={{\n my: 'top center',\n at: 'top center',\n of: window,\n offset: '0 130'\n }}\n />\n\n <div class=\"bg-gray-200 m-2\">\n {isDetail === false ? (\n <div class=\"bg-white p-3 shadow-xl\">\n\n {permissionLevel === 'Editar' ?\n (\n <div>\n <Link to=\"/DirectReturn/undefined\">\n <button class=\"mb-2 bg-green-500 hover:bg-green-700 text-white font-bold py-2 px-4 rounded\" onClick={() => newButton()}><FontAwesomeIcon icon={faFileAlt} /> Nueva Devolución Directa</button>\n </Link>\n\n <button onClick={refreshButton} type=\"submit\" class=\"ml-4 mb-4 bg-blue-500 hover:bg-blue-700 text-white font-bold py-2 px-4 rounded\">\n <FontAwesomeIcon icon={faArrowsRotate} /> Actualizar\n </button>\n </div>\n ) :\n (\n <div>\n <button onClick={refreshButton} type=\"submit\" class=\"mb-4 bg-blue-500 hover:bg-blue-700 text-white font-bold py-2 px-4 rounded\">\n <FontAwesomeIcon icon={faArrowsRotate} /> Actualizar\n </button>\n </div>\n )}\n\n <div className=\"options mb-2\">\n <div className=\"option\">\n <CheckBox text=\"Expandir todos los grupos\"\n value={autoExpandAll}\n onValueChanged={onAutoExpandAllChanged}></CheckBox>\n </div>\n </div>\n <DataGrid\n height={800}\n id=\"gridContainer\"\n columnsAutoWidth={true}\n filterBuilder={filterBuilder}\n dataSource={store}\n defaultFilterValue={filterValue}\n allowColumnReordering={true}\n allowColumnResizing={true}\n columnResizingMode={\"widget\"}\n showBorders={true}\n rowAlternationEnabled={true}\n showRowLines={true}\n showColumnLines={true}\n remoteOperations={{ filtering: true }}\n ref={gridTableroRef}\n onExporting={onExporting}\n >\n <Scrolling rowRenderingMode='virtual'></Scrolling>\n <Paging defaultPageSize={10} />\n <Pager\n visible={true}\n allowedPageSizes={allowedPageSizes}\n displayMode='compact'\n showPageSizeSelector={true}\n showInfo={true}\n showNavigationButtons={true}\n />\n <FilterRow visible={true} />\n <FilterPanel visible={true} />\n <FilterBuilderPopup position={filterBuilderPopupPosition} />\n\n <HeaderFilter visible={true} />\n\n <GroupPanel visible={true} />\n <SearchPanel visible={true} />\n <ColumnChooser\n enabled={true}\n mode='select'\n >\n <ColumnChooserSearch\n enabled={true}\n />\n\n <ColumnChooserSelection\n allowSelectAll={true}\n selectByClick={true}\n recursive={true}\n />\n </ColumnChooser>\n <Grouping autoExpandAll={autoExpandAll} />\n <StateStoring enabled={true} type=\"localStorage\" storageKey=\"gridContainerDirectReturn\" />\n <Export enabled={true} />\n\n <Column caption=\"\" alignment=\"center\" width={100} cellRender={editDirectReturn} />\n <Column dataField=\"MovID\" dataType=\"string\" width={110} caption=\"Folio\" />\n <Column dataField=\"FechaEmision\" caption=\"Fecha Emisión\" dataType=\"date\" width={130} />\n <Column dataField=\"FechaProgramada\" caption=\"Fecha Programada\" dataType=\"date\" width={130} visible={false} />\n <Column dataField=\"Estatus\" dataType=\"string\" width={120} />\n <Column dataField=\"Pedido\" dataType=\"string\" width={120} />\n <Column caption=\"Plaza\" dataField=\"Plaza\" dataType=\"string\" width={150} visible={false} />\n\n <Column dataField=\"ID\" dataType=\"number\" width={150} visible={false} />\n <Column dataField=\"Mov\" dataType=\"string\" width={190} caption=\"Tipo Movimiento\" visible={false} />\n <Column dataField=\"Movimiento\" dataType=\"string\" width={190} visible={false} />\n\n <Column dataField=\"Almacen\" dataType=\"string\" width={190} caption=\"Almacén\" visible={false} />\n <Column dataField=\"NombreAlmacen\" dataType=\"string\" width={190} caption=\"Nombre Almacén\" visible={false} />\n <Column dataField=\"Sucursal\" dataType=\"number\" width={150} visible={false} />\n <Column dataField=\"NombreSucursal\" dataType=\"string\" width={190} visible={false} />\n <Column dataField=\"Usuario\" dataType=\"string\" width={190} visible={false} />\n <Column dataField=\"NombreUsuario\" dataType=\"string\" width={190} visible={false} />\n <Column dataField=\"UsuarioOriginal\" dataType=\"string\" width={190} visible={false} />\n <Column dataField=\"RequiereAutorizacion\" dataType=\"boolean\" caption=\"Requiere Autorización\" width={200} visible={false} />\n <Column dataField=\"Autorizado\" dataType=\"boolean\" width={150} visible={false} />\n <Column dataField=\"FechaAutorizacion\" caption=\"Fecha Autorización\" dataType=\"datetime\" width={200} visible={false} />\n <Column dataField=\"EntregaPaqueteria\" dataType=\"boolean\" caption=\"Entrega por Paquetería\" width={200} visible={false} />\n <Column dataField=\"Paqueteria\" dataType=\"string\" caption=\"Paquetería\" width={200} visible={false} />\n <Column dataField=\"NumeroGuia\" dataType=\"string\" caption=\"Número de Guía\" width={200} visible={false} />\n </DataGrid>\n </div>\n ) : (<div />)}\n <Route exact path=\"/DirectReturn/:ID\" render={({ match }) => {\n return (\n <div class=\"bg-gray-200\">\n {isDetail.toString() === 'true' ?\n (\n <div>\n <Link to=\"/DirectReturn\">\n <button onClick={cancelEditButton} type=\"submit\" class=\"mb-4 bg-red-500 hover:bg-red-700 text-white font-bold py-2 px-4 rounded\">\n <FontAwesomeIcon icon={faArrowRotateLeft} /> Regresar\n </button>\n </Link>\n\n {activateSaveButton.toString() === 'true' ?\n (\n <button onClick={saveButton} type=\"submit\" class=\"ml-4 mb-4 bg-blue-500 hover:bg-blue-700 text-white font-bold py-2 px-4 rounded\">\n <FontAwesomeIcon icon={faSave} /> Guardar Cambios\n </button>\n ) : (\n <div class=\"inline-block\"></div>\n )}\n\n {activateConfirmButton.toString() === 'true' && id ?\n (\n <button onClick={confirmButton} type=\"submit\" class=\"ml-4 mb-4 bg-green-500 hover:bg-green-700 text-white font-bold py-2 px-4 rounded\">\n <FontAwesomeIcon icon={faPlay} /> Afectar\n </button>\n ) : (\n <div class=\"inline-block\"></div>\n )}\n\n {activateApproveButton.toString() === 'true' && id ?\n (\n <button onClick={approveButton} type=\"submit\" class=\"ml-4 mb-4 bg-green-500 hover:bg-green-700 text-white font-bold py-2 px-4 rounded\">\n <FontAwesomeIcon icon={faThumbsUp} /> Autorizar\n </button>\n ) : (\n <div class=\"inline-block\"></div>\n )}\n\n {activateGetItemButton.toString() === 'true' && id ?\n (\n <button onClick={getItemsButton} type=\"submit\" class=\"ml-4 mb-4 bg-yellow-500 hover:bg-yellow-700 text-white font-bold py-2 px-4 rounded\">\n <FontAwesomeIcon icon={faLightbulb} /> Obtener Artículos\n </button>\n ) :\n (\n <div class=\"inline-block\"></div>\n )}\n\n {activateSelectItemButton.toString() === 'true' && id ?\n (\n <button onClick={selectAllButton} type=\"submit\" class=\"ml-4 mb-4 bg-blue-500 hover:bg-blue-700 text-white font-bold py-2 px-4 rounded\">\n <FontAwesomeIcon icon={faCircleCheck} /> Todo\n </button>\n ) :\n (\n <div class=\"inline-block\"></div>\n )}\n\n {activateSelectItemButton.toString() === 'true' && id ?\n (\n <button onClick={selectNothingButton} type=\"submit\" class=\"ml-4 mb-4 bg-blue-500 hover:bg-blue-700 text-white font-bold py-2 px-4 rounded\">\n <FontAwesomeIcon icon={faCircleX} /> Nada\n </button>\n ) :\n (\n <div class=\"inline-block\"></div>\n )}\n\n {activateDeleteButton.toString() === 'true' && id ?\n (\n <button onClick={deleteButton} type=\"submit\" class=\"ml-4 mb-4 bg-red-500 hover:bg-red-700 text-white font-bold py-2 px-4 rounded\">\n <FontAwesomeIcon icon={faTrash} /> Eliminar\n </button>\n ) :\n (\n <div class=\"inline-block\"></div>\n )}\n\n {activateCancelButton.toString() === 'true' && id ?\n (\n <button onClick={voidButton} type=\"submit\" class=\"ml-4 mb-4 bg-red-500 hover:bg-red-700 text-white font-bold py-2 px-4 rounded\">\n <FontAwesomeIcon icon={faWindowClose} /> Cancelar\n </button>\n ) :\n (\n <div class=\"inline-block\"></div>\n )}\n\n {activatePDFButton.toString() === 'true' && id ?\n (\n <button onClick={printButton} type=\"submit\" class=\"ml-4 mb-4 bg-gray-500 hover:bg-gray-700 text-white font-bold py-2 px-4 rounded\">\n <FontAwesomeIcon icon={faFilePdf} /> PDF\n </button>\n ) :\n (\n <div class=\"inline-block\"></div>\n )}\n\n <div class=\"bg-white p-4 shadow-xl\">\n <ContextMenu\n dataSource={contextMenuItems}\n width={200}\n target=\"#gridArticulos\"\n onItemClick={contextMenuItemClick}\n />\n\n <Form\n id=\"formTransaccion\"\n labelMode={'outside'}\n formData={directReturnPayload.header}\n readOnly={!activateUpdateForm}\n showColonAfterLabel={false}\n labelLocation={'top'}\n onFieldDataChanged={onFieldDatosProgramacionChanged}\n ref={formDatosGeneralesRef}\n >\n <TabbedItem>\n <TabPanelOptions deferRendering={false} showNavButtons={true} />\n <Tab title=\"Datos Generales\" colCount={7}>\n <GroupItem caption=\"General\" colSpan={2} >\n <Item cssClass=\"boldText\" dataField=\"Movimiento\" editorOptions={movimientoEditorOptions} />\n <Item dataField=\"FechaEmision\" editorType=\"dxDateBox\" editorOptions={fechaEmisionEditorOptions}>\n <Label text={\"Fecha Emisión\"} />\n </Item>\n <Item dataField=\"FechaProgramada\" editorType=\"dxDateBox\" >\n <Label text={\"Fecha Programada\"} />\n </Item>\n <Item dataField=\"Pedido\" editorType=\"dxLookup\" editorOptions={pedidoEditorOptions} >\n <Label text=\"Pedido\" />\n </Item>\n <Item dataField=\"Almacen\" editorType=\"dxSelectBox\" editorOptions={almacenEditorOptions} >\n <Label text=\"Almacén\" />\n </Item>\n <Item dataField=\"EntregaPaqueteria\" editorType=\"dxCheckBox\" >\n <Label text=\"Entrega por paquetería\" />\n </Item>\n </GroupItem>\n <GroupItem caption=\"Artículos\" colSpan={5} >\n <DataGrid\n id=\"gridArticulos\"\n ref={gridArticulosRef}\n columnsAutoWidth={true}\n dataSource={directReturnPayload.detail}\n showBorders={true}\n showColumnLines={true}\n showRowLines={true}\n rowAlternationEnabled={true}\n allowColumnResizing={true}\n columnResizingMode=\"widget\"\n allowColumnReordering={false}\n repaintChangesOnly={false}\n >\n <Editing\n mode=\"cell\"\n allowUpdating={activateUpdateGrid}\n allowAdding={false}\n allowDeleting={false}\n />\n <Sorting mode=\"none\" />\n\n <Column dataField=\"Renglon\" width={190} visible={false} allowEditing={false} />\n <Column dataField=\"Articulo\" caption=\"Artículo\" width={100} allowEditing={false} />\n <Column dataField=\"Descripcion\" caption=\"Descripción\" width={350} allowEditing={false} />\n <Column dataField=\"Cantidad\" width={80} allowEditing={false} dataType=\"number\" />\n <Column dataField=\"CantidadA\" caption=\"Programación\" width={110} allowEditing={activateCantidadButton} visible={directReturnPayload.header.Estatus === 'Sin Afectar' || directReturnPayload.header.Estatus === 'Pendiente' || directReturnPayload.header.Estatus === 'Disponible' || directReturnPayload.header.Estatus === 'Concluido'} dataType=\"number\" />\n <Column dataField=\"CantidadRecibidaWMS\" caption=\"Rec. WMS\" width={100} allowEditing={false} visible={directReturnPayload.header.Estatus === 'Pendiente' || directReturnPayload.header.Estatus === 'Concluido'} dataType=\"number\" />\n <Column dataField=\"CantidadA2\" caption=\"Entrega\" width={100} allowEditing={activateCantidad2Button} visible={directReturnPayload.header.Estatus === 'Pendiente' || directReturnPayload.header.Estatus === 'Concluido'} dataType=\"number\" />\n </DataGrid>\n </GroupItem>\n </Tab>\n <Tab title=\"Datos del Cliente\" colCount={3}>\n <Item dataField=\"NombreCliente\" editorOptions={datosClienteEditorOptions} >\n <Label text=\"Nombre\" />\n </Item>\n <Item dataField=\"Telefono\" editorOptions={datosClienteEditorOptions} >\n <Label text=\"Teléfono\" />\n </Item>\n <Item dataField=\"Direccion\" editorOptions={datosClienteEditorOptions} >\n <Label text=\"Dirección\" />\n </Item>\n <Item dataField=\"Colonia\" editorOptions={datosClienteEditorOptions} />\n <Item dataField=\"CodigoPostal\" editorOptions={datosClienteEditorOptions} >\n <Label text=\"C.P.\" />\n </Item>\n <Item dataField=\"Estado\" editorOptions={datosClienteEditorOptions} />\n <Item dataField=\"Municipio\" editorOptions={datosClienteEditorOptions} />\n <Item dataField=\"Pais\" editorOptions={datosClienteEditorOptions} >\n <Label text=\"País\" />\n </Item>\n </Tab>\n <Tab title=\"Paquetería\" colCount={3} visible={activatePaqueteria}>\n <Item dataField=\"Paqueteria\" editorType=\"dxSelectBox\" editorOptions={paqueteriaEditorOptions} >\n <Label text=\"Paquetería\" />\n </Item>\n <Item dataField=\"NumeroGuia\" editorOptions={numeroGuiaEditorOptions} >\n <Label text=\"Número de Guía\" />\n </Item>\n </Tab>\n <Tab title=\"Observaciones\" >\n <Item dataField=\"Observaciones\" editorType=\"dxTextArea\" >\n <Label text=\"Observaciones\" visible={false} />\n </Item>\n </Tab>\n <Tab title=\"Registros Relacionados\">\n <DataGrid\n id=\"gridRelatedRecords\"\n columnsAutoWidth={true}\n dataSource={directReturnPayload.relatedRecords}\n allowColumnReordering={true}\n allowColumnResizing={true}\n columnResizingMode={\"widget\"}\n showBorders={true}\n rowAlternationEnabled={true}\n showRowLines={true}\n showColumnLines={true}\n >\n <HeaderFilter visible={false} />\n\n <Column dataField=\"name\" dataType=\"string\" width={300} caption=\"Transacción\" />\n <Column caption=\"Estatus\" alignment=\"center\" width={150} cellRender={estatusRelatedRecords} />\n <Column caption=\"\" alignment=\"center\" width={50} cellRender={openRelatedRecordButton} />\n <Column dataField=\"FechaEmision\" dataType=\"date\" width={150} caption=\"Fecha Emisión\" />\n </DataGrid>\n </Tab>\n <Tab title=\"Log Estatus\">\n <DataGrid\n id=\"gridLogEstatus\"\n columnsAutoWidth={true}\n dataSource={directReturnPayload.movEstatusLog}\n allowColumnReordering={true}\n allowColumnResizing={true}\n columnResizingMode={\"widget\"}\n showBorders={true}\n rowAlternationEnabled={true}\n showRowLines={true}\n showColumnLines={true}\n >\n <HeaderFilter visible={false} />\n <Column dataField=\"Usuario\" dataType=\"string\" width={350} caption=\"Usuario\" />\n <Column caption=\"Estatus\" alignment=\"center\" width={150} cellRender={estatusRelatedRecords} />\n <Column dataField=\"Fecha\" dataType=\"datetime\" width={300} caption=\"Fecha\" />\n </DataGrid>\n </Tab>\n <Tab title=\"Archivos Anexos\" >\n <div className=\"widget-container\">\n <FileUploader\n multiple={true}\n accept=\"*\"\n uploadMode=\"useButtons\"\n chunkSize={20000000}\n maxFileSize={20000000}\n uploadChunk={uploadChunk}\n disabled={!activateAttachments}\n />\n </div>\n <div id=\"wrapper\" className=\"show-widget\" >\n <div id=\"widget-area\">\n <FileManager id=\"attachmentManager\" fileSystemProvider={attachments} onItemDeleting={onAttachmentDeleting} onItemDownloading={onItemDownloading} onSelectedFileOpened={onAttachmentOpen}>\n <Permissions\n create={false}\n copy={false}\n move={false}\n delete={activateAttachments}\n rename={false}\n upload={false}\n download={true}\n >\n </Permissions>\n </FileManager>\n </div>\n </div>\n </Tab>\n </TabbedItem>\n </Form>\n </div>\n </div>\n ) :\n (\n <div></div>\n )\n }\n </div>\n )\n }}\n />\n </div>\n </div>\n );\n}\n","import React, { useState, useEffect, useRef, useMemo } from 'react';\n\n// LoadPanel\nimport { LoadPanel } from 'devextreme-react/load-panel';\n\n// Toast\nimport { Toast } from 'devextreme-react/toast';\n\n//Form\nimport Form, { GroupItem, Label, TabbedItem, TabPanelOptions, Tab } from 'devextreme-react/form';\n\nimport { Auth, API, Storage } from 'aws-amplify';\n\n// Ruteador\nimport { Route, Link, useHistory } from \"react-router-dom\";\n\n// Grid\nimport DataGrid, {\n Column, FilterRow, HeaderFilter, FilterPanel, FilterBuilderPopup,\n GroupPanel, Grouping, SearchPanel, Sorting, Editing, Lookup, Toolbar, Item, RequiredRule,\n Scrolling, Pager, Paging, Summary, TotalItem, StateStoring, ColumnChooser, Format, Selection,\n Export, ColumnChooserSearch, ColumnChooserSelection\n} from 'devextreme-react/data-grid';\n\n//CheckBox\nimport CheckBox from 'devextreme-react/check-box';\n\n//ContextMenu\nimport ContextMenu from 'devextreme-react/context-menu';\n\n// Iconos\nimport { FontAwesomeIcon } from \"@fortawesome/react-fontawesome\";\nimport { faGlasses } from \"@fortawesome/pro-solid-svg-icons\";\nimport { faPencilAlt } from \"@fortawesome/pro-solid-svg-icons\";\nimport { faArrowRotateLeft } from \"@fortawesome/pro-solid-svg-icons\";\nimport { faSave } from \"@fortawesome/pro-solid-svg-icons\";\nimport { faList } from \"@fortawesome/pro-duotone-svg-icons\";\nimport { faFilePdf } from \"@fortawesome/pro-solid-svg-icons\";\nimport { faArrowsRotate } from \"@fortawesome/pro-solid-svg-icons\";\nimport { faFileAlt } from \"@fortawesome/pro-solid-svg-icons\";\nimport { faTruckFast } from \"@fortawesome/pro-duotone-svg-icons\";\nimport { faPlay } from \"@fortawesome/pro-solid-svg-icons\";\nimport { faTrash } from \"@fortawesome/pro-solid-svg-icons\";\nimport { faLightbulb } from \"@fortawesome/pro-solid-svg-icons\";\nimport { faCircleCheck } from \"@fortawesome/pro-solid-svg-icons\";\nimport { faCircleX } from \"@fortawesome/pro-solid-svg-icons\";\nimport { faWindowClose } from \"@fortawesome/pro-solid-svg-icons\";\nimport { faThumbsUp } from \"@fortawesome/pro-solid-svg-icons\";\n\nimport 'devextreme/data/odata/store';\nimport CustomStore from 'devextreme/data/custom_store';\n\nimport DataSource from 'devextreme/data/data_source';\n\nimport '../ListStyle.css';\n\n//FileUploader\nimport FileUploader from 'devextreme-react/file-uploader';\n\n//FileManager\nimport FileManager, { Permissions } from 'devextreme-react/file-manager';\n\nimport dxDateBox from \"devextreme/ui/date_box\";\n\nimport dxNumberBox from \"devextreme/ui/number_box\";\n\nimport TransactionStatus from \"../TransactionStatus/TransactionStatus.js\";\n\nimport { Workbook } from 'exceljs';\nimport { saveAs } from 'file-saver';\nimport { exportDataGrid } from 'devextreme/excel_exporter'\n\ndxDateBox.defaultOptions({\n options: {\n dateSerializationFormat: \"yyyy-MM-dd\"\n }\n});\n\ndxNumberBox.defaultOptions({\n options: {\n step: 0\n }\n});\n\nfunction isNotEmpty(value) {\n return value !== undefined && value !== null && value !== '';\n}\n\nexport default function DeliveryRequest(props) {\n const history = useHistory();\n\n const [isDetail, setIsDetail] = useState(false);\n const [id, setId] = useState();\n const [permissionLevel, setPermissionLevel] = useState(props.nivel);\n const [voidDeliveryTransactions, setVoidDeliveryTransactions] = useState(props.voidDeliveryTransactions);\n const [approveDelivery, setApproveDelivery] = useState(props.approveDelivery);\n const [deliveryRequestPayload, setDeliveryRequestPayload] = useState({\n header: {},\n detail: [],\n movEstatusLog: []\n });\n\n const [contextMenuItems, setContextMenuItems] = useState([]);\n const [autoExpandAll, setAutoExpandAll] = useState(true);\n\n // setValue para el control tab\n const [value, setValue] = React.useState(0);\n\n const [visibleLoadPanel, setVisibleLoadPanel] = useState(false);\n\n const [visibleToast, setVisibleToast] = useState(false);\n const [messageToast, setMessageToast] = useState('');\n const [typeToast, setTypeToast] = useState('success');\n\n const [activateUpdateForm, setActivateUpdateForm] = useState(false);\n const [activateUpdateGrid, setActivateUpdateGrid] = useState(false);\n const [activateCustomSalesOrderField, setActivateCustomSalesOrderField] = useState(false);\n const [activateCustomWarehouseField, setActivateCustomWarehouseField] = useState(false);\n const [acceptCustomValues, setAcceptCustomValue] = useState(false);\n const [activateSaveButton, setActivateSaveButton] = useState(false);\n const [activateDeleteButton, setActivateDeleteButton] = useState(false);\n const [activateCancelButton, setActivateCancelButton] = useState(false);\n const [activateConfirmButton, setActivateConfirmButton] = useState(false);\n const [activateApproveButton, setActivateApproveButton] = useState(false);\n const [activateGetItemButton, setActivateGetItemButton] = useState(false);\n const [activateSelectItemButton, setActivateSelectItemButton] = useState(false);\n const [activatePDFButton, setActivatePDFButton] = useState(false);\n const [activateCantidadButton, setActivateCantidadButton] = useState(false);\n const [activateAttachments, setActivateAttachments] = useState(false);\n\n //Ref para el grid Articulos\n const [gridArticulosRef, setGridArticulosRef] = useState(React.createRef());\n\n //Ref para el form\n const [formDatosGeneralesRef, setFormDatosGeneralesRef] = useState(React.createRef());\n\n const [attachments, setAttachments] = useState([]);\n\n const handleChange = (event, newValue) => {\n setValue(newValue);\n };\n\n const filterBuilderPopupPosition = {\n of: window,\n at: 'top',\n my: 'top',\n offset: { y: 10 },\n };\n\n const allowedPageSizes = [5, 10, 15, 20, 'all'];\n\n const exportFormats = ['xlsx'];\n\n function getOrderDay(rowData) {\n return (new Date(rowData.OrderDate)).getDay();\n }\n\n const filterBuilder = {\n customOperations: [{\n name: 'weekends',\n caption: 'Weekends',\n dataTypes: ['date'],\n icon: 'check',\n hasValue: false,\n calculateFilterExpression: () => [[getOrderDay, '=', 0], 'or', [getOrderDay, '=', 6]],\n }],\n allowHierarchicalFields: true,\n };\n\n const filterValue = [['Estatus', '=', 'Sin Afectar']];\n\n //Ref para el grid Tablero de Control\n const [gridTableroRef, setGridTableroRef] = useState(React.createRef());\n\n function onAutoExpandAllChanged() {\n setAutoExpandAll(!autoExpandAll)\n };\n\n async function getDeliveryRequestRecords(sqlFilter) {\n try {\n let apiName = 'AdminSC';\n let path = '/procesasolenvio';\n\n let myInit = {\n headers: {\n 'Content-Type': 'application/json',\n Authorization: `${(await Auth.currentSession()).getAccessToken().getJwtToken()}`\n },\n queryStringParameters: {\n action: 'list',\n sqlFilter: sqlFilter,\n salesAccess: props.salesAccess,\n sucursal: props.sucursal,\n usuario: props.usuario,\n username: JSON.parse(JSON.stringify(await Auth.currentAuthenticatedUser())).username\n }\n }\n\n var deliveryRequestGet = await API.get(apiName, path, myInit);\n }\n catch (e) {\n if (e === 'No current user') {\n history.push('/');\n\n window.location.reload();\n }\n }\n\n return deliveryRequestGet;\n }\n\n const store = new CustomStore({\n key: 'ID',\n load(loadOptions) {\n let sqlFilter = '(';\n [\n 'filter'\n ].forEach((i) => {\n if (i in loadOptions && isNotEmpty(loadOptions[i])) {\n var filters = loadOptions[i];\n\n var filtersLength = filters.length;\n\n for (var i = 0; i <= filtersLength; i++) {\n var singleFilter = filters[i];\n var singleFilterType = typeof singleFilter;\n var singleFilterIsArray = Array.isArray(singleFilter);\n var singleFilterIsDate = singleFilter instanceof Date;\n\n if (singleFilter === 'NULL') {\n singleFilter = '0';\n }\n\n if (singleFilterType.toString() === 'object' && singleFilterIsArray) {\n sqlFilter += '(';\n\n var subFiltersLength = singleFilter.length;\n\n for (var i2 = 0; i2 <= subFiltersLength; i2++) {\n var singleSubFilter = singleFilter[i2];\n var singleSubFilterType = typeof singleSubFilter;\n var singleSubFilterIsArray = Array.isArray(singleSubFilter);\n var singleSubFilterIsDate = singleSubFilter instanceof Date\n\n if (singleSubFilter === 'NULL') {\n singleSubFilter = '0';\n }\n\n if (singleSubFilterType.toString() === 'object' && singleSubFilterIsArray) {\n sqlFilter += '(';\n\n var subSubFiltersLength = singleSubFilter.length;\n\n for (var i3 = 0; i3 <= subSubFiltersLength; i3++) {\n var singleSubSubFilter = singleSubFilter[i3];\n var singleSubSubFilterType = typeof singleSubSubFilter;\n var singleSubSubFilterIsArray = Array.isArray(singleSubSubFilter);\n var singleSubSubFilterIsDate = singleSubSubFilter instanceof Date\n\n if (singleSubSubFilter === 'NULL') {\n singleSubSubFilter = '0';\n }\n\n if (singleSubSubFilterType.toString() === 'object' && singleSubSubFilterIsArray) {\n sqlFilter += '(';\n\n var subSubSubFiltersLength = singleSubSubFilter.length;\n\n for (var i4 = 0; i4 <= subSubSubFiltersLength; i4++) {\n var singleSubSubSubFilter = singleSubSubFilter[i4];\n var singleSubSubSubFilterType = typeof singleSubSubSubFilter;\n var singleSubSubSubFilterIsArray = Array.isArray(singleSubSubSubFilter);\n var singleSubSubSubFilterIsDate = singleSubSubSubFilter instanceof Date\n\n if (singleSubSubSubFilter === 'NULL') {\n singleSubSubSubFilter = '0';\n }\n\n if (singleSubSubSubFilterType.toString() === 'object' && singleSubSubSubFilterIsArray) {\n sqlFilter += '(';\n\n var subSubSubSubFiltersLength = singleSubSubSubFilter.length;\n\n for (var i5 = 0; i5 <= subSubSubSubFiltersLength; i5++) {\n var singleSubSubSubSubFilter = singleSubSubSubFilter[i5];\n var singleSubSubSubSubFilterType = typeof singleSubSubSubSubFilter;\n var singleSubSubSubSubFilterIsArray = Array.isArray(singleSubSubSubSubFilter);\n var singleSubSubSubSubFilterIsDate = singleSubSubSubSubFilter instanceof Date\n\n if (singleSubSubSubSubFilter === 'NULL') {\n singleSubSubSubSubFilter = '0';\n }\n\n if (singleSubSubSubSubFilterType.toString() === 'string') {\n if (singleSubSubSubSubFilter === 'contains') {\n filters[i][i2][i3][i4][i5] = 'LIKE';\n singleSubSubSubSubFilter = 'LIKE';\n\n filters[i][i2][i3][i4][i5 + 1] = '\\'%' + filters[i][i2][i3][i4][i5 + 1] + '%\\'';\n }\n else if (singleSubSubSubSubFilter === 'notcontains') {\n filters[i][i2][i3][i4][i5] = 'NOT LIKE';\n singleSubSubSubSubFilter = 'NOT LIKE';\n\n filters[i][i2][i3][i4][i5 + 1] = '\\'%' + filters[i][i2][i3][i4][i5 + 1] + '%\\'';\n }\n else if (singleSubSubSubSubFilter === 'startswith') {\n filters[i][i2][i3][i4][i5] = 'LIKE';\n singleSubSubSubSubFilter = 'LIKE';\n\n filters[i][i2][i3][i4][i5 + 1] = '\\'' + filters[i][i2][i3][i4][i5 + 1] + '%\\'';\n }\n else if (singleSubSubSubSubFilter === 'endswith') {\n filters[i][i2][i3][i4][i5] = 'LIKE';\n singleSubSubSubSubFilter = 'LIKE';\n\n filters[i][i2][i3][i4][i5 + 1] = '\\'%' + filters[i][i2][i3][i4][i5 + 1] + '\\'';\n }\n else if (singleSubSubSubSubFilter === '=' || singleSubSubSubSubFilter === '<>' || singleSubSubSubSubFilter === '>' || singleSubSubSubSubFilter === '>=' || singleSubSubSubSubFilter === '<' || singleSubSubSubSubFilter === '<=') {\n if (!filters[i][i2][i3][i4][i5 + 1])\n filters[i][i2][i3][i4][i5 + 1] = 'NULL';\n else if (typeof filters[i][i2][i3][i4][i5 + 1] === 'string') {\n filters[i][i2][i3][i4][i5 + 1] = '\\'' + filters[i][i2][i3][i4][i5 + 1] + '\\'';\n }\n }\n else if (singleSubSubSubSubFilter === '!') {\n filters[i][i2][i3][i4][i5] = 'NOT';\n singleSubSubSubSubFilter = 'NOT';\n }\n\n sqlFilter += ' ' + singleSubSubSubSubFilter + ' ';\n }\n else if (singleSubSubSubSubFilterType.toString() === 'object' && singleSubSubSubSubFilterIsDate) {\n sqlFilter += ' \\'' + singleSubSubSubSubFilter.toISOString().split('T')[0] + '\\' ';\n }\n else if (singleSubSubSubSubFilterType.toString() === 'number') {\n sqlFilter += ' ' + singleSubSubSubSubFilter.toString() + ' ';\n }\n else if (singleSubSubSubSubFilterType.toString() === 'boolean') {\n if (singleSubSubSubSubFilter.toString() === 'true')\n sqlFilter += '1 ';\n else if (singleSubSubSubSubFilter.toString() === 'false' || singleSubSubSubSubFilter === null || singleSubSubSubSubFilter === undefined)\n sqlFilter += '0 ';\n }\n }\n }\n else if (singleSubSubSubFilterType.toString() === 'string') {\n if (singleSubSubSubFilter === 'contains') {\n filters[i][i2][i3][i4] = 'LIKE';\n singleSubSubSubFilter = 'LIKE';\n\n filters[i][i2][i3][i4 + 1] = '\\'%' + filters[i][i2][i3][i4 + 1] + '%\\'';\n }\n else if (singleSubSubSubFilter === 'notcontains') {\n filters[i][i2][i3][i4] = 'NOT LIKE';\n singleSubSubSubFilter = 'NOT LIKE';\n\n filters[i][i2][i3][i4 + 1] = '\\'%' + filters[i][i2][i3][i4 + 1] + '%\\'';\n }\n else if (singleSubSubSubFilter === 'startswith') {\n filters[i][i2][i3][i4] = 'LIKE';\n singleSubSubSubFilter = 'LIKE';\n\n filters[i][i2][i3][i4 + 1] = '\\'' + filters[i][i2][i3][i4 + 1] + '%\\'';\n }\n else if (singleSubSubSubFilter === 'endswith') {\n filters[i][i2][i3][i4] = 'LIKE';\n singleSubSubSubFilter = 'LIKE';\n\n filters[i][i2][i3][i4 + 1] = '\\'%' + filters[i][i2][i3][i4 + 1] + '\\'';\n }\n else if (singleSubSubSubFilter === '=' || singleSubSubSubFilter === '<>' || singleSubSubSubFilter === '>' || singleSubSubSubFilter === '>=' || singleSubSubSubFilter === '<' || singleSubSubSubFilter === '<=') {\n if (!filters[i][i2][i3][i4 + 1])\n filters[i][i2][i3][i4 + 1] = 'NULL';\n else if (typeof filters[i][i2][i3][i4 + 1] === 'string') {\n filters[i][i2][i3][i4 + 1] = '\\'' + filters[i][i2][i3][i4 + 1] + '\\'';\n }\n }\n else if (singleSubSubSubFilter === '!') {\n filters[i][i2][i3][i4] = 'NOT';\n singleSubSubSubFilter = 'NOT';\n }\n\n sqlFilter += ' ' + singleSubSubSubFilter + ' ';\n }\n else if (singleSubSubSubFilterType.toString() === 'object' && singleSubSubSubFilterIsDate) {\n sqlFilter += ' \\'' + singleSubSubSubFilter.toISOString().split('T')[0] + '\\' ';\n }\n else if (singleSubSubSubFilterType.toString() === 'number') {\n sqlFilter += ' ' + singleSubSubSubFilter.toString() + ' ';\n }\n else if (singleSubSubSubFilterType.toString() === 'boolean') {\n if (singleSubSubSubFilter.toString() === 'true')\n sqlFilter += '1 ';\n else if (singleSubSubSubFilter.toString() === 'false' || singleSubSubSubFilter === null || singleSubSubSubFilter === undefined)\n sqlFilter += '0 ';\n }\n }\n\n sqlFilter += ')';\n }\n else if (singleSubSubFilterType.toString() === 'string') {\n if (singleSubSubFilter === 'contains') {\n filters[i][i2][i3] = 'LIKE';\n singleSubSubFilter = 'LIKE';\n\n filters[i][i2][i3 + 1] = '\\'%' + filters[i][i2][i3 + 1] + '%\\'';\n }\n else if (singleSubSubFilter === 'notcontains') {\n filters[i][i2][i3] = 'NOT LIKE';\n singleSubSubFilter = 'NOT LIKE';\n\n filters[i][i2][i3 + 1] = '\\'%' + filters[i][i2][i3 + 1] + '%\\'';\n }\n else if (singleSubSubFilter === 'startswith') {\n filters[i][i2][i3] = 'LIKE';\n singleSubSubFilter = 'LIKE';\n\n filters[i][i2][i3 + 1] = '\\'' + filters[i][i2][i3 + 1] + '%\\'';\n }\n else if (singleSubSubFilter === 'endswith') {\n filters[i][i2][i3] = 'LIKE';\n singleSubSubFilter = 'LIKE';\n\n filters[i][i2][i3 + 1] = '\\'%' + filters[i][i2][i3 + 1] + '\\'';\n }\n else if (singleSubSubFilter === '=' || singleSubSubFilter === '<>' || singleSubSubFilter === '>' || singleSubSubFilter === '>=' || singleSubSubFilter === '<' || singleSubSubFilter === '<=') {\n if (!filters[i][i2][i3 + 1])\n filters[i][i2][i3 + 1] = 'NULL';\n else if (typeof filters[i][i2][i3 + 1] === 'string') {\n filters[i][i2][i3 + 1] = '\\'' + filters[i][i2][i3 + 1] + '\\'';\n }\n }\n else if (singleSubSubFilter === '!') {\n filters[i][i2][i3] = 'NOT';\n singleSubSubFilter = 'NOT';\n }\n sqlFilter += ' ' + singleSubSubFilter + ' ';\n }\n else if (singleSubSubFilterType.toString() === 'object' && singleSubSubFilterIsDate) {\n sqlFilter += ' \\'' + singleSubSubFilter.toISOString().split('T')[0] + '\\' ';\n }\n else if (singleSubSubFilterType.toString() === 'number') {\n sqlFilter += ' ' + singleSubSubFilter.toString() + ' ';\n }\n else if (singleSubSubFilterType.toString() === 'boolean') {\n if (singleSubSubFilter.toString() === 'true')\n sqlFilter += '1 ';\n else if (singleSubSubFilter.toString() === 'false' || singleSubSubFilter === null || singleSubSubFilter === undefined)\n sqlFilter += '0 ';\n }\n }\n\n sqlFilter += ')';\n }\n else if (singleSubFilterType.toString() === 'string') {\n if (singleSubFilter === 'contains') {\n filters[i][i2] = 'LIKE';\n singleSubFilter = 'LIKE';\n\n filters[i][i2 + 1] = '\\'%' + filters[i][i2 + 1] + '%\\'';\n }\n else if (singleSubFilter === 'notcontains') {\n filters[i][i2] = 'NOT LIKE';\n singleSubFilter = 'NOT LIKE';\n\n filters[i][i2 + 1] = '\\'%' + filters[i][i2 + 1] + '%\\'';\n }\n else if (singleSubFilter === 'startswith') {\n filters[i][i2] = 'LIKE';\n singleSubFilter = 'LIKE';\n\n filters[i][i2 + 1] = '\\'' + filters[i][i2 + 1] + '%\\'';\n }\n else if (singleSubFilter === 'endswith') {\n filters[i][i2] = 'LIKE';\n singleSubFilter = 'LIKE';\n\n filters[i][i2 + 1] = '\\'%' + filters[i][i2 + 1] + '\\'';\n }\n else if (singleSubFilter === '=' || singleSubFilter === '<>' || singleSubFilter === '>' || singleSubFilter === '>=' || singleSubFilter === '<' || singleSubFilter === '<=') {\n if (!filters[i][i2 + 1])\n filters[i][i2 + 1] = 'NULL';\n else if (typeof filters[i][i2 + 1] === 'string') {\n filters[i][i2 + 1] = '\\'' + filters[i][i2 + 1] + '\\'';\n }\n }\n else if (singleSubFilter === '!') {\n filters[i][i2] = 'NOT';\n singleSubFilter = 'NOT';\n }\n sqlFilter += ' ' + singleSubFilter + ' ';\n }\n else if (singleSubFilterType.toString() === 'object' && singleSubFilterIsDate) {\n sqlFilter += ' \\'' + singleSubFilter.toISOString().split('T')[0] + '\\' ';\n }\n else if (singleSubFilterType.toString() === 'number') {\n sqlFilter += ' ' + singleSubFilter.toString() + ' ';\n }\n else if (singleSubFilterType.toString() === 'boolean') {\n if (singleSubFilter.toString() === 'true')\n sqlFilter += '1 ';\n else if (singleSubFilter.toString() === 'false' || singleSubFilter === null || singleSubFilter === undefined)\n sqlFilter += '0 ';\n }\n }\n\n sqlFilter += ')';\n }\n else if (singleFilterType.toString() === 'string') {\n if (singleFilter === 'contains') {\n filters[i] = 'LIKE';\n singleFilter = 'LIKE';\n\n filters[i + 1] = '\\'%' + filters[i + 1] + '%\\'';\n }\n else if (singleFilter === 'notcontains') {\n filters[i] = 'NOT LIKE';\n singleFilter = 'NOT LIKE';\n\n filters[i + 1] = '\\'%' + filters[i + 1] + '%\\'';\n }\n else if (singleFilter === 'startswith') {\n filters[i] = 'LIKE';\n singleFilter = 'LIKE';\n\n filters[i + 1] = '\\'' + filters[i + 1] + '%\\'';\n }\n else if (singleFilter === 'endswith') {\n filters[i] = 'LIKE';\n singleFilter = 'LIKE';\n\n filters[i + 1] = '\\'%' + filters[i + 1] + '\\'';\n }\n else if (singleFilter === '=' || singleFilter === '<>' || singleFilter === '>' || singleFilter === '>=' || singleFilter === '<' || singleFilter === '<=') {\n if (!filters[i + 1])\n filters[i + 1] = 'NULL';\n else if (typeof filters[i + 1] === 'string') {\n filters[i + 1] = '\\'' + filters[i + 1] + '\\'';\n }\n }\n else if (singleFilter === '!') {\n filters[i] = 'NOT';\n singleFilter = 'NOT';\n }\n sqlFilter += ' ' + singleFilter + ' ';\n }\n else if (singleFilterType.toString() === 'object' && singleFilterIsDate) {\n sqlFilter += ' \\'' + singleFilter.toISOString().split('T')[0] + '\\' ';\n }\n else if (singleFilterType.toString() === 'number') {\n sqlFilter += ' ' + singleFilter.toString() + ' ';\n }\n else if (singleFilterType.toString() === 'boolean') {\n if (singleFilter.toString() === 'true')\n sqlFilter += '1 ';\n else if (singleFilter.toString() === 'false' || singleFilter === null || singleFilter === undefined)\n sqlFilter += '0 ';\n }\n }\n\n sqlFilter += ')';\n }\n });\n\n async function getRecords() {\n if (sqlFilter === '(')\n sqlFilter = '';\n\n var records = await getDeliveryRequestRecords(sqlFilter);\n return {\n data: records,\n totalCount: records.length\n };\n }\n\n return getRecords()\n .then(function (result) {\n return result;\n })\n .catch(() => { throw new Error('Data Loading Error'); });\n },\n });\n\n var fechaEmisionEditorOptions = { width: '100%', readOnly: true };\n var movimientoEditorOptions = { width: '100%', readOnly: true };\n var datosClienteEditorOptions = { width: '100%', readOnly: true };\n var estatusEditorOptions = { width: '100%', readOnly: true };\n var autorizacionEditorOptions = { width: '100%', readOnly: true };\n var rutaEditorOptions = { width: '100%', readOnly: true };\n\n const storePedido = new CustomStore({\n key: 'value',\n load(loadOptions) {\n let sqlFilter = '';\n [\n 'filter'\n ].forEach((i) => {\n sqlFilter = loadOptions.searchValue;\n });\n\n async function getRecords() {\n var records = await getPedidos(sqlFilter);\n\n return {\n data: records,\n totalCount: records.length\n };\n }\n\n return getRecords()\n .then(function (result) {\n return result;\n })\n .catch(() => { throw new Error('Data Loading Error'); });\n },\n byKey: (key) => {\n return {\n name: key,\n value: key\n };\n }\n });\n\n //Opciones del campo Pedido\n try {\n var pedidoEditorOptions = {\n dataSource: storePedido,\n displayExpr: 'name',\n valueExpr: 'value',\n searchEnabled: true,\n showClearButton: true,\n acceptCustomValue: !activateCustomSalesOrderField,\n value: (deliveryRequestPayload.header.Pedido ? deliveryRequestPayload.header.Pedido : ''),\n disabled: !activateCustomSalesOrderField,\n searchTimeout: 1500,\n width: '100%',\n clearButtonText: 'Cerrar',\n noDataText: 'No se encontraron resultados'\n };\n }\n catch (e) {\n var pedidoEditorOptions = {\n dataSource: storePedido,\n displayExpr: 'name',\n valueExpr: 'value',\n searchEnabled: true,\n acceptCustomValue: acceptCustomValues,\n value: '',\n width: '100%'\n };\n }\n\n async function uploadChunk(file, uploadInfo) {\n try {\n var responseS3 = await Storage.put(\"/prog/\" + id + \"/\" + file.name, uploadInfo.chunkBlob, {\n contentType: file.type,\n ACL: 'public-read'\n });\n\n //Obtenemos el nombre del bucket\n let bucketName = Storage._config.AWSS3.bucket;\n\n\n let apiName = 'AdminSC';\n let path = '/uploadattachment';\n\n let myInit = {\n headers: {\n 'Content-Type': 'application/json',\n Authorization: `${(await Auth.currentSession()).getAccessToken().getJwtToken()}`\n },\n body: {\n action: 'register',\n bucketName: bucketName,\n type: 'prog',\n id: id,\n Key: \"/prog/\" + id + \"/\" + file.name,\n fileName: file.name,\n username: JSON.parse(JSON.stringify(await Auth.currentAuthenticatedUser())).username\n }\n }\n\n var attachmentsResult = await API.post(apiName, path, myInit);\n\n //Obtenemos los attachments\n var attachmentsGet = await Storage.list(\"/prog/\" + id);\n var attachmentsAux = [];\n\n for (var attachmentsGetIndex in attachmentsGet) {\n var singleAttachmentsGet = attachmentsGet[attachmentsGetIndex];\n\n var singleAttachment = {\n name: singleAttachmentsGet.key.split('/').pop(),\n isDirectory: false,\n size: singleAttachmentsGet.size,\n };\n\n attachmentsAux.push(singleAttachment);\n }\n\n setAttachments(attachmentsAux);\n }\n catch (err) {\n console.log(\"Error uploading file:\", err);\n }\n }\n\n async function onAttachmentDeleting(e) {\n var fileName = e.item.key;\n\n //Primero borramos el archivo de S3\n var attachmentsDelete = await Storage.remove(\"/prog/\" + id + \"/\" + fileName);\n\n //Despues borramos el attachment en Intelisis\n let bucketName = Storage._config.AWSS3.bucket;\n\n let apiName = 'AdminSC';\n let path = '/uploadattachment';\n\n let myInit = {\n headers: {\n 'Content-Type': 'application/json',\n Authorization: `${(await Auth.currentSession()).getAccessToken().getJwtToken()}`\n },\n body: {\n action: 'delete',\n bucketName: bucketName,\n type: 'prog',\n id: id,\n Key: \"/prog/\" + id + \"/\" + fileName,\n fileName: fileName,\n username: JSON.parse(JSON.stringify(await Auth.currentAuthenticatedUser())).username\n }\n }\n\n var attachmentsResult = await API.post(apiName, path, myInit);\n\n //Finalmente sincronizamos el state\n var attachmentsGet = await Storage.list(\"/prog/\" + id);\n var attachmentsAux = [];\n\n for (var attachmentsGetIndex in attachmentsGet) {\n var singleAttachmentsGet = attachmentsGet[attachmentsGetIndex];\n\n var singleAttachment = {\n name: singleAttachmentsGet.key.split('/').pop(),\n isDirectory: false,\n size: singleAttachmentsGet.size,\n };\n\n attachmentsAux.push(singleAttachment);\n }\n\n setAttachments(attachmentsAux);\n };\n\n function downloadBlob(blob, filename) {\n const url = URL.createObjectURL(blob);\n const a = document.createElement('a');\n a.href = url;\n a.download = filename || 'download';\n const clickHandler = () => {\n setTimeout(() => {\n URL.revokeObjectURL(url);\n a.removeEventListener('click', clickHandler);\n }, 150);\n };\n\n a.addEventListener('click', clickHandler, false);\n\n a.click();\n\n return a;\n };\n\n async function onItemDownloading(e) {\n e.cancel = true;\n\n const downloadFileResponse = await Storage.get(\"/prog/\" + id + \"/\" + e.item.name, { download: true });\n\n downloadBlob(downloadFileResponse.Body, e.item.name);\n };\n\n function openBlob(blob, filename) {\n const url = URL.createObjectURL(blob);\n\n window.open(url, \"_blank\");\n };\n\n async function onAttachmentOpen(e) {\n const downloadFileResponse = await Storage.get(\"/prog/\" + id + \"/\" + e.file.name, { download: true });\n\n openBlob(downloadFileResponse.Body, e.file.name);\n };\n\n async function getDeliveryRequestPayload(ID) {\n try {\n let apiName = 'AdminSC';\n let path = '/procesasolenvio';\n\n let myInit = {\n headers: {\n 'Content-Type': 'application/json',\n Authorization: `${(await Auth.currentSession()).getAccessToken().getJwtToken()}`\n },\n queryStringParameters: {\n ID: ID,\n action: 'payload',\n username: JSON.parse(JSON.stringify(await Auth.currentAuthenticatedUser())).username\n }\n }\n\n var payloadGet = await API.get(apiName, path, myInit);\n\n setDeliveryRequestPayload(payloadGet);\n\n //Obtenemos los attachments\n var attachmentsGet = await Storage.list(\"/prog/\" + ID);\n var attachmentsAux = [];\n\n for (var attachmentsGetIndex in attachmentsGet) {\n var singleAttachmentsGet = attachmentsGet[attachmentsGetIndex];\n\n var singleAttachment = {\n name: singleAttachmentsGet.key.split('/').pop(),\n isDirectory: false,\n size: singleAttachmentsGet.size,\n };\n\n attachmentsAux.push(singleAttachment);\n }\n\n setAttachments(attachmentsAux);\n }\n catch (e) {\n if (e === 'No current user') {\n history.push('/');\n\n window.location.reload();\n }\n }\n\n return payloadGet;\n }\n\n async function fnSCWebEnableTransactionButtons(sucursal) {\n let apiName = 'AdminSC';\n let path = '/getcatalogo';\n\n let myInit = {\n headers: {\n 'Content-Type': 'application/json',\n Authorization: `${(await Auth.currentSession()).getAccessToken().getJwtToken()}`\n },\n queryStringParameters: {\n type: 'fnSCWebEnableTransactionButtons',\n username: JSON.parse(JSON.stringify(await Auth.currentAuthenticatedUser())).username,\n sucursal: sucursal\n }\n }\n\n var permissionGet = await API.get(apiName, path, myInit);\n\n try {\n return permissionGet[0].Permission;\n }\n catch (e) {\n return false;\n }\n }\n\n function editDeliveryRequest(data) {\n return (\n <Link to={`/DeliveryRequest/${data.data.ID}`}>\n <button class=\"bg-blue-500 hover:bg-blue-700 text-white py-1 px-3 rounded\" onClick={() => editButton(data.data.ID)}><FontAwesomeIcon icon={permissionLevel === 'Editar' ? faPencilAlt : faGlasses} /> {permissionLevel === 'Editar' ? 'Editar' : 'Ver'}</button>\n </Link>\n )\n }\n\n async function editButton(ID) {\n try {\n if (!window.event.metaKey && !window.event.ctrlKey) {\n setVisibleLoadPanel(true);\n\n setIsDetail(true);\n setId(ID);\n\n var payload = await getDeliveryRequestPayload(ID);\n\n if (payload.header.Pedido) {\n setActivateCustomSalesOrderField(false);\n }\n else {\n setActivateCustomSalesOrderField(true);\n }\n\n if (permissionLevel === 'Editar') {\n if (payload.header.Estatus === 'Sin Afectar') {\n setActivateUpdateForm(true);\n setActivateUpdateGrid(true);\n setAcceptCustomValue(false);\n setActivateSaveButton(true);\n setActivateDeleteButton(false);\n setActivateConfirmButton(true);\n setActivateApproveButton(false);\n setActivateGetItemButton(true);\n setActivateSelectItemButton(true);\n setActivatePDFButton(true);\n setActivateCustomWarehouseField(false);\n setActivateCancelButton(true);\n setActivateCantidadButton(true);\n setActivateAttachments(true);\n\n setContextMenuItems([\n { text: 'Seleccionar Todo', icon: 'selectall' },\n { text: 'Eliminar Selección', icon: 'unselectall' }\n ]);\n }\n else if (payload.header.Estatus === 'Pendiente') {\n var enableButtons = await fnSCWebEnableTransactionButtons(payload.header.Sucursal);\n\n setActivateUpdateForm(false);\n setActivateUpdateGrid(enableButtons);\n setAcceptCustomValue(true);\n setActivateSaveButton(false);\n setActivateDeleteButton(false);\n setActivateConfirmButton(enableButtons);\n\n if (payload.header.RequiereAutorizacion === true && payload.header.Autorizado === false && approveDelivery)\n setActivateApproveButton(true);\n else\n setActivateApproveButton(false);\n\n setActivateGetItemButton(false);\n setActivateSelectItemButton(false);\n setActivatePDFButton(true);\n setActivateCustomWarehouseField(true);\n setActivateCancelButton(enableButtons);\n setActivateCantidadButton(false);\n setActivateAttachments(enableButtons);\n\n if (enableButtons)\n setContextMenuItems([\n { text: 'Seleccionar Todo', icon: 'selectall' },\n { text: 'Eliminar Selección', icon: 'unselectall' }\n ]);\n else\n setContextMenuItems([]);\n }\n else if (payload.header.Estatus === 'Cancelado') {\n setActivateUpdateForm(false);\n setActivateUpdateGrid(false);\n setAcceptCustomValue(true);\n setActivateSaveButton(false);\n setActivateDeleteButton(false);\n setActivateConfirmButton(false);\n setActivateApproveButton(false);\n setActivateGetItemButton(false);\n setActivateSelectItemButton(false);\n setActivatePDFButton(true);\n setActivateCustomWarehouseField(true);\n setActivateCancelButton(false);\n setActivateCantidadButton(false);\n setActivateAttachments(false);\n\n setContextMenuItems([]);\n }\n else if (payload.header.Estatus === 'Concluido') {\n setActivateUpdateForm(false);\n setActivateUpdateGrid(false);\n setAcceptCustomValue(true);\n setActivateSaveButton(false);\n setActivateDeleteButton(false);\n setActivateConfirmButton(false);\n setActivateApproveButton(false);\n setActivateGetItemButton(false);\n setActivateSelectItemButton(false);\n setActivatePDFButton(true);\n setActivateCustomWarehouseField(true);\n setActivateCancelButton(false);\n setActivateCantidadButton(false);\n setActivateAttachments(false);\n\n setContextMenuItems([]);\n }\n else if (payload.header.Estatus === 'Disponible') {\n setActivateUpdateForm(false);\n setActivateUpdateGrid(false);\n setAcceptCustomValue(true);\n setActivateSaveButton(false);\n setActivateDeleteButton(false);\n setActivateConfirmButton(false);\n setActivateApproveButton(false);\n setActivateGetItemButton(false);\n setActivateSelectItemButton(false);\n setActivatePDFButton(true);\n setActivateCustomWarehouseField(true);\n setActivateCancelButton(true);\n setActivateCantidadButton(false);\n setActivateAttachments(false);\n\n setContextMenuItems([]);\n }\n else if (payload.header.Estatus === 'Enrutado') {\n setActivateUpdateForm(false);\n setActivateUpdateGrid(false);\n setAcceptCustomValue(true);\n setActivateSaveButton(false);\n setActivateDeleteButton(false);\n setActivateConfirmButton(false);\n setActivateApproveButton(false);\n setActivateGetItemButton(false);\n setActivateSelectItemButton(false);\n setActivatePDFButton(true);\n setActivateCustomWarehouseField(true);\n setActivateCancelButton(false);\n setActivateCantidadButton(false);\n setActivateAttachments(false);\n\n setContextMenuItems([]);\n }\n }\n else if (permissionLevel === 'Ver') {\n setActivateUpdateForm(false);\n setActivateUpdateGrid(false);\n setAcceptCustomValue(true);\n setActivateSaveButton(false);\n setActivateDeleteButton(false);\n setActivateConfirmButton(false);\n setActivateGetItemButton(false);\n setActivateSelectItemButton(false);\n setActivatePDFButton(true);\n setActivateCustomWarehouseField(true);\n setActivateCancelButton(false);\n setActivateCantidadButton(false);\n setActivateAttachments(false);\n\n setContextMenuItems([]);\n }\n\n setVisibleLoadPanel(false);\n }\n }\n catch (e) {\n setVisibleLoadPanel(false);\n\n if (!ID || ID === 'undefined') {\n newButton();\n }\n }\n };\n\n async function cancelEditButton() {\n setIsDetail(false);\n };\n\n async function saveButton() {\n try {\n if (deliveryRequestPayload.header.Estatus === 'Sin Afectar') {\n if (!deliveryRequestPayload.header.Pedido || deliveryRequestPayload.header.Pedido === '') {\n setVisibleToast(true);\n setMessageToast('Falta especificar el Pedido')\n setTypeToast('error');\n return;\n }\n }\n\n setVisibleLoadPanel(true);\n\n var ID = deliveryRequestPayload.header.ID;\n\n //Guardamos los cambios del grid\n if (gridArticulosRef.current) {\n var gridArticulos = gridArticulosRef.current.instance();\n\n gridArticulos.saveEditData();\n }\n\n //Despues enviamos todo al backend\n let apiName = 'AdminSC';\n let path = '/procesasolenvio';\n\n let myInit = {\n headers: {\n 'Content-Type': 'application/json',\n Authorization: `${(await Auth.currentSession()).getAccessToken().getJwtToken()}`\n },\n body: {\n ID: ID,\n payload: deliveryRequestPayload,\n action: 'saveChanges',\n username: JSON.parse(JSON.stringify(await Auth.currentAuthenticatedUser())).username,\n usuario: props.usuario,\n sucursal: props.sucursal,\n s3Bucket: Storage._config.AWSS3.bucket\n }\n }\n\n var payloadPost = await API.post(apiName, path, myInit);\n\n if (payloadPost.ok === 'true') {\n if (!ID) {\n setVisibleToast(true);\n setMessageToast('Se creó la Solicitud de Envío con éxito');\n setTypeToast('success')\n\n ID = payloadPost.newID;\n\n editButton(ID);\n\n history.push('/DeliveryRequest/' + ID.toString());\n }\n else {\n setVisibleToast(true);\n setMessageToast('Se actualizó la Solicitud de Envío con éxito');\n setTypeToast('success')\n }\n }\n else if (payloadPost.ok === 'false') {\n setVisibleToast(true);\n setMessageToast(payloadPost.message);\n setTypeToast('error')\n }\n\n editButton(ID);\n\n setVisibleLoadPanel(false);\n }\n catch (e) {\n setVisibleLoadPanel(false);\n\n if (e === 'No current user') {\n history.push('/');\n\n window.location.reload();\n }\n }\n };\n\n async function approveButton() {\n try {\n\n setVisibleLoadPanel(true);\n\n var ID = deliveryRequestPayload.header.ID;\n\n //Despues enviamos todo al backend\n let apiName = 'AdminSC';\n let path = '/procesasolenvio';\n\n let myInit = {\n headers: {\n 'Content-Type': 'application/json',\n Authorization: `${(await Auth.currentSession()).getAccessToken().getJwtToken()}`\n },\n body: {\n ID: ID,\n payload: deliveryRequestPayload,\n action: 'approve',\n username: JSON.parse(JSON.stringify(await Auth.currentAuthenticatedUser())).username,\n usuario: props.usuario,\n sucursal: props.sucursal\n }\n }\n\n var payloadPost = await API.post(apiName, path, myInit);\n\n if (payloadPost.ok === 'true') {\n setVisibleToast(true);\n setMessageToast('Solicitud de Envío Autorizada');\n setTypeToast('success')\n }\n else if (payloadPost.ok === 'false') {\n setVisibleToast(true);\n setMessageToast(payloadPost.message);\n setTypeToast('error')\n }\n\n editButton(ID);\n\n setVisibleLoadPanel(false);\n }\n catch (e) {\n setVisibleLoadPanel(false);\n\n if (e === 'No current user') {\n history.push('/');\n\n window.location.reload();\n }\n }\n };\n\n async function confirmButton() {\n try {\n if (deliveryRequestPayload.header.Estatus === 'Sin Afectar') {\n if (!deliveryRequestPayload.header.Pedido || deliveryRequestPayload.header.Pedido === '') {\n setVisibleToast(true);\n setMessageToast('Falta especificar el Pedido')\n setTypeToast('error');\n return;\n }\n }\n\n setVisibleLoadPanel(true);\n\n var ID = deliveryRequestPayload.header.ID;\n\n //Guardamos los cambios del grid\n if (gridArticulosRef.current) {\n var gridArticulos = gridArticulosRef.current.instance();\n\n gridArticulos.saveEditData();\n }\n\n //Despues enviamos todo al backend\n let apiName = 'AdminSC';\n let path = '/procesasolenvio';\n\n let myInit = {\n headers: {\n 'Content-Type': 'application/json',\n Authorization: `${(await Auth.currentSession()).getAccessToken().getJwtToken()}`\n },\n body: {\n ID: ID,\n payload: deliveryRequestPayload,\n action: 'apply',\n username: JSON.parse(JSON.stringify(await Auth.currentAuthenticatedUser())).username,\n usuario: props.usuario,\n sucursal: props.sucursal\n }\n }\n\n var payloadPost = await API.post(apiName, path, myInit);\n\n if (payloadPost.ok === 'true') {\n setVisibleToast(true);\n setMessageToast('Se afectó la Solicitud de Envío con éxito');\n setTypeToast('success')\n }\n else if (payloadPost.ok === 'false') {\n setVisibleToast(true);\n setMessageToast(payloadPost.message);\n setTypeToast('error')\n }\n\n editButton(ID);\n\n setVisibleLoadPanel(false);\n }\n catch (e) {\n setVisibleLoadPanel(false);\n\n if (e === 'No current user') {\n history.push('/');\n\n window.location.reload();\n }\n }\n };\n\n async function getItemsButton() {\n try {\n if (deliveryRequestPayload.header.Estatus === 'Sin Afectar') {\n if (!deliveryRequestPayload.header.Pedido || deliveryRequestPayload.header.Pedido === '') {\n setVisibleToast(true);\n setMessageToast('Falta especificar el Pedido')\n setTypeToast('error');\n return;\n }\n }\n\n setVisibleLoadPanel(true);\n\n var ID = deliveryRequestPayload.header.ID;\n\n //Guardamos los cambios del grid\n if (gridArticulosRef.current) {\n var gridArticulos = gridArticulosRef.current.instance();\n\n gridArticulos.saveEditData();\n }\n\n //Despues enviamos todo al backend\n let apiName = 'AdminSC';\n let path = '/procesasolenvio';\n\n let myInit = {\n headers: {\n 'Content-Type': 'application/json',\n Authorization: `${(await Auth.currentSession()).getAccessToken().getJwtToken()}`\n },\n body: {\n ID: ID,\n payload: deliveryRequestPayload,\n action: 'getItems',\n username: JSON.parse(JSON.stringify(await Auth.currentAuthenticatedUser())).username,\n usuario: props.usuario,\n sucursal: props.sucursal\n }\n }\n\n var payloadPost = await API.post(apiName, path, myInit);\n\n if (payloadPost.ok === 'true') {\n setVisibleToast(true);\n setMessageToast('Artículos actualizados con éxito');\n setTypeToast('success')\n }\n else if (payloadPost.ok === 'false') {\n setVisibleToast(true);\n setMessageToast(payloadPost.message);\n setTypeToast('error')\n }\n\n editButton(ID);\n\n setVisibleLoadPanel(false);\n }\n catch (e) {\n setVisibleLoadPanel(false);\n\n if (e === 'No current user') {\n history.push('/');\n\n window.location.reload();\n }\n }\n };\n\n async function selectAllButton() {\n try {\n if (deliveryRequestPayload.header.Estatus === 'Sin Afectar') {\n if (!deliveryRequestPayload.header.Pedido || deliveryRequestPayload.header.Pedido === '') {\n setVisibleToast(true);\n setMessageToast('Falta especificar el Pedido')\n setTypeToast('error');\n return;\n }\n }\n\n setVisibleLoadPanel(true);\n\n var ID = deliveryRequestPayload.header.ID;\n\n //Guardamos los cambios del grid\n if (gridArticulosRef.current) {\n var gridArticulos = gridArticulosRef.current.instance();\n\n gridArticulos.saveEditData();\n }\n\n //Despues enviamos todo al backend\n let apiName = 'AdminSC';\n let path = '/procesasolenvio';\n\n let myInit = {\n headers: {\n 'Content-Type': 'application/json',\n Authorization: `${(await Auth.currentSession()).getAccessToken().getJwtToken()}`\n },\n body: {\n ID: ID,\n payload: deliveryRequestPayload,\n action: 'selectAll',\n username: JSON.parse(JSON.stringify(await Auth.currentAuthenticatedUser())).username,\n usuario: props.usuario,\n sucursal: props.sucursal\n }\n }\n\n var payloadPost = await API.post(apiName, path, myInit);\n\n if (payloadPost.ok === 'true') {\n setVisibleToast(true);\n setMessageToast('Artículos seleccionados con éxito');\n setTypeToast('success')\n }\n else if (payloadPost.ok === 'false') {\n setVisibleToast(true);\n setMessageToast(payloadPost.message);\n setTypeToast('error')\n }\n\n editButton(ID);\n\n setVisibleLoadPanel(false);\n }\n catch (e) {\n setVisibleLoadPanel(false);\n\n if (e === 'No current user') {\n history.push('/');\n\n window.location.reload();\n }\n }\n };\n\n async function voidButton() {\n try {\n if (!window.confirm('¿Desea cancelar la Solicitud de Envío?'))\n return;\n\n setVisibleLoadPanel(true);\n\n var ID = deliveryRequestPayload.header.ID;\n\n //Guardamos los cambios del grid\n if (gridArticulosRef.current) {\n var gridArticulos = gridArticulosRef.current.instance();\n\n gridArticulos.saveEditData();\n }\n\n //Despues enviamos todo al backend\n let apiName = 'AdminSC';\n let path = '/procesasolenvio';\n\n let myInit = {\n headers: {\n 'Content-Type': 'application/json',\n Authorization: `${(await Auth.currentSession()).getAccessToken().getJwtToken()}`\n },\n body: {\n ID: ID,\n payload: deliveryRequestPayload,\n action: 'void',\n username: JSON.parse(JSON.stringify(await Auth.currentAuthenticatedUser())).username,\n usuario: props.usuario,\n sucursal: props.sucursal\n }\n }\n\n var payloadPost = await API.post(apiName, path, myInit);\n\n if (payloadPost.ok === 'true') {\n setVisibleToast(true);\n setMessageToast('Se canceló la Solicitud de Envío');\n setTypeToast('success')\n }\n else if (payloadPost.ok === 'false') {\n setVisibleToast(true);\n setMessageToast(payloadPost.message);\n setTypeToast('error')\n }\n\n editButton(ID);\n\n setVisibleLoadPanel(false);\n }\n catch (e) {\n setVisibleLoadPanel(false);\n\n if (e === 'No current user') {\n history.push('/');\n\n window.location.reload();\n }\n }\n };\n\n async function selectNothingButton() {\n try {\n if (deliveryRequestPayload.header.Estatus === 'Sin Afectar') {\n if (!deliveryRequestPayload.header.Pedido || deliveryRequestPayload.header.Pedido === '') {\n setVisibleToast(true);\n setMessageToast('Falta especificar el Pedido')\n setTypeToast('error');\n return;\n }\n }\n\n setVisibleLoadPanel(true);\n\n var ID = deliveryRequestPayload.header.ID;\n\n //Guardamos los cambios del grid\n if (gridArticulosRef.current) {\n var gridArticulos = gridArticulosRef.current.instance();\n\n gridArticulos.saveEditData();\n }\n\n //Despues enviamos todo al backend\n let apiName = 'AdminSC';\n let path = '/procesasolenvio';\n\n let myInit = {\n headers: {\n 'Content-Type': 'application/json',\n Authorization: `${(await Auth.currentSession()).getAccessToken().getJwtToken()}`\n },\n body: {\n ID: ID,\n payload: deliveryRequestPayload,\n action: 'selectNothing',\n username: JSON.parse(JSON.stringify(await Auth.currentAuthenticatedUser())).username,\n usuario: props.usuario,\n sucursal: props.sucursal\n }\n }\n\n var payloadPost = await API.post(apiName, path, myInit);\n\n if (payloadPost.ok === 'true') {\n setVisibleToast(true);\n setMessageToast('Artículos seleccionados con éxito');\n setTypeToast('success')\n }\n else if (payloadPost.ok === 'false') {\n setVisibleToast(true);\n setMessageToast(payloadPost.message);\n setTypeToast('error')\n }\n\n editButton(ID);\n\n setVisibleLoadPanel(false);\n }\n catch (e) {\n setVisibleLoadPanel(false);\n\n if (e === 'No current user') {\n history.push('/');\n\n window.location.reload();\n }\n }\n };\n\n function refreshButton() {\n if (gridTableroRef.current) {\n var gridTablero = gridTableroRef.current.instance();\n\n gridTablero.refresh();\n }\n }\n\n async function newButton(salesorder) {\n try {\n let apiName = 'AdminSC';\n let path = '/procesasolenvio';\n\n let myInit = {\n headers: {\n 'Content-Type': 'application/json',\n Authorization: `${(await Auth.currentSession()).getAccessToken().getJwtToken()}`\n },\n queryStringParameters: {\n action: 'new',\n salesorder: salesorder,\n username: JSON.parse(JSON.stringify(await Auth.currentAuthenticatedUser())).username,\n usuario: props.usuario,\n sucursal: props.sucursal\n }\n };\n\n var payloadNew = await API.get(apiName, path, myInit);\n\n setDeliveryRequestPayload(payloadNew);\n\n setAttachments([]);\n\n setIsDetail(true);\n setId(undefined);\n\n setActivateCustomSalesOrderField(true);\n setActivateCustomWarehouseField(true);\n setActivateUpdateForm(true);\n setActivateUpdateGrid(true);\n setAcceptCustomValue(false);\n setActivateSaveButton(true);\n setActivateDeleteButton(false);\n setActivateConfirmButton(false);\n setActivatePDFButton(false);\n setActivateGetItemButton(false);\n setActivateSelectItemButton(false);\n setActivateCancelButton(false);\n setActivateCantidadButton(false);\n\n setVisibleLoadPanel(false);\n setContextMenuItems([]);\n }\n catch (e) {\n if (e === 'No current user') {\n history.push('/');\n\n window.location.reload();\n }\n }\n };\n\n async function deleteButton() {\n try {\n if (!window.confirm('¿Desea eliminar la Solicitud de Envío?'))\n return;\n\n setVisibleLoadPanel(true);\n\n var ID = deliveryRequestPayload.header.ID;\n\n if (!ID) {\n //Vamos al tablero de control\n history.push('/DeliveryRequest');\n return;\n }\n\n let apiName = 'AdminSC';\n let path = '/procesasolenvio';\n\n let myInit = {\n headers: {\n 'Content-Type': 'application/json',\n Authorization: `${(await Auth.currentSession()).getAccessToken().getJwtToken()}`\n },\n body: {\n ID: ID,\n payload: deliveryRequestPayload,\n action: 'delete',\n username: JSON.parse(JSON.stringify(await Auth.currentAuthenticatedUser())).username,\n usuario: props.usuario,\n sucursal: props.sucursal\n }\n }\n\n var payloadPost = await API.post(apiName, path, myInit);\n\n if (payloadPost.ok === 'true') {\n setVisibleLoadPanel(false);\n\n setVisibleToast(true);\n setMessageToast('Solicitud de Envío eliminada con éxito');\n setTypeToast('success')\n\n setIsDetail(false);\n\n //Vamos al tablero de control\n history.push('/DeliveryRequest');\n }\n else if (payloadPost.ok === 'false') {\n setVisibleLoadPanel(false);\n\n setVisibleToast(true);\n setMessageToast(payloadPost.message);\n setTypeToast('error')\n }\n }\n catch (e) {\n setVisibleLoadPanel(false);\n\n if (e === 'No current user') {\n history.push('/');\n\n window.location.reload();\n }\n }\n }\n\n function printButton() {\n var baseUrl = window.location.href.split('/')[0];\n\n window.open(baseUrl + \"/#/PdfRender?type=deliveryrequest&id=\" + id, \"_blank\");\n };\n\n async function getPedidos(sqlFilter) {\n let apiName = 'AdminSC';\n let path = '/getcatalogo';\n\n let myInit = {\n headers: {\n 'Content-Type': 'application/json',\n Authorization: `${(await Auth.currentSession()).getAccessToken().getJwtToken()}`\n },\n queryStringParameters: {\n type: 'PedidoSolEnvio',\n username: JSON.parse(JSON.stringify(await Auth.currentAuthenticatedUser())).username,\n sqlFilter: sqlFilter\n }\n }\n\n var pedidosGet = await API.get(apiName, path, myInit);\n var tmpPedidos = [];\n\n for (var pedidosGetIndex in pedidosGet) {\n\n tmpPedidos.push({\n name: pedidosGet[pedidosGetIndex].SCRama,\n value: pedidosGet[pedidosGetIndex].SCRama\n })\n }\n\n return tmpPedidos;\n };\n\n useEffect(() => {\n window.addEventListener('popstate', (e) => {\n var hash;\n\n try {\n hash = e.target.location.hash;\n }\n catch (e) {\n hash = '';\n }\n\n if (hash === '#/DeliveryRequest') {\n history.push('/DeliveryRequest');\n\n window.location.reload();\n }\n });\n\n async function initialize() {\n setVisibleLoadPanel(true);\n\n setVisibleLoadPanel(false);\n }\n\n initialize();\n\n //En caso de solicitar un ID especifico, redireccionamos a ese ID\n if (!props.match.isExact) {\n var urlID = props.location.pathname.replace('/DeliveryRequest/', '');\n\n var search = props.location.search;\n var salesorder;\n\n if (search)\n salesorder = search.replace('?salesorder=', '');\n\n if (urlID === 'undefined')\n urlID = undefined;\n\n if (urlID)\n editButton(urlID);\n else\n newButton(salesorder);\n }\n\n // eslint-disable-next-line\n }, []);\n\n function overrideOnValueChanged(e) {\n //Hacemos la data persistente en cuanto el usuario escriba en el campo\n // if (e.parentType === \"dataRow\") {\n // e.editorOptions.valueChangeEvent = \"input\";\n // }\n }\n\n function onHidingToast() {\n setVisibleToast(false);\n }\n\n const onFieldDatosProgramacionChanged = React.useCallback((e) => {\n var dataField = e.dataField;\n var value = e.value;\n\n\n if (formDatosGeneralesRef.current) {\n var formDatosGenerales = formDatosGeneralesRef.current.instance();\n\n if (e.dataField === 'Pedido') {\n if (e.value) {\n async function getSalesOrderInfo() {\n try {\n setVisibleLoadPanel(true);\n\n let apiName = 'AdminSC';\n let path = '/procesasolenvio';\n\n let myInit = {\n headers: {\n 'Content-Type': 'application/json',\n Authorization: `${(await Auth.currentSession()).getAccessToken().getJwtToken()}`\n },\n queryStringParameters: {\n action: 'getSalesOrderInfo',\n salesOrder: value,\n username: JSON.parse(JSON.stringify(await Auth.currentAuthenticatedUser())).username\n }\n };\n\n var payloadNew = await API.get(apiName, path, myInit);\n\n formDatosGenerales.updateData('NombreCliente', payloadNew.header.NombreCliente);\n formDatosGenerales.updateData('Telefono', payloadNew.header.Telefono);\n formDatosGenerales.updateData('Direccion', payloadNew.header.Direccion);\n formDatosGenerales.updateData('Colonia', payloadNew.header.Colonia);\n formDatosGenerales.updateData('CodigoPostal', payloadNew.header.CodigoPostal);\n formDatosGenerales.updateData('Estado', payloadNew.header.Estado);\n formDatosGenerales.updateData('Municipio', payloadNew.header.Municipio);\n formDatosGenerales.updateData('Pais', payloadNew.header.Pais);\n\n setVisibleLoadPanel(false);\n }\n catch (e) {\n if (e === 'No current user') {\n history.push('/');\n\n window.location.reload();\n }\n }\n }\n\n getSalesOrderInfo();\n }\n else {\n formDatosGenerales.updateData('NombreCliente', undefined);\n formDatosGenerales.updateData('Telefono', undefined);\n formDatosGenerales.updateData('Direccion', undefined);\n formDatosGenerales.updateData('Colonia', undefined);\n formDatosGenerales.updateData('CodigoPostal', undefined);\n formDatosGenerales.updateData('Estado', undefined);\n formDatosGenerales.updateData('Municipio', undefined);\n formDatosGenerales.updateData('Pais', undefined);\n }\n }\n }\n }, [formDatosGeneralesRef, history])\n\n function contextMenuItemClick(e) {\n if (e.itemData.text === 'Seleccionar Todo') {\n selectAllButton();\n }\n else if (e.itemData.text === 'Eliminar Selección') {\n selectNothingButton();\n }\n };\n\n function estatusRelatedRecords(data) {\n return (\n <TransactionStatus {...props} Estatus={data.data.Estatus} />\n )\n };\n\n function onExporting(e) {\n const workbook = new Workbook();\n const worksheet = workbook.addWorksheet('Datos');\n\n exportDataGrid({\n component: e.component,\n worksheet,\n autoFilterEnabled: true,\n }).then(() => {\n workbook.xlsx.writeBuffer().then((buffer) => {\n saveAs(new Blob([buffer], { type: 'application/octet-stream' }), 'Datos.xlsx');\n });\n });\n e.cancel = true;\n };\n\n return (\n <div>\n {isDetail === false ? (\n <div class=\"bg-gray-200 m-2\">\n <h1 class=\"font-sans inline-block text-xl font-bold text-gray-700 leading-8 align-top mb-1\"><FontAwesomeIcon icon={faList} size=\"lg\" /> Solicitudes de Envío</h1>\n </div>\n ) :\n (\n <div class=\"bg-gray-200 m-2\">\n <h1 class=\"font-sans inline-block text-xl font-bold text-gray-700 leading-8 align-top mb-1\"><FontAwesomeIcon icon={faTruckFast} size=\"xl\" /> {(deliveryRequestPayload.header ? deliveryRequestPayload.header.Movimiento : 'Solicitud de Envío')}</h1>\n <TransactionStatus {...props} Estatus={deliveryRequestPayload.header.Estatus} />\n </div>\n )}\n\n <LoadPanel\n shadingColor=\"rgba(0,0,0,0.4)\"\n visible={visibleLoadPanel}\n showIndicator={true}\n message=\"Por favor espere...\"\n shading={true}\n showPane={true}\n hideOnOutsideClick={false}\n />\n\n <Toast\n visible={visibleToast}\n message={messageToast}\n type={typeToast}\n onHiding={onHidingToast}\n displayTime={5000}\n width={'auto'}\n position={{\n my: 'top center',\n at: 'top center',\n of: window,\n offset: '0 130'\n }}\n />\n\n <div class=\"bg-gray-200 m-2\">\n {isDetail === false ? (\n <div class=\"bg-white p-3 shadow-xl\">\n\n {permissionLevel === 'Editar' ?\n (\n <div>\n <Link to=\"/DeliveryRequest/undefined\">\n <button class=\"mb-2 bg-green-500 hover:bg-green-700 text-white font-bold py-2 px-4 rounded\" onClick={() => newButton()}><FontAwesomeIcon icon={faFileAlt} /> Nueva Solicitud de Envío</button>\n </Link>\n\n <button onClick={refreshButton} type=\"submit\" class=\"ml-4 mb-4 bg-blue-500 hover:bg-blue-700 text-white font-bold py-2 px-4 rounded\">\n <FontAwesomeIcon icon={faArrowsRotate} /> Actualizar\n </button>\n </div>\n ) :\n (\n <div>\n <button onClick={refreshButton} type=\"submit\" class=\"mb-4 bg-blue-500 hover:bg-blue-700 text-white font-bold py-2 px-4 rounded\">\n <FontAwesomeIcon icon={faArrowsRotate} /> Actualizar\n </button>\n </div>\n )}\n\n <div className=\"options mb-2\">\n <div className=\"option\">\n <CheckBox text=\"Expandir todos los grupos\"\n value={autoExpandAll}\n onValueChanged={onAutoExpandAllChanged}></CheckBox>\n </div>\n </div>\n <DataGrid\n height={800} \n id=\"gridContainer\"\n columnsAutoWidth={true}\n filterBuilder={filterBuilder}\n dataSource={store}\n defaultFilterValue={filterValue}\n allowColumnReordering={true}\n allowColumnResizing={true}\n columnResizingMode={\"widget\"}\n showBorders={true}\n rowAlternationEnabled={true}\n showRowLines={true}\n showColumnLines={true}\n remoteOperations={{ filtering: true }}\n ref={gridTableroRef}\n onExporting={onExporting}\n >\n <Scrolling rowRenderingMode='virtual'></Scrolling>\n <Paging defaultPageSize={10} />\n <Pager\n visible={true}\n allowedPageSizes={allowedPageSizes}\n displayMode='compact'\n showPageSizeSelector={true}\n showInfo={true}\n showNavigationButtons={true}\n />\n <FilterRow visible={true} />\n <FilterPanel visible={true} />\n <FilterBuilderPopup position={filterBuilderPopupPosition} />\n\n <HeaderFilter visible={true} />\n\n <GroupPanel visible={true} />\n <SearchPanel visible={true} />\n <ColumnChooser\n enabled={true}\n mode='select'\n >\n <ColumnChooserSearch\n enabled={true}\n />\n\n <ColumnChooserSelection\n allowSelectAll={true}\n selectByClick={true}\n recursive={true}\n />\n </ColumnChooser>\n <Grouping autoExpandAll={autoExpandAll} />\n <StateStoring enabled={true} type=\"localStorage\" storageKey=\"gridContainerDeliveryRequest\" />\n <Export enabled={true} />\n\n <Column caption=\"\" alignment=\"center\" width={100} cellRender={editDeliveryRequest} />\n <Column dataField=\"MovID\" dataType=\"string\" width={110} caption=\"Folio\" />\n <Column dataField=\"FechaEmision\" caption=\"Fecha Emisión\" dataType=\"date\" width={130} />\n <Column dataField=\"FechaProgramada\" caption=\"Fecha Programada\" dataType=\"date\" width={130} visible={false} />\n <Column dataField=\"Estatus\" dataType=\"string\" width={120} />\n <Column dataField=\"Pedido\" dataType=\"string\" width={120} />\n <Column dataField=\"Ruta\" dataType=\"string\" width={120} />\n <Column dataField=\"Chofer\" caption=\"Chofer\" dataType=\"string\" width={80} />\n <Column dataField=\"NombreChofer\" caption=\"Nombre Chofer\" dataType=\"string\" width={200} />\n <Column dataField=\"Ayudante\" caption=\"Ayudante\" dataType=\"string\" width={100} />\n <Column dataField=\"NombreAyudante\" caption=\"Nombre Ayudante\" dataType=\"string\" width={200} />\n <Column caption=\"Plaza\" dataField=\"Plaza\" dataType=\"string\" width={150} visible={false} />\n\n <Column dataField=\"ID\" dataType=\"number\" width={150} visible={false} />\n <Column dataField=\"Mov\" dataType=\"string\" width={190} caption=\"Tipo Movimiento\" visible={false} />\n <Column dataField=\"Movimiento\" dataType=\"string\" width={190} visible={false} />\n\n <Column dataField=\"Sucursal\" dataType=\"number\" width={150} visible={false} />\n <Column dataField=\"NombreSucursal\" dataType=\"string\" width={190} visible={false} />\n <Column dataField=\"Usuario\" dataType=\"string\" width={190} visible={false} />\n <Column dataField=\"NombreUsuario\" dataType=\"string\" width={190} visible={false} />\n <Column dataField=\"UsuarioOriginal\" dataType=\"string\" width={190} visible={false} />\n <Column dataField=\"RequiereAutorizacion\" dataType=\"boolean\" caption=\"Requiere Autorización\" width={200} visible={false} />\n <Column dataField=\"Autorizado\" dataType=\"boolean\" width={150} visible={false} />\n <Column dataField=\"Autoriza\" caption=\"Autorizado Por\" dataType=\"string\" width={200} visible={false} />\n <Column dataField=\"FechaAutorizacion\" caption=\"Fecha Autorización\" dataType=\"datetime\" width={200} visible={false} />\n </DataGrid>\n </div>\n ) : (<div />)}\n <Route exact path=\"/DeliveryRequest/:ID\" render={({ match }) => {\n return (\n <div class=\"bg-gray-200\">\n {isDetail.toString() === 'true' ?\n (\n <div>\n <Link to=\"/DeliveryRequest\">\n <button onClick={cancelEditButton} type=\"submit\" class=\"mb-4 bg-red-500 hover:bg-red-700 text-white font-bold py-2 px-4 rounded\">\n <FontAwesomeIcon icon={faArrowRotateLeft} /> Regresar\n </button>\n </Link>\n\n {activateSaveButton.toString() === 'true' ?\n (\n <button onClick={saveButton} type=\"submit\" class=\"ml-4 mb-4 bg-blue-500 hover:bg-blue-700 text-white font-bold py-2 px-4 rounded\">\n <FontAwesomeIcon icon={faSave} /> Guardar Cambios\n </button>\n ) : (\n <div class=\"inline-block\"></div>\n )}\n\n {activateConfirmButton.toString() === 'true' && id ?\n (\n <button onClick={confirmButton} type=\"submit\" class=\"ml-4 mb-4 bg-green-500 hover:bg-green-700 text-white font-bold py-2 px-4 rounded\">\n <FontAwesomeIcon icon={faPlay} /> Afectar\n </button>\n ) : (\n <div class=\"inline-block\"></div>\n )}\n\n {activateApproveButton.toString() === 'true' && id ?\n (\n <button onClick={approveButton} type=\"submit\" class=\"ml-4 mb-4 bg-green-500 hover:bg-green-700 text-white font-bold py-2 px-4 rounded\">\n <FontAwesomeIcon icon={faThumbsUp} /> Autorizar\n </button>\n ) : (\n <div class=\"inline-block\"></div>\n )}\n\n {activateGetItemButton.toString() === 'true' && id ?\n (\n <button onClick={getItemsButton} type=\"submit\" class=\"ml-4 mb-4 bg-yellow-500 hover:bg-yellow-700 text-white font-bold py-2 px-4 rounded\">\n <FontAwesomeIcon icon={faLightbulb} /> Obtener Artículos\n </button>\n ) :\n (\n <div class=\"inline-block\"></div>\n )}\n\n {activateSelectItemButton.toString() === 'true' && id ?\n (\n <button onClick={selectAllButton} type=\"submit\" class=\"ml-4 mb-4 bg-blue-500 hover:bg-blue-700 text-white font-bold py-2 px-4 rounded\">\n <FontAwesomeIcon icon={faCircleCheck} /> Todo\n </button>\n ) :\n (\n <div class=\"inline-block\"></div>\n )}\n\n {activateSelectItemButton.toString() === 'true' && id ?\n (\n <button onClick={selectNothingButton} type=\"submit\" class=\"ml-4 mb-4 bg-blue-500 hover:bg-blue-700 text-white font-bold py-2 px-4 rounded\">\n <FontAwesomeIcon icon={faCircleX} /> Nada\n </button>\n ) :\n (\n <div class=\"inline-block\"></div>\n )}\n\n {activateDeleteButton.toString() === 'true' && id ?\n (\n <button onClick={deleteButton} type=\"submit\" class=\"ml-4 mb-4 bg-red-500 hover:bg-red-700 text-white font-bold py-2 px-4 rounded\">\n <FontAwesomeIcon icon={faTrash} /> Eliminar\n </button>\n ) :\n (\n <div class=\"inline-block\"></div>\n )}\n\n {activateCancelButton.toString() === 'true' && id ?\n (\n <button onClick={voidButton} type=\"submit\" class=\"ml-4 mb-4 bg-red-500 hover:bg-red-700 text-white font-bold py-2 px-4 rounded\">\n <FontAwesomeIcon icon={faWindowClose} /> Cancelar\n </button>\n ) :\n (\n <div class=\"inline-block\"></div>\n )}\n\n {activatePDFButton.toString() === 'true' && id ?\n (\n <button onClick={printButton} type=\"submit\" class=\"ml-4 mb-4 bg-gray-500 hover:bg-gray-700 text-white font-bold py-2 px-4 rounded\">\n <FontAwesomeIcon icon={faFilePdf} /> PDF\n </button>\n ) :\n (\n <div class=\"inline-block\"></div>\n )}\n\n <div class=\"bg-white p-4 shadow-xl\">\n <ContextMenu\n dataSource={contextMenuItems}\n width={200}\n target=\"#gridArticulos\"\n onItemClick={contextMenuItemClick}\n />\n\n <Form\n id=\"formTransaccion\"\n labelMode={'outside'}\n formData={deliveryRequestPayload.header}\n readOnly={!activateUpdateForm}\n showColonAfterLabel={false}\n labelLocation={'top'}\n onFieldDataChanged={onFieldDatosProgramacionChanged}\n ref={formDatosGeneralesRef}\n >\n <TabbedItem>\n <TabPanelOptions deferRendering={false} showNavButtons={true} />\n <Tab title=\"Datos Generales\" colCount={3}>\n <GroupItem caption=\"General\">\n <Item cssClass=\"boldText\" dataField=\"Movimiento\" editorOptions={movimientoEditorOptions} />\n <Item dataField=\"FechaEmision\" editorType=\"dxDateBox\" editorOptions={fechaEmisionEditorOptions}>\n <Label text={\"Fecha Emisión\"} />\n </Item>\n <Item cssClass=\"boldText\" dataField=\"Ruta\" editorOptions={rutaEditorOptions} />\n <Item dataField=\"FechaProgramada\" editorType=\"dxDateBox\" >\n <Label text={\"Fecha Programada\"} />\n </Item>\n <Item dataField=\"Pedido\" editorType=\"dxLookup\" editorOptions={pedidoEditorOptions} >\n <Label text=\"Pedido\" />\n </Item>\n </GroupItem>\n <GroupItem caption=\"Artículos\" colSpan={2} >\n <DataGrid\n id=\"gridArticulos\"\n ref={gridArticulosRef}\n columnsAutoWidth={true}\n dataSource={deliveryRequestPayload.detail}\n showBorders={true}\n showColumnLines={true}\n showRowLines={true}\n rowAlternationEnabled={true}\n allowColumnResizing={true}\n columnResizingMode=\"widget\"\n allowColumnReordering={false}\n repaintChangesOnly={false}\n >\n <Editing\n mode=\"cell\"\n allowUpdating={activateUpdateGrid}\n allowAdding={false}\n allowDeleting={false}\n />\n <Sorting mode=\"none\" />\n\n <Column dataField=\"Renglon\" width={190} visible={false} allowEditing={false} />\n <Column dataField=\"Articulo\" caption=\"Artículo\" width={100} allowEditing={false} />\n <Column dataField=\"Descripcion\" caption=\"Descripción\" width={350} allowEditing={false} />\n <Column dataField=\"Cantidad\" width={120} allowEditing={false} dataType=\"number\" />\n <Column dataField=\"CantidadA\" caption=\"Programación\" width={120} allowEditing={activateCantidadButton} visible={deliveryRequestPayload.header.Estatus === 'Sin Afectar' || deliveryRequestPayload.header.Estatus === 'Pendiente' || deliveryRequestPayload.header.Estatus === 'Disponible' || deliveryRequestPayload.header.Estatus === 'Concluido'} dataType=\"number\" />\n </DataGrid>\n </GroupItem>\n </Tab>\n <Tab title=\"Datos del Cliente\" colCount={3}>\n <Item dataField=\"NombreCliente\" editorOptions={datosClienteEditorOptions} >\n <Label text=\"Nombre\" />\n </Item>\n <Item dataField=\"Telefono\" editorOptions={datosClienteEditorOptions} >\n <Label text=\"Teléfono\" />\n </Item>\n <Item dataField=\"Direccion\" editorOptions={datosClienteEditorOptions} >\n <Label text=\"Dirección\" />\n </Item>\n <Item dataField=\"Colonia\" editorOptions={datosClienteEditorOptions} />\n <Item dataField=\"CodigoPostal\" editorOptions={datosClienteEditorOptions} >\n <Label text=\"C.P.\" />\n </Item>\n <Item dataField=\"Estado\" editorOptions={datosClienteEditorOptions} />\n <Item dataField=\"Municipio\" editorOptions={datosClienteEditorOptions} />\n <Item dataField=\"Pais\" editorOptions={datosClienteEditorOptions} >\n <Label text=\"País\" />\n </Item>\n </Tab>\n <Tab title=\"Autorización\" colCount={2}>\n <Item dataField=\"RequiereAutorizacion\" editorType=\"dxCheckBox\" editorOptions={autorizacionEditorOptions} >\n <Label text=\"Requiere Autorización\" />\n </Item>\n <Item dataField=\"Autorizado\" editorType=\"dxCheckBox\" editorOptions={autorizacionEditorOptions} >\n <Label text=\"Autorizado\" />\n </Item>\n <Item dataField=\"Autoriza\" editorOptions={autorizacionEditorOptions} >\n <Label text=\"Autorizado por\" />\n </Item>\n <Item dataField=\"FechaAutorizacion\" editorOptions={autorizacionEditorOptions} >\n <Label text=\"Fecha Autorización\" />\n </Item>\n </Tab>\n <Tab title=\"Observaciones\" >\n <Item dataField=\"Observaciones\" editorType=\"dxTextArea\" >\n <Label text=\"Observaciones\" visible={false} />\n </Item>\n </Tab>\n <Tab title=\"Log Estatus\">\n <DataGrid\n id=\"gridLogEstatus\"\n columnsAutoWidth={true}\n dataSource={deliveryRequestPayload.movEstatusLog}\n allowColumnReordering={true}\n allowColumnResizing={true}\n columnResizingMode={\"widget\"}\n showBorders={true}\n rowAlternationEnabled={true}\n showRowLines={true}\n showColumnLines={true}\n >\n <HeaderFilter visible={false} />\n <Column dataField=\"Usuario\" dataType=\"string\" width={350} caption=\"Usuario\" />\n <Column caption=\"Estatus\" alignment=\"center\" width={150} cellRender={estatusRelatedRecords} />\n <Column dataField=\"Fecha\" dataType=\"datetime\" width={300} caption=\"Fecha\" />\n </DataGrid>\n </Tab>\n <Tab title=\"Archivos Anexos\" >\n <div className=\"widget-container\">\n <FileUploader\n multiple={true}\n accept=\"*\"\n uploadMode=\"useButtons\"\n chunkSize={20000000}\n maxFileSize={20000000}\n uploadChunk={uploadChunk}\n disabled={!activateAttachments}\n />\n </div>\n <div id=\"wrapper\" className=\"show-widget\" >\n <div id=\"widget-area\">\n <FileManager id=\"attachmentManager\" fileSystemProvider={attachments} onItemDeleting={onAttachmentDeleting} onItemDownloading={onItemDownloading} onSelectedFileOpened={onAttachmentOpen}>\n <Permissions\n create={false}\n copy={false}\n move={false}\n delete={activateAttachments}\n rename={false}\n upload={false}\n download={true}\n >\n </Permissions>\n </FileManager>\n </div>\n </div>\n </Tab>\n </TabbedItem>\n </Form>\n </div>\n </div>\n ) :\n (\n <div></div>\n )\n }\n </div>\n )\n }}\n />\n </div>\n </div>\n );\n}\n","import React, { useState, useEffect, useRef, useMemo } from 'react';\n\n// LoadPanel\nimport { LoadPanel } from 'devextreme-react/load-panel';\n\n// Toast\nimport { Toast } from 'devextreme-react/toast';\n\n//Form\nimport Form, { GroupItem, Label, TabbedItem, TabPanelOptions, Tab } from 'devextreme-react/form';\n\nimport { Auth, API, Storage } from 'aws-amplify';\n\n// Ruteador\nimport { Route, Link, useHistory } from \"react-router-dom\";\n\n// Grid\nimport DataGrid, {\n Column, FilterRow, HeaderFilter, FilterPanel, FilterBuilderPopup,\n GroupPanel, Grouping, SearchPanel, Sorting, Editing, Lookup, Toolbar, Item, RequiredRule,\n Scrolling, Pager, Paging, Summary, TotalItem, StateStoring, ColumnChooser, Format, Selection,\n Export, ColumnChooserSearch, ColumnChooserSelection\n} from 'devextreme-react/data-grid';\n\n//CheckBox\nimport CheckBox from 'devextreme-react/check-box';\n\n//ContextMenu\nimport ContextMenu from 'devextreme-react/context-menu';\n\n// Iconos\nimport { FontAwesomeIcon } from \"@fortawesome/react-fontawesome\";\nimport { faGlasses } from \"@fortawesome/pro-solid-svg-icons\";\nimport { faPencilAlt } from \"@fortawesome/pro-solid-svg-icons\";\nimport { faArrowRotateLeft } from \"@fortawesome/pro-solid-svg-icons\";\nimport { faSave } from \"@fortawesome/pro-solid-svg-icons\";\nimport { faList } from \"@fortawesome/pro-duotone-svg-icons\";\nimport { faFilePdf } from \"@fortawesome/pro-solid-svg-icons\";\nimport { faArrowsRotate } from \"@fortawesome/pro-solid-svg-icons\";\nimport { faFileAlt } from \"@fortawesome/pro-solid-svg-icons\";\nimport { faHandHoldingBox } from \"@fortawesome/pro-duotone-svg-icons\";\nimport { faPlay } from \"@fortawesome/pro-solid-svg-icons\";\nimport { faTrash } from \"@fortawesome/pro-solid-svg-icons\";\nimport { faLightbulb } from \"@fortawesome/pro-solid-svg-icons\";\nimport { faCircleCheck } from \"@fortawesome/pro-solid-svg-icons\";\nimport { faCircleX } from \"@fortawesome/pro-solid-svg-icons\";\nimport { faWindowClose } from \"@fortawesome/pro-solid-svg-icons\";\nimport { faThumbsUp } from \"@fortawesome/pro-solid-svg-icons\";\n\nimport 'devextreme/data/odata/store';\nimport CustomStore from 'devextreme/data/custom_store';\n\nimport DataSource from 'devextreme/data/data_source';\n\nimport '../ListStyle.css';\n\n//FileUploader\nimport FileUploader from 'devextreme-react/file-uploader';\n\n//FileManager\nimport FileManager, { Permissions } from 'devextreme-react/file-manager';\n\nimport dxDateBox from \"devextreme/ui/date_box\";\n\nimport dxNumberBox from \"devextreme/ui/number_box\";\n\nimport TransactionStatus from \"../TransactionStatus/TransactionStatus.js\";\n\nimport { Workbook } from 'exceljs';\nimport { saveAs } from 'file-saver';\nimport { exportDataGrid } from 'devextreme/excel_exporter'\n\ndxDateBox.defaultOptions({\n options: {\n dateSerializationFormat: \"yyyy-MM-dd\"\n }\n});\n\ndxNumberBox.defaultOptions({\n options: {\n step: 0\n }\n});\n\nfunction isNotEmpty(value) {\n return value !== undefined && value !== null && value !== '';\n}\n\nexport default function ReturnRequest(props) {\n const history = useHistory();\n\n const [isDetail, setIsDetail] = useState(false);\n const [id, setId] = useState();\n const [permissionLevel, setPermissionLevel] = useState(props.nivel);\n const [voidDeliveryTransactions, setVoidDeliveryTransactions] = useState(props.voidDeliveryTransactions);\n const [approveDelivery, setApproveDelivery] = useState(props.approveDelivery);\n const [returnRequestPayload, setReturnRequestPayload] = useState({\n header: {},\n detail: [],\n movEstatusLog: []\n });\n\n const [contextMenuItems, setContextMenuItems] = useState([]);\n const [autoExpandAll, setAutoExpandAll] = useState(true);\n\n // setValue para el control tab\n const [value, setValue] = React.useState(0);\n\n const [visibleLoadPanel, setVisibleLoadPanel] = useState(false);\n\n const [visibleToast, setVisibleToast] = useState(false);\n const [messageToast, setMessageToast] = useState('');\n const [typeToast, setTypeToast] = useState('success');\n\n const [activateUpdateForm, setActivateUpdateForm] = useState(false);\n const [activateUpdateGrid, setActivateUpdateGrid] = useState(false);\n const [activateCustomSalesOrderField, setActivateCustomSalesOrderField] = useState(false);\n const [activateCustomWarehouseField, setActivateCustomWarehouseField] = useState(false);\n const [acceptCustomValues, setAcceptCustomValue] = useState(false);\n const [activateSaveButton, setActivateSaveButton] = useState(false);\n const [activateDeleteButton, setActivateDeleteButton] = useState(false);\n const [activateCancelButton, setActivateCancelButton] = useState(false);\n const [activateConfirmButton, setActivateConfirmButton] = useState(false);\n const [activateApproveButton, setActivateApproveButton] = useState(false);\n const [activateGetItemButton, setActivateGetItemButton] = useState(false);\n const [activateSelectItemButton, setActivateSelectItemButton] = useState(false);\n const [activatePDFButton, setActivatePDFButton] = useState(false);\n const [activateCantidadButton, setActivateCantidadButton] = useState(false);\n const [activateAttachments, setActivateAttachments] = useState(false);\n\n //Ref para el grid Articulos\n const [gridArticulosRef, setGridArticulosRef] = useState(React.createRef());\n\n //Ref para el form\n const [formDatosGeneralesRef, setFormDatosGeneralesRef] = useState(React.createRef());\n\n const [attachments, setAttachments] = useState([]);\n\n const handleChange = (event, newValue) => {\n setValue(newValue);\n };\n\n const filterBuilderPopupPosition = {\n of: window,\n at: 'top',\n my: 'top',\n offset: { y: 10 },\n };\n\n const allowedPageSizes = [5, 10, 15, 20, 'all'];\n\n const exportFormats = ['xlsx'];\n\n function getOrderDay(rowData) {\n return (new Date(rowData.OrderDate)).getDay();\n }\n\n const filterBuilder = {\n customOperations: [{\n name: 'weekends',\n caption: 'Weekends',\n dataTypes: ['date'],\n icon: 'check',\n hasValue: false,\n calculateFilterExpression: () => [[getOrderDay, '=', 0], 'or', [getOrderDay, '=', 6]],\n }],\n allowHierarchicalFields: true,\n };\n\n const filterValue = [['Estatus', '=', 'Sin Afectar']];\n\n //Ref para el grid Tablero de Control\n const [gridTableroRef, setGridTableroRef] = useState(React.createRef());\n\n function onAutoExpandAllChanged() {\n setAutoExpandAll(!autoExpandAll)\n };\n\n async function getReturnRequestRecords(sqlFilter) {\n try {\n let apiName = 'AdminSC';\n let path = '/procesasoldevolucion';\n\n let myInit = {\n headers: {\n 'Content-Type': 'application/json',\n Authorization: `${(await Auth.currentSession()).getAccessToken().getJwtToken()}`\n },\n queryStringParameters: {\n action: 'list',\n sqlFilter: sqlFilter,\n salesAccess: props.salesAccess,\n sucursal: props.sucursal,\n usuario: props.usuario,\n username: JSON.parse(JSON.stringify(await Auth.currentAuthenticatedUser())).username\n }\n }\n\n var returnRequestGet = await API.get(apiName, path, myInit);\n }\n catch (e) {\n if (e === 'No current user') {\n history.push('/');\n\n window.location.reload();\n }\n }\n\n return returnRequestGet;\n }\n\n const store = new CustomStore({\n key: 'ID',\n load(loadOptions) {\n let sqlFilter = '(';\n [\n 'filter'\n ].forEach((i) => {\n if (i in loadOptions && isNotEmpty(loadOptions[i])) {\n var filters = loadOptions[i];\n\n var filtersLength = filters.length;\n\n for (var i = 0; i <= filtersLength; i++) {\n var singleFilter = filters[i];\n var singleFilterType = typeof singleFilter;\n var singleFilterIsArray = Array.isArray(singleFilter);\n var singleFilterIsDate = singleFilter instanceof Date;\n\n if (singleFilter === 'NULL') {\n singleFilter = '0';\n }\n\n if (singleFilterType.toString() === 'object' && singleFilterIsArray) {\n sqlFilter += '(';\n\n var subFiltersLength = singleFilter.length;\n\n for (var i2 = 0; i2 <= subFiltersLength; i2++) {\n var singleSubFilter = singleFilter[i2];\n var singleSubFilterType = typeof singleSubFilter;\n var singleSubFilterIsArray = Array.isArray(singleSubFilter);\n var singleSubFilterIsDate = singleSubFilter instanceof Date\n\n if (singleSubFilter === 'NULL') {\n singleSubFilter = '0';\n }\n\n if (singleSubFilterType.toString() === 'object' && singleSubFilterIsArray) {\n sqlFilter += '(';\n\n var subSubFiltersLength = singleSubFilter.length;\n\n for (var i3 = 0; i3 <= subSubFiltersLength; i3++) {\n var singleSubSubFilter = singleSubFilter[i3];\n var singleSubSubFilterType = typeof singleSubSubFilter;\n var singleSubSubFilterIsArray = Array.isArray(singleSubSubFilter);\n var singleSubSubFilterIsDate = singleSubSubFilter instanceof Date\n\n if (singleSubSubFilter === 'NULL') {\n singleSubSubFilter = '0';\n }\n\n if (singleSubSubFilterType.toString() === 'object' && singleSubSubFilterIsArray) {\n sqlFilter += '(';\n\n var subSubSubFiltersLength = singleSubSubFilter.length;\n\n for (var i4 = 0; i4 <= subSubSubFiltersLength; i4++) {\n var singleSubSubSubFilter = singleSubSubFilter[i4];\n var singleSubSubSubFilterType = typeof singleSubSubSubFilter;\n var singleSubSubSubFilterIsArray = Array.isArray(singleSubSubSubFilter);\n var singleSubSubSubFilterIsDate = singleSubSubSubFilter instanceof Date\n\n if (singleSubSubSubFilter === 'NULL') {\n singleSubSubSubFilter = '0';\n }\n\n if (singleSubSubSubFilterType.toString() === 'object' && singleSubSubSubFilterIsArray) {\n sqlFilter += '(';\n\n var subSubSubSubFiltersLength = singleSubSubSubFilter.length;\n\n for (var i5 = 0; i5 <= subSubSubSubFiltersLength; i5++) {\n var singleSubSubSubSubFilter = singleSubSubSubFilter[i5];\n var singleSubSubSubSubFilterType = typeof singleSubSubSubSubFilter;\n var singleSubSubSubSubFilterIsArray = Array.isArray(singleSubSubSubSubFilter);\n var singleSubSubSubSubFilterIsDate = singleSubSubSubSubFilter instanceof Date\n\n if (singleSubSubSubSubFilter === 'NULL') {\n singleSubSubSubSubFilter = '0';\n }\n\n if (singleSubSubSubSubFilterType.toString() === 'string') {\n if (singleSubSubSubSubFilter === 'contains') {\n filters[i][i2][i3][i4][i5] = 'LIKE';\n singleSubSubSubSubFilter = 'LIKE';\n\n filters[i][i2][i3][i4][i5 + 1] = '\\'%' + filters[i][i2][i3][i4][i5 + 1] + '%\\'';\n }\n else if (singleSubSubSubSubFilter === 'notcontains') {\n filters[i][i2][i3][i4][i5] = 'NOT LIKE';\n singleSubSubSubSubFilter = 'NOT LIKE';\n\n filters[i][i2][i3][i4][i5 + 1] = '\\'%' + filters[i][i2][i3][i4][i5 + 1] + '%\\'';\n }\n else if (singleSubSubSubSubFilter === 'startswith') {\n filters[i][i2][i3][i4][i5] = 'LIKE';\n singleSubSubSubSubFilter = 'LIKE';\n\n filters[i][i2][i3][i4][i5 + 1] = '\\'' + filters[i][i2][i3][i4][i5 + 1] + '%\\'';\n }\n else if (singleSubSubSubSubFilter === 'endswith') {\n filters[i][i2][i3][i4][i5] = 'LIKE';\n singleSubSubSubSubFilter = 'LIKE';\n\n filters[i][i2][i3][i4][i5 + 1] = '\\'%' + filters[i][i2][i3][i4][i5 + 1] + '\\'';\n }\n else if (singleSubSubSubSubFilter === '=' || singleSubSubSubSubFilter === '<>' || singleSubSubSubSubFilter === '>' || singleSubSubSubSubFilter === '>=' || singleSubSubSubSubFilter === '<' || singleSubSubSubSubFilter === '<=') {\n if (!filters[i][i2][i3][i4][i5 + 1])\n filters[i][i2][i3][i4][i5 + 1] = 'NULL';\n else if (typeof filters[i][i2][i3][i4][i5 + 1] === 'string') {\n filters[i][i2][i3][i4][i5 + 1] = '\\'' + filters[i][i2][i3][i4][i5 + 1] + '\\'';\n }\n }\n else if (singleSubSubSubSubFilter === '!') {\n filters[i][i2][i3][i4][i5] = 'NOT';\n singleSubSubSubSubFilter = 'NOT';\n }\n\n sqlFilter += ' ' + singleSubSubSubSubFilter + ' ';\n }\n else if (singleSubSubSubSubFilterType.toString() === 'object' && singleSubSubSubSubFilterIsDate) {\n sqlFilter += ' \\'' + singleSubSubSubSubFilter.toISOString().split('T')[0] + '\\' ';\n }\n else if (singleSubSubSubSubFilterType.toString() === 'number') {\n sqlFilter += ' ' + singleSubSubSubSubFilter.toString() + ' ';\n }\n else if (singleSubSubSubSubFilterType.toString() === 'boolean') {\n if (singleSubSubSubSubFilter.toString() === 'true')\n sqlFilter += '1 ';\n else if (singleSubSubSubSubFilter.toString() === 'false' || singleSubSubSubSubFilter === null || singleSubSubSubSubFilter === undefined)\n sqlFilter += '0 ';\n }\n }\n }\n else if (singleSubSubSubFilterType.toString() === 'string') {\n if (singleSubSubSubFilter === 'contains') {\n filters[i][i2][i3][i4] = 'LIKE';\n singleSubSubSubFilter = 'LIKE';\n\n filters[i][i2][i3][i4 + 1] = '\\'%' + filters[i][i2][i3][i4 + 1] + '%\\'';\n }\n else if (singleSubSubSubFilter === 'notcontains') {\n filters[i][i2][i3][i4] = 'NOT LIKE';\n singleSubSubSubFilter = 'NOT LIKE';\n\n filters[i][i2][i3][i4 + 1] = '\\'%' + filters[i][i2][i3][i4 + 1] + '%\\'';\n }\n else if (singleSubSubSubFilter === 'startswith') {\n filters[i][i2][i3][i4] = 'LIKE';\n singleSubSubSubFilter = 'LIKE';\n\n filters[i][i2][i3][i4 + 1] = '\\'' + filters[i][i2][i3][i4 + 1] + '%\\'';\n }\n else if (singleSubSubSubFilter === 'endswith') {\n filters[i][i2][i3][i4] = 'LIKE';\n singleSubSubSubFilter = 'LIKE';\n\n filters[i][i2][i3][i4 + 1] = '\\'%' + filters[i][i2][i3][i4 + 1] + '\\'';\n }\n else if (singleSubSubSubFilter === '=' || singleSubSubSubFilter === '<>' || singleSubSubSubFilter === '>' || singleSubSubSubFilter === '>=' || singleSubSubSubFilter === '<' || singleSubSubSubFilter === '<=') {\n if (!filters[i][i2][i3][i4 + 1])\n filters[i][i2][i3][i4 + 1] = 'NULL';\n else if (typeof filters[i][i2][i3][i4 + 1] === 'string') {\n filters[i][i2][i3][i4 + 1] = '\\'' + filters[i][i2][i3][i4 + 1] + '\\'';\n }\n }\n else if (singleSubSubSubFilter === '!') {\n filters[i][i2][i3][i4] = 'NOT';\n singleSubSubSubFilter = 'NOT';\n }\n\n sqlFilter += ' ' + singleSubSubSubFilter + ' ';\n }\n else if (singleSubSubSubFilterType.toString() === 'object' && singleSubSubSubFilterIsDate) {\n sqlFilter += ' \\'' + singleSubSubSubFilter.toISOString().split('T')[0] + '\\' ';\n }\n else if (singleSubSubSubFilterType.toString() === 'number') {\n sqlFilter += ' ' + singleSubSubSubFilter.toString() + ' ';\n }\n else if (singleSubSubSubFilterType.toString() === 'boolean') {\n if (singleSubSubSubFilter.toString() === 'true')\n sqlFilter += '1 ';\n else if (singleSubSubSubFilter.toString() === 'false' || singleSubSubSubFilter === null || singleSubSubSubFilter === undefined)\n sqlFilter += '0 ';\n }\n }\n\n sqlFilter += ')';\n }\n else if (singleSubSubFilterType.toString() === 'string') {\n if (singleSubSubFilter === 'contains') {\n filters[i][i2][i3] = 'LIKE';\n singleSubSubFilter = 'LIKE';\n\n filters[i][i2][i3 + 1] = '\\'%' + filters[i][i2][i3 + 1] + '%\\'';\n }\n else if (singleSubSubFilter === 'notcontains') {\n filters[i][i2][i3] = 'NOT LIKE';\n singleSubSubFilter = 'NOT LIKE';\n\n filters[i][i2][i3 + 1] = '\\'%' + filters[i][i2][i3 + 1] + '%\\'';\n }\n else if (singleSubSubFilter === 'startswith') {\n filters[i][i2][i3] = 'LIKE';\n singleSubSubFilter = 'LIKE';\n\n filters[i][i2][i3 + 1] = '\\'' + filters[i][i2][i3 + 1] + '%\\'';\n }\n else if (singleSubSubFilter === 'endswith') {\n filters[i][i2][i3] = 'LIKE';\n singleSubSubFilter = 'LIKE';\n\n filters[i][i2][i3 + 1] = '\\'%' + filters[i][i2][i3 + 1] + '\\'';\n }\n else if (singleSubSubFilter === '=' || singleSubSubFilter === '<>' || singleSubSubFilter === '>' || singleSubSubFilter === '>=' || singleSubSubFilter === '<' || singleSubSubFilter === '<=') {\n if (!filters[i][i2][i3 + 1])\n filters[i][i2][i3 + 1] = 'NULL';\n else if (typeof filters[i][i2][i3 + 1] === 'string') {\n filters[i][i2][i3 + 1] = '\\'' + filters[i][i2][i3 + 1] + '\\'';\n }\n }\n else if (singleSubSubFilter === '!') {\n filters[i][i2][i3] = 'NOT';\n singleSubSubFilter = 'NOT';\n }\n sqlFilter += ' ' + singleSubSubFilter + ' ';\n }\n else if (singleSubSubFilterType.toString() === 'object' && singleSubSubFilterIsDate) {\n sqlFilter += ' \\'' + singleSubSubFilter.toISOString().split('T')[0] + '\\' ';\n }\n else if (singleSubSubFilterType.toString() === 'number') {\n sqlFilter += ' ' + singleSubSubFilter.toString() + ' ';\n }\n else if (singleSubSubFilterType.toString() === 'boolean') {\n if (singleSubSubFilter.toString() === 'true')\n sqlFilter += '1 ';\n else if (singleSubSubFilter.toString() === 'false' || singleSubSubFilter === null || singleSubSubFilter === undefined)\n sqlFilter += '0 ';\n }\n }\n\n sqlFilter += ')';\n }\n else if (singleSubFilterType.toString() === 'string') {\n if (singleSubFilter === 'contains') {\n filters[i][i2] = 'LIKE';\n singleSubFilter = 'LIKE';\n\n filters[i][i2 + 1] = '\\'%' + filters[i][i2 + 1] + '%\\'';\n }\n else if (singleSubFilter === 'notcontains') {\n filters[i][i2] = 'NOT LIKE';\n singleSubFilter = 'NOT LIKE';\n\n filters[i][i2 + 1] = '\\'%' + filters[i][i2 + 1] + '%\\'';\n }\n else if (singleSubFilter === 'startswith') {\n filters[i][i2] = 'LIKE';\n singleSubFilter = 'LIKE';\n\n filters[i][i2 + 1] = '\\'' + filters[i][i2 + 1] + '%\\'';\n }\n else if (singleSubFilter === 'endswith') {\n filters[i][i2] = 'LIKE';\n singleSubFilter = 'LIKE';\n\n filters[i][i2 + 1] = '\\'%' + filters[i][i2 + 1] + '\\'';\n }\n else if (singleSubFilter === '=' || singleSubFilter === '<>' || singleSubFilter === '>' || singleSubFilter === '>=' || singleSubFilter === '<' || singleSubFilter === '<=') {\n if (!filters[i][i2 + 1])\n filters[i][i2 + 1] = 'NULL';\n else if (typeof filters[i][i2 + 1] === 'string') {\n filters[i][i2 + 1] = '\\'' + filters[i][i2 + 1] + '\\'';\n }\n }\n else if (singleSubFilter === '!') {\n filters[i][i2] = 'NOT';\n singleSubFilter = 'NOT';\n }\n sqlFilter += ' ' + singleSubFilter + ' ';\n }\n else if (singleSubFilterType.toString() === 'object' && singleSubFilterIsDate) {\n sqlFilter += ' \\'' + singleSubFilter.toISOString().split('T')[0] + '\\' ';\n }\n else if (singleSubFilterType.toString() === 'number') {\n sqlFilter += ' ' + singleSubFilter.toString() + ' ';\n }\n else if (singleSubFilterType.toString() === 'boolean') {\n if (singleSubFilter.toString() === 'true')\n sqlFilter += '1 ';\n else if (singleSubFilter.toString() === 'false' || singleSubFilter === null || singleSubFilter === undefined)\n sqlFilter += '0 ';\n }\n }\n\n sqlFilter += ')';\n }\n else if (singleFilterType.toString() === 'string') {\n if (singleFilter === 'contains') {\n filters[i] = 'LIKE';\n singleFilter = 'LIKE';\n\n filters[i + 1] = '\\'%' + filters[i + 1] + '%\\'';\n }\n else if (singleFilter === 'notcontains') {\n filters[i] = 'NOT LIKE';\n singleFilter = 'NOT LIKE';\n\n filters[i + 1] = '\\'%' + filters[i + 1] + '%\\'';\n }\n else if (singleFilter === 'startswith') {\n filters[i] = 'LIKE';\n singleFilter = 'LIKE';\n\n filters[i + 1] = '\\'' + filters[i + 1] + '%\\'';\n }\n else if (singleFilter === 'endswith') {\n filters[i] = 'LIKE';\n singleFilter = 'LIKE';\n\n filters[i + 1] = '\\'%' + filters[i + 1] + '\\'';\n }\n else if (singleFilter === '=' || singleFilter === '<>' || singleFilter === '>' || singleFilter === '>=' || singleFilter === '<' || singleFilter === '<=') {\n if (!filters[i + 1])\n filters[i + 1] = 'NULL';\n else if (typeof filters[i + 1] === 'string') {\n filters[i + 1] = '\\'' + filters[i + 1] + '\\'';\n }\n }\n else if (singleFilter === '!') {\n filters[i] = 'NOT';\n singleFilter = 'NOT';\n }\n sqlFilter += ' ' + singleFilter + ' ';\n }\n else if (singleFilterType.toString() === 'object' && singleFilterIsDate) {\n sqlFilter += ' \\'' + singleFilter.toISOString().split('T')[0] + '\\' ';\n }\n else if (singleFilterType.toString() === 'number') {\n sqlFilter += ' ' + singleFilter.toString() + ' ';\n }\n else if (singleFilterType.toString() === 'boolean') {\n if (singleFilter.toString() === 'true')\n sqlFilter += '1 ';\n else if (singleFilter.toString() === 'false' || singleFilter === null || singleFilter === undefined)\n sqlFilter += '0 ';\n }\n }\n\n sqlFilter += ')';\n }\n });\n\n async function getRecords() {\n if (sqlFilter === '(')\n sqlFilter = '';\n\n var records = await getReturnRequestRecords(sqlFilter);\n return {\n data: records,\n totalCount: records.length\n };\n }\n\n return getRecords()\n .then(function (result) {\n return result;\n })\n .catch(() => { throw new Error('Data Loading Error'); });\n },\n });\n\n var fechaEmisionEditorOptions = { width: '100%', readOnly: true };\n var movimientoEditorOptions = { width: '100%', readOnly: true };\n var datosClienteEditorOptions = { width: '100%', readOnly: true };\n var estatusEditorOptions = { width: '100%', readOnly: true };\n var autorizacionEditorOptions = { width: '100%', readOnly: true };\n var rutaEditorOptions = { width: '100%', readOnly: true };\n\n const storePedido = new CustomStore({\n key: 'value',\n load(loadOptions) {\n let sqlFilter = '';\n [\n 'filter'\n ].forEach((i) => {\n sqlFilter = loadOptions.searchValue;\n });\n\n async function getRecords() {\n var records = await getPedidos(sqlFilter);\n\n return {\n data: records,\n totalCount: records.length\n };\n }\n\n return getRecords()\n .then(function (result) {\n return result;\n })\n .catch(() => { throw new Error('Data Loading Error'); });\n },\n byKey: (key) => {\n return {\n name: key,\n value: key\n };\n }\n });\n\n //Opciones del campo Pedido\n try {\n var pedidoEditorOptions = {\n dataSource: storePedido,\n displayExpr: 'name',\n valueExpr: 'value',\n searchEnabled: true,\n showClearButton: true,\n acceptCustomValue: !activateCustomSalesOrderField,\n value: (returnRequestPayload.header.Pedido ? returnRequestPayload.header.Pedido : ''),\n disabled: !activateCustomSalesOrderField,\n searchTimeout: 1500,\n width: '100%',\n clearButtonText: 'Cerrar',\n noDataText: 'No se encontraron resultados'\n };\n }\n catch (e) {\n var pedidoEditorOptions = {\n dataSource: storePedido,\n displayExpr: 'name',\n valueExpr: 'value',\n searchEnabled: true,\n acceptCustomValue: acceptCustomValues,\n value: '',\n width: '100%'\n };\n }\n\n async function uploadChunk(file, uploadInfo) {\n try {\n var responseS3 = await Storage.put(\"/prog/\" + id + \"/\" + file.name, uploadInfo.chunkBlob, {\n contentType: file.type,\n ACL: 'public-read'\n });\n\n //Obtenemos el nombre del bucket\n let bucketName = Storage._config.AWSS3.bucket;\n\n\n let apiName = 'AdminSC';\n let path = '/uploadattachment';\n\n let myInit = {\n headers: {\n 'Content-Type': 'application/json',\n Authorization: `${(await Auth.currentSession()).getAccessToken().getJwtToken()}`\n },\n body: {\n action: 'register',\n bucketName: bucketName,\n type: 'prog',\n id: id,\n Key: \"/prog/\" + id + \"/\" + file.name,\n fileName: file.name,\n username: JSON.parse(JSON.stringify(await Auth.currentAuthenticatedUser())).username\n }\n }\n\n var attachmentsResult = await API.post(apiName, path, myInit);\n\n //Obtenemos los attachments\n var attachmentsGet = await Storage.list(\"/prog/\" + id);\n var attachmentsAux = [];\n\n for (var attachmentsGetIndex in attachmentsGet) {\n var singleAttachmentsGet = attachmentsGet[attachmentsGetIndex];\n\n var singleAttachment = {\n name: singleAttachmentsGet.key.split('/').pop(),\n isDirectory: false,\n size: singleAttachmentsGet.size,\n };\n\n attachmentsAux.push(singleAttachment);\n }\n\n setAttachments(attachmentsAux);\n }\n catch (err) {\n console.log(\"Error uploading file:\", err);\n }\n }\n\n async function onAttachmentDeleting(e) {\n var fileName = e.item.key;\n\n //Primero borramos el archivo de S3\n var attachmentsDelete = await Storage.remove(\"/prog/\" + id + \"/\" + fileName);\n\n //Despues borramos el attachment en Intelisis\n let bucketName = Storage._config.AWSS3.bucket;\n\n let apiName = 'AdminSC';\n let path = '/uploadattachment';\n\n let myInit = {\n headers: {\n 'Content-Type': 'application/json',\n Authorization: `${(await Auth.currentSession()).getAccessToken().getJwtToken()}`\n },\n body: {\n action: 'delete',\n bucketName: bucketName,\n type: 'prog',\n id: id,\n Key: \"/prog/\" + id + \"/\" + fileName,\n fileName: fileName,\n username: JSON.parse(JSON.stringify(await Auth.currentAuthenticatedUser())).username\n }\n }\n\n var attachmentsResult = await API.post(apiName, path, myInit);\n\n //Finalmente sincronizamos el state\n var attachmentsGet = await Storage.list(\"/prog/\" + id);\n var attachmentsAux = [];\n\n for (var attachmentsGetIndex in attachmentsGet) {\n var singleAttachmentsGet = attachmentsGet[attachmentsGetIndex];\n\n var singleAttachment = {\n name: singleAttachmentsGet.key.split('/').pop(),\n isDirectory: false,\n size: singleAttachmentsGet.size,\n };\n\n attachmentsAux.push(singleAttachment);\n }\n\n setAttachments(attachmentsAux);\n };\n\n function downloadBlob(blob, filename) {\n const url = URL.createObjectURL(blob);\n const a = document.createElement('a');\n a.href = url;\n a.download = filename || 'download';\n const clickHandler = () => {\n setTimeout(() => {\n URL.revokeObjectURL(url);\n a.removeEventListener('click', clickHandler);\n }, 150);\n };\n\n a.addEventListener('click', clickHandler, false);\n\n a.click();\n\n return a;\n };\n\n async function onItemDownloading(e) {\n e.cancel = true;\n\n const downloadFileResponse = await Storage.get(\"/prog/\" + id + \"/\" + e.item.name, { download: true });\n\n downloadBlob(downloadFileResponse.Body, e.item.name);\n };\n\n function openBlob(blob, filename) {\n const url = URL.createObjectURL(blob);\n\n window.open(url, \"_blank\");\n };\n\n async function onAttachmentOpen(e) {\n const downloadFileResponse = await Storage.get(\"/prog/\" + id + \"/\" + e.file.name, { download: true });\n\n openBlob(downloadFileResponse.Body, e.file.name);\n };\n\n async function getReturnRequestPayload(ID) {\n try {\n let apiName = 'AdminSC';\n let path = '/procesasoldevolucion';\n\n let myInit = {\n headers: {\n 'Content-Type': 'application/json',\n Authorization: `${(await Auth.currentSession()).getAccessToken().getJwtToken()}`\n },\n queryStringParameters: {\n ID: ID,\n action: 'payload',\n username: JSON.parse(JSON.stringify(await Auth.currentAuthenticatedUser())).username\n }\n }\n\n var payloadGet = await API.get(apiName, path, myInit);\n\n setReturnRequestPayload(payloadGet);\n\n //Obtenemos los attachments\n var attachmentsGet = await Storage.list(\"/prog/\" + ID);\n var attachmentsAux = [];\n\n for (var attachmentsGetIndex in attachmentsGet) {\n var singleAttachmentsGet = attachmentsGet[attachmentsGetIndex];\n\n var singleAttachment = {\n name: singleAttachmentsGet.key.split('/').pop(),\n isDirectory: false,\n size: singleAttachmentsGet.size,\n };\n\n attachmentsAux.push(singleAttachment);\n }\n\n setAttachments(attachmentsAux);\n }\n catch (e) {\n if (e === 'No current user') {\n history.push('/');\n\n window.location.reload();\n }\n }\n\n return payloadGet;\n }\n\n async function fnSCWebEnableTransactionButtons(sucursal) {\n let apiName = 'AdminSC';\n let path = '/getcatalogo';\n\n let myInit = {\n headers: {\n 'Content-Type': 'application/json',\n Authorization: `${(await Auth.currentSession()).getAccessToken().getJwtToken()}`\n },\n queryStringParameters: {\n type: 'fnSCWebEnableTransactionButtons',\n username: JSON.parse(JSON.stringify(await Auth.currentAuthenticatedUser())).username,\n sucursal: sucursal\n }\n }\n\n var permissionGet = await API.get(apiName, path, myInit);\n\n try {\n return permissionGet[0].Permission;\n }\n catch (e) {\n return false;\n }\n }\n\n function editReturnRequest(data) {\n return (\n <Link to={`/ReturnRequest/${data.data.ID}`}>\n <button class=\"bg-blue-500 hover:bg-blue-700 text-white py-1 px-3 rounded\" onClick={() => editButton(data.data.ID)}><FontAwesomeIcon icon={permissionLevel === 'Editar' ? faPencilAlt : faGlasses} /> {permissionLevel === 'Editar' ? 'Editar' : 'Ver'}</button>\n </Link>\n )\n }\n\n async function editButton(ID) {\n try {\n if (!window.event.metaKey && !window.event.ctrlKey) {\n setVisibleLoadPanel(true);\n\n setIsDetail(true);\n setId(ID);\n\n var payload = await getReturnRequestPayload(ID);\n\n if (payload.header.Pedido) {\n setActivateCustomSalesOrderField(false);\n }\n else {\n setActivateCustomSalesOrderField(true);\n }\n\n if (permissionLevel === 'Editar') {\n if (payload.header.Estatus === 'Sin Afectar') {\n setActivateUpdateForm(true);\n setActivateUpdateGrid(true);\n setAcceptCustomValue(false);\n setActivateSaveButton(true);\n setActivateDeleteButton(false);\n setActivateConfirmButton(true);\n setActivateApproveButton(false);\n setActivateGetItemButton(true);\n setActivateSelectItemButton(true);\n setActivatePDFButton(true);\n setActivateCustomWarehouseField(false);\n setActivateCancelButton(true);\n setActivateCantidadButton(true);\n setActivateAttachments(true);\n\n setContextMenuItems([\n { text: 'Seleccionar Todo', icon: 'selectall' },\n { text: 'Eliminar Selección', icon: 'unselectall' }\n ]);\n }\n else if (payload.header.Estatus === 'Pendiente') {\n var enableButtons = await fnSCWebEnableTransactionButtons(payload.header.Sucursal);\n\n setActivateUpdateForm(false);\n setActivateUpdateGrid(enableButtons);\n setAcceptCustomValue(true);\n setActivateSaveButton(false);\n setActivateDeleteButton(false);\n setActivateConfirmButton(enableButtons);\n\n if (payload.header.RequiereAutorizacion === true && payload.header.Autorizado === false && approveDelivery)\n setActivateApproveButton(true);\n else\n setActivateApproveButton(false);\n\n setActivateGetItemButton(false);\n setActivateSelectItemButton(false);\n setActivatePDFButton(true);\n setActivateCustomWarehouseField(true);\n setActivateCancelButton(enableButtons);\n setActivateCantidadButton(false);\n setActivateAttachments(enableButtons);\n\n if (enableButtons)\n setContextMenuItems([\n { text: 'Seleccionar Todo', icon: 'selectall' },\n { text: 'Eliminar Selección', icon: 'unselectall' }\n ]);\n else\n setContextMenuItems([]);\n }\n else if (payload.header.Estatus === 'Cancelado') {\n setActivateUpdateForm(false);\n setActivateUpdateGrid(false);\n setAcceptCustomValue(true);\n setActivateSaveButton(false);\n setActivateDeleteButton(false);\n setActivateConfirmButton(false);\n setActivateApproveButton(false);\n setActivateGetItemButton(false);\n setActivateSelectItemButton(false);\n setActivatePDFButton(true);\n setActivateCustomWarehouseField(true);\n setActivateCancelButton(false);\n setActivateCantidadButton(false);\n setActivateAttachments(false);\n\n setContextMenuItems([]);\n }\n else if (payload.header.Estatus === 'Concluido') {\n setActivateUpdateForm(false);\n setActivateUpdateGrid(false);\n setAcceptCustomValue(true);\n setActivateSaveButton(false);\n setActivateDeleteButton(false);\n setActivateConfirmButton(false);\n setActivateApproveButton(false);\n setActivateGetItemButton(false);\n setActivateSelectItemButton(false);\n setActivatePDFButton(true);\n setActivateCustomWarehouseField(true);\n setActivateCancelButton(false);\n setActivateCantidadButton(false);\n setActivateAttachments(false);\n\n setContextMenuItems([]);\n }\n else if (payload.header.Estatus === 'Disponible') {\n setActivateUpdateForm(false);\n setActivateUpdateGrid(false);\n setAcceptCustomValue(true);\n setActivateSaveButton(false);\n setActivateDeleteButton(false);\n setActivateConfirmButton(false);\n setActivateApproveButton(false);\n setActivateGetItemButton(false);\n setActivateSelectItemButton(false);\n setActivatePDFButton(true);\n setActivateCustomWarehouseField(true);\n setActivateCancelButton(true);\n setActivateCantidadButton(false);\n setActivateAttachments(false);\n\n setContextMenuItems([]);\n }\n else if (payload.header.Estatus === 'Enrutado') {\n setActivateUpdateForm(false);\n setActivateUpdateGrid(false);\n setAcceptCustomValue(true);\n setActivateSaveButton(false);\n setActivateDeleteButton(false);\n setActivateConfirmButton(false);\n setActivateApproveButton(false);\n setActivateGetItemButton(false);\n setActivateSelectItemButton(false);\n setActivatePDFButton(true);\n setActivateCustomWarehouseField(true);\n setActivateCancelButton(false);\n setActivateCantidadButton(false);\n setActivateAttachments(false);\n\n setContextMenuItems([]);\n }\n }\n else if (permissionLevel === 'Ver') {\n setActivateUpdateForm(false);\n setActivateUpdateGrid(false);\n setAcceptCustomValue(true);\n setActivateSaveButton(false);\n setActivateDeleteButton(false);\n setActivateConfirmButton(false);\n setActivateGetItemButton(false);\n setActivateSelectItemButton(false);\n setActivatePDFButton(true);\n setActivateCustomWarehouseField(true);\n setActivateCancelButton(false);\n setActivateCantidadButton(false);\n setActivateAttachments(false);\n\n setContextMenuItems([]);\n }\n\n setVisibleLoadPanel(false);\n }\n }\n catch (e) {\n setVisibleLoadPanel(false);\n\n if (!ID || ID === 'undefined') {\n newButton();\n }\n }\n };\n\n async function cancelEditButton() {\n setIsDetail(false);\n };\n\n async function saveButton() {\n try {\n if (returnRequestPayload.header.Estatus === 'Sin Afectar') {\n if (!returnRequestPayload.header.Pedido || returnRequestPayload.header.Pedido === '') {\n setVisibleToast(true);\n setMessageToast('Falta especificar el Pedido')\n setTypeToast('error');\n return;\n }\n }\n\n setVisibleLoadPanel(true);\n\n var ID = returnRequestPayload.header.ID;\n\n //Guardamos los cambios del grid\n if (gridArticulosRef.current) {\n var gridArticulos = gridArticulosRef.current.instance();\n\n gridArticulos.saveEditData();\n }\n\n //Despues enviamos todo al backend\n let apiName = 'AdminSC';\n let path = '/procesasoldevolucion';\n\n let myInit = {\n headers: {\n 'Content-Type': 'application/json',\n Authorization: `${(await Auth.currentSession()).getAccessToken().getJwtToken()}`\n },\n body: {\n ID: ID,\n payload: returnRequestPayload,\n action: 'saveChanges',\n username: JSON.parse(JSON.stringify(await Auth.currentAuthenticatedUser())).username,\n usuario: props.usuario,\n sucursal: props.sucursal,\n s3Bucket: Storage._config.AWSS3.bucket\n }\n }\n\n var payloadPost = await API.post(apiName, path, myInit);\n\n if (payloadPost.ok === 'true') {\n if (!ID) {\n setVisibleToast(true);\n setMessageToast('Se creó la Solicitud de Devolución con éxito');\n setTypeToast('success')\n\n ID = payloadPost.newID;\n\n editButton(ID);\n\n history.push('/ReturnRequest/' + ID.toString());\n }\n else {\n setVisibleToast(true);\n setMessageToast('Se actualizó la Solicitud de Devolución con éxito');\n setTypeToast('success')\n }\n }\n else if (payloadPost.ok === 'false') {\n setVisibleToast(true);\n setMessageToast(payloadPost.message);\n setTypeToast('error')\n }\n\n editButton(ID);\n\n setVisibleLoadPanel(false);\n }\n catch (e) {\n setVisibleLoadPanel(false);\n\n if (e === 'No current user') {\n history.push('/');\n\n window.location.reload();\n }\n }\n };\n\n async function approveButton() {\n try {\n\n setVisibleLoadPanel(true);\n\n var ID = returnRequestPayload.header.ID;\n\n //Despues enviamos todo al backend\n let apiName = 'AdminSC';\n let path = '/procesasoldevolucion';\n\n let myInit = {\n headers: {\n 'Content-Type': 'application/json',\n Authorization: `${(await Auth.currentSession()).getAccessToken().getJwtToken()}`\n },\n body: {\n ID: ID,\n payload: returnRequestPayload,\n action: 'approve',\n username: JSON.parse(JSON.stringify(await Auth.currentAuthenticatedUser())).username,\n usuario: props.usuario,\n sucursal: props.sucursal\n }\n }\n\n var payloadPost = await API.post(apiName, path, myInit);\n\n if (payloadPost.ok === 'true') {\n setVisibleToast(true);\n setMessageToast('Solicitud de Devolución Autorizada');\n setTypeToast('success')\n }\n else if (payloadPost.ok === 'false') {\n setVisibleToast(true);\n setMessageToast(payloadPost.message);\n setTypeToast('error')\n }\n\n editButton(ID);\n\n setVisibleLoadPanel(false);\n }\n catch (e) {\n setVisibleLoadPanel(false);\n\n if (e === 'No current user') {\n history.push('/');\n\n window.location.reload();\n }\n }\n };\n\n async function confirmButton() {\n try {\n if (returnRequestPayload.header.Estatus === 'Sin Afectar') {\n if (!returnRequestPayload.header.Pedido || returnRequestPayload.header.Pedido === '') {\n setVisibleToast(true);\n setMessageToast('Falta especificar el Pedido')\n setTypeToast('error');\n return;\n }\n }\n\n setVisibleLoadPanel(true);\n\n var ID = returnRequestPayload.header.ID;\n\n //Guardamos los cambios del grid\n if (gridArticulosRef.current) {\n var gridArticulos = gridArticulosRef.current.instance();\n\n gridArticulos.saveEditData();\n }\n\n //Despues enviamos todo al backend\n let apiName = 'AdminSC';\n let path = '/procesasoldevolucion';\n\n let myInit = {\n headers: {\n 'Content-Type': 'application/json',\n Authorization: `${(await Auth.currentSession()).getAccessToken().getJwtToken()}`\n },\n body: {\n ID: ID,\n payload: returnRequestPayload,\n action: 'apply',\n username: JSON.parse(JSON.stringify(await Auth.currentAuthenticatedUser())).username,\n usuario: props.usuario,\n sucursal: props.sucursal\n }\n }\n\n var payloadPost = await API.post(apiName, path, myInit);\n\n if (payloadPost.ok === 'true') {\n setVisibleToast(true);\n setMessageToast('Se afectó la Solicitud de Devolución con éxito');\n setTypeToast('success')\n }\n else if (payloadPost.ok === 'false') {\n setVisibleToast(true);\n setMessageToast(payloadPost.message);\n setTypeToast('error')\n }\n\n editButton(ID);\n\n setVisibleLoadPanel(false);\n }\n catch (e) {\n setVisibleLoadPanel(false);\n\n if (e === 'No current user') {\n history.push('/');\n\n window.location.reload();\n }\n }\n };\n\n async function getItemsButton() {\n try {\n if (returnRequestPayload.header.Estatus === 'Sin Afectar') {\n if (!returnRequestPayload.header.Pedido || returnRequestPayload.header.Pedido === '') {\n setVisibleToast(true);\n setMessageToast('Falta especificar el Pedido')\n setTypeToast('error');\n return;\n }\n }\n\n setVisibleLoadPanel(true);\n\n var ID = returnRequestPayload.header.ID;\n\n //Guardamos los cambios del grid\n if (gridArticulosRef.current) {\n var gridArticulos = gridArticulosRef.current.instance();\n\n gridArticulos.saveEditData();\n }\n\n //Despues enviamos todo al backend\n let apiName = 'AdminSC';\n let path = '/procesasoldevolucion';\n\n let myInit = {\n headers: {\n 'Content-Type': 'application/json',\n Authorization: `${(await Auth.currentSession()).getAccessToken().getJwtToken()}`\n },\n body: {\n ID: ID,\n payload: returnRequestPayload,\n action: 'getItems',\n username: JSON.parse(JSON.stringify(await Auth.currentAuthenticatedUser())).username,\n usuario: props.usuario,\n sucursal: props.sucursal\n }\n }\n\n var payloadPost = await API.post(apiName, path, myInit);\n\n if (payloadPost.ok === 'true') {\n setVisibleToast(true);\n setMessageToast('Artículos actualizados con éxito');\n setTypeToast('success')\n }\n else if (payloadPost.ok === 'false') {\n setVisibleToast(true);\n setMessageToast(payloadPost.message);\n setTypeToast('error')\n }\n\n editButton(ID);\n\n setVisibleLoadPanel(false);\n }\n catch (e) {\n setVisibleLoadPanel(false);\n\n if (e === 'No current user') {\n history.push('/');\n\n window.location.reload();\n }\n }\n };\n\n async function selectAllButton() {\n try {\n if (returnRequestPayload.header.Estatus === 'Sin Afectar') {\n if (!returnRequestPayload.header.Pedido || returnRequestPayload.header.Pedido === '') {\n setVisibleToast(true);\n setMessageToast('Falta especificar el Pedido')\n setTypeToast('error');\n return;\n }\n }\n\n setVisibleLoadPanel(true);\n\n var ID = returnRequestPayload.header.ID;\n\n //Guardamos los cambios del grid\n if (gridArticulosRef.current) {\n var gridArticulos = gridArticulosRef.current.instance();\n\n gridArticulos.saveEditData();\n }\n\n //Despues enviamos todo al backend\n let apiName = 'AdminSC';\n let path = '/procesasoldevolucion';\n\n let myInit = {\n headers: {\n 'Content-Type': 'application/json',\n Authorization: `${(await Auth.currentSession()).getAccessToken().getJwtToken()}`\n },\n body: {\n ID: ID,\n payload: returnRequestPayload,\n action: 'selectAll',\n username: JSON.parse(JSON.stringify(await Auth.currentAuthenticatedUser())).username,\n usuario: props.usuario,\n sucursal: props.sucursal\n }\n }\n\n var payloadPost = await API.post(apiName, path, myInit);\n\n if (payloadPost.ok === 'true') {\n setVisibleToast(true);\n setMessageToast('Artículos seleccionados con éxito');\n setTypeToast('success')\n }\n else if (payloadPost.ok === 'false') {\n setVisibleToast(true);\n setMessageToast(payloadPost.message);\n setTypeToast('error')\n }\n\n editButton(ID);\n\n setVisibleLoadPanel(false);\n }\n catch (e) {\n setVisibleLoadPanel(false);\n\n if (e === 'No current user') {\n history.push('/');\n\n window.location.reload();\n }\n }\n };\n\n async function voidButton() {\n try {\n if (!window.confirm('¿Desea cancelar la Solicitud de Devolución?'))\n return;\n\n setVisibleLoadPanel(true);\n\n var ID = returnRequestPayload.header.ID;\n\n //Guardamos los cambios del grid\n if (gridArticulosRef.current) {\n var gridArticulos = gridArticulosRef.current.instance();\n\n gridArticulos.saveEditData();\n }\n\n //Despues enviamos todo al backend\n let apiName = 'AdminSC';\n let path = '/procesasoldevolucion';\n\n let myInit = {\n headers: {\n 'Content-Type': 'application/json',\n Authorization: `${(await Auth.currentSession()).getAccessToken().getJwtToken()}`\n },\n body: {\n ID: ID,\n payload: returnRequestPayload,\n action: 'void',\n username: JSON.parse(JSON.stringify(await Auth.currentAuthenticatedUser())).username,\n usuario: props.usuario,\n sucursal: props.sucursal\n }\n }\n\n var payloadPost = await API.post(apiName, path, myInit);\n\n if (payloadPost.ok === 'true') {\n setVisibleToast(true);\n setMessageToast('Se canceló la Solicitud de Devolución');\n setTypeToast('success')\n }\n else if (payloadPost.ok === 'false') {\n setVisibleToast(true);\n setMessageToast(payloadPost.message);\n setTypeToast('error')\n }\n\n editButton(ID);\n\n setVisibleLoadPanel(false);\n }\n catch (e) {\n setVisibleLoadPanel(false);\n\n if (e === 'No current user') {\n history.push('/');\n\n window.location.reload();\n }\n }\n };\n\n async function selectNothingButton() {\n try {\n if (returnRequestPayload.header.Estatus === 'Sin Afectar') {\n if (!returnRequestPayload.header.Pedido || returnRequestPayload.header.Pedido === '') {\n setVisibleToast(true);\n setMessageToast('Falta especificar el Pedido')\n setTypeToast('error');\n return;\n }\n }\n\n setVisibleLoadPanel(true);\n\n var ID = returnRequestPayload.header.ID;\n\n //Guardamos los cambios del grid\n if (gridArticulosRef.current) {\n var gridArticulos = gridArticulosRef.current.instance();\n\n gridArticulos.saveEditData();\n }\n\n //Despues enviamos todo al backend\n let apiName = 'AdminSC';\n let path = '/procesasoldevolucion';\n\n let myInit = {\n headers: {\n 'Content-Type': 'application/json',\n Authorization: `${(await Auth.currentSession()).getAccessToken().getJwtToken()}`\n },\n body: {\n ID: ID,\n payload: returnRequestPayload,\n action: 'selectNothing',\n username: JSON.parse(JSON.stringify(await Auth.currentAuthenticatedUser())).username,\n usuario: props.usuario,\n sucursal: props.sucursal\n }\n }\n\n var payloadPost = await API.post(apiName, path, myInit);\n\n if (payloadPost.ok === 'true') {\n setVisibleToast(true);\n setMessageToast('Artículos seleccionados con éxito');\n setTypeToast('success')\n }\n else if (payloadPost.ok === 'false') {\n setVisibleToast(true);\n setMessageToast(payloadPost.message);\n setTypeToast('error')\n }\n\n editButton(ID);\n\n setVisibleLoadPanel(false);\n }\n catch (e) {\n setVisibleLoadPanel(false);\n\n if (e === 'No current user') {\n history.push('/');\n\n window.location.reload();\n }\n }\n };\n\n function refreshButton() {\n if (gridTableroRef.current) {\n var gridTablero = gridTableroRef.current.instance();\n\n gridTablero.refresh();\n }\n }\n\n async function newButton(salesorder) {\n try {\n let apiName = 'AdminSC';\n let path = '/procesasoldevolucion';\n\n let myInit = {\n headers: {\n 'Content-Type': 'application/json',\n Authorization: `${(await Auth.currentSession()).getAccessToken().getJwtToken()}`\n },\n queryStringParameters: {\n action: 'new',\n salesorder: salesorder,\n username: JSON.parse(JSON.stringify(await Auth.currentAuthenticatedUser())).username,\n usuario: props.usuario,\n sucursal: props.sucursal\n }\n };\n\n var payloadNew = await API.get(apiName, path, myInit);\n\n setReturnRequestPayload(payloadNew);\n\n setAttachments([]);\n\n setIsDetail(true);\n setId(undefined);\n\n setActivateCustomSalesOrderField(true);\n setActivateCustomWarehouseField(true);\n setActivateUpdateForm(true);\n setActivateUpdateGrid(true);\n setAcceptCustomValue(false);\n setActivateSaveButton(true);\n setActivateDeleteButton(false);\n setActivateConfirmButton(false);\n setActivatePDFButton(false);\n setActivateGetItemButton(false);\n setActivateSelectItemButton(false);\n setActivateCancelButton(false);\n setActivateCantidadButton(false);\n\n setVisibleLoadPanel(false);\n setContextMenuItems([]);\n }\n catch (e) {\n if (e === 'No current user') {\n history.push('/');\n\n window.location.reload();\n }\n }\n };\n\n async function deleteButton() {\n try {\n if (!window.confirm('¿Desea eliminar la Solicitud de Devolución?'))\n return;\n\n setVisibleLoadPanel(true);\n\n var ID = returnRequestPayload.header.ID;\n\n if (!ID) {\n //Vamos al tablero de control\n history.push('/ReturnRequest');\n return;\n }\n\n let apiName = 'AdminSC';\n let path = '/procesasoldevolucion';\n\n let myInit = {\n headers: {\n 'Content-Type': 'application/json',\n Authorization: `${(await Auth.currentSession()).getAccessToken().getJwtToken()}`\n },\n body: {\n ID: ID,\n payload: returnRequestPayload,\n action: 'delete',\n username: JSON.parse(JSON.stringify(await Auth.currentAuthenticatedUser())).username,\n usuario: props.usuario,\n sucursal: props.sucursal\n }\n }\n\n var payloadPost = await API.post(apiName, path, myInit);\n\n if (payloadPost.ok === 'true') {\n setVisibleLoadPanel(false);\n\n setVisibleToast(true);\n setMessageToast('Solicitud de Devolución eliminada con éxito');\n setTypeToast('success')\n\n setIsDetail(false);\n\n //Vamos al tablero de control\n history.push('/ReturnRequest');\n }\n else if (payloadPost.ok === 'false') {\n setVisibleLoadPanel(false);\n\n setVisibleToast(true);\n setMessageToast(payloadPost.message);\n setTypeToast('error')\n }\n }\n catch (e) {\n setVisibleLoadPanel(false);\n\n if (e === 'No current user') {\n history.push('/');\n\n window.location.reload();\n }\n }\n }\n\n function printButton() {\n var baseUrl = window.location.href.split('/')[0];\n\n window.open(baseUrl + \"/#/PdfRender?type=returnrequest&id=\" + id, \"_blank\");\n };\n\n async function getPedidos(sqlFilter) {\n let apiName = 'AdminSC';\n let path = '/getcatalogo';\n\n let myInit = {\n headers: {\n 'Content-Type': 'application/json',\n Authorization: `${(await Auth.currentSession()).getAccessToken().getJwtToken()}`\n },\n queryStringParameters: {\n type: 'PedidoSolDevolucion',\n username: JSON.parse(JSON.stringify(await Auth.currentAuthenticatedUser())).username,\n sqlFilter: sqlFilter\n }\n }\n\n var pedidosGet = await API.get(apiName, path, myInit);\n var tmpPedidos = [];\n\n for (var pedidosGetIndex in pedidosGet) {\n\n tmpPedidos.push({\n name: pedidosGet[pedidosGetIndex].SCRama,\n value: pedidosGet[pedidosGetIndex].SCRama\n })\n }\n\n return tmpPedidos;\n };\n\n useEffect(() => {\n window.addEventListener('popstate', (e) => {\n var hash;\n\n try {\n hash = e.target.location.hash;\n }\n catch (e) {\n hash = '';\n }\n\n if (hash === '#/ReturnRequest') {\n history.push('/ReturnRequest');\n\n window.location.reload();\n }\n });\n\n async function initialize() {\n setVisibleLoadPanel(true);\n\n setVisibleLoadPanel(false);\n }\n\n initialize();\n\n //En caso de solicitar un ID especifico, redireccionamos a ese ID\n if (!props.match.isExact) {\n var urlID = props.location.pathname.replace('/ReturnRequest/', '');\n\n var search = props.location.search;\n var salesorder;\n\n if (search)\n salesorder = search.replace('?salesorder=', '');\n\n if (urlID === 'undefined')\n urlID = undefined;\n\n if (urlID)\n editButton(urlID);\n else\n newButton(salesorder);\n }\n\n // eslint-disable-next-line\n }, []);\n\n function overrideOnValueChanged(e) {\n //Hacemos la data persistente en cuanto el usuario escriba en el campo\n // if (e.parentType === \"dataRow\") {\n // e.editorOptions.valueChangeEvent = \"input\";\n // }\n }\n\n function onHidingToast() {\n setVisibleToast(false);\n }\n\n function estatusRelatedRecords(data) {\n return (\n <TransactionStatus {...props} Estatus={data.data.Estatus} />\n )\n };\n\n const onFieldDatosProgramacionChanged = React.useCallback((e) => {\n var dataField = e.dataField;\n var value = e.value;\n\n\n if (formDatosGeneralesRef.current) {\n var formDatosGenerales = formDatosGeneralesRef.current.instance();\n\n if (e.dataField === 'Pedido') {\n if (e.value) {\n async function getSalesOrderInfo() {\n try {\n setVisibleLoadPanel(true);\n\n let apiName = 'AdminSC';\n let path = '/procesasoldevolucion';\n\n let myInit = {\n headers: {\n 'Content-Type': 'application/json',\n Authorization: `${(await Auth.currentSession()).getAccessToken().getJwtToken()}`\n },\n queryStringParameters: {\n action: 'getSalesOrderInfo',\n salesOrder: value,\n username: JSON.parse(JSON.stringify(await Auth.currentAuthenticatedUser())).username\n }\n };\n\n var payloadNew = await API.get(apiName, path, myInit);\n\n formDatosGenerales.updateData('NombreCliente', payloadNew.header.NombreCliente);\n formDatosGenerales.updateData('Telefono', payloadNew.header.Telefono);\n formDatosGenerales.updateData('Direccion', payloadNew.header.Direccion);\n formDatosGenerales.updateData('Colonia', payloadNew.header.Colonia);\n formDatosGenerales.updateData('CodigoPostal', payloadNew.header.CodigoPostal);\n formDatosGenerales.updateData('Estado', payloadNew.header.Estado);\n formDatosGenerales.updateData('Municipio', payloadNew.header.Municipio);\n formDatosGenerales.updateData('Pais', payloadNew.header.Pais);\n\n setVisibleLoadPanel(false);\n }\n catch (e) {\n if (e === 'No current user') {\n history.push('/');\n\n window.location.reload();\n }\n }\n }\n\n getSalesOrderInfo();\n }\n else {\n formDatosGenerales.updateData('NombreCliente', undefined);\n formDatosGenerales.updateData('Telefono', undefined);\n formDatosGenerales.updateData('Direccion', undefined);\n formDatosGenerales.updateData('Colonia', undefined);\n formDatosGenerales.updateData('CodigoPostal', undefined);\n formDatosGenerales.updateData('Estado', undefined);\n formDatosGenerales.updateData('Municipio', undefined);\n formDatosGenerales.updateData('Pais', undefined);\n }\n }\n }\n }, [formDatosGeneralesRef, history])\n\n function contextMenuItemClick(e) {\n if (e.itemData.text === 'Seleccionar Todo') {\n selectAllButton();\n }\n else if (e.itemData.text === 'Eliminar Selección') {\n selectNothingButton();\n }\n };\n\n function onExporting(e) {\n const workbook = new Workbook();\n const worksheet = workbook.addWorksheet('Datos');\n\n exportDataGrid({\n component: e.component,\n worksheet,\n autoFilterEnabled: true,\n }).then(() => {\n workbook.xlsx.writeBuffer().then((buffer) => {\n saveAs(new Blob([buffer], { type: 'application/octet-stream' }), 'Datos.xlsx');\n });\n });\n e.cancel = true;\n };\n\n return (\n <div>\n {isDetail === false ? (\n <div class=\"bg-gray-200 m-2\">\n <h1 class=\"font-sans inline-block text-xl font-bold text-gray-700 leading-8 align-top mb-1\"><FontAwesomeIcon icon={faList} size=\"lg\" /> Solicitudes de Devolución</h1>\n </div>\n ) :\n (\n <div class=\"bg-gray-200 m-2\">\n <h1 class=\"font-sans inline-block text-xl font-bold text-gray-700 leading-8 align-top mb-1\"><FontAwesomeIcon icon={faHandHoldingBox} size=\"xl\" /> {(returnRequestPayload.header ? returnRequestPayload.header.Movimiento : 'Solicitud de Devolución')}</h1>\n <TransactionStatus {...props} Estatus={returnRequestPayload.header.Estatus} />\n </div>\n )}\n\n <LoadPanel\n shadingColor=\"rgba(0,0,0,0.4)\"\n visible={visibleLoadPanel}\n showIndicator={true}\n message=\"Por favor espere...\"\n shading={true}\n showPane={true}\n hideOnOutsideClick={false}\n />\n\n <Toast\n visible={visibleToast}\n message={messageToast}\n type={typeToast}\n onHiding={onHidingToast}\n displayTime={5000}\n width={'auto'}\n position={{\n my: 'top center',\n at: 'top center',\n of: window,\n offset: '0 130'\n }}\n />\n\n <div class=\"bg-gray-200 m-2\">\n {isDetail === false ? (\n <div class=\"bg-white p-3 shadow-xl\">\n\n {permissionLevel === 'Editar' ?\n (\n <div>\n <Link to=\"/ReturnRequest/undefined\">\n <button class=\"mb-2 bg-green-500 hover:bg-green-700 text-white font-bold py-2 px-4 rounded\" onClick={() => newButton()}><FontAwesomeIcon icon={faFileAlt} /> Nueva Solicitud de Devolución</button>\n </Link>\n\n <button onClick={refreshButton} type=\"submit\" class=\"ml-4 mb-4 bg-blue-500 hover:bg-blue-700 text-white font-bold py-2 px-4 rounded\">\n <FontAwesomeIcon icon={faArrowsRotate} /> Actualizar\n </button>\n </div>\n ) :\n (\n <div>\n <button onClick={refreshButton} type=\"submit\" class=\"mb-4 bg-blue-500 hover:bg-blue-700 text-white font-bold py-2 px-4 rounded\">\n <FontAwesomeIcon icon={faArrowsRotate} /> Actualizar\n </button>\n </div>\n )}\n\n <div className=\"options mb-2\">\n <div className=\"option\">\n <CheckBox text=\"Expandir todos los grupos\"\n value={autoExpandAll}\n onValueChanged={onAutoExpandAllChanged}></CheckBox>\n </div>\n </div>\n <DataGrid\n height={800}\n id=\"gridContainer\"\n columnsAutoWidth={true}\n filterBuilder={filterBuilder}\n dataSource={store}\n defaultFilterValue={filterValue}\n allowColumnReordering={true}\n allowColumnResizing={true}\n columnResizingMode={\"widget\"}\n showBorders={true}\n rowAlternationEnabled={true}\n showRowLines={true}\n showColumnLines={true}\n remoteOperations={{ filtering: true }}\n ref={gridTableroRef}\n onExporting={onExporting}\n >\n <Scrolling rowRenderingMode='virtual'></Scrolling>\n <Paging defaultPageSize={10} />\n <Pager\n visible={true}\n allowedPageSizes={allowedPageSizes}\n displayMode='compact'\n showPageSizeSelector={true}\n showInfo={true}\n showNavigationButtons={true}\n />\n <FilterRow visible={true} />\n <FilterPanel visible={true} />\n <FilterBuilderPopup position={filterBuilderPopupPosition} />\n\n <HeaderFilter visible={true} />\n\n <GroupPanel visible={true} />\n <SearchPanel visible={true} />\n <ColumnChooser\n enabled={true}\n mode='select'\n >\n <ColumnChooserSearch\n enabled={true}\n />\n\n <ColumnChooserSelection\n allowSelectAll={true}\n selectByClick={true}\n recursive={true}\n />\n </ColumnChooser>\n <Grouping autoExpandAll={autoExpandAll} />\n <StateStoring enabled={true} type=\"localStorage\" storageKey=\"gridContainerReturnRequest\" />\n <Export enabled={true} />\n\n <Column caption=\"\" alignment=\"center\" width={100} cellRender={editReturnRequest} />\n <Column dataField=\"MovID\" dataType=\"string\" width={110} caption=\"Folio\" />\n <Column dataField=\"FechaEmision\" caption=\"Fecha Emisión\" dataType=\"date\" width={130} />\n <Column dataField=\"FechaProgramada\" caption=\"Fecha Programada\" dataType=\"date\" width={130} visible={false} />\n <Column dataField=\"Estatus\" dataType=\"string\" width={120} />\n <Column dataField=\"Pedido\" dataType=\"string\" width={120} />\n <Column dataField=\"Ruta\" dataType=\"string\" width={120} />\n <Column dataField=\"Chofer\" caption=\"Chofer\" dataType=\"string\" width={80} />\n <Column dataField=\"NombreChofer\" caption=\"Nombre Chofer\" dataType=\"string\" width={200} />\n <Column dataField=\"Ayudante\" caption=\"Ayudante\" dataType=\"string\" width={100} />\n <Column dataField=\"NombreAyudante\" caption=\"Nombre Ayudante\" dataType=\"string\" width={200} />\n <Column caption=\"Plaza\" dataField=\"Plaza\" dataType=\"string\" width={150} visible={false} />\n\n <Column dataField=\"ID\" dataType=\"number\" width={150} visible={false} />\n <Column dataField=\"Mov\" dataType=\"string\" width={190} caption=\"Tipo Movimiento\" visible={false} />\n <Column dataField=\"Movimiento\" dataType=\"string\" width={190} visible={false} />\n\n <Column dataField=\"Sucursal\" dataType=\"number\" width={150} visible={false} />\n <Column dataField=\"NombreSucursal\" dataType=\"string\" width={190} visible={false} />\n <Column dataField=\"Usuario\" dataType=\"string\" width={190} visible={false} />\n <Column dataField=\"NombreUsuario\" dataType=\"string\" width={190} visible={false} />\n <Column dataField=\"UsuarioOriginal\" dataType=\"string\" width={190} visible={false} />\n <Column dataField=\"RequiereAutorizacion\" dataType=\"boolean\" caption=\"Requiere Autorización\" width={200} visible={false} />\n <Column dataField=\"Autorizado\" dataType=\"boolean\" width={150} visible={false} />\n <Column dataField=\"FechaAutorizacion\" caption=\"Fecha Autorización\" dataType=\"datetime\" width={200} visible={false} />\n </DataGrid>\n </div>\n ) : (<div />)}\n <Route exact path=\"/ReturnRequest/:ID\" render={({ match }) => {\n return (\n <div class=\"bg-gray-200\">\n {isDetail.toString() === 'true' ?\n (\n <div>\n <Link to=\"/ReturnRequest\">\n <button onClick={cancelEditButton} type=\"submit\" class=\"mb-4 bg-red-500 hover:bg-red-700 text-white font-bold py-2 px-4 rounded\">\n <FontAwesomeIcon icon={faArrowRotateLeft} /> Regresar\n </button>\n </Link>\n\n {activateSaveButton.toString() === 'true' ?\n (\n <button onClick={saveButton} type=\"submit\" class=\"ml-4 mb-4 bg-blue-500 hover:bg-blue-700 text-white font-bold py-2 px-4 rounded\">\n <FontAwesomeIcon icon={faSave} /> Guardar Cambios\n </button>\n ) : (\n <div class=\"inline-block\"></div>\n )}\n\n {activateConfirmButton.toString() === 'true' && id ?\n (\n <button onClick={confirmButton} type=\"submit\" class=\"ml-4 mb-4 bg-green-500 hover:bg-green-700 text-white font-bold py-2 px-4 rounded\">\n <FontAwesomeIcon icon={faPlay} /> Afectar\n </button>\n ) : (\n <div class=\"inline-block\"></div>\n )}\n\n {activateApproveButton.toString() === 'true' && id ?\n (\n <button onClick={approveButton} type=\"submit\" class=\"ml-4 mb-4 bg-green-500 hover:bg-green-700 text-white font-bold py-2 px-4 rounded\">\n <FontAwesomeIcon icon={faThumbsUp} /> Autorizar\n </button>\n ) : (\n <div class=\"inline-block\"></div>\n )}\n\n {activateGetItemButton.toString() === 'true' && id ?\n (\n <button onClick={getItemsButton} type=\"submit\" class=\"ml-4 mb-4 bg-yellow-500 hover:bg-yellow-700 text-white font-bold py-2 px-4 rounded\">\n <FontAwesomeIcon icon={faLightbulb} /> Obtener Artículos\n </button>\n ) :\n (\n <div class=\"inline-block\"></div>\n )}\n\n {activateSelectItemButton.toString() === 'true' && id ?\n (\n <button onClick={selectAllButton} type=\"submit\" class=\"ml-4 mb-4 bg-blue-500 hover:bg-blue-700 text-white font-bold py-2 px-4 rounded\">\n <FontAwesomeIcon icon={faCircleCheck} /> Todo\n </button>\n ) :\n (\n <div class=\"inline-block\"></div>\n )}\n\n {activateSelectItemButton.toString() === 'true' && id ?\n (\n <button onClick={selectNothingButton} type=\"submit\" class=\"ml-4 mb-4 bg-blue-500 hover:bg-blue-700 text-white font-bold py-2 px-4 rounded\">\n <FontAwesomeIcon icon={faCircleX} /> Nada\n </button>\n ) :\n (\n <div class=\"inline-block\"></div>\n )}\n\n {activateDeleteButton.toString() === 'true' && id ?\n (\n <button onClick={deleteButton} type=\"submit\" class=\"ml-4 mb-4 bg-red-500 hover:bg-red-700 text-white font-bold py-2 px-4 rounded\">\n <FontAwesomeIcon icon={faTrash} /> Eliminar\n </button>\n ) :\n (\n <div class=\"inline-block\"></div>\n )}\n\n {activateCancelButton.toString() === 'true' && id ?\n (\n <button onClick={voidButton} type=\"submit\" class=\"ml-4 mb-4 bg-red-500 hover:bg-red-700 text-white font-bold py-2 px-4 rounded\">\n <FontAwesomeIcon icon={faWindowClose} /> Cancelar\n </button>\n ) :\n (\n <div class=\"inline-block\"></div>\n )}\n\n {activatePDFButton.toString() === 'true' && id ?\n (\n <button onClick={printButton} type=\"submit\" class=\"ml-4 mb-4 bg-gray-500 hover:bg-gray-700 text-white font-bold py-2 px-4 rounded\">\n <FontAwesomeIcon icon={faFilePdf} /> PDF\n </button>\n ) :\n (\n <div class=\"inline-block\"></div>\n )}\n\n <div class=\"bg-white p-4 shadow-xl\">\n <ContextMenu\n dataSource={contextMenuItems}\n width={200}\n target=\"#gridArticulos\"\n onItemClick={contextMenuItemClick}\n />\n\n <Form\n id=\"formTransaccion\"\n labelMode={'outside'}\n formData={returnRequestPayload.header}\n readOnly={!activateUpdateForm}\n showColonAfterLabel={false}\n labelLocation={'top'}\n onFieldDataChanged={onFieldDatosProgramacionChanged}\n ref={formDatosGeneralesRef}\n >\n <TabbedItem>\n <TabPanelOptions deferRendering={false} showNavButtons={true} />\n <Tab title=\"Datos Generales\" colCount={3}>\n <GroupItem caption=\"General\">\n <Item cssClass=\"boldText\" dataField=\"Movimiento\" editorOptions={movimientoEditorOptions} />\n <Item dataField=\"FechaEmision\" editorType=\"dxDateBox\" editorOptions={fechaEmisionEditorOptions}>\n <Label text={\"Fecha Emisión\"} />\n </Item>\n <Item cssClass=\"boldText\" dataField=\"Ruta\" editorOptions={rutaEditorOptions} />\n <Item dataField=\"FechaProgramada\" editorType=\"dxDateBox\" >\n <Label text={\"Fecha Programada\"} />\n </Item>\n <Item dataField=\"Pedido\" editorType=\"dxLookup\" editorOptions={pedidoEditorOptions} >\n <Label text=\"Pedido\" />\n </Item>\n </GroupItem>\n <GroupItem caption=\"Artículos\" colSpan={2} >\n <DataGrid\n id=\"gridArticulos\"\n ref={gridArticulosRef}\n columnsAutoWidth={true}\n dataSource={returnRequestPayload.detail}\n showBorders={true}\n showColumnLines={true}\n showRowLines={true}\n rowAlternationEnabled={true}\n allowColumnResizing={true}\n columnResizingMode=\"widget\"\n allowColumnReordering={false}\n repaintChangesOnly={false}\n >\n <Editing\n mode=\"cell\"\n allowUpdating={activateUpdateGrid}\n allowAdding={false}\n allowDeleting={false}\n />\n <Sorting mode=\"none\" />\n\n <Column dataField=\"Renglon\" width={190} visible={false} allowEditing={false} />\n <Column dataField=\"Articulo\" caption=\"Artículo\" width={100} allowEditing={false} />\n <Column dataField=\"Descripcion\" caption=\"Descripción\" width={350} allowEditing={false} />\n <Column dataField=\"Cantidad\" width={120} allowEditing={false} dataType=\"number\" />\n <Column dataField=\"CantidadA\" caption=\"Programación\" width={120} allowEditing={activateCantidadButton} visible={returnRequestPayload.header.Estatus === 'Sin Afectar' || returnRequestPayload.header.Estatus === 'Pendiente' || returnRequestPayload.header.Estatus === 'Disponible' || returnRequestPayload.header.Estatus === 'Concluido'} dataType=\"number\" />\n </DataGrid>\n </GroupItem>\n </Tab>\n <Tab title=\"Datos del Cliente\" colCount={3}>\n <Item dataField=\"NombreCliente\" editorOptions={datosClienteEditorOptions} >\n <Label text=\"Nombre\" />\n </Item>\n <Item dataField=\"Telefono\" editorOptions={datosClienteEditorOptions} >\n <Label text=\"Teléfono\" />\n </Item>\n <Item dataField=\"Direccion\" editorOptions={datosClienteEditorOptions} >\n <Label text=\"Dirección\" />\n </Item>\n <Item dataField=\"Colonia\" editorOptions={datosClienteEditorOptions} />\n <Item dataField=\"CodigoPostal\" editorOptions={datosClienteEditorOptions} >\n <Label text=\"C.P.\" />\n </Item>\n <Item dataField=\"Estado\" editorOptions={datosClienteEditorOptions} />\n <Item dataField=\"Municipio\" editorOptions={datosClienteEditorOptions} />\n <Item dataField=\"Pais\" editorOptions={datosClienteEditorOptions} >\n <Label text=\"País\" />\n </Item>\n </Tab>\n <Tab title=\"Observaciones\" >\n <Item dataField=\"Observaciones\" editorType=\"dxTextArea\" >\n <Label text=\"Observaciones\" visible={false} />\n </Item>\n </Tab>\n <Tab title=\"Log Estatus\">\n <DataGrid\n id=\"gridLogEstatus\"\n columnsAutoWidth={true}\n dataSource={returnRequestPayload.movEstatusLog}\n allowColumnReordering={true}\n allowColumnResizing={true}\n columnResizingMode={\"widget\"}\n showBorders={true}\n rowAlternationEnabled={true}\n showRowLines={true}\n showColumnLines={true}\n >\n <HeaderFilter visible={false} />\n <Column dataField=\"Usuario\" dataType=\"string\" width={350} caption=\"Usuario\" />\n <Column caption=\"Estatus\" alignment=\"center\" width={150} cellRender={estatusRelatedRecords} />\n <Column dataField=\"Fecha\" dataType=\"datetime\" width={300} caption=\"Fecha\" />\n </DataGrid>\n </Tab>\n <Tab title=\"Archivos Anexos\" >\n <div className=\"widget-container\">\n <FileUploader\n multiple={true}\n accept=\"*\"\n uploadMode=\"useButtons\"\n chunkSize={20000000}\n maxFileSize={20000000}\n uploadChunk={uploadChunk}\n disabled={!activateAttachments}\n />\n </div>\n <div id=\"wrapper\" className=\"show-widget\" >\n <div id=\"widget-area\">\n <FileManager id=\"attachmentManager\" fileSystemProvider={attachments} onItemDeleting={onAttachmentDeleting} onItemDownloading={onItemDownloading} onSelectedFileOpened={onAttachmentOpen}>\n <Permissions\n create={false}\n copy={false}\n move={false}\n delete={activateAttachments}\n rename={false}\n upload={false}\n download={true}\n >\n </Permissions>\n </FileManager>\n </div>\n </div>\n </Tab>\n </TabbedItem>\n </Form>\n </div>\n </div>\n ) :\n (\n <div></div>\n )\n }\n </div>\n )\n }}\n />\n </div>\n </div>\n );\n}\n","import React, { useState, useEffect, useRef, useMemo } from 'react';\n\n// LoadPanel\nimport { LoadPanel } from 'devextreme-react/load-panel';\n\n// Toast\nimport { Toast } from 'devextreme-react/toast';\n\n//Form\nimport Form, { GroupItem, Label, TabbedItem, TabPanelOptions, Tab } from 'devextreme-react/form';\n\nimport { Auth, API, Storage } from 'aws-amplify';\n\n// Ruteador\nimport { Route, Link, useHistory } from \"react-router-dom\";\n\n// Grid\nimport DataGrid, {\n Column, FilterRow, HeaderFilter, FilterPanel, FilterBuilderPopup,\n GroupPanel, Grouping, SearchPanel, Sorting, Editing, Lookup, Toolbar, Item, RequiredRule,\n Scrolling, Pager, Paging, Summary, TotalItem, StateStoring, ColumnChooser, Format, Selection,\n Export, ColumnChooserSearch, ColumnChooserSelection\n} from 'devextreme-react/data-grid';\n\n//CheckBox\nimport CheckBox from 'devextreme-react/check-box';\n\n//ContextMenu\nimport ContextMenu from 'devextreme-react/context-menu';\n\n// Iconos\nimport { FontAwesomeIcon } from \"@fortawesome/react-fontawesome\";\nimport { faGlasses } from \"@fortawesome/pro-solid-svg-icons\";\nimport { faPencilAlt } from \"@fortawesome/pro-solid-svg-icons\";\nimport { faArrowRotateLeft } from \"@fortawesome/pro-solid-svg-icons\";\nimport { faSave } from \"@fortawesome/pro-solid-svg-icons\";\nimport { faList } from \"@fortawesome/pro-duotone-svg-icons\";\nimport { faFilePdf } from \"@fortawesome/pro-solid-svg-icons\";\nimport { faArrowsRotate } from \"@fortawesome/pro-solid-svg-icons\";\nimport { faFileAlt } from \"@fortawesome/pro-solid-svg-icons\";\nimport { faRightLeft } from \"@fortawesome/pro-duotone-svg-icons\";\nimport { faPlay } from \"@fortawesome/pro-solid-svg-icons\";\nimport { faTrash } from \"@fortawesome/pro-solid-svg-icons\";\nimport { faLightbulb } from \"@fortawesome/pro-solid-svg-icons\";\nimport { faCircleCheck } from \"@fortawesome/pro-solid-svg-icons\";\nimport { faCircleX } from \"@fortawesome/pro-solid-svg-icons\";\nimport { faWindowClose } from \"@fortawesome/pro-solid-svg-icons\";\nimport { faThumbsUp } from \"@fortawesome/pro-solid-svg-icons\";\n\nimport 'devextreme/data/odata/store';\nimport CustomStore from 'devextreme/data/custom_store';\n\nimport DataSource from 'devextreme/data/data_source';\n\nimport '../ListStyle.css';\n\n//FileUploader\nimport FileUploader from 'devextreme-react/file-uploader';\n\n//FileManager\nimport FileManager, { Permissions } from 'devextreme-react/file-manager';\n\nimport dxDateBox from \"devextreme/ui/date_box\";\n\nimport dxNumberBox from \"devextreme/ui/number_box\";\n\nimport TransactionStatus from \"../TransactionStatus/TransactionStatus.js\";\n\nimport { Workbook } from 'exceljs';\nimport { saveAs } from 'file-saver';\nimport { exportDataGrid } from 'devextreme/excel_exporter'\n\ndxDateBox.defaultOptions({\n options: {\n dateSerializationFormat: \"yyyy-MM-dd\"\n }\n});\n\ndxNumberBox.defaultOptions({\n options: {\n step: 0\n }\n});\n\nfunction isNotEmpty(value) {\n return value !== undefined && value !== null && value !== '';\n}\n\nexport default function TransferOrder(props) {\n const history = useHistory();\n\n const [isDetail, setIsDetail] = useState(false);\n const [id, setId] = useState();\n const [permissionLevel, setPermissionLevel] = useState(props.nivel);\n const [voidDeliveryTransactions, setVoidDeliveryTransactions] = useState(props.voidDeliveryTransactions);\n const [approveDelivery, setApproveDelivery] = useState(props.approveDelivery);\n const [transferOrderPayload, setTransferOrderPayload] = useState({\n header: {},\n detail: []\n });\n\n const [contextMenuItems, setContextMenuItems] = useState([]);\n const [autoExpandAll, setAutoExpandAll] = useState(true);\n\n // setValue para el control tab\n const [value, setValue] = React.useState(0);\n\n const [visibleLoadPanel, setVisibleLoadPanel] = useState(false);\n\n const [visibleToast, setVisibleToast] = useState(false);\n const [messageToast, setMessageToast] = useState('');\n const [typeToast, setTypeToast] = useState('success');\n\n const [activateUpdateForm, setActivateUpdateForm] = useState(false);\n const [activateUpdateGrid, setActivateUpdateGrid] = useState(false);\n const [activateCustomSalesOrderField, setActivateCustomSalesOrderField] = useState(false);\n const [activateCustomWarehouseField, setActivateCustomWarehouseField] = useState(false);\n const [acceptCustomValues, setAcceptCustomValue] = useState(false);\n const [activateSaveButton, setActivateSaveButton] = useState(false);\n const [activateDeleteButton, setActivateDeleteButton] = useState(false);\n const [activateCancelButton, setActivateCancelButton] = useState(false);\n const [activateConfirmButton, setActivateConfirmButton] = useState(false);\n const [activateApproveButton, setActivateApproveButton] = useState(false);\n const [activateGetItemButton, setActivateGetItemButton] = useState(false);\n const [activateSelectItemButton, setActivateSelectItemButton] = useState(false);\n const [activatePDFButton, setActivatePDFButton] = useState(false);\n const [activateCantidadButton, setActivateCantidadButton] = useState(false);\n const [activateAttachments, setActivateAttachments] = useState(false);\n\n //Ref para el grid Articulos\n const [gridArticulosRef, setGridArticulosRef] = useState(React.createRef());\n\n //Ref para el form\n const [formDatosGeneralesRef, setFormDatosGeneralesRef] = useState(React.createRef());\n\n const [attachments, setAttachments] = useState([]);\n\n const handleChange = (event, newValue) => {\n setValue(newValue);\n };\n\n const filterBuilderPopupPosition = {\n of: window,\n at: 'top',\n my: 'top',\n offset: { y: 10 },\n };\n\n const allowedPageSizes = [5, 10, 15, 20, 'all'];\n\n const exportFormats = ['xlsx'];\n\n function getOrderDay(rowData) {\n return (new Date(rowData.OrderDate)).getDay();\n }\n\n const filterBuilder = {\n customOperations: [{\n name: 'weekends',\n caption: 'Weekends',\n dataTypes: ['date'],\n icon: 'check',\n hasValue: false,\n calculateFilterExpression: () => [[getOrderDay, '=', 0], 'or', [getOrderDay, '=', 6]],\n }],\n allowHierarchicalFields: true,\n };\n\n const filterValue = [['Estatus', '=', 'Sin Afectar']];\n\n //Ref para el grid Tablero de Control\n const [gridTableroRef, setGridTableroRef] = useState(React.createRef());\n\n function onAutoExpandAllChanged() {\n setAutoExpandAll(!autoExpandAll)\n };\n\n async function getTransferOrderRecords(sqlFilter) {\n try {\n let apiName = 'AdminSC';\n let path = '/procesasoltraspaso';\n\n let myInit = {\n headers: {\n 'Content-Type': 'application/json',\n Authorization: `${(await Auth.currentSession()).getAccessToken().getJwtToken()}`\n },\n queryStringParameters: {\n action: 'list',\n sqlFilter: sqlFilter,\n salesAccess: props.salesAccess,\n sucursal: props.sucursal,\n usuario: props.usuario,\n username: JSON.parse(JSON.stringify(await Auth.currentAuthenticatedUser())).username\n }\n }\n\n var transferOrderGet = await API.get(apiName, path, myInit);\n }\n catch (e) {\n if (e === 'No current user') {\n history.push('/');\n\n window.location.reload();\n }\n }\n\n return transferOrderGet;\n }\n\n const store = new CustomStore({\n key: 'ID',\n load(loadOptions) {\n let sqlFilter = '(';\n [\n 'filter'\n ].forEach((i) => {\n if (i in loadOptions && isNotEmpty(loadOptions[i])) {\n var filters = loadOptions[i];\n\n var filtersLength = filters.length;\n\n for (var i = 0; i <= filtersLength; i++) {\n var singleFilter = filters[i];\n var singleFilterType = typeof singleFilter;\n var singleFilterIsArray = Array.isArray(singleFilter);\n var singleFilterIsDate = singleFilter instanceof Date;\n\n if (singleFilter === 'NULL') {\n singleFilter = '0';\n }\n\n if (singleFilterType.toString() === 'object' && singleFilterIsArray) {\n sqlFilter += '(';\n\n var subFiltersLength = singleFilter.length;\n\n for (var i2 = 0; i2 <= subFiltersLength; i2++) {\n var singleSubFilter = singleFilter[i2];\n var singleSubFilterType = typeof singleSubFilter;\n var singleSubFilterIsArray = Array.isArray(singleSubFilter);\n var singleSubFilterIsDate = singleSubFilter instanceof Date\n\n if (singleSubFilter === 'NULL') {\n singleSubFilter = '0';\n }\n\n if (singleSubFilterType.toString() === 'object' && singleSubFilterIsArray) {\n sqlFilter += '(';\n\n var subSubFiltersLength = singleSubFilter.length;\n\n for (var i3 = 0; i3 <= subSubFiltersLength; i3++) {\n var singleSubSubFilter = singleSubFilter[i3];\n var singleSubSubFilterType = typeof singleSubSubFilter;\n var singleSubSubFilterIsArray = Array.isArray(singleSubSubFilter);\n var singleSubSubFilterIsDate = singleSubSubFilter instanceof Date\n\n if (singleSubSubFilter === 'NULL') {\n singleSubSubFilter = '0';\n }\n\n if (singleSubSubFilterType.toString() === 'object' && singleSubSubFilterIsArray) {\n sqlFilter += '(';\n\n var subSubSubFiltersLength = singleSubSubFilter.length;\n\n for (var i4 = 0; i4 <= subSubSubFiltersLength; i4++) {\n var singleSubSubSubFilter = singleSubSubFilter[i4];\n var singleSubSubSubFilterType = typeof singleSubSubSubFilter;\n var singleSubSubSubFilterIsArray = Array.isArray(singleSubSubSubFilter);\n var singleSubSubSubFilterIsDate = singleSubSubSubFilter instanceof Date\n\n if (singleSubSubSubFilter === 'NULL') {\n singleSubSubSubFilter = '0';\n }\n\n if (singleSubSubSubFilterType.toString() === 'object' && singleSubSubSubFilterIsArray) {\n sqlFilter += '(';\n\n var subSubSubSubFiltersLength = singleSubSubSubFilter.length;\n\n for (var i5 = 0; i5 <= subSubSubSubFiltersLength; i5++) {\n var singleSubSubSubSubFilter = singleSubSubSubFilter[i5];\n var singleSubSubSubSubFilterType = typeof singleSubSubSubSubFilter;\n var singleSubSubSubSubFilterIsArray = Array.isArray(singleSubSubSubSubFilter);\n var singleSubSubSubSubFilterIsDate = singleSubSubSubSubFilter instanceof Date\n\n if (singleSubSubSubSubFilter === 'NULL') {\n singleSubSubSubSubFilter = '0';\n }\n\n if (singleSubSubSubSubFilterType.toString() === 'string') {\n if (singleSubSubSubSubFilter === 'contains') {\n filters[i][i2][i3][i4][i5] = 'LIKE';\n singleSubSubSubSubFilter = 'LIKE';\n\n filters[i][i2][i3][i4][i5 + 1] = '\\'%' + filters[i][i2][i3][i4][i5 + 1] + '%\\'';\n }\n else if (singleSubSubSubSubFilter === 'notcontains') {\n filters[i][i2][i3][i4][i5] = 'NOT LIKE';\n singleSubSubSubSubFilter = 'NOT LIKE';\n\n filters[i][i2][i3][i4][i5 + 1] = '\\'%' + filters[i][i2][i3][i4][i5 + 1] + '%\\'';\n }\n else if (singleSubSubSubSubFilter === 'startswith') {\n filters[i][i2][i3][i4][i5] = 'LIKE';\n singleSubSubSubSubFilter = 'LIKE';\n\n filters[i][i2][i3][i4][i5 + 1] = '\\'' + filters[i][i2][i3][i4][i5 + 1] + '%\\'';\n }\n else if (singleSubSubSubSubFilter === 'endswith') {\n filters[i][i2][i3][i4][i5] = 'LIKE';\n singleSubSubSubSubFilter = 'LIKE';\n\n filters[i][i2][i3][i4][i5 + 1] = '\\'%' + filters[i][i2][i3][i4][i5 + 1] + '\\'';\n }\n else if (singleSubSubSubSubFilter === '=' || singleSubSubSubSubFilter === '<>' || singleSubSubSubSubFilter === '>' || singleSubSubSubSubFilter === '>=' || singleSubSubSubSubFilter === '<' || singleSubSubSubSubFilter === '<=') {\n if (!filters[i][i2][i3][i4][i5 + 1])\n filters[i][i2][i3][i4][i5 + 1] = 'NULL';\n else if (typeof filters[i][i2][i3][i4][i5 + 1] === 'string') {\n filters[i][i2][i3][i4][i5 + 1] = '\\'' + filters[i][i2][i3][i4][i5 + 1] + '\\'';\n }\n }\n else if (singleSubSubSubSubFilter === '!') {\n filters[i][i2][i3][i4][i5] = 'NOT';\n singleSubSubSubSubFilter = 'NOT';\n }\n\n sqlFilter += ' ' + singleSubSubSubSubFilter + ' ';\n }\n else if (singleSubSubSubSubFilterType.toString() === 'object' && singleSubSubSubSubFilterIsDate) {\n sqlFilter += ' \\'' + singleSubSubSubSubFilter.toISOString().split('T')[0] + '\\' ';\n }\n else if (singleSubSubSubSubFilterType.toString() === 'number') {\n sqlFilter += ' ' + singleSubSubSubSubFilter.toString() + ' ';\n }\n else if (singleSubSubSubSubFilterType.toString() === 'boolean') {\n if (singleSubSubSubSubFilter.toString() === 'true')\n sqlFilter += '1 ';\n else if (singleSubSubSubSubFilter.toString() === 'false' || singleSubSubSubSubFilter === null || singleSubSubSubSubFilter === undefined)\n sqlFilter += '0 ';\n }\n }\n }\n else if (singleSubSubSubFilterType.toString() === 'string') {\n if (singleSubSubSubFilter === 'contains') {\n filters[i][i2][i3][i4] = 'LIKE';\n singleSubSubSubFilter = 'LIKE';\n\n filters[i][i2][i3][i4 + 1] = '\\'%' + filters[i][i2][i3][i4 + 1] + '%\\'';\n }\n else if (singleSubSubSubFilter === 'notcontains') {\n filters[i][i2][i3][i4] = 'NOT LIKE';\n singleSubSubSubFilter = 'NOT LIKE';\n\n filters[i][i2][i3][i4 + 1] = '\\'%' + filters[i][i2][i3][i4 + 1] + '%\\'';\n }\n else if (singleSubSubSubFilter === 'startswith') {\n filters[i][i2][i3][i4] = 'LIKE';\n singleSubSubSubFilter = 'LIKE';\n\n filters[i][i2][i3][i4 + 1] = '\\'' + filters[i][i2][i3][i4 + 1] + '%\\'';\n }\n else if (singleSubSubSubFilter === 'endswith') {\n filters[i][i2][i3][i4] = 'LIKE';\n singleSubSubSubFilter = 'LIKE';\n\n filters[i][i2][i3][i4 + 1] = '\\'%' + filters[i][i2][i3][i4 + 1] + '\\'';\n }\n else if (singleSubSubSubFilter === '=' || singleSubSubSubFilter === '<>' || singleSubSubSubFilter === '>' || singleSubSubSubFilter === '>=' || singleSubSubSubFilter === '<' || singleSubSubSubFilter === '<=') {\n if (!filters[i][i2][i3][i4 + 1])\n filters[i][i2][i3][i4 + 1] = 'NULL';\n else if (typeof filters[i][i2][i3][i4 + 1] === 'string') {\n filters[i][i2][i3][i4 + 1] = '\\'' + filters[i][i2][i3][i4 + 1] + '\\'';\n }\n }\n else if (singleSubSubSubFilter === '!') {\n filters[i][i2][i3][i4] = 'NOT';\n singleSubSubSubFilter = 'NOT';\n }\n\n sqlFilter += ' ' + singleSubSubSubFilter + ' ';\n }\n else if (singleSubSubSubFilterType.toString() === 'object' && singleSubSubSubFilterIsDate) {\n sqlFilter += ' \\'' + singleSubSubSubFilter.toISOString().split('T')[0] + '\\' ';\n }\n else if (singleSubSubSubFilterType.toString() === 'number') {\n sqlFilter += ' ' + singleSubSubSubFilter.toString() + ' ';\n }\n else if (singleSubSubSubFilterType.toString() === 'boolean') {\n if (singleSubSubSubFilter.toString() === 'true')\n sqlFilter += '1 ';\n else if (singleSubSubSubFilter.toString() === 'false' || singleSubSubSubFilter === null || singleSubSubSubFilter === undefined)\n sqlFilter += '0 ';\n }\n }\n\n sqlFilter += ')';\n }\n else if (singleSubSubFilterType.toString() === 'string') {\n if (singleSubSubFilter === 'contains') {\n filters[i][i2][i3] = 'LIKE';\n singleSubSubFilter = 'LIKE';\n\n filters[i][i2][i3 + 1] = '\\'%' + filters[i][i2][i3 + 1] + '%\\'';\n }\n else if (singleSubSubFilter === 'notcontains') {\n filters[i][i2][i3] = 'NOT LIKE';\n singleSubSubFilter = 'NOT LIKE';\n\n filters[i][i2][i3 + 1] = '\\'%' + filters[i][i2][i3 + 1] + '%\\'';\n }\n else if (singleSubSubFilter === 'startswith') {\n filters[i][i2][i3] = 'LIKE';\n singleSubSubFilter = 'LIKE';\n\n filters[i][i2][i3 + 1] = '\\'' + filters[i][i2][i3 + 1] + '%\\'';\n }\n else if (singleSubSubFilter === 'endswith') {\n filters[i][i2][i3] = 'LIKE';\n singleSubSubFilter = 'LIKE';\n\n filters[i][i2][i3 + 1] = '\\'%' + filters[i][i2][i3 + 1] + '\\'';\n }\n else if (singleSubSubFilter === '=' || singleSubSubFilter === '<>' || singleSubSubFilter === '>' || singleSubSubFilter === '>=' || singleSubSubFilter === '<' || singleSubSubFilter === '<=') {\n if (!filters[i][i2][i3 + 1])\n filters[i][i2][i3 + 1] = 'NULL';\n else if (typeof filters[i][i2][i3 + 1] === 'string') {\n filters[i][i2][i3 + 1] = '\\'' + filters[i][i2][i3 + 1] + '\\'';\n }\n }\n else if (singleSubSubFilter === '!') {\n filters[i][i2][i3] = 'NOT';\n singleSubSubFilter = 'NOT';\n }\n sqlFilter += ' ' + singleSubSubFilter + ' ';\n }\n else if (singleSubSubFilterType.toString() === 'object' && singleSubSubFilterIsDate) {\n sqlFilter += ' \\'' + singleSubSubFilter.toISOString().split('T')[0] + '\\' ';\n }\n else if (singleSubSubFilterType.toString() === 'number') {\n sqlFilter += ' ' + singleSubSubFilter.toString() + ' ';\n }\n else if (singleSubSubFilterType.toString() === 'boolean') {\n if (singleSubSubFilter.toString() === 'true')\n sqlFilter += '1 ';\n else if (singleSubSubFilter.toString() === 'false' || singleSubSubFilter === null || singleSubSubFilter === undefined)\n sqlFilter += '0 ';\n }\n }\n\n sqlFilter += ')';\n }\n else if (singleSubFilterType.toString() === 'string') {\n if (singleSubFilter === 'contains') {\n filters[i][i2] = 'LIKE';\n singleSubFilter = 'LIKE';\n\n filters[i][i2 + 1] = '\\'%' + filters[i][i2 + 1] + '%\\'';\n }\n else if (singleSubFilter === 'notcontains') {\n filters[i][i2] = 'NOT LIKE';\n singleSubFilter = 'NOT LIKE';\n\n filters[i][i2 + 1] = '\\'%' + filters[i][i2 + 1] + '%\\'';\n }\n else if (singleSubFilter === 'startswith') {\n filters[i][i2] = 'LIKE';\n singleSubFilter = 'LIKE';\n\n filters[i][i2 + 1] = '\\'' + filters[i][i2 + 1] + '%\\'';\n }\n else if (singleSubFilter === 'endswith') {\n filters[i][i2] = 'LIKE';\n singleSubFilter = 'LIKE';\n\n filters[i][i2 + 1] = '\\'%' + filters[i][i2 + 1] + '\\'';\n }\n else if (singleSubFilter === '=' || singleSubFilter === '<>' || singleSubFilter === '>' || singleSubFilter === '>=' || singleSubFilter === '<' || singleSubFilter === '<=') {\n if (!filters[i][i2 + 1])\n filters[i][i2 + 1] = 'NULL';\n else if (typeof filters[i][i2 + 1] === 'string') {\n filters[i][i2 + 1] = '\\'' + filters[i][i2 + 1] + '\\'';\n }\n }\n else if (singleSubFilter === '!') {\n filters[i][i2] = 'NOT';\n singleSubFilter = 'NOT';\n }\n sqlFilter += ' ' + singleSubFilter + ' ';\n }\n else if (singleSubFilterType.toString() === 'object' && singleSubFilterIsDate) {\n sqlFilter += ' \\'' + singleSubFilter.toISOString().split('T')[0] + '\\' ';\n }\n else if (singleSubFilterType.toString() === 'number') {\n sqlFilter += ' ' + singleSubFilter.toString() + ' ';\n }\n else if (singleSubFilterType.toString() === 'boolean') {\n if (singleSubFilter.toString() === 'true')\n sqlFilter += '1 ';\n else if (singleSubFilter.toString() === 'false' || singleSubFilter === null || singleSubFilter === undefined)\n sqlFilter += '0 ';\n }\n }\n\n sqlFilter += ')';\n }\n else if (singleFilterType.toString() === 'string') {\n if (singleFilter === 'contains') {\n filters[i] = 'LIKE';\n singleFilter = 'LIKE';\n\n filters[i + 1] = '\\'%' + filters[i + 1] + '%\\'';\n }\n else if (singleFilter === 'notcontains') {\n filters[i] = 'NOT LIKE';\n singleFilter = 'NOT LIKE';\n\n filters[i + 1] = '\\'%' + filters[i + 1] + '%\\'';\n }\n else if (singleFilter === 'startswith') {\n filters[i] = 'LIKE';\n singleFilter = 'LIKE';\n\n filters[i + 1] = '\\'' + filters[i + 1] + '%\\'';\n }\n else if (singleFilter === 'endswith') {\n filters[i] = 'LIKE';\n singleFilter = 'LIKE';\n\n filters[i + 1] = '\\'%' + filters[i + 1] + '\\'';\n }\n else if (singleFilter === '=' || singleFilter === '<>' || singleFilter === '>' || singleFilter === '>=' || singleFilter === '<' || singleFilter === '<=') {\n if (!filters[i + 1])\n filters[i + 1] = 'NULL';\n else if (typeof filters[i + 1] === 'string') {\n filters[i + 1] = '\\'' + filters[i + 1] + '\\'';\n }\n }\n else if (singleFilter === '!') {\n filters[i] = 'NOT';\n singleFilter = 'NOT';\n }\n sqlFilter += ' ' + singleFilter + ' ';\n }\n else if (singleFilterType.toString() === 'object' && singleFilterIsDate) {\n sqlFilter += ' \\'' + singleFilter.toISOString().split('T')[0] + '\\' ';\n }\n else if (singleFilterType.toString() === 'number') {\n sqlFilter += ' ' + singleFilter.toString() + ' ';\n }\n else if (singleFilterType.toString() === 'boolean') {\n if (singleFilter.toString() === 'true')\n sqlFilter += '1 ';\n else if (singleFilter.toString() === 'false' || singleFilter === null || singleFilter === undefined)\n sqlFilter += '0 ';\n }\n }\n\n sqlFilter += ')';\n }\n });\n\n async function getRecords() {\n if (sqlFilter === '(')\n sqlFilter = '';\n\n var records = await getTransferOrderRecords(sqlFilter);\n return {\n data: records,\n totalCount: records.length\n };\n }\n\n return getRecords()\n .then(function (result) {\n return result;\n })\n .catch(() => { throw new Error('Data Loading Error'); });\n },\n });\n\n var fechaEmisionEditorOptions = { width: '100%', readOnly: true };\n var movimientoEditorOptions = { width: '100%', readOnly: true };\n var datosClienteEditorOptions = { width: '100%', readOnly: true };\n var estatusEditorOptions = { width: '100%', readOnly: true };\n var autorizacionEditorOptions = { width: '100%', readOnly: true };\n var rutaEditorOptions = { width: '100%', readOnly: true };\n\n const storePedido = new CustomStore({\n key: 'value',\n load(loadOptions) {\n let sqlFilter = '';\n [\n 'filter'\n ].forEach((i) => {\n sqlFilter = loadOptions.searchValue;\n });\n\n async function getRecords() {\n var records = await getPedidos(sqlFilter);\n\n return {\n data: records,\n totalCount: records.length\n };\n }\n\n return getRecords()\n .then(function (result) {\n return result;\n })\n .catch(() => { throw new Error('Data Loading Error'); });\n },\n byKey: (key) => {\n return {\n name: key,\n value: key\n };\n }\n });\n\n //Opciones del campo Pedido\n try {\n var pedidoEditorOptions = {\n dataSource: storePedido,\n displayExpr: 'name',\n valueExpr: 'value',\n searchEnabled: true,\n showClearButton: true,\n acceptCustomValue: !activateCustomSalesOrderField,\n value: (transferOrderPayload.header.Pedido ? transferOrderPayload.header.Pedido : ''),\n disabled: !activateCustomSalesOrderField,\n searchTimeout: 1500,\n width: '100%',\n clearButtonText: 'Cerrar',\n noDataText: 'No se encontraron resultados'\n };\n }\n catch (e) {\n var pedidoEditorOptions = {\n dataSource: storePedido,\n displayExpr: 'name',\n valueExpr: 'value',\n searchEnabled: true,\n acceptCustomValue: acceptCustomValues,\n value: '',\n width: '100%'\n };\n }\n\n async function uploadChunk(file, uploadInfo) {\n try {\n var responseS3 = await Storage.put(\"/prog/\" + id + \"/\" + file.name, uploadInfo.chunkBlob, {\n contentType: file.type,\n ACL: 'public-read'\n });\n\n //Obtenemos el nombre del bucket\n let bucketName = Storage._config.AWSS3.bucket;\n\n\n let apiName = 'AdminSC';\n let path = '/uploadattachment';\n\n let myInit = {\n headers: {\n 'Content-Type': 'application/json',\n Authorization: `${(await Auth.currentSession()).getAccessToken().getJwtToken()}`\n },\n body: {\n action: 'register',\n bucketName: bucketName,\n type: 'prog',\n id: id,\n Key: \"/prog/\" + id + \"/\" + file.name,\n fileName: file.name,\n username: JSON.parse(JSON.stringify(await Auth.currentAuthenticatedUser())).username\n }\n }\n\n var attachmentsResult = await API.post(apiName, path, myInit);\n\n //Obtenemos los attachments\n var attachmentsGet = await Storage.list(\"/prog/\" + id);\n var attachmentsAux = [];\n\n for (var attachmentsGetIndex in attachmentsGet) {\n var singleAttachmentsGet = attachmentsGet[attachmentsGetIndex];\n\n var singleAttachment = {\n name: singleAttachmentsGet.key.split('/').pop(),\n isDirectory: false,\n size: singleAttachmentsGet.size,\n };\n\n attachmentsAux.push(singleAttachment);\n }\n\n setAttachments(attachmentsAux);\n }\n catch (err) {\n console.log(\"Error uploading file:\", err);\n }\n }\n\n async function onAttachmentDeleting(e) {\n var fileName = e.item.key;\n\n //Primero borramos el archivo de S3\n var attachmentsDelete = await Storage.remove(\"/prog/\" + id + \"/\" + fileName);\n\n //Despues borramos el attachment en Intelisis\n let bucketName = Storage._config.AWSS3.bucket;\n\n let apiName = 'AdminSC';\n let path = '/uploadattachment';\n\n let myInit = {\n headers: {\n 'Content-Type': 'application/json',\n Authorization: `${(await Auth.currentSession()).getAccessToken().getJwtToken()}`\n },\n body: {\n action: 'delete',\n bucketName: bucketName,\n type: 'prog',\n id: id,\n Key: \"/prog/\" + id + \"/\" + fileName,\n fileName: fileName,\n username: JSON.parse(JSON.stringify(await Auth.currentAuthenticatedUser())).username\n }\n }\n\n var attachmentsResult = await API.post(apiName, path, myInit);\n\n //Finalmente sincronizamos el state\n var attachmentsGet = await Storage.list(\"/prog/\" + id);\n var attachmentsAux = [];\n\n for (var attachmentsGetIndex in attachmentsGet) {\n var singleAttachmentsGet = attachmentsGet[attachmentsGetIndex];\n\n var singleAttachment = {\n name: singleAttachmentsGet.key.split('/').pop(),\n isDirectory: false,\n size: singleAttachmentsGet.size,\n };\n\n attachmentsAux.push(singleAttachment);\n }\n\n setAttachments(attachmentsAux);\n };\n\n function downloadBlob(blob, filename) {\n const url = URL.createObjectURL(blob);\n const a = document.createElement('a');\n a.href = url;\n a.download = filename || 'download';\n const clickHandler = () => {\n setTimeout(() => {\n URL.revokeObjectURL(url);\n a.removeEventListener('click', clickHandler);\n }, 150);\n };\n\n a.addEventListener('click', clickHandler, false);\n\n a.click();\n\n return a;\n };\n\n async function onItemDownloading(e) {\n e.cancel = true;\n\n const downloadFileResponse = await Storage.get(\"/prog/\" + id + \"/\" + e.item.name, { download: true });\n\n downloadBlob(downloadFileResponse.Body, e.item.name);\n };\n\n function openBlob(blob, filename) {\n const url = URL.createObjectURL(blob);\n\n window.open(url, \"_blank\");\n };\n\n async function onAttachmentOpen(e) {\n const downloadFileResponse = await Storage.get(\"/prog/\" + id + \"/\" + e.file.name, { download: true });\n\n openBlob(downloadFileResponse.Body, e.file.name);\n };\n\n async function getTransferOrderPayload(ID) {\n try {\n let apiName = 'AdminSC';\n let path = '/procesasoltraspaso';\n\n let myInit = {\n headers: {\n 'Content-Type': 'application/json',\n Authorization: `${(await Auth.currentSession()).getAccessToken().getJwtToken()}`\n },\n queryStringParameters: {\n ID: ID,\n action: 'payload',\n username: JSON.parse(JSON.stringify(await Auth.currentAuthenticatedUser())).username\n }\n }\n\n var payloadGet = await API.get(apiName, path, myInit);\n\n setTransferOrderPayload(payloadGet);\n\n //Obtenemos los attachments\n var attachmentsGet = await Storage.list(\"/prog/\" + ID);\n var attachmentsAux = [];\n\n for (var attachmentsGetIndex in attachmentsGet) {\n var singleAttachmentsGet = attachmentsGet[attachmentsGetIndex];\n\n var singleAttachment = {\n name: singleAttachmentsGet.key.split('/').pop(),\n isDirectory: false,\n size: singleAttachmentsGet.size,\n };\n\n attachmentsAux.push(singleAttachment);\n }\n\n setAttachments(attachmentsAux);\n }\n catch (e) {\n if (e === 'No current user') {\n history.push('/');\n\n window.location.reload();\n }\n }\n\n return payloadGet;\n }\n\n async function fnSCWebEnableTransactionButtons(sucursal) {\n let apiName = 'AdminSC';\n let path = '/getcatalogo';\n\n let myInit = {\n headers: {\n 'Content-Type': 'application/json',\n Authorization: `${(await Auth.currentSession()).getAccessToken().getJwtToken()}`\n },\n queryStringParameters: {\n type: 'fnSCWebEnableTransactionButtons',\n username: JSON.parse(JSON.stringify(await Auth.currentAuthenticatedUser())).username,\n sucursal: sucursal\n }\n }\n\n var permissionGet = await API.get(apiName, path, myInit);\n\n try {\n return permissionGet[0].Permission;\n }\n catch (e) {\n return false;\n }\n }\n\n function editTransferOrder(data) {\n return (\n <Link to={`/TransferOrder/${data.data.ID}`}>\n <button class=\"bg-blue-500 hover:bg-blue-700 text-white py-1 px-3 rounded\" onClick={() => editButton(data.data.ID)}><FontAwesomeIcon icon={permissionLevel === 'Editar' ? faPencilAlt : faGlasses} /> {permissionLevel === 'Editar' ? 'Editar' : 'Ver'}</button>\n </Link>\n )\n }\n\n async function editButton(ID) {\n try {\n if (!window.event.metaKey && !window.event.ctrlKey) {\n setVisibleLoadPanel(true);\n\n setIsDetail(true);\n setId(ID);\n\n var payload = await getTransferOrderPayload(ID);\n\n if (payload.header.Pedido) {\n setActivateCustomSalesOrderField(false);\n }\n else {\n setActivateCustomSalesOrderField(true);\n }\n\n if (permissionLevel === 'Editar') {\n if (payload.header.Estatus === 'Sin Afectar') {\n setActivateUpdateForm(true);\n setActivateUpdateGrid(true);\n setAcceptCustomValue(false);\n setActivateSaveButton(true);\n setActivateDeleteButton(false);\n setActivateConfirmButton(true);\n setActivateApproveButton(false);\n setActivateGetItemButton(true);\n setActivateSelectItemButton(true);\n setActivatePDFButton(true);\n setActivateCustomWarehouseField(false);\n setActivateCancelButton(true);\n setActivateCantidadButton(true);\n setActivateAttachments(true);\n\n setContextMenuItems([\n { text: 'Seleccionar Todo', icon: 'selectall' },\n { text: 'Eliminar Selección', icon: 'unselectall' }\n ]);\n }\n else if (payload.header.Estatus === 'Pendiente') {\n var enableButtons = await fnSCWebEnableTransactionButtons(payload.header.Sucursal);\n\n setActivateUpdateForm(false);\n setActivateUpdateGrid(enableButtons);\n setAcceptCustomValue(true);\n setActivateSaveButton(false);\n setActivateDeleteButton(false);\n setActivateConfirmButton(enableButtons);\n\n if (payload.header.RequiereAutorizacion === true && payload.header.Autorizado === false && approveDelivery)\n setActivateApproveButton(true);\n else\n setActivateApproveButton(false);\n\n setActivateGetItemButton(false);\n setActivateSelectItemButton(false);\n setActivatePDFButton(true);\n setActivateCustomWarehouseField(true);\n setActivateCancelButton(enableButtons);\n setActivateCantidadButton(false);\n setActivateAttachments(enableButtons);\n\n if (enableButtons)\n setContextMenuItems([\n { text: 'Seleccionar Todo', icon: 'selectall' },\n { text: 'Eliminar Selección', icon: 'unselectall' }\n ]);\n else\n setContextMenuItems([]);\n }\n else if (payload.header.Estatus === 'Cancelado') {\n setActivateUpdateForm(false);\n setActivateUpdateGrid(false);\n setAcceptCustomValue(true);\n setActivateSaveButton(false);\n setActivateDeleteButton(false);\n setActivateConfirmButton(false);\n setActivateApproveButton(false);\n setActivateGetItemButton(false);\n setActivateSelectItemButton(false);\n setActivatePDFButton(true);\n setActivateCustomWarehouseField(true);\n setActivateCancelButton(false);\n setActivateCantidadButton(false);\n setActivateAttachments(false);\n\n setContextMenuItems([]);\n }\n else if (payload.header.Estatus === 'Concluido') {\n var enableButtons = await fnSCWebEnableTransactionButtons(payload.header.Sucursal);\n\n setActivateUpdateForm(false);\n setActivateUpdateGrid(false);\n setAcceptCustomValue(true);\n setActivateSaveButton(false);\n setActivateDeleteButton(false);\n setActivateConfirmButton(false);\n setActivateApproveButton(false);\n setActivateGetItemButton(false);\n setActivateSelectItemButton(false);\n setActivatePDFButton(true);\n setActivateCustomWarehouseField(true);\n setActivateCancelButton(enableButtons);\n setActivateCantidadButton(false);\n setActivateAttachments(enableButtons);\n\n setContextMenuItems([]);\n }\n else if (payload.header.Estatus === 'Disponible') {\n setActivateUpdateForm(false);\n setActivateUpdateGrid(false);\n setAcceptCustomValue(true);\n setActivateSaveButton(false);\n setActivateDeleteButton(false);\n setActivateConfirmButton(false);\n setActivateApproveButton(false);\n setActivateGetItemButton(false);\n setActivateSelectItemButton(false);\n setActivatePDFButton(true);\n setActivateCustomWarehouseField(true);\n setActivateCancelButton(true);\n setActivateCantidadButton(false);\n setActivateAttachments(false);\n\n setContextMenuItems([]);\n }\n else if (payload.header.Estatus === 'Enrutado') {\n setActivateUpdateForm(false);\n setActivateUpdateGrid(false);\n setAcceptCustomValue(true);\n setActivateSaveButton(false);\n setActivateDeleteButton(false);\n setActivateConfirmButton(false);\n setActivateApproveButton(false);\n setActivateGetItemButton(false);\n setActivateSelectItemButton(false);\n setActivatePDFButton(true);\n setActivateCustomWarehouseField(true);\n setActivateCancelButton(false);\n setActivateCantidadButton(false);\n setActivateAttachments(false);\n\n setContextMenuItems([]);\n }\n }\n else if (permissionLevel === 'Ver') {\n setActivateUpdateForm(false);\n setActivateUpdateGrid(false);\n setAcceptCustomValue(true);\n setActivateSaveButton(false);\n setActivateDeleteButton(false);\n setActivateConfirmButton(false);\n setActivateGetItemButton(false);\n setActivateSelectItemButton(false);\n setActivatePDFButton(true);\n setActivateCustomWarehouseField(true);\n setActivateCancelButton(false);\n setActivateCantidadButton(false);\n setActivateAttachments(false);\n\n setContextMenuItems([]);\n }\n\n setVisibleLoadPanel(false);\n }\n }\n catch (e) {\n setVisibleLoadPanel(false);\n\n if (!ID || ID === 'undefined') {\n newButton();\n }\n }\n };\n\n async function cancelEditButton() {\n setIsDetail(false);\n };\n\n async function saveButton() {\n try {\n if (transferOrderPayload.header.Estatus === 'Sin Afectar') {\n if (!transferOrderPayload.header.Pedido || transferOrderPayload.header.Pedido === '') {\n setVisibleToast(true);\n setMessageToast('Falta especificar el Pedido')\n setTypeToast('error');\n return;\n }\n }\n\n setVisibleLoadPanel(true);\n\n var ID = transferOrderPayload.header.ID;\n\n //Guardamos los cambios del grid\n if (gridArticulosRef.current) {\n var gridArticulos = gridArticulosRef.current.instance();\n\n gridArticulos.saveEditData();\n }\n\n //Despues enviamos todo al backend\n let apiName = 'AdminSC';\n let path = '/procesasoltraspaso';\n\n let myInit = {\n headers: {\n 'Content-Type': 'application/json',\n Authorization: `${(await Auth.currentSession()).getAccessToken().getJwtToken()}`\n },\n body: {\n ID: ID,\n payload: transferOrderPayload,\n action: 'saveChanges',\n username: JSON.parse(JSON.stringify(await Auth.currentAuthenticatedUser())).username,\n usuario: props.usuario,\n sucursal: props.sucursal,\n s3Bucket: Storage._config.AWSS3.bucket\n }\n }\n\n var payloadPost = await API.post(apiName, path, myInit);\n\n if (payloadPost.ok === 'true') {\n if (!ID) {\n setVisibleToast(true);\n setMessageToast('Se creó la Solicitud de Traspaso con éxito');\n setTypeToast('success')\n\n ID = payloadPost.newID;\n\n editButton(ID);\n\n history.push('/TransferOrder/' + ID.toString());\n }\n else {\n setVisibleToast(true);\n setMessageToast('Se actualizó la Solicitud de Traspaso con éxito');\n setTypeToast('success')\n }\n }\n else if (payloadPost.ok === 'false') {\n setVisibleToast(true);\n setMessageToast(payloadPost.message);\n setTypeToast('error')\n }\n\n editButton(ID);\n\n setVisibleLoadPanel(false);\n }\n catch (e) {\n setVisibleLoadPanel(false);\n\n if (e === 'No current user') {\n history.push('/');\n\n window.location.reload();\n }\n }\n };\n\n async function approveButton() {\n try {\n\n setVisibleLoadPanel(true);\n\n var ID = transferOrderPayload.header.ID;\n\n //Despues enviamos todo al backend\n let apiName = 'AdminSC';\n let path = '/procesasoltraspaso';\n\n let myInit = {\n headers: {\n 'Content-Type': 'application/json',\n Authorization: `${(await Auth.currentSession()).getAccessToken().getJwtToken()}`\n },\n body: {\n ID: ID,\n payload: transferOrderPayload,\n action: 'approve',\n username: JSON.parse(JSON.stringify(await Auth.currentAuthenticatedUser())).username,\n usuario: props.usuario,\n sucursal: props.sucursal\n }\n }\n\n var payloadPost = await API.post(apiName, path, myInit);\n\n if (payloadPost.ok === 'true') {\n setVisibleToast(true);\n setMessageToast('Solicitud de Traspaso Autorizada');\n setTypeToast('success')\n }\n else if (payloadPost.ok === 'false') {\n setVisibleToast(true);\n setMessageToast(payloadPost.message);\n setTypeToast('error')\n }\n\n editButton(ID);\n\n setVisibleLoadPanel(false);\n }\n catch (e) {\n setVisibleLoadPanel(false);\n\n if (e === 'No current user') {\n history.push('/');\n\n window.location.reload();\n }\n }\n };\n\n async function confirmButton() {\n try {\n if (transferOrderPayload.header.Estatus === 'Sin Afectar') {\n if (!transferOrderPayload.header.Pedido || transferOrderPayload.header.Pedido === '') {\n setVisibleToast(true);\n setMessageToast('Falta especificar el Pedido')\n setTypeToast('error');\n return;\n }\n }\n\n setVisibleLoadPanel(true);\n\n var ID = transferOrderPayload.header.ID;\n\n //Guardamos los cambios del grid\n if (gridArticulosRef.current) {\n var gridArticulos = gridArticulosRef.current.instance();\n\n gridArticulos.saveEditData();\n }\n\n //Despues enviamos todo al backend\n let apiName = 'AdminSC';\n let path = '/procesasoltraspaso';\n\n let myInit = {\n headers: {\n 'Content-Type': 'application/json',\n Authorization: `${(await Auth.currentSession()).getAccessToken().getJwtToken()}`\n },\n body: {\n ID: ID,\n payload: transferOrderPayload,\n action: 'apply',\n username: JSON.parse(JSON.stringify(await Auth.currentAuthenticatedUser())).username,\n usuario: props.usuario,\n sucursal: props.sucursal\n }\n }\n\n var payloadPost = await API.post(apiName, path, myInit);\n\n if (payloadPost.ok === 'true') {\n setVisibleToast(true);\n setMessageToast('Se afectó la Solicitud de Traspaso con éxito');\n setTypeToast('success')\n }\n else if (payloadPost.ok === 'false') {\n setVisibleToast(true);\n setMessageToast(payloadPost.message);\n setTypeToast('error')\n }\n\n editButton(ID);\n\n setVisibleLoadPanel(false);\n }\n catch (e) {\n setVisibleLoadPanel(false);\n\n if (e === 'No current user') {\n history.push('/');\n\n window.location.reload();\n }\n }\n };\n\n async function getItemsButton() {\n try {\n if (transferOrderPayload.header.Estatus === 'Sin Afectar') {\n if (!transferOrderPayload.header.Pedido || transferOrderPayload.header.Pedido === '') {\n setVisibleToast(true);\n setMessageToast('Falta especificar el Pedido')\n setTypeToast('error');\n return;\n }\n }\n\n setVisibleLoadPanel(true);\n\n var ID = transferOrderPayload.header.ID;\n\n //Guardamos los cambios del grid\n if (gridArticulosRef.current) {\n var gridArticulos = gridArticulosRef.current.instance();\n\n gridArticulos.saveEditData();\n }\n\n //Despues enviamos todo al backend\n let apiName = 'AdminSC';\n let path = '/procesasoltraspaso';\n\n let myInit = {\n headers: {\n 'Content-Type': 'application/json',\n Authorization: `${(await Auth.currentSession()).getAccessToken().getJwtToken()}`\n },\n body: {\n ID: ID,\n payload: transferOrderPayload,\n action: 'getItems',\n username: JSON.parse(JSON.stringify(await Auth.currentAuthenticatedUser())).username,\n usuario: props.usuario,\n sucursal: props.sucursal\n }\n }\n\n var payloadPost = await API.post(apiName, path, myInit);\n\n if (payloadPost.ok === 'true') {\n setVisibleToast(true);\n setMessageToast('Artículos actualizados con éxito');\n setTypeToast('success')\n }\n else if (payloadPost.ok === 'false') {\n setVisibleToast(true);\n setMessageToast(payloadPost.message);\n setTypeToast('error')\n }\n\n editButton(ID);\n\n setVisibleLoadPanel(false);\n }\n catch (e) {\n setVisibleLoadPanel(false);\n\n if (e === 'No current user') {\n history.push('/');\n\n window.location.reload();\n }\n }\n };\n\n async function selectAllButton() {\n try {\n if (transferOrderPayload.header.Estatus === 'Sin Afectar') {\n if (!transferOrderPayload.header.Pedido || transferOrderPayload.header.Pedido === '') {\n setVisibleToast(true);\n setMessageToast('Falta especificar el Pedido')\n setTypeToast('error');\n return;\n }\n }\n\n setVisibleLoadPanel(true);\n\n var ID = transferOrderPayload.header.ID;\n\n //Guardamos los cambios del grid\n if (gridArticulosRef.current) {\n var gridArticulos = gridArticulosRef.current.instance();\n\n gridArticulos.saveEditData();\n }\n\n //Despues enviamos todo al backend\n let apiName = 'AdminSC';\n let path = '/procesasoltraspaso';\n\n let myInit = {\n headers: {\n 'Content-Type': 'application/json',\n Authorization: `${(await Auth.currentSession()).getAccessToken().getJwtToken()}`\n },\n body: {\n ID: ID,\n payload: transferOrderPayload,\n action: 'selectAll',\n username: JSON.parse(JSON.stringify(await Auth.currentAuthenticatedUser())).username,\n usuario: props.usuario,\n sucursal: props.sucursal\n }\n }\n\n var payloadPost = await API.post(apiName, path, myInit);\n\n if (payloadPost.ok === 'true') {\n setVisibleToast(true);\n setMessageToast('Artículos seleccionados con éxito');\n setTypeToast('success')\n }\n else if (payloadPost.ok === 'false') {\n setVisibleToast(true);\n setMessageToast(payloadPost.message);\n setTypeToast('error')\n }\n\n editButton(ID);\n\n setVisibleLoadPanel(false);\n }\n catch (e) {\n setVisibleLoadPanel(false);\n\n if (e === 'No current user') {\n history.push('/');\n\n window.location.reload();\n }\n }\n };\n\n async function voidButton() {\n try {\n if (!window.confirm('¿Desea cancelar la Solicitud de Traspaso?'))\n return;\n\n setVisibleLoadPanel(true);\n\n var ID = transferOrderPayload.header.ID;\n\n //Guardamos los cambios del grid\n if (gridArticulosRef.current) {\n var gridArticulos = gridArticulosRef.current.instance();\n\n gridArticulos.saveEditData();\n }\n\n //Despues enviamos todo al backend\n let apiName = 'AdminSC';\n let path = '/procesasoltraspaso';\n\n let myInit = {\n headers: {\n 'Content-Type': 'application/json',\n Authorization: `${(await Auth.currentSession()).getAccessToken().getJwtToken()}`\n },\n body: {\n ID: ID,\n payload: transferOrderPayload,\n action: 'void',\n username: JSON.parse(JSON.stringify(await Auth.currentAuthenticatedUser())).username,\n usuario: props.usuario,\n sucursal: props.sucursal\n }\n }\n\n var payloadPost = await API.post(apiName, path, myInit);\n\n if (payloadPost.ok === 'true') {\n setVisibleToast(true);\n setMessageToast('Se canceló la Solicitud de Traspaso');\n setTypeToast('success')\n }\n else if (payloadPost.ok === 'false') {\n setVisibleToast(true);\n setMessageToast(payloadPost.message);\n setTypeToast('error')\n }\n\n editButton(ID);\n\n setVisibleLoadPanel(false);\n }\n catch (e) {\n setVisibleLoadPanel(false);\n\n if (e === 'No current user') {\n history.push('/');\n\n window.location.reload();\n }\n }\n };\n\n async function selectNothingButton() {\n try {\n if (transferOrderPayload.header.Estatus === 'Sin Afectar') {\n if (!transferOrderPayload.header.Pedido || transferOrderPayload.header.Pedido === '') {\n setVisibleToast(true);\n setMessageToast('Falta especificar el Pedido')\n setTypeToast('error');\n return;\n }\n }\n\n setVisibleLoadPanel(true);\n\n var ID = transferOrderPayload.header.ID;\n\n //Guardamos los cambios del grid\n if (gridArticulosRef.current) {\n var gridArticulos = gridArticulosRef.current.instance();\n\n gridArticulos.saveEditData();\n }\n\n //Despues enviamos todo al backend\n let apiName = 'AdminSC';\n let path = '/procesasoltraspaso';\n\n let myInit = {\n headers: {\n 'Content-Type': 'application/json',\n Authorization: `${(await Auth.currentSession()).getAccessToken().getJwtToken()}`\n },\n body: {\n ID: ID,\n payload: transferOrderPayload,\n action: 'selectNothing',\n username: JSON.parse(JSON.stringify(await Auth.currentAuthenticatedUser())).username,\n usuario: props.usuario,\n sucursal: props.sucursal\n }\n }\n\n var payloadPost = await API.post(apiName, path, myInit);\n\n if (payloadPost.ok === 'true') {\n setVisibleToast(true);\n setMessageToast('Artículos seleccionados con éxito');\n setTypeToast('success')\n }\n else if (payloadPost.ok === 'false') {\n setVisibleToast(true);\n setMessageToast(payloadPost.message);\n setTypeToast('error')\n }\n\n editButton(ID);\n\n setVisibleLoadPanel(false);\n }\n catch (e) {\n setVisibleLoadPanel(false);\n\n if (e === 'No current user') {\n history.push('/');\n\n window.location.reload();\n }\n }\n };\n\n function refreshButton() {\n if (gridTableroRef.current) {\n var gridTablero = gridTableroRef.current.instance();\n\n gridTablero.refresh();\n }\n };\n\n async function newButton(salesorder) {\n try {\n let apiName = 'AdminSC';\n let path = '/procesasoltraspaso';\n\n let myInit = {\n headers: {\n 'Content-Type': 'application/json',\n Authorization: `${(await Auth.currentSession()).getAccessToken().getJwtToken()}`\n },\n queryStringParameters: {\n action: 'new',\n salesorder: salesorder,\n username: JSON.parse(JSON.stringify(await Auth.currentAuthenticatedUser())).username,\n usuario: props.usuario,\n sucursal: props.sucursal\n }\n };\n\n var payloadNew = await API.get(apiName, path, myInit);\n\n setTransferOrderPayload(payloadNew);\n\n setAttachments([]);\n\n setIsDetail(true);\n setId(undefined);\n\n setActivateCustomSalesOrderField(true);\n setActivateCustomWarehouseField(true);\n setActivateUpdateForm(true);\n setActivateUpdateGrid(true);\n setAcceptCustomValue(false);\n setActivateSaveButton(true);\n setActivateDeleteButton(false);\n setActivateConfirmButton(false);\n setActivatePDFButton(false);\n setActivateGetItemButton(false);\n setActivateSelectItemButton(false);\n setActivateCancelButton(false);\n setActivateCantidadButton(false);\n\n setVisibleLoadPanel(false);\n setContextMenuItems([]);\n }\n catch (e) {\n if (e === 'No current user') {\n history.push('/');\n\n window.location.reload();\n }\n }\n };\n\n async function deleteButton() {\n try {\n if (!window.confirm('¿Desea eliminar la Solicitud de Traspaso?'))\n return;\n\n setVisibleLoadPanel(true);\n\n var ID = transferOrderPayload.header.ID;\n\n if (!ID) {\n //Vamos al tablero de control\n history.push('/TransferOrder');\n return;\n }\n\n let apiName = 'AdminSC';\n let path = '/procesasoltraspaso';\n\n let myInit = {\n headers: {\n 'Content-Type': 'application/json',\n Authorization: `${(await Auth.currentSession()).getAccessToken().getJwtToken()}`\n },\n body: {\n ID: ID,\n payload: transferOrderPayload,\n action: 'delete',\n username: JSON.parse(JSON.stringify(await Auth.currentAuthenticatedUser())).username,\n usuario: props.usuario,\n sucursal: props.sucursal\n }\n }\n\n var payloadPost = await API.post(apiName, path, myInit);\n\n if (payloadPost.ok === 'true') {\n setVisibleLoadPanel(false);\n\n setVisibleToast(true);\n setMessageToast('Solicitud de Traspaso eliminada con éxito');\n setTypeToast('success')\n\n setIsDetail(false);\n\n //Vamos al tablero de control\n history.push('/TransferOrder');\n }\n else if (payloadPost.ok === 'false') {\n setVisibleLoadPanel(false);\n\n setVisibleToast(true);\n setMessageToast(payloadPost.message);\n setTypeToast('error')\n }\n }\n catch (e) {\n setVisibleLoadPanel(false);\n\n if (e === 'No current user') {\n history.push('/');\n\n window.location.reload();\n }\n }\n };\n\n function printButton() {\n var baseUrl = window.location.href.split('/')[0];\n\n window.open(baseUrl + \"/#/PdfRender?type=transferorder&id=\" + id, \"_blank\");\n };\n\n async function getPedidos(sqlFilter) {\n let apiName = 'AdminSC';\n let path = '/getcatalogo';\n\n let myInit = {\n headers: {\n 'Content-Type': 'application/json',\n Authorization: `${(await Auth.currentSession()).getAccessToken().getJwtToken()}`\n },\n queryStringParameters: {\n type: 'PedidoSolEnvio',\n username: JSON.parse(JSON.stringify(await Auth.currentAuthenticatedUser())).username,\n sqlFilter: sqlFilter\n }\n }\n\n var pedidosGet = await API.get(apiName, path, myInit);\n var tmpPedidos = [];\n\n for (var pedidosGetIndex in pedidosGet) {\n\n tmpPedidos.push({\n name: pedidosGet[pedidosGetIndex].SCRama,\n value: pedidosGet[pedidosGetIndex].SCRama\n })\n }\n\n return tmpPedidos;\n };\n\n useEffect(() => {\n window.addEventListener('popstate', (e) => {\n var hash;\n\n try {\n hash = e.target.location.hash;\n }\n catch (e) {\n hash = '';\n }\n\n if (hash === '#/TransferOrder') {\n history.push('/TransferOrder');\n\n window.location.reload();\n }\n });\n\n async function initialize() {\n setVisibleLoadPanel(true);\n\n setVisibleLoadPanel(false);\n }\n\n initialize();\n\n //En caso de solicitar un ID especifico, redireccionamos a ese ID\n if (!props.match.isExact) {\n var urlID = props.location.pathname.replace('/TransferOrder/', '');\n\n var search = props.location.search;\n var salesorder;\n\n if (search)\n salesorder = search.replace('?salesorder=', '');\n\n if (urlID === 'undefined')\n urlID = undefined;\n\n if (urlID)\n editButton(urlID);\n else\n newButton(salesorder);\n }\n\n // eslint-disable-next-line\n }, []);\n\n function overrideOnValueChanged(e) {\n //Hacemos la data persistente en cuanto el usuario escriba en el campo\n // if (e.parentType === \"dataRow\") {\n // e.editorOptions.valueChangeEvent = \"input\";\n // }\n }\n\n function onHidingToast() {\n setVisibleToast(false);\n }\n\n const onFieldDatosProgramacionChanged = React.useCallback((e) => {\n var dataField = e.dataField;\n var value = e.value;\n\n\n if (formDatosGeneralesRef.current) {\n var formDatosGenerales = formDatosGeneralesRef.current.instance();\n\n if (e.dataField === 'Pedido') {\n if (e.value) {\n async function getSalesOrderInfo() {\n try {\n setVisibleLoadPanel(true);\n\n let apiName = 'AdminSC';\n let path = '/procesasoltraspaso';\n\n let myInit = {\n headers: {\n 'Content-Type': 'application/json',\n Authorization: `${(await Auth.currentSession()).getAccessToken().getJwtToken()}`\n },\n queryStringParameters: {\n action: 'getSalesOrderInfo',\n salesOrder: value,\n username: JSON.parse(JSON.stringify(await Auth.currentAuthenticatedUser())).username\n }\n };\n\n var payloadNew = await API.get(apiName, path, myInit);\n\n formDatosGenerales.updateData('NombreCliente', payloadNew.header.NombreCliente);\n formDatosGenerales.updateData('Telefono', payloadNew.header.Telefono);\n formDatosGenerales.updateData('Direccion', payloadNew.header.Direccion);\n formDatosGenerales.updateData('Colonia', payloadNew.header.Colonia);\n formDatosGenerales.updateData('CodigoPostal', payloadNew.header.CodigoPostal);\n formDatosGenerales.updateData('Estado', payloadNew.header.Estado);\n formDatosGenerales.updateData('Municipio', payloadNew.header.Municipio);\n formDatosGenerales.updateData('Pais', payloadNew.header.Pais);\n\n setVisibleLoadPanel(false);\n }\n catch (e) {\n if (e === 'No current user') {\n history.push('/');\n\n window.location.reload();\n }\n }\n }\n\n getSalesOrderInfo();\n }\n else {\n formDatosGenerales.updateData('NombreCliente', undefined);\n formDatosGenerales.updateData('Telefono', undefined);\n formDatosGenerales.updateData('Direccion', undefined);\n formDatosGenerales.updateData('Colonia', undefined);\n formDatosGenerales.updateData('CodigoPostal', undefined);\n formDatosGenerales.updateData('Estado', undefined);\n formDatosGenerales.updateData('Municipio', undefined);\n formDatosGenerales.updateData('Pais', undefined);\n }\n }\n }\n }, [formDatosGeneralesRef, history])\n\n function contextMenuItemClick(e) {\n if (e.itemData.text === 'Seleccionar Todo') {\n selectAllButton();\n }\n else if (e.itemData.text === 'Eliminar Selección') {\n selectNothingButton();\n }\n };\n\n function estatusRelatedRecords(data) {\n return (\n <TransactionStatus {...props} Estatus={data.data.Estatus} />\n )\n };\n\n function onExporting(e) {\n const workbook = new Workbook();\n const worksheet = workbook.addWorksheet('Datos');\n\n exportDataGrid({\n component: e.component,\n worksheet,\n autoFilterEnabled: true,\n }).then(() => {\n workbook.xlsx.writeBuffer().then((buffer) => {\n saveAs(new Blob([buffer], { type: 'application/octet-stream' }), 'Datos.xlsx');\n });\n });\n e.cancel = true;\n };\n\n return (\n <div>\n {isDetail === false ? (\n <div class=\"bg-gray-200 m-2\">\n <h1 class=\"font-sans inline-block text-xl font-bold text-gray-700 leading-8 align-top mb-1\"><FontAwesomeIcon icon={faList} size=\"lg\" /> Solicitudes de Traspaso</h1>\n </div>\n ) :\n (\n <div class=\"bg-gray-200 m-2\">\n <h1 class=\"font-sans inline-block text-xl font-bold text-gray-700 leading-8 align-top mb-1\"><FontAwesomeIcon icon={faRightLeft} size=\"xl\" /> {(transferOrderPayload.header ? transferOrderPayload.header.Movimiento : 'Solicitud de Traspaso')}</h1>\n <TransactionStatus {...props} Estatus={transferOrderPayload.header.Estatus} />\n </div>\n )}\n\n <LoadPanel\n shadingColor=\"rgba(0,0,0,0.4)\"\n visible={visibleLoadPanel}\n showIndicator={true}\n message=\"Por favor espere...\"\n shading={true}\n showPane={true}\n hideOnOutsideClick={false}\n />\n\n <Toast\n visible={visibleToast}\n message={messageToast}\n type={typeToast}\n onHiding={onHidingToast}\n displayTime={5000}\n width={'auto'}\n position={{\n my: 'top center',\n at: 'top center',\n of: window,\n offset: '0 130'\n }}\n />\n\n <div class=\"bg-gray-200 m-2\">\n {isDetail === false ? (\n <div class=\"bg-white p-3 shadow-xl\">\n\n {permissionLevel === 'Editar' ?\n (\n <div>\n <Link to=\"/TransferOrder/undefined\">\n <button class=\"mb-2 bg-green-500 hover:bg-green-700 text-white font-bold py-2 px-4 rounded\" onClick={() => newButton()}><FontAwesomeIcon icon={faFileAlt} /> Nueva Solicitud de Traspaso</button>\n </Link>\n\n <button onClick={refreshButton} type=\"submit\" class=\"ml-4 mb-4 bg-blue-500 hover:bg-blue-700 text-white font-bold py-2 px-4 rounded\">\n <FontAwesomeIcon icon={faArrowsRotate} /> Actualizar\n </button>\n </div>\n ) :\n (\n <div>\n <button onClick={refreshButton} type=\"submit\" class=\"mb-4 bg-blue-500 hover:bg-blue-700 text-white font-bold py-2 px-4 rounded\">\n <FontAwesomeIcon icon={faArrowsRotate} /> Actualizar\n </button>\n </div>\n )}\n\n <div className=\"options mb-2\">\n <div className=\"option\">\n <CheckBox text=\"Expandir todos los grupos\"\n value={autoExpandAll}\n onValueChanged={onAutoExpandAllChanged}></CheckBox>\n </div>\n </div>\n <DataGrid\n height={800}\n id=\"gridContainer\"\n columnsAutoWidth={true}\n filterBuilder={filterBuilder}\n dataSource={store}\n defaultFilterValue={filterValue}\n allowColumnReordering={true}\n allowColumnResizing={true}\n columnResizingMode={\"widget\"}\n showBorders={true}\n rowAlternationEnabled={true}\n showRowLines={true}\n showColumnLines={true}\n remoteOperations={{ filtering: true }}\n ref={gridTableroRef}\n onExporting={onExporting}\n >\n <Scrolling rowRenderingMode='virtual'></Scrolling>\n <Paging defaultPageSize={10} />\n <Pager\n visible={true}\n allowedPageSizes={allowedPageSizes}\n displayMode='compact'\n showPageSizeSelector={true}\n showInfo={true}\n showNavigationButtons={true}\n />\n <FilterRow visible={true} />\n <FilterPanel visible={true} />\n <FilterBuilderPopup position={filterBuilderPopupPosition} />\n\n <HeaderFilter visible={true} />\n\n <GroupPanel visible={true} />\n <SearchPanel visible={true} />\n <ColumnChooser\n enabled={true}\n mode='select'\n >\n <ColumnChooserSearch\n enabled={true}\n />\n\n <ColumnChooserSelection\n allowSelectAll={true}\n selectByClick={true}\n recursive={true}\n />\n </ColumnChooser>\n <Grouping autoExpandAll={autoExpandAll} />\n <StateStoring enabled={true} type=\"localStorage\" storageKey=\"gridContainerTransferOrder\" />\n <Export enabled={true} />\n\n <Column caption=\"\" alignment=\"center\" width={100} cellRender={editTransferOrder} />\n <Column dataField=\"MovID\" dataType=\"string\" width={110} caption=\"Folio\" />\n <Column dataField=\"FechaEmision\" caption=\"Fecha Emisión\" dataType=\"date\" width={130} />\n <Column dataField=\"FechaProgramada\" caption=\"Fecha Programada\" dataType=\"date\" width={130} visible={false} />\n <Column dataField=\"Estatus\" dataType=\"string\" width={120} />\n <Column dataField=\"Pedido\" dataType=\"string\" width={120} />\n <Column dataField=\"Ruta\" dataType=\"string\" width={120} />\n <Column caption=\"Plaza\" dataField=\"Plaza\" dataType=\"string\" width={150} visible={false} />\n\n <Column dataField=\"ID\" dataType=\"number\" width={150} visible={false} />\n <Column dataField=\"Mov\" dataType=\"string\" width={190} caption=\"Tipo Movimiento\" visible={false} />\n <Column dataField=\"Movimiento\" dataType=\"string\" width={190} visible={false} />\n\n <Column dataField=\"Sucursal\" dataType=\"number\" width={150} visible={false} />\n <Column dataField=\"NombreSucursal\" dataType=\"string\" width={190} visible={false} />\n <Column dataField=\"Usuario\" dataType=\"string\" width={190} visible={false} />\n <Column dataField=\"NombreUsuario\" dataType=\"string\" width={190} visible={false} />\n <Column dataField=\"UsuarioOriginal\" dataType=\"string\" width={190} visible={false} />\n <Column dataField=\"RequiereAutorizacion\" dataType=\"boolean\" caption=\"Requiere Autorización\" width={200} visible={false} />\n <Column dataField=\"Autorizado\" dataType=\"boolean\" width={150} visible={false} />\n <Column dataField=\"FechaAutorizacion\" caption=\"Fecha Autorización\" dataType=\"datetime\" width={200} visible={false} />\n </DataGrid>\n </div>\n ) : (<div />)}\n <Route exact path=\"/TransferOrder/:ID\" render={({ match }) => {\n return (\n <div class=\"bg-gray-200\">\n {isDetail.toString() === 'true' ?\n (\n <div>\n <Link to=\"/TransferOrder\">\n <button onClick={cancelEditButton} type=\"submit\" class=\"mb-4 bg-red-500 hover:bg-red-700 text-white font-bold py-2 px-4 rounded\">\n <FontAwesomeIcon icon={faArrowRotateLeft} /> Regresar\n </button>\n </Link>\n\n {activateSaveButton.toString() === 'true' ?\n (\n <button onClick={saveButton} type=\"submit\" class=\"ml-4 mb-4 bg-blue-500 hover:bg-blue-700 text-white font-bold py-2 px-4 rounded\">\n <FontAwesomeIcon icon={faSave} /> Guardar Cambios\n </button>\n ) : (\n <div class=\"inline-block\"></div>\n )}\n\n {activateConfirmButton.toString() === 'true' && id ?\n (\n <button onClick={confirmButton} type=\"submit\" class=\"ml-4 mb-4 bg-green-500 hover:bg-green-700 text-white font-bold py-2 px-4 rounded\">\n <FontAwesomeIcon icon={faPlay} /> Afectar\n </button>\n ) : (\n <div class=\"inline-block\"></div>\n )}\n\n {activateApproveButton.toString() === 'true' && id ?\n (\n <button onClick={approveButton} type=\"submit\" class=\"ml-4 mb-4 bg-green-500 hover:bg-green-700 text-white font-bold py-2 px-4 rounded\">\n <FontAwesomeIcon icon={faThumbsUp} /> Autorizar\n </button>\n ) : (\n <div class=\"inline-block\"></div>\n )}\n\n {activateGetItemButton.toString() === 'true' && id ?\n (\n <button onClick={getItemsButton} type=\"submit\" class=\"ml-4 mb-4 bg-yellow-500 hover:bg-yellow-700 text-white font-bold py-2 px-4 rounded\">\n <FontAwesomeIcon icon={faLightbulb} /> Obtener Artículos\n </button>\n ) :\n (\n <div class=\"inline-block\"></div>\n )}\n\n {activateSelectItemButton.toString() === 'true' && id ?\n (\n <button onClick={selectAllButton} type=\"submit\" class=\"ml-4 mb-4 bg-blue-500 hover:bg-blue-700 text-white font-bold py-2 px-4 rounded\">\n <FontAwesomeIcon icon={faCircleCheck} /> Todo\n </button>\n ) :\n (\n <div class=\"inline-block\"></div>\n )}\n\n {activateSelectItemButton.toString() === 'true' && id ?\n (\n <button onClick={selectNothingButton} type=\"submit\" class=\"ml-4 mb-4 bg-blue-500 hover:bg-blue-700 text-white font-bold py-2 px-4 rounded\">\n <FontAwesomeIcon icon={faCircleX} /> Nada\n </button>\n ) :\n (\n <div class=\"inline-block\"></div>\n )}\n\n {activateDeleteButton.toString() === 'true' && id ?\n (\n <button onClick={deleteButton} type=\"submit\" class=\"ml-4 mb-4 bg-red-500 hover:bg-red-700 text-white font-bold py-2 px-4 rounded\">\n <FontAwesomeIcon icon={faTrash} /> Eliminar\n </button>\n ) :\n (\n <div class=\"inline-block\"></div>\n )}\n\n {activateCancelButton.toString() === 'true' && id ?\n (\n <button onClick={voidButton} type=\"submit\" class=\"ml-4 mb-4 bg-red-500 hover:bg-red-700 text-white font-bold py-2 px-4 rounded\">\n <FontAwesomeIcon icon={faWindowClose} /> Cancelar\n </button>\n ) :\n (\n <div class=\"inline-block\"></div>\n )}\n\n {activatePDFButton.toString() === 'true' && id ?\n (\n <button onClick={printButton} type=\"submit\" class=\"ml-4 mb-4 bg-gray-500 hover:bg-gray-700 text-white font-bold py-2 px-4 rounded\">\n <FontAwesomeIcon icon={faFilePdf} /> PDF\n </button>\n ) :\n (\n <div class=\"inline-block\"></div>\n )}\n\n <div class=\"bg-white p-4 shadow-xl\">\n <ContextMenu\n dataSource={contextMenuItems}\n width={200}\n target=\"#gridArticulos\"\n onItemClick={contextMenuItemClick}\n />\n\n <Form\n id=\"formTransaccion\"\n labelMode={'outside'}\n formData={transferOrderPayload.header}\n readOnly={!activateUpdateForm}\n showColonAfterLabel={false}\n labelLocation={'top'}\n onFieldDataChanged={onFieldDatosProgramacionChanged}\n ref={formDatosGeneralesRef}\n >\n <TabbedItem>\n <TabPanelOptions deferRendering={false} showNavButtons={true} />\n <Tab title=\"Datos Generales\" colCount={3}>\n <GroupItem caption=\"General\">\n <Item cssClass=\"boldText\" dataField=\"Movimiento\" editorOptions={movimientoEditorOptions} />\n <Item dataField=\"FechaEmision\" editorType=\"dxDateBox\" editorOptions={fechaEmisionEditorOptions}>\n <Label text={\"Fecha Emisión\"} />\n </Item>\n <Item cssClass=\"boldText\" dataField=\"Ruta\" editorOptions={rutaEditorOptions} />\n <Item dataField=\"FechaProgramada\" editorType=\"dxDateBox\" >\n <Label text={\"Fecha Programada\"} />\n </Item>\n <Item dataField=\"Pedido\" editorType=\"dxLookup\" editorOptions={pedidoEditorOptions} >\n <Label text=\"Pedido\" />\n </Item>\n </GroupItem>\n <GroupItem caption=\"Artículos\" colSpan={2} >\n <DataGrid\n id=\"gridArticulos\"\n ref={gridArticulosRef}\n columnsAutoWidth={true}\n dataSource={transferOrderPayload.detail}\n showBorders={true}\n showColumnLines={true}\n showRowLines={true}\n rowAlternationEnabled={true}\n allowColumnResizing={true}\n columnResizingMode=\"widget\"\n allowColumnReordering={false}\n repaintChangesOnly={false}\n >\n <Editing\n mode=\"cell\"\n allowUpdating={activateUpdateGrid}\n allowAdding={false}\n allowDeleting={false}\n />\n <Sorting mode=\"none\" />\n\n <Column dataField=\"Renglon\" width={190} visible={false} allowEditing={false} />\n <Column dataField=\"Articulo\" caption=\"Artículo\" width={100} allowEditing={false} />\n <Column dataField=\"Descripcion\" caption=\"Descripción\" width={350} allowEditing={false} />\n <Column dataField=\"Cantidad\" width={120} allowEditing={false} dataType=\"number\" />\n <Column dataField=\"CantidadA\" caption=\"Programación\" width={120} allowEditing={activateCantidadButton} visible={transferOrderPayload.header.Estatus === 'Sin Afectar' || transferOrderPayload.header.Estatus === 'Pendiente' || transferOrderPayload.header.Estatus === 'Disponible' || transferOrderPayload.header.Estatus === 'Concluido'} dataType=\"number\" />\n </DataGrid>\n </GroupItem>\n </Tab>\n <Tab title=\"Datos del Cliente\" colCount={3}>\n <Item dataField=\"NombreCliente\" editorOptions={datosClienteEditorOptions} >\n <Label text=\"Nombre\" />\n </Item>\n <Item dataField=\"Telefono\" editorOptions={datosClienteEditorOptions} >\n <Label text=\"Teléfono\" />\n </Item>\n <Item dataField=\"Direccion\" editorOptions={datosClienteEditorOptions} >\n <Label text=\"Dirección\" />\n </Item>\n <Item dataField=\"Colonia\" editorOptions={datosClienteEditorOptions} />\n <Item dataField=\"CodigoPostal\" editorOptions={datosClienteEditorOptions} >\n <Label text=\"C.P.\" />\n </Item>\n <Item dataField=\"Estado\" editorOptions={datosClienteEditorOptions} />\n <Item dataField=\"Municipio\" editorOptions={datosClienteEditorOptions} />\n <Item dataField=\"Pais\" editorOptions={datosClienteEditorOptions} >\n <Label text=\"País\" />\n </Item>\n </Tab>\n <Tab title=\"Autorización\" colCount={2}>\n <Item dataField=\"RequiereAutorizacion\" editorType=\"dxCheckBox\" editorOptions={autorizacionEditorOptions} >\n <Label text=\"Requiere Autorización\" />\n </Item>\n <Item dataField=\"Autorizado\" editorType=\"dxCheckBox\" editorOptions={autorizacionEditorOptions} >\n <Label text=\"Autorizado\" />\n </Item>\n <Item dataField=\"Autoriza\" editorOptions={autorizacionEditorOptions} >\n <Label text=\"Autorizado por\" />\n </Item>\n <Item dataField=\"FechaAutorizacion\" editorOptions={autorizacionEditorOptions} >\n <Label text=\"Fecha Autorización\" />\n </Item>\n </Tab>\n <Tab title=\"Observaciones\" >\n <Item dataField=\"Observaciones\" editorType=\"dxTextArea\" >\n <Label text=\"Observaciones\" visible={false} />\n </Item>\n </Tab>\n <Tab title=\"Log Estatus\">\n <DataGrid\n id=\"gridLogEstatus\"\n columnsAutoWidth={true}\n dataSource={transferOrderPayload.movEstatusLog}\n allowColumnReordering={true}\n allowColumnResizing={true}\n columnResizingMode={\"widget\"}\n showBorders={true}\n rowAlternationEnabled={true}\n showRowLines={true}\n showColumnLines={true}\n >\n <HeaderFilter visible={false} />\n <Column dataField=\"Usuario\" dataType=\"string\" width={350} caption=\"Usuario\" />\n <Column caption=\"Estatus\" alignment=\"center\" width={150} cellRender={estatusRelatedRecords} />\n <Column dataField=\"Fecha\" dataType=\"datetime\" width={300} caption=\"Fecha\" />\n </DataGrid>\n </Tab>\n <Tab title=\"Archivos Anexos\" >\n <div className=\"widget-container\">\n <FileUploader\n multiple={true}\n accept=\"*\"\n uploadMode=\"useButtons\"\n chunkSize={20000000}\n maxFileSize={20000000}\n uploadChunk={uploadChunk}\n disabled={!activateAttachments}\n />\n </div>\n <div id=\"wrapper\" className=\"show-widget\" >\n <div id=\"widget-area\">\n <FileManager id=\"attachmentManager\" fileSystemProvider={attachments} onItemDeleting={onAttachmentDeleting} onItemDownloading={onItemDownloading} onSelectedFileOpened={onAttachmentOpen}>\n <Permissions\n create={false}\n copy={false}\n move={false}\n delete={activateAttachments}\n rename={false}\n upload={false}\n download={true}\n >\n </Permissions>\n </FileManager>\n </div>\n </div>\n </Tab>\n </TabbedItem>\n </Form>\n </div>\n </div>\n ) :\n (\n <div></div>\n )\n }\n </div>\n )\n }}\n />\n </div>\n </div>\n );\n}\n","import React, { useState, useEffect, useRef, useMemo } from 'react';\n\n// LoadPanel\nimport { LoadPanel } from 'devextreme-react/load-panel';\n\n// Toast\nimport { Toast } from 'devextreme-react/toast';\n\n//Form\nimport Form, { GroupItem, Label, TabbedItem, TabPanelOptions, Tab, EmptyItem } from 'devextreme-react/form';\n\nimport { Auth, API, Storage } from 'aws-amplify';\n\n// Ruteador\nimport { Route, Link, useHistory } from \"react-router-dom\";\n\n// Grid\nimport DataGrid, {\n Column, FilterRow, HeaderFilter, FilterPanel, FilterBuilderPopup,\n GroupPanel, Grouping, SearchPanel, Sorting, Editing, Lookup, Toolbar, Item, RequiredRule,\n Scrolling, Pager, Paging, Summary, TotalItem, StateStoring, ColumnChooser, Format, Selection,\n Export, ColumnChooserSearch, ColumnChooserSelection\n} from 'devextreme-react/data-grid';\n\n//CheckBox\nimport CheckBox from 'devextreme-react/check-box';\n\n//ContextMenu\nimport ContextMenu from 'devextreme-react/context-menu';\n\n// Iconos\nimport { FontAwesomeIcon } from \"@fortawesome/react-fontawesome\";\nimport { faGlasses } from \"@fortawesome/pro-solid-svg-icons\";\nimport { faPencilAlt } from \"@fortawesome/pro-solid-svg-icons\";\nimport { faArrowRotateLeft } from \"@fortawesome/pro-solid-svg-icons\";\nimport { faSave } from \"@fortawesome/pro-solid-svg-icons\";\nimport { faList } from \"@fortawesome/pro-duotone-svg-icons\";\nimport { faFilePdf } from \"@fortawesome/pro-solid-svg-icons\";\nimport { faArrowsRotate } from \"@fortawesome/pro-solid-svg-icons\";\nimport { faForklift } from \"@fortawesome/pro-duotone-svg-icons\";\nimport { faPlay } from \"@fortawesome/pro-solid-svg-icons\";\nimport { faCircleCheck } from \"@fortawesome/pro-solid-svg-icons\";\nimport { faCircleX } from \"@fortawesome/pro-solid-svg-icons\";\nimport { faArrowUpRightFromSquare } from \"@fortawesome/pro-solid-svg-icons\";\n\nimport 'devextreme/data/odata/store';\nimport CustomStore from 'devextreme/data/custom_store';\n\nimport '../ListStyle.css';\n\n//FileUploader\nimport FileUploader from 'devextreme-react/file-uploader';\n\n//FileManager\nimport FileManager, { Permissions } from 'devextreme-react/file-manager';\n\nimport dxDateBox from \"devextreme/ui/date_box\";\n\nimport dxNumberBox from \"devextreme/ui/number_box\";\n\nimport TransactionStatus from \"../TransactionStatus/TransactionStatus.js\";\n\nimport { Workbook } from 'exceljs';\nimport { saveAs } from 'file-saver';\nimport { exportDataGrid } from 'devextreme/excel_exporter'\n\ndxDateBox.defaultOptions({\n options: {\n dateSerializationFormat: \"yyyy-MM-dd\"\n }\n});\n\ndxNumberBox.defaultOptions({\n options: {\n step: 0\n }\n});\n\nfunction isNotEmpty(value) {\n return value !== undefined && value !== null && value !== '';\n}\n\nexport default function ShipmentRequest(props) {\n const history = useHistory();\n\n const [isDetail, setIsDetail] = useState(false);\n const [id, setId] = useState();\n const [permissionLevel, setPermissionLevel] = useState(props.nivel);\n const [shipmentRequestPayload, setShipmentRequestPayload] = useState({\n header: {},\n detail: [],\n movEstatusLog: []\n });\n\n const [contextMenuItems, setContextMenuItems] = useState([]);\n\n const [autoExpandAll, setAutoExpandAll] = useState(true);\n\n const [visibleLoadPanel, setVisibleLoadPanel] = useState(false);\n\n const [visibleToast, setVisibleToast] = useState(false);\n const [messageToast, setMessageToast] = useState('');\n const [typeToast, setTypeToast] = useState('success');\n\n const [activateUpdateForm, setActivateUpdateForm] = useState(false);\n const [activateUpdateGrid, setActivateUpdateGrid] = useState(false);\n const [activateSaveButton, setActivateSaveButton] = useState(false);\n const [activateConfirmButton, setActivateConfirmButton] = useState(false);\n const [activateSelectItemButton, setActivateSelectItemButton] = useState(false);\n const [activatePDFButton, setActivatePDFButton] = useState(false);\n const [activateCantidad2Button, setActivateCantidad2Button] = useState(false);\n const [activateAttachments, setActivateAttachments] = useState(false);\n\n //Ref para el form\n const [formDatosGeneralesRef, setFormDatosGeneralesRef] = useState(React.createRef());\n\n //Ref para el grid Articulos\n const [gridArticulosRef, setGridArticulosRef] = useState(React.createRef());\n\n const [attachments, setAttachments] = useState([]);\n\n const filterBuilderPopupPosition = {\n of: window,\n at: 'top',\n my: 'top',\n offset: { y: 10 },\n };\n\n const allowedPageSizes = [5, 10, 15, 20, 'all'];\n\n const exportFormats = ['xlsx'];\n\n function getOrderDay(rowData) {\n return (new Date(rowData.OrderDate)).getDay();\n }\n\n const filterBuilder = {\n customOperations: [{\n name: 'weekends',\n caption: 'Weekends',\n dataTypes: ['date'],\n icon: 'check',\n hasValue: false,\n calculateFilterExpression: () => [[getOrderDay, '=', 0], 'or', [getOrderDay, '=', 6]],\n }],\n allowHierarchicalFields: true,\n };\n\n const filterValue = [['Estatus', '=', 'Pendiente']];\n\n //Ref para el grid Tablero de Control\n const [gridTableroRef, setGridTableroRef] = useState(React.createRef());\n\n function onAutoExpandAllChanged() {\n setAutoExpandAll(!autoExpandAll)\n };\n\n async function getShipmentRequestRecords(sqlFilter) {\n try {\n let apiName = 'AdminSC';\n let path = '/procesasolembarque';\n\n let myInit = {\n headers: {\n 'Content-Type': 'application/json',\n Authorization: `${(await Auth.currentSession()).getAccessToken().getJwtToken()}`\n },\n queryStringParameters: {\n action: 'list',\n sqlFilter: sqlFilter,\n salesAccess: props.salesAccess,\n sucursal: props.sucursal,\n usuario: props.usuario,\n username: JSON.parse(JSON.stringify(await Auth.currentAuthenticatedUser())).username\n }\n }\n\n var shipmentRequestGet = await API.get(apiName, path, myInit);\n }\n catch (e) {\n if (e === 'No current user') {\n history.push('/');\n\n window.location.reload();\n }\n }\n\n return shipmentRequestGet;\n }\n\n const store = new CustomStore({\n key: 'ID',\n load(loadOptions) {\n let sqlFilter = '(';\n [\n 'filter'\n ].forEach((i) => {\n if (i in loadOptions && isNotEmpty(loadOptions[i])) {\n var filters = loadOptions[i];\n\n var filtersLength = filters.length;\n\n for (var i = 0; i <= filtersLength; i++) {\n var singleFilter = filters[i];\n var singleFilterType = typeof singleFilter;\n var singleFilterIsArray = Array.isArray(singleFilter);\n var singleFilterIsDate = singleFilter instanceof Date;\n\n if (singleFilter === 'NULL') {\n singleFilter = '0';\n }\n\n if (singleFilterType.toString() === 'object' && singleFilterIsArray) {\n sqlFilter += '(';\n\n var subFiltersLength = singleFilter.length;\n\n for (var i2 = 0; i2 <= subFiltersLength; i2++) {\n var singleSubFilter = singleFilter[i2];\n var singleSubFilterType = typeof singleSubFilter;\n var singleSubFilterIsArray = Array.isArray(singleSubFilter);\n var singleSubFilterIsDate = singleSubFilter instanceof Date\n\n if (singleSubFilter === 'NULL') {\n singleSubFilter = '0';\n }\n\n if (singleSubFilterType.toString() === 'object' && singleSubFilterIsArray) {\n sqlFilter += '(';\n\n var subSubFiltersLength = singleSubFilter.length;\n\n for (var i3 = 0; i3 <= subSubFiltersLength; i3++) {\n var singleSubSubFilter = singleSubFilter[i3];\n var singleSubSubFilterType = typeof singleSubSubFilter;\n var singleSubSubFilterIsArray = Array.isArray(singleSubSubFilter);\n var singleSubSubFilterIsDate = singleSubSubFilter instanceof Date\n\n if (singleSubSubFilter === 'NULL') {\n singleSubSubFilter = '0';\n }\n\n if (singleSubSubFilterType.toString() === 'object' && singleSubSubFilterIsArray) {\n sqlFilter += '(';\n\n var subSubSubFiltersLength = singleSubSubFilter.length;\n\n for (var i4 = 0; i4 <= subSubSubFiltersLength; i4++) {\n var singleSubSubSubFilter = singleSubSubFilter[i4];\n var singleSubSubSubFilterType = typeof singleSubSubSubFilter;\n var singleSubSubSubFilterIsArray = Array.isArray(singleSubSubSubFilter);\n var singleSubSubSubFilterIsDate = singleSubSubSubFilter instanceof Date\n\n if (singleSubSubSubFilter === 'NULL') {\n singleSubSubSubFilter = '0';\n }\n\n if (singleSubSubSubFilterType.toString() === 'object' && singleSubSubSubFilterIsArray) {\n sqlFilter += '(';\n\n var subSubSubSubFiltersLength = singleSubSubSubFilter.length;\n\n for (var i5 = 0; i5 <= subSubSubSubFiltersLength; i5++) {\n var singleSubSubSubSubFilter = singleSubSubSubFilter[i5];\n var singleSubSubSubSubFilterType = typeof singleSubSubSubSubFilter;\n var singleSubSubSubSubFilterIsArray = Array.isArray(singleSubSubSubSubFilter);\n var singleSubSubSubSubFilterIsDate = singleSubSubSubSubFilter instanceof Date\n\n if (singleSubSubSubSubFilter === 'NULL') {\n singleSubSubSubSubFilter = '0';\n }\n\n if (singleSubSubSubSubFilterType.toString() === 'string') {\n if (singleSubSubSubSubFilter === 'contains') {\n filters[i][i2][i3][i4][i5] = 'LIKE';\n singleSubSubSubSubFilter = 'LIKE';\n\n filters[i][i2][i3][i4][i5 + 1] = '\\'%' + filters[i][i2][i3][i4][i5 + 1] + '%\\'';\n }\n else if (singleSubSubSubSubFilter === 'notcontains') {\n filters[i][i2][i3][i4][i5] = 'NOT LIKE';\n singleSubSubSubSubFilter = 'NOT LIKE';\n\n filters[i][i2][i3][i4][i5 + 1] = '\\'%' + filters[i][i2][i3][i4][i5 + 1] + '%\\'';\n }\n else if (singleSubSubSubSubFilter === 'startswith') {\n filters[i][i2][i3][i4][i5] = 'LIKE';\n singleSubSubSubSubFilter = 'LIKE';\n\n filters[i][i2][i3][i4][i5 + 1] = '\\'' + filters[i][i2][i3][i4][i5 + 1] + '%\\'';\n }\n else if (singleSubSubSubSubFilter === 'endswith') {\n filters[i][i2][i3][i4][i5] = 'LIKE';\n singleSubSubSubSubFilter = 'LIKE';\n\n filters[i][i2][i3][i4][i5 + 1] = '\\'%' + filters[i][i2][i3][i4][i5 + 1] + '\\'';\n }\n else if (singleSubSubSubSubFilter === '=' || singleSubSubSubSubFilter === '<>' || singleSubSubSubSubFilter === '>' || singleSubSubSubSubFilter === '>=' || singleSubSubSubSubFilter === '<' || singleSubSubSubSubFilter === '<=') {\n if (!filters[i][i2][i3][i4][i5 + 1])\n filters[i][i2][i3][i4][i5 + 1] = 'NULL';\n else if (typeof filters[i][i2][i3][i4][i5 + 1] === 'string') {\n filters[i][i2][i3][i4][i5 + 1] = '\\'' + filters[i][i2][i3][i4][i5 + 1] + '\\'';\n }\n }\n else if (singleSubSubSubSubFilter === '!') {\n filters[i][i2][i3][i4][i5] = 'NOT';\n singleSubSubSubSubFilter = 'NOT';\n }\n\n sqlFilter += ' ' + singleSubSubSubSubFilter + ' ';\n }\n else if (singleSubSubSubSubFilterType.toString() === 'object' && singleSubSubSubSubFilterIsDate) {\n sqlFilter += ' \\'' + singleSubSubSubSubFilter.toISOString().split('T')[0] + '\\' ';\n }\n else if (singleSubSubSubSubFilterType.toString() === 'number') {\n sqlFilter += ' ' + singleSubSubSubSubFilter.toString() + ' ';\n }\n else if (singleSubSubSubSubFilterType.toString() === 'boolean') {\n if (singleSubSubSubSubFilter.toString() === 'true')\n sqlFilter += '1 ';\n else if (singleSubSubSubSubFilter.toString() === 'false' || singleSubSubSubSubFilter === null || singleSubSubSubSubFilter === undefined)\n sqlFilter += '0 ';\n }\n }\n }\n else if (singleSubSubSubFilterType.toString() === 'string') {\n if (singleSubSubSubFilter === 'contains') {\n filters[i][i2][i3][i4] = 'LIKE';\n singleSubSubSubFilter = 'LIKE';\n\n filters[i][i2][i3][i4 + 1] = '\\'%' + filters[i][i2][i3][i4 + 1] + '%\\'';\n }\n else if (singleSubSubSubFilter === 'notcontains') {\n filters[i][i2][i3][i4] = 'NOT LIKE';\n singleSubSubSubFilter = 'NOT LIKE';\n\n filters[i][i2][i3][i4 + 1] = '\\'%' + filters[i][i2][i3][i4 + 1] + '%\\'';\n }\n else if (singleSubSubSubFilter === 'startswith') {\n filters[i][i2][i3][i4] = 'LIKE';\n singleSubSubSubFilter = 'LIKE';\n\n filters[i][i2][i3][i4 + 1] = '\\'' + filters[i][i2][i3][i4 + 1] + '%\\'';\n }\n else if (singleSubSubSubFilter === 'endswith') {\n filters[i][i2][i3][i4] = 'LIKE';\n singleSubSubSubFilter = 'LIKE';\n\n filters[i][i2][i3][i4 + 1] = '\\'%' + filters[i][i2][i3][i4 + 1] + '\\'';\n }\n else if (singleSubSubSubFilter === '=' || singleSubSubSubFilter === '<>' || singleSubSubSubFilter === '>' || singleSubSubSubFilter === '>=' || singleSubSubSubFilter === '<' || singleSubSubSubFilter === '<=') {\n if (!filters[i][i2][i3][i4 + 1])\n filters[i][i2][i3][i4 + 1] = 'NULL';\n else if (typeof filters[i][i2][i3][i4 + 1] === 'string') {\n filters[i][i2][i3][i4 + 1] = '\\'' + filters[i][i2][i3][i4 + 1] + '\\'';\n }\n }\n else if (singleSubSubSubFilter === '!') {\n filters[i][i2][i3][i4] = 'NOT';\n singleSubSubSubFilter = 'NOT';\n }\n\n sqlFilter += ' ' + singleSubSubSubFilter + ' ';\n }\n else if (singleSubSubSubFilterType.toString() === 'object' && singleSubSubSubFilterIsDate) {\n sqlFilter += ' \\'' + singleSubSubSubFilter.toISOString().split('T')[0] + '\\' ';\n }\n else if (singleSubSubSubFilterType.toString() === 'number') {\n sqlFilter += ' ' + singleSubSubSubFilter.toString() + ' ';\n }\n else if (singleSubSubSubFilterType.toString() === 'boolean') {\n if (singleSubSubSubFilter.toString() === 'true')\n sqlFilter += '1 ';\n else if (singleSubSubSubFilter.toString() === 'false' || singleSubSubSubFilter === null || singleSubSubSubFilter === undefined)\n sqlFilter += '0 ';\n }\n }\n\n sqlFilter += ')';\n }\n else if (singleSubSubFilterType.toString() === 'string') {\n if (singleSubSubFilter === 'contains') {\n filters[i][i2][i3] = 'LIKE';\n singleSubSubFilter = 'LIKE';\n\n filters[i][i2][i3 + 1] = '\\'%' + filters[i][i2][i3 + 1] + '%\\'';\n }\n else if (singleSubSubFilter === 'notcontains') {\n filters[i][i2][i3] = 'NOT LIKE';\n singleSubSubFilter = 'NOT LIKE';\n\n filters[i][i2][i3 + 1] = '\\'%' + filters[i][i2][i3 + 1] + '%\\'';\n }\n else if (singleSubSubFilter === 'startswith') {\n filters[i][i2][i3] = 'LIKE';\n singleSubSubFilter = 'LIKE';\n\n filters[i][i2][i3 + 1] = '\\'' + filters[i][i2][i3 + 1] + '%\\'';\n }\n else if (singleSubSubFilter === 'endswith') {\n filters[i][i2][i3] = 'LIKE';\n singleSubSubFilter = 'LIKE';\n\n filters[i][i2][i3 + 1] = '\\'%' + filters[i][i2][i3 + 1] + '\\'';\n }\n else if (singleSubSubFilter === '=' || singleSubSubFilter === '<>' || singleSubSubFilter === '>' || singleSubSubFilter === '>=' || singleSubSubFilter === '<' || singleSubSubFilter === '<=') {\n if (!filters[i][i2][i3 + 1])\n filters[i][i2][i3 + 1] = 'NULL';\n else if (typeof filters[i][i2][i3 + 1] === 'string') {\n filters[i][i2][i3 + 1] = '\\'' + filters[i][i2][i3 + 1] + '\\'';\n }\n }\n else if (singleSubSubFilter === '!') {\n filters[i][i2][i3] = 'NOT';\n singleSubSubFilter = 'NOT';\n }\n sqlFilter += ' ' + singleSubSubFilter + ' ';\n }\n else if (singleSubSubFilterType.toString() === 'object' && singleSubSubFilterIsDate) {\n sqlFilter += ' \\'' + singleSubSubFilter.toISOString().split('T')[0] + '\\' ';\n }\n else if (singleSubSubFilterType.toString() === 'number') {\n sqlFilter += ' ' + singleSubSubFilter.toString() + ' ';\n }\n else if (singleSubSubFilterType.toString() === 'boolean') {\n if (singleSubSubFilter.toString() === 'true')\n sqlFilter += '1 ';\n else if (singleSubSubFilter.toString() === 'false' || singleSubSubFilter === null || singleSubSubFilter === undefined)\n sqlFilter += '0 ';\n }\n }\n\n sqlFilter += ')';\n }\n else if (singleSubFilterType.toString() === 'string') {\n if (singleSubFilter === 'contains') {\n filters[i][i2] = 'LIKE';\n singleSubFilter = 'LIKE';\n\n filters[i][i2 + 1] = '\\'%' + filters[i][i2 + 1] + '%\\'';\n }\n else if (singleSubFilter === 'notcontains') {\n filters[i][i2] = 'NOT LIKE';\n singleSubFilter = 'NOT LIKE';\n\n filters[i][i2 + 1] = '\\'%' + filters[i][i2 + 1] + '%\\'';\n }\n else if (singleSubFilter === 'startswith') {\n filters[i][i2] = 'LIKE';\n singleSubFilter = 'LIKE';\n\n filters[i][i2 + 1] = '\\'' + filters[i][i2 + 1] + '%\\'';\n }\n else if (singleSubFilter === 'endswith') {\n filters[i][i2] = 'LIKE';\n singleSubFilter = 'LIKE';\n\n filters[i][i2 + 1] = '\\'%' + filters[i][i2 + 1] + '\\'';\n }\n else if (singleSubFilter === '=' || singleSubFilter === '<>' || singleSubFilter === '>' || singleSubFilter === '>=' || singleSubFilter === '<' || singleSubFilter === '<=') {\n if (!filters[i][i2 + 1])\n filters[i][i2 + 1] = 'NULL';\n else if (typeof filters[i][i2 + 1] === 'string') {\n filters[i][i2 + 1] = '\\'' + filters[i][i2 + 1] + '\\'';\n }\n }\n else if (singleSubFilter === '!') {\n filters[i][i2] = 'NOT';\n singleSubFilter = 'NOT';\n }\n sqlFilter += ' ' + singleSubFilter + ' ';\n }\n else if (singleSubFilterType.toString() === 'object' && singleSubFilterIsDate) {\n sqlFilter += ' \\'' + singleSubFilter.toISOString().split('T')[0] + '\\' ';\n }\n else if (singleSubFilterType.toString() === 'number') {\n sqlFilter += ' ' + singleSubFilter.toString() + ' ';\n }\n else if (singleSubFilterType.toString() === 'boolean') {\n if (singleSubFilter.toString() === 'true')\n sqlFilter += '1 ';\n else if (singleSubFilter.toString() === 'false' || singleSubFilter === null || singleSubFilter === undefined)\n sqlFilter += '0 ';\n }\n }\n\n sqlFilter += ')';\n }\n else if (singleFilterType.toString() === 'string') {\n if (singleFilter === 'contains') {\n filters[i] = 'LIKE';\n singleFilter = 'LIKE';\n\n filters[i + 1] = '\\'%' + filters[i + 1] + '%\\'';\n }\n else if (singleFilter === 'notcontains') {\n filters[i] = 'NOT LIKE';\n singleFilter = 'NOT LIKE';\n\n filters[i + 1] = '\\'%' + filters[i + 1] + '%\\'';\n }\n else if (singleFilter === 'startswith') {\n filters[i] = 'LIKE';\n singleFilter = 'LIKE';\n\n filters[i + 1] = '\\'' + filters[i + 1] + '%\\'';\n }\n else if (singleFilter === 'endswith') {\n filters[i] = 'LIKE';\n singleFilter = 'LIKE';\n\n filters[i + 1] = '\\'%' + filters[i + 1] + '\\'';\n }\n else if (singleFilter === '=' || singleFilter === '<>' || singleFilter === '>' || singleFilter === '>=' || singleFilter === '<' || singleFilter === '<=') {\n if (!filters[i + 1])\n filters[i + 1] = 'NULL';\n else if (typeof filters[i + 1] === 'string') {\n filters[i + 1] = '\\'' + filters[i + 1] + '\\'';\n }\n }\n else if (singleFilter === '!') {\n filters[i] = 'NOT';\n singleFilter = 'NOT';\n }\n sqlFilter += ' ' + singleFilter + ' ';\n }\n else if (singleFilterType.toString() === 'object' && singleFilterIsDate) {\n sqlFilter += ' \\'' + singleFilter.toISOString().split('T')[0] + '\\' ';\n }\n else if (singleFilterType.toString() === 'number') {\n sqlFilter += ' ' + singleFilter.toString() + ' ';\n }\n else if (singleFilterType.toString() === 'boolean') {\n if (singleFilter.toString() === 'true')\n sqlFilter += '1 ';\n else if (singleFilter.toString() === 'false' || singleFilter === null || singleFilter === undefined)\n sqlFilter += '0 ';\n }\n }\n\n sqlFilter += ')';\n }\n });\n\n async function getRecords() {\n if (sqlFilter === '(')\n sqlFilter = '';\n\n var records = await getShipmentRequestRecords(sqlFilter);\n return {\n data: records,\n totalCount: records.length\n };\n }\n\n return getRecords()\n .then(function (result) {\n return result;\n })\n .catch(() => { throw new Error('Data Loading Error'); });\n },\n });\n\n var fechaEmisionEditorOptions = useMemo(() => {\n return {\n width: '100%',\n readOnly: true\n };\n }, []);\n\n var fechaProgramadaEditorOptions = useMemo(() => {\n return {\n width: '100%',\n readOnly: true\n };\n }, []);\n\n var movimientoEditorOptions = useMemo(() => {\n return {\n width: '100%',\n readOnly: true\n };\n }, []);\n\n var almacenEditorOptions = useMemo(() => {\n return {\n width: '100%',\n readOnly: true\n };\n }, []);\n\n var rutaEditorOptions = useMemo(() => {\n return {\n width: '100%',\n readOnly: true\n };\n }, []);\n\n async function uploadChunk(file, uploadInfo) {\n try {\n var responseS3 = await Storage.put(\"/scemb/\" + id + \"/\" + file.name, uploadInfo.chunkBlob, {\n contentType: file.type,\n ACL: 'public-read'\n });\n\n //Obtenemos el nombre del bucket\n let bucketName = Storage._config.AWSS3.bucket;\n\n\n let apiName = 'AdminSC';\n let path = '/uploadattachment';\n\n let myInit = {\n headers: {\n 'Content-Type': 'application/json',\n Authorization: `${(await Auth.currentSession()).getAccessToken().getJwtToken()}`\n },\n body: {\n action: 'register',\n bucketName: bucketName,\n type: 'scemb',\n id: id,\n Key: \"/scemb/\" + id + \"/\" + file.name,\n fileName: file.name,\n username: JSON.parse(JSON.stringify(await Auth.currentAuthenticatedUser())).username\n }\n }\n\n var attachmentsResult = await API.post(apiName, path, myInit);\n\n //Obtenemos los attachments\n var attachmentsGet = await Storage.list(\"/scemb/\" + id);\n var attachmentsAux = [];\n\n for (var attachmentsGetIndex in attachmentsGet) {\n var singleAttachmentsGet = attachmentsGet[attachmentsGetIndex];\n\n var singleAttachment = {\n name: singleAttachmentsGet.key.split('/').pop(),\n isDirectory: false,\n size: singleAttachmentsGet.size,\n };\n\n attachmentsAux.push(singleAttachment);\n }\n\n setAttachments(attachmentsAux);\n }\n catch (err) {\n console.log(\"Error uploading file:\", err);\n }\n }\n\n async function onAttachmentDeleting(e) {\n var fileName = e.item.key;\n\n //Primero borramos el archivo de S3\n var attachmentsDelete = await Storage.remove(\"/scemb/\" + id + \"/\" + fileName);\n\n //Despues borramos el attachment en Intelisis\n let bucketName = Storage._config.AWSS3.bucket;\n\n let apiName = 'AdminSC';\n let path = '/uploadattachment';\n\n let myInit = {\n headers: {\n 'Content-Type': 'application/json',\n Authorization: `${(await Auth.currentSession()).getAccessToken().getJwtToken()}`\n },\n body: {\n action: 'delete',\n bucketName: bucketName,\n type: 'scemb',\n id: id,\n Key: \"/scemb/\" + id + \"/\" + fileName,\n fileName: fileName,\n username: JSON.parse(JSON.stringify(await Auth.currentAuthenticatedUser())).username\n }\n }\n\n var attachmentsResult = await API.post(apiName, path, myInit);\n\n //Finalmente sincronizamos el state\n var attachmentsGet = await Storage.list(\"/scemb/\" + id);\n var attachmentsAux = [];\n\n for (var attachmentsGetIndex in attachmentsGet) {\n var singleAttachmentsGet = attachmentsGet[attachmentsGetIndex];\n\n var singleAttachment = {\n name: singleAttachmentsGet.key.split('/').pop(),\n isDirectory: false,\n size: singleAttachmentsGet.size,\n };\n\n attachmentsAux.push(singleAttachment);\n }\n\n setAttachments(attachmentsAux);\n };\n\n function downloadBlob(blob, filename) {\n const url = URL.createObjectURL(blob);\n const a = document.createElement('a');\n a.href = url;\n a.download = filename || 'download';\n const clickHandler = () => {\n setTimeout(() => {\n URL.revokeObjectURL(url);\n a.removeEventListener('click', clickHandler);\n }, 150);\n };\n\n a.addEventListener('click', clickHandler, false);\n\n a.click();\n\n return a;\n };\n\n async function onItemDownloading(e) {\n e.cancel = true;\n\n const downloadFileResponse = await Storage.get(\"/scemb/\" + id + \"/\" + e.item.name, { download: true });\n\n downloadBlob(downloadFileResponse.Body, e.item.name);\n };\n\n function openBlob(blob, filename) {\n const url = URL.createObjectURL(blob);\n\n window.open(url, \"_blank\");\n };\n\n async function onAttachmentOpen(e) {\n const downloadFileResponse = await Storage.get(\"/scemb/\" + id + \"/\" + e.file.name, { download: true });\n\n openBlob(downloadFileResponse.Body, e.file.name);\n };\n\n async function getShipmentRequestPayload(ID) {\n try {\n let apiName = 'AdminSC';\n let path = '/procesasolembarque';\n\n let myInit = {\n headers: {\n 'Content-Type': 'application/json',\n Authorization: `${(await Auth.currentSession()).getAccessToken().getJwtToken()}`\n },\n queryStringParameters: {\n ID: ID,\n action: 'payload',\n username: JSON.parse(JSON.stringify(await Auth.currentAuthenticatedUser())).username\n }\n }\n\n var payloadGet = await API.get(apiName, path, myInit);\n\n setShipmentRequestPayload(payloadGet);\n\n //Obtenemos los attachments\n var attachmentsGet = await Storage.list(\"/scemb/\" + ID);\n var attachmentsAux = [];\n\n for (var attachmentsGetIndex in attachmentsGet) {\n var singleAttachmentsGet = attachmentsGet[attachmentsGetIndex];\n\n var singleAttachment = {\n name: singleAttachmentsGet.key.split('/').pop(),\n isDirectory: false,\n size: singleAttachmentsGet.size,\n };\n\n attachmentsAux.push(singleAttachment);\n }\n\n setAttachments(attachmentsAux);\n }\n catch (e) {\n if (e === 'No current user') {\n history.push('/');\n\n window.location.reload();\n }\n }\n\n return payloadGet;\n }\n\n function editShipmentRequest(data) {\n return (\n <Link to={`/ShipmentRequest/${data.data.ID}`}>\n <button class=\"bg-blue-500 hover:bg-blue-700 text-white py-1 px-3 rounded\" onClick={() => editButton(data.data.ID)}><FontAwesomeIcon icon={permissionLevel === 'Editar' ? faPencilAlt : faGlasses} /> {permissionLevel === 'Editar' ? 'Editar' : 'Ver'}</button>\n </Link>\n )\n }\n\n async function editButton(ID) {\n try {\n if (!window.event.metaKey && !window.event.ctrlKey) {\n setVisibleLoadPanel(true);\n\n setIsDetail(true);\n setId(ID);\n\n var payload = await getShipmentRequestPayload(ID);\n\n if (permissionLevel === 'Editar') {\n if (payload.header.Estatus === 'Pendiente') {\n setActivateUpdateForm(true);\n setActivateUpdateGrid(false);\n setActivateSaveButton(true);\n setActivateConfirmButton(true);\n\n setActivateSelectItemButton(false);\n setActivatePDFButton(true);\n setActivateCantidad2Button(false);\n setActivateAttachments(true);\n\n setContextMenuItems([]);\n\n // setContextMenuItems([\n // { text: 'Seleccionar Todo', icon: 'selectall' },\n // { text: 'Eliminar Selección', icon: 'unselectall' }\n // ]);\n }\n else if (payload.header.Estatus === 'Cancelado') {\n setActivateUpdateForm(false);\n setActivateUpdateGrid(false);\n setActivateSaveButton(false);\n setActivateConfirmButton(false);\n\n setActivateSelectItemButton(false);\n setActivatePDFButton(true);\n setActivateCantidad2Button(false);\n setActivateAttachments(false);\n\n setContextMenuItems([]);\n }\n else if (payload.header.Estatus === 'Concluido') {\n setActivateUpdateForm(false);\n setActivateUpdateGrid(false);\n setActivateSaveButton(false);\n setActivateConfirmButton(false);\n\n setActivateSelectItemButton(false);\n setActivatePDFButton(true);\n setActivateCantidad2Button(false);\n setActivateAttachments(false);\n\n setContextMenuItems([]);\n }\n }\n else if (permissionLevel === 'Ver') {\n setActivateUpdateForm(false);\n setActivateUpdateGrid(false);\n setActivateSaveButton(false);\n setActivateConfirmButton(false);\n\n setActivateSelectItemButton(false);\n setActivatePDFButton(true);\n setActivateCantidad2Button(false);\n setActivateAttachments(false);\n\n setContextMenuItems([]);\n }\n\n setVisibleLoadPanel(false);\n }\n }\n catch (e) {\n setVisibleLoadPanel(false);\n }\n };\n\n async function cancelEditButton() {\n setIsDetail(false);\n };\n\n async function saveButton() {\n try {\n setVisibleLoadPanel(true);\n\n var ID = shipmentRequestPayload.header.ID;\n\n //Guardamos los cambios del grid\n if (gridArticulosRef.current) {\n var gridArticulos = gridArticulosRef.current.instance();\n\n gridArticulos.saveEditData();\n }\n\n //Despues enviamos todo al backend\n let apiName = 'AdminSC';\n let path = '/procesasolembarque';\n\n let myInit = {\n headers: {\n 'Content-Type': 'application/json',\n Authorization: `${(await Auth.currentSession()).getAccessToken().getJwtToken()}`\n },\n body: {\n ID: ID,\n payload: shipmentRequestPayload,\n action: 'saveChanges',\n username: JSON.parse(JSON.stringify(await Auth.currentAuthenticatedUser())).username,\n usuario: props.usuario,\n sucursal: props.sucursal,\n s3Bucket: Storage._config.AWSS3.bucket\n }\n }\n\n var payloadPost = await API.post(apiName, path, myInit);\n\n if (payloadPost.ok === 'true') {\n setVisibleToast(true);\n setMessageToast('Se actualizó la Solicitud Embarque con éxito');\n setTypeToast('success')\n }\n else if (payloadPost.ok === 'false') {\n setVisibleToast(true);\n setMessageToast(payloadPost.message);\n setTypeToast('error')\n }\n\n editButton(ID);\n\n setVisibleLoadPanel(false);\n }\n catch (e) {\n setVisibleLoadPanel(false);\n\n if (e === 'No current user') {\n history.push('/');\n\n window.location.reload();\n }\n }\n };\n\n async function confirmButton() {\n var ID = shipmentRequestPayload.header.ID;\n\n try {\n setVisibleLoadPanel(true);\n\n //Guardamos los cambios del grid\n if (gridArticulosRef.current) {\n var gridArticulos = gridArticulosRef.current.instance();\n\n gridArticulos.saveEditData();\n }\n\n //Despues enviamos todo al backend\n let apiName = 'AdminSC';\n let path = '/procesasolembarque';\n\n let myInit = {\n headers: {\n 'Content-Type': 'application/json',\n Authorization: `${(await Auth.currentSession()).getAccessToken().getJwtToken()}`\n },\n body: {\n ID: ID,\n payload: shipmentRequestPayload,\n action: 'apply',\n username: JSON.parse(JSON.stringify(await Auth.currentAuthenticatedUser())).username,\n usuario: props.usuario,\n sucursal: props.sucursal\n }\n }\n\n var payloadPost = await API.post(apiName, path, myInit);\n\n if (payloadPost.ok === 'true') {\n setVisibleToast(true);\n setMessageToast('Se afectó la Solicitud Embarque con éxito');\n setTypeToast('success')\n }\n else if (payloadPost.ok === 'false') {\n setVisibleToast(true);\n setMessageToast(payloadPost.message);\n setTypeToast('error')\n }\n\n editButton(ID);\n\n setVisibleLoadPanel(false);\n }\n catch (e) {\n setVisibleLoadPanel(false);\n\n if (e === 'No current user') {\n history.push('/');\n\n window.location.reload();\n }\n }\n };\n\n async function selectAllButton() {\n try {\n setVisibleLoadPanel(true);\n\n var ID = shipmentRequestPayload.header.ID;\n\n //Guardamos los cambios del grid\n if (gridArticulosRef.current) {\n var gridArticulos = gridArticulosRef.current.instance();\n\n gridArticulos.saveEditData();\n }\n\n //Despues enviamos todo al backend\n let apiName = 'AdminSC';\n let path = '/procesasolembarque';\n\n let myInit = {\n headers: {\n 'Content-Type': 'application/json',\n Authorization: `${(await Auth.currentSession()).getAccessToken().getJwtToken()}`\n },\n body: {\n ID: ID,\n payload: shipmentRequestPayload,\n action: 'selectAll',\n username: JSON.parse(JSON.stringify(await Auth.currentAuthenticatedUser())).username,\n usuario: props.usuario,\n sucursal: props.sucursal\n }\n }\n\n var payloadPost = await API.post(apiName, path, myInit);\n\n if (payloadPost.ok === 'true') {\n setVisibleToast(true);\n setMessageToast('Artículos seleccionados con éxito');\n setTypeToast('success')\n }\n else if (payloadPost.ok === 'false') {\n setVisibleToast(true);\n setMessageToast(payloadPost.message);\n setTypeToast('error')\n }\n\n editButton(ID);\n\n setVisibleLoadPanel(false);\n }\n catch (e) {\n setVisibleLoadPanel(false);\n\n if (e === 'No current user') {\n history.push('/');\n\n window.location.reload();\n }\n }\n };\n\n async function selectNothingButton() {\n try {\n setVisibleLoadPanel(true);\n\n var ID = shipmentRequestPayload.header.ID;\n\n //Guardamos los cambios del grid\n if (gridArticulosRef.current) {\n var gridArticulos = gridArticulosRef.current.instance();\n\n gridArticulos.saveEditData();\n }\n\n //Despues enviamos todo al backend\n let apiName = 'AdminSC';\n let path = '/procesasolembarque';\n\n let myInit = {\n headers: {\n 'Content-Type': 'application/json',\n Authorization: `${(await Auth.currentSession()).getAccessToken().getJwtToken()}`\n },\n body: {\n ID: ID,\n payload: shipmentRequestPayload,\n action: 'selectNothing',\n username: JSON.parse(JSON.stringify(await Auth.currentAuthenticatedUser())).username,\n usuario: props.usuario,\n sucursal: props.sucursal\n }\n }\n\n var payloadPost = await API.post(apiName, path, myInit);\n\n if (payloadPost.ok === 'true') {\n setVisibleToast(true);\n setMessageToast('Artículos seleccionados con éxito');\n setTypeToast('success')\n }\n else if (payloadPost.ok === 'false') {\n setVisibleToast(true);\n setMessageToast(payloadPost.message);\n setTypeToast('error')\n }\n\n editButton(ID);\n\n setVisibleLoadPanel(false);\n }\n catch (e) {\n setVisibleLoadPanel(false);\n\n if (e === 'No current user') {\n history.push('/');\n\n window.location.reload();\n }\n }\n };\n\n function contextMenuItemClick(e) {\n if (e.itemData.text === 'Seleccionar Todo') {\n selectAllButton();\n }\n else if (e.itemData.text === 'Eliminar Selección') {\n selectNothingButton();\n }\n };\n\n function refreshButton() {\n if (gridTableroRef.current) {\n var gridTablero = gridTableroRef.current.instance();\n\n gridTablero.refresh();\n }\n }\n\n function printButton() {\n var baseUrl = window.location.href.split('/')[0];\n\n window.open(baseUrl + \"/#/PdfRender?type=shipmentrequest&id=\" + id, \"_blank\");\n };\n\n function openRelatedRecord(redirect) {\n if (redirect) {\n var baseUrl = window.location.href.split('#/')[0];\n\n redirect = baseUrl + '#' + redirect;\n\n window.open(redirect, \"_blank\");\n }\n };\n\n function openRelatedRecordButton(data) {\n return (\n <button onClick={() => openRelatedRecord(data.data.redirect)}><FontAwesomeIcon icon={faArrowUpRightFromSquare} /></button>\n )\n };\n\n useEffect(() => {\n window.addEventListener('popstate', (e) => {\n var hash;\n\n try {\n hash = e.target.location.hash;\n }\n catch (e) {\n hash = '';\n }\n\n if (hash === '#/ShipmentRequest') {\n history.push('/ShipmentRequest');\n\n window.location.reload();\n }\n });\n\n async function initialize() {\n setVisibleLoadPanel(true);\n\n setVisibleLoadPanel(false);\n }\n\n initialize();\n\n //En caso de solicitar un ID especifico, redireccionamos a ese ID\n if (!props.match.isExact) {\n var urlID = props.location.pathname.replace('/ShipmentRequest/', '');\n\n var search = props.location.search;\n var salesorder;\n\n if (search)\n salesorder = search.replace('?salesorder=', '');\n\n if (urlID === 'undefined')\n urlID = undefined;\n\n if (urlID)\n editButton(urlID);\n }\n\n // eslint-disable-next-line\n }, []);\n\n function onHidingToast() {\n setVisibleToast(false);\n }\n\n const onFieldDatosProgramacionChanged = React.useCallback((e) => {\n // var dataField = e.dataField;\n // var value = e.value;\n\n\n // if(formDatosGeneralesRef.current){\n // var formDatosGenerales = formDatosGeneralesRef.current.instance();\n\n // if(e.dataField === 'Pedido'){\n // if(e.value){\n // async function getSalesOrderInfo(){\n // try{\n // setVisibleLoadPanel(true);\n\n // let apiName = 'AdminSC';\n // let path = '/procesaentregadirecta';\n\n // let myInit = { \n // headers: {\n // 'Content-Type' : 'application/json',\n // Authorization: `${(await Auth.currentSession()).getAccessToken().getJwtToken()}`\n // },\n // queryStringParameters: {\n // action: 'getSalesOrderInfo',\n // salesOrder: value\n // }\n // };\n\n // var payloadNew = await API.get(apiName, path, myInit);\n\n // formDatosGenerales.updateData('NombreCliente', payloadNew.header.NombreCliente);\n // formDatosGenerales.updateData('Telefono', payloadNew.header.Telefono);\n // formDatosGenerales.updateData('Direccion', payloadNew.header.Direccion);\n // formDatosGenerales.updateData('Colonia', payloadNew.header.Colonia);\n // formDatosGenerales.updateData('CodigoPostal', payloadNew.header.CodigoPostal);\n // formDatosGenerales.updateData('Estado', payloadNew.header.Estado);\n // formDatosGenerales.updateData('Municipio', payloadNew.header.Municipio);\n // formDatosGenerales.updateData('Pais', payloadNew.header.Pais);\n\n // setVisibleLoadPanel(false);\n // }\n // catch(e){\n // if(e === 'No current user'){\n // history.push('/');\n\n // window.location.reload();\n // }\n // }\n // }\n\n // getSalesOrderInfo();\n // }\n // else{\n // formDatosGenerales.updateData('NombreCliente', undefined);\n // formDatosGenerales.updateData('Telefono', undefined);\n // formDatosGenerales.updateData('Direccion', undefined);\n // formDatosGenerales.updateData('Colonia', undefined);\n // formDatosGenerales.updateData('CodigoPostal', undefined);\n // formDatosGenerales.updateData('Estado', undefined);\n // formDatosGenerales.updateData('Municipio', undefined);\n // formDatosGenerales.updateData('Pais', undefined);\n // }\n // }\n // }\n }, [])\n\n function estatusRelatedRecords(data) {\n return (\n <TransactionStatus {...props} Estatus={data.data.Estatus} />\n )\n };\n\n function onExporting(e) {\n const workbook = new Workbook();\n const worksheet = workbook.addWorksheet('Datos');\n\n exportDataGrid({\n component: e.component,\n worksheet,\n autoFilterEnabled: true,\n }).then(() => {\n workbook.xlsx.writeBuffer().then((buffer) => {\n saveAs(new Blob([buffer], { type: 'application/octet-stream' }), 'Datos.xlsx');\n });\n });\n e.cancel = true;\n };\n\n return (\n <div>\n {isDetail === false ? (\n <div class=\"bg-gray-200 m-2\">\n <h1 class=\"font-sans inline-block text-xl font-bold text-gray-700 leading-8 align-top mb-1\"><FontAwesomeIcon icon={faList} size=\"lg\" /> Solicitudes Embarque</h1>\n </div>\n ) :\n (\n <div class=\"bg-gray-200 m-2\">\n <h1 class=\"font-sans inline-block text-xl font-bold text-gray-700 leading-8 align-top mb-1\"><FontAwesomeIcon icon={faForklift} size=\"xl\" /> {(shipmentRequestPayload.header ? shipmentRequestPayload.header.Movimiento : 'Solicitud Embarque')}</h1>\n <TransactionStatus {...props} Estatus={shipmentRequestPayload.header.Estatus} />\n </div>\n )}\n\n <LoadPanel\n shadingColor=\"rgba(0,0,0,0.4)\"\n visible={visibleLoadPanel}\n showIndicator={true}\n message=\"Por favor espere...\"\n shading={true}\n showPane={true}\n hideOnOutsideClick={false}\n />\n\n <Toast\n visible={visibleToast}\n message={messageToast}\n type={typeToast}\n onHiding={onHidingToast}\n displayTime={5000}\n width={'auto'}\n position={{\n my: 'top center',\n at: 'top center',\n of: window,\n offset: '0 130'\n }}\n />\n\n <div class=\"bg-gray-200 m-2\">\n {isDetail === false ? (\n <div class=\"bg-white p-3 shadow-xl\">\n\n {permissionLevel === 'Editar' ?\n (\n <div>\n <button onClick={refreshButton} type=\"submit\" class=\"mb-4 bg-blue-500 hover:bg-blue-700 text-white font-bold py-2 px-4 rounded\">\n <FontAwesomeIcon icon={faArrowsRotate} /> Actualizar\n </button>\n </div>\n ) :\n (\n <div>\n <button onClick={refreshButton} type=\"submit\" class=\"mb-4 bg-blue-500 hover:bg-blue-700 text-white font-bold py-2 px-4 rounded\">\n <FontAwesomeIcon icon={faArrowsRotate} /> Actualizar\n </button>\n </div>\n )}\n\n <div className=\"options mb-2\">\n <div className=\"option\">\n <CheckBox text=\"Expandir todos los grupos\"\n value={autoExpandAll}\n onValueChanged={onAutoExpandAllChanged}></CheckBox>\n </div>\n </div>\n <DataGrid\n height={800}\n id=\"gridContainer\"\n columnsAutoWidth={true}\n filterBuilder={filterBuilder}\n dataSource={store}\n defaultFilterValue={filterValue}\n allowColumnReordering={true}\n allowColumnResizing={true}\n columnResizingMode={\"widget\"}\n showBorders={true}\n rowAlternationEnabled={true}\n showRowLines={true}\n showColumnLines={true}\n remoteOperations={{ filtering: true }}\n ref={gridTableroRef}\n onExporting={onExporting}\n >\n <Scrolling rowRenderingMode='virtual'></Scrolling>\n <Paging defaultPageSize={10} />\n <Pager\n visible={true}\n allowedPageSizes={allowedPageSizes}\n displayMode='compact'\n showPageSizeSelector={true}\n showInfo={true}\n showNavigationButtons={true}\n />\n <FilterRow visible={true} />\n <FilterPanel visible={true} />\n <FilterBuilderPopup position={filterBuilderPopupPosition} />\n\n <HeaderFilter visible={true} />\n\n <GroupPanel visible={true} />\n <SearchPanel visible={true} />\n <ColumnChooser\n enabled={true}\n mode='select'\n >\n <ColumnChooserSearch\n enabled={true}\n />\n\n <ColumnChooserSelection\n allowSelectAll={true}\n selectByClick={true}\n recursive={true}\n />\n </ColumnChooser>\n <Grouping autoExpandAll={autoExpandAll} />\n <StateStoring enabled={true} type=\"localStorage\" storageKey=\"gridContainerShipmentRequest\" />\n <Export enabled={true} />\n\n <Column caption=\"\" alignment=\"center\" width={100} cellRender={editShipmentRequest} />\n <Column dataField=\"MovID\" dataType=\"string\" width={110} caption=\"Folio\" />\n <Column dataField=\"FechaEmision\" caption=\"Fecha Emisión\" dataType=\"date\" width={130} />\n <Column dataField=\"FechaProgramada\" caption=\"Fecha Programada\" dataType=\"date\" width={130} />\n <Column dataField=\"Estatus\" dataType=\"string\" width={120} />\n <Column dataField=\"Almacen\" caption=\"Almacén\" dataType=\"string\" width={120} />\n <Column dataField=\"Ruta\" dataType=\"string\" width={120} />\n <Column caption=\"Plaza\" dataField=\"Plaza\" dataType=\"string\" width={150} visible={false} />\n\n <Column dataField=\"ID\" dataType=\"number\" width={150} visible={false} />\n <Column dataField=\"Mov\" dataType=\"string\" width={190} caption=\"Tipo Movimiento\" visible={false} />\n <Column dataField=\"Movimiento\" dataType=\"string\" width={190} visible={false} />\n\n <Column dataField=\"NombreAlmacen\" dataType=\"string\" width={190} caption=\"Nombre Almacén\" visible={false} />\n <Column dataField=\"Sucursal\" dataType=\"number\" width={150} visible={false} />\n <Column dataField=\"NombreSucursal\" dataType=\"string\" width={190} visible={false} />\n <Column dataField=\"Usuario\" dataType=\"string\" width={190} visible={false} />\n <Column dataField=\"NombreUsuario\" dataType=\"string\" width={190} visible={false} />\n </DataGrid>\n </div>\n ) : (<div />)}\n <Route exact path=\"/ShipmentRequest/:ID\" render={({ match }) => {\n return (\n <div class=\"bg-gray-200\">\n {isDetail.toString() === 'true' ?\n (\n <div>\n <Link to=\"/ShipmentRequest\">\n <button onClick={cancelEditButton} type=\"submit\" class=\"mb-4 bg-red-500 hover:bg-red-700 text-white font-bold py-2 px-4 rounded\">\n <FontAwesomeIcon icon={faArrowRotateLeft} /> Regresar\n </button>\n </Link>\n\n {activateSaveButton.toString() === 'true' ?\n (\n <button onClick={saveButton} type=\"submit\" class=\"ml-4 mb-4 bg-blue-500 hover:bg-blue-700 text-white font-bold py-2 px-4 rounded\">\n <FontAwesomeIcon icon={faSave} /> Guardar Cambios\n </button>\n ) : (\n <div class=\"inline-block\"></div>\n )}\n\n {activateConfirmButton.toString() === 'true' && id ?\n (\n <button onClick={confirmButton} type=\"submit\" class=\"ml-4 mb-4 bg-green-500 hover:bg-green-700 text-white font-bold py-2 px-4 rounded\">\n <FontAwesomeIcon icon={faPlay} /> Afectar\n </button>\n ) : (\n <div class=\"inline-block\"></div>\n )}\n\n {activateSelectItemButton.toString() === 'true' && id ?\n (\n <button onClick={selectAllButton} type=\"submit\" class=\"ml-4 mb-4 bg-blue-500 hover:bg-blue-700 text-white font-bold py-2 px-4 rounded\">\n <FontAwesomeIcon icon={faCircleCheck} /> Todo\n </button>\n ) :\n (\n <div class=\"inline-block\"></div>\n )}\n\n {activateSelectItemButton.toString() === 'true' && id ?\n (\n <button onClick={selectNothingButton} type=\"submit\" class=\"ml-4 mb-4 bg-blue-500 hover:bg-blue-700 text-white font-bold py-2 px-4 rounded\">\n <FontAwesomeIcon icon={faCircleX} /> Nada\n </button>\n ) :\n (\n <div class=\"inline-block\"></div>\n )}\n\n {activatePDFButton.toString() === 'true' && id ?\n (\n <button onClick={printButton} type=\"submit\" class=\"ml-4 mb-4 bg-gray-500 hover:bg-gray-700 text-white font-bold py-2 px-4 rounded\">\n <FontAwesomeIcon icon={faFilePdf} /> PDF\n </button>\n ) :\n (\n <div class=\"inline-block\"></div>\n )}\n\n <div class=\"bg-white p-4 shadow-xl\">\n <ContextMenu\n dataSource={contextMenuItems}\n width={200}\n target=\"#gridArticulos\"\n onItemClick={contextMenuItemClick}\n />\n\n <Form\n id=\"formTransaccion\"\n labelMode={'outside'}\n formData={shipmentRequestPayload.header}\n readOnly={!activateUpdateForm}\n showColonAfterLabel={false}\n labelLocation={'top'}\n onFieldDataChanged={onFieldDatosProgramacionChanged}\n ref={formDatosGeneralesRef}\n >\n <TabbedItem>\n <TabPanelOptions deferRendering={false} showNavButtons={true} />\n <Tab title=\"Datos Generales\" colCount={7}>\n <GroupItem caption=\"General\" colSpan={2} >\n <Item cssClass=\"boldText\" dataField=\"Movimiento\" editorOptions={movimientoEditorOptions} />\n <Item dataField=\"FechaEmision\" editorType=\"dxDateBox\" editorOptions={fechaEmisionEditorOptions}>\n <Label text={\"Fecha Emisión\"} />\n </Item>\n <Item dataField=\"FechaProgramada\" editorType=\"dxDateBox\" editorOptions={fechaProgramadaEditorOptions}>\n <Label text={\"Fecha Programada\"} />\n </Item>\n <Item dataField=\"NombreAlmacen\" editorOptions={almacenEditorOptions} >\n <Label text=\"Almacén\" />\n </Item>\n <Item dataField=\"Ruta\" editorOptions={rutaEditorOptions} >\n <Label text=\"Ruta\" />\n </Item>\n </GroupItem>\n <GroupItem caption=\"Artículos\" colSpan={5} >\n <DataGrid\n id=\"gridArticulos\"\n ref={gridArticulosRef}\n columnsAutoWidth={true}\n dataSource={shipmentRequestPayload.detail}\n showBorders={true}\n showColumnLines={true}\n showRowLines={true}\n rowAlternationEnabled={true}\n allowColumnResizing={true}\n columnResizingMode=\"widget\"\n allowColumnReordering={false}\n repaintChangesOnly={false}\n >\n <Editing\n mode=\"cell\"\n allowUpdating={activateUpdateGrid}\n allowAdding={false}\n allowDeleting={false}\n />\n <Sorting mode=\"none\" />\n\n <Column dataField=\"Renglon\" width={190} visible={false} allowEditing={false} />\n <Column dataField=\"SCRama\" caption=\"Pedido\" width={80} allowEditing={false} />\n <Column dataField=\"Referencia\" caption=\"Solicitud\" width={170} allowEditing={false} />\n <Column dataField=\"Articulo\" caption=\"Artículo\" width={90} allowEditing={false} />\n <Column dataField=\"Descripcion\" caption=\"Descripción\" width={320} allowEditing={false} />\n <Column dataField=\"Cantidad\" width={80} allowEditing={false} dataType=\"number\" />\n <Column dataField=\"CantidadA\" caption=\"Programación\" width={110} allowEditing={activateCantidad2Button} visible={true} dataType=\"number\" />\n <Column dataField=\"CantidadProcesadaWMS\" caption=\"Proc. WMS\" width={100} allowEditing={false} visible={shipmentRequestPayload.header.Estatus === 'Pendiente' || shipmentRequestPayload.header.Estatus === 'Concluido'} dataType=\"number\" />\n <Column dataField=\"CantidadEmpacadaWMS\" caption=\"Emp. WMS\" width={100} allowEditing={false} visible={shipmentRequestPayload.header.Estatus === 'Pendiente' || shipmentRequestPayload.header.Estatus === 'Concluido'} dataType=\"number\" />\n <Column dataField=\"CantidadEnviadaWMS\" caption=\"Env. WMS\" width={100} allowEditing={false} visible={shipmentRequestPayload.header.Estatus === 'Pendiente' || shipmentRequestPayload.header.Estatus === 'Concluido'} dataType=\"number\" />\n </DataGrid>\n </GroupItem>\n </Tab>\n <Tab title=\"Observaciones\" >\n <Item dataField=\"Observaciones\" editorType=\"dxTextArea\" >\n <Label text=\"Observaciones\" visible={false} />\n </Item>\n </Tab>\n <Tab title=\"Registros Relacionados\">\n <DataGrid\n id=\"gridRelatedRecords\"\n columnsAutoWidth={true}\n dataSource={shipmentRequestPayload.relatedRecords}\n allowColumnReordering={true}\n allowColumnResizing={true}\n columnResizingMode={\"widget\"}\n showBorders={true}\n rowAlternationEnabled={true}\n showRowLines={true}\n showColumnLines={true}\n >\n <HeaderFilter visible={false} />\n\n <Column dataField=\"name\" dataType=\"string\" width={300} caption=\"Transacción\" />\n <Column caption=\"Estatus\" alignment=\"center\" width={150} cellRender={estatusRelatedRecords} />\n <Column caption=\"\" alignment=\"center\" width={50} cellRender={openRelatedRecordButton} />\n <Column dataField=\"FechaEmision\" dataType=\"date\" width={150} caption=\"Fecha Emisión\" />\n </DataGrid>\n </Tab>\n <Tab title=\"Log Estatus\">\n <DataGrid\n id=\"gridLogEstatus\"\n columnsAutoWidth={true}\n dataSource={shipmentRequestPayload.movEstatusLog}\n allowColumnReordering={true}\n allowColumnResizing={true}\n columnResizingMode={\"widget\"}\n showBorders={true}\n rowAlternationEnabled={true}\n showRowLines={true}\n showColumnLines={true}\n >\n <HeaderFilter visible={false} />\n <Column dataField=\"Usuario\" dataType=\"string\" width={350} caption=\"Usuario\" />\n <Column caption=\"Estatus\" alignment=\"center\" width={150} cellRender={estatusRelatedRecords} />\n <Column dataField=\"Fecha\" dataType=\"datetime\" width={300} caption=\"Fecha\" />\n </DataGrid>\n </Tab>\n <Tab title=\"Archivos Anexos\" >\n <div className=\"widget-container\">\n <FileUploader\n multiple={true}\n accept=\"*\"\n uploadMode=\"useButtons\"\n chunkSize={20000000}\n maxFileSize={20000000}\n uploadChunk={uploadChunk}\n disabled={!activateAttachments}\n />\n </div>\n <div id=\"wrapper\" className=\"show-widget\" >\n <div id=\"widget-area\">\n <FileManager id=\"attachmentManager\" fileSystemProvider={attachments} onItemDeleting={onAttachmentDeleting} onItemDownloading={onItemDownloading} onSelectedFileOpened={onAttachmentOpen}>\n <Permissions\n create={false}\n copy={false}\n move={false}\n delete={activateAttachments}\n rename={false}\n upload={false}\n download={true}\n >\n </Permissions>\n </FileManager>\n </div>\n </div>\n </Tab>\n </TabbedItem>\n </Form>\n </div>\n </div>\n ) :\n (\n <div></div>\n )\n }\n </div>\n )\n }}\n />\n </div>\n </div>\n );\n}\n","import React, { useState, useEffect, useRef, useMemo } from 'react';\n\n// LoadPanel\nimport { LoadPanel } from 'devextreme-react/load-panel';\n\n// Toast\nimport { Toast } from 'devextreme-react/toast';\n\n//Form\nimport Form, { GroupItem, Label, TabbedItem, TabPanelOptions, Tab, EmptyItem } from 'devextreme-react/form';\n\nimport { Auth, API, Storage } from 'aws-amplify';\n\n// Ruteador\nimport { Route, Link, useHistory } from \"react-router-dom\";\n\n// Grid\nimport DataGrid, {\n Column, FilterRow, HeaderFilter, FilterPanel, FilterBuilderPopup,\n GroupPanel, Grouping, SearchPanel, Sorting, Editing, Lookup, Toolbar, Item, RequiredRule,\n Scrolling, Pager, Paging, Summary, TotalItem, StateStoring, ColumnChooser, Format, Selection,\n Export, ColumnChooserSearch, ColumnChooserSelection\n} from 'devextreme-react/data-grid';\n\n//CheckBox\nimport CheckBox from 'devextreme-react/check-box';\n\n// Iconos\nimport { FontAwesomeIcon } from \"@fortawesome/react-fontawesome\";\nimport { faGlasses } from \"@fortawesome/pro-solid-svg-icons\";\nimport { faPencilAlt } from \"@fortawesome/pro-solid-svg-icons\";\nimport { faArrowRotateLeft } from \"@fortawesome/pro-solid-svg-icons\";\nimport { faSave } from \"@fortawesome/pro-solid-svg-icons\";\nimport { faList } from \"@fortawesome/pro-duotone-svg-icons\";\nimport { faFilePdf } from \"@fortawesome/pro-solid-svg-icons\";\nimport { faArrowsRotate } from \"@fortawesome/pro-solid-svg-icons\";\nimport { faFileAlt } from \"@fortawesome/pro-solid-svg-icons\";\nimport { faPalletBoxes } from \"@fortawesome/pro-duotone-svg-icons\";\nimport { faPlay } from \"@fortawesome/pro-solid-svg-icons\";\nimport { faTrash } from \"@fortawesome/pro-solid-svg-icons\";\nimport { faWindowClose } from \"@fortawesome/pro-solid-svg-icons\";\nimport { faArrowUpRightFromSquare } from \"@fortawesome/pro-solid-svg-icons\";\nimport { faThumbsUp } from \"@fortawesome/pro-solid-svg-icons\";\nimport { faLeft } from \"@fortawesome/pro-solid-svg-icons\";\nimport { faRight } from \"@fortawesome/pro-solid-svg-icons\";\n\nimport 'devextreme/data/odata/store';\nimport CustomStore from 'devextreme/data/custom_store';\n\nimport DataSource from 'devextreme/data/data_source';\n\nimport '../ListStyle.css';\n\n//FileUploader\nimport FileUploader from 'devextreme-react/file-uploader';\n\n//FileManager\nimport FileManager, { Permissions } from 'devextreme-react/file-manager';\n\nimport dxDateBox from \"devextreme/ui/date_box\";\n\nimport dxNumberBox from \"devextreme/ui/number_box\";\n\nimport TransactionStatus from \"../TransactionStatus/TransactionStatus.js\";\n\nimport Lambda from 'aws-sdk/clients/lambda';\n\nimport { Popup, Position, ToolbarItem } from 'devextreme-react/popup';\n\nimport ScrollView from 'devextreme-react/scroll-view';\n\nimport { Workbook } from 'exceljs';\nimport { saveAs } from 'file-saver';\nimport { exportDataGrid } from 'devextreme/excel_exporter'\n\ndxDateBox.defaultOptions({\n options: {\n dateSerializationFormat: \"yyyy-MM-dd\"\n }\n});\n\ndxNumberBox.defaultOptions({\n options: {\n step: 0\n }\n});\n\nfunction isNotEmpty(value) {\n return value !== undefined && value !== null && value !== '';\n}\n\nexport default function InvTransferOrder(props) {\n const history = useHistory();\n\n const [isDetail, setIsDetail] = useState(false);\n const [id, setId] = useState();\n const [permissionLevel] = useState(props.nivel);\n const [approveInvTransferOrder] = useState(props.approveInvTransferOrder);\n const [invItemFulfillment] = useState(props.invItemFulfillment);\n const [invItemFulfillmentLevel] = useState(props.invItemFulfillmentLevel);\n const [invItemReceipt] = useState(props.invItemReceipt);\n const [invItemReceiptLevel] = useState(props.invItemReceiptLevel);\n\n const [invTransferOrderPayload, setInvTransferOrderPayload] = useState({\n header: {},\n detail: [],\n movEstatusLog: []\n });\n\n const [autoExpandAll, setAutoExpandAll] = useState(true);\n\n // setValue para el control tab\n const [value, setValue] = React.useState(0);\n\n const [visibleLoadPanel, setVisibleLoadPanel] = useState(false);\n\n const [visibleToast, setVisibleToast] = useState(false);\n const [messageToast, setMessageToast] = useState('');\n const [typeToast, setTypeToast] = useState('success');\n\n const [conceptos, setConceptos] = useState([]);\n const [almacenes, setAlmacenes] = useState([]);\n const [tipoDano, setTipoDano] = useState([]);\n const [autorizacionProveedor, setAutorizacionProveedor] = useState([]);\n const [observaciones, setObservaciones] = useState([]);\n\n const [popupVisible, setPopupVisible] = useState(false);\n const [popupTitle, setPopupTitle] = useState('Íconos Pedido');\n\n const [activateUpdateGrid, setActivateUpdateGrid] = useState(false);\n const [acceptCustomValues, setAcceptCustomValue] = useState(false);\n const [activateSaveButton, setActivateSaveButton] = useState(false);\n const [activateConfirmButton, setActivateConfirmButton] = useState(false);\n const [activateApproveButton, setActivateApproveButton] = useState(false);\n const [activateDeleteButton, setActivateDeleteButton] = useState(false);\n const [activateCancelButton, setActivateCancelButton] = useState(false);\n const [activatePDFButton, setActivatePDFButton] = useState(false);\n const [activateUpdateForm, setActivateUpdateForm] = useState(false);\n const [activateAttachments, setActivateAttachments] = useState(false);\n const [activateSalidaTraspaso, setActivateSalidaTraspaso] = useState(false);\n const [activateReciboTraspaso, setActivateReciboTraspaso] = useState(false);\n\n //Ref para el form\n const [formDatosGeneralesRef] = useState(React.createRef());\n\n //Ref para el grid Articulos\n const [gridArticulosRef, setGridArticulosRef] = useState(React.createRef());\n\n const [attachments, setAttachments] = useState([]);\n\n const handleChange = (event, newValue) => {\n setValue(newValue);\n };\n\n const filterBuilderPopupPosition = {\n of: window,\n at: 'top',\n my: 'top',\n offset: { y: 10 },\n };\n\n const allowedPageSizes = [5, 10, 15, 20, 'all'];\n\n const exportFormats = ['xlsx'];\n\n function getOrderDay(rowData) {\n return (new Date(rowData.OrderDate)).getDay();\n }\n\n const filterBuilder = {\n customOperations: [{\n name: 'weekends',\n caption: 'Weekends',\n dataTypes: ['date'],\n icon: 'check',\n hasValue: false,\n calculateFilterExpression: () => [[getOrderDay, '=', 0], 'or', [getOrderDay, '=', 6]],\n }],\n allowHierarchicalFields: true,\n };\n\n const filterValue = [['Estatus', '=', 'Sin Afectar']];\n\n //Ref para el grid Tablero de Control\n const [gridTableroRef] = useState(React.createRef());\n\n function onAutoExpandAllChanged() {\n setAutoExpandAll(!autoExpandAll)\n };\n\n const getInvTransferOrderRecords = React.useCallback(async (sqlFilter) => {\n try {\n let apiName = 'AdminSC';\n let path = '/procesainvsoltraspaso';\n\n let myInit = {\n headers: {\n 'Content-Type': 'application/json',\n Authorization: `${(await Auth.currentSession()).getAccessToken().getJwtToken()}`\n },\n queryStringParameters: {\n action: 'list',\n sqlFilter: sqlFilter,\n salesAccess: props.salesAccess,\n sucursal: props.sucursal,\n username: JSON.parse(JSON.stringify(await Auth.currentAuthenticatedUser())).username\n }\n }\n\n var invTransferOrdersGet = await API.get(apiName, path, myInit);\n }\n catch (e) {\n if (e === 'No current user') {\n history.push('/');\n\n window.location.reload();\n }\n }\n\n return invTransferOrdersGet;\n }, [history, props.salesAccess, props.sucursal]);\n\n const getArticulo = React.useCallback(async (sqlFilter) => {\n let apiName = 'AdminSC';\n let path = '/getcatalogo';\n\n let myInit = {\n headers: {\n 'Content-Type': 'application/json',\n Authorization: `${(await Auth.currentSession()).getAccessToken().getJwtToken()}`\n },\n queryStringParameters: {\n type: 'Articulo',\n username: JSON.parse(JSON.stringify(await Auth.currentAuthenticatedUser())).username,\n sqlFilter: sqlFilter\n }\n }\n\n var articulosGet = await API.get(apiName, path, myInit);\n\n return articulosGet;\n\n }, []);\n\n const getConceptos = React.useCallback(async () => {\n let apiName = 'AdminSC';\n let path = '/getcatalogo';\n\n let myInit = {\n headers: {\n 'Content-Type': 'application/json',\n Authorization: `${(await Auth.currentSession()).getAccessToken().getJwtToken()}`\n },\n queryStringParameters: {\n type: 'Concepto',\n modulo: 'INV',\n username: JSON.parse(JSON.stringify(await Auth.currentAuthenticatedUser())).username\n }\n }\n\n var conceptosGet = await API.get(apiName, path, myInit);\n\n setConceptos(conceptosGet);\n\n return conceptosGet;\n }, []);\n\n const getAlmacenes = React.useCallback(async () => {\n let apiName = 'AdminSC';\n let path = '/getcatalogo';\n\n let myInit = {\n headers: {\n 'Content-Type': 'application/json',\n Authorization: `${(await Auth.currentSession()).getAccessToken().getJwtToken()}`\n },\n queryStringParameters: {\n type: 'AlmacenNormal',\n username: JSON.parse(JSON.stringify(await Auth.currentAuthenticatedUser())).username\n }\n }\n\n var pedidosGet = await API.get(apiName, path, myInit);\n\n setAlmacenes(pedidosGet);\n\n }, []);\n\n const getObservaciones = React.useCallback(async () => {\n let apiName = 'AdminSC';\n let path = '/getcatalogo';\n\n let myInit = {\n headers: {\n 'Content-Type': 'application/json',\n Authorization: `${(await Auth.currentSession()).getAccessToken().getJwtToken()}`\n },\n queryStringParameters: {\n type: 'Observacion',\n modulo: 'INV',\n username: JSON.parse(JSON.stringify(await Auth.currentAuthenticatedUser())).username\n }\n }\n\n var observacionesGet = await API.get(apiName, path, myInit);\n\n setObservaciones(observacionesGet);\n\n }, []);\n\n const store = useMemo(() => {\n return new CustomStore({\n key: 'ID',\n load(loadOptions) {\n let sqlFilter = '(';\n [\n 'filter'\n ].forEach((i) => {\n if (i in loadOptions && isNotEmpty(loadOptions[i])) {\n var filters = loadOptions[i];\n\n var filtersLength = filters.length;\n\n for (var i = 0; i <= filtersLength; i++) {\n var singleFilter = filters[i];\n var singleFilterType = typeof singleFilter;\n var singleFilterIsArray = Array.isArray(singleFilter);\n var singleFilterIsDate = singleFilter instanceof Date;\n\n if (singleFilter === 'NULL') {\n singleFilter = '0';\n }\n\n if (singleFilterType.toString() === 'object' && singleFilterIsArray) {\n sqlFilter += '(';\n\n var subFiltersLength = singleFilter.length;\n\n for (var i2 = 0; i2 <= subFiltersLength; i2++) {\n var singleSubFilter = singleFilter[i2];\n var singleSubFilterType = typeof singleSubFilter;\n var singleSubFilterIsArray = Array.isArray(singleSubFilter);\n var singleSubFilterIsDate = singleSubFilter instanceof Date\n\n if (singleSubFilter === 'NULL') {\n singleSubFilter = '0';\n }\n\n if (singleSubFilterType.toString() === 'object' && singleSubFilterIsArray) {\n sqlFilter += '(';\n\n var subSubFiltersLength = singleSubFilter.length;\n\n for (var i3 = 0; i3 <= subSubFiltersLength; i3++) {\n var singleSubSubFilter = singleSubFilter[i3];\n var singleSubSubFilterType = typeof singleSubSubFilter;\n var singleSubSubFilterIsArray = Array.isArray(singleSubSubFilter);\n var singleSubSubFilterIsDate = singleSubSubFilter instanceof Date\n\n if (singleSubSubFilter === 'NULL') {\n singleSubSubFilter = '0';\n }\n\n if (singleSubSubFilterType.toString() === 'object' && singleSubSubFilterIsArray) {\n sqlFilter += '(';\n\n var subSubSubFiltersLength = singleSubSubFilter.length;\n\n for (var i4 = 0; i4 <= subSubSubFiltersLength; i4++) {\n var singleSubSubSubFilter = singleSubSubFilter[i4];\n var singleSubSubSubFilterType = typeof singleSubSubSubFilter;\n var singleSubSubSubFilterIsArray = Array.isArray(singleSubSubSubFilter);\n var singleSubSubSubFilterIsDate = singleSubSubSubFilter instanceof Date\n\n if (singleSubSubSubFilter === 'NULL') {\n singleSubSubSubFilter = '0';\n }\n\n if (singleSubSubSubFilterType.toString() === 'object' && singleSubSubSubFilterIsArray) {\n sqlFilter += '(';\n\n var subSubSubSubFiltersLength = singleSubSubSubFilter.length;\n\n for (var i5 = 0; i5 <= subSubSubSubFiltersLength; i5++) {\n var singleSubSubSubSubFilter = singleSubSubSubFilter[i5];\n var singleSubSubSubSubFilterType = typeof singleSubSubSubSubFilter;\n var singleSubSubSubSubFilterIsArray = Array.isArray(singleSubSubSubSubFilter);\n var singleSubSubSubSubFilterIsDate = singleSubSubSubSubFilter instanceof Date\n\n if (singleSubSubSubSubFilter === 'NULL') {\n singleSubSubSubSubFilter = '0';\n }\n\n if (singleSubSubSubSubFilterType.toString() === 'string') {\n if (singleSubSubSubSubFilter === 'contains') {\n filters[i][i2][i3][i4][i5] = 'LIKE';\n singleSubSubSubSubFilter = 'LIKE';\n\n filters[i][i2][i3][i4][i5 + 1] = '\\'%' + filters[i][i2][i3][i4][i5 + 1] + '%\\'';\n }\n else if (singleSubSubSubSubFilter === 'notcontains') {\n filters[i][i2][i3][i4][i5] = 'NOT LIKE';\n singleSubSubSubSubFilter = 'NOT LIKE';\n\n filters[i][i2][i3][i4][i5 + 1] = '\\'%' + filters[i][i2][i3][i4][i5 + 1] + '%\\'';\n }\n else if (singleSubSubSubSubFilter === 'startswith') {\n filters[i][i2][i3][i4][i5] = 'LIKE';\n singleSubSubSubSubFilter = 'LIKE';\n\n filters[i][i2][i3][i4][i5 + 1] = '\\'' + filters[i][i2][i3][i4][i5 + 1] + '%\\'';\n }\n else if (singleSubSubSubSubFilter === 'endswith') {\n filters[i][i2][i3][i4][i5] = 'LIKE';\n singleSubSubSubSubFilter = 'LIKE';\n\n filters[i][i2][i3][i4][i5 + 1] = '\\'%' + filters[i][i2][i3][i4][i5 + 1] + '\\'';\n }\n else if (singleSubSubSubSubFilter === '=' || singleSubSubSubSubFilter === '<>' || singleSubSubSubSubFilter === '>' || singleSubSubSubSubFilter === '>=' || singleSubSubSubSubFilter === '<' || singleSubSubSubSubFilter === '<=') {\n if (!filters[i][i2][i3][i4][i5 + 1])\n filters[i][i2][i3][i4][i5 + 1] = 'NULL';\n else if (typeof filters[i][i2][i3][i4][i5 + 1] === 'string') {\n filters[i][i2][i3][i4][i5 + 1] = '\\'' + filters[i][i2][i3][i4][i5 + 1] + '\\'';\n }\n }\n else if (singleSubSubSubSubFilter === '!') {\n filters[i][i2][i3][i4][i5] = 'NOT';\n singleSubSubSubSubFilter = 'NOT';\n }\n\n sqlFilter += ' ' + singleSubSubSubSubFilter + ' ';\n }\n else if (singleSubSubSubSubFilterType.toString() === 'object' && singleSubSubSubSubFilterIsDate) {\n sqlFilter += ' \\'' + singleSubSubSubSubFilter.toISOString().split('T')[0] + '\\' ';\n }\n else if (singleSubSubSubSubFilterType.toString() === 'number') {\n sqlFilter += ' ' + singleSubSubSubSubFilter.toString() + ' ';\n }\n else if (singleSubSubSubSubFilterType.toString() === 'boolean') {\n if (singleSubSubSubSubFilter.toString() === 'true')\n sqlFilter += '1 ';\n else if (singleSubSubSubSubFilter.toString() === 'false' || singleSubSubSubSubFilter === null || singleSubSubSubSubFilter === undefined)\n sqlFilter += '0 ';\n }\n }\n }\n else if (singleSubSubSubFilterType.toString() === 'string') {\n if (singleSubSubSubFilter === 'contains') {\n filters[i][i2][i3][i4] = 'LIKE';\n singleSubSubSubFilter = 'LIKE';\n\n filters[i][i2][i3][i4 + 1] = '\\'%' + filters[i][i2][i3][i4 + 1] + '%\\'';\n }\n else if (singleSubSubSubFilter === 'notcontains') {\n filters[i][i2][i3][i4] = 'NOT LIKE';\n singleSubSubSubFilter = 'NOT LIKE';\n\n filters[i][i2][i3][i4 + 1] = '\\'%' + filters[i][i2][i3][i4 + 1] + '%\\'';\n }\n else if (singleSubSubSubFilter === 'startswith') {\n filters[i][i2][i3][i4] = 'LIKE';\n singleSubSubSubFilter = 'LIKE';\n\n filters[i][i2][i3][i4 + 1] = '\\'' + filters[i][i2][i3][i4 + 1] + '%\\'';\n }\n else if (singleSubSubSubFilter === 'endswith') {\n filters[i][i2][i3][i4] = 'LIKE';\n singleSubSubSubFilter = 'LIKE';\n\n filters[i][i2][i3][i4 + 1] = '\\'%' + filters[i][i2][i3][i4 + 1] + '\\'';\n }\n else if (singleSubSubSubFilter === '=' || singleSubSubSubFilter === '<>' || singleSubSubSubFilter === '>' || singleSubSubSubFilter === '>=' || singleSubSubSubFilter === '<' || singleSubSubSubFilter === '<=') {\n if (!filters[i][i2][i3][i4 + 1])\n filters[i][i2][i3][i4 + 1] = 'NULL';\n else if (typeof filters[i][i2][i3][i4 + 1] === 'string') {\n filters[i][i2][i3][i4 + 1] = '\\'' + filters[i][i2][i3][i4 + 1] + '\\'';\n }\n }\n else if (singleSubSubSubFilter === '!') {\n filters[i][i2][i3][i4] = 'NOT';\n singleSubSubSubFilter = 'NOT';\n }\n\n sqlFilter += ' ' + singleSubSubSubFilter + ' ';\n }\n else if (singleSubSubSubFilterType.toString() === 'object' && singleSubSubSubFilterIsDate) {\n sqlFilter += ' \\'' + singleSubSubSubFilter.toISOString().split('T')[0] + '\\' ';\n }\n else if (singleSubSubSubFilterType.toString() === 'number') {\n sqlFilter += ' ' + singleSubSubSubFilter.toString() + ' ';\n }\n else if (singleSubSubSubFilterType.toString() === 'boolean') {\n if (singleSubSubSubFilter.toString() === 'true')\n sqlFilter += '1 ';\n else if (singleSubSubSubFilter.toString() === 'false' || singleSubSubSubFilter === null || singleSubSubSubFilter === undefined)\n sqlFilter += '0 ';\n }\n }\n\n sqlFilter += ')';\n }\n else if (singleSubSubFilterType.toString() === 'string') {\n if (singleSubSubFilter === 'contains') {\n filters[i][i2][i3] = 'LIKE';\n singleSubSubFilter = 'LIKE';\n\n filters[i][i2][i3 + 1] = '\\'%' + filters[i][i2][i3 + 1] + '%\\'';\n }\n else if (singleSubSubFilter === 'notcontains') {\n filters[i][i2][i3] = 'NOT LIKE';\n singleSubSubFilter = 'NOT LIKE';\n\n filters[i][i2][i3 + 1] = '\\'%' + filters[i][i2][i3 + 1] + '%\\'';\n }\n else if (singleSubSubFilter === 'startswith') {\n filters[i][i2][i3] = 'LIKE';\n singleSubSubFilter = 'LIKE';\n\n filters[i][i2][i3 + 1] = '\\'' + filters[i][i2][i3 + 1] + '%\\'';\n }\n else if (singleSubSubFilter === 'endswith') {\n filters[i][i2][i3] = 'LIKE';\n singleSubSubFilter = 'LIKE';\n\n filters[i][i2][i3 + 1] = '\\'%' + filters[i][i2][i3 + 1] + '\\'';\n }\n else if (singleSubSubFilter === '=' || singleSubSubFilter === '<>' || singleSubSubFilter === '>' || singleSubSubFilter === '>=' || singleSubSubFilter === '<' || singleSubSubFilter === '<=') {\n if (!filters[i][i2][i3 + 1])\n filters[i][i2][i3 + 1] = 'NULL';\n else if (typeof filters[i][i2][i3 + 1] === 'string') {\n filters[i][i2][i3 + 1] = '\\'' + filters[i][i2][i3 + 1] + '\\'';\n }\n }\n else if (singleSubSubFilter === '!') {\n filters[i][i2][i3] = 'NOT';\n singleSubSubFilter = 'NOT';\n }\n sqlFilter += ' ' + singleSubSubFilter + ' ';\n }\n else if (singleSubSubFilterType.toString() === 'object' && singleSubSubFilterIsDate) {\n sqlFilter += ' \\'' + singleSubSubFilter.toISOString().split('T')[0] + '\\' ';\n }\n else if (singleSubSubFilterType.toString() === 'number') {\n sqlFilter += ' ' + singleSubSubFilter.toString() + ' ';\n }\n else if (singleSubSubFilterType.toString() === 'boolean') {\n if (singleSubSubFilter.toString() === 'true')\n sqlFilter += '1 ';\n else if (singleSubSubFilter.toString() === 'false' || singleSubSubFilter === null || singleSubSubFilter === undefined)\n sqlFilter += '0 ';\n }\n }\n\n sqlFilter += ')';\n }\n else if (singleSubFilterType.toString() === 'string') {\n if (singleSubFilter === 'contains') {\n filters[i][i2] = 'LIKE';\n singleSubFilter = 'LIKE';\n\n filters[i][i2 + 1] = '\\'%' + filters[i][i2 + 1] + '%\\'';\n }\n else if (singleSubFilter === 'notcontains') {\n filters[i][i2] = 'NOT LIKE';\n singleSubFilter = 'NOT LIKE';\n\n filters[i][i2 + 1] = '\\'%' + filters[i][i2 + 1] + '%\\'';\n }\n else if (singleSubFilter === 'startswith') {\n filters[i][i2] = 'LIKE';\n singleSubFilter = 'LIKE';\n\n filters[i][i2 + 1] = '\\'' + filters[i][i2 + 1] + '%\\'';\n }\n else if (singleSubFilter === 'endswith') {\n filters[i][i2] = 'LIKE';\n singleSubFilter = 'LIKE';\n\n filters[i][i2 + 1] = '\\'%' + filters[i][i2 + 1] + '\\'';\n }\n else if (singleSubFilter === '=' || singleSubFilter === '<>' || singleSubFilter === '>' || singleSubFilter === '>=' || singleSubFilter === '<' || singleSubFilter === '<=') {\n if (!filters[i][i2 + 1])\n filters[i][i2 + 1] = 'NULL';\n else if (typeof filters[i][i2 + 1] === 'string') {\n filters[i][i2 + 1] = '\\'' + filters[i][i2 + 1] + '\\'';\n }\n }\n else if (singleSubFilter === '!') {\n filters[i][i2] = 'NOT';\n singleSubFilter = 'NOT';\n }\n sqlFilter += ' ' + singleSubFilter + ' ';\n }\n else if (singleSubFilterType.toString() === 'object' && singleSubFilterIsDate) {\n sqlFilter += ' \\'' + singleSubFilter.toISOString().split('T')[0] + '\\' ';\n }\n else if (singleSubFilterType.toString() === 'number') {\n sqlFilter += ' ' + singleSubFilter.toString() + ' ';\n }\n else if (singleSubFilterType.toString() === 'boolean') {\n if (singleSubFilter.toString() === 'true')\n sqlFilter += '1 ';\n else if (singleSubFilter.toString() === 'false' || singleSubFilter === null || singleSubFilter === undefined)\n sqlFilter += '0 ';\n }\n }\n\n sqlFilter += ')';\n }\n else if (singleFilterType.toString() === 'string') {\n if (singleFilter === 'contains') {\n filters[i] = 'LIKE';\n singleFilter = 'LIKE';\n\n filters[i + 1] = '\\'%' + filters[i + 1] + '%\\'';\n }\n else if (singleFilter === 'notcontains') {\n filters[i] = 'NOT LIKE';\n singleFilter = 'NOT LIKE';\n\n filters[i + 1] = '\\'%' + filters[i + 1] + '%\\'';\n }\n else if (singleFilter === 'startswith') {\n filters[i] = 'LIKE';\n singleFilter = 'LIKE';\n\n filters[i + 1] = '\\'' + filters[i + 1] + '%\\'';\n }\n else if (singleFilter === 'endswith') {\n filters[i] = 'LIKE';\n singleFilter = 'LIKE';\n\n filters[i + 1] = '\\'%' + filters[i + 1] + '\\'';\n }\n else if (singleFilter === '=' || singleFilter === '<>' || singleFilter === '>' || singleFilter === '>=' || singleFilter === '<' || singleFilter === '<=') {\n if (!filters[i + 1])\n filters[i + 1] = 'NULL';\n else if (typeof filters[i + 1] === 'string') {\n filters[i + 1] = '\\'' + filters[i + 1] + '\\'';\n }\n }\n else if (singleFilter === '!') {\n filters[i] = 'NOT';\n singleFilter = 'NOT';\n }\n sqlFilter += ' ' + singleFilter + ' ';\n }\n else if (singleFilterType.toString() === 'object' && singleFilterIsDate) {\n sqlFilter += ' \\'' + singleFilter.toISOString().split('T')[0] + '\\' ';\n }\n else if (singleFilterType.toString() === 'number') {\n sqlFilter += ' ' + singleFilter.toString() + ' ';\n }\n else if (singleFilterType.toString() === 'boolean') {\n if (singleFilter.toString() === 'true')\n sqlFilter += '1 ';\n else if (singleFilter.toString() === 'false' || singleFilter === null || singleFilter === undefined)\n sqlFilter += '0 ';\n }\n }\n\n sqlFilter += ')';\n }\n });\n\n async function getRecords() {\n if (sqlFilter === '(')\n sqlFilter = '';\n\n var records = await getInvTransferOrderRecords(sqlFilter);\n return {\n data: records,\n totalCount: records.length\n };\n }\n\n return getRecords()\n .then(function (result) {\n return result;\n })\n .catch(() => { throw new Error('Data Loading Error'); });\n }\n })\n }, [getInvTransferOrderRecords]);\n\n const storeArticulo = useMemo(() => {\n return new CustomStore({\n key: 'value',\n load(loadOptions) {\n let sqlFilter = '';\n [\n 'filter'\n ].forEach((i) => {\n sqlFilter = loadOptions.searchValue;\n });\n\n async function getRecords() {\n if (sqlFilter) {\n var records = await getArticulo(sqlFilter);\n\n return {\n data: records,\n totalCount: records.length\n };\n }\n else {\n return {\n data: [],\n totalCount: 0\n };\n }\n }\n\n return getRecords()\n .then(function (result) {\n return result;\n })\n .catch(() => { throw new Error('Data Loading Error'); });\n },\n byKey: (key) => {\n async function getRecords(key) {\n var records = await getArticulo(key);\n\n return records;\n }\n\n return getRecords(key);\n }\n })\n }, [getArticulo]);\n\n var conceptosDataSource = useMemo(() => {\n return new DataSource({\n paginate: true,\n store: {\n type: \"array\",\n key: \"Concepto\",\n data: conceptos\n }\n });\n }, [conceptos]);\n\n var almacenDataSource = useMemo(() => {\n return new DataSource({\n paginate: true,\n store: {\n type: \"array\",\n key: \"Almacen\",\n data: almacenes\n }\n });\n }, [almacenes]);\n\n var fechaEmisionEditorOptions = useMemo(() => {\n return {\n width: '100%',\n readOnly: true\n };\n }, []);\n\n var movimientoEditorOptions = useMemo(() => {\n return {\n width: '100%',\n readOnly: true\n };\n }, []);\n\n var observacionesDataSource = useMemo(() => {\n return new DataSource({\n paginate: true,\n store: {\n type: \"array\",\n key: \"Observacion\",\n data: observaciones\n }\n });\n }, [observaciones]);\n\n //Opciones Conceptos\n try {\n var conceptoEditorOptions = useMemo(() => {\n return {\n dataSource: conceptosDataSource,\n displayExpr: 'name',\n valueExpr: 'value',\n searchEnabled: true,\n value: (invTransferOrderPayload.header.Concepto ? invTransferOrderPayload.header.Concepto : ''),\n width: '100%'\n };\n }, [conceptosDataSource, invTransferOrderPayload.header.Concepto]);\n }\n catch (e) {\n var conceptoEditorOptions = {\n dataSource: conceptosDataSource,\n displayExpr: 'name',\n valueExpr: 'value',\n searchEnabled: true,\n value: '',\n width: '100%'\n };\n };\n\n //Opciones del campo Almacen\n try {\n var almacenEditorOptions = useMemo(() => {\n return {\n dataSource: almacenDataSource,\n displayExpr: 'name',\n valueExpr: 'value',\n searchEnabled: true,\n acceptCustomValue: !acceptCustomValues,\n value: (invTransferOrderPayload.header.Almacen ? invTransferOrderPayload.header.Almacen : ''),\n width: '100%'\n };\n }, [acceptCustomValues, almacenDataSource, invTransferOrderPayload.header.Almacen]);\n }\n catch (e) {\n var almacenEditorOptions = {\n dataSource: almacenDataSource,\n displayExpr: 'name',\n valueExpr: 'value',\n searchEnabled: true,\n acceptCustomValue: acceptCustomValues,\n value: '',\n width: '100%'\n };\n }\n\n //Opciones del campo Almacen Destino\n try {\n var almacenDestinoEditorOptions = useMemo(() => {\n return {\n dataSource: almacenDataSource,\n displayExpr: 'name',\n valueExpr: 'value',\n searchEnabled: true,\n acceptCustomValue: !acceptCustomValues,\n value: (invTransferOrderPayload.header.AlmacenDestino ? invTransferOrderPayload.header.AlmacenDestino : ''),\n width: '100%'\n };\n }, [acceptCustomValues, almacenDataSource, invTransferOrderPayload.header.AlmacenDestino]);\n }\n catch (e) {\n var almacenDestinoEditorOptions = {\n dataSource: almacenDataSource,\n displayExpr: 'name',\n valueExpr: 'value',\n searchEnabled: true,\n acceptCustomValue: acceptCustomValues,\n value: '',\n width: '100%'\n };\n }\n\n //Opciones del campo Observaciones\n try {\n var observacionesEditorOptions = useMemo(() => {\n return {\n dataSource: observacionesDataSource,\n displayExpr: 'name',\n valueExpr: 'value',\n searchEnabled: true,\n acceptCustomValue: !acceptCustomValues,\n value: (invTransferOrderPayload.header.Observaciones ? invTransferOrderPayload.header.Observaciones : ''),\n width: '100%'\n };\n }, [acceptCustomValues, observacionesDataSource, invTransferOrderPayload.header.Observaciones]);\n }\n catch (e) {\n var observacionesEditorOptions = {\n dataSource: observacionesDataSource,\n displayExpr: 'name',\n valueExpr: 'value',\n searchEnabled: true,\n acceptCustomValue: acceptCustomValues,\n value: '',\n width: '100%'\n };\n }\n\n var cantidadEditorOptions = useMemo(() => {\n return {\n format: '#'\n };\n }, []);\n\n var comentariosEditorOptions = useMemo(() => {\n return {\n };\n }, []);\n\n var autorizacionEditorOptions = useMemo(() => {\n return {\n width: '100%',\n readOnly: true\n };\n }, []);\n\n //Opciones del campo Articulo\n try {\n var articuloEditorOptions = useMemo(() => {\n return {\n dataSource: storeArticulo,\n displayExpr: 'name',\n valueExpr: 'value',\n searchEnabled: true,\n showClearButton: true,\n acceptCustomValue: false,\n disabled: false,\n // searchTimeout: 500,\n width: '100%',\n clearButtonText: 'Cerrar',\n noDataText: 'No se encontraron resultados'\n };\n }, [storeArticulo]);\n }\n catch (e) {\n var articuloEditorOptions = {\n dataSource: storeArticulo,\n displayExpr: 'name',\n valueExpr: 'value',\n searchEnabled: true,\n acceptCustomValue: false,\n width: '100%'\n };\n }\n\n async function uploadChunk(file, uploadInfo) {\n try {\n var responseS3 = await Storage.put(\"/inv/\" + id + \"/\" + file.name, uploadInfo.chunkBlob, {\n contentType: file.type,\n ACL: 'public-read'\n });\n\n //Obtenemos el nombre del bucket\n let bucketName = Storage._config.AWSS3.bucket;\n\n\n let apiName = 'AdminSC';\n let path = '/uploadattachment';\n\n let myInit = {\n headers: {\n 'Content-Type': 'application/json',\n Authorization: `${(await Auth.currentSession()).getAccessToken().getJwtToken()}`\n },\n body: {\n action: 'register',\n bucketName: bucketName,\n type: 'inv',\n id: id,\n Key: \"/inv/\" + id + \"/\" + file.name,\n fileName: file.name,\n username: JSON.parse(JSON.stringify(await Auth.currentAuthenticatedUser())).username\n }\n }\n\n var attachmentsResult = await API.post(apiName, path, myInit);\n\n //Obtenemos los attachments\n var attachmentsGet = await Storage.list(\"/inv/\" + id);\n var attachmentsAux = [];\n\n for (var attachmentsGetIndex in attachmentsGet) {\n var singleAttachmentsGet = attachmentsGet[attachmentsGetIndex];\n\n var singleAttachment = {\n name: singleAttachmentsGet.key.split('/').pop(),\n isDirectory: false,\n size: singleAttachmentsGet.size,\n };\n\n attachmentsAux.push(singleAttachment);\n }\n\n setAttachments(attachmentsAux);\n }\n catch (err) {\n console.log(\"Error uploading file:\", err);\n }\n };\n\n async function onAttachmentDeleting(e) {\n var fileName = e.item.key;\n\n //Primero borramos el archivo de S3\n var attachmentsDelete = await Storage.remove(\"/inv/\" + id + \"/\" + fileName);\n\n //Despues borramos el attachment en Intelisis\n let bucketName = Storage._config.AWSS3.bucket;\n\n let apiName = 'AdminSC';\n let path = '/uploadattachment';\n\n let myInit = {\n headers: {\n 'Content-Type': 'application/json',\n Authorization: `${(await Auth.currentSession()).getAccessToken().getJwtToken()}`\n },\n body: {\n action: 'delete',\n bucketName: bucketName,\n type: 'inv',\n id: id,\n Key: \"/inv/\" + id + \"/\" + fileName,\n fileName: fileName,\n username: JSON.parse(JSON.stringify(await Auth.currentAuthenticatedUser())).username\n }\n }\n\n var attachmentsResult = await API.post(apiName, path, myInit);\n\n //Finalmente sincronizamos el state\n var attachmentsGet = await Storage.list(\"/inv/\" + id);\n var attachmentsAux = [];\n\n for (var attachmentsGetIndex in attachmentsGet) {\n var singleAttachmentsGet = attachmentsGet[attachmentsGetIndex];\n\n var singleAttachment = {\n name: singleAttachmentsGet.key.split('/').pop(),\n isDirectory: false,\n size: singleAttachmentsGet.size,\n };\n\n attachmentsAux.push(singleAttachment);\n }\n\n setAttachments(attachmentsAux);\n };\n\n function downloadBlob(blob, filename) {\n const url = URL.createObjectURL(blob);\n const a = document.createElement('a');\n a.href = url;\n a.download = filename || 'download';\n const clickHandler = () => {\n setTimeout(() => {\n URL.revokeObjectURL(url);\n a.removeEventListener('click', clickHandler);\n }, 150);\n };\n\n a.addEventListener('click', clickHandler, false);\n\n a.click();\n\n return a;\n };\n\n async function onItemDownloading(e) {\n e.cancel = true;\n\n const downloadFileResponse = await Storage.get(\"/inv/\" + id + \"/\" + e.item.name, { download: true });\n\n downloadBlob(downloadFileResponse.Body, e.item.name);\n };\n\n function openBlob(blob, filename) {\n const url = URL.createObjectURL(blob);\n\n window.open(url, \"_blank\");\n };\n\n async function onAttachmentOpen(e) {\n const downloadFileResponse = await Storage.get(\"/inv/\" + id + \"/\" + e.file.name, { download: true });\n\n openBlob(downloadFileResponse.Body, e.file.name);\n };\n\n const getinvTransferOrderPayload = React.useCallback(async (ID) => {\n try {\n let apiName = 'AdminSC';\n let path = '/procesainvsoltraspaso';\n\n let myInit = {\n headers: {\n 'Content-Type': 'application/json',\n Authorization: `${(await Auth.currentSession()).getAccessToken().getJwtToken()}`\n },\n queryStringParameters: {\n ID: ID,\n action: 'payload',\n username: JSON.parse(JSON.stringify(await Auth.currentAuthenticatedUser())).username\n }\n };\n\n var payloadGet = await API.get(apiName, path, myInit);\n\n setInvTransferOrderPayload(payloadGet);\n\n //Obtenemos los attachments\n var attachmentsGet = await Storage.list(\"/inv/\" + ID);\n var attachmentsAux = [];\n\n for (var attachmentsGetIndex in attachmentsGet) {\n var singleAttachmentsGet = attachmentsGet[attachmentsGetIndex];\n\n var singleAttachment = {\n name: singleAttachmentsGet.key.split('/').pop(),\n isDirectory: false,\n size: singleAttachmentsGet.size,\n };\n\n attachmentsAux.push(singleAttachment);\n }\n\n setAttachments(attachmentsAux);\n }\n catch (e) {\n if (e === 'No current user') {\n history.push('/');\n\n window.location.reload();\n }\n }\n\n return payloadGet;\n\n }, [history]);\n\n function editInvTransferOrder(data) {\n return (\n <Link to={`/InvTransferOrder/${data.data.ID}`}>\n <button class=\"bg-blue-500 hover:bg-blue-700 text-white py-1 px-3 rounded\" onClick={() => editButton(data.data.ID)}><FontAwesomeIcon icon={permissionLevel === 'Editar' ? faPencilAlt : faGlasses} /> {permissionLevel === 'Editar' ? 'Editar' : 'Ver'}</button>\n </Link>\n )\n }\n\n function openRelatedRecord(redirect) {\n if (redirect) {\n var baseUrl = window.location.href.split('#/')[0];\n\n redirect = baseUrl + '#' + redirect;\n\n window.open(redirect, \"_blank\");\n }\n };\n\n function openRelatedRecordButton(data) {\n return (\n <button onClick={() => openRelatedRecord(data.data.redirect)}><FontAwesomeIcon icon={faArrowUpRightFromSquare} /></button>\n )\n };\n\n function estatusRelatedRecords(data) {\n return (\n <TransactionStatus {...props} Estatus={data.data.Estatus} />\n )\n };\n\n function blobToBase64(blob) {\n return new Promise((resolve, _) => {\n const reader = new FileReader();\n reader.onloadend = () => resolve(reader.result);\n reader.readAsDataURL(blob);\n });\n };\n\n const newButton = React.useCallback(async () => {\n try {\n let apiName = 'AdminSC';\n let path = '/procesainvsoltraspaso';\n\n let myInit = {\n headers: {\n 'Content-Type': 'application/json',\n Authorization: `${(await Auth.currentSession()).getAccessToken().getJwtToken()}`\n },\n queryStringParameters: {\n action: 'new',\n username: JSON.parse(JSON.stringify(await Auth.currentAuthenticatedUser())).username,\n usuario: props.usuario,\n sucursal: props.sucursal\n }\n };\n\n var payloadNew = await API.get(apiName, path, myInit);\n\n setInvTransferOrderPayload(payloadNew);\n\n setAttachments([]);\n\n setIsDetail(true);\n setId(undefined);\n\n setActivateUpdateForm(true);\n setAcceptCustomValue(false);\n setActivateSaveButton(true);\n setActivateDeleteButton(false);\n setActivateCancelButton(false);\n setActivateConfirmButton(false);\n setActivateApproveButton(false);\n setActivatePDFButton(false);\n setActivateAttachments(false);\n setActivateUpdateGrid(true);\n\n setVisibleLoadPanel(false);\n setActivateSalidaTraspaso(false);\n setActivateReciboTraspaso(false);\n }\n catch (e) {\n if (e === 'No current user') {\n history.push('/');\n\n window.location.reload();\n }\n }\n }, [history, props.sucursal, props.usuario]);\n\n const editButton = React.useCallback(async (ID) => {\n try {\n if (!window.event.metaKey && !window.event.ctrlKey) {\n setVisibleLoadPanel(true);\n\n setIsDetail(true);\n setId(ID);\n\n var payload = await getinvTransferOrderPayload(ID);\n\n if (permissionLevel === 'Editar') {\n var EstatusSalida = payload.header.EstatusSalida;\n var EstatusRecibo = payload.header.EstatusRecibo;\n\n if (payload.header.Estatus === 'Sin Afectar') {\n setActivateUpdateForm(true);\n setAcceptCustomValue(false);\n setActivateSaveButton(true);\n setActivateDeleteButton(true);\n setActivateCancelButton(false);\n setActivatePDFButton(true);\n setActivateAttachments(true);\n setActivateUpdateGrid(true);\n setActivateConfirmButton(true);\n setActivateApproveButton(false);\n setActivateSalidaTraspaso(false);\n setActivateReciboTraspaso(false);\n }\n else if (payload.header.Estatus === 'Pendiente') {\n setActivateUpdateForm(false);\n setAcceptCustomValue(true);\n setActivateSaveButton(false);\n setActivateDeleteButton(false);\n setActivateCancelButton(true);\n setActivatePDFButton(true);\n setActivateAttachments(true);\n setActivateUpdateGrid(false);\n setActivateConfirmButton(false);\n\n if (payload.header.RequiereAutorizacion === true && payload.header.Autorizado === false && approveInvTransferOrder)\n setActivateApproveButton(true);\n else\n setActivateApproveButton(false);\n\n if ((EstatusSalida === 'Pendiente') && invItemFulfillment && invItemFulfillmentLevel === 'Editar') {\n setActivateSalidaTraspaso(true);\n }\n else {\n setActivateSalidaTraspaso(false);\n }\n\n if ((EstatusRecibo === 'Pendiente') && invItemReceipt && invItemReceiptLevel === 'Editar') {\n setActivateReciboTraspaso(true);\n }\n else {\n setActivateReciboTraspaso(false);\n }\n }\n else if (payload.header.Estatus === 'Concluido') {\n setActivateUpdateForm(false);\n setAcceptCustomValue(true);\n setActivateSaveButton(false);\n setActivateDeleteButton(false);\n setActivateCancelButton(true);\n setActivateConfirmButton(false);\n setActivatePDFButton(true);\n setActivateAttachments(false);\n setActivateUpdateGrid(false);\n setActivateApproveButton(false);\n\n if ((EstatusSalida === 'Pendiente') && invItemFulfillment && invItemFulfillmentLevel === 'Editar') {\n setActivateSalidaTraspaso(true);\n }\n else {\n setActivateSalidaTraspaso(false);\n }\n\n if ((EstatusSalida === 'Pendiente') && invItemReceipt && invItemReceiptLevel === 'Editar') {\n setActivateReciboTraspaso(true);\n }\n else {\n setActivateReciboTraspaso(false);\n }\n }\n else if (payload.header.Estatus === 'Cancelado') {\n setActivateUpdateForm(false);\n setAcceptCustomValue(true);\n setActivateSaveButton(false);\n setActivateDeleteButton(false);\n setActivateCancelButton(false);\n setActivateConfirmButton(false);\n setActivatePDFButton(true);\n setActivateAttachments(false);\n setActivateUpdateGrid(false);\n setActivateApproveButton(false);\n setActivateSalidaTraspaso(false);\n setActivateReciboTraspaso(false);\n }\n }\n else if (permissionLevel === 'Ver') {\n setActivateUpdateForm(false);\n setAcceptCustomValue(true);\n setActivateSaveButton(false);\n setActivateDeleteButton(false);\n setActivateCancelButton(false);\n setActivateConfirmButton(false);\n setActivatePDFButton(true);\n setActivateAttachments(false);\n setActivateUpdateGrid(false);\n setActivateApproveButton(false);\n setActivateSalidaTraspaso(false);\n setActivateReciboTraspaso(false);\n }\n\n setVisibleLoadPanel(false);\n }\n }\n catch (e) {\n setVisibleLoadPanel(false);\n }\n }, [getinvTransferOrderPayload, permissionLevel, approveInvTransferOrder, invItemFulfillment, invItemFulfillmentLevel, invItemReceipt, invItemReceiptLevel]);\n\n const deleteButton = React.useCallback(async () => {\n try {\n if (!window.confirm('¿Desea eliminar la Solicitud Traspaso?'))\n return;\n\n setVisibleLoadPanel(true);\n\n var ID = invTransferOrderPayload.header.ID;\n\n if (!ID) {\n //Vamos al tablero de control\n history.push('/InvTransferOrder');\n return;\n }\n\n let apiName = 'AdminSC';\n let path = '/procesainvsoltraspaso';\n\n let myInit = {\n headers: {\n 'Content-Type': 'application/json',\n Authorization: `${(await Auth.currentSession()).getAccessToken().getJwtToken()}`\n },\n body: {\n ID: ID,\n payload: invTransferOrderPayload,\n action: 'delete',\n username: JSON.parse(JSON.stringify(await Auth.currentAuthenticatedUser())).username,\n usuario: props.usuario,\n sucursal: props.sucursal\n }\n }\n\n var payloadPost = await API.post(apiName, path, myInit);\n\n if (payloadPost.ok === 'true') {\n setVisibleLoadPanel(false);\n\n setVisibleToast(true);\n setMessageToast('Solicitud Traspaso eliminada con éxito');\n setTypeToast('success')\n\n setIsDetail(false);\n\n //Vamos al tablero de control\n history.push('/InvTransferOrder');\n }\n else if (payloadPost.ok === 'false') {\n setVisibleLoadPanel(false);\n\n setVisibleToast(true);\n setMessageToast(payloadPost.message);\n setTypeToast('error')\n }\n }\n catch (e) {\n setVisibleLoadPanel(false);\n\n if (e === 'No current user') {\n history.push('/');\n\n window.location.reload();\n }\n }\n }, [history, invTransferOrderPayload, props.sucursal, props.usuario]);\n\n async function cancelEditButton() {\n setIsDetail(false);\n };\n\n const saveButton = React.useCallback(async () => {\n if (formDatosGeneralesRef.current) {\n var formDatosGenerales = formDatosGeneralesRef.current.instance();\n var isValid = formDatosGenerales.validate();\n\n if (!isValid.isValid) {\n setVisibleToast(true);\n setMessageToast(isValid.brokenRules[0].message);\n setTypeToast('error');\n return;\n }\n }\n\n try {\n setVisibleLoadPanel(true);\n\n var ID = invTransferOrderPayload.header.ID;\n\n //Primero guardamos los cambios del grid Articulos\n if (gridArticulosRef.current) {\n var gridArticulos = gridArticulosRef.current.instance();\n\n gridArticulos.saveEditData();\n }\n\n //Despues enviamos todo al backend\n let apiName = 'AdminSC';\n let path = '/procesainvsoltraspaso';\n\n let myInit = {\n headers: {\n 'Content-Type': 'application/json',\n Authorization: `${(await Auth.currentSession()).getAccessToken().getJwtToken()}`\n },\n body: {\n ID: ID,\n payload: invTransferOrderPayload,\n action: 'saveChanges',\n username: JSON.parse(JSON.stringify(await Auth.currentAuthenticatedUser())).username,\n usuario: props.usuario,\n sucursal: props.sucursal,\n s3Bucket: Storage._config.AWSS3.bucket\n }\n }\n\n var payloadPost = await API.post(apiName, path, myInit);\n\n if (payloadPost.ok === 'true') {\n if (!ID) {\n setVisibleToast(true);\n setMessageToast('Se creó la Solicitud Traspaso con éxito');\n setTypeToast('success')\n\n ID = payloadPost.newID;\n\n editButton(ID);\n\n history.push('/InvTransferOrder/' + ID.toString());\n }\n else {\n setVisibleToast(true);\n setMessageToast('Se actualizó la Solicitud Traspaso con éxito');\n setTypeToast('success')\n }\n }\n else if (payloadPost.ok === 'false') {\n setVisibleToast(true);\n setMessageToast(payloadPost.message);\n setTypeToast('error')\n }\n\n editButton(ID);\n\n setVisibleLoadPanel(false);\n }\n catch (e) {\n setVisibleLoadPanel(false);\n\n if (e === 'No current user') {\n history.push('/');\n\n window.location.reload();\n }\n }\n }, [editButton, formDatosGeneralesRef, gridArticulosRef, history, invTransferOrderPayload, props.sucursal, props.usuario]);\n\n const itemFulfillmentButton = React.useCallback(async () => {\n }, []);\n\n const itemReceiptButton = React.useCallback(async () => {\n }, []);\n\n async function voidButton() {\n try {\n if (!window.confirm('¿Desea cancelar la Solicitud Traspaso?'))\n return;\n\n setVisibleLoadPanel(true);\n\n var ID = invTransferOrderPayload.header.ID;\n\n //Guardamos los cambios del grid\n if (gridArticulosRef.current) {\n var gridArticulos = gridArticulosRef.current.instance();\n\n gridArticulos.saveEditData();\n }\n\n //Despues enviamos todo al backend\n let apiName = 'AdminSC';\n let path = '/procesainvsoltraspaso';\n\n let myInit = {\n headers: {\n 'Content-Type': 'application/json',\n Authorization: `${(await Auth.currentSession()).getAccessToken().getJwtToken()}`\n },\n body: {\n ID: ID,\n payload: invTransferOrderPayload,\n action: 'void',\n username: JSON.parse(JSON.stringify(await Auth.currentAuthenticatedUser())).username,\n usuario: props.usuario,\n sucursal: props.sucursal\n }\n }\n\n var payloadPost = await API.post(apiName, path, myInit);\n\n if (payloadPost.ok === 'true') {\n setVisibleToast(true);\n setMessageToast('Se canceló la Solicitud Traspaso');\n setTypeToast('success')\n }\n else if (payloadPost.ok === 'false') {\n setVisibleToast(true);\n setMessageToast(payloadPost.message);\n setTypeToast('error')\n }\n\n editButton(ID);\n\n setVisibleLoadPanel(false);\n }\n catch (e) {\n setVisibleLoadPanel(false);\n\n if (e === 'No current user') {\n history.push('/');\n\n window.location.reload();\n }\n }\n };\n\n const confirmButton = React.useCallback(async () => {\n if (formDatosGeneralesRef.current) {\n var formDatosGenerales = formDatosGeneralesRef.current.instance();\n var isValid = formDatosGenerales.validate();\n\n if (!isValid.isValid) {\n setVisibleToast(true);\n setMessageToast(isValid.brokenRules[0].message);\n setTypeToast('error');\n return;\n }\n }\n\n try {\n setVisibleLoadPanel(true);\n\n var ID = invTransferOrderPayload.header.ID;\n\n //Primero guardamos los cambios del grid Articulos\n if (gridArticulosRef.current) {\n var gridArticulos = gridArticulosRef.current.instance();\n\n gridArticulos.saveEditData();\n }\n\n var lambdaFunction;\n\n if (window.location.href.indexOf('sandbox.') >= 0 || window.location.href.indexOf('localhost') >= 0)\n lambdaFunction = 'procesaInvSolTraspaso-dev';\n else if (window.location.href.indexOf('sandboxtampico.') >= 0)\n lambdaFunction = 'procesaInvSolTraspaso-devleona';\n else if (window.location.href.indexOf('tampico.') >= 0)\n lambdaFunction = 'procesaInvSolTraspaso-prodleona';\n else\n lambdaFunction = 'procesaInvSolTraspaso-prod';\n\n Auth.currentCredentials()\n .then(credentials => {\n const lambda = new Lambda({\n credentials: Auth.essentialCredentials(credentials),\n region: 'us-east-1'\n });\n\n var params = {\n FunctionName: lambdaFunction,\n Payload: JSON.stringify({\n ID: ID,\n payload: invTransferOrderPayload,\n action: 'apply',\n username: props.username,\n usuario: props.usuario,\n sucursal: props.sucursal,\n s3Bucket: Storage._config.AWSS3.bucket\n })\n };\n\n lambda.invoke(params, function (err, data) {\n if (err) {\n setVisibleLoadPanel(false);\n\n setVisibleToast(true);\n setMessageToast(err.message);\n setTypeToast('error');\n }\n else {\n var payloadPost = JSON.parse(JSON.parse(data.Payload).body);\n\n if (payloadPost.ok === 'true') {\n setVisibleToast(true);\n setMessageToast('Se afectó la Solicitud Traspaso con éxito');\n setTypeToast('success')\n }\n else if (payloadPost.ok === 'false') {\n setVisibleToast(true);\n setMessageToast(payloadPost.message);\n setTypeToast('error')\n }\n\n editButton(ID);\n\n setVisibleLoadPanel(false);\n }\n });\n })\n }\n catch (e) {\n setVisibleLoadPanel(false);\n\n if (e === 'No current user') {\n history.push('/');\n\n window.location.reload();\n }\n }\n }, [editButton, formDatosGeneralesRef, gridArticulosRef, history, invTransferOrderPayload, props.sucursal, props.username, props.usuario]);\n\n const approveButton = React.useCallback(async () => {\n if (formDatosGeneralesRef.current) {\n var formDatosGenerales = formDatosGeneralesRef.current.instance();\n var isValid = formDatosGenerales.validate();\n\n if (!isValid.isValid) {\n setVisibleToast(true);\n setMessageToast(isValid.brokenRules[0].message);\n setTypeToast('error');\n return;\n }\n }\n\n try {\n setVisibleLoadPanel(true);\n\n var ID = invTransferOrderPayload.header.ID;\n\n //Primero guardamos los cambios del grid Articulos\n if (gridArticulosRef.current) {\n var gridArticulos = gridArticulosRef.current.instance();\n\n gridArticulos.saveEditData();\n }\n\n saveButton();\n\n var lambdaFunction;\n\n if (window.location.href.indexOf('sandbox.') >= 0 || window.location.href.indexOf('localhost') >= 0)\n lambdaFunction = 'procesaInvSolTraspaso-dev';\n else if (window.location.href.indexOf('sandboxtampico.') >= 0)\n lambdaFunction = 'procesaInvSolTraspaso-devleona';\n else if (window.location.href.indexOf('tampico.') >= 0)\n lambdaFunction = 'procesaInvSolTraspaso-prodleona';\n else\n lambdaFunction = 'procesaInvSolTraspaso-prod';\n\n Auth.currentCredentials()\n .then(credentials => {\n const lambda = new Lambda({\n credentials: Auth.essentialCredentials(credentials),\n region: 'us-east-1'\n });\n\n var params = {\n FunctionName: lambdaFunction,\n Payload: JSON.stringify({\n ID: ID,\n payload: invTransferOrderPayload,\n action: 'approve',\n username: props.username,\n usuario: props.usuario,\n sucursal: props.sucursal,\n s3Bucket: Storage._config.AWSS3.bucket\n })\n };\n\n lambda.invoke(params, function (err, data) {\n if (err) {\n setVisibleLoadPanel(false);\n\n setVisibleToast(true);\n setMessageToast(err.message);\n setTypeToast('error');\n }\n else {\n var payloadPost = JSON.parse(JSON.parse(data.Payload).body);\n\n if (payloadPost.ok === 'true') {\n setVisibleToast(true);\n setMessageToast('Solicitud Traspaso autorizada');\n setTypeToast('success')\n }\n else if (payloadPost.ok === 'false') {\n setVisibleToast(true);\n setMessageToast(payloadPost.message);\n setTypeToast('error')\n }\n\n editButton(ID);\n\n setVisibleLoadPanel(false);\n }\n });\n })\n }\n catch (e) {\n setVisibleLoadPanel(false);\n\n if (e === 'No current user') {\n history.push('/');\n\n window.location.reload();\n }\n }\n }, [editButton, formDatosGeneralesRef, gridArticulosRef, history, invTransferOrderPayload, props.sucursal, props.username, props.usuario, saveButton]);\n\n function printButton() {\n var baseUrl = window.location.href.split('/')[0];\n\n window.open(baseUrl + \"/#/PdfRender?type=invtransferorder&id=\" + id, \"_blank\");\n };\n\n function refreshButton() {\n if (gridTableroRef.current) {\n var gridTablero = gridTableroRef.current.instance();\n\n gridTablero.refresh();\n }\n };\n\n useEffect(() => {\n window.addEventListener('popstate', (e) => {\n var hash;\n\n try {\n hash = e.target.location.hash;\n }\n catch (e) {\n hash = '';\n }\n\n if (hash === '#/InvTransferOrder') {\n history.push('/InvTransferOrder');\n\n window.location.reload();\n }\n });\n\n async function initialize() {\n setVisibleLoadPanel(true);\n\n await getConceptos();\n\n await getAlmacenes();\n\n await getObservaciones();\n\n setVisibleLoadPanel(false);\n }\n\n initialize();\n\n //En caso de solicitar un ID especifico, redireccionamos a ese ID\n if (!props.match.isExact) {\n var urlID = props.location.pathname.replace('/InvTransferOrder/', '');\n\n if (urlID === 'undefined')\n urlID = undefined;\n\n if (urlID)\n editButton(urlID);\n else\n history.push('/InvTransferOrder')\n }\n\n // eslint-disable-next-line\n }, []);\n\n function onHidingToast() {\n setVisibleToast(false);\n }\n\n const onEditorArticulosPreparing = React.useCallback((e) => {\n if (e.parentType === \"dataRow\") {\n if (e.dataField === \"Articulo\") {\n\n e.editorOptions.displayExpr = \"name\";\n e.editorOptions.valueExpr = \"value\";\n e.editorOptions.searchEnabled = true;\n e.editorOptions.showClearButton = true;\n e.editorOptions.acceptCustomValue = false;\n e.editorOptions.clearButtonText = 'Cerrar';\n e.editorOptions.noDataText = 'No se encontraron resultados';\n\n const defaultValueChangeHandler = e.editorOptions.onValueChanged;\n\n e.editorOptions.onValueChanged = function (ev) {\n let selectedItem = ev.component.option(\"selectedItem\");\n e.setValue(selectedItem);\n };\n }\n if (e.dataField === \"Cantidad\") {\n e.editorOptions.min = 1;\n }\n }\n }, []);\n\n const setCellValueArticulo = React.useCallback((rowData, value) => {\n rowData.Articulo = value.value;\n rowData.ArtDescripcion = value.name;\n rowData.Cantidad = 1;\n }, []);\n\n const setCellValueCantidad = React.useCallback((rowData, value, currentRowData) => {\n var Cantidad = parseFloat(value);\n\n rowData.Cantidad = parseFloat(Cantidad);\n }, []);\n\n function onExporting(e) {\n const workbook = new Workbook();\n const worksheet = workbook.addWorksheet('Datos');\n\n exportDataGrid({\n component: e.component,\n worksheet,\n autoFilterEnabled: true,\n }).then(() => {\n workbook.xlsx.writeBuffer().then((buffer) => {\n saveAs(new Blob([buffer], { type: 'application/octet-stream' }), 'Datos.xlsx');\n });\n });\n e.cancel = true;\n };\n\n return (\n <div>\n {isDetail === false ? (\n <div class=\"bg-gray-200 m-2\">\n <h1 class=\"font-sans inline-block text-xl font-bold text-gray-700 leading-8 align-top mb-1\"><FontAwesomeIcon icon={faList} size=\"lg\" /> Solicitudes de Traspaso</h1>\n </div>\n ) :\n (\n <div class=\"bg-gray-200 m-2\">\n <h1 class=\"font-sans inline-block text-xl font-bold text-gray-700 leading-8 align-top mb-1\"><FontAwesomeIcon icon={faPalletBoxes} size=\"xl\" /> {(invTransferOrderPayload.header ? invTransferOrderPayload.header.Movimiento : 'Solicitud Traspaso')}</h1>\n <TransactionStatus {...props} Estatus={invTransferOrderPayload.header.Estatus} />\n </div>\n )}\n\n <LoadPanel\n shadingColor=\"rgba(0,0,0,0.4)\"\n visible={visibleLoadPanel}\n showIndicator={true}\n message=\"Por favor espere...\"\n shading={true}\n showPane={true}\n hideOnOutsideClick={false}\n />\n\n <Toast\n visible={visibleToast}\n message={messageToast}\n type={typeToast}\n onHiding={onHidingToast}\n displayTime={5000}\n width={'auto'}\n position={{\n my: 'top center',\n at: 'top center',\n of: window,\n offset: '0 130'\n }}\n />\n\n <div class=\"bg-gray-200 m-2\">\n {isDetail === false ? (\n <div class=\"bg-white p-3 shadow-xl\">\n {permissionLevel === 'Editar' ?\n (\n <div>\n <Link to=\"/InvTransferOrder/undefined\">\n <button class=\"mb-2 bg-green-500 hover:bg-green-700 text-white font-bold py-2 px-4 rounded\" onClick={() => newButton()}><FontAwesomeIcon icon={faFileAlt} /> Nueva Solicitud Traspaso</button>\n </Link>\n\n <button onClick={refreshButton} type=\"submit\" class=\"ml-4 mb-4 bg-blue-500 hover:bg-blue-700 text-white font-bold py-2 px-4 rounded\">\n <FontAwesomeIcon icon={faArrowsRotate} /> Actualizar\n </button>\n </div>\n ) :\n (\n <div>\n <button onClick={refreshButton} type=\"submit\" class=\"mb-4 bg-blue-500 hover:bg-blue-700 text-white font-bold py-2 px-4 rounded\">\n <FontAwesomeIcon icon={faArrowsRotate} /> Actualizar\n </button>\n </div>\n )}\n\n <div className=\"options mb-2\">\n <div className=\"option\">\n <CheckBox text=\"Expandir todos los grupos\"\n value={autoExpandAll}\n onValueChanged={onAutoExpandAllChanged}></CheckBox>\n </div>\n </div>\n <DataGrid\n height={800}\n id=\"gridContainer\"\n columnsAutoWidth={true}\n filterBuilder={filterBuilder}\n dataSource={store}\n defaultFilterValue={filterValue}\n allowColumnReordering={true}\n allowColumnResizing={true}\n columnResizingMode={\"widget\"}\n showBorders={true}\n rowAlternationEnabled={true}\n showRowLines={true}\n showColumnLines={true}\n remoteOperations={{ filtering: true }}\n ref={gridTableroRef}\n onExporting={onExporting}\n >\n <Scrolling rowRenderingMode='virtual'></Scrolling>\n <Paging defaultPageSize={10} />\n <Pager\n visible={true}\n allowedPageSizes={allowedPageSizes}\n displayMode='compact'\n showPageSizeSelector={true}\n showInfo={true}\n showNavigationButtons={true}\n />\n <FilterRow visible={true} />\n <FilterPanel visible={true} />\n <FilterBuilderPopup position={filterBuilderPopupPosition} />\n\n <HeaderFilter visible={true} />\n\n <GroupPanel visible={true} />\n <SearchPanel visible={true} />\n <ColumnChooser\n enabled={true}\n mode='select'\n >\n <ColumnChooserSearch\n enabled={true}\n />\n\n <ColumnChooserSelection\n allowSelectAll={true}\n selectByClick={true}\n recursive={true}\n />\n </ColumnChooser>\n <Grouping autoExpandAll={autoExpandAll} />\n <StateStoring enabled={true} type=\"localStorage\" storageKey=\"gridContainerInvTransferOrder\" />\n <Export enabled={true} />\n\n <Column caption=\"\" alignment=\"center\" width={100} cellRender={editInvTransferOrder} />\n\n <Column dataField=\"MovID\" dataType=\"string\" width={110} caption=\"Folio\" />\n <Column dataField=\"FechaEmision\" caption=\"Fecha Emisión\" dataType=\"date\" width={130} />\n <Column dataField=\"Estatus\" dataType=\"string\" width={120} />\n\n <Column dataField=\"ID\" dataType=\"number\" width={150} visible={false} />\n <Column dataField=\"Mov\" dataType=\"string\" width={190} caption=\"Tipo Movimiento\" visible={false} />\n <Column dataField=\"Movimiento\" dataType=\"string\" width={190} visible={false} />\n\n <Column dataField=\"Almacen\" dataType=\"string\" width={190} caption=\"Almacén\" visible={true} />\n <Column dataField=\"NombreAlmacen\" dataType=\"string\" width={190} caption=\"Nombre Almacén\" visible={false} />\n\n <Column dataField=\"AlmacenDestino\" dataType=\"string\" width={190} caption=\"Almacén\" visible={true} />\n <Column dataField=\"NombreAlmacenDestino\" dataType=\"string\" width={190} caption=\"Nombre Almacén\" visible={false} />\n\n <Column dataField=\"Sucursal\" dataType=\"number\" width={150} visible={false} />\n <Column dataField=\"NombreSucursal\" dataType=\"string\" width={190} visible={false} />\n <Column dataField=\"Usuario\" dataType=\"string\" width={190} visible={false} />\n <Column dataField=\"NombreUsuario\" dataType=\"string\" width={190} visible={false} />\n\n <Column dataField=\"RequiereAutorizacion\" dataType=\"boolean\" caption=\"Requiere Autorización\" width={200} visible={false} />\n <Column dataField=\"Autorizado\" dataType=\"boolean\" width={150} visible={false} />\n <Column dataField=\"Autoriza\" caption=\"Autorizado Por\" dataType=\"string\" width={200} visible={false} />\n <Column dataField=\"FechaAutorizacion\" caption=\"Fecha Autorización\" dataType=\"datetime\" width={200} visible={false} />\n\n <Column dataField=\"Concepto\" dataType=\"string\" width={190} visible={false} />\n <Column dataField=\"Observaciones\" dataType=\"string\" width={190} visible={false} />\n <Column dataField=\"Situacion\" caption=\"Situación\" dataType=\"string\" width={190} visible={false} />\n <Column dataField=\"SituacionFecha\" caption=\"Fecha Situación\" dataType=\"date\" width={190} visible={false} />\n <Column dataField=\"SituacionUsuario\" caption=\"Usuario Situación\" dataType=\"string\" width={190} visible={false} />\n <Column dataField=\"SituacionNota\" caption=\"Nota Situación\" dataType=\"string\" width={190} visible={false} />\n <Column dataField=\"Comentarios\" dataType=\"string\" width={190} visible={false} />\n <Column dataField=\"Plaza\" dataType=\"string\" width={190} visible={false} />\n </DataGrid>\n </div>\n ) : (<div />)}\n <Route exact path=\"/InvTransferOrder/:ID\" render={({ match }) => {\n return (\n <div class=\"bg-gray-200\">\n {isDetail.toString() === 'true' ?\n (\n <div>\n <Link to=\"/InvTransferOrder\">\n <button onClick={cancelEditButton} type=\"submit\" class=\"mb-4 bg-red-500 hover:bg-red-700 text-white font-bold py-2 px-4 rounded\">\n <FontAwesomeIcon icon={faArrowRotateLeft} /> Regresar\n </button>\n </Link>\n\n {activateSaveButton.toString() === 'true' ?\n (\n <button onClick={saveButton} type=\"submit\" class=\"ml-4 mb-4 bg-blue-500 hover:bg-blue-700 text-white font-bold py-2 px-4 rounded\">\n <FontAwesomeIcon icon={faSave} /> Guardar Cambios\n </button>\n ) : (\n <div class=\"inline-block\"></div>\n )}\n\n {activateSalidaTraspaso.toString() === 'true' ?\n (\n <button onClick={itemFulfillmentButton} type=\"submit\" class=\"ml-4 mb-4 bg-blue-500 hover:bg-blue-700 text-white font-bold py-2 px-4 rounded\">\n <FontAwesomeIcon icon={faLeft} /> Salida Traspaso\n </button>\n ) : (\n <div class=\"inline-block\"></div>\n )}\n\n {activateReciboTraspaso.toString() === 'true' ?\n (\n <button onClick={itemReceiptButton} type=\"submit\" class=\"ml-4 mb-4 bg-blue-500 hover:bg-blue-700 text-white font-bold py-2 px-4 rounded\">\n <FontAwesomeIcon icon={faRight} /> Recibo Traspaso\n </button>\n ) : (\n <div class=\"inline-block\"></div>\n )}\n\n {activateConfirmButton.toString() === 'true' && id ?\n (\n <button onClick={confirmButton} type=\"submit\" class=\"ml-4 mb-4 bg-green-500 hover:bg-green-700 text-white font-bold py-2 px-4 rounded\">\n <FontAwesomeIcon icon={faPlay} /> Afectar\n </button>\n ) : (\n <div class=\"inline-block\"></div>\n )}\n\n {activateApproveButton.toString() === 'true' && id ?\n (\n <button onClick={approveButton} type=\"submit\" class=\"ml-4 mb-4 bg-green-500 hover:bg-green-700 text-white font-bold py-2 px-4 rounded\">\n <FontAwesomeIcon icon={faThumbsUp} /> Autorizar\n </button>\n ) : (\n <div class=\"inline-block\"></div>\n )}\n\n {activateDeleteButton.toString() === 'true' && id ?\n (\n <button onClick={deleteButton} type=\"submit\" class=\"ml-4 mb-4 bg-red-500 hover:bg-red-700 text-white font-bold py-2 px-4 rounded\">\n <FontAwesomeIcon icon={faTrash} /> Eliminar\n </button>\n ) :\n (\n <div class=\"inline-block\"></div>\n )}\n\n {activateCancelButton.toString() === 'true' && id ?\n (\n <button onClick={voidButton} type=\"submit\" class=\"ml-4 mb-4 bg-red-500 hover:bg-red-700 text-white font-bold py-2 px-4 rounded\">\n <FontAwesomeIcon icon={faWindowClose} /> Cancelar\n </button>\n ) :\n (\n <div class=\"inline-block\"></div>\n )}\n\n {activatePDFButton.toString() === 'true' && id ?\n (\n <button onClick={printButton} type=\"submit\" class=\"ml-4 mb-4 bg-gray-500 hover:bg-gray-700 text-white font-bold py-2 px-4 rounded\">\n <FontAwesomeIcon icon={faFilePdf} /> PDF\n </button>\n ) :\n (\n <div class=\"inline-block\"></div>\n )}\n\n <div class=\"bg-white p-4 shadow-xl\">\n <Form\n id=\"formTransaccion\"\n labelMode={'outside'}\n formData={invTransferOrderPayload}\n readOnly={!activateUpdateForm}\n showColonAfterLabel={false}\n labelLocation={'top'}\n ref={formDatosGeneralesRef}\n >\n <TabbedItem>\n <TabPanelOptions deferRendering={false} showNavButtons={true} />\n <Tab title=\"Datos Generales\" colCount={2}>\n <GroupItem caption=\"General\" colCount={2}>\n <Item cssClass=\"boldText\" colSpan={2} dataField=\"header.Movimiento\" editorOptions={movimientoEditorOptions} >\n <Label text={\"Movimiento\"} />\n </Item>\n <Item dataField=\"header.FechaEmision\" editorType=\"dxDateBox\" editorOptions={fechaEmisionEditorOptions}>\n <Label text={\"Fecha Emisión\"} />\n </Item>\n <Item dataField=\"header.Concepto\" editorType=\"dxSelectBox\" editorOptions={conceptoEditorOptions} >\n <Label text={\"Concepto\"} />\n </Item>\n <Item dataField=\"header.Almacen\" editorType=\"dxSelectBox\" editorOptions={almacenEditorOptions} >\n <Label text={\"Almacén\"} />\n <RequiredRule message=\"Almacén es requerido\" />\n </Item>\n <Item dataField=\"header.AlmacenDestino\" editorType=\"dxSelectBox\" editorOptions={almacenDestinoEditorOptions} >\n <Label text={\"Almacén Destino\"} />\n <RequiredRule message=\"Almacén Destino es requerido\" />\n </Item>\n <Item dataField=\"header.Observaciones\" editorType=\"dxSelectBox\" editorOptions={observacionesEditorOptions} >\n <Label text={\"Observaciones\"} />\n </Item>\n </GroupItem>\n <GroupItem caption=\"Artículos\" colSpan={2}>\n <DataGrid\n id=\"gridArticulos\"\n ref={gridArticulosRef}\n columnsAutoWidth={true}\n dataSource={invTransferOrderPayload.detail}\n showBorders={true}\n showColumnLines={true}\n showRowLines={true}\n rowAlternationEnabled={true}\n allowColumnResizing={true}\n columnResizingMode=\"widget\"\n allowColumnReordering={false}\n repaintChangesOnly={true}\n onEditorPreparing={onEditorArticulosPreparing}\n >\n <Scrolling\n mode='virtual'\n />\n\n <Editing\n mode=\"cell\"\n newRowPosition=\"last\"\n allowUpdating={activateUpdateGrid}\n allowAdding={activateUpdateGrid}\n allowDeleting={activateUpdateGrid}\n />\n\n <Sorting mode=\"none\" />\n\n <Column dataField=\"Renglon\" width={190} visible={false} />\n <Column dataField=\"Articulo\" caption=\"Artículo\" width={450} setCellValue={setCellValueArticulo} calculateDisplayValue=\"ArtDescripcion\" >\n <Lookup\n dataSource={storeArticulo}\n displayExpr=\"name\"\n valueExpr=\"value\"\n searchEnabled={true}\n showClearButton={true}\n acceptCustomValue={false}\n clearButtonText='Cerrar'\n noDataText='No se encontraron resultados'\n />\n <RequiredRule message=\"Artículo es requerido\" />\n </Column>\n <Column dataField=\"ArtDescripcion\" width={400} allowEditing={false} visible={false} />\n <Column dataField=\"Cantidad\" width={80} setCellValue={setCellValueCantidad} dataType=\"number\" editorOptions={cantidadEditorOptions}>\n <RequiredRule message=\"Cantidad es requerida\" />\n </Column>\n </DataGrid>\n </GroupItem>\n </Tab>\n <Tab title=\"Autorización\" colCount={2}>\n <Item dataField=\"header.RequiereAutorizacion\" editorType=\"dxCheckBox\" editorOptions={autorizacionEditorOptions} >\n <Label text=\"Requiere Autorización\" />\n </Item>\n <Item dataField=\"header.Autorizado\" editorType=\"dxCheckBox\" editorOptions={autorizacionEditorOptions} >\n <Label text=\"Autorizado\" />\n </Item>\n <Item dataField=\"header.Autoriza\" editorOptions={autorizacionEditorOptions} >\n <Label text=\"Autorizado por\" />\n </Item>\n <Item dataField=\"header.FechaAutorizacion\" editorOptions={autorizacionEditorOptions} >\n <Label text=\"Fecha Autorización\" />\n </Item>\n </Tab>\n <Tab title=\"Observaciones\" >\n <Item dataField=\"header.Comentarios\" editorType=\"dxTextArea\" editorOptions={comentariosEditorOptions}>\n <Label text=\"Observaciones\" visible={false} />\n </Item>\n </Tab>\n <Tab title=\"Log Estatus\">\n <DataGrid\n id=\"gridLogEstatus\"\n columnsAutoWidth={true}\n dataSource={invTransferOrderPayload.movEstatusLog}\n allowColumnReordering={true}\n allowColumnResizing={true}\n columnResizingMode={\"widget\"}\n showBorders={true}\n rowAlternationEnabled={true}\n showRowLines={true}\n showColumnLines={true}\n >\n <HeaderFilter visible={false} />\n <Column dataField=\"Usuario\" dataType=\"string\" width={350} caption=\"Usuario\" />\n <Column caption=\"Estatus\" alignment=\"center\" width={150} cellRender={estatusRelatedRecords} />\n <Column dataField=\"Fecha\" dataType=\"datetime\" width={300} caption=\"Fecha\" />\n </DataGrid>\n </Tab>\n <Tab title=\"Archivos Anexos\" >\n <div className=\"widget-container\">\n <FileUploader\n multiple={true}\n accept=\"*\"\n uploadMode=\"useButtons\"\n chunkSize={20000000}\n maxFileSize={20000000}\n uploadChunk={uploadChunk}\n disabled={!activateAttachments}\n />\n </div>\n <div id=\"wrapper\" className=\"show-widget\" >\n <div id=\"widget-area\">\n <FileManager id=\"attachmentManager\" fileSystemProvider={attachments} onItemDeleting={onAttachmentDeleting} onItemDownloading={onItemDownloading} onSelectedFileOpened={onAttachmentOpen}>\n <Permissions\n create={false}\n copy={false}\n move={false}\n delete={activateAttachments}\n rename={false}\n upload={false}\n download={true}\n >\n </Permissions>\n </FileManager>\n </div>\n </div>\n </Tab>\n </TabbedItem>\n </Form>\n </div>\n </div>\n ) :\n (\n <div></div>\n )\n }\n </div>\n )\n }}\n />\n </div>\n </div>\n );\n}\n","import React, { useState, useEffect, useRef, useMemo } from 'react';\n\n// LoadPanel\nimport { LoadPanel } from 'devextreme-react/load-panel';\n\n// Toast\nimport { Toast } from 'devextreme-react/toast';\n\n//Form\nimport Form, { GroupItem, Label, TabbedItem, TabPanelOptions, Tab, EmptyItem } from 'devextreme-react/form';\n\nimport { Auth, API, Storage } from 'aws-amplify';\n\n// Ruteador\nimport { Route, Link, useHistory } from \"react-router-dom\";\n\n// Grid\nimport DataGrid, {\n Column, FilterRow, HeaderFilter, FilterPanel, FilterBuilderPopup,\n GroupPanel, Grouping, SearchPanel, Sorting, Editing, Lookup, Toolbar, Item, RequiredRule,\n Scrolling, Pager, Paging, Summary, TotalItem, StateStoring, ColumnChooser, Format, Selection,\n Export, ColumnChooserSearch, ColumnChooserSelection\n} from 'devextreme-react/data-grid';\n\n//CheckBox\nimport CheckBox from 'devextreme-react/check-box';\n\n// Iconos\nimport { FontAwesomeIcon } from \"@fortawesome/react-fontawesome\";\nimport { faGlasses } from \"@fortawesome/pro-solid-svg-icons\";\nimport { faPencilAlt } from \"@fortawesome/pro-solid-svg-icons\";\nimport { faArrowRotateLeft } from \"@fortawesome/pro-solid-svg-icons\";\nimport { faSave } from \"@fortawesome/pro-solid-svg-icons\";\nimport { faList } from \"@fortawesome/pro-duotone-svg-icons\";\nimport { faFilePdf } from \"@fortawesome/pro-solid-svg-icons\";\nimport { faArrowsRotate } from \"@fortawesome/pro-solid-svg-icons\";\nimport { faFileAlt } from \"@fortawesome/pro-solid-svg-icons\";\nimport { faPalletBoxes } from \"@fortawesome/pro-duotone-svg-icons\";\nimport { faPlay } from \"@fortawesome/pro-solid-svg-icons\";\nimport { faTrash } from \"@fortawesome/pro-solid-svg-icons\";\nimport { faWindowClose } from \"@fortawesome/pro-solid-svg-icons\";\nimport { faArrowUpRightFromSquare } from \"@fortawesome/pro-solid-svg-icons\";\nimport { faThumbsUp } from \"@fortawesome/pro-solid-svg-icons\";\nimport { faLeft } from \"@fortawesome/pro-solid-svg-icons\";\nimport { faRight } from \"@fortawesome/pro-solid-svg-icons\";\n\nimport 'devextreme/data/odata/store';\nimport CustomStore from 'devextreme/data/custom_store';\n\nimport DataSource from 'devextreme/data/data_source';\n\nimport '../ListStyle.css';\n\n//FileUploader\nimport FileUploader from 'devextreme-react/file-uploader';\n\n//FileManager\nimport FileManager, { Permissions } from 'devextreme-react/file-manager';\n\nimport dxDateBox from \"devextreme/ui/date_box\";\n\nimport dxNumberBox from \"devextreme/ui/number_box\";\n\nimport TransactionStatus from \"../TransactionStatus/TransactionStatus.js\";\n\nimport Lambda from 'aws-sdk/clients/lambda';\n\nimport { Popup, Position, ToolbarItem } from 'devextreme-react/popup';\n\nimport ScrollView from 'devextreme-react/scroll-view';\n\nimport { Workbook } from 'exceljs';\nimport { saveAs } from 'file-saver';\nimport { exportDataGrid } from 'devextreme/excel_exporter'\n\ndxDateBox.defaultOptions({\n options: {\n dateSerializationFormat: \"yyyy-MM-dd\"\n }\n});\n\ndxNumberBox.defaultOptions({\n options: {\n step: 0\n }\n});\n\nfunction isNotEmpty(value) {\n return value !== undefined && value !== null && value !== '';\n}\n\nexport default function InvTransferOrder(props) {\n const history = useHistory();\n\n const [isDetail, setIsDetail] = useState(false);\n const [id, setId] = useState();\n const [permissionLevel] = useState(props.nivel);\n const [approveInvTransferOrder] = useState(props.approveInvTransferOrder);\n const [invItemFulfillment] = useState(props.invItemFulfillment);\n const [invItemFulfillmentLevel] = useState(props.invItemFulfillmentLevel);\n const [invItemReceipt] = useState(props.invItemReceipt);\n const [invItemReceiptLevel] = useState(props.invItemReceiptLevel);\n\n const [invTransferOrderPayload, setInvTransferOrderPayload] = useState({\n header: {},\n detail: [],\n movEstatusLog: []\n });\n\n const [autoExpandAll, setAutoExpandAll] = useState(true);\n\n // setValue para el control tab\n const [value, setValue] = React.useState(0);\n\n const [visibleLoadPanel, setVisibleLoadPanel] = useState(false);\n\n const [visibleToast, setVisibleToast] = useState(false);\n const [messageToast, setMessageToast] = useState('');\n const [typeToast, setTypeToast] = useState('success');\n\n const [conceptos, setConceptos] = useState([]);\n const [almacenes, setAlmacenes] = useState([]);\n const [tipoDano, setTipoDano] = useState([]);\n const [autorizacionProveedor, setAutorizacionProveedor] = useState([]);\n const [observaciones, setObservaciones] = useState([]);\n\n const [popupVisible, setPopupVisible] = useState(false);\n const [popupTitle, setPopupTitle] = useState('Íconos Pedido');\n\n const [activateUpdateGrid, setActivateUpdateGrid] = useState(false);\n const [acceptCustomValues, setAcceptCustomValue] = useState(false);\n const [activateSaveButton, setActivateSaveButton] = useState(false);\n const [activateConfirmButton, setActivateConfirmButton] = useState(false);\n const [activateApproveButton, setActivateApproveButton] = useState(false);\n const [activateDeleteButton, setActivateDeleteButton] = useState(false);\n const [activateCancelButton, setActivateCancelButton] = useState(false);\n const [activatePDFButton, setActivatePDFButton] = useState(false);\n const [activateUpdateForm, setActivateUpdateForm] = useState(false);\n const [activateAttachments, setActivateAttachments] = useState(false);\n const [activateSalidaTraspaso, setActivateSalidaTraspaso] = useState(false);\n const [activateReciboTraspaso, setActivateReciboTraspaso] = useState(false);\n\n //Ref para el form\n const [formDatosGeneralesRef] = useState(React.createRef());\n\n //Ref para el grid Articulos\n const [gridArticulosRef, setGridArticulosRef] = useState(React.createRef());\n\n const [attachments, setAttachments] = useState([]);\n\n const handleChange = (event, newValue) => {\n setValue(newValue);\n };\n\n const filterBuilderPopupPosition = {\n of: window,\n at: 'top',\n my: 'top',\n offset: { y: 10 },\n };\n\n const allowedPageSizes = [5, 10, 15, 20, 'all'];\n\n const exportFormats = ['xlsx'];\n\n function getOrderDay(rowData) {\n return (new Date(rowData.OrderDate)).getDay();\n }\n\n const filterBuilder = {\n customOperations: [{\n name: 'weekends',\n caption: 'Weekends',\n dataTypes: ['date'],\n icon: 'check',\n hasValue: false,\n calculateFilterExpression: () => [[getOrderDay, '=', 0], 'or', [getOrderDay, '=', 6]],\n }],\n allowHierarchicalFields: true,\n };\n\n const filterValue = [['Estatus', '=', 'Sin Afectar']];\n\n //Ref para el grid Tablero de Control\n const [gridTableroRef] = useState(React.createRef());\n\n function onAutoExpandAllChanged() {\n setAutoExpandAll(!autoExpandAll)\n };\n\n const getInvTransferOrderRecords = React.useCallback(async (sqlFilter) => {\n try {\n let apiName = 'AdminSC';\n let path = '/procesainvsalidatraspaso';\n\n let myInit = {\n headers: {\n 'Content-Type': 'application/json',\n Authorization: `${(await Auth.currentSession()).getAccessToken().getJwtToken()}`\n },\n queryStringParameters: {\n action: 'list',\n sqlFilter: sqlFilter,\n salesAccess: props.salesAccess,\n sucursal: props.sucursal,\n username: JSON.parse(JSON.stringify(await Auth.currentAuthenticatedUser())).username\n }\n }\n\n var invTransferOrdersGet = await API.get(apiName, path, myInit);\n }\n catch (e) {\n if (e === 'No current user') {\n history.push('/');\n\n window.location.reload();\n }\n }\n\n return invTransferOrdersGet;\n }, [history, props.salesAccess, props.sucursal]);\n\n const getArticulo = React.useCallback(async (sqlFilter) => {\n let apiName = 'AdminSC';\n let path = '/getcatalogo';\n\n let myInit = {\n headers: {\n 'Content-Type': 'application/json',\n Authorization: `${(await Auth.currentSession()).getAccessToken().getJwtToken()}`\n },\n queryStringParameters: {\n type: 'Articulo',\n username: JSON.parse(JSON.stringify(await Auth.currentAuthenticatedUser())).username,\n sqlFilter: sqlFilter\n }\n }\n\n var articulosGet = await API.get(apiName, path, myInit);\n\n return articulosGet;\n\n }, []);\n\n const getConceptos = React.useCallback(async () => {\n let apiName = 'AdminSC';\n let path = '/getcatalogo';\n\n let myInit = {\n headers: {\n 'Content-Type': 'application/json',\n Authorization: `${(await Auth.currentSession()).getAccessToken().getJwtToken()}`\n },\n queryStringParameters: {\n type: 'Concepto',\n modulo: 'INV',\n username: JSON.parse(JSON.stringify(await Auth.currentAuthenticatedUser())).username\n }\n }\n\n var conceptosGet = await API.get(apiName, path, myInit);\n\n setConceptos(conceptosGet);\n\n return conceptosGet;\n }, []);\n\n const getAlmacenes = React.useCallback(async () => {\n let apiName = 'AdminSC';\n let path = '/getcatalogo';\n\n let myInit = {\n headers: {\n 'Content-Type': 'application/json',\n Authorization: `${(await Auth.currentSession()).getAccessToken().getJwtToken()}`\n },\n queryStringParameters: {\n type: 'AlmacenNormal',\n username: JSON.parse(JSON.stringify(await Auth.currentAuthenticatedUser())).username\n }\n }\n\n var pedidosGet = await API.get(apiName, path, myInit);\n\n setAlmacenes(pedidosGet);\n\n }, []);\n\n const getObservaciones = React.useCallback(async () => {\n let apiName = 'AdminSC';\n let path = '/getcatalogo';\n\n let myInit = {\n headers: {\n 'Content-Type': 'application/json',\n Authorization: `${(await Auth.currentSession()).getAccessToken().getJwtToken()}`\n },\n queryStringParameters: {\n type: 'Observacion',\n modulo: 'INV',\n username: JSON.parse(JSON.stringify(await Auth.currentAuthenticatedUser())).username\n }\n }\n\n var observacionesGet = await API.get(apiName, path, myInit);\n\n setObservaciones(observacionesGet);\n\n }, []);\n\n const store = useMemo(() => {\n return new CustomStore({\n key: 'ID',\n load(loadOptions) {\n let sqlFilter = '(';\n [\n 'filter'\n ].forEach((i) => {\n if (i in loadOptions && isNotEmpty(loadOptions[i])) {\n var filters = loadOptions[i];\n\n var filtersLength = filters.length;\n\n for (var i = 0; i <= filtersLength; i++) {\n var singleFilter = filters[i];\n var singleFilterType = typeof singleFilter;\n var singleFilterIsArray = Array.isArray(singleFilter);\n var singleFilterIsDate = singleFilter instanceof Date;\n\n if (singleFilter === 'NULL') {\n singleFilter = '0';\n }\n\n if (singleFilterType.toString() === 'object' && singleFilterIsArray) {\n sqlFilter += '(';\n\n var subFiltersLength = singleFilter.length;\n\n for (var i2 = 0; i2 <= subFiltersLength; i2++) {\n var singleSubFilter = singleFilter[i2];\n var singleSubFilterType = typeof singleSubFilter;\n var singleSubFilterIsArray = Array.isArray(singleSubFilter);\n var singleSubFilterIsDate = singleSubFilter instanceof Date\n\n if (singleSubFilter === 'NULL') {\n singleSubFilter = '0';\n }\n\n if (singleSubFilterType.toString() === 'object' && singleSubFilterIsArray) {\n sqlFilter += '(';\n\n var subSubFiltersLength = singleSubFilter.length;\n\n for (var i3 = 0; i3 <= subSubFiltersLength; i3++) {\n var singleSubSubFilter = singleSubFilter[i3];\n var singleSubSubFilterType = typeof singleSubSubFilter;\n var singleSubSubFilterIsArray = Array.isArray(singleSubSubFilter);\n var singleSubSubFilterIsDate = singleSubSubFilter instanceof Date\n\n if (singleSubSubFilter === 'NULL') {\n singleSubSubFilter = '0';\n }\n\n if (singleSubSubFilterType.toString() === 'object' && singleSubSubFilterIsArray) {\n sqlFilter += '(';\n\n var subSubSubFiltersLength = singleSubSubFilter.length;\n\n for (var i4 = 0; i4 <= subSubSubFiltersLength; i4++) {\n var singleSubSubSubFilter = singleSubSubFilter[i4];\n var singleSubSubSubFilterType = typeof singleSubSubSubFilter;\n var singleSubSubSubFilterIsArray = Array.isArray(singleSubSubSubFilter);\n var singleSubSubSubFilterIsDate = singleSubSubSubFilter instanceof Date\n\n if (singleSubSubSubFilter === 'NULL') {\n singleSubSubSubFilter = '0';\n }\n\n if (singleSubSubSubFilterType.toString() === 'object' && singleSubSubSubFilterIsArray) {\n sqlFilter += '(';\n\n var subSubSubSubFiltersLength = singleSubSubSubFilter.length;\n\n for (var i5 = 0; i5 <= subSubSubSubFiltersLength; i5++) {\n var singleSubSubSubSubFilter = singleSubSubSubFilter[i5];\n var singleSubSubSubSubFilterType = typeof singleSubSubSubSubFilter;\n var singleSubSubSubSubFilterIsArray = Array.isArray(singleSubSubSubSubFilter);\n var singleSubSubSubSubFilterIsDate = singleSubSubSubSubFilter instanceof Date\n\n if (singleSubSubSubSubFilter === 'NULL') {\n singleSubSubSubSubFilter = '0';\n }\n\n if (singleSubSubSubSubFilterType.toString() === 'string') {\n if (singleSubSubSubSubFilter === 'contains') {\n filters[i][i2][i3][i4][i5] = 'LIKE';\n singleSubSubSubSubFilter = 'LIKE';\n\n filters[i][i2][i3][i4][i5 + 1] = '\\'%' + filters[i][i2][i3][i4][i5 + 1] + '%\\'';\n }\n else if (singleSubSubSubSubFilter === 'notcontains') {\n filters[i][i2][i3][i4][i5] = 'NOT LIKE';\n singleSubSubSubSubFilter = 'NOT LIKE';\n\n filters[i][i2][i3][i4][i5 + 1] = '\\'%' + filters[i][i2][i3][i4][i5 + 1] + '%\\'';\n }\n else if (singleSubSubSubSubFilter === 'startswith') {\n filters[i][i2][i3][i4][i5] = 'LIKE';\n singleSubSubSubSubFilter = 'LIKE';\n\n filters[i][i2][i3][i4][i5 + 1] = '\\'' + filters[i][i2][i3][i4][i5 + 1] + '%\\'';\n }\n else if (singleSubSubSubSubFilter === 'endswith') {\n filters[i][i2][i3][i4][i5] = 'LIKE';\n singleSubSubSubSubFilter = 'LIKE';\n\n filters[i][i2][i3][i4][i5 + 1] = '\\'%' + filters[i][i2][i3][i4][i5 + 1] + '\\'';\n }\n else if (singleSubSubSubSubFilter === '=' || singleSubSubSubSubFilter === '<>' || singleSubSubSubSubFilter === '>' || singleSubSubSubSubFilter === '>=' || singleSubSubSubSubFilter === '<' || singleSubSubSubSubFilter === '<=') {\n if (!filters[i][i2][i3][i4][i5 + 1])\n filters[i][i2][i3][i4][i5 + 1] = 'NULL';\n else if (typeof filters[i][i2][i3][i4][i5 + 1] === 'string') {\n filters[i][i2][i3][i4][i5 + 1] = '\\'' + filters[i][i2][i3][i4][i5 + 1] + '\\'';\n }\n }\n else if (singleSubSubSubSubFilter === '!') {\n filters[i][i2][i3][i4][i5] = 'NOT';\n singleSubSubSubSubFilter = 'NOT';\n }\n\n sqlFilter += ' ' + singleSubSubSubSubFilter + ' ';\n }\n else if (singleSubSubSubSubFilterType.toString() === 'object' && singleSubSubSubSubFilterIsDate) {\n sqlFilter += ' \\'' + singleSubSubSubSubFilter.toISOString().split('T')[0] + '\\' ';\n }\n else if (singleSubSubSubSubFilterType.toString() === 'number') {\n sqlFilter += ' ' + singleSubSubSubSubFilter.toString() + ' ';\n }\n else if (singleSubSubSubSubFilterType.toString() === 'boolean') {\n if (singleSubSubSubSubFilter.toString() === 'true')\n sqlFilter += '1 ';\n else if (singleSubSubSubSubFilter.toString() === 'false' || singleSubSubSubSubFilter === null || singleSubSubSubSubFilter === undefined)\n sqlFilter += '0 ';\n }\n }\n }\n else if (singleSubSubSubFilterType.toString() === 'string') {\n if (singleSubSubSubFilter === 'contains') {\n filters[i][i2][i3][i4] = 'LIKE';\n singleSubSubSubFilter = 'LIKE';\n\n filters[i][i2][i3][i4 + 1] = '\\'%' + filters[i][i2][i3][i4 + 1] + '%\\'';\n }\n else if (singleSubSubSubFilter === 'notcontains') {\n filters[i][i2][i3][i4] = 'NOT LIKE';\n singleSubSubSubFilter = 'NOT LIKE';\n\n filters[i][i2][i3][i4 + 1] = '\\'%' + filters[i][i2][i3][i4 + 1] + '%\\'';\n }\n else if (singleSubSubSubFilter === 'startswith') {\n filters[i][i2][i3][i4] = 'LIKE';\n singleSubSubSubFilter = 'LIKE';\n\n filters[i][i2][i3][i4 + 1] = '\\'' + filters[i][i2][i3][i4 + 1] + '%\\'';\n }\n else if (singleSubSubSubFilter === 'endswith') {\n filters[i][i2][i3][i4] = 'LIKE';\n singleSubSubSubFilter = 'LIKE';\n\n filters[i][i2][i3][i4 + 1] = '\\'%' + filters[i][i2][i3][i4 + 1] + '\\'';\n }\n else if (singleSubSubSubFilter === '=' || singleSubSubSubFilter === '<>' || singleSubSubSubFilter === '>' || singleSubSubSubFilter === '>=' || singleSubSubSubFilter === '<' || singleSubSubSubFilter === '<=') {\n if (!filters[i][i2][i3][i4 + 1])\n filters[i][i2][i3][i4 + 1] = 'NULL';\n else if (typeof filters[i][i2][i3][i4 + 1] === 'string') {\n filters[i][i2][i3][i4 + 1] = '\\'' + filters[i][i2][i3][i4 + 1] + '\\'';\n }\n }\n else if (singleSubSubSubFilter === '!') {\n filters[i][i2][i3][i4] = 'NOT';\n singleSubSubSubFilter = 'NOT';\n }\n\n sqlFilter += ' ' + singleSubSubSubFilter + ' ';\n }\n else if (singleSubSubSubFilterType.toString() === 'object' && singleSubSubSubFilterIsDate) {\n sqlFilter += ' \\'' + singleSubSubSubFilter.toISOString().split('T')[0] + '\\' ';\n }\n else if (singleSubSubSubFilterType.toString() === 'number') {\n sqlFilter += ' ' + singleSubSubSubFilter.toString() + ' ';\n }\n else if (singleSubSubSubFilterType.toString() === 'boolean') {\n if (singleSubSubSubFilter.toString() === 'true')\n sqlFilter += '1 ';\n else if (singleSubSubSubFilter.toString() === 'false' || singleSubSubSubFilter === null || singleSubSubSubFilter === undefined)\n sqlFilter += '0 ';\n }\n }\n\n sqlFilter += ')';\n }\n else if (singleSubSubFilterType.toString() === 'string') {\n if (singleSubSubFilter === 'contains') {\n filters[i][i2][i3] = 'LIKE';\n singleSubSubFilter = 'LIKE';\n\n filters[i][i2][i3 + 1] = '\\'%' + filters[i][i2][i3 + 1] + '%\\'';\n }\n else if (singleSubSubFilter === 'notcontains') {\n filters[i][i2][i3] = 'NOT LIKE';\n singleSubSubFilter = 'NOT LIKE';\n\n filters[i][i2][i3 + 1] = '\\'%' + filters[i][i2][i3 + 1] + '%\\'';\n }\n else if (singleSubSubFilter === 'startswith') {\n filters[i][i2][i3] = 'LIKE';\n singleSubSubFilter = 'LIKE';\n\n filters[i][i2][i3 + 1] = '\\'' + filters[i][i2][i3 + 1] + '%\\'';\n }\n else if (singleSubSubFilter === 'endswith') {\n filters[i][i2][i3] = 'LIKE';\n singleSubSubFilter = 'LIKE';\n\n filters[i][i2][i3 + 1] = '\\'%' + filters[i][i2][i3 + 1] + '\\'';\n }\n else if (singleSubSubFilter === '=' || singleSubSubFilter === '<>' || singleSubSubFilter === '>' || singleSubSubFilter === '>=' || singleSubSubFilter === '<' || singleSubSubFilter === '<=') {\n if (!filters[i][i2][i3 + 1])\n filters[i][i2][i3 + 1] = 'NULL';\n else if (typeof filters[i][i2][i3 + 1] === 'string') {\n filters[i][i2][i3 + 1] = '\\'' + filters[i][i2][i3 + 1] + '\\'';\n }\n }\n else if (singleSubSubFilter === '!') {\n filters[i][i2][i3] = 'NOT';\n singleSubSubFilter = 'NOT';\n }\n sqlFilter += ' ' + singleSubSubFilter + ' ';\n }\n else if (singleSubSubFilterType.toString() === 'object' && singleSubSubFilterIsDate) {\n sqlFilter += ' \\'' + singleSubSubFilter.toISOString().split('T')[0] + '\\' ';\n }\n else if (singleSubSubFilterType.toString() === 'number') {\n sqlFilter += ' ' + singleSubSubFilter.toString() + ' ';\n }\n else if (singleSubSubFilterType.toString() === 'boolean') {\n if (singleSubSubFilter.toString() === 'true')\n sqlFilter += '1 ';\n else if (singleSubSubFilter.toString() === 'false' || singleSubSubFilter === null || singleSubSubFilter === undefined)\n sqlFilter += '0 ';\n }\n }\n\n sqlFilter += ')';\n }\n else if (singleSubFilterType.toString() === 'string') {\n if (singleSubFilter === 'contains') {\n filters[i][i2] = 'LIKE';\n singleSubFilter = 'LIKE';\n\n filters[i][i2 + 1] = '\\'%' + filters[i][i2 + 1] + '%\\'';\n }\n else if (singleSubFilter === 'notcontains') {\n filters[i][i2] = 'NOT LIKE';\n singleSubFilter = 'NOT LIKE';\n\n filters[i][i2 + 1] = '\\'%' + filters[i][i2 + 1] + '%\\'';\n }\n else if (singleSubFilter === 'startswith') {\n filters[i][i2] = 'LIKE';\n singleSubFilter = 'LIKE';\n\n filters[i][i2 + 1] = '\\'' + filters[i][i2 + 1] + '%\\'';\n }\n else if (singleSubFilter === 'endswith') {\n filters[i][i2] = 'LIKE';\n singleSubFilter = 'LIKE';\n\n filters[i][i2 + 1] = '\\'%' + filters[i][i2 + 1] + '\\'';\n }\n else if (singleSubFilter === '=' || singleSubFilter === '<>' || singleSubFilter === '>' || singleSubFilter === '>=' || singleSubFilter === '<' || singleSubFilter === '<=') {\n if (!filters[i][i2 + 1])\n filters[i][i2 + 1] = 'NULL';\n else if (typeof filters[i][i2 + 1] === 'string') {\n filters[i][i2 + 1] = '\\'' + filters[i][i2 + 1] + '\\'';\n }\n }\n else if (singleSubFilter === '!') {\n filters[i][i2] = 'NOT';\n singleSubFilter = 'NOT';\n }\n sqlFilter += ' ' + singleSubFilter + ' ';\n }\n else if (singleSubFilterType.toString() === 'object' && singleSubFilterIsDate) {\n sqlFilter += ' \\'' + singleSubFilter.toISOString().split('T')[0] + '\\' ';\n }\n else if (singleSubFilterType.toString() === 'number') {\n sqlFilter += ' ' + singleSubFilter.toString() + ' ';\n }\n else if (singleSubFilterType.toString() === 'boolean') {\n if (singleSubFilter.toString() === 'true')\n sqlFilter += '1 ';\n else if (singleSubFilter.toString() === 'false' || singleSubFilter === null || singleSubFilter === undefined)\n sqlFilter += '0 ';\n }\n }\n\n sqlFilter += ')';\n }\n else if (singleFilterType.toString() === 'string') {\n if (singleFilter === 'contains') {\n filters[i] = 'LIKE';\n singleFilter = 'LIKE';\n\n filters[i + 1] = '\\'%' + filters[i + 1] + '%\\'';\n }\n else if (singleFilter === 'notcontains') {\n filters[i] = 'NOT LIKE';\n singleFilter = 'NOT LIKE';\n\n filters[i + 1] = '\\'%' + filters[i + 1] + '%\\'';\n }\n else if (singleFilter === 'startswith') {\n filters[i] = 'LIKE';\n singleFilter = 'LIKE';\n\n filters[i + 1] = '\\'' + filters[i + 1] + '%\\'';\n }\n else if (singleFilter === 'endswith') {\n filters[i] = 'LIKE';\n singleFilter = 'LIKE';\n\n filters[i + 1] = '\\'%' + filters[i + 1] + '\\'';\n }\n else if (singleFilter === '=' || singleFilter === '<>' || singleFilter === '>' || singleFilter === '>=' || singleFilter === '<' || singleFilter === '<=') {\n if (!filters[i + 1])\n filters[i + 1] = 'NULL';\n else if (typeof filters[i + 1] === 'string') {\n filters[i + 1] = '\\'' + filters[i + 1] + '\\'';\n }\n }\n else if (singleFilter === '!') {\n filters[i] = 'NOT';\n singleFilter = 'NOT';\n }\n sqlFilter += ' ' + singleFilter + ' ';\n }\n else if (singleFilterType.toString() === 'object' && singleFilterIsDate) {\n sqlFilter += ' \\'' + singleFilter.toISOString().split('T')[0] + '\\' ';\n }\n else if (singleFilterType.toString() === 'number') {\n sqlFilter += ' ' + singleFilter.toString() + ' ';\n }\n else if (singleFilterType.toString() === 'boolean') {\n if (singleFilter.toString() === 'true')\n sqlFilter += '1 ';\n else if (singleFilter.toString() === 'false' || singleFilter === null || singleFilter === undefined)\n sqlFilter += '0 ';\n }\n }\n\n sqlFilter += ')';\n }\n });\n\n async function getRecords() {\n if (sqlFilter === '(')\n sqlFilter = '';\n\n var records = await getInvTransferOrderRecords(sqlFilter);\n return {\n data: records,\n totalCount: records.length\n };\n }\n\n return getRecords()\n .then(function (result) {\n return result;\n })\n .catch(() => { throw new Error('Data Loading Error'); });\n }\n })\n }, [getInvTransferOrderRecords]);\n\n const storeArticulo = useMemo(() => {\n return new CustomStore({\n key: 'value',\n load(loadOptions) {\n let sqlFilter = '';\n [\n 'filter'\n ].forEach((i) => {\n sqlFilter = loadOptions.searchValue;\n });\n\n async function getRecords() {\n if (sqlFilter) {\n var records = await getArticulo(sqlFilter);\n\n return {\n data: records,\n totalCount: records.length\n };\n }\n else {\n return {\n data: [],\n totalCount: 0\n };\n }\n }\n\n return getRecords()\n .then(function (result) {\n return result;\n })\n .catch(() => { throw new Error('Data Loading Error'); });\n },\n byKey: (key) => {\n async function getRecords(key) {\n var records = await getArticulo(key);\n\n return records;\n }\n\n return getRecords(key);\n }\n })\n }, [getArticulo]);\n\n var conceptosDataSource = useMemo(() => {\n return new DataSource({\n paginate: true,\n store: {\n type: \"array\",\n key: \"Concepto\",\n data: conceptos\n }\n });\n }, [conceptos]);\n\n var almacenDataSource = useMemo(() => {\n return new DataSource({\n paginate: true,\n store: {\n type: \"array\",\n key: \"Almacen\",\n data: almacenes\n }\n });\n }, [almacenes]);\n\n var fechaEmisionEditorOptions = useMemo(() => {\n return {\n width: '100%',\n readOnly: true\n };\n }, []);\n\n var movimientoEditorOptions = useMemo(() => {\n return {\n width: '100%',\n readOnly: true\n };\n }, []);\n\n var observacionesDataSource = useMemo(() => {\n return new DataSource({\n paginate: true,\n store: {\n type: \"array\",\n key: \"Observacion\",\n data: observaciones\n }\n });\n }, [observaciones]);\n\n //Opciones Conceptos\n try {\n var conceptoEditorOptions = useMemo(() => {\n return {\n dataSource: conceptosDataSource,\n displayExpr: 'name',\n valueExpr: 'value',\n searchEnabled: true,\n value: (invTransferOrderPayload.header.Concepto ? invTransferOrderPayload.header.Concepto : ''),\n width: '100%'\n };\n }, [conceptosDataSource, invTransferOrderPayload.header.Concepto]);\n }\n catch (e) {\n var conceptoEditorOptions = {\n dataSource: conceptosDataSource,\n displayExpr: 'name',\n valueExpr: 'value',\n searchEnabled: true,\n value: '',\n width: '100%'\n };\n };\n\n //Opciones del campo Almacen\n try {\n var almacenEditorOptions = useMemo(() => {\n return {\n dataSource: almacenDataSource,\n displayExpr: 'name',\n valueExpr: 'value',\n searchEnabled: true,\n acceptCustomValue: !acceptCustomValues,\n value: (invTransferOrderPayload.header.Almacen ? invTransferOrderPayload.header.Almacen : ''),\n width: '100%'\n };\n }, [acceptCustomValues, almacenDataSource, invTransferOrderPayload.header.Almacen]);\n }\n catch (e) {\n var almacenEditorOptions = {\n dataSource: almacenDataSource,\n displayExpr: 'name',\n valueExpr: 'value',\n searchEnabled: true,\n acceptCustomValue: acceptCustomValues,\n value: '',\n width: '100%'\n };\n }\n\n //Opciones del campo Almacen Destino\n try {\n var almacenDestinoEditorOptions = useMemo(() => {\n return {\n dataSource: almacenDataSource,\n displayExpr: 'name',\n valueExpr: 'value',\n searchEnabled: true,\n acceptCustomValue: !acceptCustomValues,\n value: (invTransferOrderPayload.header.AlmacenDestino ? invTransferOrderPayload.header.AlmacenDestino : ''),\n width: '100%'\n };\n }, [acceptCustomValues, almacenDataSource, invTransferOrderPayload.header.AlmacenDestino]);\n }\n catch (e) {\n var almacenDestinoEditorOptions = {\n dataSource: almacenDataSource,\n displayExpr: 'name',\n valueExpr: 'value',\n searchEnabled: true,\n acceptCustomValue: acceptCustomValues,\n value: '',\n width: '100%'\n };\n }\n\n //Opciones del campo Observaciones\n try {\n var observacionesEditorOptions = useMemo(() => {\n return {\n dataSource: observacionesDataSource,\n displayExpr: 'name',\n valueExpr: 'value',\n searchEnabled: true,\n acceptCustomValue: !acceptCustomValues,\n value: (invTransferOrderPayload.header.Observaciones ? invTransferOrderPayload.header.Observaciones : ''),\n width: '100%'\n };\n }, [acceptCustomValues, observacionesDataSource, invTransferOrderPayload.header.Observaciones]);\n }\n catch (e) {\n var observacionesEditorOptions = {\n dataSource: observacionesDataSource,\n displayExpr: 'name',\n valueExpr: 'value',\n searchEnabled: true,\n acceptCustomValue: acceptCustomValues,\n value: '',\n width: '100%'\n };\n }\n\n var cantidadEditorOptions = useMemo(() => {\n return {\n format: '#'\n };\n }, []);\n\n var comentariosEditorOptions = useMemo(() => {\n return {\n };\n }, []);\n\n var autorizacionEditorOptions = useMemo(() => {\n return {\n width: '100%',\n readOnly: true\n };\n }, []);\n\n //Opciones del campo Articulo\n try {\n var articuloEditorOptions = useMemo(() => {\n return {\n dataSource: storeArticulo,\n displayExpr: 'name',\n valueExpr: 'value',\n searchEnabled: true,\n showClearButton: true,\n acceptCustomValue: false,\n disabled: false,\n // searchTimeout: 500,\n width: '100%',\n clearButtonText: 'Cerrar',\n noDataText: 'No se encontraron resultados'\n };\n }, [storeArticulo]);\n }\n catch (e) {\n var articuloEditorOptions = {\n dataSource: storeArticulo,\n displayExpr: 'name',\n valueExpr: 'value',\n searchEnabled: true,\n acceptCustomValue: false,\n width: '100%'\n };\n }\n\n async function uploadChunk(file, uploadInfo) {\n try {\n var responseS3 = await Storage.put(\"/inv/\" + id + \"/\" + file.name, uploadInfo.chunkBlob, {\n contentType: file.type,\n ACL: 'public-read'\n });\n\n //Obtenemos el nombre del bucket\n let bucketName = Storage._config.AWSS3.bucket;\n\n\n let apiName = 'AdminSC';\n let path = '/uploadattachment';\n\n let myInit = {\n headers: {\n 'Content-Type': 'application/json',\n Authorization: `${(await Auth.currentSession()).getAccessToken().getJwtToken()}`\n },\n body: {\n action: 'register',\n bucketName: bucketName,\n type: 'inv',\n id: id,\n Key: \"/inv/\" + id + \"/\" + file.name,\n fileName: file.name,\n username: JSON.parse(JSON.stringify(await Auth.currentAuthenticatedUser())).username\n }\n }\n\n var attachmentsResult = await API.post(apiName, path, myInit);\n\n //Obtenemos los attachments\n var attachmentsGet = await Storage.list(\"/inv/\" + id);\n var attachmentsAux = [];\n\n for (var attachmentsGetIndex in attachmentsGet) {\n var singleAttachmentsGet = attachmentsGet[attachmentsGetIndex];\n\n var singleAttachment = {\n name: singleAttachmentsGet.key.split('/').pop(),\n isDirectory: false,\n size: singleAttachmentsGet.size,\n };\n\n attachmentsAux.push(singleAttachment);\n }\n\n setAttachments(attachmentsAux);\n }\n catch (err) {\n console.log(\"Error uploading file:\", err);\n }\n };\n\n async function onAttachmentDeleting(e) {\n var fileName = e.item.key;\n\n //Primero borramos el archivo de S3\n var attachmentsDelete = await Storage.remove(\"/inv/\" + id + \"/\" + fileName);\n\n //Despues borramos el attachment en Intelisis\n let bucketName = Storage._config.AWSS3.bucket;\n\n let apiName = 'AdminSC';\n let path = '/uploadattachment';\n\n let myInit = {\n headers: {\n 'Content-Type': 'application/json',\n Authorization: `${(await Auth.currentSession()).getAccessToken().getJwtToken()}`\n },\n body: {\n action: 'delete',\n bucketName: bucketName,\n type: 'inv',\n id: id,\n Key: \"/inv/\" + id + \"/\" + fileName,\n fileName: fileName,\n username: JSON.parse(JSON.stringify(await Auth.currentAuthenticatedUser())).username\n }\n }\n\n var attachmentsResult = await API.post(apiName, path, myInit);\n\n //Finalmente sincronizamos el state\n var attachmentsGet = await Storage.list(\"/inv/\" + id);\n var attachmentsAux = [];\n\n for (var attachmentsGetIndex in attachmentsGet) {\n var singleAttachmentsGet = attachmentsGet[attachmentsGetIndex];\n\n var singleAttachment = {\n name: singleAttachmentsGet.key.split('/').pop(),\n isDirectory: false,\n size: singleAttachmentsGet.size,\n };\n\n attachmentsAux.push(singleAttachment);\n }\n\n setAttachments(attachmentsAux);\n };\n\n function downloadBlob(blob, filename) {\n const url = URL.createObjectURL(blob);\n const a = document.createElement('a');\n a.href = url;\n a.download = filename || 'download';\n const clickHandler = () => {\n setTimeout(() => {\n URL.revokeObjectURL(url);\n a.removeEventListener('click', clickHandler);\n }, 150);\n };\n\n a.addEventListener('click', clickHandler, false);\n\n a.click();\n\n return a;\n };\n\n async function onItemDownloading(e) {\n e.cancel = true;\n\n const downloadFileResponse = await Storage.get(\"/inv/\" + id + \"/\" + e.item.name, { download: true });\n\n downloadBlob(downloadFileResponse.Body, e.item.name);\n };\n\n function openBlob(blob, filename) {\n const url = URL.createObjectURL(blob);\n\n window.open(url, \"_blank\");\n };\n\n async function onAttachmentOpen(e) {\n const downloadFileResponse = await Storage.get(\"/inv/\" + id + \"/\" + e.file.name, { download: true });\n\n openBlob(downloadFileResponse.Body, e.file.name);\n };\n\n const getinvTransferOrderPayload = React.useCallback(async (ID) => {\n try {\n let apiName = 'AdminSC';\n let path = '/procesainvsalidatraspaso';\n\n let myInit = {\n headers: {\n 'Content-Type': 'application/json',\n Authorization: `${(await Auth.currentSession()).getAccessToken().getJwtToken()}`\n },\n queryStringParameters: {\n ID: ID,\n action: 'payload',\n username: JSON.parse(JSON.stringify(await Auth.currentAuthenticatedUser())).username\n }\n };\n\n var payloadGet = await API.get(apiName, path, myInit);\n\n setInvTransferOrderPayload(payloadGet);\n\n //Obtenemos los attachments\n var attachmentsGet = await Storage.list(\"/inv/\" + ID);\n var attachmentsAux = [];\n\n for (var attachmentsGetIndex in attachmentsGet) {\n var singleAttachmentsGet = attachmentsGet[attachmentsGetIndex];\n\n var singleAttachment = {\n name: singleAttachmentsGet.key.split('/').pop(),\n isDirectory: false,\n size: singleAttachmentsGet.size,\n };\n\n attachmentsAux.push(singleAttachment);\n }\n\n setAttachments(attachmentsAux);\n }\n catch (e) {\n if (e === 'No current user') {\n history.push('/');\n\n window.location.reload();\n }\n }\n\n return payloadGet;\n\n }, [history]);\n\n function editInvTransferOrder(data) {\n return (\n <Link to={`/InvItemFulfillment/${data.data.ID}`}>\n <button class=\"bg-blue-500 hover:bg-blue-700 text-white py-1 px-3 rounded\" onClick={() => editButton(data.data.ID)}><FontAwesomeIcon icon={permissionLevel === 'Editar' ? faPencilAlt : faGlasses} /> {permissionLevel === 'Editar' ? 'Editar' : 'Ver'}</button>\n </Link>\n )\n }\n\n function openRelatedRecord(redirect) {\n if (redirect) {\n var baseUrl = window.location.href.split('#/')[0];\n\n redirect = baseUrl + '#' + redirect;\n\n window.open(redirect, \"_blank\");\n }\n };\n\n function openRelatedRecordButton(data) {\n return (\n <button onClick={() => openRelatedRecord(data.data.redirect)}><FontAwesomeIcon icon={faArrowUpRightFromSquare} /></button>\n )\n };\n\n function estatusRelatedRecords(data) {\n return (\n <TransactionStatus {...props} Estatus={data.data.Estatus} />\n )\n };\n\n function blobToBase64(blob) {\n return new Promise((resolve, _) => {\n const reader = new FileReader();\n reader.onloadend = () => resolve(reader.result);\n reader.readAsDataURL(blob);\n });\n };\n\n const editButton = React.useCallback(async (ID) => {\n try {\n if (!window.event.metaKey && !window.event.ctrlKey) {\n setVisibleLoadPanel(true);\n\n setIsDetail(true);\n setId(ID);\n\n var payload = await getinvTransferOrderPayload(ID);\n\n if (permissionLevel === 'Editar') {\n var EstatusSalida = payload.header.EstatusSalida;\n var EstatusRecibo = payload.header.EstatusRecibo;\n\n if (payload.header.Estatus === 'Sin Afectar') {\n setActivateUpdateForm(true);\n setAcceptCustomValue(false);\n setActivateSaveButton(true);\n setActivateDeleteButton(true);\n setActivateCancelButton(false);\n setActivatePDFButton(true);\n setActivateAttachments(true);\n setActivateUpdateGrid(true);\n setActivateConfirmButton(true);\n setActivateApproveButton(false);\n setActivateSalidaTraspaso(false);\n setActivateReciboTraspaso(false);\n }\n else if (payload.header.Estatus === 'Pendiente') {\n setActivateUpdateForm(false);\n setAcceptCustomValue(true);\n setActivateSaveButton(false);\n setActivateDeleteButton(false);\n setActivateCancelButton(true);\n setActivatePDFButton(true);\n setActivateAttachments(true);\n setActivateUpdateGrid(false);\n setActivateConfirmButton(false);\n\n if (payload.header.RequiereAutorizacion === true && payload.header.Autorizado === false && approveInvTransferOrder)\n setActivateApproveButton(true);\n else\n setActivateApproveButton(false);\n\n if ((EstatusSalida === 'Pendiente') && invItemFulfillment && invItemFulfillmentLevel === 'Editar') {\n setActivateSalidaTraspaso(true);\n }\n else {\n setActivateSalidaTraspaso(false);\n }\n\n if ((EstatusRecibo === 'Pendiente') && invItemReceipt && invItemReceiptLevel === 'Editar') {\n setActivateReciboTraspaso(true);\n }\n else {\n setActivateReciboTraspaso(false);\n }\n }\n else if (payload.header.Estatus === 'Concluido') {\n setActivateUpdateForm(false);\n setAcceptCustomValue(true);\n setActivateSaveButton(false);\n setActivateDeleteButton(false);\n setActivateCancelButton(true);\n setActivateConfirmButton(false);\n setActivatePDFButton(true);\n setActivateAttachments(false);\n setActivateUpdateGrid(false);\n setActivateApproveButton(false);\n\n if ((EstatusSalida === 'Pendiente') && invItemFulfillment && invItemFulfillmentLevel === 'Editar') {\n setActivateSalidaTraspaso(true);\n }\n else {\n setActivateSalidaTraspaso(false);\n }\n\n if ((EstatusSalida === 'Pendiente') && invItemReceipt && invItemReceiptLevel === 'Editar') {\n setActivateReciboTraspaso(true);\n }\n else {\n setActivateReciboTraspaso(false);\n }\n }\n else if (payload.header.Estatus === 'Cancelado') {\n setActivateUpdateForm(false);\n setAcceptCustomValue(true);\n setActivateSaveButton(false);\n setActivateDeleteButton(false);\n setActivateCancelButton(false);\n setActivateConfirmButton(false);\n setActivatePDFButton(true);\n setActivateAttachments(false);\n setActivateUpdateGrid(false);\n setActivateApproveButton(false);\n setActivateSalidaTraspaso(false);\n setActivateReciboTraspaso(false);\n }\n }\n else if (permissionLevel === 'Ver') {\n setActivateUpdateForm(false);\n setAcceptCustomValue(true);\n setActivateSaveButton(false);\n setActivateDeleteButton(false);\n setActivateCancelButton(false);\n setActivateConfirmButton(false);\n setActivatePDFButton(true);\n setActivateAttachments(false);\n setActivateUpdateGrid(false);\n setActivateApproveButton(false);\n setActivateSalidaTraspaso(false);\n setActivateReciboTraspaso(false);\n }\n\n setVisibleLoadPanel(false);\n }\n }\n catch (e) {\n setVisibleLoadPanel(false);\n }\n }, [getinvTransferOrderPayload, permissionLevel, approveInvTransferOrder, invItemFulfillment, invItemFulfillmentLevel, invItemReceipt, invItemReceiptLevel]);\n\n const deleteButton = React.useCallback(async () => {\n try {\n if (!window.confirm('¿Desea eliminar la Salida Traspaso?'))\n return;\n\n setVisibleLoadPanel(true);\n\n var ID = invTransferOrderPayload.header.ID;\n\n if (!ID) {\n //Vamos al tablero de control\n history.push('/InvItemFulfillment');\n return;\n }\n\n let apiName = 'AdminSC';\n let path = '/procesainvsalidatraspaso';\n\n let myInit = {\n headers: {\n 'Content-Type': 'application/json',\n Authorization: `${(await Auth.currentSession()).getAccessToken().getJwtToken()}`\n },\n body: {\n ID: ID,\n payload: invTransferOrderPayload,\n action: 'delete',\n username: JSON.parse(JSON.stringify(await Auth.currentAuthenticatedUser())).username,\n usuario: props.usuario,\n sucursal: props.sucursal\n }\n }\n\n var payloadPost = await API.post(apiName, path, myInit);\n\n if (payloadPost.ok === 'true') {\n setVisibleLoadPanel(false);\n\n setVisibleToast(true);\n setMessageToast('Salida Traspaso eliminada con éxito');\n setTypeToast('success')\n\n setIsDetail(false);\n\n //Vamos al tablero de control\n history.push('/InvItemFulfillment');\n }\n else if (payloadPost.ok === 'false') {\n setVisibleLoadPanel(false);\n\n setVisibleToast(true);\n setMessageToast(payloadPost.message);\n setTypeToast('error')\n }\n }\n catch (e) {\n setVisibleLoadPanel(false);\n\n if (e === 'No current user') {\n history.push('/');\n\n window.location.reload();\n }\n }\n }, [history, invTransferOrderPayload, props.sucursal, props.usuario]);\n\n async function cancelEditButton() {\n setIsDetail(false);\n };\n\n const saveButton = React.useCallback(async () => {\n if (formDatosGeneralesRef.current) {\n var formDatosGenerales = formDatosGeneralesRef.current.instance();\n var isValid = formDatosGenerales.validate();\n\n if (!isValid.isValid) {\n setVisibleToast(true);\n setMessageToast(isValid.brokenRules[0].message);\n setTypeToast('error');\n return;\n }\n }\n\n try {\n setVisibleLoadPanel(true);\n\n var ID = invTransferOrderPayload.header.ID;\n\n //Primero guardamos los cambios del grid Articulos\n if (gridArticulosRef.current) {\n var gridArticulos = gridArticulosRef.current.instance();\n\n gridArticulos.saveEditData();\n }\n\n //Despues enviamos todo al backend\n let apiName = 'AdminSC';\n let path = '/procesainvsalidatraspaso';\n\n let myInit = {\n headers: {\n 'Content-Type': 'application/json',\n Authorization: `${(await Auth.currentSession()).getAccessToken().getJwtToken()}`\n },\n body: {\n ID: ID,\n payload: invTransferOrderPayload,\n action: 'saveChanges',\n username: JSON.parse(JSON.stringify(await Auth.currentAuthenticatedUser())).username,\n usuario: props.usuario,\n sucursal: props.sucursal,\n s3Bucket: Storage._config.AWSS3.bucket\n }\n }\n\n var payloadPost = await API.post(apiName, path, myInit);\n\n if (payloadPost.ok === 'true') {\n if (!ID) {\n setVisibleToast(true);\n setMessageToast('Se creó la Salida Traspaso con éxito');\n setTypeToast('success')\n\n ID = payloadPost.newID;\n\n editButton(ID);\n\n history.push('/InvItemFulfillment/' + ID.toString());\n }\n else {\n setVisibleToast(true);\n setMessageToast('Se actualizó la Salida Traspaso con éxito');\n setTypeToast('success')\n }\n }\n else if (payloadPost.ok === 'false') {\n setVisibleToast(true);\n setMessageToast(payloadPost.message);\n setTypeToast('error')\n }\n\n editButton(ID);\n\n setVisibleLoadPanel(false);\n }\n catch (e) {\n setVisibleLoadPanel(false);\n\n if (e === 'No current user') {\n history.push('/');\n\n window.location.reload();\n }\n }\n }, [editButton, formDatosGeneralesRef, gridArticulosRef, history, invTransferOrderPayload, props.sucursal, props.usuario]);\n\n const itemFulfillmentButton = React.useCallback(async () => {\n }, []);\n\n const itemReceiptButton = React.useCallback(async () => {\n }, []);\n\n async function voidButton() {\n try {\n if (!window.confirm('¿Desea cancelar la Salida Traspaso?'))\n return;\n\n setVisibleLoadPanel(true);\n\n var ID = invTransferOrderPayload.header.ID;\n\n //Guardamos los cambios del grid\n if (gridArticulosRef.current) {\n var gridArticulos = gridArticulosRef.current.instance();\n\n gridArticulos.saveEditData();\n }\n\n //Despues enviamos todo al backend\n let apiName = 'AdminSC';\n let path = '/procesainvsalidatraspaso';\n\n let myInit = {\n headers: {\n 'Content-Type': 'application/json',\n Authorization: `${(await Auth.currentSession()).getAccessToken().getJwtToken()}`\n },\n body: {\n ID: ID,\n payload: invTransferOrderPayload,\n action: 'void',\n username: JSON.parse(JSON.stringify(await Auth.currentAuthenticatedUser())).username,\n usuario: props.usuario,\n sucursal: props.sucursal\n }\n }\n\n var payloadPost = await API.post(apiName, path, myInit);\n\n if (payloadPost.ok === 'true') {\n setVisibleToast(true);\n setMessageToast('Se canceló la Salida Traspaso');\n setTypeToast('success')\n }\n else if (payloadPost.ok === 'false') {\n setVisibleToast(true);\n setMessageToast(payloadPost.message);\n setTypeToast('error')\n }\n\n editButton(ID);\n\n setVisibleLoadPanel(false);\n }\n catch (e) {\n setVisibleLoadPanel(false);\n\n if (e === 'No current user') {\n history.push('/');\n\n window.location.reload();\n }\n }\n };\n\n const confirmButton = React.useCallback(async () => {\n if (formDatosGeneralesRef.current) {\n var formDatosGenerales = formDatosGeneralesRef.current.instance();\n var isValid = formDatosGenerales.validate();\n\n if (!isValid.isValid) {\n setVisibleToast(true);\n setMessageToast(isValid.brokenRules[0].message);\n setTypeToast('error');\n return;\n }\n }\n\n try {\n setVisibleLoadPanel(true);\n\n var ID = invTransferOrderPayload.header.ID;\n\n //Primero guardamos los cambios del grid Articulos\n if (gridArticulosRef.current) {\n var gridArticulos = gridArticulosRef.current.instance();\n\n gridArticulos.saveEditData();\n }\n\n var lambdaFunction;\n\n if (window.location.href.indexOf('sandbox.') >= 0 || window.location.href.indexOf('localhost') >= 0)\n lambdaFunction = 'procesaInvSalidaTraspaso-dev';\n else if (window.location.href.indexOf('sandboxtampico.') >= 0)\n lambdaFunction = 'procesaInvSalidaTraspaso-devleona';\n else if (window.location.href.indexOf('tampico.') >= 0)\n lambdaFunction = 'procesaInvSalidaTraspaso-prodleona';\n else\n lambdaFunction = 'procesaInvSalidaTraspaso-prod';\n\n Auth.currentCredentials()\n .then(credentials => {\n const lambda = new Lambda({\n credentials: Auth.essentialCredentials(credentials),\n region: 'us-east-1'\n });\n\n var params = {\n FunctionName: lambdaFunction,\n Payload: JSON.stringify({\n ID: ID,\n payload: invTransferOrderPayload,\n action: 'apply',\n username: props.username,\n usuario: props.usuario,\n sucursal: props.sucursal,\n s3Bucket: Storage._config.AWSS3.bucket\n })\n };\n\n lambda.invoke(params, function (err, data) {\n if (err) {\n setVisibleLoadPanel(false);\n\n setVisibleToast(true);\n setMessageToast(err.message);\n setTypeToast('error');\n }\n else {\n var payloadPost = JSON.parse(JSON.parse(data.Payload).body);\n\n if (payloadPost.ok === 'true') {\n setVisibleToast(true);\n setMessageToast('Se afectó la Salida Traspaso con éxito');\n setTypeToast('success')\n }\n else if (payloadPost.ok === 'false') {\n setVisibleToast(true);\n setMessageToast(payloadPost.message);\n setTypeToast('error')\n }\n\n editButton(ID);\n\n setVisibleLoadPanel(false);\n }\n });\n })\n }\n catch (e) {\n setVisibleLoadPanel(false);\n\n if (e === 'No current user') {\n history.push('/');\n\n window.location.reload();\n }\n }\n }, [editButton, formDatosGeneralesRef, gridArticulosRef, history, invTransferOrderPayload, props.sucursal, props.username, props.usuario]);\n\n const approveButton = React.useCallback(async () => {\n if (formDatosGeneralesRef.current) {\n var formDatosGenerales = formDatosGeneralesRef.current.instance();\n var isValid = formDatosGenerales.validate();\n\n if (!isValid.isValid) {\n setVisibleToast(true);\n setMessageToast(isValid.brokenRules[0].message);\n setTypeToast('error');\n return;\n }\n }\n\n try {\n setVisibleLoadPanel(true);\n\n var ID = invTransferOrderPayload.header.ID;\n\n //Primero guardamos los cambios del grid Articulos\n if (gridArticulosRef.current) {\n var gridArticulos = gridArticulosRef.current.instance();\n\n gridArticulos.saveEditData();\n }\n\n saveButton();\n\n var lambdaFunction;\n\n if (window.location.href.indexOf('sandbox.') >= 0 || window.location.href.indexOf('localhost') >= 0)\n lambdaFunction = 'procesaInvSalidaTraspaso-dev';\n else if (window.location.href.indexOf('sandboxtampico.') >= 0)\n lambdaFunction = 'procesaInvSalidaTraspaso-devleona';\n else if (window.location.href.indexOf('tampico.') >= 0)\n lambdaFunction = 'procesaInvSalidaTraspaso-prodleona';\n else\n lambdaFunction = 'procesaInvSalidaTraspaso-prod';\n\n Auth.currentCredentials()\n .then(credentials => {\n const lambda = new Lambda({\n credentials: Auth.essentialCredentials(credentials),\n region: 'us-east-1'\n });\n\n var params = {\n FunctionName: lambdaFunction,\n Payload: JSON.stringify({\n ID: ID,\n payload: invTransferOrderPayload,\n action: 'approve',\n username: props.username,\n usuario: props.usuario,\n sucursal: props.sucursal,\n s3Bucket: Storage._config.AWSS3.bucket\n })\n };\n\n lambda.invoke(params, function (err, data) {\n if (err) {\n setVisibleLoadPanel(false);\n\n setVisibleToast(true);\n setMessageToast(err.message);\n setTypeToast('error');\n }\n else {\n var payloadPost = JSON.parse(JSON.parse(data.Payload).body);\n\n if (payloadPost.ok === 'true') {\n setVisibleToast(true);\n setMessageToast('Salida Traspaso autorizada');\n setTypeToast('success')\n }\n else if (payloadPost.ok === 'false') {\n setVisibleToast(true);\n setMessageToast(payloadPost.message);\n setTypeToast('error')\n }\n\n editButton(ID);\n\n setVisibleLoadPanel(false);\n }\n });\n })\n }\n catch (e) {\n setVisibleLoadPanel(false);\n\n if (e === 'No current user') {\n history.push('/');\n\n window.location.reload();\n }\n }\n }, [editButton, formDatosGeneralesRef, gridArticulosRef, history, invTransferOrderPayload, props.sucursal, props.username, props.usuario, saveButton]);\n\n function printButton() {\n var baseUrl = window.location.href.split('/')[0];\n\n window.open(baseUrl + \"/#/PdfRender?type=invtransferorder&id=\" + id, \"_blank\");\n };\n\n function refreshButton() {\n if (gridTableroRef.current) {\n var gridTablero = gridTableroRef.current.instance();\n\n gridTablero.refresh();\n }\n };\n\n useEffect(() => {\n window.addEventListener('popstate', (e) => {\n var hash;\n\n try {\n hash = e.target.location.hash;\n }\n catch (e) {\n hash = '';\n }\n\n if (hash === '#/InvItemFulfillment') {\n history.push('/InvItemFulfillment');\n\n window.location.reload();\n }\n });\n async function initialize() {\n setVisibleLoadPanel(true);\n\n await getConceptos();\n\n await getAlmacenes();\n\n await getObservaciones();\n\n setVisibleLoadPanel(false);\n }\n\n initialize();\n\n //En caso de solicitar un ID especifico, redireccionamos a ese ID\n if (!props.match.isExact) {\n var urlID = props.location.pathname.replace('/InvItemFulfillment/', '');\n\n if (urlID === 'undefined')\n urlID = undefined;\n\n if (urlID)\n editButton(urlID);\n else\n history.push('/InvItemFulfillment')\n }\n // eslint-disable-next-line\n }, []);\n\n function onHidingToast() {\n setVisibleToast(false);\n }\n\n const onEditorArticulosPreparing = React.useCallback((e) => {\n if (e.parentType === \"dataRow\") {\n if (e.dataField === \"Articulo\") {\n\n e.editorOptions.displayExpr = \"name\";\n e.editorOptions.valueExpr = \"value\";\n e.editorOptions.searchEnabled = true;\n e.editorOptions.showClearButton = true;\n e.editorOptions.acceptCustomValue = false;\n e.editorOptions.clearButtonText = 'Cerrar';\n e.editorOptions.noDataText = 'No se encontraron resultados';\n\n const defaultValueChangeHandler = e.editorOptions.onValueChanged;\n\n e.editorOptions.onValueChanged = function (ev) {\n let selectedItem = ev.component.option(\"selectedItem\");\n e.setValue(selectedItem);\n };\n }\n if (e.dataField === \"Cantidad\") {\n e.editorOptions.min = 1;\n }\n }\n }, []);\n\n const setCellValueArticulo = React.useCallback((rowData, value) => {\n rowData.Articulo = value.value;\n rowData.ArtDescripcion = value.name;\n rowData.Cantidad = 1;\n }, []);\n\n const setCellValueCantidad = React.useCallback((rowData, value, currentRowData) => {\n var Cantidad = parseFloat(value);\n\n rowData.Cantidad = parseFloat(Cantidad);\n }, []);\n\n function onExporting(e) {\n const workbook = new Workbook();\n const worksheet = workbook.addWorksheet('Datos');\n\n exportDataGrid({\n component: e.component,\n worksheet,\n autoFilterEnabled: true,\n }).then(() => {\n workbook.xlsx.writeBuffer().then((buffer) => {\n saveAs(new Blob([buffer], { type: 'application/octet-stream' }), 'Datos.xlsx');\n });\n });\n e.cancel = true;\n };\n\n return (\n <div>\n {isDetail === false ? (\n <div class=\"bg-gray-200 m-2\">\n <h1 class=\"font-sans inline-block text-xl font-bold text-gray-700 leading-8 align-top mb-1\"><FontAwesomeIcon icon={faList} size=\"lg\" /> Salidas de Traspaso</h1>\n </div>\n ) :\n (\n <div class=\"bg-gray-200 m-2\">\n <h1 class=\"font-sans inline-block text-xl font-bold text-gray-700 leading-8 align-top mb-1\"><FontAwesomeIcon icon={faPalletBoxes} size=\"xl\" /> {(invTransferOrderPayload.header ? invTransferOrderPayload.header.Movimiento : 'Salida Traspaso')}</h1>\n <TransactionStatus {...props} Estatus={invTransferOrderPayload.header.Estatus} />\n </div>\n )}\n\n <LoadPanel\n shadingColor=\"rgba(0,0,0,0.4)\"\n visible={visibleLoadPanel}\n showIndicator={true}\n message=\"Por favor espere...\"\n shading={true}\n showPane={true}\n hideOnOutsideClick={false}\n />\n\n <Toast\n visible={visibleToast}\n message={messageToast}\n type={typeToast}\n onHiding={onHidingToast}\n displayTime={5000}\n width={'auto'}\n position={{\n my: 'top center',\n at: 'top center',\n of: window,\n offset: '0 130'\n }}\n />\n\n <div class=\"bg-gray-200 m-2\">\n {isDetail === false ? (\n <div class=\"bg-white p-3 shadow-xl\">\n <div>\n <button onClick={refreshButton} type=\"submit\" class=\"mb-4 bg-blue-500 hover:bg-blue-700 text-white font-bold py-2 px-4 rounded\">\n <FontAwesomeIcon icon={faArrowsRotate} /> Actualizar\n </button>\n </div>\n\n <div className=\"options mb-2\">\n <div className=\"option\">\n <CheckBox text=\"Expandir todos los grupos\"\n value={autoExpandAll}\n onValueChanged={onAutoExpandAllChanged}></CheckBox>\n </div>\n </div>\n <DataGrid\n height={800}\n id=\"gridContainer\"\n columnsAutoWidth={true}\n filterBuilder={filterBuilder}\n dataSource={store}\n defaultFilterValue={filterValue}\n allowColumnReordering={true}\n allowColumnResizing={true}\n columnResizingMode={\"widget\"}\n showBorders={true}\n rowAlternationEnabled={true}\n showRowLines={true}\n showColumnLines={true}\n remoteOperations={{ filtering: true }}\n ref={gridTableroRef}\n onExporting={onExporting}\n >\n <Scrolling rowRenderingMode='virtual'></Scrolling>\n <Paging defaultPageSize={10} />\n <Pager\n visible={true}\n allowedPageSizes={allowedPageSizes}\n displayMode='compact'\n showPageSizeSelector={true}\n showInfo={true}\n showNavigationButtons={true}\n />\n <FilterRow visible={true} />\n <FilterPanel visible={true} />\n <FilterBuilderPopup position={filterBuilderPopupPosition} />\n\n <HeaderFilter visible={true} />\n\n <GroupPanel visible={true} />\n <SearchPanel visible={true} />\n <ColumnChooser\n enabled={true}\n mode='select'\n >\n <ColumnChooserSearch\n enabled={true}\n />\n\n <ColumnChooserSelection\n allowSelectAll={true}\n selectByClick={true}\n recursive={true}\n />\n </ColumnChooser>\n <Grouping autoExpandAll={autoExpandAll} />\n <StateStoring enabled={true} type=\"localStorage\" storageKey=\"gridContainerInvItemFulfillment\" />\n <Export enabled={true} />\n\n <Column caption=\"\" alignment=\"center\" width={100} cellRender={editInvTransferOrder} />\n\n <Column dataField=\"MovID\" dataType=\"string\" width={110} caption=\"Folio\" />\n <Column dataField=\"FechaEmision\" caption=\"Fecha Emisión\" dataType=\"date\" width={130} />\n <Column dataField=\"Estatus\" dataType=\"string\" width={120} />\n\n <Column dataField=\"ID\" dataType=\"number\" width={150} visible={false} />\n <Column dataField=\"Mov\" dataType=\"string\" width={190} caption=\"Tipo Movimiento\" visible={false} />\n <Column dataField=\"Movimiento\" dataType=\"string\" width={190} visible={false} />\n\n <Column dataField=\"Almacen\" dataType=\"string\" width={190} caption=\"Almacén\" visible={true} />\n <Column dataField=\"NombreAlmacen\" dataType=\"string\" width={190} caption=\"Nombre Almacén\" visible={false} />\n\n <Column dataField=\"AlmacenDestino\" dataType=\"string\" width={190} caption=\"Almacén\" visible={true} />\n <Column dataField=\"NombreAlmacenDestino\" dataType=\"string\" width={190} caption=\"Nombre Almacén\" visible={false} />\n\n <Column dataField=\"Sucursal\" dataType=\"number\" width={150} visible={false} />\n <Column dataField=\"NombreSucursal\" dataType=\"string\" width={190} visible={false} />\n <Column dataField=\"Usuario\" dataType=\"string\" width={190} visible={false} />\n <Column dataField=\"NombreUsuario\" dataType=\"string\" width={190} visible={false} />\n\n <Column dataField=\"RequiereAutorizacion\" dataType=\"boolean\" caption=\"Requiere Autorización\" width={200} visible={false} />\n <Column dataField=\"Autorizado\" dataType=\"boolean\" width={150} visible={false} />\n <Column dataField=\"Autoriza\" caption=\"Autorizado Por\" dataType=\"string\" width={200} visible={false} />\n <Column dataField=\"FechaAutorizacion\" caption=\"Fecha Autorización\" dataType=\"datetime\" width={200} visible={false} />\n\n <Column dataField=\"Concepto\" dataType=\"string\" width={190} visible={false} />\n <Column dataField=\"Observaciones\" dataType=\"string\" width={190} visible={false} />\n <Column dataField=\"Situacion\" caption=\"Situación\" dataType=\"string\" width={190} visible={false} />\n <Column dataField=\"SituacionFecha\" caption=\"Fecha Situación\" dataType=\"date\" width={190} visible={false} />\n <Column dataField=\"SituacionUsuario\" caption=\"Usuario Situación\" dataType=\"string\" width={190} visible={false} />\n <Column dataField=\"SituacionNota\" caption=\"Nota Situación\" dataType=\"string\" width={190} visible={false} />\n <Column dataField=\"Comentarios\" dataType=\"string\" width={190} visible={false} />\n <Column dataField=\"Plaza\" dataType=\"string\" width={190} visible={false} />\n </DataGrid>\n </div>\n ) : (<div />)}\n <Route exact path=\"/InvItemFulfillment/:ID\" render={({ match }) => {\n return (\n <div class=\"bg-gray-200\">\n {isDetail.toString() === 'true' ?\n (\n <div>\n <Link to=\"/InvItemFulfillment\">\n <button onClick={cancelEditButton} type=\"submit\" class=\"mb-4 bg-red-500 hover:bg-red-700 text-white font-bold py-2 px-4 rounded\">\n <FontAwesomeIcon icon={faArrowRotateLeft} /> Regresar\n </button>\n </Link>\n\n {activateSaveButton.toString() === 'true' ?\n (\n <button onClick={saveButton} type=\"submit\" class=\"ml-4 mb-4 bg-blue-500 hover:bg-blue-700 text-white font-bold py-2 px-4 rounded\">\n <FontAwesomeIcon icon={faSave} /> Guardar Cambios\n </button>\n ) : (\n <div class=\"inline-block\"></div>\n )}\n\n {activateSalidaTraspaso.toString() === 'true' ?\n (\n <button onClick={itemFulfillmentButton} type=\"submit\" class=\"ml-4 mb-4 bg-blue-500 hover:bg-blue-700 text-white font-bold py-2 px-4 rounded\">\n <FontAwesomeIcon icon={faLeft} /> Salida Traspaso\n </button>\n ) : (\n <div class=\"inline-block\"></div>\n )}\n\n {activateReciboTraspaso.toString() === 'true' ?\n (\n <button onClick={itemReceiptButton} type=\"submit\" class=\"ml-4 mb-4 bg-blue-500 hover:bg-blue-700 text-white font-bold py-2 px-4 rounded\">\n <FontAwesomeIcon icon={faRight} /> Recibo Traspaso\n </button>\n ) : (\n <div class=\"inline-block\"></div>\n )}\n\n {activateConfirmButton.toString() === 'true' && id ?\n (\n <button onClick={confirmButton} type=\"submit\" class=\"ml-4 mb-4 bg-green-500 hover:bg-green-700 text-white font-bold py-2 px-4 rounded\">\n <FontAwesomeIcon icon={faPlay} /> Afectar\n </button>\n ) : (\n <div class=\"inline-block\"></div>\n )}\n\n {activateApproveButton.toString() === 'true' && id ?\n (\n <button onClick={approveButton} type=\"submit\" class=\"ml-4 mb-4 bg-green-500 hover:bg-green-700 text-white font-bold py-2 px-4 rounded\">\n <FontAwesomeIcon icon={faThumbsUp} /> Autorizar\n </button>\n ) : (\n <div class=\"inline-block\"></div>\n )}\n\n {activateDeleteButton.toString() === 'true' && id ?\n (\n <button onClick={deleteButton} type=\"submit\" class=\"ml-4 mb-4 bg-red-500 hover:bg-red-700 text-white font-bold py-2 px-4 rounded\">\n <FontAwesomeIcon icon={faTrash} /> Eliminar\n </button>\n ) :\n (\n <div class=\"inline-block\"></div>\n )}\n\n {activateCancelButton.toString() === 'true' && id ?\n (\n <button onClick={voidButton} type=\"submit\" class=\"ml-4 mb-4 bg-red-500 hover:bg-red-700 text-white font-bold py-2 px-4 rounded\">\n <FontAwesomeIcon icon={faWindowClose} /> Cancelar\n </button>\n ) :\n (\n <div class=\"inline-block\"></div>\n )}\n\n {activatePDFButton.toString() === 'true' && id ?\n (\n <button onClick={printButton} type=\"submit\" class=\"ml-4 mb-4 bg-gray-500 hover:bg-gray-700 text-white font-bold py-2 px-4 rounded\">\n <FontAwesomeIcon icon={faFilePdf} /> PDF\n </button>\n ) :\n (\n <div class=\"inline-block\"></div>\n )}\n\n <div class=\"bg-white p-4 shadow-xl\">\n <Form\n id=\"formTransaccion\"\n labelMode={'outside'}\n formData={invTransferOrderPayload}\n readOnly={!activateUpdateForm}\n showColonAfterLabel={false}\n labelLocation={'top'}\n ref={formDatosGeneralesRef}\n >\n <TabbedItem>\n <TabPanelOptions deferRendering={false} showNavButtons={true} />\n <Tab title=\"Datos Generales\" colCount={2}>\n <GroupItem caption=\"General\" colCount={2}>\n <Item cssClass=\"boldText\" colSpan={2} dataField=\"header.Movimiento\" editorOptions={movimientoEditorOptions} >\n <Label text={\"Movimiento\"} />\n </Item>\n <Item dataField=\"header.FechaEmision\" editorType=\"dxDateBox\" editorOptions={fechaEmisionEditorOptions}>\n <Label text={\"Fecha Emisión\"} />\n </Item>\n <Item dataField=\"header.Concepto\" editorType=\"dxSelectBox\" editorOptions={conceptoEditorOptions} >\n <Label text={\"Concepto\"} />\n </Item>\n <Item dataField=\"header.Almacen\" editorType=\"dxSelectBox\" editorOptions={almacenEditorOptions} >\n <Label text={\"Almacén\"} />\n <RequiredRule message=\"Almacén es requerido\" />\n </Item>\n <Item dataField=\"header.AlmacenDestino\" editorType=\"dxSelectBox\" editorOptions={almacenDestinoEditorOptions} >\n <Label text={\"Almacén Destino\"} />\n <RequiredRule message=\"Almacén Destino es requerido\" />\n </Item>\n <Item dataField=\"header.Observaciones\" editorType=\"dxSelectBox\" editorOptions={observacionesEditorOptions} >\n <Label text={\"Observaciones\"} />\n </Item>\n </GroupItem>\n <GroupItem caption=\"Artículos\" colSpan={2}>\n <DataGrid\n id=\"gridArticulos\"\n ref={gridArticulosRef}\n columnsAutoWidth={true}\n dataSource={invTransferOrderPayload.detail}\n showBorders={true}\n showColumnLines={true}\n showRowLines={true}\n rowAlternationEnabled={true}\n allowColumnResizing={true}\n columnResizingMode=\"widget\"\n allowColumnReordering={false}\n repaintChangesOnly={true}\n onEditorPreparing={onEditorArticulosPreparing}\n >\n <Scrolling\n mode='virtual'\n />\n\n <Editing\n mode=\"cell\"\n newRowPosition=\"last\"\n allowUpdating={activateUpdateGrid}\n allowAdding={activateUpdateGrid}\n allowDeleting={activateUpdateGrid}\n />\n\n <Sorting mode=\"none\" />\n\n <Column dataField=\"Renglon\" width={190} visible={false} />\n <Column dataField=\"Articulo\" caption=\"Artículo\" width={450} setCellValue={setCellValueArticulo} calculateDisplayValue=\"ArtDescripcion\" >\n <Lookup\n dataSource={storeArticulo}\n displayExpr=\"name\"\n valueExpr=\"value\"\n searchEnabled={true}\n showClearButton={true}\n acceptCustomValue={false}\n clearButtonText='Cerrar'\n noDataText='No se encontraron resultados'\n />\n <RequiredRule message=\"Artículo es requerido\" />\n </Column>\n <Column dataField=\"ArtDescripcion\" width={400} allowEditing={false} visible={false} />\n <Column dataField=\"Cantidad\" width={80} setCellValue={setCellValueCantidad} dataType=\"number\" editorOptions={cantidadEditorOptions}>\n <RequiredRule message=\"Cantidad es requerida\" />\n </Column>\n </DataGrid>\n </GroupItem>\n </Tab>\n <Tab title=\"Autorización\" colCount={2}>\n <Item dataField=\"header.RequiereAutorizacion\" editorType=\"dxCheckBox\" editorOptions={autorizacionEditorOptions} >\n <Label text=\"Requiere Autorización\" />\n </Item>\n <Item dataField=\"header.Autorizado\" editorType=\"dxCheckBox\" editorOptions={autorizacionEditorOptions} >\n <Label text=\"Autorizado\" />\n </Item>\n <Item dataField=\"header.Autoriza\" editorOptions={autorizacionEditorOptions} >\n <Label text=\"Autorizado por\" />\n </Item>\n <Item dataField=\"header.FechaAutorizacion\" editorOptions={autorizacionEditorOptions} >\n <Label text=\"Fecha Autorización\" />\n </Item>\n </Tab>\n <Tab title=\"Observaciones\" >\n <Item dataField=\"header.Comentarios\" editorType=\"dxTextArea\" editorOptions={comentariosEditorOptions}>\n <Label text=\"Observaciones\" visible={false} />\n </Item>\n </Tab>\n <Tab title=\"Log Estatus\">\n <DataGrid\n id=\"gridLogEstatus\"\n columnsAutoWidth={true}\n dataSource={invTransferOrderPayload.movEstatusLog}\n allowColumnReordering={true}\n allowColumnResizing={true}\n columnResizingMode={\"widget\"}\n showBorders={true}\n rowAlternationEnabled={true}\n showRowLines={true}\n showColumnLines={true}\n >\n <HeaderFilter visible={false} />\n <Column dataField=\"Usuario\" dataType=\"string\" width={350} caption=\"Usuario\" />\n <Column caption=\"Estatus\" alignment=\"center\" width={150} cellRender={estatusRelatedRecords} />\n <Column dataField=\"Fecha\" dataType=\"datetime\" width={300} caption=\"Fecha\" />\n </DataGrid>\n </Tab>\n <Tab title=\"Archivos Anexos\" >\n <div className=\"widget-container\">\n <FileUploader\n multiple={true}\n accept=\"*\"\n uploadMode=\"useButtons\"\n chunkSize={20000000}\n maxFileSize={20000000}\n uploadChunk={uploadChunk}\n disabled={!activateAttachments}\n />\n </div>\n <div id=\"wrapper\" className=\"show-widget\" >\n <div id=\"widget-area\">\n <FileManager id=\"attachmentManager\" fileSystemProvider={attachments} onItemDeleting={onAttachmentDeleting} onItemDownloading={onItemDownloading} onSelectedFileOpened={onAttachmentOpen}>\n <Permissions\n create={false}\n copy={false}\n move={false}\n delete={activateAttachments}\n rename={false}\n upload={false}\n download={true}\n >\n </Permissions>\n </FileManager>\n </div>\n </div>\n </Tab>\n </TabbedItem>\n </Form>\n </div>\n </div>\n ) :\n (\n <div></div>\n )\n }\n </div>\n )\n }}\n />\n </div>\n </div>\n );\n}\n","import React, { useState, useEffect, useRef, useMemo } from 'react';\n\n// LoadPanel\nimport { LoadPanel } from 'devextreme-react/load-panel';\n\n// Toast\nimport { Toast } from 'devextreme-react/toast';\n\n//Form\nimport Form, { GroupItem, Label, TabbedItem, TabPanelOptions, Tab, EmptyItem } from 'devextreme-react/form';\n\nimport { Auth, API, Storage } from 'aws-amplify';\n\n// Ruteador\nimport { Route, Link, useHistory } from \"react-router-dom\";\n\n// Grid\nimport DataGrid, {\n Column, FilterRow, HeaderFilter, FilterPanel, FilterBuilderPopup,\n GroupPanel, Grouping, SearchPanel, Sorting, Editing, Lookup, Toolbar, Item, RequiredRule,\n Scrolling, Pager, Paging, Summary, TotalItem, StateStoring, ColumnChooser, Format, Selection,\n Export, ColumnChooserSearch, ColumnChooserSelection\n} from 'devextreme-react/data-grid';\n\n//CheckBox\nimport CheckBox from 'devextreme-react/check-box';\n\n// Iconos\nimport { FontAwesomeIcon } from \"@fortawesome/react-fontawesome\";\nimport { faGlasses } from \"@fortawesome/pro-solid-svg-icons\";\nimport { faPencilAlt } from \"@fortawesome/pro-solid-svg-icons\";\nimport { faArrowRotateLeft } from \"@fortawesome/pro-solid-svg-icons\";\nimport { faSave } from \"@fortawesome/pro-solid-svg-icons\";\nimport { faList } from \"@fortawesome/pro-duotone-svg-icons\";\nimport { faFilePdf } from \"@fortawesome/pro-solid-svg-icons\";\nimport { faArrowsRotate } from \"@fortawesome/pro-solid-svg-icons\";\nimport { faFileAlt } from \"@fortawesome/pro-solid-svg-icons\";\nimport { faPalletBoxes } from \"@fortawesome/pro-duotone-svg-icons\";\nimport { faPlay } from \"@fortawesome/pro-solid-svg-icons\";\nimport { faTrash } from \"@fortawesome/pro-solid-svg-icons\";\nimport { faWindowClose } from \"@fortawesome/pro-solid-svg-icons\";\nimport { faArrowUpRightFromSquare } from \"@fortawesome/pro-solid-svg-icons\";\nimport { faThumbsUp } from \"@fortawesome/pro-solid-svg-icons\";\nimport { faLeft } from \"@fortawesome/pro-solid-svg-icons\";\nimport { faRight } from \"@fortawesome/pro-solid-svg-icons\";\n\nimport 'devextreme/data/odata/store';\nimport CustomStore from 'devextreme/data/custom_store';\n\nimport DataSource from 'devextreme/data/data_source';\n\nimport '../ListStyle.css';\n\n//FileUploader\nimport FileUploader from 'devextreme-react/file-uploader';\n\n//FileManager\nimport FileManager, { Permissions } from 'devextreme-react/file-manager';\n\nimport dxDateBox from \"devextreme/ui/date_box\";\n\nimport dxNumberBox from \"devextreme/ui/number_box\";\n\nimport TransactionStatus from \"../TransactionStatus/TransactionStatus.js\";\n\nimport Lambda from 'aws-sdk/clients/lambda';\n\nimport { Popup, Position, ToolbarItem } from 'devextreme-react/popup';\n\nimport ScrollView from 'devextreme-react/scroll-view';\n\nimport { Workbook } from 'exceljs';\nimport { saveAs } from 'file-saver';\nimport { exportDataGrid } from 'devextreme/excel_exporter'\n\ndxDateBox.defaultOptions({\n options: {\n dateSerializationFormat: \"yyyy-MM-dd\"\n }\n});\n\ndxNumberBox.defaultOptions({\n options: {\n step: 0\n }\n});\n\nfunction isNotEmpty(value) {\n return value !== undefined && value !== null && value !== '';\n}\n\nexport default function InvTransferOrder(props) {\n const history = useHistory();\n\n const [isDetail, setIsDetail] = useState(false);\n const [id, setId] = useState();\n const [permissionLevel] = useState(props.nivel);\n const [approveInvTransferOrder] = useState(props.approveInvTransferOrder);\n const [invItemFulfillment] = useState(props.invItemFulfillment);\n const [invItemFulfillmentLevel] = useState(props.invItemFulfillmentLevel);\n const [invItemReceipt] = useState(props.invItemReceipt);\n const [invItemReceiptLevel] = useState(props.invItemReceiptLevel);\n\n const [invTransferOrderPayload, setInvTransferOrderPayload] = useState({\n header: {},\n detail: [],\n movEstatusLog: []\n });\n\n const [autoExpandAll, setAutoExpandAll] = useState(true);\n\n // setValue para el control tab\n const [value, setValue] = React.useState(0);\n\n const [visibleLoadPanel, setVisibleLoadPanel] = useState(false);\n\n const [visibleToast, setVisibleToast] = useState(false);\n const [messageToast, setMessageToast] = useState('');\n const [typeToast, setTypeToast] = useState('success');\n\n const [conceptos, setConceptos] = useState([]);\n const [almacenes, setAlmacenes] = useState([]);\n const [tipoDano, setTipoDano] = useState([]);\n const [autorizacionProveedor, setAutorizacionProveedor] = useState([]);\n const [observaciones, setObservaciones] = useState([]);\n\n const [popupVisible, setPopupVisible] = useState(false);\n const [popupTitle, setPopupTitle] = useState('Íconos Pedido');\n\n const [activateUpdateGrid, setActivateUpdateGrid] = useState(false);\n const [acceptCustomValues, setAcceptCustomValue] = useState(false);\n const [activateSaveButton, setActivateSaveButton] = useState(false);\n const [activateConfirmButton, setActivateConfirmButton] = useState(false);\n const [activateApproveButton, setActivateApproveButton] = useState(false);\n const [activateDeleteButton, setActivateDeleteButton] = useState(false);\n const [activateCancelButton, setActivateCancelButton] = useState(false);\n const [activatePDFButton, setActivatePDFButton] = useState(false);\n const [activateUpdateForm, setActivateUpdateForm] = useState(false);\n const [activateAttachments, setActivateAttachments] = useState(false);\n const [activateSalidaTraspaso, setActivateSalidaTraspaso] = useState(false);\n const [activateReciboTraspaso, setActivateReciboTraspaso] = useState(false);\n\n //Ref para el form\n const [formDatosGeneralesRef] = useState(React.createRef());\n\n //Ref para el grid Articulos\n const [gridArticulosRef, setGridArticulosRef] = useState(React.createRef());\n\n const [attachments, setAttachments] = useState([]);\n\n const handleChange = (event, newValue) => {\n setValue(newValue);\n };\n\n const filterBuilderPopupPosition = {\n of: window,\n at: 'top',\n my: 'top',\n offset: { y: 10 },\n };\n\n const allowedPageSizes = [5, 10, 15, 20, 'all'];\n\n const exportFormats = ['xlsx'];\n\n function getOrderDay(rowData) {\n return (new Date(rowData.OrderDate)).getDay();\n }\n\n const filterBuilder = {\n customOperations: [{\n name: 'weekends',\n caption: 'Weekends',\n dataTypes: ['date'],\n icon: 'check',\n hasValue: false,\n calculateFilterExpression: () => [[getOrderDay, '=', 0], 'or', [getOrderDay, '=', 6]],\n }],\n allowHierarchicalFields: true,\n };\n\n const filterValue = [['Estatus', '=', 'Sin Afectar']];\n\n //Ref para el grid Tablero de Control\n const [gridTableroRef] = useState(React.createRef());\n\n function onAutoExpandAllChanged() {\n setAutoExpandAll(!autoExpandAll)\n };\n\n const getInvTransferOrderRecords = React.useCallback(async (sqlFilter) => {\n try {\n let apiName = 'AdminSC';\n let path = '/procesainvsoltraspaso';\n\n let myInit = {\n headers: {\n 'Content-Type': 'application/json',\n Authorization: `${(await Auth.currentSession()).getAccessToken().getJwtToken()}`\n },\n queryStringParameters: {\n action: 'list',\n sqlFilter: sqlFilter,\n salesAccess: props.salesAccess,\n sucursal: props.sucursal,\n username: JSON.parse(JSON.stringify(await Auth.currentAuthenticatedUser())).username\n }\n }\n\n var invTransferOrdersGet = await API.get(apiName, path, myInit);\n }\n catch (e) {\n if (e === 'No current user') {\n history.push('/');\n\n window.location.reload();\n }\n }\n\n return invTransferOrdersGet;\n }, [history, props.salesAccess, props.sucursal]);\n\n const getArticulo = React.useCallback(async (sqlFilter) => {\n let apiName = 'AdminSC';\n let path = '/getcatalogo';\n\n let myInit = {\n headers: {\n 'Content-Type': 'application/json',\n Authorization: `${(await Auth.currentSession()).getAccessToken().getJwtToken()}`\n },\n queryStringParameters: {\n type: 'Articulo',\n username: JSON.parse(JSON.stringify(await Auth.currentAuthenticatedUser())).username,\n sqlFilter: sqlFilter\n }\n }\n\n var articulosGet = await API.get(apiName, path, myInit);\n\n return articulosGet;\n\n }, []);\n\n const getConceptos = React.useCallback(async () => {\n let apiName = 'AdminSC';\n let path = '/getcatalogo';\n\n let myInit = {\n headers: {\n 'Content-Type': 'application/json',\n Authorization: `${(await Auth.currentSession()).getAccessToken().getJwtToken()}`\n },\n queryStringParameters: {\n type: 'Concepto',\n modulo: 'INV',\n username: JSON.parse(JSON.stringify(await Auth.currentAuthenticatedUser())).username\n }\n }\n\n var conceptosGet = await API.get(apiName, path, myInit);\n\n setConceptos(conceptosGet);\n\n return conceptosGet;\n }, []);\n\n const getAlmacenes = React.useCallback(async () => {\n let apiName = 'AdminSC';\n let path = '/getcatalogo';\n\n let myInit = {\n headers: {\n 'Content-Type': 'application/json',\n Authorization: `${(await Auth.currentSession()).getAccessToken().getJwtToken()}`\n },\n queryStringParameters: {\n type: 'AlmacenNormal',\n username: JSON.parse(JSON.stringify(await Auth.currentAuthenticatedUser())).username\n }\n }\n\n var pedidosGet = await API.get(apiName, path, myInit);\n\n setAlmacenes(pedidosGet);\n\n }, []);\n\n const getObservaciones = React.useCallback(async () => {\n let apiName = 'AdminSC';\n let path = '/getcatalogo';\n\n let myInit = {\n headers: {\n 'Content-Type': 'application/json',\n Authorization: `${(await Auth.currentSession()).getAccessToken().getJwtToken()}`\n },\n queryStringParameters: {\n type: 'Observacion',\n modulo: 'INV',\n username: JSON.parse(JSON.stringify(await Auth.currentAuthenticatedUser())).username\n }\n }\n\n var observacionesGet = await API.get(apiName, path, myInit);\n\n setObservaciones(observacionesGet);\n\n }, []);\n\n const store = useMemo(() => {\n return new CustomStore({\n key: 'ID',\n load(loadOptions) {\n let sqlFilter = '(';\n [\n 'filter'\n ].forEach((i) => {\n if (i in loadOptions && isNotEmpty(loadOptions[i])) {\n var filters = loadOptions[i];\n\n var filtersLength = filters.length;\n\n for (var i = 0; i <= filtersLength; i++) {\n var singleFilter = filters[i];\n var singleFilterType = typeof singleFilter;\n var singleFilterIsArray = Array.isArray(singleFilter);\n var singleFilterIsDate = singleFilter instanceof Date;\n\n if (singleFilter === 'NULL') {\n singleFilter = '0';\n }\n\n if (singleFilterType.toString() === 'object' && singleFilterIsArray) {\n sqlFilter += '(';\n\n var subFiltersLength = singleFilter.length;\n\n for (var i2 = 0; i2 <= subFiltersLength; i2++) {\n var singleSubFilter = singleFilter[i2];\n var singleSubFilterType = typeof singleSubFilter;\n var singleSubFilterIsArray = Array.isArray(singleSubFilter);\n var singleSubFilterIsDate = singleSubFilter instanceof Date\n\n if (singleSubFilter === 'NULL') {\n singleSubFilter = '0';\n }\n\n if (singleSubFilterType.toString() === 'object' && singleSubFilterIsArray) {\n sqlFilter += '(';\n\n var subSubFiltersLength = singleSubFilter.length;\n\n for (var i3 = 0; i3 <= subSubFiltersLength; i3++) {\n var singleSubSubFilter = singleSubFilter[i3];\n var singleSubSubFilterType = typeof singleSubSubFilter;\n var singleSubSubFilterIsArray = Array.isArray(singleSubSubFilter);\n var singleSubSubFilterIsDate = singleSubSubFilter instanceof Date\n\n if (singleSubSubFilter === 'NULL') {\n singleSubSubFilter = '0';\n }\n\n if (singleSubSubFilterType.toString() === 'object' && singleSubSubFilterIsArray) {\n sqlFilter += '(';\n\n var subSubSubFiltersLength = singleSubSubFilter.length;\n\n for (var i4 = 0; i4 <= subSubSubFiltersLength; i4++) {\n var singleSubSubSubFilter = singleSubSubFilter[i4];\n var singleSubSubSubFilterType = typeof singleSubSubSubFilter;\n var singleSubSubSubFilterIsArray = Array.isArray(singleSubSubSubFilter);\n var singleSubSubSubFilterIsDate = singleSubSubSubFilter instanceof Date\n\n if (singleSubSubSubFilter === 'NULL') {\n singleSubSubSubFilter = '0';\n }\n\n if (singleSubSubSubFilterType.toString() === 'object' && singleSubSubSubFilterIsArray) {\n sqlFilter += '(';\n\n var subSubSubSubFiltersLength = singleSubSubSubFilter.length;\n\n for (var i5 = 0; i5 <= subSubSubSubFiltersLength; i5++) {\n var singleSubSubSubSubFilter = singleSubSubSubFilter[i5];\n var singleSubSubSubSubFilterType = typeof singleSubSubSubSubFilter;\n var singleSubSubSubSubFilterIsArray = Array.isArray(singleSubSubSubSubFilter);\n var singleSubSubSubSubFilterIsDate = singleSubSubSubSubFilter instanceof Date\n\n if (singleSubSubSubSubFilter === 'NULL') {\n singleSubSubSubSubFilter = '0';\n }\n\n if (singleSubSubSubSubFilterType.toString() === 'string') {\n if (singleSubSubSubSubFilter === 'contains') {\n filters[i][i2][i3][i4][i5] = 'LIKE';\n singleSubSubSubSubFilter = 'LIKE';\n\n filters[i][i2][i3][i4][i5 + 1] = '\\'%' + filters[i][i2][i3][i4][i5 + 1] + '%\\'';\n }\n else if (singleSubSubSubSubFilter === 'notcontains') {\n filters[i][i2][i3][i4][i5] = 'NOT LIKE';\n singleSubSubSubSubFilter = 'NOT LIKE';\n\n filters[i][i2][i3][i4][i5 + 1] = '\\'%' + filters[i][i2][i3][i4][i5 + 1] + '%\\'';\n }\n else if (singleSubSubSubSubFilter === 'startswith') {\n filters[i][i2][i3][i4][i5] = 'LIKE';\n singleSubSubSubSubFilter = 'LIKE';\n\n filters[i][i2][i3][i4][i5 + 1] = '\\'' + filters[i][i2][i3][i4][i5 + 1] + '%\\'';\n }\n else if (singleSubSubSubSubFilter === 'endswith') {\n filters[i][i2][i3][i4][i5] = 'LIKE';\n singleSubSubSubSubFilter = 'LIKE';\n\n filters[i][i2][i3][i4][i5 + 1] = '\\'%' + filters[i][i2][i3][i4][i5 + 1] + '\\'';\n }\n else if (singleSubSubSubSubFilter === '=' || singleSubSubSubSubFilter === '<>' || singleSubSubSubSubFilter === '>' || singleSubSubSubSubFilter === '>=' || singleSubSubSubSubFilter === '<' || singleSubSubSubSubFilter === '<=') {\n if (!filters[i][i2][i3][i4][i5 + 1])\n filters[i][i2][i3][i4][i5 + 1] = 'NULL';\n else if (typeof filters[i][i2][i3][i4][i5 + 1] === 'string') {\n filters[i][i2][i3][i4][i5 + 1] = '\\'' + filters[i][i2][i3][i4][i5 + 1] + '\\'';\n }\n }\n else if (singleSubSubSubSubFilter === '!') {\n filters[i][i2][i3][i4][i5] = 'NOT';\n singleSubSubSubSubFilter = 'NOT';\n }\n\n sqlFilter += ' ' + singleSubSubSubSubFilter + ' ';\n }\n else if (singleSubSubSubSubFilterType.toString() === 'object' && singleSubSubSubSubFilterIsDate) {\n sqlFilter += ' \\'' + singleSubSubSubSubFilter.toISOString().split('T')[0] + '\\' ';\n }\n else if (singleSubSubSubSubFilterType.toString() === 'number') {\n sqlFilter += ' ' + singleSubSubSubSubFilter.toString() + ' ';\n }\n else if (singleSubSubSubSubFilterType.toString() === 'boolean') {\n if (singleSubSubSubSubFilter.toString() === 'true')\n sqlFilter += '1 ';\n else if (singleSubSubSubSubFilter.toString() === 'false' || singleSubSubSubSubFilter === null || singleSubSubSubSubFilter === undefined)\n sqlFilter += '0 ';\n }\n }\n }\n else if (singleSubSubSubFilterType.toString() === 'string') {\n if (singleSubSubSubFilter === 'contains') {\n filters[i][i2][i3][i4] = 'LIKE';\n singleSubSubSubFilter = 'LIKE';\n\n filters[i][i2][i3][i4 + 1] = '\\'%' + filters[i][i2][i3][i4 + 1] + '%\\'';\n }\n else if (singleSubSubSubFilter === 'notcontains') {\n filters[i][i2][i3][i4] = 'NOT LIKE';\n singleSubSubSubFilter = 'NOT LIKE';\n\n filters[i][i2][i3][i4 + 1] = '\\'%' + filters[i][i2][i3][i4 + 1] + '%\\'';\n }\n else if (singleSubSubSubFilter === 'startswith') {\n filters[i][i2][i3][i4] = 'LIKE';\n singleSubSubSubFilter = 'LIKE';\n\n filters[i][i2][i3][i4 + 1] = '\\'' + filters[i][i2][i3][i4 + 1] + '%\\'';\n }\n else if (singleSubSubSubFilter === 'endswith') {\n filters[i][i2][i3][i4] = 'LIKE';\n singleSubSubSubFilter = 'LIKE';\n\n filters[i][i2][i3][i4 + 1] = '\\'%' + filters[i][i2][i3][i4 + 1] + '\\'';\n }\n else if (singleSubSubSubFilter === '=' || singleSubSubSubFilter === '<>' || singleSubSubSubFilter === '>' || singleSubSubSubFilter === '>=' || singleSubSubSubFilter === '<' || singleSubSubSubFilter === '<=') {\n if (!filters[i][i2][i3][i4 + 1])\n filters[i][i2][i3][i4 + 1] = 'NULL';\n else if (typeof filters[i][i2][i3][i4 + 1] === 'string') {\n filters[i][i2][i3][i4 + 1] = '\\'' + filters[i][i2][i3][i4 + 1] + '\\'';\n }\n }\n else if (singleSubSubSubFilter === '!') {\n filters[i][i2][i3][i4] = 'NOT';\n singleSubSubSubFilter = 'NOT';\n }\n\n sqlFilter += ' ' + singleSubSubSubFilter + ' ';\n }\n else if (singleSubSubSubFilterType.toString() === 'object' && singleSubSubSubFilterIsDate) {\n sqlFilter += ' \\'' + singleSubSubSubFilter.toISOString().split('T')[0] + '\\' ';\n }\n else if (singleSubSubSubFilterType.toString() === 'number') {\n sqlFilter += ' ' + singleSubSubSubFilter.toString() + ' ';\n }\n else if (singleSubSubSubFilterType.toString() === 'boolean') {\n if (singleSubSubSubFilter.toString() === 'true')\n sqlFilter += '1 ';\n else if (singleSubSubSubFilter.toString() === 'false' || singleSubSubSubFilter === null || singleSubSubSubFilter === undefined)\n sqlFilter += '0 ';\n }\n }\n\n sqlFilter += ')';\n }\n else if (singleSubSubFilterType.toString() === 'string') {\n if (singleSubSubFilter === 'contains') {\n filters[i][i2][i3] = 'LIKE';\n singleSubSubFilter = 'LIKE';\n\n filters[i][i2][i3 + 1] = '\\'%' + filters[i][i2][i3 + 1] + '%\\'';\n }\n else if (singleSubSubFilter === 'notcontains') {\n filters[i][i2][i3] = 'NOT LIKE';\n singleSubSubFilter = 'NOT LIKE';\n\n filters[i][i2][i3 + 1] = '\\'%' + filters[i][i2][i3 + 1] + '%\\'';\n }\n else if (singleSubSubFilter === 'startswith') {\n filters[i][i2][i3] = 'LIKE';\n singleSubSubFilter = 'LIKE';\n\n filters[i][i2][i3 + 1] = '\\'' + filters[i][i2][i3 + 1] + '%\\'';\n }\n else if (singleSubSubFilter === 'endswith') {\n filters[i][i2][i3] = 'LIKE';\n singleSubSubFilter = 'LIKE';\n\n filters[i][i2][i3 + 1] = '\\'%' + filters[i][i2][i3 + 1] + '\\'';\n }\n else if (singleSubSubFilter === '=' || singleSubSubFilter === '<>' || singleSubSubFilter === '>' || singleSubSubFilter === '>=' || singleSubSubFilter === '<' || singleSubSubFilter === '<=') {\n if (!filters[i][i2][i3 + 1])\n filters[i][i2][i3 + 1] = 'NULL';\n else if (typeof filters[i][i2][i3 + 1] === 'string') {\n filters[i][i2][i3 + 1] = '\\'' + filters[i][i2][i3 + 1] + '\\'';\n }\n }\n else if (singleSubSubFilter === '!') {\n filters[i][i2][i3] = 'NOT';\n singleSubSubFilter = 'NOT';\n }\n sqlFilter += ' ' + singleSubSubFilter + ' ';\n }\n else if (singleSubSubFilterType.toString() === 'object' && singleSubSubFilterIsDate) {\n sqlFilter += ' \\'' + singleSubSubFilter.toISOString().split('T')[0] + '\\' ';\n }\n else if (singleSubSubFilterType.toString() === 'number') {\n sqlFilter += ' ' + singleSubSubFilter.toString() + ' ';\n }\n else if (singleSubSubFilterType.toString() === 'boolean') {\n if (singleSubSubFilter.toString() === 'true')\n sqlFilter += '1 ';\n else if (singleSubSubFilter.toString() === 'false' || singleSubSubFilter === null || singleSubSubFilter === undefined)\n sqlFilter += '0 ';\n }\n }\n\n sqlFilter += ')';\n }\n else if (singleSubFilterType.toString() === 'string') {\n if (singleSubFilter === 'contains') {\n filters[i][i2] = 'LIKE';\n singleSubFilter = 'LIKE';\n\n filters[i][i2 + 1] = '\\'%' + filters[i][i2 + 1] + '%\\'';\n }\n else if (singleSubFilter === 'notcontains') {\n filters[i][i2] = 'NOT LIKE';\n singleSubFilter = 'NOT LIKE';\n\n filters[i][i2 + 1] = '\\'%' + filters[i][i2 + 1] + '%\\'';\n }\n else if (singleSubFilter === 'startswith') {\n filters[i][i2] = 'LIKE';\n singleSubFilter = 'LIKE';\n\n filters[i][i2 + 1] = '\\'' + filters[i][i2 + 1] + '%\\'';\n }\n else if (singleSubFilter === 'endswith') {\n filters[i][i2] = 'LIKE';\n singleSubFilter = 'LIKE';\n\n filters[i][i2 + 1] = '\\'%' + filters[i][i2 + 1] + '\\'';\n }\n else if (singleSubFilter === '=' || singleSubFilter === '<>' || singleSubFilter === '>' || singleSubFilter === '>=' || singleSubFilter === '<' || singleSubFilter === '<=') {\n if (!filters[i][i2 + 1])\n filters[i][i2 + 1] = 'NULL';\n else if (typeof filters[i][i2 + 1] === 'string') {\n filters[i][i2 + 1] = '\\'' + filters[i][i2 + 1] + '\\'';\n }\n }\n else if (singleSubFilter === '!') {\n filters[i][i2] = 'NOT';\n singleSubFilter = 'NOT';\n }\n sqlFilter += ' ' + singleSubFilter + ' ';\n }\n else if (singleSubFilterType.toString() === 'object' && singleSubFilterIsDate) {\n sqlFilter += ' \\'' + singleSubFilter.toISOString().split('T')[0] + '\\' ';\n }\n else if (singleSubFilterType.toString() === 'number') {\n sqlFilter += ' ' + singleSubFilter.toString() + ' ';\n }\n else if (singleSubFilterType.toString() === 'boolean') {\n if (singleSubFilter.toString() === 'true')\n sqlFilter += '1 ';\n else if (singleSubFilter.toString() === 'false' || singleSubFilter === null || singleSubFilter === undefined)\n sqlFilter += '0 ';\n }\n }\n\n sqlFilter += ')';\n }\n else if (singleFilterType.toString() === 'string') {\n if (singleFilter === 'contains') {\n filters[i] = 'LIKE';\n singleFilter = 'LIKE';\n\n filters[i + 1] = '\\'%' + filters[i + 1] + '%\\'';\n }\n else if (singleFilter === 'notcontains') {\n filters[i] = 'NOT LIKE';\n singleFilter = 'NOT LIKE';\n\n filters[i + 1] = '\\'%' + filters[i + 1] + '%\\'';\n }\n else if (singleFilter === 'startswith') {\n filters[i] = 'LIKE';\n singleFilter = 'LIKE';\n\n filters[i + 1] = '\\'' + filters[i + 1] + '%\\'';\n }\n else if (singleFilter === 'endswith') {\n filters[i] = 'LIKE';\n singleFilter = 'LIKE';\n\n filters[i + 1] = '\\'%' + filters[i + 1] + '\\'';\n }\n else if (singleFilter === '=' || singleFilter === '<>' || singleFilter === '>' || singleFilter === '>=' || singleFilter === '<' || singleFilter === '<=') {\n if (!filters[i + 1])\n filters[i + 1] = 'NULL';\n else if (typeof filters[i + 1] === 'string') {\n filters[i + 1] = '\\'' + filters[i + 1] + '\\'';\n }\n }\n else if (singleFilter === '!') {\n filters[i] = 'NOT';\n singleFilter = 'NOT';\n }\n sqlFilter += ' ' + singleFilter + ' ';\n }\n else if (singleFilterType.toString() === 'object' && singleFilterIsDate) {\n sqlFilter += ' \\'' + singleFilter.toISOString().split('T')[0] + '\\' ';\n }\n else if (singleFilterType.toString() === 'number') {\n sqlFilter += ' ' + singleFilter.toString() + ' ';\n }\n else if (singleFilterType.toString() === 'boolean') {\n if (singleFilter.toString() === 'true')\n sqlFilter += '1 ';\n else if (singleFilter.toString() === 'false' || singleFilter === null || singleFilter === undefined)\n sqlFilter += '0 ';\n }\n }\n\n sqlFilter += ')';\n }\n });\n\n async function getRecords() {\n if (sqlFilter === '(')\n sqlFilter = '';\n\n var records = await getInvTransferOrderRecords(sqlFilter);\n return {\n data: records,\n totalCount: records.length\n };\n }\n\n return getRecords()\n .then(function (result) {\n return result;\n })\n .catch(() => { throw new Error('Data Loading Error'); });\n }\n })\n }, [getInvTransferOrderRecords]);\n\n const storeArticulo = useMemo(() => {\n return new CustomStore({\n key: 'value',\n load(loadOptions) {\n let sqlFilter = '';\n [\n 'filter'\n ].forEach((i) => {\n sqlFilter = loadOptions.searchValue;\n });\n\n async function getRecords() {\n if (sqlFilter) {\n var records = await getArticulo(sqlFilter);\n\n return {\n data: records,\n totalCount: records.length\n };\n }\n else {\n return {\n data: [],\n totalCount: 0\n };\n }\n }\n\n return getRecords()\n .then(function (result) {\n return result;\n })\n .catch(() => { throw new Error('Data Loading Error'); });\n },\n byKey: (key) => {\n async function getRecords(key) {\n var records = await getArticulo(key);\n\n return records;\n }\n\n return getRecords(key);\n }\n })\n }, [getArticulo]);\n\n var conceptosDataSource = useMemo(() => {\n return new DataSource({\n paginate: true,\n store: {\n type: \"array\",\n key: \"Concepto\",\n data: conceptos\n }\n });\n }, [conceptos]);\n\n var almacenDataSource = useMemo(() => {\n return new DataSource({\n paginate: true,\n store: {\n type: \"array\",\n key: \"Almacen\",\n data: almacenes\n }\n });\n }, [almacenes]);\n\n var fechaEmisionEditorOptions = useMemo(() => {\n return {\n width: '100%',\n readOnly: true\n };\n }, []);\n\n var movimientoEditorOptions = useMemo(() => {\n return {\n width: '100%',\n readOnly: true\n };\n }, []);\n\n var observacionesDataSource = useMemo(() => {\n return new DataSource({\n paginate: true,\n store: {\n type: \"array\",\n key: \"Observacion\",\n data: observaciones\n }\n });\n }, [observaciones]);\n\n //Opciones Conceptos\n try {\n var conceptoEditorOptions = useMemo(() => {\n return {\n dataSource: conceptosDataSource,\n displayExpr: 'name',\n valueExpr: 'value',\n searchEnabled: true,\n value: (invTransferOrderPayload.header.Concepto ? invTransferOrderPayload.header.Concepto : ''),\n width: '100%'\n };\n }, [conceptosDataSource, invTransferOrderPayload.header.Concepto]);\n }\n catch (e) {\n var conceptoEditorOptions = {\n dataSource: conceptosDataSource,\n displayExpr: 'name',\n valueExpr: 'value',\n searchEnabled: true,\n value: '',\n width: '100%'\n };\n };\n\n //Opciones del campo Almacen\n try {\n var almacenEditorOptions = useMemo(() => {\n return {\n dataSource: almacenDataSource,\n displayExpr: 'name',\n valueExpr: 'value',\n searchEnabled: true,\n acceptCustomValue: !acceptCustomValues,\n value: (invTransferOrderPayload.header.Almacen ? invTransferOrderPayload.header.Almacen : ''),\n width: '100%'\n };\n }, [acceptCustomValues, almacenDataSource, invTransferOrderPayload.header.Almacen]);\n }\n catch (e) {\n var almacenEditorOptions = {\n dataSource: almacenDataSource,\n displayExpr: 'name',\n valueExpr: 'value',\n searchEnabled: true,\n acceptCustomValue: acceptCustomValues,\n value: '',\n width: '100%'\n };\n }\n\n //Opciones del campo Almacen Destino\n try {\n var almacenDestinoEditorOptions = useMemo(() => {\n return {\n dataSource: almacenDataSource,\n displayExpr: 'name',\n valueExpr: 'value',\n searchEnabled: true,\n acceptCustomValue: !acceptCustomValues,\n value: (invTransferOrderPayload.header.AlmacenDestino ? invTransferOrderPayload.header.AlmacenDestino : ''),\n width: '100%'\n };\n }, [acceptCustomValues, almacenDataSource, invTransferOrderPayload.header.AlmacenDestino]);\n }\n catch (e) {\n var almacenDestinoEditorOptions = {\n dataSource: almacenDataSource,\n displayExpr: 'name',\n valueExpr: 'value',\n searchEnabled: true,\n acceptCustomValue: acceptCustomValues,\n value: '',\n width: '100%'\n };\n }\n\n //Opciones del campo Observaciones\n try {\n var observacionesEditorOptions = useMemo(() => {\n return {\n dataSource: observacionesDataSource,\n displayExpr: 'name',\n valueExpr: 'value',\n searchEnabled: true,\n acceptCustomValue: !acceptCustomValues,\n value: (invTransferOrderPayload.header.Observaciones ? invTransferOrderPayload.header.Observaciones : ''),\n width: '100%'\n };\n }, [acceptCustomValues, observacionesDataSource, invTransferOrderPayload.header.Observaciones]);\n }\n catch (e) {\n var observacionesEditorOptions = {\n dataSource: observacionesDataSource,\n displayExpr: 'name',\n valueExpr: 'value',\n searchEnabled: true,\n acceptCustomValue: acceptCustomValues,\n value: '',\n width: '100%'\n };\n }\n\n var cantidadEditorOptions = useMemo(() => {\n return {\n format: '#'\n };\n }, []);\n\n var comentariosEditorOptions = useMemo(() => {\n return {\n };\n }, []);\n\n var autorizacionEditorOptions = useMemo(() => {\n return {\n width: '100%',\n readOnly: true\n };\n }, []);\n\n //Opciones del campo Articulo\n try {\n var articuloEditorOptions = useMemo(() => {\n return {\n dataSource: storeArticulo,\n displayExpr: 'name',\n valueExpr: 'value',\n searchEnabled: true,\n showClearButton: true,\n acceptCustomValue: false,\n disabled: false,\n // searchTimeout: 500,\n width: '100%',\n clearButtonText: 'Cerrar',\n noDataText: 'No se encontraron resultados'\n };\n }, [storeArticulo]);\n }\n catch (e) {\n var articuloEditorOptions = {\n dataSource: storeArticulo,\n displayExpr: 'name',\n valueExpr: 'value',\n searchEnabled: true,\n acceptCustomValue: false,\n width: '100%'\n };\n }\n\n async function uploadChunk(file, uploadInfo) {\n try {\n var responseS3 = await Storage.put(\"/inv/\" + id + \"/\" + file.name, uploadInfo.chunkBlob, {\n contentType: file.type,\n ACL: 'public-read'\n });\n\n //Obtenemos el nombre del bucket\n let bucketName = Storage._config.AWSS3.bucket;\n\n\n let apiName = 'AdminSC';\n let path = '/uploadattachment';\n\n let myInit = {\n headers: {\n 'Content-Type': 'application/json',\n Authorization: `${(await Auth.currentSession()).getAccessToken().getJwtToken()}`\n },\n body: {\n action: 'register',\n bucketName: bucketName,\n type: 'inv',\n id: id,\n Key: \"/inv/\" + id + \"/\" + file.name,\n fileName: file.name,\n username: JSON.parse(JSON.stringify(await Auth.currentAuthenticatedUser())).username\n }\n }\n\n var attachmentsResult = await API.post(apiName, path, myInit);\n\n //Obtenemos los attachments\n var attachmentsGet = await Storage.list(\"/inv/\" + id);\n var attachmentsAux = [];\n\n for (var attachmentsGetIndex in attachmentsGet) {\n var singleAttachmentsGet = attachmentsGet[attachmentsGetIndex];\n\n var singleAttachment = {\n name: singleAttachmentsGet.key.split('/').pop(),\n isDirectory: false,\n size: singleAttachmentsGet.size,\n };\n\n attachmentsAux.push(singleAttachment);\n }\n\n setAttachments(attachmentsAux);\n }\n catch (err) {\n console.log(\"Error uploading file:\", err);\n }\n };\n\n async function onAttachmentDeleting(e) {\n var fileName = e.item.key;\n\n //Primero borramos el archivo de S3\n var attachmentsDelete = await Storage.remove(\"/inv/\" + id + \"/\" + fileName);\n\n //Despues borramos el attachment en Intelisis\n let bucketName = Storage._config.AWSS3.bucket;\n\n let apiName = 'AdminSC';\n let path = '/uploadattachment';\n\n let myInit = {\n headers: {\n 'Content-Type': 'application/json',\n Authorization: `${(await Auth.currentSession()).getAccessToken().getJwtToken()}`\n },\n body: {\n action: 'delete',\n bucketName: bucketName,\n type: 'inv',\n id: id,\n Key: \"/inv/\" + id + \"/\" + fileName,\n fileName: fileName,\n username: JSON.parse(JSON.stringify(await Auth.currentAuthenticatedUser())).username\n }\n }\n\n var attachmentsResult = await API.post(apiName, path, myInit);\n\n //Finalmente sincronizamos el state\n var attachmentsGet = await Storage.list(\"/inv/\" + id);\n var attachmentsAux = [];\n\n for (var attachmentsGetIndex in attachmentsGet) {\n var singleAttachmentsGet = attachmentsGet[attachmentsGetIndex];\n\n var singleAttachment = {\n name: singleAttachmentsGet.key.split('/').pop(),\n isDirectory: false,\n size: singleAttachmentsGet.size,\n };\n\n attachmentsAux.push(singleAttachment);\n }\n\n setAttachments(attachmentsAux);\n };\n\n function downloadBlob(blob, filename) {\n const url = URL.createObjectURL(blob);\n const a = document.createElement('a');\n a.href = url;\n a.download = filename || 'download';\n const clickHandler = () => {\n setTimeout(() => {\n URL.revokeObjectURL(url);\n a.removeEventListener('click', clickHandler);\n }, 150);\n };\n\n a.addEventListener('click', clickHandler, false);\n\n a.click();\n\n return a;\n };\n\n async function onItemDownloading(e) {\n e.cancel = true;\n\n const downloadFileResponse = await Storage.get(\"/inv/\" + id + \"/\" + e.item.name, { download: true });\n\n downloadBlob(downloadFileResponse.Body, e.item.name);\n };\n\n function openBlob(blob, filename) {\n const url = URL.createObjectURL(blob);\n\n window.open(url, \"_blank\");\n };\n\n async function onAttachmentOpen(e) {\n const downloadFileResponse = await Storage.get(\"/inv/\" + id + \"/\" + e.file.name, { download: true });\n\n openBlob(downloadFileResponse.Body, e.file.name);\n };\n\n const getinvTransferOrderPayload = React.useCallback(async (ID) => {\n try {\n let apiName = 'AdminSC';\n let path = '/procesainvsoltraspaso';\n\n let myInit = {\n headers: {\n 'Content-Type': 'application/json',\n Authorization: `${(await Auth.currentSession()).getAccessToken().getJwtToken()}`\n },\n queryStringParameters: {\n ID: ID,\n action: 'payload',\n username: JSON.parse(JSON.stringify(await Auth.currentAuthenticatedUser())).username\n }\n };\n\n var payloadGet = await API.get(apiName, path, myInit);\n\n setInvTransferOrderPayload(payloadGet);\n\n //Obtenemos los attachments\n var attachmentsGet = await Storage.list(\"/inv/\" + ID);\n var attachmentsAux = [];\n\n for (var attachmentsGetIndex in attachmentsGet) {\n var singleAttachmentsGet = attachmentsGet[attachmentsGetIndex];\n\n var singleAttachment = {\n name: singleAttachmentsGet.key.split('/').pop(),\n isDirectory: false,\n size: singleAttachmentsGet.size,\n };\n\n attachmentsAux.push(singleAttachment);\n }\n\n setAttachments(attachmentsAux);\n }\n catch (e) {\n if (e === 'No current user') {\n history.push('/');\n\n window.location.reload();\n }\n }\n\n return payloadGet;\n\n }, [history]);\n\n function editInvTransferOrder(data) {\n return (\n <Link to={`/InvTransferOrder/${data.data.ID}`}>\n <button class=\"bg-blue-500 hover:bg-blue-700 text-white py-1 px-3 rounded\" onClick={() => editButton(data.data.ID)}><FontAwesomeIcon icon={permissionLevel === 'Editar' ? faPencilAlt : faGlasses} /> {permissionLevel === 'Editar' ? 'Editar' : 'Ver'}</button>\n </Link>\n )\n }\n\n function openRelatedRecord(redirect) {\n if (redirect) {\n var baseUrl = window.location.href.split('#/')[0];\n\n redirect = baseUrl + '#' + redirect;\n\n window.open(redirect, \"_blank\");\n }\n };\n\n function openRelatedRecordButton(data) {\n return (\n <button onClick={() => openRelatedRecord(data.data.redirect)}><FontAwesomeIcon icon={faArrowUpRightFromSquare} /></button>\n )\n };\n\n function estatusRelatedRecords(data) {\n return (\n <TransactionStatus {...props} Estatus={data.data.Estatus} />\n )\n };\n\n function blobToBase64(blob) {\n return new Promise((resolve, _) => {\n const reader = new FileReader();\n reader.onloadend = () => resolve(reader.result);\n reader.readAsDataURL(blob);\n });\n };\n\n const newButton = React.useCallback(async () => {\n try {\n let apiName = 'AdminSC';\n let path = '/procesainvsoltraspaso';\n\n let myInit = {\n headers: {\n 'Content-Type': 'application/json',\n Authorization: `${(await Auth.currentSession()).getAccessToken().getJwtToken()}`\n },\n queryStringParameters: {\n action: 'new',\n username: JSON.parse(JSON.stringify(await Auth.currentAuthenticatedUser())).username,\n usuario: props.usuario,\n sucursal: props.sucursal\n }\n };\n\n var payloadNew = await API.get(apiName, path, myInit);\n\n setInvTransferOrderPayload(payloadNew);\n\n setAttachments([]);\n\n setIsDetail(true);\n setId(undefined);\n\n setActivateUpdateForm(true);\n setAcceptCustomValue(false);\n setActivateSaveButton(true);\n setActivateDeleteButton(false);\n setActivateCancelButton(false);\n setActivateConfirmButton(false);\n setActivateApproveButton(false);\n setActivatePDFButton(false);\n setActivateAttachments(false);\n setActivateUpdateGrid(true);\n\n setVisibleLoadPanel(false);\n setActivateSalidaTraspaso(false);\n setActivateReciboTraspaso(false);\n }\n catch (e) {\n if (e === 'No current user') {\n history.push('/');\n\n window.location.reload();\n }\n }\n }, [history, props.sucursal, props.usuario]);\n\n const editButton = React.useCallback(async (ID) => {\n try {\n if (!window.event.metaKey && !window.event.ctrlKey) {\n setVisibleLoadPanel(true);\n\n setIsDetail(true);\n setId(ID);\n\n var payload = await getinvTransferOrderPayload(ID);\n\n if (permissionLevel === 'Editar') {\n var EstatusSalida = payload.header.EstatusSalida;\n var EstatusRecibo = payload.header.EstatusRecibo;\n\n if (payload.header.Estatus === 'Sin Afectar') {\n setActivateUpdateForm(true);\n setAcceptCustomValue(false);\n setActivateSaveButton(true);\n setActivateDeleteButton(true);\n setActivateCancelButton(false);\n setActivatePDFButton(true);\n setActivateAttachments(true);\n setActivateUpdateGrid(true);\n setActivateConfirmButton(true);\n setActivateApproveButton(false);\n setActivateSalidaTraspaso(false);\n setActivateReciboTraspaso(false);\n }\n else if (payload.header.Estatus === 'Pendiente') {\n setActivateUpdateForm(false);\n setAcceptCustomValue(true);\n setActivateSaveButton(false);\n setActivateDeleteButton(false);\n setActivateCancelButton(true);\n setActivatePDFButton(true);\n setActivateAttachments(true);\n setActivateUpdateGrid(false);\n setActivateConfirmButton(false);\n\n if (payload.header.RequiereAutorizacion === true && payload.header.Autorizado === false && approveInvTransferOrder)\n setActivateApproveButton(true);\n else\n setActivateApproveButton(false);\n\n if ((EstatusSalida === 'Pendiente') && invItemFulfillment && invItemFulfillmentLevel === 'Editar') {\n setActivateSalidaTraspaso(true);\n }\n else {\n setActivateSalidaTraspaso(false);\n }\n\n if ((EstatusRecibo === 'Pendiente') && invItemReceipt && invItemReceiptLevel === 'Editar') {\n setActivateReciboTraspaso(true);\n }\n else {\n setActivateReciboTraspaso(false);\n }\n }\n else if (payload.header.Estatus === 'Concluido') {\n setActivateUpdateForm(false);\n setAcceptCustomValue(true);\n setActivateSaveButton(false);\n setActivateDeleteButton(false);\n setActivateCancelButton(true);\n setActivateConfirmButton(false);\n setActivatePDFButton(true);\n setActivateAttachments(false);\n setActivateUpdateGrid(false);\n setActivateApproveButton(false);\n\n if ((EstatusSalida === 'Pendiente') && invItemFulfillment && invItemFulfillmentLevel === 'Editar') {\n setActivateSalidaTraspaso(true);\n }\n else {\n setActivateSalidaTraspaso(false);\n }\n\n if ((EstatusSalida === 'Pendiente') && invItemReceipt && invItemReceiptLevel === 'Editar') {\n setActivateReciboTraspaso(true);\n }\n else {\n setActivateReciboTraspaso(false);\n }\n }\n else if (payload.header.Estatus === 'Cancelado') {\n setActivateUpdateForm(false);\n setAcceptCustomValue(true);\n setActivateSaveButton(false);\n setActivateDeleteButton(false);\n setActivateCancelButton(false);\n setActivateConfirmButton(false);\n setActivatePDFButton(true);\n setActivateAttachments(false);\n setActivateUpdateGrid(false);\n setActivateApproveButton(false);\n setActivateSalidaTraspaso(false);\n setActivateReciboTraspaso(false);\n }\n }\n else if (permissionLevel === 'Ver') {\n setActivateUpdateForm(false);\n setAcceptCustomValue(true);\n setActivateSaveButton(false);\n setActivateDeleteButton(false);\n setActivateCancelButton(false);\n setActivateConfirmButton(false);\n setActivatePDFButton(true);\n setActivateAttachments(false);\n setActivateUpdateGrid(false);\n setActivateApproveButton(false);\n setActivateSalidaTraspaso(false);\n setActivateReciboTraspaso(false);\n }\n\n setVisibleLoadPanel(false);\n }\n }\n catch (e) {\n setVisibleLoadPanel(false);\n }\n }, [getinvTransferOrderPayload, permissionLevel, approveInvTransferOrder, invItemFulfillment, invItemFulfillmentLevel, invItemReceipt, invItemReceiptLevel]);\n\n const deleteButton = React.useCallback(async () => {\n try {\n if (!window.confirm('¿Desea eliminar la Solicitud Traspaso?'))\n return;\n\n setVisibleLoadPanel(true);\n\n var ID = invTransferOrderPayload.header.ID;\n\n if (!ID) {\n //Vamos al tablero de control\n history.push('/InvTransferOrder');\n return;\n }\n\n let apiName = 'AdminSC';\n let path = '/procesainvsoltraspaso';\n\n let myInit = {\n headers: {\n 'Content-Type': 'application/json',\n Authorization: `${(await Auth.currentSession()).getAccessToken().getJwtToken()}`\n },\n body: {\n ID: ID,\n payload: invTransferOrderPayload,\n action: 'delete',\n username: JSON.parse(JSON.stringify(await Auth.currentAuthenticatedUser())).username,\n usuario: props.usuario,\n sucursal: props.sucursal\n }\n }\n\n var payloadPost = await API.post(apiName, path, myInit);\n\n if (payloadPost.ok === 'true') {\n setVisibleLoadPanel(false);\n\n setVisibleToast(true);\n setMessageToast('Solicitud Traspaso eliminada con éxito');\n setTypeToast('success')\n\n setIsDetail(false);\n\n //Vamos al tablero de control\n history.push('/InvTransferOrder');\n }\n else if (payloadPost.ok === 'false') {\n setVisibleLoadPanel(false);\n\n setVisibleToast(true);\n setMessageToast(payloadPost.message);\n setTypeToast('error')\n }\n }\n catch (e) {\n setVisibleLoadPanel(false);\n\n if (e === 'No current user') {\n history.push('/');\n\n window.location.reload();\n }\n }\n }, [history, invTransferOrderPayload, props.sucursal, props.usuario]);\n\n async function cancelEditButton() {\n setIsDetail(false);\n };\n\n const saveButton = React.useCallback(async () => {\n if (formDatosGeneralesRef.current) {\n var formDatosGenerales = formDatosGeneralesRef.current.instance();\n var isValid = formDatosGenerales.validate();\n\n if (!isValid.isValid) {\n setVisibleToast(true);\n setMessageToast(isValid.brokenRules[0].message);\n setTypeToast('error');\n return;\n }\n }\n\n try {\n setVisibleLoadPanel(true);\n\n var ID = invTransferOrderPayload.header.ID;\n\n //Primero guardamos los cambios del grid Articulos\n if (gridArticulosRef.current) {\n var gridArticulos = gridArticulosRef.current.instance();\n\n gridArticulos.saveEditData();\n }\n\n //Despues enviamos todo al backend\n let apiName = 'AdminSC';\n let path = '/procesainvsoltraspaso';\n\n let myInit = {\n headers: {\n 'Content-Type': 'application/json',\n Authorization: `${(await Auth.currentSession()).getAccessToken().getJwtToken()}`\n },\n body: {\n ID: ID,\n payload: invTransferOrderPayload,\n action: 'saveChanges',\n username: JSON.parse(JSON.stringify(await Auth.currentAuthenticatedUser())).username,\n usuario: props.usuario,\n sucursal: props.sucursal,\n s3Bucket: Storage._config.AWSS3.bucket\n }\n }\n\n var payloadPost = await API.post(apiName, path, myInit);\n\n if (payloadPost.ok === 'true') {\n if (!ID) {\n setVisibleToast(true);\n setMessageToast('Se creó la Solicitud Traspaso con éxito');\n setTypeToast('success')\n\n ID = payloadPost.newID;\n\n editButton(ID);\n\n history.push('/InvTransferOrder/' + ID.toString());\n }\n else {\n setVisibleToast(true);\n setMessageToast('Se actualizó la Solicitud Traspaso con éxito');\n setTypeToast('success')\n }\n }\n else if (payloadPost.ok === 'false') {\n setVisibleToast(true);\n setMessageToast(payloadPost.message);\n setTypeToast('error')\n }\n\n editButton(ID);\n\n setVisibleLoadPanel(false);\n }\n catch (e) {\n setVisibleLoadPanel(false);\n\n if (e === 'No current user') {\n history.push('/');\n\n window.location.reload();\n }\n }\n }, [editButton, formDatosGeneralesRef, gridArticulosRef, history, invTransferOrderPayload, props.sucursal, props.usuario]);\n\n const itemFulfillmentButton = React.useCallback(async () => {\n }, []);\n\n const itemReceiptButton = React.useCallback(async () => {\n }, []);\n\n async function voidButton() {\n try {\n if (!window.confirm('¿Desea cancelar la Solicitud Traspaso?'))\n return;\n\n setVisibleLoadPanel(true);\n\n var ID = invTransferOrderPayload.header.ID;\n\n //Guardamos los cambios del grid\n if (gridArticulosRef.current) {\n var gridArticulos = gridArticulosRef.current.instance();\n\n gridArticulos.saveEditData();\n }\n\n //Despues enviamos todo al backend\n let apiName = 'AdminSC';\n let path = '/procesainvsoltraspaso';\n\n let myInit = {\n headers: {\n 'Content-Type': 'application/json',\n Authorization: `${(await Auth.currentSession()).getAccessToken().getJwtToken()}`\n },\n body: {\n ID: ID,\n payload: invTransferOrderPayload,\n action: 'void',\n username: JSON.parse(JSON.stringify(await Auth.currentAuthenticatedUser())).username,\n usuario: props.usuario,\n sucursal: props.sucursal\n }\n }\n\n var payloadPost = await API.post(apiName, path, myInit);\n\n if (payloadPost.ok === 'true') {\n setVisibleToast(true);\n setMessageToast('Se canceló la Solicitud Traspaso');\n setTypeToast('success')\n }\n else if (payloadPost.ok === 'false') {\n setVisibleToast(true);\n setMessageToast(payloadPost.message);\n setTypeToast('error')\n }\n\n editButton(ID);\n\n setVisibleLoadPanel(false);\n }\n catch (e) {\n setVisibleLoadPanel(false);\n\n if (e === 'No current user') {\n history.push('/');\n\n window.location.reload();\n }\n }\n };\n\n const confirmButton = React.useCallback(async () => {\n if (formDatosGeneralesRef.current) {\n var formDatosGenerales = formDatosGeneralesRef.current.instance();\n var isValid = formDatosGenerales.validate();\n\n if (!isValid.isValid) {\n setVisibleToast(true);\n setMessageToast(isValid.brokenRules[0].message);\n setTypeToast('error');\n return;\n }\n }\n\n try {\n setVisibleLoadPanel(true);\n\n var ID = invTransferOrderPayload.header.ID;\n\n //Primero guardamos los cambios del grid Articulos\n if (gridArticulosRef.current) {\n var gridArticulos = gridArticulosRef.current.instance();\n\n gridArticulos.saveEditData();\n }\n\n var lambdaFunction;\n\n if (window.location.href.indexOf('sandbox.') >= 0 || window.location.href.indexOf('localhost') >= 0)\n lambdaFunction = 'procesaInvSolTraspaso-dev';\n else if (window.location.href.indexOf('sandboxtampico.') >= 0)\n lambdaFunction = 'procesaInvSolTraspaso-devleona';\n else if (window.location.href.indexOf('tampico.') >= 0)\n lambdaFunction = 'procesaInvSolTraspaso-prodleona';\n else\n lambdaFunction = 'procesaInvSolTraspaso-prod';\n\n Auth.currentCredentials()\n .then(credentials => {\n const lambda = new Lambda({\n credentials: Auth.essentialCredentials(credentials),\n region: 'us-east-1'\n });\n\n var params = {\n FunctionName: lambdaFunction,\n Payload: JSON.stringify({\n ID: ID,\n payload: invTransferOrderPayload,\n action: 'apply',\n username: props.username,\n usuario: props.usuario,\n sucursal: props.sucursal,\n s3Bucket: Storage._config.AWSS3.bucket\n })\n };\n\n lambda.invoke(params, function (err, data) {\n if (err) {\n setVisibleLoadPanel(false);\n\n setVisibleToast(true);\n setMessageToast(err.message);\n setTypeToast('error');\n }\n else {\n var payloadPost = JSON.parse(JSON.parse(data.Payload).body);\n\n if (payloadPost.ok === 'true') {\n setVisibleToast(true);\n setMessageToast('Se afectó la Solicitud Traspaso con éxito');\n setTypeToast('success')\n }\n else if (payloadPost.ok === 'false') {\n setVisibleToast(true);\n setMessageToast(payloadPost.message);\n setTypeToast('error')\n }\n\n editButton(ID);\n\n setVisibleLoadPanel(false);\n }\n });\n })\n }\n catch (e) {\n setVisibleLoadPanel(false);\n\n if (e === 'No current user') {\n history.push('/');\n\n window.location.reload();\n }\n }\n }, [editButton, formDatosGeneralesRef, gridArticulosRef, history, invTransferOrderPayload, props.sucursal, props.username, props.usuario]);\n\n const approveButton = React.useCallback(async () => {\n if (formDatosGeneralesRef.current) {\n var formDatosGenerales = formDatosGeneralesRef.current.instance();\n var isValid = formDatosGenerales.validate();\n\n if (!isValid.isValid) {\n setVisibleToast(true);\n setMessageToast(isValid.brokenRules[0].message);\n setTypeToast('error');\n return;\n }\n }\n\n try {\n setVisibleLoadPanel(true);\n\n var ID = invTransferOrderPayload.header.ID;\n\n //Primero guardamos los cambios del grid Articulos\n if (gridArticulosRef.current) {\n var gridArticulos = gridArticulosRef.current.instance();\n\n gridArticulos.saveEditData();\n }\n\n saveButton();\n\n var lambdaFunction;\n\n if (window.location.href.indexOf('sandbox.') >= 0 || window.location.href.indexOf('localhost') >= 0)\n lambdaFunction = 'procesaInvSolTraspaso-dev';\n else if (window.location.href.indexOf('sandboxtampico.') >= 0)\n lambdaFunction = 'procesaInvSolTraspaso-devleona';\n else if (window.location.href.indexOf('tampico.') >= 0)\n lambdaFunction = 'procesaInvSolTraspaso-prodleona';\n else\n lambdaFunction = 'procesaInvSolTraspaso-prod';\n\n Auth.currentCredentials()\n .then(credentials => {\n const lambda = new Lambda({\n credentials: Auth.essentialCredentials(credentials),\n region: 'us-east-1'\n });\n\n var params = {\n FunctionName: lambdaFunction,\n Payload: JSON.stringify({\n ID: ID,\n payload: invTransferOrderPayload,\n action: 'approve',\n username: props.username,\n usuario: props.usuario,\n sucursal: props.sucursal,\n s3Bucket: Storage._config.AWSS3.bucket\n })\n };\n\n lambda.invoke(params, function (err, data) {\n if (err) {\n setVisibleLoadPanel(false);\n\n setVisibleToast(true);\n setMessageToast(err.message);\n setTypeToast('error');\n }\n else {\n var payloadPost = JSON.parse(JSON.parse(data.Payload).body);\n\n if (payloadPost.ok === 'true') {\n setVisibleToast(true);\n setMessageToast('Solicitud Traspaso autorizada');\n setTypeToast('success')\n }\n else if (payloadPost.ok === 'false') {\n setVisibleToast(true);\n setMessageToast(payloadPost.message);\n setTypeToast('error')\n }\n\n editButton(ID);\n\n setVisibleLoadPanel(false);\n }\n });\n })\n }\n catch (e) {\n setVisibleLoadPanel(false);\n\n if (e === 'No current user') {\n history.push('/');\n\n window.location.reload();\n }\n }\n }, [editButton, formDatosGeneralesRef, gridArticulosRef, history, invTransferOrderPayload, props.sucursal, props.username, props.usuario, saveButton]);\n\n function printButton() {\n var baseUrl = window.location.href.split('/')[0];\n\n window.open(baseUrl + \"/#/PdfRender?type=invtransferorder&id=\" + id, \"_blank\");\n };\n\n function refreshButton() {\n if (gridTableroRef.current) {\n var gridTablero = gridTableroRef.current.instance();\n\n gridTablero.refresh();\n }\n };\n\n useEffect(() => {\n window.addEventListener('popstate', (e) => {\n var hash;\n\n try {\n hash = e.target.location.hash;\n }\n catch (e) {\n hash = '';\n }\n\n if (hash === '#/InvItemReceipt') {\n history.push('/InvItemReceipt');\n\n window.location.reload();\n }\n });\n\n async function initialize() {\n setVisibleLoadPanel(true);\n\n await getConceptos();\n\n await getAlmacenes();\n\n await getObservaciones();\n\n setVisibleLoadPanel(false);\n }\n\n initialize();\n\n //En caso de solicitar un ID especifico, redireccionamos a ese ID\n if (!props.match.isExact) {\n var urlID = props.location.pathname.replace('/InvTransferOrder/', '');\n\n if (urlID === 'undefined')\n urlID = undefined;\n\n if (urlID)\n editButton(urlID);\n else\n history.push('/InvTransferOrder')\n }\n\n // eslint-disable-next-line\n }, []);\n\n function onHidingToast() {\n setVisibleToast(false);\n }\n\n const onEditorArticulosPreparing = React.useCallback((e) => {\n if (e.parentType === \"dataRow\") {\n if (e.dataField === \"Articulo\") {\n\n e.editorOptions.displayExpr = \"name\";\n e.editorOptions.valueExpr = \"value\";\n e.editorOptions.searchEnabled = true;\n e.editorOptions.showClearButton = true;\n e.editorOptions.acceptCustomValue = false;\n e.editorOptions.clearButtonText = 'Cerrar';\n e.editorOptions.noDataText = 'No se encontraron resultados';\n\n const defaultValueChangeHandler = e.editorOptions.onValueChanged;\n\n e.editorOptions.onValueChanged = function (ev) {\n let selectedItem = ev.component.option(\"selectedItem\");\n e.setValue(selectedItem);\n };\n }\n if (e.dataField === \"Cantidad\") {\n e.editorOptions.min = 1;\n }\n }\n }, []);\n\n const setCellValueArticulo = React.useCallback((rowData, value) => {\n rowData.Articulo = value.value;\n rowData.ArtDescripcion = value.name;\n rowData.Cantidad = 1;\n }, []);\n\n const setCellValueCantidad = React.useCallback((rowData, value, currentRowData) => {\n var Cantidad = parseFloat(value);\n\n rowData.Cantidad = parseFloat(Cantidad);\n }, []);\n\n function onExporting(e) {\n const workbook = new Workbook();\n const worksheet = workbook.addWorksheet('Datos');\n\n exportDataGrid({\n component: e.component,\n worksheet,\n autoFilterEnabled: true,\n }).then(() => {\n workbook.xlsx.writeBuffer().then((buffer) => {\n saveAs(new Blob([buffer], { type: 'application/octet-stream' }), 'Datos.xlsx');\n });\n });\n e.cancel = true;\n };\n\n return (\n <div>\n {isDetail === false ? (\n <div class=\"bg-gray-200 m-2\">\n <h1 class=\"font-sans inline-block text-xl font-bold text-gray-700 leading-8 align-top mb-1\"><FontAwesomeIcon icon={faList} size=\"lg\" /> Solicitudes de Traspaso</h1>\n </div>\n ) :\n (\n <div class=\"bg-gray-200 m-2\">\n <h1 class=\"font-sans inline-block text-xl font-bold text-gray-700 leading-8 align-top mb-1\"><FontAwesomeIcon icon={faPalletBoxes} size=\"xl\" /> {(invTransferOrderPayload.header ? invTransferOrderPayload.header.Movimiento : 'Solicitud Traspaso')}</h1>\n <TransactionStatus {...props} Estatus={invTransferOrderPayload.header.Estatus} />\n </div>\n )}\n\n <LoadPanel\n shadingColor=\"rgba(0,0,0,0.4)\"\n visible={visibleLoadPanel}\n showIndicator={true}\n message=\"Por favor espere...\"\n shading={true}\n showPane={true}\n hideOnOutsideClick={false}\n />\n\n <Toast\n visible={visibleToast}\n message={messageToast}\n type={typeToast}\n onHiding={onHidingToast}\n displayTime={5000}\n width={'auto'}\n position={{\n my: 'top center',\n at: 'top center',\n of: window,\n offset: '0 130'\n }}\n />\n\n <div class=\"bg-gray-200 m-2\">\n {isDetail === false ? (\n <div class=\"bg-white p-3 shadow-xl\">\n {permissionLevel === 'Editar' ?\n (\n <div>\n <Link to=\"/InvTransferOrder/undefined\">\n <button class=\"mb-2 bg-green-500 hover:bg-green-700 text-white font-bold py-2 px-4 rounded\" onClick={() => newButton()}><FontAwesomeIcon icon={faFileAlt} /> Nueva Solicitud Traspaso</button>\n </Link>\n\n <button onClick={refreshButton} type=\"submit\" class=\"ml-4 mb-4 bg-blue-500 hover:bg-blue-700 text-white font-bold py-2 px-4 rounded\">\n <FontAwesomeIcon icon={faArrowsRotate} /> Actualizar\n </button>\n </div>\n ) :\n (\n <div>\n <button onClick={refreshButton} type=\"submit\" class=\"mb-4 bg-blue-500 hover:bg-blue-700 text-white font-bold py-2 px-4 rounded\">\n <FontAwesomeIcon icon={faArrowsRotate} /> Actualizar\n </button>\n </div>\n )}\n\n <div className=\"options mb-2\">\n <div className=\"option\">\n <CheckBox text=\"Expandir todos los grupos\"\n value={autoExpandAll}\n onValueChanged={onAutoExpandAllChanged}></CheckBox>\n </div>\n </div>\n <DataGrid\n height={800}\n id=\"gridContainer\"\n columnsAutoWidth={true}\n filterBuilder={filterBuilder}\n dataSource={store}\n defaultFilterValue={filterValue}\n allowColumnReordering={true}\n allowColumnResizing={true}\n columnResizingMode={\"widget\"}\n showBorders={true}\n rowAlternationEnabled={true}\n showRowLines={true}\n showColumnLines={true}\n remoteOperations={{ filtering: true }}\n ref={gridTableroRef}\n onExporting={onExporting}\n >\n <Scrolling rowRenderingMode='virtual'></Scrolling>\n <Paging defaultPageSize={10} />\n <Pager\n visible={true}\n allowedPageSizes={allowedPageSizes}\n displayMode='compact'\n showPageSizeSelector={true}\n showInfo={true}\n showNavigationButtons={true}\n />\n <FilterRow visible={true} />\n <FilterPanel visible={true} />\n <FilterBuilderPopup position={filterBuilderPopupPosition} />\n\n <HeaderFilter visible={true} />\n\n <GroupPanel visible={true} />\n <SearchPanel visible={true} />\n <ColumnChooser\n enabled={true}\n mode='select'\n >\n <ColumnChooserSearch\n enabled={true}\n />\n\n <ColumnChooserSelection\n allowSelectAll={true}\n selectByClick={true}\n recursive={true}\n />\n </ColumnChooser>\n <Grouping autoExpandAll={autoExpandAll} />\n <StateStoring enabled={true} type=\"localStorage\" storageKey=\"gridContainerInvItemReceipt\" />\n <Export enabled={true} />\n\n <Column caption=\"\" alignment=\"center\" width={100} cellRender={editInvTransferOrder} />\n\n <Column dataField=\"MovID\" dataType=\"string\" width={110} caption=\"Folio\" />\n <Column dataField=\"FechaEmision\" caption=\"Fecha Emisión\" dataType=\"date\" width={130} />\n <Column dataField=\"Estatus\" dataType=\"string\" width={120} />\n\n <Column dataField=\"ID\" dataType=\"number\" width={150} visible={false} />\n <Column dataField=\"Mov\" dataType=\"string\" width={190} caption=\"Tipo Movimiento\" visible={false} />\n <Column dataField=\"Movimiento\" dataType=\"string\" width={190} visible={false} />\n\n <Column dataField=\"Almacen\" dataType=\"string\" width={190} caption=\"Almacén\" visible={true} />\n <Column dataField=\"NombreAlmacen\" dataType=\"string\" width={190} caption=\"Nombre Almacén\" visible={false} />\n\n <Column dataField=\"AlmacenDestino\" dataType=\"string\" width={190} caption=\"Almacén\" visible={true} />\n <Column dataField=\"NombreAlmacenDestino\" dataType=\"string\" width={190} caption=\"Nombre Almacén\" visible={false} />\n\n <Column dataField=\"Sucursal\" dataType=\"number\" width={150} visible={false} />\n <Column dataField=\"NombreSucursal\" dataType=\"string\" width={190} visible={false} />\n <Column dataField=\"Usuario\" dataType=\"string\" width={190} visible={false} />\n <Column dataField=\"NombreUsuario\" dataType=\"string\" width={190} visible={false} />\n\n <Column dataField=\"RequiereAutorizacion\" dataType=\"boolean\" caption=\"Requiere Autorización\" width={200} visible={false} />\n <Column dataField=\"Autorizado\" dataType=\"boolean\" width={150} visible={false} />\n <Column dataField=\"Autoriza\" caption=\"Autorizado Por\" dataType=\"string\" width={200} visible={false} />\n <Column dataField=\"FechaAutorizacion\" caption=\"Fecha Autorización\" dataType=\"datetime\" width={200} visible={false} />\n\n <Column dataField=\"Concepto\" dataType=\"string\" width={190} visible={false} />\n <Column dataField=\"Observaciones\" dataType=\"string\" width={190} visible={false} />\n <Column dataField=\"Situacion\" caption=\"Situación\" dataType=\"string\" width={190} visible={false} />\n <Column dataField=\"SituacionFecha\" caption=\"Fecha Situación\" dataType=\"date\" width={190} visible={false} />\n <Column dataField=\"SituacionUsuario\" caption=\"Usuario Situación\" dataType=\"string\" width={190} visible={false} />\n <Column dataField=\"SituacionNota\" caption=\"Nota Situación\" dataType=\"string\" width={190} visible={false} />\n <Column dataField=\"Comentarios\" dataType=\"string\" width={190} visible={false} />\n <Column dataField=\"Plaza\" dataType=\"string\" width={190} visible={false} />\n </DataGrid>\n </div>\n ) : (<div />)}\n <Route exact path=\"/InvTransferOrder/:ID\" render={({ match }) => {\n return (\n <div class=\"bg-gray-200\">\n {isDetail.toString() === 'true' ?\n (\n <div>\n <Link to=\"/InvTransferOrder\">\n <button onClick={cancelEditButton} type=\"submit\" class=\"mb-4 bg-red-500 hover:bg-red-700 text-white font-bold py-2 px-4 rounded\">\n <FontAwesomeIcon icon={faArrowRotateLeft} /> Regresar\n </button>\n </Link>\n\n {activateSaveButton.toString() === 'true' ?\n (\n <button onClick={saveButton} type=\"submit\" class=\"ml-4 mb-4 bg-blue-500 hover:bg-blue-700 text-white font-bold py-2 px-4 rounded\">\n <FontAwesomeIcon icon={faSave} /> Guardar Cambios\n </button>\n ) : (\n <div class=\"inline-block\"></div>\n )}\n\n {activateSalidaTraspaso.toString() === 'true' ?\n (\n <button onClick={itemFulfillmentButton} type=\"submit\" class=\"ml-4 mb-4 bg-blue-500 hover:bg-blue-700 text-white font-bold py-2 px-4 rounded\">\n <FontAwesomeIcon icon={faLeft} /> Salida Traspaso\n </button>\n ) : (\n <div class=\"inline-block\"></div>\n )}\n\n {activateReciboTraspaso.toString() === 'true' ?\n (\n <button onClick={itemReceiptButton} type=\"submit\" class=\"ml-4 mb-4 bg-blue-500 hover:bg-blue-700 text-white font-bold py-2 px-4 rounded\">\n <FontAwesomeIcon icon={faRight} /> Recibo Traspaso\n </button>\n ) : (\n <div class=\"inline-block\"></div>\n )}\n\n {activateConfirmButton.toString() === 'true' && id ?\n (\n <button onClick={confirmButton} type=\"submit\" class=\"ml-4 mb-4 bg-green-500 hover:bg-green-700 text-white font-bold py-2 px-4 rounded\">\n <FontAwesomeIcon icon={faPlay} /> Afectar\n </button>\n ) : (\n <div class=\"inline-block\"></div>\n )}\n\n {activateApproveButton.toString() === 'true' && id ?\n (\n <button onClick={approveButton} type=\"submit\" class=\"ml-4 mb-4 bg-green-500 hover:bg-green-700 text-white font-bold py-2 px-4 rounded\">\n <FontAwesomeIcon icon={faThumbsUp} /> Autorizar\n </button>\n ) : (\n <div class=\"inline-block\"></div>\n )}\n\n {activateDeleteButton.toString() === 'true' && id ?\n (\n <button onClick={deleteButton} type=\"submit\" class=\"ml-4 mb-4 bg-red-500 hover:bg-red-700 text-white font-bold py-2 px-4 rounded\">\n <FontAwesomeIcon icon={faTrash} /> Eliminar\n </button>\n ) :\n (\n <div class=\"inline-block\"></div>\n )}\n\n {activateCancelButton.toString() === 'true' && id ?\n (\n <button onClick={voidButton} type=\"submit\" class=\"ml-4 mb-4 bg-red-500 hover:bg-red-700 text-white font-bold py-2 px-4 rounded\">\n <FontAwesomeIcon icon={faWindowClose} /> Cancelar\n </button>\n ) :\n (\n <div class=\"inline-block\"></div>\n )}\n\n {activatePDFButton.toString() === 'true' && id ?\n (\n <button onClick={printButton} type=\"submit\" class=\"ml-4 mb-4 bg-gray-500 hover:bg-gray-700 text-white font-bold py-2 px-4 rounded\">\n <FontAwesomeIcon icon={faFilePdf} /> PDF\n </button>\n ) :\n (\n <div class=\"inline-block\"></div>\n )}\n\n <div class=\"bg-white p-4 shadow-xl\">\n <Form\n id=\"formTransaccion\"\n labelMode={'outside'}\n formData={invTransferOrderPayload}\n readOnly={!activateUpdateForm}\n showColonAfterLabel={false}\n labelLocation={'top'}\n ref={formDatosGeneralesRef}\n >\n <TabbedItem>\n <TabPanelOptions deferRendering={false} showNavButtons={true} />\n <Tab title=\"Datos Generales\" colCount={2}>\n <GroupItem caption=\"General\" colCount={2}>\n <Item cssClass=\"boldText\" colSpan={2} dataField=\"header.Movimiento\" editorOptions={movimientoEditorOptions} >\n <Label text={\"Movimiento\"} />\n </Item>\n <Item dataField=\"header.FechaEmision\" editorType=\"dxDateBox\" editorOptions={fechaEmisionEditorOptions}>\n <Label text={\"Fecha Emisión\"} />\n </Item>\n <Item dataField=\"header.Concepto\" editorType=\"dxSelectBox\" editorOptions={conceptoEditorOptions} >\n <Label text={\"Concepto\"} />\n </Item>\n <Item dataField=\"header.Almacen\" editorType=\"dxSelectBox\" editorOptions={almacenEditorOptions} >\n <Label text={\"Almacén\"} />\n <RequiredRule message=\"Almacén es requerido\" />\n </Item>\n <Item dataField=\"header.AlmacenDestino\" editorType=\"dxSelectBox\" editorOptions={almacenDestinoEditorOptions} >\n <Label text={\"Almacén Destino\"} />\n <RequiredRule message=\"Almacén Destino es requerido\" />\n </Item>\n <Item dataField=\"header.Observaciones\" editorType=\"dxSelectBox\" editorOptions={observacionesEditorOptions} >\n <Label text={\"Observaciones\"} />\n </Item>\n </GroupItem>\n <GroupItem caption=\"Artículos\" colSpan={2}>\n <DataGrid\n id=\"gridArticulos\"\n ref={gridArticulosRef}\n columnsAutoWidth={true}\n dataSource={invTransferOrderPayload.detail}\n showBorders={true}\n showColumnLines={true}\n showRowLines={true}\n rowAlternationEnabled={true}\n allowColumnResizing={true}\n columnResizingMode=\"widget\"\n allowColumnReordering={false}\n repaintChangesOnly={true}\n onEditorPreparing={onEditorArticulosPreparing}\n >\n <Scrolling\n mode='virtual'\n />\n\n <Editing\n mode=\"cell\"\n newRowPosition=\"last\"\n allowUpdating={activateUpdateGrid}\n allowAdding={activateUpdateGrid}\n allowDeleting={activateUpdateGrid}\n />\n\n <Sorting mode=\"none\" />\n\n <Column dataField=\"Renglon\" width={190} visible={false} />\n <Column dataField=\"Articulo\" caption=\"Artículo\" width={450} setCellValue={setCellValueArticulo} calculateDisplayValue=\"ArtDescripcion\" >\n <Lookup\n dataSource={storeArticulo}\n displayExpr=\"name\"\n valueExpr=\"value\"\n searchEnabled={true}\n showClearButton={true}\n acceptCustomValue={false}\n clearButtonText='Cerrar'\n noDataText='No se encontraron resultados'\n />\n <RequiredRule message=\"Artículo es requerido\" />\n </Column>\n <Column dataField=\"ArtDescripcion\" width={400} allowEditing={false} visible={false} />\n <Column dataField=\"Cantidad\" width={80} setCellValue={setCellValueCantidad} dataType=\"number\" editorOptions={cantidadEditorOptions}>\n <RequiredRule message=\"Cantidad es requerida\" />\n </Column>\n </DataGrid>\n </GroupItem>\n </Tab>\n <Tab title=\"Autorización\" colCount={2}>\n <Item dataField=\"header.RequiereAutorizacion\" editorType=\"dxCheckBox\" editorOptions={autorizacionEditorOptions} >\n <Label text=\"Requiere Autorización\" />\n </Item>\n <Item dataField=\"header.Autorizado\" editorType=\"dxCheckBox\" editorOptions={autorizacionEditorOptions} >\n <Label text=\"Autorizado\" />\n </Item>\n <Item dataField=\"header.Autoriza\" editorOptions={autorizacionEditorOptions} >\n <Label text=\"Autorizado por\" />\n </Item>\n <Item dataField=\"header.FechaAutorizacion\" editorOptions={autorizacionEditorOptions} >\n <Label text=\"Fecha Autorización\" />\n </Item>\n </Tab>\n <Tab title=\"Observaciones\" >\n <Item dataField=\"header.Comentarios\" editorType=\"dxTextArea\" editorOptions={comentariosEditorOptions}>\n <Label text=\"Observaciones\" visible={false} />\n </Item>\n </Tab>\n <Tab title=\"Log Estatus\">\n <DataGrid\n id=\"gridLogEstatus\"\n columnsAutoWidth={true}\n dataSource={invTransferOrderPayload.movEstatusLog}\n allowColumnReordering={true}\n allowColumnResizing={true}\n columnResizingMode={\"widget\"}\n showBorders={true}\n rowAlternationEnabled={true}\n showRowLines={true}\n showColumnLines={true}\n >\n <HeaderFilter visible={false} />\n <Column dataField=\"Usuario\" dataType=\"string\" width={350} caption=\"Usuario\" />\n <Column caption=\"Estatus\" alignment=\"center\" width={150} cellRender={estatusRelatedRecords} />\n <Column dataField=\"Fecha\" dataType=\"datetime\" width={300} caption=\"Fecha\" />\n </DataGrid>\n </Tab>\n <Tab title=\"Archivos Anexos\" >\n <div className=\"widget-container\">\n <FileUploader\n multiple={true}\n accept=\"*\"\n uploadMode=\"useButtons\"\n chunkSize={20000000}\n maxFileSize={20000000}\n uploadChunk={uploadChunk}\n disabled={!activateAttachments}\n />\n </div>\n <div id=\"wrapper\" className=\"show-widget\" >\n <div id=\"widget-area\">\n <FileManager id=\"attachmentManager\" fileSystemProvider={attachments} onItemDeleting={onAttachmentDeleting} onItemDownloading={onItemDownloading} onSelectedFileOpened={onAttachmentOpen}>\n <Permissions\n create={false}\n copy={false}\n move={false}\n delete={activateAttachments}\n rename={false}\n upload={false}\n download={true}\n >\n </Permissions>\n </FileManager>\n </div>\n </div>\n </Tab>\n </TabbedItem>\n </Form>\n </div>\n </div>\n ) :\n (\n <div></div>\n )\n }\n </div>\n )\n }}\n />\n </div>\n </div>\n );\n}\n","import React, { useState, useEffect, useRef, useMemo } from 'react';\n\n// Ruteador\nimport { Route, Link, useHistory } from \"react-router-dom\";\n\n// LoadPanel\nimport { LoadPanel } from 'devextreme-react/load-panel';\n\n// Toast\nimport { Toast } from 'devextreme-react/toast';\n\n//Form\nimport Form, { GroupItem, Label, TabbedItem, TabPanelOptions, Tab, EmptyItem } from 'devextreme-react/form';\n\n//Validator\nimport { EmailRule, CustomRule } from 'devextreme-react/validator';\n\nimport { Auth, API, Storage } from 'aws-amplify';\n\n// Grid\nimport DataGrid, {\n Column, FilterRow, HeaderFilter, FilterPanel, FilterBuilderPopup,\n GroupPanel, Grouping, SearchPanel, Sorting, Editing, Lookup, Toolbar, Item, RequiredRule,\n Scrolling, Pager, Paging, Summary, TotalItem, StateStoring, ColumnChooser, Format, Selection,\n Export\n} from 'devextreme-react/data-grid';\n\nimport { exportDataGrid } from 'devextreme/pdf_exporter';\nimport { exportDataGrid as exportDataGridExcel } from 'devextreme/excel_exporter';\nimport { jsPDF } from 'jspdf';\nimport { Workbook } from 'exceljs';\nimport { saveAs } from 'file-saver';\n\n// Iconos\nimport { FontAwesomeIcon } from \"@fortawesome/react-fontawesome\";\nimport { faArrowsRotate } from \"@fortawesome/pro-solid-svg-icons\";\nimport { faArrowUp } from \"@fortawesome/pro-solid-svg-icons\";\nimport { faArrowDown } from \"@fortawesome/pro-solid-svg-icons\";\nimport { faEquals } from \"@fortawesome/pro-solid-svg-icons\";\nimport { faFileExcel } from \"@fortawesome/pro-solid-svg-icons\";\nimport { faFilePdf } from \"@fortawesome/pro-solid-svg-icons\";\nimport { faFileChartColumn } from \"@fortawesome/pro-duotone-svg-icons\";\n\nimport dxDateBox from \"devextreme/ui/date_box\";\n\nimport Lambda from 'aws-sdk/clients/lambda';\n\nimport 'devextreme/data/odata/store';\nimport CustomStore from 'devextreme/data/custom_store';\n\nimport DataSource from 'devextreme/data/data_source';\n\nimport '../ListStyle.css';\n\ndxDateBox.defaultOptions({\n options: {\n dateSerializationFormat: \"yyyy-MM-dd\"\n }\n});\n\nexport default function Kardex(props) {\n const history = useHistory();\n\n const [visibleLoadPanel, setVisibleLoadPanel] = useState(false);\n const [visibleToast, setVisibleToast] = useState(false);\n const [messageToast, setMessageToast] = useState('');\n const [typeToast, setTypeToast] = useState('success');\n\n const dateFormatYYYYDDMM = React.useCallback(() => {\n var date = new Date();\n\n var year = date.getFullYear().toString();\n var month = date.getMonth() + 1;\n var day = date.getDate().toString();\n\n if (month < 10)\n month = '0' + month.toString();\n else\n month = month.toString();\n\n return (\n year + \"-\" + month + \"-\" + day\n );\n }, []);\n\n const getMinArticulo = React.useCallback(async (sqlFilter) => {\n let apiName = 'AdminSC';\n let path = '/getcatalogo';\n\n let myInit = {\n headers: {\n 'Content-Type': 'application/json',\n Authorization: `${(await Auth.currentSession()).getAccessToken().getJwtToken()}`\n },\n queryStringParameters: {\n type: 'MinArticulo',\n username: JSON.parse(JSON.stringify(await Auth.currentAuthenticatedUser())).username,\n sqlFilter: sqlFilter\n }\n }\n\n var articulosGet = await API.get(apiName, path, myInit);\n\n return articulosGet[0].value;\n\n }, []);\n\n const getMaxArticulo = React.useCallback(async (sqlFilter) => {\n let apiName = 'AdminSC';\n let path = '/getcatalogo';\n\n let myInit = {\n headers: {\n 'Content-Type': 'application/json',\n Authorization: `${(await Auth.currentSession()).getAccessToken().getJwtToken()}`\n },\n queryStringParameters: {\n type: 'MaxArticulo',\n username: JSON.parse(JSON.stringify(await Auth.currentAuthenticatedUser())).username,\n sqlFilter: sqlFilter\n }\n }\n\n var articulosGet = await API.get(apiName, path, myInit);\n\n return articulosGet[0].value;\n\n }, []);\n\n const [reportPayload, setReportPayload] = useState({\n header: {\n FechaD: dateFormatYYYYDDMM(),\n FechaA: dateFormatYYYYDDMM(),\n Almacen: undefined,\n ArticuloD: undefined,\n ArticuloA: undefined,\n Grupo: '(Todos)',\n Categoria: '(Todos)'\n },\n salesPlaza: [],\n locations: []\n });\n\n const [almacenes, setAlmacenes] = useState([]);\n const [categorias, setCategorias] = useState([]);\n const [grupos, setGrupos] = useState([]);\n\n //Ref para el form\n const [formReporteRef, setFormReporteRef] = useState(React.createRef());\n\n //Ref para el grid Sucursales\n const [gridKardexRef, setGridKardexRef] = useState(React.createRef());\n\n //Ref para el grid Plazas\n const [gridPlazasRef, setGridPlazasRef] = useState(React.createRef());\n\n const filterBuilderPopupPosition = {\n of: window,\n at: 'top',\n my: 'top',\n offset: { y: 10 },\n };\n\n async function getAlmacenes() {\n let apiName = 'AdminSC';\n let path = '/getcatalogo';\n\n let myInit = {\n headers: {\n 'Content-Type': 'application/json',\n Authorization: `${(await Auth.currentSession()).getAccessToken().getJwtToken()}`\n },\n queryStringParameters: {\n type: 'AlmacenNormal',\n username: JSON.parse(JSON.stringify(await Auth.currentAuthenticatedUser())).username\n }\n }\n\n var almacenesGet = await API.get(apiName, path, myInit);\n\n setAlmacenes(almacenesGet);\n };\n\n async function getCategorias() {\n let apiName = 'AdminSC';\n let path = '/getcatalogo';\n\n var tmpCategorias = [\n {\n name: '(Todos)',\n value: '(Todos)'\n }\n ];\n\n let myInit = {\n headers: {\n 'Content-Type': 'application/json',\n Authorization: `${(await Auth.currentSession()).getAccessToken().getJwtToken()}`\n },\n queryStringParameters: {\n type: 'ArtCat',\n username: JSON.parse(JSON.stringify(await Auth.currentAuthenticatedUser())).username\n }\n }\n\n var categoriasGet = await API.get(apiName, path, myInit);\n\n for (var categoriasGetIndex in categoriasGet) {\n if (categoriasGet[categoriasGetIndex].value !== '')\n tmpCategorias.push(categoriasGet[categoriasGetIndex]);\n }\n\n setCategorias(tmpCategorias);\n };\n\n async function getGrupos() {\n let apiName = 'AdminSC';\n let path = '/getcatalogo';\n\n var tmpGrupos = [\n {\n name: '(Todos)',\n value: '(Todos)'\n }\n ];\n\n let myInit = {\n headers: {\n 'Content-Type': 'application/json',\n Authorization: `${(await Auth.currentSession()).getAccessToken().getJwtToken()}`\n },\n queryStringParameters: {\n type: 'ArtGrupo',\n username: JSON.parse(JSON.stringify(await Auth.currentAuthenticatedUser())).username\n }\n }\n\n var gruposGet = await API.get(apiName, path, myInit);\n\n for (var gruposGetIndex in gruposGet) {\n if (gruposGet[gruposGetIndex].value !== '')\n tmpGrupos.push(gruposGet[gruposGetIndex]);\n }\n\n setGrupos(tmpGrupos);\n };\n\n const getArticulo = React.useCallback(async (sqlFilter) => {\n let apiName = 'AdminSC';\n let path = '/getcatalogo';\n\n let myInit = {\n headers: {\n 'Content-Type': 'application/json',\n Authorization: `${(await Auth.currentSession()).getAccessToken().getJwtToken()}`\n },\n queryStringParameters: {\n type: 'Articulo',\n username: JSON.parse(JSON.stringify(await Auth.currentAuthenticatedUser())).username,\n sqlFilter: sqlFilter\n }\n }\n\n var articulosGet = await API.get(apiName, path, myInit);\n\n return articulosGet;\n\n }, []);\n\n var fechaEditorOptions = useMemo(() => {\n return {\n width: '100%',\n readOnly: false\n };\n }, []);\n\n var almacenDataSource = useMemo(() => {\n return new DataSource({\n paginate: true,\n store: {\n type: \"array\",\n key: \"Almacen\",\n data: almacenes\n }\n });\n }, [almacenes]);\n\n var categoriaDataSource = useMemo(() => {\n return new DataSource({\n paginate: true,\n store: {\n type: \"array\",\n key: \"value\",\n data: categorias\n }\n });\n }, [categorias]);\n\n var grupoDataSource = useMemo(() => {\n return new DataSource({\n paginate: true,\n store: {\n type: \"array\",\n key: \"value\",\n data: grupos\n }\n });\n }, [grupos]);\n\n const storeArticulo = useMemo(() => {\n return new CustomStore({\n key: 'value',\n load(loadOptions) {\n let sqlFilter = '';\n [\n 'filter'\n ].forEach((i) => {\n sqlFilter = loadOptions.searchValue;\n });\n\n async function getRecords() {\n if (sqlFilter) {\n var records = await getArticulo(sqlFilter);\n\n return {\n data: records,\n totalCount: records.length\n };\n }\n else {\n return {\n data: [],\n totalCount: 0\n };\n }\n }\n\n return getRecords()\n .then(function (result) {\n return result;\n })\n .catch(() => { throw new Error('Data Loading Error'); });\n },\n byKey: (key) => {\n async function getRecords(key) {\n var records = await getArticulo(key);\n\n return records;\n }\n\n return getRecords(key);\n }\n })\n }, [getArticulo]);\n\n //Opciones del campo Almacen\n try {\n var almacenEditorOptions = useMemo(() => {\n return {\n dataSource: almacenDataSource,\n displayExpr: 'name',\n valueExpr: 'value',\n searchEnabled: true,\n value: (reportPayload.header.Almacen ? reportPayload.header.Almacen : ''),\n width: '100%'\n };\n }, [almacenDataSource, reportPayload.header.Almacen]);\n }\n catch (e) {\n var almacenEditorOptions = {\n dataSource: almacenDataSource,\n displayExpr: 'name',\n valueExpr: 'value',\n searchEnabled: true,\n value: '',\n width: '100%'\n };\n }\n\n //Opciones del campo Articulo\n try {\n var articuloEditorOptions = {\n dataSource: storeArticulo,\n displayExpr: 'name',\n valueExpr: 'value',\n searchEnabled: true,\n showClearButton: true,\n acceptCustomValue: false,\n disabled: false,\n searchTimeout: 1500,\n width: '100%',\n clearButtonText: 'Cerrar',\n noDataText: 'No se encontraron resultados'\n };\n }\n catch (e) {\n var articuloEditorOptions = {\n dataSource: storeArticulo,\n displayExpr: 'name',\n valueExpr: 'value',\n searchEnabled: true,\n acceptCustomValue: false,\n width: '100%'\n };\n }\n\n //Opciones del campo Categoria\n try {\n var categoriaEditorOptions = useMemo(() => {\n return {\n dataSource: categoriaDataSource,\n displayExpr: 'name',\n valueExpr: 'value',\n searchEnabled: true,\n value: (reportPayload.header.Categoria ? reportPayload.header.Categoria : ''),\n width: '100%'\n };\n }, [categoriaDataSource, reportPayload.header.Categoria]);\n }\n catch (e) {\n var categoriaEditorOptions = {\n dataSource: categoriaDataSource,\n displayExpr: 'name',\n valueExpr: 'value',\n searchEnabled: true,\n value: '',\n width: '100%'\n };\n }\n\n //Opciones del campo Grupo\n try {\n var grupoEditorOptions = useMemo(() => {\n return {\n dataSource: grupoDataSource,\n displayExpr: 'name',\n valueExpr: 'value',\n searchEnabled: true,\n value: (reportPayload.header.Grupo ? reportPayload.header.Grupo : ''),\n width: '100%'\n };\n }, [grupoDataSource, reportPayload.header.Grupo]);\n }\n catch (e) {\n var grupoEditorOptions = {\n dataSource: grupoDataSource,\n displayExpr: 'name',\n valueExpr: 'value',\n searchEnabled: true,\n value: '',\n width: '100%'\n };\n }\n\n const refreshButton = React.useCallback(async () => {\n if (formReporteRef.current) {\n var formReporte = formReporteRef.current.instance();\n var isValid = formReporte.validate();\n\n if (!isValid.isValid) {\n setVisibleToast(true);\n setMessageToast(isValid.brokenRules[0].message);\n setTypeToast('error');\n return;\n }\n }\n\n try {\n setVisibleLoadPanel(true);\n\n var lambdaFunction;\n\n if (window.location.href.indexOf('sandbox.') >= 0 || window.location.href.indexOf('localhost') >= 0)\n lambdaFunction = 'kardexInventarios-dev';\n else if (window.location.href.indexOf('sandboxtampico.') >= 0)\n lambdaFunction = 'kardexInventarios-devleona';\n else if (window.location.href.indexOf('tampico.') >= 0)\n lambdaFunction = 'kardexInventarios-prodleona';\n else\n lambdaFunction = 'kardexInventarios-prod';\n\n Auth.currentCredentials()\n .then(credentials => {\n const lambda = new Lambda({\n credentials: Auth.essentialCredentials(credentials),\n region: 'us-east-1'\n });\n\n var params = {\n FunctionName: lambdaFunction,\n Payload: JSON.stringify({\n FechaD: reportPayload.header.FechaD,\n FechaA: reportPayload.header.FechaA,\n Almacen: reportPayload.header.Almacen,\n ArticuloD: reportPayload.header.ArticuloD,\n ArticuloA: reportPayload.header.ArticuloA,\n Grupo: reportPayload.header.Grupo,\n Categoria: reportPayload.header.Categoria,\n username: props.username\n })\n };\n\n lambda.invoke(params, function (err, data) {\n if (err) {\n setVisibleLoadPanel(false);\n }\n else {\n var payload = JSON.parse(JSON.parse(data.Payload).body);\n\n setVisibleLoadPanel(false);\n setReportPayload(payload);\n }\n });\n })\n }\n catch (e) {\n setVisibleLoadPanel(false);\n\n if (e === 'No current user') {\n history.push('/');\n\n window.location.reload();\n }\n }\n }, [formReporteRef, history, reportPayload, props.username]);\n\n const excelButton = React.useCallback(() => {\n const workbook = new Workbook();\n const kardexSheet = workbook.addWorksheet('Kardex');\n\n var gridKardex = gridKardexRef.current.instance();\n\n exportDataGridExcel({\n worksheet: kardexSheet,\n component: gridKardex,\n topLeftCell: { row: 1, column: 1 }\n }).then(() => {\n workbook.xlsx.writeBuffer().then((buffer) => {\n saveAs(new Blob([buffer], { type: 'application/octet-stream' }), 'Reporte.xlsx');\n });\n });\n\n }, [gridKardexRef]);\n\n const pdfButton = React.useCallback(() => {\n const doc = new jsPDF('l');\n\n var gridKardex = gridKardexRef.current.instance();\n\n doc.text('Kardex de Artículos', 7, 10);\n\n exportDataGrid({\n jsPDFDocument: doc,\n component: gridKardex,\n topLeft: { x: 7, y: 5 },\n columnWidths: [20, 70, 20, 30, 15, 15, 20, 40, 10, 10],\n customizeCell: ({ gridCell, pdfCell }) => {\n pdfCell.font.size = 6;\n }\n }).then(() => {\n doc.save('Kardex.pdf');\n });\n }, [gridKardexRef]);\n\n useEffect(() => {\n async function initialize() {\n setVisibleLoadPanel(true);\n\n await getAlmacenes();\n\n await getCategorias();\n\n await getGrupos();\n\n setVisibleLoadPanel(false);\n }\n\n initialize();\n // eslint-disable-next-line\n }, []);\n\n const onHidingToast = React.useCallback(() => {\n setVisibleToast(false);\n }, []);\n\n return (\n <div>\n <div class=\"bg-gray-200 m-2\">\n <h1 class=\"font-sans inline-block text-xl font-bold text-gray-700 leading-8 align-top mb-1\"><FontAwesomeIcon icon={faFileChartColumn} size=\"xl\" /> Kardex de inventarios</h1>\n </div>\n <div>\n <button onClick={refreshButton} type=\"submit\" class=\"ml-2 mb-4 bg-blue-500 hover:bg-blue-700 text-white font-bold py-2 px-4 rounded\">\n <FontAwesomeIcon icon={faArrowsRotate} /> Actualizar\n </button>\n <button onClick={excelButton} type=\"submit\" class=\"mb-4 ml-4 bg-blue-500 hover:bg-blue-700 text-white font-bold py-2 px-4 rounded\">\n <FontAwesomeIcon icon={faFileExcel} /> Exportar Excel\n </button>\n <button onClick={pdfButton} type=\"submit\" class=\"mb-4 ml-4 bg-blue-500 hover:bg-blue-700 text-white font-bold py-2 px-4 rounded\">\n <FontAwesomeIcon icon={faFilePdf} /> Exportar PDF\n </button>\n </div>\n\n <LoadPanel\n shadingColor=\"rgba(0,0,0,0.4)\"\n visible={visibleLoadPanel}\n showIndicator={true}\n message=\"Por favor espere...\"\n shading={true}\n showPane={true}\n hideOnOutsideClick={false}\n />\n\n <Toast\n visible={visibleToast}\n message={messageToast}\n type={typeToast}\n onHiding={onHidingToast}\n displayTime={5000}\n width={'auto'}\n position={{\n my: 'top center',\n at: 'top center',\n of: window,\n offset: '0 130'\n }}\n />\n\n <div class=\"m-2 bg-white p-4 shadow-xl\">\n <Form\n id=\"formReporte\"\n labelMode={'outside'}\n formData={reportPayload}\n readOnly={false}\n showColonAfterLabel={false}\n labelLocation={'top'}\n ref={formReporteRef}\n >\n <GroupItem caption=\"Filtros\" colCount={2}>\n <Item dataField=\"header.FechaD\" editorType=\"dxDateBox\" editorOptions={fechaEditorOptions}>\n <Label text={\"De Fecha\"} />\n <RequiredRule message=\"De Fecha es requerido\" />\n </Item>\n <Item dataField=\"header.FechaA\" editorType=\"dxDateBox\" editorOptions={fechaEditorOptions}>\n <Label text={\"A Fecha\"} />\n <RequiredRule message=\"A Fecha es requerido\" />\n </Item>\n <Item dataField=\"header.Almacen\" editorType=\"dxSelectBox\" editorOptions={almacenEditorOptions}>\n <Label text={\"Almacén\"} />\n <RequiredRule message=\"Almacén es requerido\" />\n </Item>\n <Item dataField=\"header.ArticuloD\" editorType=\"dxLookup\" editorOptions={articuloEditorOptions}>\n <Label text={\"De Artículo\"} />\n <RequiredRule message=\"De Artículo es requerido\" />\n </Item>\n <Item dataField=\"header.ArticuloA\" editorType=\"dxLookup\" editorOptions={articuloEditorOptions}>\n <Label text={\"A Artículo\"} />\n <RequiredRule message=\"A Artículo es requerido\" />\n </Item>\n <Item dataField=\"header.Grupo\" editorType=\"dxSelectBox\" editorOptions={grupoEditorOptions}>\n <Label text={\"Grupo\"} />\n </Item>\n <Item dataField=\"header.Categoria\" editorType=\"dxSelectBox\" editorOptions={categoriaEditorOptions}>\n <Label text={\"Categoría\"} />\n </Item>\n </GroupItem>\n <GroupItem caption=\"Kardex\" colCount={1}>\n <DataGrid\n id=\"gridKardex\"\n ref={gridKardexRef}\n columnsAutoWidth={true}\n dataSource={reportPayload.kardex}\n showBorders={true}\n showColumnLines={true}\n showRowLines={true}\n rowAlternationEnabled={true}\n allowColumnResizing={true}\n columnResizingMode=\"widget\"\n allowColumnReordering={false}\n repaintChangesOnly={true}\n >\n <Scrolling\n mode='virtual'\n />\n <Editing\n mode=\"cell\"\n newRowPosition=\"last\"\n allowUpdating={false}\n allowAdding={false}\n allowDeleting={false}\n />\n\n <Sorting mode=\"none\" />\n <FilterRow visible={true} />\n <FilterPanel visible={true} />\n <FilterBuilderPopup position={filterBuilderPopupPosition} />\n\n <HeaderFilter visible={true} />\n\n <Column dataField=\"ArtDescripcion\" dataType=\"string\" width={400} visible={true} caption=\"Artículo\" groupIndex={0} />\n <Column dataField=\"FechaRegistro\" dataType=\"date\" width={140} visible={true} caption=\"Fecha Registro\" />\n <Column dataField=\"Mov\" dataType=\"string\" width={150} visible={true} caption=\"Movimiento\" />\n <Column dataField=\"Movid\" dataType=\"string\" width={120} visible={true} caption=\"Folio\" />\n <Column dataField=\"Cantidad\" dataType=\"number\" width={100} visible={true} caption=\"Cantidad\" />\n <Column dataField=\"InventarioActual\" dataType=\"number\" width={150} visible={true} caption=\"Inventario Actual\" />\n <Column dataField=\"Usuario\" dataType=\"string\" width={370} visible={true} caption=\"Usuario\" />\n <Column dataField=\"Revisado\" dataType=\"string\" width={100} visible={true} caption=\"Revisado\" />\n <Column dataField=\"Revisado2\" dataType=\"string\" width={110} visible={true} caption=\"Revisado 2\" />\n\n </DataGrid>\n </GroupItem>\n </Form>\n </div>\n </div>\n );\n}","import React, { useState, useEffect, useRef, useMemo } from 'react';\n\n// Ruteador\nimport { Route, Link, useHistory } from \"react-router-dom\";\n\n// LoadPanel\nimport { LoadPanel } from 'devextreme-react/load-panel';\n\nimport { Auth, API, Storage } from 'aws-amplify';\n\n// Grid\nimport DataGrid, {\n Column, FilterRow, HeaderFilter, FilterPanel, FilterBuilderPopup,\n GroupPanel, Grouping, SearchPanel, Sorting, Editing, Lookup, Toolbar, Item, RequiredRule,\n Scrolling, Pager, Paging, Summary, TotalItem, StateStoring, ColumnChooser, Format, Selection,\n Export, GroupItem, ColumnChooserSearch, ColumnChooserSelection\n} from 'devextreme-react/data-grid';\n\n// Iconos\nimport { FontAwesomeIcon } from \"@fortawesome/react-fontawesome\";\nimport { faArrowsRotate } from \"@fortawesome/pro-solid-svg-icons\";\nimport { faFileChartColumn } from \"@fortawesome/pro-duotone-svg-icons\";\n\nimport dxDateBox from \"devextreme/ui/date_box\";\n\nimport Lambda from 'aws-sdk/clients/lambda';\n\nimport 'devextreme/data/odata/store';\nimport CustomStore from 'devextreme/data/custom_store';\n\nimport DataSource from 'devextreme/data/data_source';\n\nimport '../ListStyle.css';\n\n//CheckBox\nimport CheckBox from 'devextreme-react/check-box';\n\nimport { Workbook } from 'exceljs';\nimport { saveAs } from 'file-saver';\nimport { exportDataGrid } from 'devextreme/excel_exporter'\n\ndxDateBox.defaultOptions({\n options: {\n dateSerializationFormat: \"yyyy-MM-dd\"\n }\n});\n\nfunction isNotEmpty(value) {\n return value !== undefined && value !== null && value !== '';\n}\n\nexport default function InvLevels(props) {\n const history = useHistory();\n\n const [visibleLoadPanel, setVisibleLoadPanel] = useState(false);\n\n //Ref para el grid Inventario\n const [gridInventarioRef, setGridInventarioRef] = useState(React.createRef());\n\n const [autoExpandAll, setAutoExpandAll] = useState(true);\n\n function getOrderDay(rowData) {\n return (new Date(rowData.OrderDate)).getDay();\n }\n\n const allowedPageSizes = [5, 10, 15, 20, 'all'];\n\n const exportFormats = ['xlsx'];\n\n const filterBuilder = {\n customOperations: [{\n name: 'weekends',\n caption: 'Weekends',\n dataTypes: ['date'],\n icon: 'check',\n hasValue: false,\n calculateFilterExpression: () => [[getOrderDay, '=', 0], 'or', [getOrderDay, '=', 6]],\n }],\n allowHierarchicalFields: true,\n };\n\n const filterBuilderPopupPosition = {\n of: window,\n at: 'top',\n my: 'top',\n offset: { y: 10 },\n };\n\n async function getAuthCredentials() {\n return await Auth.currentCredentials();\n };\n\n async function lambdaInvoke(lambdaFunction, sqlFilter, credentials, username) {\n var invLevelsGet = [];\n\n var params = {\n FunctionName: lambdaFunction,\n InvocationType: 'RequestResponse',\n Payload: JSON.stringify({\n action: 'list',\n sqlFilter: sqlFilter,\n username: username\n })\n };\n\n const lambda = new Lambda({\n credentials: Auth.essentialCredentials(credentials),\n region: 'us-east-1'\n });\n\n return await lambda.invoke(params).promise();\n }\n\n async function getInvLevelRecords(sqlFilter) {\n try {\n var lambdaFunction;\n\n if (window.location.href.indexOf('sandbox.') >= 0 || window.location.href.indexOf('localhost') >= 0)\n lambdaFunction = 'exploradorInventarios-dev';\n else if (window.location.href.indexOf('sandboxtampico.') >= 0)\n lambdaFunction = 'exploradorInventarios-devleona';\n else if (window.location.href.indexOf('tampico.') >= 0)\n lambdaFunction = 'exploradorInventarios-prodleona';\n else\n lambdaFunction = 'exploradorInventarios-prod';\n\n var authCredentials = await getAuthCredentials();\n\n var username = JSON.parse(JSON.stringify(await Auth.currentAuthenticatedUser())).username;\n\n var lambdaResponse = await lambdaInvoke(lambdaFunction, sqlFilter, authCredentials, username);\n\n return JSON.parse(JSON.parse(lambdaResponse.Payload).body);\n\n }\n catch (e) {\n if (e === 'No current user') {\n history.push('/');\n\n window.location.reload();\n }\n }\n }\n\n const store = new CustomStore({\n key: 'ID',\n load(loadOptions) {\n let sqlFilter = '(';\n [\n 'filter'\n ].forEach((i) => {\n if (i in loadOptions && isNotEmpty(loadOptions[i])) {\n var filters = loadOptions[i];\n\n var filtersLength = filters.length;\n\n for (var i = 0; i <= filtersLength; i++) {\n var singleFilter = filters[i];\n var singleFilterType = typeof singleFilter;\n var singleFilterIsArray = Array.isArray(singleFilter);\n var singleFilterIsDate = singleFilter instanceof Date;\n\n if (singleFilter === 'NULL') {\n singleFilter = '0';\n }\n\n if (singleFilterType.toString() === 'object' && singleFilterIsArray) {\n sqlFilter += '(';\n\n var subFiltersLength = singleFilter.length;\n\n for (var i2 = 0; i2 <= subFiltersLength; i2++) {\n var singleSubFilter = singleFilter[i2];\n var singleSubFilterType = typeof singleSubFilter;\n var singleSubFilterIsArray = Array.isArray(singleSubFilter);\n var singleSubFilterIsDate = singleSubFilter instanceof Date\n\n if (singleSubFilter === 'NULL') {\n singleSubFilter = '0';\n }\n\n if (singleSubFilterType.toString() === 'object' && singleSubFilterIsArray) {\n sqlFilter += '(';\n\n var subSubFiltersLength = singleSubFilter.length;\n\n for (var i3 = 0; i3 <= subSubFiltersLength; i3++) {\n var singleSubSubFilter = singleSubFilter[i3];\n var singleSubSubFilterType = typeof singleSubSubFilter;\n var singleSubSubFilterIsArray = Array.isArray(singleSubSubFilter);\n var singleSubSubFilterIsDate = singleSubSubFilter instanceof Date\n\n if (singleSubSubFilter === 'NULL') {\n singleSubSubFilter = '0';\n }\n\n if (singleSubSubFilterType.toString() === 'object' && singleSubSubFilterIsArray) {\n sqlFilter += '(';\n\n var subSubSubFiltersLength = singleSubSubFilter.length;\n\n for (var i4 = 0; i4 <= subSubSubFiltersLength; i4++) {\n var singleSubSubSubFilter = singleSubSubFilter[i4];\n var singleSubSubSubFilterType = typeof singleSubSubSubFilter;\n var singleSubSubSubFilterIsArray = Array.isArray(singleSubSubSubFilter);\n var singleSubSubSubFilterIsDate = singleSubSubSubFilter instanceof Date\n\n if (singleSubSubSubFilter === 'NULL') {\n singleSubSubSubFilter = '0';\n }\n\n if (singleSubSubSubFilterType.toString() === 'object' && singleSubSubSubFilterIsArray) {\n sqlFilter += '(';\n\n var subSubSubSubFiltersLength = singleSubSubSubFilter.length;\n\n for (var i5 = 0; i5 <= subSubSubSubFiltersLength; i5++) {\n var singleSubSubSubSubFilter = singleSubSubSubFilter[i5];\n var singleSubSubSubSubFilterType = typeof singleSubSubSubSubFilter;\n var singleSubSubSubSubFilterIsArray = Array.isArray(singleSubSubSubSubFilter);\n var singleSubSubSubSubFilterIsDate = singleSubSubSubSubFilter instanceof Date\n\n if (singleSubSubSubSubFilter === 'NULL') {\n singleSubSubSubSubFilter = '0';\n }\n\n if (singleSubSubSubSubFilterType.toString() === 'string') {\n if (singleSubSubSubSubFilter === 'contains') {\n filters[i][i2][i3][i4][i5] = 'LIKE';\n singleSubSubSubSubFilter = 'LIKE';\n\n filters[i][i2][i3][i4][i5 + 1] = '\\'%' + filters[i][i2][i3][i4][i5 + 1] + '%\\'';\n }\n else if (singleSubSubSubSubFilter === 'notcontains') {\n filters[i][i2][i3][i4][i5] = 'NOT LIKE';\n singleSubSubSubSubFilter = 'NOT LIKE';\n\n filters[i][i2][i3][i4][i5 + 1] = '\\'%' + filters[i][i2][i3][i4][i5 + 1] + '%\\'';\n }\n else if (singleSubSubSubSubFilter === 'startswith') {\n filters[i][i2][i3][i4][i5] = 'LIKE';\n singleSubSubSubSubFilter = 'LIKE';\n\n filters[i][i2][i3][i4][i5 + 1] = '\\'' + filters[i][i2][i3][i4][i5 + 1] + '%\\'';\n }\n else if (singleSubSubSubSubFilter === 'endswith') {\n filters[i][i2][i3][i4][i5] = 'LIKE';\n singleSubSubSubSubFilter = 'LIKE';\n\n filters[i][i2][i3][i4][i5 + 1] = '\\'%' + filters[i][i2][i3][i4][i5 + 1] + '\\'';\n }\n else if (singleSubSubSubSubFilter === '=' || singleSubSubSubSubFilter === '<>' || singleSubSubSubSubFilter === '>' || singleSubSubSubSubFilter === '>=' || singleSubSubSubSubFilter === '<' || singleSubSubSubSubFilter === '<=') {\n if (!filters[i][i2][i3][i4][i5 + 1])\n filters[i][i2][i3][i4][i5 + 1] = 'NULL';\n else if (typeof filters[i][i2][i3][i4][i5 + 1] === 'string') {\n filters[i][i2][i3][i4][i5 + 1] = '\\'' + filters[i][i2][i3][i4][i5 + 1] + '\\'';\n }\n }\n else if (singleSubSubSubSubFilter === '!') {\n filters[i][i2][i3][i4][i5] = 'NOT';\n singleSubSubSubSubFilter = 'NOT';\n }\n\n sqlFilter += ' ' + singleSubSubSubSubFilter + ' ';\n }\n else if (singleSubSubSubSubFilterType.toString() === 'object' && singleSubSubSubSubFilterIsDate) {\n sqlFilter += ' \\'' + singleSubSubSubSubFilter.toISOString().split('T')[0] + '\\' ';\n }\n else if (singleSubSubSubSubFilterType.toString() === 'number') {\n sqlFilter += ' ' + singleSubSubSubSubFilter.toString() + ' ';\n }\n else if (singleSubSubSubSubFilterType.toString() === 'boolean') {\n if (singleSubSubSubSubFilter.toString() === 'true')\n sqlFilter += '1 ';\n else if (singleSubSubSubSubFilter.toString() === 'false' || singleSubSubSubSubFilter === null || singleSubSubSubSubFilter === undefined)\n sqlFilter += '0 ';\n }\n }\n }\n else if (singleSubSubSubFilterType.toString() === 'string') {\n if (singleSubSubSubFilter === 'contains') {\n filters[i][i2][i3][i4] = 'LIKE';\n singleSubSubSubFilter = 'LIKE';\n\n filters[i][i2][i3][i4 + 1] = '\\'%' + filters[i][i2][i3][i4 + 1] + '%\\'';\n }\n else if (singleSubSubSubFilter === 'notcontains') {\n filters[i][i2][i3][i4] = 'NOT LIKE';\n singleSubSubSubFilter = 'NOT LIKE';\n\n filters[i][i2][i3][i4 + 1] = '\\'%' + filters[i][i2][i3][i4 + 1] + '%\\'';\n }\n else if (singleSubSubSubFilter === 'startswith') {\n filters[i][i2][i3][i4] = 'LIKE';\n singleSubSubSubFilter = 'LIKE';\n\n filters[i][i2][i3][i4 + 1] = '\\'' + filters[i][i2][i3][i4 + 1] + '%\\'';\n }\n else if (singleSubSubSubFilter === 'endswith') {\n filters[i][i2][i3][i4] = 'LIKE';\n singleSubSubSubFilter = 'LIKE';\n\n filters[i][i2][i3][i4 + 1] = '\\'%' + filters[i][i2][i3][i4 + 1] + '\\'';\n }\n else if (singleSubSubSubFilter === '=' || singleSubSubSubFilter === '<>' || singleSubSubSubFilter === '>' || singleSubSubSubFilter === '>=' || singleSubSubSubFilter === '<' || singleSubSubSubFilter === '<=') {\n if (!filters[i][i2][i3][i4 + 1])\n filters[i][i2][i3][i4 + 1] = 'NULL';\n else if (typeof filters[i][i2][i3][i4 + 1] === 'string') {\n filters[i][i2][i3][i4 + 1] = '\\'' + filters[i][i2][i3][i4 + 1] + '\\'';\n }\n }\n else if (singleSubSubSubFilter === '!') {\n filters[i][i2][i3][i4] = 'NOT';\n singleSubSubSubFilter = 'NOT';\n }\n\n sqlFilter += ' ' + singleSubSubSubFilter + ' ';\n }\n else if (singleSubSubSubFilterType.toString() === 'object' && singleSubSubSubFilterIsDate) {\n sqlFilter += ' \\'' + singleSubSubSubFilter.toISOString().split('T')[0] + '\\' ';\n }\n else if (singleSubSubSubFilterType.toString() === 'number') {\n sqlFilter += ' ' + singleSubSubSubFilter.toString() + ' ';\n }\n else if (singleSubSubSubFilterType.toString() === 'boolean') {\n if (singleSubSubSubFilter.toString() === 'true')\n sqlFilter += '1 ';\n else if (singleSubSubSubFilter.toString() === 'false' || singleSubSubSubFilter === null || singleSubSubSubFilter === undefined)\n sqlFilter += '0 ';\n }\n }\n\n sqlFilter += ')';\n }\n else if (singleSubSubFilterType.toString() === 'string') {\n if (singleSubSubFilter === 'contains') {\n filters[i][i2][i3] = 'LIKE';\n singleSubSubFilter = 'LIKE';\n\n filters[i][i2][i3 + 1] = '\\'%' + filters[i][i2][i3 + 1] + '%\\'';\n }\n else if (singleSubSubFilter === 'notcontains') {\n filters[i][i2][i3] = 'NOT LIKE';\n singleSubSubFilter = 'NOT LIKE';\n\n filters[i][i2][i3 + 1] = '\\'%' + filters[i][i2][i3 + 1] + '%\\'';\n }\n else if (singleSubSubFilter === 'startswith') {\n filters[i][i2][i3] = 'LIKE';\n singleSubSubFilter = 'LIKE';\n\n filters[i][i2][i3 + 1] = '\\'' + filters[i][i2][i3 + 1] + '%\\'';\n }\n else if (singleSubSubFilter === 'endswith') {\n filters[i][i2][i3] = 'LIKE';\n singleSubSubFilter = 'LIKE';\n\n filters[i][i2][i3 + 1] = '\\'%' + filters[i][i2][i3 + 1] + '\\'';\n }\n else if (singleSubSubFilter === '=' || singleSubSubFilter === '<>' || singleSubSubFilter === '>' || singleSubSubFilter === '>=' || singleSubSubFilter === '<' || singleSubSubFilter === '<=') {\n if (!filters[i][i2][i3 + 1])\n filters[i][i2][i3 + 1] = 'NULL';\n else if (typeof filters[i][i2][i3 + 1] === 'string') {\n filters[i][i2][i3 + 1] = '\\'' + filters[i][i2][i3 + 1] + '\\'';\n }\n }\n else if (singleSubSubFilter === '!') {\n filters[i][i2][i3] = 'NOT';\n singleSubSubFilter = 'NOT';\n }\n sqlFilter += ' ' + singleSubSubFilter + ' ';\n }\n else if (singleSubSubFilterType.toString() === 'object' && singleSubSubFilterIsDate) {\n sqlFilter += ' \\'' + singleSubSubFilter.toISOString().split('T')[0] + '\\' ';\n }\n else if (singleSubSubFilterType.toString() === 'number') {\n sqlFilter += ' ' + singleSubSubFilter.toString() + ' ';\n }\n else if (singleSubSubFilterType.toString() === 'boolean') {\n if (singleSubSubFilter.toString() === 'true')\n sqlFilter += '1 ';\n else if (singleSubSubFilter.toString() === 'false' || singleSubSubFilter === null || singleSubSubFilter === undefined)\n sqlFilter += '0 ';\n }\n }\n\n sqlFilter += ')';\n }\n else if (singleSubFilterType.toString() === 'string') {\n if (singleSubFilter === 'contains') {\n filters[i][i2] = 'LIKE';\n singleSubFilter = 'LIKE';\n\n filters[i][i2 + 1] = '\\'%' + filters[i][i2 + 1] + '%\\'';\n }\n else if (singleSubFilter === 'notcontains') {\n filters[i][i2] = 'NOT LIKE';\n singleSubFilter = 'NOT LIKE';\n\n filters[i][i2 + 1] = '\\'%' + filters[i][i2 + 1] + '%\\'';\n }\n else if (singleSubFilter === 'startswith') {\n filters[i][i2] = 'LIKE';\n singleSubFilter = 'LIKE';\n\n filters[i][i2 + 1] = '\\'' + filters[i][i2 + 1] + '%\\'';\n }\n else if (singleSubFilter === 'endswith') {\n filters[i][i2] = 'LIKE';\n singleSubFilter = 'LIKE';\n\n filters[i][i2 + 1] = '\\'%' + filters[i][i2 + 1] + '\\'';\n }\n else if (singleSubFilter === '=' || singleSubFilter === '<>' || singleSubFilter === '>' || singleSubFilter === '>=' || singleSubFilter === '<' || singleSubFilter === '<=') {\n if (!filters[i][i2 + 1])\n filters[i][i2 + 1] = 'NULL';\n else if (typeof filters[i][i2 + 1] === 'string') {\n filters[i][i2 + 1] = '\\'' + filters[i][i2 + 1] + '\\'';\n }\n }\n else if (singleSubFilter === '!') {\n filters[i][i2] = 'NOT';\n singleSubFilter = 'NOT';\n }\n sqlFilter += ' ' + singleSubFilter + ' ';\n }\n else if (singleSubFilterType.toString() === 'object' && singleSubFilterIsDate) {\n sqlFilter += ' \\'' + singleSubFilter.toISOString().split('T')[0] + '\\' ';\n }\n else if (singleSubFilterType.toString() === 'number') {\n sqlFilter += ' ' + singleSubFilter.toString() + ' ';\n }\n else if (singleSubFilterType.toString() === 'boolean') {\n if (singleSubFilter.toString() === 'true')\n sqlFilter += '1 ';\n else if (singleSubFilter.toString() === 'false' || singleSubFilter === null || singleSubFilter === undefined)\n sqlFilter += '0 ';\n }\n }\n\n sqlFilter += ')';\n }\n else if (singleFilterType.toString() === 'string') {\n if (singleFilter === 'contains') {\n filters[i] = 'LIKE';\n singleFilter = 'LIKE';\n\n filters[i + 1] = '\\'%' + filters[i + 1] + '%\\'';\n }\n else if (singleFilter === 'notcontains') {\n filters[i] = 'NOT LIKE';\n singleFilter = 'NOT LIKE';\n\n filters[i + 1] = '\\'%' + filters[i + 1] + '%\\'';\n }\n else if (singleFilter === 'startswith') {\n filters[i] = 'LIKE';\n singleFilter = 'LIKE';\n\n filters[i + 1] = '\\'' + filters[i + 1] + '%\\'';\n }\n else if (singleFilter === 'endswith') {\n filters[i] = 'LIKE';\n singleFilter = 'LIKE';\n\n filters[i + 1] = '\\'%' + filters[i + 1] + '\\'';\n }\n else if (singleFilter === '=' || singleFilter === '<>' || singleFilter === '>' || singleFilter === '>=' || singleFilter === '<' || singleFilter === '<=') {\n if (!filters[i + 1])\n filters[i + 1] = 'NULL';\n else if (typeof filters[i + 1] === 'string') {\n filters[i + 1] = '\\'' + filters[i + 1] + '\\'';\n }\n }\n else if (singleFilter === '!') {\n filters[i] = 'NOT';\n singleFilter = 'NOT';\n }\n sqlFilter += ' ' + singleFilter + ' ';\n }\n else if (singleFilterType.toString() === 'object' && singleFilterIsDate) {\n sqlFilter += ' \\'' + singleFilter.toISOString().split('T')[0] + '\\' ';\n }\n else if (singleFilterType.toString() === 'number') {\n sqlFilter += ' ' + singleFilter.toString() + ' ';\n }\n else if (singleFilterType.toString() === 'boolean') {\n if (singleFilter.toString() === 'true')\n sqlFilter += '1 ';\n else if (singleFilter.toString() === 'false' || singleFilter === null || singleFilter === undefined)\n sqlFilter += '0 ';\n }\n }\n\n sqlFilter += ')';\n }\n });\n\n async function getRecords() {\n if (sqlFilter === '(')\n sqlFilter = '';\n\n var records = await getInvLevelRecords(sqlFilter);\n return {\n data: records,\n totalCount: records.length\n };\n }\n\n return getRecords()\n .then(function (result) {\n return result;\n })\n .catch(() => { throw new Error('Data Loading Error'); });\n },\n });\n\n function refreshButton() {\n if (gridInventarioRef.current) {\n var gridInventario = gridInventarioRef.current.instance();\n\n gridInventario.refresh();\n }\n };\n\n function onAutoExpandAllChanged() {\n setAutoExpandAll(!autoExpandAll)\n };\n\n function onExporting(e) {\n const workbook = new Workbook();\n const worksheet = workbook.addWorksheet('Datos');\n\n exportDataGrid({\n component: e.component,\n worksheet,\n autoFilterEnabled: true,\n }).then(() => {\n workbook.xlsx.writeBuffer().then((buffer) => {\n saveAs(new Blob([buffer], { type: 'application/octet-stream' }), 'Datos.xlsx');\n });\n });\n e.cancel = true;\n };\n\n return (\n <div>\n <div class=\"bg-gray-200 m-2\">\n <h1 class=\"font-sans inline-block text-xl font-bold text-gray-700 leading-8 align-top mb-1\"><FontAwesomeIcon icon={faFileChartColumn} size=\"xl\" /> Inventarios</h1>\n </div>\n <div>\n <button onClick={refreshButton} type=\"submit\" class=\"ml-2 mb-4 bg-blue-500 hover:bg-blue-700 text-white font-bold py-2 px-4 rounded\">\n <FontAwesomeIcon icon={faArrowsRotate} /> Actualizar\n </button>\n </div>\n\n <LoadPanel\n shadingColor=\"rgba(0,0,0,0.4)\"\n visible={visibleLoadPanel}\n showIndicator={true}\n message=\"Por favor espere...\"\n shading={true}\n showPane={true}\n hideOnOutsideClick={false}\n />\n\n <div class=\"m-2 bg-white p-4 shadow-xl\">\n <div className=\"options mb-2\">\n <div className=\"option\">\n <CheckBox text=\"Expandir todos los grupos\"\n value={autoExpandAll}\n onValueChanged={onAutoExpandAllChanged}>\n </CheckBox>\n </div>\n </div>\n <DataGrid\n id=\"gridInventario\"\n columnsAutoWidth={true}\n filterBuilder={filterBuilder}\n dataSource={store}\n allowColumnReordering={true}\n allowColumnResizing={true}\n columnResizingMode=\"widget\"\n showBorders={true}\n rowAlternationEnabled={true}\n showRowLines={true}\n showColumnLines={true}\n remoteOperations={{ filtering: true }}\n ref={gridInventarioRef}\n onExporting={onExporting}\n >\n <Scrolling rowRenderingMode='virtual'></Scrolling>\n <Paging defaultPageSize={10} />\n <Pager\n visible={true}\n allowedPageSizes={allowedPageSizes}\n displayMode='compact'\n showPageSizeSelector={true}\n showInfo={true}\n showNavigationButtons={true}\n />\n <FilterRow visible={true} />\n <FilterPanel visible={true} />\n <FilterBuilderPopup position={filterBuilderPopupPosition} />\n\n <HeaderFilter visible={true} />\n\n <Editing\n mode=\"cell\"\n newRowPosition=\"last\"\n allowUpdating={false}\n allowAdding={false}\n allowDeleting={false}\n />\n\n <GroupPanel visible={true} />\n <SearchPanel visible={true} />\n <ColumnChooser\n enabled={true}\n mode='select'\n >\n <ColumnChooserSearch\n enabled={true}\n />\n\n <ColumnChooserSelection\n allowSelectAll={true}\n selectByClick={true}\n recursive={true}\n />\n </ColumnChooser>\n <Grouping autoExpandAll={autoExpandAll} />\n <StateStoring enabled={true} type=\"localStorage\" storageKey=\"gridContainerInventario\" />\n <Export enabled={true} />\n\n <Column dataField=\"Articulo\" caption=\"Artículo\" dataType=\"string\" width={100} visible={true} />\n <Column dataField=\"Descripcion1\" caption=\"Descripción\" dataType=\"string\" width={300} visible={true} />\n <Column dataField=\"Almacen\" caption=\"Almacén\" dataType=\"string\" width={100} visible={true} />\n <Column dataField=\"Existencias\" caption=\"Existencias\" dataType=\"number\" width={150} visible={true} format=',##0.##'/>\n <Column dataField=\"Disponible\" caption=\"Disponible\" dataType=\"number\" width={150} visible={true} format=',##0.##'/>\n <Column dataField=\"Danado\" caption=\"Dañado\" dataType=\"number\" width={150} visible={true} format=',##0.##'/>\n <Column dataField=\"AlmGrupo\" caption=\"Grupo Almacén\" dataType=\"string\" width={300} visible={false} />\n <Column dataField=\"AlmNombre\" caption=\"Nombre Almacén\" dataType=\"string\" width={300} visible={false} />\n <Column dataField=\"Sucursal\" caption=\"Sucursal\" dataType=\"number\" width={300} visible={false} />\n <Column dataField=\"NombreSucursal\" caption=\"Nombre Sucursal\" dataType=\"string\" width={300} visible={false} />\n <Column dataField=\"Plaza\" caption=\"Plaza\" dataType=\"string\" width={300} visible={false} />\n\n <Column dataField=\"ArtGrupo\" caption=\"Grupo Artículo\" dataType=\"string\" width={300} visible={false} />\n <Column dataField=\"ArtCategoria\" caption=\"Categoría Artículo\" dataType=\"string\" width={300} visible={false} />\n <Column dataField=\"ArtFamilia\" caption=\"Familia Artículo\" dataType=\"string\" width={300} visible={false} />\n <Column dataField=\"Proveedor\" caption=\"Proveedor\" dataType=\"string\" width={300} visible={false} />\n <Column dataField=\"ProvNombre\" caption=\"Nombre Proveedor\" dataType=\"string\" width={300} visible={false} />\n \n <Column dataField=\"WMS\" dataType=\"boolean\" width={150} caption=\"WMS\" visible={false} />\n\n <Summary>\n <GroupItem\n column=\"Existencias\"\n summaryType=\"sum\"\n valueFormat=\",##0.##\"\n displayFormat=\"Existencias {0}\"\n showInGroupFooter={false}>\n </GroupItem>\n <GroupItem\n column=\"Disponible\"\n summaryType=\"sum\"\n valueFormat=\",##0.##\"\n displayFormat=\"Disponible {0}\"\n showInGroupFooter={false}>\n </GroupItem>\n <GroupItem\n column=\"Dañado\"\n summaryType=\"sum\"\n valueFormat=\",##0.##\"\n displayFormat=\"Dañado {0}\"\n showInGroupFooter={false}>\n </GroupItem>\n <TotalItem\n column=\"Existencias\"\n summaryType=\"sum\"\n valueFormat=\",##0.##\"\n displayFormat=\"Existencias {0}\"\n showInColumn=\"Existencias\">\n </TotalItem>\n <TotalItem\n column=\"Disponible\"\n summaryType=\"sum\"\n valueFormat=\",##0.##\"\n displayFormat=\"Disponible {0}\"\n showInColumn=\"Disponible\">\n </TotalItem>\n <TotalItem\n column=\"Dañado\"\n summaryType=\"sum\"\n valueFormat=\",##0.##\"\n displayFormat=\"Dañado {0}\"\n showInColumn=\"Dañado\">\n </TotalItem>\n </Summary>\n </DataGrid>\n </div>\n </div>\n );\n}","import React, { useState, useEffect, useRef, useMemo } from 'react';\n\n// Ruteador\nimport { Route, Link, useHistory } from \"react-router-dom\";\n\n// LoadPanel\nimport { LoadPanel } from 'devextreme-react/load-panel';\n\nimport { Auth, API, Storage } from 'aws-amplify';\n\n// Grid\nimport DataGrid, {\n Column, FilterRow, HeaderFilter, FilterPanel, FilterBuilderPopup,\n GroupPanel, Grouping, SearchPanel, Sorting, Editing, Lookup, Toolbar, Item, RequiredRule,\n Scrolling, Pager, Paging, Summary, TotalItem, StateStoring, ColumnChooser, Format, Selection,\n Export, GroupItem, ColumnChooserSearch, ColumnChooserSelection\n} from 'devextreme-react/data-grid';\n\n// Iconos\nimport { FontAwesomeIcon } from \"@fortawesome/react-fontawesome\";\nimport { faArrowsRotate } from \"@fortawesome/pro-solid-svg-icons\";\nimport { faFileChartColumn } from \"@fortawesome/pro-duotone-svg-icons\";\n\nimport dxDateBox from \"devextreme/ui/date_box\";\n\nimport Lambda from 'aws-sdk/clients/lambda';\n\nimport 'devextreme/data/odata/store';\nimport CustomStore from 'devextreme/data/custom_store';\n\nimport DataSource from 'devextreme/data/data_source';\n\nimport '../ListStyle.css';\n\n//CheckBox\nimport CheckBox from 'devextreme-react/check-box';\n\nimport { Workbook } from 'exceljs';\nimport { saveAs } from 'file-saver';\nimport { exportDataGrid } from 'devextreme/excel_exporter'\n\ndxDateBox.defaultOptions({\n options: {\n dateSerializationFormat: \"yyyy-MM-dd\"\n }\n});\n\nfunction isNotEmpty(value) {\n return value !== undefined && value !== null && value !== '';\n}\n\nexport default function InvLevels(props) {\n const history = useHistory();\n\n const [visibleLoadPanel, setVisibleLoadPanel] = useState(false);\n\n //Ref para el grid Inventario\n const [gridInventarioRef, setGridInventarioRef] = useState(React.createRef());\n\n const [autoExpandAll, setAutoExpandAll] = useState(true);\n\n function getOrderDay(rowData) {\n return (new Date(rowData.OrderDate)).getDay();\n }\n\n const allowedPageSizes = [5, 10, 15, 20, 'all'];\n\n const exportFormats = ['xlsx'];\n\n const filterBuilder = {\n customOperations: [{\n name: 'weekends',\n caption: 'Weekends',\n dataTypes: ['date'],\n icon: 'check',\n hasValue: false,\n calculateFilterExpression: () => [[getOrderDay, '=', 0], 'or', [getOrderDay, '=', 6]],\n }],\n allowHierarchicalFields: true,\n };\n\n const filterBuilderPopupPosition = {\n of: window,\n at: 'top',\n my: 'top',\n offset: { y: 10 },\n };\n\n async function getAuthCredentials() {\n return await Auth.currentCredentials();\n };\n\n async function lambdaInvoke(lambdaFunction, sqlFilter, credentials, username) {\n var invLevelsGet = [];\n\n var params = {\n FunctionName: lambdaFunction,\n InvocationType: 'RequestResponse',\n Payload: JSON.stringify({\n action: 'list',\n sqlFilter: sqlFilter,\n username: username\n })\n };\n\n const lambda = new Lambda({\n credentials: Auth.essentialCredentials(credentials),\n region: 'us-east-1'\n });\n\n return await lambda.invoke(params).promise();\n }\n\n async function getInvLevelRecords(sqlFilter) {\n try {\n var lambdaFunction;\n\n if (window.location.href.indexOf('sandbox.') >= 0 || window.location.href.indexOf('localhost') >= 0)\n lambdaFunction = 'exploradorInventarios-dev';\n else if (window.location.href.indexOf('sandboxtampico.') >= 0)\n lambdaFunction = 'exploradorInventarios-devleona';\n else if (window.location.href.indexOf('tampico.') >= 0)\n lambdaFunction = 'exploradorInventarios-prodleona';\n else\n lambdaFunction = 'exploradorInventarios-prod';\n\n var authCredentials = await getAuthCredentials();\n\n var username = JSON.parse(JSON.stringify(await Auth.currentAuthenticatedUser())).username;\n\n var lambdaResponse = await lambdaInvoke(lambdaFunction, sqlFilter, authCredentials, username);\n\n return JSON.parse(JSON.parse(lambdaResponse.Payload).body);\n\n }\n catch (e) {\n if (e === 'No current user') {\n history.push('/');\n\n window.location.reload();\n }\n }\n }\n\n const store = new CustomStore({\n key: 'ID',\n load(loadOptions) {\n let sqlFilter = '(';\n [\n 'filter'\n ].forEach((i) => {\n if (i in loadOptions && isNotEmpty(loadOptions[i])) {\n var filters = loadOptions[i];\n\n var filtersLength = filters.length;\n\n for (var i = 0; i <= filtersLength; i++) {\n var singleFilter = filters[i];\n var singleFilterType = typeof singleFilter;\n var singleFilterIsArray = Array.isArray(singleFilter);\n var singleFilterIsDate = singleFilter instanceof Date;\n\n if (singleFilter === 'NULL') {\n singleFilter = '0';\n }\n\n if (singleFilterType.toString() === 'object' && singleFilterIsArray) {\n sqlFilter += '(';\n\n var subFiltersLength = singleFilter.length;\n\n for (var i2 = 0; i2 <= subFiltersLength; i2++) {\n var singleSubFilter = singleFilter[i2];\n var singleSubFilterType = typeof singleSubFilter;\n var singleSubFilterIsArray = Array.isArray(singleSubFilter);\n var singleSubFilterIsDate = singleSubFilter instanceof Date\n\n if (singleSubFilter === 'NULL') {\n singleSubFilter = '0';\n }\n\n if (singleSubFilterType.toString() === 'object' && singleSubFilterIsArray) {\n sqlFilter += '(';\n\n var subSubFiltersLength = singleSubFilter.length;\n\n for (var i3 = 0; i3 <= subSubFiltersLength; i3++) {\n var singleSubSubFilter = singleSubFilter[i3];\n var singleSubSubFilterType = typeof singleSubSubFilter;\n var singleSubSubFilterIsArray = Array.isArray(singleSubSubFilter);\n var singleSubSubFilterIsDate = singleSubSubFilter instanceof Date\n\n if (singleSubSubFilter === 'NULL') {\n singleSubSubFilter = '0';\n }\n\n if (singleSubSubFilterType.toString() === 'object' && singleSubSubFilterIsArray) {\n sqlFilter += '(';\n\n var subSubSubFiltersLength = singleSubSubFilter.length;\n\n for (var i4 = 0; i4 <= subSubSubFiltersLength; i4++) {\n var singleSubSubSubFilter = singleSubSubFilter[i4];\n var singleSubSubSubFilterType = typeof singleSubSubSubFilter;\n var singleSubSubSubFilterIsArray = Array.isArray(singleSubSubSubFilter);\n var singleSubSubSubFilterIsDate = singleSubSubSubFilter instanceof Date\n\n if (singleSubSubSubFilter === 'NULL') {\n singleSubSubSubFilter = '0';\n }\n\n if (singleSubSubSubFilterType.toString() === 'object' && singleSubSubSubFilterIsArray) {\n sqlFilter += '(';\n\n var subSubSubSubFiltersLength = singleSubSubSubFilter.length;\n\n for (var i5 = 0; i5 <= subSubSubSubFiltersLength; i5++) {\n var singleSubSubSubSubFilter = singleSubSubSubFilter[i5];\n var singleSubSubSubSubFilterType = typeof singleSubSubSubSubFilter;\n var singleSubSubSubSubFilterIsArray = Array.isArray(singleSubSubSubSubFilter);\n var singleSubSubSubSubFilterIsDate = singleSubSubSubSubFilter instanceof Date\n\n if (singleSubSubSubSubFilter === 'NULL') {\n singleSubSubSubSubFilter = '0';\n }\n\n if (singleSubSubSubSubFilterType.toString() === 'string') {\n if (singleSubSubSubSubFilter === 'contains') {\n filters[i][i2][i3][i4][i5] = 'LIKE';\n singleSubSubSubSubFilter = 'LIKE';\n\n filters[i][i2][i3][i4][i5 + 1] = '\\'%' + filters[i][i2][i3][i4][i5 + 1] + '%\\'';\n }\n else if (singleSubSubSubSubFilter === 'notcontains') {\n filters[i][i2][i3][i4][i5] = 'NOT LIKE';\n singleSubSubSubSubFilter = 'NOT LIKE';\n\n filters[i][i2][i3][i4][i5 + 1] = '\\'%' + filters[i][i2][i3][i4][i5 + 1] + '%\\'';\n }\n else if (singleSubSubSubSubFilter === 'startswith') {\n filters[i][i2][i3][i4][i5] = 'LIKE';\n singleSubSubSubSubFilter = 'LIKE';\n\n filters[i][i2][i3][i4][i5 + 1] = '\\'' + filters[i][i2][i3][i4][i5 + 1] + '%\\'';\n }\n else if (singleSubSubSubSubFilter === 'endswith') {\n filters[i][i2][i3][i4][i5] = 'LIKE';\n singleSubSubSubSubFilter = 'LIKE';\n\n filters[i][i2][i3][i4][i5 + 1] = '\\'%' + filters[i][i2][i3][i4][i5 + 1] + '\\'';\n }\n else if (singleSubSubSubSubFilter === '=' || singleSubSubSubSubFilter === '<>' || singleSubSubSubSubFilter === '>' || singleSubSubSubSubFilter === '>=' || singleSubSubSubSubFilter === '<' || singleSubSubSubSubFilter === '<=') {\n if (!filters[i][i2][i3][i4][i5 + 1])\n filters[i][i2][i3][i4][i5 + 1] = 'NULL';\n else if (typeof filters[i][i2][i3][i4][i5 + 1] === 'string') {\n filters[i][i2][i3][i4][i5 + 1] = '\\'' + filters[i][i2][i3][i4][i5 + 1] + '\\'';\n }\n }\n else if (singleSubSubSubSubFilter === '!') {\n filters[i][i2][i3][i4][i5] = 'NOT';\n singleSubSubSubSubFilter = 'NOT';\n }\n\n sqlFilter += ' ' + singleSubSubSubSubFilter + ' ';\n }\n else if (singleSubSubSubSubFilterType.toString() === 'object' && singleSubSubSubSubFilterIsDate) {\n sqlFilter += ' \\'' + singleSubSubSubSubFilter.toISOString().split('T')[0] + '\\' ';\n }\n else if (singleSubSubSubSubFilterType.toString() === 'number') {\n sqlFilter += ' ' + singleSubSubSubSubFilter.toString() + ' ';\n }\n else if (singleSubSubSubSubFilterType.toString() === 'boolean') {\n if (singleSubSubSubSubFilter.toString() === 'true')\n sqlFilter += '1 ';\n else if (singleSubSubSubSubFilter.toString() === 'false' || singleSubSubSubSubFilter === null || singleSubSubSubSubFilter === undefined)\n sqlFilter += '0 ';\n }\n }\n }\n else if (singleSubSubSubFilterType.toString() === 'string') {\n if (singleSubSubSubFilter === 'contains') {\n filters[i][i2][i3][i4] = 'LIKE';\n singleSubSubSubFilter = 'LIKE';\n\n filters[i][i2][i3][i4 + 1] = '\\'%' + filters[i][i2][i3][i4 + 1] + '%\\'';\n }\n else if (singleSubSubSubFilter === 'notcontains') {\n filters[i][i2][i3][i4] = 'NOT LIKE';\n singleSubSubSubFilter = 'NOT LIKE';\n\n filters[i][i2][i3][i4 + 1] = '\\'%' + filters[i][i2][i3][i4 + 1] + '%\\'';\n }\n else if (singleSubSubSubFilter === 'startswith') {\n filters[i][i2][i3][i4] = 'LIKE';\n singleSubSubSubFilter = 'LIKE';\n\n filters[i][i2][i3][i4 + 1] = '\\'' + filters[i][i2][i3][i4 + 1] + '%\\'';\n }\n else if (singleSubSubSubFilter === 'endswith') {\n filters[i][i2][i3][i4] = 'LIKE';\n singleSubSubSubFilter = 'LIKE';\n\n filters[i][i2][i3][i4 + 1] = '\\'%' + filters[i][i2][i3][i4 + 1] + '\\'';\n }\n else if (singleSubSubSubFilter === '=' || singleSubSubSubFilter === '<>' || singleSubSubSubFilter === '>' || singleSubSubSubFilter === '>=' || singleSubSubSubFilter === '<' || singleSubSubSubFilter === '<=') {\n if (!filters[i][i2][i3][i4 + 1])\n filters[i][i2][i3][i4 + 1] = 'NULL';\n else if (typeof filters[i][i2][i3][i4 + 1] === 'string') {\n filters[i][i2][i3][i4 + 1] = '\\'' + filters[i][i2][i3][i4 + 1] + '\\'';\n }\n }\n else if (singleSubSubSubFilter === '!') {\n filters[i][i2][i3][i4] = 'NOT';\n singleSubSubSubFilter = 'NOT';\n }\n\n sqlFilter += ' ' + singleSubSubSubFilter + ' ';\n }\n else if (singleSubSubSubFilterType.toString() === 'object' && singleSubSubSubFilterIsDate) {\n sqlFilter += ' \\'' + singleSubSubSubFilter.toISOString().split('T')[0] + '\\' ';\n }\n else if (singleSubSubSubFilterType.toString() === 'number') {\n sqlFilter += ' ' + singleSubSubSubFilter.toString() + ' ';\n }\n else if (singleSubSubSubFilterType.toString() === 'boolean') {\n if (singleSubSubSubFilter.toString() === 'true')\n sqlFilter += '1 ';\n else if (singleSubSubSubFilter.toString() === 'false' || singleSubSubSubFilter === null || singleSubSubSubFilter === undefined)\n sqlFilter += '0 ';\n }\n }\n\n sqlFilter += ')';\n }\n else if (singleSubSubFilterType.toString() === 'string') {\n if (singleSubSubFilter === 'contains') {\n filters[i][i2][i3] = 'LIKE';\n singleSubSubFilter = 'LIKE';\n\n filters[i][i2][i3 + 1] = '\\'%' + filters[i][i2][i3 + 1] + '%\\'';\n }\n else if (singleSubSubFilter === 'notcontains') {\n filters[i][i2][i3] = 'NOT LIKE';\n singleSubSubFilter = 'NOT LIKE';\n\n filters[i][i2][i3 + 1] = '\\'%' + filters[i][i2][i3 + 1] + '%\\'';\n }\n else if (singleSubSubFilter === 'startswith') {\n filters[i][i2][i3] = 'LIKE';\n singleSubSubFilter = 'LIKE';\n\n filters[i][i2][i3 + 1] = '\\'' + filters[i][i2][i3 + 1] + '%\\'';\n }\n else if (singleSubSubFilter === 'endswith') {\n filters[i][i2][i3] = 'LIKE';\n singleSubSubFilter = 'LIKE';\n\n filters[i][i2][i3 + 1] = '\\'%' + filters[i][i2][i3 + 1] + '\\'';\n }\n else if (singleSubSubFilter === '=' || singleSubSubFilter === '<>' || singleSubSubFilter === '>' || singleSubSubFilter === '>=' || singleSubSubFilter === '<' || singleSubSubFilter === '<=') {\n if (!filters[i][i2][i3 + 1])\n filters[i][i2][i3 + 1] = 'NULL';\n else if (typeof filters[i][i2][i3 + 1] === 'string') {\n filters[i][i2][i3 + 1] = '\\'' + filters[i][i2][i3 + 1] + '\\'';\n }\n }\n else if (singleSubSubFilter === '!') {\n filters[i][i2][i3] = 'NOT';\n singleSubSubFilter = 'NOT';\n }\n sqlFilter += ' ' + singleSubSubFilter + ' ';\n }\n else if (singleSubSubFilterType.toString() === 'object' && singleSubSubFilterIsDate) {\n sqlFilter += ' \\'' + singleSubSubFilter.toISOString().split('T')[0] + '\\' ';\n }\n else if (singleSubSubFilterType.toString() === 'number') {\n sqlFilter += ' ' + singleSubSubFilter.toString() + ' ';\n }\n else if (singleSubSubFilterType.toString() === 'boolean') {\n if (singleSubSubFilter.toString() === 'true')\n sqlFilter += '1 ';\n else if (singleSubSubFilter.toString() === 'false' || singleSubSubFilter === null || singleSubSubFilter === undefined)\n sqlFilter += '0 ';\n }\n }\n\n sqlFilter += ')';\n }\n else if (singleSubFilterType.toString() === 'string') {\n if (singleSubFilter === 'contains') {\n filters[i][i2] = 'LIKE';\n singleSubFilter = 'LIKE';\n\n filters[i][i2 + 1] = '\\'%' + filters[i][i2 + 1] + '%\\'';\n }\n else if (singleSubFilter === 'notcontains') {\n filters[i][i2] = 'NOT LIKE';\n singleSubFilter = 'NOT LIKE';\n\n filters[i][i2 + 1] = '\\'%' + filters[i][i2 + 1] + '%\\'';\n }\n else if (singleSubFilter === 'startswith') {\n filters[i][i2] = 'LIKE';\n singleSubFilter = 'LIKE';\n\n filters[i][i2 + 1] = '\\'' + filters[i][i2 + 1] + '%\\'';\n }\n else if (singleSubFilter === 'endswith') {\n filters[i][i2] = 'LIKE';\n singleSubFilter = 'LIKE';\n\n filters[i][i2 + 1] = '\\'%' + filters[i][i2 + 1] + '\\'';\n }\n else if (singleSubFilter === '=' || singleSubFilter === '<>' || singleSubFilter === '>' || singleSubFilter === '>=' || singleSubFilter === '<' || singleSubFilter === '<=') {\n if (!filters[i][i2 + 1])\n filters[i][i2 + 1] = 'NULL';\n else if (typeof filters[i][i2 + 1] === 'string') {\n filters[i][i2 + 1] = '\\'' + filters[i][i2 + 1] + '\\'';\n }\n }\n else if (singleSubFilter === '!') {\n filters[i][i2] = 'NOT';\n singleSubFilter = 'NOT';\n }\n sqlFilter += ' ' + singleSubFilter + ' ';\n }\n else if (singleSubFilterType.toString() === 'object' && singleSubFilterIsDate) {\n sqlFilter += ' \\'' + singleSubFilter.toISOString().split('T')[0] + '\\' ';\n }\n else if (singleSubFilterType.toString() === 'number') {\n sqlFilter += ' ' + singleSubFilter.toString() + ' ';\n }\n else if (singleSubFilterType.toString() === 'boolean') {\n if (singleSubFilter.toString() === 'true')\n sqlFilter += '1 ';\n else if (singleSubFilter.toString() === 'false' || singleSubFilter === null || singleSubFilter === undefined)\n sqlFilter += '0 ';\n }\n }\n\n sqlFilter += ')';\n }\n else if (singleFilterType.toString() === 'string') {\n if (singleFilter === 'contains') {\n filters[i] = 'LIKE';\n singleFilter = 'LIKE';\n\n filters[i + 1] = '\\'%' + filters[i + 1] + '%\\'';\n }\n else if (singleFilter === 'notcontains') {\n filters[i] = 'NOT LIKE';\n singleFilter = 'NOT LIKE';\n\n filters[i + 1] = '\\'%' + filters[i + 1] + '%\\'';\n }\n else if (singleFilter === 'startswith') {\n filters[i] = 'LIKE';\n singleFilter = 'LIKE';\n\n filters[i + 1] = '\\'' + filters[i + 1] + '%\\'';\n }\n else if (singleFilter === 'endswith') {\n filters[i] = 'LIKE';\n singleFilter = 'LIKE';\n\n filters[i + 1] = '\\'%' + filters[i + 1] + '\\'';\n }\n else if (singleFilter === '=' || singleFilter === '<>' || singleFilter === '>' || singleFilter === '>=' || singleFilter === '<' || singleFilter === '<=') {\n if (!filters[i + 1])\n filters[i + 1] = 'NULL';\n else if (typeof filters[i + 1] === 'string') {\n filters[i + 1] = '\\'' + filters[i + 1] + '\\'';\n }\n }\n else if (singleFilter === '!') {\n filters[i] = 'NOT';\n singleFilter = 'NOT';\n }\n sqlFilter += ' ' + singleFilter + ' ';\n }\n else if (singleFilterType.toString() === 'object' && singleFilterIsDate) {\n sqlFilter += ' \\'' + singleFilter.toISOString().split('T')[0] + '\\' ';\n }\n else if (singleFilterType.toString() === 'number') {\n sqlFilter += ' ' + singleFilter.toString() + ' ';\n }\n else if (singleFilterType.toString() === 'boolean') {\n if (singleFilter.toString() === 'true')\n sqlFilter += '1 ';\n else if (singleFilter.toString() === 'false' || singleFilter === null || singleFilter === undefined)\n sqlFilter += '0 ';\n }\n }\n\n sqlFilter += ')';\n }\n });\n\n async function getRecords() {\n if (sqlFilter === '(')\n sqlFilter = '';\n\n var records = await getInvLevelRecords(sqlFilter);\n return {\n data: records,\n totalCount: records.length\n };\n }\n\n return getRecords()\n .then(function (result) {\n return result;\n })\n .catch(() => { throw new Error('Data Loading Error'); });\n },\n });\n\n function refreshButton() {\n if (gridInventarioRef.current) {\n var gridInventario = gridInventarioRef.current.instance();\n\n gridInventario.refresh();\n }\n };\n\n function onAutoExpandAllChanged() {\n setAutoExpandAll(!autoExpandAll)\n };\n\n function onExporting(e) {\n const workbook = new Workbook();\n const worksheet = workbook.addWorksheet('Datos');\n\n exportDataGrid({\n component: e.component,\n worksheet,\n autoFilterEnabled: true,\n }).then(() => {\n workbook.xlsx.writeBuffer().then((buffer) => {\n saveAs(new Blob([buffer], { type: 'application/octet-stream' }), 'Datos.xlsx');\n });\n });\n e.cancel = true;\n };\n\n return (\n <div>\n <div class=\"bg-gray-200 m-2\">\n <h1 class=\"font-sans inline-block text-xl font-bold text-gray-700 leading-8 align-top mb-1\"><FontAwesomeIcon icon={faFileChartColumn} size=\"xl\" /> Inventarios con costos</h1>\n </div>\n <div>\n <button onClick={refreshButton} type=\"submit\" class=\"ml-2 mb-4 bg-blue-500 hover:bg-blue-700 text-white font-bold py-2 px-4 rounded\">\n <FontAwesomeIcon icon={faArrowsRotate} /> Actualizar\n </button>\n </div>\n\n <LoadPanel\n shadingColor=\"rgba(0,0,0,0.4)\"\n visible={visibleLoadPanel}\n showIndicator={true}\n message=\"Por favor espere...\"\n shading={true}\n showPane={true}\n hideOnOutsideClick={false}\n />\n\n <div class=\"m-2 bg-white p-4 shadow-xl\">\n <div className=\"options mb-2\">\n <div className=\"option\">\n <CheckBox text=\"Expandir todos los grupos\"\n value={autoExpandAll}\n onValueChanged={onAutoExpandAllChanged}>\n </CheckBox>\n </div>\n </div>\n <DataGrid\n id=\"gridInventarioConCosto\"\n columnsAutoWidth={true}\n filterBuilder={filterBuilder}\n dataSource={store}\n allowColumnReordering={true}\n allowColumnResizing={true}\n columnResizingMode=\"widget\"\n showBorders={true}\n rowAlternationEnabled={true}\n showRowLines={true}\n showColumnLines={true}\n remoteOperations={{ filtering: true }}\n ref={gridInventarioRef}\n onExporting={onExporting}\n >\n <Scrolling rowRenderingMode='virtual'></Scrolling>\n <Paging defaultPageSize={10} />\n <Pager\n visible={true}\n allowedPageSizes={allowedPageSizes}\n displayMode='compact'\n showPageSizeSelector={true}\n showInfo={true}\n showNavigationButtons={true}\n />\n <FilterRow visible={true} />\n <FilterPanel visible={true} />\n <FilterBuilderPopup position={filterBuilderPopupPosition} />\n\n <HeaderFilter visible={true} />\n\n <Editing\n mode=\"cell\"\n newRowPosition=\"last\"\n allowUpdating={false}\n allowAdding={false}\n allowDeleting={false}\n />\n\n <GroupPanel visible={true} />\n <SearchPanel visible={true} />\n <ColumnChooser\n enabled={true}\n mode='select'\n >\n <ColumnChooserSearch\n enabled={true}\n />\n\n <ColumnChooserSelection\n allowSelectAll={true}\n selectByClick={true}\n recursive={true}\n />\n </ColumnChooser>\n <Grouping autoExpandAll={autoExpandAll} />\n <StateStoring enabled={true} type=\"localStorage\" storageKey=\"gridContainerInventarioConCosto\" />\n <Export enabled={true} />\n\n <Column dataField=\"Articulo\" caption=\"Artículo\" dataType=\"string\" width={100} visible={true} />\n <Column dataField=\"Descripcion1\" caption=\"Descripción\" dataType=\"string\" width={300} visible={true} />\n <Column dataField=\"Almacen\" caption=\"Almacén\" dataType=\"string\" width={100} visible={true} />\n <Column dataField=\"Existencias\" caption=\"Existencias\" dataType=\"number\" width={150} visible={true} format=',##0.##'/>\n <Column dataField=\"Disponible\" caption=\"Disponible\" dataType=\"number\" width={150} visible={true} format=',##0.##'/>\n <Column dataField=\"Danado\" caption=\"Dañado\" dataType=\"number\" width={150} visible={true} format=',##0.##'/>\n <Column dataField=\"CostoUltimaCompra\" caption=\"Costo última compra\" dataType=\"number\" width={200} visible={true} >\n <Format\n type=\"currency\"\n precision={2}\n />\n </Column>\n <Column dataField=\"CostoDescUltimaCompra\" caption=\"Costo con Desc. Ultima Compra\" dataType=\"number\" width={300} visible={true} >\n <Format\n type=\"currency\"\n precision={2}\n />\n </Column>\n <Column dataField=\"UltimoCosto\" caption=\"Valor Ultimo Costo\" dataType=\"number\" width={200} visible={true} >\n <Format\n type=\"currency\"\n precision={2}\n />\n </Column>\n <Column dataField=\"AlmGrupo\" caption=\"Grupo Almacén\" dataType=\"string\" width={300} visible={false} />\n <Column dataField=\"AlmNombre\" caption=\"Nombre Almacén\" dataType=\"string\" width={300} visible={false} />\n <Column dataField=\"Sucursal\" caption=\"Sucursal\" dataType=\"number\" width={300} visible={false} />\n <Column dataField=\"NombreSucursal\" caption=\"Nombre Sucursal\" dataType=\"string\" width={300} visible={false} />\n <Column dataField=\"Plaza\" caption=\"Plaza\" dataType=\"string\" width={300} visible={false} />\n\n <Column dataField=\"ArtGrupo\" caption=\"Grupo Artículo\" dataType=\"string\" width={300} visible={false} />\n <Column dataField=\"ArtCategoria\" caption=\"Categoría Artículo\" dataType=\"string\" width={300} visible={false} />\n <Column dataField=\"ArtFamilia\" caption=\"Familia Artículo\" dataType=\"string\" width={300} visible={false} />\n <Column dataField=\"Proveedor\" caption=\"Proveedor\" dataType=\"string\" width={300} visible={false} />\n <Column dataField=\"ProvNombre\" caption=\"Nombre Proveedor\" dataType=\"string\" width={300} visible={false} />\n\n <Column dataField=\"WMS\" dataType=\"boolean\" width={150} caption=\"WMS\" visible={false} />\n\n <Summary>\n <GroupItem\n column=\"Existencias\"\n summaryType=\"sum\"\n valueFormat=\",##0.##\"\n displayFormat=\"Existencias {0}\"\n showInGroupFooter={false}>\n </GroupItem>\n <GroupItem\n column=\"Disponible\"\n summaryType=\"sum\"\n valueFormat=\",##0.##\"\n displayFormat=\"Disponible {0}\"\n showInGroupFooter={false}>\n </GroupItem>\n <GroupItem\n column=\"Dañado\"\n summaryType=\"sum\"\n valueFormat=\",##0.##\"\n displayFormat=\"Dañado {0}\"\n showInGroupFooter={false}>\n </GroupItem>\n <TotalItem\n column=\"Existencias\"\n summaryType=\"sum\"\n valueFormat=\",##0.##\"\n displayFormat=\"Existencias {0}\"\n showInColumn=\"Existencias\">\n </TotalItem>\n <TotalItem\n column=\"Disponible\"\n summaryType=\"sum\"\n valueFormat=\",##0.##\"\n displayFormat=\"Disponible {0}\"\n showInColumn=\"Disponible\">\n </TotalItem>\n <TotalItem\n column=\"Dañado\"\n summaryType=\"sum\"\n valueFormat=\",##0.##\"\n displayFormat=\"Dañado {0}\"\n showInColumn=\"Dañado\">\n </TotalItem>\n </Summary>\n </DataGrid>\n </div>\n </div>\n );\n}","import React, { useState, useEffect, useRef, useMemo } from 'react';\n\n// Ruteador\nimport { Route, Link, useHistory } from \"react-router-dom\";\n\n// LoadPanel\nimport { LoadPanel } from 'devextreme-react/load-panel';\n\n//Form\nimport Form, { GroupItem, Label, TabbedItem, TabPanelOptions, Tab, EmptyItem } from 'devextreme-react/form';\n\n//Validator\nimport { EmailRule, CustomRule } from 'devextreme-react/validator';\n\nimport { Auth, API, Storage } from 'aws-amplify';\n\n// Grid\nimport DataGrid, {\n Column, FilterRow, HeaderFilter, FilterPanel, FilterBuilderPopup,\n GroupPanel, Grouping, SearchPanel, Sorting, Editing, Lookup, Toolbar, Item, RequiredRule,\n Scrolling, Pager, Paging, Summary, TotalItem, StateStoring, ColumnChooser, Format, Selection,\n Export\n} from 'devextreme-react/data-grid';\n\nimport { exportDataGrid } from 'devextreme/pdf_exporter';\nimport { exportDataGrid as exportDataGridExcel } from 'devextreme/excel_exporter';\nimport { jsPDF } from 'jspdf';\nimport { Workbook } from 'exceljs';\nimport { saveAs } from 'file-saver';\n\n// Iconos\nimport { FontAwesomeIcon } from \"@fortawesome/react-fontawesome\";\nimport { faArrowsRotate } from \"@fortawesome/pro-solid-svg-icons\";\nimport { faArrowUp } from \"@fortawesome/pro-solid-svg-icons\";\nimport { faArrowDown } from \"@fortawesome/pro-solid-svg-icons\";\nimport { faEquals } from \"@fortawesome/pro-solid-svg-icons\";\nimport { faFileExcel } from \"@fortawesome/pro-solid-svg-icons\";\nimport { faFilePdf } from \"@fortawesome/pro-solid-svg-icons\";\nimport { faMobile } from \"@fortawesome/pro-solid-svg-icons\";\nimport { faFileChartColumn } from \"@fortawesome/pro-duotone-svg-icons\";\n\nimport dxDateBox from \"devextreme/ui/date_box\";\n\nimport Lambda from 'aws-sdk/clients/lambda';\n\nimport '../ListStyle.css';\n\ndxDateBox.defaultOptions({\n options: {\n dateSerializationFormat: \"yyyy-MM-dd\"\n }\n});\n\nexport default function SalesCompReport(props) {\n const history = useHistory();\n\n const [visibleLoadPanel, setVisibleLoadPanel] = useState(false);\n\n const dateFormatYYYYDDMM = React.useCallback(() => {\n var date = new Date();\n\n var year = date.getFullYear().toString();\n var month = date.getMonth() + 1;\n var day = date.getDate().toString();\n\n if (month < 10)\n month = '0' + month.toString();\n else\n month = month.toString();\n\n return (\n year + \"-\" + month + \"-\" + day\n );\n }, []);\n\n const [reportPayload, setReportPayload] = useState({\n header: {\n FechaD: dateFormatYYYYDDMM(),\n FechaA: dateFormatYYYYDDMM()\n },\n salesPlaza: [],\n locations: []\n });\n\n //Ref para el form\n const [formReporteRef, setFormReporteRef] = useState(React.createRef());\n\n //Ref para el grid Sucursales\n const [gridSucursalesRef, setGridSucursalesRef] = useState(React.createRef());\n\n //Ref para el grid Plazas\n const [gridPlazasRef, setGridPlazasRef] = useState(React.createRef());\n\n const filterBuilderPopupPosition = {\n of: window,\n at: 'top',\n my: 'top',\n offset: { y: 10 },\n };\n\n var fechaEditorOptions = useMemo(() => {\n return {\n width: '100%',\n readOnly: false\n };\n }, []);\n\n var fechaAnteriorEditorOptions = useMemo(() => {\n return {\n width: '100%',\n readOnly: true\n };\n }, []);\n\n const icono = React.useCallback((data) => {\n var Diferencia = parseFloat(data.data.Diferencia);\n\n if (!Diferencia)\n Diferencia = 0;\n\n if (Diferencia === 0) {\n return (<div class=\"inline-block text-xl\"><FontAwesomeIcon icon={faEquals} /></div>)\n }\n else if (Diferencia > 0) {\n return (<div class=\"inline-block text-xl text-green-500\"><FontAwesomeIcon icon={faArrowUp} /></div>)\n }\n else if (Diferencia < 0) {\n return (<div class=\"inline-block text-xl text-red-500\"><FontAwesomeIcon icon={faArrowDown} /></div>)\n }\n }, []);\n\n const refreshButton = React.useCallback(async () => {\n if (formReporteRef.current) {\n var formReporte = formReporteRef.current.instance();\n var isValid = formReporte.validate();\n\n if (!isValid.isValid) {\n return;\n }\n }\n\n try {\n setVisibleLoadPanel(true);\n\n var lambdaFunction;\n\n if (window.location.href.indexOf('sandbox.') >= 0 || window.location.href.indexOf('localhost') >= 0)\n lambdaFunction = 'reporteComparativoVentas-dev';\n else if (window.location.href.indexOf('sandboxtampico.') >= 0)\n lambdaFunction = 'reporteComparativoVentas-devleona';\n else if (window.location.href.indexOf('tampico.') >= 0)\n lambdaFunction = 'reporteComparativoVentas-prodleona';\n else\n lambdaFunction = 'reporteComparativoVentas-prod';\n\n Auth.currentCredentials()\n .then(credentials => {\n const lambda = new Lambda({\n credentials: Auth.essentialCredentials(credentials),\n region: 'us-east-1'\n });\n\n var params = {\n FunctionName: lambdaFunction,\n Payload: JSON.stringify({\n fromDate: reportPayload.header.FechaD,\n toDate: reportPayload.header.FechaA,\n Title: reportPayload.header.Titulo,\n username: props.username\n })\n };\n\n lambda.invoke(params, function (err, data) {\n if (err) {\n setVisibleLoadPanel(false);\n }\n else {\n var payload = JSON.parse(JSON.parse(data.Payload).body);\n\n setVisibleLoadPanel(false);\n setReportPayload(payload);\n }\n });\n })\n }\n catch (e) {\n setVisibleLoadPanel(false);\n\n if (e === 'No current user') {\n history.push('/');\n\n window.location.reload();\n }\n }\n }, [formReporteRef, history, reportPayload, props.username]);\n\n const excelButton = React.useCallback(() => {\n const workbook = new Workbook();\n const locationSheet = workbook.addWorksheet('Sucursales');\n const salesPlazaSheet = workbook.addWorksheet('Plazas');\n\n var gridSucursales = gridSucursalesRef.current.instance();\n var gridPlazas = gridPlazasRef.current.instance();\n\n exportDataGridExcel({\n worksheet: locationSheet,\n component: gridSucursales,\n topLeftCell: { row: 1, column: 1 }\n }).then(() => exportDataGridExcel({\n worksheet: salesPlazaSheet,\n component: gridPlazas,\n topLeftCell: { row: 1, column: 1 }\n })).then(() => {\n workbook.xlsx.writeBuffer().then((buffer) => {\n saveAs(new Blob([buffer], { type: 'application/octet-stream' }), 'Reporte.xlsx');\n });\n });\n\n }, [gridPlazasRef, gridSucursalesRef]);\n\n const pdfButton = React.useCallback(() => {\n const doc = new jsPDF();\n\n var gridSucursales = gridSucursalesRef.current.instance();\n var gridPlazas = gridPlazasRef.current.instance();\n\n doc.text('Comparación de ventas por Sucursal de ' + reportPayload.header.FechaD + ' al ' + reportPayload.header.FechaA, 7, 10);\n\n if (reportPayload.header.Titulo)\n doc.text(reportPayload.header.Titulo, 7, 17);\n\n exportDataGrid({\n jsPDFDocument: doc,\n component: gridSucursales,\n topLeft: { x: 7, y: 7 },\n columnWidths: [41, 31, 31, 0, 31, 25],\n customizeCell: ({ gridCell, pdfCell }) => {\n pdfCell.font.size = 7;\n }\n }).then(() => {\n doc.addPage();\n\n doc.text('Comparación de ventas por Plaza de ' + reportPayload.header.FechaD + ' al ' + reportPayload.header.FechaA, 7, 10);\n\n if (reportPayload.header.Titulo)\n doc.text(reportPayload.header.Titulo, 7, 17);\n\n exportDataGrid({\n jsPDFDocument: doc,\n component: gridPlazas,\n topLeft: { x: 7, y: 7 },\n columnWidths: [41, 31, 31, 0, 31, 25],\n customizeCell: ({ gridCell, pdfCell }) => {\n pdfCell.font.size = 7;\n },\n }).then(() => {\n doc.save('Reporte.pdf');\n });\n });\n }, [gridPlazasRef, gridSucursalesRef, reportPayload.header.FechaA, reportPayload.header.FechaD, reportPayload.header.Titulo]);\n\n const pdfMobileButton = React.useCallback(() => {\n const doc = new jsPDF();\n\n var gridSucursales = gridSucursalesRef.current.instance();\n var gridPlazas = gridPlazasRef.current.instance();\n\n doc.text('Comparación de ventas por Sucursal de ' + reportPayload.header.FechaD + ' al ' + reportPayload.header.FechaA, 7, 10);\n\n if (reportPayload.header.Titulo)\n doc.text(reportPayload.header.Titulo, 7, 17);\n\n exportDataGrid({\n jsPDFDocument: doc,\n component: gridSucursales,\n topLeft: { x: 7, y: 7 },\n columnWidths: [68, 38, 38, 0, 0, 30],\n customizeCell: ({ gridCell, pdfCell }) => {\n pdfCell.font.size = 10;\n }\n }).then(() => {\n doc.addPage();\n\n doc.text('Comparación de ventas por Plaza de ' + reportPayload.header.FechaD + ' al ' + reportPayload.header.FechaA, 7, 10);\n\n if (reportPayload.header.Titulo)\n doc.text(reportPayload.header.Titulo, 7, 17);\n\n exportDataGrid({\n jsPDFDocument: doc,\n component: gridPlazas,\n topLeft: { x: 7, y: 7 },\n columnWidths: [68, 38, 38, 0, 0, 30],\n customizeCell: ({ gridCell, pdfCell }) => {\n pdfCell.font.size = 10;\n },\n }).then(() => {\n doc.save('Reporte.pdf');\n });\n });\n }, [gridPlazasRef, gridSucursalesRef, reportPayload.header.FechaA, reportPayload.header.FechaD, reportPayload.header.Titulo]);\n\n const calculateDiffPercent = React.useCallback((options) => {\n if (options.name === 'PorcentajeDiferencia') {\n if (options.summaryProcess === 'start') {\n options.totalValue = 0;\n }\n else if (options.summaryProcess === 'calculate') {\n options.totalValue = reportPayload.header.Porcentaje;\n }\n }\n }, [reportPayload]);\n\n const calculateDiffPercentPlaza = React.useCallback((options) => {\n if (options.name === 'PorcentajeDiferencia') {\n if (options.summaryProcess === 'start') {\n options.totalValue = 0;\n }\n else if (options.summaryProcess === 'calculate') {\n options.totalValue = reportPayload.header.PorcentajePlazas;\n }\n }\n }, [reportPayload]);\n\n return (\n <div>\n <div class=\"bg-gray-200 m-2\">\n <h1 class=\"font-sans inline-block text-xl font-bold text-gray-700 leading-8 align-top mb-1\"><FontAwesomeIcon icon={faFileChartColumn} size=\"xl\" /> Comparativo de Ventas</h1>\n </div>\n <div>\n <button onClick={refreshButton} type=\"submit\" class=\"ml-2 mb-4 bg-blue-500 hover:bg-blue-700 text-white font-bold py-2 px-4 rounded\">\n <FontAwesomeIcon icon={faArrowsRotate} /> Actualizar\n </button>\n <button onClick={excelButton} type=\"submit\" class=\"mb-4 ml-4 bg-blue-500 hover:bg-blue-700 text-white font-bold py-2 px-4 rounded\">\n <FontAwesomeIcon icon={faFileExcel} /> Exportar Excel\n </button>\n <button onClick={pdfButton} type=\"submit\" class=\"mb-4 ml-4 bg-blue-500 hover:bg-blue-700 text-white font-bold py-2 px-4 rounded\">\n <FontAwesomeIcon icon={faFilePdf} /> Exportar PDF\n </button>\n <button onClick={pdfMobileButton} type=\"submit\" class=\"mb-4 ml-4 bg-blue-500 hover:bg-blue-700 text-white font-bold py-2 px-4 rounded\">\n <FontAwesomeIcon icon={faMobile} /> Exportar PDF Móvil\n </button>\n </div>\n\n <LoadPanel\n shadingColor=\"rgba(0,0,0,0.4)\"\n visible={visibleLoadPanel}\n showIndicator={true}\n message=\"Por favor espere...\"\n shading={true}\n showPane={true}\n hideOnOutsideClick={false}\n />\n\n <div class=\"m-2 bg-white p-4 shadow-xl\">\n <Form\n id=\"formReporte\"\n labelMode={'outside'}\n formData={reportPayload}\n readOnly={false}\n showColonAfterLabel={false}\n labelLocation={'top'}\n ref={formReporteRef}\n >\n <GroupItem caption=\"Filtros\" colCount={2}>\n <Item dataField=\"header.FechaD\" editorType=\"dxDateBox\" editorOptions={fechaEditorOptions}>\n <Label text={\"De Fecha\"} />\n <RequiredRule message=\"De Fecha es requerido\" />\n </Item>\n <Item dataField=\"header.FechaA\" editorType=\"dxDateBox\" editorOptions={fechaEditorOptions}>\n <Label text={\"A Fecha\"} />\n <RequiredRule message=\"A Fecha es requerido\" />\n </Item>\n <Item dataField=\"header.FechaDAnterior\" editorType=\"dxDateBox\" editorOptions={fechaAnteriorEditorOptions}>\n <Label text={\"De Fecha Anterior\"} />\n </Item>\n <Item dataField=\"header.FechaAAnterior\" editorType=\"dxDateBox\" editorOptions={fechaAnteriorEditorOptions}>\n <Label text={\"A Fecha Anterior\"} />\n </Item>\n </GroupItem>\n <GroupItem caption=\"Título Reporte\" colCount={2}>\n <Item dataField=\"header.Titulo\" >\n <Label text={\"Título\"} />\n </Item>\n </GroupItem>\n <GroupItem caption=\"Información\" colCount={1}>\n <TabbedItem>\n <TabPanelOptions deferRendering={false} showNavButtons={true} />\n <Tab title=\"Sucursales\" colCount={2}>\n <DataGrid\n id=\"gridSucursales\"\n ref={gridSucursalesRef}\n columnsAutoWidth={true}\n dataSource={reportPayload.locations}\n showBorders={true}\n showColumnLines={true}\n showRowLines={true}\n rowAlternationEnabled={true}\n allowColumnResizing={true}\n columnResizingMode=\"widget\"\n allowColumnReordering={false}\n repaintChangesOnly={true}\n >\n <Scrolling\n mode='virtual'\n />\n <Editing\n mode=\"cell\"\n newRowPosition=\"last\"\n allowUpdating={false}\n allowAdding={false}\n allowDeleting={false}\n />\n\n <Sorting mode=\"none\" />\n <FilterRow visible={true} />\n <FilterPanel visible={true} />\n <FilterBuilderPopup position={filterBuilderPopupPosition} />\n\n <HeaderFilter visible={true} />\n\n <Column dataField=\"Nombre\" width={400} visible={true} />\n <Column dataField=\"Importe\" width={180} dataType=\"number\" caption=\"Importe Actual\">\n <Format\n type=\"currency\"\n precision={2}\n\n />\n </Column>\n <Column dataField=\"ImporteAnterior\" width={180} dataType=\"number\" caption=\"Importe Anterior\">\n <Format\n type=\"currency\"\n precision={2}\n\n />\n </Column>\n <Column caption=\"\" alignment=\"center\" width={50} cellRender={icono} />\n <Column dataField=\"Diferencia\" width={180} dataType=\"number\" caption=\"Diferencia\">\n <Format\n type=\"currency\"\n precision={2}\n />\n </Column>\n <Column dataField=\"Porcentaje\" width={180} dataType=\"number\" caption=\"Porcentaje\">\n <Format\n type=\"percent\"\n precision={2}\n />\n </Column>\n <Summary calculateCustomSummary={calculateDiffPercent}>\n <TotalItem\n column=\"Importe\"\n summaryType=\"sum\"\n valueFormat=\"$,##0.##\"\n displayFormat=\"Total {0}\"\n showInColumn=\"Importe\"\n />\n <TotalItem\n column=\"ImporteAnterior\"\n summaryType=\"sum\"\n valueFormat=\"$,##0.##\"\n displayFormat=\"Total {0}\"\n showInColumn=\"ImporteAnterior\"\n />\n <TotalItem\n column=\"Diferencia\"\n summaryType=\"sum\"\n valueFormat=\"$,##0.##\"\n displayFormat=\"Total {0}\"\n showInColumn=\"Diferencia\"\n />\n <TotalItem\n name=\"PorcentajeDiferencia\"\n summaryType=\"custom\"\n valueFormat=\",##0.##\"\n displayFormat=\"{0} %\"\n showInColumn=\"Porcentaje\"\n />\n </Summary>\n </DataGrid>\n </Tab>\n <Tab title=\"Plazas\" colCount={2}>\n <DataGrid\n id=\"gridPlazas\"\n ref={gridPlazasRef}\n columnsAutoWidth={true}\n dataSource={reportPayload.salesPlaza}\n showBorders={true}\n showColumnLines={true}\n showRowLines={true}\n rowAlternationEnabled={true}\n allowColumnResizing={true}\n columnResizingMode=\"widget\"\n allowColumnReordering={false}\n repaintChangesOnly={true}\n >\n <Scrolling\n mode='virtual'\n />\n <Editing\n mode=\"cell\"\n newRowPosition=\"last\"\n allowUpdating={false}\n allowAdding={false}\n allowDeleting={false}\n />\n\n <Sorting mode=\"none\" />\n <FilterRow visible={true} />\n <FilterPanel visible={true} />\n <FilterBuilderPopup position={filterBuilderPopupPosition} />\n\n <HeaderFilter visible={true} />\n\n <Column dataField=\"Plaza\" width={300} visible={true} />\n <Column dataField=\"Importe\" width={180} dataType=\"number\" caption=\"Importe Actual\">\n <Format\n type=\"currency\"\n precision={2}\n\n />\n </Column>\n <Column dataField=\"ImporteAnterior\" width={180} dataType=\"number\" caption=\"Importe Anterior\">\n <Format\n type=\"currency\"\n precision={2}\n\n />\n </Column>\n <Column caption=\"\" alignment=\"center\" width={50} cellRender={icono} />\n <Column dataField=\"Diferencia\" width={180} dataType=\"number\" caption=\"Diferencia\">\n <Format\n type=\"currency\"\n precision={2}\n />\n </Column>\n <Column dataField=\"Porcentaje\" width={180} dataType=\"number\" caption=\"Porcentaje\">\n <Format\n type=\"percent\"\n precision={2}\n />\n </Column>\n <Summary calculateCustomSummary={calculateDiffPercentPlaza}>\n <TotalItem\n column=\"Importe\"\n summaryType=\"sum\"\n valueFormat=\"$,##0.##\"\n displayFormat=\"Total {0}\"\n showInColumn=\"Importe\"\n />\n <TotalItem\n column=\"ImporteAnterior\"\n summaryType=\"sum\"\n valueFormat=\"$,##0.##\"\n displayFormat=\"Total {0}\"\n showInColumn=\"ImporteAnterior\"\n />\n <TotalItem\n column=\"Diferencia\"\n summaryType=\"sum\"\n valueFormat=\"$,##0.##\"\n displayFormat=\"Total {0}\"\n showInColumn=\"Diferencia\"\n />\n <TotalItem\n name=\"PorcentajeDiferencia\"\n summaryType=\"custom\"\n valueFormat=\",##0.##\"\n displayFormat=\"{0} %\"\n showInColumn=\"Porcentaje\"\n />\n </Summary>\n </DataGrid>\n </Tab>\n </TabbedItem>\n </GroupItem>\n </Form>\n </div>\n </div>\n );\n}","import React, { useState, useEffect, useRef, useMemo } from 'react';\n\n// LoadPanel\nimport { LoadPanel } from 'devextreme-react/load-panel';\n\n// Toast\nimport { Toast } from 'devextreme-react/toast';\n\n//Form\nimport Form, { GroupItem, Label, TabbedItem, TabPanelOptions, Tab, EmptyItem } from 'devextreme-react/form';\n\n//Validator\nimport { EmailRule, CustomRule } from 'devextreme-react/validator';\n\nimport { Auth, API, Storage } from 'aws-amplify';\n\n// Ruteador\nimport { Route, Link, useHistory } from \"react-router-dom\";\n\n// Grid\nimport DataGrid, {\n Column, FilterRow, HeaderFilter, FilterPanel, FilterBuilderPopup,\n GroupPanel, Grouping, SearchPanel, Sorting, Editing, Lookup, Toolbar, Item, RequiredRule,\n Scrolling, Pager, Paging, Summary, TotalItem, StateStoring, ColumnChooser, Format, Selection,\n Export, ColumnChooserSearch, ColumnChooserSelection\n} from 'devextreme-react/data-grid';\n\n//CheckBox\nimport CheckBox from 'devextreme-react/check-box';\n\n// Iconos\nimport { FontAwesomeIcon } from \"@fortawesome/react-fontawesome\";\nimport { faGlasses } from \"@fortawesome/pro-solid-svg-icons\";\nimport { faPencilAlt } from \"@fortawesome/pro-solid-svg-icons\";\nimport { faArrowRotateLeft } from \"@fortawesome/pro-solid-svg-icons\";\nimport { faSave } from \"@fortawesome/pro-solid-svg-icons\";\nimport { faList } from \"@fortawesome/pro-duotone-svg-icons\";\nimport { faFilePdf } from \"@fortawesome/pro-solid-svg-icons\";\nimport { faArrowsRotate } from \"@fortawesome/pro-solid-svg-icons\";\nimport { faFileAlt } from \"@fortawesome/pro-solid-svg-icons\";\nimport { faWineGlassCrack } from \"@fortawesome/pro-duotone-svg-icons\";\nimport { faPlay } from \"@fortawesome/pro-solid-svg-icons\";\nimport { faTrash } from \"@fortawesome/pro-solid-svg-icons\";\nimport { faWindowClose } from \"@fortawesome/pro-solid-svg-icons\";\nimport { faArrowUpRightFromSquare } from \"@fortawesome/pro-solid-svg-icons\";\nimport { faThumbsUp } from \"@fortawesome/pro-solid-svg-icons\";\n\nimport 'devextreme/data/odata/store';\nimport CustomStore from 'devextreme/data/custom_store';\n\nimport DataSource from 'devextreme/data/data_source';\n\nimport '../ListStyle.css';\n\n//FileUploader\nimport FileUploader from 'devextreme-react/file-uploader';\n\n//FileManager\nimport FileManager, { Permissions } from 'devextreme-react/file-manager';\n\nimport dxDateBox from \"devextreme/ui/date_box\";\n\nimport dxNumberBox from \"devextreme/ui/number_box\";\n\nimport TransactionStatus from \"../TransactionStatus/TransactionStatus.js\";\n\nimport Lambda from 'aws-sdk/clients/lambda';\n\nimport { Popup, Position, ToolbarItem } from 'devextreme-react/popup';\n\nimport ScrollView from 'devextreme-react/scroll-view';\n\nimport { Workbook } from 'exceljs';\nimport { saveAs } from 'file-saver';\nimport { exportDataGrid } from 'devextreme/excel_exporter'\n\ndxDateBox.defaultOptions({\n options: {\n dateSerializationFormat: \"yyyy-MM-dd\"\n }\n});\n\ndxNumberBox.defaultOptions({\n options: {\n step: 0\n }\n});\n\nfunction isNotEmpty(value) {\n return value !== undefined && value !== null && value !== '';\n}\n\nexport default function InventoryTransfer(props) {\n const history = useHistory();\n\n const [isDetail, setIsDetail] = useState(false);\n const [id, setId] = useState();\n const [permissionLevel] = useState(props.nivel);\n const [approveInventoryTransfer] = useState(props.approveInventoryTransfer);\n\n const [inventoryTransferPayload, setInventoryTransferPayload] = useState({\n header: {},\n detail: [],\n movEstatusLog: []\n });\n\n const [autoExpandAll, setAutoExpandAll] = useState(true);\n\n // setValue para el control tab\n const [value, setValue] = React.useState(0);\n\n const [visibleLoadPanel, setVisibleLoadPanel] = useState(false);\n\n const [visibleToast, setVisibleToast] = useState(false);\n const [messageToast, setMessageToast] = useState('');\n const [typeToast, setTypeToast] = useState('success');\n\n const [conceptos, setConceptos] = useState([]);\n const [almacenes, setAlmacenes] = useState([]);\n const [tipoDano, setTipoDano] = useState([]);\n const [motivoDano, setMotivoDano] = useState([]);\n const [autorizacionProveedor, setAutorizacionProveedor] = useState([]);\n const [observaciones, setObservaciones] = useState([]);\n\n const [popupVisible, setPopupVisible] = useState(false);\n const [popupTitle, setPopupTitle] = useState('Íconos Pedido');\n\n const [activateUpdateGrid, setActivateUpdateGrid] = useState(false);\n const [acceptCustomValues, setAcceptCustomValue] = useState(false);\n const [activateSaveButton, setActivateSaveButton] = useState(false);\n const [activateConfirmButton, setActivateConfirmButton] = useState(false);\n const [activateApproveButton, setActivateApproveButton] = useState(false);\n const [activateDeleteButton, setActivateDeleteButton] = useState(false);\n const [activateCancelButton, setActivateCancelButton] = useState(false);\n const [activatePDFButton, setActivatePDFButton] = useState(false);\n const [activateUpdateForm, setActivateUpdateForm] = useState(false);\n const [activateAttachments, setActivateAttachments] = useState(false);\n\n //Ref para el form\n const [formDatosGeneralesRef] = useState(React.createRef());\n\n //Ref para el grid Articulos\n const [gridArticulosRef, setGridArticulosRef] = useState(React.createRef());\n\n const [attachments, setAttachments] = useState([]);\n\n const handleChange = (event, newValue) => {\n setValue(newValue);\n };\n\n const filterBuilderPopupPosition = {\n of: window,\n at: 'top',\n my: 'top',\n offset: { y: 10 },\n };\n\n const allowedPageSizes = [5, 10, 15, 20, 'all'];\n\n const exportFormats = ['xlsx'];\n\n function getOrderDay(rowData) {\n return (new Date(rowData.OrderDate)).getDay();\n }\n\n const filterBuilder = {\n customOperations: [{\n name: 'weekends',\n caption: 'Weekends',\n dataTypes: ['date'],\n icon: 'check',\n hasValue: false,\n calculateFilterExpression: () => [[getOrderDay, '=', 0], 'or', [getOrderDay, '=', 6]],\n }],\n allowHierarchicalFields: true,\n };\n\n const filterValue = [['Estatus', '=', 'Sin Afectar']];\n\n //Ref para el grid Tablero de Control\n const [gridTableroRef] = useState(React.createRef());\n\n function onAutoExpandAllChanged() {\n setAutoExpandAll(!autoExpandAll)\n };\n\n const getInventoryTransferRecords = React.useCallback(async (sqlFilter) => {\n try {\n let apiName = 'AdminSC';\n let path = '/procesatransferencias';\n\n let myInit = {\n headers: {\n 'Content-Type': 'application/json',\n Authorization: `${(await Auth.currentSession()).getAccessToken().getJwtToken()}`\n },\n queryStringParameters: {\n action: 'list',\n sqlFilter: sqlFilter,\n salesAccess: props.salesAccess,\n sucursal: props.sucursal,\n username: JSON.parse(JSON.stringify(await Auth.currentAuthenticatedUser())).username\n }\n }\n\n var inventoryTransfersGet = await API.get(apiName, path, myInit);\n }\n catch (e) {\n if (e === 'No current user') {\n history.push('/');\n\n window.location.reload();\n }\n }\n\n return inventoryTransfersGet;\n }, [history, props.salesAccess, props.sucursal]);\n\n const getArticulo = React.useCallback(async (sqlFilter) => {\n let apiName = 'AdminSC';\n let path = '/getcatalogo';\n\n let myInit = {\n headers: {\n 'Content-Type': 'application/json',\n Authorization: `${(await Auth.currentSession()).getAccessToken().getJwtToken()}`\n },\n queryStringParameters: {\n type: 'Articulo',\n username: JSON.parse(JSON.stringify(await Auth.currentAuthenticatedUser())).username,\n sqlFilter: sqlFilter\n }\n }\n\n var articulosGet = await API.get(apiName, path, myInit);\n\n return articulosGet;\n\n }, []);\n\n const getConceptos = React.useCallback(async () => {\n let apiName = 'AdminSC';\n let path = '/getcatalogo';\n\n let myInit = {\n headers: {\n 'Content-Type': 'application/json',\n Authorization: `${(await Auth.currentSession()).getAccessToken().getJwtToken()}`\n },\n queryStringParameters: {\n type: 'Concepto',\n modulo: 'INV',\n username: JSON.parse(JSON.stringify(await Auth.currentAuthenticatedUser())).username\n }\n }\n\n var conceptosGet = await API.get(apiName, path, myInit);\n\n setConceptos(conceptosGet);\n\n return conceptosGet;\n }, []);\n\n const getAlmacenes = React.useCallback(async () => {\n let apiName = 'AdminSC';\n let path = '/getcatalogo';\n\n let myInit = {\n headers: {\n 'Content-Type': 'application/json',\n Authorization: `${(await Auth.currentSession()).getAccessToken().getJwtToken()}`\n },\n queryStringParameters: {\n type: 'AlmacenNormal',\n username: JSON.parse(JSON.stringify(await Auth.currentAuthenticatedUser())).username\n }\n }\n\n var pedidosGet = await API.get(apiName, path, myInit);\n\n setAlmacenes(pedidosGet);\n\n }, []);\n\n const getTipoDano = React.useCallback(async () => {\n let apiName = 'AdminSC';\n let path = '/getcatalogo';\n\n let myInit = {\n headers: {\n 'Content-Type': 'application/json',\n Authorization: `${(await Auth.currentSession()).getAccessToken().getJwtToken()}`\n },\n queryStringParameters: {\n type: 'TipoDano',\n username: JSON.parse(JSON.stringify(await Auth.currentAuthenticatedUser())).username\n }\n }\n\n var tipoDanoGet = await API.get(apiName, path, myInit);\n\n setTipoDano(tipoDanoGet);\n\n }, []);\n\n const getMotivoDano = React.useCallback(async () => {\n let apiName = 'AdminSC';\n let path = '/getcatalogo';\n\n let myInit = {\n headers: {\n 'Content-Type': 'application/json',\n Authorization: `${(await Auth.currentSession()).getAccessToken().getJwtToken()}`\n },\n queryStringParameters: {\n type: 'MotivoDano',\n username: JSON.parse(JSON.stringify(await Auth.currentAuthenticatedUser())).username\n }\n }\n\n var motivoDanoGet = await API.get(apiName, path, myInit);\n\n setMotivoDano(motivoDanoGet);\n\n }, []);\n\n const getAutorizacionProveedor = React.useCallback(async () => {\n let apiName = 'AdminSC';\n let path = '/getcatalogo';\n\n let myInit = {\n headers: {\n 'Content-Type': 'application/json',\n Authorization: `${(await Auth.currentSession()).getAccessToken().getJwtToken()}`\n },\n queryStringParameters: {\n type: 'AutorizacionProveedor',\n username: JSON.parse(JSON.stringify(await Auth.currentAuthenticatedUser())).username\n }\n }\n\n var autorizacionProveedorGet = await API.get(apiName, path, myInit);\n\n setAutorizacionProveedor(autorizacionProveedorGet);\n\n }, []);\n\n const getObservaciones = React.useCallback(async () => {\n let apiName = 'AdminSC';\n let path = '/getcatalogo';\n\n let myInit = {\n headers: {\n 'Content-Type': 'application/json',\n Authorization: `${(await Auth.currentSession()).getAccessToken().getJwtToken()}`\n },\n queryStringParameters: {\n type: 'Observacion',\n modulo: 'INV',\n username: JSON.parse(JSON.stringify(await Auth.currentAuthenticatedUser())).username\n }\n }\n\n var observacionesGet = await API.get(apiName, path, myInit);\n\n setObservaciones(observacionesGet);\n\n }, []);\n\n const store = useMemo(() => {\n return new CustomStore({\n key: 'ID',\n load(loadOptions) {\n let sqlFilter = '(';\n [\n 'filter'\n ].forEach((i) => {\n if (i in loadOptions && isNotEmpty(loadOptions[i])) {\n var filters = loadOptions[i];\n\n var filtersLength = filters.length;\n\n for (var i = 0; i <= filtersLength; i++) {\n var singleFilter = filters[i];\n var singleFilterType = typeof singleFilter;\n var singleFilterIsArray = Array.isArray(singleFilter);\n var singleFilterIsDate = singleFilter instanceof Date;\n\n if (singleFilter === 'NULL') {\n singleFilter = '0';\n }\n\n if (singleFilterType.toString() === 'object' && singleFilterIsArray) {\n sqlFilter += '(';\n\n var subFiltersLength = singleFilter.length;\n\n for (var i2 = 0; i2 <= subFiltersLength; i2++) {\n var singleSubFilter = singleFilter[i2];\n var singleSubFilterType = typeof singleSubFilter;\n var singleSubFilterIsArray = Array.isArray(singleSubFilter);\n var singleSubFilterIsDate = singleSubFilter instanceof Date\n\n if (singleSubFilter === 'NULL') {\n singleSubFilter = '0';\n }\n\n if (singleSubFilterType.toString() === 'object' && singleSubFilterIsArray) {\n sqlFilter += '(';\n\n var subSubFiltersLength = singleSubFilter.length;\n\n for (var i3 = 0; i3 <= subSubFiltersLength; i3++) {\n var singleSubSubFilter = singleSubFilter[i3];\n var singleSubSubFilterType = typeof singleSubSubFilter;\n var singleSubSubFilterIsArray = Array.isArray(singleSubSubFilter);\n var singleSubSubFilterIsDate = singleSubSubFilter instanceof Date\n\n if (singleSubSubFilter === 'NULL') {\n singleSubSubFilter = '0';\n }\n\n if (singleSubSubFilterType.toString() === 'object' && singleSubSubFilterIsArray) {\n sqlFilter += '(';\n\n var subSubSubFiltersLength = singleSubSubFilter.length;\n\n for (var i4 = 0; i4 <= subSubSubFiltersLength; i4++) {\n var singleSubSubSubFilter = singleSubSubFilter[i4];\n var singleSubSubSubFilterType = typeof singleSubSubSubFilter;\n var singleSubSubSubFilterIsArray = Array.isArray(singleSubSubSubFilter);\n var singleSubSubSubFilterIsDate = singleSubSubSubFilter instanceof Date\n\n if (singleSubSubSubFilter === 'NULL') {\n singleSubSubSubFilter = '0';\n }\n\n if (singleSubSubSubFilterType.toString() === 'object' && singleSubSubSubFilterIsArray) {\n sqlFilter += '(';\n\n var subSubSubSubFiltersLength = singleSubSubSubFilter.length;\n\n for (var i5 = 0; i5 <= subSubSubSubFiltersLength; i5++) {\n var singleSubSubSubSubFilter = singleSubSubSubFilter[i5];\n var singleSubSubSubSubFilterType = typeof singleSubSubSubSubFilter;\n var singleSubSubSubSubFilterIsArray = Array.isArray(singleSubSubSubSubFilter);\n var singleSubSubSubSubFilterIsDate = singleSubSubSubSubFilter instanceof Date\n\n if (singleSubSubSubSubFilter === 'NULL') {\n singleSubSubSubSubFilter = '0';\n }\n\n if (singleSubSubSubSubFilterType.toString() === 'string') {\n if (singleSubSubSubSubFilter === 'contains') {\n filters[i][i2][i3][i4][i5] = 'LIKE';\n singleSubSubSubSubFilter = 'LIKE';\n\n filters[i][i2][i3][i4][i5 + 1] = '\\'%' + filters[i][i2][i3][i4][i5 + 1] + '%\\'';\n }\n else if (singleSubSubSubSubFilter === 'notcontains') {\n filters[i][i2][i3][i4][i5] = 'NOT LIKE';\n singleSubSubSubSubFilter = 'NOT LIKE';\n\n filters[i][i2][i3][i4][i5 + 1] = '\\'%' + filters[i][i2][i3][i4][i5 + 1] + '%\\'';\n }\n else if (singleSubSubSubSubFilter === 'startswith') {\n filters[i][i2][i3][i4][i5] = 'LIKE';\n singleSubSubSubSubFilter = 'LIKE';\n\n filters[i][i2][i3][i4][i5 + 1] = '\\'' + filters[i][i2][i3][i4][i5 + 1] + '%\\'';\n }\n else if (singleSubSubSubSubFilter === 'endswith') {\n filters[i][i2][i3][i4][i5] = 'LIKE';\n singleSubSubSubSubFilter = 'LIKE';\n\n filters[i][i2][i3][i4][i5 + 1] = '\\'%' + filters[i][i2][i3][i4][i5 + 1] + '\\'';\n }\n else if (singleSubSubSubSubFilter === '=' || singleSubSubSubSubFilter === '<>' || singleSubSubSubSubFilter === '>' || singleSubSubSubSubFilter === '>=' || singleSubSubSubSubFilter === '<' || singleSubSubSubSubFilter === '<=') {\n if (!filters[i][i2][i3][i4][i5 + 1])\n filters[i][i2][i3][i4][i5 + 1] = 'NULL';\n else if (typeof filters[i][i2][i3][i4][i5 + 1] === 'string') {\n filters[i][i2][i3][i4][i5 + 1] = '\\'' + filters[i][i2][i3][i4][i5 + 1] + '\\'';\n }\n }\n else if (singleSubSubSubSubFilter === '!') {\n filters[i][i2][i3][i4][i5] = 'NOT';\n singleSubSubSubSubFilter = 'NOT';\n }\n\n sqlFilter += ' ' + singleSubSubSubSubFilter + ' ';\n }\n else if (singleSubSubSubSubFilterType.toString() === 'object' && singleSubSubSubSubFilterIsDate) {\n sqlFilter += ' \\'' + singleSubSubSubSubFilter.toISOString().split('T')[0] + '\\' ';\n }\n else if (singleSubSubSubSubFilterType.toString() === 'number') {\n sqlFilter += ' ' + singleSubSubSubSubFilter.toString() + ' ';\n }\n else if (singleSubSubSubSubFilterType.toString() === 'boolean') {\n if (singleSubSubSubSubFilter.toString() === 'true')\n sqlFilter += '1 ';\n else if (singleSubSubSubSubFilter.toString() === 'false' || singleSubSubSubSubFilter === null || singleSubSubSubSubFilter === undefined)\n sqlFilter += '0 ';\n }\n }\n }\n else if (singleSubSubSubFilterType.toString() === 'string') {\n if (singleSubSubSubFilter === 'contains') {\n filters[i][i2][i3][i4] = 'LIKE';\n singleSubSubSubFilter = 'LIKE';\n\n filters[i][i2][i3][i4 + 1] = '\\'%' + filters[i][i2][i3][i4 + 1] + '%\\'';\n }\n else if (singleSubSubSubFilter === 'notcontains') {\n filters[i][i2][i3][i4] = 'NOT LIKE';\n singleSubSubSubFilter = 'NOT LIKE';\n\n filters[i][i2][i3][i4 + 1] = '\\'%' + filters[i][i2][i3][i4 + 1] + '%\\'';\n }\n else if (singleSubSubSubFilter === 'startswith') {\n filters[i][i2][i3][i4] = 'LIKE';\n singleSubSubSubFilter = 'LIKE';\n\n filters[i][i2][i3][i4 + 1] = '\\'' + filters[i][i2][i3][i4 + 1] + '%\\'';\n }\n else if (singleSubSubSubFilter === 'endswith') {\n filters[i][i2][i3][i4] = 'LIKE';\n singleSubSubSubFilter = 'LIKE';\n\n filters[i][i2][i3][i4 + 1] = '\\'%' + filters[i][i2][i3][i4 + 1] + '\\'';\n }\n else if (singleSubSubSubFilter === '=' || singleSubSubSubFilter === '<>' || singleSubSubSubFilter === '>' || singleSubSubSubFilter === '>=' || singleSubSubSubFilter === '<' || singleSubSubSubFilter === '<=') {\n if (!filters[i][i2][i3][i4 + 1])\n filters[i][i2][i3][i4 + 1] = 'NULL';\n else if (typeof filters[i][i2][i3][i4 + 1] === 'string') {\n filters[i][i2][i3][i4 + 1] = '\\'' + filters[i][i2][i3][i4 + 1] + '\\'';\n }\n }\n else if (singleSubSubSubFilter === '!') {\n filters[i][i2][i3][i4] = 'NOT';\n singleSubSubSubFilter = 'NOT';\n }\n\n sqlFilter += ' ' + singleSubSubSubFilter + ' ';\n }\n else if (singleSubSubSubFilterType.toString() === 'object' && singleSubSubSubFilterIsDate) {\n sqlFilter += ' \\'' + singleSubSubSubFilter.toISOString().split('T')[0] + '\\' ';\n }\n else if (singleSubSubSubFilterType.toString() === 'number') {\n sqlFilter += ' ' + singleSubSubSubFilter.toString() + ' ';\n }\n else if (singleSubSubSubFilterType.toString() === 'boolean') {\n if (singleSubSubSubFilter.toString() === 'true')\n sqlFilter += '1 ';\n else if (singleSubSubSubFilter.toString() === 'false' || singleSubSubSubFilter === null || singleSubSubSubFilter === undefined)\n sqlFilter += '0 ';\n }\n }\n\n sqlFilter += ')';\n }\n else if (singleSubSubFilterType.toString() === 'string') {\n if (singleSubSubFilter === 'contains') {\n filters[i][i2][i3] = 'LIKE';\n singleSubSubFilter = 'LIKE';\n\n filters[i][i2][i3 + 1] = '\\'%' + filters[i][i2][i3 + 1] + '%\\'';\n }\n else if (singleSubSubFilter === 'notcontains') {\n filters[i][i2][i3] = 'NOT LIKE';\n singleSubSubFilter = 'NOT LIKE';\n\n filters[i][i2][i3 + 1] = '\\'%' + filters[i][i2][i3 + 1] + '%\\'';\n }\n else if (singleSubSubFilter === 'startswith') {\n filters[i][i2][i3] = 'LIKE';\n singleSubSubFilter = 'LIKE';\n\n filters[i][i2][i3 + 1] = '\\'' + filters[i][i2][i3 + 1] + '%\\'';\n }\n else if (singleSubSubFilter === 'endswith') {\n filters[i][i2][i3] = 'LIKE';\n singleSubSubFilter = 'LIKE';\n\n filters[i][i2][i3 + 1] = '\\'%' + filters[i][i2][i3 + 1] + '\\'';\n }\n else if (singleSubSubFilter === '=' || singleSubSubFilter === '<>' || singleSubSubFilter === '>' || singleSubSubFilter === '>=' || singleSubSubFilter === '<' || singleSubSubFilter === '<=') {\n if (!filters[i][i2][i3 + 1])\n filters[i][i2][i3 + 1] = 'NULL';\n else if (typeof filters[i][i2][i3 + 1] === 'string') {\n filters[i][i2][i3 + 1] = '\\'' + filters[i][i2][i3 + 1] + '\\'';\n }\n }\n else if (singleSubSubFilter === '!') {\n filters[i][i2][i3] = 'NOT';\n singleSubSubFilter = 'NOT';\n }\n sqlFilter += ' ' + singleSubSubFilter + ' ';\n }\n else if (singleSubSubFilterType.toString() === 'object' && singleSubSubFilterIsDate) {\n sqlFilter += ' \\'' + singleSubSubFilter.toISOString().split('T')[0] + '\\' ';\n }\n else if (singleSubSubFilterType.toString() === 'number') {\n sqlFilter += ' ' + singleSubSubFilter.toString() + ' ';\n }\n else if (singleSubSubFilterType.toString() === 'boolean') {\n if (singleSubSubFilter.toString() === 'true')\n sqlFilter += '1 ';\n else if (singleSubSubFilter.toString() === 'false' || singleSubSubFilter === null || singleSubSubFilter === undefined)\n sqlFilter += '0 ';\n }\n }\n\n sqlFilter += ')';\n }\n else if (singleSubFilterType.toString() === 'string') {\n if (singleSubFilter === 'contains') {\n filters[i][i2] = 'LIKE';\n singleSubFilter = 'LIKE';\n\n filters[i][i2 + 1] = '\\'%' + filters[i][i2 + 1] + '%\\'';\n }\n else if (singleSubFilter === 'notcontains') {\n filters[i][i2] = 'NOT LIKE';\n singleSubFilter = 'NOT LIKE';\n\n filters[i][i2 + 1] = '\\'%' + filters[i][i2 + 1] + '%\\'';\n }\n else if (singleSubFilter === 'startswith') {\n filters[i][i2] = 'LIKE';\n singleSubFilter = 'LIKE';\n\n filters[i][i2 + 1] = '\\'' + filters[i][i2 + 1] + '%\\'';\n }\n else if (singleSubFilter === 'endswith') {\n filters[i][i2] = 'LIKE';\n singleSubFilter = 'LIKE';\n\n filters[i][i2 + 1] = '\\'%' + filters[i][i2 + 1] + '\\'';\n }\n else if (singleSubFilter === '=' || singleSubFilter === '<>' || singleSubFilter === '>' || singleSubFilter === '>=' || singleSubFilter === '<' || singleSubFilter === '<=') {\n if (!filters[i][i2 + 1])\n filters[i][i2 + 1] = 'NULL';\n else if (typeof filters[i][i2 + 1] === 'string') {\n filters[i][i2 + 1] = '\\'' + filters[i][i2 + 1] + '\\'';\n }\n }\n else if (singleSubFilter === '!') {\n filters[i][i2] = 'NOT';\n singleSubFilter = 'NOT';\n }\n sqlFilter += ' ' + singleSubFilter + ' ';\n }\n else if (singleSubFilterType.toString() === 'object' && singleSubFilterIsDate) {\n sqlFilter += ' \\'' + singleSubFilter.toISOString().split('T')[0] + '\\' ';\n }\n else if (singleSubFilterType.toString() === 'number') {\n sqlFilter += ' ' + singleSubFilter.toString() + ' ';\n }\n else if (singleSubFilterType.toString() === 'boolean') {\n if (singleSubFilter.toString() === 'true')\n sqlFilter += '1 ';\n else if (singleSubFilter.toString() === 'false' || singleSubFilter === null || singleSubFilter === undefined)\n sqlFilter += '0 ';\n }\n }\n\n sqlFilter += ')';\n }\n else if (singleFilterType.toString() === 'string') {\n if (singleFilter === 'contains') {\n filters[i] = 'LIKE';\n singleFilter = 'LIKE';\n\n filters[i + 1] = '\\'%' + filters[i + 1] + '%\\'';\n }\n else if (singleFilter === 'notcontains') {\n filters[i] = 'NOT LIKE';\n singleFilter = 'NOT LIKE';\n\n filters[i + 1] = '\\'%' + filters[i + 1] + '%\\'';\n }\n else if (singleFilter === 'startswith') {\n filters[i] = 'LIKE';\n singleFilter = 'LIKE';\n\n filters[i + 1] = '\\'' + filters[i + 1] + '%\\'';\n }\n else if (singleFilter === 'endswith') {\n filters[i] = 'LIKE';\n singleFilter = 'LIKE';\n\n filters[i + 1] = '\\'%' + filters[i + 1] + '\\'';\n }\n else if (singleFilter === '=' || singleFilter === '<>' || singleFilter === '>' || singleFilter === '>=' || singleFilter === '<' || singleFilter === '<=') {\n if (!filters[i + 1])\n filters[i + 1] = 'NULL';\n else if (typeof filters[i + 1] === 'string') {\n filters[i + 1] = '\\'' + filters[i + 1] + '\\'';\n }\n }\n else if (singleFilter === '!') {\n filters[i] = 'NOT';\n singleFilter = 'NOT';\n }\n sqlFilter += ' ' + singleFilter + ' ';\n }\n else if (singleFilterType.toString() === 'object' && singleFilterIsDate) {\n sqlFilter += ' \\'' + singleFilter.toISOString().split('T')[0] + '\\' ';\n }\n else if (singleFilterType.toString() === 'number') {\n sqlFilter += ' ' + singleFilter.toString() + ' ';\n }\n else if (singleFilterType.toString() === 'boolean') {\n if (singleFilter.toString() === 'true')\n sqlFilter += '1 ';\n else if (singleFilter.toString() === 'false' || singleFilter === null || singleFilter === undefined)\n sqlFilter += '0 ';\n }\n }\n\n sqlFilter += ')';\n }\n });\n\n async function getRecords() {\n if (sqlFilter === '(')\n sqlFilter = '';\n\n var records = await getInventoryTransferRecords(sqlFilter);\n return {\n data: records,\n totalCount: records.length\n };\n }\n\n return getRecords()\n .then(function (result) {\n return result;\n })\n .catch(() => { throw new Error('Data Loading Error'); });\n }\n })\n }, [getInventoryTransferRecords]);\n\n const storeArticulo = useMemo(() => {\n return new CustomStore({\n key: 'value',\n load(loadOptions) {\n let sqlFilter = '';\n [\n 'filter'\n ].forEach((i) => {\n sqlFilter = loadOptions.searchValue;\n });\n\n async function getRecords() {\n if (sqlFilter) {\n var records = await getArticulo(sqlFilter);\n\n return {\n data: records,\n totalCount: records.length\n };\n }\n else {\n return {\n data: [],\n totalCount: 0\n };\n }\n }\n\n return getRecords()\n .then(function (result) {\n return result;\n })\n .catch(() => { throw new Error('Data Loading Error'); });\n },\n byKey: (key) => {\n async function getRecords(key) {\n var records = await getArticulo(key);\n\n return records;\n }\n\n return getRecords(key);\n }\n })\n }, [getArticulo]);\n\n var conceptosDataSource = useMemo(() => {\n return new DataSource({\n paginate: true,\n store: {\n type: \"array\",\n key: \"Concepto\",\n data: conceptos\n }\n });\n }, [conceptos]);\n\n var almacenDataSource = useMemo(() => {\n return new DataSource({\n paginate: true,\n store: {\n type: \"array\",\n key: \"Almacen\",\n data: almacenes\n }\n });\n }, [almacenes]);\n\n var fechaEmisionEditorOptions = useMemo(() => {\n return {\n width: '100%',\n readOnly: true\n };\n }, []);\n\n var movimientoEditorOptions = useMemo(() => {\n return {\n width: '100%',\n readOnly: true\n };\n }, []);\n\n var tipoDanoDataSource = useMemo(() => {\n return new DataSource({\n paginate: true,\n store: {\n type: \"array\",\n key: \"TipoDano\",\n data: tipoDano\n }\n });\n }, [tipoDano]);\n\n var motivoDanoDataSource = useMemo(() => {\n return new DataSource({\n paginate: true,\n store: {\n type: \"array\",\n key: \"MotivoDano\",\n data: motivoDano\n }\n });\n }, [motivoDano]);\n\n var autorizacionProveedorDataSource = useMemo(() => {\n return new DataSource({\n paginate: true,\n store: {\n type: \"array\",\n key: \"AutorizacionProveedor\",\n data: autorizacionProveedor\n }\n });\n }, [autorizacionProveedor]);\n\n var observacionesDataSource = useMemo(() => {\n return new DataSource({\n paginate: true,\n store: {\n type: \"array\",\n key: \"Observacion\",\n data: observaciones\n }\n });\n }, [observaciones]);\n\n //Opciones Conceptos\n try {\n var conceptoEditorOptions = useMemo(() => {\n return {\n dataSource: conceptosDataSource,\n displayExpr: 'name',\n valueExpr: 'value',\n searchEnabled: true,\n value: (inventoryTransferPayload.header.Concepto ? inventoryTransferPayload.header.Concepto : ''),\n width: '100%'\n };\n }, [conceptosDataSource, inventoryTransferPayload.header.Concepto]);\n }\n catch (e) {\n var conceptoEditorOptions = {\n dataSource: conceptosDataSource,\n displayExpr: 'name',\n valueExpr: 'value',\n searchEnabled: true,\n value: '',\n width: '100%'\n };\n };\n\n //Opciones del campo Almacen\n try {\n var almacenEditorOptions = useMemo(() => {\n return {\n dataSource: almacenDataSource,\n displayExpr: 'name',\n valueExpr: 'value',\n searchEnabled: true,\n acceptCustomValue: !acceptCustomValues,\n value: (inventoryTransferPayload.header.Almacen ? inventoryTransferPayload.header.Almacen : ''),\n width: '100%',\n readOnly: (inventoryTransferPayload.header.Autorizado)\n };\n }, [acceptCustomValues, almacenDataSource, inventoryTransferPayload.header.Almacen, inventoryTransferPayload.header.Autorizado]);\n }\n catch (e) {\n var almacenEditorOptions = {\n dataSource: almacenDataSource,\n displayExpr: 'name',\n valueExpr: 'value',\n searchEnabled: true,\n acceptCustomValue: acceptCustomValues,\n value: '',\n width: '100%'\n };\n }\n\n //Opciones del campo Almacen Destino\n try {\n var almacenDestinoEditorOptions = useMemo(() => {\n return {\n dataSource: almacenDataSource,\n displayExpr: 'name',\n valueExpr: 'value',\n searchEnabled: true,\n acceptCustomValue: !acceptCustomValues,\n value: (inventoryTransferPayload.header.AlmacenDestino ? inventoryTransferPayload.header.AlmacenDestino : ''),\n width: '100%',\n readOnly: inventoryTransferPayload.header.Autorizado\n };\n }, [acceptCustomValues, almacenDataSource, inventoryTransferPayload.header.AlmacenDestino, inventoryTransferPayload.header.Autorizado]);\n }\n catch (e) {\n var almacenDestinoEditorOptions = {\n dataSource: almacenDataSource,\n displayExpr: 'name',\n valueExpr: 'value',\n searchEnabled: true,\n acceptCustomValue: acceptCustomValues,\n value: '',\n width: '100%'\n };\n }\n\n //Opciones del campo Tipo Daño\n try {\n var tipoDanoEditorOptions = useMemo(() => {\n return {\n dataSource: tipoDanoDataSource,\n displayExpr: 'name',\n valueExpr: 'value',\n searchEnabled: true,\n acceptCustomValue: !acceptCustomValues,\n value: (inventoryTransferPayload.header.TipoDano ? inventoryTransferPayload.header.TipoDano : ''),\n width: '100%'\n };\n }, [acceptCustomValues, tipoDanoDataSource, inventoryTransferPayload.header.TipoDano]);\n }\n catch (e) {\n var tipoDanoEditorOptions = {\n dataSource: tipoDanoDataSource,\n displayExpr: 'name',\n valueExpr: 'value',\n searchEnabled: true,\n acceptCustomValue: acceptCustomValues,\n value: '',\n width: '100%'\n };\n }\n\n //Opciones del campo Motivo Daño\n try {\n var motivoDanoEditorOptions = useMemo(() => {\n return {\n dataSource: motivoDanoDataSource,\n displayExpr: 'name',\n valueExpr: 'value',\n searchEnabled: true,\n acceptCustomValue: !acceptCustomValues,\n value: (inventoryTransferPayload.header.MotivoDano ? inventoryTransferPayload.header.MotivoDano : ''),\n width: '100%'\n };\n }, [acceptCustomValues, motivoDanoDataSource, inventoryTransferPayload.header.MotivoDano]);\n }\n catch (e) {\n var motivoDanoEditorOptions = {\n dataSource: motivoDanoDataSource,\n displayExpr: 'name',\n valueExpr: 'value',\n searchEnabled: true,\n acceptCustomValue: acceptCustomValues,\n value: '',\n width: '100%'\n };\n }\n\n //Opciones del campo Autorizacion Proveedor\n try {\n var autorizacionProveedorEditorOptions = useMemo(() => {\n return {\n dataSource: autorizacionProveedorDataSource,\n displayExpr: 'name',\n valueExpr: 'value',\n searchEnabled: true,\n acceptCustomValue: !acceptCustomValues,\n value: (inventoryTransferPayload.header.AutorizacionProveedor ? inventoryTransferPayload.header.AutorizacionProveedor : ''),\n width: '100%'\n };\n }, [acceptCustomValues, autorizacionProveedorDataSource, inventoryTransferPayload.header.AutorizacionProveedor]);\n }\n catch (e) {\n var autorizacionProveedorEditorOptions = {\n dataSource: autorizacionProveedorDataSource,\n displayExpr: 'name',\n valueExpr: 'value',\n searchEnabled: true,\n acceptCustomValue: acceptCustomValues,\n value: '',\n width: '100%'\n };\n }\n\n //Opciones del campo Autorizacion Proveedor\n try {\n var autorizacionProveedorEditorOptions = useMemo(() => {\n return {\n dataSource: autorizacionProveedorDataSource,\n displayExpr: 'name',\n valueExpr: 'value',\n searchEnabled: true,\n acceptCustomValue: !acceptCustomValues,\n value: (inventoryTransferPayload.header.AutorizacionProveedor ? inventoryTransferPayload.header.AutorizacionProveedor : ''),\n width: '100%'\n };\n }, [acceptCustomValues, autorizacionProveedorDataSource, inventoryTransferPayload.header.AutorizacionProveedor]);\n }\n catch (e) {\n var autorizacionProveedorEditorOptions = {\n dataSource: autorizacionProveedorDataSource,\n displayExpr: 'name',\n valueExpr: 'value',\n searchEnabled: true,\n acceptCustomValue: acceptCustomValues,\n value: '',\n width: '100%'\n };\n }\n\n //Opciones del campo Observaciones\n try {\n var observacionesEditorOptions = useMemo(() => {\n return {\n dataSource: observacionesDataSource,\n displayExpr: 'name',\n valueExpr: 'value',\n searchEnabled: true,\n acceptCustomValue: !acceptCustomValues,\n value: (inventoryTransferPayload.header.Observaciones ? inventoryTransferPayload.header.Observaciones : ''),\n width: '100%'\n };\n }, [acceptCustomValues, observacionesDataSource, inventoryTransferPayload.header.Observaciones]);\n }\n catch (e) {\n var observacionesEditorOptions = {\n dataSource: observacionesDataSource,\n displayExpr: 'name',\n valueExpr: 'value',\n searchEnabled: true,\n acceptCustomValue: acceptCustomValues,\n value: '',\n width: '100%'\n };\n }\n\n var cantidadEditorOptions = useMemo(() => {\n return {\n format: '#'\n };\n }, []);\n\n var descripcionDañoEditorOptions = useMemo(() => {\n return {\n };\n }, []);\n\n var observacionesProveedorEditorOptions = useMemo(() => {\n return {\n };\n }, []);\n\n var comentariosEditorOptions = useMemo(() => {\n return {\n };\n }, []);\n\n var autorizacionEditorOptions = useMemo(() => {\n return {\n width: '100%',\n readOnly: true\n };\n }, []);\n\n //Opciones del campo Articulo\n try {\n var articuloEditorOptions = useMemo(() => {\n return {\n dataSource: storeArticulo,\n displayExpr: 'name',\n valueExpr: 'value',\n searchEnabled: true,\n showClearButton: true,\n acceptCustomValue: false,\n disabled: false,\n // searchTimeout: 500,\n width: '100%',\n clearButtonText: 'Cerrar',\n noDataText: 'No se encontraron resultados'\n };\n }, [storeArticulo]);\n }\n catch (e) {\n var articuloEditorOptions = {\n dataSource: storeArticulo,\n displayExpr: 'name',\n valueExpr: 'value',\n searchEnabled: true,\n acceptCustomValue: false,\n width: '100%'\n };\n }\n\n async function uploadChunk(file, uploadInfo) {\n try {\n var responseS3 = await Storage.put(\"/inv/\" + id + \"/\" + file.name, uploadInfo.chunkBlob, {\n contentType: file.type,\n ACL: 'public-read'\n });\n\n //Obtenemos el nombre del bucket\n let bucketName = Storage._config.AWSS3.bucket;\n\n\n let apiName = 'AdminSC';\n let path = '/uploadattachment';\n\n let myInit = {\n headers: {\n 'Content-Type': 'application/json',\n Authorization: `${(await Auth.currentSession()).getAccessToken().getJwtToken()}`\n },\n body: {\n action: 'register',\n bucketName: bucketName,\n type: 'inv',\n id: id,\n Key: \"/inv/\" + id + \"/\" + file.name,\n fileName: file.name,\n username: JSON.parse(JSON.stringify(await Auth.currentAuthenticatedUser())).username\n }\n }\n\n var attachmentsResult = await API.post(apiName, path, myInit);\n\n //Obtenemos los attachments\n var attachmentsGet = await Storage.list(\"/inv/\" + id);\n var attachmentsAux = [];\n\n for (var attachmentsGetIndex in attachmentsGet) {\n var singleAttachmentsGet = attachmentsGet[attachmentsGetIndex];\n\n var singleAttachment = {\n name: singleAttachmentsGet.key.split('/').pop(),\n isDirectory: false,\n size: singleAttachmentsGet.size,\n };\n\n attachmentsAux.push(singleAttachment);\n }\n\n setAttachments(attachmentsAux);\n }\n catch (err) {\n console.log(\"Error uploading file:\", err);\n }\n };\n\n async function onAttachmentDeleting(e) {\n var fileName = e.item.key;\n\n //Primero borramos el archivo de S3\n var attachmentsDelete = await Storage.remove(\"/inv/\" + id + \"/\" + fileName);\n\n //Despues borramos el attachment en Intelisis\n let bucketName = Storage._config.AWSS3.bucket;\n\n let apiName = 'AdminSC';\n let path = '/uploadattachment';\n\n let myInit = {\n headers: {\n 'Content-Type': 'application/json',\n Authorization: `${(await Auth.currentSession()).getAccessToken().getJwtToken()}`\n },\n body: {\n action: 'delete',\n bucketName: bucketName,\n type: 'inv',\n id: id,\n Key: \"/inv/\" + id + \"/\" + fileName,\n fileName: fileName,\n username: JSON.parse(JSON.stringify(await Auth.currentAuthenticatedUser())).username\n }\n }\n\n var attachmentsResult = await API.post(apiName, path, myInit);\n\n //Finalmente sincronizamos el state\n var attachmentsGet = await Storage.list(\"/inv/\" + id);\n var attachmentsAux = [];\n\n for (var attachmentsGetIndex in attachmentsGet) {\n var singleAttachmentsGet = attachmentsGet[attachmentsGetIndex];\n\n var singleAttachment = {\n name: singleAttachmentsGet.key.split('/').pop(),\n isDirectory: false,\n size: singleAttachmentsGet.size,\n };\n\n attachmentsAux.push(singleAttachment);\n }\n\n setAttachments(attachmentsAux);\n };\n\n function downloadBlob(blob, filename) {\n const url = URL.createObjectURL(blob);\n const a = document.createElement('a');\n a.href = url;\n a.download = filename || 'download';\n const clickHandler = () => {\n setTimeout(() => {\n URL.revokeObjectURL(url);\n a.removeEventListener('click', clickHandler);\n }, 150);\n };\n\n a.addEventListener('click', clickHandler, false);\n\n a.click();\n\n return a;\n };\n\n async function onItemDownloading(e) {\n e.cancel = true;\n\n const downloadFileResponse = await Storage.get(\"/inv/\" + id + \"/\" + e.item.name, { download: true });\n\n downloadBlob(downloadFileResponse.Body, e.item.name);\n };\n\n function openBlob(blob, filename) {\n const url = URL.createObjectURL(blob);\n\n window.open(url, \"_blank\");\n };\n\n async function onAttachmentOpen(e) {\n const downloadFileResponse = await Storage.get(\"/inv/\" + id + \"/\" + e.file.name, { download: true });\n\n openBlob(downloadFileResponse.Body, e.file.name);\n };\n\n const getinventoryTransferPayload = React.useCallback(async (ID) => {\n try {\n let apiName = 'AdminSC';\n let path = '/procesatransferencias';\n\n let myInit = {\n headers: {\n 'Content-Type': 'application/json',\n Authorization: `${(await Auth.currentSession()).getAccessToken().getJwtToken()}`\n },\n queryStringParameters: {\n ID: ID,\n action: 'payload',\n username: JSON.parse(JSON.stringify(await Auth.currentAuthenticatedUser())).username\n }\n };\n\n var payloadGet = await API.get(apiName, path, myInit);\n\n setInventoryTransferPayload(payloadGet);\n\n //Obtenemos los attachments\n var attachmentsGet = await Storage.list(\"/inv/\" + ID);\n var attachmentsAux = [];\n\n for (var attachmentsGetIndex in attachmentsGet) {\n var singleAttachmentsGet = attachmentsGet[attachmentsGetIndex];\n\n var singleAttachment = {\n name: singleAttachmentsGet.key.split('/').pop(),\n isDirectory: false,\n size: singleAttachmentsGet.size,\n };\n\n attachmentsAux.push(singleAttachment);\n }\n\n setAttachments(attachmentsAux);\n }\n catch (e) {\n if (e === 'No current user') {\n history.push('/');\n\n window.location.reload();\n }\n }\n\n return payloadGet;\n\n }, [history]);\n\n function editInventoryTransfer(data) {\n return (\n <Link to={`/InventoryTransfer/${data.data.ID}`}>\n <button class=\"bg-blue-500 hover:bg-blue-700 text-white py-1 px-3 rounded\" onClick={() => editButton(data.data.ID)}><FontAwesomeIcon icon={permissionLevel === 'Editar' ? faPencilAlt : faGlasses} /> {permissionLevel === 'Editar' ? 'Editar' : 'Ver'}</button>\n </Link>\n )\n }\n\n function openRelatedRecord(redirect) {\n if (redirect) {\n var baseUrl = window.location.href.split('#/')[0];\n\n redirect = baseUrl + '#' + redirect;\n\n window.open(redirect, \"_blank\");\n }\n };\n\n function openRelatedRecordButton(data) {\n return (\n <button onClick={() => openRelatedRecord(data.data.redirect)}><FontAwesomeIcon icon={faArrowUpRightFromSquare} /></button>\n )\n };\n\n function estatusRelatedRecords(data) {\n return (\n <TransactionStatus {...props} Estatus={data.data.Estatus} />\n )\n };\n\n function blobToBase64(blob) {\n return new Promise((resolve, _) => {\n const reader = new FileReader();\n reader.onloadend = () => resolve(reader.result);\n reader.readAsDataURL(blob);\n });\n };\n\n const newButton = React.useCallback(async () => {\n try {\n let apiName = 'AdminSC';\n let path = '/procesatransferencias';\n\n let myInit = {\n headers: {\n 'Content-Type': 'application/json',\n Authorization: `${(await Auth.currentSession()).getAccessToken().getJwtToken()}`\n },\n queryStringParameters: {\n action: 'new',\n username: JSON.parse(JSON.stringify(await Auth.currentAuthenticatedUser())).username,\n usuario: props.usuario,\n sucursal: props.sucursal\n }\n };\n\n var payloadNew = await API.get(apiName, path, myInit);\n\n setInventoryTransferPayload(payloadNew);\n\n setAttachments([]);\n\n setIsDetail(true);\n setId(undefined);\n\n setActivateUpdateForm(true);\n setAcceptCustomValue(false);\n setActivateSaveButton(true);\n setActivateDeleteButton(false);\n setActivateCancelButton(false);\n setActivateConfirmButton(false);\n setActivateApproveButton(false);\n setActivatePDFButton(false);\n setActivateAttachments(false);\n setActivateUpdateGrid(true);\n\n setVisibleLoadPanel(false);\n }\n catch (e) {\n if (e === 'No current user') {\n history.push('/');\n\n window.location.reload();\n }\n }\n }, [history, props.sucursal, props.usuario]);\n\n const editButton = React.useCallback(async (ID) => {\n try {\n if (!window.event.metaKey && !window.event.ctrlKey) {\n setVisibleLoadPanel(true);\n\n setIsDetail(true);\n setId(ID);\n\n var payload = await getinventoryTransferPayload(ID);\n\n if (permissionLevel === 'Editar') {\n if (payload.header.Estatus === 'Sin Afectar') {\n setActivateUpdateForm(true);\n setAcceptCustomValue(false);\n setActivateSaveButton(true);\n setActivatePDFButton(true);\n setActivateAttachments(true);\n\n if (!payload.header.MovID) {\n setActivateDeleteButton(true);\n setActivateCancelButton(false);\n }\n else {\n setActivateDeleteButton(false);\n setActivateCancelButton(true);\n }\n\n if (!payload.header.Autorizado) {\n setActivateUpdateGrid(true);\n }\n else {\n setActivateUpdateGrid(false);\n }\n\n if (payload.header.RequiereAutorizacion === true && payload.header.Autorizado === false && approveInventoryTransfer)\n setActivateApproveButton(true);\n else\n setActivateApproveButton(false);\n\n if (payload.header.RequiereAutorizacion === true && payload.header.Autorizado === true)\n setActivateConfirmButton(true);\n else\n setActivateConfirmButton(false);\n }\n if (payload.header.Estatus === 'Por Procesar') {\n setActivateUpdateForm(false);\n setAcceptCustomValue(true);\n setActivateSaveButton(false);\n setActivatePDFButton(true);\n setActivateAttachments(true);\n setActivateDeleteButton(false);\n setActivateCancelButton(true);\n setActivateUpdateGrid(false);\n setActivateApproveButton(false);\n setActivateConfirmButton(true);\n }\n else if (payload.header.Estatus === 'Concluido') {\n setActivateUpdateForm(false);\n setAcceptCustomValue(true);\n setActivateSaveButton(false);\n setActivateDeleteButton(false);\n setActivateCancelButton(true);\n setActivateConfirmButton(false);\n setActivatePDFButton(true);\n setActivateAttachments(false);\n setActivateUpdateGrid(false);\n setActivateApproveButton(false);\n }\n else if (payload.header.Estatus === 'Cancelado') {\n setActivateUpdateForm(false);\n setAcceptCustomValue(true);\n setActivateSaveButton(false);\n setActivateDeleteButton(false);\n setActivateCancelButton(false);\n setActivateConfirmButton(false);\n setActivatePDFButton(true);\n setActivateAttachments(false);\n setActivateUpdateGrid(false);\n setActivateApproveButton(false);\n }\n }\n else if (permissionLevel === 'Ver') {\n setActivateUpdateForm(false);\n setAcceptCustomValue(true);\n setActivateSaveButton(false);\n setActivateDeleteButton(false);\n setActivateCancelButton(false);\n setActivateConfirmButton(false);\n setActivatePDFButton(true);\n setActivateAttachments(false);\n setActivateUpdateGrid(false);\n setActivateApproveButton(false);\n }\n\n setVisibleLoadPanel(false);\n }\n }\n catch (e) {\n setVisibleLoadPanel(false);\n }\n }, [getinventoryTransferPayload, permissionLevel, approveInventoryTransfer]);\n\n const deleteButton = React.useCallback(async () => {\n try {\n if (!window.confirm('¿Desea eliminar la Transferencia?'))\n return;\n\n setVisibleLoadPanel(true);\n\n var ID = inventoryTransferPayload.header.ID;\n\n if (!ID) {\n //Vamos al tablero de control\n history.push('/InventoryTransfer');\n return;\n }\n\n let apiName = 'AdminSC';\n let path = '/procesatransferencias';\n\n let myInit = {\n headers: {\n 'Content-Type': 'application/json',\n Authorization: `${(await Auth.currentSession()).getAccessToken().getJwtToken()}`\n },\n body: {\n ID: ID,\n payload: inventoryTransferPayload,\n action: 'delete',\n username: JSON.parse(JSON.stringify(await Auth.currentAuthenticatedUser())).username,\n usuario: props.usuario,\n sucursal: props.sucursal\n }\n }\n\n var payloadPost = await API.post(apiName, path, myInit);\n\n if (payloadPost.ok === 'true') {\n setVisibleLoadPanel(false);\n\n setVisibleToast(true);\n setMessageToast('Transferencia eliminada con éxito');\n setTypeToast('success')\n\n setIsDetail(false);\n\n //Vamos al tablero de control\n history.push('/InventoryTransfer');\n }\n else if (payloadPost.ok === 'false') {\n setVisibleLoadPanel(false);\n\n setVisibleToast(true);\n setMessageToast(payloadPost.message);\n setTypeToast('error')\n }\n }\n catch (e) {\n setVisibleLoadPanel(false);\n\n if (e === 'No current user') {\n history.push('/');\n\n window.location.reload();\n }\n }\n }, [history, inventoryTransferPayload, props.sucursal, props.usuario]);\n\n async function cancelEditButton() {\n setIsDetail(false);\n };\n\n const saveButton = React.useCallback(async () => {\n if (formDatosGeneralesRef.current) {\n var formDatosGenerales = formDatosGeneralesRef.current.instance();\n var isValid = formDatosGenerales.validate();\n\n if (!isValid.isValid) {\n setVisibleToast(true);\n setMessageToast(isValid.brokenRules[0].message);\n setTypeToast('error');\n return;\n }\n }\n\n try {\n setVisibleLoadPanel(true);\n\n var ID = inventoryTransferPayload.header.ID;\n\n //Primero guardamos los cambios del grid Articulos\n if (gridArticulosRef.current) {\n var gridArticulos = gridArticulosRef.current.instance();\n\n gridArticulos.saveEditData();\n }\n\n //Despues enviamos todo al backend\n let apiName = 'AdminSC';\n let path = '/procesatransferencias';\n\n let myInit = {\n headers: {\n 'Content-Type': 'application/json',\n Authorization: `${(await Auth.currentSession()).getAccessToken().getJwtToken()}`\n },\n body: {\n ID: ID,\n payload: inventoryTransferPayload,\n action: 'saveChanges',\n username: JSON.parse(JSON.stringify(await Auth.currentAuthenticatedUser())).username,\n usuario: props.usuario,\n sucursal: props.sucursal,\n s3Bucket: Storage._config.AWSS3.bucket\n }\n }\n\n var payloadPost = await API.post(apiName, path, myInit);\n\n if (payloadPost.ok === 'true') {\n if (!ID) {\n setVisibleToast(true);\n setMessageToast('Se creó la Transferencia con éxito');\n setTypeToast('success')\n\n ID = payloadPost.newID;\n\n editButton(ID);\n\n history.push('/InventoryTransfer/' + ID.toString());\n }\n else {\n setVisibleToast(true);\n setMessageToast('Se actualizó la Transferencia con éxito');\n setTypeToast('success')\n }\n }\n else if (payloadPost.ok === 'false') {\n setVisibleToast(true);\n setMessageToast(payloadPost.message);\n setTypeToast('error')\n }\n\n editButton(ID);\n\n setVisibleLoadPanel(false);\n }\n catch (e) {\n setVisibleLoadPanel(false);\n\n if (e === 'No current user') {\n history.push('/');\n\n window.location.reload();\n }\n }\n }, [editButton, formDatosGeneralesRef, gridArticulosRef, history, inventoryTransferPayload, props.sucursal, props.usuario]);\n\n async function voidButton() {\n try {\n if (!window.confirm('¿Desea cancelar la Transferencia?'))\n return;\n\n setVisibleLoadPanel(true);\n\n var ID = inventoryTransferPayload.header.ID;\n\n //Guardamos los cambios del grid\n if (gridArticulosRef.current) {\n var gridArticulos = gridArticulosRef.current.instance();\n\n gridArticulos.saveEditData();\n }\n\n //Despues enviamos todo al backend\n let apiName = 'AdminSC';\n let path = '/procesatransferencias';\n\n let myInit = {\n headers: {\n 'Content-Type': 'application/json',\n Authorization: `${(await Auth.currentSession()).getAccessToken().getJwtToken()}`\n },\n body: {\n ID: ID,\n payload: inventoryTransferPayload,\n action: 'void',\n username: JSON.parse(JSON.stringify(await Auth.currentAuthenticatedUser())).username,\n usuario: props.usuario,\n sucursal: props.sucursal\n }\n }\n\n var payloadPost = await API.post(apiName, path, myInit);\n\n if (payloadPost.ok === 'true') {\n setVisibleToast(true);\n setMessageToast('Se canceló la Transferencia');\n setTypeToast('success')\n }\n else if (payloadPost.ok === 'false') {\n setVisibleToast(true);\n setMessageToast(payloadPost.message);\n setTypeToast('error')\n }\n\n editButton(ID);\n\n setVisibleLoadPanel(false);\n }\n catch (e) {\n setVisibleLoadPanel(false);\n\n if (e === 'No current user') {\n history.push('/');\n\n window.location.reload();\n }\n }\n };\n\n const confirmButton = React.useCallback(async () => {\n if (formDatosGeneralesRef.current) {\n var formDatosGenerales = formDatosGeneralesRef.current.instance();\n var isValid = formDatosGenerales.validate();\n\n if (!isValid.isValid) {\n setVisibleToast(true);\n setMessageToast(isValid.brokenRules[0].message);\n setTypeToast('error');\n return;\n }\n }\n\n try {\n setVisibleLoadPanel(true);\n\n var ID = inventoryTransferPayload.header.ID;\n\n //Primero guardamos los cambios del grid Articulos\n if (gridArticulosRef.current) {\n var gridArticulos = gridArticulosRef.current.instance();\n\n gridArticulos.saveEditData();\n }\n\n var lambdaFunction;\n\n if (window.location.href.indexOf('sandbox.') >= 0 || window.location.href.indexOf('localhost') >= 0)\n lambdaFunction = 'procesaTransferencias-dev';\n else if (window.location.href.indexOf('sandboxtampico.') >= 0)\n lambdaFunction = 'procesaTransferencias-devleona';\n else if (window.location.href.indexOf('tampico.') >= 0)\n lambdaFunction = 'procesaTransferencias-prodleona';\n else\n lambdaFunction = 'procesaTransferencias-prod';\n\n Auth.currentCredentials()\n .then(credentials => {\n const lambda = new Lambda({\n credentials: Auth.essentialCredentials(credentials),\n region: 'us-east-1'\n });\n\n var params = {\n FunctionName: lambdaFunction,\n Payload: JSON.stringify({\n ID: ID,\n payload: inventoryTransferPayload,\n action: 'apply',\n username: props.username,\n usuario: props.usuario,\n sucursal: props.sucursal,\n s3Bucket: Storage._config.AWSS3.bucket\n })\n };\n\n lambda.invoke(params, function (err, data) {\n if (err) {\n setVisibleLoadPanel(false);\n\n setVisibleToast(true);\n setMessageToast(err.message);\n setTypeToast('error');\n }\n else {\n var payloadPost = JSON.parse(JSON.parse(data.Payload).body);\n\n if (payloadPost.ok === 'true') {\n setVisibleToast(true);\n setMessageToast('Se afectó la Transferencia con éxito');\n setTypeToast('success')\n }\n else if (payloadPost.ok === 'false') {\n setVisibleToast(true);\n setMessageToast(payloadPost.message);\n setTypeToast('error')\n }\n\n editButton(ID);\n\n setVisibleLoadPanel(false);\n }\n });\n })\n }\n catch (e) {\n setVisibleLoadPanel(false);\n\n if (e === 'No current user') {\n history.push('/');\n\n window.location.reload();\n }\n }\n }, [editButton, formDatosGeneralesRef, gridArticulosRef, history, inventoryTransferPayload, props.sucursal, props.username, props.usuario]);\n\n const approveButton = React.useCallback(async () => {\n if (formDatosGeneralesRef.current) {\n var formDatosGenerales = formDatosGeneralesRef.current.instance();\n var isValid = formDatosGenerales.validate();\n\n if (!isValid.isValid) {\n setVisibleToast(true);\n setMessageToast(isValid.brokenRules[0].message);\n setTypeToast('error');\n return;\n }\n }\n\n try {\n setVisibleLoadPanel(true);\n\n var ID = inventoryTransferPayload.header.ID;\n\n //Primero guardamos los cambios del grid Articulos\n if (gridArticulosRef.current) {\n var gridArticulos = gridArticulosRef.current.instance();\n\n gridArticulos.saveEditData();\n }\n\n saveButton();\n\n var lambdaFunction;\n\n if (window.location.href.indexOf('sandbox.') >= 0 || window.location.href.indexOf('localhost') >= 0)\n lambdaFunction = 'procesaTransferencias-dev';\n else if (window.location.href.indexOf('sandboxtampico.') >= 0)\n lambdaFunction = 'procesaTransferencias-devleona';\n else if (window.location.href.indexOf('tampico.') >= 0)\n lambdaFunction = 'procesaTransferencias-prodleona';\n else\n lambdaFunction = 'procesaTransferencias-prod';\n\n Auth.currentCredentials()\n .then(credentials => {\n const lambda = new Lambda({\n credentials: Auth.essentialCredentials(credentials),\n region: 'us-east-1'\n });\n\n var params = {\n FunctionName: lambdaFunction,\n Payload: JSON.stringify({\n ID: ID,\n payload: inventoryTransferPayload,\n action: 'approve',\n username: props.username,\n usuario: props.usuario,\n sucursal: props.sucursal,\n s3Bucket: Storage._config.AWSS3.bucket\n })\n };\n\n lambda.invoke(params, function (err, data) {\n if (err) {\n setVisibleLoadPanel(false);\n\n setVisibleToast(true);\n setMessageToast(err.message);\n setTypeToast('error');\n }\n else {\n var payloadPost = JSON.parse(JSON.parse(data.Payload).body);\n\n if (payloadPost.ok === 'true') {\n setVisibleToast(true);\n setMessageToast('Transferencia autorizada');\n setTypeToast('success')\n }\n else if (payloadPost.ok === 'false') {\n setVisibleToast(true);\n setMessageToast(payloadPost.message);\n setTypeToast('error')\n }\n\n editButton(ID);\n\n setVisibleLoadPanel(false);\n }\n });\n })\n }\n catch (e) {\n setVisibleLoadPanel(false);\n\n if (e === 'No current user') {\n history.push('/');\n\n window.location.reload();\n }\n }\n }, [editButton, formDatosGeneralesRef, gridArticulosRef, history, inventoryTransferPayload, props.sucursal, props.username, props.usuario, saveButton]);\n\n function printButton() {\n var baseUrl = window.location.href.split('/')[0];\n\n window.open(baseUrl + \"/#/PdfRender?type=inventorytransfer&id=\" + id, \"_blank\");\n };\n\n function refreshButton() {\n if (gridTableroRef.current) {\n var gridTablero = gridTableroRef.current.instance();\n\n gridTablero.refresh();\n }\n };\n\n useEffect(() => {\n window.addEventListener('popstate', (e) => {\n var hash;\n\n try {\n hash = e.target.location.hash;\n }\n catch (e) {\n hash = '';\n }\n\n if (hash === '#/InventoryTransfer') {\n history.push('/InventoryTransfer');\n\n window.location.reload();\n }\n });\n\n async function initialize() {\n setVisibleLoadPanel(true);\n\n await getConceptos();\n\n await getAlmacenes();\n\n await getTipoDano();\n\n await getMotivoDano();\n\n await getAutorizacionProveedor();\n\n await getObservaciones();\n\n\n setVisibleLoadPanel(false);\n }\n\n initialize();\n\n //En caso de solicitar un ID especifico, redireccionamos a ese ID\n if (!props.match.isExact) {\n var urlID = props.location.pathname.replace('/InventoryTransfer/', '');\n\n if (urlID === 'undefined')\n urlID = undefined;\n\n if (urlID)\n editButton(urlID);\n else\n history.push('/InventoryTransfer')\n }\n\n // eslint-disable-next-line\n }, []);\n\n function onHidingToast() {\n setVisibleToast(false);\n }\n\n const onEditorArticulosPreparing = React.useCallback((e) => {\n if (e.parentType === \"dataRow\") {\n if (e.dataField === \"Articulo\") {\n\n e.editorOptions.displayExpr = \"name\";\n e.editorOptions.valueExpr = \"value\";\n e.editorOptions.searchEnabled = true;\n e.editorOptions.showClearButton = true;\n e.editorOptions.acceptCustomValue = false;\n e.editorOptions.clearButtonText = 'Cerrar';\n e.editorOptions.noDataText = 'No se encontraron resultados';\n\n const defaultValueChangeHandler = e.editorOptions.onValueChanged;\n\n e.editorOptions.onValueChanged = function (ev) {\n let selectedItem = ev.component.option(\"selectedItem\");\n e.setValue(selectedItem);\n };\n }\n if (e.dataField === \"Cantidad\") {\n e.editorOptions.min = 1;\n }\n }\n }, []);\n\n const setCellValueArticulo = React.useCallback((rowData, value) => {\n rowData.Articulo = value.value;\n rowData.ArtDescripcion = value.name;\n rowData.Cantidad = 1;\n }, []);\n\n const setCellValueCantidad = React.useCallback((rowData, value, currentRowData) => {\n var Cantidad = parseFloat(value);\n\n rowData.Cantidad = parseFloat(Cantidad);\n }, []);\n\n function onExporting(e) {\n const workbook = new Workbook();\n const worksheet = workbook.addWorksheet('Datos');\n\n exportDataGrid({\n component: e.component,\n worksheet,\n autoFilterEnabled: true,\n }).then(() => {\n workbook.xlsx.writeBuffer().then((buffer) => {\n saveAs(new Blob([buffer], { type: 'application/octet-stream' }), 'Datos.xlsx');\n });\n });\n e.cancel = true;\n };\n\n return (\n <div>\n {isDetail === false ? (\n <div class=\"bg-gray-200 m-2\">\n <h1 class=\"font-sans inline-block text-xl font-bold text-gray-700 leading-8 align-top mb-1\"><FontAwesomeIcon icon={faList} size=\"lg\" /> Transferencias</h1>\n </div>\n ) :\n (\n <div class=\"bg-gray-200 m-2\">\n <h1 class=\"font-sans inline-block text-xl font-bold text-gray-700 leading-8 align-top mb-1\"><FontAwesomeIcon icon={faWineGlassCrack} size=\"xl\" /> {(inventoryTransferPayload.header ? inventoryTransferPayload.header.Movimiento : 'Transferencia')}</h1>\n <TransactionStatus {...props} Estatus={inventoryTransferPayload.header.Estatus} />\n </div>\n )}\n\n <LoadPanel\n shadingColor=\"rgba(0,0,0,0.4)\"\n visible={visibleLoadPanel}\n showIndicator={true}\n message=\"Por favor espere...\"\n shading={true}\n showPane={true}\n hideOnOutsideClick={false}\n />\n\n <Toast\n visible={visibleToast}\n message={messageToast}\n type={typeToast}\n onHiding={onHidingToast}\n displayTime={5000}\n width={'auto'}\n position={{\n my: 'top center',\n at: 'top center',\n of: window,\n offset: '0 130'\n }}\n />\n\n <div class=\"bg-gray-200 m-2\">\n {isDetail === false ? (\n <div class=\"bg-white p-3 shadow-xl\">\n {permissionLevel === 'Editar' ?\n (\n <div>\n <Link to=\"/InventoryTransfer/undefined\">\n <button class=\"mb-2 bg-green-500 hover:bg-green-700 text-white font-bold py-2 px-4 rounded\" onClick={() => newButton()}><FontAwesomeIcon icon={faFileAlt} /> Nueva Transferencia</button>\n </Link>\n\n <button onClick={refreshButton} type=\"submit\" class=\"ml-4 mb-4 bg-blue-500 hover:bg-blue-700 text-white font-bold py-2 px-4 rounded\">\n <FontAwesomeIcon icon={faArrowsRotate} /> Actualizar\n </button>\n </div>\n ) :\n (\n <div>\n <button onClick={refreshButton} type=\"submit\" class=\"mb-4 bg-blue-500 hover:bg-blue-700 text-white font-bold py-2 px-4 rounded\">\n <FontAwesomeIcon icon={faArrowsRotate} /> Actualizar\n </button>\n </div>\n )}\n\n <div className=\"options mb-2\">\n <div className=\"option\">\n <CheckBox text=\"Expandir todos los grupos\"\n value={autoExpandAll}\n onValueChanged={onAutoExpandAllChanged}></CheckBox>\n </div>\n </div>\n <DataGrid\n height={800}\n id=\"gridContainer\"\n columnsAutoWidth={true}\n filterBuilder={filterBuilder}\n dataSource={store}\n defaultFilterValue={filterValue}\n allowColumnReordering={true}\n allowColumnResizing={true}\n columnResizingMode={\"widget\"}\n showBorders={true}\n rowAlternationEnabled={true}\n showRowLines={true}\n showColumnLines={true}\n remoteOperations={{ filtering: true }}\n ref={gridTableroRef}\n onExporting={onExporting}\n >\n <Scrolling rowRenderingMode='virtual'></Scrolling>\n <Paging defaultPageSize={10} />\n <Pager\n visible={true}\n allowedPageSizes={allowedPageSizes}\n displayMode='compact'\n showPageSizeSelector={true}\n showInfo={true}\n showNavigationButtons={true}\n />\n <FilterRow visible={true} />\n <FilterPanel visible={true} />\n <FilterBuilderPopup position={filterBuilderPopupPosition} />\n\n <HeaderFilter visible={true} />\n\n <GroupPanel visible={true} />\n <SearchPanel visible={true} />\n <ColumnChooser\n enabled={true}\n mode='select'\n >\n <ColumnChooserSearch\n enabled={true}\n />\n\n <ColumnChooserSelection\n allowSelectAll={true}\n selectByClick={true}\n recursive={true}\n />\n </ColumnChooser>\n <Grouping autoExpandAll={autoExpandAll} />\n <StateStoring enabled={true} type=\"localStorage\" storageKey=\"gridContainerInventoryTransfer\" />\n <Export enabled={true} />\n\n <Column caption=\"\" alignment=\"center\" width={100} cellRender={editInventoryTransfer} />\n\n <Column dataField=\"MovID\" dataType=\"string\" width={110} caption=\"Folio\" />\n <Column dataField=\"FechaEmision\" caption=\"Fecha Emisión\" dataType=\"date\" width={130} />\n <Column dataField=\"Estatus\" dataType=\"string\" width={120} />\n\n <Column dataField=\"ID\" dataType=\"number\" width={150} visible={false} />\n <Column dataField=\"Mov\" dataType=\"string\" width={190} caption=\"Tipo Movimiento\" visible={false} />\n <Column dataField=\"Movimiento\" dataType=\"string\" width={190} visible={false} />\n\n <Column dataField=\"Almacen\" dataType=\"string\" width={190} caption=\"Almacén\" visible={true} />\n <Column dataField=\"NombreAlmacen\" dataType=\"string\" width={190} caption=\"Nombre Almacén\" visible={false} />\n\n <Column dataField=\"AlmacenDestino\" dataType=\"string\" width={190} caption=\"Almacén\" visible={true} />\n <Column dataField=\"NombreAlmacenDestino\" dataType=\"string\" width={190} caption=\"Nombre Almacén\" visible={false} />\n\n <Column dataField=\"Sucursal\" dataType=\"number\" width={150} visible={false} />\n <Column dataField=\"NombreSucursal\" dataType=\"string\" width={190} visible={false} />\n <Column dataField=\"Usuario\" dataType=\"string\" width={190} visible={false} />\n <Column dataField=\"NombreUsuario\" dataType=\"string\" width={190} visible={false} />\n\n <Column dataField=\"RequiereAutorizacion\" dataType=\"boolean\" caption=\"Requiere Autorización\" width={200} visible={false} />\n <Column dataField=\"Autorizado\" dataType=\"boolean\" width={150} visible={false} />\n <Column dataField=\"Autoriza\" caption=\"Autorizado Por\" dataType=\"string\" width={200} visible={false} />\n <Column dataField=\"FechaAutorizacion\" caption=\"Fecha Autorización\" dataType=\"datetime\" width={200} visible={false} />\n\n <Column dataField=\"Concepto\" dataType=\"string\" width={190} visible={false} />\n <Column dataField=\"Observaciones\" dataType=\"string\" width={190} visible={false} />\n <Column dataField=\"Situacion\" caption=\"Situación\" dataType=\"string\" width={190} visible={false} />\n <Column dataField=\"SituacionFecha\" caption=\"Fecha Situación\" dataType=\"date\" width={190} visible={false} />\n <Column dataField=\"SituacionUsuario\" caption=\"Usuario Situación\" dataType=\"string\" width={190} visible={false} />\n <Column dataField=\"SituacionNota\" caption=\"Nota Situación\" dataType=\"string\" width={190} visible={false} />\n <Column dataField=\"Comentarios\" dataType=\"string\" width={190} visible={false} />\n <Column dataField=\"TipoDano\" caption=\"Tipo de Daño\" dataType=\"string\" width={190} visible={true} />\n <Column dataField=\"MotivoDano\" caption=\"Motivo de Daño\" dataType=\"string\" width={190} visible={true} />\n <Column dataField=\"DescripcionDano\" caption=\"Descripción Daño\" dataType=\"string\" width={190} visible={true} />\n <Column dataField=\"AutorizacionProveedor\" caption=\"Autorizacion Proveedor\" dataType=\"string\" width={190} visible={true} />\n <Column dataField=\"ObservacionesProveedor\" caption=\"Observaciones Proveedor\" dataType=\"string\" width={190} visible={true} />\n <Column dataField=\"Plaza\" dataType=\"string\" width={190} visible={false} />\n </DataGrid>\n </div>\n ) : (<div />)}\n <Route exact path=\"/InventoryTransfer/:ID\" render={({ match }) => {\n return (\n <div class=\"bg-gray-200\">\n {isDetail.toString() === 'true' ?\n (\n <div>\n <Link to=\"/InventoryTransfer\">\n <button onClick={cancelEditButton} type=\"submit\" class=\"mb-4 bg-red-500 hover:bg-red-700 text-white font-bold py-2 px-4 rounded\">\n <FontAwesomeIcon icon={faArrowRotateLeft} /> Regresar\n </button>\n </Link>\n\n {activateSaveButton.toString() === 'true' ?\n (\n <button onClick={saveButton} type=\"submit\" class=\"ml-4 mb-4 bg-blue-500 hover:bg-blue-700 text-white font-bold py-2 px-4 rounded\">\n <FontAwesomeIcon icon={faSave} /> Guardar Cambios\n </button>\n ) : (\n <div class=\"inline-block\"></div>\n )}\n\n {activateConfirmButton.toString() === 'true' && id ?\n (\n <button onClick={confirmButton} type=\"submit\" class=\"ml-4 mb-4 bg-green-500 hover:bg-green-700 text-white font-bold py-2 px-4 rounded\">\n <FontAwesomeIcon icon={faPlay} /> Afectar\n </button>\n ) : (\n <div class=\"inline-block\"></div>\n )}\n\n {activateApproveButton.toString() === 'true' && id ?\n (\n <button onClick={approveButton} type=\"submit\" class=\"ml-4 mb-4 bg-green-500 hover:bg-green-700 text-white font-bold py-2 px-4 rounded\">\n <FontAwesomeIcon icon={faThumbsUp} /> Autorizar\n </button>\n ) : (\n <div class=\"inline-block\"></div>\n )}\n\n {activateDeleteButton.toString() === 'true' && id ?\n (\n <button onClick={deleteButton} type=\"submit\" class=\"ml-4 mb-4 bg-red-500 hover:bg-red-700 text-white font-bold py-2 px-4 rounded\">\n <FontAwesomeIcon icon={faTrash} /> Eliminar\n </button>\n ) :\n (\n <div class=\"inline-block\"></div>\n )}\n\n {activateCancelButton.toString() === 'true' && id ?\n (\n <button onClick={voidButton} type=\"submit\" class=\"ml-4 mb-4 bg-red-500 hover:bg-red-700 text-white font-bold py-2 px-4 rounded\">\n <FontAwesomeIcon icon={faWindowClose} /> Cancelar\n </button>\n ) :\n (\n <div class=\"inline-block\"></div>\n )}\n\n {activatePDFButton.toString() === 'true' && id ?\n (\n <button onClick={printButton} type=\"submit\" class=\"ml-4 mb-4 bg-gray-500 hover:bg-gray-700 text-white font-bold py-2 px-4 rounded\">\n <FontAwesomeIcon icon={faFilePdf} /> PDF\n </button>\n ) :\n (\n <div class=\"inline-block\"></div>\n )}\n\n <div class=\"bg-white p-4 shadow-xl\">\n <Form\n id=\"formTransaccion\"\n labelMode={'outside'}\n formData={inventoryTransferPayload}\n readOnly={!activateUpdateForm}\n showColonAfterLabel={false}\n labelLocation={'top'}\n ref={formDatosGeneralesRef}\n >\n <TabbedItem>\n <TabPanelOptions deferRendering={false} showNavButtons={true} />\n <Tab title=\"Datos Generales\" colCount={6}>\n <GroupItem caption=\"General\" colSpan={6} colCount={2}>\n <Item cssClass=\"boldText\" colSpan={2} dataField=\"header.Movimiento\" editorOptions={movimientoEditorOptions} >\n <Label text={\"Movimiento\"} />\n </Item>\n <Item dataField=\"header.FechaEmision\" editorType=\"dxDateBox\" editorOptions={fechaEmisionEditorOptions}>\n <Label text={\"Fecha Emisión\"} />\n </Item>\n <Item dataField=\"header.Concepto\" editorType=\"dxSelectBox\" editorOptions={conceptoEditorOptions} >\n <Label text={\"Concepto\"} />\n <RequiredRule message=\"Concepto es requerido\" />\n </Item>\n <Item dataField=\"header.Almacen\" editorType=\"dxSelectBox\" editorOptions={almacenEditorOptions} >\n <Label text={\"Almacén\"} />\n <RequiredRule message=\"Almacén es requerido\" />\n </Item>\n <Item dataField=\"header.AlmacenDestino\" editorType=\"dxSelectBox\" editorOptions={almacenDestinoEditorOptions} >\n <Label text={\"Almacén Destino\"} />\n <RequiredRule message=\"Almacén Destino es requerido\" />\n </Item>\n <Item dataField=\"header.Observaciones\" editorType=\"dxSelectBox\" editorOptions={observacionesEditorOptions} >\n <Label text={\"Observaciones\"} />\n </Item>\n </GroupItem>\n <GroupItem caption=\"Artículos\" colSpan={6}>\n <DataGrid\n id=\"gridArticulos\"\n ref={gridArticulosRef}\n columnsAutoWidth={true}\n dataSource={inventoryTransferPayload.detail}\n showBorders={true}\n showColumnLines={true}\n showRowLines={true}\n rowAlternationEnabled={true}\n allowColumnResizing={true}\n columnResizingMode=\"widget\"\n allowColumnReordering={false}\n repaintChangesOnly={true}\n onEditorPreparing={onEditorArticulosPreparing}\n >\n <Scrolling\n mode='virtual'\n />\n\n <Editing\n mode=\"cell\"\n newRowPosition=\"last\"\n allowUpdating={activateUpdateGrid}\n allowAdding={activateUpdateGrid}\n allowDeleting={activateUpdateGrid}\n />\n\n <Sorting mode=\"none\" />\n\n <Column dataField=\"Renglon\" width={190} visible={false} />\n <Column dataField=\"Articulo\" caption=\"Artículo\" width={450} setCellValue={setCellValueArticulo} calculateDisplayValue=\"ArtDescripcion\" >\n <Lookup\n dataSource={storeArticulo}\n displayExpr=\"name\"\n valueExpr=\"value\"\n searchEnabled={true}\n showClearButton={true}\n acceptCustomValue={false}\n clearButtonText='Cerrar'\n noDataText='No se encontraron resultados'\n />\n <RequiredRule message=\"Artículo es requerido\" />\n </Column>\n <Column dataField=\"ArtDescripcion\" width={400} allowEditing={false} visible={false} />\n <Column dataField=\"Cantidad\" width={80} setCellValue={setCellValueCantidad} dataType=\"number\" editorOptions={cantidadEditorOptions}>\n <RequiredRule message=\"Cantidad es requerida\" />\n </Column>\n {inventoryTransferPayload.header.Estatus !== 'Sin Afectar' && <Column dataField=\"CantidadProcesadaWMS\" caption=\"Cant. Procesada\" width={130} allowEditing={false} dataType=\"number\" format=',###' />}\n {inventoryTransferPayload.header.Estatus !== 'Sin Afectar' && <Column dataField=\"CantidadEmpacadaWMS\" caption=\"Cant. Empacada\" width={130} allowEditing={false} dataType=\"number\" format=',###' />}\n {inventoryTransferPayload.header.Estatus !== 'Sin Afectar' && <Column dataField=\"CantidadEnviadaWMS\" caption=\"Cant. Enviada\" width={130} allowEditing={false} dataType=\"number\" format=',###' />}\n {inventoryTransferPayload.header.Estatus !== 'Sin Afectar' && <Column dataField=\"CantidadRecibidaWMS\" caption=\"Cant. Recibida\" width={130} allowEditing={false} dataType=\"number\" format=',###' />}\n </DataGrid>\n </GroupItem>\n </Tab>\n <Tab title=\"Datos Daño\">\n <GroupItem caption=\"Datos Daño\" >\n <Item dataField=\"header.TipoDano\" editorType=\"dxSelectBox\" editorOptions={tipoDanoEditorOptions}>\n <Label text=\"Tipo\" visible={true} />\n </Item>\n <Item dataField=\"header.MotivoDano\" editorType=\"dxSelectBox\" editorOptions={motivoDanoEditorOptions}>\n <Label text=\"Motivo\" visible={true} />\n </Item>\n <Item dataField=\"header.DescripcionDano\" editorType=\"dxTextArea\" editorOptions={descripcionDañoEditorOptions}>\n <Label text=\"Descripción\" visible={true} />\n </Item>\n </GroupItem>\n <GroupItem caption=\"Datos Proveedor\">\n <Item dataField=\"header.AutorizacionProveedor\" editorType=\"dxSelectBox\" editorOptions={autorizacionProveedorEditorOptions}>\n <Label text=\"Autorización\" visible={true} />\n </Item>\n <Item dataField=\"header.ObservacionesProveedor\" editorType=\"dxTextArea\" editorOptions={observacionesProveedorEditorOptions}>\n <Label text=\"Observaciones\" visible={true} />\n </Item>\n </GroupItem>\n </Tab>\n <Tab title=\"Autorización\" colCount={1}>\n <Item dataField=\"header.RequiereAutorizacion\" editorType=\"dxCheckBox\" editorOptions={autorizacionEditorOptions} >\n <Label text=\"Requiere Autorización\" />\n </Item>\n <Item dataField=\"header.Autorizado\" editorType=\"dxCheckBox\" editorOptions={autorizacionEditorOptions} >\n <Label text=\"Autorizado\" />\n </Item>\n <Item dataField=\"header.Autoriza\" editorOptions={autorizacionEditorOptions} >\n <Label text=\"Autorizado por\" />\n </Item>\n <Item dataField=\"header.FechaAutorizacion\" editorOptions={autorizacionEditorOptions} >\n <Label text=\"Fecha Autorización\" />\n </Item>\n </Tab>\n <Tab title=\"Observaciones\" colCount={1}>\n <Item dataField=\"header.Comentarios\" editorType=\"dxTextArea\" editorOptions={comentariosEditorOptions}>\n <Label text=\"Observaciones\" visible={false} />\n </Item>\n </Tab>\n <Tab title=\"Registros Relacionados\" colCount={5}>\n <DataGrid\n id=\"gridRelatedRecords\"\n columnsAutoWidth={true}\n dataSource={inventoryTransferPayload.relatedRecords}\n allowColumnReordering={true}\n allowColumnResizing={true}\n columnResizingMode={\"widget\"}\n showBorders={true}\n rowAlternationEnabled={true}\n showRowLines={true}\n showColumnLines={true}\n >\n <HeaderFilter visible={false} />\n\n <Column dataField=\"name\" dataType=\"string\" width={300} caption=\"Transacción\" />\n <Column caption=\"Estatus\" alignment=\"center\" width={150} cellRender={estatusRelatedRecords} />\n <Column caption=\"\" alignment=\"center\" width={50} cellRender={openRelatedRecordButton} />\n <Column dataField=\"FechaEmision\" dataType=\"date\" width={150} caption=\"Fecha Emisión\" />\n </DataGrid>\n </Tab>\n <Tab title=\"Log Estatus\" colCount={5}>\n <DataGrid\n id=\"gridLogEstatus\"\n columnsAutoWidth={true}\n dataSource={inventoryTransferPayload.movEstatusLog}\n allowColumnReordering={true}\n allowColumnResizing={true}\n columnResizingMode={\"widget\"}\n showBorders={true}\n rowAlternationEnabled={true}\n showRowLines={true}\n showColumnLines={true}\n >\n <HeaderFilter visible={false} />\n <Column dataField=\"Usuario\" dataType=\"string\" width={350} caption=\"Usuario\" />\n <Column caption=\"Estatus\" alignment=\"center\" width={150} cellRender={estatusRelatedRecords} />\n <Column dataField=\"Fecha\" dataType=\"datetime\" width={300} caption=\"Fecha\" />\n </DataGrid>\n </Tab>\n <Tab title=\"Archivos Anexos\" colCount={5}>\n <div className=\"widget-container\">\n <FileUploader\n multiple={true}\n accept=\"*\"\n uploadMode=\"useButtons\"\n chunkSize={20000000}\n maxFileSize={20000000}\n uploadChunk={uploadChunk}\n disabled={!activateAttachments}\n />\n </div>\n <div id=\"wrapper\" className=\"show-widget\" >\n <div id=\"widget-area\">\n <FileManager id=\"attachmentManager\" fileSystemProvider={attachments} onItemDeleting={onAttachmentDeleting} onItemDownloading={onItemDownloading} onSelectedFileOpened={onAttachmentOpen}>\n <Permissions\n create={false}\n copy={false}\n move={false}\n delete={activateAttachments}\n rename={false}\n upload={false}\n download={true}\n >\n </Permissions>\n </FileManager>\n </div>\n </div>\n </Tab>\n </TabbedItem>\n </Form>\n </div>\n </div>\n ) :\n (\n <div></div>\n )\n }\n </div>\n )\n }}\n />\n </div>\n </div>\n );\n}\n","import React, { useState, useEffect, useRef } from 'react';\n\nexport default function PdfEditor(props) {\n const [className, setClassName] = useState('');\n const [loginInfo, setLoginInfo] = useState('');\n\n useEffect(() => {\n var loginInfotmp = '';\n\n if (props.isadmin === 'true') {\n setClassName('inline-block text-xs ml-3 mt-2 mb-2 mr-5 px-2 py-1 font-semibold leading-tight text-blue-600 bg-blue-300 rounded-lg');\n\n loginInfotmp = 'Admin; ';\n }\n else\n setClassName('inline-block text-xs ml-3 mt-2 mb-2 mr-5 px-2 py-1 font-semibold leading-tight text-gray-600 bg-gray-300 rounded-lg');\n\n loginInfotmp += 'Usuario: ' + props.username.trim();\n\n if (props.usuario) {\n loginInfotmp = loginInfotmp + ' (' + props.usuario + ')';\n }\n\n if (props.plaza && props.plaza !== '|') {\n loginInfotmp = loginInfotmp + '; Plaza: ' + props.plaza.trim();\n }\n else {\n if (props.nombreSucursal && props.nombreSucursal !== '')\n loginInfotmp = loginInfotmp + '; Suc: ' + props.nombreSucursal.toString().trim() + ' (' + props.sucursal.toString() + ')';\n }\n\n setLoginInfo(loginInfotmp);\n }, [props, className]);\n\n return (\n <span className={className} >{loginInfo}</span>\n );\n};","import React, { useState, useEffect, useRef, useMemo } from 'react';\n\n// LoadPanel\nimport { LoadPanel } from 'devextreme-react/load-panel';\n\n// Toast\nimport { Toast } from 'devextreme-react/toast';\n\n//Form\nimport Form, { GroupItem, Label, TabbedItem, TabPanelOptions, Tab, EmptyItem } from 'devextreme-react/form';\n\nimport { Auth, API, Storage, label } from 'aws-amplify';\n\n// Ruteador\nimport { Route, Link, useHistory } from \"react-router-dom\";\n\n// Grid\nimport DataGrid, {\n Column, FilterRow, HeaderFilter, FilterPanel, FilterBuilderPopup,\n GroupPanel, Grouping, SearchPanel, Sorting, Editing, Lookup, Toolbar, Item, RequiredRule,\n Scrolling, Pager, Paging, Summary, TotalItem, StateStoring, ColumnChooser, Format, Selection,\n Export, ColumnChooserSearch, ColumnChooserSelection\n} from 'devextreme-react/data-grid';\n\n//CheckBox\nimport CheckBox from 'devextreme-react/check-box';\n\n//ContextMenu\nimport ContextMenu from 'devextreme-react/context-menu';\n\n// Iconos\nimport { FontAwesomeIcon } from \"@fortawesome/react-fontawesome\";\nimport { faGlasses } from \"@fortawesome/pro-solid-svg-icons\";\nimport { faPencilAlt } from \"@fortawesome/pro-solid-svg-icons\";\nimport { faArrowRotateLeft } from \"@fortawesome/pro-solid-svg-icons\";\nimport { faSave } from \"@fortawesome/pro-solid-svg-icons\";\nimport { faList } from \"@fortawesome/pro-duotone-svg-icons\";\nimport { faNoteSticky } from \"@fortawesome/pro-solid-svg-icons\";\nimport { faArrowsRotate } from \"@fortawesome/pro-solid-svg-icons\";\nimport { faBarcode } from \"@fortawesome/pro-solid-svg-icons\";\nimport { faPlay } from \"@fortawesome/pro-solid-svg-icons\";\nimport { faFileAlt } from \"@fortawesome/pro-solid-svg-icons\";\nimport { faTrash } from \"@fortawesome/pro-solid-svg-icons\";\nimport { faWindowClose } from \"@fortawesome/pro-solid-svg-icons\";\n\n\nimport 'devextreme/data/odata/store';\nimport CustomStore from 'devextreme/data/custom_store';\n\nimport '../ListStyle.css';\n\n//FileUploader\nimport FileUploader from 'devextreme-react/file-uploader';\n\n//FileManager\nimport FileManager, { Permissions } from 'devextreme-react/file-manager';\n\nimport dxDateBox from \"devextreme/ui/date_box\";\n\nimport dxNumberBox from \"devextreme/ui/number_box\";\n\nimport TransactionStatus from \"../TransactionStatus/TransactionStatus.js\";\n\nimport { Workbook } from 'exceljs';\nimport { saveAs } from 'file-saver';\nimport { exportDataGrid } from 'devextreme/excel_exporter'\n\ndxDateBox.defaultOptions({\n options: {\n dateSerializationFormat: \"yyyy-MM-dd\"\n }\n});\n\ndxNumberBox.defaultOptions({\n options: {\n step: 0\n }\n});\n\nfunction isNotEmpty(value) {\n return value !== undefined && value !== null && value !== '';\n}\n\nexport default function LabelWMS(props) {\n const history = useHistory();\n\n const [isDetail, setIsDetail] = useState(false);\n const [id, setId] = useState();\n const [permissionLevel, setPermissionLevel] = useState(props.nivel);\n const [labelWMSPayload, setLabelWMSPayload] = useState({\n header: {},\n detail: [],\n movEstatusLog: []\n });\n\n const [autoExpandAll, setAutoExpandAll] = useState(true);\n\n const [visibleLoadPanel, setVisibleLoadPanel] = useState(false);\n\n const [visibleToast, setVisibleToast] = useState(false);\n const [messageToast, setMessageToast] = useState('');\n const [typeToast, setTypeToast] = useState('success');\n\n const [activateUpdateForm, setActivateUpdateForm] = useState(false);\n const [activateUpdateGrid, setActivateUpdateGrid] = useState(false);\n const [activateSaveButton, setActivateSaveButton] = useState(false);\n const [activateConfirmButton, setActivateConfirmButton] = useState(false);\n const [activatePDFButton, setActivatePDFButton] = useState(false);\n const [activateDeleteButton, setActivateDeleteButton] = useState(false);\n const [activateAttachments, setActivateAttachments] = useState(false);\n const [activateCancelButton, setActivateCancelButton] = useState(false);\n\n //Ref para el form\n const [formDatosGeneralesRef, setFormDatosGeneralesRef] = useState(React.createRef());\n\n //Ref para el grid Articulos\n const [gridBarcodeRef, setGridBarcodeRef] = useState(React.createRef());\n\n const [attachments, setAttachments] = useState([]);\n\n const filterBuilderPopupPosition = {\n of: window,\n at: 'top',\n my: 'top',\n offset: { y: 10 },\n };\n\n const allowedPageSizes = [5, 10, 15, 20, 'all'];\n\n const exportFormats = ['xlsx'];\n\n function getOrderDay(rowData) {\n return (new Date(rowData.OrderDate)).getDay();\n }\n\n const filterBuilder = {\n customOperations: [{\n name: 'weekends',\n caption: 'Weekends',\n dataTypes: ['date'],\n icon: 'check',\n hasValue: false,\n calculateFilterExpression: () => [[getOrderDay, '=', 0], 'or', [getOrderDay, '=', 6]],\n }],\n allowHierarchicalFields: true,\n };\n\n const filterValue = [['Estatus', '=', 'Sin Afectar']];\n\n //Ref para el grid Tablero de Control\n const [gridTableroRef, setGridTableroRef] = useState(React.createRef());\n\n function onAutoExpandAllChanged() {\n setAutoExpandAll(!autoExpandAll)\n };\n\n async function getLabelWMSRecords(sqlFilter) {\n try {\n let apiName = 'AdminSC';\n let path = '/procesalabelwms';\n\n let myInit = {\n headers: {\n 'Content-Type': 'application/json',\n Authorization: `${(await Auth.currentSession()).getAccessToken().getJwtToken()}`\n },\n queryStringParameters: {\n action: 'list',\n sqlFilter: sqlFilter,\n salesAccess: props.salesAccess,\n sucursal: props.sucursal,\n usuario: props.usuario,\n username: JSON.parse(JSON.stringify(await Auth.currentAuthenticatedUser())).username\n }\n }\n\n var labelWMSGet = await API.get(apiName, path, myInit);\n }\n catch (e) {\n if (e === 'No current user') {\n history.push('/');\n\n window.location.reload();\n }\n }\n\n return labelWMSGet;\n }\n\n const store = new CustomStore({\n key: 'ID',\n load(loadOptions) {\n let sqlFilter = '(';\n [\n 'filter'\n ].forEach((i) => {\n if (i in loadOptions && isNotEmpty(loadOptions[i])) {\n var filters = loadOptions[i];\n\n var filtersLength = filters.length;\n\n for (var i = 0; i <= filtersLength; i++) {\n var singleFilter = filters[i];\n var singleFilterType = typeof singleFilter;\n var singleFilterIsArray = Array.isArray(singleFilter);\n var singleFilterIsDate = singleFilter instanceof Date;\n\n if (singleFilter === 'NULL') {\n singleFilter = '0';\n }\n\n if (singleFilterType.toString() === 'object' && singleFilterIsArray) {\n sqlFilter += '(';\n\n var subFiltersLength = singleFilter.length;\n\n for (var i2 = 0; i2 <= subFiltersLength; i2++) {\n var singleSubFilter = singleFilter[i2];\n var singleSubFilterType = typeof singleSubFilter;\n var singleSubFilterIsArray = Array.isArray(singleSubFilter);\n var singleSubFilterIsDate = singleSubFilter instanceof Date\n\n if (singleSubFilter === 'NULL') {\n singleSubFilter = '0';\n }\n\n if (singleSubFilterType.toString() === 'object' && singleSubFilterIsArray) {\n sqlFilter += '(';\n\n var subSubFiltersLength = singleSubFilter.length;\n\n for (var i3 = 0; i3 <= subSubFiltersLength; i3++) {\n var singleSubSubFilter = singleSubFilter[i3];\n var singleSubSubFilterType = typeof singleSubSubFilter;\n var singleSubSubFilterIsArray = Array.isArray(singleSubSubFilter);\n var singleSubSubFilterIsDate = singleSubSubFilter instanceof Date\n\n if (singleSubSubFilter === 'NULL') {\n singleSubSubFilter = '0';\n }\n\n if (singleSubSubFilterType.toString() === 'object' && singleSubSubFilterIsArray) {\n sqlFilter += '(';\n\n var subSubSubFiltersLength = singleSubSubFilter.length;\n\n for (var i4 = 0; i4 <= subSubSubFiltersLength; i4++) {\n var singleSubSubSubFilter = singleSubSubFilter[i4];\n var singleSubSubSubFilterType = typeof singleSubSubSubFilter;\n var singleSubSubSubFilterIsArray = Array.isArray(singleSubSubSubFilter);\n var singleSubSubSubFilterIsDate = singleSubSubSubFilter instanceof Date\n\n if (singleSubSubSubFilter === 'NULL') {\n singleSubSubSubFilter = '0';\n }\n\n if (singleSubSubSubFilterType.toString() === 'object' && singleSubSubSubFilterIsArray) {\n sqlFilter += '(';\n\n var subSubSubSubFiltersLength = singleSubSubSubFilter.length;\n\n for (var i5 = 0; i5 <= subSubSubSubFiltersLength; i5++) {\n var singleSubSubSubSubFilter = singleSubSubSubFilter[i5];\n var singleSubSubSubSubFilterType = typeof singleSubSubSubSubFilter;\n var singleSubSubSubSubFilterIsArray = Array.isArray(singleSubSubSubSubFilter);\n var singleSubSubSubSubFilterIsDate = singleSubSubSubSubFilter instanceof Date\n\n if (singleSubSubSubSubFilter === 'NULL') {\n singleSubSubSubSubFilter = '0';\n }\n\n if (singleSubSubSubSubFilterType.toString() === 'string') {\n if (singleSubSubSubSubFilter === 'contains') {\n filters[i][i2][i3][i4][i5] = 'LIKE';\n singleSubSubSubSubFilter = 'LIKE';\n\n filters[i][i2][i3][i4][i5 + 1] = '\\'%' + filters[i][i2][i3][i4][i5 + 1] + '%\\'';\n }\n else if (singleSubSubSubSubFilter === 'notcontains') {\n filters[i][i2][i3][i4][i5] = 'NOT LIKE';\n singleSubSubSubSubFilter = 'NOT LIKE';\n\n filters[i][i2][i3][i4][i5 + 1] = '\\'%' + filters[i][i2][i3][i4][i5 + 1] + '%\\'';\n }\n else if (singleSubSubSubSubFilter === 'startswith') {\n filters[i][i2][i3][i4][i5] = 'LIKE';\n singleSubSubSubSubFilter = 'LIKE';\n\n filters[i][i2][i3][i4][i5 + 1] = '\\'' + filters[i][i2][i3][i4][i5 + 1] + '%\\'';\n }\n else if (singleSubSubSubSubFilter === 'endswith') {\n filters[i][i2][i3][i4][i5] = 'LIKE';\n singleSubSubSubSubFilter = 'LIKE';\n\n filters[i][i2][i3][i4][i5 + 1] = '\\'%' + filters[i][i2][i3][i4][i5 + 1] + '\\'';\n }\n else if (singleSubSubSubSubFilter === '=' || singleSubSubSubSubFilter === '<>' || singleSubSubSubSubFilter === '>' || singleSubSubSubSubFilter === '>=' || singleSubSubSubSubFilter === '<' || singleSubSubSubSubFilter === '<=') {\n if (!filters[i][i2][i3][i4][i5 + 1])\n filters[i][i2][i3][i4][i5 + 1] = 'NULL';\n else if (typeof filters[i][i2][i3][i4][i5 + 1] === 'string') {\n filters[i][i2][i3][i4][i5 + 1] = '\\'' + filters[i][i2][i3][i4][i5 + 1] + '\\'';\n }\n }\n else if (singleSubSubSubSubFilter === '!') {\n filters[i][i2][i3][i4][i5] = 'NOT';\n singleSubSubSubSubFilter = 'NOT';\n }\n\n sqlFilter += ' ' + singleSubSubSubSubFilter + ' ';\n }\n else if (singleSubSubSubSubFilterType.toString() === 'object' && singleSubSubSubSubFilterIsDate) {\n sqlFilter += ' \\'' + singleSubSubSubSubFilter.toISOString().split('T')[0] + '\\' ';\n }\n else if (singleSubSubSubSubFilterType.toString() === 'number') {\n sqlFilter += ' ' + singleSubSubSubSubFilter.toString() + ' ';\n }\n else if (singleSubSubSubSubFilterType.toString() === 'boolean') {\n if (singleSubSubSubSubFilter.toString() === 'true')\n sqlFilter += '1 ';\n else if (singleSubSubSubSubFilter.toString() === 'false' || singleSubSubSubSubFilter === null || singleSubSubSubSubFilter === undefined)\n sqlFilter += '0 ';\n }\n }\n }\n else if (singleSubSubSubFilterType.toString() === 'string') {\n if (singleSubSubSubFilter === 'contains') {\n filters[i][i2][i3][i4] = 'LIKE';\n singleSubSubSubFilter = 'LIKE';\n\n filters[i][i2][i3][i4 + 1] = '\\'%' + filters[i][i2][i3][i4 + 1] + '%\\'';\n }\n else if (singleSubSubSubFilter === 'notcontains') {\n filters[i][i2][i3][i4] = 'NOT LIKE';\n singleSubSubSubFilter = 'NOT LIKE';\n\n filters[i][i2][i3][i4 + 1] = '\\'%' + filters[i][i2][i3][i4 + 1] + '%\\'';\n }\n else if (singleSubSubSubFilter === 'startswith') {\n filters[i][i2][i3][i4] = 'LIKE';\n singleSubSubSubFilter = 'LIKE';\n\n filters[i][i2][i3][i4 + 1] = '\\'' + filters[i][i2][i3][i4 + 1] + '%\\'';\n }\n else if (singleSubSubSubFilter === 'endswith') {\n filters[i][i2][i3][i4] = 'LIKE';\n singleSubSubSubFilter = 'LIKE';\n\n filters[i][i2][i3][i4 + 1] = '\\'%' + filters[i][i2][i3][i4 + 1] + '\\'';\n }\n else if (singleSubSubSubFilter === '=' || singleSubSubSubFilter === '<>' || singleSubSubSubFilter === '>' || singleSubSubSubFilter === '>=' || singleSubSubSubFilter === '<' || singleSubSubSubFilter === '<=') {\n if (!filters[i][i2][i3][i4 + 1])\n filters[i][i2][i3][i4 + 1] = 'NULL';\n else if (typeof filters[i][i2][i3][i4 + 1] === 'string') {\n filters[i][i2][i3][i4 + 1] = '\\'' + filters[i][i2][i3][i4 + 1] + '\\'';\n }\n }\n else if (singleSubSubSubFilter === '!') {\n filters[i][i2][i3][i4] = 'NOT';\n singleSubSubSubFilter = 'NOT';\n }\n\n sqlFilter += ' ' + singleSubSubSubFilter + ' ';\n }\n else if (singleSubSubSubFilterType.toString() === 'object' && singleSubSubSubFilterIsDate) {\n sqlFilter += ' \\'' + singleSubSubSubFilter.toISOString().split('T')[0] + '\\' ';\n }\n else if (singleSubSubSubFilterType.toString() === 'number') {\n sqlFilter += ' ' + singleSubSubSubFilter.toString() + ' ';\n }\n else if (singleSubSubSubFilterType.toString() === 'boolean') {\n if (singleSubSubSubFilter.toString() === 'true')\n sqlFilter += '1 ';\n else if (singleSubSubSubFilter.toString() === 'false' || singleSubSubSubFilter === null || singleSubSubSubFilter === undefined)\n sqlFilter += '0 ';\n }\n }\n\n sqlFilter += ')';\n }\n else if (singleSubSubFilterType.toString() === 'string') {\n if (singleSubSubFilter === 'contains') {\n filters[i][i2][i3] = 'LIKE';\n singleSubSubFilter = 'LIKE';\n\n filters[i][i2][i3 + 1] = '\\'%' + filters[i][i2][i3 + 1] + '%\\'';\n }\n else if (singleSubSubFilter === 'notcontains') {\n filters[i][i2][i3] = 'NOT LIKE';\n singleSubSubFilter = 'NOT LIKE';\n\n filters[i][i2][i3 + 1] = '\\'%' + filters[i][i2][i3 + 1] + '%\\'';\n }\n else if (singleSubSubFilter === 'startswith') {\n filters[i][i2][i3] = 'LIKE';\n singleSubSubFilter = 'LIKE';\n\n filters[i][i2][i3 + 1] = '\\'' + filters[i][i2][i3 + 1] + '%\\'';\n }\n else if (singleSubSubFilter === 'endswith') {\n filters[i][i2][i3] = 'LIKE';\n singleSubSubFilter = 'LIKE';\n\n filters[i][i2][i3 + 1] = '\\'%' + filters[i][i2][i3 + 1] + '\\'';\n }\n else if (singleSubSubFilter === '=' || singleSubSubFilter === '<>' || singleSubSubFilter === '>' || singleSubSubFilter === '>=' || singleSubSubFilter === '<' || singleSubSubFilter === '<=') {\n if (!filters[i][i2][i3 + 1])\n filters[i][i2][i3 + 1] = 'NULL';\n else if (typeof filters[i][i2][i3 + 1] === 'string') {\n filters[i][i2][i3 + 1] = '\\'' + filters[i][i2][i3 + 1] + '\\'';\n }\n }\n else if (singleSubSubFilter === '!') {\n filters[i][i2][i3] = 'NOT';\n singleSubSubFilter = 'NOT';\n }\n sqlFilter += ' ' + singleSubSubFilter + ' ';\n }\n else if (singleSubSubFilterType.toString() === 'object' && singleSubSubFilterIsDate) {\n sqlFilter += ' \\'' + singleSubSubFilter.toISOString().split('T')[0] + '\\' ';\n }\n else if (singleSubSubFilterType.toString() === 'number') {\n sqlFilter += ' ' + singleSubSubFilter.toString() + ' ';\n }\n else if (singleSubSubFilterType.toString() === 'boolean') {\n if (singleSubSubFilter.toString() === 'true')\n sqlFilter += '1 ';\n else if (singleSubSubFilter.toString() === 'false' || singleSubSubFilter === null || singleSubSubFilter === undefined)\n sqlFilter += '0 ';\n }\n }\n\n sqlFilter += ')';\n }\n else if (singleSubFilterType.toString() === 'string') {\n if (singleSubFilter === 'contains') {\n filters[i][i2] = 'LIKE';\n singleSubFilter = 'LIKE';\n\n filters[i][i2 + 1] = '\\'%' + filters[i][i2 + 1] + '%\\'';\n }\n else if (singleSubFilter === 'notcontains') {\n filters[i][i2] = 'NOT LIKE';\n singleSubFilter = 'NOT LIKE';\n\n filters[i][i2 + 1] = '\\'%' + filters[i][i2 + 1] + '%\\'';\n }\n else if (singleSubFilter === 'startswith') {\n filters[i][i2] = 'LIKE';\n singleSubFilter = 'LIKE';\n\n filters[i][i2 + 1] = '\\'' + filters[i][i2 + 1] + '%\\'';\n }\n else if (singleSubFilter === 'endswith') {\n filters[i][i2] = 'LIKE';\n singleSubFilter = 'LIKE';\n\n filters[i][i2 + 1] = '\\'%' + filters[i][i2 + 1] + '\\'';\n }\n else if (singleSubFilter === '=' || singleSubFilter === '<>' || singleSubFilter === '>' || singleSubFilter === '>=' || singleSubFilter === '<' || singleSubFilter === '<=') {\n if (!filters[i][i2 + 1])\n filters[i][i2 + 1] = 'NULL';\n else if (typeof filters[i][i2 + 1] === 'string') {\n filters[i][i2 + 1] = '\\'' + filters[i][i2 + 1] + '\\'';\n }\n }\n else if (singleSubFilter === '!') {\n filters[i][i2] = 'NOT';\n singleSubFilter = 'NOT';\n }\n sqlFilter += ' ' + singleSubFilter + ' ';\n }\n else if (singleSubFilterType.toString() === 'object' && singleSubFilterIsDate) {\n sqlFilter += ' \\'' + singleSubFilter.toISOString().split('T')[0] + '\\' ';\n }\n else if (singleSubFilterType.toString() === 'number') {\n sqlFilter += ' ' + singleSubFilter.toString() + ' ';\n }\n else if (singleSubFilterType.toString() === 'boolean') {\n if (singleSubFilter.toString() === 'true')\n sqlFilter += '1 ';\n else if (singleSubFilter.toString() === 'false' || singleSubFilter === null || singleSubFilter === undefined)\n sqlFilter += '0 ';\n }\n }\n\n sqlFilter += ')';\n }\n else if (singleFilterType.toString() === 'string') {\n if (singleFilter === 'contains') {\n filters[i] = 'LIKE';\n singleFilter = 'LIKE';\n\n filters[i + 1] = '\\'%' + filters[i + 1] + '%\\'';\n }\n else if (singleFilter === 'notcontains') {\n filters[i] = 'NOT LIKE';\n singleFilter = 'NOT LIKE';\n\n filters[i + 1] = '\\'%' + filters[i + 1] + '%\\'';\n }\n else if (singleFilter === 'startswith') {\n filters[i] = 'LIKE';\n singleFilter = 'LIKE';\n\n filters[i + 1] = '\\'' + filters[i + 1] + '%\\'';\n }\n else if (singleFilter === 'endswith') {\n filters[i] = 'LIKE';\n singleFilter = 'LIKE';\n\n filters[i + 1] = '\\'%' + filters[i + 1] + '\\'';\n }\n else if (singleFilter === '=' || singleFilter === '<>' || singleFilter === '>' || singleFilter === '>=' || singleFilter === '<' || singleFilter === '<=') {\n if (!filters[i + 1])\n filters[i + 1] = 'NULL';\n else if (typeof filters[i + 1] === 'string') {\n filters[i + 1] = '\\'' + filters[i + 1] + '\\'';\n }\n }\n else if (singleFilter === '!') {\n filters[i] = 'NOT';\n singleFilter = 'NOT';\n }\n sqlFilter += ' ' + singleFilter + ' ';\n }\n else if (singleFilterType.toString() === 'object' && singleFilterIsDate) {\n sqlFilter += ' \\'' + singleFilter.toISOString().split('T')[0] + '\\' ';\n }\n else if (singleFilterType.toString() === 'number') {\n sqlFilter += ' ' + singleFilter.toString() + ' ';\n }\n else if (singleFilterType.toString() === 'boolean') {\n if (singleFilter.toString() === 'true')\n sqlFilter += '1 ';\n else if (singleFilter.toString() === 'false' || singleFilter === null || singleFilter === undefined)\n sqlFilter += '0 ';\n }\n }\n\n sqlFilter += ')';\n }\n });\n\n async function getRecords() {\n if (sqlFilter === '(')\n sqlFilter = '';\n\n var records = await getLabelWMSRecords(sqlFilter);\n return {\n data: records,\n totalCount: records.length\n };\n }\n\n return getRecords()\n .then(function (result) {\n return result;\n })\n .catch(() => { throw new Error('Data Loading Error'); });\n },\n });\n\n var fechaEmisionEditorOptions = useMemo(() => {\n return {\n width: '100%',\n readOnly: true\n };\n }, []);\n\n var cantidadEditorOptions = useMemo(() => {\n return {\n format: '###,###'\n };\n }, []);\n\n var movimientoEditorOptions = useMemo(() => {\n return {\n width: '100%',\n readOnly: true\n };\n }, []);\n\n async function uploadChunk(file, uploadInfo) {\n try {\n var responseS3 = await Storage.put(\"/scwms/\" + id + \"/\" + file.name, uploadInfo.chunkBlob, {\n contentType: file.type,\n ACL: 'public-read'\n });\n\n //Obtenemos el nombre del bucket\n let bucketName = Storage._config.AWSS3.bucket;\n\n\n let apiName = 'AdminSC';\n let path = '/uploadattachment';\n\n let myInit = {\n headers: {\n 'Content-Type': 'application/json',\n Authorization: `${(await Auth.currentSession()).getAccessToken().getJwtToken()}`\n },\n body: {\n action: 'register',\n bucketName: bucketName,\n type: 'scwms',\n id: id,\n Key: \"/scwms/\" + id + \"/\" + file.name,\n fileName: file.name,\n username: JSON.parse(JSON.stringify(await Auth.currentAuthenticatedUser())).username\n }\n }\n\n var attachmentsResult = await API.post(apiName, path, myInit);\n\n //Obtenemos los attachments\n var attachmentsGet = await Storage.list(\"/scwms/\" + id);\n var attachmentsAux = [];\n\n for (var attachmentsGetIndex in attachmentsGet) {\n var singleAttachmentsGet = attachmentsGet[attachmentsGetIndex];\n\n var singleAttachment = {\n name: singleAttachmentsGet.key.split('/').pop(),\n isDirectory: false,\n size: singleAttachmentsGet.size,\n };\n\n attachmentsAux.push(singleAttachment);\n }\n\n setAttachments(attachmentsAux);\n }\n catch (err) {\n console.log(\"Error uploading file:\", err);\n }\n }\n\n async function onAttachmentDeleting(e) {\n var fileName = e.item.key;\n\n //Primero borramos el archivo de S3\n var attachmentsDelete = await Storage.remove(\"/scwms/\" + id + \"/\" + fileName);\n\n //Despues borramos el attachment en Intelisis\n let bucketName = Storage._config.AWSS3.bucket;\n\n let apiName = 'AdminSC';\n let path = '/uploadattachment';\n\n let myInit = {\n headers: {\n 'Content-Type': 'application/json',\n Authorization: `${(await Auth.currentSession()).getAccessToken().getJwtToken()}`\n },\n body: {\n action: 'delete',\n bucketName: bucketName,\n type: 'scwms',\n id: id,\n Key: \"/scwms/\" + id + \"/\" + fileName,\n fileName: fileName,\n username: JSON.parse(JSON.stringify(await Auth.currentAuthenticatedUser())).username\n }\n }\n\n var attachmentsResult = await API.post(apiName, path, myInit);\n\n //Finalmente sincronizamos el state\n var attachmentsGet = await Storage.list(\"/scwms/\" + id);\n var attachmentsAux = [];\n\n for (var attachmentsGetIndex in attachmentsGet) {\n var singleAttachmentsGet = attachmentsGet[attachmentsGetIndex];\n\n var singleAttachment = {\n name: singleAttachmentsGet.key.split('/').pop(),\n isDirectory: false,\n size: singleAttachmentsGet.size,\n };\n\n attachmentsAux.push(singleAttachment);\n }\n\n setAttachments(attachmentsAux);\n };\n\n function downloadBlob(blob, filename) {\n const url = URL.createObjectURL(blob);\n const a = document.createElement('a');\n a.href = url;\n a.download = filename || 'download';\n const clickHandler = () => {\n setTimeout(() => {\n URL.revokeObjectURL(url);\n a.removeEventListener('click', clickHandler);\n }, 150);\n };\n\n a.addEventListener('click', clickHandler, false);\n\n a.click();\n\n return a;\n };\n\n async function onItemDownloading(e) {\n e.cancel = true;\n\n const downloadFileResponse = await Storage.get(\"/scwms/\" + id + \"/\" + e.item.name, { download: true });\n\n downloadBlob(downloadFileResponse.Body, e.item.name);\n };\n\n function openBlob(blob, filename) {\n const url = URL.createObjectURL(blob);\n\n window.open(url, \"_blank\");\n };\n\n async function onAttachmentOpen(e) {\n const downloadFileResponse = await Storage.get(\"/scwms/\" + id + \"/\" + e.file.name, { download: true });\n\n openBlob(downloadFileResponse.Body, e.file.name);\n };\n\n async function getlabelWMSPayload(ID) {\n try {\n let apiName = 'AdminSC';\n let path = '/procesalabelwms';\n\n let myInit = {\n headers: {\n 'Content-Type': 'application/json',\n Authorization: `${(await Auth.currentSession()).getAccessToken().getJwtToken()}`\n },\n queryStringParameters: {\n ID: ID,\n action: 'payload',\n username: JSON.parse(JSON.stringify(await Auth.currentAuthenticatedUser())).username\n }\n }\n\n var payloadGet = await API.get(apiName, path, myInit);\n\n setLabelWMSPayload(payloadGet);\n\n //Obtenemos los attachments\n var attachmentsGet = await Storage.list(\"/scwms/\" + ID);\n var attachmentsAux = [];\n\n for (var attachmentsGetIndex in attachmentsGet) {\n var singleAttachmentsGet = attachmentsGet[attachmentsGetIndex];\n\n var singleAttachment = {\n name: singleAttachmentsGet.key.split('/').pop(),\n isDirectory: false,\n size: singleAttachmentsGet.size,\n };\n\n attachmentsAux.push(singleAttachment);\n }\n\n setAttachments(attachmentsAux);\n }\n catch (e) {\n if (e === 'No current user') {\n history.push('/');\n\n window.location.reload();\n }\n }\n\n return payloadGet;\n }\n\n function editLabelWMS(data) {\n return (\n <Link to={`/LabelWMS/${data.data.ID}`}>\n <button class=\"bg-blue-500 hover:bg-blue-700 text-white py-1 px-3 rounded\" onClick={() => editButton(data.data.ID)}><FontAwesomeIcon icon={permissionLevel === 'Editar' ? faPencilAlt : faGlasses} /> {permissionLevel === 'Editar' ? 'Editar' : 'Ver'}</button>\n </Link>\n )\n }\n\n async function newButton(salesorder) {\n try {\n let apiName = 'AdminSC';\n let path = '/procesalabelwms';\n\n let myInit = {\n headers: {\n 'Content-Type': 'application/json',\n Authorization: `${(await Auth.currentSession()).getAccessToken().getJwtToken()}`\n },\n queryStringParameters: {\n action: 'new',\n salesorder: salesorder,\n usuario: props.usuario,\n sucursal: props.sucursal,\n username: JSON.parse(JSON.stringify(await Auth.currentAuthenticatedUser())).username\n }\n };\n\n var payloadNew = await API.get(apiName, path, myInit);\n\n setLabelWMSPayload(payloadNew);\n\n setAttachments([]);\n\n setIsDetail(true);\n setId(undefined);\n\n setActivateUpdateForm(true);\n setActivateUpdateGrid(false);\n setActivateSaveButton(true);\n setActivateConfirmButton(false);\n setActivatePDFButton(false);\n setActivateAttachments(false);\n setActivateCancelButton(false);\n\n setVisibleLoadPanel(false);\n }\n catch (e) {\n if (e === 'No current user') {\n history.push('/');\n\n window.location.reload();\n }\n }\n };\n\n async function editButton(ID) {\n try {\n if (!window.event.metaKey && !window.event.ctrlKey) {\n setVisibleLoadPanel(true);\n\n setIsDetail(true);\n setId(ID);\n\n var payload = await getlabelWMSPayload(ID);\n\n if (permissionLevel === 'Editar') {\n if (payload.header.Estatus === 'Sin Afectar') {\n setActivateUpdateForm(true);\n setActivateUpdateGrid(false);\n setActivateSaveButton(true);\n setActivateConfirmButton(true);\n\n setActivatePDFButton(false);\n setActivateAttachments(true);\n setActivateDeleteButton(true);\n setActivateCancelButton(false);\n }\n else if (payload.header.Estatus === 'Cancelado') {\n setActivateUpdateForm(false);\n setActivateUpdateGrid(false);\n setActivateSaveButton(false);\n setActivateConfirmButton(false);\n\n setActivatePDFButton(false);\n setActivateAttachments(false);\n setActivateDeleteButton(false);\n setActivateCancelButton(false);\n }\n else if (payload.header.Estatus === 'Concluido') {\n setActivateUpdateForm(false);\n setActivateUpdateGrid(false);\n setActivateSaveButton(false);\n setActivateConfirmButton(false);\n\n setActivatePDFButton(true);\n setActivateAttachments(false);\n setActivateDeleteButton(false);\n setActivateCancelButton(true);\n }\n }\n else if (permissionLevel === 'Ver') {\n setActivateUpdateForm(false);\n setActivateUpdateGrid(false);\n setActivateSaveButton(false);\n setActivateConfirmButton(false);\n\n setActivatePDFButton(true);\n setActivateAttachments(false);\n setActivateDeleteButton(false);\n setActivateCancelButton(false);\n }\n\n setVisibleLoadPanel(false);\n }\n }\n catch (e) {\n setVisibleLoadPanel(false);\n }\n };\n\n const deleteButton = React.useCallback(async () => {\n try {\n if (!window.confirm('¿Desea eliminar la Alta Barcode?'))\n return;\n\n setVisibleLoadPanel(true);\n\n var ID = labelWMSPayload.header.ID;\n\n if (!ID) {\n //Vamos al tablero de control\n history.push('/LabelWMS');\n return;\n }\n\n let apiName = 'AdminSC';\n let path = '/procesalabelwms';\n\n let myInit = {\n headers: {\n 'Content-Type': 'application/json',\n Authorization: `${(await Auth.currentSession()).getAccessToken().getJwtToken()}`\n },\n body: {\n ID: ID,\n payload: labelWMSPayload,\n action: 'delete',\n username: JSON.parse(JSON.stringify(await Auth.currentAuthenticatedUser())).username,\n usuario: props.usuario,\n sucursal: props.sucursal\n }\n }\n\n var payloadPost = await API.post(apiName, path, myInit);\n\n if (payloadPost.ok === 'true') {\n setVisibleLoadPanel(false);\n\n setVisibleToast(true);\n setMessageToast('Alta Barcode eliminada con éxito');\n setTypeToast('success')\n\n setIsDetail(false);\n\n //Vamos al tablero de control\n history.push('/LabelWMS');\n }\n else if (payloadPost.ok === 'false') {\n setVisibleLoadPanel(false);\n\n setVisibleToast(true);\n setMessageToast(payloadPost.message);\n setTypeToast('error')\n }\n }\n catch (e) {\n setVisibleLoadPanel(false);\n\n if (e === 'No current user') {\n history.push('/');\n\n window.location.reload();\n }\n }\n }, [history, labelWMSPayload, props.sucursal, props.usuario]);\n\n async function cancelEditButton() {\n setIsDetail(false);\n };\n\n async function saveButton() {\n if (formDatosGeneralesRef.current) {\n var formDatosGenerales = formDatosGeneralesRef.current.instance();\n var isValid = formDatosGenerales.validate();\n\n if (!isValid.isValid) {\n setVisibleToast(true);\n setMessageToast(isValid.brokenRules[0].message);\n setTypeToast('error');\n return;\n }\n }\n\n try {\n setVisibleLoadPanel(true);\n\n var ID = labelWMSPayload.header.ID;\n\n //Guardamos los cambios del grid\n if (gridBarcodeRef.current) {\n var gridBarcode = gridBarcodeRef.current.instance();\n\n gridBarcode.saveEditData();\n }\n\n //Despues enviamos todo al backend\n let apiName = 'AdminSC';\n let path = '/procesalabelwms';\n\n let myInit = {\n headers: {\n 'Content-Type': 'application/json',\n Authorization: `${(await Auth.currentSession()).getAccessToken().getJwtToken()}`\n },\n body: {\n ID: ID,\n payload: labelWMSPayload,\n action: 'saveChanges',\n username: JSON.parse(JSON.stringify(await Auth.currentAuthenticatedUser())).username,\n usuario: props.usuario,\n sucursal: props.sucursal,\n s3Bucket: Storage._config.AWSS3.bucket\n }\n }\n\n var payloadPost = await API.post(apiName, path, myInit);\n\n if (payloadPost.ok === 'true') {\n if (!ID) {\n setVisibleToast(true);\n setMessageToast('Se creó la Alta Barcode con éxito');\n setTypeToast('success')\n\n ID = payloadPost.newID;\n\n editButton(ID);\n\n history.push('/LabelWMS/' + ID.toString());\n }\n else {\n setVisibleToast(true);\n setMessageToast('Se actualizó la Alta Barcode con éxito');\n setTypeToast('success')\n }\n }\n else if (payloadPost.ok === 'false') {\n setVisibleToast(true);\n setMessageToast(payloadPost.message);\n setTypeToast('error')\n }\n\n editButton(ID);\n\n setVisibleLoadPanel(false);\n }\n catch (e) {\n setVisibleLoadPanel(false);\n\n if (e === 'No current user') {\n history.push('/');\n\n window.location.reload();\n }\n }\n };\n\n async function confirmButton() {\n var ID = labelWMSPayload.header.ID;\n\n try {\n setVisibleLoadPanel(true);\n\n //Guardamos los cambios del grid\n if (gridBarcodeRef.current) {\n var gridBarcode = gridBarcodeRef.current.instance();\n\n gridBarcode.saveEditData();\n }\n\n //Despues enviamos todo al backend\n let apiName = 'AdminSC';\n let path = '/procesalabelwms';\n\n let myInit = {\n headers: {\n 'Content-Type': 'application/json',\n Authorization: `${(await Auth.currentSession()).getAccessToken().getJwtToken()}`\n },\n body: {\n ID: ID,\n payload: labelWMSPayload,\n action: 'apply',\n username: JSON.parse(JSON.stringify(await Auth.currentAuthenticatedUser())).username,\n usuario: props.usuario,\n sucursal: props.sucursal\n }\n }\n\n var payloadPost = await API.post(apiName, path, myInit);\n\n if (payloadPost.ok === 'true') {\n setVisibleToast(true);\n setMessageToast('Se afectó la Alta Barcode con éxito');\n setTypeToast('success')\n }\n else if (payloadPost.ok === 'false') {\n setVisibleToast(true);\n setMessageToast(payloadPost.message);\n setTypeToast('error')\n }\n\n editButton(ID);\n\n setVisibleLoadPanel(false);\n }\n catch (e) {\n setVisibleLoadPanel(false);\n\n if (e === 'No current user') {\n history.push('/');\n\n window.location.reload();\n }\n }\n };\n\n async function voidButton() {\n try {\n if (!window.confirm('¿Desea cancelar la Alta Barcode?'))\n return;\n\n setVisibleLoadPanel(true);\n\n var ID = labelWMSPayload.header.ID;\n\n //Despues enviamos todo al backend\n let apiName = 'AdminSC';\n let path = '/procesalabelwms';\n\n let myInit = {\n headers: {\n 'Content-Type': 'application/json',\n Authorization: `${(await Auth.currentSession()).getAccessToken().getJwtToken()}`\n },\n body: {\n ID: ID,\n payload: labelWMSPayload,\n action: 'void',\n username: JSON.parse(JSON.stringify(await Auth.currentAuthenticatedUser())).username,\n usuario: props.usuario,\n sucursal: props.sucursal\n }\n }\n\n var payloadPost = await API.post(apiName, path, myInit);\n\n if (payloadPost.ok === 'true') {\n setVisibleToast(true);\n setMessageToast('Se canceló la Alta Barcode');\n setTypeToast('success')\n }\n else if (payloadPost.ok === 'false') {\n setVisibleToast(true);\n setMessageToast(payloadPost.message);\n setTypeToast('error')\n }\n\n editButton(ID);\n\n setVisibleLoadPanel(false);\n }\n catch (e) {\n setVisibleLoadPanel(false);\n\n if (e === 'No current user') {\n history.push('/');\n\n window.location.reload();\n }\n }\n };\n\n function refreshButton() {\n if (gridTableroRef.current) {\n var gridTablero = gridTableroRef.current.instance();\n\n gridTablero.refresh();\n }\n }\n\n function printButton() {\n var pdfArray = [];\n var baseUrl = window.location.href.split('/')[0];\n\n for (var detailIndex in labelWMSPayload.detail) {\n pdfArray.push(parseInt(labelWMSPayload.detail[detailIndex].Barcode));\n }\n\n pdfArray = pdfArray.join('%2C')\n\n\n window.open(baseUrl + \"/#/PdfRender?type=labelwms&id=\" + pdfArray, \"_blank\");\n };\n\n useEffect(() => {\n window.addEventListener('popstate', (e) => {\n var hash;\n\n try {\n hash = e.target.location.hash;\n }\n catch (e) {\n hash = '';\n }\n\n if (hash === '#/LabelWMS') {\n history.push('/LabelWMS');\n\n window.location.reload();\n }\n });\n\n async function initialize() {\n setVisibleLoadPanel(true);\n\n setVisibleLoadPanel(false);\n }\n\n initialize();\n\n //En caso de solicitar un ID especifico, redireccionamos a ese ID\n if (!props.match.isExact) {\n var urlID = props.location.pathname.replace('/LabelWMS/', '');\n\n if (urlID === 'undefined')\n urlID = undefined;\n\n if (urlID)\n editButton(urlID);\n }\n \n // eslint-disable-next-line\n }, []);\n\n function onHidingToast() {\n setVisibleToast(false);\n }\n\n function estatusRelatedRecords(data) {\n return (\n <TransactionStatus {...props} Estatus={data.data.Estatus} />\n )\n };\n\n function onExporting(e) {\n const workbook = new Workbook();\n const worksheet = workbook.addWorksheet('Datos');\n\n exportDataGrid({\n component: e.component,\n worksheet,\n autoFilterEnabled: true,\n }).then(() => {\n workbook.xlsx.writeBuffer().then((buffer) => {\n saveAs(new Blob([buffer], { type: 'application/octet-stream' }), 'Datos.xlsx');\n });\n });\n e.cancel = true;\n };\n\n return (\n <div>\n {isDetail === false ? (\n <div class=\"bg-gray-200 m-2\">\n <h1 class=\"font-sans inline-block text-xl font-bold text-gray-700 leading-8 align-top mb-1\"><FontAwesomeIcon icon={faList} size=\"lg\" /> Alta Barcode</h1>\n </div>\n ) :\n (\n <div class=\"bg-gray-200 m-2\">\n <h1 class=\"font-sans inline-block text-xl font-bold text-gray-700 leading-8 align-top mb-1\"><FontAwesomeIcon icon={faBarcode} size=\"xl\" /> {(labelWMSPayload.header ? labelWMSPayload.header.Movimiento : 'Alta Barcode')}</h1>\n <TransactionStatus {...props} Estatus={labelWMSPayload.header.Estatus} />\n </div>\n )}\n\n <LoadPanel\n shadingColor=\"rgba(0,0,0,0.4)\"\n visible={visibleLoadPanel}\n showIndicator={true}\n message=\"Por favor espere...\"\n shading={true}\n showPane={true}\n hideOnOutsideClick={false}\n />\n\n <Toast\n visible={visibleToast}\n message={messageToast}\n type={typeToast}\n onHiding={onHidingToast}\n displayTime={5000}\n width={'auto'}\n position={{\n my: 'top center',\n at: 'top center',\n of: window,\n offset: '0 130'\n }}\n />\n\n <div class=\"bg-gray-200 m-2\">\n {isDetail === false ? (\n <div class=\"bg-white p-3 shadow-xl\">\n\n {permissionLevel === 'Editar' ?\n (\n <div>\n <Link to=\"/LabelWMS/undefined\">\n <button class=\"mb-2 bg-green-500 hover:bg-green-700 text-white font-bold py-2 px-4 rounded\" onClick={() => newButton()}><FontAwesomeIcon icon={faFileAlt} /> Nueva Alta Barcode</button>\n </Link>\n\n <button onClick={refreshButton} type=\"submit\" class=\"ml-4 mb-4 bg-blue-500 hover:bg-blue-700 text-white font-bold py-2 px-4 rounded\">\n <FontAwesomeIcon icon={faArrowsRotate} /> Actualizar\n </button>\n </div>\n ) :\n (\n <div>\n <button onClick={refreshButton} type=\"submit\" class=\"mb-4 bg-blue-500 hover:bg-blue-700 text-white font-bold py-2 px-4 rounded\">\n <FontAwesomeIcon icon={faArrowsRotate} /> Actualizar\n </button>\n </div>\n )}\n\n <div className=\"options mb-2\">\n <div className=\"option\">\n <CheckBox text=\"Expandir todos los grupos\"\n value={autoExpandAll}\n onValueChanged={onAutoExpandAllChanged}></CheckBox>\n </div>\n </div>\n <DataGrid\n height={800}\n id=\"gridContainer\"\n columnsAutoWidth={true}\n filterBuilder={filterBuilder}\n dataSource={store}\n defaultFilterValue={filterValue}\n allowColumnReordering={true}\n allowColumnResizing={true}\n columnResizingMode={\"widget\"}\n showBorders={true}\n rowAlternationEnabled={true}\n showRowLines={true}\n showColumnLines={true}\n remoteOperations={{ filtering: true }}\n ref={gridTableroRef}\n onExporting={onExporting}\n >\n <Scrolling rowRenderingMode='virtual'></Scrolling>\n <Paging defaultPageSize={10} />\n <Pager\n visible={true}\n allowedPageSizes={allowedPageSizes}\n displayMode='compact'\n showPageSizeSelector={true}\n showInfo={true}\n showNavigationButtons={true}\n />\n <FilterRow visible={true} />\n <FilterPanel visible={true} />\n <FilterBuilderPopup position={filterBuilderPopupPosition} />\n\n <HeaderFilter visible={true} />\n\n <GroupPanel visible={true} />\n <SearchPanel visible={true} />\n <ColumnChooser\n enabled={true}\n mode='select'\n >\n <ColumnChooserSearch\n enabled={true}\n />\n\n <ColumnChooserSelection\n allowSelectAll={true}\n selectByClick={true}\n recursive={true}\n />\n </ColumnChooser>\n <Grouping autoExpandAll={autoExpandAll} />\n <StateStoring enabled={true} type=\"localStorage\" storageKey=\"gridContainerLabelWMS\" />\n <Export enabled={true} />\n\n <Column caption=\"\" alignment=\"center\" width={100} cellRender={editLabelWMS} />\n <Column dataField=\"MovID\" dataType=\"string\" width={110} caption=\"Folio\" />\n <Column dataField=\"FechaEmision\" caption=\"Fecha Emisión\" dataType=\"date\" width={130} />\n <Column dataField=\"Estatus\" dataType=\"string\" width={120} />\n <Column dataField=\"Cantidad\" dataType=\"number\" width={120} format=',###' />\n\n <Column caption=\"Plaza\" dataField=\"Plaza\" dataType=\"string\" width={150} visible={false} />\n\n <Column dataField=\"ID\" dataType=\"number\" width={150} visible={false} />\n <Column dataField=\"Mov\" dataType=\"string\" width={190} caption=\"Tipo Movimiento\" visible={false} />\n <Column dataField=\"Movimiento\" dataType=\"string\" width={190} visible={false} />\n\n <Column dataField=\"Sucursal\" dataType=\"number\" width={150} visible={false} />\n <Column dataField=\"NombreSucursal\" dataType=\"string\" width={190} visible={false} />\n <Column dataField=\"Usuario\" dataType=\"string\" width={190} visible={false} />\n <Column dataField=\"NombreUsuario\" dataType=\"string\" width={190} visible={false} />\n </DataGrid>\n </div>\n ) : (<div />)}\n <Route exact path=\"/LabelWMS/:ID\" render={({ match }) => {\n return (\n <div class=\"bg-gray-200\">\n {isDetail.toString() === 'true' ?\n (\n <div>\n <Link to=\"/LabelWMS\">\n <button onClick={cancelEditButton} type=\"submit\" class=\"mb-4 bg-red-500 hover:bg-red-700 text-white font-bold py-2 px-4 rounded\">\n <FontAwesomeIcon icon={faArrowRotateLeft} /> Regresar\n </button>\n </Link>\n\n {activateSaveButton.toString() === 'true' ?\n (\n <button onClick={saveButton} type=\"submit\" class=\"ml-4 mb-4 bg-blue-500 hover:bg-blue-700 text-white font-bold py-2 px-4 rounded\">\n <FontAwesomeIcon icon={faSave} /> Guardar Cambios\n </button>\n ) : (\n <div class=\"inline-block\"></div>\n )}\n\n {activateConfirmButton.toString() === 'true' && id ?\n (\n <button onClick={confirmButton} type=\"submit\" class=\"ml-4 mb-4 bg-green-500 hover:bg-green-700 text-white font-bold py-2 px-4 rounded\">\n <FontAwesomeIcon icon={faPlay} /> Afectar\n </button>\n ) : (\n <div class=\"inline-block\"></div>\n )}\n\n {activateDeleteButton.toString() === 'true' && id ?\n (\n <button onClick={deleteButton} type=\"submit\" class=\"ml-4 mb-4 bg-red-500 hover:bg-red-700 text-white font-bold py-2 px-4 rounded\">\n <FontAwesomeIcon icon={faTrash} /> Eliminar\n </button>\n ) :\n (\n <div class=\"inline-block\"></div>\n )}\n\n {activateCancelButton.toString() === 'true' && id ?\n (\n <button onClick={voidButton} type=\"submit\" class=\"ml-4 mb-4 bg-red-500 hover:bg-red-700 text-white font-bold py-2 px-4 rounded\">\n <FontAwesomeIcon icon={faWindowClose} /> Cancelar\n </button>\n ) :\n (\n <div class=\"inline-block\"></div>\n )}\n\n\n {activatePDFButton.toString() === 'true' && id ?\n (\n <button onClick={printButton} type=\"submit\" class=\"ml-4 mb-4 bg-gray-500 hover:bg-gray-700 text-white font-bold py-2 px-4 rounded\">\n <FontAwesomeIcon icon={faNoteSticky} /> Imprimir Etiqueta\n </button>\n ) :\n (\n <div class=\"inline-block\"></div>\n )}\n\n <div class=\"bg-white p-4 shadow-xl\">\n <Form\n id=\"formTransaccion\"\n labelMode={'outside'}\n formData={labelWMSPayload.header}\n readOnly={!activateUpdateForm}\n showColonAfterLabel={false}\n labelLocation={'top'}\n ref={formDatosGeneralesRef}\n >\n <TabbedItem>\n <TabPanelOptions deferRendering={false} showNavButtons={true} />\n <Tab title=\"Datos Generales\" colCount={3}>\n <GroupItem caption=\"General\">\n <Item cssClass=\"boldText\" dataField=\"Movimiento\" editorOptions={movimientoEditorOptions} >\n <RequiredRule message=\"Movimiento es requerido\" />\n </Item>\n <Item dataField=\"FechaEmision\" editorType=\"dxDateBox\" editorOptions={fechaEmisionEditorOptions}>\n <Label text={\"Fecha Emisión\"} />\n <RequiredRule message=\"Fecha Emisión es requerida\" />\n </Item>\n <Item dataField=\"Cantidad\" editorType=\"dxNumberBox\" editorOptions={cantidadEditorOptions}>\n <Label text={\"Cantidad\"} />\n <RequiredRule message=\"Cantidad es requerida\" />\n </Item>\n </GroupItem>\n <GroupItem caption=\"Barcode\" colSpan={2} >\n <DataGrid\n id=\"gridBarcode\"\n ref={gridBarcodeRef}\n columnsAutoWidth={true}\n dataSource={labelWMSPayload.detail}\n showBorders={true}\n showColumnLines={true}\n showRowLines={true}\n rowAlternationEnabled={true}\n allowColumnResizing={true}\n columnResizingMode=\"widget\"\n allowColumnReordering={false}\n repaintChangesOnly={false}\n >\n <Editing\n mode=\"cell\"\n allowUpdating={activateUpdateGrid}\n allowAdding={false}\n allowDeleting={false}\n />\n <Sorting mode=\"none\" />\n\n <Column dataField=\"Renglon\" width={190} visible={false} allowEditing={false} />\n <Column dataField=\"Barcode\" caption=\"No. Etiqueta\" width={200} allowEditing={false} dataType=\"number\" />\n </DataGrid>\n </GroupItem>\n </Tab>\n <Tab title=\"Observaciones\" >\n <Item dataField=\"Observaciones\" editorType=\"dxTextArea\" >\n <Label text=\"Observaciones\" visible={false} />\n </Item>\n </Tab>\n <Tab title=\"Log Estatus\">\n <DataGrid\n id=\"gridLogEstatus\"\n columnsAutoWidth={true}\n dataSource={labelWMSPayload.movEstatusLog}\n allowColumnReordering={true}\n allowColumnResizing={true}\n columnResizingMode={\"widget\"}\n showBorders={true}\n rowAlternationEnabled={true}\n showRowLines={true}\n showColumnLines={true}\n >\n <HeaderFilter visible={false} />\n <Column dataField=\"Usuario\" dataType=\"string\" width={350} caption=\"Usuario\" />\n <Column caption=\"Estatus\" alignment=\"center\" width={150} cellRender={estatusRelatedRecords} />\n <Column dataField=\"Fecha\" dataType=\"datetime\" width={300} caption=\"Fecha\" />\n </DataGrid>\n </Tab>\n <Tab title=\"Archivos Anexos\" >\n <div className=\"widget-container\">\n <FileUploader\n multiple={true}\n accept=\"*\"\n uploadMode=\"useButtons\"\n chunkSize={20000000}\n maxFileSize={20000000}\n uploadChunk={uploadChunk}\n disabled={!activateAttachments}\n />\n </div>\n <div id=\"wrapper\" className=\"show-widget\" >\n <div id=\"widget-area\">\n <FileManager id=\"attachmentManager\" fileSystemProvider={attachments} onItemDeleting={onAttachmentDeleting} onItemDownloading={onItemDownloading} onSelectedFileOpened={onAttachmentOpen}>\n <Permissions\n create={false}\n copy={false}\n move={false}\n delete={activateAttachments}\n rename={false}\n upload={false}\n download={true}\n >\n </Permissions>\n </FileManager>\n </div>\n </div>\n </Tab>\n </TabbedItem>\n </Form>\n </div>\n </div>\n ) :\n (\n <div></div>\n )\n }\n </div>\n )\n }}\n />\n </div>\n </div>\n );\n}\n","import React, { useState, useEffect, useRef, useMemo } from 'react';\n\n// Ruteador\nimport { Route, Link, useHistory } from \"react-router-dom\";\n\n// LoadPanel\nimport { LoadPanel } from 'devextreme-react/load-panel';\n\nimport { Auth, API, Storage } from 'aws-amplify';\n\n// Grid\nimport DataGrid, {\n Column, FilterRow, HeaderFilter, FilterPanel, FilterBuilderPopup,\n GroupPanel, Grouping, SearchPanel, Sorting, Editing, Lookup, Toolbar, Item, RequiredRule,\n Scrolling, Pager, Paging, Summary, TotalItem, StateStoring, ColumnChooser, Format, Selection,\n Export, GroupItem, ColumnChooserSearch, ColumnChooserSelection\n} from 'devextreme-react/data-grid';\n\n// Iconos\nimport { FontAwesomeIcon } from \"@fortawesome/react-fontawesome\";\nimport { faArrowsRotate, faBoxOpen, faBoxOpenFull } from \"@fortawesome/pro-solid-svg-icons\";\nimport { faFileChartColumn } from \"@fortawesome/pro-duotone-svg-icons\";\n\nimport dxDateBox from \"devextreme/ui/date_box\";\n\nimport Lambda from 'aws-sdk/clients/lambda';\n\nimport 'devextreme/data/odata/store';\nimport CustomStore from 'devextreme/data/custom_store';\n\nimport DataSource from 'devextreme/data/data_source';\n\nimport '../ListStyle.css';\n\n//CheckBox\nimport CheckBox from 'devextreme-react/check-box';\n\nimport { Workbook } from 'exceljs';\nimport { saveAs } from 'file-saver';\nimport { exportDataGrid } from 'devextreme/excel_exporter'\n\ndxDateBox.defaultOptions({\n options: {\n dateSerializationFormat: \"yyyy-MM-dd\"\n }\n});\n\nfunction isNotEmpty(value) {\n return value !== undefined && value !== null && value !== '';\n}\n\nexport default function ExploreBarcode(props) {\n const history = useHistory();\n\n const [visibleLoadPanel, setVisibleLoadPanel] = useState(false);\n\n //Ref para el grid Inventario\n const [gridBarcodeRef, setGridBarcodeRef] = useState(React.createRef());\n\n const [autoExpandAll, setAutoExpandAll] = useState(true);\n\n function getOrderDay(rowData) {\n return (new Date(rowData.OrderDate)).getDay();\n }\n\n const allowedPageSizes = [5, 10, 15, 20, 'all'];\n\n const exportFormats = ['xlsx'];\n\n const filterBuilder = {\n customOperations: [{\n name: 'weekends',\n caption: 'Weekends',\n dataTypes: ['date'],\n icon: 'check',\n hasValue: false,\n calculateFilterExpression: () => [[getOrderDay, '=', 0], 'or', [getOrderDay, '=', 6]],\n }],\n allowHierarchicalFields: true,\n };\n\n const filterBuilderPopupPosition = {\n of: window,\n at: 'top',\n my: 'top',\n offset: { y: 10 },\n };\n\n async function getAuthCredentials() {\n return await Auth.currentCredentials();\n };\n\n async function lambdaInvoke(lambdaFunction, sqlFilter, credentials, username) {\n var barcodesGet = [];\n\n var params = {\n FunctionName: lambdaFunction,\n InvocationType: 'RequestResponse',\n Payload: JSON.stringify({\n action: 'list',\n sqlFilter: sqlFilter,\n username: username\n })\n };\n\n const lambda = new Lambda({\n credentials: Auth.essentialCredentials(credentials),\n region: 'us-east-1'\n });\n\n return await lambda.invoke(params).promise();\n }\n\n async function getBarcodeRecords(sqlFilter) {\n try {\n var lambdaFunction;\n\n if (window.location.href.indexOf('sandbox.') >= 0 || window.location.href.indexOf('localhost') >= 0)\n lambdaFunction = 'exploradorLabelWMS-dev';\n else if (window.location.href.indexOf('sandboxtampico.') >= 0)\n lambdaFunction = 'exploradorLabelWMS-devleona';\n else if (window.location.href.indexOf('tampico.') >= 0)\n lambdaFunction = 'exploradorLabelWMS-prodleona';\n else\n lambdaFunction = 'exploradorLabelWMS-prod';\n\n var authCredentials = await getAuthCredentials();\n\n var username = JSON.parse(JSON.stringify(await Auth.currentAuthenticatedUser())).username;\n\n var lambdaResponse = await lambdaInvoke(lambdaFunction, sqlFilter, authCredentials, username);\n\n return JSON.parse(JSON.parse(lambdaResponse.Payload).body);\n\n }\n catch (e) {\n if (e === 'No current user') {\n history.push('/');\n\n window.location.reload();\n }\n }\n }\n\n const store = new CustomStore({\n key: 'Barcode',\n load(loadOptions) {\n let sqlFilter = '(';\n [\n 'filter'\n ].forEach((i) => {\n if (i in loadOptions && isNotEmpty(loadOptions[i])) {\n var filters = loadOptions[i];\n\n var filtersLength = filters.length;\n\n for (var i = 0; i <= filtersLength; i++) {\n var singleFilter = filters[i];\n var singleFilterType = typeof singleFilter;\n var singleFilterIsArray = Array.isArray(singleFilter);\n var singleFilterIsDate = singleFilter instanceof Date;\n\n if (singleFilter === 'NULL') {\n singleFilter = '0';\n }\n\n if (singleFilterType.toString() === 'object' && singleFilterIsArray) {\n sqlFilter += '(';\n\n var subFiltersLength = singleFilter.length;\n\n for (var i2 = 0; i2 <= subFiltersLength; i2++) {\n var singleSubFilter = singleFilter[i2];\n var singleSubFilterType = typeof singleSubFilter;\n var singleSubFilterIsArray = Array.isArray(singleSubFilter);\n var singleSubFilterIsDate = singleSubFilter instanceof Date\n\n if (singleSubFilter === 'NULL') {\n singleSubFilter = '0';\n }\n\n if (singleSubFilterType.toString() === 'object' && singleSubFilterIsArray) {\n sqlFilter += '(';\n\n var subSubFiltersLength = singleSubFilter.length;\n\n for (var i3 = 0; i3 <= subSubFiltersLength; i3++) {\n var singleSubSubFilter = singleSubFilter[i3];\n var singleSubSubFilterType = typeof singleSubSubFilter;\n var singleSubSubFilterIsArray = Array.isArray(singleSubSubFilter);\n var singleSubSubFilterIsDate = singleSubSubFilter instanceof Date\n\n if (singleSubSubFilter === 'NULL') {\n singleSubSubFilter = '0';\n }\n\n if (singleSubSubFilterType.toString() === 'object' && singleSubSubFilterIsArray) {\n sqlFilter += '(';\n\n var subSubSubFiltersLength = singleSubSubFilter.length;\n\n for (var i4 = 0; i4 <= subSubSubFiltersLength; i4++) {\n var singleSubSubSubFilter = singleSubSubFilter[i4];\n var singleSubSubSubFilterType = typeof singleSubSubSubFilter;\n var singleSubSubSubFilterIsArray = Array.isArray(singleSubSubSubFilter);\n var singleSubSubSubFilterIsDate = singleSubSubSubFilter instanceof Date\n\n if (singleSubSubSubFilter === 'NULL') {\n singleSubSubSubFilter = '0';\n }\n\n if (singleSubSubSubFilterType.toString() === 'object' && singleSubSubSubFilterIsArray) {\n sqlFilter += '(';\n\n var subSubSubSubFiltersLength = singleSubSubSubFilter.length;\n\n for (var i5 = 0; i5 <= subSubSubSubFiltersLength; i5++) {\n var singleSubSubSubSubFilter = singleSubSubSubFilter[i5];\n var singleSubSubSubSubFilterType = typeof singleSubSubSubSubFilter;\n var singleSubSubSubSubFilterIsArray = Array.isArray(singleSubSubSubSubFilter);\n var singleSubSubSubSubFilterIsDate = singleSubSubSubSubFilter instanceof Date\n\n if (singleSubSubSubSubFilter === 'NULL') {\n singleSubSubSubSubFilter = '0';\n }\n\n if (singleSubSubSubSubFilterType.toString() === 'string') {\n if (singleSubSubSubSubFilter === 'contains') {\n filters[i][i2][i3][i4][i5] = 'LIKE';\n singleSubSubSubSubFilter = 'LIKE';\n\n filters[i][i2][i3][i4][i5 + 1] = '\\'%' + filters[i][i2][i3][i4][i5 + 1] + '%\\'';\n }\n else if (singleSubSubSubSubFilter === 'notcontains') {\n filters[i][i2][i3][i4][i5] = 'NOT LIKE';\n singleSubSubSubSubFilter = 'NOT LIKE';\n\n filters[i][i2][i3][i4][i5 + 1] = '\\'%' + filters[i][i2][i3][i4][i5 + 1] + '%\\'';\n }\n else if (singleSubSubSubSubFilter === 'startswith') {\n filters[i][i2][i3][i4][i5] = 'LIKE';\n singleSubSubSubSubFilter = 'LIKE';\n\n filters[i][i2][i3][i4][i5 + 1] = '\\'' + filters[i][i2][i3][i4][i5 + 1] + '%\\'';\n }\n else if (singleSubSubSubSubFilter === 'endswith') {\n filters[i][i2][i3][i4][i5] = 'LIKE';\n singleSubSubSubSubFilter = 'LIKE';\n\n filters[i][i2][i3][i4][i5 + 1] = '\\'%' + filters[i][i2][i3][i4][i5 + 1] + '\\'';\n }\n else if (singleSubSubSubSubFilter === '=' || singleSubSubSubSubFilter === '<>' || singleSubSubSubSubFilter === '>' || singleSubSubSubSubFilter === '>=' || singleSubSubSubSubFilter === '<' || singleSubSubSubSubFilter === '<=') {\n if (!filters[i][i2][i3][i4][i5 + 1])\n filters[i][i2][i3][i4][i5 + 1] = 'NULL';\n else if (typeof filters[i][i2][i3][i4][i5 + 1] === 'string') {\n filters[i][i2][i3][i4][i5 + 1] = '\\'' + filters[i][i2][i3][i4][i5 + 1] + '\\'';\n }\n }\n else if (singleSubSubSubSubFilter === '!') {\n filters[i][i2][i3][i4][i5] = 'NOT';\n singleSubSubSubSubFilter = 'NOT';\n }\n\n sqlFilter += ' ' + singleSubSubSubSubFilter + ' ';\n }\n else if (singleSubSubSubSubFilterType.toString() === 'object' && singleSubSubSubSubFilterIsDate) {\n sqlFilter += ' \\'' + singleSubSubSubSubFilter.toISOString().split('T')[0] + '\\' ';\n }\n else if (singleSubSubSubSubFilterType.toString() === 'number') {\n sqlFilter += ' ' + singleSubSubSubSubFilter.toString() + ' ';\n }\n else if (singleSubSubSubSubFilterType.toString() === 'boolean') {\n if (singleSubSubSubSubFilter.toString() === 'true')\n sqlFilter += '1 ';\n else if (singleSubSubSubSubFilter.toString() === 'false' || singleSubSubSubSubFilter === null || singleSubSubSubSubFilter === undefined)\n sqlFilter += '0 ';\n }\n }\n }\n else if (singleSubSubSubFilterType.toString() === 'string') {\n if (singleSubSubSubFilter === 'contains') {\n filters[i][i2][i3][i4] = 'LIKE';\n singleSubSubSubFilter = 'LIKE';\n\n filters[i][i2][i3][i4 + 1] = '\\'%' + filters[i][i2][i3][i4 + 1] + '%\\'';\n }\n else if (singleSubSubSubFilter === 'notcontains') {\n filters[i][i2][i3][i4] = 'NOT LIKE';\n singleSubSubSubFilter = 'NOT LIKE';\n\n filters[i][i2][i3][i4 + 1] = '\\'%' + filters[i][i2][i3][i4 + 1] + '%\\'';\n }\n else if (singleSubSubSubFilter === 'startswith') {\n filters[i][i2][i3][i4] = 'LIKE';\n singleSubSubSubFilter = 'LIKE';\n\n filters[i][i2][i3][i4 + 1] = '\\'' + filters[i][i2][i3][i4 + 1] + '%\\'';\n }\n else if (singleSubSubSubFilter === 'endswith') {\n filters[i][i2][i3][i4] = 'LIKE';\n singleSubSubSubFilter = 'LIKE';\n\n filters[i][i2][i3][i4 + 1] = '\\'%' + filters[i][i2][i3][i4 + 1] + '\\'';\n }\n else if (singleSubSubSubFilter === '=' || singleSubSubSubFilter === '<>' || singleSubSubSubFilter === '>' || singleSubSubSubFilter === '>=' || singleSubSubSubFilter === '<' || singleSubSubSubFilter === '<=') {\n if (!filters[i][i2][i3][i4 + 1])\n filters[i][i2][i3][i4 + 1] = 'NULL';\n else if (typeof filters[i][i2][i3][i4 + 1] === 'string') {\n filters[i][i2][i3][i4 + 1] = '\\'' + filters[i][i2][i3][i4 + 1] + '\\'';\n }\n }\n else if (singleSubSubSubFilter === '!') {\n filters[i][i2][i3][i4] = 'NOT';\n singleSubSubSubFilter = 'NOT';\n }\n\n sqlFilter += ' ' + singleSubSubSubFilter + ' ';\n }\n else if (singleSubSubSubFilterType.toString() === 'object' && singleSubSubSubFilterIsDate) {\n sqlFilter += ' \\'' + singleSubSubSubFilter.toISOString().split('T')[0] + '\\' ';\n }\n else if (singleSubSubSubFilterType.toString() === 'number') {\n sqlFilter += ' ' + singleSubSubSubFilter.toString() + ' ';\n }\n else if (singleSubSubSubFilterType.toString() === 'boolean') {\n if (singleSubSubSubFilter.toString() === 'true')\n sqlFilter += '1 ';\n else if (singleSubSubSubFilter.toString() === 'false' || singleSubSubSubFilter === null || singleSubSubSubFilter === undefined)\n sqlFilter += '0 ';\n }\n }\n\n sqlFilter += ')';\n }\n else if (singleSubSubFilterType.toString() === 'string') {\n if (singleSubSubFilter === 'contains') {\n filters[i][i2][i3] = 'LIKE';\n singleSubSubFilter = 'LIKE';\n\n filters[i][i2][i3 + 1] = '\\'%' + filters[i][i2][i3 + 1] + '%\\'';\n }\n else if (singleSubSubFilter === 'notcontains') {\n filters[i][i2][i3] = 'NOT LIKE';\n singleSubSubFilter = 'NOT LIKE';\n\n filters[i][i2][i3 + 1] = '\\'%' + filters[i][i2][i3 + 1] + '%\\'';\n }\n else if (singleSubSubFilter === 'startswith') {\n filters[i][i2][i3] = 'LIKE';\n singleSubSubFilter = 'LIKE';\n\n filters[i][i2][i3 + 1] = '\\'' + filters[i][i2][i3 + 1] + '%\\'';\n }\n else if (singleSubSubFilter === 'endswith') {\n filters[i][i2][i3] = 'LIKE';\n singleSubSubFilter = 'LIKE';\n\n filters[i][i2][i3 + 1] = '\\'%' + filters[i][i2][i3 + 1] + '\\'';\n }\n else if (singleSubSubFilter === '=' || singleSubSubFilter === '<>' || singleSubSubFilter === '>' || singleSubSubFilter === '>=' || singleSubSubFilter === '<' || singleSubSubFilter === '<=') {\n if (!filters[i][i2][i3 + 1])\n filters[i][i2][i3 + 1] = 'NULL';\n else if (typeof filters[i][i2][i3 + 1] === 'string') {\n filters[i][i2][i3 + 1] = '\\'' + filters[i][i2][i3 + 1] + '\\'';\n }\n }\n else if (singleSubSubFilter === '!') {\n filters[i][i2][i3] = 'NOT';\n singleSubSubFilter = 'NOT';\n }\n sqlFilter += ' ' + singleSubSubFilter + ' ';\n }\n else if (singleSubSubFilterType.toString() === 'object' && singleSubSubFilterIsDate) {\n sqlFilter += ' \\'' + singleSubSubFilter.toISOString().split('T')[0] + '\\' ';\n }\n else if (singleSubSubFilterType.toString() === 'number') {\n sqlFilter += ' ' + singleSubSubFilter.toString() + ' ';\n }\n else if (singleSubSubFilterType.toString() === 'boolean') {\n if (singleSubSubFilter.toString() === 'true')\n sqlFilter += '1 ';\n else if (singleSubSubFilter.toString() === 'false' || singleSubSubFilter === null || singleSubSubFilter === undefined)\n sqlFilter += '0 ';\n }\n }\n\n sqlFilter += ')';\n }\n else if (singleSubFilterType.toString() === 'string') {\n if (singleSubFilter === 'contains') {\n filters[i][i2] = 'LIKE';\n singleSubFilter = 'LIKE';\n\n filters[i][i2 + 1] = '\\'%' + filters[i][i2 + 1] + '%\\'';\n }\n else if (singleSubFilter === 'notcontains') {\n filters[i][i2] = 'NOT LIKE';\n singleSubFilter = 'NOT LIKE';\n\n filters[i][i2 + 1] = '\\'%' + filters[i][i2 + 1] + '%\\'';\n }\n else if (singleSubFilter === 'startswith') {\n filters[i][i2] = 'LIKE';\n singleSubFilter = 'LIKE';\n\n filters[i][i2 + 1] = '\\'' + filters[i][i2 + 1] + '%\\'';\n }\n else if (singleSubFilter === 'endswith') {\n filters[i][i2] = 'LIKE';\n singleSubFilter = 'LIKE';\n\n filters[i][i2 + 1] = '\\'%' + filters[i][i2 + 1] + '\\'';\n }\n else if (singleSubFilter === '=' || singleSubFilter === '<>' || singleSubFilter === '>' || singleSubFilter === '>=' || singleSubFilter === '<' || singleSubFilter === '<=') {\n if (!filters[i][i2 + 1])\n filters[i][i2 + 1] = 'NULL';\n else if (typeof filters[i][i2 + 1] === 'string') {\n filters[i][i2 + 1] = '\\'' + filters[i][i2 + 1] + '\\'';\n }\n }\n else if (singleSubFilter === '!') {\n filters[i][i2] = 'NOT';\n singleSubFilter = 'NOT';\n }\n sqlFilter += ' ' + singleSubFilter + ' ';\n }\n else if (singleSubFilterType.toString() === 'object' && singleSubFilterIsDate) {\n sqlFilter += ' \\'' + singleSubFilter.toISOString().split('T')[0] + '\\' ';\n }\n else if (singleSubFilterType.toString() === 'number') {\n sqlFilter += ' ' + singleSubFilter.toString() + ' ';\n }\n else if (singleSubFilterType.toString() === 'boolean') {\n if (singleSubFilter.toString() === 'true')\n sqlFilter += '1 ';\n else if (singleSubFilter.toString() === 'false' || singleSubFilter === null || singleSubFilter === undefined)\n sqlFilter += '0 ';\n }\n }\n\n sqlFilter += ')';\n }\n else if (singleFilterType.toString() === 'string') {\n if (singleFilter === 'contains') {\n filters[i] = 'LIKE';\n singleFilter = 'LIKE';\n\n filters[i + 1] = '\\'%' + filters[i + 1] + '%\\'';\n }\n else if (singleFilter === 'notcontains') {\n filters[i] = 'NOT LIKE';\n singleFilter = 'NOT LIKE';\n\n filters[i + 1] = '\\'%' + filters[i + 1] + '%\\'';\n }\n else if (singleFilter === 'startswith') {\n filters[i] = 'LIKE';\n singleFilter = 'LIKE';\n\n filters[i + 1] = '\\'' + filters[i + 1] + '%\\'';\n }\n else if (singleFilter === 'endswith') {\n filters[i] = 'LIKE';\n singleFilter = 'LIKE';\n\n filters[i + 1] = '\\'%' + filters[i + 1] + '\\'';\n }\n else if (singleFilter === '=' || singleFilter === '<>' || singleFilter === '>' || singleFilter === '>=' || singleFilter === '<' || singleFilter === '<=') {\n if (!filters[i + 1])\n filters[i + 1] = 'NULL';\n else if (typeof filters[i + 1] === 'string') {\n filters[i + 1] = '\\'' + filters[i + 1] + '\\'';\n }\n }\n else if (singleFilter === '!') {\n filters[i] = 'NOT';\n singleFilter = 'NOT';\n }\n sqlFilter += ' ' + singleFilter + ' ';\n }\n else if (singleFilterType.toString() === 'object' && singleFilterIsDate) {\n sqlFilter += ' \\'' + singleFilter.toISOString().split('T')[0] + '\\' ';\n }\n else if (singleFilterType.toString() === 'number') {\n sqlFilter += ' ' + singleFilter.toString() + ' ';\n }\n else if (singleFilterType.toString() === 'boolean') {\n if (singleFilter.toString() === 'true')\n sqlFilter += '1 ';\n else if (singleFilter.toString() === 'false' || singleFilter === null || singleFilter === undefined)\n sqlFilter += '0 ';\n }\n }\n\n sqlFilter += ')';\n }\n });\n\n async function getRecords() {\n if (sqlFilter === '(')\n sqlFilter = '';\n\n var records = await getBarcodeRecords(sqlFilter);\n return {\n data: records,\n totalCount: records.length\n };\n }\n\n return getRecords()\n .then(function (result) {\n return result;\n })\n .catch(() => { throw new Error('Data Loading Error'); });\n },\n });\n\n function refreshButton() {\n if (gridBarcodeRef.current) {\n var gridBarcode = gridBarcodeRef.current.instance();\n\n gridBarcode.refresh();\n }\n };\n\n function onAutoExpandAllChanged() {\n setAutoExpandAll(!autoExpandAll)\n };\n\n function onExporting(e) {\n const workbook = new Workbook();\n const worksheet = workbook.addWorksheet('Datos');\n\n exportDataGrid({\n component: e.component,\n worksheet,\n autoFilterEnabled: true,\n }).then(() => {\n workbook.xlsx.writeBuffer().then((buffer) => {\n saveAs(new Blob([buffer], { type: 'application/octet-stream' }), 'Datos.xlsx');\n });\n });\n e.cancel = true;\n };\n\n const iconoProceso = React.useCallback((data) => {\n var SCWMSID = data.data.SCWMSID;\n var CantidadReservada = data.data.CantidadReservada;\n\n if (SCWMSID || CantidadReservada) {\n return (<div class=\"inline-block w-5 h-5 bg-yellow-500 rounded-full\"></div>)\n }\n else {\n return (<div></div>)\n }\n }, []);\n\n const emptyButton = React.useCallback(async () => {\n // if (gridBarcodeRef.current) {\n // var gridProductCluster = gridBarcodeRef.current.instance();\n\n // gridProductCluster.filter(['Cantidad', '=', '0']);\n // }\n }, []);\n\n const fullButton = React.useCallback(async () => {\n // if (gridBarcodeRef.current) {\n // var gridProductCluster = gridBarcodeRef.current.instance();\n\n // gridProductCluster.clearFilter();\n\n // gridProductCluster.columnOption('Cantidad', 'notEmpty');\n\n // }\n }, []);\n\n return (\n <div>\n <div class=\"bg-gray-200 m-2\">\n <h1 class=\"font-sans inline-block text-xl font-bold text-gray-700 leading-8 align-top mb-1\"><FontAwesomeIcon icon={faFileChartColumn} size=\"xl\" /> WMS Barcodes</h1>\n </div>\n <div>\n <button onClick={refreshButton} type=\"submit\" class=\"ml-2 mb-4 bg-blue-500 hover:bg-blue-700 text-white font-bold py-2 px-4 rounded\">\n <FontAwesomeIcon icon={faArrowsRotate} /> Actualizar\n </button>\n {/* <button onClick={emptyButton} type=\"submit\" class=\"ml-2 mb-4 bg-blue-500 hover:bg-blue-700 text-white font-bold py-2 px-4 rounded\">\n <FontAwesomeIcon icon={faBoxOpen} /> Sin asignar\n </button>\n <button onClick={fullButton} type=\"submit\" class=\"ml-2 mb-4 bg-blue-500 hover:bg-blue-700 text-white font-bold py-2 px-4 rounded\">\n <FontAwesomeIcon icon={faBoxOpenFull} /> Asignados\n </button> */}\n </div>\n\n <LoadPanel\n shadingColor=\"rgba(0,0,0,0.4)\"\n visible={visibleLoadPanel}\n showIndicator={true}\n message=\"Por favor espere...\"\n shading={true}\n showPane={true}\n hideOnOutsideClick={false}\n />\n\n <div class=\"m-2 bg-white p-4 shadow-xl\">\n <div className=\"options mb-2\">\n <div className=\"option\">\n <CheckBox text=\"Expandir todos los grupos\"\n value={autoExpandAll}\n onValueChanged={onAutoExpandAllChanged}>\n </CheckBox>\n </div>\n </div>\n <DataGrid\n id=\"gridBarcode\"\n columnsAutoWidth={true}\n filterBuilder={filterBuilder}\n dataSource={store}\n allowColumnReordering={true}\n allowColumnResizing={true}\n columnResizingMode=\"widget\"\n showBorders={true}\n rowAlternationEnabled={true}\n showRowLines={true}\n showColumnLines={true}\n remoteOperations={{ filtering: true }}\n ref={gridBarcodeRef}\n onExporting={onExporting}\n >\n <Scrolling rowRenderingMode='virtual'></Scrolling>\n <Paging defaultPageSize={10} />\n <Pager\n visible={true}\n allowedPageSizes={allowedPageSizes}\n displayMode='compact'\n showPageSizeSelector={true}\n showInfo={true}\n showNavigationButtons={true}\n />\n <FilterRow visible={true} />\n <FilterPanel visible={true} />\n <FilterBuilderPopup position={filterBuilderPopupPosition} />\n\n <HeaderFilter visible={true} />\n\n <Editing\n mode=\"cell\"\n newRowPosition=\"last\"\n allowUpdating={false}\n allowAdding={false}\n allowDeleting={false}\n />\n\n <GroupPanel visible={true} />\n <SearchPanel visible={true} />\n <ColumnChooser\n enabled={true}\n mode='select'\n >\n <ColumnChooserSearch\n enabled={true}\n />\n\n <ColumnChooserSelection\n allowSelectAll={true}\n selectByClick={true}\n recursive={true}\n />\n </ColumnChooser>\n <Grouping autoExpandAll={autoExpandAll} />\n <StateStoring enabled={true} type=\"localStorage\" storageKey=\"gridContainerExploreBarcode\" />\n <Export enabled={true} />\n\n <Column dataField=\"Barcode\" caption=\"Barcode\" dataType=\"number\" width={100} visible={true} />\n <Column dataField=\"BarcodePadre\" caption=\"Barcode Padre\" dataType=\"number\" width={100} visible={false} />\n <Column caption=\"En Proceso\" alignment=\"center\" width={110} cellRender={iconoProceso} visible={true} />\n <Column dataField=\"Articulo\" caption=\"Artículo\" dataType=\"string\" width={100} visible={true} />\n <Column dataField=\"DescripcionArticulo\" caption=\"Descripción\" dataType=\"string\" width={300} visible={true} />\n <Column dataField=\"Almacen\" caption=\"Almacén\" dataType=\"string\" width={100} visible={true} />\n <Column dataField=\"NombreAlmacen\" caption=\"Nombre Almacén\" dataType=\"string\" width={300} visible={false} />\n <Column dataField=\"Posicion\" caption=\"Posición\" dataType=\"string\" width={120} visible={true} />\n <Column dataField=\"Sucursal\" caption=\"Sucursal\" dataType=\"number\" width={300} visible={false} />\n <Column dataField=\"NombreSucursal\" caption=\"Nombre Sucursal\" dataType=\"string\" width={300} visible={false} />\n <Column dataField=\"Plaza\" caption=\"Plaza\" dataType=\"string\" width={300} visible={false} />\n <Column dataField=\"Cantidad\" caption=\"Cantidad\" dataType=\"number\" width={150} visible={true} format=',###' />\n <Column dataField=\"CantidadReservada\" caption=\"Cantidad Reservada\" dataType=\"number\" width={180} visible={true} format=',###' />\n <Column dataField=\"CantidadDisponible\" caption=\"Cantidad Disponible\" dataType=\"number\" width={180} visible={true} format=',###' />\n <Column dataField=\"Pasillo\" caption=\"Pasillo\" dataType=\"string\" width={300} visible={false} />\n <Column dataField=\"Nivel\" caption=\"Nivel\" dataType=\"string\" width={300} visible={false} />\n <Column dataField=\"Zona\" caption=\"Zona\" dataType=\"string\" width={300} visible={false} />\n <Column dataField=\"FechaIngreso\" caption=\"Fecha de Ingreso\" dataType=\"date\" width={150} visible={true} />\n <Column dataField=\"SCWMSID\" caption=\"ID WMS\" dataType=\"number\" width={100} visible={false} />\n <Column dataField=\"MovimientoWMS\" caption=\"Movimiento WMS\" dataType=\"string\" width={300} visible={false} />\n <Column dataField=\"SCRama\" caption=\"Surtido en Pedido\" dataType=\"string\" width={300} visible={false} />\n <Summary>\n <GroupItem\n column=\"Cantidad\"\n summaryType=\"sum\"\n valueFormat=\",##0.##\"\n displayFormat=\"Cantidad {0}\"\n showInGroupFooter={false}>\n </GroupItem>\n <GroupItem\n column=\"CantidadReservada\"\n summaryType=\"sum\"\n valueFormat=\",##0.##\"\n displayFormat=\"Cantidad Reservada {0}\"\n showInGroupFooter={false}>\n </GroupItem>\n <GroupItem\n column=\"CantidadDisponible\"\n summaryType=\"sum\"\n valueFormat=\",##0.##\"\n displayFormat=\"Cantidad Disponible {0}\"\n showInGroupFooter={false}>\n </GroupItem>\n <TotalItem\n column=\"Cantidad\"\n summaryType=\"sum\"\n valueFormat=\",##0.##\"\n displayFormat=\"Cantidad {0}\"\n showInColumn=\"Cantidad\">\n </TotalItem>\n <TotalItem\n column=\"CantidadReservada\"\n summaryType=\"sum\"\n valueFormat=\",##0.##\"\n displayFormat=\"Cantidad Reservada {0}\"\n showInColumn=\"CantidadReservada\">\n </TotalItem>\n <TotalItem\n column=\"CantidadDisponible\"\n summaryType=\"sum\"\n valueFormat=\",##0.##\"\n displayFormat=\"Cantidad Disponible {0}\"\n showInColumn=\"CantidadDisponible\">\n </TotalItem>\n </Summary>\n </DataGrid>\n </div>\n </div>\n );\n}","import React, { useState, useEffect, useRef, useMemo } from 'react';\n\n// Ruteador\nimport { Route, Link, useHistory } from \"react-router-dom\";\n\n// LoadPanel\nimport { LoadPanel } from 'devextreme-react/load-panel';\n\nimport { Auth, API, Storage } from 'aws-amplify';\n\n// Grid\nimport DataGrid, {\n Column, FilterRow, HeaderFilter, FilterPanel, FilterBuilderPopup,\n GroupPanel, Grouping, SearchPanel, Sorting, Editing, Lookup, Toolbar, Item, RequiredRule,\n Scrolling, Pager, Paging, Summary, TotalItem, StateStoring, ColumnChooser, Format, Selection,\n Export, GroupItem, ColumnChooserSearch, ColumnChooserSelection\n} from 'devextreme-react/data-grid';\n\n// Iconos\nimport { FontAwesomeIcon } from \"@fortawesome/react-fontawesome\";\nimport { faArrowsRotate, faBoxOpen, faBoxOpenFull } from \"@fortawesome/pro-solid-svg-icons\";\nimport { faFileChartColumn } from \"@fortawesome/pro-duotone-svg-icons\";\n\nimport dxDateBox from \"devextreme/ui/date_box\";\n\nimport Lambda from 'aws-sdk/clients/lambda';\n\nimport 'devextreme/data/odata/store';\nimport CustomStore from 'devextreme/data/custom_store';\n\nimport DataSource from 'devextreme/data/data_source';\n\nimport '../ListStyle.css';\n\n//CheckBox\nimport CheckBox from 'devextreme-react/check-box';\n\nimport { Workbook } from 'exceljs';\nimport { saveAs } from 'file-saver';\nimport { exportDataGrid } from 'devextreme/excel_exporter'\n\ndxDateBox.defaultOptions({\n options: {\n dateSerializationFormat: \"yyyy-MM-dd\"\n }\n});\n\nfunction isNotEmpty(value) {\n return value !== undefined && value !== null && value !== '';\n}\n\nexport default function ExploreBarcodeCosts(props) {\n const history = useHistory();\n\n const [visibleLoadPanel, setVisibleLoadPanel] = useState(false);\n\n //Ref para el grid Inventario\n const [gridBarcodeCostsRef, setGridBarcodeCostsRef] = useState(React.createRef());\n\n const [autoExpandAll, setAutoExpandAll] = useState(true);\n\n function getOrderDay(rowData) {\n return (new Date(rowData.OrderDate)).getDay();\n }\n\n const allowedPageSizes = [5, 10, 15, 20, 'all'];\n\n const exportFormats = ['xlsx'];\n\n const filterBuilder = {\n customOperations: [{\n name: 'weekends',\n caption: 'Weekends',\n dataTypes: ['date'],\n icon: 'check',\n hasValue: false,\n calculateFilterExpression: () => [[getOrderDay, '=', 0], 'or', [getOrderDay, '=', 6]],\n }],\n allowHierarchicalFields: true,\n };\n\n const filterBuilderPopupPosition = {\n of: window,\n at: 'top',\n my: 'top',\n offset: { y: 10 },\n };\n\n async function getAuthCredentials() {\n return await Auth.currentCredentials();\n };\n\n async function lambdaInvoke(lambdaFunction, sqlFilter, credentials, username) {\n var barcodesGet = [];\n\n var params = {\n FunctionName: lambdaFunction,\n InvocationType: 'RequestResponse',\n Payload: JSON.stringify({\n action: 'list',\n sqlFilter: sqlFilter,\n username: username\n })\n };\n\n const lambda = new Lambda({\n credentials: Auth.essentialCredentials(credentials),\n region: 'us-east-1'\n });\n\n return await lambda.invoke(params).promise();\n }\n\n async function getBarcodeRecords(sqlFilter) {\n try {\n var lambdaFunction;\n\n if (window.location.href.indexOf('sandbox.') >= 0 || window.location.href.indexOf('localhost') >= 0)\n lambdaFunction = 'exploradorLabelWMS-dev';\n else if (window.location.href.indexOf('sandboxtampico.') >= 0)\n lambdaFunction = 'exploradorLabelWMS-devleona';\n else if (window.location.href.indexOf('tampico.') >= 0)\n lambdaFunction = 'exploradorLabelWMS-prodleona';\n else\n lambdaFunction = 'exploradorLabelWMS-prod';\n\n var authCredentials = await getAuthCredentials();\n\n var username = JSON.parse(JSON.stringify(await Auth.currentAuthenticatedUser())).username;\n\n var lambdaResponse = await lambdaInvoke(lambdaFunction, sqlFilter, authCredentials, username);\n\n return JSON.parse(JSON.parse(lambdaResponse.Payload).body);\n\n }\n catch (e) {\n if (e === 'No current user') {\n history.push('/');\n\n window.location.reload();\n }\n }\n }\n\n const store = new CustomStore({\n key: 'Barcode',\n load(loadOptions) {\n let sqlFilter = '(';\n [\n 'filter'\n ].forEach((i) => {\n if (i in loadOptions && isNotEmpty(loadOptions[i])) {\n var filters = loadOptions[i];\n\n var filtersLength = filters.length;\n\n for (var i = 0; i <= filtersLength; i++) {\n var singleFilter = filters[i];\n var singleFilterType = typeof singleFilter;\n var singleFilterIsArray = Array.isArray(singleFilter);\n var singleFilterIsDate = singleFilter instanceof Date;\n\n if (singleFilter === 'NULL') {\n singleFilter = '0';\n }\n\n if (singleFilterType.toString() === 'object' && singleFilterIsArray) {\n sqlFilter += '(';\n\n var subFiltersLength = singleFilter.length;\n\n for (var i2 = 0; i2 <= subFiltersLength; i2++) {\n var singleSubFilter = singleFilter[i2];\n var singleSubFilterType = typeof singleSubFilter;\n var singleSubFilterIsArray = Array.isArray(singleSubFilter);\n var singleSubFilterIsDate = singleSubFilter instanceof Date\n\n if (singleSubFilter === 'NULL') {\n singleSubFilter = '0';\n }\n\n if (singleSubFilterType.toString() === 'object' && singleSubFilterIsArray) {\n sqlFilter += '(';\n\n var subSubFiltersLength = singleSubFilter.length;\n\n for (var i3 = 0; i3 <= subSubFiltersLength; i3++) {\n var singleSubSubFilter = singleSubFilter[i3];\n var singleSubSubFilterType = typeof singleSubSubFilter;\n var singleSubSubFilterIsArray = Array.isArray(singleSubSubFilter);\n var singleSubSubFilterIsDate = singleSubSubFilter instanceof Date\n\n if (singleSubSubFilter === 'NULL') {\n singleSubSubFilter = '0';\n }\n\n if (singleSubSubFilterType.toString() === 'object' && singleSubSubFilterIsArray) {\n sqlFilter += '(';\n\n var subSubSubFiltersLength = singleSubSubFilter.length;\n\n for (var i4 = 0; i4 <= subSubSubFiltersLength; i4++) {\n var singleSubSubSubFilter = singleSubSubFilter[i4];\n var singleSubSubSubFilterType = typeof singleSubSubSubFilter;\n var singleSubSubSubFilterIsArray = Array.isArray(singleSubSubSubFilter);\n var singleSubSubSubFilterIsDate = singleSubSubSubFilter instanceof Date\n\n if (singleSubSubSubFilter === 'NULL') {\n singleSubSubSubFilter = '0';\n }\n\n if (singleSubSubSubFilterType.toString() === 'object' && singleSubSubSubFilterIsArray) {\n sqlFilter += '(';\n\n var subSubSubSubFiltersLength = singleSubSubSubFilter.length;\n\n for (var i5 = 0; i5 <= subSubSubSubFiltersLength; i5++) {\n var singleSubSubSubSubFilter = singleSubSubSubFilter[i5];\n var singleSubSubSubSubFilterType = typeof singleSubSubSubSubFilter;\n var singleSubSubSubSubFilterIsArray = Array.isArray(singleSubSubSubSubFilter);\n var singleSubSubSubSubFilterIsDate = singleSubSubSubSubFilter instanceof Date\n\n if (singleSubSubSubSubFilter === 'NULL') {\n singleSubSubSubSubFilter = '0';\n }\n\n if (singleSubSubSubSubFilterType.toString() === 'string') {\n if (singleSubSubSubSubFilter === 'contains') {\n filters[i][i2][i3][i4][i5] = 'LIKE';\n singleSubSubSubSubFilter = 'LIKE';\n\n filters[i][i2][i3][i4][i5 + 1] = '\\'%' + filters[i][i2][i3][i4][i5 + 1] + '%\\'';\n }\n else if (singleSubSubSubSubFilter === 'notcontains') {\n filters[i][i2][i3][i4][i5] = 'NOT LIKE';\n singleSubSubSubSubFilter = 'NOT LIKE';\n\n filters[i][i2][i3][i4][i5 + 1] = '\\'%' + filters[i][i2][i3][i4][i5 + 1] + '%\\'';\n }\n else if (singleSubSubSubSubFilter === 'startswith') {\n filters[i][i2][i3][i4][i5] = 'LIKE';\n singleSubSubSubSubFilter = 'LIKE';\n\n filters[i][i2][i3][i4][i5 + 1] = '\\'' + filters[i][i2][i3][i4][i5 + 1] + '%\\'';\n }\n else if (singleSubSubSubSubFilter === 'endswith') {\n filters[i][i2][i3][i4][i5] = 'LIKE';\n singleSubSubSubSubFilter = 'LIKE';\n\n filters[i][i2][i3][i4][i5 + 1] = '\\'%' + filters[i][i2][i3][i4][i5 + 1] + '\\'';\n }\n else if (singleSubSubSubSubFilter === '=' || singleSubSubSubSubFilter === '<>' || singleSubSubSubSubFilter === '>' || singleSubSubSubSubFilter === '>=' || singleSubSubSubSubFilter === '<' || singleSubSubSubSubFilter === '<=') {\n if (!filters[i][i2][i3][i4][i5 + 1])\n filters[i][i2][i3][i4][i5 + 1] = 'NULL';\n else if (typeof filters[i][i2][i3][i4][i5 + 1] === 'string') {\n filters[i][i2][i3][i4][i5 + 1] = '\\'' + filters[i][i2][i3][i4][i5 + 1] + '\\'';\n }\n }\n else if (singleSubSubSubSubFilter === '!') {\n filters[i][i2][i3][i4][i5] = 'NOT';\n singleSubSubSubSubFilter = 'NOT';\n }\n\n sqlFilter += ' ' + singleSubSubSubSubFilter + ' ';\n }\n else if (singleSubSubSubSubFilterType.toString() === 'object' && singleSubSubSubSubFilterIsDate) {\n sqlFilter += ' \\'' + singleSubSubSubSubFilter.toISOString().split('T')[0] + '\\' ';\n }\n else if (singleSubSubSubSubFilterType.toString() === 'number') {\n sqlFilter += ' ' + singleSubSubSubSubFilter.toString() + ' ';\n }\n else if (singleSubSubSubSubFilterType.toString() === 'boolean') {\n if (singleSubSubSubSubFilter.toString() === 'true')\n sqlFilter += '1 ';\n else if (singleSubSubSubSubFilter.toString() === 'false' || singleSubSubSubSubFilter === null || singleSubSubSubSubFilter === undefined)\n sqlFilter += '0 ';\n }\n }\n }\n else if (singleSubSubSubFilterType.toString() === 'string') {\n if (singleSubSubSubFilter === 'contains') {\n filters[i][i2][i3][i4] = 'LIKE';\n singleSubSubSubFilter = 'LIKE';\n\n filters[i][i2][i3][i4 + 1] = '\\'%' + filters[i][i2][i3][i4 + 1] + '%\\'';\n }\n else if (singleSubSubSubFilter === 'notcontains') {\n filters[i][i2][i3][i4] = 'NOT LIKE';\n singleSubSubSubFilter = 'NOT LIKE';\n\n filters[i][i2][i3][i4 + 1] = '\\'%' + filters[i][i2][i3][i4 + 1] + '%\\'';\n }\n else if (singleSubSubSubFilter === 'startswith') {\n filters[i][i2][i3][i4] = 'LIKE';\n singleSubSubSubFilter = 'LIKE';\n\n filters[i][i2][i3][i4 + 1] = '\\'' + filters[i][i2][i3][i4 + 1] + '%\\'';\n }\n else if (singleSubSubSubFilter === 'endswith') {\n filters[i][i2][i3][i4] = 'LIKE';\n singleSubSubSubFilter = 'LIKE';\n\n filters[i][i2][i3][i4 + 1] = '\\'%' + filters[i][i2][i3][i4 + 1] + '\\'';\n }\n else if (singleSubSubSubFilter === '=' || singleSubSubSubFilter === '<>' || singleSubSubSubFilter === '>' || singleSubSubSubFilter === '>=' || singleSubSubSubFilter === '<' || singleSubSubSubFilter === '<=') {\n if (!filters[i][i2][i3][i4 + 1])\n filters[i][i2][i3][i4 + 1] = 'NULL';\n else if (typeof filters[i][i2][i3][i4 + 1] === 'string') {\n filters[i][i2][i3][i4 + 1] = '\\'' + filters[i][i2][i3][i4 + 1] + '\\'';\n }\n }\n else if (singleSubSubSubFilter === '!') {\n filters[i][i2][i3][i4] = 'NOT';\n singleSubSubSubFilter = 'NOT';\n }\n\n sqlFilter += ' ' + singleSubSubSubFilter + ' ';\n }\n else if (singleSubSubSubFilterType.toString() === 'object' && singleSubSubSubFilterIsDate) {\n sqlFilter += ' \\'' + singleSubSubSubFilter.toISOString().split('T')[0] + '\\' ';\n }\n else if (singleSubSubSubFilterType.toString() === 'number') {\n sqlFilter += ' ' + singleSubSubSubFilter.toString() + ' ';\n }\n else if (singleSubSubSubFilterType.toString() === 'boolean') {\n if (singleSubSubSubFilter.toString() === 'true')\n sqlFilter += '1 ';\n else if (singleSubSubSubFilter.toString() === 'false' || singleSubSubSubFilter === null || singleSubSubSubFilter === undefined)\n sqlFilter += '0 ';\n }\n }\n\n sqlFilter += ')';\n }\n else if (singleSubSubFilterType.toString() === 'string') {\n if (singleSubSubFilter === 'contains') {\n filters[i][i2][i3] = 'LIKE';\n singleSubSubFilter = 'LIKE';\n\n filters[i][i2][i3 + 1] = '\\'%' + filters[i][i2][i3 + 1] + '%\\'';\n }\n else if (singleSubSubFilter === 'notcontains') {\n filters[i][i2][i3] = 'NOT LIKE';\n singleSubSubFilter = 'NOT LIKE';\n\n filters[i][i2][i3 + 1] = '\\'%' + filters[i][i2][i3 + 1] + '%\\'';\n }\n else if (singleSubSubFilter === 'startswith') {\n filters[i][i2][i3] = 'LIKE';\n singleSubSubFilter = 'LIKE';\n\n filters[i][i2][i3 + 1] = '\\'' + filters[i][i2][i3 + 1] + '%\\'';\n }\n else if (singleSubSubFilter === 'endswith') {\n filters[i][i2][i3] = 'LIKE';\n singleSubSubFilter = 'LIKE';\n\n filters[i][i2][i3 + 1] = '\\'%' + filters[i][i2][i3 + 1] + '\\'';\n }\n else if (singleSubSubFilter === '=' || singleSubSubFilter === '<>' || singleSubSubFilter === '>' || singleSubSubFilter === '>=' || singleSubSubFilter === '<' || singleSubSubFilter === '<=') {\n if (!filters[i][i2][i3 + 1])\n filters[i][i2][i3 + 1] = 'NULL';\n else if (typeof filters[i][i2][i3 + 1] === 'string') {\n filters[i][i2][i3 + 1] = '\\'' + filters[i][i2][i3 + 1] + '\\'';\n }\n }\n else if (singleSubSubFilter === '!') {\n filters[i][i2][i3] = 'NOT';\n singleSubSubFilter = 'NOT';\n }\n sqlFilter += ' ' + singleSubSubFilter + ' ';\n }\n else if (singleSubSubFilterType.toString() === 'object' && singleSubSubFilterIsDate) {\n sqlFilter += ' \\'' + singleSubSubFilter.toISOString().split('T')[0] + '\\' ';\n }\n else if (singleSubSubFilterType.toString() === 'number') {\n sqlFilter += ' ' + singleSubSubFilter.toString() + ' ';\n }\n else if (singleSubSubFilterType.toString() === 'boolean') {\n if (singleSubSubFilter.toString() === 'true')\n sqlFilter += '1 ';\n else if (singleSubSubFilter.toString() === 'false' || singleSubSubFilter === null || singleSubSubFilter === undefined)\n sqlFilter += '0 ';\n }\n }\n\n sqlFilter += ')';\n }\n else if (singleSubFilterType.toString() === 'string') {\n if (singleSubFilter === 'contains') {\n filters[i][i2] = 'LIKE';\n singleSubFilter = 'LIKE';\n\n filters[i][i2 + 1] = '\\'%' + filters[i][i2 + 1] + '%\\'';\n }\n else if (singleSubFilter === 'notcontains') {\n filters[i][i2] = 'NOT LIKE';\n singleSubFilter = 'NOT LIKE';\n\n filters[i][i2 + 1] = '\\'%' + filters[i][i2 + 1] + '%\\'';\n }\n else if (singleSubFilter === 'startswith') {\n filters[i][i2] = 'LIKE';\n singleSubFilter = 'LIKE';\n\n filters[i][i2 + 1] = '\\'' + filters[i][i2 + 1] + '%\\'';\n }\n else if (singleSubFilter === 'endswith') {\n filters[i][i2] = 'LIKE';\n singleSubFilter = 'LIKE';\n\n filters[i][i2 + 1] = '\\'%' + filters[i][i2 + 1] + '\\'';\n }\n else if (singleSubFilter === '=' || singleSubFilter === '<>' || singleSubFilter === '>' || singleSubFilter === '>=' || singleSubFilter === '<' || singleSubFilter === '<=') {\n if (!filters[i][i2 + 1])\n filters[i][i2 + 1] = 'NULL';\n else if (typeof filters[i][i2 + 1] === 'string') {\n filters[i][i2 + 1] = '\\'' + filters[i][i2 + 1] + '\\'';\n }\n }\n else if (singleSubFilter === '!') {\n filters[i][i2] = 'NOT';\n singleSubFilter = 'NOT';\n }\n sqlFilter += ' ' + singleSubFilter + ' ';\n }\n else if (singleSubFilterType.toString() === 'object' && singleSubFilterIsDate) {\n sqlFilter += ' \\'' + singleSubFilter.toISOString().split('T')[0] + '\\' ';\n }\n else if (singleSubFilterType.toString() === 'number') {\n sqlFilter += ' ' + singleSubFilter.toString() + ' ';\n }\n else if (singleSubFilterType.toString() === 'boolean') {\n if (singleSubFilter.toString() === 'true')\n sqlFilter += '1 ';\n else if (singleSubFilter.toString() === 'false' || singleSubFilter === null || singleSubFilter === undefined)\n sqlFilter += '0 ';\n }\n }\n\n sqlFilter += ')';\n }\n else if (singleFilterType.toString() === 'string') {\n if (singleFilter === 'contains') {\n filters[i] = 'LIKE';\n singleFilter = 'LIKE';\n\n filters[i + 1] = '\\'%' + filters[i + 1] + '%\\'';\n }\n else if (singleFilter === 'notcontains') {\n filters[i] = 'NOT LIKE';\n singleFilter = 'NOT LIKE';\n\n filters[i + 1] = '\\'%' + filters[i + 1] + '%\\'';\n }\n else if (singleFilter === 'startswith') {\n filters[i] = 'LIKE';\n singleFilter = 'LIKE';\n\n filters[i + 1] = '\\'' + filters[i + 1] + '%\\'';\n }\n else if (singleFilter === 'endswith') {\n filters[i] = 'LIKE';\n singleFilter = 'LIKE';\n\n filters[i + 1] = '\\'%' + filters[i + 1] + '\\'';\n }\n else if (singleFilter === '=' || singleFilter === '<>' || singleFilter === '>' || singleFilter === '>=' || singleFilter === '<' || singleFilter === '<=') {\n if (!filters[i + 1])\n filters[i + 1] = 'NULL';\n else if (typeof filters[i + 1] === 'string') {\n filters[i + 1] = '\\'' + filters[i + 1] + '\\'';\n }\n }\n else if (singleFilter === '!') {\n filters[i] = 'NOT';\n singleFilter = 'NOT';\n }\n sqlFilter += ' ' + singleFilter + ' ';\n }\n else if (singleFilterType.toString() === 'object' && singleFilterIsDate) {\n sqlFilter += ' \\'' + singleFilter.toISOString().split('T')[0] + '\\' ';\n }\n else if (singleFilterType.toString() === 'number') {\n sqlFilter += ' ' + singleFilter.toString() + ' ';\n }\n else if (singleFilterType.toString() === 'boolean') {\n if (singleFilter.toString() === 'true')\n sqlFilter += '1 ';\n else if (singleFilter.toString() === 'false' || singleFilter === null || singleFilter === undefined)\n sqlFilter += '0 ';\n }\n }\n\n sqlFilter += ')';\n }\n });\n\n async function getRecords() {\n if (sqlFilter === '(')\n sqlFilter = '';\n\n var records = await getBarcodeRecords(sqlFilter);\n return {\n data: records,\n totalCount: records.length\n };\n }\n\n return getRecords()\n .then(function (result) {\n return result;\n })\n .catch(() => { throw new Error('Data Loading Error'); });\n },\n });\n\n function refreshButton() {\n if (gridBarcodeCostsRef.current) {\n var gridBarcodeCosts = gridBarcodeCostsRef.current.instance();\n\n gridBarcodeCosts.refresh();\n }\n };\n\n function onAutoExpandAllChanged() {\n setAutoExpandAll(!autoExpandAll)\n };\n\n function onExporting(e) {\n const workbook = new Workbook();\n const worksheet = workbook.addWorksheet('Datos');\n\n exportDataGrid({\n component: e.component,\n worksheet,\n autoFilterEnabled: true,\n }).then(() => {\n workbook.xlsx.writeBuffer().then((buffer) => {\n saveAs(new Blob([buffer], { type: 'application/octet-stream' }), 'Datos.xlsx');\n });\n });\n e.cancel = true;\n };\n\n const iconoProceso = React.useCallback((data) => {\n var SCWMSID = data.data.SCWMSID;\n var CantidadReservada = data.data.CantidadReservada;\n\n if (SCWMSID || CantidadReservada) {\n return (<div class=\"inline-block w-5 h-5 bg-yellow-500 rounded-full\"></div>)\n }\n else {\n return (<div></div>)\n }\n }, []);\n\n const emptyButton = React.useCallback(async () => {\n // if (gridBarcodeCostsRef.current) {\n // var gridProductCluster = gridBarcodeCostsRef.current.instance();\n\n // gridProductCluster.filter(['Cantidad', '=', '0']);\n // }\n }, []);\n\n const fullButton = React.useCallback(async () => {\n // if (gridBarcodeCostsRef.current) {\n // var gridProductCluster = gridBarcodeCostsRef.current.instance();\n\n // gridProductCluster.clearFilter();\n\n // gridProductCluster.columnOption('Cantidad', 'notEmpty');\n\n // }\n }, []);\n\n return (\n <div>\n <div class=\"bg-gray-200 m-2\">\n <h1 class=\"font-sans inline-block text-xl font-bold text-gray-700 leading-8 align-top mb-1\"><FontAwesomeIcon icon={faFileChartColumn} size=\"xl\" /> WMS Barcodes Costos</h1>\n </div>\n <div>\n <button onClick={refreshButton} type=\"submit\" class=\"ml-2 mb-4 bg-blue-500 hover:bg-blue-700 text-white font-bold py-2 px-4 rounded\">\n <FontAwesomeIcon icon={faArrowsRotate} /> Actualizar\n </button>\n {/* <button onClick={emptyButton} type=\"submit\" class=\"ml-2 mb-4 bg-blue-500 hover:bg-blue-700 text-white font-bold py-2 px-4 rounded\">\n <FontAwesomeIcon icon={faBoxOpen} /> Sin asignar\n </button>\n <button onClick={fullButton} type=\"submit\" class=\"ml-2 mb-4 bg-blue-500 hover:bg-blue-700 text-white font-bold py-2 px-4 rounded\">\n <FontAwesomeIcon icon={faBoxOpenFull} /> Asignados\n </button> */}\n </div>\n\n <LoadPanel\n shadingColor=\"rgba(0,0,0,0.4)\"\n visible={visibleLoadPanel}\n showIndicator={true}\n message=\"Por favor espere...\"\n shading={true}\n showPane={true}\n hideOnOutsideClick={false}\n />\n\n <div class=\"m-2 bg-white p-4 shadow-xl\">\n <div className=\"options mb-2\">\n <div className=\"option\">\n <CheckBox text=\"Expandir todos los grupos\"\n value={autoExpandAll}\n onValueChanged={onAutoExpandAllChanged}>\n </CheckBox>\n </div>\n </div>\n <DataGrid\n id=\"gridBarcodeCosts\"\n columnsAutoWidth={true}\n filterBuilder={filterBuilder}\n dataSource={store}\n allowColumnReordering={true}\n allowColumnResizing={true}\n columnResizingMode=\"widget\"\n showBorders={true}\n rowAlternationEnabled={true}\n showRowLines={true}\n showColumnLines={true}\n remoteOperations={{ filtering: true }}\n ref={gridBarcodeCostsRef}\n onExporting={onExporting}\n >\n <Scrolling rowRenderingMode='virtual'></Scrolling>\n <Paging defaultPageSize={10} />\n <Pager\n visible={true}\n allowedPageSizes={allowedPageSizes}\n displayMode='compact'\n showPageSizeSelector={true}\n showInfo={true}\n showNavigationButtons={true}\n />\n <FilterRow visible={true} />\n <FilterPanel visible={true} />\n <FilterBuilderPopup position={filterBuilderPopupPosition} />\n\n <HeaderFilter visible={true} />\n\n <Editing\n mode=\"cell\"\n newRowPosition=\"last\"\n allowUpdating={false}\n allowAdding={false}\n allowDeleting={false}\n />\n\n <GroupPanel visible={true} />\n <SearchPanel visible={true} />\n <ColumnChooser\n enabled={true}\n mode='select'\n >\n <ColumnChooserSearch\n enabled={true}\n />\n\n <ColumnChooserSelection\n allowSelectAll={true}\n selectByClick={true}\n recursive={true}\n />\n </ColumnChooser>\n <Grouping autoExpandAll={autoExpandAll} />\n <StateStoring enabled={true} type=\"localStorage\" storageKey=\"gridContainerExploreBarcodeCosts\" />\n <Export enabled={true} />\n\n <Column dataField=\"Barcode\" caption=\"Barcode\" dataType=\"number\" width={100} visible={true} />\n <Column dataField=\"BarcodePadre\" caption=\"Barcode Padre\" dataType=\"number\" width={100} visible={false} />\n <Column caption=\"En Proceso\" alignment=\"center\" width={110} cellRender={iconoProceso} visible={false} />\n <Column dataField=\"Articulo\" caption=\"Artículo\" dataType=\"string\" width={100} visible={true} />\n <Column dataField=\"DescripcionArticulo\" caption=\"Descripción\" dataType=\"string\" width={300} visible={true} />\n <Column dataField=\"Almacen\" caption=\"Almacén\" dataType=\"string\" width={100} visible={true} />\n <Column dataField=\"NombreAlmacen\" caption=\"Nombre Almacén\" dataType=\"string\" width={300} visible={false} />\n <Column dataField=\"Posicion\" caption=\"Posición\" dataType=\"string\" width={120} visible={false} />\n <Column dataField=\"Sucursal\" caption=\"Sucursal\" dataType=\"number\" width={300} visible={false} />\n <Column dataField=\"NombreSucursal\" caption=\"Nombre Sucursal\" dataType=\"string\" width={300} visible={false} />\n <Column dataField=\"Plaza\" caption=\"Plaza\" dataType=\"string\" width={300} visible={false} />\n <Column dataField=\"Cantidad\" caption=\"Cantidad\" dataType=\"number\" width={150} visible={true} format=',###' />\n <Column dataField=\"CantidadReservada\" caption=\"Cantidad Reservada\" dataType=\"number\" width={180} visible={false} format=',###' />\n <Column dataField=\"CantidadDisponible\" caption=\"Cantidad Disponible\" dataType=\"number\" width={180} visible={false} format=',###' />\n <Column dataField=\"Pasillo\" caption=\"Pasillo\" dataType=\"string\" width={300} visible={false} />\n <Column dataField=\"Nivel\" caption=\"Nivel\" dataType=\"string\" width={300} visible={false} />\n <Column dataField=\"Zona\" caption=\"Zona\" dataType=\"string\" width={300} visible={false} />\n <Column dataField=\"FechaIngreso\" caption=\"Fecha de Ingreso\" dataType=\"date\" width={150} visible={true} />\n <Column dataField=\"SCWMSID\" caption=\"ID WMS\" dataType=\"number\" width={100} visible={false} />\n <Column dataField=\"MovimientoWMS\" caption=\"Movimiento WMS\" dataType=\"string\" width={300} visible={false} />\n <Column dataField=\"SCRama\" caption=\"Surtido en Pedido\" dataType=\"string\" width={300} visible={false} />\n <Column dataField=\"Costo\" caption=\"Costo\" dataType=\"number\" width={150} visible={true} >\n <Format\n type=\"currency\"\n precision={2}\n\n />\n </Column>\n <Summary>\n <GroupItem\n column=\"Cantidad\"\n summaryType=\"sum\"\n valueFormat=\",##0.##\"\n displayFormat=\"Cantidad {0}\"\n showInGroupFooter={false}>\n </GroupItem>\n <GroupItem\n column=\"CantidadReservada\"\n summaryType=\"sum\"\n valueFormat=\",##0.##\"\n displayFormat=\"Cantidad Reservada {0}\"\n showInGroupFooter={false}>\n </GroupItem>\n <GroupItem\n column=\"CantidadDisponible\"\n summaryType=\"sum\"\n valueFormat=\",##0.##\"\n displayFormat=\"Cantidad Disponible {0}\"\n showInGroupFooter={false}>\n </GroupItem>\n <TotalItem\n column=\"Cantidad\"\n summaryType=\"sum\"\n valueFormat=\",##0.##\"\n displayFormat=\"Cantidad {0}\"\n showInColumn=\"Cantidad\">\n </TotalItem>\n <TotalItem\n column=\"CantidadReservada\"\n summaryType=\"sum\"\n valueFormat=\",##0.##\"\n displayFormat=\"Cantidad Reservada {0}\"\n showInColumn=\"CantidadReservada\">\n </TotalItem>\n <TotalItem\n column=\"CantidadDisponible\"\n summaryType=\"sum\"\n valueFormat=\",##0.##\"\n displayFormat=\"Cantidad Disponible {0}\"\n showInColumn=\"CantidadDisponible\">\n </TotalItem>\n </Summary>\n </DataGrid>\n </div>\n </div>\n );\n}","import React, { useState, useEffect, useRef, useMemo } from 'react';\n\n// LoadPanel\nimport { LoadPanel } from 'devextreme-react/load-panel';\n\n// Toast\nimport { Toast } from 'devextreme-react/toast';\n\n//Form\nimport Form, { GroupItem, Label, TabbedItem, TabPanelOptions, Tab, EmptyItem } from 'devextreme-react/form';\n\nimport { Auth, API, Storage, label } from 'aws-amplify';\n\n// Ruteador\nimport { Route, Link, useHistory } from \"react-router-dom\";\n\n// Grid\nimport DataGrid, {\n Column, FilterRow, HeaderFilter, FilterPanel, FilterBuilderPopup,\n GroupPanel, Grouping, SearchPanel, Sorting, Editing, Lookup, Toolbar, Item, RequiredRule,\n Scrolling, Pager, Paging, Summary, TotalItem, StateStoring, ColumnChooser, Format, Selection,\n Export, ColumnChooserSearch, ColumnChooserSelection\n} from 'devextreme-react/data-grid';\n\n//CheckBox\nimport CheckBox from 'devextreme-react/check-box';\n\n// Iconos\nimport { FontAwesomeIcon } from \"@fortawesome/react-fontawesome\";\nimport { faGlasses } from \"@fortawesome/pro-solid-svg-icons\";\nimport { faCartFlatbedSuitcase } from \"@fortawesome/pro-duotone-svg-icons\";\nimport { faArrowRotateLeft } from \"@fortawesome/pro-solid-svg-icons\";\nimport { faList } from \"@fortawesome/pro-duotone-svg-icons\";\nimport { faFilePdf } from \"@fortawesome/pro-solid-svg-icons\";\nimport { faArrowsRotate } from \"@fortawesome/pro-solid-svg-icons\";\n\nimport 'devextreme/data/odata/store';\nimport CustomStore from 'devextreme/data/custom_store';\n\nimport '../ListStyle.css';\n\nimport dxDateBox from \"devextreme/ui/date_box\";\n\nimport dxNumberBox from \"devextreme/ui/number_box\";\n\nimport TransactionStatus from \"../TransactionStatus/TransactionStatus.js\";\n\nimport { Workbook } from 'exceljs';\nimport { saveAs } from 'file-saver';\nimport { exportDataGrid } from 'devextreme/excel_exporter'\n\ndxDateBox.defaultOptions({\n options: {\n dateSerializationFormat: \"yyyy-MM-dd\"\n }\n});\n\ndxNumberBox.defaultOptions({\n options: {\n step: 0\n }\n});\n\nfunction isNotEmpty(value) {\n return value !== undefined && value !== null && value !== '';\n}\n\nexport default function MoveItemWMS(props) {\n const history = useHistory();\n\n const [isDetail, setIsDetail] = useState(false);\n const [id, setId] = useState();\n const [moveItemWMSPayload, setMoveItemWMSPayload] = useState({\n header: {},\n detail: [],\n movEstatusLog: []\n });\n\n const [autoExpandAll, setAutoExpandAll] = useState(true);\n\n const [visibleLoadPanel, setVisibleLoadPanel] = useState(false);\n\n const [visibleToast, setVisibleToast] = useState(false);\n const [messageToast, setMessageToast] = useState('');\n const [typeToast, setTypeToast] = useState('success');\n\n const [activateUpdateForm, setActivateUpdateForm] = useState(false);\n const [activateUpdateGrid, setActivateUpdateGrid] = useState(false);\n const [activatePDFButton, setActivatePDFButton] = useState(false);\n\n //Ref para el form\n const [formDatosGeneralesRef, setFormDatosGeneralesRef] = useState(React.createRef());\n\n //Ref para el grid Items\n const [gridItemsRef, setGridItemsRef] = useState(React.createRef());\n\n const filterBuilderPopupPosition = {\n of: window,\n at: 'top',\n my: 'top',\n offset: { y: 10 },\n };\n\n const allowedPageSizes = [5, 10, 15, 20, 'all'];\n\n\n function getOrderDay(rowData) {\n return (new Date(rowData.OrderDate)).getDay();\n }\n\n const filterBuilder = {\n customOperations: [{\n name: 'weekends',\n caption: 'Weekends',\n dataTypes: ['date'],\n icon: 'check',\n hasValue: false,\n calculateFilterExpression: () => [[getOrderDay, '=', 0], 'or', [getOrderDay, '=', 6]],\n }],\n allowHierarchicalFields: true,\n };\n\n const filterValue = [['Estatus', '=', 'Concluido']];\n\n //Ref para el grid Tablero de Control\n const [gridTableroRef, setGridTableroRef] = useState(React.createRef());\n\n function onAutoExpandAllChanged() {\n setAutoExpandAll(!autoExpandAll)\n };\n\n async function getMoveItemWMSRecords(sqlFilter) {\n try {\n let apiName = 'AdminSC';\n let path = '/procesaacomodowms';\n\n let myInit = {\n headers: {\n 'Content-Type': 'application/json',\n Authorization: `${(await Auth.currentSession()).getAccessToken().getJwtToken()}`\n },\n queryStringParameters: {\n action: 'list',\n sqlFilter: sqlFilter,\n salesAccess: props.salesAccess,\n sucursal: props.sucursal,\n usuario: props.usuario,\n username: JSON.parse(JSON.stringify(await Auth.currentAuthenticatedUser())).username\n }\n }\n\n var moveItemWMSGet = await API.get(apiName, path, myInit);\n }\n catch (e) {\n if (e === 'No current user') {\n history.push('/');\n\n window.location.reload();\n }\n }\n\n return moveItemWMSGet;\n }\n\n const store = new CustomStore({\n key: 'ID',\n load(loadOptions) {\n let sqlFilter = '(';\n [\n 'filter'\n ].forEach((i) => {\n if (i in loadOptions && isNotEmpty(loadOptions[i])) {\n var filters = loadOptions[i];\n\n var filtersLength = filters.length;\n\n for (var i = 0; i <= filtersLength; i++) {\n var singleFilter = filters[i];\n var singleFilterType = typeof singleFilter;\n var singleFilterIsArray = Array.isArray(singleFilter);\n var singleFilterIsDate = singleFilter instanceof Date;\n\n if (singleFilter === 'NULL') {\n singleFilter = '0';\n }\n\n if (singleFilterType.toString() === 'object' && singleFilterIsArray) {\n sqlFilter += '(';\n\n var subFiltersLength = singleFilter.length;\n\n for (var i2 = 0; i2 <= subFiltersLength; i2++) {\n var singleSubFilter = singleFilter[i2];\n var singleSubFilterType = typeof singleSubFilter;\n var singleSubFilterIsArray = Array.isArray(singleSubFilter);\n var singleSubFilterIsDate = singleSubFilter instanceof Date\n\n if (singleSubFilter === 'NULL') {\n singleSubFilter = '0';\n }\n\n if (singleSubFilterType.toString() === 'object' && singleSubFilterIsArray) {\n sqlFilter += '(';\n\n var subSubFiltersLength = singleSubFilter.length;\n\n for (var i3 = 0; i3 <= subSubFiltersLength; i3++) {\n var singleSubSubFilter = singleSubFilter[i3];\n var singleSubSubFilterType = typeof singleSubSubFilter;\n var singleSubSubFilterIsArray = Array.isArray(singleSubSubFilter);\n var singleSubSubFilterIsDate = singleSubSubFilter instanceof Date\n\n if (singleSubSubFilter === 'NULL') {\n singleSubSubFilter = '0';\n }\n\n if (singleSubSubFilterType.toString() === 'object' && singleSubSubFilterIsArray) {\n sqlFilter += '(';\n\n var subSubSubFiltersLength = singleSubSubFilter.length;\n\n for (var i4 = 0; i4 <= subSubSubFiltersLength; i4++) {\n var singleSubSubSubFilter = singleSubSubFilter[i4];\n var singleSubSubSubFilterType = typeof singleSubSubSubFilter;\n var singleSubSubSubFilterIsArray = Array.isArray(singleSubSubSubFilter);\n var singleSubSubSubFilterIsDate = singleSubSubSubFilter instanceof Date\n\n if (singleSubSubSubFilter === 'NULL') {\n singleSubSubSubFilter = '0';\n }\n\n if (singleSubSubSubFilterType.toString() === 'object' && singleSubSubSubFilterIsArray) {\n sqlFilter += '(';\n\n var subSubSubSubFiltersLength = singleSubSubSubFilter.length;\n\n for (var i5 = 0; i5 <= subSubSubSubFiltersLength; i5++) {\n var singleSubSubSubSubFilter = singleSubSubSubFilter[i5];\n var singleSubSubSubSubFilterType = typeof singleSubSubSubSubFilter;\n var singleSubSubSubSubFilterIsArray = Array.isArray(singleSubSubSubSubFilter);\n var singleSubSubSubSubFilterIsDate = singleSubSubSubSubFilter instanceof Date\n\n if (singleSubSubSubSubFilter === 'NULL') {\n singleSubSubSubSubFilter = '0';\n }\n\n if (singleSubSubSubSubFilterType.toString() === 'string') {\n if (singleSubSubSubSubFilter === 'contains') {\n filters[i][i2][i3][i4][i5] = 'LIKE';\n singleSubSubSubSubFilter = 'LIKE';\n\n filters[i][i2][i3][i4][i5 + 1] = '\\'%' + filters[i][i2][i3][i4][i5 + 1] + '%\\'';\n }\n else if (singleSubSubSubSubFilter === 'notcontains') {\n filters[i][i2][i3][i4][i5] = 'NOT LIKE';\n singleSubSubSubSubFilter = 'NOT LIKE';\n\n filters[i][i2][i3][i4][i5 + 1] = '\\'%' + filters[i][i2][i3][i4][i5 + 1] + '%\\'';\n }\n else if (singleSubSubSubSubFilter === 'startswith') {\n filters[i][i2][i3][i4][i5] = 'LIKE';\n singleSubSubSubSubFilter = 'LIKE';\n\n filters[i][i2][i3][i4][i5 + 1] = '\\'' + filters[i][i2][i3][i4][i5 + 1] + '%\\'';\n }\n else if (singleSubSubSubSubFilter === 'endswith') {\n filters[i][i2][i3][i4][i5] = 'LIKE';\n singleSubSubSubSubFilter = 'LIKE';\n\n filters[i][i2][i3][i4][i5 + 1] = '\\'%' + filters[i][i2][i3][i4][i5 + 1] + '\\'';\n }\n else if (singleSubSubSubSubFilter === '=' || singleSubSubSubSubFilter === '<>' || singleSubSubSubSubFilter === '>' || singleSubSubSubSubFilter === '>=' || singleSubSubSubSubFilter === '<' || singleSubSubSubSubFilter === '<=') {\n if (!filters[i][i2][i3][i4][i5 + 1])\n filters[i][i2][i3][i4][i5 + 1] = 'NULL';\n else if (typeof filters[i][i2][i3][i4][i5 + 1] === 'string') {\n filters[i][i2][i3][i4][i5 + 1] = '\\'' + filters[i][i2][i3][i4][i5 + 1] + '\\'';\n }\n }\n else if (singleSubSubSubSubFilter === '!') {\n filters[i][i2][i3][i4][i5] = 'NOT';\n singleSubSubSubSubFilter = 'NOT';\n }\n\n sqlFilter += ' ' + singleSubSubSubSubFilter + ' ';\n }\n else if (singleSubSubSubSubFilterType.toString() === 'object' && singleSubSubSubSubFilterIsDate) {\n sqlFilter += ' \\'' + singleSubSubSubSubFilter.toISOString().split('T')[0] + '\\' ';\n }\n else if (singleSubSubSubSubFilterType.toString() === 'number') {\n sqlFilter += ' ' + singleSubSubSubSubFilter.toString() + ' ';\n }\n else if (singleSubSubSubSubFilterType.toString() === 'boolean') {\n if (singleSubSubSubSubFilter.toString() === 'true')\n sqlFilter += '1 ';\n else if (singleSubSubSubSubFilter.toString() === 'false' || singleSubSubSubSubFilter === null || singleSubSubSubSubFilter === undefined)\n sqlFilter += '0 ';\n }\n }\n }\n else if (singleSubSubSubFilterType.toString() === 'string') {\n if (singleSubSubSubFilter === 'contains') {\n filters[i][i2][i3][i4] = 'LIKE';\n singleSubSubSubFilter = 'LIKE';\n\n filters[i][i2][i3][i4 + 1] = '\\'%' + filters[i][i2][i3][i4 + 1] + '%\\'';\n }\n else if (singleSubSubSubFilter === 'notcontains') {\n filters[i][i2][i3][i4] = 'NOT LIKE';\n singleSubSubSubFilter = 'NOT LIKE';\n\n filters[i][i2][i3][i4 + 1] = '\\'%' + filters[i][i2][i3][i4 + 1] + '%\\'';\n }\n else if (singleSubSubSubFilter === 'startswith') {\n filters[i][i2][i3][i4] = 'LIKE';\n singleSubSubSubFilter = 'LIKE';\n\n filters[i][i2][i3][i4 + 1] = '\\'' + filters[i][i2][i3][i4 + 1] + '%\\'';\n }\n else if (singleSubSubSubFilter === 'endswith') {\n filters[i][i2][i3][i4] = 'LIKE';\n singleSubSubSubFilter = 'LIKE';\n\n filters[i][i2][i3][i4 + 1] = '\\'%' + filters[i][i2][i3][i4 + 1] + '\\'';\n }\n else if (singleSubSubSubFilter === '=' || singleSubSubSubFilter === '<>' || singleSubSubSubFilter === '>' || singleSubSubSubFilter === '>=' || singleSubSubSubFilter === '<' || singleSubSubSubFilter === '<=') {\n if (!filters[i][i2][i3][i4 + 1])\n filters[i][i2][i3][i4 + 1] = 'NULL';\n else if (typeof filters[i][i2][i3][i4 + 1] === 'string') {\n filters[i][i2][i3][i4 + 1] = '\\'' + filters[i][i2][i3][i4 + 1] + '\\'';\n }\n }\n else if (singleSubSubSubFilter === '!') {\n filters[i][i2][i3][i4] = 'NOT';\n singleSubSubSubFilter = 'NOT';\n }\n\n sqlFilter += ' ' + singleSubSubSubFilter + ' ';\n }\n else if (singleSubSubSubFilterType.toString() === 'object' && singleSubSubSubFilterIsDate) {\n sqlFilter += ' \\'' + singleSubSubSubFilter.toISOString().split('T')[0] + '\\' ';\n }\n else if (singleSubSubSubFilterType.toString() === 'number') {\n sqlFilter += ' ' + singleSubSubSubFilter.toString() + ' ';\n }\n else if (singleSubSubSubFilterType.toString() === 'boolean') {\n if (singleSubSubSubFilter.toString() === 'true')\n sqlFilter += '1 ';\n else if (singleSubSubSubFilter.toString() === 'false' || singleSubSubSubFilter === null || singleSubSubSubFilter === undefined)\n sqlFilter += '0 ';\n }\n }\n\n sqlFilter += ')';\n }\n else if (singleSubSubFilterType.toString() === 'string') {\n if (singleSubSubFilter === 'contains') {\n filters[i][i2][i3] = 'LIKE';\n singleSubSubFilter = 'LIKE';\n\n filters[i][i2][i3 + 1] = '\\'%' + filters[i][i2][i3 + 1] + '%\\'';\n }\n else if (singleSubSubFilter === 'notcontains') {\n filters[i][i2][i3] = 'NOT LIKE';\n singleSubSubFilter = 'NOT LIKE';\n\n filters[i][i2][i3 + 1] = '\\'%' + filters[i][i2][i3 + 1] + '%\\'';\n }\n else if (singleSubSubFilter === 'startswith') {\n filters[i][i2][i3] = 'LIKE';\n singleSubSubFilter = 'LIKE';\n\n filters[i][i2][i3 + 1] = '\\'' + filters[i][i2][i3 + 1] + '%\\'';\n }\n else if (singleSubSubFilter === 'endswith') {\n filters[i][i2][i3] = 'LIKE';\n singleSubSubFilter = 'LIKE';\n\n filters[i][i2][i3 + 1] = '\\'%' + filters[i][i2][i3 + 1] + '\\'';\n }\n else if (singleSubSubFilter === '=' || singleSubSubFilter === '<>' || singleSubSubFilter === '>' || singleSubSubFilter === '>=' || singleSubSubFilter === '<' || singleSubSubFilter === '<=') {\n if (!filters[i][i2][i3 + 1])\n filters[i][i2][i3 + 1] = 'NULL';\n else if (typeof filters[i][i2][i3 + 1] === 'string') {\n filters[i][i2][i3 + 1] = '\\'' + filters[i][i2][i3 + 1] + '\\'';\n }\n }\n else if (singleSubSubFilter === '!') {\n filters[i][i2][i3] = 'NOT';\n singleSubSubFilter = 'NOT';\n }\n sqlFilter += ' ' + singleSubSubFilter + ' ';\n }\n else if (singleSubSubFilterType.toString() === 'object' && singleSubSubFilterIsDate) {\n sqlFilter += ' \\'' + singleSubSubFilter.toISOString().split('T')[0] + '\\' ';\n }\n else if (singleSubSubFilterType.toString() === 'number') {\n sqlFilter += ' ' + singleSubSubFilter.toString() + ' ';\n }\n else if (singleSubSubFilterType.toString() === 'boolean') {\n if (singleSubSubFilter.toString() === 'true')\n sqlFilter += '1 ';\n else if (singleSubSubFilter.toString() === 'false' || singleSubSubFilter === null || singleSubSubFilter === undefined)\n sqlFilter += '0 ';\n }\n }\n\n sqlFilter += ')';\n }\n else if (singleSubFilterType.toString() === 'string') {\n if (singleSubFilter === 'contains') {\n filters[i][i2] = 'LIKE';\n singleSubFilter = 'LIKE';\n\n filters[i][i2 + 1] = '\\'%' + filters[i][i2 + 1] + '%\\'';\n }\n else if (singleSubFilter === 'notcontains') {\n filters[i][i2] = 'NOT LIKE';\n singleSubFilter = 'NOT LIKE';\n\n filters[i][i2 + 1] = '\\'%' + filters[i][i2 + 1] + '%\\'';\n }\n else if (singleSubFilter === 'startswith') {\n filters[i][i2] = 'LIKE';\n singleSubFilter = 'LIKE';\n\n filters[i][i2 + 1] = '\\'' + filters[i][i2 + 1] + '%\\'';\n }\n else if (singleSubFilter === 'endswith') {\n filters[i][i2] = 'LIKE';\n singleSubFilter = 'LIKE';\n\n filters[i][i2 + 1] = '\\'%' + filters[i][i2 + 1] + '\\'';\n }\n else if (singleSubFilter === '=' || singleSubFilter === '<>' || singleSubFilter === '>' || singleSubFilter === '>=' || singleSubFilter === '<' || singleSubFilter === '<=') {\n if (!filters[i][i2 + 1])\n filters[i][i2 + 1] = 'NULL';\n else if (typeof filters[i][i2 + 1] === 'string') {\n filters[i][i2 + 1] = '\\'' + filters[i][i2 + 1] + '\\'';\n }\n }\n else if (singleSubFilter === '!') {\n filters[i][i2] = 'NOT';\n singleSubFilter = 'NOT';\n }\n sqlFilter += ' ' + singleSubFilter + ' ';\n }\n else if (singleSubFilterType.toString() === 'object' && singleSubFilterIsDate) {\n sqlFilter += ' \\'' + singleSubFilter.toISOString().split('T')[0] + '\\' ';\n }\n else if (singleSubFilterType.toString() === 'number') {\n sqlFilter += ' ' + singleSubFilter.toString() + ' ';\n }\n else if (singleSubFilterType.toString() === 'boolean') {\n if (singleSubFilter.toString() === 'true')\n sqlFilter += '1 ';\n else if (singleSubFilter.toString() === 'false' || singleSubFilter === null || singleSubFilter === undefined)\n sqlFilter += '0 ';\n }\n }\n\n sqlFilter += ')';\n }\n else if (singleFilterType.toString() === 'string') {\n if (singleFilter === 'contains') {\n filters[i] = 'LIKE';\n singleFilter = 'LIKE';\n\n filters[i + 1] = '\\'%' + filters[i + 1] + '%\\'';\n }\n else if (singleFilter === 'notcontains') {\n filters[i] = 'NOT LIKE';\n singleFilter = 'NOT LIKE';\n\n filters[i + 1] = '\\'%' + filters[i + 1] + '%\\'';\n }\n else if (singleFilter === 'startswith') {\n filters[i] = 'LIKE';\n singleFilter = 'LIKE';\n\n filters[i + 1] = '\\'' + filters[i + 1] + '%\\'';\n }\n else if (singleFilter === 'endswith') {\n filters[i] = 'LIKE';\n singleFilter = 'LIKE';\n\n filters[i + 1] = '\\'%' + filters[i + 1] + '\\'';\n }\n else if (singleFilter === '=' || singleFilter === '<>' || singleFilter === '>' || singleFilter === '>=' || singleFilter === '<' || singleFilter === '<=') {\n if (!filters[i + 1])\n filters[i + 1] = 'NULL';\n else if (typeof filters[i + 1] === 'string') {\n filters[i + 1] = '\\'' + filters[i + 1] + '\\'';\n }\n }\n else if (singleFilter === '!') {\n filters[i] = 'NOT';\n singleFilter = 'NOT';\n }\n sqlFilter += ' ' + singleFilter + ' ';\n }\n else if (singleFilterType.toString() === 'object' && singleFilterIsDate) {\n sqlFilter += ' \\'' + singleFilter.toISOString().split('T')[0] + '\\' ';\n }\n else if (singleFilterType.toString() === 'number') {\n sqlFilter += ' ' + singleFilter.toString() + ' ';\n }\n else if (singleFilterType.toString() === 'boolean') {\n if (singleFilter.toString() === 'true')\n sqlFilter += '1 ';\n else if (singleFilter.toString() === 'false' || singleFilter === null || singleFilter === undefined)\n sqlFilter += '0 ';\n }\n }\n\n sqlFilter += ')';\n }\n });\n\n async function getRecords() {\n if (sqlFilter === '(')\n sqlFilter = '';\n\n var records = await getMoveItemWMSRecords(sqlFilter);\n return {\n data: records,\n totalCount: records.length\n };\n }\n\n return getRecords()\n .then(function (result) {\n return result;\n })\n .catch(() => { throw new Error('Data Loading Error'); });\n },\n });\n\n var fechaEmisionEditorOptions = useMemo(() => {\n return {\n width: '100%',\n readOnly: true\n };\n }, []);\n\n var nombreAlmacenEditorOptions = useMemo(() => {\n return {\n width: '100%',\n readOnly: true\n };\n }, []);\n\n var referenciaEditorOptions = useMemo(() => {\n return {\n width: '100%',\n readOnly: true\n };\n }, []);\n\n var movimientoEditorOptions = useMemo(() => {\n return {\n width: '100%',\n readOnly: true\n };\n }, []);\n\n\n async function getMoveItemWMSPayload(ID) {\n try {\n let apiName = 'AdminSC';\n let path = '/procesaacomodowms';\n\n let myInit = {\n headers: {\n 'Content-Type': 'application/json',\n Authorization: `${(await Auth.currentSession()).getAccessToken().getJwtToken()}`\n },\n queryStringParameters: {\n ID: ID,\n action: 'payload',\n username: JSON.parse(JSON.stringify(await Auth.currentAuthenticatedUser())).username\n }\n }\n\n var payloadGet = await API.get(apiName, path, myInit);\n\n setMoveItemWMSPayload(payloadGet);\n }\n catch (e) {\n if (e === 'No current user') {\n history.push('/');\n\n window.location.reload();\n }\n }\n\n return payloadGet;\n }\n\n function editReceiveOrderWMS(data) {\n return (\n <Link to={`/MoveItemWMS/${data.data.ID}`}>\n <button class=\"bg-blue-500 hover:bg-blue-700 text-white py-1 px-3 rounded\" onClick={() => editButton(data.data.ID)}><FontAwesomeIcon icon={faGlasses} /> Ver</button>\n </Link>\n )\n }\n\n async function editButton(ID) {\n try {\n if (!window.event.metaKey && !window.event.ctrlKey) {\n setVisibleLoadPanel(true);\n\n setIsDetail(true);\n setId(ID);\n\n var payload = await getMoveItemWMSPayload(ID);\n\n setActivateUpdateForm(false);\n setActivateUpdateGrid(false);\n setActivatePDFButton(true);\n\n setVisibleLoadPanel(false);\n }\n }\n catch (e) {\n setVisibleLoadPanel(false);\n }\n };\n\n async function cancelEditButton() {\n setIsDetail(false);\n };\n\n function refreshButton() {\n if (gridTableroRef.current) {\n var gridTablero = gridTableroRef.current.instance();\n\n gridTablero.refresh();\n }\n }\n\n function printButton() {\n var pdfArray = [];\n var baseUrl = window.location.href.split('/')[0];\n\n for (var detailIndex in moveItemWMSPayload.detail) {\n pdfArray.push(parseInt(moveItemWMSPayload.detail[detailIndex].Barcode));\n }\n\n pdfArray = pdfArray.join('%2C')\n\n window.open(baseUrl + \"/#/PdfRender?type=moveitem&id=\" + pdfArray, \"_blank\");\n };\n\n useEffect(() => {\n window.addEventListener('popstate', (e) => {\n var hash;\n\n try {\n hash = e.target.location.hash;\n }\n catch (e) {\n hash = '';\n }\n\n if (hash === '#/MoveItemWMS') {\n history.push('/MoveItemWMS');\n\n window.location.reload();\n }\n });\n\n async function initialize() {\n setVisibleLoadPanel(true);\n\n setVisibleLoadPanel(false);\n }\n\n initialize();\n\n //En caso de solicitar un ID especifico, redireccionamos a ese ID\n if (!props.match.isExact) {\n var urlID = props.location.pathname.replace('/MoveItemWMS/', '');\n\n if (urlID === 'undefined')\n urlID = undefined;\n\n if (urlID)\n editButton(urlID);\n }\n\n // eslint-disable-next-line\n }, []);\n\n function onHidingToast() {\n setVisibleToast(false);\n }\n\n function onExporting(e) {\n const workbook = new Workbook();\n const worksheet = workbook.addWorksheet('Datos');\n\n exportDataGrid({\n component: e.component,\n worksheet,\n autoFilterEnabled: true,\n }).then(() => {\n workbook.xlsx.writeBuffer().then((buffer) => {\n saveAs(new Blob([buffer], { type: 'application/octet-stream' }), 'Datos.xlsx');\n });\n });\n e.cancel = true;\n };\n\n function estatusRelatedRecords(data) {\n return (\n <TransactionStatus {...props} Estatus={data.data.Estatus} />\n )\n };\n\n return (\n <div>\n {isDetail === false ? (\n <div class=\"bg-gray-200 m-2\">\n <h1 class=\"font-sans inline-block text-xl font-bold text-gray-700 leading-8 align-top mb-1\"><FontAwesomeIcon icon={faList} size=\"lg\" /> Acomodos</h1>\n </div>\n ) :\n (\n <div class=\"bg-gray-200 m-2\">\n <h1 class=\"font-sans inline-block text-xl font-bold text-gray-700 leading-8 align-top mb-1\"><FontAwesomeIcon icon={faCartFlatbedSuitcase} size=\"xl\" /> {(moveItemWMSPayload.header ? moveItemWMSPayload.header.Movimiento : 'Acomodo')}</h1>\n <TransactionStatus {...props} Estatus={moveItemWMSPayload.header.Estatus} />\n </div>\n )}\n\n <LoadPanel\n shadingColor=\"rgba(0,0,0,0.4)\"\n visible={visibleLoadPanel}\n showIndicator={true}\n message=\"Por favor espere...\"\n shading={true}\n showPane={true}\n hideOnOutsideClick={false}\n />\n\n <Toast\n visible={visibleToast}\n message={messageToast}\n type={typeToast}\n onHiding={onHidingToast}\n displayTime={5000}\n width={'auto'}\n position={{\n my: 'top center',\n at: 'top center',\n of: window,\n offset: '0 130'\n }}\n />\n\n <div class=\"bg-gray-200 m-2\">\n {isDetail === false ? (\n <div class=\"bg-white p-3 shadow-xl\">\n\n <div>\n <button onClick={refreshButton} type=\"submit\" class=\"mb-4 bg-blue-500 hover:bg-blue-700 text-white font-bold py-2 px-4 rounded\">\n <FontAwesomeIcon icon={faArrowsRotate} /> Actualizar\n </button>\n </div>\n\n <div className=\"options mb-2\">\n <div className=\"option\">\n <CheckBox text=\"Expandir todos los grupos\"\n value={autoExpandAll}\n onValueChanged={onAutoExpandAllChanged}></CheckBox>\n </div>\n </div>\n <DataGrid\n height={800}\n id=\"gridContainer\"\n columnsAutoWidth={true}\n filterBuilder={filterBuilder}\n dataSource={store}\n defaultFilterValue={filterValue}\n allowColumnReordering={true}\n allowColumnResizing={true}\n columnResizingMode={\"widget\"}\n showBorders={true}\n rowAlternationEnabled={true}\n showRowLines={true}\n showColumnLines={true}\n remoteOperations={{ filtering: true }}\n ref={gridTableroRef}\n onExporting={onExporting}\n >\n <Scrolling rowRenderingMode='virtual'></Scrolling>\n <Paging defaultPageSize={10} />\n <Pager\n visible={true}\n allowedPageSizes={allowedPageSizes}\n displayMode='compact'\n showPageSizeSelector={true}\n showInfo={true}\n showNavigationButtons={true}\n />\n <FilterRow visible={true} />\n <FilterPanel visible={true} />\n <FilterBuilderPopup position={filterBuilderPopupPosition} />\n\n <HeaderFilter visible={true} />\n\n <GroupPanel visible={true} />\n <SearchPanel visible={true} />\n <ColumnChooser\n enabled={true}\n mode='select'\n >\n <ColumnChooserSearch\n enabled={true}\n />\n\n <ColumnChooserSelection\n allowSelectAll={true}\n selectByClick={true}\n recursive={true}\n />\n </ColumnChooser>\n <Grouping autoExpandAll={autoExpandAll} />\n <StateStoring enabled={true} type=\"localStorage\" storageKey=\"gridContainerMoveItemWMS\" />\n <Export enabled={true} />\n\n <Column caption=\"\" alignment=\"center\" width={100} cellRender={editReceiveOrderWMS} />\n <Column dataField=\"MovID\" dataType=\"string\" width={110} caption=\"Folio\" />\n <Column dataField=\"FechaEmision\" caption=\"Fecha Emisión\" dataType=\"date\" width={130} />\n <Column dataField=\"Estatus\" dataType=\"string\" width={120} />\n <Column dataField=\"Almacen\" caption=\"Almacén\" dataType=\"number\" width={150} />\n\n <Column caption=\"Plaza\" dataField=\"Plaza\" dataType=\"string\" width={150} visible={false} />\n\n <Column dataField=\"ID\" dataType=\"number\" width={150} visible={false} />\n <Column dataField=\"Mov\" dataType=\"string\" width={190} caption=\"Tipo Movimiento\" visible={false} />\n <Column dataField=\"Movimiento\" dataType=\"string\" width={190} visible={false} />\n\n <Column dataField=\"Sucursal\" dataType=\"number\" width={150} visible={false} />\n <Column dataField=\"NombreSucursal\" dataType=\"string\" width={190} visible={false} />\n\n <Column dataField=\"NombreAlmacen\" caption=\"Nombre Almacén\" dataType=\"string\" width={190} visible={false} />\n\n <Column dataField=\"Usuario\" dataType=\"string\" width={190} visible={false} />\n <Column dataField=\"NombreUsuario\" dataType=\"string\" width={190} visible={false} />\n </DataGrid>\n </div>\n ) : (<div />)}\n <Route exact path=\"/MoveItemWMS/:ID\" render={({ match }) => {\n return (\n <div class=\"bg-gray-200\">\n {isDetail.toString() === 'true' ?\n (\n <div>\n <Link to=\"/MoveItemWMS\">\n <button onClick={cancelEditButton} type=\"submit\" class=\"mb-4 bg-red-500 hover:bg-red-700 text-white font-bold py-2 px-4 rounded\">\n <FontAwesomeIcon icon={faArrowRotateLeft} /> Regresar\n </button>\n </Link>\n\n\n {activatePDFButton.toString() === 'true' && id ?\n (\n <button onClick={printButton} type=\"submit\" class=\"ml-4 mb-4 bg-gray-500 hover:bg-gray-700 text-white font-bold py-2 px-4 rounded\">\n <FontAwesomeIcon icon={faFilePdf} /> PDF\n </button>\n ) :\n (\n <div class=\"inline-block\"></div>\n )}\n\n <div class=\"bg-white p-4 shadow-xl\">\n <Form\n id=\"formTransaccion\"\n labelMode={'outside'}\n formData={moveItemWMSPayload.header}\n readOnly={!activateUpdateForm}\n showColonAfterLabel={false}\n labelLocation={'top'}\n ref={formDatosGeneralesRef}\n >\n <TabbedItem>\n <TabPanelOptions deferRendering={false} showNavButtons={true} />\n <Tab title=\"Datos Generales\" colCount={6}>\n <GroupItem caption=\"General\" colSpan={6} colCount={2}>\n <Item cssClass=\"boldText\" dataField=\"Movimiento\" editorOptions={movimientoEditorOptions} >\n <RequiredRule message=\"Movimiento es requerido\" />\n </Item>\n <Item dataField=\"FechaEmision\" editorType=\"dxDateBox\" editorOptions={fechaEmisionEditorOptions}>\n <Label text={\"Fecha Emisión\"} />\n <RequiredRule message=\"Fecha Emisión es requerida\" />\n </Item>\n <Item dataField=\"NombreAlmacen\" editorOptions={nombreAlmacenEditorOptions}>\n <Label text={\"Almacén\"} />\n <RequiredRule message=\"Almacén es requerido\" />\n </Item>\n </GroupItem>\n <GroupItem caption=\"Artículos\" colSpan={6} >\n <DataGrid\n id=\"gridItems\"\n ref={gridItemsRef}\n columnsAutoWidth={true}\n dataSource={moveItemWMSPayload.detail}\n showBorders={true}\n showColumnLines={true}\n showRowLines={true}\n rowAlternationEnabled={true}\n allowColumnResizing={true}\n columnResizingMode=\"widget\"\n allowColumnReordering={false}\n repaintChangesOnly={false}\n >\n <Editing\n mode=\"cell\"\n allowUpdating={activateUpdateGrid}\n allowAdding={false}\n allowDeleting={false}\n />\n <Sorting mode=\"none\" />\n\n <Column dataField=\"RenglonID\" width={190} visible={false} allowEditing={false} />\n\n <Column dataField=\"ArtDescripcion\" caption=\"Artículo\" width={340} allowEditing={false} dataType=\"string\" />\n <Column dataField=\"Barcode\" caption=\"Barcode\" width={120} allowEditing={false} dataType=\"string\" />\n <Column dataField=\"BarcodeNuevo\" caption=\"Barcode Nuevo\" width={120} allowEditing={false} dataType=\"string\" />\n <Column dataField=\"CantidadOriginal\" caption=\"Cantidad Original\" width={140} allowEditing={false} dataType=\"number\" format=',###' />\n <Column dataField=\"Cantidad\" caption=\"Cantidad\" width={80} allowEditing={false} dataType=\"number\" format=',###' />\n <Column dataField=\"Posicion\" caption=\"Posición Origen\" width={130} allowEditing={false} dataType=\"string\" />\n <Column dataField=\"PosicionDestino\" caption=\"Posición Destino\" width={130} allowEditing={false} dataType=\"string\" />\n </DataGrid>\n </GroupItem>\n </Tab>\n <Tab title=\"Observaciones\" >\n <Item dataField=\"Observaciones\" editorType=\"dxTextArea\" >\n <Label text=\"Observaciones\" visible={false} />\n </Item>\n </Tab>\n <Tab title=\"Mensajes WMS\">\n <DataGrid\n id=\"gridMensajesWMS\"\n columnsAutoWidth={true}\n dataSource={moveItemWMSPayload.wmsmessage}\n allowColumnReordering={true}\n allowColumnResizing={true}\n columnResizingMode={\"widget\"}\n showBorders={true}\n rowAlternationEnabled={true}\n showRowLines={true}\n showColumnLines={true}\n >\n <Scrolling rowRenderingMode='virtual'></Scrolling>\n <Paging defaultPageSize={10} />\n <Pager\n visible={true}\n allowedPageSizes={allowedPageSizes}\n displayMode='compact'\n showPageSizeSelector={true}\n showInfo={true}\n showNavigationButtons={true}\n />\n\n <FilterRow visible={true} />\n <FilterPanel visible={true} />\n <FilterBuilderPopup position={filterBuilderPopupPosition} />\n \n <HeaderFilter visible={true} />\n\n <GroupPanel visible={true} />\n <SearchPanel visible={true} />\n <ColumnChooser\n enabled={true}\n mode='select'\n >\n <ColumnChooserSearch\n enabled={true}\n />\n\n <ColumnChooserSelection\n allowSelectAll={true}\n selectByClick={true}\n recursive={true}\n />\n </ColumnChooser>\n <Grouping autoExpandAll={autoExpandAll} />\n\n <Column dataField=\"Mensaje\" dataType=\"string\" width={120} caption=\"Mensaje\" />\n <Column dataField=\"Barcode\" dataType=\"string\" width={140} caption=\"Barcode\" />\n <Column dataField=\"BarcodeNuevo\" dataType=\"string\" width={140} caption=\"Nuevo Barcode\" />\n <Column dataField=\"Articulo\" dataType=\"string\" width={120} caption=\"Artículo\" />\n <Column dataField=\"CantidadOriginal\" dataType=\"number\" width={150} caption=\"Cantidad Original\" format=',###' />\n <Column dataField=\"Cantidad\" dataType=\"number\" width={120} caption=\"Cantidad\" format=',###' />\n <Column dataField=\"username\" dataType=\"string\" width={140} caption=\"Usuario WMS\" />\n <Column dataField=\"Fecha\" dataType=\"date\" width={100} caption=\"Fecha\" />\n <Column dataField=\"Almacen\" dataType=\"string\" width={120} caption=\"Almacén\" />\n <Column dataField=\"Posicion\" dataType=\"string\" width={120} caption=\"Posición\" />\n <Column dataField=\"PosicionDestino\" dataType=\"string\" width={140} caption=\"Posición Destino\" />\n </DataGrid>\n </Tab>\n <Tab title=\"Log Estatus\">\n <DataGrid\n id=\"gridLogEstatus\"\n columnsAutoWidth={true}\n dataSource={moveItemWMSPayload.movEstatusLog}\n allowColumnReordering={true}\n allowColumnResizing={true}\n columnResizingMode={\"widget\"}\n showBorders={true}\n rowAlternationEnabled={true}\n showRowLines={true}\n showColumnLines={true}\n >\n <HeaderFilter visible={false} />\n <Column dataField=\"Usuario\" dataType=\"string\" width={350} caption=\"Usuario\" />\n <Column caption=\"Estatus\" alignment=\"center\" width={150} cellRender={estatusRelatedRecords} />\n <Column dataField=\"Fecha\" dataType=\"datetime\" width={300} caption=\"Fecha\" />\n </DataGrid>\n </Tab>\n </TabbedItem>\n </Form>\n </div>\n </div>\n ) :\n (\n <div></div>\n )\n }\n </div>\n )\n }}\n />\n </div>\n </div>\n );\n}\n","import React, { useState, useEffect, useRef, useMemo } from 'react';\n\n// LoadPanel\nimport { LoadPanel } from 'devextreme-react/load-panel';\n\n// Toast\nimport { Toast } from 'devextreme-react/toast';\n\n//Form\nimport Form, { GroupItem, Label, TabbedItem, TabPanelOptions, Tab, EmptyItem } from 'devextreme-react/form';\n\nimport { Auth, API, Storage, label } from 'aws-amplify';\n\n// Ruteador\nimport { Route, Link, useHistory } from \"react-router-dom\";\n\n// Grid\nimport DataGrid, {\n Column, FilterRow, HeaderFilter, FilterPanel, FilterBuilderPopup,\n GroupPanel, Grouping, SearchPanel, Sorting, Editing, Lookup, Toolbar, Item, RequiredRule,\n Scrolling, Pager, Paging, Summary, TotalItem, StateStoring, ColumnChooser, Format, Selection,\n Export, ColumnChooserSearch, ColumnChooserSelection\n} from 'devextreme-react/data-grid';\n\n//CheckBox\nimport CheckBox from 'devextreme-react/check-box';\n\n// Iconos\nimport { FontAwesomeIcon } from \"@fortawesome/react-fontawesome\";\nimport { faGlasses } from \"@fortawesome/pro-solid-svg-icons\";\nimport { faInboxIn } from \"@fortawesome/pro-duotone-svg-icons\";\nimport { faPencilAlt } from \"@fortawesome/pro-solid-svg-icons\";\nimport { faArrowRotateLeft } from \"@fortawesome/pro-solid-svg-icons\";\nimport { faList } from \"@fortawesome/pro-duotone-svg-icons\";\nimport { faFilePdf } from \"@fortawesome/pro-solid-svg-icons\";\nimport { faArrowsRotate } from \"@fortawesome/pro-solid-svg-icons\";\nimport { faSave } from \"@fortawesome/pro-solid-svg-icons\";\nimport { faScannerTouchscreen } from \"@fortawesome/pro-solid-svg-icons\";\nimport { faBan } from \"@fortawesome/pro-solid-svg-icons\";\nimport { faCheckToSlot } from \"@fortawesome/pro-solid-svg-icons\";\n\n\nimport 'devextreme/data/odata/store';\nimport CustomStore from 'devextreme/data/custom_store';\n\nimport '../ListStyle.css';\n\n//FileUploader\nimport FileUploader from 'devextreme-react/file-uploader';\n\n//FileManager\nimport FileManager, { Permissions } from 'devextreme-react/file-manager';\n\nimport dxDateBox from \"devextreme/ui/date_box\";\n\nimport dxNumberBox from \"devextreme/ui/number_box\";\n\nimport TransactionStatus from \"../TransactionStatus/TransactionStatus.js\";\n\nimport { Workbook } from 'exceljs';\nimport { saveAs } from 'file-saver';\nimport { exportDataGrid } from 'devextreme/excel_exporter'\n\ndxDateBox.defaultOptions({\n options: {\n dateSerializationFormat: \"yyyy-MM-dd\"\n }\n});\n\ndxNumberBox.defaultOptions({\n options: {\n step: 0\n }\n});\n\nfunction isNotEmpty(value) {\n return value !== undefined && value !== null && value !== '';\n}\n\nexport default function ReceiveOrderWMS(props) {\n const history = useHistory();\n\n const [isDetail, setIsDetail] = useState(false);\n const [id, setId] = useState();\n const [permissionLevel, setPermissionLevel] = useState(props.nivel);\n const [receiveOrderWMSPayload, setReceiveOrderWMSPayload] = useState({\n header: {},\n detail: [],\n movEstatusLog: []\n });\n\n const [autoExpandAll, setAutoExpandAll] = useState(true);\n\n const [visibleLoadPanel, setVisibleLoadPanel] = useState(false);\n\n const [visibleToast, setVisibleToast] = useState(false);\n const [messageToast, setMessageToast] = useState('');\n const [typeToast, setTypeToast] = useState('success');\n\n const [activateUpdateForm, setActivateUpdateForm] = useState(false);\n const [activateUpdateGrid, setActivateUpdateGrid] = useState(false);\n const [activateSaveButton, setActivateSaveButton] = useState(false);\n const [activateConfirmButton, setActivateConfirmButton] = useState(false);\n const [activatePDFButton, setActivatePDFButton] = useState(false);\n const [activateLabelButton, setActivateLabelButton] = useState(false);\n \n const [activateDeleteButton, setActivateDeleteButton] = useState(false);\n const [activateAttachments, setActivateAttachments] = useState(false);\n const [activateCancelButton, setActivateCancelButton] = useState(false);\n const [activateEnableReceive, setActivateEnableReceive] = useState(false);\n\n //Ref para el form\n const [formDatosGeneralesRef, setFormDatosGeneralesRef] = useState(React.createRef());\n\n //Ref para el grid Items\n const [gridItemsRef, setGridItemsRef] = useState(React.createRef());\n\n const [attachments, setAttachments] = useState([]);\n\n const filterBuilderPopupPosition = {\n of: window,\n at: 'top',\n my: 'top',\n offset: { y: 10 },\n };\n\n const allowedPageSizes = [5, 10, 15, 20, 'all'];\n\n const exportFormats = ['xlsx'];\n\n function getOrderDay(rowData) {\n return (new Date(rowData.OrderDate)).getDay();\n }\n\n const filterBuilder = {\n customOperations: [{\n name: 'weekends',\n caption: 'Weekends',\n dataTypes: ['date'],\n icon: 'check',\n hasValue: false,\n calculateFilterExpression: () => [[getOrderDay, '=', 0], 'or', [getOrderDay, '=', 6]],\n }],\n allowHierarchicalFields: true,\n };\n\n const filterValue = [['Estatus', '=', 'Pendiente']];\n\n //Ref para el grid Tablero de Control\n const [gridTableroRef, setGridTableroRef] = useState(React.createRef());\n\n function onAutoExpandAllChanged() {\n setAutoExpandAll(!autoExpandAll)\n };\n\n async function getReceiveOrderWMSRecords(sqlFilter) {\n try {\n let apiName = 'AdminSC';\n let path = '/procesaordenrecibo';\n\n let myInit = {\n headers: {\n 'Content-Type': 'application/json',\n Authorization: `${(await Auth.currentSession()).getAccessToken().getJwtToken()}`\n },\n queryStringParameters: {\n action: 'list',\n sqlFilter: sqlFilter,\n salesAccess: props.salesAccess,\n sucursal: props.sucursal,\n usuario: props.usuario,\n username: JSON.parse(JSON.stringify(await Auth.currentAuthenticatedUser())).username\n }\n }\n\n var receiveOrderWMSGet = await API.get(apiName, path, myInit);\n }\n catch (e) {\n if (e === 'No current user') {\n history.push('/');\n\n window.location.reload();\n }\n }\n\n return receiveOrderWMSGet;\n }\n\n const store = new CustomStore({\n key: 'ID',\n load(loadOptions) {\n let sqlFilter = '(';\n [\n 'filter'\n ].forEach((i) => {\n if (i in loadOptions && isNotEmpty(loadOptions[i])) {\n var filters = loadOptions[i];\n\n var filtersLength = filters.length;\n\n for (var i = 0; i <= filtersLength; i++) {\n var singleFilter = filters[i];\n var singleFilterType = typeof singleFilter;\n var singleFilterIsArray = Array.isArray(singleFilter);\n var singleFilterIsDate = singleFilter instanceof Date;\n\n if (singleFilter === 'NULL') {\n singleFilter = '0';\n }\n\n if (singleFilterType.toString() === 'object' && singleFilterIsArray) {\n sqlFilter += '(';\n\n var subFiltersLength = singleFilter.length;\n\n for (var i2 = 0; i2 <= subFiltersLength; i2++) {\n var singleSubFilter = singleFilter[i2];\n var singleSubFilterType = typeof singleSubFilter;\n var singleSubFilterIsArray = Array.isArray(singleSubFilter);\n var singleSubFilterIsDate = singleSubFilter instanceof Date\n\n if (singleSubFilter === 'NULL') {\n singleSubFilter = '0';\n }\n\n if (singleSubFilterType.toString() === 'object' && singleSubFilterIsArray) {\n sqlFilter += '(';\n\n var subSubFiltersLength = singleSubFilter.length;\n\n for (var i3 = 0; i3 <= subSubFiltersLength; i3++) {\n var singleSubSubFilter = singleSubFilter[i3];\n var singleSubSubFilterType = typeof singleSubSubFilter;\n var singleSubSubFilterIsArray = Array.isArray(singleSubSubFilter);\n var singleSubSubFilterIsDate = singleSubSubFilter instanceof Date\n\n if (singleSubSubFilter === 'NULL') {\n singleSubSubFilter = '0';\n }\n\n if (singleSubSubFilterType.toString() === 'object' && singleSubSubFilterIsArray) {\n sqlFilter += '(';\n\n var subSubSubFiltersLength = singleSubSubFilter.length;\n\n for (var i4 = 0; i4 <= subSubSubFiltersLength; i4++) {\n var singleSubSubSubFilter = singleSubSubFilter[i4];\n var singleSubSubSubFilterType = typeof singleSubSubSubFilter;\n var singleSubSubSubFilterIsArray = Array.isArray(singleSubSubSubFilter);\n var singleSubSubSubFilterIsDate = singleSubSubSubFilter instanceof Date\n\n if (singleSubSubSubFilter === 'NULL') {\n singleSubSubSubFilter = '0';\n }\n\n if (singleSubSubSubFilterType.toString() === 'object' && singleSubSubSubFilterIsArray) {\n sqlFilter += '(';\n\n var subSubSubSubFiltersLength = singleSubSubSubFilter.length;\n\n for (var i5 = 0; i5 <= subSubSubSubFiltersLength; i5++) {\n var singleSubSubSubSubFilter = singleSubSubSubFilter[i5];\n var singleSubSubSubSubFilterType = typeof singleSubSubSubSubFilter;\n var singleSubSubSubSubFilterIsArray = Array.isArray(singleSubSubSubSubFilter);\n var singleSubSubSubSubFilterIsDate = singleSubSubSubSubFilter instanceof Date\n\n if (singleSubSubSubSubFilter === 'NULL') {\n singleSubSubSubSubFilter = '0';\n }\n\n if (singleSubSubSubSubFilterType.toString() === 'string') {\n if (singleSubSubSubSubFilter === 'contains') {\n filters[i][i2][i3][i4][i5] = 'LIKE';\n singleSubSubSubSubFilter = 'LIKE';\n\n filters[i][i2][i3][i4][i5 + 1] = '\\'%' + filters[i][i2][i3][i4][i5 + 1] + '%\\'';\n }\n else if (singleSubSubSubSubFilter === 'notcontains') {\n filters[i][i2][i3][i4][i5] = 'NOT LIKE';\n singleSubSubSubSubFilter = 'NOT LIKE';\n\n filters[i][i2][i3][i4][i5 + 1] = '\\'%' + filters[i][i2][i3][i4][i5 + 1] + '%\\'';\n }\n else if (singleSubSubSubSubFilter === 'startswith') {\n filters[i][i2][i3][i4][i5] = 'LIKE';\n singleSubSubSubSubFilter = 'LIKE';\n\n filters[i][i2][i3][i4][i5 + 1] = '\\'' + filters[i][i2][i3][i4][i5 + 1] + '%\\'';\n }\n else if (singleSubSubSubSubFilter === 'endswith') {\n filters[i][i2][i3][i4][i5] = 'LIKE';\n singleSubSubSubSubFilter = 'LIKE';\n\n filters[i][i2][i3][i4][i5 + 1] = '\\'%' + filters[i][i2][i3][i4][i5 + 1] + '\\'';\n }\n else if (singleSubSubSubSubFilter === '=' || singleSubSubSubSubFilter === '<>' || singleSubSubSubSubFilter === '>' || singleSubSubSubSubFilter === '>=' || singleSubSubSubSubFilter === '<' || singleSubSubSubSubFilter === '<=') {\n if (!filters[i][i2][i3][i4][i5 + 1])\n filters[i][i2][i3][i4][i5 + 1] = 'NULL';\n else if (typeof filters[i][i2][i3][i4][i5 + 1] === 'string') {\n filters[i][i2][i3][i4][i5 + 1] = '\\'' + filters[i][i2][i3][i4][i5 + 1] + '\\'';\n }\n }\n else if (singleSubSubSubSubFilter === '!') {\n filters[i][i2][i3][i4][i5] = 'NOT';\n singleSubSubSubSubFilter = 'NOT';\n }\n\n sqlFilter += ' ' + singleSubSubSubSubFilter + ' ';\n }\n else if (singleSubSubSubSubFilterType.toString() === 'object' && singleSubSubSubSubFilterIsDate) {\n sqlFilter += ' \\'' + singleSubSubSubSubFilter.toISOString().split('T')[0] + '\\' ';\n }\n else if (singleSubSubSubSubFilterType.toString() === 'number') {\n sqlFilter += ' ' + singleSubSubSubSubFilter.toString() + ' ';\n }\n else if (singleSubSubSubSubFilterType.toString() === 'boolean') {\n if (singleSubSubSubSubFilter.toString() === 'true')\n sqlFilter += '1 ';\n else if (singleSubSubSubSubFilter.toString() === 'false' || singleSubSubSubSubFilter === null || singleSubSubSubSubFilter === undefined)\n sqlFilter += '0 ';\n }\n }\n }\n else if (singleSubSubSubFilterType.toString() === 'string') {\n if (singleSubSubSubFilter === 'contains') {\n filters[i][i2][i3][i4] = 'LIKE';\n singleSubSubSubFilter = 'LIKE';\n\n filters[i][i2][i3][i4 + 1] = '\\'%' + filters[i][i2][i3][i4 + 1] + '%\\'';\n }\n else if (singleSubSubSubFilter === 'notcontains') {\n filters[i][i2][i3][i4] = 'NOT LIKE';\n singleSubSubSubFilter = 'NOT LIKE';\n\n filters[i][i2][i3][i4 + 1] = '\\'%' + filters[i][i2][i3][i4 + 1] + '%\\'';\n }\n else if (singleSubSubSubFilter === 'startswith') {\n filters[i][i2][i3][i4] = 'LIKE';\n singleSubSubSubFilter = 'LIKE';\n\n filters[i][i2][i3][i4 + 1] = '\\'' + filters[i][i2][i3][i4 + 1] + '%\\'';\n }\n else if (singleSubSubSubFilter === 'endswith') {\n filters[i][i2][i3][i4] = 'LIKE';\n singleSubSubSubFilter = 'LIKE';\n\n filters[i][i2][i3][i4 + 1] = '\\'%' + filters[i][i2][i3][i4 + 1] + '\\'';\n }\n else if (singleSubSubSubFilter === '=' || singleSubSubSubFilter === '<>' || singleSubSubSubFilter === '>' || singleSubSubSubFilter === '>=' || singleSubSubSubFilter === '<' || singleSubSubSubFilter === '<=') {\n if (!filters[i][i2][i3][i4 + 1])\n filters[i][i2][i3][i4 + 1] = 'NULL';\n else if (typeof filters[i][i2][i3][i4 + 1] === 'string') {\n filters[i][i2][i3][i4 + 1] = '\\'' + filters[i][i2][i3][i4 + 1] + '\\'';\n }\n }\n else if (singleSubSubSubFilter === '!') {\n filters[i][i2][i3][i4] = 'NOT';\n singleSubSubSubFilter = 'NOT';\n }\n\n sqlFilter += ' ' + singleSubSubSubFilter + ' ';\n }\n else if (singleSubSubSubFilterType.toString() === 'object' && singleSubSubSubFilterIsDate) {\n sqlFilter += ' \\'' + singleSubSubSubFilter.toISOString().split('T')[0] + '\\' ';\n }\n else if (singleSubSubSubFilterType.toString() === 'number') {\n sqlFilter += ' ' + singleSubSubSubFilter.toString() + ' ';\n }\n else if (singleSubSubSubFilterType.toString() === 'boolean') {\n if (singleSubSubSubFilter.toString() === 'true')\n sqlFilter += '1 ';\n else if (singleSubSubSubFilter.toString() === 'false' || singleSubSubSubFilter === null || singleSubSubSubFilter === undefined)\n sqlFilter += '0 ';\n }\n }\n\n sqlFilter += ')';\n }\n else if (singleSubSubFilterType.toString() === 'string') {\n if (singleSubSubFilter === 'contains') {\n filters[i][i2][i3] = 'LIKE';\n singleSubSubFilter = 'LIKE';\n\n filters[i][i2][i3 + 1] = '\\'%' + filters[i][i2][i3 + 1] + '%\\'';\n }\n else if (singleSubSubFilter === 'notcontains') {\n filters[i][i2][i3] = 'NOT LIKE';\n singleSubSubFilter = 'NOT LIKE';\n\n filters[i][i2][i3 + 1] = '\\'%' + filters[i][i2][i3 + 1] + '%\\'';\n }\n else if (singleSubSubFilter === 'startswith') {\n filters[i][i2][i3] = 'LIKE';\n singleSubSubFilter = 'LIKE';\n\n filters[i][i2][i3 + 1] = '\\'' + filters[i][i2][i3 + 1] + '%\\'';\n }\n else if (singleSubSubFilter === 'endswith') {\n filters[i][i2][i3] = 'LIKE';\n singleSubSubFilter = 'LIKE';\n\n filters[i][i2][i3 + 1] = '\\'%' + filters[i][i2][i3 + 1] + '\\'';\n }\n else if (singleSubSubFilter === '=' || singleSubSubFilter === '<>' || singleSubSubFilter === '>' || singleSubSubFilter === '>=' || singleSubSubFilter === '<' || singleSubSubFilter === '<=') {\n if (!filters[i][i2][i3 + 1])\n filters[i][i2][i3 + 1] = 'NULL';\n else if (typeof filters[i][i2][i3 + 1] === 'string') {\n filters[i][i2][i3 + 1] = '\\'' + filters[i][i2][i3 + 1] + '\\'';\n }\n }\n else if (singleSubSubFilter === '!') {\n filters[i][i2][i3] = 'NOT';\n singleSubSubFilter = 'NOT';\n }\n sqlFilter += ' ' + singleSubSubFilter + ' ';\n }\n else if (singleSubSubFilterType.toString() === 'object' && singleSubSubFilterIsDate) {\n sqlFilter += ' \\'' + singleSubSubFilter.toISOString().split('T')[0] + '\\' ';\n }\n else if (singleSubSubFilterType.toString() === 'number') {\n sqlFilter += ' ' + singleSubSubFilter.toString() + ' ';\n }\n else if (singleSubSubFilterType.toString() === 'boolean') {\n if (singleSubSubFilter.toString() === 'true')\n sqlFilter += '1 ';\n else if (singleSubSubFilter.toString() === 'false' || singleSubSubFilter === null || singleSubSubFilter === undefined)\n sqlFilter += '0 ';\n }\n }\n\n sqlFilter += ')';\n }\n else if (singleSubFilterType.toString() === 'string') {\n if (singleSubFilter === 'contains') {\n filters[i][i2] = 'LIKE';\n singleSubFilter = 'LIKE';\n\n filters[i][i2 + 1] = '\\'%' + filters[i][i2 + 1] + '%\\'';\n }\n else if (singleSubFilter === 'notcontains') {\n filters[i][i2] = 'NOT LIKE';\n singleSubFilter = 'NOT LIKE';\n\n filters[i][i2 + 1] = '\\'%' + filters[i][i2 + 1] + '%\\'';\n }\n else if (singleSubFilter === 'startswith') {\n filters[i][i2] = 'LIKE';\n singleSubFilter = 'LIKE';\n\n filters[i][i2 + 1] = '\\'' + filters[i][i2 + 1] + '%\\'';\n }\n else if (singleSubFilter === 'endswith') {\n filters[i][i2] = 'LIKE';\n singleSubFilter = 'LIKE';\n\n filters[i][i2 + 1] = '\\'%' + filters[i][i2 + 1] + '\\'';\n }\n else if (singleSubFilter === '=' || singleSubFilter === '<>' || singleSubFilter === '>' || singleSubFilter === '>=' || singleSubFilter === '<' || singleSubFilter === '<=') {\n if (!filters[i][i2 + 1])\n filters[i][i2 + 1] = 'NULL';\n else if (typeof filters[i][i2 + 1] === 'string') {\n filters[i][i2 + 1] = '\\'' + filters[i][i2 + 1] + '\\'';\n }\n }\n else if (singleSubFilter === '!') {\n filters[i][i2] = 'NOT';\n singleSubFilter = 'NOT';\n }\n sqlFilter += ' ' + singleSubFilter + ' ';\n }\n else if (singleSubFilterType.toString() === 'object' && singleSubFilterIsDate) {\n sqlFilter += ' \\'' + singleSubFilter.toISOString().split('T')[0] + '\\' ';\n }\n else if (singleSubFilterType.toString() === 'number') {\n sqlFilter += ' ' + singleSubFilter.toString() + ' ';\n }\n else if (singleSubFilterType.toString() === 'boolean') {\n if (singleSubFilter.toString() === 'true')\n sqlFilter += '1 ';\n else if (singleSubFilter.toString() === 'false' || singleSubFilter === null || singleSubFilter === undefined)\n sqlFilter += '0 ';\n }\n }\n\n sqlFilter += ')';\n }\n else if (singleFilterType.toString() === 'string') {\n if (singleFilter === 'contains') {\n filters[i] = 'LIKE';\n singleFilter = 'LIKE';\n\n filters[i + 1] = '\\'%' + filters[i + 1] + '%\\'';\n }\n else if (singleFilter === 'notcontains') {\n filters[i] = 'NOT LIKE';\n singleFilter = 'NOT LIKE';\n\n filters[i + 1] = '\\'%' + filters[i + 1] + '%\\'';\n }\n else if (singleFilter === 'startswith') {\n filters[i] = 'LIKE';\n singleFilter = 'LIKE';\n\n filters[i + 1] = '\\'' + filters[i + 1] + '%\\'';\n }\n else if (singleFilter === 'endswith') {\n filters[i] = 'LIKE';\n singleFilter = 'LIKE';\n\n filters[i + 1] = '\\'%' + filters[i + 1] + '\\'';\n }\n else if (singleFilter === '=' || singleFilter === '<>' || singleFilter === '>' || singleFilter === '>=' || singleFilter === '<' || singleFilter === '<=') {\n if (!filters[i + 1])\n filters[i + 1] = 'NULL';\n else if (typeof filters[i + 1] === 'string') {\n filters[i + 1] = '\\'' + filters[i + 1] + '\\'';\n }\n }\n else if (singleFilter === '!') {\n filters[i] = 'NOT';\n singleFilter = 'NOT';\n }\n sqlFilter += ' ' + singleFilter + ' ';\n }\n else if (singleFilterType.toString() === 'object' && singleFilterIsDate) {\n sqlFilter += ' \\'' + singleFilter.toISOString().split('T')[0] + '\\' ';\n }\n else if (singleFilterType.toString() === 'number') {\n sqlFilter += ' ' + singleFilter.toString() + ' ';\n }\n else if (singleFilterType.toString() === 'boolean') {\n if (singleFilter.toString() === 'true')\n sqlFilter += '1 ';\n else if (singleFilter.toString() === 'false' || singleFilter === null || singleFilter === undefined)\n sqlFilter += '0 ';\n }\n }\n\n sqlFilter += ')';\n }\n });\n\n async function getRecords() {\n if (sqlFilter === '(')\n sqlFilter = '';\n\n var records = await getReceiveOrderWMSRecords(sqlFilter);\n return {\n data: records,\n totalCount: records.length\n };\n }\n\n return getRecords()\n .then(function (result) {\n return result;\n })\n .catch(() => { throw new Error('Data Loading Error'); });\n },\n });\n var fechaEmisionEditorOptions = useMemo(() => {\n return {\n width: '100%',\n readOnly: true\n };\n }, []);\n\n var nombreAlmacenEditorOptions = useMemo(() => {\n return {\n width: '100%',\n readOnly: true\n };\n }, []);\n\n var referenciaEditorOptions = useMemo(() => {\n return {\n width: '100%',\n readOnly: true\n };\n }, []);\n\n var tipoReciboEditorOptions = useMemo(() => {\n return {\n width: '100%',\n readOnly: true\n };\n }, []);\n\n var movimientoEditorOptions = useMemo(() => {\n return {\n width: '100%',\n readOnly: true\n };\n }, []);\n\n async function uploadChunk(file, uploadInfo) {\n try {\n var responseS3 = await Storage.put(\"/scwms/\" + id + \"/\" + file.name, uploadInfo.chunkBlob, {\n contentType: file.type,\n ACL: 'public-read'\n });\n\n //Obtenemos el nombre del bucket\n let bucketName = Storage._config.AWSS3.bucket;\n\n\n let apiName = 'AdminSC';\n let path = '/uploadattachment';\n\n let myInit = {\n headers: {\n 'Content-Type': 'application/json',\n Authorization: `${(await Auth.currentSession()).getAccessToken().getJwtToken()}`\n },\n body: {\n action: 'register',\n bucketName: bucketName,\n type: 'scwms',\n id: id,\n Key: \"/scwms/\" + id + \"/\" + file.name,\n fileName: file.name,\n username: JSON.parse(JSON.stringify(await Auth.currentAuthenticatedUser())).username\n }\n }\n\n var attachmentsResult = await API.post(apiName, path, myInit);\n\n //Obtenemos los attachments\n var attachmentsGet = await Storage.list(\"/scwms/\" + id);\n var attachmentsAux = [];\n\n for (var attachmentsGetIndex in attachmentsGet) {\n var singleAttachmentsGet = attachmentsGet[attachmentsGetIndex];\n\n var singleAttachment = {\n name: singleAttachmentsGet.key.split('/').pop(),\n isDirectory: false,\n size: singleAttachmentsGet.size,\n };\n\n attachmentsAux.push(singleAttachment);\n }\n\n setAttachments(attachmentsAux);\n }\n catch (err) {\n console.log(\"Error uploading file:\", err);\n }\n }\n\n async function onAttachmentDeleting(e) {\n var fileName = e.item.key;\n\n //Primero borramos el archivo de S3\n var attachmentsDelete = await Storage.remove(\"/scwms/\" + id + \"/\" + fileName);\n\n //Despues borramos el attachment en Intelisis\n let bucketName = Storage._config.AWSS3.bucket;\n\n let apiName = 'AdminSC';\n let path = '/uploadattachment';\n\n let myInit = {\n headers: {\n 'Content-Type': 'application/json',\n Authorization: `${(await Auth.currentSession()).getAccessToken().getJwtToken()}`\n },\n body: {\n action: 'delete',\n bucketName: bucketName,\n type: 'scwms',\n id: id,\n Key: \"/scwms/\" + id + \"/\" + fileName,\n fileName: fileName,\n username: JSON.parse(JSON.stringify(await Auth.currentAuthenticatedUser())).username\n }\n }\n\n var attachmentsResult = await API.post(apiName, path, myInit);\n\n //Finalmente sincronizamos el state\n var attachmentsGet = await Storage.list(\"/scwms/\" + id);\n var attachmentsAux = [];\n\n for (var attachmentsGetIndex in attachmentsGet) {\n var singleAttachmentsGet = attachmentsGet[attachmentsGetIndex];\n\n var singleAttachment = {\n name: singleAttachmentsGet.key.split('/').pop(),\n isDirectory: false,\n size: singleAttachmentsGet.size,\n };\n\n attachmentsAux.push(singleAttachment);\n }\n\n setAttachments(attachmentsAux);\n };\n\n function downloadBlob(blob, filename) {\n const url = URL.createObjectURL(blob);\n const a = document.createElement('a');\n a.href = url;\n a.download = filename || 'download';\n const clickHandler = () => {\n setTimeout(() => {\n URL.revokeObjectURL(url);\n a.removeEventListener('click', clickHandler);\n }, 150);\n };\n\n a.addEventListener('click', clickHandler, false);\n\n a.click();\n\n return a;\n };\n\n async function onItemDownloading(e) {\n e.cancel = true;\n\n const downloadFileResponse = await Storage.get(\"/scwms/\" + id + \"/\" + e.item.name, { download: true });\n\n downloadBlob(downloadFileResponse.Body, e.item.name);\n };\n\n function openBlob(blob, filename) {\n const url = URL.createObjectURL(blob);\n\n window.open(url, \"_blank\");\n };\n\n async function onAttachmentOpen(e) {\n const downloadFileResponse = await Storage.get(\"/scwms/\" + id + \"/\" + e.file.name, { download: true });\n\n openBlob(downloadFileResponse.Body, e.file.name);\n };\n\n async function getReceiveOrderWMSPayload(ID) {\n try {\n let apiName = 'AdminSC';\n let path = '/procesaordenrecibo';\n\n let myInit = {\n headers: {\n 'Content-Type': 'application/json',\n Authorization: `${(await Auth.currentSession()).getAccessToken().getJwtToken()}`\n },\n queryStringParameters: {\n ID: ID,\n action: 'payload',\n username: JSON.parse(JSON.stringify(await Auth.currentAuthenticatedUser())).username\n }\n }\n\n var payloadGet = await API.get(apiName, path, myInit);\n\n setReceiveOrderWMSPayload(payloadGet);\n\n //Obtenemos los attachments\n var attachmentsGet = await Storage.list(\"/scwms/\" + ID);\n var attachmentsAux = [];\n\n for (var attachmentsGetIndex in attachmentsGet) {\n var singleAttachmentsGet = attachmentsGet[attachmentsGetIndex];\n\n var singleAttachment = {\n name: singleAttachmentsGet.key.split('/').pop(),\n isDirectory: false,\n size: singleAttachmentsGet.size,\n };\n\n attachmentsAux.push(singleAttachment);\n }\n\n setAttachments(attachmentsAux);\n }\n catch (e) {\n if (e === 'No current user') {\n history.push('/');\n\n window.location.reload();\n }\n }\n\n return payloadGet;\n }\n\n function editReceiveOrderWMS(data) {\n return (\n <Link to={`/ReceiveOrderWMS/${data.data.ID}`}>\n <button class=\"bg-blue-500 hover:bg-blue-700 text-white py-1 px-3 rounded\" onClick={() => editButton(data.data.ID)}><FontAwesomeIcon icon={permissionLevel === 'Editar' ? faPencilAlt : faGlasses} /> {permissionLevel === 'Editar' ? 'Editar' : 'Ver'}</button>\n </Link>\n )\n }\n\n async function editButton(ID) {\n try {\n if (!window.event.metaKey && !window.event.ctrlKey) {\n setVisibleLoadPanel(true);\n\n setIsDetail(true);\n setId(ID);\n\n var payload = await getReceiveOrderWMSPayload(ID);\n\n if (permissionLevel === 'Editar') {\n if (payload.header.Estatus === 'Pendiente') {\n setActivateUpdateForm(true);\n setActivateUpdateGrid(true);\n setActivateSaveButton(true);\n setActivateConfirmButton(false);\n\n setActivatePDFButton(false);\n\n if (payload.header.TipoRecibo === 'Devolucion') {\n setActivateLabelButton(true);\n }\n else {\n setActivateLabelButton(false);\n }\n \n setActivateAttachments(true);\n setActivateDeleteButton(false);\n setActivateCancelButton(false);\n\n if (!payload.header.ActivarRecibo) {\n setActivateEnableReceive(true);\n }\n else {\n setActivateEnableReceive(false);\n }\n }\n else if (payload.header.Estatus === 'Cancelado') {\n setActivateUpdateForm(false);\n setActivateUpdateGrid(false);\n setActivateSaveButton(false);\n setActivateConfirmButton(false);\n\n setActivatePDFButton(false);\n setActivateLabelButton(false);\n setActivateAttachments(false);\n setActivateDeleteButton(false);\n setActivateCancelButton(false);\n setActivateEnableReceive(false);\n }\n else if (payload.header.Estatus === 'Concluido') {\n setActivateUpdateForm(false);\n setActivateUpdateGrid(false);\n setActivateSaveButton(false);\n setActivateConfirmButton(false);\n\n setActivatePDFButton(false);\n setActivateLabelButton(false);\n setActivateAttachments(false);\n setActivateDeleteButton(false);\n setActivateCancelButton(true);\n setActivateEnableReceive(false);\n }\n }\n else if (permissionLevel === 'Ver') {\n setActivateUpdateForm(false);\n setActivateUpdateGrid(false);\n setActivateSaveButton(false);\n setActivateConfirmButton(false);\n\n setActivatePDFButton(false);\n setActivateLabelButton(false);\n setActivateAttachments(false);\n setActivateDeleteButton(false);\n setActivateCancelButton(false);\n setActivateEnableReceive(false);\n }\n\n setVisibleLoadPanel(false);\n }\n }\n catch (e) {\n setVisibleLoadPanel(false);\n }\n };\n\n async function cancelEditButton() {\n setIsDetail(false);\n };\n\n async function saveButton() {\n try {\n setVisibleLoadPanel(true);\n\n var ID = receiveOrderWMSPayload.header.ID;\n\n //Despues enviamos todo al backend\n let apiName = 'AdminSC';\n let path = '/procesaordenrecibo';\n\n let myInit = {\n headers: {\n 'Content-Type': 'application/json',\n Authorization: `${(await Auth.currentSession()).getAccessToken().getJwtToken()}`\n },\n body: {\n ID: ID,\n payload: receiveOrderWMSPayload,\n action: 'saveChanges',\n username: JSON.parse(JSON.stringify(await Auth.currentAuthenticatedUser())).username,\n usuario: props.usuario,\n sucursal: props.sucursal,\n s3Bucket: Storage._config.AWSS3.bucket\n }\n }\n\n var payloadPost = await API.post(apiName, path, myInit);\n\n if (payloadPost.ok === 'true') {\n setVisibleToast(true);\n setMessageToast('Se actualizó la Orden de Recibo con éxito');\n setTypeToast('success')\n }\n else if (payloadPost.ok === 'false') {\n setVisibleToast(true);\n setMessageToast(payloadPost.message);\n setTypeToast('error')\n }\n\n editButton(ID);\n\n setVisibleLoadPanel(false);\n }\n catch (e) {\n setVisibleLoadPanel(false);\n\n if (e === 'No current user') {\n history.push('/');\n\n window.location.reload();\n }\n }\n };\n\n async function enableReceiveButton() {\n try {\n setVisibleLoadPanel(true);\n\n var ID = receiveOrderWMSPayload.header.ID;\n\n //Guardamos los cambios del grid\n if (gridItemsRef.current) {\n var gridItems = gridItemsRef.current.instance();\n\n gridItems.saveEditData();\n }\n\n //Despues enviamos todo al backend\n let apiName = 'AdminSC';\n let path = '/procesaordenrecibo';\n\n let myInit = {\n headers: {\n 'Content-Type': 'application/json',\n Authorization: `${(await Auth.currentSession()).getAccessToken().getJwtToken()}`\n },\n body: {\n ID: ID,\n payload: receiveOrderWMSPayload,\n action: 'enableAll',\n username: JSON.parse(JSON.stringify(await Auth.currentAuthenticatedUser())).username,\n usuario: props.usuario,\n sucursal: props.sucursal\n }\n }\n\n var payloadPost = await API.post(apiName, path, myInit);\n\n if (payloadPost.ok === 'true') {\n setVisibleToast(true);\n setMessageToast('Recibo activado con éxito');\n setTypeToast('success')\n }\n else if (payloadPost.ok === 'false') {\n setVisibleToast(true);\n setMessageToast(payloadPost.message);\n setTypeToast('error')\n }\n\n editButton(ID);\n\n setVisibleLoadPanel(false);\n }\n catch (e) {\n setVisibleLoadPanel(false);\n\n if (e === 'No current user') {\n history.push('/');\n\n window.location.reload();\n }\n }\n };\n\n async function enableReceiveItemButton(Renglon) {\n try {\n setVisibleLoadPanel(true);\n\n var ID = receiveOrderWMSPayload.header.ID;\n\n //Guardamos los cambios del grid\n if (gridItemsRef.current) {\n var gridItems = gridItemsRef.current.instance();\n\n gridItems.saveEditData();\n }\n\n //Despues enviamos todo al backend\n let apiName = 'AdminSC';\n let path = '/procesaordenrecibo';\n\n let myInit = {\n headers: {\n 'Content-Type': 'application/json',\n Authorization: `${(await Auth.currentSession()).getAccessToken().getJwtToken()}`\n },\n body: {\n ID: ID,\n payload: receiveOrderWMSPayload,\n action: 'enableReceive',\n username: JSON.parse(JSON.stringify(await Auth.currentAuthenticatedUser())).username,\n usuario: props.usuario,\n sucursal: props.sucursal,\n renglon: Renglon\n }\n }\n\n var payloadPost = await API.post(apiName, path, myInit);\n\n if (payloadPost.ok === 'true') {\n setVisibleToast(true);\n setMessageToast('Recibo activado con éxito');\n setTypeToast('success')\n }\n else if (payloadPost.ok === 'false') {\n setVisibleToast(true);\n setMessageToast(payloadPost.message);\n setTypeToast('error')\n }\n\n editButton(ID);\n\n setVisibleLoadPanel(false);\n }\n catch (e) {\n setVisibleLoadPanel(false);\n\n if (e === 'No current user') {\n history.push('/');\n\n window.location.reload();\n }\n }\n };\n\n async function cancelReceiveItemButton(Renglon) {\n try {\n setVisibleLoadPanel(true);\n\n var ID = receiveOrderWMSPayload.header.ID;\n\n //Guardamos los cambios del grid\n if (gridItemsRef.current) {\n var gridItems = gridItemsRef.current.instance();\n\n gridItems.saveEditData();\n }\n\n //Despues enviamos todo al backend\n let apiName = 'AdminSC';\n let path = '/procesaordenrecibo';\n\n let myInit = {\n headers: {\n 'Content-Type': 'application/json',\n Authorization: `${(await Auth.currentSession()).getAccessToken().getJwtToken()}`\n },\n body: {\n ID: ID,\n payload: receiveOrderWMSPayload,\n action: 'cancelReceive',\n username: JSON.parse(JSON.stringify(await Auth.currentAuthenticatedUser())).username,\n usuario: props.usuario,\n sucursal: props.sucursal,\n renglon: Renglon\n }\n }\n\n var payloadPost = await API.post(apiName, path, myInit);\n\n if (payloadPost.ok === 'true') {\n setVisibleToast(true);\n setMessageToast('Recibo cancelado con éxito');\n setTypeToast('success')\n }\n else if (payloadPost.ok === 'false') {\n setVisibleToast(true);\n setMessageToast(payloadPost.message);\n setTypeToast('error')\n }\n\n editButton(ID);\n\n setVisibleLoadPanel(false);\n }\n catch (e) {\n setVisibleLoadPanel(false);\n\n if (e === 'No current user') {\n history.push('/');\n\n window.location.reload();\n }\n }\n };\n\n async function finishReceiveItemButton(Renglon) {\n try {\n setVisibleLoadPanel(true);\n\n var ID = receiveOrderWMSPayload.header.ID;\n\n //Guardamos los cambios del grid\n if (gridItemsRef.current) {\n var gridItems = gridItemsRef.current.instance();\n\n gridItems.saveEditData();\n }\n\n //Despues enviamos todo al backend\n let apiName = 'AdminSC';\n let path = '/procesaordenrecibo';\n\n let myInit = {\n headers: {\n 'Content-Type': 'application/json',\n Authorization: `${(await Auth.currentSession()).getAccessToken().getJwtToken()}`\n },\n body: {\n ID: ID,\n payload: receiveOrderWMSPayload,\n action: 'finishReceive',\n username: JSON.parse(JSON.stringify(await Auth.currentAuthenticatedUser())).username,\n usuario: props.usuario,\n sucursal: props.sucursal,\n renglon: Renglon\n }\n }\n\n var payloadPost = await API.post(apiName, path, myInit);\n\n if (payloadPost.ok === 'true') {\n setVisibleToast(true);\n setMessageToast('Recibo finalizado con éxito');\n setTypeToast('success')\n }\n else if (payloadPost.ok === 'false') {\n setVisibleToast(true);\n setMessageToast(payloadPost.message);\n setTypeToast('error')\n }\n\n editButton(ID);\n\n setVisibleLoadPanel(false);\n }\n catch (e) {\n setVisibleLoadPanel(false);\n\n if (e === 'No current user') {\n history.push('/');\n\n window.location.reload();\n }\n }\n };\n\n function refreshButton() {\n if (gridTableroRef.current) {\n var gridTablero = gridTableroRef.current.instance();\n\n gridTablero.refresh();\n }\n };\n\n function printLabelButton() {\n var pdfArray = [];\n var baseUrl = window.location.href.split('/')[0];\n\n for (var detailIndex in receiveOrderWMSPayload.detail) {\n pdfArray.push(parseInt(receiveOrderWMSPayload.detail[detailIndex].Barcode));\n }\n\n pdfArray = pdfArray.join('%2C')\n\n window.open(baseUrl + \"/#/PdfRender?type=labelwms&id=\" + pdfArray, \"_blank\");\n };\n \n function printButton() {\n var baseUrl = window.location.href.split('/')[0];\n\n window.open(baseUrl + \"/#/PdfRender?type=receiveorderwms&id=\" + id, \"_blank\");\n };\n\n useEffect(() => {\n window.addEventListener('popstate', (e) => {\n var hash;\n\n try {\n hash = e.target.location.hash;\n }\n catch (e) {\n hash = '';\n }\n\n if (hash === '#/ReceiveOrderWMS') {\n history.push('/ReceiveOrderWMS');\n\n window.location.reload();\n }\n });\n\n async function initialize() {\n setVisibleLoadPanel(true);\n\n setVisibleLoadPanel(false);\n }\n\n initialize();\n\n //En caso de solicitar un ID especifico, redireccionamos a ese ID\n if (!props.match.isExact) {\n var urlID = props.location.pathname.replace('/ReceiveOrderWMS/', '');\n\n if (urlID === 'undefined')\n urlID = undefined;\n\n if (urlID)\n editButton(urlID);\n }\n\n // eslint-disable-next-line\n }, []);\n\n function onHidingToast() {\n setVisibleToast(false);\n }\n\n function estatusRelatedRecords(data) {\n return (\n <TransactionStatus {...props} Estatus={data.data.Estatus} />\n )\n };\n\n function enableReceiveItem(data) {\n if (permissionLevel === 'Editar' && data.data.Renglon && (!data.data.Estatus || data.data.Estatus === '') && receiveOrderWMSPayload.header.Estatus === 'Pendiente')\n return (\n <button class=\"bg-green-500 hover:bg-green-700 text-white py-1 px-3 rounded\" onClick={() => enableReceiveItemButton(data.data.Renglon)}><FontAwesomeIcon icon={faScannerTouchscreen} size='lg' /></button>\n )\n if (permissionLevel === 'Editar' && data.data.Renglon && data.data.Estatus === 'En Proceso' && receiveOrderWMSPayload.header.Estatus === 'Pendiente' && !data.data.CantidadRecibida)\n return (\n <button class=\"bg-red-500 hover:bg-red-700 text-white py-1 px-3 rounded\" onClick={() => cancelReceiveItemButton(data.data.Renglon)}><FontAwesomeIcon icon={faBan} size='lg' /></button>\n )\n if (permissionLevel === 'Editar' && data.data.Renglon && data.data.Estatus === 'En Proceso' && receiveOrderWMSPayload.header.Estatus === 'Pendiente' && data.data.CantidadRecibida)\n return (\n <button class=\"bg-blue-500 hover:bg-blue-700 text-white py-1 px-3 rounded\" onClick={() => finishReceiveItemButton(data.data.Renglon)}><FontAwesomeIcon icon={faCheckToSlot} size='lg' /></button>\n )\n };\n\n function onExporting(e) {\n const workbook = new Workbook();\n const worksheet = workbook.addWorksheet('Datos');\n\n exportDataGrid({\n component: e.component,\n worksheet,\n autoFilterEnabled: true,\n }).then(() => {\n workbook.xlsx.writeBuffer().then((buffer) => {\n saveAs(new Blob([buffer], { type: 'application/octet-stream' }), 'Datos.xlsx');\n });\n });\n e.cancel = true;\n };\n\n return (\n <div>\n {isDetail === false ? (\n <div class=\"bg-gray-200 m-2\">\n <h1 class=\"font-sans inline-block text-xl font-bold text-gray-700 leading-8 align-top mb-1\"><FontAwesomeIcon icon={faList} size=\"lg\" /> Ordenes Recibo</h1>\n </div>\n ) :\n (\n <div class=\"bg-gray-200 m-2\">\n <h1 class=\"font-sans inline-block text-xl font-bold text-gray-700 leading-8 align-top mb-1\"><FontAwesomeIcon icon={faInboxIn} size=\"xl\" /> {(receiveOrderWMSPayload.header ? receiveOrderWMSPayload.header.Movimiento : 'Orden Recibo')}</h1>\n <TransactionStatus {...props} Estatus={receiveOrderWMSPayload.header.Estatus} />\n </div>\n )}\n\n <LoadPanel\n shadingColor=\"rgba(0,0,0,0.4)\"\n visible={visibleLoadPanel}\n showIndicator={true}\n message=\"Por favor espere...\"\n shading={true}\n showPane={true}\n hideOnOutsideClick={false}\n />\n\n <Toast\n visible={visibleToast}\n message={messageToast}\n type={typeToast}\n onHiding={onHidingToast}\n displayTime={5000}\n width={'auto'}\n position={{\n my: 'top center',\n at: 'top center',\n of: window,\n offset: '0 130'\n }}\n />\n\n <div class=\"bg-gray-200 m-2\">\n {isDetail === false ? (\n <div class=\"bg-white p-3 shadow-xl\">\n\n {permissionLevel === 'Editar' ?\n (\n <div>\n <button onClick={refreshButton} type=\"submit\" class=\"mb-4 bg-blue-500 hover:bg-blue-700 text-white font-bold py-2 px-4 rounded\">\n <FontAwesomeIcon icon={faArrowsRotate} /> Actualizar\n </button>\n </div>\n ) :\n (\n <div>\n <button onClick={refreshButton} type=\"submit\" class=\"mb-4 bg-blue-500 hover:bg-blue-700 text-white font-bold py-2 px-4 rounded\">\n <FontAwesomeIcon icon={faArrowsRotate} /> Actualizar\n </button>\n </div>\n )}\n\n <div className=\"options mb-2\">\n <div className=\"option\">\n <CheckBox text=\"Expandir todos los grupos\"\n value={autoExpandAll}\n onValueChanged={onAutoExpandAllChanged}></CheckBox>\n </div>\n </div>\n <DataGrid\n height={800}\n id=\"gridContainer\"\n columnsAutoWidth={true}\n filterBuilder={filterBuilder}\n dataSource={store}\n defaultFilterValue={filterValue}\n allowColumnReordering={true}\n allowColumnResizing={true}\n columnResizingMode={\"widget\"}\n showBorders={true}\n rowAlternationEnabled={true}\n showRowLines={true}\n showColumnLines={true}\n remoteOperations={{ filtering: true }}\n ref={gridTableroRef}\n onExporting={onExporting}\n >\n <Scrolling rowRenderingMode='virtual'></Scrolling>\n <Paging defaultPageSize={10} />\n <Pager\n visible={true}\n allowedPageSizes={allowedPageSizes}\n displayMode='compact'\n showPageSizeSelector={true}\n showInfo={true}\n showNavigationButtons={true}\n />\n <FilterRow visible={true} />\n <FilterPanel visible={true} />\n <FilterBuilderPopup position={filterBuilderPopupPosition} />\n\n <HeaderFilter visible={true} />\n\n <GroupPanel visible={true} />\n <SearchPanel visible={true} />\n <ColumnChooser\n enabled={true}\n mode='select'\n >\n <ColumnChooserSearch\n enabled={true}\n />\n\n <ColumnChooserSelection\n allowSelectAll={true}\n selectByClick={true}\n recursive={true}\n />\n </ColumnChooser>\n <Grouping autoExpandAll={autoExpandAll} />\n <StateStoring enabled={true} type=\"localStorage\" storageKey=\"gridContainerReceiveOrderWMS\" />\n <Export enabled={true} />\n\n <Column caption=\"\" alignment=\"center\" width={100} cellRender={editReceiveOrderWMS} />\n <Column dataField=\"MovID\" dataType=\"string\" width={110} caption=\"Folio\" />\n <Column dataField=\"FechaEmision\" caption=\"Fecha Emisión\" dataType=\"date\" width={130} />\n <Column dataField=\"Estatus\" dataType=\"string\" width={120} />\n <Column dataField=\"Almacen\" caption=\"Almacén\" dataType=\"number\" width={150} />\n <Column dataField=\"TipoRecibo\" caption=\"Tipo de Recibo\" dataType=\"string\" width={120} />\n <Column dataField=\"ActivarRecibo\" caption=\"Activar Recibo\" dataType=\"boolean\" width={150} />\n\n <Column caption=\"Plaza\" dataField=\"Plaza\" dataType=\"string\" width={150} visible={false} />\n\n <Column dataField=\"ID\" dataType=\"number\" width={150} visible={false} />\n <Column dataField=\"Mov\" dataType=\"string\" width={190} caption=\"Tipo Movimiento\" visible={false} />\n <Column dataField=\"Movimiento\" dataType=\"string\" width={190} visible={false} />\n <Column dataField=\"Referencia\" dataType=\"string\" width={190} visible={false} />\n\n <Column dataField=\"Sucursal\" dataType=\"number\" width={150} visible={false} />\n <Column dataField=\"NombreSucursal\" dataType=\"string\" width={190} visible={false} />\n\n <Column dataField=\"NombreAlmacen\" caption=\"Nombre Almacén\" dataType=\"string\" width={190} visible={false} />\n\n <Column dataField=\"Usuario\" dataType=\"string\" width={190} visible={false} />\n <Column dataField=\"NombreUsuario\" dataType=\"string\" width={190} visible={false} />\n </DataGrid>\n </div>\n ) : (<div />)}\n <Route exact path=\"/ReceiveOrderWMS/:ID\" render={({ match }) => {\n return (\n <div class=\"bg-gray-200\">\n {isDetail.toString() === 'true' ?\n (\n <div>\n <Link to=\"/ReceiveOrderWMS\">\n <button onClick={cancelEditButton} type=\"submit\" class=\"mb-4 bg-red-500 hover:bg-red-700 text-white font-bold py-2 px-4 rounded\">\n <FontAwesomeIcon icon={faArrowRotateLeft} /> Regresar\n </button>\n </Link>\n\n {activateSaveButton.toString() === 'true' ?\n (\n <button onClick={saveButton} type=\"submit\" class=\"ml-4 mb-4 bg-blue-500 hover:bg-blue-700 text-white font-bold py-2 px-4 rounded\">\n <FontAwesomeIcon icon={faSave} /> Guardar Cambios\n </button>\n ) : (\n <div class=\"inline-block\"></div>\n )}\n\n {activateEnableReceive.toString() === 'true' && id ?\n (\n <button onClick={enableReceiveButton} type=\"submit\" class=\"ml-4 mb-4 bg-green-500 hover:bg-green-700 text-white font-bold py-2 px-4 rounded\">\n <FontAwesomeIcon icon={faScannerTouchscreen} size='lg' /> Activar Recibo\n </button>\n ) : (\n <div class=\"inline-block\"></div>\n )}\n\n {activateLabelButton.toString() === 'true' && id ?\n (\n <button onClick={printLabelButton} type=\"submit\" class=\"ml-4 mb-4 bg-gray-500 hover:bg-gray-700 text-white font-bold py-2 px-4 rounded\">\n <FontAwesomeIcon icon={faFilePdf} /> Reimprimir etiqueta\n </button>\n ) :\n (\n <div class=\"inline-block\"></div>\n )}\n\n {activatePDFButton.toString() === 'true' && id ?\n (\n <button onClick={printButton} type=\"submit\" class=\"ml-4 mb-4 bg-gray-500 hover:bg-gray-700 text-white font-bold py-2 px-4 rounded\">\n <FontAwesomeIcon icon={faFilePdf} /> PDF\n </button>\n ) :\n (\n <div class=\"inline-block\"></div>\n )}\n\n <div class=\"bg-white p-4 shadow-xl\">\n <Form\n id=\"formTransaccion\"\n labelMode={'outside'}\n formData={receiveOrderWMSPayload.header}\n readOnly={!activateUpdateForm}\n showColonAfterLabel={false}\n labelLocation={'top'}\n ref={formDatosGeneralesRef}\n >\n <TabbedItem>\n <TabPanelOptions deferRendering={false} showNavButtons={true} />\n <Tab title=\"Datos Generales\" colCount={6}>\n <GroupItem caption=\"General\" colSpan={6} colCount={2} >\n <Item cssClass=\"boldText\" dataField=\"Movimiento\" editorOptions={movimientoEditorOptions} >\n <RequiredRule message=\"Movimiento es requerido\" />\n </Item>\n <Item dataField=\"FechaEmision\" editorType=\"dxDateBox\" editorOptions={fechaEmisionEditorOptions}>\n <Label text={\"Fecha Emisión\"} />\n <RequiredRule message=\"Fecha Emisión es requerida\" />\n </Item>\n <Item dataField=\"NombreAlmacen\" editorOptions={nombreAlmacenEditorOptions}>\n <Label text={\"Almacén\"} />\n <RequiredRule message=\"Almacén es requerido\" />\n </Item>\n <Item dataField=\"TipoRecibo\" editorOptions={tipoReciboEditorOptions}>\n <Label text={\"Tipo de Recibo\"} />\n </Item>\n <Item dataField=\"Referencia\" editorOptions={referenciaEditorOptions}>\n <Label text={\"Referencia\"} />\n </Item>\n </GroupItem>\n <GroupItem caption=\"Artículos\" colSpan={6} >\n <DataGrid\n id=\"gridItems\"\n ref={gridItemsRef}\n columnsAutoWidth={true}\n dataSource={receiveOrderWMSPayload.detail}\n showBorders={true}\n showColumnLines={true}\n showRowLines={true}\n rowAlternationEnabled={true}\n allowColumnResizing={true}\n columnResizingMode=\"widget\"\n allowColumnReordering={false}\n repaintChangesOnly={false}\n >\n <Editing\n mode=\"cell\"\n allowUpdating={activateUpdateGrid}\n allowAdding={false}\n allowDeleting={false}\n />\n <Sorting mode=\"none\" />\n\n <Column dataField=\"Renglon\" caption=\"Renglón\" width={80} visible={false} allowEditing={false} dataType=\"string\" />\n <Column dataField=\"RenglonID\" width={190} visible={false} allowEditing={false} />\n\n <Column dataField=\"Almacen\" caption=\"Almacén\" width={80} allowEditing={false} dataType=\"string\" />\n <Column dataField=\"ArtDescripcion\" caption=\"Artículo\" width={340} allowEditing={false} dataType=\"string\" />\n <Column dataField=\"Referencia\" caption=\"Referencia\" width={150} allowEditing={false} visible={false} dataType=\"string\" />\n <Column dataField=\"Cantidad\" caption=\"Cantidad\" width={80} allowEditing={false} dataType=\"string\" format=',###' />\n {(receiveOrderWMSPayload.header.TipoRecibo === 'Traspaso WMS' || receiveOrderWMSPayload.header.TipoRecibo === 'Devolucion') && <Column dataField=\"Barcode\" dataType=\"string\" width={140} caption=\"Barcode\" />}\n <Column dataField=\"CantidadRecibida\" caption=\"Cant. Recibida\" width={130} allowEditing={false} dataType=\"string\" format=',###' />\n <Column caption=\"Estatus\" alignment=\"center\" width={120} cellRender={estatusRelatedRecords} />\n <Column caption=\"\" alignment=\"center\" width={60} cellRender={enableReceiveItem} />\n </DataGrid>\n </GroupItem>\n </Tab>\n <Tab title=\"Observaciones\" >\n <Item dataField=\"Observaciones\" editorType=\"dxTextArea\" >\n <Label text=\"Observaciones\" visible={false} />\n </Item>\n </Tab>\n <Tab title=\"Mensajes WMS\">\n <DataGrid\n id=\"gridMensajesWMS\"\n columnsAutoWidth={true}\n dataSource={receiveOrderWMSPayload.wmsmessage}\n allowColumnReordering={true}\n allowColumnResizing={true}\n columnResizingMode={\"widget\"}\n showBorders={true}\n rowAlternationEnabled={true}\n showRowLines={true}\n showColumnLines={true}\n >\n <Scrolling rowRenderingMode='virtual'></Scrolling>\n <Paging defaultPageSize={10} />\n <Pager\n visible={true}\n allowedPageSizes={allowedPageSizes}\n displayMode='compact'\n showPageSizeSelector={true}\n showInfo={true}\n showNavigationButtons={true}\n />\n\n <FilterRow visible={true} />\n <FilterPanel visible={true} />\n <FilterBuilderPopup position={filterBuilderPopupPosition} />\n\n <HeaderFilter visible={true} />\n\n <GroupPanel visible={true} />\n <SearchPanel visible={true} />\n <ColumnChooser\n enabled={true}\n mode='select'\n >\n <ColumnChooserSearch\n enabled={true}\n />\n\n <ColumnChooserSelection\n allowSelectAll={true}\n selectByClick={true}\n recursive={true}\n />\n </ColumnChooser>\n <Grouping autoExpandAll={autoExpandAll} />\n\n <Column dataField=\"Mensaje\" dataType=\"string\" width={120} caption=\"Mensaje\" />\n <Column dataField=\"Renglon\" dataType=\"number\" width={100} caption=\"Renglon\" />\n <Column dataField=\"Barcode\" dataType=\"string\" width={140} caption=\"Barcode\" />\n <Column dataField=\"Articulo\" dataType=\"string\" width={120} caption=\"Artículo\" />\n <Column dataField=\"Cantidad\" dataType=\"number\" width={120} caption=\"Cantidad\" format=',###' />\n <Column dataField=\"username\" dataType=\"string\" width={140} caption=\"Usuario WMS\" />\n <Column dataField=\"Fecha\" dataType=\"date\" width={100} caption=\"Fecha\" />\n <Column dataField=\"Almacen\" dataType=\"string\" width={120} caption=\"Almacén\" />\n <Column dataField=\"Posicion\" dataType=\"string\" width={120} caption=\"Posición\" />\n </DataGrid>\n </Tab>\n <Tab title=\"Log Estatus\">\n <DataGrid\n id=\"gridLogEstatus\"\n columnsAutoWidth={true}\n dataSource={receiveOrderWMSPayload.movEstatusLog}\n allowColumnReordering={true}\n allowColumnResizing={true}\n columnResizingMode={\"widget\"}\n showBorders={true}\n rowAlternationEnabled={true}\n showRowLines={true}\n showColumnLines={true}\n >\n <HeaderFilter visible={false} />\n <Column dataField=\"Usuario\" dataType=\"string\" width={350} caption=\"Usuario\" />\n <Column caption=\"Estatus\" alignment=\"center\" width={150} cellRender={estatusRelatedRecords} />\n <Column dataField=\"Fecha\" dataType=\"datetime\" width={300} caption=\"Fecha\" />\n </DataGrid>\n </Tab>\n <Tab title=\"Archivos Anexos\" >\n <div className=\"widget-container\">\n <FileUploader\n multiple={true}\n accept=\"*\"\n uploadMode=\"useButtons\"\n chunkSize={20000000}\n maxFileSize={20000000}\n uploadChunk={uploadChunk}\n disabled={!activateAttachments}\n />\n </div>\n <div id=\"wrapper\" className=\"show-widget\" >\n <div id=\"widget-area\">\n <FileManager id=\"attachmentManager\" fileSystemProvider={attachments} onItemDeleting={onAttachmentDeleting} onItemDownloading={onItemDownloading} onSelectedFileOpened={onAttachmentOpen}>\n <Permissions\n create={false}\n copy={false}\n move={false}\n delete={activateAttachments}\n rename={false}\n upload={false}\n download={true}\n >\n </Permissions>\n </FileManager>\n </div>\n </div>\n </Tab>\n </TabbedItem>\n </Form>\n </div>\n </div>\n ) :\n (\n <div></div>\n )\n }\n </div>\n )\n }}\n />\n </div>\n </div>\n );\n}\n","import React, { useState, useEffect, useRef, useMemo } from 'react';\n\n// LoadPanel\nimport { LoadPanel } from 'devextreme-react/load-panel';\n\n// Toast\nimport { Toast } from 'devextreme-react/toast';\n\n//Form\nimport Form, { GroupItem, Label, TabbedItem, TabPanelOptions, Tab, EmptyItem } from 'devextreme-react/form';\n\nimport { Auth, API, Storage, label } from 'aws-amplify';\n\n// Ruteador\nimport { Route, Link, useHistory } from \"react-router-dom\";\n\n// Grid\nimport DataGrid, {\n Column, FilterRow, HeaderFilter, FilterPanel, FilterBuilderPopup,\n GroupPanel, Grouping, SearchPanel, Sorting, Editing, Lookup, Toolbar, Item, RequiredRule,\n Scrolling, Pager, Paging, Summary, TotalItem, StateStoring, ColumnChooser, Format, Selection,\n Export, ColumnChooserSearch, ColumnChooserSelection\n} from 'devextreme-react/data-grid';\n\n//CheckBox\nimport CheckBox from 'devextreme-react/check-box';\n\n// Iconos\nimport { FontAwesomeIcon } from \"@fortawesome/react-fontawesome\";\nimport { faGlasses } from \"@fortawesome/pro-solid-svg-icons\";\nimport { faInboxOut } from \"@fortawesome/pro-duotone-svg-icons\";\nimport { faPencilAlt } from \"@fortawesome/pro-solid-svg-icons\";\nimport { faArrowRotateLeft } from \"@fortawesome/pro-solid-svg-icons\";\nimport { faList } from \"@fortawesome/pro-duotone-svg-icons\";\nimport { faFilePdf } from \"@fortawesome/pro-solid-svg-icons\";\nimport { faArrowsRotate } from \"@fortawesome/pro-solid-svg-icons\";\nimport { faSave } from \"@fortawesome/pro-solid-svg-icons\";\nimport { faScannerTouchscreen } from \"@fortawesome/pro-solid-svg-icons\";\nimport { faBan } from \"@fortawesome/pro-solid-svg-icons\";\nimport { faCheckToSlot } from \"@fortawesome/pro-solid-svg-icons\";\nimport { faHand } from \"@fortawesome/pro-solid-svg-icons\";\n\n\nimport 'devextreme/data/odata/store';\nimport CustomStore from 'devextreme/data/custom_store';\n\nimport '../ListStyle.css';\n\n//FileUploader\nimport FileUploader from 'devextreme-react/file-uploader';\n\n//FileManager\nimport FileManager, { Permissions } from 'devextreme-react/file-manager';\n\nimport dxDateBox from \"devextreme/ui/date_box\";\n\nimport dxNumberBox from \"devextreme/ui/number_box\";\n\nimport { Popup, Position, ToolbarItem } from 'devextreme-react/popup';\n\nimport TransactionStatus from \"../TransactionStatus/TransactionStatus.js\";\n\nimport { Workbook } from 'exceljs';\nimport { saveAs } from 'file-saver';\nimport { exportDataGrid } from 'devextreme/excel_exporter';\n\nimport './FulfillmentOrderWMS.css';\n\n\nimport { confirm } from 'devextreme/ui/dialog';\n\ndxDateBox.defaultOptions({\n options: {\n dateSerializationFormat: \"yyyy-MM-dd\"\n }\n});\n\ndxNumberBox.defaultOptions({\n options: {\n step: 0\n }\n});\n\nfunction isNotEmpty(value) {\n return value !== undefined && value !== null && value !== '';\n}\n\nexport default function FulfillmentOrderWMS(props) {\n const history = useHistory();\n\n const [isDetail, setIsDetail] = useState(false);\n const [id, setId] = useState();\n const [permissionLevel, setPermissionLevel] = useState(props.nivel);\n const [assignFulfillmentOrderWMS, setAssignFulfillmentOrderWMS] = useState(props.assignFulfillmentOrderWMS);\n const [fulfillmentOrderWMSPayload, setFulfillmentOrderWMSPayload] = useState({\n header: {},\n detail: [],\n movEstatusLog: []\n });\n\n const [assignFulfillmentOrderWMSPayload, setAssignFulfillmentOrderWMSPayload] = useState({\n header: {\n Articulo: undefined,\n NombreArticulo: undefined,\n Barcode: undefined,\n Posicion: undefined\n },\n detail: []\n });\n\n const [assignRenglon, setAssignRenglon] = useState(undefined);\n const [assignBarcode, setAssignBarcode] = useState(undefined);\n\n const [usuarioPick, setUsuarioPick] = useState([]);\n const [usuarioPack, setUsuarioPack] = useState([]);\n\n const [autoExpandAll, setAutoExpandAll] = useState(true);\n\n const [visibleLoadPanel, setVisibleLoadPanel] = useState(false);\n\n const [visibleToast, setVisibleToast] = useState(false);\n const [messageToast, setMessageToast] = useState('');\n const [typeToast, setTypeToast] = useState('success');\n\n const [popupSingleBarcodeVisible, setPopupSingleBarcodeVisible] = useState(false);\n const [popupSingleBarcodeTitle, setPopupSingleBarcodeTitle] = useState('');\n const [popupMultipleBarcodeVisible, setPopupMultipleBarcodeVisible] = useState(false);\n const [popupMultipleBarcodeTitle, setPopupMultipleBarcodeTitle] = useState('');\n\n const [activateUpdateForm, setActivateUpdateForm] = useState(false);\n const [activateUpdateGrid, setActivateUpdateGrid] = useState(false);\n const [activateSaveButton, setActivateSaveButton] = useState(false);\n const [activateConfirmButton, setActivateConfirmButton] = useState(false);\n const [activatePDFButton, setActivatePDFButton] = useState(false);\n const [activateDeleteButton, setActivateDeleteButton] = useState(false);\n const [activateAttachments, setActivateAttachments] = useState(false);\n const [activateCancelButton, setActivateCancelButton] = useState(false);\n const [activateEnableFulfillment, setActivateEnableFulfillment] = useState(false);\n\n //Ref para el form\n const [formDatosGeneralesRef, setFormDatosGeneralesRef] = useState(React.createRef());\n\n //Ref para el form Assign Fulfillment Order WMS\n const [formAssignFulfillmentOrderWMSRef, setFormAssignFulfillmentOrderWMSRef] = useState(React.createRef());\n const [formAssignMultipleFulfillmentOrderWMSRef, setFormAssignMultipleFulfillmentOrderWMSRef] = useState(React.createRef());\n\n //Ref para el grid Assign Fulfillment Order WMS\n const [gridAssignFulfillmentOrderWMSRef, setGridAssignFulfillmentOrderWMSRef] = useState(React.createRef());\n const [gridAssignMultipleFulfillmentOrderWMSRef, setGridAssignMultipleFulfillmentOrderWMSRef] = useState(React.createRef());\n\n\n //Ref para el grid Items\n const [gridItemsRef, setGridItemsRef] = useState(React.createRef());\n\n const [attachments, setAttachments] = useState([]);\n\n const filterBuilderPopupPosition = {\n of: window,\n at: 'top',\n my: 'top',\n offset: { y: 10 },\n };\n\n const allowedPageSizes = [5, 10, 15, 20, 'all'];\n\n const exportFormats = ['xlsx'];\n\n function getOrderDay(rowData) {\n return (new Date(rowData.OrderDate)).getDay();\n }\n\n const filterBuilder = {\n customOperations: [{\n name: 'weekends',\n caption: 'Weekends',\n dataTypes: ['date'],\n icon: 'check',\n hasValue: false,\n calculateFilterExpression: () => [[getOrderDay, '=', 0], 'or', [getOrderDay, '=', 6]],\n }],\n allowHierarchicalFields: true,\n };\n\n const filterValue = [['Estatus', '=', 'Pendiente']];\n\n //Ref para el grid Tablero de Control\n const [gridTableroRef, setGridTableroRef] = useState(React.createRef());\n\n function onAutoExpandAllChanged() {\n setAutoExpandAll(!autoExpandAll)\n };\n\n async function getFulfillmentOrdewWMSRecords(sqlFilter) {\n try {\n let apiName = 'AdminSC';\n let path = '/procesaordensurtido';\n\n let myInit = {\n headers: {\n 'Content-Type': 'application/json',\n Authorization: `${(await Auth.currentSession()).getAccessToken().getJwtToken()}`\n },\n queryStringParameters: {\n action: 'list',\n sqlFilter: sqlFilter,\n salesAccess: props.salesAccess,\n sucursal: props.sucursal,\n usuario: props.usuario,\n username: JSON.parse(JSON.stringify(await Auth.currentAuthenticatedUser())).username\n }\n }\n\n var fulfillmentOrderWMSGet = await API.get(apiName, path, myInit);\n }\n catch (e) {\n if (e === 'No current user') {\n history.push('/');\n\n window.location.reload();\n }\n }\n\n return fulfillmentOrderWMSGet;\n }\n\n const store = new CustomStore({\n key: 'ID',\n load(loadOptions) {\n let sqlFilter = '(';\n [\n 'filter'\n ].forEach((i) => {\n if (i in loadOptions && isNotEmpty(loadOptions[i])) {\n var filters = loadOptions[i];\n\n var filtersLength = filters.length;\n\n for (var i = 0; i <= filtersLength; i++) {\n var singleFilter = filters[i];\n var singleFilterType = typeof singleFilter;\n var singleFilterIsArray = Array.isArray(singleFilter);\n var singleFilterIsDate = singleFilter instanceof Date;\n\n if (singleFilter === 'NULL') {\n singleFilter = '0';\n }\n\n if (singleFilterType.toString() === 'object' && singleFilterIsArray) {\n sqlFilter += '(';\n\n var subFiltersLength = singleFilter.length;\n\n for (var i2 = 0; i2 <= subFiltersLength; i2++) {\n var singleSubFilter = singleFilter[i2];\n var singleSubFilterType = typeof singleSubFilter;\n var singleSubFilterIsArray = Array.isArray(singleSubFilter);\n var singleSubFilterIsDate = singleSubFilter instanceof Date\n\n if (singleSubFilter === 'NULL') {\n singleSubFilter = '0';\n }\n\n if (singleSubFilterType.toString() === 'object' && singleSubFilterIsArray) {\n sqlFilter += '(';\n\n var subSubFiltersLength = singleSubFilter.length;\n\n for (var i3 = 0; i3 <= subSubFiltersLength; i3++) {\n var singleSubSubFilter = singleSubFilter[i3];\n var singleSubSubFilterType = typeof singleSubSubFilter;\n var singleSubSubFilterIsArray = Array.isArray(singleSubSubFilter);\n var singleSubSubFilterIsDate = singleSubSubFilter instanceof Date\n\n if (singleSubSubFilter === 'NULL') {\n singleSubSubFilter = '0';\n }\n\n if (singleSubSubFilterType.toString() === 'object' && singleSubSubFilterIsArray) {\n sqlFilter += '(';\n\n var subSubSubFiltersLength = singleSubSubFilter.length;\n\n for (var i4 = 0; i4 <= subSubSubFiltersLength; i4++) {\n var singleSubSubSubFilter = singleSubSubFilter[i4];\n var singleSubSubSubFilterType = typeof singleSubSubSubFilter;\n var singleSubSubSubFilterIsArray = Array.isArray(singleSubSubSubFilter);\n var singleSubSubSubFilterIsDate = singleSubSubSubFilter instanceof Date\n\n if (singleSubSubSubFilter === 'NULL') {\n singleSubSubSubFilter = '0';\n }\n\n if (singleSubSubSubFilterType.toString() === 'object' && singleSubSubSubFilterIsArray) {\n sqlFilter += '(';\n\n var subSubSubSubFiltersLength = singleSubSubSubFilter.length;\n\n for (var i5 = 0; i5 <= subSubSubSubFiltersLength; i5++) {\n var singleSubSubSubSubFilter = singleSubSubSubFilter[i5];\n var singleSubSubSubSubFilterType = typeof singleSubSubSubSubFilter;\n var singleSubSubSubSubFilterIsArray = Array.isArray(singleSubSubSubSubFilter);\n var singleSubSubSubSubFilterIsDate = singleSubSubSubSubFilter instanceof Date\n\n if (singleSubSubSubSubFilter === 'NULL') {\n singleSubSubSubSubFilter = '0';\n }\n\n if (singleSubSubSubSubFilterType.toString() === 'string') {\n if (singleSubSubSubSubFilter === 'contains') {\n filters[i][i2][i3][i4][i5] = 'LIKE';\n singleSubSubSubSubFilter = 'LIKE';\n\n filters[i][i2][i3][i4][i5 + 1] = '\\'%' + filters[i][i2][i3][i4][i5 + 1] + '%\\'';\n }\n else if (singleSubSubSubSubFilter === 'notcontains') {\n filters[i][i2][i3][i4][i5] = 'NOT LIKE';\n singleSubSubSubSubFilter = 'NOT LIKE';\n\n filters[i][i2][i3][i4][i5 + 1] = '\\'%' + filters[i][i2][i3][i4][i5 + 1] + '%\\'';\n }\n else if (singleSubSubSubSubFilter === 'startswith') {\n filters[i][i2][i3][i4][i5] = 'LIKE';\n singleSubSubSubSubFilter = 'LIKE';\n\n filters[i][i2][i3][i4][i5 + 1] = '\\'' + filters[i][i2][i3][i4][i5 + 1] + '%\\'';\n }\n else if (singleSubSubSubSubFilter === 'endswith') {\n filters[i][i2][i3][i4][i5] = 'LIKE';\n singleSubSubSubSubFilter = 'LIKE';\n\n filters[i][i2][i3][i4][i5 + 1] = '\\'%' + filters[i][i2][i3][i4][i5 + 1] + '\\'';\n }\n else if (singleSubSubSubSubFilter === '=' || singleSubSubSubSubFilter === '<>' || singleSubSubSubSubFilter === '>' || singleSubSubSubSubFilter === '>=' || singleSubSubSubSubFilter === '<' || singleSubSubSubSubFilter === '<=') {\n if (!filters[i][i2][i3][i4][i5 + 1])\n filters[i][i2][i3][i4][i5 + 1] = 'NULL';\n else if (typeof filters[i][i2][i3][i4][i5 + 1] === 'string') {\n filters[i][i2][i3][i4][i5 + 1] = '\\'' + filters[i][i2][i3][i4][i5 + 1] + '\\'';\n }\n }\n else if (singleSubSubSubSubFilter === '!') {\n filters[i][i2][i3][i4][i5] = 'NOT';\n singleSubSubSubSubFilter = 'NOT';\n }\n\n sqlFilter += ' ' + singleSubSubSubSubFilter + ' ';\n }\n else if (singleSubSubSubSubFilterType.toString() === 'object' && singleSubSubSubSubFilterIsDate) {\n sqlFilter += ' \\'' + singleSubSubSubSubFilter.toISOString().split('T')[0] + '\\' ';\n }\n else if (singleSubSubSubSubFilterType.toString() === 'number') {\n sqlFilter += ' ' + singleSubSubSubSubFilter.toString() + ' ';\n }\n else if (singleSubSubSubSubFilterType.toString() === 'boolean') {\n if (singleSubSubSubSubFilter.toString() === 'true')\n sqlFilter += '1 ';\n else if (singleSubSubSubSubFilter.toString() === 'false' || singleSubSubSubSubFilter === null || singleSubSubSubSubFilter === undefined)\n sqlFilter += '0 ';\n }\n }\n }\n else if (singleSubSubSubFilterType.toString() === 'string') {\n if (singleSubSubSubFilter === 'contains') {\n filters[i][i2][i3][i4] = 'LIKE';\n singleSubSubSubFilter = 'LIKE';\n\n filters[i][i2][i3][i4 + 1] = '\\'%' + filters[i][i2][i3][i4 + 1] + '%\\'';\n }\n else if (singleSubSubSubFilter === 'notcontains') {\n filters[i][i2][i3][i4] = 'NOT LIKE';\n singleSubSubSubFilter = 'NOT LIKE';\n\n filters[i][i2][i3][i4 + 1] = '\\'%' + filters[i][i2][i3][i4 + 1] + '%\\'';\n }\n else if (singleSubSubSubFilter === 'startswith') {\n filters[i][i2][i3][i4] = 'LIKE';\n singleSubSubSubFilter = 'LIKE';\n\n filters[i][i2][i3][i4 + 1] = '\\'' + filters[i][i2][i3][i4 + 1] + '%\\'';\n }\n else if (singleSubSubSubFilter === 'endswith') {\n filters[i][i2][i3][i4] = 'LIKE';\n singleSubSubSubFilter = 'LIKE';\n\n filters[i][i2][i3][i4 + 1] = '\\'%' + filters[i][i2][i3][i4 + 1] + '\\'';\n }\n else if (singleSubSubSubFilter === '=' || singleSubSubSubFilter === '<>' || singleSubSubSubFilter === '>' || singleSubSubSubFilter === '>=' || singleSubSubSubFilter === '<' || singleSubSubSubFilter === '<=') {\n if (!filters[i][i2][i3][i4 + 1])\n filters[i][i2][i3][i4 + 1] = 'NULL';\n else if (typeof filters[i][i2][i3][i4 + 1] === 'string') {\n filters[i][i2][i3][i4 + 1] = '\\'' + filters[i][i2][i3][i4 + 1] + '\\'';\n }\n }\n else if (singleSubSubSubFilter === '!') {\n filters[i][i2][i3][i4] = 'NOT';\n singleSubSubSubFilter = 'NOT';\n }\n\n sqlFilter += ' ' + singleSubSubSubFilter + ' ';\n }\n else if (singleSubSubSubFilterType.toString() === 'object' && singleSubSubSubFilterIsDate) {\n sqlFilter += ' \\'' + singleSubSubSubFilter.toISOString().split('T')[0] + '\\' ';\n }\n else if (singleSubSubSubFilterType.toString() === 'number') {\n sqlFilter += ' ' + singleSubSubSubFilter.toString() + ' ';\n }\n else if (singleSubSubSubFilterType.toString() === 'boolean') {\n if (singleSubSubSubFilter.toString() === 'true')\n sqlFilter += '1 ';\n else if (singleSubSubSubFilter.toString() === 'false' || singleSubSubSubFilter === null || singleSubSubSubFilter === undefined)\n sqlFilter += '0 ';\n }\n }\n\n sqlFilter += ')';\n }\n else if (singleSubSubFilterType.toString() === 'string') {\n if (singleSubSubFilter === 'contains') {\n filters[i][i2][i3] = 'LIKE';\n singleSubSubFilter = 'LIKE';\n\n filters[i][i2][i3 + 1] = '\\'%' + filters[i][i2][i3 + 1] + '%\\'';\n }\n else if (singleSubSubFilter === 'notcontains') {\n filters[i][i2][i3] = 'NOT LIKE';\n singleSubSubFilter = 'NOT LIKE';\n\n filters[i][i2][i3 + 1] = '\\'%' + filters[i][i2][i3 + 1] + '%\\'';\n }\n else if (singleSubSubFilter === 'startswith') {\n filters[i][i2][i3] = 'LIKE';\n singleSubSubFilter = 'LIKE';\n\n filters[i][i2][i3 + 1] = '\\'' + filters[i][i2][i3 + 1] + '%\\'';\n }\n else if (singleSubSubFilter === 'endswith') {\n filters[i][i2][i3] = 'LIKE';\n singleSubSubFilter = 'LIKE';\n\n filters[i][i2][i3 + 1] = '\\'%' + filters[i][i2][i3 + 1] + '\\'';\n }\n else if (singleSubSubFilter === '=' || singleSubSubFilter === '<>' || singleSubSubFilter === '>' || singleSubSubFilter === '>=' || singleSubSubFilter === '<' || singleSubSubFilter === '<=') {\n if (!filters[i][i2][i3 + 1])\n filters[i][i2][i3 + 1] = 'NULL';\n else if (typeof filters[i][i2][i3 + 1] === 'string') {\n filters[i][i2][i3 + 1] = '\\'' + filters[i][i2][i3 + 1] + '\\'';\n }\n }\n else if (singleSubSubFilter === '!') {\n filters[i][i2][i3] = 'NOT';\n singleSubSubFilter = 'NOT';\n }\n sqlFilter += ' ' + singleSubSubFilter + ' ';\n }\n else if (singleSubSubFilterType.toString() === 'object' && singleSubSubFilterIsDate) {\n sqlFilter += ' \\'' + singleSubSubFilter.toISOString().split('T')[0] + '\\' ';\n }\n else if (singleSubSubFilterType.toString() === 'number') {\n sqlFilter += ' ' + singleSubSubFilter.toString() + ' ';\n }\n else if (singleSubSubFilterType.toString() === 'boolean') {\n if (singleSubSubFilter.toString() === 'true')\n sqlFilter += '1 ';\n else if (singleSubSubFilter.toString() === 'false' || singleSubSubFilter === null || singleSubSubFilter === undefined)\n sqlFilter += '0 ';\n }\n }\n\n sqlFilter += ')';\n }\n else if (singleSubFilterType.toString() === 'string') {\n if (singleSubFilter === 'contains') {\n filters[i][i2] = 'LIKE';\n singleSubFilter = 'LIKE';\n\n filters[i][i2 + 1] = '\\'%' + filters[i][i2 + 1] + '%\\'';\n }\n else if (singleSubFilter === 'notcontains') {\n filters[i][i2] = 'NOT LIKE';\n singleSubFilter = 'NOT LIKE';\n\n filters[i][i2 + 1] = '\\'%' + filters[i][i2 + 1] + '%\\'';\n }\n else if (singleSubFilter === 'startswith') {\n filters[i][i2] = 'LIKE';\n singleSubFilter = 'LIKE';\n\n filters[i][i2 + 1] = '\\'' + filters[i][i2 + 1] + '%\\'';\n }\n else if (singleSubFilter === 'endswith') {\n filters[i][i2] = 'LIKE';\n singleSubFilter = 'LIKE';\n\n filters[i][i2 + 1] = '\\'%' + filters[i][i2 + 1] + '\\'';\n }\n else if (singleSubFilter === '=' || singleSubFilter === '<>' || singleSubFilter === '>' || singleSubFilter === '>=' || singleSubFilter === '<' || singleSubFilter === '<=') {\n if (!filters[i][i2 + 1])\n filters[i][i2 + 1] = 'NULL';\n else if (typeof filters[i][i2 + 1] === 'string') {\n filters[i][i2 + 1] = '\\'' + filters[i][i2 + 1] + '\\'';\n }\n }\n else if (singleSubFilter === '!') {\n filters[i][i2] = 'NOT';\n singleSubFilter = 'NOT';\n }\n sqlFilter += ' ' + singleSubFilter + ' ';\n }\n else if (singleSubFilterType.toString() === 'object' && singleSubFilterIsDate) {\n sqlFilter += ' \\'' + singleSubFilter.toISOString().split('T')[0] + '\\' ';\n }\n else if (singleSubFilterType.toString() === 'number') {\n sqlFilter += ' ' + singleSubFilter.toString() + ' ';\n }\n else if (singleSubFilterType.toString() === 'boolean') {\n if (singleSubFilter.toString() === 'true')\n sqlFilter += '1 ';\n else if (singleSubFilter.toString() === 'false' || singleSubFilter === null || singleSubFilter === undefined)\n sqlFilter += '0 ';\n }\n }\n\n sqlFilter += ')';\n }\n else if (singleFilterType.toString() === 'string') {\n if (singleFilter === 'contains') {\n filters[i] = 'LIKE';\n singleFilter = 'LIKE';\n\n filters[i + 1] = '\\'%' + filters[i + 1] + '%\\'';\n }\n else if (singleFilter === 'notcontains') {\n filters[i] = 'NOT LIKE';\n singleFilter = 'NOT LIKE';\n\n filters[i + 1] = '\\'%' + filters[i + 1] + '%\\'';\n }\n else if (singleFilter === 'startswith') {\n filters[i] = 'LIKE';\n singleFilter = 'LIKE';\n\n filters[i + 1] = '\\'' + filters[i + 1] + '%\\'';\n }\n else if (singleFilter === 'endswith') {\n filters[i] = 'LIKE';\n singleFilter = 'LIKE';\n\n filters[i + 1] = '\\'%' + filters[i + 1] + '\\'';\n }\n else if (singleFilter === '=' || singleFilter === '<>' || singleFilter === '>' || singleFilter === '>=' || singleFilter === '<' || singleFilter === '<=') {\n if (!filters[i + 1])\n filters[i + 1] = 'NULL';\n else if (typeof filters[i + 1] === 'string') {\n filters[i + 1] = '\\'' + filters[i + 1] + '\\'';\n }\n }\n else if (singleFilter === '!') {\n filters[i] = 'NOT';\n singleFilter = 'NOT';\n }\n sqlFilter += ' ' + singleFilter + ' ';\n }\n else if (singleFilterType.toString() === 'object' && singleFilterIsDate) {\n sqlFilter += ' \\'' + singleFilter.toISOString().split('T')[0] + '\\' ';\n }\n else if (singleFilterType.toString() === 'number') {\n sqlFilter += ' ' + singleFilter.toString() + ' ';\n }\n else if (singleFilterType.toString() === 'boolean') {\n if (singleFilter.toString() === 'true')\n sqlFilter += '1 ';\n else if (singleFilter.toString() === 'false' || singleFilter === null || singleFilter === undefined)\n sqlFilter += '0 ';\n }\n }\n\n sqlFilter += ')';\n }\n });\n\n async function getRecords() {\n if (sqlFilter === '(')\n sqlFilter = '';\n\n var records = await getFulfillmentOrdewWMSRecords(sqlFilter);\n return {\n data: records,\n totalCount: records.length\n };\n }\n\n return getRecords()\n .then(function (result) {\n return result;\n })\n .catch(() => { throw new Error('Data Loading Error'); });\n },\n });\n\n var fechaEmisionEditorOptions = useMemo(() => {\n return {\n width: '100%',\n readOnly: true\n };\n }, []);\n\n var nombreAlmacenEditorOptions = useMemo(() => {\n return {\n width: '100%',\n readOnly: true\n };\n }, []);\n\n var referenciaEditorOptions = useMemo(() => {\n return {\n width: '100%',\n readOnly: true\n };\n }, []);\n\n var tipoSurtidoEditorOptions = useMemo(() => {\n return {\n width: '100%',\n readOnly: true\n };\n }, []);\n\n var movimientoEditorOptions = useMemo(() => {\n return {\n width: '100%',\n readOnly: true\n };\n }, []);\n\n var usuarioPickAsignadoEditorOptions = useMemo(() => {\n return {\n showClearButton: true\n };\n }, []);\n\n var articuloEditorOptions = useMemo(() => {\n return {\n width: '100%',\n readOnly: true\n };\n }, []);\n\n var nombreArticuloEditorOptions = useMemo(() => {\n return {\n width: '100%',\n readOnly: true\n };\n }, []);\n\n var barcodeEditorOptions = useMemo(() => {\n return {\n width: '100%',\n readOnly: true\n };\n }, []);\n\n var posicionEditorOptions = useMemo(() => {\n return {\n width: '100%',\n readOnly: true\n };\n }, []);\n\n var cantidadEditorOptions = useMemo(() => {\n return {\n width: '100%',\n readOnly: true\n };\n }, []);\n\n async function uploadChunk(file, uploadInfo) {\n try {\n var responseS3 = await Storage.put(\"/scwms/\" + id + \"/\" + file.name, uploadInfo.chunkBlob, {\n contentType: file.type,\n ACL: 'public-read'\n });\n\n //Obtenemos el nombre del bucket\n let bucketName = Storage._config.AWSS3.bucket;\n\n\n let apiName = 'AdminSC';\n let path = '/uploadattachment';\n\n let myInit = {\n headers: {\n 'Content-Type': 'application/json',\n Authorization: `${(await Auth.currentSession()).getAccessToken().getJwtToken()}`\n },\n body: {\n action: 'register',\n bucketName: bucketName,\n type: 'scwms',\n id: id,\n Key: \"/scwms/\" + id + \"/\" + file.name,\n fileName: file.name,\n username: JSON.parse(JSON.stringify(await Auth.currentAuthenticatedUser())).username\n }\n }\n\n var attachmentsResult = await API.post(apiName, path, myInit);\n\n //Obtenemos los attachments\n var attachmentsGet = await Storage.list(\"/scwms/\" + id);\n var attachmentsAux = [];\n\n for (var attachmentsGetIndex in attachmentsGet) {\n var singleAttachmentsGet = attachmentsGet[attachmentsGetIndex];\n\n var singleAttachment = {\n name: singleAttachmentsGet.key.split('/').pop(),\n isDirectory: false,\n size: singleAttachmentsGet.size,\n };\n\n attachmentsAux.push(singleAttachment);\n }\n\n setAttachments(attachmentsAux);\n }\n catch (err) {\n console.log(\"Error uploading file:\", err);\n }\n }\n\n async function onAttachmentDeleting(e) {\n var fileName = e.item.key;\n\n //Primero borramos el archivo de S3\n var attachmentsDelete = await Storage.remove(\"/scwms/\" + id + \"/\" + fileName);\n\n //Despues borramos el attachment en Intelisis\n let bucketName = Storage._config.AWSS3.bucket;\n\n let apiName = 'AdminSC';\n let path = '/uploadattachment';\n\n let myInit = {\n headers: {\n 'Content-Type': 'application/json',\n Authorization: `${(await Auth.currentSession()).getAccessToken().getJwtToken()}`\n },\n body: {\n action: 'delete',\n bucketName: bucketName,\n type: 'scwms',\n id: id,\n Key: \"/scwms/\" + id + \"/\" + fileName,\n fileName: fileName,\n username: JSON.parse(JSON.stringify(await Auth.currentAuthenticatedUser())).username\n }\n }\n\n var attachmentsResult = await API.post(apiName, path, myInit);\n\n //Finalmente sincronizamos el state\n var attachmentsGet = await Storage.list(\"/scwms/\" + id);\n var attachmentsAux = [];\n\n for (var attachmentsGetIndex in attachmentsGet) {\n var singleAttachmentsGet = attachmentsGet[attachmentsGetIndex];\n\n var singleAttachment = {\n name: singleAttachmentsGet.key.split('/').pop(),\n isDirectory: false,\n size: singleAttachmentsGet.size,\n };\n\n attachmentsAux.push(singleAttachment);\n }\n\n setAttachments(attachmentsAux);\n };\n\n function downloadBlob(blob, filename) {\n const url = URL.createObjectURL(blob);\n const a = document.createElement('a');\n a.href = url;\n a.download = filename || 'download';\n const clickHandler = () => {\n setTimeout(() => {\n URL.revokeObjectURL(url);\n a.removeEventListener('click', clickHandler);\n }, 150);\n };\n\n a.addEventListener('click', clickHandler, false);\n\n a.click();\n\n return a;\n };\n\n async function onItemDownloading(e) {\n e.cancel = true;\n\n const downloadFileResponse = await Storage.get(\"/scwms/\" + id + \"/\" + e.item.name, { download: true });\n\n downloadBlob(downloadFileResponse.Body, e.item.name);\n };\n\n function openBlob(blob, filename) {\n const url = URL.createObjectURL(blob);\n\n window.open(url, \"_blank\");\n };\n\n async function onAttachmentOpen(e) {\n const downloadFileResponse = await Storage.get(\"/scwms/\" + id + \"/\" + e.file.name, { download: true });\n\n openBlob(downloadFileResponse.Body, e.file.name);\n };\n\n async function getfulfillmentOrderWMSPayload(ID) {\n try {\n let apiName = 'AdminSC';\n let path = '/procesaordensurtido';\n\n let myInit = {\n headers: {\n 'Content-Type': 'application/json',\n Authorization: `${(await Auth.currentSession()).getAccessToken().getJwtToken()}`\n },\n queryStringParameters: {\n ID: ID,\n action: 'payload',\n username: JSON.parse(JSON.stringify(await Auth.currentAuthenticatedUser())).username\n }\n }\n\n var payloadGet = await API.get(apiName, path, myInit);\n\n setFulfillmentOrderWMSPayload(payloadGet);\n\n //Obtenemos los attachments\n var attachmentsGet = await Storage.list(\"/scwms/\" + ID);\n var attachmentsAux = [];\n\n for (var attachmentsGetIndex in attachmentsGet) {\n var singleAttachmentsGet = attachmentsGet[attachmentsGetIndex];\n\n var singleAttachment = {\n name: singleAttachmentsGet.key.split('/').pop(),\n isDirectory: false,\n size: singleAttachmentsGet.size,\n };\n\n attachmentsAux.push(singleAttachment);\n }\n\n setAttachments(attachmentsAux);\n }\n catch (e) {\n if (e === 'No current user') {\n history.push('/');\n\n window.location.reload();\n }\n }\n\n return payloadGet;\n }\n\n const getUsuarioPick = React.useCallback(async (sqlFilter) => {\n let apiName = 'AdminSC';\n let path = '/getcatalogo';\n\n let myInit = {\n headers: {\n 'Content-Type': 'application/json',\n Authorization: `${(await Auth.currentSession()).getAccessToken().getJwtToken()}`\n },\n queryStringParameters: {\n type: 'UsuarioPick',\n username: JSON.parse(JSON.stringify(await Auth.currentAuthenticatedUser())).username,\n sqlFilter: sqlFilter\n }\n }\n\n var usuarioPickGet = await API.get(apiName, path, myInit);\n\n setUsuarioPick(usuarioPickGet);\n }, []);\n\n const getUsuarioPack = React.useCallback(async (sqlFilter) => {\n let apiName = 'AdminSC';\n let path = '/getcatalogo';\n\n let myInit = {\n headers: {\n 'Content-Type': 'application/json',\n Authorization: `${(await Auth.currentSession()).getAccessToken().getJwtToken()}`\n },\n queryStringParameters: {\n type: 'UsuarioPack',\n username: JSON.parse(JSON.stringify(await Auth.currentAuthenticatedUser())).username,\n sqlFilter: sqlFilter\n }\n }\n\n var usuarioPackGet = await API.get(apiName, path, myInit);\n\n setUsuarioPack(usuarioPackGet);\n }, []);\n\n const getAssignFulfillmentOrderWMSPayload = React.useCallback(async (ID, Renglon) => {\n let apiName = 'AdminSC';\n let path = '/getcatalogo';\n\n let myInit = {\n headers: {\n 'Content-Type': 'application/json',\n Authorization: `${(await Auth.currentSession()).getAccessToken().getJwtToken()}`\n },\n queryStringParameters: {\n type: 'AsignarBarcode',\n username: JSON.parse(JSON.stringify(await Auth.currentAuthenticatedUser())).username,\n ID: ID,\n Renglon: Renglon\n }\n }\n\n var assignFulfillmentOrderWMSGet = await API.get(apiName, path, myInit);\n\n setAssignFulfillmentOrderWMSPayload(assignFulfillmentOrderWMSGet);\n }, []);\n\n function editFulfillmentOrderWMS(data) {\n return (\n <Link to={`/FulfillmentOrderWMS/${data.data.ID}`}>\n <button class=\"bg-blue-500 hover:bg-blue-700 text-white py-1 px-3 rounded\" onClick={() => editButton(data.data.ID)}><FontAwesomeIcon icon={permissionLevel === 'Editar' ? faPencilAlt : faGlasses} /> {permissionLevel === 'Editar' ? 'Editar' : 'Ver'}</button>\n </Link>\n )\n }\n\n async function editButton(ID) {\n try {\n if (!window.event.metaKey && !window.event.ctrlKey) {\n setVisibleLoadPanel(true);\n\n setIsDetail(true);\n setId(ID);\n\n var payload = await getfulfillmentOrderWMSPayload(ID);\n\n if (permissionLevel === 'Editar') {\n if (payload.header.Estatus === 'Pendiente') {\n setActivateUpdateForm(true);\n setActivateUpdateGrid(true);\n setActivateSaveButton(true);\n setActivateConfirmButton(false);\n\n setActivatePDFButton(false);\n setActivateAttachments(true);\n setActivateDeleteButton(false);\n setActivateCancelButton(false);\n\n if (!payload.header.ActivarSurtido) {\n setActivateEnableFulfillment(true);\n }\n else {\n setActivateEnableFulfillment(false);\n }\n }\n else if (payload.header.Estatus === 'Cancelado') {\n setActivateUpdateForm(false);\n setActivateUpdateGrid(false);\n setActivateSaveButton(false);\n setActivateConfirmButton(false);\n\n setActivatePDFButton(false);\n setActivateAttachments(false);\n setActivateDeleteButton(false);\n setActivateCancelButton(false);\n setActivateEnableFulfillment(false);\n }\n else if (payload.header.Estatus === 'Concluido') {\n setActivateUpdateForm(false);\n setActivateUpdateGrid(false);\n setActivateSaveButton(false);\n setActivateConfirmButton(false);\n\n setActivatePDFButton(false);\n setActivateAttachments(false);\n setActivateDeleteButton(false);\n setActivateCancelButton(true);\n setActivateEnableFulfillment(false);\n }\n }\n else if (permissionLevel === 'Ver') {\n setActivateUpdateForm(false);\n setActivateUpdateGrid(false);\n setActivateSaveButton(false);\n setActivateConfirmButton(false);\n\n setActivatePDFButton(false);\n setActivateAttachments(false);\n setActivateDeleteButton(false);\n setActivateCancelButton(false);\n setActivateEnableFulfillment(false);\n }\n\n setVisibleLoadPanel(false);\n }\n }\n catch (e) {\n setVisibleLoadPanel(false);\n }\n };\n\n async function cancelEditButton() {\n setIsDetail(false);\n };\n\n async function saveButton() {\n try {\n setVisibleLoadPanel(true);\n\n var ID = fulfillmentOrderWMSPayload.header.ID;\n\n //Despues enviamos todo al backend\n let apiName = 'AdminSC';\n let path = '/procesaordensurtido';\n\n let myInit = {\n headers: {\n 'Content-Type': 'application/json',\n Authorization: `${(await Auth.currentSession()).getAccessToken().getJwtToken()}`\n },\n body: {\n ID: ID,\n payload: fulfillmentOrderWMSPayload,\n action: 'saveChanges',\n username: JSON.parse(JSON.stringify(await Auth.currentAuthenticatedUser())).username,\n usuario: props.usuario,\n sucursal: props.sucursal,\n s3Bucket: Storage._config.AWSS3.bucket\n }\n }\n\n var payloadPost = await API.post(apiName, path, myInit);\n\n if (payloadPost.ok === 'true') {\n setVisibleToast(true);\n setMessageToast('Se actualizó la Orden de Surtido con éxito');\n setTypeToast('success')\n }\n else if (payloadPost.ok === 'false') {\n setVisibleToast(true);\n setMessageToast(payloadPost.message);\n setTypeToast('error')\n }\n\n editButton(ID);\n\n setVisibleLoadPanel(false);\n }\n catch (e) {\n setVisibleLoadPanel(false);\n\n if (e === 'No current user') {\n history.push('/');\n\n window.location.reload();\n }\n }\n };\n\n async function enableFulfillmentButton() {\n try {\n setVisibleLoadPanel(true);\n\n var ID = fulfillmentOrderWMSPayload.header.ID;\n\n //Guardamos los cambios del grid\n if (gridItemsRef.current) {\n var gridItems = gridItemsRef.current.instance();\n\n gridItems.saveEditData();\n }\n\n //Despues enviamos todo al backend\n let apiName = 'AdminSC';\n let path = '/procesaordensurtido';\n\n let myInit = {\n headers: {\n 'Content-Type': 'application/json',\n Authorization: `${(await Auth.currentSession()).getAccessToken().getJwtToken()}`\n },\n body: {\n ID: ID,\n payload: fulfillmentOrderWMSPayload,\n action: 'enableAll',\n usuario: props.usuario,\n sucursal: props.sucursal,\n username: JSON.parse(JSON.stringify(await Auth.currentAuthenticatedUser())).username\n }\n }\n\n var payloadPost = await API.post(apiName, path, myInit);\n\n if (payloadPost.ok === 'true') {\n setVisibleToast(true);\n setMessageToast('Surtido activado con éxito');\n setTypeToast('success')\n }\n else if (payloadPost.ok === 'false') {\n setVisibleToast(true);\n setMessageToast(payloadPost.message);\n setTypeToast('error')\n }\n\n editButton(ID);\n\n setVisibleLoadPanel(false);\n }\n catch (e) {\n setVisibleLoadPanel(false);\n\n if (e === 'No current user') {\n history.push('/');\n\n window.location.reload();\n }\n }\n };\n\n async function enableItemFulfillmentButton(Renglon) {\n try {\n setVisibleLoadPanel(true);\n\n var ID = fulfillmentOrderWMSPayload.header.ID;\n\n //Guardamos los cambios del grid\n if (gridItemsRef.current) {\n var gridItems = gridItemsRef.current.instance();\n\n gridItems.saveEditData();\n }\n\n //Despues enviamos todo al backend\n let apiName = 'AdminSC';\n let path = '/procesaordensurtido';\n\n let myInit = {\n headers: {\n 'Content-Type': 'application/json',\n Authorization: `${(await Auth.currentSession()).getAccessToken().getJwtToken()}`\n },\n body: {\n ID: ID,\n payload: fulfillmentOrderWMSPayload,\n action: 'enableFulfillment',\n username: JSON.parse(JSON.stringify(await Auth.currentAuthenticatedUser())).username,\n usuario: props.usuario,\n sucursal: props.sucursal,\n renglon: Renglon\n }\n }\n\n var payloadPost = await API.post(apiName, path, myInit);\n\n if (payloadPost.ok === 'true') {\n setVisibleToast(true);\n setMessageToast('Surtido activado con éxito');\n setTypeToast('success')\n }\n else if (payloadPost.ok === 'false') {\n setVisibleToast(true);\n setMessageToast(payloadPost.message);\n setTypeToast('error')\n }\n\n editButton(ID);\n\n setVisibleLoadPanel(false);\n }\n catch (e) {\n setVisibleLoadPanel(false);\n\n if (e === 'No current user') {\n history.push('/');\n\n window.location.reload();\n }\n }\n };\n\n async function assignFulfillmentButton(ID, Renglon, EtiquetaPorPieza) {\n await getAssignFulfillmentOrderWMSPayload(ID, Renglon);\n\n if (EtiquetaPorPieza) {\n setAssignBarcode(undefined);\n setAssignRenglon(Renglon);\n\n if (gridAssignFulfillmentOrderWMSRef.current) {\n var gridAssignFulfillmentOrderWMS = gridAssignFulfillmentOrderWMSRef.current.instance();\n\n gridAssignFulfillmentOrderWMS.clearSelection();\n }\n\n setPopupSingleBarcodeTitle('Reasignar Barcode');\n setPopupSingleBarcodeVisible(true);\n }\n else {\n setAssignBarcode(undefined);\n setAssignRenglon(Renglon);\n\n if (gridAssignMultipleFulfillmentOrderWMSRef.current) {\n var gridAssignMultipleFulfillmentOrderWMS = gridAssignMultipleFulfillmentOrderWMSRef.current.instance();\n\n gridAssignMultipleFulfillmentOrderWMS.clearSelection();\n }\n\n setPopupMultipleBarcodeTitle('Reasignar Barcode');\n setPopupMultipleBarcodeVisible(true);\n }\n }\n\n async function cancelItemFulfillmentButton(Renglon) {\n try {\n setVisibleLoadPanel(true);\n\n var ID = fulfillmentOrderWMSPayload.header.ID;\n\n //Guardamos los cambios del grid\n if (gridItemsRef.current) {\n var gridItems = gridItemsRef.current.instance();\n\n gridItems.saveEditData();\n }\n\n //Despues enviamos todo al backend\n let apiName = 'AdminSC';\n let path = '/procesaordensurtido';\n\n let myInit = {\n headers: {\n 'Content-Type': 'application/json',\n Authorization: `${(await Auth.currentSession()).getAccessToken().getJwtToken()}`\n },\n body: {\n ID: ID,\n payload: fulfillmentOrderWMSPayload,\n action: 'cancelFulfillment',\n username: JSON.parse(JSON.stringify(await Auth.currentAuthenticatedUser())).username,\n usuario: props.usuario,\n sucursal: props.sucursal,\n renglon: Renglon\n }\n }\n\n var payloadPost = await API.post(apiName, path, myInit);\n\n if (payloadPost.ok === 'true') {\n setVisibleToast(true);\n setMessageToast('Surtido cancelado con éxito');\n setTypeToast('success')\n }\n else if (payloadPost.ok === 'false') {\n setVisibleToast(true);\n setMessageToast(payloadPost.message);\n setTypeToast('error')\n }\n\n editButton(ID);\n\n setVisibleLoadPanel(false);\n }\n catch (e) {\n setVisibleLoadPanel(false);\n\n if (e === 'No current user') {\n history.push('/');\n\n window.location.reload();\n }\n }\n };\n\n async function finishItemFulfillmentButton(Renglon) {\n try {\n setVisibleLoadPanel(true);\n\n var ID = fulfillmentOrderWMSPayload.header.ID;\n\n //Guardamos los cambios del grid\n if (gridItemsRef.current) {\n var gridItems = gridItemsRef.current.instance();\n\n gridItems.saveEditData();\n }\n\n //Despues enviamos todo al backend\n let apiName = 'AdminSC';\n let path = '/procesaordensurtido';\n\n let myInit = {\n headers: {\n 'Content-Type': 'application/json',\n Authorization: `${(await Auth.currentSession()).getAccessToken().getJwtToken()}`\n },\n body: {\n ID: ID,\n payload: fulfillmentOrderWMSPayload,\n action: 'finishFulfillment',\n username: JSON.parse(JSON.stringify(await Auth.currentAuthenticatedUser())).username,\n usuario: props.usuario,\n sucursal: props.sucursal,\n renglon: Renglon\n }\n }\n\n var payloadPost = await API.post(apiName, path, myInit);\n\n if (payloadPost.ok === 'true') {\n setVisibleToast(true);\n setMessageToast('Surtido finalizado con éxito');\n setTypeToast('success')\n }\n else if (payloadPost.ok === 'false') {\n setVisibleToast(true);\n setMessageToast(payloadPost.message);\n setTypeToast('error')\n }\n\n editButton(ID);\n\n setVisibleLoadPanel(false);\n }\n catch (e) {\n setVisibleLoadPanel(false);\n\n if (e === 'No current user') {\n history.push('/');\n\n window.location.reload();\n }\n }\n };\n\n function refreshButton() {\n if (gridTableroRef.current) {\n var gridTablero = gridTableroRef.current.instance();\n\n gridTablero.refresh();\n }\n }\n\n function printButton() {\n var baseUrl = window.location.href.split('/')[0];\n\n window.open(baseUrl + \"/#/PdfRender?type=fulfillmentorderwms&id=\" + id, \"_blank\");\n };\n\n useEffect(() => {\n window.addEventListener('popstate', (e) => {\n var hash;\n\n try {\n hash = e.target.location.hash;\n }\n catch (e) {\n hash = '';\n }\n\n if (hash === '#/FulfillmentOrderWMS') {\n history.push('/FulfillmentOrderWMS');\n\n window.location.reload();\n }\n });\n\n async function initialize() {\n setVisibleLoadPanel(true);\n\n await getUsuarioPick();\n\n await getUsuarioPack();\n\n setVisibleLoadPanel(false);\n }\n\n initialize();\n\n //En caso de solicitar un ID especifico, redireccionamos a ese ID\n if (!props.match.isExact) {\n var urlID = props.location.pathname.replace('/FulfillmentOrderWMS/', '');\n\n if (urlID === 'undefined')\n urlID = undefined;\n\n if (urlID)\n editButton(urlID);\n }\n // eslint-disable-next-line\n }, []);\n\n function onHidingToast() {\n setVisibleToast(false);\n }\n\n function estatusRelatedRecords(data) {\n return (\n <TransactionStatus {...props} Estatus={data.data.Estatus} />\n )\n };\n\n function enableFulfillItem(data) {\n if (permissionLevel === 'Editar' && data.data.Renglon && (!data.data.Estatus || data.data.Estatus === '') && fulfillmentOrderWMSPayload.header.Estatus === 'Pendiente')\n return (\n <button class=\"bg-green-500 hover:bg-green-700 text-white py-1 px-3 rounded\" onClick={() => enableItemFulfillmentButton(data.data.Renglon)}><FontAwesomeIcon icon={faScannerTouchscreen} size='lg' /></button>\n )\n if (permissionLevel === 'Editar' && data.data.Renglon && data.data.Estatus === 'En Proceso' && fulfillmentOrderWMSPayload.header.Estatus === 'Pendiente' && !data.data.CantidadRecibida)\n return (\n <button class=\"bg-red-500 hover:bg-red-700 text-white py-1 px-3 rounded\" onClick={() => cancelItemFulfillmentButton(data.data.Renglon)}><FontAwesomeIcon icon={faBan} size='lg' /></button>\n )\n if (permissionLevel === 'Editar' && data.data.Renglon && data.data.Estatus === 'En Proceso' && fulfillmentOrderWMSPayload.header.Estatus === 'Pendiente' && data.data.CantidadRecibida)\n return (\n <button class=\"bg-blue-500 hover:bg-blue-700 text-white py-1 px-3 rounded\" onClick={() => finishItemFulfillmentButton(data.data.Renglon)}><FontAwesomeIcon icon={faCheckToSlot} size='lg' /></button>\n )\n };\n\n function assignFulfillItem(data) {\n if (permissionLevel === 'Editar' && data.data.Renglon && (!data.data.Estatus || data.data.Estatus === '') && fulfillmentOrderWMSPayload.header.Estatus === 'Pendiente' && assignFulfillmentOrderWMS)\n return (\n <button class=\"bg-yellow-500 hover:bg-yellow-700 text-white py-1 px-3 rounded\" onClick={() => assignFulfillmentButton(data.data.ID, data.data.Renglon, data.data.EtiquetaPorPieza)}><FontAwesomeIcon icon={faHand} size='lg' /></button>\n )\n };\n\n function onExporting(e) {\n const workbook = new Workbook();\n const worksheet = workbook.addWorksheet('Datos');\n\n exportDataGrid({\n component: e.component,\n worksheet,\n autoFilterEnabled: true,\n }).then(() => {\n workbook.xlsx.writeBuffer().then((buffer) => {\n saveAs(new Blob([buffer], { type: 'application/octet-stream' }), 'Datos.xlsx');\n });\n });\n e.cancel = true;\n };\n\n function onEditorPreparing(e) {\n if (e.parentType === 'dataRow' && e.dataField === 'UsuarioPickAsignado') {\n if (fulfillmentOrderWMSPayload.header.Estatus !== 'Pendiente' || e.row.data.CantidadProcesada || e.row.data.CantidadEmpacada) {\n e.editorOptions.disabled = true;\n }\n }\n\n //Hacemos la data persistente en cuanto el usuario escriba en el campo\n if (e.parentType === \"dataRow\") {\n e.editorOptions.valueChangeEvent = \"input\";\n }\n }\n\n function hidePopupInfo() {\n setPopupSingleBarcodeVisible(false);\n };\n\n function hideMultiplePopupInfo() {\n setPopupMultipleBarcodeVisible(false);\n };\n\n function getTotalSelection() {\n var total = 0;\n\n if (gridAssignMultipleFulfillmentOrderWMSRef.current) {\n var gridAssignMultipleFulfillmentOrderWMS = gridAssignMultipleFulfillmentOrderWMSRef.current.instance();\n\n total = gridAssignMultipleFulfillmentOrderWMS.getTotalSummaryValue('CantidadA');\n\n return parseFloat(total);\n }\n };\n\n async function confirmAssignMultipleButton() {\n if (gridAssignMultipleFulfillmentOrderWMSRef.current) {\n var gridAssignMultipleFulfillmentOrderWMS = gridAssignMultipleFulfillmentOrderWMSRef.current.instance();\n var cantidad = parseFloat(assignFulfillmentOrderWMSPayload.header.Cantidad);\n var total = getTotalSelection();\n var selectedData = gridAssignMultipleFulfillmentOrderWMS.getSelectedRowsData();\n\n if (cantidad === total && total > 0) {\n var result = confirm(\"<i>Se asignarán los Barcodes . ¿Desea continuar?</i> \", \"Resasignar Barcode\");\n result.then(async (dialogResult) => {\n if (dialogResult) {\n try {\n setVisibleLoadPanel(true);\n\n var ID = fulfillmentOrderWMSPayload.header.ID;\n\n var arrayBarcodes = [];\n\n for (var selectedDataIndex in selectedData) {\n var singleSelectedData = selectedData[selectedDataIndex];\n\n if (parseFloat(singleSelectedData.CantidadA)) {\n arrayBarcodes.push({\n Barcode: singleSelectedData.Barcode,\n Cantidad: singleSelectedData.CantidadA\n });\n }\n }\n\n //Enviamos todo al backend\n let apiName = 'AdminSC';\n let path = '/procesaordensurtido';\n\n let myInit = {\n headers: {\n 'Content-Type': 'application/json',\n Authorization: `${(await Auth.currentSession()).getAccessToken().getJwtToken()}`\n },\n body: {\n ID: ID,\n renglon: assignRenglon,\n assignBarcode: assignBarcode,\n payload: {\n Barcodes: arrayBarcodes\n },\n action: 'assignBarcode',\n username: JSON.parse(JSON.stringify(await Auth.currentAuthenticatedUser())).username,\n usuario: props.usuario,\n sucursal: props.sucursal\n }\n };\n\n var payloadPost = await API.post(apiName, path, myInit);\n\n if (payloadPost.ok === 'true') {\n setVisibleToast(true);\n setMessageToast('Barcodes asignados con éxito');\n setTypeToast('success');\n\n setPopupMultipleBarcodeVisible(false);\n\n getfulfillmentOrderWMSPayload(ID);\n }\n else if (payloadPost.ok === 'false') {\n setVisibleToast(true);\n setMessageToast(payloadPost.message);\n setTypeToast('error')\n }\n\n editButton(ID);\n\n setVisibleLoadPanel(false);\n }\n catch (e) {\n setVisibleLoadPanel(false);\n\n if (e === 'No current user') {\n history.push('/');\n\n window.location.reload();\n }\n }\n }\n });\n }\n else {\n setVisibleToast(true);\n setMessageToast('La Cantidad no es igual a la Cantidad a Aplicar');\n setTypeToast('error')\n }\n }\n };\n\n async function confirmAssignButton() {\n if (assignBarcode) {\n var result = confirm(\"<i>Se asignará el Barcode \" + assignBarcode.toString() + \" . ¿Desea continuar?</i> \", \"Resasignar Barcode\");\n\n result.then(async (dialogResult) => {\n if (dialogResult) {\n try {\n setVisibleLoadPanel(true);\n\n var ID = fulfillmentOrderWMSPayload.header.ID;\n\n var arrayInvoice = [];\n\n //Enviamos todo al backend\n let apiName = 'AdminSC';\n let path = '/procesaordensurtido';\n\n let myInit = {\n headers: {\n 'Content-Type': 'application/json',\n Authorization: `${(await Auth.currentSession()).getAccessToken().getJwtToken()}`\n },\n body: {\n ID: ID,\n renglon: assignRenglon,\n assignBarcode: assignBarcode,\n payload: {\n Barcodes: [{\n Barcode: assignBarcode,\n Cantidad: 1\n }]\n },\n action: 'assignBarcode',\n username: JSON.parse(JSON.stringify(await Auth.currentAuthenticatedUser())).username,\n usuario: props.usuario,\n sucursal: props.sucursal\n }\n }\n\n var payloadPost = await API.post(apiName, path, myInit);\n\n if (payloadPost.ok === 'true') {\n setVisibleToast(true);\n setMessageToast('Barcode asignado con éxito');\n setTypeToast('success');\n\n setPopupSingleBarcodeVisible(false);\n\n getfulfillmentOrderWMSPayload(ID);\n }\n else if (payloadPost.ok === 'false') {\n setVisibleToast(true);\n setMessageToast(payloadPost.message);\n setTypeToast('error')\n }\n\n editButton(ID);\n\n setVisibleLoadPanel(false);\n }\n catch (e) {\n setVisibleLoadPanel(false);\n\n if (e === 'No current user') {\n history.push('/');\n\n window.location.reload();\n }\n }\n }\n });\n }\n else {\n setVisibleToast(true);\n setMessageToast('Favor de seleccionar el Barcode a asignar');\n setTypeToast('error')\n }\n };\n\n const onSelectionAssignChanged = React.useCallback(({ selectedRowsData }) => {\n const data = selectedRowsData[0];\n\n if (data) {\n setAssignBarcode(data.Barcode);\n }\n else {\n setAssignBarcode(undefined);\n }\n }, []);\n\n function onEditingAssignStart(e) {\n if (!e.component.isRowSelected(e.key)) {\n e.cancel = true;\n }\n };\n\n function onSelectionChanged(e) {\n if (gridAssignMultipleFulfillmentOrderWMSRef.current) {\n var gridAssignMultipleFulfillmentOrderWMS = gridAssignMultipleFulfillmentOrderWMSRef.current.instance();\n\n for (var deselectedIndex in e.currentDeselectedRowKeys) {\n var deselectedKey = e.currentDeselectedRowKeys[deselectedIndex];\n var rowIndex = gridAssignMultipleFulfillmentOrderWMS.getRowIndexByKey(deselectedKey);\n\n gridAssignMultipleFulfillmentOrderWMS.cellValue(rowIndex, 'CantidadA', null);\n\n gridAssignMultipleFulfillmentOrderWMS.refresh();\n }\n }\n };\n\n return (\n <div>\n {isDetail === false ? (\n <div class=\"bg-gray-200 m-2\">\n <h1 class=\"font-sans inline-block text-xl font-bold text-gray-700 leading-8 align-top mb-1\"><FontAwesomeIcon icon={faList} size=\"lg\" /> Ordenes Surtido</h1>\n </div>\n ) :\n (\n <div class=\"bg-gray-200 m-2\">\n <h1 class=\"font-sans inline-block text-xl font-bold text-gray-700 leading-8 align-top mb-1\"><FontAwesomeIcon icon={faInboxOut} size=\"xl\" /> {(fulfillmentOrderWMSPayload.header ? fulfillmentOrderWMSPayload.header.Movimiento : 'Orden Surtido')}</h1>\n <TransactionStatus {...props} Estatus={fulfillmentOrderWMSPayload.header.Estatus} />\n </div>\n )}\n\n <LoadPanel\n shadingColor=\"rgba(0,0,0,0.4)\"\n visible={visibleLoadPanel}\n showIndicator={true}\n message=\"Por favor espere...\"\n shading={true}\n showPane={true}\n hideOnOutsideClick={false}\n />\n\n <Toast\n visible={visibleToast}\n message={messageToast}\n type={typeToast}\n onHiding={onHidingToast}\n displayTime={5000}\n width={'auto'}\n position={{\n my: 'top center',\n at: 'top center',\n of: window,\n offset: '0 130'\n }}\n />\n\n <div class=\"bg-gray-200 m-2\">\n {isDetail === false ? (\n <div class=\"bg-white p-3 shadow-xl\">\n\n {permissionLevel === 'Editar' ?\n (\n <div>\n <button onClick={refreshButton} type=\"submit\" class=\"mb-4 bg-blue-500 hover:bg-blue-700 text-white font-bold py-2 px-4 rounded\">\n <FontAwesomeIcon icon={faArrowsRotate} /> Actualizar\n </button>\n </div>\n ) :\n (\n <div>\n <button onClick={refreshButton} type=\"submit\" class=\"mb-4 bg-blue-500 hover:bg-blue-700 text-white font-bold py-2 px-4 rounded\">\n <FontAwesomeIcon icon={faArrowsRotate} /> Actualizar\n </button>\n </div>\n )}\n\n <div className=\"options mb-2\">\n <div className=\"option\">\n <CheckBox text=\"Expandir todos los grupos\"\n value={autoExpandAll}\n onValueChanged={onAutoExpandAllChanged}></CheckBox>\n </div>\n </div>\n <DataGrid\n height={800}\n id=\"gridContainer\"\n columnsAutoWidth={true}\n filterBuilder={filterBuilder}\n dataSource={store}\n defaultFilterValue={filterValue}\n allowColumnReordering={true}\n allowColumnResizing={true}\n columnResizingMode={\"widget\"}\n showBorders={true}\n rowAlternationEnabled={true}\n showRowLines={true}\n showColumnLines={true}\n remoteOperations={{ filtering: true }}\n ref={gridTableroRef}\n onExporting={onExporting}\n >\n <Scrolling rowRenderingMode='virtual'></Scrolling>\n <Paging defaultPageSize={10} />\n <Pager\n visible={true}\n allowedPageSizes={allowedPageSizes}\n displayMode='compact'\n showPageSizeSelector={true}\n showInfo={true}\n showNavigationButtons={true}\n />\n <FilterRow visible={true} />\n <FilterPanel visible={true} />\n <FilterBuilderPopup position={filterBuilderPopupPosition} />\n\n <HeaderFilter visible={true} />\n\n <GroupPanel visible={true} />\n <SearchPanel visible={true} />\n <ColumnChooser\n enabled={true}\n mode='select'\n >\n <ColumnChooserSearch\n enabled={true}\n />\n\n <ColumnChooserSelection\n allowSelectAll={true}\n selectByClick={true}\n recursive={true}\n />\n </ColumnChooser>\n <Grouping autoExpandAll={autoExpandAll} />\n <StateStoring enabled={true} type=\"localStorage\" storageKey=\"gridContainerFulfillmentOrderWMS\" />\n <Export enabled={true} />\n\n <Column caption=\"\" alignment=\"center\" width={100} cellRender={editFulfillmentOrderWMS} />\n <Column dataField=\"MovID\" dataType=\"string\" width={110} caption=\"Folio\" />\n <Column dataField=\"FechaEmision\" caption=\"Fecha Emisión\" dataType=\"date\" width={130} />\n <Column dataField=\"Estatus\" dataType=\"string\" width={120} />\n <Column dataField=\"Almacen\" caption=\"Almacén\" dataType=\"number\" width={150} />\n <Column dataField=\"ActivarSurtido\" caption=\"Activar Surtido\" dataType=\"boolean\" width={150} />\n\n <Column caption=\"Plaza\" dataField=\"Plaza\" dataType=\"string\" width={150} visible={false} />\n\n <Column dataField=\"ID\" dataType=\"number\" width={150} visible={false} />\n <Column dataField=\"Mov\" dataType=\"string\" width={190} caption=\"Tipo Movimiento\" visible={false} />\n <Column dataField=\"Movimiento\" dataType=\"string\" width={190} visible={false} />\n <Column dataField=\"Referencia\" dataType=\"string\" width={190} visible={false} />\n <Column dataField=\"TipoSurtido\" caption=\"Tipo de Surtido\" dataType=\"string\" width={190} visible={false} />\n\n <Column dataField=\"Sucursal\" dataType=\"number\" width={150} visible={false} />\n <Column dataField=\"NombreSucursal\" dataType=\"string\" width={190} visible={false} />\n\n <Column dataField=\"NombreAlmacen\" caption=\"Nombre Almacén\" dataType=\"string\" width={190} visible={false} />\n\n <Column dataField=\"Usuario\" dataType=\"string\" width={190} visible={false} />\n <Column dataField=\"NombreUsuario\" dataType=\"string\" width={190} visible={false} />\n </DataGrid>\n </div>\n ) : (<div />)}\n <Route exact path=\"/FulfillmentOrderWMS/:ID\" render={({ match }) => {\n return (\n <div class=\"bg-gray-200\">\n {isDetail.toString() === 'true' ?\n (\n <div>\n <Link to=\"/FulfillmentOrderWMS\">\n <button onClick={cancelEditButton} type=\"submit\" class=\"mb-4 bg-red-500 hover:bg-red-700 text-white font-bold py-2 px-4 rounded\">\n <FontAwesomeIcon icon={faArrowRotateLeft} /> Regresar\n </button>\n </Link>\n\n {activateSaveButton.toString() === 'true' ?\n (\n <button onClick={saveButton} type=\"submit\" class=\"ml-4 mb-4 bg-blue-500 hover:bg-blue-700 text-white font-bold py-2 px-4 rounded\">\n <FontAwesomeIcon icon={faSave} /> Guardar Cambios\n </button>\n ) : (\n <div class=\"inline-block\"></div>\n )}\n\n {activateEnableFulfillment.toString() === 'true' && id ?\n (\n <button onClick={enableFulfillmentButton} type=\"submit\" class=\"ml-4 mb-4 bg-green-500 hover:bg-green-700 text-white font-bold py-2 px-4 rounded\">\n <FontAwesomeIcon icon={faScannerTouchscreen} size='lg' /> Activar Surtido\n </button>\n ) : (\n <div class=\"inline-block\"></div>\n )}\n\n {activatePDFButton.toString() === 'true' && id ?\n (\n <button onClick={printButton} type=\"submit\" class=\"ml-4 mb-4 bg-gray-500 hover:bg-gray-700 text-white font-bold py-2 px-4 rounded\">\n <FontAwesomeIcon icon={faFilePdf} /> PDF\n </button>\n ) :\n (\n <div class=\"inline-block\"></div>\n )}\n\n <div class=\"bg-white p-4 shadow-xl\">\n <Popup\n visible={popupSingleBarcodeVisible}\n onHiding={hidePopupInfo}\n dragEnabled={true}\n hideOnOutsideClick={false}\n showCloseButton={true}\n showTitle={true}\n title={popupSingleBarcodeTitle}\n resizeEnabled={true}\n >\n <button onClick={confirmAssignButton} type=\"submit\" class=\"mb-4 bg-blue-500 hover:bg-blue-700 text-white font-bold py-2 px-4 rounded\">\n <FontAwesomeIcon icon={faHand} /> Asignar Barcode\n </button>\n\n <Form\n id=\"formAssignFulfillmentOrderWMS\"\n labelMode={'outside'}\n formData={assignFulfillmentOrderWMSPayload}\n readOnly={!activateUpdateForm}\n showColonAfterLabel={false}\n labelLocation={'top'}\n ref={formAssignFulfillmentOrderWMSRef}\n >\n <GroupItem caption=\"Datos Producto\" colCount={3}>\n <Item dataField=\"header.NombreArticulo\" editorOptions={nombreArticuloEditorOptions}>\n <Label text=\"Nombre Artículo\" />\n </Item>\n <Item dataField=\"header.Barcode\" editorOptions={barcodeEditorOptions}>\n <Label text=\"Barcode\" />\n </Item>\n <Item dataField=\"header.Posicion\" editorOptions={posicionEditorOptions}>\n <Label text=\"Posicion\" />\n </Item>\n </GroupItem>\n <GroupItem caption=\"Barcodes Disponibles\">\n <DataGrid\n id=\"gridAssignFulfillmentOrderWMS\"\n dataSource={assignFulfillmentOrderWMSPayload.detail}\n allowColumnReordering={true}\n columnsAutoWidth={true}\n allowColumnResizing={true}\n columnResizingMode={\"widget\"}\n showBorders={true}\n rowAlternationEnabled={false}\n showRowLines={true}\n showColumnLines={true}\n onSelectionChanged={onSelectionAssignChanged}\n ref={gridAssignFulfillmentOrderWMSRef}\n >\n <Scrolling rowRenderingMode='virtual'></Scrolling>\n <Paging defaultPageSize={10} />\n <Pager\n visible={true}\n allowedPageSizes={allowedPageSizes}\n displayMode='compact'\n showPageSizeSelector={true}\n showInfo={true}\n showNavigationButtons={true}\n />\n\n <FilterRow visible={true} />\n <FilterPanel visible={true} />\n <FilterBuilderPopup position={filterBuilderPopupPosition} />\n\n <HeaderFilter visible={true} />\n\n <GroupPanel visible={true} />\n <SearchPanel visible={true} />\n <ColumnChooser\n enabled={true}\n mode='select'\n >\n <ColumnChooserSearch\n enabled={true}\n />\n\n <ColumnChooserSelection\n allowSelectAll={true}\n selectByClick={true}\n recursive={true}\n />\n </ColumnChooser>\n <Grouping autoExpandAll={autoExpandAll} />\n\n <Selection mode=\"single\" />\n\n <Column dataField=\"Barcode\" caption=\"Barcode\" dataType=\"number\" width={100} visible={true} />\n <Column dataField=\"Almacen\" caption=\"Almacén\" dataType=\"string\" width={100} visible={true} />\n <Column dataField=\"Cantidad\" caption=\"Cantidad\" dataType=\"number\" width={150} visible={true} format=',###' />\n <Column dataField=\"Posicion\" caption=\"Posición\" dataType=\"string\" width={120} visible={true} />\n <Column dataField=\"FechaIngreso\" caption=\"Fecha de Ingreso\" dataType=\"date\" width={150} visible={true} />\n </DataGrid>\n </GroupItem>\n </Form>\n </Popup>\n\n <Popup\n visible={popupMultipleBarcodeVisible}\n onHiding={hideMultiplePopupInfo}\n dragEnabled={true}\n hideOnOutsideClick={false}\n showCloseButton={true}\n showTitle={true}\n title={popupMultipleBarcodeTitle}\n resizeEnabled={true}\n >\n <button onClick={confirmAssignMultipleButton} type=\"submit\" class=\"mb-4 bg-blue-500 hover:bg-blue-700 text-white font-bold py-2 px-4 rounded\">\n <FontAwesomeIcon icon={faHand} /> Asignar Barcode(s)\n </button>\n\n <Form\n id=\"formAssignMultipleFulfillmentOrderWMS\"\n labelMode={'outside'}\n formData={assignFulfillmentOrderWMSPayload}\n readOnly={!activateUpdateForm}\n showColonAfterLabel={false}\n labelLocation={'top'}\n ref={formAssignMultipleFulfillmentOrderWMSRef}\n >\n <GroupItem caption=\"Datos Producto\" colCount={4}>\n <Item dataField=\"header.NombreArticulo\" editorOptions={nombreArticuloEditorOptions}>\n <Label text=\"Nombre Artículo\" />\n </Item>\n <Item dataField=\"header.Barcode\" editorOptions={barcodeEditorOptions}>\n <Label text=\"Barcode\" />\n </Item>\n <Item dataField=\"header.Posicion\" editorOptions={posicionEditorOptions}>\n <Label text=\"Posicion\" />\n </Item>\n <Item dataField=\"header.Cantidad\" editorOptions={cantidadEditorOptions}>\n <Label text=\"Cantidad\" />\n </Item>\n </GroupItem>\n <GroupItem caption=\"Barcodes Disponibles\">\n <DataGrid\n id=\"gridAssignMultipleFulfillmentOrderWMS\"\n keyExpr='Barcode'\n dataSource={assignFulfillmentOrderWMSPayload.detail}\n allowColumnReordering={true}\n columnsAutoWidth={true}\n allowColumnResizing={true}\n columnResizingMode={\"widget\"}\n showBorders={true}\n rowAlternationEnabled={false}\n showRowLines={true}\n showColumnLines={true}\n onEditingStart={onEditingAssignStart}\n onSelectionChanged={onSelectionChanged}\n ref={gridAssignMultipleFulfillmentOrderWMSRef}\n repaintChangesOnly={true}\n >\n <Scrolling rowRenderingMode='virtual'></Scrolling>\n <Paging defaultPageSize={10} />\n <Pager\n visible={true}\n allowedPageSizes={allowedPageSizes}\n displayMode='compact'\n showPageSizeSelector={true}\n showInfo={true}\n showNavigationButtons={true}\n />\n\n <FilterRow visible={true} />\n <FilterPanel visible={true} />\n <FilterBuilderPopup position={filterBuilderPopupPosition} />\n\n <HeaderFilter visible={true} />\n\n <GroupPanel visible={true} />\n <SearchPanel visible={true} />\n <ColumnChooser\n enabled={true}\n mode='select'\n >\n <ColumnChooserSearch\n enabled={true}\n />\n\n <ColumnChooserSelection\n allowSelectAll={true}\n selectByClick={true}\n recursive={true}\n />\n </ColumnChooser>\n <Grouping autoExpandAll={autoExpandAll} />\n\n <Selection mode=\"multiple\" allowSelectAll={false} />\n\n <Editing\n mode=\"cell\"\n newRowPosition=\"last\"\n allowUpdating={activateUpdateGrid}\n allowAdding={false}\n allowDeleting={false}\n />\n\n <Column dataField=\"Barcode\" caption=\"Barcode\" dataType=\"number\" width={100} visible={true} allowEditing={false} />\n <Column dataField=\"Almacen\" caption=\"Almacén\" dataType=\"string\" width={100} visible={true} allowEditing={false} />\n <Column dataField=\"Cantidad\" caption=\"Cantidad\" dataType=\"number\" width={150} visible={true} format=',###' allowEditing={false} />\n <Column dataField=\"Posicion\" caption=\"Posición\" dataType=\"string\" width={120} visible={true} allowEditing={false} />\n <Column dataField=\"FechaIngreso\" caption=\"Fecha de Ingreso\" dataType=\"date\" width={150} visible={true} allowEditing={false} />\n <Column dataField=\"CantidadA\" caption=\"Cantidad a aplicar\" dataType=\"number\" width={200} visible={true} format=',###' allowEditing={true} />\n <Summary recalculateWhileEditing={true}>\n <TotalItem\n column=\"CantidadA\"\n summaryType=\"sum\"\n valueFormat=\",###\"\n displayFormat=\"Cantidad a aplicar {0}\"\n showInColumn=\"CantidadA\"\n >\n </TotalItem>\n </Summary>\n </DataGrid>\n </GroupItem>\n </Form>\n </Popup>\n\n <Form\n id=\"formTransaccion\"\n labelMode={'outside'}\n formData={fulfillmentOrderWMSPayload.header}\n readOnly={!activateUpdateForm}\n showColonAfterLabel={false}\n labelLocation={'top'}\n ref={formDatosGeneralesRef}\n >\n <TabbedItem>\n <TabPanelOptions deferRendering={false} showNavButtons={true} />\n <Tab title=\"Datos Generales\" colCount={6}>\n <GroupItem caption=\"General\" colSpan={6} colCount={2}>\n <Item cssClass=\"boldText\" dataField=\"Movimiento\" editorOptions={movimientoEditorOptions} >\n <RequiredRule message=\"Movimiento es requerido\" />\n </Item>\n <Item dataField=\"FechaEmision\" editorType=\"dxDateBox\" editorOptions={fechaEmisionEditorOptions}>\n <Label text={\"Fecha Emisión\"} />\n <RequiredRule message=\"Fecha Emisión es requerida\" />\n </Item>\n <Item dataField=\"NombreAlmacen\" editorOptions={nombreAlmacenEditorOptions}>\n <Label text={\"Almacén\"} />\n <RequiredRule message=\"Almacén es requerido\" />\n </Item>\n <Item dataField=\"TipoSurtido\" editorOptions={tipoSurtidoEditorOptions}>\n <Label text={\"Tipo de Surtido\"} />\n </Item>\n <Item dataField=\"Referencia\" editorOptions={referenciaEditorOptions}>\n <Label text={\"Referencia\"} />\n </Item>\n </GroupItem>\n <GroupItem caption=\"Artículos\" colSpan={6} >\n <DataGrid\n id=\"gridItems\"\n ref={gridItemsRef}\n columnsAutoWidth={true}\n dataSource={fulfillmentOrderWMSPayload.detail}\n showBorders={true}\n showColumnLines={true}\n showRowLines={true}\n rowAlternationEnabled={true}\n allowColumnResizing={true}\n columnResizingMode=\"widget\"\n allowColumnReordering={false}\n repaintChangesOnly={true}\n onEditorPreparing={onEditorPreparing}\n >\n <Editing\n mode=\"cell\"\n allowUpdating={activateUpdateGrid}\n allowAdding={false}\n allowDeleting={false}\n />\n <Sorting mode=\"none\" />\n\n <Column dataField=\"Renglon\" caption=\"Renglón\" width={80} visible={false} allowEditing={false} />\n <Column dataField=\"RenglonID\" width={190} visible={false} allowEditing={false} />\n\n <Column dataField=\"Almacen\" caption=\"Almacén\" width={80} allowEditing={false} dataType=\"string\" />\n <Column dataField=\"Posicion\" caption=\"Posición\" width={80} allowEditing={false} dataType=\"string\" />\n <Column dataField=\"Barcode\" caption=\"Barcode\" width={80} allowEditing={false} dataType=\"string\" />\n <Column dataField=\"ArtDescripcion\" caption=\"Artículo\" width={340} allowEditing={false} dataType=\"string\" />\n <Column dataField=\"Referencia\" caption=\"Referencia\" width={150} allowEditing={false} visible={false} dataType=\"string\" />\n <Column dataField=\"Cantidad\" caption=\"Cantidad\" width={80} allowEditing={false} dataType=\"string\" format=',###' />\n <Column dataField=\"CantidadProcesada\" caption=\"Cant. Procesada\" width={130} allowEditing={false} dataType=\"string\" format=',###' />\n <Column dataField=\"CantidadEmpacada\" caption=\"Cant. Empacada\" width={130} allowEditing={false} dataType=\"string\" format=',###' />\n <Column dataField=\"CantidadEnviada\" caption=\"Cant. Enviada\" width={130} allowEditing={false} dataType=\"string\" format=',###' />\n <Column dataField=\"UsuarioPickAsignado\" caption=\"Usuario Pick\" width={200} visible={true} dataType=\"string\" editorOptions={usuarioPickAsignadoEditorOptions}>\n <Lookup\n dataSource={usuarioPick}\n displayExpr=\"name\"\n valueExpr=\"value\"\n />\n </Column>\n <Column caption=\"Estatus\" alignment=\"center\" width={120} cellRender={estatusRelatedRecords} />\n <Column caption=\"\" alignment=\"center\" width={60} cellRender={enableFulfillItem} />\n <Column caption=\"\" alignment=\"center\" width={60} cellRender={assignFulfillItem} />\n </DataGrid>\n </GroupItem>\n </Tab>\n <Tab title=\"Observaciones\" >\n <Item dataField=\"Observaciones\" editorType=\"dxTextArea\" >\n <Label text=\"Observaciones\" visible={false} />\n </Item>\n </Tab>\n <Tab title=\"Mensajes WMS\">\n <DataGrid\n id=\"gridMensajesWMS\"\n columnsAutoWidth={true}\n dataSource={fulfillmentOrderWMSPayload.wmsmessage}\n allowColumnReordering={true}\n allowColumnResizing={true}\n columnResizingMode={\"widget\"}\n showBorders={true}\n rowAlternationEnabled={true}\n showRowLines={true}\n showColumnLines={true}\n >\n <Scrolling rowRenderingMode='virtual'></Scrolling>\n <Paging defaultPageSize={10} />\n <Pager\n visible={true}\n allowedPageSizes={allowedPageSizes}\n displayMode='compact'\n showPageSizeSelector={true}\n showInfo={true}\n showNavigationButtons={true}\n />\n\n <FilterRow visible={true} />\n <FilterPanel visible={true} />\n <FilterBuilderPopup position={filterBuilderPopupPosition} />\n\n <HeaderFilter visible={true} />\n\n <GroupPanel visible={true} />\n <SearchPanel visible={true} />\n <ColumnChooser\n enabled={true}\n mode='select'\n >\n <ColumnChooserSearch\n enabled={true}\n />\n\n <ColumnChooserSelection\n allowSelectAll={true}\n selectByClick={true}\n recursive={true}\n />\n </ColumnChooser>\n <Grouping autoExpandAll={autoExpandAll} />\n\n <Column dataField=\"Mensaje\" dataType=\"string\" width={120} caption=\"Mensaje\" />\n <Column dataField=\"Renglon\" dataType=\"number\" width={100} caption=\"Renglon\" />\n <Column dataField=\"Barcode\" dataType=\"string\" width={140} caption=\"Barcode\" />\n <Column dataField=\"Articulo\" dataType=\"string\" width={120} caption=\"Artículo\" />\n <Column dataField=\"Cantidad\" dataType=\"number\" width={120} caption=\"Cantidad\" format=',###' />\n <Column dataField=\"username\" dataType=\"string\" width={140} caption=\"Usuario WMS\" />\n <Column dataField=\"Fecha\" dataType=\"date\" width={100} caption=\"Fecha\" />\n <Column dataField=\"Almacen\" dataType=\"string\" width={120} caption=\"Almacén\" />\n <Column dataField=\"Posicion\" dataType=\"string\" width={120} caption=\"Posición\" />\n <Column dataField=\"BarcodeA\" dataType=\"string\" width={180} caption=\"Barcode Procesado\" />\n <Column dataField=\"BarcodeNuevo\" dataType=\"string\" width={180} caption=\"Nuevo Barcode\" />\n </DataGrid>\n </Tab>\n <Tab title=\"Log Estatus\">\n <DataGrid\n id=\"gridLogEstatus\"\n columnsAutoWidth={true}\n dataSource={fulfillmentOrderWMSPayload.movEstatusLog}\n allowColumnReordering={true}\n allowColumnResizing={true}\n columnResizingMode={\"widget\"}\n showBorders={true}\n rowAlternationEnabled={true}\n showRowLines={true}\n showColumnLines={true}\n >\n <HeaderFilter visible={false} />\n <Column dataField=\"Usuario\" dataType=\"string\" width={350} caption=\"Usuario\" />\n <Column caption=\"Estatus\" alignment=\"center\" width={150} cellRender={estatusRelatedRecords} />\n <Column dataField=\"Fecha\" dataType=\"datetime\" width={300} caption=\"Fecha\" />\n </DataGrid>\n </Tab>\n <Tab title=\"Archivos Anexos\" >\n <div className=\"widget-container\">\n <FileUploader\n multiple={true}\n accept=\"*\"\n uploadMode=\"useButtons\"\n chunkSize={20000000}\n maxFileSize={20000000}\n uploadChunk={uploadChunk}\n disabled={!activateAttachments}\n />\n </div>\n <div id=\"wrapper\" className=\"show-widget\" >\n <div id=\"widget-area\">\n <FileManager id=\"attachmentManager\" fileSystemProvider={attachments} onItemDeleting={onAttachmentDeleting} onItemDownloading={onItemDownloading} onSelectedFileOpened={onAttachmentOpen}>\n <Permissions\n create={false}\n copy={false}\n move={false}\n delete={activateAttachments}\n rename={false}\n upload={false}\n download={true}\n >\n </Permissions>\n </FileManager>\n </div>\n </div>\n </Tab>\n </TabbedItem>\n </Form>\n </div>\n </div>\n ) :\n (\n <div></div>\n )\n }\n </div>\n )\n }}\n />\n </div>\n </div>\n );\n}\n","import React, { useState, useEffect, useRef, useMemo } from 'react';\n\n// LoadPanel\nimport { LoadPanel } from 'devextreme-react/load-panel';\n\n// Toast\nimport { Toast } from 'devextreme-react/toast';\n\n//Form\nimport Form, { GroupItem, Label, TabbedItem, TabPanelOptions, Tab, EmptyItem } from 'devextreme-react/form';\n\nimport { Auth, API, Storage, label } from 'aws-amplify';\n\n// Ruteador\nimport { Route, Link, useHistory } from \"react-router-dom\";\n\n// Grid\nimport DataGrid, {\n Column, FilterRow, HeaderFilter, FilterPanel, FilterBuilderPopup,\n GroupPanel, Grouping, SearchPanel, Sorting, Editing, Lookup, Toolbar, Item, RequiredRule,\n Scrolling, Pager, Paging, Summary, TotalItem, StateStoring, ColumnChooser, Format, Selection,\n Export, ColumnChooserSearch, ColumnChooserSelection\n} from 'devextreme-react/data-grid';\n\n//CheckBox\nimport CheckBox from 'devextreme-react/check-box';\n\n// Iconos\nimport { FontAwesomeIcon } from \"@fortawesome/react-fontawesome\";\nimport { faPencilAlt } from \"@fortawesome/pro-solid-svg-icons\";\nimport { faArrowRotateLeft } from \"@fortawesome/pro-solid-svg-icons\";\nimport { faSave } from \"@fortawesome/pro-solid-svg-icons\";\nimport { faList } from \"@fortawesome/pro-duotone-svg-icons\";\nimport { faArrowsRotate } from \"@fortawesome/pro-solid-svg-icons\";\nimport { faWarehouseFull } from \"@fortawesome/pro-duotone-svg-icons\";\n\nimport 'devextreme/data/odata/store';\nimport CustomStore from 'devextreme/data/custom_store';\n\nimport '../ListStyle.css';\n\nimport dxDateBox from \"devextreme/ui/date_box\";\n\nimport dxNumberBox from \"devextreme/ui/number_box\";\n\nimport { Workbook } from 'exceljs';\nimport { saveAs } from 'file-saver';\nimport { exportDataGrid } from 'devextreme/excel_exporter'\n\ndxDateBox.defaultOptions({\n options: {\n dateSerializationFormat: \"yyyy-MM-dd\"\n }\n});\n\ndxNumberBox.defaultOptions({\n options: {\n step: 0\n }\n});\n\nfunction isNotEmpty(value) {\n return value !== undefined && value !== null && value !== '';\n}\n\nexport default function WarehouseWMS(props) {\n const history = useHistory();\n\n const [isDetail, setIsDetail] = useState(false);\n const [almacen, setAlmacen] = useState();\n const [almPosRecibo, setAlmPosRecibo] = useState();\n const [almPosTransito, setAlmPosTransito] = useState();\n const [almPosSurtido, setAlmPosSurtido] = useState();\n const [wms, setWMS] = useState(false);\n\n const [warehousePayload, setWarehousePayload] = useState({\n header: {}\n });\n\n const [autoExpandAll, setAutoExpandAll] = useState(true);\n\n const [visibleLoadPanel, setVisibleLoadPanel] = useState(false);\n\n const [visibleToast, setVisibleToast] = useState(false);\n const [messageToast, setMessageToast] = useState('');\n const [typeToast, setTypeToast] = useState('success');\n\n const [activateUpdateForm, setActivateUpdateForm] = useState(false);\n const [activateSaveButton, setActivateSaveButton] = useState(false);\n\n //Ref para el form\n const [formDatosGeneralesRef, setFormDatosGeneralesRef] = useState(React.createRef());\n\n const filterBuilderPopupPosition = {\n of: window,\n at: 'top',\n my: 'top',\n offset: { y: 10 },\n };\n\n const allowedPageSizes = [5, 10, 15, 20, 'all'];\n\n function getOrderDay(rowData) {\n return (new Date(rowData.OrderDate)).getDay();\n }\n\n const filterBuilder = {\n customOperations: [{\n name: 'weekends',\n caption: 'Weekends',\n dataTypes: ['date'],\n icon: 'check',\n hasValue: false,\n calculateFilterExpression: () => [[getOrderDay, '=', 0], 'or', [getOrderDay, '=', 6]],\n }],\n allowHierarchicalFields: true,\n };\n\n //Ref para el grid Tablero de Control\n const [gridTableroRef, setGridTableroRef] = useState(React.createRef());\n\n function onAutoExpandAllChanged() {\n setAutoExpandAll(!autoExpandAll)\n };\n\n async function getWarehouseRecords(sqlFilter) {\n try {\n let apiName = 'AdminSC';\n let path = '/procesaalmacenes';\n\n let myInit = {\n headers: {\n 'Content-Type': 'application/json',\n Authorization: `${(await Auth.currentSession()).getAccessToken().getJwtToken()}`\n },\n queryStringParameters: {\n action: 'list',\n sqlFilter: sqlFilter,\n username: JSON.parse(JSON.stringify(await Auth.currentAuthenticatedUser())).username,\n }\n }\n\n var warehouseGet = await API.get(apiName, path, myInit);\n }\n catch (e) {\n if (e === 'No current user') {\n history.push('/');\n\n window.location.reload();\n }\n }\n\n return warehouseGet;\n }\n\n const store = new CustomStore({\n key: 'Almacen',\n load(loadOptions) {\n let sqlFilter = '(';\n [\n 'filter'\n ].forEach((i) => {\n if (i in loadOptions && isNotEmpty(loadOptions[i])) {\n var filters = loadOptions[i];\n\n var filtersLength = filters.length;\n\n for (var i = 0; i <= filtersLength; i++) {\n var singleFilter = filters[i];\n var singleFilterType = typeof singleFilter;\n var singleFilterIsArray = Array.isArray(singleFilter);\n var singleFilterIsDate = singleFilter instanceof Date;\n\n if (singleFilter === 'NULL') {\n singleFilter = '0';\n }\n\n if (singleFilterType.toString() === 'object' && singleFilterIsArray) {\n sqlFilter += '(';\n\n var subFiltersLength = singleFilter.length;\n\n for (var i2 = 0; i2 <= subFiltersLength; i2++) {\n var singleSubFilter = singleFilter[i2];\n var singleSubFilterType = typeof singleSubFilter;\n var singleSubFilterIsArray = Array.isArray(singleSubFilter);\n var singleSubFilterIsDate = singleSubFilter instanceof Date\n\n if (singleSubFilter === 'NULL') {\n singleSubFilter = '0';\n }\n\n if (singleSubFilterType.toString() === 'object' && singleSubFilterIsArray) {\n sqlFilter += '(';\n\n var subSubFiltersLength = singleSubFilter.length;\n\n for (var i3 = 0; i3 <= subSubFiltersLength; i3++) {\n var singleSubSubFilter = singleSubFilter[i3];\n var singleSubSubFilterType = typeof singleSubSubFilter;\n var singleSubSubFilterIsArray = Array.isArray(singleSubSubFilter);\n var singleSubSubFilterIsDate = singleSubSubFilter instanceof Date\n\n if (singleSubSubFilter === 'NULL') {\n singleSubSubFilter = '0';\n }\n\n if (singleSubSubFilterType.toString() === 'object' && singleSubSubFilterIsArray) {\n sqlFilter += '(';\n\n var subSubSubFiltersLength = singleSubSubFilter.length;\n\n for (var i4 = 0; i4 <= subSubSubFiltersLength; i4++) {\n var singleSubSubSubFilter = singleSubSubFilter[i4];\n var singleSubSubSubFilterType = typeof singleSubSubSubFilter;\n var singleSubSubSubFilterIsArray = Array.isArray(singleSubSubSubFilter);\n var singleSubSubSubFilterIsDate = singleSubSubSubFilter instanceof Date\n\n if (singleSubSubSubFilter === 'NULL') {\n singleSubSubSubFilter = '0';\n }\n\n if (singleSubSubSubFilterType.toString() === 'object' && singleSubSubSubFilterIsArray) {\n sqlFilter += '(';\n\n var subSubSubSubFiltersLength = singleSubSubSubFilter.length;\n\n for (var i5 = 0; i5 <= subSubSubSubFiltersLength; i5++) {\n var singleSubSubSubSubFilter = singleSubSubSubFilter[i5];\n var singleSubSubSubSubFilterType = typeof singleSubSubSubSubFilter;\n var singleSubSubSubSubFilterIsArray = Array.isArray(singleSubSubSubSubFilter);\n var singleSubSubSubSubFilterIsDate = singleSubSubSubSubFilter instanceof Date\n\n if (singleSubSubSubSubFilter === 'NULL') {\n singleSubSubSubSubFilter = '0';\n }\n\n if (singleSubSubSubSubFilterType.toString() === 'string') {\n if (singleSubSubSubSubFilter === 'contains') {\n filters[i][i2][i3][i4][i5] = 'LIKE';\n singleSubSubSubSubFilter = 'LIKE';\n\n filters[i][i2][i3][i4][i5 + 1] = '\\'%' + filters[i][i2][i3][i4][i5 + 1] + '%\\'';\n }\n else if (singleSubSubSubSubFilter === 'notcontains') {\n filters[i][i2][i3][i4][i5] = 'NOT LIKE';\n singleSubSubSubSubFilter = 'NOT LIKE';\n\n filters[i][i2][i3][i4][i5 + 1] = '\\'%' + filters[i][i2][i3][i4][i5 + 1] + '%\\'';\n }\n else if (singleSubSubSubSubFilter === 'startswith') {\n filters[i][i2][i3][i4][i5] = 'LIKE';\n singleSubSubSubSubFilter = 'LIKE';\n\n filters[i][i2][i3][i4][i5 + 1] = '\\'' + filters[i][i2][i3][i4][i5 + 1] + '%\\'';\n }\n else if (singleSubSubSubSubFilter === 'endswith') {\n filters[i][i2][i3][i4][i5] = 'LIKE';\n singleSubSubSubSubFilter = 'LIKE';\n\n filters[i][i2][i3][i4][i5 + 1] = '\\'%' + filters[i][i2][i3][i4][i5 + 1] + '\\'';\n }\n else if (singleSubSubSubSubFilter === '=' || singleSubSubSubSubFilter === '<>' || singleSubSubSubSubFilter === '>' || singleSubSubSubSubFilter === '>=' || singleSubSubSubSubFilter === '<' || singleSubSubSubSubFilter === '<=') {\n if (!filters[i][i2][i3][i4][i5 + 1])\n filters[i][i2][i3][i4][i5 + 1] = 'NULL';\n else if (typeof filters[i][i2][i3][i4][i5 + 1] === 'string') {\n filters[i][i2][i3][i4][i5 + 1] = '\\'' + filters[i][i2][i3][i4][i5 + 1] + '\\'';\n }\n }\n else if (singleSubSubSubSubFilter === '!') {\n filters[i][i2][i3][i4][i5] = 'NOT';\n singleSubSubSubSubFilter = 'NOT';\n }\n\n sqlFilter += ' ' + singleSubSubSubSubFilter + ' ';\n }\n else if (singleSubSubSubSubFilterType.toString() === 'object' && singleSubSubSubSubFilterIsDate) {\n sqlFilter += ' \\'' + singleSubSubSubSubFilter.toISOString().split('T')[0] + '\\' ';\n }\n else if (singleSubSubSubSubFilterType.toString() === 'number') {\n sqlFilter += ' ' + singleSubSubSubSubFilter.toString() + ' ';\n }\n else if (singleSubSubSubSubFilterType.toString() === 'boolean') {\n if (singleSubSubSubSubFilter.toString() === 'true')\n sqlFilter += '1 ';\n else if (singleSubSubSubSubFilter.toString() === 'false' || singleSubSubSubSubFilter === null || singleSubSubSubSubFilter === undefined)\n sqlFilter += '0 ';\n }\n }\n }\n else if (singleSubSubSubFilterType.toString() === 'string') {\n if (singleSubSubSubFilter === 'contains') {\n filters[i][i2][i3][i4] = 'LIKE';\n singleSubSubSubFilter = 'LIKE';\n\n filters[i][i2][i3][i4 + 1] = '\\'%' + filters[i][i2][i3][i4 + 1] + '%\\'';\n }\n else if (singleSubSubSubFilter === 'notcontains') {\n filters[i][i2][i3][i4] = 'NOT LIKE';\n singleSubSubSubFilter = 'NOT LIKE';\n\n filters[i][i2][i3][i4 + 1] = '\\'%' + filters[i][i2][i3][i4 + 1] + '%\\'';\n }\n else if (singleSubSubSubFilter === 'startswith') {\n filters[i][i2][i3][i4] = 'LIKE';\n singleSubSubSubFilter = 'LIKE';\n\n filters[i][i2][i3][i4 + 1] = '\\'' + filters[i][i2][i3][i4 + 1] + '%\\'';\n }\n else if (singleSubSubSubFilter === 'endswith') {\n filters[i][i2][i3][i4] = 'LIKE';\n singleSubSubSubFilter = 'LIKE';\n\n filters[i][i2][i3][i4 + 1] = '\\'%' + filters[i][i2][i3][i4 + 1] + '\\'';\n }\n else if (singleSubSubSubFilter === '=' || singleSubSubSubFilter === '<>' || singleSubSubSubFilter === '>' || singleSubSubSubFilter === '>=' || singleSubSubSubFilter === '<' || singleSubSubSubFilter === '<=') {\n if (!filters[i][i2][i3][i4 + 1])\n filters[i][i2][i3][i4 + 1] = 'NULL';\n else if (typeof filters[i][i2][i3][i4 + 1] === 'string') {\n filters[i][i2][i3][i4 + 1] = '\\'' + filters[i][i2][i3][i4 + 1] + '\\'';\n }\n }\n else if (singleSubSubSubFilter === '!') {\n filters[i][i2][i3][i4] = 'NOT';\n singleSubSubSubFilter = 'NOT';\n }\n\n sqlFilter += ' ' + singleSubSubSubFilter + ' ';\n }\n else if (singleSubSubSubFilterType.toString() === 'object' && singleSubSubSubFilterIsDate) {\n sqlFilter += ' \\'' + singleSubSubSubFilter.toISOString().split('T')[0] + '\\' ';\n }\n else if (singleSubSubSubFilterType.toString() === 'number') {\n sqlFilter += ' ' + singleSubSubSubFilter.toString() + ' ';\n }\n else if (singleSubSubSubFilterType.toString() === 'boolean') {\n if (singleSubSubSubFilter.toString() === 'true')\n sqlFilter += '1 ';\n else if (singleSubSubSubFilter.toString() === 'false' || singleSubSubSubFilter === null || singleSubSubSubFilter === undefined)\n sqlFilter += '0 ';\n }\n }\n\n sqlFilter += ')';\n }\n else if (singleSubSubFilterType.toString() === 'string') {\n if (singleSubSubFilter === 'contains') {\n filters[i][i2][i3] = 'LIKE';\n singleSubSubFilter = 'LIKE';\n\n filters[i][i2][i3 + 1] = '\\'%' + filters[i][i2][i3 + 1] + '%\\'';\n }\n else if (singleSubSubFilter === 'notcontains') {\n filters[i][i2][i3] = 'NOT LIKE';\n singleSubSubFilter = 'NOT LIKE';\n\n filters[i][i2][i3 + 1] = '\\'%' + filters[i][i2][i3 + 1] + '%\\'';\n }\n else if (singleSubSubFilter === 'startswith') {\n filters[i][i2][i3] = 'LIKE';\n singleSubSubFilter = 'LIKE';\n\n filters[i][i2][i3 + 1] = '\\'' + filters[i][i2][i3 + 1] + '%\\'';\n }\n else if (singleSubSubFilter === 'endswith') {\n filters[i][i2][i3] = 'LIKE';\n singleSubSubFilter = 'LIKE';\n\n filters[i][i2][i3 + 1] = '\\'%' + filters[i][i2][i3 + 1] + '\\'';\n }\n else if (singleSubSubFilter === '=' || singleSubSubFilter === '<>' || singleSubSubFilter === '>' || singleSubSubFilter === '>=' || singleSubSubFilter === '<' || singleSubSubFilter === '<=') {\n if (!filters[i][i2][i3 + 1])\n filters[i][i2][i3 + 1] = 'NULL';\n else if (typeof filters[i][i2][i3 + 1] === 'string') {\n filters[i][i2][i3 + 1] = '\\'' + filters[i][i2][i3 + 1] + '\\'';\n }\n }\n else if (singleSubSubFilter === '!') {\n filters[i][i2][i3] = 'NOT';\n singleSubSubFilter = 'NOT';\n }\n sqlFilter += ' ' + singleSubSubFilter + ' ';\n }\n else if (singleSubSubFilterType.toString() === 'object' && singleSubSubFilterIsDate) {\n sqlFilter += ' \\'' + singleSubSubFilter.toISOString().split('T')[0] + '\\' ';\n }\n else if (singleSubSubFilterType.toString() === 'number') {\n sqlFilter += ' ' + singleSubSubFilter.toString() + ' ';\n }\n else if (singleSubSubFilterType.toString() === 'boolean') {\n if (singleSubSubFilter.toString() === 'true')\n sqlFilter += '1 ';\n else if (singleSubSubFilter.toString() === 'false' || singleSubSubFilter === null || singleSubSubFilter === undefined)\n sqlFilter += '0 ';\n }\n }\n\n sqlFilter += ')';\n }\n else if (singleSubFilterType.toString() === 'string') {\n if (singleSubFilter === 'contains') {\n filters[i][i2] = 'LIKE';\n singleSubFilter = 'LIKE';\n\n filters[i][i2 + 1] = '\\'%' + filters[i][i2 + 1] + '%\\'';\n }\n else if (singleSubFilter === 'notcontains') {\n filters[i][i2] = 'NOT LIKE';\n singleSubFilter = 'NOT LIKE';\n\n filters[i][i2 + 1] = '\\'%' + filters[i][i2 + 1] + '%\\'';\n }\n else if (singleSubFilter === 'startswith') {\n filters[i][i2] = 'LIKE';\n singleSubFilter = 'LIKE';\n\n filters[i][i2 + 1] = '\\'' + filters[i][i2 + 1] + '%\\'';\n }\n else if (singleSubFilter === 'endswith') {\n filters[i][i2] = 'LIKE';\n singleSubFilter = 'LIKE';\n\n filters[i][i2 + 1] = '\\'%' + filters[i][i2 + 1] + '\\'';\n }\n else if (singleSubFilter === '=' || singleSubFilter === '<>' || singleSubFilter === '>' || singleSubFilter === '>=' || singleSubFilter === '<' || singleSubFilter === '<=') {\n if (!filters[i][i2 + 1])\n filters[i][i2 + 1] = 'NULL';\n else if (typeof filters[i][i2 + 1] === 'string') {\n filters[i][i2 + 1] = '\\'' + filters[i][i2 + 1] + '\\'';\n }\n }\n else if (singleSubFilter === '!') {\n filters[i][i2] = 'NOT';\n singleSubFilter = 'NOT';\n }\n sqlFilter += ' ' + singleSubFilter + ' ';\n }\n else if (singleSubFilterType.toString() === 'object' && singleSubFilterIsDate) {\n sqlFilter += ' \\'' + singleSubFilter.toISOString().split('T')[0] + '\\' ';\n }\n else if (singleSubFilterType.toString() === 'number') {\n sqlFilter += ' ' + singleSubFilter.toString() + ' ';\n }\n else if (singleSubFilterType.toString() === 'boolean') {\n if (singleSubFilter.toString() === 'true')\n sqlFilter += '1 ';\n else if (singleSubFilter.toString() === 'false' || singleSubFilter === null || singleSubFilter === undefined)\n sqlFilter += '0 ';\n }\n }\n\n sqlFilter += ')';\n }\n else if (singleFilterType.toString() === 'string') {\n if (singleFilter === 'contains') {\n filters[i] = 'LIKE';\n singleFilter = 'LIKE';\n\n filters[i + 1] = '\\'%' + filters[i + 1] + '%\\'';\n }\n else if (singleFilter === 'notcontains') {\n filters[i] = 'NOT LIKE';\n singleFilter = 'NOT LIKE';\n\n filters[i + 1] = '\\'%' + filters[i + 1] + '%\\'';\n }\n else if (singleFilter === 'startswith') {\n filters[i] = 'LIKE';\n singleFilter = 'LIKE';\n\n filters[i + 1] = '\\'' + filters[i + 1] + '%\\'';\n }\n else if (singleFilter === 'endswith') {\n filters[i] = 'LIKE';\n singleFilter = 'LIKE';\n\n filters[i + 1] = '\\'%' + filters[i + 1] + '\\'';\n }\n else if (singleFilter === '=' || singleFilter === '<>' || singleFilter === '>' || singleFilter === '>=' || singleFilter === '<' || singleFilter === '<=') {\n if (!filters[i + 1])\n filters[i + 1] = 'NULL';\n else if (typeof filters[i + 1] === 'string') {\n filters[i + 1] = '\\'' + filters[i + 1] + '\\'';\n }\n }\n else if (singleFilter === '!') {\n filters[i] = 'NOT';\n singleFilter = 'NOT';\n }\n sqlFilter += ' ' + singleFilter + ' ';\n }\n else if (singleFilterType.toString() === 'object' && singleFilterIsDate) {\n sqlFilter += ' \\'' + singleFilter.toISOString().split('T')[0] + '\\' ';\n }\n else if (singleFilterType.toString() === 'number') {\n sqlFilter += ' ' + singleFilter.toString() + ' ';\n }\n else if (singleFilterType.toString() === 'boolean') {\n if (singleFilter.toString() === 'true')\n sqlFilter += '1 ';\n else if (singleFilter.toString() === 'false' || singleFilter === null || singleFilter === undefined)\n sqlFilter += '0 ';\n }\n }\n\n sqlFilter += ')';\n }\n });\n\n async function getRecords() {\n if (sqlFilter === '(')\n sqlFilter = '';\n\n var records = await getWarehouseRecords(sqlFilter);\n return {\n data: records,\n totalCount: records.length\n };\n }\n\n return getRecords()\n .then(function (result) {\n return result;\n })\n .catch(() => { throw new Error('Data Loading Error'); });\n },\n });\n\n const getWarehousePayload = React.useCallback(async (Almacen) => {\n try {\n let apiName = 'AdminSC';\n let path = '/procesaalmacenes';\n\n let myInit = {\n headers: {\n 'Content-Type': 'application/json',\n Authorization: `${(await Auth.currentSession()).getAccessToken().getJwtToken()}`\n },\n queryStringParameters: {\n Almacen: Almacen,\n action: 'payload',\n username: JSON.parse(JSON.stringify(await Auth.currentAuthenticatedUser())).username,\n }\n }\n\n var payloadGet = await API.get(apiName, path, myInit);\n\n setWarehousePayload(payloadGet);\n }\n catch (e) {\n if (e === 'No current user') {\n history.push('/');\n\n window.location.reload();\n }\n }\n\n return payloadGet;\n }, [history])\n\n function editWarehouse(data) {\n return (\n <Link to={`/WarehouseWMS/${data.data.Almacen}`}>\n <button class=\"bg-blue-500 hover:bg-blue-700 text-white py-1 px-3 rounded\" onClick={() => editButton(data.data.Almacen)}><FontAwesomeIcon icon={faPencilAlt} /> Editar</button>\n </Link>\n )\n }\n\n const getAlmPosTransito = React.useCallback(async (Almacen) => {\n let apiName = 'AdminSC';\n let path = '/getcatalogo';\n\n let myInit = {\n headers: {\n 'Content-Type': 'application/json',\n Authorization: `${(await Auth.currentSession()).getAccessToken().getJwtToken()}`\n },\n queryStringParameters: {\n type: 'AlmPosTransito',\n Almacen: Almacen,\n username: JSON.parse(JSON.stringify(await Auth.currentAuthenticatedUser())).username,\n }\n }\n\n var posicionesGet = await API.get(apiName, path, myInit);\n\n setAlmPosTransito(posicionesGet);\n }, []);\n\n const getAlmSurtido = React.useCallback(async (Almacen) => {\n let apiName = 'AdminSC';\n let path = '/getcatalogo';\n\n let myInit = {\n headers: {\n 'Content-Type': 'application/json',\n Authorization: `${(await Auth.currentSession()).getAccessToken().getJwtToken()}`\n },\n queryStringParameters: {\n type: 'AlmPosSurtido',\n Almacen: Almacen,\n username: JSON.parse(JSON.stringify(await Auth.currentAuthenticatedUser())).username,\n }\n }\n\n var posicionesGet = await API.get(apiName, path, myInit);\n\n setAlmPosSurtido(posicionesGet);\n }, []);\n\n const getAlmPosRecibo = React.useCallback(async (Almacen) => {\n let apiName = 'AdminSC';\n let path = '/getcatalogo';\n\n let myInit = {\n headers: {\n 'Content-Type': 'application/json',\n Authorization: `${(await Auth.currentSession()).getAccessToken().getJwtToken()}`\n },\n queryStringParameters: {\n type: 'AlmPosRecibo',\n Almacen: Almacen,\n username: JSON.parse(JSON.stringify(await Auth.currentAuthenticatedUser())).username,\n }\n }\n\n var posicionesGet = await API.get(apiName, path, myInit);\n\n setAlmPosRecibo(posicionesGet);\n }, []);\n\n const editButton = React.useCallback(async (Almacen) => {\n try {\n if (!window.event.metaKey && !window.event.ctrlKey) {\n setVisibleLoadPanel(true);\n\n setIsDetail(true);\n setAlmacen(Almacen);\n\n var payload = await getWarehousePayload(Almacen);\n\n await getAlmPosTransito(payload.header.Almacen);\n await getAlmPosRecibo(payload.header.Almacen);\n await getAlmSurtido(payload.header.Almacen);\n\n setWMS(payload.header.WMS);\n\n setActivateUpdateForm(true);\n setActivateSaveButton(true);\n\n setVisibleLoadPanel(false);\n }\n }\n catch (e) {\n setVisibleLoadPanel(false);\n }\n }, [getWarehousePayload, getAlmPosTransito, getAlmPosRecibo, getAlmSurtido]);\n\n async function cancelEditButton() {\n setIsDetail(false);\n };\n\n async function saveButton() {\n if (formDatosGeneralesRef.current) {\n var formDatosGenerales = formDatosGeneralesRef.current.instance();\n\n if (warehousePayload.header.WMS) {\n var isValid = formDatosGenerales.validate();\n\n if (!isValid.isValid) {\n setVisibleToast(true);\n setMessageToast(isValid.brokenRules[0].message);\n setTypeToast('error');\n return;\n }\n }\n }\n\n try {\n setVisibleLoadPanel(true);\n\n var Almacen = warehousePayload.header.Almacen;\n\n //Despues enviamos todo al backend\n let apiName = 'AdminSC';\n let path = '/procesaalmacenes';\n\n let myInit = {\n headers: {\n 'Content-Type': 'application/json',\n Authorization: `${(await Auth.currentSession()).getAccessToken().getJwtToken()}`\n },\n body: {\n Almacen: Almacen,\n payload: warehousePayload,\n action: 'saveChanges',\n username: JSON.parse(JSON.stringify(await Auth.currentAuthenticatedUser())).username,\n usuario: props.usuario,\n sucursal: props.sucursal,\n s3Bucket: Storage._config.AWSS3.bucket\n }\n }\n\n var payloadPost = await API.post(apiName, path, myInit);\n\n if (payloadPost.ok === 'true') {\n setVisibleToast(true);\n setMessageToast('Se actualizó el Almacén con éxito');\n setTypeToast('success')\n }\n else if (payloadPost.ok === 'false') {\n setVisibleToast(true);\n setMessageToast(payloadPost.message);\n setTypeToast('error')\n }\n\n editButton(Almacen);\n\n setVisibleLoadPanel(false);\n }\n catch (e) {\n setVisibleLoadPanel(false);\n\n if (e === 'No current user') {\n history.push('/');\n\n window.location.reload();\n }\n }\n };\n\n function refreshButton() {\n if (gridTableroRef.current) {\n var gridTablero = gridTableroRef.current.instance();\n\n gridTablero.refresh();\n }\n }\n\n useEffect(() => {\n window.addEventListener('popstate', (e) => {\n var hash;\n\n try {\n hash = e.target.location.hash;\n }\n catch (e) {\n hash = '';\n }\n\n if (hash === '#/WarehouseWMS') {\n history.push('/WarehouseWMS');\n\n window.location.reload();\n }\n });\n\n async function initialize() {\n setVisibleLoadPanel(true);\n\n setVisibleLoadPanel(false);\n }\n\n initialize();\n\n //En caso de solicitar un ID especifico, redireccionamos a ese ID\n if (!props.match.isExact) {\n var urlID = props.location.pathname.replace('/WarehouseWMS/', '');\n\n if (urlID === 'undefined')\n urlID = undefined;\n\n if (urlID)\n editButton(urlID);\n }\n\n // eslint-disable-next-line\n }, []);\n\n function onHidingToast() {\n setVisibleToast(false);\n }\n\n function onExporting(e) {\n const workbook = new Workbook();\n const worksheet = workbook.addWorksheet('Datos');\n\n exportDataGrid({\n component: e.component,\n worksheet,\n autoFilterEnabled: true,\n }).then(() => {\n workbook.xlsx.writeBuffer().then((buffer) => {\n saveAs(new Blob([buffer], { type: 'application/octet-stream' }), 'Datos.xlsx');\n });\n });\n e.cancel = true;\n };\n\n var almacenEditorOptions = useMemo(() => {\n return {\n width: '100%',\n readOnly: true\n };\n }, []);\n\n var nombreAlmacenEditorOptions = useMemo(() => {\n return {\n width: '100%',\n readOnly: true\n };\n }, []);\n\n var posicionReciboDefEditorOptions = useMemo(() => {\n return {\n dataSource: almPosRecibo,\n displayExpr: 'name',\n valueExpr: 'value',\n searchEnabled: true,\n showClearButton: true\n };\n }, [almPosRecibo]);\n\n var posicionTransitoDefEditorOptions = useMemo(() => {\n return {\n dataSource: almPosTransito,\n displayExpr: 'name',\n valueExpr: 'value',\n searchEnabled: true,\n showClearButton: true\n };\n }, [almPosTransito]);\n\n var posicionPrioritariaEditorOptions = useMemo(() => {\n return {\n dataSource: almPosSurtido,\n displayExpr: 'name',\n valueExpr: 'value',\n searchEnabled: true,\n showClearButton: true\n };\n }, [almPosSurtido]);\n\n const onFieldDataChanged = React.useCallback((e) => {\n if (e.dataField === 'header.WMS') {\n setWMS(!wms);\n }\n }, [wms]);\n\n return (\n <div>\n {isDetail === false ? (\n <div class=\"bg-gray-200 m-2\">\n <h1 class=\"font-sans inline-block text-xl font-bold text-gray-700 leading-8 align-top mb-1\"><FontAwesomeIcon icon={faList} size=\"lg\" /> Almacenes</h1>\n </div>\n ) :\n (\n <div class=\"bg-gray-200 m-2\">\n <h1 class=\"font-sans inline-block text-xl font-bold text-gray-700 leading-8 align-top mb-1\"><FontAwesomeIcon icon={faWarehouseFull} size=\"xl\" /> {(warehousePayload.header ? warehousePayload.header.Almacen : 'Almacén')}</h1>\n </div>\n )}\n\n <LoadPanel\n shadingColor=\"rgba(0,0,0,0.4)\"\n visible={visibleLoadPanel}\n showIndicator={true}\n message=\"Por favor espere...\"\n shading={true}\n showPane={true}\n hideOnOutsideClick={false}\n />\n\n <Toast\n visible={visibleToast}\n message={messageToast}\n type={typeToast}\n onHiding={onHidingToast}\n displayTime={5000}\n width={'auto'}\n position={{\n my: 'top center',\n at: 'top center',\n of: window,\n offset: '0 130'\n }}\n />\n\n <div class=\"bg-gray-200 m-2\">\n {isDetail === false ? (\n <div class=\"bg-white p-3 shadow-xl\">\n <div>\n <button onClick={refreshButton} type=\"submit\" class=\"mb-4 bg-blue-500 hover:bg-blue-700 text-white font-bold py-2 px-4 rounded\">\n <FontAwesomeIcon icon={faArrowsRotate} /> Actualizar\n </button>\n </div>\n\n <div className=\"options mb-2\">\n <div className=\"option\">\n <CheckBox text=\"Expandir todos los grupos\"\n value={autoExpandAll}\n onValueChanged={onAutoExpandAllChanged}></CheckBox>\n </div>\n </div>\n\n <DataGrid\n height={800}\n id=\"gridContainer\"\n columnsAutoWidth={true}\n filterBuilder={filterBuilder}\n dataSource={store}\n allowColumnReordering={true}\n allowColumnResizing={true}\n columnResizingMode={\"widget\"}\n showBorders={true}\n rowAlternationEnabled={true}\n showRowLines={true}\n showColumnLines={true}\n remoteOperations={{ filtering: true }}\n ref={gridTableroRef}\n onExporting={onExporting}\n >\n <Scrolling rowRenderingMode='virtual'></Scrolling>\n <Paging defaultPageSize={10} />\n <Pager\n visible={true}\n allowedPageSizes={allowedPageSizes}\n displayMode='compact'\n showPageSizeSelector={true}\n showInfo={true}\n showNavigationButtons={true}\n />\n <FilterRow visible={true} />\n <FilterPanel visible={true} />\n <FilterBuilderPopup position={filterBuilderPopupPosition} />\n\n <HeaderFilter visible={true} />\n\n <GroupPanel visible={true} />\n <SearchPanel visible={true} />\n <ColumnChooser\n enabled={true}\n mode='select'\n >\n <ColumnChooserSearch\n enabled={true}\n />\n\n <ColumnChooserSelection\n allowSelectAll={true}\n selectByClick={true}\n recursive={true}\n />\n </ColumnChooser>\n <Grouping autoExpandAll={autoExpandAll} />\n <StateStoring enabled={true} type=\"localStorage\" storageKey=\"gridWarehouseWMS\" />\n <Export enabled={true} />\n\n <Column caption=\"\" alignment=\"center\" width={100} cellRender={editWarehouse} />\n <Column dataField=\"Almacen\" dataType=\"string\" width={110} caption=\"Almacén\" />\n <Column dataField=\"NombreAlmacen\" dataType=\"string\" width={300} caption=\"Nombre Almacén\" />\n <Column dataField=\"NombreSucursal\" dataType=\"string\" width={300} caption=\"Nombre Sucursal\" />\n <Column dataField=\"Sucursal\" dataType=\"number\" width={120} caption=\"Sucursal\" />\n <Column caption=\"Plaza\" dataField=\"Plaza\" dataType=\"string\" width={150} visible={false} />\n\n <Column dataField=\"WMS\" dataType=\"boolean\" width={150} />\n <Column dataField=\"PosicionReciboDef\" dataType=\"string\" width={300} caption=\"Posición Recibo Omisión\" />\n <Column dataField=\"PosicionTransitoDef\" dataType=\"string\" width={300} caption=\"Posición Tránsito Omisión\" />\n <Column dataField=\"PosicionPrioritaria\" dataType=\"string\" width={300} caption=\"Posición Prioritaria Surtido\" />\n </DataGrid>\n </div>\n ) : (<div />)}\n <Route exact path=\"/WarehouseWMS/:Almacen\" render={({ match }) => {\n return (\n <div class=\"bg-gray-200\">\n {isDetail.toString() === 'true' ?\n (\n <div>\n <Link to=\"/WarehouseWMS\">\n <button onClick={cancelEditButton} type=\"submit\" class=\"mb-4 bg-red-500 hover:bg-red-700 text-white font-bold py-2 px-4 rounded\">\n <FontAwesomeIcon icon={faArrowRotateLeft} /> Regresar\n </button>\n </Link>\n\n {activateSaveButton.toString() === 'true' ?\n (\n <button onClick={saveButton} type=\"submit\" class=\"ml-4 mb-4 bg-blue-500 hover:bg-blue-700 text-white font-bold py-2 px-4 rounded\">\n <FontAwesomeIcon icon={faSave} /> Guardar Cambios\n </button>\n ) : (\n <div class=\"inline-block\"></div>\n )}\n\n <div class=\"bg-white p-4 shadow-xl\">\n <Form\n id=\"formTransaccion\"\n labelMode={'outside'}\n formData={warehousePayload}\n readOnly={!activateUpdateForm}\n showColonAfterLabel={false}\n labelLocation={'top'}\n ref={formDatosGeneralesRef}\n onFieldDataChanged={onFieldDataChanged}\n >\n <TabbedItem>\n <TabPanelOptions deferRendering={false} showNavButtons={true} />\n <Tab title=\"Datos Generales\" colCount={3}>\n <GroupItem caption=\"General\">\n <Item cssClass=\"boldText\" colSpan={2} dataField=\"header.Almacen\" editorOptions={almacenEditorOptions} >\n <Label text={\"Almacén\"} />\n </Item>\n <Item cssClass=\"boldText\" colSpan={2} dataField=\"header.NombreAlmacen\" editorOptions={nombreAlmacenEditorOptions} >\n <Label text={\"Nombre Almacén\"} />\n </Item>\n </GroupItem>\n <GroupItem caption=\"WMS\">\n <Item cssClass=\"boldText\" colSpan={2} editorType=\"dxCheckBox\" dataField=\"header.WMS\" >\n <Label text={\"Activar WMS\"} />\n </Item>\n <Item editorType=\"dxSelectBox\" dataField=\"header.PosicionReciboDef\" editorOptions={posicionReciboDefEditorOptions} >\n <Label text={\"Posición Recibo Omisión\"} />\n {wms && <RequiredRule message=\"Posición Recibo Omisión es requerida\" />}\n </Item>\n <Item editorType=\"dxSelectBox\" dataField=\"header.PosicionTransitoDef\" editorOptions={posicionTransitoDefEditorOptions} >\n <Label text={\"Posición Tránsito Omisión\"} />\n {wms && <RequiredRule message=\"Posición Tránsito Omisión es requerida\" />}\n </Item>\n <Item editorType=\"dxSelectBox\" dataField=\"header.PosicionPrioritaria\" editorOptions={posicionPrioritariaEditorOptions} >\n <Label text={\"Posición Prioritaria Surtido\"} />\n </Item>\n </GroupItem>\n </Tab>\n </TabbedItem>\n </Form>\n </div>\n </div>\n ) :\n (\n <div></div>\n )\n }\n </div>\n )\n }}\n />\n </div>\n </div>\n );\n}\n","import React, { useState, useEffect, useRef, useMemo } from 'react';\n\n// LoadPanel\nimport { LoadPanel } from 'devextreme-react/load-panel';\n\n// Toast\nimport { Toast } from 'devextreme-react/toast';\n\n//Form\nimport Form, { GroupItem, Label, TabbedItem, TabPanelOptions, Tab, EmptyItem, StringLengthRule } from 'devextreme-react/form';\n\nimport { Auth, API, Storage, label } from 'aws-amplify';\n\n// Ruteador\nimport { Route, Link, useHistory } from \"react-router-dom\";\n\n// Grid\nimport DataGrid, {\n Column, FilterRow, HeaderFilter, FilterPanel, FilterBuilderPopup,\n GroupPanel, Grouping, SearchPanel, Sorting, Editing, Lookup, Toolbar, Item, RequiredRule,\n Scrolling, Pager, Paging, Summary, TotalItem, StateStoring, ColumnChooser, Format, Selection,\n Export, ColumnChooserSearch, ColumnChooserSelection\n} from 'devextreme-react/data-grid';\n\n//CheckBox\nimport CheckBox from 'devextreme-react/check-box';\n\n// Iconos\nimport { FontAwesomeIcon } from \"@fortawesome/react-fontawesome\";\nimport { faShelves } from \"@fortawesome/pro-duotone-svg-icons\";\nimport { faPencilAlt } from \"@fortawesome/pro-solid-svg-icons\";\nimport { faArrowRotateLeft } from \"@fortawesome/pro-solid-svg-icons\";\nimport { faList } from \"@fortawesome/pro-duotone-svg-icons\";\nimport { faArrowsRotate } from \"@fortawesome/pro-solid-svg-icons\";\nimport { faSave } from \"@fortawesome/pro-solid-svg-icons\";\nimport { faFileAlt } from \"@fortawesome/pro-solid-svg-icons\";\nimport { faTrash } from \"@fortawesome/pro-solid-svg-icons\";\nimport { faNoteSticky } from \"@fortawesome/pro-solid-svg-icons\";\n\nimport 'devextreme/data/odata/store';\nimport CustomStore from 'devextreme/data/custom_store';\nimport DataSource from 'devextreme/data/data_source';\n\nimport '../ListStyle.css';\n\nimport dxDateBox from \"devextreme/ui/date_box\";\n\nimport dxNumberBox from \"devextreme/ui/number_box\";\n\nimport { Workbook } from 'exceljs';\nimport { saveAs } from 'file-saver';\nimport { exportDataGrid } from 'devextreme/excel_exporter'\n\ndxDateBox.defaultOptions({\n options: {\n dateSerializationFormat: \"yyyy-MM-dd\"\n }\n});\n\ndxNumberBox.defaultOptions({\n options: {\n step: 0\n }\n});\n\nfunction isNotEmpty(value) {\n return value !== undefined && value !== null && value !== '';\n}\n\nexport default function WarehousePositionWMS(props) {\n const history = useHistory();\n\n const [isDetail, setIsDetail] = useState(false);\n const [almacen, setAlmacen] = useState();\n const [posicion, setPosicion] = useState();\n const [warehousePositionWMSPayload, setWarehousePositionWMSPayload] = useState({\n header: {}\n });\n\n const [almacenes, setAlmacenes] = useState([]);\n\n const [autoExpandAll, setAutoExpandAll] = useState(true);\n\n const [visibleLoadPanel, setVisibleLoadPanel] = useState(false);\n\n const [visibleToast, setVisibleToast] = useState(false);\n const [messageToast, setMessageToast] = useState('');\n const [typeToast, setTypeToast] = useState('success');\n\n const [activateUpdateForm, setActivateUpdateForm] = useState(false);\n const [activateSaveButton, setActivateSaveButton] = useState(false);\n const [activateDeleteButton, setActivateDeleteButton] = useState(false);\n const [activatePDFButton, setActivatePDFButton] = useState(false);\n\n //Ref para el form\n const [formDatosGeneralesRef, setFormDatosGeneralesRef] = useState(React.createRef());\n\n const filterBuilderPopupPosition = {\n of: window,\n at: 'top',\n my: 'top',\n offset: { y: 10 },\n };\n\n const allowedPageSizes = [5, 10, 15, 20, 'all'];\n\n const exportFormats = ['xlsx'];\n\n function getOrderDay(rowData) {\n return (new Date(rowData.OrderDate)).getDay();\n }\n\n const filterBuilder = {\n customOperations: [{\n name: 'weekends',\n caption: 'Weekends',\n dataTypes: ['date'],\n icon: 'check',\n hasValue: false,\n calculateFilterExpression: () => [[getOrderDay, '=', 0], 'or', [getOrderDay, '=', 6]],\n }],\n allowHierarchicalFields: true,\n };\n\n const filterValue = [['Estatus', '=', 'ALTA']];\n\n //Ref para el grid Tablero de Control\n const [gridTableroRef, setGridTableroRef] = useState(React.createRef());\n\n function onAutoExpandAllChanged() {\n setAutoExpandAll(!autoExpandAll)\n };\n\n async function getWarehousePositionWMSRecords(sqlFilter) {\n try {\n let apiName = 'AdminSC';\n let path = '/procesaalmacenposicion';\n\n let myInit = {\n headers: {\n 'Content-Type': 'application/json',\n Authorization: `${(await Auth.currentSession()).getAccessToken().getJwtToken()}`\n },\n queryStringParameters: {\n action: 'list',\n sqlFilter: sqlFilter,\n salesAccess: props.salesAccess,\n sucursal: props.sucursal,\n usuario: props.usuario,\n username: JSON.parse(JSON.stringify(await Auth.currentAuthenticatedUser())).username\n }\n }\n\n var warehousePositionWMSGet = await API.get(apiName, path, myInit);\n }\n catch (e) {\n if (e === 'No current user') {\n history.push('/');\n\n window.location.reload();\n }\n }\n\n return warehousePositionWMSGet;\n }\n\n async function getAlmacenes() {\n let apiName = 'AdminSC';\n let path = '/getcatalogo';\n\n let myInit = {\n headers: {\n 'Content-Type': 'application/json',\n Authorization: `${(await Auth.currentSession()).getAccessToken().getJwtToken()}`\n },\n queryStringParameters: {\n type: 'AlmacenNormal',\n username: JSON.parse(JSON.stringify(await Auth.currentAuthenticatedUser())).username\n }\n }\n\n var pedidosGet = await API.get(apiName, path, myInit);\n\n setAlmacenes(pedidosGet);\n };\n\n async function getArticulo(sqlFilter) {\n let apiName = 'AdminSC';\n let path = '/getcatalogo';\n\n let myInit = {\n headers: {\n 'Content-Type': 'application/json',\n Authorization: `${(await Auth.currentSession()).getAccessToken().getJwtToken()}`\n },\n queryStringParameters: {\n type: 'Articulo',\n username: JSON.parse(JSON.stringify(await Auth.currentAuthenticatedUser())).username,\n sqlFilter: sqlFilter\n }\n }\n\n var articulosGet = await API.get(apiName, path, myInit);\n\n return articulosGet;\n };\n\n const store = new CustomStore({\n key: 'gridKey',\n load(loadOptions) {\n let sqlFilter = '(';\n [\n 'filter'\n ].forEach((i) => {\n if (i in loadOptions && isNotEmpty(loadOptions[i])) {\n var filters = loadOptions[i];\n\n var filtersLength = filters.length;\n\n for (var i = 0; i <= filtersLength; i++) {\n var singleFilter = filters[i];\n var singleFilterType = typeof singleFilter;\n var singleFilterIsArray = Array.isArray(singleFilter);\n var singleFilterIsDate = singleFilter instanceof Date;\n\n if (singleFilter === 'NULL') {\n singleFilter = '0';\n }\n\n if (singleFilterType.toString() === 'object' && singleFilterIsArray) {\n sqlFilter += '(';\n\n var subFiltersLength = singleFilter.length;\n\n for (var i2 = 0; i2 <= subFiltersLength; i2++) {\n var singleSubFilter = singleFilter[i2];\n var singleSubFilterType = typeof singleSubFilter;\n var singleSubFilterIsArray = Array.isArray(singleSubFilter);\n var singleSubFilterIsDate = singleSubFilter instanceof Date\n\n if (singleSubFilter === 'NULL') {\n singleSubFilter = '0';\n }\n\n if (singleSubFilterType.toString() === 'object' && singleSubFilterIsArray) {\n sqlFilter += '(';\n\n var subSubFiltersLength = singleSubFilter.length;\n\n for (var i3 = 0; i3 <= subSubFiltersLength; i3++) {\n var singleSubSubFilter = singleSubFilter[i3];\n var singleSubSubFilterType = typeof singleSubSubFilter;\n var singleSubSubFilterIsArray = Array.isArray(singleSubSubFilter);\n var singleSubSubFilterIsDate = singleSubSubFilter instanceof Date\n\n if (singleSubSubFilter === 'NULL') {\n singleSubSubFilter = '0';\n }\n\n if (singleSubSubFilterType.toString() === 'object' && singleSubSubFilterIsArray) {\n sqlFilter += '(';\n\n var subSubSubFiltersLength = singleSubSubFilter.length;\n\n for (var i4 = 0; i4 <= subSubSubFiltersLength; i4++) {\n var singleSubSubSubFilter = singleSubSubFilter[i4];\n var singleSubSubSubFilterType = typeof singleSubSubSubFilter;\n var singleSubSubSubFilterIsArray = Array.isArray(singleSubSubSubFilter);\n var singleSubSubSubFilterIsDate = singleSubSubSubFilter instanceof Date\n\n if (singleSubSubSubFilter === 'NULL') {\n singleSubSubSubFilter = '0';\n }\n\n if (singleSubSubSubFilterType.toString() === 'object' && singleSubSubSubFilterIsArray) {\n sqlFilter += '(';\n\n var subSubSubSubFiltersLength = singleSubSubSubFilter.length;\n\n for (var i5 = 0; i5 <= subSubSubSubFiltersLength; i5++) {\n var singleSubSubSubSubFilter = singleSubSubSubFilter[i5];\n var singleSubSubSubSubFilterType = typeof singleSubSubSubSubFilter;\n var singleSubSubSubSubFilterIsArray = Array.isArray(singleSubSubSubSubFilter);\n var singleSubSubSubSubFilterIsDate = singleSubSubSubSubFilter instanceof Date\n\n if (singleSubSubSubSubFilter === 'NULL') {\n singleSubSubSubSubFilter = '0';\n }\n\n if (singleSubSubSubSubFilterType.toString() === 'string') {\n if (singleSubSubSubSubFilter === 'contains') {\n filters[i][i2][i3][i4][i5] = 'LIKE';\n singleSubSubSubSubFilter = 'LIKE';\n\n filters[i][i2][i3][i4][i5 + 1] = '\\'%' + filters[i][i2][i3][i4][i5 + 1] + '%\\'';\n }\n else if (singleSubSubSubSubFilter === 'notcontains') {\n filters[i][i2][i3][i4][i5] = 'NOT LIKE';\n singleSubSubSubSubFilter = 'NOT LIKE';\n\n filters[i][i2][i3][i4][i5 + 1] = '\\'%' + filters[i][i2][i3][i4][i5 + 1] + '%\\'';\n }\n else if (singleSubSubSubSubFilter === 'startswith') {\n filters[i][i2][i3][i4][i5] = 'LIKE';\n singleSubSubSubSubFilter = 'LIKE';\n\n filters[i][i2][i3][i4][i5 + 1] = '\\'' + filters[i][i2][i3][i4][i5 + 1] + '%\\'';\n }\n else if (singleSubSubSubSubFilter === 'endswith') {\n filters[i][i2][i3][i4][i5] = 'LIKE';\n singleSubSubSubSubFilter = 'LIKE';\n\n filters[i][i2][i3][i4][i5 + 1] = '\\'%' + filters[i][i2][i3][i4][i5 + 1] + '\\'';\n }\n else if (singleSubSubSubSubFilter === '=' || singleSubSubSubSubFilter === '<>' || singleSubSubSubSubFilter === '>' || singleSubSubSubSubFilter === '>=' || singleSubSubSubSubFilter === '<' || singleSubSubSubSubFilter === '<=') {\n if (!filters[i][i2][i3][i4][i5 + 1])\n filters[i][i2][i3][i4][i5 + 1] = 'NULL';\n else if (typeof filters[i][i2][i3][i4][i5 + 1] === 'string') {\n filters[i][i2][i3][i4][i5 + 1] = '\\'' + filters[i][i2][i3][i4][i5 + 1] + '\\'';\n }\n }\n else if (singleSubSubSubSubFilter === '!') {\n filters[i][i2][i3][i4][i5] = 'NOT';\n singleSubSubSubSubFilter = 'NOT';\n }\n\n sqlFilter += ' ' + singleSubSubSubSubFilter + ' ';\n }\n else if (singleSubSubSubSubFilterType.toString() === 'object' && singleSubSubSubSubFilterIsDate) {\n sqlFilter += ' \\'' + singleSubSubSubSubFilter.toISOString().split('T')[0] + '\\' ';\n }\n else if (singleSubSubSubSubFilterType.toString() === 'number') {\n sqlFilter += ' ' + singleSubSubSubSubFilter.toString() + ' ';\n }\n else if (singleSubSubSubSubFilterType.toString() === 'boolean') {\n if (singleSubSubSubSubFilter.toString() === 'true')\n sqlFilter += '1 ';\n else if (singleSubSubSubSubFilter.toString() === 'false' || singleSubSubSubSubFilter === null || singleSubSubSubSubFilter === undefined)\n sqlFilter += '0 ';\n }\n }\n }\n else if (singleSubSubSubFilterType.toString() === 'string') {\n if (singleSubSubSubFilter === 'contains') {\n filters[i][i2][i3][i4] = 'LIKE';\n singleSubSubSubFilter = 'LIKE';\n\n filters[i][i2][i3][i4 + 1] = '\\'%' + filters[i][i2][i3][i4 + 1] + '%\\'';\n }\n else if (singleSubSubSubFilter === 'notcontains') {\n filters[i][i2][i3][i4] = 'NOT LIKE';\n singleSubSubSubFilter = 'NOT LIKE';\n\n filters[i][i2][i3][i4 + 1] = '\\'%' + filters[i][i2][i3][i4 + 1] + '%\\'';\n }\n else if (singleSubSubSubFilter === 'startswith') {\n filters[i][i2][i3][i4] = 'LIKE';\n singleSubSubSubFilter = 'LIKE';\n\n filters[i][i2][i3][i4 + 1] = '\\'' + filters[i][i2][i3][i4 + 1] + '%\\'';\n }\n else if (singleSubSubSubFilter === 'endswith') {\n filters[i][i2][i3][i4] = 'LIKE';\n singleSubSubSubFilter = 'LIKE';\n\n filters[i][i2][i3][i4 + 1] = '\\'%' + filters[i][i2][i3][i4 + 1] + '\\'';\n }\n else if (singleSubSubSubFilter === '=' || singleSubSubSubFilter === '<>' || singleSubSubSubFilter === '>' || singleSubSubSubFilter === '>=' || singleSubSubSubFilter === '<' || singleSubSubSubFilter === '<=') {\n if (!filters[i][i2][i3][i4 + 1])\n filters[i][i2][i3][i4 + 1] = 'NULL';\n else if (typeof filters[i][i2][i3][i4 + 1] === 'string') {\n filters[i][i2][i3][i4 + 1] = '\\'' + filters[i][i2][i3][i4 + 1] + '\\'';\n }\n }\n else if (singleSubSubSubFilter === '!') {\n filters[i][i2][i3][i4] = 'NOT';\n singleSubSubSubFilter = 'NOT';\n }\n\n sqlFilter += ' ' + singleSubSubSubFilter + ' ';\n }\n else if (singleSubSubSubFilterType.toString() === 'object' && singleSubSubSubFilterIsDate) {\n sqlFilter += ' \\'' + singleSubSubSubFilter.toISOString().split('T')[0] + '\\' ';\n }\n else if (singleSubSubSubFilterType.toString() === 'number') {\n sqlFilter += ' ' + singleSubSubSubFilter.toString() + ' ';\n }\n else if (singleSubSubSubFilterType.toString() === 'boolean') {\n if (singleSubSubSubFilter.toString() === 'true')\n sqlFilter += '1 ';\n else if (singleSubSubSubFilter.toString() === 'false' || singleSubSubSubFilter === null || singleSubSubSubFilter === undefined)\n sqlFilter += '0 ';\n }\n }\n\n sqlFilter += ')';\n }\n else if (singleSubSubFilterType.toString() === 'string') {\n if (singleSubSubFilter === 'contains') {\n filters[i][i2][i3] = 'LIKE';\n singleSubSubFilter = 'LIKE';\n\n filters[i][i2][i3 + 1] = '\\'%' + filters[i][i2][i3 + 1] + '%\\'';\n }\n else if (singleSubSubFilter === 'notcontains') {\n filters[i][i2][i3] = 'NOT LIKE';\n singleSubSubFilter = 'NOT LIKE';\n\n filters[i][i2][i3 + 1] = '\\'%' + filters[i][i2][i3 + 1] + '%\\'';\n }\n else if (singleSubSubFilter === 'startswith') {\n filters[i][i2][i3] = 'LIKE';\n singleSubSubFilter = 'LIKE';\n\n filters[i][i2][i3 + 1] = '\\'' + filters[i][i2][i3 + 1] + '%\\'';\n }\n else if (singleSubSubFilter === 'endswith') {\n filters[i][i2][i3] = 'LIKE';\n singleSubSubFilter = 'LIKE';\n\n filters[i][i2][i3 + 1] = '\\'%' + filters[i][i2][i3 + 1] + '\\'';\n }\n else if (singleSubSubFilter === '=' || singleSubSubFilter === '<>' || singleSubSubFilter === '>' || singleSubSubFilter === '>=' || singleSubSubFilter === '<' || singleSubSubFilter === '<=') {\n if (!filters[i][i2][i3 + 1])\n filters[i][i2][i3 + 1] = 'NULL';\n else if (typeof filters[i][i2][i3 + 1] === 'string') {\n filters[i][i2][i3 + 1] = '\\'' + filters[i][i2][i3 + 1] + '\\'';\n }\n }\n else if (singleSubSubFilter === '!') {\n filters[i][i2][i3] = 'NOT';\n singleSubSubFilter = 'NOT';\n }\n sqlFilter += ' ' + singleSubSubFilter + ' ';\n }\n else if (singleSubSubFilterType.toString() === 'object' && singleSubSubFilterIsDate) {\n sqlFilter += ' \\'' + singleSubSubFilter.toISOString().split('T')[0] + '\\' ';\n }\n else if (singleSubSubFilterType.toString() === 'number') {\n sqlFilter += ' ' + singleSubSubFilter.toString() + ' ';\n }\n else if (singleSubSubFilterType.toString() === 'boolean') {\n if (singleSubSubFilter.toString() === 'true')\n sqlFilter += '1 ';\n else if (singleSubSubFilter.toString() === 'false' || singleSubSubFilter === null || singleSubSubFilter === undefined)\n sqlFilter += '0 ';\n }\n }\n\n sqlFilter += ')';\n }\n else if (singleSubFilterType.toString() === 'string') {\n if (singleSubFilter === 'contains') {\n filters[i][i2] = 'LIKE';\n singleSubFilter = 'LIKE';\n\n filters[i][i2 + 1] = '\\'%' + filters[i][i2 + 1] + '%\\'';\n }\n else if (singleSubFilter === 'notcontains') {\n filters[i][i2] = 'NOT LIKE';\n singleSubFilter = 'NOT LIKE';\n\n filters[i][i2 + 1] = '\\'%' + filters[i][i2 + 1] + '%\\'';\n }\n else if (singleSubFilter === 'startswith') {\n filters[i][i2] = 'LIKE';\n singleSubFilter = 'LIKE';\n\n filters[i][i2 + 1] = '\\'' + filters[i][i2 + 1] + '%\\'';\n }\n else if (singleSubFilter === 'endswith') {\n filters[i][i2] = 'LIKE';\n singleSubFilter = 'LIKE';\n\n filters[i][i2 + 1] = '\\'%' + filters[i][i2 + 1] + '\\'';\n }\n else if (singleSubFilter === '=' || singleSubFilter === '<>' || singleSubFilter === '>' || singleSubFilter === '>=' || singleSubFilter === '<' || singleSubFilter === '<=') {\n if (!filters[i][i2 + 1])\n filters[i][i2 + 1] = 'NULL';\n else if (typeof filters[i][i2 + 1] === 'string') {\n filters[i][i2 + 1] = '\\'' + filters[i][i2 + 1] + '\\'';\n }\n }\n else if (singleSubFilter === '!') {\n filters[i][i2] = 'NOT';\n singleSubFilter = 'NOT';\n }\n sqlFilter += ' ' + singleSubFilter + ' ';\n }\n else if (singleSubFilterType.toString() === 'object' && singleSubFilterIsDate) {\n sqlFilter += ' \\'' + singleSubFilter.toISOString().split('T')[0] + '\\' ';\n }\n else if (singleSubFilterType.toString() === 'number') {\n sqlFilter += ' ' + singleSubFilter.toString() + ' ';\n }\n else if (singleSubFilterType.toString() === 'boolean') {\n if (singleSubFilter.toString() === 'true')\n sqlFilter += '1 ';\n else if (singleSubFilter.toString() === 'false' || singleSubFilter === null || singleSubFilter === undefined)\n sqlFilter += '0 ';\n }\n }\n\n sqlFilter += ')';\n }\n else if (singleFilterType.toString() === 'string') {\n if (singleFilter === 'contains') {\n filters[i] = 'LIKE';\n singleFilter = 'LIKE';\n\n filters[i + 1] = '\\'%' + filters[i + 1] + '%\\'';\n }\n else if (singleFilter === 'notcontains') {\n filters[i] = 'NOT LIKE';\n singleFilter = 'NOT LIKE';\n\n filters[i + 1] = '\\'%' + filters[i + 1] + '%\\'';\n }\n else if (singleFilter === 'startswith') {\n filters[i] = 'LIKE';\n singleFilter = 'LIKE';\n\n filters[i + 1] = '\\'' + filters[i + 1] + '%\\'';\n }\n else if (singleFilter === 'endswith') {\n filters[i] = 'LIKE';\n singleFilter = 'LIKE';\n\n filters[i + 1] = '\\'%' + filters[i + 1] + '\\'';\n }\n else if (singleFilter === '=' || singleFilter === '<>' || singleFilter === '>' || singleFilter === '>=' || singleFilter === '<' || singleFilter === '<=') {\n if (!filters[i + 1])\n filters[i + 1] = 'NULL';\n else if (typeof filters[i + 1] === 'string') {\n filters[i + 1] = '\\'' + filters[i + 1] + '\\'';\n }\n }\n else if (singleFilter === '!') {\n filters[i] = 'NOT';\n singleFilter = 'NOT';\n }\n sqlFilter += ' ' + singleFilter + ' ';\n }\n else if (singleFilterType.toString() === 'object' && singleFilterIsDate) {\n sqlFilter += ' \\'' + singleFilter.toISOString().split('T')[0] + '\\' ';\n }\n else if (singleFilterType.toString() === 'number') {\n sqlFilter += ' ' + singleFilter.toString() + ' ';\n }\n else if (singleFilterType.toString() === 'boolean') {\n if (singleFilter.toString() === 'true')\n sqlFilter += '1 ';\n else if (singleFilter.toString() === 'false' || singleFilter === null || singleFilter === undefined)\n sqlFilter += '0 ';\n }\n }\n\n sqlFilter += ')';\n }\n });\n\n async function getRecords() {\n if (sqlFilter === '(')\n sqlFilter = '';\n\n var records = await getWarehousePositionWMSRecords(sqlFilter);\n return {\n data: records,\n totalCount: records.length\n };\n }\n\n return getRecords()\n .then(function (result) {\n return result;\n })\n .catch(() => { throw new Error('Data Loading Error'); });\n },\n });\n\n const getWarehousePositionWMSPayload = React.useCallback(async (Almacen, Posicion) => {\n try {\n let apiName = 'AdminSC';\n let path = '/procesaalmacenposicion';\n\n let myInit = {\n headers: {\n 'Content-Type': 'application/json',\n Authorization: `${(await Auth.currentSession()).getAccessToken().getJwtToken()}`\n },\n queryStringParameters: {\n Almacen: Almacen,\n Posicion: Posicion,\n action: 'payload',\n username: JSON.parse(JSON.stringify(await Auth.currentAuthenticatedUser())).username\n }\n }\n\n var payloadGet = await API.get(apiName, path, myInit);\n\n setWarehousePositionWMSPayload(payloadGet);\n }\n catch (e) {\n if (e === 'No current user') {\n history.push('/');\n\n window.location.reload();\n }\n }\n\n return payloadGet;\n }, [history]);\n\n function editWarehousePositionWMS(data) {\n return (\n <Link to={`/WarehousePositionWMS/${data.data.Almacen}/${data.data.Posicion}`}>\n <button class=\"bg-blue-500 hover:bg-blue-700 text-white py-1 px-3 rounded\" onClick={() => editButton(data.data.Almacen, data.data.Posicion)}><FontAwesomeIcon icon={faPencilAlt} /> Editar</button>\n </Link>\n )\n }\n\n const editButton = React.useCallback(async (Almacen, Posicion) => {\n try {\n if (!window.event.metaKey && !window.event.ctrlKey) {\n setVisibleLoadPanel(true);\n\n setIsDetail(true);\n setAlmacen(Almacen);\n setPosicion(Posicion);\n\n var payload = await getWarehousePositionWMSPayload(Almacen, Posicion);\n\n setActivateUpdateForm(true);\n setActivateSaveButton(true);\n setActivateDeleteButton(true);\n setActivatePDFButton(true);\n\n setVisibleLoadPanel(false);\n }\n }\n catch (e) {\n setVisibleLoadPanel(false);\n }\n }, [getWarehousePositionWMSPayload]);\n\n const newButton = React.useCallback(async () => {\n try {\n let apiName = 'AdminSC';\n let path = '/procesaalmacenposicion';\n\n let myInit = {\n headers: {\n 'Content-Type': 'application/json',\n Authorization: `${(await Auth.currentSession()).getAccessToken().getJwtToken()}`\n },\n queryStringParameters: {\n action: 'new',\n username: JSON.parse(JSON.stringify(await Auth.currentAuthenticatedUser())).username,\n usuario: props.usuario,\n sucursal: props.sucursal\n }\n };\n\n var payloadNew = await API.get(apiName, path, myInit);\n\n setWarehousePositionWMSPayload(payloadNew);\n\n setIsDetail(true);\n setAlmacen(undefined);\n setPosicion(undefined);\n\n setActivateUpdateForm(true);\n setActivateSaveButton(true);\n setActivateDeleteButton(false);\n\n setVisibleLoadPanel(false);\n }\n catch (e) {\n if (e === 'No current user') {\n history.push('/');\n\n window.location.reload();\n }\n }\n }, [history, props.sucursal, props.usuario]);\n\n async function cancelEditButton() {\n setIsDetail(false);\n };\n\n const saveButton = React.useCallback(async () => {\n if (formDatosGeneralesRef.current) {\n var formDatosGenerales = formDatosGeneralesRef.current.instance();\n var isValid = formDatosGenerales.validate();\n\n if (!isValid.isValid) {\n setVisibleToast(true);\n setMessageToast(isValid.brokenRules[0].message);\n setTypeToast('error');\n return;\n }\n }\n\n try {\n setVisibleLoadPanel(true);\n\n var Almacen = warehousePositionWMSPayload.header.Almacen;\n var Posicion = warehousePositionWMSPayload.header.Posicion;\n\n //Despues enviamos todo al backend\n let apiName = 'AdminSC';\n let path = '/procesaalmacenposicion';\n\n let myInit = {\n headers: {\n 'Content-Type': 'application/json',\n Authorization: `${(await Auth.currentSession()).getAccessToken().getJwtToken()}`\n },\n body: {\n Almacen: Almacen,\n Posicion: Posicion,\n payload: warehousePositionWMSPayload,\n action: 'saveChanges',\n username: JSON.parse(JSON.stringify(await Auth.currentAuthenticatedUser())).username,\n usuario: props.usuario,\n sucursal: props.sucursal,\n s3Bucket: Storage._config.AWSS3.bucket\n }\n }\n\n var payloadPost = await API.post(apiName, path, myInit);\n\n if (payloadPost.ok === 'true') {\n setVisibleToast(true);\n setMessageToast('Se actualizó la Posición con éxito');\n setTypeToast('success')\n }\n else if (payloadPost.ok === 'false') {\n setVisibleToast(true);\n setMessageToast(payloadPost.message);\n setTypeToast('error')\n }\n\n editButton(Almacen, Posicion);\n\n setVisibleLoadPanel(false);\n }\n catch (e) {\n setVisibleLoadPanel(false);\n\n if (e === 'No current user') {\n history.push('/');\n\n window.location.reload();\n }\n }\n }, [editButton, formDatosGeneralesRef, history, props.sucursal, props.usuario, warehousePositionWMSPayload]);\n\n function refreshButton() {\n if (gridTableroRef.current) {\n var gridTablero = gridTableroRef.current.instance();\n\n gridTablero.refresh();\n }\n };\n\n const deleteButton = React.useCallback(async () => {\n try {\n if (!window.confirm('¿Desea eliminar la Posición?'))\n return;\n\n setVisibleLoadPanel(true);\n\n var Almacen = warehousePositionWMSPayload.header.Almacen;\n var Posicion = warehousePositionWMSPayload.header.Posicion;\n\n if (!Almacen || !Posicion) {\n //Vamos al tablero de control\n history.push('/WarehousePositionWMS');\n return;\n }\n\n let apiName = 'AdminSC';\n let path = '/procesaalmacenposicion';\n\n let myInit = {\n headers: {\n 'Content-Type': 'application/json',\n Authorization: `${(await Auth.currentSession()).getAccessToken().getJwtToken()}`\n },\n body: {\n Almacen: Almacen,\n Posicion: Posicion,\n payload: warehousePositionWMSPayload,\n action: 'delete',\n username: JSON.parse(JSON.stringify(await Auth.currentAuthenticatedUser())).username,\n usuario: props.usuario,\n sucursal: props.sucursal\n }\n }\n\n var payloadPost = await API.post(apiName, path, myInit);\n\n if (payloadPost.ok === 'true') {\n setVisibleLoadPanel(false);\n\n setVisibleToast(true);\n setMessageToast('Posición eliminada con éxito');\n setTypeToast('success')\n\n setIsDetail(false);\n\n //Vamos al tablero de control\n history.push('/WarehousePositionWMS');\n }\n else if (payloadPost.ok === 'false') {\n setVisibleLoadPanel(false);\n\n setVisibleToast(true);\n setMessageToast(payloadPost.message);\n setTypeToast('error')\n }\n }\n catch (e) {\n setVisibleLoadPanel(false);\n\n if (e === 'No current user') {\n history.push('/');\n\n window.location.reload();\n }\n }\n }, [history, props.sucursal, props.usuario, warehousePositionWMSPayload]);\n\n function printButton() {\n var baseUrl = window.location.href.split('/')[0];\n\n window.open(baseUrl + \"/#/PdfRender?type=warehousepositionwms&id=\" + almacen + '__@@__' + posicion, \"_blank\");\n };\n\n useEffect(() => {\n window.addEventListener('popstate', (e) => {\n var hash;\n\n try {\n hash = e.target.location.hash;\n }\n catch (e) {\n hash = '';\n }\n\n if (hash === '#/WarehousePositionWMS') {\n history.push('/WarehousePositionWMS');\n\n window.location.reload();\n }\n });\n\n async function initialize() {\n setVisibleLoadPanel(true);\n\n await getAlmacenes();\n\n setVisibleLoadPanel(false);\n }\n\n initialize();\n\n //En caso de solicitar un ID especifico, redireccionamos a ese ID\n if (props.location.pathname.replace('/WarehousePositionWMS/', '').replace('/WarehousePositionWMS', '') !== '') {\n var urlID = props.location.pathname.replace('/WarehousePositionWMS/', '').replace('/WarehousePositionWMS', '').split('/');\n\n if (urlID.length === 2 && urlID[0] !== undefined && urlID[0] !== 'undefined' && urlID[1] !== undefined && urlID[1] !== 'undefined' && urlID[0] !== '' && urlID[1] !== '') {\n setAlmacen(urlID[0]);\n\n setPosicion(urlID[1]);\n\n editButton(urlID[0], urlID[1]);\n }\n }\n\n }, [props.location.pathname, props.match.isExact, editButton, history]);\n\n function onHidingToast() {\n setVisibleToast(false);\n }\n\n function onExporting(e) {\n const workbook = new Workbook();\n const worksheet = workbook.addWorksheet('Datos');\n\n exportDataGrid({\n component: e.component,\n worksheet,\n autoFilterEnabled: true,\n }).then(() => {\n workbook.xlsx.writeBuffer().then((buffer) => {\n saveAs(new Blob([buffer], { type: 'application/octet-stream' }), 'Datos.xlsx');\n });\n });\n e.cancel = true;\n };\n\n var almacenDataSource = useMemo(() => {\n return new DataSource({\n paginate: true,\n store: {\n type: \"array\",\n key: \"Almacen\",\n data: almacenes\n }\n });\n }, [almacenes]);\n\n var posicionEditorOptions = useMemo(() => {\n return {\n width: '100%',\n readOnly: false,\n inputAttr: { 'style': 'text-transform: uppercase' }\n };\n }, []);\n\n //Opciones Nivel de Permiso\n const estatusOptions = useMemo(() => {\n return [\n { value: 'ALTA', name: 'ALTA' },\n { value: 'BAJA', name: 'BAJA' }\n ];\n }, []);\n\n try {\n var estatusEditorOptions = useMemo(() => {\n return {\n items: estatusOptions,\n displayExpr: 'name',\n valueExpr: 'value',\n searchEnabled: false,\n value: (warehousePositionWMSPayload.header.Estatus ? warehousePositionWMSPayload.header.Estatus : '')\n };\n }, [estatusOptions, warehousePositionWMSPayload.header.Estatus]);\n }\n catch (e) {\n var estatusEditorOptions = {\n items: estatusOptions,\n displayExpr: 'name',\n valueExpr: 'value',\n searchEnabled: false,\n value: ''\n };\n }\n\n const storeArticulo = new CustomStore({\n key: 'value',\n load(loadOptions) {\n let sqlFilter = '';\n [\n 'filter'\n ].forEach((i) => {\n sqlFilter = loadOptions.searchValue;\n });\n\n async function getRecords() {\n if (sqlFilter) {\n var records = await getArticulo(sqlFilter);\n\n return {\n data: records,\n totalCount: records.length\n };\n }\n else {\n return {\n data: [],\n totalCount: 0\n };\n }\n }\n\n return getRecords()\n .then(function (result) {\n return result;\n })\n .catch(() => { throw new Error('Data Loading Error'); });\n },\n byKey: (key) => {\n async function getRecords(key) {\n var records = await getArticulo(key);\n\n return records;\n }\n\n return getRecords(key);\n }\n });\n\n //Opciones del campo Articulo\n try {\n var articuloEditorOptions = {\n dataSource: storeArticulo,\n displayExpr: 'name',\n valueExpr: 'value',\n searchEnabled: true,\n acceptCustomValue: false,\n disabled: false,\n searchTimeout: 1500,\n width: '100%',\n clearButtonText: 'Cerrar',\n noDataText: 'No se encontraron resultados',\n showClearButton: true,\n value: (warehousePositionWMSPayload.header.ArticuloEsp ? warehousePositionWMSPayload.header.ArticuloEsp : '')\n };\n }\n catch (e) {\n var articuloEditorOptions = {\n dataSource: storeArticulo,\n displayExpr: 'name',\n valueExpr: 'value',\n searchEnabled: true,\n acceptCustomValue: false,\n showClearButton: true,\n width: '100%'\n };\n }\n\n var posicionReciboEditorOptions = useMemo(() => {\n return {\n width: '100%',\n readOnly: false\n };\n }, []);\n\n var posicionTransitoEditorOptions = useMemo(() => {\n return {\n width: '100%',\n readOnly: false\n };\n }, []);\n\n var invDisponibleEditorOptions = useMemo(() => {\n return {\n width: '100%',\n readOnly: false\n };\n }, []);\n\n var pasilloEditorOptions = useMemo(() => {\n return {\n width: '100%',\n readOnly: false\n };\n }, []);\n\n var nivelEditorOptions = useMemo(() => {\n return {\n width: '100%',\n readOnly: false\n };\n }, []);\n\n var zonaEditorOptions = useMemo(() => {\n return {\n width: '100%',\n readOnly: false\n };\n }, []);\n\n //Opciones del campo Almacen\n try {\n var almacenEditorOptions = useMemo(() => {\n return {\n dataSource: almacenDataSource,\n displayExpr: 'name',\n valueExpr: 'value',\n searchEnabled: true,\n value: (warehousePositionWMSPayload.header.Almacen ? warehousePositionWMSPayload.header.Almacen : ''),\n width: '100%'\n };\n }, [almacenDataSource, warehousePositionWMSPayload.header.Almacen]);\n }\n catch (e) {\n var almacenEditorOptions = {\n dataSource: almacenDataSource,\n displayExpr: 'name',\n valueExpr: 'value',\n searchEnabled: true,\n value: '',\n width: '100%'\n };\n }\n\n return (\n <div>\n {isDetail === false ? (\n <div class=\"bg-gray-200 m-2\">\n <h1 class=\"font-sans inline-block text-xl font-bold text-gray-700 leading-8 align-top mb-1\"><FontAwesomeIcon icon={faList} size=\"lg\" /> Posiciones Almacén WMS</h1>\n </div>\n ) :\n (\n <div class=\"bg-gray-200 m-2\">\n <h1 class=\"font-sans inline-block text-xl font-bold text-gray-700 leading-8 align-top mb-1\"><FontAwesomeIcon icon={faShelves} size=\"xl\" /> {(warehousePositionWMSPayload.header ? warehousePositionWMSPayload.header.Almacen + ' - ' + warehousePositionWMSPayload.header.Posicion : 'Posición')}</h1>\n </div>\n )}\n\n <LoadPanel\n shadingColor=\"rgba(0,0,0,0.4)\"\n visible={visibleLoadPanel}\n showIndicator={true}\n message=\"Por favor espere...\"\n shading={true}\n showPane={true}\n hideOnOutsideClick={false}\n />\n\n <Toast\n visible={visibleToast}\n message={messageToast}\n type={typeToast}\n onHiding={onHidingToast}\n displayTime={5000}\n width={'auto'}\n position={{\n my: 'top center',\n at: 'top center',\n of: window,\n offset: '0 130'\n }}\n />\n\n <div class=\"bg-gray-200 m-2\">\n {isDetail === false ? (\n <div class=\"bg-white p-3 shadow-xl\">\n <div>\n <Link to=\"/WarehousePositionWMS/undefined/undefined\">\n <button class=\"mb-2 bg-green-500 hover:bg-green-700 text-white font-bold py-2 px-4 rounded\" onClick={() => newButton()}><FontAwesomeIcon icon={faFileAlt} /> Nueva Posición</button>\n </Link>\n\n <button onClick={refreshButton} type=\"submit\" class=\"ml-4 mb-4 bg-blue-500 hover:bg-blue-700 text-white font-bold py-2 px-4 rounded\">\n <FontAwesomeIcon icon={faArrowsRotate} /> Actualizar\n </button>\n </div>\n\n <div className=\"options mb-2\">\n <div className=\"option\">\n <CheckBox text=\"Expandir todos los grupos\"\n value={autoExpandAll}\n onValueChanged={onAutoExpandAllChanged}></CheckBox>\n </div>\n </div>\n <DataGrid\n height={800}\n id=\"gridContainer\"\n columnsAutoWidth={true}\n filterBuilder={filterBuilder}\n dataSource={store}\n defaultFilterValue={filterValue}\n allowColumnReordering={true}\n allowColumnResizing={true}\n columnResizingMode={\"widget\"}\n showBorders={true}\n rowAlternationEnabled={true}\n showRowLines={true}\n showColumnLines={true}\n remoteOperations={{ filtering: true }}\n ref={gridTableroRef}\n onExporting={onExporting}\n >\n <Scrolling rowRenderingMode='virtual'></Scrolling>\n <Paging defaultPageSize={10} />\n <Pager\n visible={true}\n allowedPageSizes={allowedPageSizes}\n displayMode='compact'\n showPageSizeSelector={true}\n showInfo={true}\n showNavigationButtons={true}\n />\n <FilterRow visible={true} />\n <FilterPanel visible={true} />\n <FilterBuilderPopup position={filterBuilderPopupPosition} />\n\n <HeaderFilter visible={true} />\n\n <GroupPanel visible={true} />\n <SearchPanel visible={true} />\n <ColumnChooser\n enabled={true}\n mode='select'\n >\n <ColumnChooserSearch\n enabled={true}\n />\n\n <ColumnChooserSelection\n allowSelectAll={true}\n selectByClick={true}\n recursive={true}\n />\n </ColumnChooser>\n <Grouping autoExpandAll={autoExpandAll} />\n <StateStoring enabled={true} type=\"localStorage\" storageKey=\"gridContainerWarehousePositionWMS\" />\n <Export enabled={true} />\n\n <Column caption=\"\" alignment=\"center\" width={100} cellRender={editWarehousePositionWMS} />\n\n <Column dataField=\"Almacen\" dataType=\"string\" width={110} caption=\"Almacén\" />\n <Column dataField=\"Posicion\" dataType=\"string\" width={110} caption=\"Posición\" />\n\n <Column dataField=\"NombreAlmacen\" dataType=\"string\" width={300} caption=\"Nombre Almacén\" visible={false} />\n <Column dataField=\"NombreSucursal\" dataType=\"string\" width={300} caption=\"Nombre Sucursal\" visible={false} />\n <Column dataField=\"Sucursal\" dataType=\"number\" width={120} caption=\"Sucursal\" visible={false} />\n <Column caption=\"Plaza\" dataField=\"Plaza\" dataType=\"string\" width={150} visible={false} />\n\n <Column dataField=\"ArticuloEsp\" dataType=\"string\" width={200} caption=\"Artículo Específico\" />\n <Column dataField=\"NombreArticulo\" dataType=\"string\" width={300} caption=\"Nombre Artículo\" visible={false} />\n <Column dataField=\"Descripcion\" dataType=\"string\" width={110} caption=\"Descripción\" visible={false} />\n <Column dataField=\"Estatus\" dataType=\"string\" width={110} caption=\"Estatus\" />\n <Column dataField=\"Nivel\" dataType=\"string\" width={110} caption=\"Nivel\" />\n <Column dataField=\"Pasillo\" dataType=\"string\" width={110} caption=\"Pasillo\" />\n <Column dataField=\"PosicionRecibo\" dataType=\"boolean\" width={110} caption=\"Posición Recibo\" visible={false} />\n <Column dataField=\"PosicionTransito\" dataType=\"boolean\" width={110} caption=\"Posición Tránsito\" visible={false} />\n <Column dataField=\"Zona\" dataType=\"string\" width={110} caption=\"Zona\" />\n <Column dataField=\"InvDisponible\" dataType=\"boolean\" width={110} caption=\"Inventario Disponible\" />\n </DataGrid>\n </div>\n ) : (<div />)}\n <Route exact path=\"/WarehousePositionWMS/:Almacen/:Posicion\" render={({ match }) => {\n return (\n <div class=\"bg-gray-200\">\n {isDetail.toString() === 'true' ?\n (\n <div>\n <Link to=\"/WarehousePositionWMS\">\n <button onClick={cancelEditButton} type=\"submit\" class=\"mb-4 bg-red-500 hover:bg-red-700 text-white font-bold py-2 px-4 rounded\">\n <FontAwesomeIcon icon={faArrowRotateLeft} /> Regresar\n </button>\n </Link>\n\n {activateSaveButton.toString() === 'true' ?\n (\n <button onClick={saveButton} type=\"submit\" class=\"ml-4 mb-4 bg-blue-500 hover:bg-blue-700 text-white font-bold py-2 px-4 rounded\">\n <FontAwesomeIcon icon={faSave} /> Guardar Cambios\n </button>\n ) : (\n <div class=\"inline-block\"></div>\n )}\n\n {activateDeleteButton.toString() === 'true' && almacen && posicion ?\n (\n <button onClick={deleteButton} type=\"submit\" class=\"ml-4 mb-4 bg-red-500 hover:bg-red-700 text-white font-bold py-2 px-4 rounded\">\n <FontAwesomeIcon icon={faTrash} /> Eliminar\n </button>\n ) :\n (\n <div class=\"inline-block\"></div>\n )}\n\n {activatePDFButton.toString() === 'true' && almacen && posicion ?\n (\n <button onClick={printButton} type=\"submit\" class=\"ml-4 mb-4 bg-gray-500 hover:bg-gray-700 text-white font-bold py-2 px-4 rounded\">\n <FontAwesomeIcon icon={faNoteSticky} /> Imprimir Etiqueta\n </button>\n ) :\n (\n <div class=\"inline-block\"></div>\n )}\n\n <div class=\"bg-white p-4 shadow-xl\">\n <Form\n id=\"formTransaccion\"\n labelMode={'outside'}\n formData={warehousePositionWMSPayload}\n readOnly={!activateUpdateForm}\n showColonAfterLabel={false}\n labelLocation={'top'}\n ref={formDatosGeneralesRef}\n >\n <TabbedItem>\n <TabPanelOptions deferRendering={false} showNavButtons={true} />\n <Tab title=\"Datos Generales\" colCount={2}>\n <GroupItem caption=\"General\">\n <Item cssClass=\"boldText\" editorType=\"dxSelectBox\" dataField=\"header.Almacen\" editorOptions={almacenEditorOptions} >\n <Label text={\"Almacén\"} />\n <RequiredRule message=\"Almacén es requerido\" />\n </Item>\n <Item cssClass=\"boldText\" dataField=\"header.Posicion\" editorOptions={posicionEditorOptions} >\n <Label text={\"Posición\"} />\n <RequiredRule message=\"Posición es requerida\" />\n <StringLengthRule message=\"Debe contener máximo 25 caracteres\" min={1} max={25} />\n </Item>\n <Item dataField=\"header.Estatus\" editorType=\"dxSelectBox\" editorOptions={estatusEditorOptions} >\n <Label text={\"Estatus\"} />\n <RequiredRule message=\"Estatus es requerido\" />\n </Item>\n <Item dataField=\"header.ArticuloEsp\" editorType=\"dxLookup\" editorOptions={articuloEditorOptions} >\n <Label text={\"Artículo Específico\"} />\n </Item>\n <Item dataField=\"header.PosicionRecibo\" editorType=\"dxCheckBox\" editorOptions={posicionReciboEditorOptions} >\n <Label text={\"Posición Recibo\"} />\n </Item>\n <Item dataField=\"header.PosicionTransito\" editorType=\"dxCheckBox\" editorOptions={posicionTransitoEditorOptions} >\n <Label text={\"Posición Tránsito\"} />\n </Item>\n <Item dataField=\"header.InvDisponible\" editorType=\"dxCheckBox\" editorOptions={invDisponibleEditorOptions} >\n <Label text={\"Inventario Disponible\"} />\n </Item>\n </GroupItem>\n <GroupItem caption=\"Ubicación\">\n <Item dataField=\"header.Pasillo\" editorOptions={pasilloEditorOptions} >\n <Label text=\"Pasillo\" />\n </Item>\n <Item dataField=\"header.Nivel\" editorOptions={nivelEditorOptions} >\n <Label text=\"Nivel\" />\n </Item>\n <Item dataField=\"header.Zona\" editorOptions={zonaEditorOptions} >\n <Label text=\"Zona\" />\n </Item>\n </GroupItem>\n </Tab>\n <Tab title=\"Descripción\" >\n <Item dataField=\"header.Descripcion\" editorType=\"dxTextArea\" >\n <Label text=\"Descripción\" visible={false} />\n </Item>\n </Tab>\n </TabbedItem>\n </Form>\n </div>\n </div>\n ) :\n (\n <div></div>\n )\n }\n </div>\n )\n }}\n />\n </div>\n </div>\n );\n}\n","import React, { useState, useEffect, useRef, useMemo } from 'react';\n\n// LoadPanel\nimport { LoadPanel } from 'devextreme-react/load-panel';\n\n// Toast\nimport { Toast } from 'devextreme-react/toast';\n\n//Form\nimport Form, { GroupItem, Label, TabbedItem, TabPanelOptions, Tab, EmptyItem } from 'devextreme-react/form';\n\nimport { Auth, API, Storage, label } from 'aws-amplify';\n\n// Ruteador\nimport { Route, Link, useHistory } from \"react-router-dom\";\n\n// Grid\nimport DataGrid, {\n Column, FilterRow, HeaderFilter, FilterPanel, FilterBuilderPopup,\n GroupPanel, Grouping, SearchPanel, Sorting, Editing, Lookup, Toolbar, Item, RequiredRule,\n Scrolling, Pager, Paging, Summary, TotalItem, StateStoring, ColumnChooser, Format, Selection,\n Export, ColumnChooserSearch, ColumnChooserSelection\n} from 'devextreme-react/data-grid';\n\n//CheckBox\nimport CheckBox from 'devextreme-react/check-box';\n\n// Iconos\nimport { FontAwesomeIcon } from \"@fortawesome/react-fontawesome\";\nimport { faPencilAlt } from \"@fortawesome/pro-solid-svg-icons\";\nimport { faArrowRotateLeft } from \"@fortawesome/pro-solid-svg-icons\";\nimport { faSave } from \"@fortawesome/pro-solid-svg-icons\";\nimport { faList } from \"@fortawesome/pro-duotone-svg-icons\";\nimport { faArrowsRotate } from \"@fortawesome/pro-solid-svg-icons\";\nimport { faBedFront } from \"@fortawesome/pro-duotone-svg-icons\";\n\nimport 'devextreme/data/odata/store';\nimport CustomStore from 'devextreme/data/custom_store';\n\nimport '../ListStyle.css';\n\nimport dxDateBox from \"devextreme/ui/date_box\";\n\nimport dxNumberBox from \"devextreme/ui/number_box\";\n\nimport { Workbook } from 'exceljs';\nimport { saveAs } from 'file-saver';\nimport { exportDataGrid } from 'devextreme/excel_exporter'\n\ndxDateBox.defaultOptions({\n options: {\n dateSerializationFormat: \"yyyy-MM-dd\"\n }\n});\n\ndxNumberBox.defaultOptions({\n options: {\n step: 0\n }\n});\n\nfunction isNotEmpty(value) {\n return value !== undefined && value !== null && value !== '';\n}\n\nexport default function ItemWMS(props) {\n const history = useHistory();\n\n const [isDetail, setIsDetail] = useState(false);\n const [articulo, setArticulo] = useState();\n const [itemPayload, setItemPayload] = useState({\n header: {}\n });\n\n const [autoExpandAll, setAutoExpandAll] = useState(true);\n\n const [visibleLoadPanel, setVisibleLoadPanel] = useState(false);\n\n const [visibleToast, setVisibleToast] = useState(false);\n const [messageToast, setMessageToast] = useState('');\n const [typeToast, setTypeToast] = useState('success');\n\n const [activateUpdateForm, setActivateUpdateForm] = useState(false);\n const [activateSaveButton, setActivateSaveButton] = useState(false);\n\n //Ref para el form\n const [formDatosGeneralesRef, setFormDatosGeneralesRef] = useState(React.createRef());\n\n const filterBuilderPopupPosition = {\n of: window,\n at: 'top',\n my: 'top',\n offset: { y: 10 },\n };\n\n const allowedPageSizes = [5, 10, 15, 20, 'all'];\n\n function getOrderDay(rowData) {\n return (new Date(rowData.OrderDate)).getDay();\n }\n\n const filterBuilder = {\n customOperations: [{\n name: 'weekends',\n caption: 'Weekends',\n dataTypes: ['date'],\n icon: 'check',\n hasValue: false,\n calculateFilterExpression: () => [[getOrderDay, '=', 0], 'or', [getOrderDay, '=', 6]],\n }],\n allowHierarchicalFields: true,\n };\n\n //Ref para el grid Tablero de Control\n const [gridTableroRef, setGridTableroRef] = useState(React.createRef());\n\n function onAutoExpandAllChanged() {\n setAutoExpandAll(!autoExpandAll)\n };\n\n async function getItemRecords(sqlFilter) {\n try {\n let apiName = 'AdminSC';\n let path = '/procesaarticulos';\n\n let myInit = {\n headers: {\n 'Content-Type': 'application/json',\n Authorization: `${(await Auth.currentSession()).getAccessToken().getJwtToken()}`\n },\n queryStringParameters: {\n action: 'list',\n sqlFilter: sqlFilter,\n username: JSON.parse(JSON.stringify(await Auth.currentAuthenticatedUser())).username\n }\n }\n\n var warehouseGet = await API.get(apiName, path, myInit);\n }\n catch (e) {\n if (e === 'No current user') {\n history.push('/');\n\n window.location.reload();\n }\n }\n\n return warehouseGet;\n }\n\n const store = new CustomStore({\n key: 'Articulo',\n load(loadOptions) {\n let sqlFilter = '(';\n [\n 'filter'\n ].forEach((i) => {\n if (i in loadOptions && isNotEmpty(loadOptions[i])) {\n var filters = loadOptions[i];\n\n var filtersLength = filters.length;\n\n for (var i = 0; i <= filtersLength; i++) {\n var singleFilter = filters[i];\n var singleFilterType = typeof singleFilter;\n var singleFilterIsArray = Array.isArray(singleFilter);\n var singleFilterIsDate = singleFilter instanceof Date;\n\n if (singleFilter === 'NULL') {\n singleFilter = '0';\n }\n\n if (singleFilterType.toString() === 'object' && singleFilterIsArray) {\n sqlFilter += '(';\n\n var subFiltersLength = singleFilter.length;\n\n for (var i2 = 0; i2 <= subFiltersLength; i2++) {\n var singleSubFilter = singleFilter[i2];\n var singleSubFilterType = typeof singleSubFilter;\n var singleSubFilterIsArray = Array.isArray(singleSubFilter);\n var singleSubFilterIsDate = singleSubFilter instanceof Date\n\n if (singleSubFilter === 'NULL') {\n singleSubFilter = '0';\n }\n\n if (singleSubFilterType.toString() === 'object' && singleSubFilterIsArray) {\n sqlFilter += '(';\n\n var subSubFiltersLength = singleSubFilter.length;\n\n for (var i3 = 0; i3 <= subSubFiltersLength; i3++) {\n var singleSubSubFilter = singleSubFilter[i3];\n var singleSubSubFilterType = typeof singleSubSubFilter;\n var singleSubSubFilterIsArray = Array.isArray(singleSubSubFilter);\n var singleSubSubFilterIsDate = singleSubSubFilter instanceof Date\n\n if (singleSubSubFilter === 'NULL') {\n singleSubSubFilter = '0';\n }\n\n if (singleSubSubFilterType.toString() === 'object' && singleSubSubFilterIsArray) {\n sqlFilter += '(';\n\n var subSubSubFiltersLength = singleSubSubFilter.length;\n\n for (var i4 = 0; i4 <= subSubSubFiltersLength; i4++) {\n var singleSubSubSubFilter = singleSubSubFilter[i4];\n var singleSubSubSubFilterType = typeof singleSubSubSubFilter;\n var singleSubSubSubFilterIsArray = Array.isArray(singleSubSubSubFilter);\n var singleSubSubSubFilterIsDate = singleSubSubSubFilter instanceof Date\n\n if (singleSubSubSubFilter === 'NULL') {\n singleSubSubSubFilter = '0';\n }\n\n if (singleSubSubSubFilterType.toString() === 'object' && singleSubSubSubFilterIsArray) {\n sqlFilter += '(';\n\n var subSubSubSubFiltersLength = singleSubSubSubFilter.length;\n\n for (var i5 = 0; i5 <= subSubSubSubFiltersLength; i5++) {\n var singleSubSubSubSubFilter = singleSubSubSubFilter[i5];\n var singleSubSubSubSubFilterType = typeof singleSubSubSubSubFilter;\n var singleSubSubSubSubFilterIsArray = Array.isArray(singleSubSubSubSubFilter);\n var singleSubSubSubSubFilterIsDate = singleSubSubSubSubFilter instanceof Date\n\n if (singleSubSubSubSubFilter === 'NULL') {\n singleSubSubSubSubFilter = '0';\n }\n\n if (singleSubSubSubSubFilterType.toString() === 'string') {\n if (singleSubSubSubSubFilter === 'contains') {\n filters[i][i2][i3][i4][i5] = 'LIKE';\n singleSubSubSubSubFilter = 'LIKE';\n\n filters[i][i2][i3][i4][i5 + 1] = '\\'%' + filters[i][i2][i3][i4][i5 + 1] + '%\\'';\n }\n else if (singleSubSubSubSubFilter === 'notcontains') {\n filters[i][i2][i3][i4][i5] = 'NOT LIKE';\n singleSubSubSubSubFilter = 'NOT LIKE';\n\n filters[i][i2][i3][i4][i5 + 1] = '\\'%' + filters[i][i2][i3][i4][i5 + 1] + '%\\'';\n }\n else if (singleSubSubSubSubFilter === 'startswith') {\n filters[i][i2][i3][i4][i5] = 'LIKE';\n singleSubSubSubSubFilter = 'LIKE';\n\n filters[i][i2][i3][i4][i5 + 1] = '\\'' + filters[i][i2][i3][i4][i5 + 1] + '%\\'';\n }\n else if (singleSubSubSubSubFilter === 'endswith') {\n filters[i][i2][i3][i4][i5] = 'LIKE';\n singleSubSubSubSubFilter = 'LIKE';\n\n filters[i][i2][i3][i4][i5 + 1] = '\\'%' + filters[i][i2][i3][i4][i5 + 1] + '\\'';\n }\n else if (singleSubSubSubSubFilter === '=' || singleSubSubSubSubFilter === '<>' || singleSubSubSubSubFilter === '>' || singleSubSubSubSubFilter === '>=' || singleSubSubSubSubFilter === '<' || singleSubSubSubSubFilter === '<=') {\n if (!filters[i][i2][i3][i4][i5 + 1])\n filters[i][i2][i3][i4][i5 + 1] = 'NULL';\n else if (typeof filters[i][i2][i3][i4][i5 + 1] === 'string') {\n filters[i][i2][i3][i4][i5 + 1] = '\\'' + filters[i][i2][i3][i4][i5 + 1] + '\\'';\n }\n }\n else if (singleSubSubSubSubFilter === '!') {\n filters[i][i2][i3][i4][i5] = 'NOT';\n singleSubSubSubSubFilter = 'NOT';\n }\n\n sqlFilter += ' ' + singleSubSubSubSubFilter + ' ';\n }\n else if (singleSubSubSubSubFilterType.toString() === 'object' && singleSubSubSubSubFilterIsDate) {\n sqlFilter += ' \\'' + singleSubSubSubSubFilter.toISOString().split('T')[0] + '\\' ';\n }\n else if (singleSubSubSubSubFilterType.toString() === 'number') {\n sqlFilter += ' ' + singleSubSubSubSubFilter.toString() + ' ';\n }\n else if (singleSubSubSubSubFilterType.toString() === 'boolean') {\n if (singleSubSubSubSubFilter.toString() === 'true')\n sqlFilter += '1 ';\n else if (singleSubSubSubSubFilter.toString() === 'false' || singleSubSubSubSubFilter === null || singleSubSubSubSubFilter === undefined)\n sqlFilter += '0 ';\n }\n }\n }\n else if (singleSubSubSubFilterType.toString() === 'string') {\n if (singleSubSubSubFilter === 'contains') {\n filters[i][i2][i3][i4] = 'LIKE';\n singleSubSubSubFilter = 'LIKE';\n\n filters[i][i2][i3][i4 + 1] = '\\'%' + filters[i][i2][i3][i4 + 1] + '%\\'';\n }\n else if (singleSubSubSubFilter === 'notcontains') {\n filters[i][i2][i3][i4] = 'NOT LIKE';\n singleSubSubSubFilter = 'NOT LIKE';\n\n filters[i][i2][i3][i4 + 1] = '\\'%' + filters[i][i2][i3][i4 + 1] + '%\\'';\n }\n else if (singleSubSubSubFilter === 'startswith') {\n filters[i][i2][i3][i4] = 'LIKE';\n singleSubSubSubFilter = 'LIKE';\n\n filters[i][i2][i3][i4 + 1] = '\\'' + filters[i][i2][i3][i4 + 1] + '%\\'';\n }\n else if (singleSubSubSubFilter === 'endswith') {\n filters[i][i2][i3][i4] = 'LIKE';\n singleSubSubSubFilter = 'LIKE';\n\n filters[i][i2][i3][i4 + 1] = '\\'%' + filters[i][i2][i3][i4 + 1] + '\\'';\n }\n else if (singleSubSubSubFilter === '=' || singleSubSubSubFilter === '<>' || singleSubSubSubFilter === '>' || singleSubSubSubFilter === '>=' || singleSubSubSubFilter === '<' || singleSubSubSubFilter === '<=') {\n if (!filters[i][i2][i3][i4 + 1])\n filters[i][i2][i3][i4 + 1] = 'NULL';\n else if (typeof filters[i][i2][i3][i4 + 1] === 'string') {\n filters[i][i2][i3][i4 + 1] = '\\'' + filters[i][i2][i3][i4 + 1] + '\\'';\n }\n }\n else if (singleSubSubSubFilter === '!') {\n filters[i][i2][i3][i4] = 'NOT';\n singleSubSubSubFilter = 'NOT';\n }\n\n sqlFilter += ' ' + singleSubSubSubFilter + ' ';\n }\n else if (singleSubSubSubFilterType.toString() === 'object' && singleSubSubSubFilterIsDate) {\n sqlFilter += ' \\'' + singleSubSubSubFilter.toISOString().split('T')[0] + '\\' ';\n }\n else if (singleSubSubSubFilterType.toString() === 'number') {\n sqlFilter += ' ' + singleSubSubSubFilter.toString() + ' ';\n }\n else if (singleSubSubSubFilterType.toString() === 'boolean') {\n if (singleSubSubSubFilter.toString() === 'true')\n sqlFilter += '1 ';\n else if (singleSubSubSubFilter.toString() === 'false' || singleSubSubSubFilter === null || singleSubSubSubFilter === undefined)\n sqlFilter += '0 ';\n }\n }\n\n sqlFilter += ')';\n }\n else if (singleSubSubFilterType.toString() === 'string') {\n if (singleSubSubFilter === 'contains') {\n filters[i][i2][i3] = 'LIKE';\n singleSubSubFilter = 'LIKE';\n\n filters[i][i2][i3 + 1] = '\\'%' + filters[i][i2][i3 + 1] + '%\\'';\n }\n else if (singleSubSubFilter === 'notcontains') {\n filters[i][i2][i3] = 'NOT LIKE';\n singleSubSubFilter = 'NOT LIKE';\n\n filters[i][i2][i3 + 1] = '\\'%' + filters[i][i2][i3 + 1] + '%\\'';\n }\n else if (singleSubSubFilter === 'startswith') {\n filters[i][i2][i3] = 'LIKE';\n singleSubSubFilter = 'LIKE';\n\n filters[i][i2][i3 + 1] = '\\'' + filters[i][i2][i3 + 1] + '%\\'';\n }\n else if (singleSubSubFilter === 'endswith') {\n filters[i][i2][i3] = 'LIKE';\n singleSubSubFilter = 'LIKE';\n\n filters[i][i2][i3 + 1] = '\\'%' + filters[i][i2][i3 + 1] + '\\'';\n }\n else if (singleSubSubFilter === '=' || singleSubSubFilter === '<>' || singleSubSubFilter === '>' || singleSubSubFilter === '>=' || singleSubSubFilter === '<' || singleSubSubFilter === '<=') {\n if (!filters[i][i2][i3 + 1])\n filters[i][i2][i3 + 1] = 'NULL';\n else if (typeof filters[i][i2][i3 + 1] === 'string') {\n filters[i][i2][i3 + 1] = '\\'' + filters[i][i2][i3 + 1] + '\\'';\n }\n }\n else if (singleSubSubFilter === '!') {\n filters[i][i2][i3] = 'NOT';\n singleSubSubFilter = 'NOT';\n }\n sqlFilter += ' ' + singleSubSubFilter + ' ';\n }\n else if (singleSubSubFilterType.toString() === 'object' && singleSubSubFilterIsDate) {\n sqlFilter += ' \\'' + singleSubSubFilter.toISOString().split('T')[0] + '\\' ';\n }\n else if (singleSubSubFilterType.toString() === 'number') {\n sqlFilter += ' ' + singleSubSubFilter.toString() + ' ';\n }\n else if (singleSubSubFilterType.toString() === 'boolean') {\n if (singleSubSubFilter.toString() === 'true')\n sqlFilter += '1 ';\n else if (singleSubSubFilter.toString() === 'false' || singleSubSubFilter === null || singleSubSubFilter === undefined)\n sqlFilter += '0 ';\n }\n }\n\n sqlFilter += ')';\n }\n else if (singleSubFilterType.toString() === 'string') {\n if (singleSubFilter === 'contains') {\n filters[i][i2] = 'LIKE';\n singleSubFilter = 'LIKE';\n\n filters[i][i2 + 1] = '\\'%' + filters[i][i2 + 1] + '%\\'';\n }\n else if (singleSubFilter === 'notcontains') {\n filters[i][i2] = 'NOT LIKE';\n singleSubFilter = 'NOT LIKE';\n\n filters[i][i2 + 1] = '\\'%' + filters[i][i2 + 1] + '%\\'';\n }\n else if (singleSubFilter === 'startswith') {\n filters[i][i2] = 'LIKE';\n singleSubFilter = 'LIKE';\n\n filters[i][i2 + 1] = '\\'' + filters[i][i2 + 1] + '%\\'';\n }\n else if (singleSubFilter === 'endswith') {\n filters[i][i2] = 'LIKE';\n singleSubFilter = 'LIKE';\n\n filters[i][i2 + 1] = '\\'%' + filters[i][i2 + 1] + '\\'';\n }\n else if (singleSubFilter === '=' || singleSubFilter === '<>' || singleSubFilter === '>' || singleSubFilter === '>=' || singleSubFilter === '<' || singleSubFilter === '<=') {\n if (!filters[i][i2 + 1])\n filters[i][i2 + 1] = 'NULL';\n else if (typeof filters[i][i2 + 1] === 'string') {\n filters[i][i2 + 1] = '\\'' + filters[i][i2 + 1] + '\\'';\n }\n }\n else if (singleSubFilter === '!') {\n filters[i][i2] = 'NOT';\n singleSubFilter = 'NOT';\n }\n sqlFilter += ' ' + singleSubFilter + ' ';\n }\n else if (singleSubFilterType.toString() === 'object' && singleSubFilterIsDate) {\n sqlFilter += ' \\'' + singleSubFilter.toISOString().split('T')[0] + '\\' ';\n }\n else if (singleSubFilterType.toString() === 'number') {\n sqlFilter += ' ' + singleSubFilter.toString() + ' ';\n }\n else if (singleSubFilterType.toString() === 'boolean') {\n if (singleSubFilter.toString() === 'true')\n sqlFilter += '1 ';\n else if (singleSubFilter.toString() === 'false' || singleSubFilter === null || singleSubFilter === undefined)\n sqlFilter += '0 ';\n }\n }\n\n sqlFilter += ')';\n }\n else if (singleFilterType.toString() === 'string') {\n if (singleFilter === 'contains') {\n filters[i] = 'LIKE';\n singleFilter = 'LIKE';\n\n filters[i + 1] = '\\'%' + filters[i + 1] + '%\\'';\n }\n else if (singleFilter === 'notcontains') {\n filters[i] = 'NOT LIKE';\n singleFilter = 'NOT LIKE';\n\n filters[i + 1] = '\\'%' + filters[i + 1] + '%\\'';\n }\n else if (singleFilter === 'startswith') {\n filters[i] = 'LIKE';\n singleFilter = 'LIKE';\n\n filters[i + 1] = '\\'' + filters[i + 1] + '%\\'';\n }\n else if (singleFilter === 'endswith') {\n filters[i] = 'LIKE';\n singleFilter = 'LIKE';\n\n filters[i + 1] = '\\'%' + filters[i + 1] + '\\'';\n }\n else if (singleFilter === '=' || singleFilter === '<>' || singleFilter === '>' || singleFilter === '>=' || singleFilter === '<' || singleFilter === '<=') {\n if (!filters[i + 1])\n filters[i + 1] = 'NULL';\n else if (typeof filters[i + 1] === 'string') {\n filters[i + 1] = '\\'' + filters[i + 1] + '\\'';\n }\n }\n else if (singleFilter === '!') {\n filters[i] = 'NOT';\n singleFilter = 'NOT';\n }\n sqlFilter += ' ' + singleFilter + ' ';\n }\n else if (singleFilterType.toString() === 'object' && singleFilterIsDate) {\n sqlFilter += ' \\'' + singleFilter.toISOString().split('T')[0] + '\\' ';\n }\n else if (singleFilterType.toString() === 'number') {\n sqlFilter += ' ' + singleFilter.toString() + ' ';\n }\n else if (singleFilterType.toString() === 'boolean') {\n if (singleFilter.toString() === 'true')\n sqlFilter += '1 ';\n else if (singleFilter.toString() === 'false' || singleFilter === null || singleFilter === undefined)\n sqlFilter += '0 ';\n }\n }\n\n sqlFilter += ')';\n }\n });\n\n async function getRecords() {\n if (sqlFilter === '(')\n sqlFilter = '';\n\n var records = await getItemRecords(sqlFilter);\n return {\n data: records,\n totalCount: records.length\n };\n }\n\n return getRecords()\n .then(function (result) {\n return result;\n })\n .catch(() => { throw new Error('Data Loading Error'); });\n },\n });\n\n const getItemPayload = React.useCallback(async (Articulo) => {\n try {\n let apiName = 'AdminSC';\n let path = '/procesaarticulos';\n\n let myInit = {\n headers: {\n 'Content-Type': 'application/json',\n Authorization: `${(await Auth.currentSession()).getAccessToken().getJwtToken()}`\n },\n queryStringParameters: {\n Articulo: Articulo,\n action: 'payload',\n username: JSON.parse(JSON.stringify(await Auth.currentAuthenticatedUser())).username\n }\n }\n\n var payloadGet = await API.get(apiName, path, myInit);\n\n setItemPayload(payloadGet);\n }\n catch (e) {\n if (e === 'No current user') {\n history.push('/');\n\n window.location.reload();\n }\n }\n\n return payloadGet;\n }, [history])\n\n function editItem(data) {\n return (\n <Link to={`/ItemWMS/${data.data.Articulo}`}>\n <button class=\"bg-blue-500 hover:bg-blue-700 text-white py-1 px-3 rounded\" onClick={() => editButton(data.data.Articulo)}><FontAwesomeIcon icon={faPencilAlt} /> Editar</button>\n </Link>\n )\n }\n\n const editButton = React.useCallback(async (Articulo) => {\n try {\n if (!window.event.metaKey && !window.event.ctrlKey) {\n setVisibleLoadPanel(true);\n\n setIsDetail(true);\n setArticulo(Articulo);\n\n var payload = await getItemPayload(Articulo);\n\n setActivateUpdateForm(true);\n setActivateSaveButton(true);\n\n setVisibleLoadPanel(false);\n }\n }\n catch (e) {\n setVisibleLoadPanel(false);\n }\n }, [getItemPayload]);\n\n async function cancelEditButton() {\n setIsDetail(false);\n };\n\n async function saveButton() {\n if (formDatosGeneralesRef.current) {\n var formDatosGenerales = formDatosGeneralesRef.current.instance();\n var isValid = formDatosGenerales.validate();\n\n if (!isValid.isValid) {\n setVisibleToast(true);\n setMessageToast(isValid.brokenRules[0].message);\n setTypeToast('error');\n return;\n }\n }\n\n try {\n setVisibleLoadPanel(true);\n\n var Articulo = itemPayload.header.Articulo;\n\n //Despues enviamos todo al backend\n let apiName = 'AdminSC';\n let path = '/procesaarticulos';\n\n let myInit = {\n headers: {\n 'Content-Type': 'application/json',\n Authorization: `${(await Auth.currentSession()).getAccessToken().getJwtToken()}`\n },\n body: {\n Articulo: Articulo,\n payload: itemPayload,\n action: 'saveChanges',\n username: JSON.parse(JSON.stringify(await Auth.currentAuthenticatedUser())).username,\n usuario: props.usuario,\n sucursal: props.sucursal,\n s3Bucket: Storage._config.AWSS3.bucket\n }\n }\n\n var payloadPost = await API.post(apiName, path, myInit);\n\n if (payloadPost.ok === 'true') {\n setVisibleToast(true);\n setMessageToast('Se actualizó el Artículo con éxito');\n setTypeToast('success')\n }\n else if (payloadPost.ok === 'false') {\n setVisibleToast(true);\n setMessageToast(payloadPost.message);\n setTypeToast('error')\n }\n\n editButton(Articulo);\n\n setVisibleLoadPanel(false);\n }\n catch (e) {\n setVisibleLoadPanel(false);\n\n if (e === 'No current user') {\n history.push('/');\n\n window.location.reload();\n }\n }\n };\n\n function refreshButton() {\n if (gridTableroRef.current) {\n var gridTablero = gridTableroRef.current.instance();\n\n gridTablero.refresh();\n }\n }\n\n useEffect(() => {\n window.addEventListener('popstate', (e) => {\n var hash;\n\n try {\n hash = e.target.location.hash;\n }\n catch (e) {\n hash = '';\n }\n\n if (hash === '#/ItemWMS') {\n history.push('/ItemWMS');\n\n window.location.reload();\n }\n });\n\n async function initialize() {\n setVisibleLoadPanel(true);\n\n setVisibleLoadPanel(false);\n }\n\n initialize();\n\n //En caso de solicitar un ID especifico, redireccionamos a ese ID\n if (!props.match.isExact) {\n var urlID = props.location.pathname.replace('/ItemWMS/', '');\n\n if (urlID === 'undefined')\n urlID = undefined;\n\n if (urlID)\n editButton(urlID);\n }\n\n // eslint-disable-next-line\n }, []);\n\n function onHidingToast() {\n setVisibleToast(false);\n }\n\n function onExporting(e) {\n const workbook = new Workbook();\n const worksheet = workbook.addWorksheet('Datos');\n\n exportDataGrid({\n component: e.component,\n worksheet,\n autoFilterEnabled: true,\n }).then(() => {\n workbook.xlsx.writeBuffer().then((buffer) => {\n saveAs(new Blob([buffer], { type: 'application/octet-stream' }), 'Datos.xlsx');\n });\n });\n e.cancel = true;\n };\n\n var articuloEditorOptions = useMemo(() => {\n return {\n width: '100%',\n readOnly: true\n };\n }, []);\n\n var nombreArticuloEditorOptions = useMemo(() => {\n return {\n width: '100%',\n readOnly: true\n };\n }, []);\n\n return (\n <div>\n {isDetail === false ? (\n <div class=\"bg-gray-200 m-2\">\n <h1 class=\"font-sans inline-block text-xl font-bold text-gray-700 leading-8 align-top mb-1\"><FontAwesomeIcon icon={faList} size=\"lg\" /> Artículos</h1>\n </div>\n ) :\n (\n <div class=\"bg-gray-200 m-2\">\n <h1 class=\"font-sans inline-block text-xl font-bold text-gray-700 leading-8 align-top mb-1\"><FontAwesomeIcon icon={faBedFront} size=\"xl\" /> {(itemPayload.header ? itemPayload.header.Articulo : 'Artículo')}</h1>\n </div>\n )}\n\n <LoadPanel\n shadingColor=\"rgba(0,0,0,0.4)\"\n visible={visibleLoadPanel}\n showIndicator={true}\n message=\"Por favor espere...\"\n shading={true}\n showPane={true}\n hideOnOutsideClick={false}\n />\n\n <Toast\n visible={visibleToast}\n message={messageToast}\n type={typeToast}\n onHiding={onHidingToast}\n displayTime={5000}\n width={'auto'}\n position={{\n my: 'top center',\n at: 'top center',\n of: window,\n offset: '0 130'\n }}\n />\n\n <div class=\"bg-gray-200 m-2\">\n {isDetail === false ? (\n <div class=\"bg-white p-3 shadow-xl\">\n <div>\n <button onClick={refreshButton} type=\"submit\" class=\"mb-4 bg-blue-500 hover:bg-blue-700 text-white font-bold py-2 px-4 rounded\">\n <FontAwesomeIcon icon={faArrowsRotate} /> Actualizar\n </button>\n </div>\n\n <div className=\"options mb-2\">\n <div className=\"option\">\n <CheckBox text=\"Expandir todos los grupos\"\n value={autoExpandAll}\n onValueChanged={onAutoExpandAllChanged}></CheckBox>\n </div>\n </div>\n\n <DataGrid\n height={800}\n id=\"gridContainer\"\n columnsAutoWidth={true}\n filterBuilder={filterBuilder}\n dataSource={store}\n allowColumnReordering={true}\n allowColumnResizing={true}\n columnResizingMode={\"widget\"}\n showBorders={true}\n rowAlternationEnabled={true}\n showRowLines={true}\n showColumnLines={true}\n remoteOperations={{ filtering: true }}\n ref={gridTableroRef}\n onExporting={onExporting}\n >\n <Scrolling rowRenderingMode='virtual'></Scrolling>\n <Paging defaultPageSize={10} />\n <Pager\n visible={true}\n allowedPageSizes={allowedPageSizes}\n displayMode='compact'\n showPageSizeSelector={true}\n showInfo={true}\n showNavigationButtons={true}\n />\n <FilterRow visible={true} />\n <FilterPanel visible={true} />\n <FilterBuilderPopup position={filterBuilderPopupPosition} />\n\n <HeaderFilter visible={true} />\n\n <GroupPanel visible={true} />\n <SearchPanel visible={true} />\n <ColumnChooser\n enabled={true}\n mode='select'\n >\n <ColumnChooserSearch\n enabled={true}\n />\n\n <ColumnChooserSelection\n allowSelectAll={true}\n selectByClick={true}\n recursive={true}\n />\n </ColumnChooser>\n <Grouping autoExpandAll={autoExpandAll} />\n <StateStoring enabled={true} type=\"localStorage\" storageKey=\"gridItemWMS\" />\n <Export enabled={true} />\n\n <Column caption=\"\" alignment=\"center\" width={100} cellRender={editItem} />\n <Column dataField=\"Articulo\" dataType=\"string\" width={110} caption=\"Artículo\" />\n <Column dataField=\"Descripcion1\" dataType=\"string\" width={300} caption=\"Nombre Artículo\" />\n <Column dataField=\"WMS\" dataType=\"boolean\" width={150} caption=\"WMS\" />\n <Column dataField=\"EtiquetaPorPieza\" dataType=\"boolean\" width={150} caption=\"Etiqueta por pieza\" />\n <Column dataField=\"Grupo\" dataType=\"string\" width={150} caption=\"Grupo\" visible={false} />\n <Column dataField=\"Categoria\" dataType=\"string\" width={150} caption=\"Categoría\" visible={false} />\n <Column dataField=\"Familia\" dataType=\"string\" width={150} caption=\"Familia\" visible={false} />\n <Column dataField=\"Linea\" dataType=\"string\" width={150} caption=\"Línea\" visible={false} />\n </DataGrid>\n </div>\n ) : (<div />)}\n <Route exact path=\"/ItemWMS/:Articulo\" render={({ match }) => {\n return (\n <div class=\"bg-gray-200\">\n {isDetail.toString() === 'true' ?\n (\n <div>\n <Link to=\"/ItemWMS\">\n <button onClick={cancelEditButton} type=\"submit\" class=\"mb-4 bg-red-500 hover:bg-red-700 text-white font-bold py-2 px-4 rounded\">\n <FontAwesomeIcon icon={faArrowRotateLeft} /> Regresar\n </button>\n </Link>\n\n {activateSaveButton.toString() === 'true' ?\n (\n <button onClick={saveButton} type=\"submit\" class=\"ml-4 mb-4 bg-blue-500 hover:bg-blue-700 text-white font-bold py-2 px-4 rounded\">\n <FontAwesomeIcon icon={faSave} /> Guardar Cambios\n </button>\n ) : (\n <div class=\"inline-block\"></div>\n )}\n\n <div class=\"bg-white p-4 shadow-xl\">\n <Form\n id=\"formTransaccion\"\n labelMode={'outside'}\n formData={itemPayload}\n readOnly={!activateUpdateForm}\n showColonAfterLabel={false}\n labelLocation={'top'}\n ref={formDatosGeneralesRef}\n >\n <TabbedItem>\n <TabPanelOptions deferRendering={false} showNavButtons={true} />\n <Tab title=\"Datos Generales\" colCount={3}>\n <GroupItem caption=\"General\">\n <Item cssClass=\"boldText\" dataField=\"header.Articulo\" editorOptions={articuloEditorOptions} >\n <Label text={\"Artículo\"} />\n </Item>\n <Item cssClass=\"boldText\" dataField=\"header.Descripcion1\" editorOptions={nombreArticuloEditorOptions} >\n <Label text={\"Nombre Artículo\"} />\n </Item>\n\n <Item dataField=\"header.Grupo\" editorOptions={articuloEditorOptions} >\n <Label text={\"Grupo\"} />\n </Item>\n <Item dataField=\"header.Categoria\" editorOptions={articuloEditorOptions} >\n <Label text={\"Categoría\"} />\n </Item>\n <Item dataField=\"header.Familia\" editorOptions={articuloEditorOptions} >\n <Label text={\"Familia\"} />\n </Item>\n <Item dataField=\"header.Linea\" editorOptions={articuloEditorOptions} >\n <Label text={\"Línea\"} />\n </Item>\n </GroupItem>\n <GroupItem caption=\"WMS\">\n <Item cssClass=\"boldText\" colSpan={2} editorType=\"dxCheckBox\" dataField=\"header.WMS\" >\n <Label text={\"Activar WMS\"} />\n </Item>\n <Item cssClass=\"boldText\" colSpan={2} editorType=\"dxCheckBox\" dataField=\"header.EtiquetaPorPieza\" >\n <Label text={\"Etiqueta por pieza\"} />\n </Item>\n </GroupItem>\n </Tab>\n </TabbedItem>\n </Form>\n </div>\n </div>\n ) :\n (\n <div></div>\n )\n }\n </div>\n )\n }}\n />\n </div>\n </div>\n );\n}\n","import React, { useState, useEffect, useRef, useMemo } from 'react';\n\n// LoadPanel\nimport { LoadPanel } from 'devextreme-react/load-panel';\n\n// Toast\nimport { Toast } from 'devextreme-react/toast';\n\n//Form\nimport Form, { GroupItem, Label, TabbedItem, TabPanelOptions, Tab, EmptyItem } from 'devextreme-react/form';\n\nimport { Auth, API, Storage } from 'aws-amplify';\n\n// Ruteador\nimport { Route, Link, useHistory } from \"react-router-dom\";\n\n// Grid\nimport DataGrid, {\n Column, FilterRow, HeaderFilter, FilterPanel, FilterBuilderPopup,\n GroupPanel, Grouping, SearchPanel, Sorting, Editing, Lookup, Toolbar, Item, RequiredRule,\n Scrolling, Pager, Paging, Summary, TotalItem, StateStoring, ColumnChooser, Format, Selection,\n Export, ColumnChooserSearch, ColumnChooserSelection\n} from 'devextreme-react/data-grid';\n\n//CheckBox\nimport CheckBox from 'devextreme-react/check-box';\n\n// Iconos\nimport { FontAwesomeIcon } from \"@fortawesome/react-fontawesome\";\nimport { faGlasses } from \"@fortawesome/pro-solid-svg-icons\";\nimport { faPencilAlt } from \"@fortawesome/pro-solid-svg-icons\";\nimport { faArrowRotateLeft } from \"@fortawesome/pro-solid-svg-icons\";\nimport { faSave } from \"@fortawesome/pro-solid-svg-icons\";\nimport { faList } from \"@fortawesome/pro-duotone-svg-icons\";\nimport { faFilePdf } from \"@fortawesome/pro-solid-svg-icons\";\nimport { faArrowsRotate } from \"@fortawesome/pro-solid-svg-icons\";\nimport { faFileAlt } from \"@fortawesome/pro-solid-svg-icons\";\nimport { faPenToSquare } from \"@fortawesome/pro-duotone-svg-icons\";\nimport { faPlay } from \"@fortawesome/pro-solid-svg-icons\";\nimport { faTrash } from \"@fortawesome/pro-solid-svg-icons\";\nimport { faWindowClose } from \"@fortawesome/pro-solid-svg-icons\";\nimport { faThumbsUp } from \"@fortawesome/pro-solid-svg-icons\";\n\nimport 'devextreme/data/odata/store';\nimport CustomStore from 'devextreme/data/custom_store';\n\nimport DataSource from 'devextreme/data/data_source';\n\nimport '../ListStyle.css';\n\nimport dxDateBox from \"devextreme/ui/date_box\";\n\nimport dxNumberBox from \"devextreme/ui/number_box\";\n\nimport TransactionStatus from \"../TransactionStatus/TransactionStatus.js\";\n\nimport Lambda from 'aws-sdk/clients/lambda';\n\nimport { Workbook } from 'exceljs';\nimport { saveAs } from 'file-saver';\nimport { exportDataGrid } from 'devextreme/excel_exporter'\n\ndxDateBox.defaultOptions({\n options: {\n dateSerializationFormat: \"yyyy-MM-dd\"\n }\n});\n\ndxNumberBox.defaultOptions({\n options: {\n step: 0\n }\n});\n\nfunction isNotEmpty(value) {\n return value !== undefined && value !== null && value !== '';\n}\n\nexport default function AdjustItemWMSLevel(props) {\n const history = useHistory();\n\n const [isDetail, setIsDetail] = useState(false);\n const [id, setId] = useState();\n const [permissionLevel, setPermissionLevel] = useState(props.nivel);\n const [approveAdjustItemWMS, setApproveAdjustItemWMS] = useState(props.approveAdjustItemWMS);\n const [adjustItemWMSPayload, setAdjustItemWMSPayload] = useState({\n header: {},\n movEstatusLog: []\n });\n\n const [almacenes, setAlmacenes] = useState([]);\n const [posiciones, setPosiciones] = useState([]);\n const [submensaje, setSubmensaje] = useState('');\n\n const [autoExpandAll, setAutoExpandAll] = useState(true);\n\n const [visibleLoadPanel, setVisibleLoadPanel] = useState(false);\n\n const [visibleToast, setVisibleToast] = useState(false);\n const [messageToast, setMessageToast] = useState('');\n const [typeToast, setTypeToast] = useState('success');\n\n const [activateSaveButton, setActivateSaveButton] = useState(false);\n const [activateCancelButton, setActivateCancelButton] = useState(false);\n const [activateConfirmButton, setActivateConfirmButton] = useState(false);\n const [activateDeleteButton, setActivateDeleteButton] = useState(false);\n const [activateApproveButton, setActivateApproveButton] = useState(false);\n const [activateUpdateForm, setActivateUpdateForm] = useState(false);\n const [activatePDFButton, setActivatePDFButton] = useState(false);\n const [activateUpdateGrid, setActivateUpdateGrid] = useState(false);\n const [activateWarehouse, setActivateWarehouse] = useState(true);\n\n //Ref para el form\n const [formDatosGeneralesRef, setFormDatosGeneralesRef] = useState(React.createRef());\n\n //Ref para el grid Items\n const [gridItemsRef, setGridItemsRef] = useState(React.createRef());\n\n const filterBuilderPopupPosition = {\n of: window,\n at: 'top',\n my: 'top',\n offset: { y: 10 },\n };\n\n const allowedPageSizes = [5, 10, 15, 20, 'all'];\n\n function getOrderDay(rowData) {\n return (new Date(rowData.OrderDate)).getDay();\n }\n\n const filterBuilder = {\n customOperations: [{\n name: 'weekends',\n caption: 'Weekends',\n dataTypes: ['date'],\n icon: 'check',\n hasValue: false,\n calculateFilterExpression: () => [[getOrderDay, '=', 0], 'or', [getOrderDay, '=', 6]],\n }],\n allowHierarchicalFields: true,\n };\n\n const filterValue = [['Estatus', '=', 'Sin Afectar']];\n\n //Opciones Nivel de Permiso\n const subMensajeOptions = useMemo(() => {\n return [\n { value: 'Agregar', name: 'Agregar' },\n { value: 'Eliminar', name: 'Eliminar' },\n { value: 'Ajustar', name: 'Ajustar' }\n ];\n }, []);\n\n var almacenDataSource = useMemo(() => {\n return new DataSource({\n paginate: true,\n store: {\n type: \"array\",\n key: \"Almacen\",\n data: almacenes\n }\n });\n }, [almacenes]);\n\n //Ref para el grid Tablero de Control\n const [gridTableroRef, setGridTableroRef] = useState(React.createRef());\n\n function onAutoExpandAllChanged() {\n setAutoExpandAll(!autoExpandAll)\n };\n\n async function getAdjustItemWMSRecords(sqlFilter) {\n try {\n let apiName = 'AdminSC';\n let path = '/procesaajustewms';\n\n let myInit = {\n headers: {\n 'Content-Type': 'application/json',\n Authorization: `${(await Auth.currentSession()).getAccessToken().getJwtToken()}`\n },\n queryStringParameters: {\n action: 'list',\n sqlFilter: sqlFilter,\n salesAccess: props.salesAccess,\n sucursal: props.sucursal,\n username: JSON.parse(JSON.stringify(await Auth.currentAuthenticatedUser())).username\n }\n }\n\n var customerPaymentsGet = await API.get(apiName, path, myInit);\n }\n catch (e) {\n if (e === 'No current user') {\n history.push('/');\n\n window.location.reload();\n }\n }\n\n return customerPaymentsGet;\n }\n\n async function getAlmacenes() {\n let apiName = 'AdminSC';\n let path = '/getcatalogo';\n\n let myInit = {\n headers: {\n 'Content-Type': 'application/json',\n Authorization: `${(await Auth.currentSession()).getAccessToken().getJwtToken()}`\n },\n queryStringParameters: {\n type: 'AlmacenWMS',\n username: JSON.parse(JSON.stringify(await Auth.currentAuthenticatedUser())).username\n }\n }\n\n var almacenesGet = await API.get(apiName, path, myInit);\n\n setAlmacenes(almacenesGet);\n };\n\n const getAlmPos = React.useCallback(async (Almacen) => {\n let apiName = 'AdminSC';\n let path = '/getcatalogo';\n\n let myInit = {\n headers: {\n 'Content-Type': 'application/json',\n Authorization: `${(await Auth.currentSession()).getAccessToken().getJwtToken()}`\n },\n queryStringParameters: {\n type: 'AlmPos',\n Almacen: Almacen,\n username: JSON.parse(JSON.stringify(await Auth.currentAuthenticatedUser())).username\n }\n }\n\n var posicionesGet = await API.get(apiName, path, myInit);\n\n setPosiciones(posicionesGet);\n }, []);\n\n const getAlmPosInfo = React.useCallback(async (Almacen, Posicion, Barcode) => {\n let apiName = 'AdminSC';\n let path = '/getcatalogo';\n\n let myInit = {\n headers: {\n 'Content-Type': 'application/json',\n Authorization: `${(await Auth.currentSession()).getAccessToken().getJwtToken()}`\n },\n queryStringParameters: {\n type: 'AlmPosInfo',\n Almacen: Almacen,\n Posicion: Posicion,\n Barcode: Barcode,\n username: JSON.parse(JSON.stringify(await Auth.currentAuthenticatedUser())).username\n }\n }\n\n var almPosInfoGet = await API.get(apiName, path, myInit);\n\n return almPosInfoGet;\n }, []);\n\n const getArticulo = React.useCallback(async (sqlFilter) => {\n let apiName = 'AdminSC';\n let path = '/getcatalogo';\n\n let myInit = {\n headers: {\n 'Content-Type': 'application/json',\n Authorization: `${(await Auth.currentSession()).getAccessToken().getJwtToken()}`\n },\n queryStringParameters: {\n type: 'ArticuloWMS',\n sqlFilter: sqlFilter,\n username: JSON.parse(JSON.stringify(await Auth.currentAuthenticatedUser())).username\n }\n }\n\n var articulosGet = await API.get(apiName, path, myInit);\n\n return articulosGet;\n }, []);\n\n const store = new CustomStore({\n key: 'ID',\n load(loadOptions) {\n let sqlFilter = '(';\n [\n 'filter'\n ].forEach((i) => {\n if (i in loadOptions && isNotEmpty(loadOptions[i])) {\n var filters = loadOptions[i];\n\n var filtersLength = filters.length;\n\n for (var i = 0; i <= filtersLength; i++) {\n var singleFilter = filters[i];\n var singleFilterType = typeof singleFilter;\n var singleFilterIsArray = Array.isArray(singleFilter);\n var singleFilterIsDate = singleFilter instanceof Date;\n\n if (singleFilter === 'NULL') {\n singleFilter = '0';\n }\n\n if (singleFilterType.toString() === 'object' && singleFilterIsArray) {\n sqlFilter += '(';\n\n var subFiltersLength = singleFilter.length;\n\n for (var i2 = 0; i2 <= subFiltersLength; i2++) {\n var singleSubFilter = singleFilter[i2];\n var singleSubFilterType = typeof singleSubFilter;\n var singleSubFilterIsArray = Array.isArray(singleSubFilter);\n var singleSubFilterIsDate = singleSubFilter instanceof Date\n\n if (singleSubFilter === 'NULL') {\n singleSubFilter = '0';\n }\n\n if (singleSubFilterType.toString() === 'object' && singleSubFilterIsArray) {\n sqlFilter += '(';\n\n var subSubFiltersLength = singleSubFilter.length;\n\n for (var i3 = 0; i3 <= subSubFiltersLength; i3++) {\n var singleSubSubFilter = singleSubFilter[i3];\n var singleSubSubFilterType = typeof singleSubSubFilter;\n var singleSubSubFilterIsArray = Array.isArray(singleSubSubFilter);\n var singleSubSubFilterIsDate = singleSubSubFilter instanceof Date\n\n if (singleSubSubFilter === 'NULL') {\n singleSubSubFilter = '0';\n }\n\n if (singleSubSubFilterType.toString() === 'object' && singleSubSubFilterIsArray) {\n sqlFilter += '(';\n\n var subSubSubFiltersLength = singleSubSubFilter.length;\n\n for (var i4 = 0; i4 <= subSubSubFiltersLength; i4++) {\n var singleSubSubSubFilter = singleSubSubFilter[i4];\n var singleSubSubSubFilterType = typeof singleSubSubSubFilter;\n var singleSubSubSubFilterIsArray = Array.isArray(singleSubSubSubFilter);\n var singleSubSubSubFilterIsDate = singleSubSubSubFilter instanceof Date\n\n if (singleSubSubSubFilter === 'NULL') {\n singleSubSubSubFilter = '0';\n }\n\n if (singleSubSubSubFilterType.toString() === 'object' && singleSubSubSubFilterIsArray) {\n sqlFilter += '(';\n\n var subSubSubSubFiltersLength = singleSubSubSubFilter.length;\n\n for (var i5 = 0; i5 <= subSubSubSubFiltersLength; i5++) {\n var singleSubSubSubSubFilter = singleSubSubSubFilter[i5];\n var singleSubSubSubSubFilterType = typeof singleSubSubSubSubFilter;\n var singleSubSubSubSubFilterIsArray = Array.isArray(singleSubSubSubSubFilter);\n var singleSubSubSubSubFilterIsDate = singleSubSubSubSubFilter instanceof Date\n\n if (singleSubSubSubSubFilter === 'NULL') {\n singleSubSubSubSubFilter = '0';\n }\n\n if (singleSubSubSubSubFilterType.toString() === 'string') {\n if (singleSubSubSubSubFilter === 'contains') {\n filters[i][i2][i3][i4][i5] = 'LIKE';\n singleSubSubSubSubFilter = 'LIKE';\n\n filters[i][i2][i3][i4][i5 + 1] = '\\'%' + filters[i][i2][i3][i4][i5 + 1] + '%\\'';\n }\n else if (singleSubSubSubSubFilter === 'notcontains') {\n filters[i][i2][i3][i4][i5] = 'NOT LIKE';\n singleSubSubSubSubFilter = 'NOT LIKE';\n\n filters[i][i2][i3][i4][i5 + 1] = '\\'%' + filters[i][i2][i3][i4][i5 + 1] + '%\\'';\n }\n else if (singleSubSubSubSubFilter === 'startswith') {\n filters[i][i2][i3][i4][i5] = 'LIKE';\n singleSubSubSubSubFilter = 'LIKE';\n\n filters[i][i2][i3][i4][i5 + 1] = '\\'' + filters[i][i2][i3][i4][i5 + 1] + '%\\'';\n }\n else if (singleSubSubSubSubFilter === 'endswith') {\n filters[i][i2][i3][i4][i5] = 'LIKE';\n singleSubSubSubSubFilter = 'LIKE';\n\n filters[i][i2][i3][i4][i5 + 1] = '\\'%' + filters[i][i2][i3][i4][i5 + 1] + '\\'';\n }\n else if (singleSubSubSubSubFilter === '=' || singleSubSubSubSubFilter === '<>' || singleSubSubSubSubFilter === '>' || singleSubSubSubSubFilter === '>=' || singleSubSubSubSubFilter === '<' || singleSubSubSubSubFilter === '<=') {\n if (!filters[i][i2][i3][i4][i5 + 1])\n filters[i][i2][i3][i4][i5 + 1] = 'NULL';\n else if (typeof filters[i][i2][i3][i4][i5 + 1] === 'string') {\n filters[i][i2][i3][i4][i5 + 1] = '\\'' + filters[i][i2][i3][i4][i5 + 1] + '\\'';\n }\n }\n else if (singleSubSubSubSubFilter === '!') {\n filters[i][i2][i3][i4][i5] = 'NOT';\n singleSubSubSubSubFilter = 'NOT';\n }\n\n sqlFilter += ' ' + singleSubSubSubSubFilter + ' ';\n }\n else if (singleSubSubSubSubFilterType.toString() === 'object' && singleSubSubSubSubFilterIsDate) {\n sqlFilter += ' \\'' + singleSubSubSubSubFilter.toISOString().split('T')[0] + '\\' ';\n }\n else if (singleSubSubSubSubFilterType.toString() === 'number') {\n sqlFilter += ' ' + singleSubSubSubSubFilter.toString() + ' ';\n }\n else if (singleSubSubSubSubFilterType.toString() === 'boolean') {\n if (singleSubSubSubSubFilter.toString() === 'true')\n sqlFilter += '1 ';\n else if (singleSubSubSubSubFilter.toString() === 'false' || singleSubSubSubSubFilter === null || singleSubSubSubSubFilter === undefined)\n sqlFilter += '0 ';\n }\n }\n }\n else if (singleSubSubSubFilterType.toString() === 'string') {\n if (singleSubSubSubFilter === 'contains') {\n filters[i][i2][i3][i4] = 'LIKE';\n singleSubSubSubFilter = 'LIKE';\n\n filters[i][i2][i3][i4 + 1] = '\\'%' + filters[i][i2][i3][i4 + 1] + '%\\'';\n }\n else if (singleSubSubSubFilter === 'notcontains') {\n filters[i][i2][i3][i4] = 'NOT LIKE';\n singleSubSubSubFilter = 'NOT LIKE';\n\n filters[i][i2][i3][i4 + 1] = '\\'%' + filters[i][i2][i3][i4 + 1] + '%\\'';\n }\n else if (singleSubSubSubFilter === 'startswith') {\n filters[i][i2][i3][i4] = 'LIKE';\n singleSubSubSubFilter = 'LIKE';\n\n filters[i][i2][i3][i4 + 1] = '\\'' + filters[i][i2][i3][i4 + 1] + '%\\'';\n }\n else if (singleSubSubSubFilter === 'endswith') {\n filters[i][i2][i3][i4] = 'LIKE';\n singleSubSubSubFilter = 'LIKE';\n\n filters[i][i2][i3][i4 + 1] = '\\'%' + filters[i][i2][i3][i4 + 1] + '\\'';\n }\n else if (singleSubSubSubFilter === '=' || singleSubSubSubFilter === '<>' || singleSubSubSubFilter === '>' || singleSubSubSubFilter === '>=' || singleSubSubSubFilter === '<' || singleSubSubSubFilter === '<=') {\n if (!filters[i][i2][i3][i4 + 1])\n filters[i][i2][i3][i4 + 1] = 'NULL';\n else if (typeof filters[i][i2][i3][i4 + 1] === 'string') {\n filters[i][i2][i3][i4 + 1] = '\\'' + filters[i][i2][i3][i4 + 1] + '\\'';\n }\n }\n else if (singleSubSubSubFilter === '!') {\n filters[i][i2][i3][i4] = 'NOT';\n singleSubSubSubFilter = 'NOT';\n }\n\n sqlFilter += ' ' + singleSubSubSubFilter + ' ';\n }\n else if (singleSubSubSubFilterType.toString() === 'object' && singleSubSubSubFilterIsDate) {\n sqlFilter += ' \\'' + singleSubSubSubFilter.toISOString().split('T')[0] + '\\' ';\n }\n else if (singleSubSubSubFilterType.toString() === 'number') {\n sqlFilter += ' ' + singleSubSubSubFilter.toString() + ' ';\n }\n else if (singleSubSubSubFilterType.toString() === 'boolean') {\n if (singleSubSubSubFilter.toString() === 'true')\n sqlFilter += '1 ';\n else if (singleSubSubSubFilter.toString() === 'false' || singleSubSubSubFilter === null || singleSubSubSubFilter === undefined)\n sqlFilter += '0 ';\n }\n }\n\n sqlFilter += ')';\n }\n else if (singleSubSubFilterType.toString() === 'string') {\n if (singleSubSubFilter === 'contains') {\n filters[i][i2][i3] = 'LIKE';\n singleSubSubFilter = 'LIKE';\n\n filters[i][i2][i3 + 1] = '\\'%' + filters[i][i2][i3 + 1] + '%\\'';\n }\n else if (singleSubSubFilter === 'notcontains') {\n filters[i][i2][i3] = 'NOT LIKE';\n singleSubSubFilter = 'NOT LIKE';\n\n filters[i][i2][i3 + 1] = '\\'%' + filters[i][i2][i3 + 1] + '%\\'';\n }\n else if (singleSubSubFilter === 'startswith') {\n filters[i][i2][i3] = 'LIKE';\n singleSubSubFilter = 'LIKE';\n\n filters[i][i2][i3 + 1] = '\\'' + filters[i][i2][i3 + 1] + '%\\'';\n }\n else if (singleSubSubFilter === 'endswith') {\n filters[i][i2][i3] = 'LIKE';\n singleSubSubFilter = 'LIKE';\n\n filters[i][i2][i3 + 1] = '\\'%' + filters[i][i2][i3 + 1] + '\\'';\n }\n else if (singleSubSubFilter === '=' || singleSubSubFilter === '<>' || singleSubSubFilter === '>' || singleSubSubFilter === '>=' || singleSubSubFilter === '<' || singleSubSubFilter === '<=') {\n if (!filters[i][i2][i3 + 1])\n filters[i][i2][i3 + 1] = 'NULL';\n else if (typeof filters[i][i2][i3 + 1] === 'string') {\n filters[i][i2][i3 + 1] = '\\'' + filters[i][i2][i3 + 1] + '\\'';\n }\n }\n else if (singleSubSubFilter === '!') {\n filters[i][i2][i3] = 'NOT';\n singleSubSubFilter = 'NOT';\n }\n sqlFilter += ' ' + singleSubSubFilter + ' ';\n }\n else if (singleSubSubFilterType.toString() === 'object' && singleSubSubFilterIsDate) {\n sqlFilter += ' \\'' + singleSubSubFilter.toISOString().split('T')[0] + '\\' ';\n }\n else if (singleSubSubFilterType.toString() === 'number') {\n sqlFilter += ' ' + singleSubSubFilter.toString() + ' ';\n }\n else if (singleSubSubFilterType.toString() === 'boolean') {\n if (singleSubSubFilter.toString() === 'true')\n sqlFilter += '1 ';\n else if (singleSubSubFilter.toString() === 'false' || singleSubSubFilter === null || singleSubSubFilter === undefined)\n sqlFilter += '0 ';\n }\n }\n\n sqlFilter += ')';\n }\n else if (singleSubFilterType.toString() === 'string') {\n if (singleSubFilter === 'contains') {\n filters[i][i2] = 'LIKE';\n singleSubFilter = 'LIKE';\n\n filters[i][i2 + 1] = '\\'%' + filters[i][i2 + 1] + '%\\'';\n }\n else if (singleSubFilter === 'notcontains') {\n filters[i][i2] = 'NOT LIKE';\n singleSubFilter = 'NOT LIKE';\n\n filters[i][i2 + 1] = '\\'%' + filters[i][i2 + 1] + '%\\'';\n }\n else if (singleSubFilter === 'startswith') {\n filters[i][i2] = 'LIKE';\n singleSubFilter = 'LIKE';\n\n filters[i][i2 + 1] = '\\'' + filters[i][i2 + 1] + '%\\'';\n }\n else if (singleSubFilter === 'endswith') {\n filters[i][i2] = 'LIKE';\n singleSubFilter = 'LIKE';\n\n filters[i][i2 + 1] = '\\'%' + filters[i][i2 + 1] + '\\'';\n }\n else if (singleSubFilter === '=' || singleSubFilter === '<>' || singleSubFilter === '>' || singleSubFilter === '>=' || singleSubFilter === '<' || singleSubFilter === '<=') {\n if (!filters[i][i2 + 1])\n filters[i][i2 + 1] = 'NULL';\n else if (typeof filters[i][i2 + 1] === 'string') {\n filters[i][i2 + 1] = '\\'' + filters[i][i2 + 1] + '\\'';\n }\n }\n else if (singleSubFilter === '!') {\n filters[i][i2] = 'NOT';\n singleSubFilter = 'NOT';\n }\n sqlFilter += ' ' + singleSubFilter + ' ';\n }\n else if (singleSubFilterType.toString() === 'object' && singleSubFilterIsDate) {\n sqlFilter += ' \\'' + singleSubFilter.toISOString().split('T')[0] + '\\' ';\n }\n else if (singleSubFilterType.toString() === 'number') {\n sqlFilter += ' ' + singleSubFilter.toString() + ' ';\n }\n else if (singleSubFilterType.toString() === 'boolean') {\n if (singleSubFilter.toString() === 'true')\n sqlFilter += '1 ';\n else if (singleSubFilter.toString() === 'false' || singleSubFilter === null || singleSubFilter === undefined)\n sqlFilter += '0 ';\n }\n }\n\n sqlFilter += ')';\n }\n else if (singleFilterType.toString() === 'string') {\n if (singleFilter === 'contains') {\n filters[i] = 'LIKE';\n singleFilter = 'LIKE';\n\n filters[i + 1] = '\\'%' + filters[i + 1] + '%\\'';\n }\n else if (singleFilter === 'notcontains') {\n filters[i] = 'NOT LIKE';\n singleFilter = 'NOT LIKE';\n\n filters[i + 1] = '\\'%' + filters[i + 1] + '%\\'';\n }\n else if (singleFilter === 'startswith') {\n filters[i] = 'LIKE';\n singleFilter = 'LIKE';\n\n filters[i + 1] = '\\'' + filters[i + 1] + '%\\'';\n }\n else if (singleFilter === 'endswith') {\n filters[i] = 'LIKE';\n singleFilter = 'LIKE';\n\n filters[i + 1] = '\\'%' + filters[i + 1] + '\\'';\n }\n else if (singleFilter === '=' || singleFilter === '<>' || singleFilter === '>' || singleFilter === '>=' || singleFilter === '<' || singleFilter === '<=') {\n if (!filters[i + 1])\n filters[i + 1] = 'NULL';\n else if (typeof filters[i + 1] === 'string') {\n filters[i + 1] = '\\'' + filters[i + 1] + '\\'';\n }\n }\n else if (singleFilter === '!') {\n filters[i] = 'NOT';\n singleFilter = 'NOT';\n }\n sqlFilter += ' ' + singleFilter + ' ';\n }\n else if (singleFilterType.toString() === 'object' && singleFilterIsDate) {\n sqlFilter += ' \\'' + singleFilter.toISOString().split('T')[0] + '\\' ';\n }\n else if (singleFilterType.toString() === 'number') {\n sqlFilter += ' ' + singleFilter.toString() + ' ';\n }\n else if (singleFilterType.toString() === 'boolean') {\n if (singleFilter.toString() === 'true')\n sqlFilter += '1 ';\n else if (singleFilter.toString() === 'false' || singleFilter === null || singleFilter === undefined)\n sqlFilter += '0 ';\n }\n }\n\n sqlFilter += ')';\n }\n });\n\n async function getRecords() {\n if (sqlFilter === '(')\n sqlFilter = '';\n\n var records = await getAdjustItemWMSRecords(sqlFilter);\n return {\n data: records,\n totalCount: records.length\n };\n }\n\n return getRecords()\n .then(function (result) {\n return result;\n })\n .catch(() => { throw new Error('Data Loading Error'); });\n },\n });\n\n const storeArticulo = useMemo(() => {\n return new CustomStore({\n key: 'value',\n load(loadOptions) {\n let sqlFilter = '';\n [\n 'filter'\n ].forEach((i) => {\n sqlFilter = loadOptions.searchValue;\n });\n\n async function getRecords() {\n if (sqlFilter) {\n var records = await getArticulo(sqlFilter);\n\n return {\n data: records,\n totalCount: records.length\n };\n }\n else {\n return {\n data: [],\n totalCount: 0\n };\n }\n }\n\n return getRecords()\n .then(function (result) {\n return result;\n })\n .catch(() => { throw new Error('Data Loading Error'); });\n },\n byKey: (key) => {\n async function getRecords(key) {\n var records = await getArticulo(key);\n\n return records;\n }\n\n return getRecords(key);\n }\n })\n }, [getArticulo]);\n\n\n var fechaEmisionEditorOptions = useMemo(() => {\n return {\n width: '100%',\n readOnly: true\n };\n }, []);\n\n var movimientoEditorOptions = useMemo(() => {\n return {\n width: '100%',\n readOnly: true\n };\n }, []);\n\n var barcodeNuevoEditorOptions = useMemo(() => {\n return {\n width: '100%',\n readOnly: false,\n format: '#'\n };\n }, []);\n\n var autorizacionEditorOptions = useMemo(() => {\n return {\n width: '100%',\n readOnly: true,\n format: '#'\n };\n }, []);\n\n try {\n var submensajeEditorOptions = useMemo(() => {\n return {\n items: subMensajeOptions,\n displayExpr: 'name',\n valueExpr: 'value',\n searchEnabled: false,\n value: (adjustItemWMSPayload.header.Submensaje ? adjustItemWMSPayload.header.Submensaje : ''),\n readOnly: !activateWarehouse\n };\n }, [subMensajeOptions, adjustItemWMSPayload.header.Submensaje, activateWarehouse]);\n }\n catch (e) {\n var submensajeEditorOptions = {\n items: subMensajeOptions,\n displayExpr: 'name',\n valueExpr: 'value',\n searchEnabled: false,\n readOnly: !activateWarehouse,\n value: '',\n };\n }\n\n //Opciones del campo Almacen\n try {\n var almacenEditorOptions = useMemo(() => {\n return {\n dataSource: almacenDataSource,\n displayExpr: 'name',\n valueExpr: 'value',\n searchEnabled: true,\n value: (adjustItemWMSPayload.header.Almacen ? adjustItemWMSPayload.header.Almacen : ''),\n width: '100%',\n readOnly: !activateWarehouse\n };\n }, [almacenDataSource, adjustItemWMSPayload.header.Almacen, activateWarehouse]);\n }\n catch (e) {\n var almacenEditorOptions = {\n dataSource: almacenDataSource,\n displayExpr: 'name',\n valueExpr: 'value',\n searchEnabled: true,\n value: '',\n width: '100%',\n readOnly: !activateWarehouse\n };\n }\n\n const getAdjustItemWMSPayload = React.useCallback(async (ID) => {\n try {\n let apiName = 'AdminSC';\n let path = '/procesaajustewms';\n\n let myInit = {\n headers: {\n 'Content-Type': 'application/json',\n Authorization: `${(await Auth.currentSession()).getAccessToken().getJwtToken()}`\n },\n queryStringParameters: {\n ID: ID,\n action: 'payload',\n username: JSON.parse(JSON.stringify(await Auth.currentAuthenticatedUser())).username\n }\n }\n\n var payloadGet = await API.get(apiName, path, myInit);\n\n setAdjustItemWMSPayload(payloadGet);\n }\n catch (e) {\n if (e === 'No current user') {\n history.push('/');\n\n window.location.reload();\n }\n }\n\n return payloadGet;\n }, [history])\n\n function editAdjustItemWMS(data) {\n return (\n <Link to={`/AdjustItemWMS/${data.data.ID}`}>\n <button class=\"bg-blue-500 hover:bg-blue-700 text-white py-1 px-3 rounded\" onClick={() => editButton(data.data.ID)}><FontAwesomeIcon icon={permissionLevel === 'Editar' ? faPencilAlt : faGlasses} /> {permissionLevel === 'Editar' ? 'Editar' : 'Ver'}</button>\n </Link>\n )\n }\n\n const newButton = React.useCallback(async () => {\n try {\n let apiName = 'AdminSC';\n let path = '/procesaajustewms';\n\n let myInit = {\n headers: {\n 'Content-Type': 'application/json',\n Authorization: `${(await Auth.currentSession()).getAccessToken().getJwtToken()}`\n },\n queryStringParameters: {\n action: 'new',\n username: JSON.parse(JSON.stringify(await Auth.currentAuthenticatedUser())).username,\n usuario: props.usuario,\n sucursal: props.sucursal\n }\n };\n\n var payloadNew = await API.get(apiName, path, myInit);\n\n setAdjustItemWMSPayload(payloadNew);\n\n setSubmensaje(payloadNew.header.Submensaje);\n\n setIsDetail(true);\n setId(undefined);\n\n setActivateUpdateForm(true);\n setActivateSaveButton(true);\n setActivateDeleteButton(false);\n setActivateConfirmButton(false);\n setActivatePDFButton(false);\n setActivateUpdateGrid(true);\n setActivateCancelButton(false);\n\n setVisibleLoadPanel(false);\n\n setActivateWarehouse(true);\n }\n catch (e) {\n if (e === 'No current user') {\n history.push('/');\n\n window.location.reload();\n }\n }\n }, [history, props.sucursal, props.usuario]);\n\n const editButton = React.useCallback(async (ID) => {\n try {\n if (!window.event.metaKey && !window.event.ctrlKey) {\n setVisibleLoadPanel(true);\n\n setIsDetail(true);\n setId(ID);\n\n var payload = await getAdjustItemWMSPayload(ID);\n\n if (permissionLevel === 'Editar') {\n if (payload.header.Estatus === 'Sin Afectar') {\n setActivateUpdateForm(true);\n setActivateSaveButton(true);\n setActivateCancelButton(false);\n setActivateDeleteButton(true);\n setActivateConfirmButton(true);\n setActivatePDFButton(true);\n setActivateUpdateGrid(true);\n setActivateApproveButton(false);\n\n if (payload.header.Almacen) {\n await getAlmPos(payload.header.Almacen);\n }\n\n if (payload.detail.length > 0) {\n setActivateWarehouse(false);\n }\n else {\n setActivateWarehouse(true);\n }\n\n setSubmensaje(payload.header.Submensaje);\n }\n if (payload.header.Estatus === 'Pendiente') {\n setActivateUpdateForm(false);\n setActivateSaveButton(false);\n setActivateDeleteButton(false);\n setActivateCancelButton(true);\n\n if (approveAdjustItemWMS && payload.header.RequiereAutorizacion && !payload.header.Autorizado)\n setActivateApproveButton(true);\n else\n setActivateApproveButton(false);\n\n if (payload.header.Autorizado)\n setActivateConfirmButton(true);\n else\n setActivateConfirmButton(false);\n\n setActivatePDFButton(true);\n setActivateUpdateGrid(false);\n\n setSubmensaje(payload.header.Submensaje);\n }\n else if (payload.header.Estatus === 'Concluido') {\n setActivateUpdateForm(false);\n setActivateSaveButton(false);\n setActivateDeleteButton(false);\n setActivateConfirmButton(false);\n setActivatePDFButton(false);\n setActivateUpdateGrid(false);\n setActivateWarehouse(false);\n setActivateCancelButton(false);\n setActivateApproveButton(false);\n }\n else if (payload.header.Estatus === 'Cancelado') {\n setActivateUpdateForm(false);\n setActivateSaveButton(false);\n setActivateDeleteButton(false);\n setActivateConfirmButton(false);\n setActivatePDFButton(false);\n setActivateUpdateGrid(false);\n setActivateWarehouse(false);\n setActivateCancelButton(false);\n setActivateApproveButton(false);\n }\n }\n else if (permissionLevel === 'Ver') {\n setActivateUpdateForm(false);\n setActivateSaveButton(false);\n setActivateDeleteButton(false);\n setActivateConfirmButton(false);\n setActivatePDFButton(false);\n setActivateUpdateGrid(false);\n setActivateWarehouse(false);\n setActivateCancelButton(false);\n setActivateApproveButton(false);\n }\n\n setVisibleLoadPanel(false);\n }\n }\n catch (e) {\n setVisibleLoadPanel(false);\n\n if (!ID || ID === 'undefined') {\n newButton();\n }\n }\n }, [getAdjustItemWMSPayload, newButton, permissionLevel, getAlmPos, approveAdjustItemWMS]);\n\n async function cancelEditButton() {\n setIsDetail(false);\n };\n\n async function voidButton() {\n try {\n if (!window.confirm('¿Desea cancelar el Ajuste?'))\n return;\n\n setVisibleLoadPanel(true);\n\n var ID = adjustItemWMSPayload.header.ID;\n\n //Primero guardamos los cambios del grid Articulos\n if (gridItemsRef.current) {\n var gridItems = gridItemsRef.current.instance();\n\n gridItems.saveEditData();\n }\n\n\n //Despues enviamos todo al backend\n let apiName = 'AdminSC';\n let path = '/procesaajustewms';\n\n let myInit = {\n headers: {\n 'Content-Type': 'application/json',\n Authorization: `${(await Auth.currentSession()).getAccessToken().getJwtToken()}`\n },\n body: {\n ID: ID,\n payload: adjustItemWMSPayload,\n action: 'void',\n username: JSON.parse(JSON.stringify(await Auth.currentAuthenticatedUser())).username,\n usuario: props.usuario,\n sucursal: props.sucursal\n }\n }\n\n var payloadPost = await API.post(apiName, path, myInit);\n\n if (payloadPost.ok === 'true') {\n setVisibleToast(true);\n setMessageToast('Se canceló el Ajuste');\n setTypeToast('success')\n }\n else if (payloadPost.ok === 'false') {\n setVisibleToast(true);\n setMessageToast(payloadPost.message);\n setTypeToast('error')\n }\n\n editButton(ID);\n\n setVisibleLoadPanel(false);\n }\n catch (e) {\n setVisibleLoadPanel(false);\n\n if (e === 'No current user') {\n history.push('/');\n\n window.location.reload();\n }\n }\n };\n\n async function saveButton() {\n if (formDatosGeneralesRef.current) {\n var formDatosGenerales = formDatosGeneralesRef.current.instance();\n var isValid = formDatosGenerales.validate();\n\n if (!isValid.isValid) {\n setVisibleToast(true);\n setMessageToast(isValid.brokenRules[0].message);\n setTypeToast('error');\n return;\n }\n }\n\n try {\n setVisibleLoadPanel(true);\n\n var ID = adjustItemWMSPayload.header.ID;\n\n //Primero guardamos los cambios del grid Articulos\n if (gridItemsRef.current) {\n var gridItems = gridItemsRef.current.instance();\n\n gridItems.saveEditData();\n }\n\n //Despues enviamos todo al backend\n let apiName = 'AdminSC';\n let path = '/procesaajustewms';\n\n let myInit = {\n headers: {\n 'Content-Type': 'application/json',\n Authorization: `${(await Auth.currentSession()).getAccessToken().getJwtToken()}`\n },\n body: {\n ID: ID,\n payload: adjustItemWMSPayload,\n action: 'saveChanges',\n username: JSON.parse(JSON.stringify(await Auth.currentAuthenticatedUser())).username,\n usuario: props.usuario,\n sucursal: props.sucursal,\n s3Bucket: Storage._config.AWSS3.bucket\n }\n }\n\n var payloadPost = await API.post(apiName, path, myInit);\n\n if (payloadPost.ok === 'true') {\n if (!ID) {\n setVisibleToast(true);\n setMessageToast('Se creó el Ajuste con éxito');\n setTypeToast('success')\n\n ID = payloadPost.newID;\n\n editButton(ID);\n\n history.push('/AdjustItemWMS/' + ID.toString());\n }\n else {\n setVisibleToast(true);\n setMessageToast('Se actualizó el Ajuste con éxito');\n setTypeToast('success')\n }\n }\n else if (payloadPost.ok === 'false') {\n setVisibleToast(true);\n setMessageToast(payloadPost.message);\n setTypeToast('error')\n }\n\n editButton(ID);\n\n setVisibleLoadPanel(false);\n }\n catch (e) {\n setVisibleLoadPanel(false);\n\n if (e === 'No current user') {\n history.push('/');\n\n window.location.reload();\n }\n }\n };\n\n const confirmButton = React.useCallback(async () => {\n if (formDatosGeneralesRef.current) {\n var formDatosGenerales = formDatosGeneralesRef.current.instance();\n var isValid = formDatosGenerales.validate();\n\n if (!isValid.isValid) {\n setVisibleToast(true);\n setMessageToast(isValid.brokenRules[0].message);\n setTypeToast('error');\n return;\n }\n }\n\n try {\n setVisibleLoadPanel(true);\n\n var ID = adjustItemWMSPayload.header.ID;\n\n //Primero guardamos los cambios del grid Articulos\n if (gridItemsRef.current) {\n var gridItems = gridItemsRef.current.instance();\n\n gridItems.saveEditData();\n }\n\n var lambdaFunction;\n\n if (window.location.href.indexOf('sandbox.') >= 0 || window.location.href.indexOf('localhost') >= 0)\n lambdaFunction = 'procesaAjusteWMS-dev';\n else if (window.location.href.indexOf('sandboxtampico.') >= 0)\n lambdaFunction = 'procesaAjusteWMS-devleona';\n else if (window.location.href.indexOf('tampico.') >= 0)\n lambdaFunction = 'procesaAjusteWMS-prodleona';\n else\n lambdaFunction = 'procesaAjusteWMS-prod';\n\n Auth.currentCredentials()\n .then(credentials => {\n const lambda = new Lambda({\n credentials: Auth.essentialCredentials(credentials),\n region: 'us-east-1'\n });\n\n var params = {\n FunctionName: lambdaFunction,\n Payload: JSON.stringify({\n ID: ID,\n payload: adjustItemWMSPayload,\n action: 'apply',\n username: props.username,\n usuario: props.usuario,\n sucursal: props.sucursal,\n s3Bucket: Storage._config.AWSS3.bucket\n })\n };\n\n lambda.invoke(params, function (err, data) {\n if (err) {\n setVisibleLoadPanel(false);\n\n setVisibleToast(true);\n setMessageToast(err.message);\n setTypeToast('error');\n }\n else {\n var payloadPost = JSON.parse(JSON.parse(data.Payload).body);\n\n if (err) {\n setVisibleLoadPanel(false);\n\n setVisibleToast(true);\n setMessageToast(err.message);\n setTypeToast('error');\n }\n else {\n var payloadPost = JSON.parse(JSON.parse(data.Payload).body);\n\n if (payloadPost.ok === 'true') {\n setVisibleToast(true);\n setMessageToast('Se afectó el Ajuste con éxito');\n setTypeToast('success')\n }\n else if (payloadPost.ok === 'false') {\n setVisibleToast(true);\n setMessageToast(payloadPost.message);\n setTypeToast('error')\n }\n\n editButton(ID);\n\n setVisibleLoadPanel(false);\n }\n }\n });\n })\n }\n catch (e) {\n setVisibleLoadPanel(false);\n\n if (e === 'No current user') {\n history.push('/');\n\n window.location.reload();\n }\n }\n }, [adjustItemWMSPayload, editButton, formDatosGeneralesRef, history, props.sucursal, props.username, props.usuario, gridItemsRef, setVisibleLoadPanel, setVisibleToast, setMessageToast, setTypeToast]);\n\n function refreshButton() {\n if (gridTableroRef.current) {\n var gridTablero = gridTableroRef.current.instance();\n\n gridTablero.refresh();\n }\n }\n\n async function deleteButton() {\n try {\n if (!window.confirm('¿Desea eliminar el Ajuste?'))\n return;\n\n setVisibleLoadPanel(true);\n\n var ID = adjustItemWMSPayload.header.ID;\n\n if (!ID) {\n //Vamos al tablero de control\n history.push('/AdjustItemWMS');\n return;\n }\n\n let apiName = 'AdminSC';\n let path = '/procesaajustewms';\n\n let myInit = {\n headers: {\n 'Content-Type': 'application/json',\n Authorization: `${(await Auth.currentSession()).getAccessToken().getJwtToken()}`\n },\n body: {\n ID: ID,\n payload: adjustItemWMSPayload,\n action: 'delete',\n username: JSON.parse(JSON.stringify(await Auth.currentAuthenticatedUser())).username,\n usuario: props.usuario,\n sucursal: props.sucursal\n }\n }\n\n var payloadPost = await API.post(apiName, path, myInit);\n\n if (payloadPost.ok === 'true') {\n setVisibleLoadPanel(false);\n\n setVisibleToast(true);\n setMessageToast('Ajuste eliminado con éxito');\n setTypeToast('success')\n\n setIsDetail(false);\n\n //Vamos al tablero de control\n history.push('/AdjustItemWMS');\n }\n else if (payloadPost.ok === 'false') {\n setVisibleLoadPanel(false);\n\n setVisibleToast(true);\n setMessageToast(payloadPost.message);\n setTypeToast('error')\n }\n }\n catch (e) {\n setVisibleLoadPanel(false);\n\n if (e === 'No current user') {\n history.push('/');\n\n window.location.reload();\n }\n }\n }\n\n const approveButton = React.useCallback(async () => {\n if (formDatosGeneralesRef.current) {\n var formDatosGenerales = formDatosGeneralesRef.current.instance();\n var isValid = formDatosGenerales.validate();\n\n if (!isValid.isValid) {\n setVisibleToast(true);\n setMessageToast(isValid.brokenRules[0].message);\n setTypeToast('error');\n return;\n }\n }\n\n try {\n setVisibleLoadPanel(true);\n\n var ID = adjustItemWMSPayload.header.ID;\n\n //Primero guardamos los cambios del grid Articulos\n if (gridItemsRef.current) {\n var gridItems = gridItemsRef.current.instance();\n\n gridItems.saveEditData();\n }\n\n var lambdaFunction;\n\n if (window.location.href.indexOf('sandbox.') >= 0 || window.location.href.indexOf('localhost') >= 0)\n lambdaFunction = 'procesaAjusteWMS-dev';\n else if (window.location.href.indexOf('sandboxtampico.') >= 0)\n lambdaFunction = 'procesaAjusteWMS-devleona';\n else if (window.location.href.indexOf('tampico.') >= 0)\n lambdaFunction = 'procesaAjusteWMS-prodleona';\n else\n lambdaFunction = 'procesaAjusteWMS-prod';\n\n Auth.currentCredentials()\n .then(credentials => {\n const lambda = new Lambda({\n credentials: Auth.essentialCredentials(credentials),\n region: 'us-east-1'\n });\n\n var params = {\n FunctionName: lambdaFunction,\n Payload: JSON.stringify({\n ID: ID,\n payload: adjustItemWMSPayload,\n action: 'approve',\n username: props.username,\n usuario: props.usuario,\n sucursal: props.sucursal,\n s3Bucket: Storage._config.AWSS3.bucket\n })\n };\n\n lambda.invoke(params, function (err, data) {\n if (err) {\n setVisibleLoadPanel(false);\n\n setVisibleToast(true);\n setMessageToast(err.message);\n setTypeToast('error');\n }\n else {\n var payloadPost = JSON.parse(JSON.parse(data.Payload).body);\n\n if (err) {\n setVisibleLoadPanel(false);\n\n setVisibleToast(true);\n setMessageToast(err.message);\n setTypeToast('error');\n }\n else {\n var payloadPost = JSON.parse(JSON.parse(data.Payload).body);\n\n if (payloadPost.ok === 'true') {\n setVisibleToast(true);\n setMessageToast('Se afectó el Ajuste con éxito');\n setTypeToast('success')\n }\n else if (payloadPost.ok === 'false') {\n setVisibleToast(true);\n setMessageToast(payloadPost.message);\n setTypeToast('error')\n }\n\n editButton(ID);\n\n setVisibleLoadPanel(false);\n }\n }\n });\n })\n }\n catch (e) {\n setVisibleLoadPanel(false);\n\n if (e === 'No current user') {\n history.push('/');\n\n window.location.reload();\n }\n }\n }, [adjustItemWMSPayload, editButton, formDatosGeneralesRef, history, props.sucursal, props.username, props.usuario, gridItemsRef, setVisibleLoadPanel, setVisibleToast, setMessageToast, setTypeToast]);\n\n function printButton() {\n var baseUrl = window.location.href.split('/')[0];\n\n window.open(baseUrl + \"/#/PdfRender?type=adjustitemwms&id=\" + id, \"_blank\");\n };\n\n useEffect(() => {\n window.addEventListener('popstate', (e) => {\n var hash;\n\n try {\n hash = e.target.location.hash;\n }\n catch (e) {\n hash = '';\n }\n\n if (hash === '#/AdjustItemWMS') {\n history.push('/AdjustItemWMS');\n\n window.location.reload();\n }\n });\n\n async function initialize() {\n setVisibleLoadPanel(true);\n\n await getAlmacenes();\n\n setVisibleLoadPanel(false);\n }\n\n initialize();\n\n //En caso de solicitar un ID especifico, redireccionamos a ese ID\n if (!props.match.isExact) {\n var urlID = props.location.pathname.replace('/AdjustItemWMS/', '');\n\n if (urlID === 'undefined')\n urlID = undefined;\n\n if (urlID)\n editButton(urlID);\n }\n }, [editButton, newButton, props.location.pathname, props.location.search, props.match.isExact, props, history]);\n\n function onHidingLoadPanel() {\n setVisibleLoadPanel(false);\n };\n\n function onHidingToast() {\n setVisibleToast(false);\n };\n\n function estatusRelatedRecords(data) {\n return (\n <TransactionStatus {...props} Estatus={data.data.Estatus} />\n )\n };\n\n function onExporting(e) {\n const workbook = new Workbook();\n const worksheet = workbook.addWorksheet('Datos');\n\n exportDataGrid({\n component: e.component,\n worksheet,\n autoFilterEnabled: true,\n }).then(() => {\n workbook.xlsx.writeBuffer().then((buffer) => {\n saveAs(new Blob([buffer], { type: 'application/octet-stream' }), 'Datos.xlsx');\n });\n });\n e.cancel = true;\n };\n\n const setCellValueArticulo = React.useCallback((rowData, value) => {\n if (value) {\n rowData.Articulo = value.value;\n rowData.ArtDescripcion = value.name;\n rowData.Cantidad = 1;\n }\n else {\n rowData.Articulo = undefined;\n rowData.ArtDescripcion = undefined;\n rowData.Cantidad = undefined;\n }\n }, []);\n\n const onEditorArticulosPreparing = React.useCallback((e) => {\n if (e.parentType === \"dataRow\") {\n if (e.dataField === \"Articulo\") {\n\n e.editorOptions.displayExpr = \"name\";\n e.editorOptions.valueExpr = \"value\";\n e.editorOptions.searchEnabled = true;\n e.editorOptions.showClearButton = true;\n e.editorOptions.acceptCustomValue = false;\n e.editorOptions.clearButtonText = 'Cerrar';\n e.editorOptions.noDataText = 'No se encontraron resultados';\n\n const defaultValueChangeHandler = e.editorOptions.onValueChanged;\n // var ListaPreciosEsp = estimatePayload.header.ListaPreciosEsp; \n\n e.editorOptions.onValueChanged = function (ev) {\n let selectedItem = ev.component.option(\"selectedItem\");\n e.setValue(selectedItem);\n };\n }\n if (e.dataField === \"Cantidad\") {\n e.editorOptions.min = 1;\n }\n if (e.dataField === \"Precio\") {\n e.editorOptions.min = 0.0;\n }\n }\n }, []);\n\n const onFieldDatosGeneralesChanged = React.useCallback(async (e) => {\n var dataField = e.dataField;\n var value = e.value;\n\n if (formDatosGeneralesRef.current) {\n var formDatosGenerales = formDatosGeneralesRef.current.instance();\n\n if (e.dataField === 'Almacen') {\n if (e.value) {\n await getAlmPos(e.value);\n }\n }\n\n if (e.dataField === 'Submensaje') {\n if (e.value) {\n setSubmensaje(e.value);\n }\n }\n }\n }, [getAlmPos, formDatosGeneralesRef]);\n\n const onEditingStartArticulos = React.useCallback((e) => {\n var Almacen = adjustItemWMSPayload.header.Almacen;\n\n if (!Almacen) {\n setVisibleToast(true);\n setMessageToast('Falta especificar el Almacén')\n setTypeToast('error');\n e.cancel = true;\n }\n }, [adjustItemWMSPayload.header.Almacen]);\n\n const onRowInsertedArticulos = React.useCallback((e) => {\n if (gridItemsRef.current) {\n var gridItems = gridItemsRef.current.instance();\n\n if (gridItems.totalCount() > 0) {\n setActivateWarehouse(false);\n }\n else {\n setActivateWarehouse(true);\n }\n }\n\n }, [gridItemsRef]);\n\n const onRowRemovedArticulos = React.useCallback((e) => {\n if (gridItemsRef.current) {\n var gridItems = gridItemsRef.current.instance();\n\n if (gridItems.totalCount() > 0) {\n setActivateWarehouse(false);\n }\n else {\n setActivateWarehouse(true);\n }\n }\n }, [gridItemsRef]);\n\n const setCellValueBarcode = React.useCallback(async (rowData, value, currentRowData) => {\n if (submensaje !== 'Agregar') {\n if (value && currentRowData.Posicion) {\n var info = await getAlmPosInfo(adjustItemWMSPayload.header.Almacen, currentRowData.Posicion, value);\n\n if (info.length > 0) {\n rowData.Barcode = value;\n rowData.Articulo = info[0].Articulo;\n rowData.ArtDescripcion = info[0].ArtDescripcion;\n rowData.Cantidad = info[0].Cantidad;\n rowData.CantidadOriginal = info[0].Cantidad;\n }\n else {\n setVisibleToast(true);\n setMessageToast('Barcode no encontrado');\n setTypeToast('error');\n\n rowData.Barcode = '';\n rowData.Articulo = '';\n rowData.ArtDescripcion = '';\n rowData.Cantidad = '';\n rowData.CantidadOriginal = '';\n }\n }\n }\n else {\n rowData.Barcode = value;\n }\n }, [adjustItemWMSPayload, getAlmPosInfo, submensaje]);\n\n const setCellValuePosicion = React.useCallback((rowData, value, currentRowData) => {\n if (submensaje !== 'Agregar') {\n rowData.Barcode = '';\n rowData.Articulo = '';\n rowData.ArtDescripcion = '';\n rowData.Cantidad = '';\n rowData.CantidadOriginal = '';\n }\n\n rowData.Posicion = value;\n }, [submensaje]);\n\n return (\n <div>\n {isDetail === false ? (\n <div class=\"bg-gray-200 m-2\">\n <h1 class=\"font-sans inline-block text-xl font-bold text-gray-700 leading-8 align-top mb-1\"><FontAwesomeIcon icon={faList} size=\"lg\" /> Ajustes</h1>\n </div>\n ) :\n (\n <div class=\"bg-gray-200 m-2\">\n <h1 class=\"font-sans inline-block text-xl font-bold text-gray-700 leading-8 align-top mb-1\"><FontAwesomeIcon icon={faPenToSquare} size=\"xl\" /> {(adjustItemWMSPayload.header ? adjustItemWMSPayload.header.Movimiento : 'Ajuste')}</h1>\n <TransactionStatus {...props} Estatus={adjustItemWMSPayload.header.Estatus} />\n </div>\n )}\n\n <LoadPanel\n shadingColor=\"rgba(0,0,0,0.4)\"\n visible={visibleLoadPanel}\n showIndicator={true}\n message=\"Por favor espere...\"\n shading={true}\n showPane={true}\n hideOnOutsideClick={false}\n />\n\n <Toast\n visible={visibleToast}\n message={messageToast}\n type={typeToast}\n onHiding={onHidingToast}\n displayTime={5000}\n width={'auto'}\n position={{\n my: 'top center',\n at: 'top center',\n of: window,\n offset: '0 130'\n }}\n />\n\n <div class=\"bg-gray-200 m-2\">\n {isDetail === false ? (\n <div class=\"bg-white p-3 shadow-xl\">\n\n {permissionLevel === 'Editar' ?\n (\n <div>\n <Link to=\"/AdjustItemWMS/undefined\">\n <button class=\"mb-2 bg-green-500 hover:bg-green-700 text-white font-bold py-2 px-4 rounded\" onClick={() => newButton()}><FontAwesomeIcon icon={faFileAlt} /> Nuevo Ajuste</button>\n </Link>\n\n <button onClick={refreshButton} type=\"submit\" class=\"ml-4 mb-4 bg-blue-500 hover:bg-blue-700 text-white font-bold py-2 px-4 rounded\">\n <FontAwesomeIcon icon={faArrowsRotate} /> Actualizar\n </button>\n </div>\n ) :\n (\n <div>\n <button onClick={refreshButton} type=\"submit\" class=\"mb-4 bg-blue-500 hover:bg-blue-700 text-white font-bold py-2 px-4 rounded\">\n <FontAwesomeIcon icon={faArrowsRotate} /> Actualizar\n </button>\n </div>\n )}\n\n <div className=\"options mb-2\">\n <div className=\"option\">\n <CheckBox text=\"Expandir todos los grupos\"\n value={autoExpandAll}\n onValueChanged={onAutoExpandAllChanged}></CheckBox>\n </div>\n </div>\n\n <DataGrid\n height={800}\n id=\"gridContainer\"\n columnsAutoWidth={true}\n filterBuilder={filterBuilder}\n dataSource={store}\n defaultFilterValue={filterValue}\n allowColumnReordering={true}\n allowColumnResizing={true}\n columnResizingMode={\"widget\"}\n showBorders={true}\n rowAlternationEnabled={true}\n showRowLines={true}\n showColumnLines={true}\n remoteOperations={{ filtering: true }}\n ref={gridTableroRef}\n onExporting={onExporting}\n >\n <Scrolling rowRenderingMode='virtual'></Scrolling>\n <Paging defaultPageSize={10} />\n <Pager\n visible={true}\n allowedPageSizes={allowedPageSizes}\n displayMode='compact'\n showPageSizeSelector={true}\n showInfo={true}\n showNavigationButtons={true}\n />\n <FilterRow visible={true} />\n <FilterPanel visible={true} />\n <FilterBuilderPopup position={filterBuilderPopupPosition} />\n\n <HeaderFilter visible={true} />\n\n <GroupPanel visible={true} />\n <SearchPanel visible={true} />\n <ColumnChooser\n enabled={true}\n mode='select'\n >\n <ColumnChooserSearch\n enabled={true}\n />\n\n <ColumnChooserSelection\n allowSelectAll={true}\n selectByClick={true}\n recursive={true}\n />\n </ColumnChooser>\n <Grouping autoExpandAll={autoExpandAll} />\n <StateStoring enabled={true} type=\"localStorage\" storageKey=\"gridContainerMoveItemWMS\" />\n <Export enabled={true} />\n\n <Column caption=\"\" alignment=\"center\" width={100} cellRender={editAdjustItemWMS} />\n <Column dataField=\"Submensaje\" dataType=\"string\" width={110} caption=\"Tipo Ajuste\" />\n <Column dataField=\"MovID\" dataType=\"string\" width={110} caption=\"Folio\" />\n <Column dataField=\"FechaEmision\" caption=\"Fecha Emisión\" dataType=\"date\" width={130} />\n <Column dataField=\"Estatus\" dataType=\"string\" width={120} />\n <Column dataField=\"Almacen\" caption=\"Almacén\" dataType=\"number\" width={150} />\n\n <Column caption=\"Plaza\" dataField=\"Plaza\" dataType=\"string\" width={150} visible={false} />\n\n <Column dataField=\"ID\" dataType=\"number\" width={150} visible={false} />\n <Column dataField=\"Mov\" dataType=\"string\" width={190} caption=\"Tipo Movimiento\" visible={false} />\n <Column dataField=\"Movimiento\" dataType=\"string\" width={190} visible={false} />\n\n <Column dataField=\"Sucursal\" dataType=\"number\" width={150} visible={false} />\n <Column dataField=\"NombreSucursal\" dataType=\"string\" width={190} visible={false} />\n\n <Column dataField=\"NombreAlmacen\" caption=\"Nombre Almacén\" dataType=\"string\" width={190} visible={false} />\n\n <Column dataField=\"Usuario\" dataType=\"string\" width={190} visible={false} />\n <Column dataField=\"NombreUsuario\" dataType=\"string\" width={190} visible={false} />\n\n <Column dataField=\"RequiereAutorizacion\" dataType=\"boolean\" caption=\"Requiere Autorización\" width={200} visible={false} />\n <Column dataField=\"Autorizado\" dataType=\"boolean\" width={150} visible={false} />\n <Column dataField=\"Autoriza\" caption=\"Autorizado Por\" dataType=\"string\" width={200} visible={false} />\n <Column dataField=\"FechaAutorizacion\" caption=\"Fecha Autorización\" dataType=\"datetime\" width={200} visible={false} />\n </DataGrid>\n </div>\n ) : (<div />)}\n <Route exact path=\"/AdjustItemWMS/:ID\" render={({ match }) => {\n return (\n <div class=\"bg-gray-200\">\n {isDetail.toString() === 'true' ?\n (\n <div>\n <Link to=\"/AdjustItemWMS\">\n <button onClick={cancelEditButton} type=\"submit\" class=\"mb-4 bg-red-500 hover:bg-red-700 text-white font-bold py-2 px-4 rounded\">\n <FontAwesomeIcon icon={faArrowRotateLeft} /> Regresar\n </button>\n </Link>\n\n {activateSaveButton.toString() === 'true' ?\n (\n <button onClick={saveButton} type=\"submit\" class=\"ml-4 mb-4 bg-blue-500 hover:bg-blue-700 text-white font-bold py-2 px-4 rounded\">\n <FontAwesomeIcon icon={faSave} /> Guardar Cambios\n </button>\n ) : (\n <div class=\"inline-block\"></div>\n )}\n\n {activateConfirmButton.toString() === 'true' && id ?\n (\n <button onClick={confirmButton} type=\"submit\" class=\"ml-4 mb-4 bg-green-500 hover:bg-green-700 text-white font-bold py-2 px-4 rounded\">\n <FontAwesomeIcon icon={faPlay} /> Afectar\n </button>\n ) : (\n <div class=\"inline-block\"></div>\n )}\n\n {activateApproveButton.toString() === 'true' && id ?\n (\n <button onClick={approveButton} type=\"submit\" class=\"ml-4 mb-4 bg-green-500 hover:bg-green-700 text-white font-bold py-2 px-4 rounded\">\n <FontAwesomeIcon icon={faThumbsUp} /> Autorizar\n </button>\n ) : (\n <div class=\"inline-block\"></div>\n )}\n\n {activateDeleteButton.toString() === 'true' && id ?\n (\n <button onClick={deleteButton} type=\"submit\" class=\"ml-4 mb-4 bg-red-500 hover:bg-red-700 text-white font-bold py-2 px-4 rounded\">\n <FontAwesomeIcon icon={faTrash} /> Eliminar\n </button>\n ) :\n (\n <div class=\"inline-block\"></div>\n )}\n\n {activateCancelButton.toString() === 'true' && id ?\n (\n <button onClick={voidButton} type=\"submit\" class=\"ml-4 mb-4 bg-red-500 hover:bg-red-700 text-white font-bold py-2 px-4 rounded\">\n <FontAwesomeIcon icon={faWindowClose} /> Cancelar\n </button>\n ) :\n (\n <div class=\"inline-block\"></div>\n )}\n\n {activatePDFButton.toString() === 'true' && id ?\n (\n <button onClick={printButton} type=\"submit\" class=\"ml-4 mb-4 bg-gray-500 hover:bg-gray-700 text-white font-bold py-2 px-4 rounded\">\n <FontAwesomeIcon icon={faFilePdf} /> PDF\n </button>\n ) :\n (\n <div class=\"inline-block\"></div>\n )}\n\n <div class=\"bg-white p-4 shadow-xl\">\n <Form\n id=\"formTransaccion\"\n labelMode={'outside'}\n formData={adjustItemWMSPayload.header}\n readOnly={!activateUpdateForm}\n showColonAfterLabel={false}\n labelLocation={'top'}\n ref={formDatosGeneralesRef}\n onFieldDataChanged={onFieldDatosGeneralesChanged}\n >\n <TabbedItem>\n <TabPanelOptions deferRendering={false} showNavButtons={true} />\n <Tab title=\"Datos Generales\" colCount={6}>\n <GroupItem caption=\"General\" colSpan={6} colCount={2}>\n <Item cssClass=\"boldText\" dataField=\"Movimiento\" editorOptions={movimientoEditorOptions} >\n <RequiredRule message=\"Movimiento es requerido\" />\n </Item>\n <Item dataField=\"FechaEmision\" editorType=\"dxDateBox\" editorOptions={fechaEmisionEditorOptions}>\n <Label text={\"Fecha Emisión\"} />\n <RequiredRule message=\"Fecha Emisión es requerida\" />\n </Item>\n <Item cssClass=\"boldText\" dataField=\"Submensaje\" editorType=\"dxSelectBox\" editorOptions={submensajeEditorOptions} >\n <Label text={\"Tipo de Ajuste\"} />\n <RequiredRule message=\"Tipo de Ajuste es requerido\" />\n </Item>\n <Item dataField=\"Almacen\" editorType=\"dxSelectBox\" editorOptions={almacenEditorOptions}>\n <Label text={\"Almacén\"} />\n <RequiredRule message=\"Almacén es requerido\" />\n </Item>\n </GroupItem>\n <GroupItem caption=\"Artículos\" colSpan={6} >\n <DataGrid\n id=\"gridItems\"\n ref={gridItemsRef}\n columnsAutoWidth={true}\n dataSource={adjustItemWMSPayload.detail}\n showBorders={true}\n showColumnLines={true}\n showRowLines={true}\n rowAlternationEnabled={true}\n allowColumnResizing={true}\n columnResizingMode=\"widget\"\n allowColumnReordering={false}\n repaintChangesOnly={true}\n onEditorPreparing={onEditorArticulosPreparing}\n onEditingStart={onEditingStartArticulos}\n onRowInserted={onRowInsertedArticulos}\n onRowRemoved={onRowRemovedArticulos}\n >\n <Scrolling\n mode='virtual'\n />\n\n <Editing\n mode=\"cell\"\n newRowPosition=\"last\"\n allowUpdating={activateUpdateGrid}\n allowAdding={activateUpdateGrid}\n allowDeleting={activateUpdateGrid}\n />\n\n <Sorting mode=\"none\" />\n\n <Column dataField=\"RenglonID\" width={190} visible={false} allowEditing={false} />\n <Column dataField=\"Posicion\" caption=\"Posición\" width={110} calculateDisplayValue=\"Posicion\" setCellValue={setCellValuePosicion} >\n <Lookup\n dataSource={posiciones}\n displayExpr=\"name\"\n valueExpr=\"value\"\n />\n <RequiredRule message=\"Posición es requerida\" />\n </Column>\n <Column dataField=\"Barcode\" caption=\"Barcode\" width={130} dataType=\"number\" editorOptions={barcodeNuevoEditorOptions} setCellValue={setCellValueBarcode}>\n <RequiredRule message=\"Barcode es requerido\" />\n </Column>\n <Column dataField=\"Articulo\" caption=\"Artículo\" width={400} setCellValue={setCellValueArticulo} calculateDisplayValue=\"ArtDescripcion\" allowEditing={submensaje === 'Agregar'}>\n <Lookup\n dataSource={storeArticulo}\n displayExpr=\"name\"\n valueExpr=\"value\"\n searchEnabled={true}\n showClearButton={true}\n acceptCustomValue={false}\n clearButtonText='Cerrar'\n noDataText='No se encontraron resultados'\n />\n {submensaje === 'Agregar' && <RequiredRule message=\"Artículo es requerido\" />}\n </Column>\n <Column dataField=\"ArtDescripcion\" width={400} allowEditing={false} visible={false} />\n <Column dataField=\"Cantidad\" caption=\"Cantidad\" width={80} dataType=\"number\" allowEditing={submensaje === 'Agregar' || submensaje === 'Ajustar'} format=',###'>\n {(submensaje === 'Agregar' || submensaje === 'Ajustar') && <RequiredRule message=\"Cantidad es requerida\" />}\n </Column>\n <Column dataField=\"CantidadOriginal\" dataType=\"number\" width={120} caption=\"Cant. Original\" format=',###' allowEditing={false} />\n </DataGrid>\n </GroupItem>\n </Tab>\n <Tab title=\"Autorización\" colCount={2}>\n <Item dataField=\"RequiereAutorizacion\" editorType=\"dxCheckBox\" editorOptions={autorizacionEditorOptions} >\n <Label text=\"Requiere autorización\" />\n </Item>\n <Item dataField=\"Autorizado\" editorType=\"dxCheckBox\" editorOptions={autorizacionEditorOptions} >\n <Label text=\"Autorizado\" />\n </Item>\n <Item dataField=\"Autoriza\" editorOptions={autorizacionEditorOptions} >\n <Label text=\"Autorizado por\" />\n </Item>\n <Item dataField=\"FechaAutorizacion\" editorOptions={autorizacionEditorOptions} >\n <Label text=\"Fecha Autorización\" />\n </Item>\n </Tab>\n <Tab title=\"Observaciones\" >\n <Item dataField=\"Observaciones\" editorType=\"dxTextArea\" >\n <Label text=\"Observaciones\" visible={false} />\n </Item>\n </Tab>\n <Tab title=\"Registros Relacionados\">\n <DataGrid\n id=\"gridRelatedRecords\"\n columnsAutoWidth={true}\n dataSource={adjustItemWMSPayload.relatedrecords}\n allowColumnReordering={true}\n allowColumnResizing={true}\n columnResizingMode={\"widget\"}\n showBorders={true}\n rowAlternationEnabled={true}\n showRowLines={true}\n showColumnLines={true}\n >\n <HeaderFilter visible={false} />\n\n <Column dataField=\"name\" dataType=\"string\" width={300} caption=\"Transacción\" />\n <Column caption=\"Estatus\" alignment=\"center\" width={150} cellRender={estatusRelatedRecords} />\n <Column dataField=\"FechaEmision\" dataType=\"date\" width={150} caption=\"Fecha Emisión\" />\n </DataGrid>\n </Tab>\n <Tab title=\"Mensajes WMS\">\n <DataGrid\n id=\"gridMensajesWMS\"\n columnsAutoWidth={true}\n dataSource={adjustItemWMSPayload.wmsmessage}\n allowColumnReordering={true}\n allowColumnResizing={true}\n columnResizingMode={\"widget\"}\n showBorders={true}\n rowAlternationEnabled={true}\n showRowLines={true}\n showColumnLines={true}\n >\n <Scrolling rowRenderingMode='virtual'></Scrolling>\n <Paging defaultPageSize={10} />\n <Pager\n visible={true}\n allowedPageSizes={allowedPageSizes}\n displayMode='compact'\n showPageSizeSelector={true}\n showInfo={true}\n showNavigationButtons={true}\n />\n\n <FilterRow visible={true} />\n <FilterPanel visible={true} />\n <FilterBuilderPopup position={filterBuilderPopupPosition} />\n\n <HeaderFilter visible={true} />\n\n <GroupPanel visible={true} />\n <SearchPanel visible={true} />\n <ColumnChooser\n enabled={true}\n mode='select'\n >\n <ColumnChooserSearch\n enabled={true}\n />\n\n <ColumnChooserSelection\n allowSelectAll={true}\n selectByClick={true}\n recursive={true}\n />\n </ColumnChooser>\n <Grouping autoExpandAll={autoExpandAll} />\n \n <Column dataField=\"Mensaje\" dataType=\"string\" width={120} caption=\"Mensaje\" />\n <Column dataField=\"Submensaje\" dataType=\"string\" width={120} caption=\"Tipo Ajuste\" />\n <Column dataField=\"Barcode\" dataType=\"string\" width={140} caption=\"Barcode\" />\n <Column dataField=\"Articulo\" dataType=\"string\" width={120} caption=\"Artículo\" />\n <Column dataField=\"CantidadOriginal\" dataType=\"number\" width={150} caption=\"Cantidad Original\" format=',###' />\n <Column dataField=\"Cantidad\" dataType=\"number\" width={120} caption=\"Cantidad\" format=',###' />\n <Column dataField=\"username\" dataType=\"string\" width={140} caption=\"Usuario WMS\" />\n <Column dataField=\"Fecha\" dataType=\"date\" width={100} caption=\"Fecha\" />\n <Column dataField=\"Almacen\" dataType=\"string\" width={120} caption=\"Almacén\" />\n <Column dataField=\"Posicion\" dataType=\"string\" width={120} caption=\"Posición\" />\n </DataGrid>\n </Tab>\n <Tab title=\"Log Estatus\">\n <DataGrid\n id=\"gridLogEstatus\"\n columnsAutoWidth={true}\n dataSource={adjustItemWMSPayload.movEstatusLog}\n allowColumnReordering={true}\n allowColumnResizing={true}\n columnResizingMode={\"widget\"}\n showBorders={true}\n rowAlternationEnabled={true}\n showRowLines={true}\n showColumnLines={true}\n >\n <HeaderFilter visible={false} />\n <Column dataField=\"Usuario\" dataType=\"string\" width={350} caption=\"Usuario\" />\n <Column caption=\"Estatus\" alignment=\"center\" width={150} cellRender={estatusRelatedRecords} />\n <Column dataField=\"Fecha\" dataType=\"datetime\" width={300} caption=\"Fecha\" />\n </DataGrid>\n </Tab>\n </TabbedItem>\n </Form>\n </div>\n </div>\n ) :\n (\n <div></div>\n )\n }\n </div>\n )\n }}\n />\n </div>\n </div>\n );\n}\n","import React, { useState, useEffect, useRef, useMemo } from 'react';\n\n// LoadPanel\nimport { LoadPanel } from 'devextreme-react/load-panel';\n\n// Toast\nimport { Toast } from 'devextreme-react/toast';\n\n//Form\nimport Form, { GroupItem, Label, Item } from 'devextreme-react/form';\n\n\nimport { Auth, API, Storage } from 'aws-amplify';\n\n// Ruteador\nimport { Route, Link, useHistory } from \"react-router-dom\";\n\n// Iconos\nimport { FontAwesomeIcon } from \"@fortawesome/react-fontawesome\";\nimport { faSave } from \"@fortawesome/pro-solid-svg-icons\";\nimport { faSort } from \"@fortawesome/pro-duotone-svg-icons\";\n\nimport 'devextreme/data/odata/store';\nimport CustomStore from 'devextreme/data/custom_store';\n\nimport '../ListStyle.css';\n\nimport dxDateBox from \"devextreme/ui/date_box\";\n\nimport dxNumberBox from \"devextreme/ui/number_box\";\n\nimport dxSlider from \"devextreme/ui/slider\";\n\ndxDateBox.defaultOptions({\n options: {\n dateSerializationFormat: \"yyyy-MM-dd\"\n }\n});\n\ndxNumberBox.defaultOptions({\n options: {\n step: 0\n }\n});\n\nfunction isNotEmpty(value) {\n return value !== undefined && value !== null && value !== '';\n}\n\nexport default function FulfillmentOrderWMSPriority(props) {\n const history = useHistory();\n\n const [fulfillmentOrderWMSPriorityPayload, setFulfillmentOrderWMSPriorityPayload] = useState({\n header: {}\n });\n\n const [visibleLoadPanel, setVisibleLoadPanel] = useState(false);\n\n const [visibleToast, setVisibleToast] = useState(false);\n const [messageToast, setMessageToast] = useState('');\n const [typeToast, setTypeToast] = useState('success');\n\n const [activateSaveButton, setActivateSaveButton] = useState(false);\n\n //Ref para el form\n const [formDatosGeneralesRef, setFormDatosGeneralesRef] = useState(React.createRef());\n\n async function getfulfillmentOrderWMSPriorityPayload() {\n try {\n let apiName = 'AdminSC';\n let path = '/procesaprioridadsurtido';\n\n let myInit = {\n headers: {\n 'Content-Type': 'application/json',\n Authorization: `${(await Auth.currentSession()).getAccessToken().getJwtToken()}`\n },\n queryStringParameters: {\n action: 'payload',\n username: JSON.parse(JSON.stringify(await Auth.currentAuthenticatedUser())).username\n }\n }\n\n var payloadGet = await API.get(apiName, path, myInit);\n\n setFulfillmentOrderWMSPriorityPayload(payloadGet);\n }\n catch (e) {\n if (e === 'No current user') {\n history.push('/');\n\n window.location.reload();\n }\n }\n\n return payloadGet;\n }\n\n async function saveButton() {\n try {\n setVisibleLoadPanel(true);\n\n var ID = fulfillmentOrderWMSPriorityPayload.header.ID;\n\n //Despues enviamos todo al backend\n let apiName = 'AdminSC';\n let path = '/procesaprioridadsurtido';\n\n let myInit = {\n headers: {\n 'Content-Type': 'application/json',\n Authorization: `${(await Auth.currentSession()).getAccessToken().getJwtToken()}`\n },\n body: {\n payload: fulfillmentOrderWMSPriorityPayload,\n action: 'saveChanges',\n username: JSON.parse(JSON.stringify(await Auth.currentAuthenticatedUser())).username\n }\n }\n\n var payloadPost = await API.post(apiName, path, myInit);\n \n if (payloadPost.ok === 'true') {\n setVisibleToast(true);\n setMessageToast('Se actualizó la Prioridad de Surtido con éxito');\n setTypeToast('success')\n }\n else if (payloadPost.ok === 'false') {\n setVisibleToast(true);\n setMessageToast(payloadPost.message);\n setTypeToast('error')\n }\n\n setVisibleLoadPanel(false);\n }\n catch (e) {\n setVisibleLoadPanel(false);\n\n if (e === 'No current user') {\n history.push('/');\n\n window.location.reload();\n }\n }\n };\n\n useEffect(() => {\n async function initialize() {\n setVisibleLoadPanel(true);\n\n await getfulfillmentOrderWMSPriorityPayload();\n\n setVisibleLoadPanel(false);\n }\n\n initialize();\n\n // eslint-disable-next-line\n }, []);\n\n function onHidingToast() {\n setVisibleToast(false);\n };\n\n var sliderEditorOptions = useMemo(() => {\n return {\n width: '100%',\n readOnly: false,\n tooltip: {\n enabled: true,\n position: \"bottom\",\n showMode: \"onHover\"\n },\n min: 1,\n max: 10,\n showRange: false\n };\n }, []);\n\n return (\n <div>\n <div class=\"bg-gray-200 m-2\">\n <h1 class=\"font-sans inline-block text-xl font-bold text-gray-700 leading-8 align-top mb-1\"><FontAwesomeIcon icon={faSort} size=\"xl\" /> Prioridad Surtido WMS</h1>\n </div>\n <LoadPanel\n shadingColor=\"rgba(0,0,0,0.4)\"\n visible={visibleLoadPanel}\n showIndicator={true}\n message=\"Por favor espere...\"\n shading={true}\n showPane={true}\n hideOnOutsideClick={false}\n />\n <Toast\n visible={visibleToast}\n message={messageToast}\n type={typeToast}\n onHiding={onHidingToast}\n displayTime={5000}\n width={'auto'}\n position={{\n my: 'top center',\n at: 'top center',\n of: window,\n offset: '0 130'\n }}\n />\n <div class=\"bg-gray-200 m-2\">\n <div>\n <button onClick={saveButton} type=\"submit\" class=\"mb-4 bg-blue-500 hover:bg-blue-700 text-white font-bold py-2 px-4 rounded\">\n <FontAwesomeIcon icon={faSave} /> Guardar Cambios\n </button>\n </div>\n\n <div class=\"bg-white p-4 shadow-xl\">\n <Form\n id=\"formTransaccion\"\n labelMode={'outside'}\n formData={fulfillmentOrderWMSPriorityPayload.header}\n readOnly={false}\n showColonAfterLabel={false}\n labelLocation={'top'}\n ref={formDatosGeneralesRef}\n >\n <GroupItem>\n <Item dataField=\"EntregaDirecta\" editorType=\"dxSlider\" editorOptions={sliderEditorOptions}>\n <Label text={\"Entrega Directa\"} />\n </Item>\n <Item dataField=\"SolicitudEmbarque\" editorType=\"dxSlider\" editorOptions={sliderEditorOptions}>\n <Label text={\"Solicitud Embarque\"} />\n </Item>\n <Item dataField=\"SolicitudTraspaso\" editorType=\"dxSlider\" editorOptions={sliderEditorOptions}>\n <Label text={\"Solicitud Traspaso\"} />\n\n </Item>\n <Item dataField=\"Transferencia\" editorType=\"dxSlider\" editorOptions={sliderEditorOptions}>\n <Label text={\"Transferencia\"} />\n </Item>\n <Item dataField=\"DevolucionCompra\" editorType=\"dxSlider\" editorOptions={sliderEditorOptions}>\n <Label text={\"Devolucion Compra\"} />\n </Item>\n </GroupItem>\n </Form >\n </div >\n </div>\n </div>\n );\n}\n","import React, { useState, useEffect, useRef } from 'react';\n\n// LoadPanel\nimport { LoadPanel } from 'devextreme-react/load-panel';\n\n// Toast\nimport { Toast } from 'devextreme-react/toast';\n\n// Grid\nimport DataGrid, {\n Column, FilterRow, HeaderFilter, FilterPanel, FilterBuilderPopup,\n GroupPanel, Grouping, SearchPanel, Sorting, Editing, Lookup, Toolbar, Item, RequiredRule,\n Scrolling, Pager, Paging, Summary, TotalItem, StateStoring, ColumnChooser, Format, Selection,\n GroupItem, Export, ColumnChooserSearch, ColumnChooserSelection\n} from 'devextreme-react/data-grid';\n\n//CheckBox\nimport CheckBox from 'devextreme-react/check-box';\n\nimport SelectBox from 'devextreme-react/select-box';\n\nimport { Auth, API, Storage } from 'aws-amplify';\n\n// Ruteador\nimport { Route, Link, useHistory } from \"react-router-dom\";\n\n// Iconos\nimport { FontAwesomeIcon } from \"@fortawesome/react-fontawesome\";\nimport { faList } from \"@fortawesome/pro-duotone-svg-icons\";\nimport { faLockKeyhole } from \"@fortawesome/pro-solid-svg-icons\";\nimport { faArrowsRotate } from \"@fortawesome/pro-solid-svg-icons\";\nimport { faCircleInfo } from \"@fortawesome/pro-solid-svg-icons\";\n\n// Iconos tablero de control\nimport { faPlaneCircleExclamation } from \"@fortawesome/pro-duotone-svg-icons\";\nimport { faPlaneCircleCheck } from \"@fortawesome/pro-duotone-svg-icons\";\nimport { faCoins } from \"@fortawesome/pro-duotone-svg-icons\";\nimport { faMoneyBill } from \"@fortawesome/pro-duotone-svg-icons\";\nimport { faBadgeCheck } from \"@fortawesome/pro-duotone-svg-icons\";\nimport { faCircleExclamation } from \"@fortawesome/pro-duotone-svg-icons\";\nimport { faBan } from \"@fortawesome/pro-duotone-svg-icons\";\nimport { faPrint } from \"@fortawesome/pro-duotone-svg-icons\";\nimport { faRotateLeft } from \"@fortawesome/pro-duotone-svg-icons\";\nimport { faBoxTaped } from \"@fortawesome/pro-duotone-svg-icons\";\nimport { faBoxOpenFull } from \"@fortawesome/pro-duotone-svg-icons\";\n\nimport 'devextreme/data/odata/store';\nimport CustomStore from 'devextreme/data/custom_store';\n\nimport Lambda from 'aws-sdk/clients/lambda';\n\nimport { Popup, Position, ToolbarItem } from 'devextreme-react/popup';\n\nimport ScrollView from 'devextreme-react/scroll-view';\n\nimport '../ListStyle.css';\n\nimport dxDateBox from \"devextreme/ui/date_box\";\n\nimport dxNumberBox from \"devextreme/ui/number_box\";\n\nimport { Workbook } from 'exceljs';\nimport { saveAs } from 'file-saver';\nimport { exportDataGrid } from 'devextreme/excel_exporter'\n\n//confirm\nimport { confirm } from 'devextreme/ui/dialog';\n\ndxDateBox.defaultOptions({\n options: {\n dateSerializationFormat: \"yyyy-MM-dd\"\n }\n});\n\ndxNumberBox.defaultOptions({\n options: {\n step: 0\n }\n});\n\nfunction isNotEmpty(value) {\n return value !== undefined && value !== null && value !== '';\n}\n\nexport default function LockSalesOrder(props) {\n const history = useHistory();\n\n //Controles para expander los grupos del grid de checklist\n const [autoExpandAllChecklist, setAutoExpandAllChecklist] = useState(true);\n\n const [autoExpandAll, setAutoExpandAll] = useState(true);\n\n //Ref para el grid Cerrar Pedidos\n const [gridLockSalesOrderRef, setGridLockSalesOrderRef] = useState(React.createRef());\n\n //Ref para el grid Icono Ayuda\n const [gridIconoAyudaRef, setGridIconoAyudaRef] = useState(React.createRef());\n\n\n const [visibleLoadPanel, setVisibleLoadPanel] = useState(false);\n\n const filterBuilderPopupPosition = {\n of: window,\n at: 'top',\n my: 'top',\n offset: { y: 10 },\n };\n\n const [visibleToast, setVisibleToast] = useState(false);\n const [messageToast, setMessageToast] = useState('');\n const [typeToast, setTypeToast] = useState('success');\n\n const [popupVisible, setPopupVisible] = useState(false);\n const [popupTitle, setPopupTitle] = useState('Íconos Pedido');\n\n const allowedPageSizes = [5, 10, 15, 20, 100, 200, 'all'];\n\n const exportFormats = ['xlsx'];\n\n function getOrderDay(rowData) {\n return (new Date(rowData.OrderDate)).getDay();\n }\n\n const filterBuilder = {\n customOperations: [{\n name: 'weekends',\n caption: 'Weekends',\n dataTypes: ['date'],\n icon: 'check',\n hasValue: false,\n calculateFilterExpression: () => [[getOrderDay, '=', 0], 'or', [getOrderDay, '=', 6]],\n }],\n allowHierarchicalFields: true,\n };\n\n const filterValue = [];\n\n const getSalesOrderRecords = React.useCallback(async (sqlFilter) => {\n try {\n let apiName = 'AdminSC';\n let path = '/cerrarpedidos';\n\n let myInit = {\n headers: {\n 'Content-Type': 'application/json',\n Authorization: `${(await Auth.currentSession()).getAccessToken().getJwtToken()}`\n },\n queryStringParameters: {\n action: 'listOpen',\n sqlFilter: sqlFilter,\n salesAccess: props.salesAccess,\n sucursal: props.sucursal,\n username: JSON.parse(JSON.stringify(await Auth.currentAuthenticatedUser())).username\n }\n }\n\n var salesOrdersGet = await API.get(apiName, path, myInit);\n }\n catch (e) {\n if (e === 'No current user') {\n history.push('/');\n\n window.location.reload();\n }\n }\n\n return salesOrdersGet;\n\n }, [history, props.salesAccess, props.sucursal]);\n\n const [storeAyuda] = useState([\n {\n Tipo: 'Estatus general',\n Descripcion: 'Pedido cerrado',\n Icono: 'faBadgeCheck'\n },\n {\n Tipo: 'Estatus general',\n Descripcion: 'Pedido abierto',\n Icono: 'faCircleExclamation'\n },\n {\n Tipo: 'Estatus general',\n Descripcion: 'Pedido cancelado',\n Icono: 'faBan'\n },\n {\n Tipo: 'Situación pedido',\n Descripcion: 'Pedido facturable',\n Icono: 'faBoxTaped'\n },\n {\n Tipo: 'Situación pedido',\n Descripcion: 'Pedido separado',\n Icono: 'faBoxOpenFull'\n },\n {\n Tipo: 'Programación',\n Descripcion: 'Programación nula',\n Icono: 'programacionNula'\n },\n {\n Tipo: 'Programación',\n Descripcion: 'Programación parcial',\n Icono: 'programacionParcial'\n },\n {\n Tipo: 'Programación',\n Descripcion: 'Programación total',\n Icono: 'programacionTotal'\n },\n {\n Tipo: 'Entrega',\n Descripcion: 'Entrega parcial',\n Icono: 'faPlaneCircleExclamation'\n },\n {\n Tipo: 'Entrega',\n Descripcion: 'Entrega total',\n Icono: 'faPlaneCircleCheck'\n },\n {\n Tipo: 'Pago',\n Descripcion: 'Pago parcial',\n Icono: 'faCoins'\n },\n {\n Tipo: 'Pago',\n Descripcion: 'Pago total',\n Icono: 'faMoneyBill'\n },\n {\n Tipo: 'Factura',\n Descripcion: 'Factura impresa',\n Icono: 'faPrint'\n },\n {\n Tipo: 'Mercancía pendiente recolección',\n Descripcion: 'Mercancía pendiente recolección',\n Icono: 'faRotateLeft'\n },\n ]);\n\n const store = new CustomStore({\n key: 'ID',\n load(loadOptions) {\n let sqlFilter = '(';\n [\n 'filter'\n ].forEach((i) => {\n if (i in loadOptions && isNotEmpty(loadOptions[i])) {\n var filters = loadOptions[i];\n\n var filtersLength = filters.length;\n\n for (var i = 0; i <= filtersLength; i++) {\n var singleFilter = filters[i];\n var singleFilterType = typeof singleFilter;\n var singleFilterIsArray = Array.isArray(singleFilter);\n var singleFilterIsDate = singleFilter instanceof Date;\n\n if (singleFilter === 'NULL') {\n singleFilter = '0';\n }\n\n if (singleFilterType.toString() === 'object' && singleFilterIsArray) {\n sqlFilter += '(';\n\n var subFiltersLength = singleFilter.length;\n\n for (var i2 = 0; i2 <= subFiltersLength; i2++) {\n var singleSubFilter = singleFilter[i2];\n var singleSubFilterType = typeof singleSubFilter;\n var singleSubFilterIsArray = Array.isArray(singleSubFilter);\n var singleSubFilterIsDate = singleSubFilter instanceof Date\n\n if (singleSubFilter === 'NULL') {\n singleSubFilter = '0';\n }\n\n if (singleSubFilterType.toString() === 'object' && singleSubFilterIsArray) {\n sqlFilter += '(';\n\n var subSubFiltersLength = singleSubFilter.length;\n\n for (var i3 = 0; i3 <= subSubFiltersLength; i3++) {\n var singleSubSubFilter = singleSubFilter[i3];\n var singleSubSubFilterType = typeof singleSubSubFilter;\n var singleSubSubFilterIsArray = Array.isArray(singleSubSubFilter);\n var singleSubSubFilterIsDate = singleSubSubFilter instanceof Date\n\n if (singleSubSubFilter === 'NULL') {\n singleSubSubFilter = '0';\n }\n\n if (singleSubSubFilterType.toString() === 'object' && singleSubSubFilterIsArray) {\n sqlFilter += '(';\n\n var subSubSubFiltersLength = singleSubSubFilter.length;\n\n for (var i4 = 0; i4 <= subSubSubFiltersLength; i4++) {\n var singleSubSubSubFilter = singleSubSubFilter[i4];\n var singleSubSubSubFilterType = typeof singleSubSubSubFilter;\n var singleSubSubSubFilterIsArray = Array.isArray(singleSubSubSubFilter);\n var singleSubSubSubFilterIsDate = singleSubSubSubFilter instanceof Date\n\n if (singleSubSubSubFilter === 'NULL') {\n singleSubSubSubFilter = '0';\n }\n\n if (singleSubSubSubFilterType.toString() === 'object' && singleSubSubSubFilterIsArray) {\n sqlFilter += '(';\n\n var subSubSubSubFiltersLength = singleSubSubSubFilter.length;\n\n for (var i5 = 0; i5 <= subSubSubSubFiltersLength; i5++) {\n var singleSubSubSubSubFilter = singleSubSubSubFilter[i5];\n var singleSubSubSubSubFilterType = typeof singleSubSubSubSubFilter;\n var singleSubSubSubSubFilterIsArray = Array.isArray(singleSubSubSubSubFilter);\n var singleSubSubSubSubFilterIsDate = singleSubSubSubSubFilter instanceof Date\n\n if (singleSubSubSubSubFilter === 'NULL') {\n singleSubSubSubSubFilter = '0';\n }\n\n if (singleSubSubSubSubFilterType.toString() === 'string') {\n if (singleSubSubSubSubFilter === 'contains') {\n filters[i][i2][i3][i4][i5] = 'LIKE';\n singleSubSubSubSubFilter = 'LIKE';\n\n filters[i][i2][i3][i4][i5 + 1] = '\\'%' + filters[i][i2][i3][i4][i5 + 1] + '%\\'';\n }\n else if (singleSubSubSubSubFilter === 'notcontains') {\n filters[i][i2][i3][i4][i5] = 'NOT LIKE';\n singleSubSubSubSubFilter = 'NOT LIKE';\n\n filters[i][i2][i3][i4][i5 + 1] = '\\'%' + filters[i][i2][i3][i4][i5 + 1] + '%\\'';\n }\n else if (singleSubSubSubSubFilter === 'startswith') {\n filters[i][i2][i3][i4][i5] = 'LIKE';\n singleSubSubSubSubFilter = 'LIKE';\n\n filters[i][i2][i3][i4][i5 + 1] = '\\'' + filters[i][i2][i3][i4][i5 + 1] + '%\\'';\n }\n else if (singleSubSubSubSubFilter === 'endswith') {\n filters[i][i2][i3][i4][i5] = 'LIKE';\n singleSubSubSubSubFilter = 'LIKE';\n\n filters[i][i2][i3][i4][i5 + 1] = '\\'%' + filters[i][i2][i3][i4][i5 + 1] + '\\'';\n }\n else if (singleSubSubSubSubFilter === '=' || singleSubSubSubSubFilter === '<>' || singleSubSubSubSubFilter === '>' || singleSubSubSubSubFilter === '>=' || singleSubSubSubSubFilter === '<' || singleSubSubSubSubFilter === '<=') {\n if (!filters[i][i2][i3][i4][i5 + 1])\n filters[i][i2][i3][i4][i5 + 1] = 'NULL';\n else if (typeof filters[i][i2][i3][i4][i5 + 1] === 'string') {\n filters[i][i2][i3][i4][i5 + 1] = '\\'' + filters[i][i2][i3][i4][i5 + 1] + '\\'';\n }\n }\n else if (singleSubSubSubSubFilter === '!') {\n filters[i][i2][i3][i4][i5] = 'NOT';\n singleSubSubSubSubFilter = 'NOT';\n }\n\n sqlFilter += ' ' + singleSubSubSubSubFilter + ' ';\n }\n else if (singleSubSubSubSubFilterType.toString() === 'object' && singleSubSubSubSubFilterIsDate) {\n sqlFilter += ' \\'' + singleSubSubSubSubFilter.toISOString().split('T')[0] + '\\' ';\n }\n else if (singleSubSubSubSubFilterType.toString() === 'number') {\n sqlFilter += ' ' + singleSubSubSubSubFilter.toString() + ' ';\n }\n else if (singleSubSubSubSubFilterType.toString() === 'boolean') {\n if (singleSubSubSubSubFilter.toString() === 'true')\n sqlFilter += '1 ';\n else if (singleSubSubSubSubFilter.toString() === 'false' || singleSubSubSubSubFilter === null || singleSubSubSubSubFilter === undefined)\n sqlFilter += '0 ';\n }\n }\n }\n else if (singleSubSubSubFilterType.toString() === 'string') {\n if (singleSubSubSubFilter === 'contains') {\n filters[i][i2][i3][i4] = 'LIKE';\n singleSubSubSubFilter = 'LIKE';\n\n filters[i][i2][i3][i4 + 1] = '\\'%' + filters[i][i2][i3][i4 + 1] + '%\\'';\n }\n else if (singleSubSubSubFilter === 'notcontains') {\n filters[i][i2][i3][i4] = 'NOT LIKE';\n singleSubSubSubFilter = 'NOT LIKE';\n\n filters[i][i2][i3][i4 + 1] = '\\'%' + filters[i][i2][i3][i4 + 1] + '%\\'';\n }\n else if (singleSubSubSubFilter === 'startswith') {\n filters[i][i2][i3][i4] = 'LIKE';\n singleSubSubSubFilter = 'LIKE';\n\n filters[i][i2][i3][i4 + 1] = '\\'' + filters[i][i2][i3][i4 + 1] + '%\\'';\n }\n else if (singleSubSubSubFilter === 'endswith') {\n filters[i][i2][i3][i4] = 'LIKE';\n singleSubSubSubFilter = 'LIKE';\n\n filters[i][i2][i3][i4 + 1] = '\\'%' + filters[i][i2][i3][i4 + 1] + '\\'';\n }\n else if (singleSubSubSubFilter === '=' || singleSubSubSubFilter === '<>' || singleSubSubSubFilter === '>' || singleSubSubSubFilter === '>=' || singleSubSubSubFilter === '<' || singleSubSubSubFilter === '<=') {\n if (!filters[i][i2][i3][i4 + 1])\n filters[i][i2][i3][i4 + 1] = 'NULL';\n else if (typeof filters[i][i2][i3][i4 + 1] === 'string') {\n filters[i][i2][i3][i4 + 1] = '\\'' + filters[i][i2][i3][i4 + 1] + '\\'';\n }\n }\n else if (singleSubSubSubFilter === '!') {\n filters[i][i2][i3][i4] = 'NOT';\n singleSubSubSubFilter = 'NOT';\n }\n\n sqlFilter += ' ' + singleSubSubSubFilter + ' ';\n }\n else if (singleSubSubSubFilterType.toString() === 'object' && singleSubSubSubFilterIsDate) {\n sqlFilter += ' \\'' + singleSubSubSubFilter.toISOString().split('T')[0] + '\\' ';\n }\n else if (singleSubSubSubFilterType.toString() === 'number') {\n sqlFilter += ' ' + singleSubSubSubFilter.toString() + ' ';\n }\n else if (singleSubSubSubFilterType.toString() === 'boolean') {\n if (singleSubSubSubFilter.toString() === 'true')\n sqlFilter += '1 ';\n else if (singleSubSubSubFilter.toString() === 'false' || singleSubSubSubFilter === null || singleSubSubSubFilter === undefined)\n sqlFilter += '0 ';\n }\n }\n\n sqlFilter += ')';\n }\n else if (singleSubSubFilterType.toString() === 'string') {\n if (singleSubSubFilter === 'contains') {\n filters[i][i2][i3] = 'LIKE';\n singleSubSubFilter = 'LIKE';\n\n filters[i][i2][i3 + 1] = '\\'%' + filters[i][i2][i3 + 1] + '%\\'';\n }\n else if (singleSubSubFilter === 'notcontains') {\n filters[i][i2][i3] = 'NOT LIKE';\n singleSubSubFilter = 'NOT LIKE';\n\n filters[i][i2][i3 + 1] = '\\'%' + filters[i][i2][i3 + 1] + '%\\'';\n }\n else if (singleSubSubFilter === 'startswith') {\n filters[i][i2][i3] = 'LIKE';\n singleSubSubFilter = 'LIKE';\n\n filters[i][i2][i3 + 1] = '\\'' + filters[i][i2][i3 + 1] + '%\\'';\n }\n else if (singleSubSubFilter === 'endswith') {\n filters[i][i2][i3] = 'LIKE';\n singleSubSubFilter = 'LIKE';\n\n filters[i][i2][i3 + 1] = '\\'%' + filters[i][i2][i3 + 1] + '\\'';\n }\n else if (singleSubSubFilter === '=' || singleSubSubFilter === '<>' || singleSubSubFilter === '>' || singleSubSubFilter === '>=' || singleSubSubFilter === '<' || singleSubSubFilter === '<=') {\n if (!filters[i][i2][i3 + 1])\n filters[i][i2][i3 + 1] = 'NULL';\n else if (typeof filters[i][i2][i3 + 1] === 'string') {\n filters[i][i2][i3 + 1] = '\\'' + filters[i][i2][i3 + 1] + '\\'';\n }\n }\n else if (singleSubSubFilter === '!') {\n filters[i][i2][i3] = 'NOT';\n singleSubSubFilter = 'NOT';\n }\n sqlFilter += ' ' + singleSubSubFilter + ' ';\n }\n else if (singleSubSubFilterType.toString() === 'object' && singleSubSubFilterIsDate) {\n sqlFilter += ' \\'' + singleSubSubFilter.toISOString().split('T')[0] + '\\' ';\n }\n else if (singleSubSubFilterType.toString() === 'number') {\n sqlFilter += ' ' + singleSubSubFilter.toString() + ' ';\n }\n else if (singleSubSubFilterType.toString() === 'boolean') {\n if (singleSubSubFilter.toString() === 'true')\n sqlFilter += '1 ';\n else if (singleSubSubFilter.toString() === 'false' || singleSubSubFilter === null || singleSubSubFilter === undefined)\n sqlFilter += '0 ';\n }\n }\n\n sqlFilter += ')';\n }\n else if (singleSubFilterType.toString() === 'string') {\n if (singleSubFilter === 'contains') {\n filters[i][i2] = 'LIKE';\n singleSubFilter = 'LIKE';\n\n filters[i][i2 + 1] = '\\'%' + filters[i][i2 + 1] + '%\\'';\n }\n else if (singleSubFilter === 'notcontains') {\n filters[i][i2] = 'NOT LIKE';\n singleSubFilter = 'NOT LIKE';\n\n filters[i][i2 + 1] = '\\'%' + filters[i][i2 + 1] + '%\\'';\n }\n else if (singleSubFilter === 'startswith') {\n filters[i][i2] = 'LIKE';\n singleSubFilter = 'LIKE';\n\n filters[i][i2 + 1] = '\\'' + filters[i][i2 + 1] + '%\\'';\n }\n else if (singleSubFilter === 'endswith') {\n filters[i][i2] = 'LIKE';\n singleSubFilter = 'LIKE';\n\n filters[i][i2 + 1] = '\\'%' + filters[i][i2 + 1] + '\\'';\n }\n else if (singleSubFilter === '=' || singleSubFilter === '<>' || singleSubFilter === '>' || singleSubFilter === '>=' || singleSubFilter === '<' || singleSubFilter === '<=') {\n if (!filters[i][i2 + 1])\n filters[i][i2 + 1] = 'NULL';\n else if (typeof filters[i][i2 + 1] === 'string') {\n filters[i][i2 + 1] = '\\'' + filters[i][i2 + 1] + '\\'';\n }\n }\n else if (singleSubFilter === '!') {\n filters[i][i2] = 'NOT';\n singleSubFilter = 'NOT';\n }\n sqlFilter += ' ' + singleSubFilter + ' ';\n }\n else if (singleSubFilterType.toString() === 'object' && singleSubFilterIsDate) {\n sqlFilter += ' \\'' + singleSubFilter.toISOString().split('T')[0] + '\\' ';\n }\n else if (singleSubFilterType.toString() === 'number') {\n sqlFilter += ' ' + singleSubFilter.toString() + ' ';\n }\n else if (singleSubFilterType.toString() === 'boolean') {\n if (singleSubFilter.toString() === 'true')\n sqlFilter += '1 ';\n else if (singleSubFilter.toString() === 'false' || singleSubFilter === null || singleSubFilter === undefined)\n sqlFilter += '0 ';\n }\n }\n\n sqlFilter += ')';\n }\n else if (singleFilterType.toString() === 'string') {\n if (singleFilter === 'contains') {\n filters[i] = 'LIKE';\n singleFilter = 'LIKE';\n\n filters[i + 1] = '\\'%' + filters[i + 1] + '%\\'';\n }\n else if (singleFilter === 'notcontains') {\n filters[i] = 'NOT LIKE';\n singleFilter = 'NOT LIKE';\n\n filters[i + 1] = '\\'%' + filters[i + 1] + '%\\'';\n }\n else if (singleFilter === 'startswith') {\n filters[i] = 'LIKE';\n singleFilter = 'LIKE';\n\n filters[i + 1] = '\\'' + filters[i + 1] + '%\\'';\n }\n else if (singleFilter === 'endswith') {\n filters[i] = 'LIKE';\n singleFilter = 'LIKE';\n\n filters[i + 1] = '\\'%' + filters[i + 1] + '\\'';\n }\n else if (singleFilter === '=' || singleFilter === '<>' || singleFilter === '>' || singleFilter === '>=' || singleFilter === '<' || singleFilter === '<=') {\n if (!filters[i + 1])\n filters[i + 1] = 'NULL';\n else if (typeof filters[i + 1] === 'string') {\n filters[i + 1] = '\\'' + filters[i + 1] + '\\'';\n }\n }\n else if (singleFilter === '!') {\n filters[i] = 'NOT';\n singleFilter = 'NOT';\n }\n sqlFilter += ' ' + singleFilter + ' ';\n }\n else if (singleFilterType.toString() === 'object' && singleFilterIsDate) {\n sqlFilter += ' \\'' + singleFilter.toISOString().split('T')[0] + '\\' ';\n }\n else if (singleFilterType.toString() === 'number') {\n sqlFilter += ' ' + singleFilter.toString() + ' ';\n }\n else if (singleFilterType.toString() === 'boolean') {\n if (singleFilter.toString() === 'true')\n sqlFilter += '1 ';\n else if (singleFilter.toString() === 'false' || singleFilter === null || singleFilter === undefined)\n sqlFilter += '0 ';\n }\n }\n\n sqlFilter += ')';\n }\n });\n\n async function getRecords() {\n if (sqlFilter === '(')\n sqlFilter = '';\n\n var records = await getSalesOrderRecords(sqlFilter);\n return {\n data: records,\n totalCount: records.length\n };\n }\n\n return getRecords()\n .then(function (result) {\n return result;\n })\n .catch(() => { throw new Error('Data Loading Error'); });\n },\n });\n\n function onAutoExpandAllChanged() {\n setAutoExpandAll(!autoExpandAll)\n };\n\n function onOptionChanged(e) {\n if (e.name !== 'focusedRowIndex' && e.name !== 'focusedColumnIndex' && e.name !== 'selectedRowKeys') {\n e.component.on(\"contentReady\", () => {\n e.component.off(\"contentReady\");\n e.component.clearSelection();\n });\n }\n }\n\n async function processButton() {\n if (!props.usuario) {\n setVisibleToast(true);\n setMessageToast('Configuración de usuario incorrecta. Comunicarse con el área de sistemas');\n setTypeToast('error')\n return;\n }\n\n if (gridLockSalesOrderRef.current) {\n var gridLockSalesOrder = gridLockSalesOrderRef.current.instance();\n\n var keys = gridLockSalesOrder.getSelectedRowKeys();\n\n var arraySalesOrder = [];\n\n for (var keysIndex in keys) {\n arraySalesOrder.push({\n ID: keys[keysIndex]\n });\n }\n\n if (arraySalesOrder.length === 0) {\n setVisibleToast(true);\n setMessageToast('Falta seleccionar los Pedidos a Cerrar');\n setTypeToast('error')\n }\n else {\n var result = confirm('Se cerrarán ' + arraySalesOrder.length + ' Pedidos. ¿Desea continuar?', 'Cerrar Pedidos');\n\n result.then(async (dialogResult) => {\n if (dialogResult) {\n setVisibleLoadPanel(true);\n\n var lambdaFunction;\n\n if (window.location.href.indexOf('sandbox.') >= 0 || window.location.href.indexOf('localhost') >= 0)\n lambdaFunction = 'cerrarPedidos-dev';\n else if (window.location.href.indexOf('sandboxtampico.') >= 0)\n lambdaFunction = 'cerrarPedidos-devleona';\n else if (window.location.href.indexOf('tampico.') >= 0)\n lambdaFunction = 'cerrarPedidos-prodleona';\n else\n lambdaFunction = 'cerrarPedidos-prod';\n\n Auth.currentCredentials()\n .then(credentials => {\n const lambda = new Lambda({\n credentials: Auth.essentialCredentials(credentials),\n region: 'us-east-1'\n });\n\n var params = {\n FunctionName: lambdaFunction,\n Payload: JSON.stringify({\n action: 'closeProcess',\n usuario: props.usuario,\n salesorders: arraySalesOrder,\n username: props.username\n })\n };\n\n lambda.invoke(params, function (err, data) {\n if (err) {\n setVisibleLoadPanel(false);\n\n console.log(err, err.stack);\n }\n else {\n setVisibleLoadPanel(false);\n\n setVisibleToast(true);\n setMessageToast('Proceso concluido');\n setTypeToast('success');\n\n gridLockSalesOrder.refresh();\n }\n });\n })\n }\n });\n }\n }\n };\n\n const hidePopupInfo = React.useCallback(() => {\n setPopupVisible(false);\n }, []);\n\n const helpButton = React.useCallback(() => {\n if (gridIconoAyudaRef.current) {\n var gridIconoAyuda = gridIconoAyudaRef.current.instance();\n\n gridIconoAyuda.refresh();\n }\n\n setPopupVisible(true);\n }, [gridIconoAyudaRef]);\n\n\n function refreshButton() {\n if (gridLockSalesOrderRef.current) {\n var gridTablero = gridLockSalesOrderRef.current.instance();\n\n gridTablero.refresh();\n }\n }\n\n const iconoProgramacion = React.useCallback((data) => {\n var EstatusProg = data.data.EstatusProg;\n\n if (EstatusProg === 'NULA') {\n return (<div class=\"inline-block w-5 h-5 bg-red-500 rounded-full\"></div>)\n }\n else if (EstatusProg === 'PARCIAL') {\n return (<div class=\"inline-block w-5 h-5 bg-yellow-400 rounded-full\"></div>)\n }\n else if (EstatusProg === 'TOTAL') {\n return (<div class=\"inline-block w-5 h-5 bg-green-400 rounded-full\"></div>)\n }\n }, []);\n\n const iconoEntrega = React.useCallback((data) => {\n var PorcEntrega = data.data.PorcEntrega;\n\n if (!PorcEntrega)\n PorcEntrega = 0;\n\n if (PorcEntrega > 0 && PorcEntrega < 1) {\n return (<div class=\"inline-block text-xl\"><FontAwesomeIcon icon={faPlaneCircleExclamation} /></div>)\n }\n else if (PorcEntrega >= 1) {\n return (<div class=\"inline-block text-xl\"><FontAwesomeIcon icon={faPlaneCircleCheck} /></div>)\n }\n }, []);\n\n const iconoPago = React.useCallback((data) => {\n var ImporteTotal = parseFloat(data.data.ImporteTotal);\n var Anticipos = parseFloat(data.data.Anticipos);\n\n if (!ImporteTotal)\n ImporteTotal = 0;\n if (!Anticipos)\n Anticipos = 0;\n\n if (Anticipos > 0 && Anticipos < ImporteTotal) {\n return (<div class=\"inline-block text-xl\"><FontAwesomeIcon icon={faCoins} /></div>)\n }\n else if (Anticipos > 0 && Anticipos >= ImporteTotal) {\n return (<div class=\"inline-block text-xl\"><FontAwesomeIcon icon={faMoneyBill} /></div>)\n }\n }, []);\n\n const iconoFactura = React.useCallback((data) => {\n var SCSituacionFact = data.data.SCSituacionFact;\n\n if (!SCSituacionFact)\n SCSituacionFact = 'NO';\n\n if (SCSituacionFact === 'SI')\n return (<div class=\"inline-block text-xl\"><FontAwesomeIcon icon={faPrint} /></div>)\n }, []);\n\n const iconoMPR = React.useCallback((data) => {\n var MPR = data.data.MPR;\n\n if (!MPR)\n MPR = 'NO';\n\n if (MPR === 'SI')\n return (<div class=\"inline-block text-xl\"><FontAwesomeIcon icon={faRotateLeft} /></div>)\n }, []);\n\n const iconoSituacion = React.useCallback((data) => {\n var Situacion = data.data.Situacion;\n var Estatus = data.data.Estatus;\n\n if (!Situacion)\n Situacion = '';\n\n if (Situacion === 'Separado No Programable')\n return (<div class=\"inline-block text-xl\"><FontAwesomeIcon icon={faBoxOpenFull} /></div>)\n else if (Situacion === 'Facturable' || Estatus === 'Concluido')\n return (<div class=\"inline-block text-xl\"><FontAwesomeIcon icon={faBoxTaped} /></div>)\n }, []);\n\n const iconoEstatusGeneral = React.useCallback((data) => {\n var Estatus = data.data.Estatus;\n var Anticipos = parseFloat(data.data.Anticipos);\n var ImporteTotal = parseFloat(data.data.ImporteTotal);\n var PorcEntrega = parseFloat(data.data.PorcEntrega);\n var SCSituacionFact = data.data.SCSituacionFact;\n var MPR = data.data.MPR;\n\n if (!ImporteTotal)\n ImporteTotal = 0;\n if (!Anticipos)\n Anticipos = 0;\n if (!PorcEntrega)\n PorcEntrega = 0;\n if (!SCSituacionFact)\n SCSituacionFact = 'NO';\n if (!MPR)\n MPR = 'NO';\n\n if (Estatus === 'Cancelado') {\n return (<div class=\"inline-block text-xl\"><FontAwesomeIcon icon={faBan} /></div>);\n }\n else {\n if (Anticipos >= ImporteTotal && PorcEntrega >= 1 && SCSituacionFact === 'SI' && MPR === 'NO') {\n return (<div class=\"inline-block text-xl\"><FontAwesomeIcon icon={faBadgeCheck} /></div>);\n }\n else {\n return (<div class=\"inline-block text-xl\"><FontAwesomeIcon icon={faCircleExclamation} /></div>);\n }\n }\n }, []);\n\n const iconHelp = React.useCallback((data) => {\n var Icono = data.data.Icono;\n\n if (Icono === 'faPlaneCircleExclamation') {\n return (<div class=\"inline-block text-xl\"><FontAwesomeIcon icon={faPlaneCircleExclamation} /></div>);\n }\n else if (Icono === 'faPlaneCircleCheck') {\n return (<div class=\"inline-block text-xl\"><FontAwesomeIcon icon={faPlaneCircleCheck} /></div>);\n }\n else if (Icono === 'faCoins') {\n return (<div class=\"inline-block text-xl\"><FontAwesomeIcon icon={faCoins} /></div>);\n }\n else if (Icono === 'faMoneyBill') {\n return (<div class=\"inline-block text-xl\"><FontAwesomeIcon icon={faMoneyBill} /></div>);\n }\n else if (Icono === 'faBadgeCheck') {\n return (<div class=\"inline-block text-xl\"><FontAwesomeIcon icon={faBadgeCheck} /></div>);\n }\n else if (Icono === 'faCircleExclamation') {\n return (<div class=\"inline-block text-xl\"><FontAwesomeIcon icon={faCircleExclamation} /></div>);\n }\n else if (Icono === 'faBan') {\n return (<div class=\"inline-block text-xl\"><FontAwesomeIcon icon={faBan} /></div>);\n }\n else if (Icono === 'faPrint') {\n return (<div class=\"inline-block text-xl\"><FontAwesomeIcon icon={faPrint} /></div>);\n }\n else if (Icono === 'faRotateLeft') {\n return (<div class=\"inline-block text-xl\"><FontAwesomeIcon icon={faRotateLeft} /></div>);\n }\n else if (Icono === 'faBoxTaped') {\n return (<div class=\"inline-block text-xl\"><FontAwesomeIcon icon={faBoxTaped} /></div>);\n }\n else if (Icono === 'faBoxOpenFull') {\n return (<div class=\"inline-block text-xl\"><FontAwesomeIcon icon={faBoxOpenFull} /></div>);\n }\n else if (Icono === 'programacionNula') {\n return (<div class=\"inline-block w-5 h-5 bg-red-500 rounded-full\"></div>)\n }\n else if (Icono === 'programacionParcial') {\n return (<div class=\"inline-block w-5 h-5 bg-yellow-400 rounded-full\"></div>)\n }\n else if (Icono === 'programacionTotal') {\n return (<div class=\"inline-block w-5 h-5 bg-green-400 rounded-full\"></div>)\n }\n }, []);\n\n useEffect(() => {\n // eslint-disable-next-line\n\n }, []);\n\n function onHidingToast() {\n setVisibleToast(false);\n }\n\n function onExporting(e) {\n const workbook = new Workbook();\n const worksheet = workbook.addWorksheet('Datos');\n\n exportDataGrid({\n component: e.component,\n worksheet,\n autoFilterEnabled: true,\n }).then(() => {\n workbook.xlsx.writeBuffer().then((buffer) => {\n saveAs(new Blob([buffer], { type: 'application/octet-stream' }), 'Datos.xlsx');\n });\n });\n e.cancel = true;\n };\n\n return (\n <div>\n <div class=\"bg-gray-200 m-2\">\n <h1 class=\"font-sans inline-block text-xl font-bold text-gray-700 leading-8 align-top mb-1\"><FontAwesomeIcon icon={faList} size=\"lg\" /> Cerrar Pedidos</h1>\n </div>\n\n <div class=\"bg-gray-200 m-2\">\n\n <button onClick={processButton} type=\"submit\" class=\"mb-4 bg-green-500 hover:bg-green-700 text-white font-bold py-2 px-4 rounded\">\n <FontAwesomeIcon icon={faLockKeyhole} /> Cerrar Pedidos\n </button>\n\n <button onClick={refreshButton} type=\"submit\" class=\"ml-4 mb-4 bg-blue-500 hover:bg-blue-700 text-white font-bold py-2 px-4 rounded\">\n <FontAwesomeIcon icon={faArrowsRotate} /> Actualizar\n </button>\n\n <button onClick={helpButton} type=\"submit\" class=\"ml-4 mb-4 bg-blue-500 hover:bg-blue-700 text-white font-bold py-2 px-4 rounded\">\n <FontAwesomeIcon icon={faCircleInfo} /> Información\n </button>\n\n <LoadPanel\n shadingColor=\"rgba(0,0,0,0.4)\"\n visible={visibleLoadPanel}\n showIndicator={true}\n message=\"Por favor espere...\"\n shading={true}\n showPane={true}\n hideOnOutsideClick={false}\n />\n\n <Toast\n visible={visibleToast}\n message={messageToast}\n type={typeToast}\n onHiding={onHidingToast}\n displayTime={5000}\n width={'auto'}\n position={{\n my: 'top center',\n at: 'top center',\n of: window,\n offset: '0 130'\n }}\n />\n <Popup\n visible={popupVisible}\n onHiding={hidePopupInfo}\n dragEnabled={true}\n hideOnOutsideClick={true}\n showCloseButton={true}\n showTitle={true}\n title={popupTitle}\n width={610}\n height={600}\n >\n <ScrollView\n scrollByContent={true}\n showScrollbar=\"always\"\n >\n <div>\n <DataGrid\n id=\"gridAyuda\"\n columnsAutoWidth={false}\n dataSource={storeAyuda}\n allowColumnReordering={false}\n allowColumnResizing={true}\n columnResizingMode={\"widget\"}\n showBorders={true}\n rowAlternationEnabled={true}\n showRowLines={true}\n showColumnLines={true}\n ref={gridIconoAyudaRef}\n >\n <Paging defaultPageSize={50} />\n <Grouping allowCollapsing={true} />\n <Column dataField=\"Tipo\" caption=\"Tipo\" width={100} dataType=\"string\" groupIndex={1} />\n <Column caption=\"Ícono\" alignment=\"center\" width={100} cellRender={iconHelp} />\n <Column dataField=\"Descripcion\" dataType=\"string\" width={400} caption=\"Descripción\" />\n </DataGrid>\n </div>\n </ScrollView>\n </Popup>\n <div class=\"bg-white p-3 shadow-xl\">\n <div className=\"options mb-2\">\n <div className=\"option\">\n <CheckBox text=\"Expandir todos los grupos\"\n value={autoExpandAll}\n onValueChanged={onAutoExpandAllChanged}>\n </CheckBox>\n </div>\n </div>\n <DataGrid\n id=\"gridLockSalesOrder\"\n columnsAutoWidth={true}\n filterBuilder={filterBuilder}\n dataSource={store}\n defaultFilterValue={filterValue}\n allowColumnReordering={true}\n allowColumnResizing={true}\n columnResizingMode={\"widget\"}\n showBorders={true}\n rowAlternationEnabled={true}\n showRowLines={true}\n showColumnLines={true}\n remoteOperations={{ filtering: true }}\n onOptionChanged={onOptionChanged}\n ref={gridLockSalesOrderRef}\n onExporting={onExporting}\n >\n <Scrolling rowRenderingMode='virtual'></Scrolling>\n <Paging defaultPageSize={100} />\n <Pager\n visible={true}\n allowedPageSizes={allowedPageSizes}\n displayMode='compact'\n showPageSizeSelector={true}\n showInfo={true}\n showNavigationButtons={true} />\n <FilterRow visible={true} />\n <FilterPanel visible={true} />\n <FilterBuilderPopup position={filterBuilderPopupPosition} />\n\n <HeaderFilter visible={true} />\n\n <GroupPanel visible={true} />\n <SearchPanel visible={true} />\n <ColumnChooser\n enabled={true}\n mode='select'\n >\n <ColumnChooserSearch\n enabled={true}\n />\n\n <ColumnChooserSelection\n allowSelectAll={true}\n selectByClick={true}\n recursive={true}\n />\n </ColumnChooser>\n <Grouping autoExpandAll={autoExpandAll} />\n <StateStoring enabled={true} type=\"localStorage\" storageKey=\"gridLockSalesOrder\" />\n <Export enabled={true} />\n\n <Selection\n mode=\"multiple\"\n selectAllMode={'page'}\n showCheckBoxesMode={'always'}\n />\n\n <Column caption=\"Estatus General\" alignment=\"center\" width={130} cellRender={iconoEstatusGeneral} />\n <Column caption=\"Situación Pedido\" alignment=\"center\" width={130} cellRender={iconoSituacion} />\n <Column caption=\"Programación\" alignment=\"center\" width={110} cellRender={iconoProgramacion} />\n <Column caption=\"Entrega\" alignment=\"center\" width={100} cellRender={iconoEntrega} />\n <Column caption=\"Pago\" alignment=\"center\" width={100} cellRender={iconoPago} />\n <Column caption=\"Factura\" alignment=\"center\" width={100} cellRender={iconoFactura} />\n <Column caption=\"M. P. R.\" alignment=\"center\" width={100} cellRender={iconoMPR} />\n\n <Column dataField=\"MovID\" dataType=\"string\" width={110} caption=\"Folio\" />\n <Column dataField=\"FechaEmision\" caption=\"Fecha Emisión\" dataType=\"date\" width={130} />\n <Column dataField=\"Estatus\" dataType=\"string\" width={120} visible={false} />\n <Column dataField=\"NombreCliente\" caption=\"Nombre Cliente\" dataType=\"string\" width={250} />\n <Column dataField=\"Plaza\" caption=\"Plaza\" dataType=\"string\" width={150} visible={false} />\n\n <Column dataField=\"ID\" dataType=\"number\" width={150} visible={false} />\n <Column dataField=\"Mov\" dataType=\"string\" width={190} caption=\"Tipo Movimiento\" visible={false} />\n <Column dataField=\"Movimiento\" dataType=\"string\" width={190} visible={false} />\n <Column dataField=\"Situacion\" dataType=\"string\" width={190} caption=\"Situación\" visible={false} />\n <Column dataField=\"Importe\" caption=\"Importe\" dataType=\"number\" width={150} visible={false}>\n <Format\n type=\"currency\"\n precision={2}\n />\n </Column>\n <Column dataField=\"Impuestos\" caption=\"Impuestos\" dataType=\"number\" width={150} visible={false}>\n <Format\n type=\"currency\"\n precision={2}\n />\n </Column>\n <Column dataField=\"ImporteTotal\" caption=\"Importe Total\" dataType=\"number\" width={150}>\n <Format\n type=\"currency\"\n precision={2}\n />\n </Column>\n <Column dataField=\"SCSituacionFact\" dataType=\"string\" width={190} caption=\"Situación Facturación\" visible={false} />\n <Column dataField=\"SCTipoPedido\" dataType=\"string\" width={190} caption=\"Tipo de Pedido\" visible={false} />\n <Column dataField=\"SCSituacionMPR\" dataType=\"string\" width={190} caption=\"Situación MPR\" visible={false} />\n <Column dataField=\"folioeCommerce\" dataType=\"string\" width={190} caption=\"Folio eCommerce\" visible={false} />\n <Column dataField=\"importeTotaleCommerce\" dataType=\"string\" width={190} caption=\"Importe Total eCommerce\" visible={false}>\n <Format\n type=\"currency\"\n precision={2}\n />\n </Column>\n <Column dataField=\"eCommerceFechaCreacion\" dataType=\"datetime\" width={190} caption=\"eCommerce Fecha Creación\" visible={false} />\n <Column dataField=\"PlazaEntrega\" dataType=\"string\" width={250} caption=\"Plaza Entrega\" visible={false} />\n <Column dataField=\"Almacen\" dataType=\"string\" width={190} caption=\"Almacén\" visible={false} />\n <Column dataField=\"NombreAlmacen\" dataType=\"string\" width={190} caption=\"Nombre Almacén\" visible={false} />\n <Column dataField=\"Agente\" dataType=\"string\" width={190} visible={false} />\n <Column dataField=\"NombreAgente\" dataType=\"string\" width={190} visible={false} />\n <Column dataField=\"Cliente\" dataType=\"string\" width={190} visible={false} />\n <Column dataField=\"Sucursal\" dataType=\"number\" width={150} visible={false} />\n <Column dataField=\"NombreSucursal\" dataType=\"string\" width={190} visible={false} />\n <Column dataField=\"Usuario\" dataType=\"string\" width={190} visible={false} />\n <Column dataField=\"NombreUsuario\" dataType=\"string\" width={190} visible={false} />\n <Column dataField=\"Origen\" dataType=\"string\" width={190} visible={false} />\n <Column dataField=\"EstatusProg\" width={190} dataType=\"string\" caption=\"Estatus Programación\" visible={false} />\n <Column dataField=\"TipoProgramacion\" width={190} dataType=\"string\" caption=\"Tipo Programación\" visible={false} />\n <Column dataField=\"Observaciones\" width={190} dataType=\"string\" caption=\"Observaciones\" visible={false} />\n <Column dataField=\"PorcEntrega\" caption=\"% Entrega\" dataType=\"number\" width={150} visible={false} >\n <Format\n type=\"percent\"\n />\n </Column>\n <Column dataField=\"Anticipos\" dataType=\"number\" width={150} visible={false}>\n <Format\n type=\"currency\"\n precision={2}\n />\n </Column>\n <Column dataField=\"MPR\" dataType=\"string\" width={190} caption=\"MPR\" visible={false} />\n <Summary>\n <GroupItem\n column=\"Importe\"\n summaryType=\"sum\"\n valueFormat=\"$,##0.##\"\n displayFormat=\"Importe {0}\"\n showInGroupFooter={false}>\n </GroupItem>\n <GroupItem\n column=\"Impuestos\"\n summaryType=\"sum\"\n valueFormat=\"$,##0.##\"\n displayFormat=\"Impuestos {0}\"\n showInGroupFooter={false}>\n </GroupItem>\n <GroupItem\n column=\"ImporteTotal\"\n summaryType=\"sum\"\n valueFormat=\"$,##0.##\"\n displayFormat=\"Importe Total {0}\"\n showInGroupFooter={false}>\n </GroupItem>\n <TotalItem\n column=\"Importe\"\n summaryType=\"sum\"\n valueFormat=\"$,##0.##\"\n displayFormat=\"Importe {0}\"\n showInColumn=\"Importe\">\n </TotalItem>\n <TotalItem\n column=\"Impuestos\"\n summaryType=\"sum\"\n valueFormat=\"$,##0.##\"\n displayFormat=\"Impuestos {0}\"\n showInColumn=\"Impuestos\">\n </TotalItem>\n <TotalItem\n column=\"ImporteTotal\"\n summaryType=\"sum\"\n valueFormat=\"$,##0.##\"\n displayFormat=\"Importe Total {0}\"\n showInColumn=\"ImporteTotal\">\n </TotalItem>\n </Summary>\n\n </DataGrid>\n </div>\n </div>\n </div>\n );\n}","import React, { useState, useEffect, useRef } from 'react';\n\n// LoadPanel\nimport { LoadPanel } from 'devextreme-react/load-panel';\n\n// Toast\nimport { Toast } from 'devextreme-react/toast';\n\n// Grid\nimport DataGrid, {\n Column, FilterRow, HeaderFilter, FilterPanel, FilterBuilderPopup,\n GroupPanel, Grouping, SearchPanel, Sorting, Editing, Lookup, Toolbar, Item, RequiredRule,\n Scrolling, Pager, Paging, Summary, TotalItem, StateStoring, ColumnChooser, Format, Selection,\n GroupItem, Export, ColumnChooserSearch, ColumnChooserSelection\n} from 'devextreme-react/data-grid';\n\n//CheckBox\nimport CheckBox from 'devextreme-react/check-box';\n\nimport SelectBox from 'devextreme-react/select-box';\n\nimport { Auth, API, Storage } from 'aws-amplify';\n\n// Ruteador\nimport { Route, Link, useHistory } from \"react-router-dom\";\n\n// Iconos\nimport { FontAwesomeIcon } from \"@fortawesome/react-fontawesome\";\nimport { faList } from \"@fortawesome/pro-duotone-svg-icons\";\nimport { faLockKeyholeOpen } from \"@fortawesome/pro-solid-svg-icons\";\nimport { faArrowsRotate } from \"@fortawesome/pro-solid-svg-icons\";\nimport { faCircleInfo } from \"@fortawesome/pro-solid-svg-icons\";\n\n// Iconos tablero de control\nimport { faPlaneCircleExclamation } from \"@fortawesome/pro-duotone-svg-icons\";\nimport { faPlaneCircleCheck } from \"@fortawesome/pro-duotone-svg-icons\";\nimport { faCoins } from \"@fortawesome/pro-duotone-svg-icons\";\nimport { faMoneyBill } from \"@fortawesome/pro-duotone-svg-icons\";\nimport { faBadgeCheck } from \"@fortawesome/pro-duotone-svg-icons\";\nimport { faCircleExclamation } from \"@fortawesome/pro-duotone-svg-icons\";\nimport { faBan } from \"@fortawesome/pro-duotone-svg-icons\";\nimport { faPrint } from \"@fortawesome/pro-duotone-svg-icons\";\nimport { faRotateLeft } from \"@fortawesome/pro-duotone-svg-icons\";\nimport { faBoxTaped } from \"@fortawesome/pro-duotone-svg-icons\";\nimport { faBoxOpenFull } from \"@fortawesome/pro-duotone-svg-icons\";\n\nimport 'devextreme/data/odata/store';\nimport CustomStore from 'devextreme/data/custom_store';\n\nimport Lambda from 'aws-sdk/clients/lambda';\n\nimport { Popup, Position, ToolbarItem } from 'devextreme-react/popup';\n\nimport ScrollView from 'devextreme-react/scroll-view';\n\nimport '../ListStyle.css';\n\nimport dxDateBox from \"devextreme/ui/date_box\";\n\nimport dxNumberBox from \"devextreme/ui/number_box\";\n\nimport { Workbook } from 'exceljs';\nimport { saveAs } from 'file-saver';\nimport { exportDataGrid } from 'devextreme/excel_exporter'\n\n//confirm\nimport { confirm } from 'devextreme/ui/dialog';\n\ndxDateBox.defaultOptions({\n options: {\n dateSerializationFormat: \"yyyy-MM-dd\"\n }\n});\n\ndxNumberBox.defaultOptions({\n options: {\n step: 0\n }\n});\n\nfunction isNotEmpty(value) {\n return value !== undefined && value !== null && value !== '';\n}\n\nexport default function UnlockSalesOrder(props) {\n const history = useHistory();\n\n //Controles para expander los grupos del grid de checklist\n const [autoExpandAllChecklist, setAutoExpandAllChecklist] = useState(true);\n\n const [autoExpandAll, setAutoExpandAll] = useState(true);\n\n //Ref para el grid Abrir Pedidos\n const [gridUnlockSalesOrderRef, setGridUnlockSalesOrderRef] = useState(React.createRef());\n\n //Ref para el grid Icono Ayuda\n const [gridIconoAyudaRef, setGridIconoAyudaRef] = useState(React.createRef());\n\n const [visibleLoadPanel, setVisibleLoadPanel] = useState(false);\n\n const filterBuilderPopupPosition = {\n of: window,\n at: 'top',\n my: 'top',\n offset: { y: 10 },\n };\n\n const [visibleToast, setVisibleToast] = useState(false);\n const [messageToast, setMessageToast] = useState('');\n const [typeToast, setTypeToast] = useState('success');\n\n const [popupVisible, setPopupVisible] = useState(false);\n const [popupTitle, setPopupTitle] = useState('Íconos Pedido');\n\n const allowedPageSizes = [5, 10, 15, 20, 100, 200, 'all'];\n\n const exportFormats = ['xlsx'];\n\n function getOrderDay(rowData) {\n return (new Date(rowData.OrderDate)).getDay();\n }\n\n const filterBuilder = {\n customOperations: [{\n name: 'weekends',\n caption: 'Weekends',\n dataTypes: ['date'],\n icon: 'check',\n hasValue: false,\n calculateFilterExpression: () => [[getOrderDay, '=', 0], 'or', [getOrderDay, '=', 6]],\n }],\n allowHierarchicalFields: true,\n };\n\n const filterValue = [];\n\n const getSalesOrderRecords = React.useCallback(async (sqlFilter) => {\n try {\n let apiName = 'AdminSC';\n let path = '/cerrarpedidos';\n\n let myInit = {\n headers: {\n 'Content-Type': 'application/json',\n Authorization: `${(await Auth.currentSession()).getAccessToken().getJwtToken()}`\n },\n queryStringParameters: {\n action: 'listClosed',\n sqlFilter: sqlFilter,\n salesAccess: props.salesAccess,\n sucursal: props.sucursal,\n username: JSON.parse(JSON.stringify(await Auth.currentAuthenticatedUser())).username\n }\n }\n\n var salesOrdersGet = await API.get(apiName, path, myInit);\n }\n catch (e) {\n if (e === 'No current user') {\n history.push('/');\n\n window.location.reload();\n }\n }\n\n return salesOrdersGet;\n\n }, [history, props.salesAccess, props.sucursal]);\n\n const [storeAyuda] = useState([\n {\n Tipo: 'Estatus general',\n Descripcion: 'Pedido cerrado',\n Icono: 'faBadgeCheck'\n },\n {\n Tipo: 'Estatus general',\n Descripcion: 'Pedido abierto',\n Icono: 'faCircleExclamation'\n },\n {\n Tipo: 'Estatus general',\n Descripcion: 'Pedido cancelado',\n Icono: 'faBan'\n },\n {\n Tipo: 'Situación pedido',\n Descripcion: 'Pedido facturable',\n Icono: 'faBoxTaped'\n },\n {\n Tipo: 'Situación pedido',\n Descripcion: 'Pedido separado',\n Icono: 'faBoxOpenFull'\n },\n {\n Tipo: 'Programación',\n Descripcion: 'Programación nula',\n Icono: 'programacionNula'\n },\n {\n Tipo: 'Programación',\n Descripcion: 'Programación parcial',\n Icono: 'programacionParcial'\n },\n {\n Tipo: 'Programación',\n Descripcion: 'Programación total',\n Icono: 'programacionTotal'\n },\n {\n Tipo: 'Entrega',\n Descripcion: 'Entrega parcial',\n Icono: 'faPlaneCircleExclamation'\n },\n {\n Tipo: 'Entrega',\n Descripcion: 'Entrega total',\n Icono: 'faPlaneCircleCheck'\n },\n {\n Tipo: 'Pago',\n Descripcion: 'Pago parcial',\n Icono: 'faCoins'\n },\n {\n Tipo: 'Pago',\n Descripcion: 'Pago total',\n Icono: 'faMoneyBill'\n },\n {\n Tipo: 'Factura',\n Descripcion: 'Factura impresa',\n Icono: 'faPrint'\n },\n {\n Tipo: 'Mercancía pendiente recolección',\n Descripcion: 'Mercancía pendiente recolección',\n Icono: 'faRotateLeft'\n },\n ]);\n\n const store = new CustomStore({\n key: 'ID',\n load(loadOptions) {\n let sqlFilter = '(';\n [\n 'filter'\n ].forEach((i) => {\n if (i in loadOptions && isNotEmpty(loadOptions[i])) {\n var filters = loadOptions[i];\n\n var filtersLength = filters.length;\n\n for (var i = 0; i <= filtersLength; i++) {\n var singleFilter = filters[i];\n var singleFilterType = typeof singleFilter;\n var singleFilterIsArray = Array.isArray(singleFilter);\n var singleFilterIsDate = singleFilter instanceof Date;\n\n if (singleFilter === 'NULL') {\n singleFilter = '0';\n }\n\n if (singleFilterType.toString() === 'object' && singleFilterIsArray) {\n sqlFilter += '(';\n\n var subFiltersLength = singleFilter.length;\n\n for (var i2 = 0; i2 <= subFiltersLength; i2++) {\n var singleSubFilter = singleFilter[i2];\n var singleSubFilterType = typeof singleSubFilter;\n var singleSubFilterIsArray = Array.isArray(singleSubFilter);\n var singleSubFilterIsDate = singleSubFilter instanceof Date\n\n if (singleSubFilter === 'NULL') {\n singleSubFilter = '0';\n }\n\n if (singleSubFilterType.toString() === 'object' && singleSubFilterIsArray) {\n sqlFilter += '(';\n\n var subSubFiltersLength = singleSubFilter.length;\n\n for (var i3 = 0; i3 <= subSubFiltersLength; i3++) {\n var singleSubSubFilter = singleSubFilter[i3];\n var singleSubSubFilterType = typeof singleSubSubFilter;\n var singleSubSubFilterIsArray = Array.isArray(singleSubSubFilter);\n var singleSubSubFilterIsDate = singleSubSubFilter instanceof Date\n\n if (singleSubSubFilter === 'NULL') {\n singleSubSubFilter = '0';\n }\n\n if (singleSubSubFilterType.toString() === 'object' && singleSubSubFilterIsArray) {\n sqlFilter += '(';\n\n var subSubSubFiltersLength = singleSubSubFilter.length;\n\n for (var i4 = 0; i4 <= subSubSubFiltersLength; i4++) {\n var singleSubSubSubFilter = singleSubSubFilter[i4];\n var singleSubSubSubFilterType = typeof singleSubSubSubFilter;\n var singleSubSubSubFilterIsArray = Array.isArray(singleSubSubSubFilter);\n var singleSubSubSubFilterIsDate = singleSubSubSubFilter instanceof Date\n\n if (singleSubSubSubFilter === 'NULL') {\n singleSubSubSubFilter = '0';\n }\n\n if (singleSubSubSubFilterType.toString() === 'object' && singleSubSubSubFilterIsArray) {\n sqlFilter += '(';\n\n var subSubSubSubFiltersLength = singleSubSubSubFilter.length;\n\n for (var i5 = 0; i5 <= subSubSubSubFiltersLength; i5++) {\n var singleSubSubSubSubFilter = singleSubSubSubFilter[i5];\n var singleSubSubSubSubFilterType = typeof singleSubSubSubSubFilter;\n var singleSubSubSubSubFilterIsArray = Array.isArray(singleSubSubSubSubFilter);\n var singleSubSubSubSubFilterIsDate = singleSubSubSubSubFilter instanceof Date\n\n if (singleSubSubSubSubFilter === 'NULL') {\n singleSubSubSubSubFilter = '0';\n }\n\n if (singleSubSubSubSubFilterType.toString() === 'string') {\n if (singleSubSubSubSubFilter === 'contains') {\n filters[i][i2][i3][i4][i5] = 'LIKE';\n singleSubSubSubSubFilter = 'LIKE';\n\n filters[i][i2][i3][i4][i5 + 1] = '\\'%' + filters[i][i2][i3][i4][i5 + 1] + '%\\'';\n }\n else if (singleSubSubSubSubFilter === 'notcontains') {\n filters[i][i2][i3][i4][i5] = 'NOT LIKE';\n singleSubSubSubSubFilter = 'NOT LIKE';\n\n filters[i][i2][i3][i4][i5 + 1] = '\\'%' + filters[i][i2][i3][i4][i5 + 1] + '%\\'';\n }\n else if (singleSubSubSubSubFilter === 'startswith') {\n filters[i][i2][i3][i4][i5] = 'LIKE';\n singleSubSubSubSubFilter = 'LIKE';\n\n filters[i][i2][i3][i4][i5 + 1] = '\\'' + filters[i][i2][i3][i4][i5 + 1] + '%\\'';\n }\n else if (singleSubSubSubSubFilter === 'endswith') {\n filters[i][i2][i3][i4][i5] = 'LIKE';\n singleSubSubSubSubFilter = 'LIKE';\n\n filters[i][i2][i3][i4][i5 + 1] = '\\'%' + filters[i][i2][i3][i4][i5 + 1] + '\\'';\n }\n else if (singleSubSubSubSubFilter === '=' || singleSubSubSubSubFilter === '<>' || singleSubSubSubSubFilter === '>' || singleSubSubSubSubFilter === '>=' || singleSubSubSubSubFilter === '<' || singleSubSubSubSubFilter === '<=') {\n if (!filters[i][i2][i3][i4][i5 + 1])\n filters[i][i2][i3][i4][i5 + 1] = 'NULL';\n else if (typeof filters[i][i2][i3][i4][i5 + 1] === 'string') {\n filters[i][i2][i3][i4][i5 + 1] = '\\'' + filters[i][i2][i3][i4][i5 + 1] + '\\'';\n }\n }\n else if (singleSubSubSubSubFilter === '!') {\n filters[i][i2][i3][i4][i5] = 'NOT';\n singleSubSubSubSubFilter = 'NOT';\n }\n\n sqlFilter += ' ' + singleSubSubSubSubFilter + ' ';\n }\n else if (singleSubSubSubSubFilterType.toString() === 'object' && singleSubSubSubSubFilterIsDate) {\n sqlFilter += ' \\'' + singleSubSubSubSubFilter.toISOString().split('T')[0] + '\\' ';\n }\n else if (singleSubSubSubSubFilterType.toString() === 'number') {\n sqlFilter += ' ' + singleSubSubSubSubFilter.toString() + ' ';\n }\n else if (singleSubSubSubSubFilterType.toString() === 'boolean') {\n if (singleSubSubSubSubFilter.toString() === 'true')\n sqlFilter += '1 ';\n else if (singleSubSubSubSubFilter.toString() === 'false' || singleSubSubSubSubFilter === null || singleSubSubSubSubFilter === undefined)\n sqlFilter += '0 ';\n }\n }\n }\n else if (singleSubSubSubFilterType.toString() === 'string') {\n if (singleSubSubSubFilter === 'contains') {\n filters[i][i2][i3][i4] = 'LIKE';\n singleSubSubSubFilter = 'LIKE';\n\n filters[i][i2][i3][i4 + 1] = '\\'%' + filters[i][i2][i3][i4 + 1] + '%\\'';\n }\n else if (singleSubSubSubFilter === 'notcontains') {\n filters[i][i2][i3][i4] = 'NOT LIKE';\n singleSubSubSubFilter = 'NOT LIKE';\n\n filters[i][i2][i3][i4 + 1] = '\\'%' + filters[i][i2][i3][i4 + 1] + '%\\'';\n }\n else if (singleSubSubSubFilter === 'startswith') {\n filters[i][i2][i3][i4] = 'LIKE';\n singleSubSubSubFilter = 'LIKE';\n\n filters[i][i2][i3][i4 + 1] = '\\'' + filters[i][i2][i3][i4 + 1] + '%\\'';\n }\n else if (singleSubSubSubFilter === 'endswith') {\n filters[i][i2][i3][i4] = 'LIKE';\n singleSubSubSubFilter = 'LIKE';\n\n filters[i][i2][i3][i4 + 1] = '\\'%' + filters[i][i2][i3][i4 + 1] + '\\'';\n }\n else if (singleSubSubSubFilter === '=' || singleSubSubSubFilter === '<>' || singleSubSubSubFilter === '>' || singleSubSubSubFilter === '>=' || singleSubSubSubFilter === '<' || singleSubSubSubFilter === '<=') {\n if (!filters[i][i2][i3][i4 + 1])\n filters[i][i2][i3][i4 + 1] = 'NULL';\n else if (typeof filters[i][i2][i3][i4 + 1] === 'string') {\n filters[i][i2][i3][i4 + 1] = '\\'' + filters[i][i2][i3][i4 + 1] + '\\'';\n }\n }\n else if (singleSubSubSubFilter === '!') {\n filters[i][i2][i3][i4] = 'NOT';\n singleSubSubSubFilter = 'NOT';\n }\n\n sqlFilter += ' ' + singleSubSubSubFilter + ' ';\n }\n else if (singleSubSubSubFilterType.toString() === 'object' && singleSubSubSubFilterIsDate) {\n sqlFilter += ' \\'' + singleSubSubSubFilter.toISOString().split('T')[0] + '\\' ';\n }\n else if (singleSubSubSubFilterType.toString() === 'number') {\n sqlFilter += ' ' + singleSubSubSubFilter.toString() + ' ';\n }\n else if (singleSubSubSubFilterType.toString() === 'boolean') {\n if (singleSubSubSubFilter.toString() === 'true')\n sqlFilter += '1 ';\n else if (singleSubSubSubFilter.toString() === 'false' || singleSubSubSubFilter === null || singleSubSubSubFilter === undefined)\n sqlFilter += '0 ';\n }\n }\n\n sqlFilter += ')';\n }\n else if (singleSubSubFilterType.toString() === 'string') {\n if (singleSubSubFilter === 'contains') {\n filters[i][i2][i3] = 'LIKE';\n singleSubSubFilter = 'LIKE';\n\n filters[i][i2][i3 + 1] = '\\'%' + filters[i][i2][i3 + 1] + '%\\'';\n }\n else if (singleSubSubFilter === 'notcontains') {\n filters[i][i2][i3] = 'NOT LIKE';\n singleSubSubFilter = 'NOT LIKE';\n\n filters[i][i2][i3 + 1] = '\\'%' + filters[i][i2][i3 + 1] + '%\\'';\n }\n else if (singleSubSubFilter === 'startswith') {\n filters[i][i2][i3] = 'LIKE';\n singleSubSubFilter = 'LIKE';\n\n filters[i][i2][i3 + 1] = '\\'' + filters[i][i2][i3 + 1] + '%\\'';\n }\n else if (singleSubSubFilter === 'endswith') {\n filters[i][i2][i3] = 'LIKE';\n singleSubSubFilter = 'LIKE';\n\n filters[i][i2][i3 + 1] = '\\'%' + filters[i][i2][i3 + 1] + '\\'';\n }\n else if (singleSubSubFilter === '=' || singleSubSubFilter === '<>' || singleSubSubFilter === '>' || singleSubSubFilter === '>=' || singleSubSubFilter === '<' || singleSubSubFilter === '<=') {\n if (!filters[i][i2][i3 + 1])\n filters[i][i2][i3 + 1] = 'NULL';\n else if (typeof filters[i][i2][i3 + 1] === 'string') {\n filters[i][i2][i3 + 1] = '\\'' + filters[i][i2][i3 + 1] + '\\'';\n }\n }\n else if (singleSubSubFilter === '!') {\n filters[i][i2][i3] = 'NOT';\n singleSubSubFilter = 'NOT';\n }\n sqlFilter += ' ' + singleSubSubFilter + ' ';\n }\n else if (singleSubSubFilterType.toString() === 'object' && singleSubSubFilterIsDate) {\n sqlFilter += ' \\'' + singleSubSubFilter.toISOString().split('T')[0] + '\\' ';\n }\n else if (singleSubSubFilterType.toString() === 'number') {\n sqlFilter += ' ' + singleSubSubFilter.toString() + ' ';\n }\n else if (singleSubSubFilterType.toString() === 'boolean') {\n if (singleSubSubFilter.toString() === 'true')\n sqlFilter += '1 ';\n else if (singleSubSubFilter.toString() === 'false' || singleSubSubFilter === null || singleSubSubFilter === undefined)\n sqlFilter += '0 ';\n }\n }\n\n sqlFilter += ')';\n }\n else if (singleSubFilterType.toString() === 'string') {\n if (singleSubFilter === 'contains') {\n filters[i][i2] = 'LIKE';\n singleSubFilter = 'LIKE';\n\n filters[i][i2 + 1] = '\\'%' + filters[i][i2 + 1] + '%\\'';\n }\n else if (singleSubFilter === 'notcontains') {\n filters[i][i2] = 'NOT LIKE';\n singleSubFilter = 'NOT LIKE';\n\n filters[i][i2 + 1] = '\\'%' + filters[i][i2 + 1] + '%\\'';\n }\n else if (singleSubFilter === 'startswith') {\n filters[i][i2] = 'LIKE';\n singleSubFilter = 'LIKE';\n\n filters[i][i2 + 1] = '\\'' + filters[i][i2 + 1] + '%\\'';\n }\n else if (singleSubFilter === 'endswith') {\n filters[i][i2] = 'LIKE';\n singleSubFilter = 'LIKE';\n\n filters[i][i2 + 1] = '\\'%' + filters[i][i2 + 1] + '\\'';\n }\n else if (singleSubFilter === '=' || singleSubFilter === '<>' || singleSubFilter === '>' || singleSubFilter === '>=' || singleSubFilter === '<' || singleSubFilter === '<=') {\n if (!filters[i][i2 + 1])\n filters[i][i2 + 1] = 'NULL';\n else if (typeof filters[i][i2 + 1] === 'string') {\n filters[i][i2 + 1] = '\\'' + filters[i][i2 + 1] + '\\'';\n }\n }\n else if (singleSubFilter === '!') {\n filters[i][i2] = 'NOT';\n singleSubFilter = 'NOT';\n }\n sqlFilter += ' ' + singleSubFilter + ' ';\n }\n else if (singleSubFilterType.toString() === 'object' && singleSubFilterIsDate) {\n sqlFilter += ' \\'' + singleSubFilter.toISOString().split('T')[0] + '\\' ';\n }\n else if (singleSubFilterType.toString() === 'number') {\n sqlFilter += ' ' + singleSubFilter.toString() + ' ';\n }\n else if (singleSubFilterType.toString() === 'boolean') {\n if (singleSubFilter.toString() === 'true')\n sqlFilter += '1 ';\n else if (singleSubFilter.toString() === 'false' || singleSubFilter === null || singleSubFilter === undefined)\n sqlFilter += '0 ';\n }\n }\n\n sqlFilter += ')';\n }\n else if (singleFilterType.toString() === 'string') {\n if (singleFilter === 'contains') {\n filters[i] = 'LIKE';\n singleFilter = 'LIKE';\n\n filters[i + 1] = '\\'%' + filters[i + 1] + '%\\'';\n }\n else if (singleFilter === 'notcontains') {\n filters[i] = 'NOT LIKE';\n singleFilter = 'NOT LIKE';\n\n filters[i + 1] = '\\'%' + filters[i + 1] + '%\\'';\n }\n else if (singleFilter === 'startswith') {\n filters[i] = 'LIKE';\n singleFilter = 'LIKE';\n\n filters[i + 1] = '\\'' + filters[i + 1] + '%\\'';\n }\n else if (singleFilter === 'endswith') {\n filters[i] = 'LIKE';\n singleFilter = 'LIKE';\n\n filters[i + 1] = '\\'%' + filters[i + 1] + '\\'';\n }\n else if (singleFilter === '=' || singleFilter === '<>' || singleFilter === '>' || singleFilter === '>=' || singleFilter === '<' || singleFilter === '<=') {\n if (!filters[i + 1])\n filters[i + 1] = 'NULL';\n else if (typeof filters[i + 1] === 'string') {\n filters[i + 1] = '\\'' + filters[i + 1] + '\\'';\n }\n }\n else if (singleFilter === '!') {\n filters[i] = 'NOT';\n singleFilter = 'NOT';\n }\n sqlFilter += ' ' + singleFilter + ' ';\n }\n else if (singleFilterType.toString() === 'object' && singleFilterIsDate) {\n sqlFilter += ' \\'' + singleFilter.toISOString().split('T')[0] + '\\' ';\n }\n else if (singleFilterType.toString() === 'number') {\n sqlFilter += ' ' + singleFilter.toString() + ' ';\n }\n else if (singleFilterType.toString() === 'boolean') {\n if (singleFilter.toString() === 'true')\n sqlFilter += '1 ';\n else if (singleFilter.toString() === 'false' || singleFilter === null || singleFilter === undefined)\n sqlFilter += '0 ';\n }\n }\n\n sqlFilter += ')';\n }\n });\n\n async function getRecords() {\n if (sqlFilter === '(')\n sqlFilter = '';\n\n var records = await getSalesOrderRecords(sqlFilter);\n return {\n data: records,\n totalCount: records.length\n };\n }\n\n return getRecords()\n .then(function (result) {\n return result;\n })\n .catch(() => { throw new Error('Data Loading Error'); });\n },\n });\n\n function onAutoExpandAllChanged() {\n setAutoExpandAll(!autoExpandAll)\n };\n\n function onOptionChanged(e) {\n if (e.name !== 'focusedRowIndex' && e.name !== 'focusedColumnIndex' && e.name !== 'selectedRowKeys') {\n e.component.on(\"contentReady\", () => {\n e.component.off(\"contentReady\");\n e.component.clearSelection();\n });\n }\n }\n\n async function processButton() {\n if (!props.usuario) {\n setVisibleToast(true);\n setMessageToast('Configuración de usuario incorrecta. Comunicarse con el área de sistemas');\n setTypeToast('error')\n return;\n }\n\n if (gridUnlockSalesOrderRef.current) {\n var gridUnlockSalesOrder = gridUnlockSalesOrderRef.current.instance();\n\n var keys = gridUnlockSalesOrder.getSelectedRowKeys();\n\n var arraySalesOrder = [];\n\n for (var keysIndex in keys) {\n arraySalesOrder.push({\n ID: keys[keysIndex]\n });\n }\n\n if (arraySalesOrder.length === 0) {\n setVisibleToast(true);\n setMessageToast('Falta seleccionar los Pedidos a Abrir');\n setTypeToast('error')\n }\n else {\n var result = confirm('Se abrirán ' + arraySalesOrder.length + ' Pedidos. ¿Desea continuar?', 'Abrir Pedidos');\n\n result.then(async (dialogResult) => {\n if (dialogResult) {\n setVisibleLoadPanel(true);\n\n var lambdaFunction;\n\n if (window.location.href.indexOf('sandbox.') >= 0 || window.location.href.indexOf('localhost') >= 0)\n lambdaFunction = 'cerrarPedidos-dev';\n else if (window.location.href.indexOf('sandboxtampico.') >= 0)\n lambdaFunction = 'cerrarPedidos-devleona';\n else if (window.location.href.indexOf('tampico.') >= 0)\n lambdaFunction = 'cerrarPedidos-prodleona';\n else\n lambdaFunction = 'cerrarPedidos-prod';\n\n Auth.currentCredentials()\n .then(credentials => {\n const lambda = new Lambda({\n credentials: Auth.essentialCredentials(credentials),\n region: 'us-east-1'\n });\n\n var params = {\n FunctionName: lambdaFunction,\n Payload: JSON.stringify({\n action: 'openProcess',\n usuario: props.usuario,\n salesorders: arraySalesOrder,\n username: props.username\n })\n };\n\n lambda.invoke(params, function (err, data) {\n if (err) {\n setVisibleLoadPanel(false);\n\n console.log(err, err.stack);\n }\n else {\n setVisibleLoadPanel(false);\n\n setVisibleToast(true);\n setMessageToast('Proceso concluido');\n setTypeToast('success');\n\n gridUnlockSalesOrder.refresh();\n }\n });\n })\n }\n });\n }\n }\n };\n\n const hidePopupInfo = React.useCallback(() => {\n setPopupVisible(false);\n }, []);\n\n const helpButton = React.useCallback(() => {\n if (gridIconoAyudaRef.current) {\n var gridIconoAyuda = gridIconoAyudaRef.current.instance();\n\n gridIconoAyuda.refresh();\n }\n\n setPopupVisible(true);\n }, [gridIconoAyudaRef]);\n\n\n function refreshButton() {\n if (gridUnlockSalesOrderRef.current) {\n var gridTablero = gridUnlockSalesOrderRef.current.instance();\n\n gridTablero.refresh();\n }\n }\n\n const iconoProgramacion = React.useCallback((data) => {\n var EstatusProg = data.data.EstatusProg;\n\n if (EstatusProg === 'NULA') {\n return (<div class=\"inline-block w-5 h-5 bg-red-500 rounded-full\"></div>)\n }\n else if (EstatusProg === 'PARCIAL') {\n return (<div class=\"inline-block w-5 h-5 bg-yellow-400 rounded-full\"></div>)\n }\n else if (EstatusProg === 'TOTAL') {\n return (<div class=\"inline-block w-5 h-5 bg-green-400 rounded-full\"></div>)\n }\n }, []);\n\n const iconoEntrega = React.useCallback((data) => {\n var PorcEntrega = data.data.PorcEntrega;\n\n if (!PorcEntrega)\n PorcEntrega = 0;\n\n if (PorcEntrega > 0 && PorcEntrega < 1) {\n return (<div class=\"inline-block text-xl\"><FontAwesomeIcon icon={faPlaneCircleExclamation} /></div>)\n }\n else if (PorcEntrega >= 1) {\n return (<div class=\"inline-block text-xl\"><FontAwesomeIcon icon={faPlaneCircleCheck} /></div>)\n }\n }, []);\n\n const iconoPago = React.useCallback((data) => {\n var ImporteTotal = parseFloat(data.data.ImporteTotal);\n var Anticipos = parseFloat(data.data.Anticipos);\n\n if (!ImporteTotal)\n ImporteTotal = 0;\n if (!Anticipos)\n Anticipos = 0;\n\n if (Anticipos > 0 && Anticipos < ImporteTotal) {\n return (<div class=\"inline-block text-xl\"><FontAwesomeIcon icon={faCoins} /></div>)\n }\n else if (Anticipos > 0 && Anticipos >= ImporteTotal) {\n return (<div class=\"inline-block text-xl\"><FontAwesomeIcon icon={faMoneyBill} /></div>)\n }\n }, []);\n\n const iconoFactura = React.useCallback((data) => {\n var SCSituacionFact = data.data.SCSituacionFact;\n\n if (!SCSituacionFact)\n SCSituacionFact = 'NO';\n\n if (SCSituacionFact === 'SI')\n return (<div class=\"inline-block text-xl\"><FontAwesomeIcon icon={faPrint} /></div>)\n }, []);\n\n const iconoMPR = React.useCallback((data) => {\n var MPR = data.data.MPR;\n\n if (!MPR)\n MPR = 'NO';\n\n if (MPR === 'SI')\n return (<div class=\"inline-block text-xl\"><FontAwesomeIcon icon={faRotateLeft} /></div>)\n }, []);\n\n const iconoSituacion = React.useCallback((data) => {\n var Situacion = data.data.Situacion;\n var Estatus = data.data.Estatus;\n\n if (!Situacion)\n Situacion = '';\n\n if (Situacion === 'Separado No Programable')\n return (<div class=\"inline-block text-xl\"><FontAwesomeIcon icon={faBoxOpenFull} /></div>)\n else if (Situacion === 'Facturable' || Estatus === 'Concluido')\n return (<div class=\"inline-block text-xl\"><FontAwesomeIcon icon={faBoxTaped} /></div>)\n }, []);\n\n const iconoEstatusGeneral = React.useCallback((data) => {\n var Estatus = data.data.Estatus;\n var Anticipos = parseFloat(data.data.Anticipos);\n var ImporteTotal = parseFloat(data.data.ImporteTotal);\n var PorcEntrega = parseFloat(data.data.PorcEntrega);\n var SCSituacionFact = data.data.SCSituacionFact;\n var MPR = data.data.MPR;\n\n if (!ImporteTotal)\n ImporteTotal = 0;\n if (!Anticipos)\n Anticipos = 0;\n if (!PorcEntrega)\n PorcEntrega = 0;\n if (!SCSituacionFact)\n SCSituacionFact = 'NO';\n if (!MPR)\n MPR = 'NO';\n\n if (Estatus === 'Cancelado') {\n return (<div class=\"inline-block text-xl\"><FontAwesomeIcon icon={faBan} /></div>);\n }\n else {\n if (Anticipos >= ImporteTotal && PorcEntrega >= 1 && SCSituacionFact === 'SI' && MPR === 'NO') {\n return (<div class=\"inline-block text-xl\"><FontAwesomeIcon icon={faBadgeCheck} /></div>);\n }\n else {\n return (<div class=\"inline-block text-xl\"><FontAwesomeIcon icon={faCircleExclamation} /></div>);\n }\n }\n }, []);\n\n const iconHelp = React.useCallback((data) => {\n var Icono = data.data.Icono;\n\n if (Icono === 'faPlaneCircleExclamation') {\n return (<div class=\"inline-block text-xl\"><FontAwesomeIcon icon={faPlaneCircleExclamation} /></div>);\n }\n else if (Icono === 'faPlaneCircleCheck') {\n return (<div class=\"inline-block text-xl\"><FontAwesomeIcon icon={faPlaneCircleCheck} /></div>);\n }\n else if (Icono === 'faCoins') {\n return (<div class=\"inline-block text-xl\"><FontAwesomeIcon icon={faCoins} /></div>);\n }\n else if (Icono === 'faMoneyBill') {\n return (<div class=\"inline-block text-xl\"><FontAwesomeIcon icon={faMoneyBill} /></div>);\n }\n else if (Icono === 'faBadgeCheck') {\n return (<div class=\"inline-block text-xl\"><FontAwesomeIcon icon={faBadgeCheck} /></div>);\n }\n else if (Icono === 'faCircleExclamation') {\n return (<div class=\"inline-block text-xl\"><FontAwesomeIcon icon={faCircleExclamation} /></div>);\n }\n else if (Icono === 'faBan') {\n return (<div class=\"inline-block text-xl\"><FontAwesomeIcon icon={faBan} /></div>);\n }\n else if (Icono === 'faPrint') {\n return (<div class=\"inline-block text-xl\"><FontAwesomeIcon icon={faPrint} /></div>);\n }\n else if (Icono === 'faRotateLeft') {\n return (<div class=\"inline-block text-xl\"><FontAwesomeIcon icon={faRotateLeft} /></div>);\n }\n else if (Icono === 'faBoxTaped') {\n return (<div class=\"inline-block text-xl\"><FontAwesomeIcon icon={faBoxTaped} /></div>);\n }\n else if (Icono === 'faBoxOpenFull') {\n return (<div class=\"inline-block text-xl\"><FontAwesomeIcon icon={faBoxOpenFull} /></div>);\n }\n else if (Icono === 'programacionNula') {\n return (<div class=\"inline-block w-5 h-5 bg-red-500 rounded-full\"></div>)\n }\n else if (Icono === 'programacionParcial') {\n return (<div class=\"inline-block w-5 h-5 bg-yellow-400 rounded-full\"></div>)\n }\n else if (Icono === 'programacionTotal') {\n return (<div class=\"inline-block w-5 h-5 bg-green-400 rounded-full\"></div>)\n }\n }, []);\n\n useEffect(() => {\n // eslint-disable-next-line\n\n }, []);\n\n function onHidingToast() {\n setVisibleToast(false);\n }\n\n function onExporting(e) {\n const workbook = new Workbook();\n const worksheet = workbook.addWorksheet('Datos');\n\n exportDataGrid({\n component: e.component,\n worksheet,\n autoFilterEnabled: true,\n }).then(() => {\n workbook.xlsx.writeBuffer().then((buffer) => {\n saveAs(new Blob([buffer], { type: 'application/octet-stream' }), 'Datos.xlsx');\n });\n });\n e.cancel = true;\n };\n\n return (\n <div>\n <div class=\"bg-gray-200 m-2\">\n <h1 class=\"font-sans inline-block text-xl font-bold text-gray-700 leading-8 align-top mb-1\"><FontAwesomeIcon icon={faList} size=\"lg\" /> Abrir Pedidos</h1>\n </div>\n\n <div class=\"bg-gray-200 m-2\">\n\n <button onClick={processButton} type=\"submit\" class=\"mb-4 bg-green-500 hover:bg-green-700 text-white font-bold py-2 px-4 rounded\">\n <FontAwesomeIcon icon={faLockKeyholeOpen} /> Abrir Pedidos\n </button>\n\n <button onClick={refreshButton} type=\"submit\" class=\"ml-4 mb-4 bg-blue-500 hover:bg-blue-700 text-white font-bold py-2 px-4 rounded\">\n <FontAwesomeIcon icon={faArrowsRotate} /> Actualizar\n </button>\n\n <button onClick={helpButton} type=\"submit\" class=\"ml-4 mb-4 bg-blue-500 hover:bg-blue-700 text-white font-bold py-2 px-4 rounded\">\n <FontAwesomeIcon icon={faCircleInfo} /> Información\n </button>\n\n <LoadPanel\n shadingColor=\"rgba(0,0,0,0.4)\"\n visible={visibleLoadPanel}\n showIndicator={true}\n message=\"Por favor espere...\"\n shading={true}\n showPane={true}\n hideOnOutsideClick={false}\n />\n\n <Toast\n visible={visibleToast}\n message={messageToast}\n type={typeToast}\n onHiding={onHidingToast}\n displayTime={5000}\n width={'auto'}\n position={{\n my: 'top center',\n at: 'top center',\n of: window,\n offset: '0 130'\n }}\n />\n <Popup\n visible={popupVisible}\n onHiding={hidePopupInfo}\n dragEnabled={true}\n hideOnOutsideClick={true}\n showCloseButton={true}\n showTitle={true}\n title={popupTitle}\n width={610}\n height={600}\n >\n <ScrollView\n scrollByContent={true}\n showScrollbar=\"always\"\n >\n <div>\n <DataGrid\n id=\"gridAyuda\"\n columnsAutoWidth={false}\n dataSource={storeAyuda}\n allowColumnReordering={false}\n allowColumnResizing={true}\n columnResizingMode={\"widget\"}\n showBorders={true}\n rowAlternationEnabled={true}\n showRowLines={true}\n showColumnLines={true}\n ref={gridIconoAyudaRef}\n >\n <Paging defaultPageSize={50} />\n <Grouping allowCollapsing={true} />\n <Column dataField=\"Tipo\" caption=\"Tipo\" width={100} dataType=\"string\" groupIndex={1} />\n <Column caption=\"Ícono\" alignment=\"center\" width={100} cellRender={iconHelp} />\n <Column dataField=\"Descripcion\" dataType=\"string\" width={400} caption=\"Descripción\" />\n </DataGrid>\n </div>\n </ScrollView>\n </Popup>\n <div class=\"bg-white p-3 shadow-xl\">\n <div className=\"options mb-2\">\n <div className=\"option\">\n <CheckBox text=\"Expandir todos los grupos\"\n value={autoExpandAll}\n onValueChanged={onAutoExpandAllChanged}>\n </CheckBox>\n </div>\n </div>\n <DataGrid\n id=\"gridUnlockSalesOrder\"\n columnsAutoWidth={true}\n filterBuilder={filterBuilder}\n dataSource={store}\n defaultFilterValue={filterValue}\n allowColumnReordering={true}\n allowColumnResizing={true}\n columnResizingMode={\"widget\"}\n showBorders={true}\n rowAlternationEnabled={true}\n showRowLines={true}\n showColumnLines={true}\n remoteOperations={{ filtering: true }}\n onOptionChanged={onOptionChanged}\n ref={gridUnlockSalesOrderRef}\n onExporting={onExporting}\n >\n <Scrolling rowRenderingMode='virtual'></Scrolling>\n <Paging defaultPageSize={100} />\n <Pager\n visible={true}\n allowedPageSizes={allowedPageSizes}\n displayMode='compact'\n showPageSizeSelector={true}\n showInfo={true}\n showNavigationButtons={true} />\n <FilterRow visible={true} />\n <FilterPanel visible={true} />\n <FilterBuilderPopup position={filterBuilderPopupPosition} />\n\n <HeaderFilter visible={true} />\n\n <GroupPanel visible={true} />\n <SearchPanel visible={true} />\n <ColumnChooser\n enabled={true}\n mode='select'\n >\n <ColumnChooserSearch\n enabled={true}\n />\n\n <ColumnChooserSelection\n allowSelectAll={true}\n selectByClick={true}\n recursive={true}\n />\n </ColumnChooser>\n <Grouping autoExpandAll={autoExpandAll} />\n <StateStoring enabled={true} type=\"localStorage\" storageKey=\"gridUnlockSalesOrder\" />\n <Export enabled={true} />\n\n <Selection\n mode=\"multiple\"\n selectAllMode={'page'}\n showCheckBoxesMode={'always'}\n />\n\n <Column caption=\"Estatus General\" alignment=\"center\" width={130} cellRender={iconoEstatusGeneral} />\n <Column caption=\"Situación Pedido\" alignment=\"center\" width={130} cellRender={iconoSituacion} />\n <Column caption=\"Programación\" alignment=\"center\" width={110} cellRender={iconoProgramacion} />\n <Column caption=\"Entrega\" alignment=\"center\" width={100} cellRender={iconoEntrega} />\n <Column caption=\"Pago\" alignment=\"center\" width={100} cellRender={iconoPago} />\n <Column caption=\"Factura\" alignment=\"center\" width={100} cellRender={iconoFactura} />\n <Column caption=\"M. P. R.\" alignment=\"center\" width={100} cellRender={iconoMPR} />\n\n <Column dataField=\"MovID\" dataType=\"string\" width={110} caption=\"Folio\" />\n <Column dataField=\"FechaEmision\" caption=\"Fecha Emisión\" dataType=\"date\" width={130} />\n <Column dataField=\"Estatus\" dataType=\"string\" width={120} visible={false} />\n <Column dataField=\"NombreCliente\" caption=\"Nombre Cliente\" dataType=\"string\" width={250} />\n <Column dataField=\"Plaza\" caption=\"Plaza\" dataType=\"string\" width={150} visible={false} />\n\n <Column dataField=\"ID\" dataType=\"number\" width={150} visible={false} />\n <Column dataField=\"Mov\" dataType=\"string\" width={190} caption=\"Tipo Movimiento\" visible={false} />\n <Column dataField=\"Movimiento\" dataType=\"string\" width={190} visible={false} />\n <Column dataField=\"Situacion\" dataType=\"string\" width={190} caption=\"Situación\" visible={false} />\n <Column dataField=\"Importe\" caption=\"Importe\" dataType=\"number\" width={150} visible={false}>\n <Format\n type=\"currency\"\n precision={2}\n />\n </Column>\n <Column dataField=\"Impuestos\" caption=\"Impuestos\" dataType=\"number\" width={150} visible={false}>\n <Format\n type=\"currency\"\n precision={2}\n />\n </Column>\n <Column dataField=\"ImporteTotal\" caption=\"Importe Total\" dataType=\"number\" width={150}>\n <Format\n type=\"currency\"\n precision={2}\n />\n </Column>\n <Column dataField=\"SCSituacionFact\" dataType=\"string\" width={190} caption=\"Situación Facturación\" visible={false} />\n <Column dataField=\"SCTipoPedido\" dataType=\"string\" width={190} caption=\"Tipo de Pedido\" visible={false} />\n <Column dataField=\"SCSituacionMPR\" dataType=\"string\" width={190} caption=\"Situación MPR\" visible={false} />\n <Column dataField=\"folioeCommerce\" dataType=\"string\" width={190} caption=\"Folio eCommerce\" visible={false} />\n <Column dataField=\"importeTotaleCommerce\" dataType=\"string\" width={190} caption=\"Importe Total eCommerce\" visible={false}>\n <Format\n type=\"currency\"\n precision={2}\n />\n </Column>\n <Column dataField=\"eCommerceFechaCreacion\" dataType=\"datetime\" width={190} caption=\"eCommerce Fecha Creación\" visible={false} />\n <Column dataField=\"PlazaEntrega\" dataType=\"string\" width={250} caption=\"Plaza Entrega\" visible={false} />\n <Column dataField=\"Almacen\" dataType=\"string\" width={190} caption=\"Almacén\" visible={false} />\n <Column dataField=\"NombreAlmacen\" dataType=\"string\" width={190} caption=\"Nombre Almacén\" visible={false} />\n <Column dataField=\"Agente\" dataType=\"string\" width={190} visible={false} />\n <Column dataField=\"NombreAgente\" dataType=\"string\" width={190} visible={false} />\n <Column dataField=\"Cliente\" dataType=\"string\" width={190} visible={false} />\n <Column dataField=\"Sucursal\" dataType=\"number\" width={150} visible={false} />\n <Column dataField=\"NombreSucursal\" dataType=\"string\" width={190} visible={false} />\n <Column dataField=\"Usuario\" dataType=\"string\" width={190} visible={false} />\n <Column dataField=\"NombreUsuario\" dataType=\"string\" width={190} visible={false} />\n <Column dataField=\"Origen\" dataType=\"string\" width={190} visible={false} />\n <Column dataField=\"EstatusProg\" width={190} dataType=\"string\" caption=\"Estatus Programación\" visible={false} />\n <Column dataField=\"TipoProgramacion\" width={190} dataType=\"string\" caption=\"Tipo Programación\" visible={false} />\n <Column dataField=\"Observaciones\" width={190} dataType=\"string\" caption=\"Observaciones\" visible={false} />\n <Column dataField=\"PorcEntrega\" caption=\"% Entrega\" dataType=\"number\" width={150} visible={false} >\n <Format\n type=\"percent\"\n />\n </Column>\n <Column dataField=\"Anticipos\" dataType=\"number\" width={150} visible={false}>\n <Format\n type=\"currency\"\n precision={2}\n />\n </Column>\n <Column dataField=\"MPR\" dataType=\"string\" width={190} caption=\"MPR\" visible={false} />\n\n <Column dataField=\"PedidoCerrado\" dataType=\"boolean\" width={190} caption=\"Pedido Cerrado\" visible={true} />\n <Column dataField=\"CerradoFecha\" dataType=\"datetime\" width={190} caption=\"Fecha Cierre\" visible={true} />\n <Column dataField=\"CerradoUsuarioWeb\" dataType=\"string\" width={190} caption=\"Cerrado Por\" visible={true} />\n\n <Summary>\n <GroupItem\n column=\"Importe\"\n summaryType=\"sum\"\n valueFormat=\"$,##0.##\"\n displayFormat=\"Importe {0}\"\n showInGroupFooter={false}>\n </GroupItem>\n <GroupItem\n column=\"Impuestos\"\n summaryType=\"sum\"\n valueFormat=\"$,##0.##\"\n displayFormat=\"Impuestos {0}\"\n showInGroupFooter={false}>\n </GroupItem>\n <GroupItem\n column=\"ImporteTotal\"\n summaryType=\"sum\"\n valueFormat=\"$,##0.##\"\n displayFormat=\"Importe Total {0}\"\n showInGroupFooter={false}>\n </GroupItem>\n <TotalItem\n column=\"Importe\"\n summaryType=\"sum\"\n valueFormat=\"$,##0.##\"\n displayFormat=\"Importe {0}\"\n showInColumn=\"Importe\">\n </TotalItem>\n <TotalItem\n column=\"Impuestos\"\n summaryType=\"sum\"\n valueFormat=\"$,##0.##\"\n displayFormat=\"Impuestos {0}\"\n showInColumn=\"Impuestos\">\n </TotalItem>\n <TotalItem\n column=\"ImporteTotal\"\n summaryType=\"sum\"\n valueFormat=\"$,##0.##\"\n displayFormat=\"Importe Total {0}\"\n showInColumn=\"ImporteTotal\">\n </TotalItem>\n </Summary>\n\n </DataGrid>\n </div>\n </div>\n </div>\n );\n}","import React, { useState, useEffect, useRef, useMemo } from 'react';\n\n// LoadPanel\nimport { LoadPanel } from 'devextreme-react/load-panel';\n\n// Toast\nimport { Toast } from 'devextreme-react/toast';\n\n//Form\nimport Form, { GroupItem, Label, TabbedItem, TabPanelOptions, Tab, EmptyItem } from 'devextreme-react/form';\n\nimport { Auth, API, Storage, label } from 'aws-amplify';\n\n// Ruteador\nimport { Route, Link, useHistory } from \"react-router-dom\";\n\n// Grid\nimport DataGrid, {\n Column, FilterRow, HeaderFilter, FilterPanel, FilterBuilderPopup,\n GroupPanel, Grouping, SearchPanel, Sorting, Editing, Lookup, Toolbar, Item, RequiredRule,\n Scrolling, Pager, Paging, Summary, TotalItem, StateStoring, ColumnChooser, Format, Selection,\n Export, ColumnChooserSearch, ColumnChooserSelection\n} from 'devextreme-react/data-grid';\n\n//CheckBox\nimport CheckBox from 'devextreme-react/check-box';\n\n// Iconos\nimport { FontAwesomeIcon } from \"@fortawesome/react-fontawesome\";\nimport { faArrowsSpin, faGlasses } from \"@fortawesome/pro-solid-svg-icons\";\nimport { faPencilAlt } from \"@fortawesome/pro-solid-svg-icons\";\nimport { faArrowRotateLeft } from \"@fortawesome/pro-solid-svg-icons\";\nimport { faList } from \"@fortawesome/pro-duotone-svg-icons\";\nimport { faFilePdf } from \"@fortawesome/pro-solid-svg-icons\";\nimport { faArrowsRotate } from \"@fortawesome/pro-solid-svg-icons\";\nimport { faSave } from \"@fortawesome/pro-solid-svg-icons\";\nimport { faScannerTouchscreen } from \"@fortawesome/pro-solid-svg-icons\";\nimport { faBan } from \"@fortawesome/pro-solid-svg-icons\"\nimport { faWindowClose } from \"@fortawesome/pro-solid-svg-icons\";\nimport { faRotate } from \"@fortawesome/pro-solid-svg-icons\";\nimport { faArrowUp } from \"@fortawesome/pro-solid-svg-icons\";\nimport { faArrowDown } from \"@fortawesome/pro-solid-svg-icons\";\nimport { faEquals } from \"@fortawesome/pro-solid-svg-icons\";\nimport { faThumbsUp } from \"@fortawesome/pro-solid-svg-icons\";\nimport { faPlay } from \"@fortawesome/pro-solid-svg-icons\";\n\nimport 'devextreme/data/odata/store';\nimport CustomStore from 'devextreme/data/custom_store';\n\nimport '../ListStyle.css';\n\n//confirm\nimport { confirm } from 'devextreme/ui/dialog';\n\n//FileUploader\nimport FileUploader from 'devextreme-react/file-uploader';\n\n//FileManager\nimport FileManager, { Permissions } from 'devextreme-react/file-manager';\n\nimport dxDateBox from \"devextreme/ui/date_box\";\n\nimport dxNumberBox from \"devextreme/ui/number_box\";\n\nimport TransactionStatus from \"../TransactionStatus/TransactionStatus.js\";\n\nimport Lambda from 'aws-sdk/clients/lambda';\n\nimport { Workbook } from 'exceljs';\nimport { saveAs } from 'file-saver';\nimport { exportDataGrid } from 'devextreme/excel_exporter'\n\ndxDateBox.defaultOptions({\n options: {\n dateSerializationFormat: \"yyyy-MM-dd\"\n }\n});\n\ndxNumberBox.defaultOptions({\n options: {\n step: 0\n }\n});\n\nfunction isNotEmpty(value) {\n return value !== undefined && value !== null && value !== '';\n}\n\nexport default function ItemCountWMS(props) {\n const history = useHistory();\n\n const [isDetail, setIsDetail] = useState(false);\n const [id, setId] = useState();\n const [permissionLevel, setPermissionLevel] = useState(props.nivel);\n const [approveItemCountWMS, setApproveItemCountWMS] = useState(props.approveItemCountWMS);\n const [itemCountWMSPayload, setItemCountWMSPayload] = useState({\n header: {},\n detail: [],\n movEstatusLog: []\n });\n\n const [usuarioPick, setUsuarioPick] = useState([]);\n\n const [autoExpandAll, setAutoExpandAll] = useState(true);\n\n const [visibleLoadPanel, setVisibleLoadPanel] = useState(false);\n\n const [visibleToast, setVisibleToast] = useState(false);\n const [messageToast, setMessageToast] = useState('');\n const [typeToast, setTypeToast] = useState('success');\n\n const [activateUpdateForm, setActivateUpdateForm] = useState(false);\n const [activateUpdateGrid, setActivateUpdateGrid] = useState(false);\n const [activateSaveButton, setActivateSaveButton] = useState(false);\n const [activateConfirmButton, setActivateConfirmButton] = useState(false);\n const [activateApproveButton, setActivateApproveButton] = useState(false);\n const [activatePDFButton, setActivatePDFButton] = useState(false);\n const [activateAttachments, setActivateAttachments] = useState(false);\n const [activateCancelButton, setActivateCancelButton] = useState(false);\n const [activateEnableItemCount, setActivateEnableItemCount] = useState(false);\n\n //Ref para el form\n const [formDatosGeneralesRef, setFormDatosGeneralesRef] = useState(React.createRef());\n\n //Ref para el grid Items\n const [gridItemsRef, setGridItemsRef] = useState(React.createRef());\n\n const [attachments, setAttachments] = useState([]);\n\n const filterBuilderPopupPosition = {\n of: window,\n at: 'top',\n my: 'top',\n offset: { y: 10 },\n };\n\n const allowedPageSizes = [5, 10, 15, 20, 'all'];\n\n const exportFormats = ['xlsx'];\n\n function getOrderDay(rowData) {\n return (new Date(rowData.OrderDate)).getDay();\n }\n\n const filterBuilder = {\n customOperations: [{\n name: 'weekends',\n caption: 'Weekends',\n dataTypes: ['date'],\n icon: 'check',\n hasValue: false,\n calculateFilterExpression: () => [[getOrderDay, '=', 0], 'or', [getOrderDay, '=', 6]],\n }],\n allowHierarchicalFields: true,\n };\n\n const filterValue = [['Estatus', '=', 'Pendiente']];\n\n //Ref para el grid Tablero de Control\n const [gridTableroRef, setGridTableroRef] = useState(React.createRef());\n\n function onAutoExpandAllChanged() {\n setAutoExpandAll(!autoExpandAll)\n };\n\n async function getItemCountWMSRecords(sqlFilter) {\n try {\n let apiName = 'AdminSC';\n let path = '/procesaconteociclico';\n\n let myInit = {\n headers: {\n 'Content-Type': 'application/json',\n Authorization: `${(await Auth.currentSession()).getAccessToken().getJwtToken()}`\n },\n queryStringParameters: {\n action: 'list',\n sqlFilter: sqlFilter,\n salesAccess: props.salesAccess,\n sucursal: props.sucursal,\n usuario: props.usuario,\n username: JSON.parse(JSON.stringify(await Auth.currentAuthenticatedUser())).username\n }\n }\n\n var ItemCountWMSGet = await API.get(apiName, path, myInit);\n }\n catch (e) {\n if (e === 'No current user') {\n history.push('/');\n\n window.location.reload();\n }\n }\n\n return ItemCountWMSGet;\n }\n\n const getUsuarioConteoCiclico = React.useCallback(async (sqlFilter) => {\n let apiName = 'AdminSC';\n let path = '/getcatalogo';\n\n let myInit = {\n headers: {\n 'Content-Type': 'application/json',\n Authorization: `${(await Auth.currentSession()).getAccessToken().getJwtToken()}`\n },\n queryStringParameters: {\n type: 'UsuarioConteoCiclico',\n username: JSON.parse(JSON.stringify(await Auth.currentAuthenticatedUser())).username,\n sqlFilter: sqlFilter\n }\n }\n\n var usuarioPickGet = await API.get(apiName, path, myInit);\n\n setUsuarioPick(usuarioPickGet);\n }, []);\n\n const store = new CustomStore({\n key: 'ID',\n load(loadOptions) {\n let sqlFilter = '(';\n [\n 'filter'\n ].forEach((i) => {\n if (i in loadOptions && isNotEmpty(loadOptions[i])) {\n var filters = loadOptions[i];\n\n var filtersLength = filters.length;\n\n for (var i = 0; i <= filtersLength; i++) {\n var singleFilter = filters[i];\n var singleFilterType = typeof singleFilter;\n var singleFilterIsArray = Array.isArray(singleFilter);\n var singleFilterIsDate = singleFilter instanceof Date;\n\n if (singleFilter === 'NULL') {\n singleFilter = '0';\n }\n\n if (singleFilterType.toString() === 'object' && singleFilterIsArray) {\n sqlFilter += '(';\n\n var subFiltersLength = singleFilter.length;\n\n for (var i2 = 0; i2 <= subFiltersLength; i2++) {\n var singleSubFilter = singleFilter[i2];\n var singleSubFilterType = typeof singleSubFilter;\n var singleSubFilterIsArray = Array.isArray(singleSubFilter);\n var singleSubFilterIsDate = singleSubFilter instanceof Date\n\n if (singleSubFilter === 'NULL') {\n singleSubFilter = '0';\n }\n\n if (singleSubFilterType.toString() === 'object' && singleSubFilterIsArray) {\n sqlFilter += '(';\n\n var subSubFiltersLength = singleSubFilter.length;\n\n for (var i3 = 0; i3 <= subSubFiltersLength; i3++) {\n var singleSubSubFilter = singleSubFilter[i3];\n var singleSubSubFilterType = typeof singleSubSubFilter;\n var singleSubSubFilterIsArray = Array.isArray(singleSubSubFilter);\n var singleSubSubFilterIsDate = singleSubSubFilter instanceof Date\n\n if (singleSubSubFilter === 'NULL') {\n singleSubSubFilter = '0';\n }\n\n if (singleSubSubFilterType.toString() === 'object' && singleSubSubFilterIsArray) {\n sqlFilter += '(';\n\n var subSubSubFiltersLength = singleSubSubFilter.length;\n\n for (var i4 = 0; i4 <= subSubSubFiltersLength; i4++) {\n var singleSubSubSubFilter = singleSubSubFilter[i4];\n var singleSubSubSubFilterType = typeof singleSubSubSubFilter;\n var singleSubSubSubFilterIsArray = Array.isArray(singleSubSubSubFilter);\n var singleSubSubSubFilterIsDate = singleSubSubSubFilter instanceof Date\n\n if (singleSubSubSubFilter === 'NULL') {\n singleSubSubSubFilter = '0';\n }\n\n if (singleSubSubSubFilterType.toString() === 'object' && singleSubSubSubFilterIsArray) {\n sqlFilter += '(';\n\n var subSubSubSubFiltersLength = singleSubSubSubFilter.length;\n\n for (var i5 = 0; i5 <= subSubSubSubFiltersLength; i5++) {\n var singleSubSubSubSubFilter = singleSubSubSubFilter[i5];\n var singleSubSubSubSubFilterType = typeof singleSubSubSubSubFilter;\n var singleSubSubSubSubFilterIsArray = Array.isArray(singleSubSubSubSubFilter);\n var singleSubSubSubSubFilterIsDate = singleSubSubSubSubFilter instanceof Date\n\n if (singleSubSubSubSubFilter === 'NULL') {\n singleSubSubSubSubFilter = '0';\n }\n\n if (singleSubSubSubSubFilterType.toString() === 'string') {\n if (singleSubSubSubSubFilter === 'contains') {\n filters[i][i2][i3][i4][i5] = 'LIKE';\n singleSubSubSubSubFilter = 'LIKE';\n\n filters[i][i2][i3][i4][i5 + 1] = '\\'%' + filters[i][i2][i3][i4][i5 + 1] + '%\\'';\n }\n else if (singleSubSubSubSubFilter === 'notcontains') {\n filters[i][i2][i3][i4][i5] = 'NOT LIKE';\n singleSubSubSubSubFilter = 'NOT LIKE';\n\n filters[i][i2][i3][i4][i5 + 1] = '\\'%' + filters[i][i2][i3][i4][i5 + 1] + '%\\'';\n }\n else if (singleSubSubSubSubFilter === 'startswith') {\n filters[i][i2][i3][i4][i5] = 'LIKE';\n singleSubSubSubSubFilter = 'LIKE';\n\n filters[i][i2][i3][i4][i5 + 1] = '\\'' + filters[i][i2][i3][i4][i5 + 1] + '%\\'';\n }\n else if (singleSubSubSubSubFilter === 'endswith') {\n filters[i][i2][i3][i4][i5] = 'LIKE';\n singleSubSubSubSubFilter = 'LIKE';\n\n filters[i][i2][i3][i4][i5 + 1] = '\\'%' + filters[i][i2][i3][i4][i5 + 1] + '\\'';\n }\n else if (singleSubSubSubSubFilter === '=' || singleSubSubSubSubFilter === '<>' || singleSubSubSubSubFilter === '>' || singleSubSubSubSubFilter === '>=' || singleSubSubSubSubFilter === '<' || singleSubSubSubSubFilter === '<=') {\n if (!filters[i][i2][i3][i4][i5 + 1])\n filters[i][i2][i3][i4][i5 + 1] = 'NULL';\n else if (typeof filters[i][i2][i3][i4][i5 + 1] === 'string') {\n filters[i][i2][i3][i4][i5 + 1] = '\\'' + filters[i][i2][i3][i4][i5 + 1] + '\\'';\n }\n }\n else if (singleSubSubSubSubFilter === '!') {\n filters[i][i2][i3][i4][i5] = 'NOT';\n singleSubSubSubSubFilter = 'NOT';\n }\n\n sqlFilter += ' ' + singleSubSubSubSubFilter + ' ';\n }\n else if (singleSubSubSubSubFilterType.toString() === 'object' && singleSubSubSubSubFilterIsDate) {\n sqlFilter += ' \\'' + singleSubSubSubSubFilter.toISOString().split('T')[0] + '\\' ';\n }\n else if (singleSubSubSubSubFilterType.toString() === 'number') {\n sqlFilter += ' ' + singleSubSubSubSubFilter.toString() + ' ';\n }\n else if (singleSubSubSubSubFilterType.toString() === 'boolean') {\n if (singleSubSubSubSubFilter.toString() === 'true')\n sqlFilter += '1 ';\n else if (singleSubSubSubSubFilter.toString() === 'false' || singleSubSubSubSubFilter === null || singleSubSubSubSubFilter === undefined)\n sqlFilter += '0 ';\n }\n }\n }\n else if (singleSubSubSubFilterType.toString() === 'string') {\n if (singleSubSubSubFilter === 'contains') {\n filters[i][i2][i3][i4] = 'LIKE';\n singleSubSubSubFilter = 'LIKE';\n\n filters[i][i2][i3][i4 + 1] = '\\'%' + filters[i][i2][i3][i4 + 1] + '%\\'';\n }\n else if (singleSubSubSubFilter === 'notcontains') {\n filters[i][i2][i3][i4] = 'NOT LIKE';\n singleSubSubSubFilter = 'NOT LIKE';\n\n filters[i][i2][i3][i4 + 1] = '\\'%' + filters[i][i2][i3][i4 + 1] + '%\\'';\n }\n else if (singleSubSubSubFilter === 'startswith') {\n filters[i][i2][i3][i4] = 'LIKE';\n singleSubSubSubFilter = 'LIKE';\n\n filters[i][i2][i3][i4 + 1] = '\\'' + filters[i][i2][i3][i4 + 1] + '%\\'';\n }\n else if (singleSubSubSubFilter === 'endswith') {\n filters[i][i2][i3][i4] = 'LIKE';\n singleSubSubSubFilter = 'LIKE';\n\n filters[i][i2][i3][i4 + 1] = '\\'%' + filters[i][i2][i3][i4 + 1] + '\\'';\n }\n else if (singleSubSubSubFilter === '=' || singleSubSubSubFilter === '<>' || singleSubSubSubFilter === '>' || singleSubSubSubFilter === '>=' || singleSubSubSubFilter === '<' || singleSubSubSubFilter === '<=') {\n if (!filters[i][i2][i3][i4 + 1])\n filters[i][i2][i3][i4 + 1] = 'NULL';\n else if (typeof filters[i][i2][i3][i4 + 1] === 'string') {\n filters[i][i2][i3][i4 + 1] = '\\'' + filters[i][i2][i3][i4 + 1] + '\\'';\n }\n }\n else if (singleSubSubSubFilter === '!') {\n filters[i][i2][i3][i4] = 'NOT';\n singleSubSubSubFilter = 'NOT';\n }\n\n sqlFilter += ' ' + singleSubSubSubFilter + ' ';\n }\n else if (singleSubSubSubFilterType.toString() === 'object' && singleSubSubSubFilterIsDate) {\n sqlFilter += ' \\'' + singleSubSubSubFilter.toISOString().split('T')[0] + '\\' ';\n }\n else if (singleSubSubSubFilterType.toString() === 'number') {\n sqlFilter += ' ' + singleSubSubSubFilter.toString() + ' ';\n }\n else if (singleSubSubSubFilterType.toString() === 'boolean') {\n if (singleSubSubSubFilter.toString() === 'true')\n sqlFilter += '1 ';\n else if (singleSubSubSubFilter.toString() === 'false' || singleSubSubSubFilter === null || singleSubSubSubFilter === undefined)\n sqlFilter += '0 ';\n }\n }\n\n sqlFilter += ')';\n }\n else if (singleSubSubFilterType.toString() === 'string') {\n if (singleSubSubFilter === 'contains') {\n filters[i][i2][i3] = 'LIKE';\n singleSubSubFilter = 'LIKE';\n\n filters[i][i2][i3 + 1] = '\\'%' + filters[i][i2][i3 + 1] + '%\\'';\n }\n else if (singleSubSubFilter === 'notcontains') {\n filters[i][i2][i3] = 'NOT LIKE';\n singleSubSubFilter = 'NOT LIKE';\n\n filters[i][i2][i3 + 1] = '\\'%' + filters[i][i2][i3 + 1] + '%\\'';\n }\n else if (singleSubSubFilter === 'startswith') {\n filters[i][i2][i3] = 'LIKE';\n singleSubSubFilter = 'LIKE';\n\n filters[i][i2][i3 + 1] = '\\'' + filters[i][i2][i3 + 1] + '%\\'';\n }\n else if (singleSubSubFilter === 'endswith') {\n filters[i][i2][i3] = 'LIKE';\n singleSubSubFilter = 'LIKE';\n\n filters[i][i2][i3 + 1] = '\\'%' + filters[i][i2][i3 + 1] + '\\'';\n }\n else if (singleSubSubFilter === '=' || singleSubSubFilter === '<>' || singleSubSubFilter === '>' || singleSubSubFilter === '>=' || singleSubSubFilter === '<' || singleSubSubFilter === '<=') {\n if (!filters[i][i2][i3 + 1])\n filters[i][i2][i3 + 1] = 'NULL';\n else if (typeof filters[i][i2][i3 + 1] === 'string') {\n filters[i][i2][i3 + 1] = '\\'' + filters[i][i2][i3 + 1] + '\\'';\n }\n }\n else if (singleSubSubFilter === '!') {\n filters[i][i2][i3] = 'NOT';\n singleSubSubFilter = 'NOT';\n }\n sqlFilter += ' ' + singleSubSubFilter + ' ';\n }\n else if (singleSubSubFilterType.toString() === 'object' && singleSubSubFilterIsDate) {\n sqlFilter += ' \\'' + singleSubSubFilter.toISOString().split('T')[0] + '\\' ';\n }\n else if (singleSubSubFilterType.toString() === 'number') {\n sqlFilter += ' ' + singleSubSubFilter.toString() + ' ';\n }\n else if (singleSubSubFilterType.toString() === 'boolean') {\n if (singleSubSubFilter.toString() === 'true')\n sqlFilter += '1 ';\n else if (singleSubSubFilter.toString() === 'false' || singleSubSubFilter === null || singleSubSubFilter === undefined)\n sqlFilter += '0 ';\n }\n }\n\n sqlFilter += ')';\n }\n else if (singleSubFilterType.toString() === 'string') {\n if (singleSubFilter === 'contains') {\n filters[i][i2] = 'LIKE';\n singleSubFilter = 'LIKE';\n\n filters[i][i2 + 1] = '\\'%' + filters[i][i2 + 1] + '%\\'';\n }\n else if (singleSubFilter === 'notcontains') {\n filters[i][i2] = 'NOT LIKE';\n singleSubFilter = 'NOT LIKE';\n\n filters[i][i2 + 1] = '\\'%' + filters[i][i2 + 1] + '%\\'';\n }\n else if (singleSubFilter === 'startswith') {\n filters[i][i2] = 'LIKE';\n singleSubFilter = 'LIKE';\n\n filters[i][i2 + 1] = '\\'' + filters[i][i2 + 1] + '%\\'';\n }\n else if (singleSubFilter === 'endswith') {\n filters[i][i2] = 'LIKE';\n singleSubFilter = 'LIKE';\n\n filters[i][i2 + 1] = '\\'%' + filters[i][i2 + 1] + '\\'';\n }\n else if (singleSubFilter === '=' || singleSubFilter === '<>' || singleSubFilter === '>' || singleSubFilter === '>=' || singleSubFilter === '<' || singleSubFilter === '<=') {\n if (!filters[i][i2 + 1])\n filters[i][i2 + 1] = 'NULL';\n else if (typeof filters[i][i2 + 1] === 'string') {\n filters[i][i2 + 1] = '\\'' + filters[i][i2 + 1] + '\\'';\n }\n }\n else if (singleSubFilter === '!') {\n filters[i][i2] = 'NOT';\n singleSubFilter = 'NOT';\n }\n sqlFilter += ' ' + singleSubFilter + ' ';\n }\n else if (singleSubFilterType.toString() === 'object' && singleSubFilterIsDate) {\n sqlFilter += ' \\'' + singleSubFilter.toISOString().split('T')[0] + '\\' ';\n }\n else if (singleSubFilterType.toString() === 'number') {\n sqlFilter += ' ' + singleSubFilter.toString() + ' ';\n }\n else if (singleSubFilterType.toString() === 'boolean') {\n if (singleSubFilter.toString() === 'true')\n sqlFilter += '1 ';\n else if (singleSubFilter.toString() === 'false' || singleSubFilter === null || singleSubFilter === undefined)\n sqlFilter += '0 ';\n }\n }\n\n sqlFilter += ')';\n }\n else if (singleFilterType.toString() === 'string') {\n if (singleFilter === 'contains') {\n filters[i] = 'LIKE';\n singleFilter = 'LIKE';\n\n filters[i + 1] = '\\'%' + filters[i + 1] + '%\\'';\n }\n else if (singleFilter === 'notcontains') {\n filters[i] = 'NOT LIKE';\n singleFilter = 'NOT LIKE';\n\n filters[i + 1] = '\\'%' + filters[i + 1] + '%\\'';\n }\n else if (singleFilter === 'startswith') {\n filters[i] = 'LIKE';\n singleFilter = 'LIKE';\n\n filters[i + 1] = '\\'' + filters[i + 1] + '%\\'';\n }\n else if (singleFilter === 'endswith') {\n filters[i] = 'LIKE';\n singleFilter = 'LIKE';\n\n filters[i + 1] = '\\'%' + filters[i + 1] + '\\'';\n }\n else if (singleFilter === '=' || singleFilter === '<>' || singleFilter === '>' || singleFilter === '>=' || singleFilter === '<' || singleFilter === '<=') {\n if (!filters[i + 1])\n filters[i + 1] = 'NULL';\n else if (typeof filters[i + 1] === 'string') {\n filters[i + 1] = '\\'' + filters[i + 1] + '\\'';\n }\n }\n else if (singleFilter === '!') {\n filters[i] = 'NOT';\n singleFilter = 'NOT';\n }\n sqlFilter += ' ' + singleFilter + ' ';\n }\n else if (singleFilterType.toString() === 'object' && singleFilterIsDate) {\n sqlFilter += ' \\'' + singleFilter.toISOString().split('T')[0] + '\\' ';\n }\n else if (singleFilterType.toString() === 'number') {\n sqlFilter += ' ' + singleFilter.toString() + ' ';\n }\n else if (singleFilterType.toString() === 'boolean') {\n if (singleFilter.toString() === 'true')\n sqlFilter += '1 ';\n else if (singleFilter.toString() === 'false' || singleFilter === null || singleFilter === undefined)\n sqlFilter += '0 ';\n }\n }\n\n sqlFilter += ')';\n }\n });\n\n async function getRecords() {\n if (sqlFilter === '(')\n sqlFilter = '';\n\n var records = await getItemCountWMSRecords(sqlFilter);\n return {\n data: records,\n totalCount: records.length\n };\n }\n\n return getRecords()\n .then(function (result) {\n return result;\n })\n .catch(() => { throw new Error('Data Loading Error'); });\n },\n });\n\n var fechaEmisionEditorOptions = useMemo(() => {\n return {\n width: '100%',\n readOnly: true\n };\n }, []);\n\n var nombreAlmacenEditorOptions = useMemo(() => {\n return {\n width: '100%',\n readOnly: true\n };\n }, []);\n\n var movimientoEditorOptions = useMemo(() => {\n return {\n width: '100%',\n readOnly: true\n };\n }, []);\n\n var usuarioPickAsignadoEditorOptions = useMemo(() => {\n return {\n showClearButton: true\n };\n }, []);\n\n var autorizacionEditorOptions = useMemo(() => {\n return {\n width: '100%',\n readOnly: true\n };\n }, []);\n\n async function uploadChunk(file, uploadInfo) {\n try {\n var responseS3 = await Storage.put(\"/scwms/\" + id + \"/\" + file.name, uploadInfo.chunkBlob, {\n contentType: file.type,\n ACL: 'public-read'\n });\n\n //Obtenemos el nombre del bucket\n let bucketName = Storage._config.AWSS3.bucket;\n\n\n let apiName = 'AdminSC';\n let path = '/uploadattachment';\n\n let myInit = {\n headers: {\n 'Content-Type': 'application/json',\n Authorization: `${(await Auth.currentSession()).getAccessToken().getJwtToken()}`\n },\n body: {\n action: 'register',\n bucketName: bucketName,\n type: 'scwms',\n id: id,\n Key: \"/scwms/\" + id + \"/\" + file.name,\n fileName: file.name,\n username: JSON.parse(JSON.stringify(await Auth.currentAuthenticatedUser())).username\n }\n }\n\n var attachmentsResult = await API.post(apiName, path, myInit);\n\n //Obtenemos los attachments\n var attachmentsGet = await Storage.list(\"/scwms/\" + id);\n var attachmentsAux = [];\n\n for (var attachmentsGetIndex in attachmentsGet) {\n var singleAttachmentsGet = attachmentsGet[attachmentsGetIndex];\n\n var singleAttachment = {\n name: singleAttachmentsGet.key.split('/').pop(),\n isDirectory: false,\n size: singleAttachmentsGet.size,\n };\n\n attachmentsAux.push(singleAttachment);\n }\n\n setAttachments(attachmentsAux);\n }\n catch (err) {\n console.log(\"Error uploading file:\", err);\n }\n }\n\n async function onAttachmentDeleting(e) {\n var fileName = e.item.key;\n\n //Primero borramos el archivo de S3\n var attachmentsDelete = await Storage.remove(\"/scwms/\" + id + \"/\" + fileName);\n\n //Despues borramos el attachment en Intelisis\n let bucketName = Storage._config.AWSS3.bucket;\n\n let apiName = 'AdminSC';\n let path = '/uploadattachment';\n\n let myInit = {\n headers: {\n 'Content-Type': 'application/json',\n Authorization: `${(await Auth.currentSession()).getAccessToken().getJwtToken()}`\n },\n body: {\n action: 'delete',\n bucketName: bucketName,\n type: 'scwms',\n id: id,\n Key: \"/scwms/\" + id + \"/\" + fileName,\n fileName: fileName,\n username: JSON.parse(JSON.stringify(await Auth.currentAuthenticatedUser())).username\n }\n }\n\n var attachmentsResult = await API.post(apiName, path, myInit);\n\n //Finalmente sincronizamos el state\n var attachmentsGet = await Storage.list(\"/scwms/\" + id);\n var attachmentsAux = [];\n\n for (var attachmentsGetIndex in attachmentsGet) {\n var singleAttachmentsGet = attachmentsGet[attachmentsGetIndex];\n\n var singleAttachment = {\n name: singleAttachmentsGet.key.split('/').pop(),\n isDirectory: false,\n size: singleAttachmentsGet.size,\n };\n\n attachmentsAux.push(singleAttachment);\n }\n\n setAttachments(attachmentsAux);\n };\n\n function downloadBlob(blob, filename) {\n const url = URL.createObjectURL(blob);\n const a = document.createElement('a');\n a.href = url;\n a.download = filename || 'download';\n const clickHandler = () => {\n setTimeout(() => {\n URL.revokeObjectURL(url);\n a.removeEventListener('click', clickHandler);\n }, 150);\n };\n\n a.addEventListener('click', clickHandler, false);\n\n a.click();\n\n return a;\n };\n\n async function onItemDownloading(e) {\n e.cancel = true;\n\n const downloadFileResponse = await Storage.get(\"/scwms/\" + id + \"/\" + e.item.name, { download: true });\n\n downloadBlob(downloadFileResponse.Body, e.item.name);\n };\n\n function openBlob(blob, filename) {\n const url = URL.createObjectURL(blob);\n\n window.open(url, \"_blank\");\n };\n\n async function onAttachmentOpen(e) {\n const downloadFileResponse = await Storage.get(\"/scwms/\" + id + \"/\" + e.file.name, { download: true });\n\n openBlob(downloadFileResponse.Body, e.file.name);\n };\n\n const getitemCountWMSPayload = React.useCallback(async (ID) => {\n try {\n let apiName = 'AdminSC';\n let path = '/procesaconteociclico';\n\n let myInit = {\n headers: {\n 'Content-Type': 'application/json',\n Authorization: `${(await Auth.currentSession()).getAccessToken().getJwtToken()}`\n },\n queryStringParameters: {\n ID: ID,\n action: 'payload',\n username: JSON.parse(JSON.stringify(await Auth.currentAuthenticatedUser())).username\n }\n }\n\n var payloadGet = await API.get(apiName, path, myInit);\n\n setItemCountWMSPayload(payloadGet);\n\n //Obtenemos los attachments\n var attachmentsGet = await Storage.list(\"/scwms/\" + ID);\n var attachmentsAux = [];\n\n for (var attachmentsGetIndex in attachmentsGet) {\n var singleAttachmentsGet = attachmentsGet[attachmentsGetIndex];\n\n var singleAttachment = {\n name: singleAttachmentsGet.key.split('/').pop(),\n isDirectory: false,\n size: singleAttachmentsGet.size,\n };\n\n attachmentsAux.push(singleAttachment);\n }\n\n setAttachments(attachmentsAux);\n }\n catch (e) {\n if (e === 'No current user') {\n history.push('/');\n\n window.location.reload();\n }\n }\n\n console.log('payloadGet', payloadGet);\n\n return payloadGet;\n }, [history]);\n\n function editItemCountWMS(data) {\n return (\n <Link to={`/ItemCountWMS/${data.data.ID}`}>\n <button class=\"bg-blue-500 hover:bg-blue-700 text-white py-1 px-3 rounded\" onClick={() => editButton(data.data.ID)}><FontAwesomeIcon icon={permissionLevel === 'Editar' ? faPencilAlt : faGlasses} /> {permissionLevel === 'Editar' ? 'Editar' : 'Ver'}</button>\n </Link>\n )\n }\n\n const editButton = React.useCallback(async (ID) => {\n try {\n if (!window.event.metaKey && !window.event.ctrlKey) {\n setVisibleLoadPanel(true);\n\n setIsDetail(true);\n setId(ID);\n\n var payload = await getitemCountWMSPayload(ID);\n\n if (permissionLevel === 'Editar') {\n if (payload.header.Estatus === 'Pendiente') {\n setActivateUpdateForm(true);\n setActivateUpdateGrid(true);\n setActivateSaveButton(true);\n setActivateConfirmButton(false);\n\n setActivatePDFButton(false);\n setActivateAttachments(true);\n setActivateCancelButton(true);\n\n if (!payload.header.ActivarSurtido) {\n setActivateEnableItemCount(true);\n }\n else {\n setActivateEnableItemCount(false);\n }\n }\n if (payload.header.Estatus === 'Por Autorizar') {\n setActivateUpdateForm(false);\n setActivateUpdateGrid(false);\n setActivateSaveButton(false);\n setActivateConfirmButton(false);\n setActivateApproveButton(approveItemCountWMS);\n setActivatePDFButton(false);\n setActivateAttachments(false);\n setActivateCancelButton(true);\n setActivateEnableItemCount(false);\n }\n if (payload.header.Estatus === 'Autorizado') {\n setActivateUpdateForm(false);\n setActivateUpdateGrid(false);\n setActivateSaveButton(false);\n setActivateConfirmButton(true);\n setActivateApproveButton(false);\n setActivatePDFButton(false);\n setActivateAttachments(false);\n setActivateCancelButton(true);\n setActivateEnableItemCount(false);\n }\n else if (payload.header.Estatus === 'Cancelado') {\n setActivateUpdateForm(false);\n setActivateUpdateGrid(false);\n setActivateSaveButton(false);\n setActivateConfirmButton(false);\n setActivateApproveButton(false);\n setActivatePDFButton(false);\n setActivateAttachments(false);\n setActivateCancelButton(false);\n setActivateEnableItemCount(false);\n }\n else if (payload.header.Estatus === 'Concluido') {\n setActivateUpdateForm(false);\n setActivateUpdateGrid(false);\n setActivateSaveButton(false);\n setActivateConfirmButton(false);\n setActivateApproveButton(false);\n setActivatePDFButton(false);\n setActivateAttachments(false);\n setActivateCancelButton(false);\n setActivateEnableItemCount(false);\n }\n }\n else if (permissionLevel === 'Ver') {\n setActivateUpdateForm(false);\n setActivateUpdateGrid(false);\n setActivateSaveButton(false);\n setActivateConfirmButton(false);\n setActivateApproveButton(false);\n setActivatePDFButton(false);\n setActivateAttachments(false);\n setActivateCancelButton(false);\n setActivateEnableItemCount(false);\n }\n\n setVisibleLoadPanel(false);\n }\n }\n catch (e) {\n setVisibleLoadPanel(false);\n }\n }, [getitemCountWMSPayload, permissionLevel, approveItemCountWMS]);\n\n async function cancelEditButton() {\n setIsDetail(false);\n };\n\n async function saveButton() {\n try {\n setVisibleLoadPanel(true);\n\n var ID = itemCountWMSPayload.header.ID;\n\n //Despues enviamos todo al backend\n let apiName = 'AdminSC';\n let path = '/procesaconteociclico';\n\n let myInit = {\n headers: {\n 'Content-Type': 'application/json',\n Authorization: `${(await Auth.currentSession()).getAccessToken().getJwtToken()}`\n },\n body: {\n ID: ID,\n payload: itemCountWMSPayload,\n action: 'saveChanges',\n username: JSON.parse(JSON.stringify(await Auth.currentAuthenticatedUser())).username,\n usuario: props.usuario,\n sucursal: props.sucursal,\n s3Bucket: Storage._config.AWSS3.bucket\n }\n }\n\n var payloadPost = await API.post(apiName, path, myInit);\n\n if (payloadPost.ok === 'true') {\n setVisibleToast(true);\n setMessageToast('Se actualizó el Conteo Cíclico con éxito');\n setTypeToast('success')\n }\n else if (payloadPost.ok === 'false') {\n setVisibleToast(true);\n setMessageToast(payloadPost.message);\n setTypeToast('error')\n }\n\n editButton(ID);\n\n setVisibleLoadPanel(false);\n }\n catch (e) {\n setVisibleLoadPanel(false);\n\n if (e === 'No current user') {\n history.push('/');\n\n window.location.reload();\n }\n }\n };\n\n async function enableCountButton(Renglon) {\n try {\n setVisibleLoadPanel(true);\n\n var ID = itemCountWMSPayload.header.ID;\n\n //Guardamos los cambios del grid\n if (gridItemsRef.current) {\n var gridItems = gridItemsRef.current.instance();\n\n gridItems.saveEditData();\n }\n\n //Despues enviamos todo al backend\n let apiName = 'AdminSC';\n let path = '/procesaconteociclico';\n\n let myInit = {\n headers: {\n 'Content-Type': 'application/json',\n Authorization: `${(await Auth.currentSession()).getAccessToken().getJwtToken()}`\n },\n body: {\n ID: ID,\n payload: itemCountWMSPayload,\n action: 'enableCount',\n username: JSON.parse(JSON.stringify(await Auth.currentAuthenticatedUser())).username,\n usuario: props.usuario,\n sucursal: props.sucursal,\n renglon: Renglon\n }\n }\n\n var payloadPost = await API.post(apiName, path, myInit);\n\n if (payloadPost.ok === 'true') {\n setVisibleToast(true);\n setMessageToast('Conteo activado con éxito');\n setTypeToast('success')\n }\n else if (payloadPost.ok === 'false') {\n setVisibleToast(true);\n setMessageToast(payloadPost.message);\n setTypeToast('error')\n }\n\n editButton(ID);\n\n setVisibleLoadPanel(false);\n }\n catch (e) {\n setVisibleLoadPanel(false);\n\n if (e === 'No current user') {\n history.push('/');\n\n window.location.reload();\n }\n }\n };\n\n async function cancelCountButton(Renglon) {\n try {\n setVisibleLoadPanel(true);\n\n var ID = itemCountWMSPayload.header.ID;\n\n //Guardamos los cambios del grid\n if (gridItemsRef.current) {\n var gridItems = gridItemsRef.current.instance();\n\n gridItems.saveEditData();\n }\n\n //Despues enviamos todo al backend\n let apiName = 'AdminSC';\n let path = '/procesaconteociclico';\n\n let myInit = {\n headers: {\n 'Content-Type': 'application/json',\n Authorization: `${(await Auth.currentSession()).getAccessToken().getJwtToken()}`\n },\n body: {\n ID: ID,\n payload: itemCountWMSPayload,\n action: 'cancelCount',\n username: JSON.parse(JSON.stringify(await Auth.currentAuthenticatedUser())).username,\n usuario: props.usuario,\n sucursal: props.sucursal,\n renglon: Renglon\n }\n }\n\n var payloadPost = await API.post(apiName, path, myInit);\n\n if (payloadPost.ok === 'true') {\n setVisibleToast(true);\n setMessageToast('Conteo cancelado con éxito');\n setTypeToast('success')\n }\n else if (payloadPost.ok === 'false') {\n setVisibleToast(true);\n setMessageToast(payloadPost.message);\n setTypeToast('error')\n }\n\n editButton(ID);\n\n setVisibleLoadPanel(false);\n }\n catch (e) {\n setVisibleLoadPanel(false);\n\n if (e === 'No current user') {\n history.push('/');\n\n window.location.reload();\n }\n }\n };\n\n async function recountButton(Renglon) {\n try {\n setVisibleLoadPanel(true);\n\n var ID = itemCountWMSPayload.header.ID;\n\n //Guardamos los cambios del grid\n if (gridItemsRef.current) {\n var gridItems = gridItemsRef.current.instance();\n\n gridItems.saveEditData();\n }\n\n //Despues enviamos todo al backend\n let apiName = 'AdminSC';\n let path = '/procesaconteociclico';\n\n let myInit = {\n headers: {\n 'Content-Type': 'application/json',\n Authorization: `${(await Auth.currentSession()).getAccessToken().getJwtToken()}`\n },\n body: {\n ID: ID,\n payload: itemCountWMSPayload,\n action: 'recount',\n username: JSON.parse(JSON.stringify(await Auth.currentAuthenticatedUser())).username,\n usuario: props.usuario,\n sucursal: props.sucursal,\n renglon: Renglon\n }\n }\n\n var payloadPost = await API.post(apiName, path, myInit);\n\n if (payloadPost.ok === 'true') {\n setVisibleToast(true);\n setMessageToast('Conteo reiniciado con éxito');\n setTypeToast('success')\n }\n else if (payloadPost.ok === 'false') {\n setVisibleToast(true);\n setMessageToast(payloadPost.message);\n setTypeToast('error')\n }\n\n editButton(ID);\n\n setVisibleLoadPanel(false);\n }\n catch (e) {\n setVisibleLoadPanel(false);\n\n if (e === 'No current user') {\n history.push('/');\n\n window.location.reload();\n }\n }\n };\n\n async function enableItemCountButton() {\n try {\n setVisibleLoadPanel(true);\n\n var ID = itemCountWMSPayload.header.ID;\n\n //Guardamos los cambios del grid\n if (gridItemsRef.current) {\n var gridItems = gridItemsRef.current.instance();\n\n gridItems.saveEditData();\n }\n\n //Despues enviamos todo al backend\n let apiName = 'AdminSC';\n let path = '/procesaconteociclico';\n\n let myInit = {\n headers: {\n 'Content-Type': 'application/json',\n Authorization: `${(await Auth.currentSession()).getAccessToken().getJwtToken()}`\n },\n body: {\n ID: ID,\n payload: itemCountWMSPayload,\n action: 'enableAll',\n usuario: props.usuario,\n sucursal: props.sucursal,\n username: JSON.parse(JSON.stringify(await Auth.currentAuthenticatedUser())).username\n }\n }\n\n var payloadPost = await API.post(apiName, path, myInit);\n\n if (payloadPost.ok === 'true') {\n setVisibleToast(true);\n setMessageToast('Surtido activado con éxito');\n setTypeToast('success')\n }\n else if (payloadPost.ok === 'false') {\n setVisibleToast(true);\n setMessageToast(payloadPost.message);\n setTypeToast('error')\n }\n\n editButton(ID);\n\n setVisibleLoadPanel(false);\n }\n catch (e) {\n setVisibleLoadPanel(false);\n\n if (e === 'No current user') {\n history.push('/');\n\n window.location.reload();\n }\n }\n };\n\n const confirmButton = React.useCallback(async () => {\n if (formDatosGeneralesRef.current) {\n var formDatosGenerales = formDatosGeneralesRef.current.instance();\n var isValid = formDatosGenerales.validate();\n\n if (!isValid.isValid) {\n setVisibleToast(true);\n setMessageToast(isValid.brokenRules[0].message);\n setTypeToast('error');\n return;\n }\n }\n\n try {\n setVisibleLoadPanel(true);\n\n var ID = itemCountWMSPayload.header.ID;\n\n //Primero guardamos los cambios del grid Articulos\n if (gridItemsRef.current) {\n var gridItems = gridItemsRef.current.instance();\n\n gridItems.saveEditData();\n }\n\n var lambdaFunction;\n\n if (window.location.href.indexOf('sandbox.') >= 0 || window.location.href.indexOf('localhost') >= 0)\n lambdaFunction = 'procesaConteoCiclicoWMS-dev';\n else if (window.location.href.indexOf('sandboxtampico.') >= 0)\n lambdaFunction = 'procesaConteoCiclicoWMS-devleona';\n else if (window.location.href.indexOf('tampico.') >= 0)\n lambdaFunction = 'procesaConteoCiclicoWMS-prodleona';\n else\n lambdaFunction = 'procesaConteoCiclicoWMS-prod';\n\n Auth.currentCredentials()\n .then(credentials => {\n const lambda = new Lambda({\n credentials: Auth.essentialCredentials(credentials),\n region: 'us-east-1'\n });\n\n var params = {\n FunctionName: lambdaFunction,\n Payload: JSON.stringify({\n ID: ID,\n payload: itemCountWMSPayload,\n action: 'apply',\n username: props.username,\n usuario: props.usuario,\n sucursal: props.sucursal,\n s3Bucket: Storage._config.AWSS3.bucket\n })\n };\n\n lambda.invoke(params, function (err, data) {\n if (err) {\n setVisibleLoadPanel(false);\n\n setVisibleToast(true);\n setMessageToast(err.message);\n setTypeToast('error');\n }\n else {\n var payloadPost = JSON.parse(JSON.parse(data.Payload).body);\n\n if (err) {\n setVisibleLoadPanel(false);\n\n setVisibleToast(true);\n setMessageToast(err.message);\n setTypeToast('error');\n }\n else {\n var payloadPost = JSON.parse(JSON.parse(data.Payload).body);\n\n if (payloadPost.ok === 'true') {\n setVisibleToast(true);\n setMessageToast('Se afectó el Conteo Cíclico con éxito');\n setTypeToast('success')\n }\n else if (payloadPost.ok === 'false') {\n setVisibleToast(true);\n setMessageToast(payloadPost.message);\n setTypeToast('error')\n }\n\n editButton(ID);\n\n setVisibleLoadPanel(false);\n }\n }\n });\n })\n }\n catch (e) {\n setVisibleLoadPanel(false);\n\n if (e === 'No current user') {\n history.push('/');\n\n window.location.reload();\n }\n }\n }, [itemCountWMSPayload, editButton, formDatosGeneralesRef, history, props.sucursal, props.username, props.usuario, gridItemsRef, setVisibleLoadPanel, setVisibleToast, setMessageToast, setTypeToast]);\n\n function refreshButton() {\n if (gridTableroRef.current) {\n var gridTablero = gridTableroRef.current.instance();\n\n gridTablero.refresh();\n }\n }\n\n const approveButton = React.useCallback(async () => {\n try {\n setVisibleLoadPanel(true);\n\n var ID = itemCountWMSPayload.header.ID;\n\n //Guardamos los cambios del grid\n if (gridItemsRef.current) {\n var gridItems = gridItemsRef.current.instance();\n\n gridItems.saveEditData();\n }\n\n //Despues enviamos todo al backend\n let apiName = 'AdminSC';\n let path = '/procesaconteociclico';\n\n let myInit = {\n headers: {\n 'Content-Type': 'application/json',\n Authorization: `${(await Auth.currentSession()).getAccessToken().getJwtToken()}`\n },\n body: {\n ID: ID,\n payload: itemCountWMSPayload,\n action: 'approve',\n usuario: props.usuario,\n sucursal: props.sucursal,\n username: JSON.parse(JSON.stringify(await Auth.currentAuthenticatedUser())).username\n }\n }\n\n var payloadPost = await API.post(apiName, path, myInit);\n\n if (payloadPost.ok === 'true') {\n setVisibleToast(true);\n setMessageToast('Conteo cíclico autorizado con éxito');\n setTypeToast('success')\n }\n else if (payloadPost.ok === 'false') {\n setVisibleToast(true);\n setMessageToast(payloadPost.message);\n setTypeToast('error')\n }\n\n editButton(ID);\n\n setVisibleLoadPanel(false);\n }\n catch (e) {\n setVisibleLoadPanel(false);\n\n if (e === 'No current user') {\n history.push('/');\n\n window.location.reload();\n }\n }\n }, [editButton, gridItemsRef, history, itemCountWMSPayload, props.sucursal, props.usuario]);\n\n\n function printButton() {\n var baseUrl = window.location.href.split('/')[0];\n\n window.open(baseUrl + \"/#/PdfRender?type=itemcountwms&id=\" + id, \"_blank\");\n };\n\n async function voidButton() {\n try {\n var result = confirm('¿Desea cancelar el Conteo Cíclico?', 'Conteo Cíclico');\n\n result.then(async (dialogResult) => {\n if (dialogResult) {\n setVisibleLoadPanel(true);\n\n var ID = itemCountWMSPayload.header.ID;\n\n //Guardamos los cambios del grid\n if (gridItemsRef.current) {\n var gridItems = gridItemsRef.current.instance();\n\n gridItems.saveEditData();\n }\n\n //Despues enviamos todo al backend\n let apiName = 'AdminSC';\n let path = '/procesaconteociclico';\n\n let myInit = {\n headers: {\n 'Content-Type': 'application/json',\n Authorization: `${(await Auth.currentSession()).getAccessToken().getJwtToken()}`\n },\n body: {\n ID: ID,\n payload: itemCountWMSPayload,\n action: 'void',\n username: JSON.parse(JSON.stringify(await Auth.currentAuthenticatedUser())).username,\n usuario: props.usuario,\n sucursal: props.sucursal\n }\n }\n\n var payloadPost = await API.post(apiName, path, myInit);\n\n if (payloadPost.ok === 'true') {\n setVisibleToast(true);\n setMessageToast('Se canceló el Conteo Cíclico');\n setTypeToast('success')\n }\n else if (payloadPost.ok === 'false') {\n setVisibleToast(true);\n setMessageToast(payloadPost.message);\n setTypeToast('error')\n }\n\n editButton(ID);\n\n setVisibleLoadPanel(false);\n }\n });\n }\n catch (e) {\n setVisibleLoadPanel(false);\n\n if (e === 'No current user') {\n history.push('/');\n\n window.location.reload();\n }\n }\n };\n\n useEffect(() => {\n window.addEventListener('popstate', (e) => {\n var hash;\n\n try {\n hash = e.target.location.hash;\n }\n catch (e) {\n hash = '';\n }\n\n if (hash === '#/ItemCountWMS') {\n history.push('/ItemCountWMS');\n\n window.location.reload();\n }\n });\n\n async function initialize() {\n setVisibleLoadPanel(true);\n\n getUsuarioConteoCiclico();\n\n setVisibleLoadPanel(false);\n }\n\n initialize();\n\n //En caso de solicitar un ID especifico, redireccionamos a ese ID\n if (!props.match.isExact) {\n var urlID = props.location.pathname.replace('/ItemCountWMS/', '');\n\n if (urlID === 'undefined')\n urlID = undefined;\n\n if (urlID)\n editButton(urlID);\n }\n // eslint-disable-next-line\n }, []);\n\n function onHidingToast() {\n setVisibleToast(false);\n }\n\n function estatusRelatedRecords(data) {\n return (\n <TransactionStatus {...props} Estatus={data.data.Estatus} />\n )\n };\n\n function enableCountItem(data) {\n if (permissionLevel === 'Editar' && data.data.Renglon && (!data.data.Estatus || data.data.Estatus === '') && itemCountWMSPayload.header.Estatus === 'Pendiente')\n return (\n <button class=\"bg-green-500 hover:bg-green-700 text-white py-1 px-3 rounded\" onClick={() => enableCountButton(data.data.Renglon)}><FontAwesomeIcon icon={faScannerTouchscreen} size='lg' /></button>\n )\n if (permissionLevel === 'Editar' && data.data.Renglon && data.data.Estatus === 'En Proceso' && itemCountWMSPayload.header.Estatus === 'Pendiente' && !data.data.CantidadProcesada)\n return (\n <button class=\"bg-red-500 hover:bg-red-700 text-white py-1 px-3 rounded\" onClick={() => cancelCountButton(data.data.Renglon)}><FontAwesomeIcon icon={faBan} size='lg' /></button>\n )\n };\n\n function recountItem(data) {\n if (permissionLevel === 'Editar' && data.data.Renglon && (data.data.Estatus === 'Finalizado') && (itemCountWMSPayload.header.Estatus === 'Pendiente' || itemCountWMSPayload.header.Estatus === 'Por Autorizar'))\n return (\n <button class=\"bg-green-500 hover:bg-green-700 text-white py-1 px-3 rounded\" onClick={() => recountButton(data.data.Renglon)}><FontAwesomeIcon icon={faRotate} size='lg' /></button>\n )\n }\n\n const icono = React.useCallback((data) => {\n var Cantidad = parseFloat(data.data.Cantidad);\n var CantidadProcesada = parseFloat(data.data.CantidadProcesada);\n\n if (!Cantidad)\n Cantidad = 0;\n if (!CantidadProcesada)\n CantidadProcesada = 0;\n\n var Diferencia = CantidadProcesada - Cantidad;\n\n if (!Diferencia)\n Diferencia = 0;\n\n if (Diferencia === 0) {\n return (<div class=\"inline-block text-xl\"><FontAwesomeIcon icon={faEquals} /></div>)\n }\n else if (Diferencia > 0) {\n return (<div class=\"inline-block text-xl text-green-500\"><FontAwesomeIcon icon={faArrowUp} /></div>)\n }\n else if (Diferencia < 0) {\n return (<div class=\"inline-block text-xl text-red-500\"><FontAwesomeIcon icon={faArrowDown} /></div>)\n }\n }, []);\n\n function onExporting(e) {\n const workbook = new Workbook();\n const worksheet = workbook.addWorksheet('Datos');\n\n exportDataGrid({\n component: e.component,\n worksheet,\n autoFilterEnabled: true,\n }).then(() => {\n workbook.xlsx.writeBuffer().then((buffer) => {\n saveAs(new Blob([buffer], { type: 'application/octet-stream' }), 'Datos.xlsx');\n });\n });\n e.cancel = true;\n };\n\n function onEditorPreparing(e) {\n //Hacemos la data persistente en cuanto el usuario escriba en el campo\n if (e.parentType === \"dataRow\") {\n e.editorOptions.valueChangeEvent = \"input\";\n }\n }\n\n return (\n <div>\n {isDetail === false ? (\n <div class=\"bg-gray-200 m-2\">\n <h1 class=\"font-sans inline-block text-xl font-bold text-gray-700 leading-8 align-top mb-1\"><FontAwesomeIcon icon={faList} size=\"lg\" /> Conteos Cíclicos</h1>\n </div>\n ) :\n (\n <div class=\"bg-gray-200 m-2\">\n <h1 class=\"font-sans inline-block text-xl font-bold text-gray-700 leading-8 align-top mb-1\"><FontAwesomeIcon icon={faArrowsSpin} size=\"xl\" /> {(itemCountWMSPayload.header ? itemCountWMSPayload.header.Movimiento : 'Conteo Cíclico')}</h1>\n <TransactionStatus {...props} Estatus={itemCountWMSPayload.header.Estatus} />\n </div>\n )}\n\n <LoadPanel\n shadingColor=\"rgba(0,0,0,0.4)\"\n visible={visibleLoadPanel}\n showIndicator={true}\n message=\"Por favor espere...\"\n shading={true}\n showPane={true}\n hideOnOutsideClick={false}\n />\n\n <Toast\n visible={visibleToast}\n message={messageToast}\n type={typeToast}\n onHiding={onHidingToast}\n displayTime={5000}\n width={'auto'}\n position={{\n my: 'top center',\n at: 'top center',\n of: window,\n offset: '0 130'\n }}\n />\n\n <div class=\"bg-gray-200 m-2\">\n {isDetail === false ? (\n <div class=\"bg-white p-3 shadow-xl\">\n\n {permissionLevel === 'Editar' ?\n (\n <div>\n <button onClick={refreshButton} type=\"submit\" class=\"mb-4 bg-blue-500 hover:bg-blue-700 text-white font-bold py-2 px-4 rounded\">\n <FontAwesomeIcon icon={faArrowsRotate} /> Actualizar\n </button>\n </div>\n ) :\n (\n <div>\n <button onClick={refreshButton} type=\"submit\" class=\"mb-4 bg-blue-500 hover:bg-blue-700 text-white font-bold py-2 px-4 rounded\">\n <FontAwesomeIcon icon={faArrowsRotate} /> Actualizar\n </button>\n </div>\n )}\n\n <div className=\"options mb-2\">\n <div className=\"option\">\n <CheckBox text=\"Expandir todos los grupos\"\n value={autoExpandAll}\n onValueChanged={onAutoExpandAllChanged}></CheckBox>\n </div>\n </div>\n <DataGrid\n height={800}\n id=\"gridContainer\"\n columnsAutoWidth={true}\n filterBuilder={filterBuilder}\n dataSource={store}\n defaultFilterValue={filterValue}\n allowColumnReordering={true}\n allowColumnResizing={true}\n columnResizingMode={\"widget\"}\n showBorders={true}\n rowAlternationEnabled={true}\n showRowLines={true}\n showColumnLines={true}\n remoteOperations={{ filtering: true }}\n ref={gridTableroRef}\n onExporting={onExporting}\n >\n <Scrolling rowRenderingMode='virtual'></Scrolling>\n <Paging defaultPageSize={10} />\n <Pager\n visible={true}\n allowedPageSizes={allowedPageSizes}\n displayMode='compact'\n showPageSizeSelector={true}\n showInfo={true}\n showNavigationButtons={true}\n />\n <FilterRow visible={true} />\n <FilterPanel visible={true} />\n <FilterBuilderPopup position={filterBuilderPopupPosition} />\n\n <HeaderFilter visible={true} />\n\n <GroupPanel visible={true} />\n <SearchPanel visible={true} />\n <ColumnChooser\n enabled={true}\n mode='select'\n >\n <ColumnChooserSearch\n enabled={true}\n />\n\n <ColumnChooserSelection\n allowSelectAll={true}\n selectByClick={true}\n recursive={true}\n />\n </ColumnChooser>\n <Grouping autoExpandAll={autoExpandAll} />\n <StateStoring enabled={true} type=\"localStorage\" storageKey=\"gridContainerItemCountWMS\" />\n <Export enabled={true} />\n\n <Column caption=\"\" alignment=\"center\" width={100} cellRender={editItemCountWMS} />\n <Column dataField=\"MovID\" dataType=\"string\" width={110} caption=\"Folio\" />\n <Column dataField=\"FechaEmision\" caption=\"Fecha Emisión\" dataType=\"date\" width={130} />\n <Column dataField=\"Estatus\" dataType=\"string\" width={120} />\n <Column dataField=\"Almacen\" caption=\"Almacén\" dataType=\"number\" width={150} />\n\n <Column caption=\"Plaza\" dataField=\"Plaza\" dataType=\"string\" width={150} visible={false} />\n\n <Column dataField=\"ID\" dataType=\"number\" width={150} visible={false} />\n <Column dataField=\"Mov\" dataType=\"string\" width={190} caption=\"Tipo Movimiento\" visible={false} />\n <Column dataField=\"Movimiento\" dataType=\"string\" width={190} visible={false} />\n\n <Column dataField=\"Sucursal\" dataType=\"number\" width={150} visible={false} />\n <Column dataField=\"NombreSucursal\" dataType=\"string\" width={190} visible={false} />\n\n <Column dataField=\"NombreAlmacen\" caption=\"Nombre Almacén\" dataType=\"string\" width={190} visible={false} />\n\n <Column dataField=\"Usuario\" dataType=\"string\" width={190} visible={false} />\n <Column dataField=\"NombreUsuario\" dataType=\"string\" width={190} visible={false} />\n </DataGrid>\n </div>\n ) : (<div />)}\n <Route exact path=\"/ItemCountWMS/:ID\" render={({ match }) => {\n return (\n <div class=\"bg-gray-200\">\n {isDetail.toString() === 'true' ?\n (\n <div>\n <Link to=\"/ItemCountWMS\">\n <button onClick={cancelEditButton} type=\"submit\" class=\"mb-4 bg-red-500 hover:bg-red-700 text-white font-bold py-2 px-4 rounded\">\n <FontAwesomeIcon icon={faArrowRotateLeft} /> Regresar\n </button>\n </Link>\n\n {activateSaveButton.toString() === 'true' ?\n (\n <button onClick={saveButton} type=\"submit\" class=\"ml-4 mb-4 bg-blue-500 hover:bg-blue-700 text-white font-bold py-2 px-4 rounded\">\n <FontAwesomeIcon icon={faSave} /> Guardar Cambios\n </button>\n ) : (\n <div class=\"inline-block\"></div>\n )}\n\n {activateEnableItemCount.toString() === 'true' && id ?\n (\n <button onClick={enableItemCountButton} type=\"submit\" class=\"ml-4 mb-4 bg-green-500 hover:bg-green-700 text-white font-bold py-2 px-4 rounded\">\n <FontAwesomeIcon icon={faScannerTouchscreen} size='lg' /> Activar Conteo\n </button>\n ) : (\n <div class=\"inline-block\"></div>\n )}\n\n {activateCancelButton.toString() === 'true' && id ?\n (\n <button onClick={voidButton} type=\"submit\" class=\"ml-4 mb-4 bg-red-500 hover:bg-red-700 text-white font-bold py-2 px-4 rounded\">\n <FontAwesomeIcon icon={faWindowClose} /> Cancelar\n </button>\n ) :\n (\n <div class=\"inline-block\"></div>\n )}\n\n {activateConfirmButton.toString() === 'true' && id ?\n (\n <button onClick={confirmButton} type=\"submit\" class=\"ml-4 mb-4 bg-green-500 hover:bg-green-700 text-white font-bold py-2 px-4 rounded\">\n <FontAwesomeIcon icon={faPlay} /> Afectar\n </button>\n ) : (\n <div class=\"inline-block\"></div>\n )}\n\n {activateApproveButton.toString() === 'true' && id ?\n (\n <button onClick={approveButton} type=\"submit\" class=\"ml-4 mb-4 bg-green-500 hover:bg-green-700 text-white font-bold py-2 px-4 rounded\">\n <FontAwesomeIcon icon={faThumbsUp} /> Autorizar\n </button>\n ) : (\n <div class=\"inline-block\"></div>\n )}\n\n {activatePDFButton.toString() === 'true' && id ?\n (\n <button onClick={printButton} type=\"submit\" class=\"ml-4 mb-4 bg-gray-500 hover:bg-gray-700 text-white font-bold py-2 px-4 rounded\">\n <FontAwesomeIcon icon={faFilePdf} /> PDF\n </button>\n ) :\n (\n <div class=\"inline-block\"></div>\n )}\n\n <div class=\"bg-white p-4 shadow-xl\">\n <Form\n id=\"formTransaccion\"\n labelMode={'outside'}\n formData={itemCountWMSPayload.header}\n readOnly={!activateUpdateForm}\n showColonAfterLabel={false}\n labelLocation={'top'}\n ref={formDatosGeneralesRef}\n >\n <TabbedItem>\n <TabPanelOptions deferRendering={false} showNavButtons={true} />\n <Tab title=\"Datos Generales\" colCount={6}>\n <GroupItem caption=\"General\" colSpan={6} colCount={2}>\n <Item cssClass=\"boldText\" dataField=\"Movimiento\" editorOptions={movimientoEditorOptions} >\n <RequiredRule message=\"Movimiento es requerido\" />\n </Item>\n <Item dataField=\"FechaEmision\" editorType=\"dxDateBox\" editorOptions={fechaEmisionEditorOptions}>\n <Label text={\"Fecha Emisión\"} />\n <RequiredRule message=\"Fecha Emisión es requerida\" />\n </Item>\n <Item dataField=\"NombreAlmacen\" editorOptions={nombreAlmacenEditorOptions}>\n <Label text={\"Almacén\"} />\n <RequiredRule message=\"Almacén es requerido\" />\n </Item>\n </GroupItem>\n <GroupItem caption=\"Artículos\" colSpan={6} >\n <DataGrid\n id=\"gridItems\"\n ref={gridItemsRef}\n columnsAutoWidth={true}\n dataSource={itemCountWMSPayload.detail}\n showBorders={true}\n showColumnLines={true}\n showRowLines={true}\n rowAlternationEnabled={true}\n allowColumnResizing={true}\n columnResizingMode=\"widget\"\n allowColumnReordering={false}\n repaintChangesOnly={true}\n onEditorPreparing={onEditorPreparing}\n >\n <Editing\n mode=\"cell\"\n allowUpdating={activateUpdateGrid}\n allowAdding={false}\n allowDeleting={false}\n />\n <Sorting mode=\"none\" />\n\n <Column dataField=\"Renglon\" caption=\"Renglón\" width={80} visible={false} allowEditing={false} />\n <Column dataField=\"RenglonID\" width={190} visible={false} allowEditing={false} />\n\n <Column dataField=\"Almacen\" caption=\"Almacén\" width={80} allowEditing={false} dataType=\"string\" />\n <Column dataField=\"Posicion\" caption=\"Posición\" width={120} allowEditing={false} dataType=\"string\" />\n <Column dataField=\"Barcode\" caption=\"Barcode\" width={120} allowEditing={false} dataType=\"string\" />\n <Column dataField=\"ArtDescripcion\" caption=\"Artículo\" width={340} allowEditing={false} dataType=\"string\" />\n\n <Column dataField=\"CantidadProcesada\" caption=\"Cantidad Conteo\" width={150} allowEditing={false} dataType=\"number\" format=',###' />\n {(itemCountWMSPayload.header.Estatus === 'Concluido' || itemCountWMSPayload.header.Estatus === 'Por Autorizar' || itemCountWMSPayload.header.Estatus === 'Autorizado') && <Column dataField=\"Cantidad\" caption=\"Cantidad Actual\" width={150} allowEditing={false} dataType=\"number\" format=',###' />}\n {(itemCountWMSPayload.header.Estatus === 'Concluido' || itemCountWMSPayload.header.Estatus === 'Por Autorizar' || itemCountWMSPayload.header.Estatus === 'Autorizado') && <Column caption=\"\" alignment=\"center\" width={50} cellRender={icono} />}\n\n <Column dataField=\"UsuarioPickAsignado\" caption=\"Usuario Asignado\" width={200} visible={true} dataType=\"string\" editorOptions={usuarioPickAsignadoEditorOptions}>\n <Lookup\n dataSource={usuarioPick}\n displayExpr=\"name\"\n valueExpr=\"value\"\n />\n </Column>\n <Column caption=\"Estatus\" alignment=\"center\" width={120} cellRender={estatusRelatedRecords} />\n <Column caption=\"\" alignment=\"center\" width={60} cellRender={enableCountItem} />\n <Column caption=\"\" alignment=\"center\" width={60} cellRender={recountItem} />\n </DataGrid>\n </GroupItem>\n </Tab>\n <Tab title=\"Autorización\" colCount={1}>\n <Item dataField=\"RequiereAutorizacion\" editorType=\"dxCheckBox\" editorOptions={autorizacionEditorOptions} >\n <Label text=\"Requiere Autorización\" />\n </Item>\n <Item dataField=\"Autorizado\" editorType=\"dxCheckBox\" editorOptions={autorizacionEditorOptions} >\n <Label text=\"Autorizado\" />\n </Item>\n <Item dataField=\"Autoriza\" editorOptions={autorizacionEditorOptions} >\n <Label text=\"Autorizado por\" />\n </Item>\n <Item dataField=\"FechaAutorizacion\" editorOptions={autorizacionEditorOptions} >\n <Label text=\"Fecha Autorización\" />\n </Item>\n </Tab>\n <Tab title=\"Observaciones\" >\n <Item dataField=\"Observaciones\" editorType=\"dxTextArea\" >\n <Label text=\"Observaciones\" visible={false} />\n </Item>\n </Tab>\n <Tab title=\"Mensajes WMS\">\n <DataGrid\n id=\"gridMensajesWMS\"\n columnsAutoWidth={true}\n dataSource={itemCountWMSPayload.wmsmessage}\n allowColumnReordering={true}\n allowColumnResizing={true}\n columnResizingMode={\"widget\"}\n showBorders={true}\n rowAlternationEnabled={true}\n showRowLines={true}\n showColumnLines={true}\n >\n <Scrolling rowRenderingMode='virtual'></Scrolling>\n <Paging defaultPageSize={10} />\n <Pager\n visible={true}\n allowedPageSizes={allowedPageSizes}\n displayMode='compact'\n showPageSizeSelector={true}\n showInfo={true}\n showNavigationButtons={true}\n />\n\n <FilterRow visible={true} />\n <FilterPanel visible={true} />\n <FilterBuilderPopup position={filterBuilderPopupPosition} />\n\n <HeaderFilter visible={true} />\n\n <GroupPanel visible={true} />\n <SearchPanel visible={true} />\n <ColumnChooser\n enabled={true}\n mode='select'\n >\n <ColumnChooserSearch\n enabled={true}\n />\n\n <ColumnChooserSelection\n allowSelectAll={true}\n selectByClick={true}\n recursive={true}\n />\n </ColumnChooser>\n <Grouping autoExpandAll={autoExpandAll} />\n\n <Column dataField=\"Mensaje\" dataType=\"string\" width={120} caption=\"Mensaje\" />\n <Column dataField=\"Renglon\" dataType=\"number\" width={100} caption=\"Renglon\" />\n <Column dataField=\"Barcode\" dataType=\"string\" width={140} caption=\"Barcode\" />\n <Column dataField=\"Articulo\" dataType=\"string\" width={120} caption=\"Artículo\" />\n <Column dataField=\"Cantidad\" dataType=\"number\" width={120} caption=\"Cantidad\" format=',###' />\n <Column dataField=\"username\" dataType=\"string\" width={140} caption=\"Usuario WMS\" />\n <Column dataField=\"Fecha\" dataType=\"date\" width={100} caption=\"Fecha\" />\n <Column dataField=\"Almacen\" dataType=\"string\" width={120} caption=\"Almacén\" />\n <Column dataField=\"Posicion\" dataType=\"string\" width={120} caption=\"Posición\" />\n <Column dataField=\"BarcodeA\" dataType=\"string\" width={180} caption=\"Barcode Procesado\" />\n </DataGrid>\n </Tab>\n <Tab title=\"Log Estatus\">\n <DataGrid\n id=\"gridLogEstatus\"\n columnsAutoWidth={true}\n dataSource={itemCountWMSPayload.movEstatusLog}\n allowColumnReordering={true}\n allowColumnResizing={true}\n columnResizingMode={\"widget\"}\n showBorders={true}\n rowAlternationEnabled={true}\n showRowLines={true}\n showColumnLines={true}\n >\n <HeaderFilter visible={false} />\n <Column dataField=\"Usuario\" dataType=\"string\" width={350} caption=\"Usuario\" />\n <Column caption=\"Estatus\" alignment=\"center\" width={150} cellRender={estatusRelatedRecords} />\n <Column dataField=\"Fecha\" dataType=\"datetime\" width={300} caption=\"Fecha\" />\n </DataGrid>\n </Tab>\n <Tab title=\"Archivos Anexos\" >\n <div className=\"widget-container\">\n <FileUploader\n multiple={true}\n accept=\"*\"\n uploadMode=\"useButtons\"\n chunkSize={20000000}\n maxFileSize={20000000}\n uploadChunk={uploadChunk}\n disabled={!activateAttachments}\n />\n </div>\n <div id=\"wrapper\" className=\"show-widget\" >\n <div id=\"widget-area\">\n <FileManager id=\"attachmentManager\" fileSystemProvider={attachments} onItemDeleting={onAttachmentDeleting} onItemDownloading={onItemDownloading} onSelectedFileOpened={onAttachmentOpen}>\n <Permissions\n create={false}\n copy={false}\n move={false}\n delete={activateAttachments}\n rename={false}\n upload={false}\n download={true}\n >\n </Permissions>\n </FileManager>\n </div>\n </div>\n </Tab>\n </TabbedItem>\n </Form>\n </div>\n </div>\n ) :\n (\n <div></div>\n )\n }\n </div>\n )\n }}\n />\n </div>\n </div>\n );\n}\n","import React, { useState, useEffect, useRef, useMemo } from 'react';\n\n// Ruteador\nimport { Route, Link, useHistory } from \"react-router-dom\";\n\n// LoadPanel\nimport { LoadPanel } from 'devextreme-react/load-panel';\n\n// Toast\nimport { Toast } from 'devextreme-react/toast';\n\n//Form\nimport Form, { GroupItem, Label, TabbedItem, TabPanelOptions, Tab, EmptyItem } from 'devextreme-react/form';\n\n//Validator\nimport { EmailRule, CustomRule } from 'devextreme-react/validator';\n\nimport { Auth, API, Storage } from 'aws-amplify';\n\n// Grid\nimport DataGrid, {\n Column, FilterRow, HeaderFilter, FilterPanel, FilterBuilderPopup,\n GroupPanel, Grouping, SearchPanel, Sorting, Editing, Lookup, Toolbar, Item, RequiredRule,\n Scrolling, Pager, Paging, Summary, TotalItem, StateStoring, ColumnChooser, Format, Selection,\n Export, ColumnChooserSearch, ColumnChooserSelection\n} from 'devextreme-react/data-grid';\n\n// Iconos\nimport { FontAwesomeIcon } from \"@fortawesome/react-fontawesome\";\nimport { faArrowsRotate } from \"@fortawesome/pro-solid-svg-icons\";\nimport { faToolbox } from \"@fortawesome/pro-duotone-svg-icons\";\nimport { faPlay } from \"@fortawesome/pro-duotone-svg-icons\";\n\nimport dxDateBox from \"devextreme/ui/date_box\";\n\nimport Lambda from 'aws-sdk/clients/lambda';\n\nimport 'devextreme/data/odata/store';\nimport CustomStore from 'devextreme/data/custom_store';\n\nimport DataSource from 'devextreme/data/data_source';\n\nimport '../ListStyle.css';\n\n//confirm\nimport { confirm } from 'devextreme/ui/dialog';\n\ndxDateBox.defaultOptions({\n options: {\n dateSerializationFormat: \"yyyy-MM-dd\"\n }\n});\n\nexport default function CreateItemCountWMS(props) {\n const history = useHistory();\n\n const [visibleLoadPanel, setVisibleLoadPanel] = useState(false);\n\n const [visibleToast, setVisibleToast] = useState(false);\n const [messageToast, setMessageToast] = useState('');\n const [typeToast, setTypeToast] = useState('success');\n\n const [createItemCountWMSPayload, setCreateItemCountWMSPayload] = useState({\n header: {\n },\n detail: []\n });\n\n // Variables para los filtros\n const [almacenes, setAlmacenes] = useState([]);\n const [posiciones, setPosiciones] = useState([]);\n\n //Controles para expander los grupos del grid de checklist\n const [autoExpandAllChecklist, setAutoExpandAllChecklist] = useState(true);\n\n const [autoExpandAll, setAutoExpandAll] = useState(true);\n\n //Ref para el form\n const [formReporteRef, setFormReporteRef] = useState(React.createRef());\n\n //Ref para el grid de articulos\n const [gridArticulosRef, setGridArticulosRef] = useState(React.createRef());\n\n const filterBuilderPopupPosition = {\n of: window,\n at: 'top',\n my: 'top',\n offset: { y: 10 },\n };\n\n function getOrderDay(rowData) {\n return (new Date(rowData.OrderDate)).getDay();\n }\n\n const filterBuilder = {\n customOperations: [{\n name: 'weekends',\n caption: 'Weekends',\n dataTypes: ['date'],\n icon: 'check',\n hasValue: false,\n calculateFilterExpression: () => [[getOrderDay, '=', 0], 'or', [getOrderDay, '=', 6]],\n }],\n allowHierarchicalFields: true,\n };\n\n const allowedPageSizes = [5, 10, 15, 20, 'all'];\n\n var almacenDataSource = useMemo(() => {\n return new DataSource({\n paginate: true,\n store: {\n type: \"array\",\n key: \"Almacen\",\n data: almacenes\n }\n });\n }, [almacenes]);\n\n var posicionDataSource = useMemo(() => {\n return new DataSource({\n paginate: true,\n store: {\n type: \"array\",\n key: \"Posicion\",\n data: posiciones\n }\n });\n }, [posiciones]);\n\n const refreshButton = React.useCallback(async () => {\n if (formReporteRef.current) {\n var formReporte = formReporteRef.current.instance();\n var isValid = formReporte.validate();\n\n if (!isValid.isValid) {\n setVisibleToast(true);\n setMessageToast(isValid.brokenRules[0].message);\n setTypeToast('error');\n return;\n }\n }\n\n try {\n setVisibleLoadPanel(true);\n\n var lambdaFunction;\n\n var payload = JSON.parse(JSON.stringify(createItemCountWMSPayload));\n\n payload.action = 'getItemCountItemList';\n payload.username = props.username;\n\n if (window.location.href.indexOf('sandbox.') >= 0 || window.location.href.indexOf('localhost') >= 0)\n lambdaFunction = 'procesaConteoCiclicoWMS-dev';\n else if (window.location.href.indexOf('sandboxtampico.') >= 0)\n lambdaFunction = 'procesaConteoCiclicoWMS-devleona';\n else if (window.location.href.indexOf('tampico.') >= 0)\n lambdaFunction = 'procesaConteoCiclicoWMS-prodleona';\n else\n lambdaFunction = 'procesaConteoCiclicoWMS-prod';\n\n Auth.currentCredentials()\n .then(credentials => {\n const lambda = new Lambda({\n credentials: Auth.essentialCredentials(credentials),\n region: 'us-east-1'\n });\n\n var params = {\n FunctionName: lambdaFunction,\n Payload: JSON.stringify(payload)\n };\n\n lambda.invoke(params, function (err, data) {\n if (err) {\n setVisibleLoadPanel(false);\n }\n else {\n var payload = JSON.parse(JSON.parse(data.Payload).body);\n\n setVisibleLoadPanel(false);\n setCreateItemCountWMSPayload(payload);\n }\n });\n })\n }\n catch (e) {\n setVisibleLoadPanel(false);\n\n if (e === 'No current user') {\n history.push('/');\n\n window.location.reload();\n }\n }\n }, [formReporteRef, history, createItemCountWMSPayload, props.username]);\n\n const createButton = React.useCallback(async () => {\n if (formReporteRef.current) {\n var formReporte = formReporteRef.current.instance();\n var isValid = formReporte.validate();\n\n if (!isValid.isValid) {\n setVisibleToast(true);\n setMessageToast(isValid.brokenRules[0].message);\n setTypeToast('error');\n return;\n }\n }\n\n if (gridArticulosRef.current) {\n var gridArticulos = gridArticulosRef.current.instance();\n\n var keys = gridArticulos.getSelectedRowKeys();\n\n var arrayItem = [];\n\n for (var keysIndex in keys) {\n arrayItem.push({\n Articulo: keys[keysIndex]\n });\n }\n\n if (arrayItem.length === 0) {\n setVisibleToast(true);\n setMessageToast('Falta seleccionar los artículos a contar');\n setTypeToast('error');\n }\n else {\n var result = confirm('Se creará el conteo cíclico de ' + arrayItem.length + ' artículos. ¿Desea continuar?', 'Cerrar Pedidos');\n\n result.then(async (dialogResult) => {\n if (dialogResult) {\n\n try {\n setVisibleLoadPanel(true);\n\n var lambdaFunction;\n\n var payload = JSON.parse(JSON.stringify(createItemCountWMSPayload));\n\n payload.action = 'createItemCount';\n payload.username = props.username;\n payload.usuario = props.usuario;\n payload.selectedItems = arrayItem;\n\n if (window.location.href.indexOf('sandbox.') >= 0 || window.location.href.indexOf('localhost') >= 0)\n lambdaFunction = 'procesaConteoCiclicoWMS-dev';\n else if (window.location.href.indexOf('sandboxtampico.') >= 0)\n lambdaFunction = 'procesaConteoCiclicoWMS-devleona';\n else if (window.location.href.indexOf('tampico.') >= 0)\n lambdaFunction = 'procesaConteoCiclicoWMS-prodleona';\n else\n lambdaFunction = 'procesaConteoCiclicoWMS-prod';\n\n Auth.currentCredentials()\n .then(credentials => {\n const lambda = new Lambda({\n credentials: Auth.essentialCredentials(credentials),\n region: 'us-east-1'\n });\n\n var params = {\n FunctionName: lambdaFunction,\n Payload: JSON.stringify(payload)\n };\n\n lambda.invoke(params, function (err, data) {\n if (err) {\n setVisibleLoadPanel(false);\n }\n else {\n var payload = JSON.parse(JSON.parse(data.Payload).body);\n\n setVisibleLoadPanel(false);\n\n if (payload.header.ok === 'true' && payload.header.newID) {\n var baseUrl = window.location.href.split('#/')[0];\n var redirect = '/ItemCountWMS/' + payload.header.newID;\n\n redirect = baseUrl + '#' + redirect;\n\n window.open(redirect, \"_blank\");\n }\n\n }\n });\n })\n }\n catch (e) {\n setVisibleLoadPanel(false);\n\n if (e === 'No current user') {\n history.push('/');\n\n window.location.reload();\n }\n }\n }\n });\n }\n }\n }, [gridArticulosRef, formReporteRef, history, createItemCountWMSPayload, props.username, props.usuario]);\n\n async function getArticulo(sqlFilter) {\n let apiName = 'AdminSC';\n let path = '/getcatalogo';\n\n let myInit = {\n headers: {\n 'Content-Type': 'application/json',\n Authorization: `${(await Auth.currentSession()).getAccessToken().getJwtToken()}`\n },\n queryStringParameters: {\n type: 'ArticuloWMS',\n username: JSON.parse(JSON.stringify(await Auth.currentAuthenticatedUser())).username,\n sqlFilter: sqlFilter\n }\n }\n\n var articulosGet = await API.get(apiName, path, myInit);\n\n return articulosGet;\n };\n\n async function getProveedor(sqlFilter) {\n let apiName = 'AdminSC';\n let path = '/getcatalogo';\n\n let myInit = {\n headers: {\n 'Content-Type': 'application/json',\n Authorization: `${(await Auth.currentSession()).getAccessToken().getJwtToken()}`\n },\n queryStringParameters: {\n type: 'Proveedor',\n username: JSON.parse(JSON.stringify(await Auth.currentAuthenticatedUser())).username,\n sqlFilter: sqlFilter\n }\n }\n\n var articulosGet = await API.get(apiName, path, myInit);\n\n return articulosGet;\n };\n\n const getAlmPos = React.useCallback(async (Almacen) => {\n let apiName = 'AdminSC';\n let path = '/getcatalogo';\n\n let myInit = {\n headers: {\n 'Content-Type': 'application/json',\n Authorization: `${(await Auth.currentSession()).getAccessToken().getJwtToken()}`\n },\n queryStringParameters: {\n type: 'AlmPos',\n Almacen: Almacen,\n username: JSON.parse(JSON.stringify(await Auth.currentAuthenticatedUser())).username\n }\n }\n\n var posicionesGet = await API.get(apiName, path, myInit);\n\n setPosiciones(posicionesGet);\n }, []);\n\n async function getAlmacenes() {\n let apiName = 'AdminSC';\n let path = '/getcatalogo';\n\n let myInit = {\n headers: {\n 'Content-Type': 'application/json',\n Authorization: `${(await Auth.currentSession()).getAccessToken().getJwtToken()}`\n },\n queryStringParameters: {\n type: 'AlmacenWMS',\n username: JSON.parse(JSON.stringify(await Auth.currentAuthenticatedUser())).username\n }\n }\n\n var almacenesGet = await API.get(apiName, path, myInit);\n\n setAlmacenes(almacenesGet);\n };\n\n const storeArticulo = new CustomStore({\n key: 'value',\n load(loadOptions) {\n let sqlFilter = '';\n [\n 'filter'\n ].forEach((i) => {\n sqlFilter = loadOptions.searchValue;\n });\n\n async function getRecords() {\n if (sqlFilter) {\n var records = await getArticulo(sqlFilter);\n\n return {\n data: records,\n totalCount: records.length\n };\n }\n else {\n return {\n data: [],\n totalCount: 0\n };\n }\n }\n\n return getRecords()\n .then(function (result) {\n return result;\n })\n .catch(() => { throw new Error('Data Loading Error'); });\n },\n byKey: (key) => {\n async function getRecords(key) {\n var records = await getArticulo(key);\n\n return records;\n }\n\n return getRecords(key);\n }\n });\n\n const storeProveedor = new CustomStore({\n key: 'value',\n load(loadOptions) {\n let sqlFilter = '';\n [\n 'filter'\n ].forEach((i) => {\n sqlFilter = loadOptions.searchValue;\n });\n\n async function getRecords() {\n if (sqlFilter) {\n var records = await getProveedor(sqlFilter);\n\n return {\n data: records,\n totalCount: records.length\n };\n }\n else {\n return {\n data: [],\n totalCount: 0\n };\n }\n }\n\n return getRecords()\n .then(function (result) {\n return result;\n })\n .catch(() => { throw new Error('Data Loading Error'); });\n },\n byKey: (key) => {\n async function getRecords(key) {\n var records = await getProveedor(key);\n\n return records;\n }\n\n return getRecords(key);\n }\n });\n\n //Opciones del campo Almacen\n try {\n var almacenEditorOptions = useMemo(() => {\n return {\n dataSource: almacenDataSource,\n displayExpr: 'name',\n valueExpr: 'value',\n searchEnabled: true,\n value: (createItemCountWMSPayload.header.Almacen ? createItemCountWMSPayload.header.Almacen : ''),\n width: '100%'\n };\n }, [almacenDataSource, createItemCountWMSPayload.header.Almacen]);\n }\n catch (e) {\n var almacenEditorOptions = {\n dataSource: almacenDataSource,\n displayExpr: 'name',\n valueExpr: 'value',\n searchEnabled: true,\n value: '',\n width: '100%'\n };\n }\n\n //Opciones del campo Articulo\n try {\n var articuloEditorOptions = {\n dataSource: storeArticulo,\n displayExpr: 'name',\n valueExpr: 'value',\n searchEnabled: true,\n showClearButton: true,\n acceptCustomValue: false,\n disabled: false,\n searchTimeout: 1500,\n width: '100%',\n clearButtonText: 'Cerrar',\n noDataText: 'No se encontraron resultados'\n };\n }\n catch (e) {\n var articuloEditorOptions = {\n dataSource: storeArticulo,\n displayExpr: 'name',\n valueExpr: 'value',\n searchEnabled: true,\n acceptCustomValue: false,\n width: '100%',\n showClearButton: true\n };\n }\n\n //Opciones del campo Proveedor\n try {\n var proveedorEditorOptions = {\n dataSource: storeProveedor,\n displayExpr: 'name',\n valueExpr: 'value',\n searchEnabled: true,\n showClearButton: true,\n acceptCustomValue: false,\n disabled: false,\n searchTimeout: 1500,\n width: '100%',\n clearButtonText: 'Cerrar',\n noDataText: 'No se encontraron resultados'\n };\n }\n catch (e) {\n var proveedorEditorOptions = {\n dataSource: storeProveedor,\n displayExpr: 'name',\n valueExpr: 'value',\n searchEnabled: true,\n acceptCustomValue: false,\n width: '100%',\n showClearButton: true\n };\n }\n\n //Opciones del campo Posicion\n try {\n var posicionEditorOptions = useMemo(() => {\n return {\n dataSource: posicionDataSource,\n displayExpr: 'name',\n valueExpr: 'value',\n searchEnabled: true,\n value: (createItemCountWMSPayload.header.Posicion ? createItemCountWMSPayload.header.Posicion : ''),\n width: '100%',\n showClearButton: true\n };\n }, [posicionDataSource, createItemCountWMSPayload.header.Posicion]);\n }\n catch (e) {\n var posicionEditorOptions = {\n dataSource: posicionDataSource,\n displayExpr: 'name',\n valueExpr: 'value',\n searchEnabled: true,\n value: '',\n width: '100%',\n showClearButton: true\n };\n }\n\n function onHidingToast() {\n setVisibleToast(false);\n };\n\n const onFieldDatosGeneralesChanged = React.useCallback(async (e) => {\n var dataField = e.dataField;\n var value = e.value;\n\n if (formReporteRef.current) {\n var formDatosGenerales = formReporteRef.current.instance();\n\n if (e.dataField === 'header.Almacen') {\n if (e.value) {\n await getAlmPos(e.value);\n }\n }\n }\n }, [getAlmPos, formReporteRef]);\n\n function onOptionChanged(e) {\n if (e.name !== 'focusedRowIndex' && e.name !== 'focusedColumnIndex' && e.name !== 'selectedRowKeys') {\n e.component.on(\"contentReady\", () => {\n e.component.off(\"contentReady\");\n e.component.clearSelection();\n });\n }\n }\n\n useEffect(() => {\n async function initialize() {\n setVisibleLoadPanel(true);\n\n await getAlmacenes();\n\n setVisibleLoadPanel(false);\n }\n\n initialize();\n\n }, []);\n\n return (\n <div>\n <div class=\"bg-gray-200 m-2\">\n <h1 class=\"font-sans inline-block text-xl font-bold text-gray-700 leading-8 align-top mb-1\"><FontAwesomeIcon icon={faToolbox} size=\"xl\" /> Crear Conteo Cíclico</h1>\n </div>\n <div>\n <button onClick={refreshButton} type=\"submit\" class=\"ml-2 mb-4 bg-blue-500 hover:bg-blue-700 text-white font-bold py-2 px-4 rounded\">\n <FontAwesomeIcon icon={faArrowsRotate} /> Actualizar\n </button>\n <button onClick={createButton} type=\"submit\" class=\"ml-2 mb-4 bg-green-500 hover:bg-green-700 text-white font-bold py-2 px-4 rounded\">\n <FontAwesomeIcon icon={faPlay} /> Crear Conteo\n </button>\n </div>\n\n <LoadPanel\n shadingColor=\"rgba(0,0,0,0.4)\"\n visible={visibleLoadPanel}\n showIndicator={true}\n message=\"Por favor espere...\"\n shading={true}\n showPane={true}\n hideOnOutsideClick={false}\n />\n\n <Toast\n visible={visibleToast}\n message={messageToast}\n type={typeToast}\n onHiding={onHidingToast}\n displayTime={5000}\n width={'auto'}\n position={{\n my: 'top center',\n at: 'top center',\n of: window,\n offset: '0 130'\n }}\n />\n\n <div class=\"m-2 bg-white p-4 shadow-xl\">\n <Form\n id=\"formReporte\"\n labelMode={'outside'}\n formData={createItemCountWMSPayload}\n readOnly={false}\n showColonAfterLabel={false}\n labelLocation={'top'}\n ref={formReporteRef}\n onFieldDataChanged={onFieldDatosGeneralesChanged}\n >\n <GroupItem caption=\"Filtros Requeridos\" colCount={2}>\n <Item dataField=\"header.Almacen\" editorType=\"dxSelectBox\" editorOptions={almacenEditorOptions}>\n <Label text={\"Almacén\"} />\n <RequiredRule message=\"Almacén es requerido\" />\n </Item>\n <Item dataField=\"header.Posicion\" editorType=\"dxSelectBox\" editorOptions={posicionEditorOptions}>\n <Label text={\"Posición\"} />\n </Item>\n <Item dataField=\"header.Proveedor\" editorType=\"dxLookup\" editorOptions={proveedorEditorOptions}>\n <Label text=\"Proveedor\" />\n </Item>\n <Item dataField=\"header.Articulo\" editorType=\"dxLookup\" editorOptions={articuloEditorOptions}>\n <Label text=\"Artículo\" />\n </Item>\n <Item dataField=\"header.IncluirPosicionCero\" editorType=\"dxCheckBox\" >\n <Label text=\"Incluir Posiciones sin existencia\" />\n </Item>\n </GroupItem>\n <GroupItem caption=\"Artículos\" colCount={1}>\n <DataGrid\n id=\"gridArticulos\"\n columnsAutoWidth={true}\n filterBuilder={filterBuilder}\n dataSource={createItemCountWMSPayload.detail}\n allowColumnReordering={true}\n allowColumnResizing={true}\n columnResizingMode={\"widget\"}\n showBorders={true}\n rowAlternationEnabled={true}\n showRowLines={true}\n showColumnLines={true}\n remoteOperations={{ filtering: true }}\n onOptionChanged={onOptionChanged}\n ref={gridArticulosRef}\n >\n <Scrolling rowRenderingMode='virtual'></Scrolling>\n <Paging defaultPageSize={0} />\n <Pager\n visible={true}\n allowedPageSizes={allowedPageSizes}\n displayMode='compact'\n showPageSizeSelector={true}\n showInfo={true}\n showNavigationButtons={true} />\n <FilterRow visible={true} />\n <FilterPanel visible={true} />\n <FilterBuilderPopup position={filterBuilderPopupPosition} />\n\n <HeaderFilter visible={true} />\n\n <SearchPanel visible={true} />\n\n <Selection\n mode=\"multiple\"\n selectAllMode={'page'}\n showCheckBoxesMode={'always'}\n />\n\n <Column dataField=\"Articulo\" dataType=\"string\" width={200} caption=\"Artículo\" visible={true} />\n <Column dataField=\"ArtDescripcion\" dataType=\"string\" width={400} caption=\"Descripción\" visible={true} />\n </DataGrid>\n </GroupItem>\n </Form>\n </div>\n </div>\n );\n}","import React from 'react';\n\nconst GroupCaption = ({ iconName, caption }) => (\n <React.Fragment>\n <i className={`dx-icon dx-icon-${iconName}`}></i>\n <span>{caption}</span>\n </React.Fragment>\n);\nexport default GroupCaption;","import React, { useState, useEffect, useRef, useMemo } from 'react';\n\n// Ruteador\nimport { Route, Link, useHistory } from \"react-router-dom\";\n\n// LoadPanel\nimport { LoadPanel } from 'devextreme-react/load-panel';\n\nimport GroupCaption from '../GroupCaption/GroupCaption.js';\n\n//Form\nimport Form, { GroupItem, Label, TabbedItem, TabPanelOptions, Tab, EmptyItem, SimpleItem } from 'devextreme-react/form';\n\nimport DropDownBox from 'devextreme-react/drop-down-box';\n\nimport { Auth, API, Storage } from 'aws-amplify';\n\n// Toast\nimport { Toast } from 'devextreme-react/toast';\n\nimport pako from 'pako';\n\n// Grid\nimport DataGrid, {\n Column, FilterRow, HeaderFilter, FilterPanel, FilterBuilderPopup,\n GroupPanel, Grouping, SearchPanel, Sorting, Editing, Lookup, Toolbar, Item, RequiredRule,\n Scrolling, Pager, Paging, Summary, TotalItem, StateStoring, ColumnChooser, Format, Selection,\n Export, ColumnChooserSearch, ColumnChooserSelection\n} from 'devextreme-react/data-grid';\n\nimport { GroupItem as GroupItemGrid } from 'devextreme-react/data-grid';\n\n// Iconos\nimport { FontAwesomeIcon } from \"@fortawesome/react-fontawesome\";\nimport { faArrowsRotate } from \"@fortawesome/pro-solid-svg-icons\";\nimport { faWarehouse } from \"@fortawesome/pro-solid-svg-icons\";\nimport { faBoxCheck } from \"@fortawesome/pro-solid-svg-icons\";\nimport { faFileExcel } from \"@fortawesome/pro-solid-svg-icons\";\nimport { faFileChartColumn } from \"@fortawesome/pro-duotone-svg-icons\";\n\nimport dxDateBox from \"devextreme/ui/date_box\";\n\nimport dxNumberBox from \"devextreme/ui/number_box\";\n\nimport Lambda from 'aws-sdk/clients/lambda';\n\nimport '../ListStyle.css';\n\nimport { Workbook } from 'exceljs';\nimport { saveAs } from 'file-saver';\nimport { exportDataGrid } from 'devextreme/excel_exporter'\n\ndxDateBox.defaultOptions({\n options: {\n dateSerializationFormat: \"yyyy-MM-dd\"\n }\n});\n\ndxNumberBox.defaultOptions({\n options: {\n step: 0\n }\n});\n\nfunction isNotEmpty(value) {\n return value !== undefined && value !== null && value !== '';\n}\n\nexport default function POSuggestionsReport(props) {\n const history = useHistory();\n\n const [visibleLoadPanel, setVisibleLoadPanel] = useState(false);\n const [poSuggestionsReportCfg, setPOSuggestionsReportCfg] = useState(props.poSuggestionsReportCfg);\n const [ejercicios, setEjercicios] = useState([]);\n const [periodosVenta, setPeriodosVenta] = useState([\n {\n name: 'Pasado',\n value: 'Pasado'\n },\n {\n name: 'Futuro',\n value: 'Futuro'\n }\n ]);\n const [niveles, setNiveles] = useState([\n {\n name: 'Concentrado',\n value: 'Concentrado'\n },\n {\n name: 'Desglosado',\n value: 'Desglosado'\n }\n ]);\n const [periodos, setPeriodos] = useState([]);\n const [proveedores, setProveedores] = useState([]);\n const [provNombre, setProvNombre] = useState({});\n const [artDescripcion, setArtDescripcion] = useState({});\n const [plazasentrega, setPlazasEntrega] = useState([]);\n\n const [proveedoresSeleccionados, setProveedoresSeleccionados] = useState([]);\n\n const [tabSelectedIndex, setTabSelectedIndex] = useState(0);\n\n const dateFormatYYYYDDMM = React.useCallback(() => {\n var date = new Date();\n\n var year = date.getFullYear().toString();\n var month = date.getMonth() + 1;\n var day = date.getDate().toString();\n\n if (month < 10)\n month = '0' + month.toString();\n else\n month = month.toString();\n\n return (\n year + \"-\" + month + \"-\" + day\n );\n }, []);\n\n const [reportPayload, setReportPayload] = useState({\n header: {\n Proveedor: '',\n Nivel: 'Desglosado',\n PeriodosVenta: 'Pasado'\n },\n titles: {\n PeriodoNombre: '.',\n Periodo1Nombre: '.',\n Periodo2Nombre: '.',\n Periodo3Nombre: '.',\n Periodo_ant_Nombre: '.',\n Periodo1_ant_Nombre: '.',\n Periodo2_ant_Nombre: '.',\n Periodo3_ant_Nombre: '.',\n PFuturoNombre1: '.',\n PFuturoNombre2: '.',\n PFuturoNombre3: '.',\n PFuturoNombre4: '.',\n PFuturoNombre5: '.',\n PFuturoNombre6: '.',\n PFuturoNombre7: '.',\n Total_Nombre: '.',\n Total_ant_Nombre: '.'\n },\n detail: [],\n detailWHS: [],\n specificWHS: [],\n po: []\n });\n\n const [allowFuture, setAllowFuture] = useState((new Date().getMonth() + 1 >= 7 ? true : false));\n\n const [future1, setFuture1] = useState(false);\n const [future2, setFuture2] = useState(false);\n const [future3, setFuture3] = useState(false);\n const [future4, setFuture4] = useState(false);\n const [future5, setFuture5] = useState(false);\n const [future6, setFuture6] = useState(false);\n const [future7, setFuture7] = useState(false);\n\n //Ref para el form\n const [formReporteRef, setFormReporteRef] = useState(React.createRef());\n\n //Ref para el grid Sugerencia por plaza\n const [gridSugerenciaRef, setGridSugerenciaRef] = useState(React.createRef());\n\n //Ref para el grid Sugerencia por almacen\n const [gridSugerenciaAlmRef, setGridSugerenciaAlmRef] = useState(React.createRef());\n\n //Ref para el grid Sugerencia Almacen Especifico\n const [gridSugerenciaAlmEspRef, setGridSugerenciaAlmEspRef] = useState(React.createRef());\n \n //Ref para el grid Sugerencia OC\n const [gridSugerenciaOCRef, setGridSugerenciaOCRef] = useState(React.createRef());\n \n const filterBuilderPopupPosition = {\n of: window,\n at: 'top',\n my: 'top',\n offset: { y: 10 },\n };\n\n const allowedPageSizes = [5, 10, 15, 20, 'all'];\n\n const [autoExpandAll, setAutoExpandAll] = useState(true);\n\n const [visibleToast, setVisibleToast] = useState(false);\n const [messageToast, setMessageToast] = useState('');\n const [typeToast, setTypeToast] = useState('success');\n\n function getOrderDay(rowData) {\n return (new Date(rowData.OrderDate)).getDay();\n }\n\n const filterBuilder = {\n customOperations: [{\n name: 'weekends',\n caption: 'Weekends',\n dataTypes: ['date'],\n icon: 'check',\n hasValue: false,\n calculateFilterExpression: () => [[getOrderDay, '=', 0], 'or', [getOrderDay, '=', 6]],\n }],\n allowHierarchicalFields: true,\n };\n\n async function getProveedor(sqlFilter) {\n let apiName = 'AdminSC';\n let path = '/getcatalogo';\n\n var tmpProvNombre = {};\n\n let myInit = {\n headers: {\n 'Content-Type': 'application/json',\n Authorization: `${(await Auth.currentSession()).getAccessToken().getJwtToken()}`\n },\n queryStringParameters: {\n type: 'ProveedorCompra',\n username: JSON.parse(JSON.stringify(await Auth.currentAuthenticatedUser())).username,\n sqlFilter: ''\n }\n }\n\n var proveedoresGet = await API.get(apiName, path, myInit);\n\n // Creamos el objeto con los nombres de los proveedores\n for (var proveedoresGetIndex in proveedoresGet) {\n var singleProveedorGet = proveedoresGet[proveedoresGetIndex];\n\n tmpProvNombre[singleProveedorGet.value.trim()] = singleProveedorGet.name;\n }\n\n setProveedores(proveedoresGet);\n setProvNombre(tmpProvNombre);\n };\n\n async function getArticulo(sqlFilter) {\n let apiName = 'AdminSC';\n let path = '/getcatalogo';\n\n var tmpArtDescripcion = {};\n\n let myInit = {\n headers: {\n 'Content-Type': 'application/json',\n Authorization: `${(await Auth.currentSession()).getAccessToken().getJwtToken()}`\n },\n queryStringParameters: {\n type: 'ArticuloPO',\n username: JSON.parse(JSON.stringify(await Auth.currentAuthenticatedUser())).username,\n sqlFilter: ''\n }\n }\n\n var articulosGet = await API.get(apiName, path, myInit);\n\n // Creamos el objeto con las descripciones de los articulos\n for (var articulosGetIndex in articulosGet) {\n var singleArticuloGet = articulosGet[articulosGetIndex];\n\n tmpArtDescripcion[singleArticuloGet.value.trim()] = singleArticuloGet.name;\n }\n\n setArtDescripcion(tmpArtDescripcion);\n };\n\n try {\n var ejercicioEditorOptions = useMemo(() => {\n return {\n items: ejercicios,\n displayExpr: 'name',\n valueExpr: 'value',\n searchEnabled: false,\n value: (reportPayload.header.Ejercicio ? reportPayload.header.Ejercicio : new Date().getFullYear()),\n readOnly: false\n };\n }, [ejercicios, reportPayload]);\n }\n catch (e) {\n var ejercicioEditorOptions = {\n items: ejercicios,\n displayExpr: 'name',\n valueExpr: 'value',\n searchEnabled: false,\n readOnly: false,\n value: '',\n };\n }\n\n try {\n var nivelEditorOptions = useMemo(() => {\n return {\n items: niveles,\n displayExpr: 'name',\n valueExpr: 'value',\n searchEnabled: false,\n value: (reportPayload.header.Nivel ? reportPayload.header.Nivel : 'Concentrado'),\n readOnly: false\n };\n }, [niveles, reportPayload]);\n }\n catch (e) {\n var nivelEditorOptions = {\n items: niveles,\n displayExpr: 'name',\n valueExpr: 'value',\n searchEnabled: false,\n readOnly: false,\n value: '',\n };\n }\n\n try {\n var periodosVentaEditorOptions = useMemo(() => {\n return {\n items: periodosVenta,\n displayExpr: 'name',\n valueExpr: 'value',\n searchEnabled: false,\n value: (reportPayload.header.PeriodosVenta ? reportPayload.header.PeriodosVenta : 'Pasado'),\n readOnly: !allowFuture\n };\n }, [periodosVenta, reportPayload, allowFuture]);\n }\n catch (e) {\n var periodosVentaEditorOptions = {\n items: periodosVenta,\n displayExpr: 'name',\n valueExpr: 'value',\n searchEnabled: false,\n readOnly: !allowFuture,\n value: '',\n };\n }\n\n try {\n var periodoEditorOptions = useMemo(() => {\n return {\n items: periodos,\n displayExpr: 'name',\n valueExpr: 'value',\n searchEnabled: false,\n value: (reportPayload.header.Periodo ? reportPayload.header.Periodo : new Date().getMonth() + 1),\n readOnly: false\n };\n }, [periodos, reportPayload]);\n }\n catch (e) {\n var periodoEditorOptions = {\n items: periodos,\n displayExpr: 'name',\n valueExpr: 'value',\n searchEnabled: false,\n readOnly: false,\n value: '',\n };\n }\n\n try {\n var plazaEntregaEditorOptions = useMemo(() => {\n return {\n items: plazasentrega,\n displayExpr: 'name',\n valueExpr: 'value',\n searchEnabled: false,\n value: reportPayload.header.PlazaEntrega,\n readOnly: false,\n showClearButton: true\n };\n }, [plazasentrega, reportPayload]);\n }\n catch (e) {\n var plazaEntregaEditorOptions = {\n items: plazasentrega,\n displayExpr: 'name',\n valueExpr: 'value',\n searchEnabled: false,\n readOnly: false,\n value: '',\n showClearButton: true\n };\n }\n\n const refreshButton = React.useCallback(async () => {\n if (formReporteRef.current) {\n var formReporte = formReporteRef.current.instance();\n var isValid = formReporte.validate();\n\n if (!isValid.isValid) {\n return;\n }\n }\n\n var proveedores = [];\n\n for (var proveedoresSeleccionadosIndex in proveedoresSeleccionados) {\n proveedores.push({\n Proveedor: proveedoresSeleccionados[proveedoresSeleccionadosIndex],\n })\n };\n\n if (proveedores.length === 0) {\n setVisibleToast(true);\n setMessageToast('Favor de especificar el Proveedor')\n setTypeToast('error');\n\n return;\n }\n\n try {\n setVisibleLoadPanel(true);\n\n var lambdaFunction;\n\n if (window.location.href.indexOf('sandbox.') >= 0 || window.location.href.indexOf('localhost') >= 0)\n lambdaFunction = 'reporteCompras-dev';\n else if (window.location.href.indexOf('sandboxtampico.') >= 0)\n lambdaFunction = 'reporteCompras-devleona';\n else if (window.location.href.indexOf('tampico.') >= 0)\n lambdaFunction = 'reporteCompras-prodleona';\n else\n lambdaFunction = 'reporteCompras-prod';\n\n Auth.currentCredentials()\n .then(credentials => {\n const lambda = new Lambda({\n credentials: Auth.essentialCredentials(credentials),\n region: 'us-east-1'\n });\n\n var params = {\n FunctionName: lambdaFunction,\n Payload: JSON.stringify({\n Ejercicio: reportPayload.header.Ejercicio,\n Periodo: reportPayload.header.Periodo,\n Proveedor: proveedores,\n username: props.username,\n PlazaEntrega: reportPayload.header.PlazaEntrega,\n Nivel: reportPayload.header.Nivel,\n PeriodosVenta: reportPayload.header.PeriodosVenta\n })\n };\n\n lambda.invoke(params, function (err, data) {\n if (err) {\n setVisibleLoadPanel(false);\n }\n else {\n // Decode Base64 to binary data\n var compressedData = Uint8Array.from(atob(JSON.parse(data.Payload).body), c => c.charCodeAt(0));\n\n // Decompress the GZIP data using pako\n var decompressedData = pako.ungzip(compressedData, { to: 'string' });\n\n // Parse the JSON string (if the response is JSON)\n var payload = JSON.parse(decompressedData);\n\n // var payload = JSON.parse(JSON.parse(data.Payload).body);\n var specificWHS = [];\n\n // Asignamos las descripciones de los Articulos y los nombres de los Proveedores\n for (var payloadIndex in payload.detail) {\n payload.detail[payloadIndex].Nom = provNombre[payload.detail[payloadIndex].Prov.trim()];\n payload.detail[payloadIndex].Descr = artDescripcion[payload.detail[payloadIndex].Art.trim()];\n }\n\n for (var payloadIndex in payload.detailWHS) {\n payload.detailWHS[payloadIndex].Descr = artDescripcion[payload.detailWHS[payloadIndex].Art.trim()];\n }\n\n for (var payloadIndex in payload.po) {\n payload.po[payloadIndex].Descr = artDescripcion[payload.po[payloadIndex].Art.trim()];\n }\n\n // Procesamos los registros con Desglose de Almacen\n for (var payloadIndex in payload.detailWHS) {\n var singleDetailWHS = payload.detailWHS[payloadIndex];\n\n if (singleDetailWHS.D) {\n specificWHS.push(singleDetailWHS);\n }\n }\n\n payload.specificWHS = specificWHS;\n\n setVisibleLoadPanel(false);\n setReportPayload(payload);\n\n if (reportPayload.header.Nivel === 'Concentrado') {\n setTabSelectedIndex(0)\n }\n else if (reportPayload.header.Nivel === 'Desglosado') {\n setTabSelectedIndex(0)\n }\n\n\n if (parseInt(reportPayload.header.Periodo) >= 7) {\n setAllowFuture(true);\n }\n else {\n setAllowFuture(false);\n }\n\n if (parseInt(reportPayload.header.Periodo) < 7) {\n setFuture1(false);\n setFuture2(false);\n setFuture3(false);\n setFuture4(false);\n setFuture5(false);\n setFuture6(false);\n setFuture7(false);\n }\n else if (parseInt(reportPayload.header.Periodo) === 7) {\n setFuture1(true);\n setFuture2(true);\n setFuture3(true);\n setFuture4(true);\n setFuture5(true);\n setFuture6(true);\n setFuture7(true);\n }\n else if (parseInt(reportPayload.header.Periodo) === 8) {\n setFuture1(true);\n setFuture2(true);\n setFuture3(true);\n setFuture4(true);\n setFuture5(true);\n setFuture6(true);\n setFuture7(false);\n }\n else if (parseInt(reportPayload.header.Periodo) === 9) {\n setFuture1(true);\n setFuture2(true);\n setFuture3(true);\n setFuture4(true);\n setFuture5(true);\n setFuture6(false);\n setFuture7(false);\n }\n else if (parseInt(reportPayload.header.Periodo) === 10) {\n setFuture1(true);\n setFuture2(true);\n setFuture3(true);\n setFuture4(true);\n setFuture5(false);\n setFuture6(false);\n setFuture7(false);\n }\n else if (parseInt(reportPayload.header.Periodo) === 11) {\n setFuture1(true);\n setFuture2(true);\n setFuture3(true);\n setFuture4(false);\n setFuture5(false);\n setFuture6(false);\n setFuture7(false);\n }\n else if (parseInt(reportPayload.header.Periodo) === 12) {\n setFuture1(true);\n setFuture2(true);\n setFuture3(false);\n setFuture4(false);\n setFuture5(false);\n setFuture6(false);\n setFuture7(false);\n }\n }\n });\n })\n }\n catch (e) {\n setVisibleLoadPanel(false);\n\n if (e === 'No current user') {\n history.push('/');\n\n window.location.reload();\n }\n }\n }, [formReporteRef, history, reportPayload, props.username, proveedoresSeleccionados, artDescripcion, provNombre]);\n\n const cfgItems = React.useCallback(() => {\n var baseUrl = window.location.href.split('/')[0];\n\n window.open(baseUrl + \"/#/ItemPOSuggestion\", \"_blank\");\n }, []);\n\n const cfgLocations = React.useCallback(() => {\n var baseUrl = window.location.href.split('/')[0];\n\n window.open(baseUrl + \"/#/WarehousePOSuggestion\", \"_blank\");\n }, []);\n\n const getEjercicios = React.useCallback(() => {\n var year = new Date().getFullYear();\n var yearAux = 2020;\n var ejerciciosTmp = [];\n\n while (yearAux <= year) {\n ejerciciosTmp.push({\n name: yearAux,\n value: yearAux\n });\n\n yearAux++;\n }\n\n setEjercicios(ejerciciosTmp);\n }, []);\n\n const getPeriodos = React.useCallback(() => {\n var periodosTmp = [];\n\n periodosTmp.push({\n name: 'Enero',\n value: 1\n });\n\n periodosTmp.push({\n name: 'Febrero',\n value: 2\n });\n\n periodosTmp.push({\n name: 'Marzo',\n value: 3\n });\n\n periodosTmp.push({\n name: 'Abril',\n value: 4\n });\n\n periodosTmp.push({\n name: 'Mayo',\n value: 5\n });\n\n periodosTmp.push({\n name: 'Junio',\n value: 6\n });\n\n periodosTmp.push({\n name: 'Julio',\n value: 7\n });\n\n periodosTmp.push({\n name: 'Agosto',\n value: 8\n });\n\n periodosTmp.push({\n name: 'Septiembre',\n value: 9\n });\n\n periodosTmp.push({\n name: 'Octubre',\n value: 10\n });\n\n periodosTmp.push({\n name: 'Noviembre',\n value: 11\n });\n\n periodosTmp.push({\n name: 'Diciembre',\n value: 12\n });\n\n\n setPeriodos(periodosTmp);\n }, []);\n\n const getPlazasEntrega = React.useCallback(async () => {\n let apiName = 'AdminSC';\n let path = '/getcatalogo';\n\n let myInit = {\n headers: {\n 'Content-Type': 'application/json',\n Authorization: `${(await Auth.currentSession()).getAccessToken().getJwtToken()}`\n },\n queryStringParameters: {\n type: 'PlazaEntrega',\n username: JSON.parse(JSON.stringify(await Auth.currentAuthenticatedUser())).username\n }\n }\n\n var plazasEntregaGet = await API.get(apiName, path, myInit);\n\n setPlazasEntrega(plazasEntregaGet);\n\n return plazasEntregaGet;\n }, []);\n\n const syncDataGridSelection = React.useCallback((e) => {\n setProveedoresSeleccionados(e.value || []);\n }, []);\n\n const dataGridOnSelectionChanged = React.useCallback((selectedRowKeys) => {\n setProveedoresSeleccionados((selectedRowKeys.selectedRowKeys.length && selectedRowKeys.selectedRowKeys) || []);\n }, []);\n\n const dataGridRender = React.useCallback(() => (\n <DataGrid\n height={345}\n dataSource={proveedores}\n hoverStateEnabled={true}\n selectedRowKeys={proveedoresSeleccionados}\n onSelectionChanged={dataGridOnSelectionChanged}\n allowUpdating={false}\n allowColumnResizing={false}\n allowColumnReordering={false}\n keyExpr={\"value\"}\n key={\"value\"}\n >\n <Selection mode=\"multiple\" />\n <Scrolling mode=\"virtual\" />\n <Paging\n enabled={true}\n pageSize={10}\n />\n <FilterRow visible={true} />\n <Column dataField=\"value\" caption=\"Proveedor\" width={300} dataType=\"string\" />\n <Column dataField=\"name\" caption=\"Nombre\" width={500} dataType=\"string\" />\n </DataGrid>\n ),\n [proveedores, proveedoresSeleccionados, dataGridOnSelectionChanged],\n );\n\n useEffect(() => {\n async function initialize() {\n setVisibleLoadPanel(true);\n\n getEjercicios();\n getPeriodos();\n getProveedor('');\n getPlazasEntrega();\n getArticulo('');\n\n setVisibleLoadPanel(false);\n }\n\n initialize();\n }, [getEjercicios, getPeriodos, getPlazasEntrega]);\n\n function onExporting(e) {\n const workbook = new Workbook();\n const worksheet = workbook.addWorksheet('Datos');\n\n exportDataGrid({\n component: e.component,\n worksheet,\n autoFilterEnabled: true,\n }).then(() => {\n workbook.xlsx.writeBuffer().then((buffer) => {\n saveAs(new Blob([buffer], { type: 'application/octet-stream' }), 'Datos.xlsx');\n });\n });\n e.cancel = true;\n };\n\n const groupCaptionNamedRender = (iconName) => {\n const groupCaptionRender = (data) =>\n (\n <GroupCaption\n iconName={iconName}\n {...data}\n />\n );\n return groupCaptionRender;\n }\n\n const onRowPrepared = React.useCallback((e) => {\n if (e.rowType === \"data\" && e.data.Color === 'Azul') {\n e.rowElement.style.backgroundColor = 'lightblue';\n }\n else if (e.rowType === \"data\" && e.data.Color === 'Rojo') {\n e.rowElement.style.backgroundColor = 'crimson';\n }\n else if (e.rowType === \"data\" && e.data.Color === 'Verde') {\n e.rowElement.style.backgroundColor = 'lightgreen';\n }\n else if (e.rowType === \"data\" && e.data.Color === 'Amarillo') {\n e.rowElement.style.backgroundColor = 'lightyellow';\n }\n else if (e.rowType === \"data\" && e.data.Color === 'Morado') {\n e.rowElement.style.backgroundColor = 'plum';\n }\n else if (e.rowType === \"data\" && e.data.Color === 'Rosa') {\n e.rowElement.style.backgroundColor = 'pink';\n }\n }, [])\n\n const onFieldDatosGeneralesChanged = React.useCallback(async (e) => {\n var dataField = e.dataField;\n var value = parseInt(e.value);\n\n if (formReporteRef.current) {\n var formDatosGenerales = formReporteRef.current.instance();\n\n if (e.dataField === 'header.Periodo') {\n if (value >= 7) {\n setAllowFuture(true);\n }\n else {\n setAllowFuture(false);\n formDatosGenerales.updateData('header.PeriodosVenta', 'Pasado');\n }\n\n if (value < 7) {\n setFuture1(false);\n setFuture2(false);\n setFuture3(false);\n setFuture4(false);\n setFuture5(false);\n setFuture6(false);\n setFuture7(false);\n }\n else if (value === 7) {\n setFuture1(true);\n setFuture2(true);\n setFuture3(true);\n setFuture4(true);\n setFuture5(true);\n setFuture6(true);\n setFuture7(true);\n }\n else if (value === 8) {\n setFuture1(true);\n setFuture2(true);\n setFuture3(true);\n setFuture4(true);\n setFuture5(true);\n setFuture6(true);\n setFuture7(false);\n }\n else if (value === 9) {\n setFuture1(true);\n setFuture2(true);\n setFuture3(true);\n setFuture4(true);\n setFuture5(true);\n setFuture6(false);\n setFuture7(false);\n }\n else if (value === 10) {\n setFuture1(true);\n setFuture2(true);\n setFuture3(true);\n setFuture4(true);\n setFuture5(false);\n setFuture6(false);\n setFuture7(false);\n }\n else if (value === 11) {\n setFuture1(true);\n setFuture2(true);\n setFuture3(true);\n setFuture4(false);\n setFuture5(false);\n setFuture6(false);\n setFuture7(false);\n }\n else if (value === 12) {\n setFuture1(true);\n setFuture2(true);\n setFuture3(false);\n setFuture4(false);\n setFuture5(false);\n setFuture6(false);\n setFuture7(false);\n }\n }\n }\n }, [formReporteRef]);\n\n const onHidingToast = React.useCallback(() => {\n setVisibleToast(false);\n }, []);\n\n return (\n <div>\n <div class=\"bg-gray-200 m-2\">\n <h1 class=\"font-sans inline-block text-xl font-bold text-gray-700 leading-8 align-top mb-1\"><FontAwesomeIcon icon={faFileChartColumn} size=\"xl\" /> Sugerencia de Compras</h1>\n </div>\n <div>\n <button onClick={refreshButton} type=\"submit\" class=\"ml-2 mb-4 bg-blue-500 hover:bg-blue-700 text-white font-bold py-2 px-4 rounded\">\n <FontAwesomeIcon icon={faArrowsRotate} /> Actualizar\n </button>\n\n {poSuggestionsReportCfg.toString() === 'true' ?\n (\n <button onClick={cfgItems} type=\"submit\" class=\"ml-4 mb-4 bg-green-500 hover:bg-green-700 text-white font-bold py-2 px-4 rounded\">\n <FontAwesomeIcon icon={faBoxCheck} /> Cfg. Artículos\n </button>\n ) : (\n <div class=\"inline-block\"></div>\n )}\n\n {poSuggestionsReportCfg.toString() === 'true' ?\n (\n <button onClick={cfgLocations} type=\"submit\" class=\"ml-4 mb-4 bg-green-500 hover:bg-green-700 text-white font-bold py-2 px-4 rounded\">\n <FontAwesomeIcon icon={faWarehouse} /> Cfg. Almacenes\n </button>\n ) : (\n <div class=\"inline-block\"></div>\n )}\n </div>\n\n <LoadPanel\n shadingColor=\"rgba(0,0,0,0.4)\"\n visible={visibleLoadPanel}\n showIndicator={true}\n message=\"Por favor espere...\"\n shading={true}\n showPane={true}\n hideOnOutsideClick={false}\n />\n\n <Toast\n visible={visibleToast}\n message={messageToast}\n type={typeToast}\n onHiding={onHidingToast}\n displayTime={5000}\n width={'auto'}\n position={{\n my: 'top center',\n at: 'top center',\n of: window,\n offset: '0 130'\n }}\n />\n\n <div class=\"m-2 bg-white p-4 shadow-xl\">\n <Form\n id=\"formReporte\"\n labelMode={'outside'}\n formData={reportPayload}\n readOnly={false}\n showColonAfterLabel={false}\n labelLocation={'top'}\n ref={formReporteRef}\n onFieldDataChanged={onFieldDatosGeneralesChanged}\n >\n <GroupItem captionRender={groupCaptionNamedRender('filter')} caption=\"Filtros\" colCount={2}>\n <Item dataField=\"header.Ejercicio\" editorType=\"dxSelectBox\" editorOptions={ejercicioEditorOptions}>\n <Label text={\"Ejercicio\"} />\n <RequiredRule message=\"Ejercicio es requerido\" />\n </Item>\n <Item dataField=\"header.Periodo\" editorType=\"dxSelectBox\" editorOptions={periodoEditorOptions}>\n <Label text={\"Periodo\"} />\n <RequiredRule message=\"Periodo es requerido\" />\n </Item>\n <SimpleItem dataField=\"header.Proveedor\" caption=\"Proveedor\" >\n <Label text={\"Proveedor\"} />\n <DropDownBox\n value={proveedoresSeleccionados}\n valueExpr=\"value\"\n deferRendering={false}\n displayExpr=\"value\"\n showClearButton={true}\n dataSource={proveedores}\n onValueChanged={syncDataGridSelection}\n contentRender={dataGridRender}\n />\n <RequiredRule message=\"Proveedor es requerido\" />\n </SimpleItem>\n <Item dataField=\"header.PlazaEntrega\" editorType=\"dxSelectBox\" editorOptions={plazaEntregaEditorOptions}>\n <Label text={\"Plaza de Entrega\"} />\n <RequiredRule message=\"Plaza de Entrega es requerida\" />\n </Item>\n </GroupItem>\n <GroupItem captionRender={groupCaptionNamedRender('search')} caption=\"Nivel\" colCount={2}>\n <Item dataField=\"header.Nivel\" editorType=\"dxSelectBox\" editorOptions={nivelEditorOptions}>\n <Label text={\"Nivel\"} />\n <RequiredRule message=\"Nivel es requerido\" />\n </Item>\n <Item dataField=\"header.PeriodosVenta\" editorType=\"dxSelectBox\" editorOptions={periodosVentaEditorOptions} >\n <Label text={\"Periodos Venta\"} />\n <RequiredRule message=\"Periodos de venta es requerido\" />\n </Item>\n </GroupItem>\n <GroupItem captionRender={groupCaptionNamedRender('datausage')} caption=\"Información\" colCount={1}>\n <TabbedItem>\n <TabPanelOptions deferRendering={false} showNavButtons={true} selectedIndex={tabSelectedIndex} />\n <Tab title=\"Sugerencia por Plaza\" colCount={2} visible={reportPayload.header.Nivel === 'Concentrado' || reportPayload.header.Nivel === 'Desglosado'}>\n <DataGrid\n height={800}\n id=\"gridSugerenciaPOPlaza\"\n columnsAutoWidth={true}\n filterBuilder={filterBuilder}\n dataSource={reportPayload.detail}\n allowColumnReordering={true}\n allowColumnResizing={true}\n columnResizingMode={\"widget\"}\n showBorders={true}\n showRowLines={true}\n showColumnLines={true}\n remoteOperations={{ filtering: true }}\n ref={gridSugerenciaRef}\n onExporting={onExporting}\n onRowPrepared={onRowPrepared}\n >\n <Scrolling rowRenderingMode='virtual'></Scrolling>\n <Paging defaultPageSize={10} />\n <Pager\n visible={true}\n allowedPageSizes={allowedPageSizes}\n displayMode='compact'\n showPageSizeSelector={true}\n showInfo={true}\n showNavigationButtons={true}\n />\n <FilterRow visible={true} />\n <FilterPanel visible={true} />\n <FilterBuilderPopup position={filterBuilderPopupPosition} />\n\n <HeaderFilter visible={true} />\n\n <GroupPanel visible={true} />\n <SearchPanel visible={true} />\n <ColumnChooser\n enabled={true}\n mode='select'\n >\n <ColumnChooserSearch\n enabled={true}\n />\n\n <ColumnChooserSelection\n allowSelectAll={true}\n selectByClick={true}\n recursive={true}\n />\n </ColumnChooser>\n <Grouping autoExpandAll={autoExpandAll} />\n <StateStoring enabled={true} type=\"localStorage\" storageKey=\"gridContainerPOSuggestion\" />\n <Export enabled={true} />\n\n <Column dataField=\"Plaza\" dataType=\"string\" width={150} caption=\"Plaza\" />\n <Column dataField=\"Prov\" dataType=\"string\" width={110} caption=\"Proveedor\" />\n <Column dataField=\"Nom\" dataType=\"string\" width={300} caption=\"Nombre\" />\n <Column dataField=\"Art\" dataType=\"string\" width={100} caption=\"Artículo\" />\n <Column dataField=\"Descr\" dataType=\"string\" width={300} caption=\"Descripción\" />\n\n <Column dataField=\"Ants2\" dataType=\"number\" width={150} caption={reportPayload.titles.Periodo3Nombre} visible={true} />\n <Column dataField=\"Ants\" dataType=\"number\" width={150} caption={reportPayload.titles.Periodo2Nombre} visible={true} />\n <Column dataField=\"Ant\" dataType=\"number\" width={150} caption={reportPayload.titles.Periodo1Nombre} visible={true} />\n <Column dataField=\"Act\" dataType=\"number\" width={150} caption={reportPayload.titles.PeriodoNombre} visible={true} />\n \n <Column dataField=\"Tot\" dataType=\"number\" width={150} caption={reportPayload.titles.Total_Nombre} />\n\n {(reportPayload.header.PeriodosVenta === 'Pasado') && <Column dataField=\"Ants2_ant\" dataType=\"number\" width={150} caption={reportPayload.titles.Periodo3_ant_Nombre} visible={true} />}\n {(reportPayload.header.PeriodosVenta === 'Pasado') && <Column dataField=\"Ants_ant\" dataType=\"number\" width={150} caption={reportPayload.titles.Periodo2_ant_Nombre} visible={true} />}\n {(reportPayload.header.PeriodosVenta === 'Pasado') && <Column dataField=\"Ant_ant\" dataType=\"number\" width={150} caption={reportPayload.titles.Periodo1_ant_Nombre} visible={true} />}\n {(reportPayload.header.PeriodosVenta === 'Pasado') && <Column dataField=\"Act_ant\" dataType=\"number\" width={150} caption={reportPayload.titles.Periodo_ant_Nombre} visible={true} />}\n\n {(reportPayload.header.PeriodosVenta === 'Futuro' && future1) && <Column dataField=\"VF1\" dataType=\"number\" width={150} caption={reportPayload.titles.PFuturoNombre1} visible={true} />}\n {(reportPayload.header.PeriodosVenta === 'Futuro' && future2) && <Column dataField=\"VF2\" dataType=\"number\" width={150} caption={reportPayload.titles.PFuturoNombre2} visible={true} />}\n {(reportPayload.header.PeriodosVenta === 'Futuro' && future3) && <Column dataField=\"VF3\" dataType=\"number\" width={150} caption={reportPayload.titles.PFuturoNombre3} visible={true} />}\n {(reportPayload.header.PeriodosVenta === 'Futuro' && future4) && <Column dataField=\"VF4\" dataType=\"number\" width={150} caption={reportPayload.titles.PFuturoNombre4} visible={true} />}\n {(reportPayload.header.PeriodosVenta === 'Futuro' && future5) && <Column dataField=\"VF5\" dataType=\"number\" width={150} caption={reportPayload.titles.PFuturoNombre5} visible={true} />}\n {(reportPayload.header.PeriodosVenta === 'Futuro' && future6) && <Column dataField=\"VF6\" dataType=\"number\" width={150} caption={reportPayload.titles.PFuturoNombre6} visible={true} />}\n {(reportPayload.header.PeriodosVenta === 'Futuro' && future7) && <Column dataField=\"VF7\" dataType=\"number\" width={150} caption={reportPayload.titles.PFuturoNombre7} visible={true} />}\n \n <Column dataField=\"Tot_ant\" dataType=\"number\" width={150} caption={reportPayload.titles.Total_ant_Nombre} />\n\n <Column dataField=\"Ex\" dataType=\"number\" width={110} caption=\"Existencia\" />\n <Column dataField=\"Ad\" dataType=\"number\" width={110} caption=\"Adeudo\" />\n <Column dataField=\"OC\" dataType=\"number\" width={110} caption=\"OC\" />\n <Column dataField=\"Patas\" dataType=\"number\" width={110} caption=\"Patas\" />\n <Column dataField=\"Color\" dataType=\"string\" width={200} caption=\"Color Seguimiento\" visible={false} />\n <Column dataField=\"OCEzequiel\" dataType=\"string\" width={200} caption=\"OC Ezequiel\" visible={true} />\n <Column dataField=\"PatasEzequiel\" dataType=\"string\" width={200} caption=\"Patas Ezequiel\" visible={true} />\n <Summary>\n <GroupItemGrid\n column=\"Ants2\"\n summaryType=\"sum\"\n valueFormat=\",##0\"\n displayFormat={reportPayload.titles.Periodo3Nombre + \" {0}\"}\n showInGroupFooter={false}>\n </GroupItemGrid>\n <GroupItemGrid\n column=\"Ants\"\n summaryType=\"sum\"\n valueFormat=\",##0\"\n displayFormat={reportPayload.titles.Periodo2Nombre + \" {0}\"}\n showInGroupFooter={false}>\n </GroupItemGrid>\n <GroupItemGrid\n column=\"Ant\"\n summaryType=\"sum\"\n valueFormat=\",##0\"\n displayFormat={reportPayload.titles.Periodo1Nombre + \" {0}\"}\n showInGroupFooter={false}>\n </GroupItemGrid>\n <GroupItemGrid\n column=\"Act\"\n summaryType=\"sum\"\n valueFormat=\",##0\"\n displayFormat={reportPayload.titles.PeriodoNombre + \" {0}\"}\n showInGroupFooter={false}>\n </GroupItemGrid>\n\n {(reportPayload.header.PeriodosVenta === 'Pasado') &&\n <GroupItemGrid\n column=\"Ants2_ant\"\n summaryType=\"sum\"\n valueFormat=\",##0\"\n displayFormat={reportPayload.titles.Periodo3_ant_Nombre + \" {0}\"}\n showInGroupFooter={false}>\n </GroupItemGrid>\n }\n {(reportPayload.header.PeriodosVenta === 'Pasado') &&\n <GroupItemGrid\n column=\"Ants_ant\"\n summaryType=\"sum\"\n valueFormat=\",##0\"\n displayFormat={reportPayload.titles.Periodo2_ant_Nombre + \" {0}\"}\n showInGroupFooter={false}>\n </GroupItemGrid>\n }\n {(reportPayload.header.PeriodosVenta === 'Pasado') &&\n <GroupItemGrid\n column=\"Ant_ant\"\n summaryType=\"sum\"\n valueFormat=\",##0\"\n displayFormat={reportPayload.titles.Periodo1_ant_Nombre + \" {0}\"}\n showInGroupFooter={false}>\n </GroupItemGrid>\n }\n {(reportPayload.header.PeriodosVenta === 'Pasado') && <GroupItemGrid\n column=\"Act_ant\"\n summaryType=\"sum\"\n valueFormat=\",##0\"\n displayFormat={reportPayload.titles.Periodo_ant_Nombre + \" {0}\"}\n showInGroupFooter={false}>\n </GroupItemGrid>\n }\n <GroupItemGrid\n column=\"Ex\"\n summaryType=\"sum\"\n valueFormat=\",##0\"\n displayFormat=\"Existencia {0}\"\n showInGroupFooter={false}>\n </GroupItemGrid>\n <GroupItemGrid\n column=\"Ad\"\n summaryType=\"sum\"\n valueFormat=\",##0\"\n displayFormat=\"Adeudo {0}\"\n showInGroupFooter={false}>\n </GroupItemGrid>\n <GroupItemGrid\n column=\"OC\"\n summaryType=\"sum\"\n valueFormat=\",##0\"\n displayFormat=\"OC {0}\"\n showInGroupFooter={false}>\n </GroupItemGrid>\n <GroupItemGrid\n column=\"Patas\"\n summaryType=\"sum\"\n valueFormat=\",##0\"\n displayFormat=\"Patas {0}\"\n showInGroupFooter={false}>\n </GroupItemGrid>\n <GroupItemGrid\n column=\"Tot\"\n summaryType=\"sum\"\n valueFormat=\",##0\"\n displayFormat=\"Total Ejercicio {0}\"\n showInGroupFooter={false}>\n </GroupItemGrid>\n <GroupItemGrid\n column=\"Tot_ant\"\n summaryType=\"sum\"\n valueFormat=\",##0\"\n displayFormat=\"Total Ejercicio Ant. {0}\"\n showInGroupFooter={false}>\n </GroupItemGrid>\n {(reportPayload.header.PeriodosVenta === 'Futuro' && future1) &&\n <GroupItemGrid\n column=\"VF1\"\n summaryType=\"sum\"\n valueFormat=\",##0\"\n displayFormat={reportPayload.titles.PFuturoNombre1 + \" {0}\"}\n showInGroupFooter={false}>\n </GroupItemGrid>\n }\n {(reportPayload.header.PeriodosVenta === 'Futuro' && future2) &&\n <GroupItemGrid\n column=\"VF2\"\n summaryType=\"sum\"\n valueFormat=\",##0\"\n displayFormat={reportPayload.titles.PFuturoNombre2 + \" {0}\"}\n showInGroupFooter={false}>\n </GroupItemGrid>\n }\n {(reportPayload.header.PeriodosVenta === 'Futuro' && future3) &&\n <GroupItemGrid\n column=\"VF3\"\n summaryType=\"sum\"\n valueFormat=\",##0\"\n displayFormat={reportPayload.titles.PFuturoNombre3 + \" {0}\"}\n showInGroupFooter={false}>\n </GroupItemGrid>\n }\n {(reportPayload.header.PeriodosVenta === 'Futuro' && future4) &&\n <GroupItemGrid\n column=\"VF4\"\n summaryType=\"sum\"\n valueFormat=\",##0\"\n displayFormat={reportPayload.titles.PFuturoNombre4 + \" {0}\"}\n showInGroupFooter={false}>\n </GroupItemGrid>\n }\n {(reportPayload.header.PeriodosVenta === 'Futuro' && future5) &&\n <GroupItemGrid\n column=\"VF5\"\n summaryType=\"sum\"\n valueFormat=\",##0\"\n displayFormat={reportPayload.titles.PFuturoNombre5 + \" {0}\"}\n showInGroupFooter={false}>\n </GroupItemGrid>\n }\n {(reportPayload.header.PeriodosVenta === 'Futuro' && future6) &&\n <GroupItemGrid\n column=\"VF6\"\n summaryType=\"sum\"\n valueFormat=\",##0\"\n displayFormat={reportPayload.titles.PFuturoNombre6 + \" {0}\"}\n showInGroupFooter={false}>\n </GroupItemGrid>\n }\n {(reportPayload.header.PeriodosVenta === 'Futuro' && future7) &&\n <GroupItemGrid\n column=\"VF7\"\n summaryType=\"sum\"\n valueFormat=\",##0\"\n displayFormat={reportPayload.titles.PFuturoNombre7 + \" {0}\"}\n showInGroupFooter={false}>\n </GroupItemGrid>\n }\n <TotalItem\n column=\"Act\"\n summaryType=\"sum\"\n valueFormat=\",##0\"\n displayFormat=\"{0}\"\n showInGroupFooter={false}>\n </TotalItem>\n <TotalItem\n column=\"Ant\"\n summaryType=\"sum\"\n valueFormat=\",##0\"\n displayFormat=\"{0}\"\n showInGroupFooter={false}>\n </TotalItem>\n <TotalItem\n column=\"Ants\"\n summaryType=\"sum\"\n valueFormat=\",##0\"\n displayFormat=\"{0}\"\n showInGroupFooter={false}>\n </TotalItem>\n <TotalItem\n column=\"Ants2\"\n summaryType=\"sum\"\n valueFormat=\",##0\"\n displayFormat=\"{0}\"\n showInGroupFooter={false}>\n </TotalItem>\n <TotalItem\n column=\"Act_ant\"\n summaryType=\"sum\"\n valueFormat=\",##0\"\n displayFormat=\"{0}\"\n showInGroupFooter={false}>\n </TotalItem>\n <TotalItem\n column=\"Ant_ant\"\n summaryType=\"sum\"\n valueFormat=\",##0\"\n displayFormat=\"{0}\"\n showInGroupFooter={false}>\n </TotalItem>\n <TotalItem\n column=\"Ants_ant\"\n summaryType=\"sum\"\n valueFormat=\",##0\"\n displayFormat=\"{0}\"\n showInGroupFooter={false}>\n </TotalItem>\n <TotalItem\n column=\"Ants2_ant\"\n summaryType=\"sum\"\n valueFormat=\",##0\"\n displayFormat=\"{0}\"\n showInGroupFooter={false}>\n </TotalItem>\n <TotalItem\n column=\"Ex\"\n summaryType=\"sum\"\n valueFormat=\",##0\"\n displayFormat=\"{0}\"\n showInGroupFooter={false}>\n </TotalItem>\n <TotalItem\n column=\"Ad\"\n summaryType=\"sum\"\n valueFormat=\",##0\"\n displayFormat=\"{0}\"\n showInGroupFooter={false}>\n </TotalItem>\n <TotalItem\n column=\"OC\"\n summaryType=\"sum\"\n valueFormat=\",##0\"\n displayFormat=\"{0}\"\n showInGroupFooter={false}>\n </TotalItem>\n <TotalItem\n column=\"Patas\"\n summaryType=\"sum\"\n valueFormat=\",##0\"\n displayFormat=\"{0}\"\n showInGroupFooter={false}>\n </TotalItem>\n\n <TotalItem\n column=\"VF1\"\n summaryType=\"sum\"\n valueFormat=\",##0\"\n displayFormat=\"{0}\"\n showInGroupFooter={false}>\n </TotalItem>\n <TotalItem\n column=\"VF2\"\n summaryType=\"sum\"\n valueFormat=\",##0\"\n displayFormat=\"{0}\"\n showInGroupFooter={false}>\n </TotalItem>\n <TotalItem\n column=\"VF3\"\n summaryType=\"sum\"\n valueFormat=\",##0\"\n displayFormat=\"{0}\"\n showInGroupFooter={false}>\n </TotalItem>\n <TotalItem\n column=\"VF4\"\n summaryType=\"sum\"\n valueFormat=\",##0\"\n displayFormat=\"{0}\"\n showInGroupFooter={false}>\n </TotalItem>\n <TotalItem\n column=\"VF5\"\n summaryType=\"sum\"\n valueFormat=\",##0\"\n displayFormat=\"{0}\"\n showInGroupFooter={false}>\n </TotalItem>\n <TotalItem\n column=\"VF6\"\n summaryType=\"sum\"\n valueFormat=\",##0\"\n displayFormat=\"{0}\"\n showInGroupFooter={false}>\n </TotalItem>\n <TotalItem\n column=\"VF7\"\n summaryType=\"sum\"\n valueFormat=\",##0\"\n displayFormat=\"{0}\"\n showInGroupFooter={false}>\n </TotalItem>\n <TotalItem\n column=\"Tot\"\n summaryType=\"sum\"\n valueFormat=\",##0\"\n displayFormat=\"{0}\"\n showInGroupFooter={false}>\n </TotalItem>\n <TotalItem\n column=\"Tot_ant\"\n summaryType=\"sum\"\n valueFormat=\",##0\"\n displayFormat=\"{0}\"\n showInGroupFooter={false}>\n </TotalItem> \n </Summary>\n </DataGrid>\n </Tab>\n <Tab title=\"Sugerencia por Almacén\" colCount={2} visible={reportPayload.header.Nivel === 'Desglosado'}>\n <DataGrid\n height={800}\n id=\"gridSugerenciaAlm\"\n columnsAutoWidth={true}\n dataSource={reportPayload.detailWHS}\n allowColumnReordering={true}\n allowColumnResizing={true}\n columnResizingMode={\"widget\"}\n showBorders={true}\n showRowLines={true}\n showColumnLines={true}\n remoteOperations={{ filtering: true }}\n ref={gridSugerenciaAlmRef}\n onExporting={onExporting}\n onRowPrepared={onRowPrepared}\n >\n <Scrolling rowRenderingMode='virtual'></Scrolling>\n <Paging defaultPageSize={10} />\n <Pager\n visible={true}\n allowedPageSizes={allowedPageSizes}\n displayMode='compact'\n showPageSizeSelector={true}\n showInfo={true}\n showNavigationButtons={true}\n />\n <FilterRow visible={true} />\n <FilterPanel visible={true} />\n <FilterBuilderPopup position={filterBuilderPopupPosition} />\n\n <HeaderFilter visible={true} />\n\n <GroupPanel visible={true} />\n <SearchPanel visible={true} />\n <ColumnChooser\n enabled={true}\n mode='select'\n >\n <ColumnChooserSearch\n enabled={true}\n />\n\n <ColumnChooserSelection\n allowSelectAll={true}\n selectByClick={true}\n recursive={true}\n />\n </ColumnChooser>\n <Grouping autoExpandAll={autoExpandAll} />\n <StateStoring enabled={true} type=\"localStorage\" storageKey=\"gridContainerPOWHSSuggestion\" />\n <Export enabled={true} />\n\n <Column dataField=\"Plaza\" dataType=\"string\" width={150} caption=\"Plaza\" />\n <Column dataField=\"Alm\" dataType=\"string\" width={150} caption=\"Almacén\" />\n <Column dataField=\"Art\" dataType=\"string\" width={100} caption=\"Artículo\" />\n <Column dataField=\"Descr\" dataType=\"string\" width={300} caption=\"Descripción\" />\n\n <Column dataField=\"Ants2\" dataType=\"number\" width={150} caption={reportPayload.titles.Periodo3Nombre} visible={true} />\n <Column dataField=\"Ants\" dataType=\"number\" width={150} caption={reportPayload.titles.Periodo2Nombre} visible={true} />\n <Column dataField=\"Ant\" dataType=\"number\" width={150} caption={reportPayload.titles.Periodo1Nombre} visible={true} />\n <Column dataField=\"Act\" dataType=\"number\" width={150} caption={reportPayload.titles.PeriodoNombre} visible={true} />\n\n\n <Column dataField=\"Tot\" dataType=\"number\" width={150} caption={reportPayload.titles.Total_Nombre} />\n\n {(reportPayload.header.PeriodosVenta === 'Pasado') && <Column dataField=\"Ants2_ant\" dataType=\"number\" width={150} caption={reportPayload.titles.Periodo3_ant_Nombre} visible={true} />}\n {(reportPayload.header.PeriodosVenta === 'Pasado') && <Column dataField=\"Ants_ant\" dataType=\"number\" width={150} caption={reportPayload.titles.Periodo2_ant_Nombre} visible={true} />}\n {(reportPayload.header.PeriodosVenta === 'Pasado') && <Column dataField=\"Ant_ant\" dataType=\"number\" width={150} caption={reportPayload.titles.Periodo1_ant_Nombre} visible={true} />}\n {(reportPayload.header.PeriodosVenta === 'Pasado') && <Column dataField=\"Act_ant\" dataType=\"number\" width={150} caption={reportPayload.titles.Periodo_ant_Nombre} visible={true} />}\n\n {(reportPayload.header.PeriodosVenta === 'Futuro' && future1) && <Column dataField=\"VF1\" dataType=\"number\" width={150} caption={reportPayload.titles.PFuturoNombre1} visible={true} />}\n {(reportPayload.header.PeriodosVenta === 'Futuro' && future2) && <Column dataField=\"VF2\" dataType=\"number\" width={150} caption={reportPayload.titles.PFuturoNombre2} visible={true} />}\n {(reportPayload.header.PeriodosVenta === 'Futuro' && future3) && <Column dataField=\"VF3\" dataType=\"number\" width={150} caption={reportPayload.titles.PFuturoNombre3} visible={true} />}\n {(reportPayload.header.PeriodosVenta === 'Futuro' && future4) && <Column dataField=\"VF4\" dataType=\"number\" width={150} caption={reportPayload.titles.PFuturoNombre4} visible={true} />}\n {(reportPayload.header.PeriodosVenta === 'Futuro' && future5) && <Column dataField=\"VF5\" dataType=\"number\" width={150} caption={reportPayload.titles.PFuturoNombre5} visible={true} />}\n {(reportPayload.header.PeriodosVenta === 'Futuro' && future6) && <Column dataField=\"VF6\" dataType=\"number\" width={150} caption={reportPayload.titles.PFuturoNombre6} visible={true} />}\n {(reportPayload.header.PeriodosVenta === 'Futuro' && future7) && <Column dataField=\"VF7\" dataType=\"number\" width={150} caption={reportPayload.titles.PFuturoNombre7} visible={true} />}\n\n <Column dataField=\"Tot_ant\" dataType=\"number\" width={150} caption={reportPayload.titles.Total_ant_Nombre} />\n\n <Column dataField=\"Ex\" dataType=\"number\" width={110} caption=\"Existencia\" />\n <Column dataField=\"Ad\" dataType=\"number\" width={110} caption=\"Adeudo\" />\n <Column dataField=\"OC\" dataType=\"number\" width={110} caption=\"OC\" />\n <Column dataField=\"Color\" dataType=\"string\" width={200} caption=\"Color Seguimiento\" visible={false} />\n <Column dataField=\"Patas\" dataType=\"number\" width={110} caption=\"Patas\" />\n <Column dataField=\"OCEzequiel\" dataType=\"string\" width={200} caption=\"OC Ezequiel\" visible={true} />\n <Column dataField=\"PatasEzequiel\" dataType=\"string\" width={200} caption=\"Patas Ezequiel\" visible={true} />\n <Summary>\n <GroupItemGrid\n column=\"Ants2\"\n summaryType=\"sum\"\n valueFormat=\",##0\"\n displayFormat={reportPayload.titles.Periodo3Nombre + \" {0}\"}\n showInGroupFooter={false}>\n </GroupItemGrid>\n <GroupItemGrid\n column=\"Ants\"\n summaryType=\"sum\"\n valueFormat=\",##0\"\n displayFormat={reportPayload.titles.Periodo2Nombre + \" {0}\"}\n showInGroupFooter={false}>\n </GroupItemGrid>\n <GroupItemGrid\n column=\"Ant\"\n summaryType=\"sum\"\n valueFormat=\",##0\"\n displayFormat={reportPayload.titles.Periodo1Nombre + \" {0}\"}\n showInGroupFooter={false}>\n </GroupItemGrid>\n <GroupItemGrid\n column=\"Act\"\n summaryType=\"sum\"\n valueFormat=\",##0\"\n displayFormat={reportPayload.titles.PeriodoNombre + \" {0}\"}\n showInGroupFooter={false}>\n </GroupItemGrid>\n <GroupItemGrid\n column=\"Tot\"\n summaryType=\"sum\"\n valueFormat=\",##0\"\n displayFormat=\"Total Ejercicio {0}\"\n showInGroupFooter={false}>\n </GroupItemGrid>\n <GroupItemGrid\n column=\"Tot_ant\"\n summaryType=\"sum\"\n valueFormat=\",##0\"\n displayFormat=\"Total Ejercicio Ant. {0}\"\n showInGroupFooter={false}>\n </GroupItemGrid>\n {(reportPayload.header.PeriodosVenta === 'Pasado') &&\n <GroupItemGrid\n column=\"Ants2_ant\"\n summaryType=\"sum\"\n valueFormat=\",##0\"\n displayFormat={reportPayload.titles.Periodo3_ant_Nombre + \" {0}\"}\n showInGroupFooter={false}>\n </GroupItemGrid>\n }\n {(reportPayload.header.PeriodosVenta === 'Pasado') &&\n <GroupItemGrid\n column=\"Ants_ant\"\n summaryType=\"sum\"\n valueFormat=\",##0\"\n displayFormat={reportPayload.titles.Periodo2_ant_Nombre + \" {0}\"}\n showInGroupFooter={false}>\n </GroupItemGrid>\n }\n {(reportPayload.header.PeriodosVenta === 'Pasado') &&\n <GroupItemGrid\n column=\"Ant_ant\"\n summaryType=\"sum\"\n valueFormat=\",##0\"\n displayFormat={reportPayload.titles.Periodo1_ant_Nombre + \" {0}\"}\n showInGroupFooter={false}>\n </GroupItemGrid>\n }\n {(reportPayload.header.PeriodosVenta === 'Pasado') && <GroupItemGrid\n column=\"Act_ant\"\n summaryType=\"sum\"\n valueFormat=\",##0\"\n displayFormat={reportPayload.titles.Periodo_ant_Nombre + \" {0}\"}\n showInGroupFooter={false}>\n </GroupItemGrid>\n }\n <GroupItemGrid\n column=\"Ex\"\n summaryType=\"sum\"\n valueFormat=\",##0\"\n displayFormat=\"Existencia {0}\"\n showInGroupFooter={false}>\n </GroupItemGrid>\n <GroupItemGrid\n column=\"Ad\"\n summaryType=\"sum\"\n valueFormat=\",##0\"\n displayFormat=\"Adeudo {0}\"\n showInGroupFooter={false}>\n </GroupItemGrid>\n <GroupItemGrid\n column=\"OC\"\n summaryType=\"sum\"\n valueFormat=\",##0\"\n displayFormat=\"OC {0}\"\n showInGroupFooter={false}>\n </GroupItemGrid>\n <GroupItemGrid\n column=\"Patas\"\n summaryType=\"sum\"\n valueFormat=\",##0\"\n displayFormat=\"Patas {0}\"\n showInGroupFooter={false}>\n </GroupItemGrid>\n {(reportPayload.header.PeriodosVenta === 'Futuro' && future1) &&\n <GroupItemGrid\n column=\"VF1\"\n summaryType=\"sum\"\n valueFormat=\",##0\"\n displayFormat={reportPayload.titles.PFuturoNombre1 + \" {0}\"}\n showInGroupFooter={false}>\n </GroupItemGrid>\n }\n {(reportPayload.header.PeriodosVenta === 'Futuro' && future2) &&\n <GroupItemGrid\n column=\"VF2\"\n summaryType=\"sum\"\n valueFormat=\",##0\"\n displayFormat={reportPayload.titles.PFuturoNombre2 + \" {0}\"}\n showInGroupFooter={false}>\n </GroupItemGrid>\n }\n {(reportPayload.header.PeriodosVenta === 'Futuro' && future3) &&\n <GroupItemGrid\n column=\"VF3\"\n summaryType=\"sum\"\n valueFormat=\",##0\"\n displayFormat={reportPayload.titles.PFuturoNombre3 + \" {0}\"}\n showInGroupFooter={false}>\n </GroupItemGrid>\n }\n {(reportPayload.header.PeriodosVenta === 'Futuro' && future4) &&\n <GroupItemGrid\n column=\"VF4\"\n summaryType=\"sum\"\n valueFormat=\",##0\"\n displayFormat={reportPayload.titles.PFuturoNombre4 + \" {0}\"}\n showInGroupFooter={false}>\n </GroupItemGrid>\n }\n {(reportPayload.header.PeriodosVenta === 'Futuro' && future5) &&\n <GroupItemGrid\n column=\"VF5\"\n summaryType=\"sum\"\n valueFormat=\",##0\"\n displayFormat={reportPayload.titles.PFuturoNombre5 + \" {0}\"}\n showInGroupFooter={false}>\n </GroupItemGrid>\n }\n {(reportPayload.header.PeriodosVenta === 'Futuro' && future6) &&\n <GroupItemGrid\n column=\"VF6\"\n summaryType=\"sum\"\n valueFormat=\",##0\"\n displayFormat={reportPayload.titles.PFuturoNombre6 + \" {0}\"}\n showInGroupFooter={false}>\n </GroupItemGrid>\n }\n {(reportPayload.header.PeriodosVenta === 'Futuro' && future7) &&\n <GroupItemGrid\n column=\"VF7\"\n summaryType=\"sum\"\n valueFormat=\",##0\"\n displayFormat={reportPayload.titles.PFuturoNombre7 + \" {0}\"}\n showInGroupFooter={false}>\n </GroupItemGrid>\n }\n <TotalItem\n column=\"Act\"\n summaryType=\"sum\"\n valueFormat=\",##0\"\n displayFormat=\"{0}\"\n showInGroupFooter={false}>\n </TotalItem>\n <TotalItem\n column=\"Ant\"\n summaryType=\"sum\"\n valueFormat=\",##0\"\n displayFormat=\"{0}\"\n showInGroupFooter={false}>\n </TotalItem>\n <TotalItem\n column=\"Ants\"\n summaryType=\"sum\"\n valueFormat=\",##0\"\n displayFormat=\"{0}\"\n showInGroupFooter={false}>\n </TotalItem>\n <TotalItem\n column=\"Ants2\"\n summaryType=\"sum\"\n valueFormat=\",##0\"\n displayFormat=\"{0}\"\n showInGroupFooter={false}>\n </TotalItem>\n <TotalItem\n column=\"Act_ant\"\n summaryType=\"sum\"\n valueFormat=\",##0\"\n displayFormat=\"{0}\"\n showInGroupFooter={false}>\n </TotalItem>\n <TotalItem\n column=\"Ant_ant\"\n summaryType=\"sum\"\n valueFormat=\",##0\"\n displayFormat=\"{0}\"\n showInGroupFooter={false}>\n </TotalItem>\n <TotalItem\n column=\"Ants_ant\"\n summaryType=\"sum\"\n valueFormat=\",##0\"\n displayFormat=\"{0}\"\n showInGroupFooter={false}>\n </TotalItem>\n <TotalItem\n column=\"Ants2_ant\"\n summaryType=\"sum\"\n valueFormat=\",##0\"\n displayFormat=\"{0}\"\n showInGroupFooter={false}>\n </TotalItem>\n <TotalItem\n column=\"Ex\"\n summaryType=\"sum\"\n valueFormat=\",##0\"\n displayFormat=\"{0}\"\n showInGroupFooter={false}>\n </TotalItem>\n <TotalItem\n column=\"Ad\"\n summaryType=\"sum\"\n valueFormat=\",##0\"\n displayFormat=\"{0}\"\n showInGroupFooter={false}>\n </TotalItem>\n <TotalItem\n column=\"OC\"\n summaryType=\"sum\"\n valueFormat=\",##0\"\n displayFormat=\"{0}\"\n showInGroupFooter={false}>\n </TotalItem>\n <TotalItem\n column=\"Patas\"\n summaryType=\"sum\"\n valueFormat=\",##0\"\n displayFormat=\"{0}\"\n showInGroupFooter={false}>\n </TotalItem>\n\n <TotalItem\n column=\"VF1\"\n summaryType=\"sum\"\n valueFormat=\",##0\"\n displayFormat=\"{0}\"\n showInGroupFooter={false}>\n </TotalItem>\n <TotalItem\n column=\"VF2\"\n summaryType=\"sum\"\n valueFormat=\",##0\"\n displayFormat=\"{0}\"\n showInGroupFooter={false}>\n </TotalItem>\n <TotalItem\n column=\"VF3\"\n summaryType=\"sum\"\n valueFormat=\",##0\"\n displayFormat=\"{0}\"\n showInGroupFooter={false}>\n </TotalItem>\n <TotalItem\n column=\"VF4\"\n summaryType=\"sum\"\n valueFormat=\",##0\"\n displayFormat=\"{0}\"\n showInGroupFooter={false}>\n </TotalItem>\n <TotalItem\n column=\"VF5\"\n summaryType=\"sum\"\n valueFormat=\",##0\"\n displayFormat=\"{0}\"\n showInGroupFooter={false}>\n </TotalItem>\n <TotalItem\n column=\"VF6\"\n summaryType=\"sum\"\n valueFormat=\",##0\"\n displayFormat=\"{0}\"\n showInGroupFooter={false}>\n </TotalItem>\n <TotalItem\n column=\"VF7\"\n summaryType=\"sum\"\n valueFormat=\",##0\"\n displayFormat=\"{0}\"\n showInGroupFooter={false}>\n </TotalItem>\n <TotalItem\n column=\"Tot\"\n summaryType=\"sum\"\n valueFormat=\",##0\"\n displayFormat=\"{0}\"\n showInGroupFooter={false}>\n </TotalItem>\n <TotalItem\n column=\"Tot_ant\"\n summaryType=\"sum\"\n valueFormat=\",##0\"\n displayFormat=\"{0}\"\n showInGroupFooter={false}>\n </TotalItem>\n </Summary>\n </DataGrid>\n </Tab>\n <Tab title=\"Almacenes Específicos\" colCount={2} visible={reportPayload.header.Nivel === 'Desglosado'}>\n <DataGrid\n height={800}\n id=\"gridSugerenciaAlmEspecifico\"\n columnsAutoWidth={true}\n dataSource={reportPayload.specificWHS}\n allowColumnReordering={false}\n allowColumnResizing={true}\n columnResizingMode={\"widget\"}\n showBorders={true}\n showRowLines={true}\n showColumnLines={true}\n remoteOperations={{ filtering: true }}\n ref={gridSugerenciaAlmEspRef}\n onExporting={onExporting}\n onRowPrepared={onRowPrepared}\n >\n <Scrolling rowRenderingMode='virtual'></Scrolling>\n <Paging defaultPageSize={10} />\n <Pager\n visible={true}\n allowedPageSizes={allowedPageSizes}\n displayMode='compact'\n showPageSizeSelector={true}\n showInfo={true}\n showNavigationButtons={true}\n />\n <FilterRow visible={true} />\n <FilterPanel visible={true} />\n <FilterBuilderPopup position={filterBuilderPopupPosition} />\n\n <HeaderFilter visible={true} />\n\n <GroupPanel visible={true} />\n <SearchPanel visible={true} />\n <ColumnChooser\n enabled={true}\n mode='select'\n >\n <ColumnChooserSearch\n enabled={true}\n />\n\n <ColumnChooserSelection\n allowSelectAll={true}\n selectByClick={true}\n recursive={true}\n />\n </ColumnChooser>\n <Grouping autoExpandAll={autoExpandAll} />\n <StateStoring enabled={true} type=\"localStorage\" storageKey=\"gridContainerPOWHSSuggestionSpecWHS\" />\n\n <Sorting mode=\"multiple\" />\n\n <Export enabled={true} />\n\n <Column dataField=\"Plaza\" dataType=\"string\" width={150} caption=\"Plaza\" />\n <Column dataField=\"Art\" dataType=\"string\" width={150} caption=\"Artículo\" defaultSortOrder=\"asc\"/>\n <Column dataField=\"Descr\" dataType=\"string\" width={300} caption=\"Descripción\" />\n <Column dataField=\"Alm\" dataType=\"string\" width={150} caption=\"Almacén\" defaultSortOrder=\"asc\"/>\n\n <Column dataField=\"Ants2\" dataType=\"number\" width={150} caption={reportPayload.titles.Periodo3Nombre} visible={true} />\n <Column dataField=\"Ants\" dataType=\"number\" width={150} caption={reportPayload.titles.Periodo2Nombre} visible={true} />\n <Column dataField=\"Ant\" dataType=\"number\" width={150} caption={reportPayload.titles.Periodo1Nombre} visible={true} />\n <Column dataField=\"Act\" dataType=\"number\" width={150} caption={reportPayload.titles.PeriodoNombre} visible={true} />\n\n\n <Column dataField=\"Tot\" dataType=\"number\" width={150} caption={reportPayload.titles.Total_Nombre} />\n\n {(reportPayload.header.PeriodosVenta === 'Pasado') && <Column dataField=\"Ants2_ant\" dataType=\"number\" width={150} caption={reportPayload.titles.Periodo3_ant_Nombre} visible={true} />}\n {(reportPayload.header.PeriodosVenta === 'Pasado') && <Column dataField=\"Ants_ant\" dataType=\"number\" width={150} caption={reportPayload.titles.Periodo2_ant_Nombre} visible={true} />}\n {(reportPayload.header.PeriodosVenta === 'Pasado') && <Column dataField=\"Ant_ant\" dataType=\"number\" width={150} caption={reportPayload.titles.Periodo1_ant_Nombre} visible={true} />}\n {(reportPayload.header.PeriodosVenta === 'Pasado') && <Column dataField=\"Act_ant\" dataType=\"number\" width={150} caption={reportPayload.titles.Periodo_ant_Nombre} visible={true} />}\n\n {(reportPayload.header.PeriodosVenta === 'Futuro' && future1) && <Column dataField=\"VF1\" dataType=\"number\" width={150} caption={reportPayload.titles.PFuturoNombre1} visible={true} />}\n {(reportPayload.header.PeriodosVenta === 'Futuro' && future2) && <Column dataField=\"VF2\" dataType=\"number\" width={150} caption={reportPayload.titles.PFuturoNombre2} visible={true} />}\n {(reportPayload.header.PeriodosVenta === 'Futuro' && future3) && <Column dataField=\"VF3\" dataType=\"number\" width={150} caption={reportPayload.titles.PFuturoNombre3} visible={true} />}\n {(reportPayload.header.PeriodosVenta === 'Futuro' && future4) && <Column dataField=\"VF4\" dataType=\"number\" width={150} caption={reportPayload.titles.PFuturoNombre4} visible={true} />}\n {(reportPayload.header.PeriodosVenta === 'Futuro' && future5) && <Column dataField=\"VF5\" dataType=\"number\" width={150} caption={reportPayload.titles.PFuturoNombre5} visible={true} />}\n {(reportPayload.header.PeriodosVenta === 'Futuro' && future6) && <Column dataField=\"VF6\" dataType=\"number\" width={150} caption={reportPayload.titles.PFuturoNombre6} visible={true} />}\n {(reportPayload.header.PeriodosVenta === 'Futuro' && future7) && <Column dataField=\"VF7\" dataType=\"number\" width={150} caption={reportPayload.titles.PFuturoNombre7} visible={true} />}\n\n <Column dataField=\"Tot_ant\" dataType=\"number\" width={150} caption={reportPayload.titles.Total_ant_Nombre} />\n\n <Column dataField=\"Ex\" dataType=\"number\" width={110} caption=\"Existencia\" />\n <Column dataField=\"Ad\" dataType=\"number\" width={110} caption=\"Adeudo\" />\n <Column dataField=\"OC\" dataType=\"number\" width={110} caption=\"OC\" />\n <Column dataField=\"Color\" dataType=\"string\" width={200} caption=\"Color Seguimiento\" visible={false} />\n <Column dataField=\"Patas\" dataType=\"number\" width={110} caption=\"Patas\" />\n <Column dataField=\"OCEzequiel\" dataType=\"string\" width={200} caption=\"OC Ezequiel\" visible={true} />\n <Column dataField=\"PatasEzequiel\" dataType=\"string\" width={200} caption=\"Patas Ezequiel\" visible={true} />\n <Summary>\n <GroupItemGrid\n column=\"Ants2\"\n summaryType=\"sum\"\n valueFormat=\",##0\"\n displayFormat={reportPayload.titles.Periodo3Nombre + \" {0}\"}\n showInGroupFooter={false}>\n </GroupItemGrid>\n <GroupItemGrid\n column=\"Ants\"\n summaryType=\"sum\"\n valueFormat=\",##0\"\n displayFormat={reportPayload.titles.Periodo2Nombre + \" {0}\"}\n showInGroupFooter={false}>\n </GroupItemGrid>\n <GroupItemGrid\n column=\"Ant\"\n summaryType=\"sum\"\n valueFormat=\",##0\"\n displayFormat={reportPayload.titles.Periodo1Nombre + \" {0}\"}\n showInGroupFooter={false}>\n </GroupItemGrid>\n <GroupItemGrid\n column=\"Act\"\n summaryType=\"sum\"\n valueFormat=\",##0\"\n displayFormat={reportPayload.titles.PeriodoNombre + \" {0}\"}\n showInGroupFooter={false}>\n </GroupItemGrid>\n <GroupItemGrid\n column=\"Tot\"\n summaryType=\"sum\"\n valueFormat=\",##0\"\n displayFormat=\"Total Ejercicio {0}\"\n showInGroupFooter={false}>\n </GroupItemGrid>\n <GroupItemGrid\n column=\"Tot_ant\"\n summaryType=\"sum\"\n valueFormat=\",##0\"\n displayFormat=\"Total Ejercicio Ant. {0}\"\n showInGroupFooter={false}>\n </GroupItemGrid>\n {(reportPayload.header.PeriodosVenta === 'Pasado') &&\n <GroupItemGrid\n column=\"Ants2_ant\"\n summaryType=\"sum\"\n valueFormat=\",##0\"\n displayFormat={reportPayload.titles.Periodo3_ant_Nombre + \" {0}\"}\n showInGroupFooter={false}>\n </GroupItemGrid>\n }\n {(reportPayload.header.PeriodosVenta === 'Pasado') &&\n <GroupItemGrid\n column=\"Ants_ant\"\n summaryType=\"sum\"\n valueFormat=\",##0\"\n displayFormat={reportPayload.titles.Periodo2_ant_Nombre + \" {0}\"}\n showInGroupFooter={false}>\n </GroupItemGrid>\n }\n {(reportPayload.header.PeriodosVenta === 'Pasado') &&\n <GroupItemGrid\n column=\"Ant_ant\"\n summaryType=\"sum\"\n valueFormat=\",##0\"\n displayFormat={reportPayload.titles.Periodo1_ant_Nombre + \" {0}\"}\n showInGroupFooter={false}>\n </GroupItemGrid>\n }\n {(reportPayload.header.PeriodosVenta === 'Pasado') && <GroupItemGrid\n column=\"Act_ant\"\n summaryType=\"sum\"\n valueFormat=\",##0\"\n displayFormat={reportPayload.titles.Periodo_ant_Nombre + \" {0}\"}\n showInGroupFooter={false}>\n </GroupItemGrid>\n }\n <GroupItemGrid\n column=\"Ex\"\n summaryType=\"sum\"\n valueFormat=\",##0\"\n displayFormat=\"Existencia {0}\"\n showInGroupFooter={false}>\n </GroupItemGrid>\n <GroupItemGrid\n column=\"Ad\"\n summaryType=\"sum\"\n valueFormat=\",##0\"\n displayFormat=\"Adeudo {0}\"\n showInGroupFooter={false}>\n </GroupItemGrid>\n <GroupItemGrid\n column=\"OC\"\n summaryType=\"sum\"\n valueFormat=\",##0\"\n displayFormat=\"OC {0}\"\n showInGroupFooter={false}>\n </GroupItemGrid>\n <GroupItemGrid\n column=\"Patas\"\n summaryType=\"sum\"\n valueFormat=\",##0\"\n displayFormat=\"Patas {0}\"\n showInGroupFooter={false}>\n </GroupItemGrid>\n {(reportPayload.header.PeriodosVenta === 'Futuro' && future1) &&\n <GroupItemGrid\n column=\"VF1\"\n summaryType=\"sum\"\n valueFormat=\",##0\"\n displayFormat={reportPayload.titles.PFuturoNombre1 + \" {0}\"}\n showInGroupFooter={false}>\n </GroupItemGrid>\n }\n {(reportPayload.header.PeriodosVenta === 'Futuro' && future2) &&\n <GroupItemGrid\n column=\"VF2\"\n summaryType=\"sum\"\n valueFormat=\",##0\"\n displayFormat={reportPayload.titles.PFuturoNombre2 + \" {0}\"}\n showInGroupFooter={false}>\n </GroupItemGrid>\n }\n {(reportPayload.header.PeriodosVenta === 'Futuro' && future3) &&\n <GroupItemGrid\n column=\"VF3\"\n summaryType=\"sum\"\n valueFormat=\",##0\"\n displayFormat={reportPayload.titles.PFuturoNombre3 + \" {0}\"}\n showInGroupFooter={false}>\n </GroupItemGrid>\n }\n {(reportPayload.header.PeriodosVenta === 'Futuro' && future4) &&\n <GroupItemGrid\n column=\"VF4\"\n summaryType=\"sum\"\n valueFormat=\",##0\"\n displayFormat={reportPayload.titles.PFuturoNombre4 + \" {0}\"}\n showInGroupFooter={false}>\n </GroupItemGrid>\n }\n {(reportPayload.header.PeriodosVenta === 'Futuro' && future5) &&\n <GroupItemGrid\n column=\"VF5\"\n summaryType=\"sum\"\n valueFormat=\",##0\"\n displayFormat={reportPayload.titles.PFuturoNombre5 + \" {0}\"}\n showInGroupFooter={false}>\n </GroupItemGrid>\n }\n {(reportPayload.header.PeriodosVenta === 'Futuro' && future6) &&\n <GroupItemGrid\n column=\"VF6\"\n summaryType=\"sum\"\n valueFormat=\",##0\"\n displayFormat={reportPayload.titles.PFuturoNombre6 + \" {0}\"}\n showInGroupFooter={false}>\n </GroupItemGrid>\n }\n {(reportPayload.header.PeriodosVenta === 'Futuro' && future7) &&\n <GroupItemGrid\n column=\"VF7\"\n summaryType=\"sum\"\n valueFormat=\",##0\"\n displayFormat={reportPayload.titles.PFuturoNombre7 + \" {0}\"}\n showInGroupFooter={false}>\n </GroupItemGrid>\n }\n <TotalItem\n column=\"Act\"\n summaryType=\"sum\"\n valueFormat=\",##0\"\n displayFormat=\"{0}\"\n showInGroupFooter={false}>\n </TotalItem>\n <TotalItem\n column=\"Ant\"\n summaryType=\"sum\"\n valueFormat=\",##0\"\n displayFormat=\"{0}\"\n showInGroupFooter={false}>\n </TotalItem>\n <TotalItem\n column=\"Ants\"\n summaryType=\"sum\"\n valueFormat=\",##0\"\n displayFormat=\"{0}\"\n showInGroupFooter={false}>\n </TotalItem>\n <TotalItem\n column=\"Ants2\"\n summaryType=\"sum\"\n valueFormat=\",##0\"\n displayFormat=\"{0}\"\n showInGroupFooter={false}>\n </TotalItem>\n <TotalItem\n column=\"Act_ant\"\n summaryType=\"sum\"\n valueFormat=\",##0\"\n displayFormat=\"{0}\"\n showInGroupFooter={false}>\n </TotalItem>\n <TotalItem\n column=\"Ant_ant\"\n summaryType=\"sum\"\n valueFormat=\",##0\"\n displayFormat=\"{0}\"\n showInGroupFooter={false}>\n </TotalItem>\n <TotalItem\n column=\"Ants_ant\"\n summaryType=\"sum\"\n valueFormat=\",##0\"\n displayFormat=\"{0}\"\n showInGroupFooter={false}>\n </TotalItem>\n <TotalItem\n column=\"Ants2_ant\"\n summaryType=\"sum\"\n valueFormat=\",##0\"\n displayFormat=\"{0}\"\n showInGroupFooter={false}>\n </TotalItem>\n <TotalItem\n column=\"Ex\"\n summaryType=\"sum\"\n valueFormat=\",##0\"\n displayFormat=\"{0}\"\n showInGroupFooter={false}>\n </TotalItem>\n <TotalItem\n column=\"Ad\"\n summaryType=\"sum\"\n valueFormat=\",##0\"\n displayFormat=\"{0}\"\n showInGroupFooter={false}>\n </TotalItem>\n <TotalItem\n column=\"OC\"\n summaryType=\"sum\"\n valueFormat=\",##0\"\n displayFormat=\"{0}\"\n showInGroupFooter={false}>\n </TotalItem>\n <TotalItem\n column=\"Patas\"\n summaryType=\"sum\"\n valueFormat=\",##0\"\n displayFormat=\"{0}\"\n showInGroupFooter={false}>\n </TotalItem>\n\n <TotalItem\n column=\"VF1\"\n summaryType=\"sum\"\n valueFormat=\",##0\"\n displayFormat=\"{0}\"\n showInGroupFooter={false}>\n </TotalItem>\n <TotalItem\n column=\"VF2\"\n summaryType=\"sum\"\n valueFormat=\",##0\"\n displayFormat=\"{0}\"\n showInGroupFooter={false}>\n </TotalItem>\n <TotalItem\n column=\"VF3\"\n summaryType=\"sum\"\n valueFormat=\",##0\"\n displayFormat=\"{0}\"\n showInGroupFooter={false}>\n </TotalItem>\n <TotalItem\n column=\"VF4\"\n summaryType=\"sum\"\n valueFormat=\",##0\"\n displayFormat=\"{0}\"\n showInGroupFooter={false}>\n </TotalItem>\n <TotalItem\n column=\"VF5\"\n summaryType=\"sum\"\n valueFormat=\",##0\"\n displayFormat=\"{0}\"\n showInGroupFooter={false}>\n </TotalItem>\n <TotalItem\n column=\"VF6\"\n summaryType=\"sum\"\n valueFormat=\",##0\"\n displayFormat=\"{0}\"\n showInGroupFooter={false}>\n </TotalItem>\n <TotalItem\n column=\"VF7\"\n summaryType=\"sum\"\n valueFormat=\",##0\"\n displayFormat=\"{0}\"\n showInGroupFooter={false}>\n </TotalItem>\n <TotalItem\n column=\"Tot\"\n summaryType=\"sum\"\n valueFormat=\",##0\"\n displayFormat=\"{0}\"\n showInGroupFooter={false}>\n </TotalItem>\n <TotalItem\n column=\"Tot_ant\"\n summaryType=\"sum\"\n valueFormat=\",##0\"\n displayFormat=\"{0}\"\n showInGroupFooter={false}>\n </TotalItem>\n </Summary>\n </DataGrid>\n </Tab>\n <Tab title=\"O.C.\" colCount={2} visible={reportPayload.header.Nivel === 'Desglosado'}>\n <DataGrid\n height={800}\n id=\"gridSugerenciaOC\"\n columnsAutoWidth={true}\n dataSource={reportPayload.po}\n allowColumnReordering={true}\n allowColumnResizing={true}\n columnResizingMode={\"widget\"}\n showBorders={true}\n showRowLines={true}\n showColumnLines={true}\n remoteOperations={{ filtering: true }}\n ref={gridSugerenciaOCRef}\n onExporting={onExporting}\n onRowPrepared={onRowPrepared}\n >\n <Scrolling rowRenderingMode='virtual'></Scrolling>\n <Paging defaultPageSize={10} />\n <Pager\n visible={true}\n allowedPageSizes={allowedPageSizes}\n displayMode='compact'\n showPageSizeSelector={true}\n showInfo={true}\n showNavigationButtons={true}\n />\n <FilterRow visible={true} />\n <FilterPanel visible={true} />\n <FilterBuilderPopup position={filterBuilderPopupPosition} />\n\n <HeaderFilter visible={true} />\n\n <GroupPanel visible={true} />\n <SearchPanel visible={true} />\n <ColumnChooser\n enabled={true}\n mode='select'\n >\n <ColumnChooserSearch\n enabled={true}\n />\n\n <ColumnChooserSelection\n allowSelectAll={true}\n selectByClick={true}\n recursive={true}\n />\n </ColumnChooser>\n <Grouping autoExpandAll={autoExpandAll} />\n <StateStoring enabled={true} type=\"localStorage\" storageKey=\"gridContainerPOPOSuggestion\" />\n <Export enabled={true} />\n\n <Column dataField=\"Plaza\" dataType=\"string\" width={150} caption=\"Plaza\" />\n\n <Column dataField=\"Mov\" dataType=\"string\" width={150} caption=\"Movimiento\" />\n <Column dataField=\"MovID\" dataType=\"string\" width={150} caption=\"Folio\" />\n <Column dataField=\"Fecha\" dataType=\"date\" width={150} caption=\"Fecha\" />\n <Column dataField=\"Art\" dataType=\"string\" width={150} caption=\"Artículo\" />\n <Column dataField=\"Descr\" dataType=\"string\" width={150} caption=\"Descripción\" />\n <Column dataField=\"Cant\" dataType=\"number\" width={150} caption=\"Adeudo\" />\n <Column dataField=\"Alm\" dataType=\"string\" width={150} caption=\"Almacén\" />\n\n <Summary>\n <TotalItem\n column=\"Cant\"\n summaryType=\"sum\"\n valueFormat=\",##0\"\n displayFormat=\"{0}\"\n showInGroupFooter={false}>\n </TotalItem>\n <GroupItemGrid\n column=\"Cant\"\n summaryType=\"sum\"\n valueFormat=\",##0\"\n displayFormat=\"Adeudo {0}\"\n showInGroupFooter={false}>\n </GroupItemGrid>\n </Summary>\n </DataGrid>\n </Tab>\n </TabbedItem>\n </GroupItem>\n </Form>\n </div>\n </div>\n );\n}","import React, { useState, useEffect, useRef, useMemo } from 'react';\n\n// LoadPanel\nimport { LoadPanel } from 'devextreme-react/load-panel';\n\n// Toast\nimport { Toast } from 'devextreme-react/toast';\n\nimport pako from 'pako';\n\n//Form\nimport Form, { GroupItem, Label, TabbedItem, TabPanelOptions, Tab, EmptyItem } from 'devextreme-react/form';\n\nimport { Auth, API, Storage, label } from 'aws-amplify';\n\n// Ruteador\nimport { Route, Link, useHistory } from \"react-router-dom\";\n\n// Grid\nimport DataGrid, {\n Column, FilterRow, HeaderFilter, FilterPanel, FilterBuilderPopup,\n GroupPanel, Grouping, SearchPanel, Sorting, Editing, Lookup, Toolbar, Item, RequiredRule,\n Scrolling, Pager, Paging, Summary, TotalItem, StateStoring, ColumnChooser, Format, Selection,\n Export, ColumnChooserSearch, ColumnChooserSelection\n} from 'devextreme-react/data-grid';\n\n//CheckBox\nimport CheckBox from 'devextreme-react/check-box';\n\n// Iconos\nimport { FontAwesomeIcon } from \"@fortawesome/react-fontawesome\";\nimport { faPencilAlt } from \"@fortawesome/pro-solid-svg-icons\";\nimport { faArrowRotateLeft } from \"@fortawesome/pro-solid-svg-icons\";\nimport { faSave } from \"@fortawesome/pro-solid-svg-icons\";\nimport { faList } from \"@fortawesome/pro-duotone-svg-icons\";\nimport { faArrowsRotate } from \"@fortawesome/pro-solid-svg-icons\";\nimport { faBedFront } from \"@fortawesome/pro-duotone-svg-icons\";\n\nimport 'devextreme/data/odata/store';\nimport CustomStore from 'devextreme/data/custom_store';\n\nimport '../ListStyle.css';\n\nimport dxDateBox from \"devextreme/ui/date_box\";\n\nimport dxNumberBox from \"devextreme/ui/number_box\";\n\nimport { Workbook } from 'exceljs';\nimport { saveAs } from 'file-saver';\nimport { exportDataGrid } from 'devextreme/excel_exporter'\n\nimport { Template } from 'devextreme-react/core/template';\nimport TextBox from 'devextreme-react/text-box';\n\ndxDateBox.defaultOptions({\n options: {\n dateSerializationFormat: \"yyyy-MM-dd\"\n }\n});\n\ndxNumberBox.defaultOptions({\n options: {\n step: 0\n }\n});\n\nfunction isNotEmpty(value) {\n return value !== undefined && value !== null && value !== '';\n}\n\nexport default function ItemPOSuggestion(props) {\n const history = useHistory();\n\n const [isDetail, setIsDetail] = useState(false);\n const [articulo, setArticulo] = useState();\n const [itemPayload, setItemPayload] = useState({\n header: {}\n });\n\n const [conSeguimientoPOEsBox, setConSeguimientoPOEsBox] = useState(false);\n\n const [autoExpandAll, setAutoExpandAll] = useState(true);\n\n const [visibleLoadPanel, setVisibleLoadPanel] = useState(false);\n\n const [visibleToast, setVisibleToast] = useState(false);\n const [messageToast, setMessageToast] = useState('');\n const [typeToast, setTypeToast] = useState('success');\n\n const [activateUpdateForm, setActivateUpdateForm] = useState(false);\n const [activateSaveButton, setActivateSaveButton] = useState(false);\n\n //Ref para el form\n const [formDatosGeneralesRef, setFormDatosGeneralesRef] = useState(React.createRef());\n\n const filterBuilderPopupPosition = {\n of: window,\n at: 'top',\n my: 'top',\n offset: { y: 10 },\n };\n\n const allowedPageSizes = [5, 10, 15, 20, 'all'];\n\n function getOrderDay(rowData) {\n return (new Date(rowData.OrderDate)).getDay();\n }\n\n var colores = useMemo(() => {\n return [\n {\n name: 'Rojo',\n value: 'Rojo',\n color: 'red'\n },\n {\n name: 'Verde',\n value: 'Verde',\n color: 'green'\n },\n {\n name: 'Azul',\n value: 'Azul',\n color: 'blue'\n },\n {\n name: 'Amarillo',\n value: 'Amarillo',\n color: 'yellow'\n },\n {\n name: 'Morado',\n value: 'Morado',\n color: 'purple'\n },\n {\n name: 'Rosa',\n value: 'Rosa',\n color: 'pink'\n }\n ];\n }, []);\n\n const filterBuilder = {\n customOperations: [{\n name: 'weekends',\n caption: 'Weekends',\n dataTypes: ['date'],\n icon: 'check',\n hasValue: false,\n calculateFilterExpression: () => [[getOrderDay, '=', 0], 'or', [getOrderDay, '=', 6]],\n }],\n allowHierarchicalFields: true,\n };\n\n //Ref para el grid Tablero de Control\n const [gridTableroRef, setGridTableroRef] = useState(React.createRef());\n\n function onAutoExpandAllChanged() {\n setAutoExpandAll(!autoExpandAll)\n };\n\n async function getItemRecords(sqlFilter) {\n try {\n let apiName = 'AdminSC';\n let path = '/procesaarticulos';\n\n let myInit = {\n headers: {\n 'Content-Type': 'application/json',\n Authorization: `${(await Auth.currentSession()).getAccessToken().getJwtToken()}`\n },\n queryStringParameters: {\n action: 'listPO',\n sqlFilter: sqlFilter,\n username: JSON.parse(JSON.stringify(await Auth.currentAuthenticatedUser())).username\n }\n }\n\n var itemsGet = await API.get(apiName, path, myInit);\n }\n catch (e) {\n if (e === 'No current user') {\n history.push('/');\n\n window.location.reload();\n }\n }\n\n return itemsGet;\n }\n\n const store = new CustomStore({\n key: 'Articulo',\n load(loadOptions) {\n let sqlFilter = '(';\n [\n 'filter'\n ].forEach((i) => {\n if (i in loadOptions && isNotEmpty(loadOptions[i])) {\n var filters = loadOptions[i];\n\n var filtersLength = filters.length;\n\n for (var i = 0; i <= filtersLength; i++) {\n var singleFilter = filters[i];\n var singleFilterType = typeof singleFilter;\n var singleFilterIsArray = Array.isArray(singleFilter);\n var singleFilterIsDate = singleFilter instanceof Date;\n\n if (singleFilter === 'NULL') {\n singleFilter = '0';\n }\n\n if (singleFilterType.toString() === 'object' && singleFilterIsArray) {\n sqlFilter += '(';\n\n var subFiltersLength = singleFilter.length;\n\n for (var i2 = 0; i2 <= subFiltersLength; i2++) {\n var singleSubFilter = singleFilter[i2];\n var singleSubFilterType = typeof singleSubFilter;\n var singleSubFilterIsArray = Array.isArray(singleSubFilter);\n var singleSubFilterIsDate = singleSubFilter instanceof Date\n\n if (singleSubFilter === 'NULL') {\n singleSubFilter = '0';\n }\n\n if (singleSubFilterType.toString() === 'object' && singleSubFilterIsArray) {\n sqlFilter += '(';\n\n var subSubFiltersLength = singleSubFilter.length;\n\n for (var i3 = 0; i3 <= subSubFiltersLength; i3++) {\n var singleSubSubFilter = singleSubFilter[i3];\n var singleSubSubFilterType = typeof singleSubSubFilter;\n var singleSubSubFilterIsArray = Array.isArray(singleSubSubFilter);\n var singleSubSubFilterIsDate = singleSubSubFilter instanceof Date\n\n if (singleSubSubFilter === 'NULL') {\n singleSubSubFilter = '0';\n }\n\n if (singleSubSubFilterType.toString() === 'object' && singleSubSubFilterIsArray) {\n sqlFilter += '(';\n\n var subSubSubFiltersLength = singleSubSubFilter.length;\n\n for (var i4 = 0; i4 <= subSubSubFiltersLength; i4++) {\n var singleSubSubSubFilter = singleSubSubFilter[i4];\n var singleSubSubSubFilterType = typeof singleSubSubSubFilter;\n var singleSubSubSubFilterIsArray = Array.isArray(singleSubSubSubFilter);\n var singleSubSubSubFilterIsDate = singleSubSubSubFilter instanceof Date\n\n if (singleSubSubSubFilter === 'NULL') {\n singleSubSubSubFilter = '0';\n }\n\n if (singleSubSubSubFilterType.toString() === 'object' && singleSubSubSubFilterIsArray) {\n sqlFilter += '(';\n\n var subSubSubSubFiltersLength = singleSubSubSubFilter.length;\n\n for (var i5 = 0; i5 <= subSubSubSubFiltersLength; i5++) {\n var singleSubSubSubSubFilter = singleSubSubSubFilter[i5];\n var singleSubSubSubSubFilterType = typeof singleSubSubSubSubFilter;\n var singleSubSubSubSubFilterIsArray = Array.isArray(singleSubSubSubSubFilter);\n var singleSubSubSubSubFilterIsDate = singleSubSubSubSubFilter instanceof Date\n\n if (singleSubSubSubSubFilter === 'NULL') {\n singleSubSubSubSubFilter = '0';\n }\n\n if (singleSubSubSubSubFilterType.toString() === 'string') {\n if (singleSubSubSubSubFilter === 'contains') {\n filters[i][i2][i3][i4][i5] = 'LIKE';\n singleSubSubSubSubFilter = 'LIKE';\n\n filters[i][i2][i3][i4][i5 + 1] = '\\'%' + filters[i][i2][i3][i4][i5 + 1] + '%\\'';\n }\n else if (singleSubSubSubSubFilter === 'notcontains') {\n filters[i][i2][i3][i4][i5] = 'NOT LIKE';\n singleSubSubSubSubFilter = 'NOT LIKE';\n\n filters[i][i2][i3][i4][i5 + 1] = '\\'%' + filters[i][i2][i3][i4][i5 + 1] + '%\\'';\n }\n else if (singleSubSubSubSubFilter === 'startswith') {\n filters[i][i2][i3][i4][i5] = 'LIKE';\n singleSubSubSubSubFilter = 'LIKE';\n\n filters[i][i2][i3][i4][i5 + 1] = '\\'' + filters[i][i2][i3][i4][i5 + 1] + '%\\'';\n }\n else if (singleSubSubSubSubFilter === 'endswith') {\n filters[i][i2][i3][i4][i5] = 'LIKE';\n singleSubSubSubSubFilter = 'LIKE';\n\n filters[i][i2][i3][i4][i5 + 1] = '\\'%' + filters[i][i2][i3][i4][i5 + 1] + '\\'';\n }\n else if (singleSubSubSubSubFilter === '=' || singleSubSubSubSubFilter === '<>' || singleSubSubSubSubFilter === '>' || singleSubSubSubSubFilter === '>=' || singleSubSubSubSubFilter === '<' || singleSubSubSubSubFilter === '<=') {\n if (!filters[i][i2][i3][i4][i5 + 1])\n filters[i][i2][i3][i4][i5 + 1] = 'NULL';\n else if (typeof filters[i][i2][i3][i4][i5 + 1] === 'string') {\n filters[i][i2][i3][i4][i5 + 1] = '\\'' + filters[i][i2][i3][i4][i5 + 1] + '\\'';\n }\n }\n else if (singleSubSubSubSubFilter === '!') {\n filters[i][i2][i3][i4][i5] = 'NOT';\n singleSubSubSubSubFilter = 'NOT';\n }\n\n sqlFilter += ' ' + singleSubSubSubSubFilter + ' ';\n }\n else if (singleSubSubSubSubFilterType.toString() === 'object' && singleSubSubSubSubFilterIsDate) {\n sqlFilter += ' \\'' + singleSubSubSubSubFilter.toISOString().split('T')[0] + '\\' ';\n }\n else if (singleSubSubSubSubFilterType.toString() === 'number') {\n sqlFilter += ' ' + singleSubSubSubSubFilter.toString() + ' ';\n }\n else if (singleSubSubSubSubFilterType.toString() === 'boolean') {\n if (singleSubSubSubSubFilter.toString() === 'true')\n sqlFilter += '1 ';\n else if (singleSubSubSubSubFilter.toString() === 'false' || singleSubSubSubSubFilter === null || singleSubSubSubSubFilter === undefined)\n sqlFilter += '0 ';\n }\n }\n }\n else if (singleSubSubSubFilterType.toString() === 'string') {\n if (singleSubSubSubFilter === 'contains') {\n filters[i][i2][i3][i4] = 'LIKE';\n singleSubSubSubFilter = 'LIKE';\n\n filters[i][i2][i3][i4 + 1] = '\\'%' + filters[i][i2][i3][i4 + 1] + '%\\'';\n }\n else if (singleSubSubSubFilter === 'notcontains') {\n filters[i][i2][i3][i4] = 'NOT LIKE';\n singleSubSubSubFilter = 'NOT LIKE';\n\n filters[i][i2][i3][i4 + 1] = '\\'%' + filters[i][i2][i3][i4 + 1] + '%\\'';\n }\n else if (singleSubSubSubFilter === 'startswith') {\n filters[i][i2][i3][i4] = 'LIKE';\n singleSubSubSubFilter = 'LIKE';\n\n filters[i][i2][i3][i4 + 1] = '\\'' + filters[i][i2][i3][i4 + 1] + '%\\'';\n }\n else if (singleSubSubSubFilter === 'endswith') {\n filters[i][i2][i3][i4] = 'LIKE';\n singleSubSubSubFilter = 'LIKE';\n\n filters[i][i2][i3][i4 + 1] = '\\'%' + filters[i][i2][i3][i4 + 1] + '\\'';\n }\n else if (singleSubSubSubFilter === '=' || singleSubSubSubFilter === '<>' || singleSubSubSubFilter === '>' || singleSubSubSubFilter === '>=' || singleSubSubSubFilter === '<' || singleSubSubSubFilter === '<=') {\n if (!filters[i][i2][i3][i4 + 1])\n filters[i][i2][i3][i4 + 1] = 'NULL';\n else if (typeof filters[i][i2][i3][i4 + 1] === 'string') {\n filters[i][i2][i3][i4 + 1] = '\\'' + filters[i][i2][i3][i4 + 1] + '\\'';\n }\n }\n else if (singleSubSubSubFilter === '!') {\n filters[i][i2][i3][i4] = 'NOT';\n singleSubSubSubFilter = 'NOT';\n }\n\n sqlFilter += ' ' + singleSubSubSubFilter + ' ';\n }\n else if (singleSubSubSubFilterType.toString() === 'object' && singleSubSubSubFilterIsDate) {\n sqlFilter += ' \\'' + singleSubSubSubFilter.toISOString().split('T')[0] + '\\' ';\n }\n else if (singleSubSubSubFilterType.toString() === 'number') {\n sqlFilter += ' ' + singleSubSubSubFilter.toString() + ' ';\n }\n else if (singleSubSubSubFilterType.toString() === 'boolean') {\n if (singleSubSubSubFilter.toString() === 'true')\n sqlFilter += '1 ';\n else if (singleSubSubSubFilter.toString() === 'false' || singleSubSubSubFilter === null || singleSubSubSubFilter === undefined)\n sqlFilter += '0 ';\n }\n }\n\n sqlFilter += ')';\n }\n else if (singleSubSubFilterType.toString() === 'string') {\n if (singleSubSubFilter === 'contains') {\n filters[i][i2][i3] = 'LIKE';\n singleSubSubFilter = 'LIKE';\n\n filters[i][i2][i3 + 1] = '\\'%' + filters[i][i2][i3 + 1] + '%\\'';\n }\n else if (singleSubSubFilter === 'notcontains') {\n filters[i][i2][i3] = 'NOT LIKE';\n singleSubSubFilter = 'NOT LIKE';\n\n filters[i][i2][i3 + 1] = '\\'%' + filters[i][i2][i3 + 1] + '%\\'';\n }\n else if (singleSubSubFilter === 'startswith') {\n filters[i][i2][i3] = 'LIKE';\n singleSubSubFilter = 'LIKE';\n\n filters[i][i2][i3 + 1] = '\\'' + filters[i][i2][i3 + 1] + '%\\'';\n }\n else if (singleSubSubFilter === 'endswith') {\n filters[i][i2][i3] = 'LIKE';\n singleSubSubFilter = 'LIKE';\n\n filters[i][i2][i3 + 1] = '\\'%' + filters[i][i2][i3 + 1] + '\\'';\n }\n else if (singleSubSubFilter === '=' || singleSubSubFilter === '<>' || singleSubSubFilter === '>' || singleSubSubFilter === '>=' || singleSubSubFilter === '<' || singleSubSubFilter === '<=') {\n if (!filters[i][i2][i3 + 1])\n filters[i][i2][i3 + 1] = 'NULL';\n else if (typeof filters[i][i2][i3 + 1] === 'string') {\n filters[i][i2][i3 + 1] = '\\'' + filters[i][i2][i3 + 1] + '\\'';\n }\n }\n else if (singleSubSubFilter === '!') {\n filters[i][i2][i3] = 'NOT';\n singleSubSubFilter = 'NOT';\n }\n sqlFilter += ' ' + singleSubSubFilter + ' ';\n }\n else if (singleSubSubFilterType.toString() === 'object' && singleSubSubFilterIsDate) {\n sqlFilter += ' \\'' + singleSubSubFilter.toISOString().split('T')[0] + '\\' ';\n }\n else if (singleSubSubFilterType.toString() === 'number') {\n sqlFilter += ' ' + singleSubSubFilter.toString() + ' ';\n }\n else if (singleSubSubFilterType.toString() === 'boolean') {\n if (singleSubSubFilter.toString() === 'true')\n sqlFilter += '1 ';\n else if (singleSubSubFilter.toString() === 'false' || singleSubSubFilter === null || singleSubSubFilter === undefined)\n sqlFilter += '0 ';\n }\n }\n\n sqlFilter += ')';\n }\n else if (singleSubFilterType.toString() === 'string') {\n if (singleSubFilter === 'contains') {\n filters[i][i2] = 'LIKE';\n singleSubFilter = 'LIKE';\n\n filters[i][i2 + 1] = '\\'%' + filters[i][i2 + 1] + '%\\'';\n }\n else if (singleSubFilter === 'notcontains') {\n filters[i][i2] = 'NOT LIKE';\n singleSubFilter = 'NOT LIKE';\n\n filters[i][i2 + 1] = '\\'%' + filters[i][i2 + 1] + '%\\'';\n }\n else if (singleSubFilter === 'startswith') {\n filters[i][i2] = 'LIKE';\n singleSubFilter = 'LIKE';\n\n filters[i][i2 + 1] = '\\'' + filters[i][i2 + 1] + '%\\'';\n }\n else if (singleSubFilter === 'endswith') {\n filters[i][i2] = 'LIKE';\n singleSubFilter = 'LIKE';\n\n filters[i][i2 + 1] = '\\'%' + filters[i][i2 + 1] + '\\'';\n }\n else if (singleSubFilter === '=' || singleSubFilter === '<>' || singleSubFilter === '>' || singleSubFilter === '>=' || singleSubFilter === '<' || singleSubFilter === '<=') {\n if (!filters[i][i2 + 1])\n filters[i][i2 + 1] = 'NULL';\n else if (typeof filters[i][i2 + 1] === 'string') {\n filters[i][i2 + 1] = '\\'' + filters[i][i2 + 1] + '\\'';\n }\n }\n else if (singleSubFilter === '!') {\n filters[i][i2] = 'NOT';\n singleSubFilter = 'NOT';\n }\n sqlFilter += ' ' + singleSubFilter + ' ';\n }\n else if (singleSubFilterType.toString() === 'object' && singleSubFilterIsDate) {\n sqlFilter += ' \\'' + singleSubFilter.toISOString().split('T')[0] + '\\' ';\n }\n else if (singleSubFilterType.toString() === 'number') {\n sqlFilter += ' ' + singleSubFilter.toString() + ' ';\n }\n else if (singleSubFilterType.toString() === 'boolean') {\n if (singleSubFilter.toString() === 'true')\n sqlFilter += '1 ';\n else if (singleSubFilter.toString() === 'false' || singleSubFilter === null || singleSubFilter === undefined)\n sqlFilter += '0 ';\n }\n }\n\n sqlFilter += ')';\n }\n else if (singleFilterType.toString() === 'string') {\n if (singleFilter === 'contains') {\n filters[i] = 'LIKE';\n singleFilter = 'LIKE';\n\n filters[i + 1] = '\\'%' + filters[i + 1] + '%\\'';\n }\n else if (singleFilter === 'notcontains') {\n filters[i] = 'NOT LIKE';\n singleFilter = 'NOT LIKE';\n\n filters[i + 1] = '\\'%' + filters[i + 1] + '%\\'';\n }\n else if (singleFilter === 'startswith') {\n filters[i] = 'LIKE';\n singleFilter = 'LIKE';\n\n filters[i + 1] = '\\'' + filters[i + 1] + '%\\'';\n }\n else if (singleFilter === 'endswith') {\n filters[i] = 'LIKE';\n singleFilter = 'LIKE';\n\n filters[i + 1] = '\\'%' + filters[i + 1] + '\\'';\n }\n else if (singleFilter === '=' || singleFilter === '<>' || singleFilter === '>' || singleFilter === '>=' || singleFilter === '<' || singleFilter === '<=') {\n if (!filters[i + 1])\n filters[i + 1] = 'NULL';\n else if (typeof filters[i + 1] === 'string') {\n filters[i + 1] = '\\'' + filters[i + 1] + '\\'';\n }\n }\n else if (singleFilter === '!') {\n filters[i] = 'NOT';\n singleFilter = 'NOT';\n }\n sqlFilter += ' ' + singleFilter + ' ';\n }\n else if (singleFilterType.toString() === 'object' && singleFilterIsDate) {\n sqlFilter += ' \\'' + singleFilter.toISOString().split('T')[0] + '\\' ';\n }\n else if (singleFilterType.toString() === 'number') {\n sqlFilter += ' ' + singleFilter.toString() + ' ';\n }\n else if (singleFilterType.toString() === 'boolean') {\n if (singleFilter.toString() === 'true')\n sqlFilter += '1 ';\n else if (singleFilter.toString() === 'false' || singleFilter === null || singleFilter === undefined)\n sqlFilter += '0 ';\n }\n }\n\n sqlFilter += ')';\n }\n });\n\n async function getRecords() {\n if (sqlFilter === '(')\n sqlFilter = '';\n\n var records = await getItemRecords(sqlFilter);\n\n // Decode Base64 to binary data\n var compressedData = Uint8Array.from(atob(records), c => c.charCodeAt(0));\n\n // Decompress the GZIP data using pako\n var decompressedData = pako.ungzip(compressedData, { to: 'string' });\n\n // Parse the JSON string (if the response is JSON)\n records = JSON.parse(decompressedData);\n\n return {\n data: records,\n totalCount: records.length\n };\n }\n\n return getRecords()\n .then(function (result) {\n return result;\n })\n .catch(() => { throw new Error('Data Loading Error'); });\n },\n });\n\n const getItemPayload = React.useCallback(async (Articulo) => {\n try {\n let apiName = 'AdminSC';\n let path = '/procesaarticulos';\n\n let myInit = {\n headers: {\n 'Content-Type': 'application/json',\n Authorization: `${(await Auth.currentSession()).getAccessToken().getJwtToken()}`\n },\n queryStringParameters: {\n Articulo: Articulo,\n action: 'payloadPO',\n username: JSON.parse(JSON.stringify(await Auth.currentAuthenticatedUser())).username\n }\n }\n\n var payloadGet = await API.get(apiName, path, myInit);\n\n if (payloadGet.header.SeguimientoPOEsBox) {\n setConSeguimientoPOEsBox(true);\n }\n else {\n setConSeguimientoPOEsBox(false);\n }\n\n setItemPayload(payloadGet);\n }\n catch (e) {\n if (e === 'No current user') {\n history.push('/');\n\n window.location.reload();\n }\n }\n\n return payloadGet;\n }, [history])\n\n function editItem(data) {\n return (\n <Link to={`/ItemPOSuggestion/${data.data.Articulo}`}>\n <button class=\"bg-blue-500 hover:bg-blue-700 text-white py-1 px-3 rounded\" onClick={() => editButton(data.data.Articulo)}><FontAwesomeIcon icon={faPencilAlt} /> Editar</button>\n </Link>\n )\n }\n\n const editButton = React.useCallback(async (Articulo) => {\n try {\n if (!window.event.metaKey && !window.event.ctrlKey) {\n setVisibleLoadPanel(true);\n\n setIsDetail(true);\n setArticulo(Articulo);\n\n var payload = await getItemPayload(Articulo);\n\n setActivateUpdateForm(true);\n setActivateSaveButton(true);\n\n setVisibleLoadPanel(false);\n }\n }\n catch (e) {\n setVisibleLoadPanel(false);\n }\n }, [getItemPayload]);\n\n async function cancelEditButton() {\n setIsDetail(false);\n };\n\n async function saveButton() {\n if (formDatosGeneralesRef.current) {\n var formDatosGenerales = formDatosGeneralesRef.current.instance();\n var isValid = formDatosGenerales.validate();\n\n if (!isValid.isValid) {\n setVisibleToast(true);\n setMessageToast(isValid.brokenRules[0].message);\n setTypeToast('error');\n return;\n }\n }\n\n try {\n setVisibleLoadPanel(true);\n\n var Articulo = itemPayload.header.Articulo;\n\n //Despues enviamos todo al backend\n let apiName = 'AdminSC';\n let path = '/procesaarticulos';\n\n let myInit = {\n headers: {\n 'Content-Type': 'application/json',\n Authorization: `${(await Auth.currentSession()).getAccessToken().getJwtToken()}`\n },\n body: {\n Articulo: Articulo,\n payload: itemPayload,\n action: 'saveChangesPO',\n username: JSON.parse(JSON.stringify(await Auth.currentAuthenticatedUser())).username,\n usuario: props.usuario,\n sucursal: props.sucursal,\n s3Bucket: Storage._config.AWSS3.bucket\n }\n }\n\n var payloadPost = await API.post(apiName, path, myInit);\n\n if (payloadPost.ok === 'true') {\n setVisibleToast(true);\n setMessageToast('Se actualizó el Artículo con éxito');\n setTypeToast('success')\n }\n else if (payloadPost.ok === 'false') {\n setVisibleToast(true);\n setMessageToast(payloadPost.message);\n setTypeToast('error')\n }\n\n editButton(Articulo);\n\n setVisibleLoadPanel(false);\n }\n catch (e) {\n setVisibleLoadPanel(false);\n\n if (e === 'No current user') {\n history.push('/');\n\n window.location.reload();\n }\n }\n };\n\n function refreshButton() {\n if (gridTableroRef.current) {\n var gridTablero = gridTableroRef.current.instance();\n\n gridTablero.refresh();\n }\n }\n\n const onFieldDataChanged = React.useCallback((e) => {\n if (e.dataField === 'header.SeguimientoPOEsBox') {\n setConSeguimientoPOEsBox(!conSeguimientoPOEsBox);\n }\n }, [conSeguimientoPOEsBox]);\n\n useEffect(() => {\n window.addEventListener('popstate', (e) => {\n var hash;\n\n try {\n hash = e.target.location.hash;\n }\n catch (e) {\n hash = '';\n }\n\n if (hash === '#/ItemPOSuggestion') {\n history.push('/ItemPOSuggestion');\n\n window.location.reload();\n }\n });\n\n async function initialize() {\n setVisibleLoadPanel(true);\n\n setVisibleLoadPanel(false);\n }\n\n initialize();\n\n //En caso de solicitar un ID especifico, redireccionamos a ese ID\n if (!props.match.isExact) {\n var urlID = props.location.pathname.replace('/ItemPOSuggestion/', '');\n\n if (urlID === 'undefined')\n urlID = undefined;\n\n if (urlID)\n editButton(urlID);\n }\n\n // eslint-disable-next-line\n }, []);\n\n function onHidingToast() {\n setVisibleToast(false);\n }\n\n function onExporting(e) {\n const workbook = new Workbook();\n const worksheet = workbook.addWorksheet('Datos');\n\n exportDataGrid({\n component: e.component,\n worksheet,\n autoFilterEnabled: true,\n }).then(() => {\n workbook.xlsx.writeBuffer().then((buffer) => {\n saveAs(new Blob([buffer], { type: 'application/octet-stream' }), 'Datos.xlsx');\n });\n });\n e.cancel = true;\n };\n\n const onRowPrepared = React.useCallback((e) => {\n if (e.rowType === \"data\" && e.data.SeguimientoPOColor === 'Azul') {\n e.rowElement.style.backgroundColor = 'lightblue';\n }\n else if (e.rowType === \"data\" && e.data.SeguimientoPOColor === 'Rojo') {\n e.rowElement.style.backgroundColor = 'crimson';\n }\n else if (e.rowType === \"data\" && e.data.SeguimientoPOColor === 'Verde') {\n e.rowElement.style.backgroundColor = 'lightgreen';\n }\n else if (e.rowType === \"data\" && e.data.SeguimientoPOColor === 'Amarillo') {\n e.rowElement.style.backgroundColor = 'lightyellow';\n }\n else if (e.rowType === \"data\" && e.data.SeguimientoPOColor === 'Morado') {\n e.rowElement.style.backgroundColor = 'plum';\n }\n else if (e.rowType === \"data\" && e.data.SeguimientoPOColor === 'Rosa') {\n e.rowElement.style.backgroundColor = 'pink';\n }\n }, [])\n\n var articuloEditorOptions = useMemo(() => {\n return {\n width: '100%',\n readOnly: true\n };\n }, []);\n\n var nombreArticuloEditorOptions = useMemo(() => {\n return {\n width: '100%',\n readOnly: true\n };\n }, []);\n\n var seguimientoPONoPatasEditorOptions = useMemo(() => {\n return {\n width: '100%',\n readOnly: !conSeguimientoPOEsBox,\n format: '#',\n showClearButton: true\n };\n }, [conSeguimientoPOEsBox]);\n\n const paintItemColor = React.useCallback((data) => {\n if (!data)\n data = {};\n\n if (!data.color)\n data.color = 'white';\n\n var divClass = \"inline-block w-6 h-6 bg-\" + data.color + \"-500 rounded-full\"\n\n return (\n <div class={divClass}>\n <div class=\"ml-8\">\n {data.name}\n </div>\n </div>\n );\n }, []);\n\n try {\n var seguimientoPOColorEditorOptions = useMemo(() => {\n return {\n dataSource: colores,\n displayExpr: 'name',\n valueExpr: 'value',\n searchEnabled: false,\n value: (itemPayload.header.SeguimientoPOColor ? itemPayload.header.SeguimientoPOColor : ''),\n readOnly: false,\n itemTemplate: 'templateItemColor',\n fieldTemplate: 'fieldTemplateItemColor',\n showClearButton: true\n };\n }, [colores, itemPayload]);\n }\n catch (e) {\n var seguimientoPOColorEditorOptions = {\n dataSource: colores,\n displayExpr: 'name',\n valueExpr: 'value',\n searchEnabled: false,\n readOnly: !false,\n value: '',\n itemRender: 'templateItemColor',\n fieldTemplate: 'fieldTemplateItemColor',\n showClearButton: true\n };\n }\n\n const itemPaintItemColor = React.useCallback((data) => {\n if (!data)\n data = {};\n\n if (!data.color)\n data.color = 'white';\n\n var divClass = \"mt-1 mb-1 ml-2 inline-block w-6 h-6 bg-\" + data.color + \"-500 rounded-full\"\n\n return (\n <div className=\"custom-item\">\n <div class={divClass}>\n <div class=\"ml-8\">\n {data.name}\n\n <TextBox\n defaultValue=''\n readOnly={true}\n visible={false}\n />\n </div>\n </div>\n </div>\n )\n }, [])\n\n return (\n <div>\n {isDetail === false ? (\n <div class=\"bg-gray-200 m-2\">\n <h1 class=\"font-sans inline-block text-xl font-bold text-gray-700 leading-8 align-top mb-1\"><FontAwesomeIcon icon={faList} size=\"lg\" /> Artículos Sugerencia de Compras</h1>\n </div>\n ) :\n (\n <div class=\"bg-gray-200 m-2\">\n <h1 class=\"font-sans inline-block text-xl font-bold text-gray-700 leading-8 align-top mb-1\"><FontAwesomeIcon icon={faBedFront} size=\"xl\" /> {(itemPayload.header ? itemPayload.header.Articulo : 'Artículo')}</h1>\n </div>\n )}\n\n <LoadPanel\n shadingColor=\"rgba(0,0,0,0.4)\"\n visible={visibleLoadPanel}\n showIndicator={true}\n message=\"Por favor espere...\"\n shading={true}\n showPane={true}\n hideOnOutsideClick={false}\n />\n\n <Toast\n visible={visibleToast}\n message={messageToast}\n type={typeToast}\n onHiding={onHidingToast}\n displayTime={5000}\n width={'auto'}\n position={{\n my: 'top center',\n at: 'top center',\n of: window,\n offset: '0 130'\n }}\n />\n\n <div class=\"bg-gray-200 m-2\">\n {isDetail === false ? (\n <div class=\"bg-white p-3 shadow-xl\">\n <div>\n <button onClick={refreshButton} type=\"submit\" class=\"mb-4 bg-blue-500 hover:bg-blue-700 text-white font-bold py-2 px-4 rounded\">\n <FontAwesomeIcon icon={faArrowsRotate} /> Actualizar\n </button>\n </div>\n\n <div className=\"options mb-2\">\n <div className=\"option\">\n <CheckBox text=\"Expandir todos los grupos\"\n value={autoExpandAll}\n onValueChanged={onAutoExpandAllChanged}></CheckBox>\n </div>\n </div>\n\n <DataGrid\n height={800}\n id=\"gridContainer\"\n columnsAutoWidth={true}\n filterBuilder={filterBuilder}\n dataSource={store}\n allowColumnReordering={true}\n allowColumnResizing={true}\n columnResizingMode={\"widget\"}\n showBorders={true}\n rowAlternationEnabled={false}\n showRowLines={true}\n showColumnLines={true}\n remoteOperations={{ filtering: true }}\n ref={gridTableroRef}\n onExporting={onExporting}\n onRowPrepared={onRowPrepared}\n >\n <Scrolling rowRenderingMode='virtual'></Scrolling>\n <Paging defaultPageSize={10} />\n <Pager\n visible={true}\n allowedPageSizes={allowedPageSizes}\n displayMode='compact'\n showPageSizeSelector={true}\n showInfo={true}\n showNavigationButtons={true}\n />\n <FilterRow visible={true} />\n <FilterPanel visible={true} />\n <FilterBuilderPopup position={filterBuilderPopupPosition} />\n\n <HeaderFilter visible={true} />\n\n <GroupPanel visible={true} />\n <SearchPanel visible={true} />\n <ColumnChooser\n enabled={true}\n mode='select'\n >\n <ColumnChooserSearch\n enabled={true}\n />\n\n <ColumnChooserSelection\n allowSelectAll={true}\n selectByClick={true}\n recursive={true}\n />\n </ColumnChooser>\n <Grouping autoExpandAll={autoExpandAll} />\n <StateStoring enabled={true} type=\"localStorage\" storageKey=\"gridItemWMS\" />\n <Export enabled={true} />\n\n <Column caption=\"\" alignment=\"center\" width={100} cellRender={editItem} />\n <Column dataField=\"Articulo\" dataType=\"string\" width={110} caption=\"Artículo\" />\n <Column dataField=\"Descripcion1\" dataType=\"string\" width={300} caption=\"Nombre Artículo\" />\n\n <Column dataField=\"SeguimientoPO\" dataType=\"boolean\" width={300} caption=\"Seguimiento Orden Compra\" />\n <Column dataField=\"SeguimientoPOColor\" dataType=\"string\" width={300} caption=\"Color Seguimiento\" />\n <Column dataField=\"SeguimientoPOEsBox\" dataType=\"boolean\" width={300} caption=\"Es Box\" />\n <Column dataField=\"SeguimientoPONoPatas\" dataType=\"string\" width={300} caption=\"Número de Patas\" />\n\n <Column dataField=\"Grupo\" dataType=\"string\" width={150} caption=\"Grupo\" visible={false} />\n <Column dataField=\"Categoria\" dataType=\"string\" width={150} caption=\"Categoría\" visible={false} />\n <Column dataField=\"Familia\" dataType=\"string\" width={150} caption=\"Familia\" visible={false} />\n <Column dataField=\"Linea\" dataType=\"string\" width={150} caption=\"Línea\" visible={false} />\n <Column dataField=\"Proveedor\" dataType=\"string\" width={150} caption=\"Proveedor\" visible={false} />\n <Column dataField=\"NombreProveedor\" dataType=\"string\" width={300} caption=\"Nombre Proveedor\" visible={false} />\n </DataGrid>\n </div>\n ) : (<div />)}\n <Route exact path=\"/ItemPOSuggestion/:Articulo\" render={({ match }) => {\n return (\n <div class=\"bg-gray-200\">\n {isDetail.toString() === 'true' ?\n (\n <div>\n <Link to=\"/ItemPOSuggestion\">\n <button onClick={cancelEditButton} type=\"submit\" class=\"mb-4 bg-red-500 hover:bg-red-700 text-white font-bold py-2 px-4 rounded\">\n <FontAwesomeIcon icon={faArrowRotateLeft} /> Regresar\n </button>\n </Link>\n\n {activateSaveButton.toString() === 'true' ?\n (\n <button onClick={saveButton} type=\"submit\" class=\"ml-4 mb-4 bg-blue-500 hover:bg-blue-700 text-white font-bold py-2 px-4 rounded\">\n <FontAwesomeIcon icon={faSave} /> Guardar Cambios\n </button>\n ) : (\n <div class=\"inline-block\"></div>\n )}\n\n <div class=\"bg-white p-4 shadow-xl\">\n <Form\n id=\"formTransaccion\"\n labelMode={'outside'}\n formData={itemPayload}\n readOnly={!activateUpdateForm}\n showColonAfterLabel={false}\n labelLocation={'top'}\n ref={formDatosGeneralesRef}\n onFieldDataChanged={onFieldDataChanged}\n >\n <TabbedItem>\n <TabPanelOptions deferRendering={false} showNavButtons={true} />\n <Tab title=\"Datos Generales\" colCount={3}>\n <GroupItem caption=\"General\">\n <Item cssClass=\"boldText\" dataField=\"header.Articulo\" editorOptions={articuloEditorOptions} >\n <Label text={\"Artículo\"} />\n </Item>\n <Item cssClass=\"boldText\" dataField=\"header.Descripcion1\" editorOptions={nombreArticuloEditorOptions} >\n <Label text={\"Nombre Artículo\"} />\n </Item>\n\n <Item dataField=\"header.Grupo\" editorOptions={articuloEditorOptions} >\n <Label text={\"Grupo\"} />\n </Item>\n <Item dataField=\"header.Categoria\" editorOptions={articuloEditorOptions} >\n <Label text={\"Categoría\"} />\n </Item>\n <Item dataField=\"header.Familia\" editorOptions={articuloEditorOptions} >\n <Label text={\"Familia\"} />\n </Item>\n <Item dataField=\"header.Linea\" editorOptions={articuloEditorOptions} >\n <Label text={\"Línea\"} />\n </Item>\n </GroupItem>\n <GroupItem caption=\"Sugerencia de Compras\">\n <Item cssClass=\"boldText\" colSpan={2} editorType=\"dxCheckBox\" dataField=\"header.SeguimientoPO\">\n <Label text={\"Seguimiento\"} />\n </Item>\n <Item cssClass=\"boldText\" colSpan={2} editorType=\"dxCheckBox\" dataField=\"header.SeguimientoPOEsBox\">\n <Label text={\"Es Box\"} />\n </Item>\n <Item cssClass=\"boldText\" colSpan={2} editorType=\"dxNumberBox\" dataField=\"header.SeguimientoPONoPatas\" editorOptions={seguimientoPONoPatasEditorOptions}>\n <Label text={\"Número de Patas\"} />\n </Item>\n <Item cssClass=\"boldText\" colSpan={2} editorType=\"dxSelectBox\" dataField=\"header.SeguimientoPOColor\" editorOptions={seguimientoPOColorEditorOptions}>\n <Label text={\"Color\"} />\n </Item>\n <Template name='templateItemColor' render={paintItemColor} />\n <Template name='fieldTemplateItemColor' render={itemPaintItemColor} />\n </GroupItem>\n </Tab>\n </TabbedItem>\n </Form>\n </div>\n </div>\n ) :\n (\n <div></div>\n )\n }\n </div>\n )\n }}\n />\n </div>\n </div>\n );\n}\n","import React, { useState, useEffect, useRef, useMemo } from 'react';\n\n// LoadPanel\nimport { LoadPanel } from 'devextreme-react/load-panel';\n\n// Toast\nimport { Toast } from 'devextreme-react/toast';\n\n//Form\nimport Form, { GroupItem, Label, TabbedItem, TabPanelOptions, Tab, EmptyItem } from 'devextreme-react/form';\n\nimport { Auth, API, Storage, label } from 'aws-amplify';\n\n// Ruteador\nimport { Route, Link, useHistory } from \"react-router-dom\";\n\n// Grid\nimport DataGrid, {\n Column, FilterRow, HeaderFilter, FilterPanel, FilterBuilderPopup,\n GroupPanel, Grouping, SearchPanel, Sorting, Editing, Lookup, Toolbar, Item, RequiredRule,\n Scrolling, Pager, Paging, Summary, TotalItem, StateStoring, ColumnChooser, Format, Selection,\n Export, ColumnChooserSearch, ColumnChooserSelection\n} from 'devextreme-react/data-grid';\n\n//CheckBox\nimport CheckBox from 'devextreme-react/check-box';\n\n// Iconos\nimport { FontAwesomeIcon } from \"@fortawesome/react-fontawesome\";\nimport { faPencilAlt } from \"@fortawesome/pro-solid-svg-icons\";\nimport { faArrowRotateLeft } from \"@fortawesome/pro-solid-svg-icons\";\nimport { faSave } from \"@fortawesome/pro-solid-svg-icons\";\nimport { faList } from \"@fortawesome/pro-duotone-svg-icons\";\nimport { faArrowsRotate } from \"@fortawesome/pro-solid-svg-icons\";\nimport { faWarehouseFull } from \"@fortawesome/pro-duotone-svg-icons\";\n\nimport 'devextreme/data/odata/store';\nimport CustomStore from 'devextreme/data/custom_store';\n\nimport DataSource from 'devextreme/data/data_source';\n\nimport '../ListStyle.css';\n\nimport dxDateBox from \"devextreme/ui/date_box\";\n\nimport dxNumberBox from \"devextreme/ui/number_box\";\n\nimport { Workbook } from 'exceljs';\nimport { saveAs } from 'file-saver';\nimport { exportDataGrid } from 'devextreme/excel_exporter'\n\nimport { Template } from 'devextreme-react/core/template';\nimport TextBox from 'devextreme-react/text-box';\n\ndxDateBox.defaultOptions({\n options: {\n dateSerializationFormat: \"yyyy-MM-dd\"\n }\n});\n\ndxNumberBox.defaultOptions({\n options: {\n step: 0\n }\n});\n\nfunction isNotEmpty(value) {\n return value !== undefined && value !== null && value !== '';\n}\n\nexport default function WarehousePOSugestion(props) {\n const history = useHistory();\n\n const [isDetail, setIsDetail] = useState(false);\n const [almacen, setAlmacen] = useState();\n const [almPosRecibo, setAlmPosRecibo] = useState();\n const [almPosTransito, setAlmPosTransito] = useState();\n const [almPosSurtido, setAlmPosSurtido] = useState();\n const [wms, setWMS] = useState(false);\n const [plazas, setPlazas] = useState([]);\n\n const [warehousePayload, setWarehousePayload] = useState({\n header: {}\n });\n\n const [autoExpandAll, setAutoExpandAll] = useState(true);\n\n const [visibleLoadPanel, setVisibleLoadPanel] = useState(false);\n\n const [visibleToast, setVisibleToast] = useState(false);\n const [messageToast, setMessageToast] = useState('');\n const [typeToast, setTypeToast] = useState('success');\n\n const [activateUpdateForm, setActivateUpdateForm] = useState(false);\n const [activateSaveButton, setActivateSaveButton] = useState(false);\n\n //Ref para el form\n const [formDatosGeneralesRef, setFormDatosGeneralesRef] = useState(React.createRef());\n\n const filterBuilderPopupPosition = {\n of: window,\n at: 'top',\n my: 'top',\n offset: { y: 10 },\n };\n\n const allowedPageSizes = [5, 10, 15, 20, 'all'];\n\n function getOrderDay(rowData) {\n return (new Date(rowData.OrderDate)).getDay();\n }\n\n const filterBuilder = {\n customOperations: [{\n name: 'weekends',\n caption: 'Weekends',\n dataTypes: ['date'],\n icon: 'check',\n hasValue: false,\n calculateFilterExpression: () => [[getOrderDay, '=', 0], 'or', [getOrderDay, '=', 6]],\n }],\n allowHierarchicalFields: true,\n };\n\n //Ref para el grid Tablero de Control\n const [gridTableroRef, setGridTableroRef] = useState(React.createRef());\n\n function onAutoExpandAllChanged() {\n setAutoExpandAll(!autoExpandAll)\n };\n\n async function getWarehouseRecords(sqlFilter) {\n try {\n let apiName = 'AdminSC';\n let path = '/procesaalmacenes';\n\n let myInit = {\n headers: {\n 'Content-Type': 'application/json',\n Authorization: `${(await Auth.currentSession()).getAccessToken().getJwtToken()}`\n },\n queryStringParameters: {\n action: 'listPO',\n sqlFilter: sqlFilter,\n username: JSON.parse(JSON.stringify(await Auth.currentAuthenticatedUser())).username,\n }\n }\n\n var warehouseGet = await API.get(apiName, path, myInit);\n }\n catch (e) {\n if (e === 'No current user') {\n history.push('/');\n\n window.location.reload();\n }\n }\n\n return warehouseGet;\n }\n\n const store = new CustomStore({\n key: 'Almacen',\n load(loadOptions) {\n let sqlFilter = '(';\n [\n 'filter'\n ].forEach((i) => {\n if (i in loadOptions && isNotEmpty(loadOptions[i])) {\n var filters = loadOptions[i];\n\n var filtersLength = filters.length;\n\n for (var i = 0; i <= filtersLength; i++) {\n var singleFilter = filters[i];\n var singleFilterType = typeof singleFilter;\n var singleFilterIsArray = Array.isArray(singleFilter);\n var singleFilterIsDate = singleFilter instanceof Date;\n\n if (singleFilter === 'NULL') {\n singleFilter = '0';\n }\n\n if (singleFilterType.toString() === 'object' && singleFilterIsArray) {\n sqlFilter += '(';\n\n var subFiltersLength = singleFilter.length;\n\n for (var i2 = 0; i2 <= subFiltersLength; i2++) {\n var singleSubFilter = singleFilter[i2];\n var singleSubFilterType = typeof singleSubFilter;\n var singleSubFilterIsArray = Array.isArray(singleSubFilter);\n var singleSubFilterIsDate = singleSubFilter instanceof Date\n\n if (singleSubFilter === 'NULL') {\n singleSubFilter = '0';\n }\n\n if (singleSubFilterType.toString() === 'object' && singleSubFilterIsArray) {\n sqlFilter += '(';\n\n var subSubFiltersLength = singleSubFilter.length;\n\n for (var i3 = 0; i3 <= subSubFiltersLength; i3++) {\n var singleSubSubFilter = singleSubFilter[i3];\n var singleSubSubFilterType = typeof singleSubSubFilter;\n var singleSubSubFilterIsArray = Array.isArray(singleSubSubFilter);\n var singleSubSubFilterIsDate = singleSubSubFilter instanceof Date\n\n if (singleSubSubFilter === 'NULL') {\n singleSubSubFilter = '0';\n }\n\n if (singleSubSubFilterType.toString() === 'object' && singleSubSubFilterIsArray) {\n sqlFilter += '(';\n\n var subSubSubFiltersLength = singleSubSubFilter.length;\n\n for (var i4 = 0; i4 <= subSubSubFiltersLength; i4++) {\n var singleSubSubSubFilter = singleSubSubFilter[i4];\n var singleSubSubSubFilterType = typeof singleSubSubSubFilter;\n var singleSubSubSubFilterIsArray = Array.isArray(singleSubSubSubFilter);\n var singleSubSubSubFilterIsDate = singleSubSubSubFilter instanceof Date\n\n if (singleSubSubSubFilter === 'NULL') {\n singleSubSubSubFilter = '0';\n }\n\n if (singleSubSubSubFilterType.toString() === 'object' && singleSubSubSubFilterIsArray) {\n sqlFilter += '(';\n\n var subSubSubSubFiltersLength = singleSubSubSubFilter.length;\n\n for (var i5 = 0; i5 <= subSubSubSubFiltersLength; i5++) {\n var singleSubSubSubSubFilter = singleSubSubSubFilter[i5];\n var singleSubSubSubSubFilterType = typeof singleSubSubSubSubFilter;\n var singleSubSubSubSubFilterIsArray = Array.isArray(singleSubSubSubSubFilter);\n var singleSubSubSubSubFilterIsDate = singleSubSubSubSubFilter instanceof Date\n\n if (singleSubSubSubSubFilter === 'NULL') {\n singleSubSubSubSubFilter = '0';\n }\n\n if (singleSubSubSubSubFilterType.toString() === 'string') {\n if (singleSubSubSubSubFilter === 'contains') {\n filters[i][i2][i3][i4][i5] = 'LIKE';\n singleSubSubSubSubFilter = 'LIKE';\n\n filters[i][i2][i3][i4][i5 + 1] = '\\'%' + filters[i][i2][i3][i4][i5 + 1] + '%\\'';\n }\n else if (singleSubSubSubSubFilter === 'notcontains') {\n filters[i][i2][i3][i4][i5] = 'NOT LIKE';\n singleSubSubSubSubFilter = 'NOT LIKE';\n\n filters[i][i2][i3][i4][i5 + 1] = '\\'%' + filters[i][i2][i3][i4][i5 + 1] + '%\\'';\n }\n else if (singleSubSubSubSubFilter === 'startswith') {\n filters[i][i2][i3][i4][i5] = 'LIKE';\n singleSubSubSubSubFilter = 'LIKE';\n\n filters[i][i2][i3][i4][i5 + 1] = '\\'' + filters[i][i2][i3][i4][i5 + 1] + '%\\'';\n }\n else if (singleSubSubSubSubFilter === 'endswith') {\n filters[i][i2][i3][i4][i5] = 'LIKE';\n singleSubSubSubSubFilter = 'LIKE';\n\n filters[i][i2][i3][i4][i5 + 1] = '\\'%' + filters[i][i2][i3][i4][i5 + 1] + '\\'';\n }\n else if (singleSubSubSubSubFilter === '=' || singleSubSubSubSubFilter === '<>' || singleSubSubSubSubFilter === '>' || singleSubSubSubSubFilter === '>=' || singleSubSubSubSubFilter === '<' || singleSubSubSubSubFilter === '<=') {\n if (!filters[i][i2][i3][i4][i5 + 1])\n filters[i][i2][i3][i4][i5 + 1] = 'NULL';\n else if (typeof filters[i][i2][i3][i4][i5 + 1] === 'string') {\n filters[i][i2][i3][i4][i5 + 1] = '\\'' + filters[i][i2][i3][i4][i5 + 1] + '\\'';\n }\n }\n else if (singleSubSubSubSubFilter === '!') {\n filters[i][i2][i3][i4][i5] = 'NOT';\n singleSubSubSubSubFilter = 'NOT';\n }\n\n sqlFilter += ' ' + singleSubSubSubSubFilter + ' ';\n }\n else if (singleSubSubSubSubFilterType.toString() === 'object' && singleSubSubSubSubFilterIsDate) {\n sqlFilter += ' \\'' + singleSubSubSubSubFilter.toISOString().split('T')[0] + '\\' ';\n }\n else if (singleSubSubSubSubFilterType.toString() === 'number') {\n sqlFilter += ' ' + singleSubSubSubSubFilter.toString() + ' ';\n }\n else if (singleSubSubSubSubFilterType.toString() === 'boolean') {\n if (singleSubSubSubSubFilter.toString() === 'true')\n sqlFilter += '1 ';\n else if (singleSubSubSubSubFilter.toString() === 'false' || singleSubSubSubSubFilter === null || singleSubSubSubSubFilter === undefined)\n sqlFilter += '0 ';\n }\n }\n }\n else if (singleSubSubSubFilterType.toString() === 'string') {\n if (singleSubSubSubFilter === 'contains') {\n filters[i][i2][i3][i4] = 'LIKE';\n singleSubSubSubFilter = 'LIKE';\n\n filters[i][i2][i3][i4 + 1] = '\\'%' + filters[i][i2][i3][i4 + 1] + '%\\'';\n }\n else if (singleSubSubSubFilter === 'notcontains') {\n filters[i][i2][i3][i4] = 'NOT LIKE';\n singleSubSubSubFilter = 'NOT LIKE';\n\n filters[i][i2][i3][i4 + 1] = '\\'%' + filters[i][i2][i3][i4 + 1] + '%\\'';\n }\n else if (singleSubSubSubFilter === 'startswith') {\n filters[i][i2][i3][i4] = 'LIKE';\n singleSubSubSubFilter = 'LIKE';\n\n filters[i][i2][i3][i4 + 1] = '\\'' + filters[i][i2][i3][i4 + 1] + '%\\'';\n }\n else if (singleSubSubSubFilter === 'endswith') {\n filters[i][i2][i3][i4] = 'LIKE';\n singleSubSubSubFilter = 'LIKE';\n\n filters[i][i2][i3][i4 + 1] = '\\'%' + filters[i][i2][i3][i4 + 1] + '\\'';\n }\n else if (singleSubSubSubFilter === '=' || singleSubSubSubFilter === '<>' || singleSubSubSubFilter === '>' || singleSubSubSubFilter === '>=' || singleSubSubSubFilter === '<' || singleSubSubSubFilter === '<=') {\n if (!filters[i][i2][i3][i4 + 1])\n filters[i][i2][i3][i4 + 1] = 'NULL';\n else if (typeof filters[i][i2][i3][i4 + 1] === 'string') {\n filters[i][i2][i3][i4 + 1] = '\\'' + filters[i][i2][i3][i4 + 1] + '\\'';\n }\n }\n else if (singleSubSubSubFilter === '!') {\n filters[i][i2][i3][i4] = 'NOT';\n singleSubSubSubFilter = 'NOT';\n }\n\n sqlFilter += ' ' + singleSubSubSubFilter + ' ';\n }\n else if (singleSubSubSubFilterType.toString() === 'object' && singleSubSubSubFilterIsDate) {\n sqlFilter += ' \\'' + singleSubSubSubFilter.toISOString().split('T')[0] + '\\' ';\n }\n else if (singleSubSubSubFilterType.toString() === 'number') {\n sqlFilter += ' ' + singleSubSubSubFilter.toString() + ' ';\n }\n else if (singleSubSubSubFilterType.toString() === 'boolean') {\n if (singleSubSubSubFilter.toString() === 'true')\n sqlFilter += '1 ';\n else if (singleSubSubSubFilter.toString() === 'false' || singleSubSubSubFilter === null || singleSubSubSubFilter === undefined)\n sqlFilter += '0 ';\n }\n }\n\n sqlFilter += ')';\n }\n else if (singleSubSubFilterType.toString() === 'string') {\n if (singleSubSubFilter === 'contains') {\n filters[i][i2][i3] = 'LIKE';\n singleSubSubFilter = 'LIKE';\n\n filters[i][i2][i3 + 1] = '\\'%' + filters[i][i2][i3 + 1] + '%\\'';\n }\n else if (singleSubSubFilter === 'notcontains') {\n filters[i][i2][i3] = 'NOT LIKE';\n singleSubSubFilter = 'NOT LIKE';\n\n filters[i][i2][i3 + 1] = '\\'%' + filters[i][i2][i3 + 1] + '%\\'';\n }\n else if (singleSubSubFilter === 'startswith') {\n filters[i][i2][i3] = 'LIKE';\n singleSubSubFilter = 'LIKE';\n\n filters[i][i2][i3 + 1] = '\\'' + filters[i][i2][i3 + 1] + '%\\'';\n }\n else if (singleSubSubFilter === 'endswith') {\n filters[i][i2][i3] = 'LIKE';\n singleSubSubFilter = 'LIKE';\n\n filters[i][i2][i3 + 1] = '\\'%' + filters[i][i2][i3 + 1] + '\\'';\n }\n else if (singleSubSubFilter === '=' || singleSubSubFilter === '<>' || singleSubSubFilter === '>' || singleSubSubFilter === '>=' || singleSubSubFilter === '<' || singleSubSubFilter === '<=') {\n if (!filters[i][i2][i3 + 1])\n filters[i][i2][i3 + 1] = 'NULL';\n else if (typeof filters[i][i2][i3 + 1] === 'string') {\n filters[i][i2][i3 + 1] = '\\'' + filters[i][i2][i3 + 1] + '\\'';\n }\n }\n else if (singleSubSubFilter === '!') {\n filters[i][i2][i3] = 'NOT';\n singleSubSubFilter = 'NOT';\n }\n sqlFilter += ' ' + singleSubSubFilter + ' ';\n }\n else if (singleSubSubFilterType.toString() === 'object' && singleSubSubFilterIsDate) {\n sqlFilter += ' \\'' + singleSubSubFilter.toISOString().split('T')[0] + '\\' ';\n }\n else if (singleSubSubFilterType.toString() === 'number') {\n sqlFilter += ' ' + singleSubSubFilter.toString() + ' ';\n }\n else if (singleSubSubFilterType.toString() === 'boolean') {\n if (singleSubSubFilter.toString() === 'true')\n sqlFilter += '1 ';\n else if (singleSubSubFilter.toString() === 'false' || singleSubSubFilter === null || singleSubSubFilter === undefined)\n sqlFilter += '0 ';\n }\n }\n\n sqlFilter += ')';\n }\n else if (singleSubFilterType.toString() === 'string') {\n if (singleSubFilter === 'contains') {\n filters[i][i2] = 'LIKE';\n singleSubFilter = 'LIKE';\n\n filters[i][i2 + 1] = '\\'%' + filters[i][i2 + 1] + '%\\'';\n }\n else if (singleSubFilter === 'notcontains') {\n filters[i][i2] = 'NOT LIKE';\n singleSubFilter = 'NOT LIKE';\n\n filters[i][i2 + 1] = '\\'%' + filters[i][i2 + 1] + '%\\'';\n }\n else if (singleSubFilter === 'startswith') {\n filters[i][i2] = 'LIKE';\n singleSubFilter = 'LIKE';\n\n filters[i][i2 + 1] = '\\'' + filters[i][i2 + 1] + '%\\'';\n }\n else if (singleSubFilter === 'endswith') {\n filters[i][i2] = 'LIKE';\n singleSubFilter = 'LIKE';\n\n filters[i][i2 + 1] = '\\'%' + filters[i][i2 + 1] + '\\'';\n }\n else if (singleSubFilter === '=' || singleSubFilter === '<>' || singleSubFilter === '>' || singleSubFilter === '>=' || singleSubFilter === '<' || singleSubFilter === '<=') {\n if (!filters[i][i2 + 1])\n filters[i][i2 + 1] = 'NULL';\n else if (typeof filters[i][i2 + 1] === 'string') {\n filters[i][i2 + 1] = '\\'' + filters[i][i2 + 1] + '\\'';\n }\n }\n else if (singleSubFilter === '!') {\n filters[i][i2] = 'NOT';\n singleSubFilter = 'NOT';\n }\n sqlFilter += ' ' + singleSubFilter + ' ';\n }\n else if (singleSubFilterType.toString() === 'object' && singleSubFilterIsDate) {\n sqlFilter += ' \\'' + singleSubFilter.toISOString().split('T')[0] + '\\' ';\n }\n else if (singleSubFilterType.toString() === 'number') {\n sqlFilter += ' ' + singleSubFilter.toString() + ' ';\n }\n else if (singleSubFilterType.toString() === 'boolean') {\n if (singleSubFilter.toString() === 'true')\n sqlFilter += '1 ';\n else if (singleSubFilter.toString() === 'false' || singleSubFilter === null || singleSubFilter === undefined)\n sqlFilter += '0 ';\n }\n }\n\n sqlFilter += ')';\n }\n else if (singleFilterType.toString() === 'string') {\n if (singleFilter === 'contains') {\n filters[i] = 'LIKE';\n singleFilter = 'LIKE';\n\n filters[i + 1] = '\\'%' + filters[i + 1] + '%\\'';\n }\n else if (singleFilter === 'notcontains') {\n filters[i] = 'NOT LIKE';\n singleFilter = 'NOT LIKE';\n\n filters[i + 1] = '\\'%' + filters[i + 1] + '%\\'';\n }\n else if (singleFilter === 'startswith') {\n filters[i] = 'LIKE';\n singleFilter = 'LIKE';\n\n filters[i + 1] = '\\'' + filters[i + 1] + '%\\'';\n }\n else if (singleFilter === 'endswith') {\n filters[i] = 'LIKE';\n singleFilter = 'LIKE';\n\n filters[i + 1] = '\\'%' + filters[i + 1] + '\\'';\n }\n else if (singleFilter === '=' || singleFilter === '<>' || singleFilter === '>' || singleFilter === '>=' || singleFilter === '<' || singleFilter === '<=') {\n if (!filters[i + 1])\n filters[i + 1] = 'NULL';\n else if (typeof filters[i + 1] === 'string') {\n filters[i + 1] = '\\'' + filters[i + 1] + '\\'';\n }\n }\n else if (singleFilter === '!') {\n filters[i] = 'NOT';\n singleFilter = 'NOT';\n }\n sqlFilter += ' ' + singleFilter + ' ';\n }\n else if (singleFilterType.toString() === 'object' && singleFilterIsDate) {\n sqlFilter += ' \\'' + singleFilter.toISOString().split('T')[0] + '\\' ';\n }\n else if (singleFilterType.toString() === 'number') {\n sqlFilter += ' ' + singleFilter.toString() + ' ';\n }\n else if (singleFilterType.toString() === 'boolean') {\n if (singleFilter.toString() === 'true')\n sqlFilter += '1 ';\n else if (singleFilter.toString() === 'false' || singleFilter === null || singleFilter === undefined)\n sqlFilter += '0 ';\n }\n }\n\n sqlFilter += ')';\n }\n });\n\n async function getRecords() {\n if (sqlFilter === '(')\n sqlFilter = '';\n\n var records = await getWarehouseRecords(sqlFilter);\n return {\n data: records,\n totalCount: records.length\n };\n }\n\n return getRecords()\n .then(function (result) {\n return result;\n })\n .catch(() => { throw new Error('Data Loading Error'); });\n },\n });\n\n const getWarehousePayload = React.useCallback(async (Almacen) => {\n try {\n let apiName = 'AdminSC';\n let path = '/procesaalmacenes';\n\n let myInit = {\n headers: {\n 'Content-Type': 'application/json',\n Authorization: `${(await Auth.currentSession()).getAccessToken().getJwtToken()}`\n },\n queryStringParameters: {\n Almacen: Almacen,\n action: 'payloadPO',\n username: JSON.parse(JSON.stringify(await Auth.currentAuthenticatedUser())).username,\n }\n }\n\n var payloadGet = await API.get(apiName, path, myInit);\n\n setWarehousePayload(payloadGet);\n }\n catch (e) {\n if (e === 'No current user') {\n history.push('/');\n\n window.location.reload();\n }\n }\n\n return payloadGet;\n }, [history])\n\n const getPlazas = React.useCallback(async () => {\n let apiName = 'AdminSC';\n let path = '/getcatalogo';\n\n let myInit = {\n headers: {\n 'Content-Type': 'application/json',\n Authorization: `${(await Auth.currentSession()).getAccessToken().getJwtToken()}`\n },\n queryStringParameters: {\n type: 'Plaza',\n username: JSON.parse(JSON.stringify(await Auth.currentAuthenticatedUser())).username\n }\n }\n\n var plazasGet = await API.get(apiName, path, myInit);\n\n setPlazas(plazasGet);\n\n }, []);\n\n\n function editWarehouse(data) {\n return (\n <Link to={`/WarehousePOSuggestion/${data.data.Almacen}`}>\n <button class=\"bg-blue-500 hover:bg-blue-700 text-white py-1 px-3 rounded\" onClick={() => editButton(data.data.Almacen)}><FontAwesomeIcon icon={faPencilAlt} /> Editar</button>\n </Link>\n )\n }\n\n const editButton = React.useCallback(async (Almacen) => {\n try {\n if (!window.event.metaKey && !window.event.ctrlKey) {\n setVisibleLoadPanel(true);\n\n setIsDetail(true);\n setAlmacen(Almacen);\n\n var payload = await getWarehousePayload(Almacen);\n\n setWMS(payload.header.WMS);\n\n setActivateUpdateForm(true);\n setActivateSaveButton(true);\n\n setVisibleLoadPanel(false);\n }\n }\n catch (e) {\n setVisibleLoadPanel(false);\n }\n }, [getWarehousePayload]);\n\n async function cancelEditButton() {\n setIsDetail(false);\n };\n\n async function saveButton() {\n if (formDatosGeneralesRef.current) {\n var formDatosGenerales = formDatosGeneralesRef.current.instance();\n\n if (warehousePayload.header.WMS) {\n var isValid = formDatosGenerales.validate();\n\n if (!isValid.isValid) {\n setVisibleToast(true);\n setMessageToast(isValid.brokenRules[0].message);\n setTypeToast('error');\n return;\n }\n }\n }\n\n try {\n setVisibleLoadPanel(true);\n\n var Almacen = warehousePayload.header.Almacen;\n\n //Despues enviamos todo al backend\n let apiName = 'AdminSC';\n let path = '/procesaalmacenes';\n\n let myInit = {\n headers: {\n 'Content-Type': 'application/json',\n Authorization: `${(await Auth.currentSession()).getAccessToken().getJwtToken()}`\n },\n body: {\n Almacen: Almacen,\n payload: warehousePayload,\n action: 'saveChangesPO',\n username: JSON.parse(JSON.stringify(await Auth.currentAuthenticatedUser())).username,\n usuario: props.usuario,\n sucursal: props.sucursal,\n s3Bucket: Storage._config.AWSS3.bucket\n }\n }\n\n var payloadPost = await API.post(apiName, path, myInit);\n\n if (payloadPost.ok === 'true') {\n setVisibleToast(true);\n setMessageToast('Se actualizó el Almacén con éxito');\n setTypeToast('success')\n }\n else if (payloadPost.ok === 'false') {\n setVisibleToast(true);\n setMessageToast(payloadPost.message);\n setTypeToast('error')\n }\n\n editButton(Almacen);\n\n setVisibleLoadPanel(false);\n }\n catch (e) {\n setVisibleLoadPanel(false);\n\n if (e === 'No current user') {\n history.push('/');\n\n window.location.reload();\n }\n }\n };\n\n function refreshButton() {\n if (gridTableroRef.current) {\n var gridTablero = gridTableroRef.current.instance();\n\n gridTablero.refresh();\n }\n }\n\n useEffect(() => {\n window.addEventListener('popstate', (e) => {\n var hash;\n\n try {\n hash = e.target.location.hash;\n }\n catch (e) {\n hash = '';\n }\n\n if (hash === '#/WarehousePOSuggestion') {\n history.push('/WarehousePOSuggestion');\n\n window.location.reload();\n }\n });\n\n async function initialize() {\n setVisibleLoadPanel(true);\n\n await getPlazas();\n\n setVisibleLoadPanel(false);\n }\n\n initialize();\n\n //En caso de solicitar un ID especifico, redireccionamos a ese ID\n if (!props.match.isExact) {\n var urlID = props.location.pathname.replace('/WarehousePOSuggestion/', '');\n\n if (urlID === 'undefined')\n urlID = undefined;\n\n if (urlID)\n editButton(urlID);\n }\n\n // eslint-disable-next-line\n }, []);\n\n function onHidingToast() {\n setVisibleToast(false);\n }\n\n function onExporting(e) {\n const workbook = new Workbook();\n const worksheet = workbook.addWorksheet('Datos');\n\n exportDataGrid({\n component: e.component,\n worksheet,\n autoFilterEnabled: true,\n }).then(() => {\n workbook.xlsx.writeBuffer().then((buffer) => {\n saveAs(new Blob([buffer], { type: 'application/octet-stream' }), 'Datos.xlsx');\n });\n });\n e.cancel = true;\n };\n\n var almacenEditorOptions = useMemo(() => {\n return {\n width: '100%',\n readOnly: true\n };\n }, []);\n\n var nombreAlmacenEditorOptions = useMemo(() => {\n return {\n width: '100%',\n readOnly: true\n };\n }, []);\n\n var plazasDataSource = useMemo(() => {\n return new DataSource({\n paginate: true,\n store: {\n type: \"array\",\n key: \"value\",\n data: plazas\n }\n });\n }, [plazas]);\n\n try {\n var seguimientoPOPlazaEditorOptions = {\n dataSource: plazasDataSource,\n displayExpr: 'name',\n valueExpr: 'value',\n searchEnabled: true,\n acceptCustomValue: false,\n value: (warehousePayload.header.SeguimientoPOPlaza ? warehousePayload.header.SeguimientoPOPlaza : ''),\n width: '100%',\n showClearButton: true\n };\n }\n catch (e) {\n var seguimientoPOPlazaEditorOptions = {\n dataSource: plazasDataSource,\n displayExpr: 'name',\n valueExpr: 'value',\n searchEnabled: true,\n acceptCustomValue: false,\n value: '',\n width: '100%',\n showClearButton: true\n };\n }\n\n const onFieldDataChanged = React.useCallback((e) => {\n if (e.dataField === 'header.WMS') {\n setWMS(!wms);\n }\n }, [wms]);\n\n return (\n <div>\n {isDetail === false ? (\n <div class=\"bg-gray-200 m-2\">\n <h1 class=\"font-sans inline-block text-xl font-bold text-gray-700 leading-8 align-top mb-1\"><FontAwesomeIcon icon={faList} size=\"lg\" /> Almacenes Sugerencia de Compras</h1>\n </div>\n ) :\n (\n <div class=\"bg-gray-200 m-2\">\n <h1 class=\"font-sans inline-block text-xl font-bold text-gray-700 leading-8 align-top mb-1\"><FontAwesomeIcon icon={faWarehouseFull} size=\"xl\" /> {(warehousePayload.header ? warehousePayload.header.Almacen : 'Almacén')}</h1>\n </div>\n )}\n\n <LoadPanel\n shadingColor=\"rgba(0,0,0,0.4)\"\n visible={visibleLoadPanel}\n showIndicator={true}\n message=\"Por favor espere...\"\n shading={true}\n showPane={true}\n hideOnOutsideClick={false}\n />\n\n <Toast\n visible={visibleToast}\n message={messageToast}\n type={typeToast}\n onHiding={onHidingToast}\n displayTime={5000}\n width={'auto'}\n position={{\n my: 'top center',\n at: 'top center',\n of: window,\n offset: '0 130'\n }}\n />\n\n <div class=\"bg-gray-200 m-2\">\n {isDetail === false ? (\n <div class=\"bg-white p-3 shadow-xl\">\n <div>\n <button onClick={refreshButton} type=\"submit\" class=\"mb-4 bg-blue-500 hover:bg-blue-700 text-white font-bold py-2 px-4 rounded\">\n <FontAwesomeIcon icon={faArrowsRotate} /> Actualizar\n </button>\n </div>\n\n <div className=\"options mb-2\">\n <div className=\"option\">\n <CheckBox text=\"Expandir todos los grupos\"\n value={autoExpandAll}\n onValueChanged={onAutoExpandAllChanged}></CheckBox>\n </div>\n </div>\n\n <DataGrid\n height={800}\n id=\"gridContainer\"\n columnsAutoWidth={true}\n filterBuilder={filterBuilder}\n dataSource={store}\n allowColumnReordering={true}\n allowColumnResizing={true}\n columnResizingMode={\"widget\"}\n showBorders={true}\n rowAlternationEnabled={true}\n showRowLines={true}\n showColumnLines={true}\n remoteOperations={{ filtering: true }}\n ref={gridTableroRef}\n onExporting={onExporting}\n >\n <Scrolling rowRenderingMode='virtual'></Scrolling>\n <Paging defaultPageSize={10} />\n <Pager\n visible={true}\n allowedPageSizes={allowedPageSizes}\n displayMode='compact'\n showPageSizeSelector={true}\n showInfo={true}\n showNavigationButtons={true}\n />\n <FilterRow visible={true} />\n <FilterPanel visible={true} />\n <FilterBuilderPopup position={filterBuilderPopupPosition} />\n\n <HeaderFilter visible={true} />\n\n <GroupPanel visible={true} />\n <SearchPanel visible={true} />\n <ColumnChooser\n enabled={true}\n mode='select'\n >\n <ColumnChooserSearch\n enabled={true}\n />\n\n <ColumnChooserSelection\n allowSelectAll={true}\n selectByClick={true}\n recursive={true}\n />\n </ColumnChooser>\n <Grouping autoExpandAll={autoExpandAll} />\n <StateStoring enabled={true} type=\"localStorage\" storageKey=\"gridWarehouseWMS\" />\n <Export enabled={true} />\n\n <Column caption=\"\" alignment=\"center\" width={100} cellRender={editWarehouse} />\n <Column dataField=\"Almacen\" dataType=\"string\" width={110} caption=\"Almacén\" />\n <Column dataField=\"NombreAlmacen\" dataType=\"string\" width={300} caption=\"Nombre Almacén\" />\n <Column dataField=\"NombreSucursal\" dataType=\"string\" width={300} caption=\"Nombre Sucursal\" />\n <Column dataField=\"Sucursal\" dataType=\"number\" width={120} caption=\"Sucursal\" />\n <Column caption=\"Plaza\" dataField=\"Plaza\" dataType=\"string\" width={150} visible={false} />\n\n <Column dataField=\"SeguimientoPO\" caption=\"Seguimiento Orden Compra\" dataType=\"boolean\" width={150} />\n <Column dataField=\"SeguimientoPODesglozar\" caption=\"Desglozar Seguimiento\" dataType=\"boolean\" width={150} />\n <Column dataField=\"SeguimientoPOPlaza\" dataType=\"string\" width={400} caption=\"Seguimiento Orden Compra Plaza\" />\n </DataGrid>\n </div>\n ) : (<div />)}\n <Route exact path=\"/WarehousePOSuggestion/:Almacen\" render={({ match }) => {\n return (\n <div class=\"bg-gray-200\">\n {isDetail.toString() === 'true' ?\n (\n <div>\n <Link to=\"/WarehousePOSuggestion\">\n <button onClick={cancelEditButton} type=\"submit\" class=\"mb-4 bg-red-500 hover:bg-red-700 text-white font-bold py-2 px-4 rounded\">\n <FontAwesomeIcon icon={faArrowRotateLeft} /> Regresar\n </button>\n </Link>\n\n {activateSaveButton.toString() === 'true' ?\n (\n <button onClick={saveButton} type=\"submit\" class=\"ml-4 mb-4 bg-blue-500 hover:bg-blue-700 text-white font-bold py-2 px-4 rounded\">\n <FontAwesomeIcon icon={faSave} /> Guardar Cambios\n </button>\n ) : (\n <div class=\"inline-block\"></div>\n )}\n\n <div class=\"bg-white p-4 shadow-xl\">\n <Form\n id=\"formTransaccion\"\n labelMode={'outside'}\n formData={warehousePayload}\n readOnly={!activateUpdateForm}\n showColonAfterLabel={false}\n labelLocation={'top'}\n ref={formDatosGeneralesRef}\n onFieldDataChanged={onFieldDataChanged}\n >\n <TabbedItem>\n <TabPanelOptions deferRendering={false} showNavButtons={true} />\n <Tab title=\"Datos Generales\" colCount={3}>\n <GroupItem caption=\"General\">\n <Item cssClass=\"boldText\" colSpan={2} dataField=\"header.Almacen\" editorOptions={almacenEditorOptions} >\n <Label text={\"Almacén\"} />\n </Item>\n <Item cssClass=\"boldText\" colSpan={2} dataField=\"header.NombreAlmacen\" editorOptions={nombreAlmacenEditorOptions} >\n <Label text={\"Nombre Almacén\"} />\n </Item>\n </GroupItem>\n <GroupItem caption=\"Sugerencia de Compras\">\n <Item cssClass=\"boldText\" colSpan={2} editorType=\"dxCheckBox\" dataField=\"header.SeguimientoPO\">\n <Label text={\"Seguimiento\"} />\n </Item>\n <Item cssClass=\"boldText\" colSpan={2} editorType=\"dxCheckBox\" dataField=\"header.SeguimientoPODesglozar\">\n <Label text={\"Desglozar Seguimiento\"} />\n </Item>\n <Item editorType=\"dxSelectBox\" dataField=\"header.SeguimientoPOPlaza\" editorOptions={seguimientoPOPlazaEditorOptions} >\n <Label text={\"Plaza\"} />\n </Item>\n </GroupItem>\n </Tab>\n </TabbedItem>\n </Form>\n </div>\n </div>\n ) :\n (\n <div></div>\n )\n }\n </div>\n )\n }}\n />\n </div>\n </div>\n );\n}\n","export default \"data:image/png;base64,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\"","/* eslint-disable */\n// WARNING: DO NOT EDIT. This file is automatically generated by AWS Amplify. It will be overwritten.\n\nconst awsmobile = {\n \"aws_project_region\": \"us-east-1\",\n \"aws_cloud_logic_custom\": [\n {\n \"name\": \"AdminQueries\",\n \"endpoint\": \"https://0tzgo5ywt1.execute-api.us-east-1.amazonaws.com/prod\",\n \"region\": \"us-east-1\"\n },\n {\n \"name\": \"AdminSC\",\n \"endpoint\": \"https://w68cju9833.execute-api.us-east-1.amazonaws.com/prod\",\n \"region\": \"us-east-1\"\n }\n ],\n \"aws_cognito_identity_pool_id\": \"us-east-1:c0e2d315-c674-4da3-98fd-ca68c885bc39\",\n \"aws_cognito_region\": \"us-east-1\",\n \"aws_user_pools_id\": \"us-east-1_gIGa6zgGa\",\n \"aws_user_pools_web_client_id\": \"690ah3njhj07qtbhgnn7l8ttbo\",\n \"oauth\": {},\n \"aws_cognito_username_attributes\": [],\n \"aws_cognito_social_providers\": [],\n \"aws_cognito_signup_attributes\": [\n \"EMAIL\"\n ],\n \"aws_cognito_mfa_configuration\": \"OFF\",\n \"aws_cognito_mfa_types\": [\n \"SMS\"\n ],\n \"aws_cognito_password_protection_settings\": {\n \"passwordPolicyMinLength\": \"8\",\n \"passwordPolicyCharacters\": []\n },\n \"aws_cognito_verification_mechanisms\": [\n \"PHONE_NUMBER\"\n ],\n \"aws_user_files_s3_bucket\": \"attachmentsadminsc205337-prod\",\n \"aws_user_files_s3_bucket_region\": \"us-east-1\",\n \"geo\": {\n \"amazon_location_service\": {\n \"region\": \"us-east-1\",\n \"maps\": {\n \"items\": {\n \"scMap-prod\": {\n \"style\": \"VectorEsriStreets\"\n }\n },\n \"default\": \"scMap-prod\"\n }\n }\n },\n \"aws_cognito_login_mechanism\": [\n \"PREFERRED_USERNAME\"\n ]\n};\n\n\nexport default awsmobile;\n","import React from 'react';\nimport { FontAwesomeIcon } from \"@fortawesome/react-fontawesome\";\nimport { faArrowUpRightFromSquare } from \"@fortawesome/pro-solid-svg-icons\";\n\nexport default function gsItem({\n name\n}) {\n return (\n <div className=\"custom-item\">\n <div>{`${name}`}<button className={\"text-black py-1 px-3 rounded\"}><FontAwesomeIcon icon={faArrowUpRightFromSquare} /></button></div>\n </div>\n );\n}","import React from 'react';\nimport { FontAwesomeIcon } from \"@fortawesome/react-fontawesome\";\nimport { faUserSecret } from \"@fortawesome/pro-solid-svg-icons\";\nimport { faArrowUpRightFromSquare } from \"@fortawesome/pro-solid-svg-icons\";\nimport { faUserTie } from \"@fortawesome/pro-solid-svg-icons\";\nimport { faTruckMoving } from \"@fortawesome/pro-solid-svg-icons\";\nimport { faUmbrellaBeach } from \"@fortawesome/pro-solid-svg-icons\";\nimport { faFilePdf } from \"@fortawesome/pro-solid-svg-icons\";\nimport { faUsers } from \"@fortawesome/pro-solid-svg-icons\";\nimport { faCommentDollar } from \"@fortawesome/pro-solid-svg-icons\";\nimport { faThumbsDown } from \"@fortawesome/pro-solid-svg-icons\";\nimport { faHandshake } from \"@fortawesome/pro-solid-svg-icons\";\nimport { faFileInvoiceDollar } from \"@fortawesome/pro-solid-svg-icons\";\nimport { faPersonDolly } from \"@fortawesome/pro-solid-svg-icons\";\nimport { faPersonCarryBox } from \"@fortawesome/pro-solid-svg-icons\";\nimport { faTruckFast } from \"@fortawesome/pro-solid-svg-icons\";\nimport { faHandHoldingBox } from \"@fortawesome/pro-solid-svg-icons\";\nimport { faRightLeft } from \"@fortawesome/pro-solid-svg-icons\";\nimport { faPenNib } from \"@fortawesome/pro-solid-svg-icons\";\nimport { faForklift } from \"@fortawesome/pro-solid-svg-icons\";\nimport { faCashRegister } from \"@fortawesome/pro-solid-svg-icons\";\nimport { faPiggyBank } from \"@fortawesome/pro-solid-svg-icons\";\nimport { faPalletBoxes } from \"@fortawesome/pro-solid-svg-icons\";\nimport { faBoxesStacked } from \"@fortawesome/pro-solid-svg-icons\";\nimport { faTruckFlatbed } from \"@fortawesome/pro-solid-svg-icons\";\nimport { faFileChartColumn } from \"@fortawesome/pro-solid-svg-icons\";\nimport { faWineGlassCrack } from \"@fortawesome/pro-solid-svg-icons\";\n\nexport default function gsGroup({\n key\n}) {\n return (\n <div className=\"custom-group\">\n <div><FontAwesomeIcon className={\"mr-2\"}\n icon={\n (key === 'Checklist Supervisores' ? faUserSecret :\n (key === 'Checklist Auditores' ? faUserTie :\n (key === 'Checklist Vehiculos' ? faTruckMoving :\n (key === 'Solicitud Vac' ? faUmbrellaBeach :\n (key === 'Plantilla PDF' ? faFilePdf :\n (key === 'Lista de Usuarios' ? faUsers :\n (key === 'Cotización' ? faCommentDollar :\n (key === 'Venta Perdida' ? faThumbsDown :\n (key === 'Pedido' ? faHandshake :\n (key === 'Anticipo Saldo' ? faPiggyBank :\n (key === 'Factura' ? faFileInvoiceDollar :\n (key === 'Sol. Modificacion' ? faPenNib :\n (key === 'Corte Caja' ? faCashRegister :\n (key === 'Entrega Directa' ? faPersonDolly :\n (key === 'Devolucion Directa' ? faPersonCarryBox :\n (key === 'Solicitud Envio' ? faTruckFast :\n (key === 'Solicitud Devolucion' ? faHandHoldingBox :\n (key === 'Solicitud Traspaso' ? faRightLeft :\n (key === 'Transferencia' ? faWineGlassCrack :\n (key === 'Solicitud Embarque' ? faForklift :\n undefined\n )\n )\n )\n )\n )\n )\n )\n )\n )\n )\n )\n )\n )\n )\n )\n )\n )\n )\n )\n )} />\n\n {`${key}`}</div>\n </div>\n );\n}","import React, { useState, useEffect, useRef } from 'react';\n\nimport secureLocalStorage from \"react-secure-storage\";\n\n//react-router-dom\nimport {\n Route,\n NavLink,\n HashRouter,\n useHistory\n} from \"react-router-dom\";\n\n//Importaciones para el menu\nimport Box from '@mui/material/Box';\nimport Avatar from '@mui/material/Avatar';\nimport Menu from '@mui/material/Menu';\nimport MenuItem from '@mui/material/MenuItem';\nimport Divider from '@mui/material/Divider';\nimport IconButton from '@mui/material/IconButton';\nimport Button from '@mui/material/Button';\nimport KeyboardArrowDownIcon from '@mui/icons-material/KeyboardArrowDown';\n\n//Modulos de Super Colchones\nimport Home from \"./Home/Home\";\nimport Rastreopedidos from \"./Rastreopedidos/Rastreopedidos.js\";\nimport DownloadInvoice from \"./DownloadInvoice/DownloadInvoice.js\";\nimport Attendance from \"./Attendance/Attendance.js\";\nimport Pricelist from \"./Pricelist/Pricelist.js\";\nimport Commission from \"./Commission/Commission.js\";\nimport Incentive from \"./Incentive/Incentive.js\";\nimport Checklist from \"./Checklist/Checklist.js\";\nimport ChecklistAud from \"./ChecklistAud/ChecklistAud.js\";\nimport ChecklistVeh from \"./ChecklistVeh/ChecklistVeh.js\";\nimport Document from \"./Document/Document.js\";\nimport DocumentViewer from \"./DocumentViewer/DocumentViewer.js\";\nimport Vacation from \"./Vacation/Vacation.js\";\nimport Signin from \"./Signin/Signin.js\";\nimport Signout from \"./Signout/Signout.js\";\nimport Signup from \"./Signup/Signup.js\";\nimport Users from \"./Users/Users.js\";\nimport PdfTemplate from \"./PdfTemplate/PdfTemplate.js\";\nimport PdfRender from \"./PdfRender/PdfRender.js\";\nimport PdfEditor from \"./PdfEditor/PdfEditor.js\";\nimport PasswordChange from \"./PasswordChange/PasswordChange.js\";\nimport ProcessInvoice from \"./ProcessInvoice/ProcessInvoice.js\";\nimport ProcessInvoiceLoc from \"./ProcessInvoiceLoc/ProcessInvoiceLoc.js\";\nimport ProcessInvoiceWHS from \"./ProcessInvoiceWHS/ProcessInvoiceWHS.js\";\nimport Estimate from \"./Estimate/Estimate.js\";\nimport LostDeal from \"./LostDeal/LostDeal.js\";\nimport SalesOrder from \"./SalesOrder/SalesOrder.js\";\nimport Invoice from \"./Invoice/Invoice.js\";\nimport CustomerPayment from \"./CustomerPayment/CustomerPayment.js\";\nimport SalesOrderMod from \"./SalesOrderMod/SalesOrderMod.js\";\nimport CashRegister from \"./CashRegister/CashRegister.js\";\nimport DirectDelivery from \"./DirectDelivery/DirectDelivery.js\";\nimport DirectReturn from \"./DirectReturn/DirectReturn.js\";\nimport DeliveryRequest from \"./DeliveryRequest/DeliveryRequest.js\";\nimport ReturnRequest from \"./ReturnRequest/ReturnRequest.js\";\nimport TransferOrder from \"./TransferOrder/TransferOrder.js\";\nimport ShipmentRequest from \"./ShipmentRequest/ShipmentRequest.js\";\nimport InvTransferOrder from \"./InvTransferOrder/InvTransferOrder.js\";\nimport InvItemFulfillment from \"./InvItemFulfillment/InvItemFulfillment.js\";\nimport InvItemReceipt from \"./InvItemReceipt/InvItemReceipt.js\";\nimport Kardex from \"./Kardex/Kardex.js\";\nimport InvLevels from \"./InvLevels/InvLevels.js\";\nimport InvLevelsIncCost from \"./InvLevelsIncCost/InvLevelsIncCost.js\";\nimport SalesCompReport from \"./SalesCompReport/SalesCompReport.js\";\nimport InventoryTransfer from \"./InventoryTransfer/InventoryTransfer.js\";\nimport LoginInfo from \"./LoginInfo/LoginInfo.js\";\nimport LabelWMS from \"./LabelWMS/LabelWMS.js\";\nimport ExploreBarcode from \"./ExploreBarcode/ExploreBarcode.js\";\nimport ExploreBarcodeCosts from \"./ExploreBarcodeCosts/ExploreBarcodeCosts.js\";\nimport MoveItemWMS from './MoveItemWMS/MoveItemWMS';\nimport ReceiveOrderWMS from \"./ReceiveOrderWMS/ReceiveOrderWMS.js\";\nimport FulfillmentOrderWMS from \"./FulfillmentOrderWMS/FulfillmentOrderWMS.js\";\nimport WarehouseWMS from \"./WarehouseWMS/WarehouseWMS.js\";\nimport WarehousePositionWMS from \"./WarehousePositionWMS/WarehousePositionWMS.js\";\nimport ItemWMS from \"./ItemWMS/ItemWMS.js\";\nimport AdjustItemWMS from \"./AdjustItemWMS/AdjustItemWMS.js\";\nimport FulfillmentOrderWMSPriority from \"./FulfillmentOrderWMSPriority/FulfillmentOrderWMSPriority.js\";\nimport LockSalesOrder from './LockSalesOrder/LockSalesOrder.js';\nimport UnlockSalesOrder from './UnlockSalesOrder/UnlockSalesOrder.js';\nimport ItemCountWMS from './ItemCountWMS/ItemCountWMS.js';\nimport CreateItemCountWMS from './CreateItemCountWMS/CreateItemCountWMS.js';\nimport POSuggestionsReport from './POSuggestionsReport/POSuggestionsReport.js';\nimport ItemPOSuggestion from './ItemPOSuggestion/ItemPOSuggestion.js';\nimport WarehousePOSuggestion from './WarehousePOSuggestion/WarehousePOSuggestion.js';\n\n\nimport logo from './supercolchones.png';\n\nimport { faHome } from \"@fortawesome/pro-solid-svg-icons\";\nimport { faLockKeyhole } from \"@fortawesome/pro-solid-svg-icons\";\nimport { faLockKeyholeOpen } from \"@fortawesome/pro-solid-svg-icons\";\nimport { faBarcode } from \"@fortawesome/pro-solid-svg-icons\";\nimport { faTruck } from \"@fortawesome/pro-solid-svg-icons\";\nimport { faUsers } from \"@fortawesome/pro-solid-svg-icons\";\nimport { FontAwesomeIcon } from \"@fortawesome/react-fontawesome\";\nimport { faDollarSign } from \"@fortawesome/pro-solid-svg-icons\";\nimport { faSignOutAlt } from \"@fortawesome/pro-solid-svg-icons\";\nimport { faUserPlus } from \"@fortawesome/pro-solid-svg-icons\";\nimport { faShoppingBag } from \"@fortawesome/pro-solid-svg-icons\";\nimport { faFileDownload } from \"@fortawesome/pro-solid-svg-icons\";\nimport { faMapMarkerAlt } from \"@fortawesome/pro-solid-svg-icons\";\nimport { faSackDollar } from \"@fortawesome/pro-solid-svg-icons\";\nimport { faUserSecret } from \"@fortawesome/pro-solid-svg-icons\";\nimport { faTrophy } from \"@fortawesome/pro-solid-svg-icons\";\nimport { faBook } from \"@fortawesome/pro-solid-svg-icons\";\nimport { faAddressCard } from \"@fortawesome/pro-solid-svg-icons\";\nimport { faUser } from \"@fortawesome/pro-solid-svg-icons\";\nimport { faSignInAlt } from \"@fortawesome/pro-solid-svg-icons\";\nimport { faWrench } from \"@fortawesome/pro-solid-svg-icons\";\nimport { faBed } from \"@fortawesome/pro-solid-svg-icons\";\nimport { faUmbrellaBeach } from \"@fortawesome/pro-solid-svg-icons\";\nimport { faTruckMoving } from \"@fortawesome/pro-solid-svg-icons\";\nimport { faUserTie } from \"@fortawesome/pro-solid-svg-icons\";\nimport { faFilePdf } from \"@fortawesome/pro-solid-svg-icons\";\nimport { faKey } from \"@fortawesome/pro-solid-svg-icons\";\nimport { faCircleUser } from \"@fortawesome/pro-solid-svg-icons\";\nimport { faChartSimple } from \"@fortawesome/pro-solid-svg-icons\";\nimport { faGear } from \"@fortawesome/pro-solid-svg-icons\";\nimport { faMapLocationDot } from \"@fortawesome/pro-solid-svg-icons\";\nimport { faWarehouse } from \"@fortawesome/pro-solid-svg-icons\";\nimport { faLeft } from \"@fortawesome/pro-solid-svg-icons\";\nimport { faRight } from \"@fortawesome/pro-solid-svg-icons\";\nimport { faInboxIn } from \"@fortawesome/pro-solid-svg-icons\";\nimport { faInboxOut } from \"@fortawesome/pro-solid-svg-icons\";\nimport { faCommentDollar } from \"@fortawesome/pro-solid-svg-icons\";\nimport { faThumbsDown } from \"@fortawesome/pro-solid-svg-icons\";\nimport { faHandshake } from \"@fortawesome/pro-solid-svg-icons\";\nimport { faFileInvoiceDollar } from \"@fortawesome/pro-solid-svg-icons\";\nimport { faPersonDolly } from \"@fortawesome/pro-solid-svg-icons\";\nimport { faPersonCarryBox } from \"@fortawesome/pro-solid-svg-icons\";\nimport { faTruckFast } from \"@fortawesome/pro-solid-svg-icons\";\nimport { faHandHoldingBox } from \"@fortawesome/pro-solid-svg-icons\";\nimport { faRightLeft } from \"@fortawesome/pro-solid-svg-icons\";\nimport { faPenNib } from \"@fortawesome/pro-solid-svg-icons\";\nimport { faForklift } from \"@fortawesome/pro-solid-svg-icons\";\nimport { faCashRegister } from \"@fortawesome/pro-solid-svg-icons\";\nimport { faPiggyBank } from \"@fortawesome/pro-solid-svg-icons\";\nimport { faPalletBoxes } from \"@fortawesome/pro-solid-svg-icons\";\nimport { faTruckFlatbed } from \"@fortawesome/pro-solid-svg-icons\";\nimport { faFileChartColumn } from \"@fortawesome/pro-solid-svg-icons\";\nimport { faWineGlassCrack } from \"@fortawesome/pro-solid-svg-icons\";\nimport { faScannerGun } from \"@fortawesome/pro-solid-svg-icons\";\nimport { faWarehouseFull } from \"@fortawesome/pro-solid-svg-icons\";\nimport { faShelves } from \"@fortawesome/pro-solid-svg-icons\";\nimport { faBedFront } from \"@fortawesome/pro-solid-svg-icons\";\nimport { faCartFlatbedSuitcase } from \"@fortawesome/pro-solid-svg-icons\";\nimport { faPenToSquare } from \"@fortawesome/pro-solid-svg-icons\";\nimport { faSort } from \"@fortawesome/pro-solid-svg-icons\";\nimport { faArrowsSpin } from \"@fortawesome/pro-solid-svg-icons\";\nimport { faToolbox } from \"@fortawesome/pro-solid-svg-icons\";\n\nimport Amplify from 'aws-amplify';\nimport { Auth, API, Hub } from 'aws-amplify';\nimport awsconfig from './aws-exports';\n\nimport { Lookup, DropDownOptions } from 'devextreme-react/lookup';\nimport 'devextreme/data/odata/store';\nimport CustomStore from 'devextreme/data/custom_store';\n\nimport gsItem from './GlobalSearch/gsItem.js';\nimport gsGroup from './GlobalSearch/gsGroup.js';\n\nimport './Main.css';\n\nimport esMessages from \"devextreme/localization/messages/es.json\";\n\nimport { locale, loadMessages } from \"devextreme/localization\";\n\nimport config from \"devextreme/core/config\";\nimport { licenseKey } from './devextreme-license.ts'; \n\nAmplify.configure(awsconfig);\n\nexport default function Main(props) {\n const history = useHistory();\n\n // MENU HOME\n const [anchorHome, setAnchorHome] = React.useState(null);\n const openHome = Boolean(anchorHome);\n\n function handleClickHome(event) {\n setAnchorHome(event.currentTarget);\n };\n function handleCloseHome() {\n setAnchorHome(null);\n };\n\n //Ref para el form de Datos Arqueo\n const [globalSearchRef, setGlobalSearchRef] = useState(React.createRef());\n\n // MENU CUSTOMER\n const [anchorCustomer, setAnchorCustomer] = React.useState(null);\n const openCustomer = Boolean(anchorCustomer);\n\n function handleClickCustomer(event) {\n setAnchorCustomer(event.currentTarget);\n };\n function handleCloseCustomer() {\n setAnchorCustomer(null);\n };\n\n // MENU EMPLOYEE\n const [anchorEmployee, setAnchorEmployee] = React.useState(null);\n const openEmployee = Boolean(anchorEmployee);\n\n function handleClickEmployee(event) {\n setAnchorEmployee(event.currentTarget);\n };\n function handleCloseEmployee() {\n setAnchorEmployee(null);\n };\n\n // MENU SALES\n const [anchorSales, setAnchorSales] = React.useState(null);\n const openSales = Boolean(anchorSales);\n\n function handleClickSales(event) {\n setAnchorSales(event.currentTarget);\n };\n function handleCloseSales() {\n setAnchorSales(null);\n };\n\n // MENU LOGISTICA\n const [anchorLogistics, setAnchorLogistics] = React.useState(null);\n const openLogistics = Boolean(anchorLogistics);\n\n function handleClickLogistics(event) {\n setAnchorLogistics(event.currentTarget);\n };\n function handleCloseLogistics() {\n setAnchorLogistics(null);\n };\n\n // MENU WMS\n const [anchorWMS, setAnchorWMS] = React.useState(null);\n const openWMS = Boolean(anchorWMS);\n\n function handleClickWMS(event) {\n setAnchorWMS(event.currentTarget);\n };\n function handleCloseWMS() {\n setAnchorWMS(null);\n };\n\n // MENU REPORTS\n const [anchorReports, setAnchorReports] = React.useState(null);\n const openReports = Boolean(anchorReports);\n\n function handleClickReports(event) {\n setAnchorReports(event.currentTarget);\n };\n function handleCloseReports() {\n setAnchorReports(null);\n };\n\n function handleKibana() {\n window.open(\"https://f05b68279a09437698c8c3889d7970c3.us-east-1.aws.found.io:9243\", \"_blank\");\n setAnchorReports(null);\n };\n\n // MENU ACCOUNT\n const [anchorAccount, setAnchorAccount] = React.useState(null);\n const openAccount = Boolean(anchorAccount);\n\n function handleClickAccount(event) {\n setAnchorAccount(event.currentTarget);\n };\n function handleCloseAccount() {\n setAnchorAccount(null);\n };\n\n // MENU CONFIGURATION\n const [anchorConfiguration, setAnchorConfiguration] = React.useState(null);\n const openConfiguration = Boolean(anchorConfiguration);\n\n function handleClickConfiguration(event) {\n setAnchorConfiguration(event.currentTarget);\n };\n function handleCloseConfiguration() {\n setAnchorConfiguration(null);\n };\n\n const [status, setStatus] = useState('signedout');\n const [username, setUsername] = useState('');\n const [isadmin, setIsadmin] = useState('false');\n const [sucursal, setSucursal] = useState('');\n const [nombreSucursal, setNombreSucursal] = useState('');\n const [personal, setPersonal] = useState('');\n const [usuario, setUsuario] = useState('');\n const [agente, setAgente] = useState('');\n const [attendance, setAttendance] = useState(false);\n const [pricelist, setPricelist] = useState(false);\n const [commission, setCommission] = useState(false);\n const [incentive, setIncentive] = useState(false);\n const [checklist, setChecklist] = useState(false);\n const [checklistAud, setChecklistAud] = useState(false);\n const [checklistVeh, setChecklistVeh] = useState(false);\n const [pdfDocument, setPdfDocument] = useState(false);\n const [vacation, setVacation] = useState(false);\n const [checklistAccess, setChecklistAccess] = useState('');\n const [attendanceAccess, setAttendanceAccess] = useState('');\n const [vacationAccess, setVacationAccess] = useState('');\n const [salesAccess, setSalesAccess] = useState('');\n const [kibana, setKibana] = useState(false);\n const [procesarFacturas, setProcesarFacturas] = useState(false);\n const [procesarFacturasSucursal, setProcesarFacturasSucursal] = useState(false);\n const [procesarFacturasBodega, setProcesarFacturasBodega] = useState(false);\n const [afectarFacturas, setAfectarFacturas] = useState(false);\n\n const [newChecklist, setNewChecklist] = useState(false);\n const [newChecklistAud, setNewChecklistAud] = useState(false);\n const [newChecklistVeh, setNewChecklistVeh] = useState(false);\n const [estimate, setEstimate] = useState(false);\n const [lostDeal, setLostDeal] = useState(false);\n const [salesOrder, setSalesOrder] = useState(false);\n const [invoice, setInvoice] = useState(false);\n const [directDelivery, setDirectDelivery] = useState(false);\n const [directReturn, setDirectReturn] = useState(false);\n const [deliveryRequest, setDeliveryRequest] = useState(false);\n const [returnRequest, setReturnRequest] = useState(false);\n const [transferOrder, setTransferOrder] = useState(false);\n const [salesOrderMod, setSalesOrderMod] = useState(false);\n const [shipmentRequest, setShipmentRequest] = useState(false);\n const [cashRegister, setCashRegister] = useState(false);\n const [customerPayment, setCustomerPayment] = useState(false);\n const [invTransferOrder, setInvTransferOrder] = useState(false);\n const [repComparativoVentas, setRepComparativoVentas] = useState(false);\n const [poSuggestionsReport, setPOSuggestionsReport] = useState(false);\n const [poSuggestionsReportCfg, setPOSuggestionsReportCfg] = useState(false);\n const [exploreBarcodes, setExploreBarcodes] = useState(false);\n const [exploreBarcodeCosts, setExploreBarcodeCosts] = useState(false);\n\n const [inventoryTransfer, setInventoryTransfer] = useState(false);\n const [invLevels, setInvLevels] = useState(false);\n const [invLevelsIncCost, setInvLevelsIncCost] = useState(false);\n const [kardex, setKardex] = useState(false);\n const [estimateLevel, setEstimateLevel] = useState('');\n const [lostDealLevel, setLostDealLevel] = useState('');\n const [salesOrderLevel, setSalesOrderLevel] = useState('');\n const [invoiceLevel, setInvoiceLevel] = useState('');\n const [directDeliveryLevel, setDirectDeliveryLevel] = useState('');\n const [directReturnLevel, setDirectReturnLevel] = useState('');\n const [deliveryRequestLevel, setDeliveryRequestLevel] = useState('');\n const [returnRequestLevel, setReturnRequestLevel] = useState('');\n const [transferOrderLevel, setTransferOrderLevel] = useState('');\n const [salesOrderModLevel, setSalesOrderModLevel] = useState('');\n const [shipmentRequestLevel, setShipmentRequestLevel] = useState('');\n const [cashRegisterLevel, setCashRegisterLevel] = useState('');\n const [customerPaymentLevel, setCustomerPaymentLevel] = useState('');\n const [invTransferOrderLevel, setInvTransferOrderLevel] = useState('');\n const [inventoryTransferLevel, setInventoryTransferLevel] = useState('');\n const [approveDelivery, setApproveDelivery] = useState(false);\n const [voidDeliveryTransactions, setVoidDeliveryTransactions] = useState(false);\n const [salesOrderModUpdatePrices, setSalesOrderModUpdatePrices] = useState(false);\n const [approveSalesOrderMod, setApproveSalesOrderMod] = useState(false);\n const [regenerateCFDi, setRegenerateCFDi] = useState(false);\n const [sendCFDi, setSendCFDi] = useState(false);\n const [approveInvTransferOrder, setApproveInvTransferOrder] = useState(false);\n const [approveInventoryTransfer, setApproveInventoryTransfer] = useState(false);\n const [invItemFulfillment, setInvItemFulfillment] = useState(false);\n const [invItemFulfillmentLevel, setInvItemFulfillmentLevel] = useState('');\n const [invItemReceipt, setInvItemReceipt] = useState(false);\n const [invItemReceiptLevel, setInvItemReceiptLevel] = useState('');\n const [createLabelWMS, setCreateLabelWMS] = useState(false);\n const [createLabelWMSLevel, setCreateLabelWMSLevel] = useState('');\n const [receiveOrderWMS, setReceiveOrderWMS] = useState(false);\n const [receiveOrderWMSLevel, setReceiveOrderWMSLevel] = useState('');\n const [fulfillmentOrderWMS, setFulfillmentOrderWMS] = useState(false);\n const [assignFulfillmentOrderWMS, setAssignFulfillmentOrderWMS] = useState(false);\n const [fulfillmentOrderWMSLevel, setFulfillmentOrderWMSLevel] = useState('');\n const [adjustItemWMS, setAdjustItemWMS] = useState(false);\n const [adjustItemWMSLevel, setAdjustItemWMSLevel] = useState('');\n const [approveAdjustItemWMS, setApproveAdjustItemWMS] = useState(false);\n const [moveItemWMS, setMoveItemWMS] = useState(false);\n const [itemCountWMS, setItemCountWMS] = useState(false);\n const [approveItemCountWMS, setApproveItemCountWMS] = useState(false);\n const [itemCountWMSLevel, setItemCountWMSLevel] = useState('');\n\n const [closeSalesOrder, setCloseSalesOrder] = useState(false);\n\n const store = new CustomStore({\n load(loadOptions) {\n let sqlFilter = '';\n [\n 'filter'\n ].forEach((i) => {\n sqlFilter = loadOptions.searchValue;\n });\n\n async function getRecords() {\n var records = await getGlobalRecords(sqlFilter);\n\n var groupedRecords = [];\n\n for (var recordIndex in records) {\n var singleRecords = records[recordIndex];\n\n var groupedIndex = -1;\n\n for (var groupedRecordsIndex in groupedRecords) {\n var singlegroupedRecords = groupedRecords[groupedRecordsIndex];\n\n if (singlegroupedRecords.key === singleRecords.recordtype) {\n groupedIndex = groupedRecordsIndex;\n break;\n }\n }\n\n if (groupedIndex === -1) {\n groupedRecords.push({\n key: singleRecords.recordtype,\n items: [],\n count: 0\n })\n\n groupedIndex = groupedRecords.length - 1;\n }\n\n if (singleRecords.recordtype === groupedRecords[groupedIndex].key) {\n groupedRecords[groupedIndex].items.push(singleRecords);\n groupedRecords[groupedIndex].count++;\n }\n }\n\n return {\n data: groupedRecords,\n totalCount: records.length,\n groupCount: groupedRecords.length\n };\n }\n\n return getRecords()\n .then(function (result) {\n return result;\n })\n .catch(() => { throw new Error('Data Loading Error'); });\n },\n });\n\n function isNotEmpty(value) {\n return value !== undefined && value !== null && value !== '';\n }\n\n async function getUserAttributes(user, newStatus) {\n // Obtenemos los atributos de los usuarios desde SQL\n let apiName = 'AdminSC';\n let path = '/procesausuariowebcfg';\n var admin = false;\n\n let myInit = {\n headers: {\n 'Content-Type': 'application/json',\n Authorization: `${(await Auth.currentSession()).getAccessToken().getJwtToken()}`\n },\n queryStringParameters: {\n action: 'payload',\n username: JSON.parse(JSON.stringify(user)).username,\n usernamereq: JSON.parse(JSON.stringify(user)).username\n }\n }\n\n var userAttributes = await API.get(apiName, path, myInit);\n\n if (!userAttributes.attributes) {\n Signout();\n // secureLocalStorage.clear();\n // localStorage.clear();\n return;\n }\n\n // Normalizamos los datos para que el encriptador no genere basura en Application\n\n if (userAttributes.attributes.Sucursal === \"0\") {\n userAttributes.attributes.Sucursal = 0;\n }\n else {\n if (userAttributes.attributes.Sucursal)\n userAttributes.attributes.Sucursal = parseInt(userAttributes.attributes.Sucursal);\n else {\n userAttributes.attributes.Sucursal = 0;\n }\n }\n\n userAttributes.attributes.NombreSucursal = (userAttributes.attributes.NombreSucursal ? userAttributes.attributes.NombreSucursal : '');\n userAttributes.attributes.Personal = (userAttributes.attributes.Personal ? userAttributes.attributes.Personal : '');\n userAttributes.attributes.Usuario = (userAttributes.attributes.Usuario ? userAttributes.attributes.Usuario : '');\n userAttributes.attributes.Agente = (userAttributes.attributes.Agente ? userAttributes.attributes.Agente : '');\n\n userAttributes.attributes.Attendance = (userAttributes.attributes.Attendance ? userAttributes.attributes.Attendance : false);\n userAttributes.attributes.PriceList = (userAttributes.attributes.PriceList ? userAttributes.attributes.PriceList : false);\n userAttributes.attributes.Commission = (userAttributes.attributes.Commission ? userAttributes.attributes.Commission : false);\n userAttributes.attributes.Incentive = (userAttributes.attributes.Incentive ? userAttributes.attributes.Incentive : false);\n userAttributes.attributes.CheckList = (userAttributes.attributes.CheckList ? userAttributes.attributes.CheckList : false);\n userAttributes.attributes.CheckListAud = (userAttributes.attributes.CheckListAud ? userAttributes.attributes.CheckListAud : false);\n userAttributes.attributes.CheckListVeh = (userAttributes.attributes.CheckListVeh ? userAttributes.attributes.CheckListVeh : false);\n userAttributes.attributes.Document = (userAttributes.attributes.Document ? userAttributes.attributes.Document : false);\n userAttributes.attributes.Vacation = (userAttributes.attributes.Vacation ? userAttributes.attributes.Vacation : false);\n userAttributes.attributes.Kibana = (userAttributes.attributes.Kibana ? userAttributes.attributes.Kibana : false);\n userAttributes.attributes.ProcesarFacturas = (userAttributes.attributes.ProcesarFacturas ? userAttributes.attributes.ProcesarFacturas : false);\n userAttributes.attributes.ProcesarFacturasSucursal = (userAttributes.attributes.ProcesarFacturasSucursal ? userAttributes.attributes.ProcesarFacturasSucursal : false);\n userAttributes.attributes.ProcesarFacturasBodega = (userAttributes.attributes.ProcesarFacturasBodega ? userAttributes.attributes.ProcesarFacturasBodega : false);\n userAttributes.attributes.AfectarFacturas = (userAttributes.attributes.AfectarFacturas ? userAttributes.attributes.AfectarFacturas : false);\n userAttributes.attributes.NewCheckList = (userAttributes.attributes.NewCheckList ? userAttributes.attributes.NewCheckList : false);\n userAttributes.attributes.NewCheckListAud = (userAttributes.attributes.NewCheckListAud ? userAttributes.attributes.NewCheckListAud : false);\n userAttributes.attributes.NewCheckListVeh = (userAttributes.attributes.NewCheckListVeh ? userAttributes.attributes.NewCheckListVeh : false);\n userAttributes.attributes.Estimate = (userAttributes.attributes.Estimate ? userAttributes.attributes.Estimate : false);\n userAttributes.attributes.LostDeal = (userAttributes.attributes.LostDeal ? userAttributes.attributes.LostDeal : false);\n userAttributes.attributes.SalesOrder = (userAttributes.attributes.SalesOrder ? userAttributes.attributes.SalesOrder : false);\n userAttributes.attributes.Invoice = (userAttributes.attributes.Invoice ? userAttributes.attributes.Invoice : false);\n userAttributes.attributes.DirectDelivery = (userAttributes.attributes.DirectDelivery ? userAttributes.attributes.DirectDelivery : false);\n userAttributes.attributes.DirectReturn = (userAttributes.attributes.DirectReturn ? userAttributes.attributes.DirectReturn : false);\n userAttributes.attributes.DeliveryRequest = (userAttributes.attributes.DeliveryRequest ? userAttributes.attributes.DeliveryRequest : false);\n userAttributes.attributes.ReturnRequest = (userAttributes.attributes.ReturnRequest ? userAttributes.attributes.ReturnRequest : false);\n userAttributes.attributes.TransferOrder = (userAttributes.attributes.TransferOrder ? userAttributes.attributes.TransferOrder : false);\n userAttributes.attributes.SalesOrderMod = (userAttributes.attributes.SalesOrderMod ? userAttributes.attributes.SalesOrderMod : false);\n userAttributes.attributes.ShipmentRequest = (userAttributes.attributes.ShipmentRequest ? userAttributes.attributes.ShipmentRequest : false);\n userAttributes.attributes.CashRegister = (userAttributes.attributes.CashRegister ? userAttributes.attributes.CashRegister : false);\n userAttributes.attributes.CustomerPayment = (userAttributes.attributes.CustomerPayment ? userAttributes.attributes.CustomerPayment : false);\n userAttributes.attributes.InvTransferOrder = (userAttributes.attributes.InvTransferOrder ? userAttributes.attributes.InvTransferOrder : false);\n userAttributes.attributes.RepComparativoVentas = (userAttributes.attributes.RepComparativoVentas ? userAttributes.attributes.RepComparativoVentas : false);\n userAttributes.attributes.POSuggestionsReport = (userAttributes.attributes.POSuggestionsReport ? userAttributes.attributes.POSuggestionsReport : false);\n userAttributes.attributes.POSuggestionsReportCfg = (userAttributes.attributes.POSuggestionsReportCfg ? userAttributes.attributes.POSuggestionsReportCfg : false);\n userAttributes.attributes.ExploreBarcodes = (userAttributes.attributes.ExploreBarcodes ? userAttributes.attributes.ExploreBarcodes : false);\n userAttributes.attributes.ExploreBarcodeCosts = (userAttributes.attributes.ExploreBarcodeCosts ? userAttributes.attributes.ExploreBarcodeCosts : false);\n userAttributes.attributes.InventoryTransfer = (userAttributes.attributes.InventoryTransfer ? userAttributes.attributes.InventoryTransfer : false);\n userAttributes.attributes.InvLevels = (userAttributes.attributes.InvLevels ? userAttributes.attributes.InvLevels : false);\n userAttributes.attributes.InvLevelsIncCost = (userAttributes.attributes.InvLevelsIncCost ? userAttributes.attributes.InvLevelsIncCost : false);\n userAttributes.attributes.Kardex = (userAttributes.attributes.Kardex ? userAttributes.attributes.Kardex : false);\n userAttributes.attributes.ApproveDelivery = (userAttributes.attributes.ApproveDelivery ? userAttributes.attributes.ApproveDelivery : false);\n userAttributes.attributes.ApproveInvTransferOrder = (userAttributes.attributes.ApproveInvTransferOrder ? userAttributes.attributes.ApproveInvTransferOrder : false);\n userAttributes.attributes.ApproveInventoryTransfer = (userAttributes.attributes.ApproveInventoryTransfer ? userAttributes.attributes.ApproveInventoryTransfer : false);\n userAttributes.attributes.VoidDeliveryTransactions = (userAttributes.attributes.VoidDeliveryTransactions ? userAttributes.attributes.VoidDeliveryTransactions : false);\n userAttributes.attributes.SalesOrderModUpdatePrices = (userAttributes.attributes.SalesOrderModUpdatePrices ? userAttributes.attributes.SalesOrderModUpdatePrices : false);\n userAttributes.attributes.ApproveSalesOrderMod = (userAttributes.attributes.ApproveSalesOrderMod ? userAttributes.attributes.ApproveSalesOrderMod : false);\n userAttributes.attributes.RegenerateCFDi = (userAttributes.attributes.RegenerateCFDi ? userAttributes.attributes.RegenerateCFDi : false);\n userAttributes.attributes.SendCFDi = (userAttributes.attributes.SendCFDi ? userAttributes.attributes.SendCFDi : false);\n userAttributes.attributes.CloseSalesOrder = (userAttributes.attributes.CloseSalesOrder ? userAttributes.attributes.CloseSalesOrder : false);\n\n userAttributes.attributes.SalesPlaza = (userAttributes.attributes.SalesPlaza ? userAttributes.attributes.SalesPlaza : '');\n userAttributes.attributes.EstimateLevel = (userAttributes.attributes.EstimateLevel ? userAttributes.attributes.EstimateLevel : 'Ver');\n userAttributes.attributes.LostDealLevel = (userAttributes.attributes.LostDealLevel ? userAttributes.attributes.LostDealLevel : 'Ver');\n userAttributes.attributes.SalesOrderLevel = (userAttributes.attributes.SalesOrderLevel ? userAttributes.attributes.SalesOrderLevel : 'Ver');\n userAttributes.attributes.InvoiceLevel = (userAttributes.attributes.InvoiceLevel ? userAttributes.attributes.InvoiceLevel : 'Ver');\n userAttributes.attributes.DirectDeliveryLevel = (userAttributes.attributes.DirectDeliveryLevel ? userAttributes.attributes.DirectDeliveryLevel : 'Ver');\n userAttributes.attributes.DirectReturnLevel = (userAttributes.attributes.DirectReturnLevel ? userAttributes.attributes.DirectReturnLevel : 'Ver');\n userAttributes.attributes.DeliveryRequestLevel = (userAttributes.attributes.DeliveryRequestLevel ? userAttributes.attributes.DeliveryRequestLevel : 'Ver');\n userAttributes.attributes.ReturnRequestLevel = (userAttributes.attributes.ReturnRequestLevel ? userAttributes.attributes.ReturnRequestLevel : 'Ver');\n userAttributes.attributes.TransferOrderLevel = (userAttributes.attributes.TransferOrderLevel ? userAttributes.attributes.TransferOrderLevel : 'Ver');\n userAttributes.attributes.SalesOrderModLevel = (userAttributes.attributes.SalesOrderModLevel ? userAttributes.attributes.SalesOrderModLevel : 'Ver');\n userAttributes.attributes.ShipmentRequestLevel = (userAttributes.attributes.ShipmentRequestLevel ? userAttributes.attributes.ShipmentRequestLevel : 'Ver');\n userAttributes.attributes.CashRegisterLevel = (userAttributes.attributes.CashRegisterLevel ? userAttributes.attributes.CashRegisterLevel : 'Ver');\n userAttributes.attributes.CustomerPaymentLevel = (userAttributes.attributes.CustomerPaymentLevel ? userAttributes.attributes.CustomerPaymentLevel : 'Ver');\n userAttributes.attributes.InvTransferOrderLevel = (userAttributes.attributes.InvTransferOrderLevel ? userAttributes.attributes.InvTransferOrderLevel : 'Ver');\n userAttributes.attributes.InventoryTransferLevel = (userAttributes.attributes.InventoryTransferLevel ? userAttributes.attributes.InventoryTransferLevel : 'Ver');\n userAttributes.attributes.InvItemFulfillment = (userAttributes.attributes.InvItemFulfillment ? userAttributes.attributes.InvItemFulfillment : false);\n userAttributes.attributes.InvItemFulfillmentLevel = (userAttributes.attributes.InvItemFulfillmentLevel ? userAttributes.attributes.InvItemFulfillmentLevel : 'Ver');\n userAttributes.attributes.InvItemReceipt = (userAttributes.attributes.InvItemReceipt ? userAttributes.attributes.InvItemReceipt : false);\n userAttributes.attributes.InvItemReceiptLevel = (userAttributes.attributes.InvItemReceiptLevel ? userAttributes.attributes.InvItemReceiptLevel : 'Ver');\n userAttributes.attributes.CreateLabelWMS = (userAttributes.attributes.CreateLabelWMS ? userAttributes.attributes.CreateLabelWMS : false);\n userAttributes.attributes.CreateLabelWMSLevel = (userAttributes.attributes.CreateLabelWMSLevel ? userAttributes.attributes.CreateLabelWMSLevel : 'Ver');\n userAttributes.attributes.ReceiveOrderWMS = (userAttributes.attributes.ReceiveOrderWMS ? userAttributes.attributes.ReceiveOrderWMS : false);\n userAttributes.attributes.ReceiveOrderWMSLevel = (userAttributes.attributes.ReceiveOrderWMSLevel ? userAttributes.attributes.ReceiveOrderWMSLevel : 'Ver');\n userAttributes.attributes.FulfillmentOrderWMS = (userAttributes.attributes.FulfillmentOrderWMS ? userAttributes.attributes.FulfillmentOrderWMS : false);\n userAttributes.attributes.AssignFulfillmentOrderWMS = (userAttributes.attributes.AssignFulfillmentOrderWMS ? userAttributes.attributes.AssignFulfillmentOrderWMS : false);\n userAttributes.attributes.FulfillmentOrderWMSLevel = (userAttributes.attributes.FulfillmentOrderWMSLevel ? userAttributes.attributes.FulfillmentOrderWMSLevel : 'Ver');\n userAttributes.attributes.AdjustItemWMS = (userAttributes.attributes.AdjustItemWMS ? userAttributes.attributes.AdjustItemWMS : false);\n userAttributes.attributes.ApproveAdjustItemWMS = (userAttributes.attributes.ApproveAdjustItemWMS ? userAttributes.attributes.ApproveAdjustItemWMS : false);\n userAttributes.attributes.MoveItemWMS = (userAttributes.attributes.MoveItemWMS ? userAttributes.attributes.MoveItemWMS : false);\n userAttributes.attributes.AdjustItemWMSLevel = (userAttributes.attributes.AdjustItemWMSLevel ? userAttributes.attributes.AdjustItemWMSLevel : 'Ver');\n userAttributes.attributes.ItemCountWMS = (userAttributes.attributes.ItemCountWMS ? userAttributes.attributes.ItemCountWMS : false);\n userAttributes.attributes.ItemCountWMSLevel = (userAttributes.attributes.ItemCountWMSLevel ? userAttributes.attributes.ItemCountWMSLevel : 'Ver');\n userAttributes.attributes.ApproveItemCountWMS = (userAttributes.attributes.ApproveItemCountWMS ? userAttributes.attributes.ApproveItemCountWMS : false);\n\n var groups = user.signInUserSession.accessToken.payload[\"cognito:groups\"];\n\n for (var groupIndex in groups) {\n var singleGroup = groups[groupIndex];\n\n if (singleGroup === 'Admin') {\n setIsadmin('true');\n secureLocalStorage.setItem('isadmin', 'true');\n admin = true;\n }\n }\n\n setUsername(user.username);\n secureLocalStorage.setItem('username', user.username);\n\n setStatus(newStatus);\n secureLocalStorage.setItem('status', newStatus);\n\n setSucursal(userAttributes.attributes.Sucursal.toString());\n secureLocalStorage.setItem('sucursal', userAttributes.attributes.Sucursal.toString());\n\n setNombreSucursal(userAttributes.attributes.NombreSucursal);\n secureLocalStorage.setItem('nombreSucursal', userAttributes.attributes.NombreSucursal);\n\n setPersonal(userAttributes.attributes.Personal);\n secureLocalStorage.setItem('personal', userAttributes.attributes.Personal);\n\n setUsuario(userAttributes.attributes.Usuario);\n secureLocalStorage.setItem('usuario', userAttributes.attributes.Usuario);\n\n setAgente(userAttributes.attributes.Agente);\n secureLocalStorage.setItem('agente', userAttributes.attributes.Agente);\n\n setChecklistAccess(userAttributes.attributes.ChecklistPlaza);\n secureLocalStorage.setItem('checklistAccess', userAttributes.attributes.ChecklistPlaza);\n\n setAttendanceAccess(userAttributes.attributes.AsistenciaPlaza);\n secureLocalStorage.setItem('attendanceAccess', userAttributes.attributes.AsistenciaPlaza);\n\n setVacationAccess(userAttributes.attributes.VacationPlaza);\n secureLocalStorage.setItem('vacationAccess', userAttributes.attributes.VacationPlaza);\n\n setSalesAccess(userAttributes.attributes.SalesPlaza);\n secureLocalStorage.setItem('salesAccess', userAttributes.attributes.SalesPlaza);\n\n setAttendance(userAttributes.attributes.Attendance);\n secureLocalStorage.setItem('attendance', userAttributes.attributes.Attendance);\n\n setPricelist(userAttributes.attributes.PriceList);\n secureLocalStorage.setItem('pricelist', userAttributes.attributes.PriceList);\n\n setCommission(userAttributes.attributes.Commission);\n secureLocalStorage.setItem('commission', userAttributes.attributes.Commission);\n\n setIncentive(userAttributes.attributes.Incentive);\n secureLocalStorage.setItem('incentive', userAttributes.attributes.Incentive);\n\n setChecklist(userAttributes.attributes.CheckList);\n secureLocalStorage.setItem('checklist', userAttributes.attributes.CheckList);\n\n setChecklistAud(userAttributes.attributes.CheckListAud);\n secureLocalStorage.setItem('checklistaud', userAttributes.attributes.CheckListAud);\n\n setChecklistVeh(userAttributes.attributes.CheckListVeh);\n secureLocalStorage.setItem('checklistveh', userAttributes.attributes.CheckListVeh);\n\n setPdfDocument(userAttributes.attributes.Document);\n secureLocalStorage.setItem('pdfDocument', userAttributes.attributes.Document);\n\n setVacation(userAttributes.attributes.Vacation);\n secureLocalStorage.setItem('vacation', userAttributes.attributes.Vacation);\n\n setKibana(userAttributes.attributes.Kibana);\n secureLocalStorage.setItem('kibana', userAttributes.attributes.Kibana);\n\n setProcesarFacturas(userAttributes.attributes.ProcesarFacturas);\n secureLocalStorage.setItem('procesarfacturas', userAttributes.attributes.ProcesarFacturas);\n\n setProcesarFacturasSucursal(userAttributes.attributes.ProcesarFacturasSucursal);\n secureLocalStorage.setItem('procesarfacturassucursal', userAttributes.attributes.ProcesarFacturasSucursal);\n\n setProcesarFacturasBodega(userAttributes.attributes.ProcesarFacturasBodega);\n secureLocalStorage.setItem('procesarfacturasbodega', userAttributes.attributes.ProcesarFacturasBodega);\n\n setAfectarFacturas(userAttributes.attributes.AfectarFacturas);\n secureLocalStorage.setItem('afectarfacturas', userAttributes.attributes.AfectarFacturas);\n\n setNewChecklist(userAttributes.attributes.NewCheckList);\n secureLocalStorage.setItem('newchecklist', userAttributes.attributes.NewCheckList);\n\n setNewChecklistAud(userAttributes.attributes.NewCheckListAud);\n secureLocalStorage.setItem('newchecklistaud', userAttributes.attributes.NewCheckListAud);\n\n setNewChecklistVeh(userAttributes.attributes.NewCheckListVeh);\n secureLocalStorage.setItem('newchecklistveh', userAttributes.attributes.NewCheckListVeh);\n\n setEstimate(userAttributes.attributes.Estimate);\n secureLocalStorage.setItem('estimate', userAttributes.attributes.Estimate);\n\n setLostDeal(userAttributes.attributes.LostDeal);\n secureLocalStorage.setItem('lostDeal', userAttributes.attributes.LostDeal);\n\n setSalesOrder(userAttributes.attributes.SalesOrder);\n secureLocalStorage.setItem('salesOrder', userAttributes.attributes.SalesOrder);\n\n setInvoice(userAttributes.attributes.Invoice);\n secureLocalStorage.setItem('invoice', userAttributes.attributes.Invoice);\n\n setDirectDelivery(userAttributes.attributes.DirectDelivery);\n secureLocalStorage.setItem('directDelivery', userAttributes.attributes.DirectDelivery);\n\n setDirectReturn(userAttributes.attributes.DirectReturn);\n secureLocalStorage.setItem('directReturn', userAttributes.attributes.DirectReturn);\n\n setDeliveryRequest(userAttributes.attributes.DeliveryRequest);\n secureLocalStorage.setItem('deliveryRequest', userAttributes.attributes.DeliveryRequest);\n\n setReturnRequest(userAttributes.attributes.ReturnRequest);\n secureLocalStorage.setItem('returnRequest', userAttributes.attributes.ReturnRequest);\n\n setTransferOrder(userAttributes.attributes.TransferOrder);\n secureLocalStorage.setItem('transferOrder', userAttributes.attributes.TransferOrder);\n\n setSalesOrderMod(userAttributes.attributes.SalesOrderMod);\n secureLocalStorage.setItem('salesOrderMod', userAttributes.attributes.SalesOrderMod);\n\n setShipmentRequest(userAttributes.attributes.ShipmentRequest);\n secureLocalStorage.setItem('shipmentRequest', userAttributes.attributes.ShipmentRequest);\n\n setCashRegister(userAttributes.attributes.CashRegister);\n secureLocalStorage.setItem('cashRegister', userAttributes.attributes.CashRegister);\n\n setCustomerPayment(userAttributes.attributes.CustomerPayment);\n secureLocalStorage.setItem('customerPayment', userAttributes.attributes.CustomerPayment);\n\n setInvTransferOrder(userAttributes.attributes.InvTransferOrder);\n secureLocalStorage.setItem('invTransferOrder', userAttributes.attributes.InvTransferOrder);\n\n setRepComparativoVentas(userAttributes.attributes.RepComparativoVentas);\n secureLocalStorage.setItem('repComparativoVentas', userAttributes.attributes.RepComparativoVentas);\n\n setPOSuggestionsReport(userAttributes.attributes.POSuggestionsReport);\n secureLocalStorage.setItem('poSuggestionsReport', userAttributes.attributes.POSuggestionsReport);\n\n setPOSuggestionsReportCfg(userAttributes.attributes.POSuggestionsReportCfg);\n secureLocalStorage.setItem('poSuggestionsReportCfg', userAttributes.attributes.POSuggestionsReportCfg);\n\n setExploreBarcodes(userAttributes.attributes.ExploreBarcodes);\n secureLocalStorage.setItem('exploreBarcodes', userAttributes.attributes.ExploreBarcodes);\n\n setExploreBarcodeCosts(userAttributes.attributes.ExploreBarcodeCosts);\n secureLocalStorage.setItem('exploreBarcodeCosts', userAttributes.attributes.ExploreBarcodeCosts);\n\n setInventoryTransfer(userAttributes.attributes.InventoryTransfer);\n secureLocalStorage.setItem('inventoryTransfer', userAttributes.attributes.InventoryTransfer);\n\n setInvLevels(userAttributes.attributes.InvLevels);\n secureLocalStorage.setItem('invLevels', userAttributes.attributes.InvLevels);\n\n setInvLevelsIncCost(userAttributes.attributes.InvLevelsIncCost);\n secureLocalStorage.setItem('invLevelsIncCost', userAttributes.attributes.InvLevelsIncCost);\n\n setKardex(userAttributes.attributes.Kardex);\n secureLocalStorage.setItem('kardex', userAttributes.attributes.Kardex);\n\n setApproveDelivery(userAttributes.attributes.ApproveDelivery);\n secureLocalStorage.setItem('approveDelivery', userAttributes.attributes.ApproveDelivery);\n\n setApproveInvTransferOrder(userAttributes.attributes.ApproveInvTransferOrder);\n secureLocalStorage.setItem('approveInvTransferOrder', userAttributes.attributes.ApproveInvTransferOrder);\n\n setApproveInventoryTransfer(userAttributes.attributes.ApproveInventoryTransfer);\n secureLocalStorage.setItem('approveInventoryTransfer', userAttributes.attributes.ApproveInventoryTransfer);\n\n setVoidDeliveryTransactions(userAttributes.attributes.VoidDeliveryTransactions);\n secureLocalStorage.setItem('voidDeliveryTransactions', userAttributes.attributes.VoidDeliveryTransactions);\n\n setSalesOrderModUpdatePrices(userAttributes.attributes.SalesOrderModUpdatePrices);\n secureLocalStorage.setItem('salesOrderModUpdatePrices', userAttributes.attributes.SalesOrderModUpdatePrices);\n\n setApproveSalesOrderMod(userAttributes.attributes.ApproveSalesOrderMod);\n secureLocalStorage.setItem('approveSalesOrderMod', userAttributes.attributes.ApproveSalesOrderMod);\n\n setRegenerateCFDi(userAttributes.attributes.RegenerateCFDi);\n secureLocalStorage.setItem('regenerateCFDi', userAttributes.attributes.RegenerateCFDi);\n\n setSendCFDi(userAttributes.attributes.SendCFDi);\n secureLocalStorage.setItem('sendCFDi', userAttributes.attributes.SendCFDi);\n\n setEstimateLevel(userAttributes.attributes.EstimateLevel);\n secureLocalStorage.setItem('estimateLevel', userAttributes.attributes.EstimateLevel)\n\n setLostDealLevel(userAttributes.attributes.LostDealLevel);\n secureLocalStorage.setItem('lostDealLevel', userAttributes.attributes.LostDealLevel)\n\n setSalesOrderLevel(userAttributes.attributes.SalesOrderLevel);\n secureLocalStorage.setItem('salesOrderLevel', userAttributes.attributes.SalesOrderLevel)\n\n setInvoiceLevel(userAttributes.attributes.InvoiceLevel);\n secureLocalStorage.setItem('invoiceLevel', userAttributes.attributes.InvoiceLevel)\n\n setDirectDeliveryLevel(userAttributes.attributes.DirectDeliveryLevel);\n secureLocalStorage.setItem('directDeliveryLevel', userAttributes.attributes.DirectDeliveryLevel)\n\n setDirectReturnLevel(userAttributes.attributes.DirectReturnLevel);\n secureLocalStorage.setItem('directReturnLevel', userAttributes.attributes.DirectReturnLevel)\n\n setDeliveryRequestLevel(userAttributes.attributes.DeliveryRequestLevel);\n secureLocalStorage.setItem('deliveryRequestLevel', userAttributes.attributes.DeliveryRequestLevel)\n\n setReturnRequestLevel(userAttributes.attributes.ReturnRequestLevel);\n secureLocalStorage.setItem('returnRequestLevel', userAttributes.attributes.ReturnRequestLevel)\n\n setTransferOrderLevel(userAttributes.attributes.TransferOrderLevel);\n secureLocalStorage.setItem('transferOrderLevel', userAttributes.attributes.TransferOrderLevel)\n\n setSalesOrderModLevel(userAttributes.attributes.SalesOrderModLevel);\n secureLocalStorage.setItem('salesOrderModLevel', userAttributes.attributes.SalesOrderModLevel)\n\n setShipmentRequestLevel(userAttributes.attributes.ShipmentRequestLevel);\n secureLocalStorage.setItem('shipmentRequestLevel', userAttributes.attributes.ShipmentRequestLevel)\n\n setCashRegisterLevel(userAttributes.attributes.CashRegisterLevel);\n secureLocalStorage.setItem('cashRegisterLevel', userAttributes.attributes.CashRegisterLevel)\n\n setCustomerPaymentLevel(userAttributes.attributes.CustomerPaymentLevel);\n secureLocalStorage.setItem('customerPaymentLevel', userAttributes.attributes.CustomerPaymentLevel)\n\n setInvTransferOrderLevel(userAttributes.attributes.InvTransferOrderLevel);\n secureLocalStorage.setItem('invTransferOrderLevel', userAttributes.attributes.InvTransferOrderLevel)\n\n setInventoryTransferLevel(userAttributes.attributes.InventoryTransferLevel);\n secureLocalStorage.setItem('inventoryTransferLevel', userAttributes.attributes.InventoryTransferLevel)\n\n setInvItemFulfillment(userAttributes.attributes.InvItemFulfillment);\n secureLocalStorage.setItem('invItemFulfillment', userAttributes.attributes.InvItemFulfillment);\n\n setInvItemFulfillmentLevel(userAttributes.attributes.InvItemFulfillmentLevel);\n secureLocalStorage.setItem('invItemFulfillmentLevel', userAttributes.attributes.InvItemFulfillmentLevel)\n\n setInvItemReceipt(userAttributes.attributes.InvItemReceipt);\n secureLocalStorage.setItem('invItemReceipt', userAttributes.attributes.InvItemReceipt);\n\n setInvItemReceiptLevel(userAttributes.attributes.InvItemReceiptLevel);\n secureLocalStorage.setItem('invItemReceiptLevel', userAttributes.attributes.InvItemReceiptLevel)\n\n setCreateLabelWMS(userAttributes.attributes.CreateLabelWMS);\n secureLocalStorage.setItem('createLabelWMS', userAttributes.attributes.CreateLabelWMS);\n\n setCreateLabelWMSLevel(userAttributes.attributes.CreateLabelWMSLevel);\n secureLocalStorage.setItem('createLabelWMSLevel', userAttributes.attributes.CreateLabelWMSLevel);\n\n setReceiveOrderWMS(userAttributes.attributes.ReceiveOrderWMS);\n secureLocalStorage.setItem('receiveOrderWMS', userAttributes.attributes.ReceiveOrderWMS);\n\n setReceiveOrderWMSLevel(userAttributes.attributes.ReceiveOrderWMSLevel);\n secureLocalStorage.setItem('receiveOrderWMSLevel', userAttributes.attributes.ReceiveOrderWMSLevel);\n\n setFulfillmentOrderWMS(userAttributes.attributes.FulfillmentOrderWMS);\n secureLocalStorage.setItem('fulfillmentOrderWMS', userAttributes.attributes.FulfillmentOrderWMS);\n\n setAssignFulfillmentOrderWMS(userAttributes.attributes.AssignFulfillmentOrderWMS);\n secureLocalStorage.setItem('assignFulfillmentOrderWMS', userAttributes.attributes.AssignFulfillmentOrderWMS);\n\n setFulfillmentOrderWMSLevel(userAttributes.attributes.FulfillmentOrderWMSLevel);\n secureLocalStorage.setItem('fulfillmentOrderWMSLevel', userAttributes.attributes.FulfillmentOrderWMSLevel);\n\n setAdjustItemWMS(userAttributes.attributes.AdjustItemWMS);\n secureLocalStorage.setItem('adjustItemWMS', userAttributes.attributes.AdjustItemWMS);\n\n setApproveAdjustItemWMS(userAttributes.attributes.ApproveAdjustItemWMS);\n secureLocalStorage.setItem('approveAdjustItemWMS', userAttributes.attributes.ApproveAdjustItemWMS);\n\n setMoveItemWMS(userAttributes.attributes.MoveItemWMS);\n secureLocalStorage.setItem('moveItemWMS', userAttributes.attributes.MoveItemWMS);\n\n setAdjustItemWMSLevel(userAttributes.attributes.AdjustItemWMSLevel);\n secureLocalStorage.setItem('adjustItemWMSLevel', userAttributes.attributes.AdjustItemWMSLevel);\n\n setCloseSalesOrder(userAttributes.attributes.CloseSalesOrder);\n secureLocalStorage.setItem('closeSalesOrder', userAttributes.attributes.CloseSalesOrder);\n\n setItemCountWMS(userAttributes.attributes.ItemCountWMS);\n secureLocalStorage.setItem('itemCountWMS', userAttributes.attributes.ItemCountWMS);\n\n setItemCountWMSLevel(userAttributes.attributes.ItemCountWMSLevel);\n secureLocalStorage.setItem('itemCountWMSLevel', userAttributes.attributes.ItemCountWMSLevel);\n\n setApproveItemCountWMS(userAttributes.attributes.ApproveItemCountWMS);\n secureLocalStorage.setItem('approveItemCountWMS', userAttributes.attributes.ApproveItemCountWMS);\n }\n\n const handleAuthStateChange = React.useCallback((data) => {\n var newStatus;\n\n if (data === 'signedout') {\n newStatus = 'signedout';\n }\n else {\n if (data.payload.event === 'signIn')\n newStatus = 'signedin';\n else if (data.payload.event === 'signOut')\n newStatus = 'signedout';\n }\n\n if (newStatus !== 'signedin' && newStatus !== 'signedout')\n return;\n\n if (newStatus === 'signedin' || newStatus === 'signedout') {\n if (newStatus === 'signedin') {\n Auth.currentAuthenticatedUser({\n bypassCache: false\n })\n .then(user => {\n getUserAttributes(user, newStatus)\n })\n .catch(err => {\n setStatus(newStatus);\n setUsername('');\n setIsadmin('false');\n setSucursal('');\n setNombreSucursal('');\n setPersonal('');\n setUsuario('');\n setAgente('');\n setAttendance(false);\n setPricelist(false);\n setCommission(false);\n setIncentive(false);\n setChecklist(false);\n setChecklistAud(false);\n setChecklistVeh(false);\n setPdfDocument(false);\n setVacation(false);\n setKibana(false);\n setProcesarFacturas(false);\n setProcesarFacturasBodega(false);\n setProcesarFacturasSucursal(false);\n setAfectarFacturas(false);\n setChecklistAccess('');\n setAttendanceAccess('');\n setVacationAccess('');\n setSalesAccess('');\n setNewChecklist(false);\n setNewChecklistAud(false);\n setNewChecklistVeh(false);\n setEstimate(false);\n setLostDeal(false);\n setSalesOrder(false);\n setInvoice(false);\n setDirectDelivery(false);\n setDirectReturn(false);\n setDeliveryRequest(false);\n setReturnRequest(false);\n setTransferOrder(false);\n setSalesOrderMod(false);\n setShipmentRequest(false);\n setCashRegister(false);\n setCustomerPayment(false);\n setInvTransferOrder(false);\n setRepComparativoVentas(false);\n setPOSuggestionsReport(false);\n setPOSuggestionsReportCfg(false);\n setExploreBarcodes(false);\n setExploreBarcodeCosts(false);\n setInventoryTransfer(false);\n setInvLevels(false);\n setInvLevelsIncCost(false);\n setKardex(false);\n setApproveDelivery(false);\n setApproveInvTransferOrder(false);\n setApproveInventoryTransfer(false);\n setVoidDeliveryTransactions(false);\n setSalesOrderModUpdatePrices(false);\n setApproveSalesOrderMod(false);\n setRegenerateCFDi(false);\n setSendCFDi(false);\n setInvItemFulfillment(false);\n setInvItemReceipt(false);\n\n setCreateLabelWMS(false);\n setReceiveOrderWMS(false);\n setFulfillmentOrderWMS(false);\n setAssignFulfillmentOrderWMS(false);\n\n setAdjustItemWMS(false);\n setApproveAdjustItemWMS(false);\n setMoveItemWMS(false);\n\n setCloseSalesOrder(false);\n\n setItemCountWMS(false);\n setApproveItemCountWMS(false);\n\n setEstimateLevel('');\n setLostDealLevel('');\n setSalesOrderLevel('');\n setInvoiceLevel('');\n setDirectDeliveryLevel('');\n setDirectReturnLevel('');\n setDeliveryRequestLevel('');\n setReturnRequestLevel('');\n setTransferOrderLevel('');\n setSalesOrderModLevel('');\n setShipmentRequestLevel('');\n setCashRegisterLevel('');\n setCustomerPaymentLevel('');\n setInvTransferOrderLevel('');\n setInventoryTransferLevel('');\n setInvItemFulfillmentLevel('');\n setInvItemReceiptLevel('');\n\n setCreateLabelWMSLevel('');\n setReceiveOrderWMSLevel('');\n setFulfillmentOrderWMSLevel('');\n setAdjustItemWMSLevel('');\n\n setItemCountWMSLevel('');\n\n secureLocalStorage.setItem('username', '');\n secureLocalStorage.setItem('status', newStatus);\n secureLocalStorage.setItem('sucursal', '');\n secureLocalStorage.setItem('nombreSucursal', '');\n secureLocalStorage.setItem('personal', '');\n secureLocalStorage.setItem('usuario', '');\n secureLocalStorage.setItem('agente', '');\n secureLocalStorage.setItem('checklistAccess', '');\n secureLocalStorage.setItem('attendanceAccess', '');\n secureLocalStorage.setItem('vacationAccess', '');\n secureLocalStorage.setItem('salesAccess', '');\n secureLocalStorage.setItem('attendance', false);\n secureLocalStorage.setItem('pricelist', false);\n secureLocalStorage.setItem('commission', false);\n secureLocalStorage.setItem('incentive', false);\n secureLocalStorage.setItem('checklist', false);\n secureLocalStorage.setItem('checklistaud', false);\n secureLocalStorage.setItem('checklistveh', false);\n secureLocalStorage.setItem('pdfDocument', false);\n secureLocalStorage.setItem('vacation', false);\n secureLocalStorage.setItem('kibana', false);\n secureLocalStorage.setItem('procesarfacturas', false);\n secureLocalStorage.setItem('procesarfacturassucursal', false);\n secureLocalStorage.setItem('procesarfacturasbodega', false);\n secureLocalStorage.setItem('afectarfacturas', false);\n secureLocalStorage.setItem('isadmin', 'false');\n secureLocalStorage.setItem('newchecklist', false);\n secureLocalStorage.setItem('newchecklistaud', false);\n secureLocalStorage.setItem('newchecklistveh', false);\n secureLocalStorage.setItem('estimate', false);\n secureLocalStorage.setItem('lostDeal', false);\n secureLocalStorage.setItem('salesOrder', false);\n secureLocalStorage.setItem('invoice', false);\n secureLocalStorage.setItem('directDelivery', false);\n secureLocalStorage.setItem('directReturn', false);\n secureLocalStorage.setItem('deliveryRequest', false);\n secureLocalStorage.setItem('returnRequest', false);\n secureLocalStorage.setItem('transferOrder', false);\n secureLocalStorage.setItem('salesOrderMod', false);\n secureLocalStorage.setItem('shipmentRequest', false);\n secureLocalStorage.setItem('cashRegister', false);\n secureLocalStorage.setItem('customerPayment', false);\n secureLocalStorage.setItem('invTransferOrder', false);\n secureLocalStorage.setItem('repComparativoVentas', false);\n secureLocalStorage.setItem('poSuggestionsReport', false);\n secureLocalStorage.setItem('poSuggestionsReportCfg', false);\n secureLocalStorage.setItem('exploreBarcodes', false);\n secureLocalStorage.setItem('exploreBarcodeCosts', false);\n secureLocalStorage.setItem('inventoryTransfer', false);\n secureLocalStorage.setItem('invLevels', false);\n secureLocalStorage.setItem('invLevelsIncCost', false);\n secureLocalStorage.setItem('kardex', false);\n secureLocalStorage.setItem('approveDelivery', false);\n secureLocalStorage.setItem('approveInvTransferOrder', false);\n secureLocalStorage.setItem('approveInventoryTransfer', false);\n secureLocalStorage.setItem('voidDeliveryTransactions', false);\n secureLocalStorage.setItem('salesOrderModUpdatePrices', false);\n secureLocalStorage.setItem('approveSalesOrderMod', false);\n secureLocalStorage.setItem('regenerateCFDi', false);\n secureLocalStorage.setItem('sendCFDi', false);\n secureLocalStorage.setItem('invItemFulfillment', false);\n secureLocalStorage.setItem('invItemReceipt', false);\n\n secureLocalStorage.setItem('createLabelWMS', false);\n secureLocalStorage.setItem('receiveOrderWMS', false);\n secureLocalStorage.setItem('fulfillmentOrderWMS', false);\n secureLocalStorage.setItem('assignFulfillmentOrderWMS', false);\n secureLocalStorage.setItem('adjustItemWMS', false);\n secureLocalStorage.setItem('approveAdjustItemWMS', false);\n secureLocalStorage.setItem('moveItemWMS', false);\n secureLocalStorage.setItem('closeSalesOrder', false);\n\n secureLocalStorage.setItem('itemCountWMS', false);\n secureLocalStorage.setItem('approveItemCountWMS', false);\n\n\n secureLocalStorage.setItem('estimateLevel', '');\n secureLocalStorage.setItem('lostDealLevel', '');\n secureLocalStorage.setItem('salesOrderLevel', '');\n secureLocalStorage.setItem('invoiceLevel', '');\n secureLocalStorage.setItem('directDeliveryLevel', '');\n secureLocalStorage.setItem('directReturnLevel', '');\n secureLocalStorage.setItem('deliveryRequestLevel', '');\n secureLocalStorage.setItem('returnRequestLevel', '');\n secureLocalStorage.setItem('transferOrderLevel', '');\n secureLocalStorage.setItem('salesOrderModLevel', '');\n secureLocalStorage.setItem('shipmentRequestLevel', '');\n secureLocalStorage.setItem('cashRegisterLevel', '');\n secureLocalStorage.setItem('customerPaymentLevel', '');\n secureLocalStorage.setItem('invTransferOrderLevel', '');\n secureLocalStorage.setItem('inventoryTransferLevel', '');\n secureLocalStorage.setItem('invItemFulfillmentLevel', '');\n secureLocalStorage.setItem('invItemReceiptLevel', '');\n secureLocalStorage.setItem('createLabelWMSLevel', '');\n secureLocalStorage.setItem('receiveOrderWMSLevel', '');\n secureLocalStorage.setItem('fulfillmentOrderWMSLevel', '');\n secureLocalStorage.setItem('adjustItemWMSLevel', '');\n secureLocalStorage.setItem('itemCountWMSLevel', '');\n\n secureLocalStorage.clear();\n localStorage.clear();\n });\n\n var baseUrl = window.location.href.split('/')[0];\n\n window.open(baseUrl + \"/#/\", \"_self\");\n }\n else if (newStatus === 'signedout') {\n setStatus(newStatus);\n setUsername('');\n setIsadmin('false');\n setSucursal('');\n setNombreSucursal('');\n setPersonal('');\n setUsuario('');\n setAgente('');\n setAttendance(false);\n setPricelist(false);\n setCommission(false);\n setIncentive(false);\n setChecklist(false);\n setChecklistAud(false);\n setChecklistVeh(false);\n setPdfDocument(false);\n setVacation(false);\n setKibana(false);\n setProcesarFacturas(false);\n setProcesarFacturasBodega(false);\n setProcesarFacturasSucursal(false);\n setAfectarFacturas(false);\n setChecklistAccess('');\n setAttendanceAccess('');\n setVacationAccess('');\n setSalesAccess('');\n setNewChecklist(false);\n setNewChecklistAud(false);\n setNewChecklistVeh(false);\n setEstimate(false);\n setLostDeal(false);\n setSalesOrder(false);\n setInvoice(false);\n setDirectDelivery(false);\n setDirectReturn(false);\n setDeliveryRequest(false);\n setReturnRequest(false);\n setTransferOrder(false);\n setSalesOrderMod(false);\n setShipmentRequest(false);\n setCashRegister(false);\n setCustomerPayment(false);\n setInvTransferOrder(false);\n setRepComparativoVentas(false);\n setPOSuggestionsReport(false);\n setPOSuggestionsReportCfg(false);\n setExploreBarcodes(false);\n setExploreBarcodeCosts(false);\n setInventoryTransfer(false);\n setInvLevels(false);\n setInvLevelsIncCost(false);\n setKardex(false);\n setApproveDelivery(false);\n setApproveInvTransferOrder(false);\n setApproveInventoryTransfer(false);\n setVoidDeliveryTransactions(false);\n setSalesOrderModUpdatePrices(false);\n setApproveSalesOrderMod(false);\n setRegenerateCFDi(false);\n setSendCFDi(false);\n setInvItemFulfillment(false);\n setInvItemReceipt(false);\n setCreateLabelWMS(false);\n setReceiveOrderWMS(false);\n setFulfillmentOrderWMS(false);\n setAssignFulfillmentOrderWMS(false);\n setAdjustItemWMS(false);\n setApproveAdjustItemWMS(false);\n setMoveItemWMS(false);\n setCloseSalesOrder(false);\n setItemCountWMS(false);\n setApproveItemCountWMS(false);\n\n setEstimateLevel('');\n setLostDealLevel('');\n setSalesOrderLevel('');\n setInvoiceLevel('');\n setDirectDeliveryLevel('');\n setDirectReturnLevel('');\n setDeliveryRequestLevel('');\n setReturnRequestLevel('');\n setTransferOrderLevel('');\n setSalesOrderModLevel('');\n setShipmentRequestLevel('');\n setCashRegisterLevel('');\n setCustomerPaymentLevel('');\n setInvTransferOrderLevel('');\n setInventoryTransferLevel('');\n setInvItemFulfillmentLevel('');\n setInvItemReceiptLevel('');\n setCreateLabelWMSLevel('');\n setReceiveOrderWMSLevel('');\n setFulfillmentOrderWMSLevel('');\n setAdjustItemWMSLevel('');\n setItemCountWMSLevel('');\n\n secureLocalStorage.setItem('username', '');\n secureLocalStorage.setItem('status', newStatus);\n secureLocalStorage.setItem('sucursal', '');\n secureLocalStorage.setItem('nombreSucursal', '');\n secureLocalStorage.setItem('personal', '');\n secureLocalStorage.setItem('usuario', '');\n secureLocalStorage.setItem('agente', '');\n secureLocalStorage.setItem('checklistAccess', '');\n secureLocalStorage.setItem('attendanceAccess', '');\n secureLocalStorage.setItem('vacationAccess', '');\n secureLocalStorage.setItem('salesAccess', '');\n secureLocalStorage.setItem('attendance', false);\n secureLocalStorage.setItem('pricelist', false);\n secureLocalStorage.setItem('commission', false);\n secureLocalStorage.setItem('incentive', false);\n secureLocalStorage.setItem('checklist', false);\n secureLocalStorage.setItem('checklistaud', false);\n secureLocalStorage.setItem('checklistveh', false);\n secureLocalStorage.setItem('pdfDocument', false);\n secureLocalStorage.setItem('vacation', false);\n secureLocalStorage.setItem('kibana', false);\n secureLocalStorage.setItem('procesarfacturas', false);\n secureLocalStorage.setItem('procesarfacturassucursal', false);\n secureLocalStorage.setItem('procesarfacturasbodega', false);\n secureLocalStorage.setItem('afectarfacturas', false);\n secureLocalStorage.setItem('isadmin', 'false');\n secureLocalStorage.setItem('newchecklist', false);\n secureLocalStorage.setItem('newchecklistaud', false);\n secureLocalStorage.setItem('newchecklistveh', false);\n secureLocalStorage.setItem('estimate', false);\n secureLocalStorage.setItem('lostDeal', false);\n secureLocalStorage.setItem('salesOrder', false);\n secureLocalStorage.setItem('invoice', false);\n secureLocalStorage.setItem('directDelivery', false);\n secureLocalStorage.setItem('directReturn', false);\n secureLocalStorage.setItem('deliveryRequest', false);\n secureLocalStorage.setItem('returnRequest', false);\n secureLocalStorage.setItem('transferOrder', false);\n secureLocalStorage.setItem('salesOrderMod', false);\n secureLocalStorage.setItem('shipmentRequest', false);\n secureLocalStorage.setItem('cashRegister', false);\n secureLocalStorage.setItem('customerPayment', false);\n secureLocalStorage.setItem('invTransferOrder', false);\n secureLocalStorage.setItem('repComparativoVentas', false);\n secureLocalStorage.setItem('poSuggestionsReport', false);\n secureLocalStorage.setItem('poSuggestionsReportCfg', false);\n secureLocalStorage.setItem('exploreBarcodes', false);\n secureLocalStorage.setItem('exploreBarcodeCosts', false);\n secureLocalStorage.setItem('inventoryTransfer', false);\n\n secureLocalStorage.setItem('invLevels', false);\n secureLocalStorage.setItem('invLevelsIncCost', false);\n secureLocalStorage.setItem('kardex', false);\n secureLocalStorage.setItem('approveDelivery', false);\n secureLocalStorage.setItem('approveInvTransferOrder', false);\n secureLocalStorage.setItem('approveInventoryTransfer', false);\n secureLocalStorage.setItem('voidDeliveryTransactions', false);\n secureLocalStorage.setItem('salesOrderModUpdatePrices', false);\n secureLocalStorage.setItem('approveSalesOrderMod', false);\n secureLocalStorage.setItem('regenerateCFDi', false);\n secureLocalStorage.setItem('sendCFDi', false);\n secureLocalStorage.setItem('invItemFulfillment', false);\n secureLocalStorage.setItem('invItemReceipt', false);\n secureLocalStorage.setItem('createLabelWMS', false);\n secureLocalStorage.setItem('receiveOrderWMS', false);\n secureLocalStorage.setItem('fulfillmentOrderWMS', false);\n secureLocalStorage.setItem('assignFulfillmentOrderWMS', false);\n secureLocalStorage.setItem('adjustItemWMS', false);\n secureLocalStorage.setItem('approveAdjustItemWMS', false);\n secureLocalStorage.setItem('moveItemWMS', false);\n secureLocalStorage.setItem('closeSalesOrder', false);\n secureLocalStorage.setItem('itemCountWMS', false);\n secureLocalStorage.setItem('approveItemCountWMS', false);\n\n secureLocalStorage.setItem('estimateLevel', '');\n secureLocalStorage.setItem('lostDealLevel', '');\n secureLocalStorage.setItem('salesOrderLevel', '');\n secureLocalStorage.setItem('invoiceLevel', '');\n secureLocalStorage.setItem('directDeliveryLevel', '');\n secureLocalStorage.setItem('directReturnLevel', '');\n secureLocalStorage.setItem('deliveryRequestLevel', '');\n secureLocalStorage.setItem('returnRequestLevel', '');\n secureLocalStorage.setItem('transferOrderLevel', '');\n secureLocalStorage.setItem('salesOrderModLevel', '');\n secureLocalStorage.setItem('shipmentRequestLevel', '');\n secureLocalStorage.setItem('cashRegisterLevel', '');\n secureLocalStorage.setItem('customerPaymentLevel', '');\n secureLocalStorage.setItem('invTransferOrderLevel', '');\n secureLocalStorage.setItem('inventoryTransferLevel', '');\n secureLocalStorage.setItem('invItemFulfillmentLevel', '');\n secureLocalStorage.setItem('invItemReceiptLevel', '');\n secureLocalStorage.setItem('createLabelWMSLevel', '');\n secureLocalStorage.setItem('receiveOrderWMSLevel', '');\n secureLocalStorage.setItem('fulfillmentOrderWMSLevel', '');\n secureLocalStorage.setItem('adjustItemWMSLevel', '');\n secureLocalStorage.setItem('itemCountWMSLevel', '');\n\n secureLocalStorage.clear();\n localStorage.clear();\n\n var baseUrl = window.location.href.split('/')[0];\n\n window.open(baseUrl + \"/#/Signin\", \"_self\");\n }\n }\n }, []);\n\n function signOut() {\n try {\n Auth.signOut();\n\n handleAuthStateChange('signedout');\n } catch (error) {\n console.log('Error signing out: ', error);\n\n handleAuthStateChange('signedout');\n } finally {\n // secureLocalStorage.clear();\n // localStorage.clear();\n }\n }\n\n function webstore() {\n window.open(\"https://www.supercolchones.com.mx\", \"_blank\")\n }\n\n async function getGlobalRecords(sqlFilter) {\n try {\n let apiName = 'AdminSC';\n let path = '/globalsearch';\n\n let myInit = {\n headers: {\n 'Content-Type': 'application/json',\n Authorization: `${(await Auth.currentSession()).getAccessToken().getJwtToken()}`\n },\n queryStringParameters: {\n\n username: JSON.parse(JSON.stringify(await Auth.currentAuthenticatedUser())).username,\n isadmin: isadmin,\n sqlFilter: sqlFilter,\n action: 'list'\n }\n };\n\n var searchGet = await API.get(apiName, path, myInit);\n }\n catch (e) {\n if (e === 'No current user') {\n history.push('/');\n\n window.location.reload();\n }\n }\n return searchGet;\n }\n\n // window.addEventListener(\"storage\", async function (e) {\n // if (e.key.indexOf('@secure.') >= 0) {\n // var checkLoggedIn = await Auth.currentAuthenticatedUser();\n\n // await getUserAttributes(checkLoggedIn, 'signedin');\n // }\n // }, false);\n\n useEffect(() => {\n Hub.listen('auth', handleAuthStateChange);\n\n loadMessages(esMessages);\n\n locale('es-MX');\n\n config({\n defaultCurrency: 'MXN'\n });\n\n config({ licenseKey });\n\n async function checkIsLoggedIn() {\n try {\n var checkLoggedIn = await Auth.currentAuthenticatedUser();\n\n // Refrescamos los permisos desde Intelisis\n await getUserAttributes(checkLoggedIn, 'signedin');\n }\n catch (e) {\n try {\n Auth.signOut();\n\n handleAuthStateChange('signedout');\n } catch (error) {\n console.log('Error signing out: ', error);\n\n handleAuthStateChange('signedout');\n }\n }\n }\n\n checkIsLoggedIn();\n\n return () => Hub.remove('auth', handleAuthStateChange);\n\n }, [handleAuthStateChange]);\n\n function globalSearchOnValueChanged(e) {\n // Limpiamos el control\n if (globalSearchRef.current) {\n var globalSearchLookup = globalSearchRef.current.instance();\n\n globalSearchLookup.reset();\n }\n }\n\n function onItemClickGlobalSearch(e) {\n var redirect;\n try {\n redirect = e.itemData.redirect;\n }\n catch (e) {\n redirect = undefined;\n }\n\n if (redirect) {\n var baseUrl = window.location.href.split('#/')[0];\n\n redirect = baseUrl + '#' + redirect;\n\n window.open(redirect, \"_blank\");\n }\n }\n\n return (\n <div>\n <HashRouter>\n <div>\n <table className=\"w-full bg-red-800\" >\n <tbody>\n <tr>\n <th className=\"pl-3 w-1/6\"><img src={logo} title=\"Super Colchones\" alt=\"Super Colchones\" width=\"170\" height=\"88\" /></th>\n <th className=\"w-1/5\">\n {status === \"signedin\" ?\n (\n <Lookup\n dataSource={store}\n grouped={true}\n displayExpr=\"name\"\n placeholder=\"Buscar...\"\n onValueChanged={globalSearchOnValueChanged}\n onItemClick={onItemClickGlobalSearch}\n ref={globalSearchRef}\n itemRender={gsItem}\n groupRender={gsGroup}\n applyValueMode=\"useButtons\"\n showCancelButton={false}\n showClearButton={true}\n clearButtonText=\"Cerrar\"\n searchTimeout={1500}\n noDataText=\"No se encontraron resultados\"\n >\n <DropDownOptions\n hideOnOutsideClick={true}\n showTitle={false}\n minHeight=\"40%\"\n />\n </Lookup>\n ) :\n (<div></div>)\n }\n </th>\n <th className=\"w-1/6\" align=\"right\">\n <button className=\"mt-2 pr-5\" title=\"Tienda Virtual\" onClick={webstore}><FontAwesomeIcon icon={faShoppingBag} size=\"2x\" inverse /></button>\n {status === \"signedin\" ?\n (\n <div>\n <LoginInfo {...props} username={username} nombreSucursal={nombreSucursal} sucursal={sucursal} usuario={usuario} plaza={salesAccess} isadmin={isadmin} />\n </div>\n ) :\n (<div />)\n }\n </th>\n </tr>\n </tbody>\n </table>\n <React.Fragment>\n <Box sx={{ display: '-webkit-box', overflow: 'auto', alignItems: 'center', textAlign: 'center', backgroundColor: \"#4B5563\" }}>\n {/* *******MENU HOME******* */}\n <NavLink exact to=\"/\">\n <Button\n id=\"buttonHome\"\n aria-controls={openHome ? 'basic-menu' : undefined}\n aria-haspopup=\"false\"\n aria-expanded={openHome ? 'true' : undefined}\n onClick={handleClickHome}\n style={{ fontSize: '17px', color: '#FFF', backgroundColor: \"#4B5563\", margin: '0', borderRadius: 0 }}\n >\n <FontAwesomeIcon icon={faHome} size=\"lg\" />\n </Button>\n </NavLink>\n\n {/* *******MENU CONFIGURATION******* */}\n {status === \"signedin\" && isadmin === \"true\" ?\n (\n <div>\n <Button\n id=\"buttonConfiguration\"\n aria-controls={openConfiguration ? 'basic-menu' : undefined}\n aria-haspopup=\"true\"\n aria-expanded={openConfiguration ? 'true' : undefined}\n onClick={handleClickConfiguration}\n endIcon={<KeyboardArrowDownIcon />}\n style={{ fontSize: '15px', color: '#FFF', backgroundColor: \"#4B5563\", margin: '0', borderRadius: 0 }}\n >\n <div className=\"mr-2\"><FontAwesomeIcon icon={faWrench} size=\"lg\" /></div>Configuración\n </Button>\n <Menu\n id=\"menuConfiguration\"\n anchorEl={anchorConfiguration}\n open={openConfiguration}\n onClose={handleCloseConfiguration}\n MenuListProps={{\n 'aria-labelledby': 'basic-button',\n }}\n >\n {(status === \"signedin\" && isadmin === \"true\") ?\n (\n <div>\n <NavLink to=\"/Document\"><MenuItem onClick={handleCloseConfiguration}><div className=\"mr-2\"><FontAwesomeIcon icon={faBook} size=\"lg\" /></div>Manual de Capacitación</MenuItem></NavLink>\n <Divider />\n </div>\n ) :\n (<div />)\n }\n\n {(status === \"signedin\" && isadmin === \"true\") ?\n (<NavLink to=\"/Signup\"><MenuItem onClick={handleCloseConfiguration}><div className=\"mr-2\"><FontAwesomeIcon icon={faUserPlus} size=\"lg\" /></div>Agregar Usuario</MenuItem></NavLink>) :\n (<div />)\n }\n {(status === \"signedin\" && isadmin === \"true\") ?\n (<NavLink to=\"/Users\"><MenuItem onClick={handleCloseConfiguration}><div className=\"mr-2\"><FontAwesomeIcon icon={faUsers} size=\"lg\" /></div>Lista de Usuarios</MenuItem></NavLink>) :\n (<div />)\n }\n\n {(status === \"signedin\" && isadmin === \"true\") ?\n (\n <div>\n <Divider />\n <NavLink to=\"/PdfTemplate\">\n <MenuItem onClick={handleCloseConfiguration}><div className=\"mr-2\"><FontAwesomeIcon icon={faFilePdf} size=\"lg\" /></div>Plantilla PDF</MenuItem>\n </NavLink>\n </div>\n ) :\n (<div />)\n }\n {(status === \"signedin\" && isadmin === \"true\") ?\n (\n <div>\n <Divider />\n <NavLink to=\"/WarehouseWMS\">\n <MenuItem onClick={handleCloseConfiguration}><div className=\"mr-2\"><FontAwesomeIcon icon={faWarehouseFull} size=\"lg\" /></div>Almacén WMS</MenuItem>\n </NavLink>\n </div>\n ) :\n (<div />)\n }\n {(status === \"signedin\" && isadmin === \"true\") ?\n (\n <div>\n <NavLink to=\"/WarehousePositionWMS\">\n <MenuItem onClick={handleCloseConfiguration}><div className=\"mr-2\"><FontAwesomeIcon icon={faShelves} size=\"lg\" /></div>Posiciones Almacén WMS</MenuItem>\n </NavLink>\n </div>\n ) :\n (<div />)\n }\n {(status === \"signedin\" && isadmin === \"true\") ?\n (\n <div>\n <NavLink to=\"/ItemWMS\">\n <MenuItem onClick={handleCloseConfiguration}><div className=\"mr-2\"><FontAwesomeIcon icon={faBedFront} size=\"lg\" /></div>Artículos WMS</MenuItem>\n </NavLink>\n </div>\n ) :\n (<div />)\n }\n {(status === \"signedin\" && isadmin === \"true\") ?\n (\n <div>\n <NavLink to=\"/FulfillmentOrderWMSPriority\">\n <MenuItem onClick={handleCloseConfiguration}><div className=\"mr-2\"><FontAwesomeIcon icon={faSort} size=\"lg\" /></div>Prioridad Surtido WMS</MenuItem>\n </NavLink>\n </div>\n ) :\n (<div />)\n }\n </Menu>\n </div>\n ) :\n (<div></div>)\n }\n\n {/* *******MENU CUSTOMER******* */}\n <Button\n id=\"buttonCustomer\"\n aria-controls={openCustomer ? 'basic-menu' : undefined}\n aria-haspopup=\"true\"\n aria-expanded={openCustomer ? 'true' : undefined}\n onClick={handleClickCustomer}\n endIcon={<KeyboardArrowDownIcon />}\n style={{ fontSize: '15px', color: '#FFF', backgroundColor: \"#4B5563\", margin: '0', borderRadius: 0 }}\n >\n <div className=\"mr-2\"><FontAwesomeIcon icon={faUser} size=\"lg\" /></div>Clientes\n </Button>\n <Menu\n id=\"menuCustomer\"\n anchorEl={anchorCustomer}\n open={openCustomer}\n onClose={handleCloseCustomer}\n MenuListProps={{\n 'aria-labelledby': 'basic-button',\n }}\n >\n <NavLink to=\"/Rastreopedidos\"><MenuItem onClick={handleCloseCustomer}><div className=\"mr-2\"><FontAwesomeIcon icon={faTruck} size=\"lg\" /></div>Rastreo de Pedidos</MenuItem></NavLink>\n <NavLink to=\"/DownloadInvoice\"><MenuItem onClick={handleCloseCustomer}><div className=\"mr-4\"><FontAwesomeIcon icon={faFileDownload} size=\"lg\" /></div>Descarga tu Factura</MenuItem></NavLink>\n </Menu>\n\n {/* *******MENU EMPLOYEE******* */}\n {status === \"signedin\" && (attendance === true || commission === true || incentive === true || checklist === true || checklistAud === true || checklistVeh === true || pdfDocument === true || vacation === true) ?\n (\n <div>\n <Button\n id=\"buttonEmployee\"\n aria-controls={openEmployee ? 'basic-menu' : undefined}\n aria-haspopup=\"true\"\n aria-expanded={openEmployee ? 'true' : undefined}\n onClick={handleClickEmployee}\n endIcon={<KeyboardArrowDownIcon />}\n style={{ fontSize: '15px', color: '#FFF', backgroundColor: \"#4B5563\", margin: '0', borderRadius: 0 }}\n >\n <div className=\"mr-2\"><FontAwesomeIcon icon={faAddressCard} size=\"lg\" /></div>Empleados\n </Button>\n <Menu\n id=\"menuEmployee\"\n anchorEl={anchorEmployee}\n open={openEmployee}\n onClose={handleCloseEmployee}\n MenuListProps={{\n 'aria-labelledby': 'basic-button',\n }}\n >\n {status === \"signedin\" && attendance === true ?\n (\n <div>\n <NavLink to=\"/Attendance\"><MenuItem onClick={handleCloseEmployee}><div className=\"mr-2\"><FontAwesomeIcon icon={faMapMarkerAlt} size=\"lg\" /></div>Asistencia</MenuItem></NavLink>\n <Divider />\n </div>\n ) :\n (<div />)\n }\n\n {status === \"signedin\" && commission === true ?\n (<NavLink to=\"/Commission\"><MenuItem onClick={handleCloseEmployee}><div className=\"mr-2\"><FontAwesomeIcon icon={faSackDollar} size=\"lg\" /></div>Comisiones</MenuItem></NavLink>) :\n (<div />)\n }\n\n {status === \"signedin\" && incentive === true ?\n (\n <div>\n <NavLink to=\"/Incentive\"><MenuItem onClick={handleCloseEmployee}><div className=\"mr-2\"><FontAwesomeIcon icon={faTrophy} size=\"lg\" /></div>Incentivos</MenuItem></NavLink>\n <Divider />\n </div>\n ) :\n (<div />)\n }\n\n {status === \"signedin\" && checklist === true ?\n (<NavLink to=\"/Checklist\"><MenuItem onClick={handleCloseEmployee}><div className=\"mr-2\"><FontAwesomeIcon icon={faUserSecret} size=\"lg\" /></div>Checklist Supervisores</MenuItem></NavLink>) :\n (<div />)\n }\n\n {status === \"signedin\" && checklistAud === true ?\n (<NavLink to=\"/ChecklistAud\"><MenuItem onClick={handleCloseEmployee}><div className=\"mr-2\"><FontAwesomeIcon icon={faUserTie} size=\"lg\" /></div>Checklist Auditores</MenuItem></NavLink>) :\n (<div />)\n }\n\n {status === \"signedin\" && checklistVeh === true ?\n (<NavLink to=\"/ChecklistVeh\"><MenuItem onClick={handleCloseEmployee}><div className=\"mr-2\"><FontAwesomeIcon icon={faTruckMoving} size=\"lg\" /></div>Checklist Vehículos</MenuItem></NavLink>) :\n (<div />)\n }\n\n {status === \"signedin\" && pdfDocument === true ?\n (\n <div>\n <Divider />\n <NavLink to=\"/DocumentViewer\"><MenuItem onClick={handleCloseEmployee}><div className=\"mr-2\"><FontAwesomeIcon icon={faBook} size=\"lg\" /></div>Manual de Capacitación</MenuItem></NavLink>\n </div>\n ) :\n (<div />)\n }\n\n {status === \"signedin\" && (vacation === true) ?\n (\n <div>\n <Divider />\n <NavLink to=\"/Vacation\"><MenuItem onClick={handleCloseEmployee}><div className=\"mr-2\"><FontAwesomeIcon icon={faUmbrellaBeach} size=\"lg\" /></div>Solicitud de Vacaciones</MenuItem></NavLink>\n </div>\n ) :\n (<div />)\n }\n </Menu>\n </div>\n ) :\n (<div></div>)\n }\n\n {/* *******MENU SALES******* */}\n {status === \"signedin\" && (pricelist === true || procesarFacturas === true || procesarFacturasBodega === true || procesarFacturasSucursal === true || estimate === true || lostDeal === true || salesOrder === true || invoice === true || customerPayment === true || salesOrderMod === true || cashRegister === true || closeSalesOrder === true) ?\n (\n <div>\n <Button\n id=\"buttonSales\"\n aria-controls={openSales ? 'basic-menu' : undefined}\n aria-haspopup=\"true\"\n aria-expanded={openSales ? 'true' : undefined}\n onClick={handleClickSales}\n endIcon={<KeyboardArrowDownIcon />}\n style={{ fontSize: '15px', color: '#FFF', backgroundColor: \"#4B5563\", margin: '0', borderRadius: 0 }}\n >\n <div className=\"mr-2\"><FontAwesomeIcon icon={faBed} size=\"lg\" /></div>Ventas\n </Button>\n <Menu\n id=\"menuSales\"\n anchorEl={anchorSales}\n open={openSales}\n onClose={handleCloseSales}\n MenuListProps={{\n 'aria-labelledby': 'basic-button',\n }}\n >\n\n {status === \"signedin\" && estimate === true ?\n (<NavLink to=\"/Estimate\"><MenuItem onClick={handleCloseSales}><div className=\"mr-2\"><FontAwesomeIcon icon={faCommentDollar} size=\"lg\" /></div>Cotización</MenuItem></NavLink>) :\n (<div />)\n }\n {status === \"signedin\" && lostDeal === true ?\n (<NavLink to=\"/LostDeal\"><MenuItem onClick={handleCloseSales}><div className=\"mr-2\"><FontAwesomeIcon icon={faThumbsDown} size=\"lg\" /></div>Venta Perdida</MenuItem></NavLink>) :\n (<div />)\n }\n {status === \"signedin\" && salesOrder === true ?\n (<NavLink to=\"/SalesOrder\"><MenuItem onClick={handleCloseSales}><div className=\"mr-2\"><FontAwesomeIcon icon={faHandshake} size=\"lg\" /></div>Pedido</MenuItem></NavLink>) :\n (<div />)\n }\n {status === \"signedin\" && invoice === true ?\n (<NavLink to=\"/Invoice\"><MenuItem onClick={handleCloseSales}><div className=\"mr-2\"><FontAwesomeIcon icon={faFileInvoiceDollar} size=\"lg\" /></div>Factura</MenuItem></NavLink>) :\n (<div />)\n }\n {status === \"signedin\" && customerPayment === true ?\n (<div>\n <Divider />\n <NavLink to=\"/CustomerPayment\"><MenuItem onClick={handleCloseSales}><div className=\"mr-2\"><FontAwesomeIcon icon={faPiggyBank} size=\"lg\" /></div>Anticipo Saldo</MenuItem></NavLink>\n <Divider />\n </div>\n ) :\n (<div />)\n }\n {status === \"signedin\" && salesOrderMod === true ?\n (<div>\n <Divider />\n <NavLink to=\"/SalesOrderMod\"><MenuItem onClick={handleCloseSales}><div className=\"mr-2\"><FontAwesomeIcon icon={faPenNib} size=\"lg\" /></div>Modificación de Pedidos</MenuItem></NavLink>\n <Divider />\n </div>\n ) :\n (<div />)\n }\n {status === \"signedin\" && pricelist === true ?\n (<div>\n <Divider />\n <NavLink to=\"/Pricelist\"><MenuItem onClick={handleCloseSales}><div className=\"mr-2\"><FontAwesomeIcon icon={faDollarSign} size=\"lg\" /></div>Lista de Precios</MenuItem></NavLink>\n <Divider />\n </div>\n ) :\n (<div />)\n }\n {status === \"signedin\" && procesarFacturas === true ?\n (<NavLink to=\"/ProcessInvoice\"><MenuItem onClick={handleCloseSales}><div className=\"mr-2\"><FontAwesomeIcon icon={faGear} size=\"lg\" /></div>Procesar Facturas</MenuItem></NavLink>) :\n (<div />)\n }\n {status === \"signedin\" && procesarFacturasSucursal === true ?\n (<NavLink to=\"/ProcessInvoiceLoc\"><MenuItem onClick={handleCloseSales}><div className=\"mr-2\"><FontAwesomeIcon icon={faMapLocationDot} size=\"lg\" /></div>Procesar Facturas Sucursal</MenuItem></NavLink>) :\n (<div />)\n }\n {status === \"signedin\" && procesarFacturasBodega === true ?\n (<NavLink to=\"/ProcessInvoiceWHS\"><MenuItem onClick={handleCloseSales}><div className=\"mr-2\"><FontAwesomeIcon icon={faWarehouse} size=\"lg\" /></div>Procesar Facturas Bodega</MenuItem></NavLink>) :\n (<div />)\n }\n {status === \"signedin\" && cashRegister === true ?\n (<div>\n <Divider />\n <NavLink to=\"/CashRegister\"><MenuItem onClick={handleCloseSales}><div className=\"mr-2\"><FontAwesomeIcon icon={faCashRegister} size=\"lg\" /></div>Corte de Caja</MenuItem></NavLink>\n </div>\n ) :\n (<div />)\n }\n {status === \"signedin\" && closeSalesOrder === true ?\n (<div>\n <Divider />\n <NavLink to=\"/LockSalesOrder\"><MenuItem onClick={handleCloseSales}><div className=\"mr-2\"><FontAwesomeIcon icon={faLockKeyhole} size=\"lg\" /></div>Cerrar Pedidos</MenuItem></NavLink>\n <NavLink to=\"/UnlockSalesOrder\"><MenuItem onClick={handleCloseSales}><div className=\"mr-2\"><FontAwesomeIcon icon={faLockKeyholeOpen} size=\"lg\" /></div>Abrir Pedidos</MenuItem></NavLink>\n </div>\n ) :\n (<div />)\n }\n </Menu>\n </div>\n ) :\n (<div></div>)\n }\n\n {/* *******MENU LOGISTICS******* */}\n {status === \"signedin\" && (directDelivery === true || directReturn === true || deliveryRequest === true || returnRequest === true || transferOrder === true || shipmentRequest === true || invTransferOrder === true || inventoryTransfer === true || invItemFulfillment === true || invItemReceipt === true) ?\n (\n <div>\n <Button\n id=\"buttonLogistics\"\n aria-controls={openLogistics ? 'basic-menu' : undefined}\n aria-haspopup=\"true\"\n aria-expanded={openLogistics ? 'true' : undefined}\n onClick={handleClickLogistics}\n endIcon={<KeyboardArrowDownIcon />}\n style={{ fontSize: '15px', color: '#FFF', backgroundColor: \"#4B5563\", margin: '0', borderRadius: 0 }}\n >\n <div className=\"mr-2\"><FontAwesomeIcon icon={faTruckFlatbed} size=\"lg\" /></div>Logística\n </Button>\n <Menu\n id=\"menuLogistics\"\n anchorEl={anchorLogistics}\n open={openLogistics}\n onClose={handleCloseLogistics}\n MenuListProps={{\n 'aria-labelledby': 'basic-button',\n }}\n >\n {status === \"signedin\" && directDelivery === true ?\n (<NavLink to=\"/DirectDelivery\" replace ><MenuItem onClick={handleCloseLogistics}><div className=\"mr-2\"><FontAwesomeIcon icon={faPersonDolly} size=\"lg\" /></div>Entrega Directa</MenuItem></NavLink>) :\n (<div />)\n }\n {status === \"signedin\" && directReturn === true ?\n (<NavLink to=\"/DirectReturn\" replace ><MenuItem onClick={handleCloseLogistics}><div className=\"mr-2\"><FontAwesomeIcon icon={faPersonCarryBox} size=\"lg\" /></div>Devolución Directa</MenuItem></NavLink>) :\n (<div />)\n }\n {status === \"signedin\" && deliveryRequest === true ?\n (<NavLink to=\"/DeliveryRequest\" replace ><MenuItem onClick={handleCloseLogistics}><div className=\"mr-2\"><FontAwesomeIcon icon={faTruckFast} size=\"lg\" /></div>Solicitud Envío</MenuItem></NavLink>) :\n (<div />)\n }\n {status === \"signedin\" && returnRequest === true ?\n (<NavLink to=\"/ReturnRequest\" replace ><MenuItem onClick={handleCloseLogistics}><div className=\"mr-2\"><FontAwesomeIcon icon={faHandHoldingBox} size=\"lg\" /></div>Solicitud Devolución</MenuItem></NavLink>) :\n (<div />)\n }\n {status === \"signedin\" && transferOrder === true ?\n (<NavLink to=\"/TransferOrder\" replace ><MenuItem onClick={handleCloseLogistics}><div className=\"mr-2\"><FontAwesomeIcon icon={faRightLeft} size=\"lg\" /></div>Solicitud Traspaso</MenuItem></NavLink>) :\n (<div />)\n }\n {status === \"signedin\" && shipmentRequest === true ?\n (<div>\n <Divider />\n <NavLink to=\"/ShipmentRequest\" replace ><MenuItem onClick={handleCloseLogistics}><div className=\"mr-2\"><FontAwesomeIcon icon={faForklift} size=\"lg\" /></div>Solicitud Embarque</MenuItem></NavLink>\n </div>\n ) :\n (<div />)\n }\n {status === \"signedin\" && invTransferOrder === true ?\n (<div>\n <Divider />\n <NavLink to=\"/InvTransferOrder\" replace ><MenuItem onClick={handleCloseLogistics}><div className=\"mr-2\"><FontAwesomeIcon icon={faPalletBoxes} size=\"lg\" /></div>Inventarios - Solicitud Traspaso</MenuItem></NavLink>\n </div>\n ) :\n (<div />)\n }\n {status === \"signedin\" && invItemFulfillment === true ?\n (<div>\n <NavLink to=\"/InvItemFulfillment\" replace ><MenuItem onClick={handleCloseLogistics}><div className=\"mr-2\"><FontAwesomeIcon icon={faLeft} size=\"lg\" /></div>Inventarios - Salida Traspaso</MenuItem></NavLink>\n </div>\n ) :\n (<div />)\n }\n {status === \"signedin\" && invItemReceipt === true ?\n (<div>\n <NavLink to=\"/InvItemReceipt\" replace ><MenuItem onClick={handleCloseLogistics}><div className=\"mr-2\"><FontAwesomeIcon icon={faRight} size=\"lg\" /></div>Inventarios - Recibo Traspaso</MenuItem></NavLink>\n </div>\n ) :\n (<div />)\n }\n {status === \"signedin\" && inventoryTransfer === true ?\n (<div>\n <Divider />\n <NavLink to=\"/InventoryTransfer\" replace><MenuItem onClick={handleCloseLogistics}><div className=\"mr-2\"><FontAwesomeIcon icon={faWineGlassCrack} size=\"lg\" /></div>Transferencia</MenuItem></NavLink>\n </div>\n ) :\n (<div />)\n }\n </Menu>\n </div>\n ) :\n (<div></div>)\n }\n\n {/* *******MENU WMS******* */}\n {status === \"signedin\" && (createLabelWMS === true || receiveOrderWMS === true || fulfillmentOrderWMS === true || adjustItemWMS === true || moveItemWMS === true || itemCountWMS === true) ?\n (\n <div>\n <Button\n id=\"buttonWMS\"\n aria-controls={openWMS ? 'basic-menu' : undefined}\n aria-haspopup=\"true\"\n aria-expanded={openWMS ? 'true' : undefined}\n onClick={handleClickWMS}\n endIcon={<KeyboardArrowDownIcon />}\n style={{ fontSize: '15px', color: '#FFF', backgroundColor: \"#4B5563\", margin: '0', borderRadius: 0 }}\n >\n <div className=\"mr-2\"><FontAwesomeIcon icon={faScannerGun} size=\"lg\" /></div>WMS\n </Button>\n <Menu\n id=\"menuWMS\"\n anchorEl={anchorWMS}\n open={openWMS}\n onClose={handleCloseWMS}\n MenuListProps={{\n 'aria-labelledby': 'basic-button',\n }}\n >\n {status === \"signedin\" && createLabelWMS === true ?\n (<NavLink to=\"/LabelWMS\" replace ><MenuItem onClick={handleCloseWMS}><div className=\"mr-2\"><FontAwesomeIcon icon={faBarcode} size=\"lg\" /></div>Alta Barcode</MenuItem></NavLink>) :\n (<div />)\n }\n\n {status === \"signedin\" && receiveOrderWMS === true ?\n (<div>\n <Divider />\n <NavLink to=\"/ReceiveOrderWMS\" replace ><MenuItem onClick={handleCloseWMS}><div className=\"mr-2\"><FontAwesomeIcon icon={faInboxIn} size=\"lg\" /></div>Orden Recibo</MenuItem></NavLink>\n </div>\n ) :\n (<div />)\n\n }\n\n {status === \"signedin\" && fulfillmentOrderWMS === true ?\n (<div>\n <Divider />\n <NavLink to=\"/FulfillmentOrderWMS\" replace ><MenuItem onClick={handleCloseWMS}><div className=\"mr-2\"><FontAwesomeIcon icon={faInboxOut} size=\"lg\" /></div>Orden Surtido</MenuItem></NavLink>\n </div>\n ) :\n (<div />)\n }\n\n {status === \"signedin\" && moveItemWMS === true ?\n (<div>\n <Divider />\n <NavLink to=\"/MoveItemWMS\" replace ><MenuItem onClick={handleCloseWMS}><div className=\"mr-2\"><FontAwesomeIcon icon={faCartFlatbedSuitcase} size=\"lg\" /></div>Acomodo</MenuItem></NavLink>\n </div>\n ) :\n (<div />)\n }\n\n {status === \"signedin\" && adjustItemWMS === true ?\n (<div>\n <Divider />\n <NavLink to=\"/AdjustItemWMS\" replace ><MenuItem onClick={handleCloseWMS}><div className=\"mr-2\"><FontAwesomeIcon icon={faPenToSquare} size=\"lg\" /></div>Ajuste</MenuItem></NavLink>\n </div>\n ) :\n (<div />)\n }\n\n {status === \"signedin\" && itemCountWMS === true ?\n (<div>\n <Divider />\n <NavLink to=\"/CreateItemCountWMS\" replace ><MenuItem onClick={handleCloseWMS}><div className=\"mr-2\"><FontAwesomeIcon icon={faToolbox} size=\"lg\" /></div>Crear Conteo Cíclico</MenuItem></NavLink>\n <NavLink to=\"/ItemCountWMS\" replace ><MenuItem onClick={handleCloseWMS}><div className=\"mr-2\"><FontAwesomeIcon icon={faArrowsSpin} size=\"lg\" /></div>Conteo Cíclico</MenuItem></NavLink>\n </div>\n ) :\n (<div />)\n }\n </Menu>\n </div>\n ) :\n (<div></div>)\n }\n\n {/* *******MENU REPORTES******* */}\n {(status === \"signedin\") && (kibana === true || kardex === true || invLevels === true || invLevelsIncCost === true || repComparativoVentas === true || exploreBarcodes === true || exploreBarcodeCosts === true || poSuggestionsReport === true) ?\n (\n <div>\n <Button\n id=\"buttonReports\"\n aria-controls={openReports ? 'basic-menu' : undefined}\n aria-haspopup=\"true\"\n aria-expanded={openReports ? 'true' : undefined}\n onClick={handleClickReports}\n endIcon={<KeyboardArrowDownIcon />}\n style={{ fontSize: '15px', color: '#FFF', backgroundColor: \"#4B5563\", margin: '0', borderRadius: 0 }}\n >\n <div className=\"mr-2\"><FontAwesomeIcon icon={faBook} size=\"lg\" /></div>Reportes\n </Button>\n <Menu\n id=\"menuReports\"\n anchorEl={anchorReports}\n open={openReports}\n onClose={handleCloseReports}\n MenuListProps={{\n 'aria-labelledby': 'basic-button',\n }}\n >\n {status === \"signedin\" && kibana === true ?\n (\n <div>\n <MenuItem onClick={handleKibana}><div className=\"mr-2\"><FontAwesomeIcon icon={faChartSimple} size=\"lg\" /></div>Kibana</MenuItem>\n </div>\n ) :\n (<div />)\n }\n {status === \"signedin\" && kardex === true ?\n (\n <div>\n <Divider />\n <NavLink to=\"/Kardex\" replace ><MenuItem onClick={handleCloseReports}><div className=\"mr-2\"><FontAwesomeIcon icon={faFileChartColumn} size=\"lg\" /></div>Kardex</MenuItem></NavLink>\n </div>\n ) :\n (<div />)\n }\n {status === \"signedin\" && invLevels === true ?\n (<NavLink to=\"/InvLevels\" replace ><MenuItem onClick={handleCloseReports}><div className=\"mr-2\"><FontAwesomeIcon icon={faFileChartColumn} size=\"lg\" /></div>Inventarios</MenuItem></NavLink>) :\n (<div />)\n }\n {status === \"signedin\" && invLevelsIncCost === true ?\n (<NavLink to=\"/InvLevelsIncCost\" replace ><MenuItem onClick={handleCloseReports}><div className=\"mr-2\"><FontAwesomeIcon icon={faFileChartColumn} size=\"lg\" /></div>Inventarios con costos</MenuItem></NavLink>) :\n (<div />)\n }\n {status === \"signedin\" && repComparativoVentas === true ?\n (\n <div>\n <Divider />\n <NavLink to=\"/SalesCompReport\" replace ><MenuItem onClick={handleCloseReports}><div className=\"mr-2\"><FontAwesomeIcon icon={faFileChartColumn} size=\"lg\" /></div>Comparativo Ventas</MenuItem></NavLink>\n </div>\n ) :\n (<div />)\n }\n {status === \"signedin\" && exploreBarcodes === true ?\n (\n <div>\n <Divider />\n <NavLink to=\"/ExploreBarcode\" replace ><MenuItem onClick={handleCloseReports}><div className=\"mr-2\"><FontAwesomeIcon icon={faFileChartColumn} size=\"lg\" /></div>WMS Barcodes</MenuItem></NavLink>\n </div>\n ) :\n (<div />)\n }\n {status === \"signedin\" && exploreBarcodeCosts === true ?\n (\n <div>\n <Divider />\n <NavLink to=\"/ExploreBarcodeCosts\" replace ><MenuItem onClick={handleCloseReports}><div className=\"mr-2\"><FontAwesomeIcon icon={faFileChartColumn} size=\"lg\" /></div>WMS Barcode Costos</MenuItem></NavLink>\n </div>\n ) :\n (<div />)\n }\n {status === \"signedin\" && poSuggestionsReport === true ?\n (\n <div>\n <Divider />\n <NavLink to=\"/POSuggestionsReport\" replace ><MenuItem onClick={handleCloseReports}><div className=\"mr-2\"><FontAwesomeIcon icon={faFileChartColumn} size=\"lg\" /></div>Sugerencia de Compras</MenuItem></NavLink>\n </div>\n ) :\n (<div />)\n }\n\n </Menu>\n </div>\n ) :\n (<div></div>)\n }\n\n {/* *******MENU ACCOUNT******* */}\n <IconButton\n onClick={handleClickAccount}\n size=\"small\"\n sx={{ ml: 2 }}\n aria-controls={openAccount ? 'account-menu' : undefined}\n aria-haspopup=\"true\"\n aria-expanded={openAccount ? 'true' : undefined}\n >\n <Avatar sx={{ width: 30, height: 30 }}></Avatar>\n </IconButton>\n\n <Menu\n anchorEl={anchorAccount}\n id=\"account-menu\"\n open={openAccount}\n onClose={handleCloseAccount}\n onClick={handleCloseAccount}\n PaperProps={{\n elevation: 0,\n sx: {\n overflow: 'visible',\n filter: 'drop-shadow(0px 2px 8px rgba(0,0,0,0.32))',\n mt: 1.5,\n '& .MuiAvatar-root': {\n width: 32,\n height: 32,\n ml: -0.5,\n mr: 1,\n },\n '&:before': {\n content: '\"\"',\n display: 'block',\n position: 'absolute',\n top: 0,\n right: 14,\n width: 10,\n height: 10,\n bgcolor: 'background.paper',\n transform: 'translateY(-50%) rotate(45deg)',\n zIndex: 0,\n },\n },\n }}\n transformOrigin={{ horizontal: 'right', vertical: 'top' }}\n anchorOrigin={{ horizontal: 'right', vertical: 'bottom' }}\n >\n {status === \"signedin\" ?\n (<div>\n <MenuItem disabled={true} onClick={signOut}><div className=\"mr-2\"><FontAwesomeIcon icon={faCircleUser} size=\"xl\" /></div>Usuario {username}</MenuItem>\n <Divider />\n </div>) :\n (<div />)\n }\n\n {status === \"signedout\" ?\n (<NavLink to=\"/Signin\" replace ><MenuItem onClick={handleCloseAccount}><div className=\"mr-2\"><FontAwesomeIcon icon={faSignInAlt} size=\"lg\" /></div>Iniciar Sesión</MenuItem></NavLink>) :\n (<div />)\n }\n {status === \"signedin\" ?\n (<div>\n <NavLink to=\"/PasswordChange\" replace ><MenuItem onClick={handleCloseConfiguration}><div className=\"mr-2\"><FontAwesomeIcon icon={faKey} size=\"lg\" /></div>Cambiar Contraseña</MenuItem></NavLink>\n <Divider />\n </div>\n ) :\n (<div />)\n }\n {status === \"signedin\" ?\n (<NavLink to=\"/Signout\" replace ><MenuItem onClick={signOut}><div className=\"mr-2\"><FontAwesomeIcon icon={faSignOutAlt} size=\"lg\" /></div>Cerrar Sesión</MenuItem></NavLink>) :\n (<div />)\n }\n </Menu>\n </Box>\n </React.Fragment>\n <div className=\"content\">\n <Route exact path=\"/\" render={(props) => <Home {...props} usuario={username} status={status} />} />\n <Route exact path=\"/Rastreopedidos\" render={(props) => <Rastreopedidos {...props} />} />\n <Route exact path=\"/DownloadInvoice\" render={(props) => <DownloadInvoice {...props} />} />\n\n {status === \"signedin\" && attendance === true ?\n (<Route exact path=\"/Attendance\" render={(props) => <Attendance {...props} personal={personal} attendanceAccess={attendanceAccess} />} />) :\n (<Route />)\n }\n {status === \"signedout\" ?\n (<Route exact path=\"/Signin\" render={(props) => <Signin {...props} status={status} />} />) :\n (<Route />)\n }\n {status === \"signedin\" && pricelist === true ?\n (<Route exact path=\"/Pricelist\" render={(props) => <Pricelist {...props} sucursal={sucursal} />} />) :\n (<Route />)\n }\n {status === \"signedin\" && commission === true ?\n (<Route path=\"/Commission\" render={(props) => <Commission {...props} personal={personal} />} />) :\n (<Route />)\n }\n {status === \"signedin\" && incentive === true ?\n (<Route path=\"/Incentive\" render={(props) => <Incentive {...props} personal={personal} />} />) :\n (<Route />)\n }\n {status === \"signedin\" && checklist === true ?\n (<Route path=\"/Checklist\" render={(props) => <Checklist {...props} personal={personal} usuario={username} checklistAccess={checklistAccess} newChecklist={newChecklist} />} />) :\n (<Route />)\n }\n {status === \"signedin\" && checklistAud === true ?\n (<Route path=\"/ChecklistAud\" render={(props) => <ChecklistAud {...props} personal={personal} usuario={username} checklistAccess={checklistAccess} newChecklistAud={newChecklistAud} />} />) :\n (<Route />)\n }\n {status === \"signedin\" && checklistVeh === true ?\n (<Route path=\"/ChecklistVeh\" render={(props) => <ChecklistVeh {...props} personal={personal} usuario={username} checklistAccess={checklistAccess} newChecklistVeh={newChecklistVeh} />} />) :\n (<Route />)\n }\n {status === \"signedin\" && isadmin === \"true\" ?\n (<Route path=\"/Document\" render={(props) => <Document {...props} isadmin={isadmin} usuario={username} personal={personal} />} />) :\n (<Route />)\n }\n {status === \"signedin\" && pdfDocument === true ?\n (<Route path=\"/DocumentViewer\" render={(props) => <DocumentViewer {...props} isadmin={isadmin} usuario={username} personal={personal} />} />) :\n (<Route />)\n }\n {status === \"signedin\" && (vacation === true) ?\n (<Route path=\"/Vacation\" render={(props) => <Vacation {...props} personal={personal} usuario={username} vacationAccess={vacationAccess} />} />) :\n (<Route />)\n }\n {(status === \"signedin\" && isadmin === \"true\") ?\n (<Route exact path=\"/Signup\" render={(props) => <Signup {...props} status={status} handleAuthStateChange={handleAuthStateChange} />} />) :\n (<Route />)\n }\n {(status === \"signedin\" && isadmin === \"true\") ?\n (<Route path=\"/Users\" render={(props) => <Users {...props} status={status} />} />) :\n (<Route />)\n }\n {(status === \"signedin\" && isadmin === \"true\") ?\n (<Route path=\"/PdfTemplate\" render={(props) => <PdfTemplate {...props} />} />) :\n (<Route />)\n }\n {(status === \"signedin\") ?\n (<Route path=\"/PdfRender\" render={(props) => <PdfRender {...props} />} />) :\n (<Route />)\n }\n {(status === \"signedin\" && isadmin === \"true\") ?\n (<Route path=\"/PdfEditor\" render={(props) => <PdfEditor {...props} />} />) :\n (<Route />)\n }\n {(status === \"signedin\" && isadmin === \"true\") ?\n (<Route path=\"/WarehouseWMS\" render={(props) => <WarehouseWMS {...props} />} />) :\n (<Route />)\n }\n {(status === \"signedin\" && isadmin === \"true\") ?\n (<Route path=\"/WarehousePositionWMS\" render={(props) => <WarehousePositionWMS {...props} />} />) :\n (<Route />)\n }\n {(status === \"signedin\" && isadmin === \"true\") ?\n (<Route path=\"/ItemWMS\" render={(props) => <ItemWMS {...props} />} />) :\n (<Route />)\n }\n {(status === \"signedin\" && isadmin === \"true\") ?\n (<Route path=\"/FulfillmentOrderWMSPriority\" render={(props) => <FulfillmentOrderWMSPriority {...props} />} />) :\n (<Route />)\n }\n {status === \"signedin\" ?\n (<Route path=\"/PasswordChange\" render={(props) => <PasswordChange {...props} />} />) :\n (<Route />)\n }\n {status === \"signedin\" ?\n (<Route path=\"/Signout\" component={Signout} />) :\n (<Route />)\n }\n {status === \"signedin\" && procesarFacturas === true ?\n (<Route exact path=\"/ProcessInvoice\" render={(props) => <ProcessInvoice {...props} usuario={usuario} afectarFacturas={afectarFacturas} salesAccess={salesAccess} />} />) :\n (<Route />)\n }\n {status === \"signedin\" && procesarFacturasSucursal === true ?\n (<Route exact path=\"/ProcessInvoiceLoc\" render={(props) => <ProcessInvoiceLoc {...props} usuario={usuario} afectarFacturas={afectarFacturas} salesAccess={salesAccess} />} />) :\n (<Route />)\n }\n {status === \"signedin\" && procesarFacturasBodega === true ?\n (<Route exact path=\"/ProcessInvoiceWHS\" render={(props) => <ProcessInvoiceWHS {...props} usuario={usuario} afectarFacturas={afectarFacturas} salesAccess={salesAccess} />} />) :\n (<Route />)\n }\n {status === \"signedin\" && estimate === true ?\n (<Route path=\"/Estimate\" render={(props) => <Estimate {...props} username={username} sucursal={sucursal} usuario={usuario} nivel={estimateLevel} salesAccess={salesAccess} lostDeal={lostDeal} lostDealLevel={lostDealLevel} salesOrder={salesOrder} salesOrderLevel={salesOrderLevel} />} />) :\n (<Route />)\n }\n {status === \"signedin\" && lostDeal === true ?\n (<Route path=\"/LostDeal\" render={(props) => <LostDeal {...props} username={username} sucursal={sucursal} usuario={usuario} nivel={lostDealLevel} salesAccess={salesAccess} />} />) :\n (<Route />)\n }\n {status === \"signedin\" && salesOrder === true ?\n (<Route path=\"/SalesOrder\" render={(props) => <SalesOrder {...props} username={username} sucursal={sucursal} usuario={usuario} agente={agente} nivel={salesOrderLevel} salesAccess={salesAccess} customerPayment={customerPayment} customerPaymentLevel={customerPaymentLevel} directDelivery={directDelivery} directDeliveryLevel={directDeliveryLevel} deliveryRequest={deliveryRequest} deliveryRequestLevel={deliveryRequestLevel} directReturn={directReturn} directReturnLevel={directReturnLevel} returnRequest={returnRequest} returnRequestLevel={returnRequestLevel} transferOrder={transferOrder} transferOrderLevel={transferOrderLevel} />} />) :\n (<Route />)\n }\n {status === \"signedin\" && invoice === true ?\n (<Route path=\"/Invoice\" render={(props) => <Invoice {...props} username={username} sucursal={sucursal} usuario={usuario} nivel={invoiceLevel} salesAccess={salesAccess} regenerateCFDi={regenerateCFDi} sendCFDi={sendCFDi} />} />) :\n (<Route />)\n }\n {status === \"signedin\" && customerPayment === true ?\n (<Route path=\"/CustomerPayment\" render={(props) => <CustomerPayment {...props} username={username} sucursal={sucursal} usuario={usuario} nivel={customerPaymentLevel} salesAccess={salesAccess} regenerateCFDi={regenerateCFDi} sendCFDi={sendCFDi} />} />) :\n (<Route />)\n }\n {status === \"signedin\" && salesOrderMod === true ?\n (<Route path=\"/SalesOrderMod\" render={(props) => <SalesOrderMod {...props} username={username} sucursal={sucursal} usuario={usuario} nivel={salesOrderModLevel} salesAccess={salesAccess} salesOrderModUpdatePrices={salesOrderModUpdatePrices} approveSalesOrderMod={approveSalesOrderMod} />} />) :\n (<Route />)\n }\n {status === \"signedin\" && cashRegister === true ?\n (<Route path=\"/CashRegister\" render={(props) => <CashRegister {...props} username={username} sucursal={sucursal} usuario={usuario} nivel={cashRegisterLevel} salesAccess={salesAccess} />} />) :\n (<Route />)\n }\n {status === \"signedin\" && directDelivery === true ?\n (<Route path=\"/DirectDelivery\" render={(props) => <DirectDelivery {...props} username={username} sucursal={sucursal} usuario={usuario} nivel={directDeliveryLevel} approveDelivery={approveDelivery} voidDeliveryTransactions={voidDeliveryTransactions} salesAccess={salesAccess} />} />) :\n (<Route />)\n }\n {status === \"signedin\" && directReturn === true ?\n (<Route path=\"/DirectReturn\" render={(props) => <DirectReturn {...props} username={username} sucursal={sucursal} usuario={usuario} nivel={directReturnLevel} voidDeliveryTransactions={voidDeliveryTransactions} salesAccess={salesAccess} />} />) :\n (<Route />)\n }\n {status === \"signedin\" && deliveryRequest === true ?\n (<Route path=\"/DeliveryRequest\" render={(props) => <DeliveryRequest {...props} username={username} sucursal={sucursal} usuario={usuario} nivel={deliveryRequestLevel} voidDeliveryTransactions={voidDeliveryTransactions} salesAccess={salesAccess} />} />) :\n (<Route />)\n }\n {status === \"signedin\" && returnRequest === true ?\n (<Route path=\"/ReturnRequest\" render={(props) => <ReturnRequest {...props} username={username} sucursal={sucursal} usuario={usuario} nivel={returnRequestLevel} voidDeliveryTransactions={voidDeliveryTransactions} salesAccess={salesAccess} />} />) :\n (<Route />)\n }\n {status === \"signedin\" && transferOrder === true ?\n (<Route path=\"/TransferOrder\" render={(props) => <TransferOrder {...props} username={username} sucursal={sucursal} usuario={usuario} nivel={transferOrderLevel} salesAccess={salesAccess} />} />) :\n (<Route />)\n }\n {status === \"signedin\" && shipmentRequest === true ?\n (<Route path=\"/ShipmentRequest\" render={(props) => <ShipmentRequest {...props} username={username} sucursal={sucursal} usuario={usuario} nivel={shipmentRequestLevel} salesAccess={salesAccess} />} />) :\n (<Route />)\n }\n {status === \"signedin\" && invTransferOrder === true ?\n (<Route path=\"/InvTransferOrder\" render={(props) => <InvTransferOrder {...props} username={username} sucursal={sucursal} usuario={usuario} nivel={invTransferOrderLevel} salesAccess={salesAccess} approveInvTransferOrder={approveInvTransferOrder} invItemFulfillment={invItemFulfillment} invItemFulfillmentLevel={invItemFulfillmentLevel} invItemReceipt={invItemReceipt} invItemReceiptLevel={invItemReceiptLevel} />} />) :\n (<Route />)\n }\n {status === \"signedin\" && invItemFulfillment === true ?\n (<Route path=\"/InvItemFulfillment\" render={(props) => <InvItemFulfillment {...props} username={username} sucursal={sucursal} usuario={usuario} nivel={invItemFulfillmentLevel} salesAccess={salesAccess} />} />) :\n (<Route />)\n }\n {status === \"signedin\" && invItemReceipt === true ?\n (<Route path=\"/InvItemReceipt\" render={(props) => <InvItemReceipt {...props} username={username} sucursal={sucursal} usuario={usuario} nivel={invItemReceiptLevel} salesAccess={salesAccess} />} />) :\n (<Route />)\n }\n {status === \"signedin\" && inventoryTransfer === true ?\n (<Route path=\"/InventoryTransfer\" render={(props) => <InventoryTransfer {...props} username={username} sucursal={sucursal} usuario={usuario} nivel={inventoryTransferLevel} salesAccess={salesAccess} approveInventoryTransfer={approveInventoryTransfer} />} />) :\n (<Route />)\n }\n {status === \"signedin\" && kardex === true ?\n (<Route path=\"/Kardex\" render={(props) => <Kardex {...props} username={username} sucursal={sucursal} usuario={usuario} />} />) :\n (<Route />)\n }\n {status === \"signedin\" && invLevels === true ?\n (<Route path=\"/InvLevels\" render={(props) => <InvLevels {...props} username={username} sucursal={sucursal} usuario={usuario} />} />) :\n (<Route />)\n }\n {status === \"signedin\" && invLevelsIncCost === true ?\n (<Route path=\"/InvLevelsIncCost\" render={(props) => <InvLevelsIncCost {...props} username={username} sucursal={sucursal} usuario={usuario} />} />) :\n (<Route />)\n }\n {status === \"signedin\" && repComparativoVentas === true ?\n (<Route path=\"/SalesCompReport\" render={(props) => <SalesCompReport {...props} username={username} />} />) :\n (<Route />)\n }\n {status === \"signedin\" && poSuggestionsReport === true ?\n (<Route path=\"/POSuggestionsReport\" render={(props) => <POSuggestionsReport {...props} username={username} poSuggestionsReportCfg={poSuggestionsReportCfg} />} />) :\n (<Route />)\n }\n {status === \"signedin\" && poSuggestionsReport === true && poSuggestionsReportCfg === true ?\n (<Route path=\"/ItemPOSuggestion\" render={(props) => <ItemPOSuggestion {...props} username={username} poSuggestionsReportCfg={poSuggestionsReportCfg} />} />) :\n (<Route />)\n }\n {status === \"signedin\" && poSuggestionsReport === true && poSuggestionsReportCfg === true ?\n (<Route path=\"/WarehousePOSuggestion\" render={(props) => <WarehousePOSuggestion {...props} username={username} poSuggestionsReportCfg={poSuggestionsReportCfg} />} />) :\n (<Route />)\n }\n {status === \"signedin\" && exploreBarcodes === true ?\n (<Route path=\"/ExploreBarcode\" render={(props) => <ExploreBarcode {...props} />} />) :\n (<Route />)\n }\n {status === \"signedin\" && exploreBarcodeCosts === true ?\n (<Route path=\"/ExploreBarcodeCosts\" render={(props) => <ExploreBarcodeCosts {...props} />} />) :\n (<Route />)\n }\n {status === \"signedin\" && createLabelWMS === true ?\n (<Route path=\"/LabelWMS\" render={(props) => <LabelWMS {...props} username={username} sucursal={sucursal} usuario={usuario} nivel={createLabelWMSLevel} salesAccess={salesAccess} />} />) :\n (<Route />)\n }\n {status === \"signedin\" && receiveOrderWMS === true ?\n (<Route path=\"/ReceiveOrderWMS\" render={(props) => <ReceiveOrderWMS {...props} username={username} sucursal={sucursal} usuario={usuario} nivel={receiveOrderWMSLevel} salesAccess={salesAccess} />} />) :\n (<Route />)\n }\n {status === \"signedin\" && fulfillmentOrderWMS === true ?\n (<Route path=\"/FulfillmentOrderWMS\" render={(props) => <FulfillmentOrderWMS {...props} username={username} sucursal={sucursal} usuario={usuario} nivel={fulfillmentOrderWMSLevel} salesAccess={salesAccess} assignFulfillmentOrderWMS={assignFulfillmentOrderWMS} />} />) :\n (<Route />)\n }\n {status === \"signedin\" && moveItemWMS === true ?\n (<Route path=\"/MoveItemWMS\" render={(props) => <MoveItemWMS {...props} username={username} sucursal={sucursal} usuario={usuario} salesAccess={salesAccess} />} />) :\n (<Route />)\n }\n {status === \"signedin\" && adjustItemWMS === true ?\n (<Route path=\"/AdjustItemWMS\" render={(props) => <AdjustItemWMS {...props} username={username} sucursal={sucursal} usuario={usuario} salesAccess={salesAccess} nivel={adjustItemWMSLevel} approveAdjustItemWMS={approveAdjustItemWMS} />} />) :\n (<Route />)\n }\n {status === \"signedin\" && itemCountWMS === true ?\n (<Route path=\"/ItemCountWMS\" render={(props) => <ItemCountWMS {...props} username={username} sucursal={sucursal} usuario={usuario} salesAccess={salesAccess} nivel={itemCountWMSLevel} approveItemCountWMS={approveItemCountWMS} />} />) :\n (<Route />)\n }\n {status === \"signedin\" && itemCountWMS === true ?\n (<Route path=\"/CreateItemCountWMS\" render={(props) => <CreateItemCountWMS {...props} username={username} sucursal={sucursal} usuario={usuario} salesAccess={salesAccess} nivel={itemCountWMSLevel} approveItemCountWMS={approveItemCountWMS} />} />) :\n (<Route />)\n }\n {status === \"signedin\" && closeSalesOrder === true ?\n (<Route path=\"/LockSalesOrder\" render={(props) => <LockSalesOrder {...props} username={username} sucursal={sucursal} usuario={usuario} nivel={cashRegisterLevel} salesAccess={salesAccess} />} />) :\n (<Route />)\n }\n {status === \"signedin\" && closeSalesOrder === true ?\n (<Route path=\"/UnlockSalesOrder\" render={(props) => <UnlockSalesOrder {...props} username={username} sucursal={sucursal} usuario={usuario} nivel={cashRegisterLevel} salesAccess={salesAccess} />} />) :\n (<Route />)\n }\n </div>\n </div>\n </HashRouter>\n </div>\n );\n}","export const licenseKey = 'ewogICJmb3JtYXQiOiAxLAogICJjdXN0b21lcklkIjogIjBlYzJlMGU1LWNmMmEtNGMzZS1hYTA5LWI4NTI4YjljYzBiOSIsCiAgIm1heFZlcnNpb25BbGxvd2VkIjogMjQxCn0=.jAgqTyGYB9fOCKvfdTG7U54w/FAiEiGtj17b3H1RshDi6/gmgSRugfgNjFmY8Zizvk6XyQQMNj/Lg72RzwFcdBkCU3S19q9pBPWWyU2F1pwX7J3cPP6/zwg93MTrkfi9nk2L3A==';","const reportWebVitals = onPerfEntry => {\n if (onPerfEntry && onPerfEntry instanceof Function) {\n import('web-vitals').then(({ getCLS, getFID, getFCP, getLCP, getTTFB }) => {\n getCLS(onPerfEntry);\n getFID(onPerfEntry);\n getFCP(onPerfEntry);\n getLCP(onPerfEntry);\n getTTFB(onPerfEntry);\n });\n }\n};\n\nexport default reportWebVitals;\n","import React from 'react';\nimport { createRoot } from 'react-dom/client';\n\nimport './index.css';\n\nimport Main from './Main';\nimport reportWebVitals from './reportWebVitals';\n\nconst container = document.getElementById('root');\nconst root = createRoot(container);\n\nroot.render(\n <React.StrictMode>\n <Main />\n </React.StrictMode>\n);\n\n// If you want to start measuring performance in your app, pass a function\n// to log results (for example: reportWebVitals(console.log))\n// or send to an analytics endpoint. Learn more: https://bit.ly/CRA-vitals\nreportWebVitals();\n"],"sourceRoot":""}