{"version":3,"sources":["svg/formatRates.png","data/logo.js","components/shared/Title.jsx","data/enums.js","utils/common.js","store/consts/index.js","utils/proxy.js","utils/uri.js","services/user.service.js","utils/http.js","hooks/useCardInfo.js","components/home/CardInfo.js","hooks/useApi.js","components/home/SalesMonthly.js","components/home/CategorySales.js","components/home/SalesDaily.js","components/home/Dashboard.js","components/home/HomePage.jsx","store/app/appActionTypes.js","store/app/appActions.js","components/footer/Footer.jsx","store/user/userActions.js","store/user/userActionTypes.js","components/footer/index.jsx","store/catalogs/catalogReducer.js","components/shared/AppLink.jsx","components/header/MegamenuLinks.jsx","components/header/Megamenu.jsx","svg/arrow-rounded-down-7x5.svg","svg/arrow-rounded-down-9x6.svg","svg/arrow-rounded-down-12x7.svg","svg/arrow-rounded-left-6x9.svg","svg/arrow-rounded-left-7x11.svg","svg/arrow-rounded-left-8x13.svg","svg/arrow-rounded-right-6x9.svg","svg/arrow-rounded-right-7x11.svg","svg/arrow-rounded-right-8x13.svg","svg/cart-20.svg","svg/check-9x7.svg","svg/check-12x9.svg","svg/compare-16.svg","svg/cross-10.svg","svg/cross-12.svg","svg/cross-20.svg","svg/fi-24-hours-48.svg","svg/fi-free-delivery-48.svg","svg/fi-payment-security-48.svg","svg/fi-tag-48.svg","svg/filters-16.svg","svg/heart-20.svg","svg/layout-grid-16x16.svg","svg/layout-grid-with-details-16x16.svg","svg/layout-list-16x16.svg","svg/logo.svg","svg/logo-small.svg","svg/menu-18x14.svg","svg/quickview-16.svg","svg/rating-13x12.svg","svg/search-20.svg","svg/wishlist-16.svg","components/header/Menu.jsx","data/headerNavigation.js","components/header/NavLinks.jsx","components/header/Indicator.jsx","components/header/IndicatorSearch.jsx","components/header/NavPanel.jsx","components/header/Dropdown.jsx","components/header/Topbar.jsx","components/header/Header.jsx","components/header/index.jsx","data/catalogos.js","services/store.js","store/toolBar/toolBarOptsReducer.js","components/shared/BlockHeader.jsx","hooks/useAuthorization.js","components/shared/Catalogos.jsx","components/header/PrivateRouter.jsx","components/search/Paciente.js","store/outPutProduct/outPutProductDialogReducer.js","data/defaultObjects.js","components/dropdown/ProductDDBComponent.js","hooks/useProducts.js","utils/gridsHelper.js","components/buttons/CustomButton.js","components/buttons/ButtonForm.js","views/movimientos/outPutProducts/Nuevo.js","components/grids/ToolBar.js","services/reportServices.js","views/movimientos/outPutProducts/index.js","views/movimientos/outPutProducts/OutPutProducts.js","store/product/productDialogReducer.js","store/catalog/catalogDialogReducer.js","views/products/FileUpload.js","views/products/NewCatalog.js","views/products/Nuevo.js","views/products/index.js","views/products/Products.js","views/users/index.js","views/users/Users.js","views/roles/index.jsx","views/roles/Roles.jsx","views/resources/index.jsx","views/resources/Resources.jsx","views/rates/Nuevo.js","views/rates/index.js","views/rates/Rates.js","store/inPutProduct/inPutProductDialogReducer.js","components/grids/Menu.js","views/movimientos/inPutProducts/InPutProducts.js","views/movimientos/initProducts/Nuevo.js","views/movimientos/initProducts/initProduct.js","views/providers/Providers.js","store/traslate/traslateDialogReducer.js","views/movimientos/traslates/Nuevo.js","views/movimientos/traslates/index.js","views/movimientos/traslates/Traslates.js","store/bill/billDialogReducer.js","store/inPutProductPurchase/purchaseDialogReducer.js","hooks/useUsers.js","views/bills/Nuevo.js","components/form/Resumen.jsx","views/movimientos/initProducts/NuevoPurchase.js","views/reports/kardex/index.js","views/reports/kardex/Kardex.jsx","views/reports/stocks/index.js","views/reports/stocks/Existencias.jsx","views/movimientos/initProducts/initAdjustments.js","store/client/clientDialogReducer.js","views/clients/Nuevo.js","views/clients/index.js","views/clients/Clients.js","store/dialogRecibo/dialogReciboReducer.js","components/bill/CellPrepared.js","components/bill/DetailTemplate.js","components/bill/BillCxC.js","components/bill/BillByClient.js","components/bill/Nuevo.js","views/receipts/ReceiptByBillId.js","store/gridState/gridStateReducer.js","components/shared/BlockHeaderState.jsx","store/bill/billDisabledDialogReducer.js","views/bills/BillDisabled.js","views/bills/index.js","views/bills/Bills.js","store/notacredit/ncDialogReducer.js","views/notascreditos/Nuevo.js","views/notascreditos/index.js","views/notascreditos/NotasCreditos.js","views/receipts/Nuevo.js","views/receipts/index.js","views/receipts/Receipts.js","views/areas/Areas.jsx","views/areas/index.js","components/grids/Importer.js","views/vendors/Vendors.js","store/areaProduct/areaProductDialogReducer.js","views/reports/stocks/Nuevo.jsx","views/reports/stocks/Stock.jsx","components/navigator/Navig.jsx","components/form/DivForm.jsx","components/dropdown/ClienteDropDown.js","views/app/AppConfig.js","views/reports/facturas/Comision.jsx","views/reports/facturas/DialogPopup.js","views/reports/facturas/ProductsInfo.jsx","views/clasifications/Clasifications.jsx","views/clasifications/index.js","components/shared/BlockHeaderStateCC.jsx","store/gridStateCC/gridStateCCReducer.js","views/clients/Pending.js","components/shared/Collapse.jsx","components/mobile/MobileLinks.jsx","store/mobile-menu/mobileMenuReducer.js","store/mobile-menu/index.js","store/mobile-menu/mobileMenuActionTypes.js","data/mobileMenu.js","components/mobile/MobileMenu.jsx","store/mobile-menu/mobileMenuActions.js","components/mobile/MobileHeader.jsx","views/bills/Ventas.js","views/cuts/index.js","views/cuts/Cuts.js","views/cuts/Ejecute.js","views/reports/compras/Compras.js","hooks/useClientDetail.js","views/clients/ClientInfo.js","views/clients/NuevoClient.js","hooks/useClients.js","store/clientDetail/clientDetailReducer.js","views/prebills/Nuevo.js","views/prebills/PreBills.js","views/prebills/Cotizaciones.js","views/prebills/PreVentas.js","store/provider/providerDialogReducer.js","views/providers/NuevoProvider.js","store/appRule/appRuleDialogReducer.js","views/app/AppInfo.js","views/purchases/NewPurchase.js","views/purchases/index.js","views/purchases/Purchases.js","store/authorization/authDialogReducer.js","views/app/Nuevo.js","views/app/Authorizations.js","components/dropdown/ProductDDBComponentMobile.js","views/mobile/prebills/NuevoNew.js","views/mobile/prebills/PreBills.js","views/mobile/prebills/MobileCotizaciones.js","views/mobile/prebills/PreVentas.js","views/comisionFamilies/ComisionFamilies.js","views/bills/Recibos.js","components/bill/MobilNuevo.js","views/mobile/receipts/MobileReceiptByBillId.js","views/mobile/bills/Nuevo.js","views/mobile/clients/MobilePending.js","views/clients/ClientsMobile.js","views/reports/stocks/Ingresos.js","views/reports/stocks/DashboardComponent/ChartLine.js","views/reports/stocks/DashboardComponent/ChartBar.js","views/reports/stocks/DashboardComponent/PieChart.js","views/reports/stocks/DashboardComponent/CharByType.js","views/reports/stocks/DashboardSales.js","views/bills/BillUpdates.js","views/products/ImageProduct.js","views/reports/stockByDate/StockByDate.js","components/Layout.jsx","data/dx.messages.es.js","components/account/Login.jsx","components/account/Logout.jsx","components/account/ChangePassword.jsx","components/account/ResetPassword.jsx","components/Root.jsx","store/sidebar/sidebarReducer.js","store/sidebar/index.js","store/sidebar/sidebarActionTypes.js","store/user/userReducer.js","store/user/index.js","store/compra/compraReducer.js","store/compra/index.js","store/compra/compraActionTypes.js","store/factura/facturaReducer.js","store/factura/index.js","store/factura/facturaActionTypes.js","store/servicio/servicioReducer.js","store/servicio/index.js","store/servicio/servicioActionTypes.js","store/app/index.js","store/app/appReducer.js","store/catalogs/index.js","store/inPutProduct/index.js","store/inPutProductPurchase/index.js","store/outPutProduct/index.js","store/product/index.js","store/customDialog/customDialogReducer.js","store/customDialog/index.js","store/bill/index.js","store/dialogRecibo/index.js","store/areaProduct/index.js","store/traslate/index.js","store/client/index.js","store/appRule/index.js","store/gridState/index.js","store/gridStateCC/index.js","store/clientDetail/index.js","store/notacredit/index.js","store/toolBar/index.js","store/rootReducer.js","store/store.js","store/index.js","index.js","svg/logo.png","svg/homelogo.png","svg/logotipo.png","svg/working.png","svg/cart.png","svg/file.png","svg/book.png","svg/cotizaciones.png","svg/ventas.png","svg/clientes.png","svg/bill.png","svg/clients.png","svg/clients2.png","data/app.js"],"names":["module","exports","logotipo","className","width","src","require","logoHome150","cart","cotizacion","ventas","bills","clients","clients2","connect","state","app","appInfo","props","title","Helmet","name","estadoGeneric","activo","noActivo","inPutProductStates","outPutProductStates","paymentType","preBillType","inPutProductTypes","compra","ajusteEntrada","saldoInicial","traslado","outPutProductTypes","facturacion","ajuste","servicios","purchaseSteps","purchaseTypes","typeTraslate","stepsTraslate","typeAuths","currency","1","2","cellRender","currencyId","data","formatToMoney","value","cellRenderBold","cellAsBold","formatId","numeral","format","dataFormatId","dataFormatIdMobile","toMoney","formatToMoneyNumber","toBoldMoney","customizeTextAsPercent","cellDataAsBold","cellAsPayoff","onCellPrepared","e","rowType","column","allowEditing","includes","dataField","cellElement","classList","add","onCellPreparedSales","toCapital","string","map","c","i","toUpperCase","join","dialogDefault","open","id","gridStateDefault","disabledView","disabledPrint","disabledPayment","disabledViewReceipts","disabledCancel","disabledEnable","createProxy","get","insert","remove","getById","base","createProxyBase","root","createStore","active","createCustomStore","url","createStoreLocal","reload","required","store","CustomStore","key","loadMode","load","Promise","resolve","existe","catalogs","JSON","parse","localStorage","getItem","length","arr","filter","x","endPoint","http","asGet","then","r","Error","myStore","uri","authorizations","areas","prebills","cuts","compras","movements","providers","estados","file","fileRates","inPutProducts","outPutProducts","traslates","products","roles","users","rates","receivables","vendors","comissions","areaProducts","areaId","areaProductConvert","dashboard","roleId","getByArea","getByAreaGrid","asCatalog","byBill","billId","new_catalog","account","changepassword","resetPassword","setToken","resp","setItem","token","stringify","buildUser","getToken","userService","user","asPost","removeItem","path","process","processResponse","reject","status","httpStatus","badRequest","text","err","internalServerError","unauthorized","window","location","href","ok","json","properties","headers","fetch","catch","error","response","getParameters","queryString","parameters","prop","replace","_url","params","method","body","asDelete","asFile","formData","FormData","append","asGetFile","blob","useCardInfo","useState","percent","cardInfo","setCardInfo","loading","setLoading","callApi","a","useEffect","Cardinfo","icon","_path","rate","useApi","isLoading","setIsLoading","setData","SalesMonthly","dataSource","argumentField","type","barWidth","color","valueField","position","verticalAlignment","horizontalAlignment","itemTextPosition","enabled","customizeTooltip","arg","seriesName","valueText","CategorySales","palette","label","visible","forma","margin","toFixed","SalesDaily","Object","keys","result","item","day","moment","date","deleteDate","bottom","valueMarginsEnabled","discreteAxisDivisionMode","Dashboard","navegateTo","history","push","pathname","stylingMode","onClick","HomePage","to","getAppInfoSuccess","createAction","setAppInfoSuccess","setAppInfo","dispatch","currentData","newData","exluyeVersion","version","Footer","this","getAppInfo","getUser","classPre","username","area","Component","mapDispatchToPros","getCatalogSuccess","handleActions","action","payload","AppLink","link","external","children","otherProps","linkProps","innerRef","propTypes","PropTypes","oneOfType","shape","search","hash","any","bool","func","object","defaultProps","MegamenuLinks","links","depth","linksList","index","subLinks","classes","classNames","Megamenu","menu","menuStyle","backgroundImage","image","columns","size","style","_extends","assign","target","arguments","source","prototype","hasOwnProperty","call","apply","_objectWithoutProperties","excluded","sourceKeys","indexOf","_objectWithoutPropertiesLoose","getOwnPropertySymbols","sourceSymbolKeys","propertyIsEnumerable","createElement","d","_ref","svgRef","height","ref","ForwardRef","forwardRef","Menu","layout","withIcons","items","itemsList","arrow","submenu","srcSet","icon_srcset","alt","content","renderLink","Fragment","NavLinks","handleMouseEnter","event","currentTarget","megamenu","querySelector","containerWidth","offsetParent","getBoundingClientRect","megamenuWidth","itemOffsetLeft","offsetLeft","megamenuPosition","Math","round","min","left","navLinks","onMouseEnter","Indicator","setWrapperRef","node","wrapperRef","handleOutsideClick","contains","close","handleButtonClick","dropdown","preventDefault","toggle","document","addEventListener","prevProps","prevState","onOpen","onClose","removeEventListener","setState","button","undefined","IndicatorSearch","handleOpen","input","current","focus","handleKeyDown","which","indicator","React","createRef","onSubmit","bind","searchIcon","searchDropdown","onKeyDown","placeholder","aria-label","autoComplete","withRouter","wishlist","_logo","searchIndicator","paddingRight","background","Dropdown","handleItemClick","toolBarOpts","defaultMessage","Header","useDispatch","catalogos","caption","defaultModel","model","msgInserted","msgUpdated","msgDeleted","cb","remoteOperations","extraParameter","loadOptions","skip","take","requireTotalCount","element","moreParams","dataFilter","filters","totalCount","notify","update","dataModificada","catalogo","byKey","stateInit","addToolBarAction","removeToolBarAction","getPaths","BlockHeader","showFavorite","rest","useSelector","existFavorite","find","showFavorites","fontSize","Authorized","canAction","component","useAuthorization","_resources","resources","y","resource","authorized","Catalogo","adminCatalogos","dataGrid","selection","mode","showBorders","showRowLines","allowColumnResizing","allowColumnReordering","onToolbarPreparing","toolbarOptions","unshift","widget","options","instance","addRow","onInitNewRow","defaultPageSize","showPageSizeSelector","allowedPageSizes","fileName","allowExportSelectedData","dataType","allowUpdating","useIcons","showTitle","colSpan","message","max","editorType","editorOptions","editorOptionsSwitch","PrivateRoute","routeProps","Render","render","exact","from","Paciente","beneficiaries","setBeneficiaries","match","noDataText","formatDate","mydialog","dialogOutputProduct","billDefault","creditDays","vendorId","observaction","nameClient","clientId","Date","year","month","inPutProductDefault","outPutProductDefault","purchaseDefault","typeId","providerId","movementDefault","movementTypeId","traslateDefault","receiptDefault","amount","retention","balance","observation","client","paid","applyPayment","createAt","productDefault","description","familyId","hasIva","stockInherited","presentationId","stateId","stock","unitOfMeasureId","convertProductId","convertProductQuantity","convertSourceQuantiy","labels","today","firstDay","set","dateByReport","defaultLabels","defaultProvider","property","ruc","phoneNumber","email","address","defaultClient","identification","lastName","isCompany","convert2","parseFloat","dropDownOptions","fullScreen","showCloseButton","ProductDDBComponent","quantity","currentValue","dropDownBoxRef","onSelectionChanged","contentRender","calculateFilterExpression","showImage","showPrice","validateQuantity","selectedFilterOperation","split","v","filterFull","row","lookup","keyExpr","selectedRowKeys","hoverStateEnabled","focusedRowEnabled","defaultFocusedRowKey","rowAlternationEnabled","columnAutoWidth","setValue","selectedRowsData","editCell","rowIndex","displayExpr","internalCode","valueExpr","useProducts","exists","has","onlyProducts","setProducts","refresh","gridsHelper","gridRef","disabled","CustomButton","ButtonForm","saving","textSaving","Nuevo","outPutProductDialog","outPutProduct","setOutPutProduct","setSaving","details","setDetails","setLots","refForm","useRef","refGrid","refSelect","outPutProductDetails","detail","info","productId","presentation","um","family","closeDialog","resetValues","cancelEditData","onSave","setCellValue","currentRowData","cost","price","product","isNew","_lots","lotsMap","lote","expireDate","ds","useMemo","DataSource","dataSourceProduct","useCallback","searchValue","paginate","pageSize","setFocus","setTimeout","onHiding","colCount","editorOptionsSelect","displayFormat","openOnFieldClick","searchEnabled","searchMode","searchExpr","searchTimeout","showClearButton","itemRender","cssZero","disponible","onValueChanged","_info","existsProduct","addProductById","reset","onRowInserting","isCanceled","cancel","onEditCanceled","editCellComponent","allowDeleting","selectTextOnEditStart","summaryType","customizeText","validate","isValid","confirm","dialogResult","onToolbar","actions","grid","export","exportToExcel","urlReport","inPut","outPut","purchase","notaCredito","billTicket","preBillTicket","recibo","commissions","desde","hasta","print","OutPutProducts","showDialog","onRowPrepared","rowElement","paging","filtering","showInfo","formatDateTime","report","printReport","dialogProduct","dialogCatalog","catalog","FileUpload","showInput","setFile","loadFile","overflow","onChange","files","ImageThumb","widt","heig","URL","createObjectURL","NewCatalog","catalog2","catalogId","setCatalog","refCatalog","refProduct","setProduct","reloadScreen","setReloadScreen","setReload","productDialog","buttonActualizar","buttonNewCatalog","console","log","direction","ratio","editorOptsTextBox","editorOptionsNumberBox","validationCallback","complete","Products","inventario","openDialog","minWidth","Users","adminUsuario","onContextMenuPreparing","onItemClick","allowFiltering","String","Roles","allowAdding","Resources","setRoles","rolId","setRolId","baseSize","groupPanel","groupIndex","setVisible","formElement","hideInfo","encType","selectButtonText","labelText","allowedFileExtensions","uploadMode","_files","Rates","adminTasaCambios","dialogInputProduct","addMenu","InPutProducts","btnAddText","resourcesId","dialog","allowHeaderFiltering","precision","canEdit","inPutProductDialog","inPutProduct","setInPutProduct","inPutProductDetails","initProduct","Providers","administrarProveedores","dialogTraslate","stepId","isCreate","traslateDialog","editing","areaSourceId","setAreaSourceId","traslate","setTraslate","withOutDetaill","traslateDetails","prod","textCreating","itemHTML","readOnly","Traslates","requisa","hint","billDialogAction","dialogPurchase","useUsers","cambiarDiasCredito","canChangeCreditDays","billDialog","billDefaultCustom","billDetails","bill","setBill","fullscreen","setFullScreen","currentCreditDays","setCurrentCreditDays","clientInfo","textBoxRef","refDeliveryDate","forEach","_bill","alertUser","returnValue","alert","newDetail","buttonFSOptions","shadingColor","of","showIndicator","shading","showPane","showScrollbar","paymentTypeId","paymentMethodId","bankId","reference","option","billPaymentTypeId","random","selectedRow","getSelectedRowKeys","getRowIndexByKey","deleteRow","saveEditData","createBy","itemType","buttonOptions","hasEditData","subTotal","discount","iva","toral","codigo","codeAuth","preBillTypeId","preBillDetails","hasDueBill","sendData","dueBills","focusStateEnabled","code","addProductByCode","deliveryDate","asignedTo","Resumen","importe","reduce","actual","nuevo","total","descuento","NuevoPurchase","purchaseDialog","resumenData","setResumenData","onRowInserted","onRowRemoved","onRowUpdated","Kardex","verKardex","setAreas","setAreaId","setDate","gridBoxValue","setGridBoxValue","kardex","setKardex","floating","setFloating","saldoAnterior","setSaldoAnterior","applyFloating","setApplyFloating","dataGrid_onSelectionChanged","loadData","respFlating","stockcellRender","cellData","quantityIn","directions","findMove","parseInt","stocks","alignment","Existencias","verExistencias","verColumnaCostoStock","canSeeColCost","withStock","setWithStock","defaultValue","setDefaultValue","setStocks","switchedOnText","switchedOffText","costAvg","initAdjustments","clientDialogAction","isMobile","configurarCredito","canConfigureCredit","clientDialog","cliente","setcliente","cities","setCities","cli","updateCliente","propPop","editorOptsTextBoxPhone","departmentId","Clients","verClientes","onRowDblClick","creditLimit","rowData","cityId","onCellPreparedReceipt","payoff","DetailTemplate","BillCxC","setBalance","cuentasPorCobrar","dataDialog","setDataDialog","nombre","calculareBalance","accumulator","BillByClient","urlByKey","setClientId","crearRecibo","can","receipt","setReceipt","billPaymentMethodId","referencePhysical","editorOptsDateBox","ReceiptByBillId","titleCliente","myState","setGridState","newState","BlockHeaderState","onClickView","onClickPrint","onClickPayment","onClickViewReceipts","onClickCancel","onClickEnable","onRefresh","onClickAdd","visibleView","visiblePrint","visiblePayment","visibleViewReceipts","visibleCancel","visibleEnable","visibleRefresh","visibleAdd","gridState","billDisabledDialogAction","BillDisabled","billDisabledDialog","disabledSubject","disassociate","setFormData","labelLocation","Bills","dialogReceipt","setDialogReceipt","showBillDisabledDialog","isContado","onRowClick","isDeliveried","deliveriedClassName","ncDialogAction","ncDialog","billDetallis","setBillDetails","movement","setMovement","searching","setSearching","refBillForm","billRefId","movementDetails","totalDiscount","newDiscount","searchBill","totalFormatted","deudaFormatted","searchButton","isGoBack","isDiscount","cssClass","_billDetallis","quantityBilled","discountPercent","totalFact","resultBill","successCallback","newDetails","NotasCreditos","crearNotasCreditos","printName","_uri","dialogRecibo","Receipts","verRecibos","Areas","onExporting","workbook","Workbook","worksheet","addWorksheet","exportDataGrid","xlsx","writeBuffer","buffer","saveAs","Blob","Vendors","dialogAreaProduct","refAreaProduct","refProductConvert","areaProduct","setAreaProduct","productConvert","setProductConvert","converting","setConverting","areaProductDialog","convertProductAsync","resultValidate","costReal","areaProductToConvert","productoToConvert","quantityToConvertText","unitOfMeasure","productoToConvertText","inherit","stockMin","stockMax","step","isMupli","Stock","verReporteStock","isLimit","allo","Navig","returnUrl","DivFormColumns","borderRadius","padding","border","fontWeight","paddingBottom","paddingTop","textWrap","editorOptionsDropDown","AppConfig","setApp","textValuated","setTextValuated","textValuatedLocal","setTextValuatedLocal","textValuatedPrice","setTextValuatedPrice","evaluateRules","rule","valSpaceless","startsWith","calculateEvaluate","isNaN","setRule","propName","costButton","priceButton","slogan","areaMainId","float","validatePriceGreaterCost","clientDefault","billA4Size","validateCreditClient","ruleCalcuteNewPrice","ruleCalcuteNewPriceLocal","ruleProfitPrice","useSubmitBehavior","Comision","setUsers","setUsername","dateFrom","setDateFrom","dateTo","setDateTo","_","fullName","billDate","payOfDate","diasTranscurridos","datePaid","daysMora","showInGroupFooter","alignByColumn","DialogPopup","now","setOpen","ProductsInfo","Clasifications","BlockHeaderStateCC","gridStateCC","setGridStateCC","Pending","cellInfo","columnHidingEnabled","mora","daysInDebt","expirationDate","vence","statusFormat","showStatus","Collapse","handleTransitionEnd","propertyName","handleToggle","toggleClass","collapse","expand","setItemRef","setContentRef","immediate","startHeight","endHeight","MobileLinks","level","linkOrButton","initialState","mobileMenuReducer","mapDispatchToProps","closeMobileMenu","mobileMenuState","mobileMenu","mobileMenuLinks","MobileHeader","setSearchWrapperRef","searchWrapperRef","setSearchInputRef","searchInputRef","searchOpen","handleOpenSearch","handleCloseSearch","handleSearchKeyDown","openMobileMenu","searchClasses","Ventas","tipoFecha","setTipoFecha","setProductId","verReporteDeVentas","canSeeAllUser","refData","optsRef","cols","newOpts","col","colOpt","columnOption","autoExpandAll","Cuts","gestionCierreCaja","res","Ejecute","setBills","refCut","getInfoCut","sales","endValue","previousValue","totalDetail","calculateValue","initValue","isClosed","display","justifyContent","Compras","useClientDetail","getClient","ClientInfo","clientDetail","saldo","department","city","saldoDisponible","dateUltCompra","_depto","_city","deptoCity","NuevoClient","onCreate","screenOpts","onShowing","useClients","clientDetailAction","setEditing","convertFactura","guardarFactura","isPreventa","buttonOptions2","currentIsPreventa","currentIsCotizazion","PreBills","initStates","states","setStates","statesActive","setStatesActive","changePreBill","multiline","hideSelectedItems","clearFilter","filterValue","Cotizaciones","PreVentas","providerDialogAction","NuevoProvider","providerDialog","provider","setProvider","appRuleDialogAction","AppInfo","appRuleDialog","NewPurchase","setPurchase","processing","setProcessing","setRate","purchaseDetails","guardarEntrada","validateAllRows","getResult","ruleName","resultCost","realCost","purchaseTypeId","newCost","canProcess","canSave","buttonProveedor","buttonProducts","buttonRules","newRate","_purchase","beginUpdate","valueCordoba","cellValue","valueRound","valueDolar","endUpdate","dra","Purchases","ordenesDeCompra","authDialogAction","authDialog","authDefaultCustom","userOneTime","auth","setAuth","expiredDate","Authorizations","auths","ProductDDBComponentMobile","NuevoNew","showRest","setShowRest","constructor","getDataSource","paymentTypeIdChanged","clientIdChanged","buttonOptions3","targetPage","MobileCotizaciones","MobilePreVentas","ComisionFamilies","configurarComisiones","Recibos","MobilNuevo","MobileReceiptByBillId","MobilePending","ClientsMobile","Ingresos","ChartLine","typeLabel","reverseTypeLabel","reverseType","collection","currentCategory","sort","b","onLegendClick","isVisible","hide","show","ignoreEmptyPoints","showInLegend","dashStyle","backgroundColor","pointInfo","ChartBar","onPointClick","totalGlobal","prev","rotated","html","argumentText","ChartPie","columnCount","CharByType","setCurrentCategory","setFilter","getUniques","_data","Set","getDataGeneral","_type","getTotal","getDataDetail","dataByDates","dataByTypes","dataByReverseType","dataByType","values","getDataDetailDoughnut","dataGeneral","dataDetail","dataDetailDoughnut","collectionReserve","showDropDownButton","point","isSelected","clearSelection","select","argument","DashboardSales","dashboardType","setDashboardType","currentTypeLabel","BillUpdates","verMenuActualizarFacturas","ImageProduct","useParams","StockByDate","Layout","headerLayout","PrintCatalogos","builRoute","routes","autoClose","hideProgressBar","esMessages","Login","password","setUser","setVersion","onValueChange","userResp","mustChangePassword","autoFocus","marginTop","textAlign","Logout","ChangePassword","currenteUser","oldPassword","newPassword","repeatPassword","goBack","ResetPassword","setEmail","Info","Root","loadMessages","locale","preloader","parentNode","removeChild","basename","sidebarReducer","userReducer","editable","descarga","compraReducer","factura","facturaReducer","servicio","servicioReducer","appReducer","catalogReducer","inPutProductDialogReducer","purchaseDialogReducer","outPutProductDialogReducer","productDialogReducer","customDialogReducer","billDialogReducer","dialogReciboReducer","areaProductDialogReducer","traslateDialogReducer","clientDialogReducer","appRuleDialogReducer","gridStateReducer","gridStateCCReducer","clientDetailReducer","ncDialogReducer","toolBarOptsReducer","myPaths","myPathsFiltered","combineReducers","sidebar","customDialog","rootReducer","compose","applyMiddleware","thunk","rootElement","getElementById","ReactDOM","showSpinButtons","mask","cssClasses","0","areaRestrict","bodega","verTodasFacturas","crearCompra","reporteCompra","verMisFacturas","crearFactura","crearClienteEnPreventa","crearClienteConCreditos","verMisCuentasXCobrar","dataAccess","none","access","create","delete","stringRule","eval"],"mappings":"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","file":"static/js/main.0cb7134e.chunk.js","sourcesContent":["module.exports = __webpack_public_path__ + \"static/media/formatRates.c20bb4b2.png\";","\r\nimport React from 'react'\r\nexport const logotipo = \r\nexport const logoHome = \r\nexport const logoHome150 = \r\nexport const working = \r\nexport const cart = \r\nexport const file = \r\nexport const book = \r\n\r\nexport const cotizacion = \r\nexport const ventas = \r\nexport const clientes = \r\nexport const bills = \r\nexport const clients = \r\nexport const clients2 = \r\n\r\n\r\nexport const colorNavBar = () => '#fff';","// react\r\nimport React from 'react';\r\nimport { Helmet } from 'react-helmet';\r\nimport { connect } from 'react-redux';\r\n\r\nfunction Title(props) {\r\n\r\n const { title, app } = props;\r\n\r\n return \r\n {app.name} - {title}\r\n \r\n}\r\n\r\nconst mapStateToProps = (state) => ({ \r\n app: state.appInfo, \r\n});\r\n\r\nexport default connect(mapStateToProps, null)(Title);\r\n","\r\n\r\nconst estadoGeneric = {\r\n activo: 1,\r\n noActivo: 2\r\n}\r\n\r\nexport const relationships = {\r\n asegurado: 1,\r\n hijo: 2\r\n}\r\n\r\nexport const tipoMovimiento = { entrada: 1, salida: 2 }\r\n\r\nexport const inPutProductStates = {...estadoGeneric};\r\n\r\nexport const outPutProductStates = {...estadoGeneric};\r\n\r\nexport const monedaSymbol = {\r\n 1: \"C$\",\r\n 2: \"$\"\r\n}\r\n\r\nexport const paymentType = {\r\n contado : 1,\r\n credito : 2\r\n}\r\n\r\nexport const preBillType = {\r\n cotizacion : 1,\r\n preventa : 2,\r\n facturacion : 3\r\n}\r\n\r\nexport const inPutProductTypes = { compra: 1, ajusteEntrada: 2, saldoInicial : 3, traslado : 4 }\r\nexport const outPutProductTypes = { facturacion: 1, ajuste: 2, servicios : 3, traslado : 4 }\r\nexport const purchaseSteps={ pendiente: 1, procesada: 2, anulada: 3}\r\nexport const purchaseTypes={ nacional: 1, importacion: 2 }\r\n\r\nexport const typeTraslate = {\r\n create: 'create',\r\n update: 'update'\r\n}\r\n\r\nexport const stepsTraslate = {\r\n pendiente: 1,\r\n anulado: 2,\r\n procesado: 3\r\n}\r\n\r\nexport const typeAuths = {\r\n discount: 1,\r\n credit: 2\r\n}","import numeral from 'numeral'\r\nimport moment from 'moment'\r\nimport React from 'react'\r\n\r\nimport { tipoMovimiento } from '../data/enums';\r\nimport http from './http';\r\n\r\nconst currency ={\r\n 1: 'C$',\r\n 2: '$'\r\n}\r\n/**\r\n * returna una cadena en tipo capital\r\n * @param {String} string - cadena de texto a covertir en Capital\r\n * @return {String} result\r\n */\r\nconst toCapital = string => [...string].map((c, i) => i == 0 ? c.toUpperCase() : c).join('');\r\n\r\n/**\r\n * Convierte un date a ticks\r\n * @param {Date} date - cadena de texto a covertir en Capital\r\n */\r\nconst getTicks = date => ((date.getTime() * 10000) + 621355968000000000);\r\n\r\nexport const cellRender = currencyId => data => formatToMoney(data.value, currencyId || data.data.currencyId); \r\n\r\nexport const cellRenderBold = currencyId => data => cellAsBold(formatToMoney(data.value, currencyId || data.data.currencyId));\r\n\r\nexport const formatId = value => numeral(value).format('00000');\r\n\r\nexport const formatIdMobile = value => numeral(value).format('0000');\r\n\r\nexport const dataFormatId = data => formatId(data.value);\r\n\r\nexport const dataFormatIdMobile = data => formatIdMobile(data.value);\r\n\r\nexport const formatToMoney = (value, currencyId) =>`${currency[currencyId || 1]} ${numeral(value).format('0,0.00')}`;\r\n\r\nexport const toMoney = data => formatToMoneyNumber(data.value);\r\n\r\nexport const toBoldMoney = data => {toMoney(data)};\r\n\r\nexport const customizeTextAsPercent = data => `${data.value || 0} %`;\r\n\r\nexport const formatToMoneyNumber = value =>`${numeral(value).format('0,0.00')}`;\r\n\r\nexport const cellAsBold = value => {value};\r\n\r\nexport const cellDataAsBold = data => {data.value};\r\n\r\nexport const cellAsPayoff = data => { \r\n return {data.value ? 'Pagada' : 'Pendiente'};\r\n} \r\n\r\nexport const obtenerTasaCambio = date => {\r\n\r\n let v = new Date(moment(date).format());\r\n let ticks = getTicks(v);\r\n\r\n return http(`rates/get/${ticks}`).asGet();\r\n\r\n}\r\n\r\nexport const getPriceByCurrency = (currencyId, rate) => service => {\r\n \r\n let price = 0;\r\n\r\n if(currencyId == service.currencyId)\r\n price = service.price;\r\n else\r\n if(currencyId == 1)\r\n price = service.price * rate;\r\n else\r\n price = service.price / rate;\r\n\r\n return price;\r\n \r\n}\r\n\r\nconst fn = fx => data => {\r\n return fx;\r\n} \r\n\r\nexport const cellDiff = data => {\r\n return(\r\n
\r\n
{data.data.existencias}
\r\n
\r\n )\r\n}\r\n\r\nexport const onCellPrepared = e => {\r\n\r\n const cellsQuantity = ['quantity', 'quantityRequest']\r\n \r\n if (e.rowType == 'data' && e.column.allowEditing) {\r\n if(cellsQuantity.includes(e.column.dataField))\r\n e.cellElement.classList.add('quantity-text');\r\n if(e.column.dataField == \"quantityResponse\")\r\n e.cellElement.classList.add('quantityResponse-text');\r\n if(e.column.dataField == \"cost\")\r\n e.cellElement.classList.add('cost-text');\r\n if(e.column.dataField == \"realCost\")\r\n e.cellElement.classList.add('realCost-text');\r\n if(e.column.dataField == \"price\")\r\n e.cellElement.classList.add('price-text');\r\n if(e.column.dataField == \"discountPercent\")\r\n e.cellElement.classList.add('discountPercent-text');\r\n if(e.column.dataField == \"newPriceAux\")\r\n e.cellElement.classList.add('newPriceAux-text');\r\n }\r\n\r\n}\r\n\r\nexport const onCellPreparedSales = e => {\r\n\r\n const cellsQuantity = ['cost', 'costoTotal']\r\n \r\n if (e.rowType == 'data' && e.column.allowEditing) {\r\n if(cellsQuantity.includes(e.column.dataField))\r\n e.cellElement.classList.add('text-cost');\r\n if(e.column.dataField == \"utilidades\")\r\n e.cellElement.classList.add('text-utilidades');\r\n if (e.column.dataField == 'id')\r\n e.cellElement.classList.add('col-id-factura');\r\n if (e.column.dataField == 'reference')\r\n e.cellElement.classList.add('col-reference-factura');\r\n }\r\n\r\n}\r\n\r\n\r\nconst months = ['ene','feb','mar','abr','may','jun','jul','ago','sep','oct','nov','dic']\r\nexport const getMonthName = index => months[index-1]; \r\nexport const customizeText = data => getMonthName(data.value);\r\n\r\nexport const phonePattern = /[-\\s\\./0-9]*$/g;\r\nexport const phoneRules = { X: /[0-9]/ };\r\nexport { getTicks }\r\n\r\n\r\nexport default toCapital\r\n\r\n","\r\nexport const dialogDefault = {\r\n open: false,\r\n id: 0,\r\n};\r\n\r\nexport const gridStateDefault = {\r\n id: 0,\r\n disabledView: true, \r\n disabledPrint: true, \r\n disabledPayment: true, \r\n disabledViewReceipts: true, \r\n disabledCancel: true,\r\n disabledEnable: true\r\n \r\n};\r\n\r\n\r\nexport const catalogsName = 'catalogs';\r\n\r\nexport const DIALOG_AREAPRODUCT = 'DIALOG_AREAPRODUCT';\r\n\r\nexport const DIALOG_INPUTPRODUCT = 'DIALOG_INPUTPRODUCT';\r\nexport const DIALOG_OUTPUTPRODUCT = 'DIALOG_OUTPUTPRODUCT';\r\nexport const DIALOG_PRODUCT = 'DIALOG_PRODUCT';\r\nexport const DIALOG_CATALOG = 'DIALOG_CATALOG';\r\nexport const GRID_STATE = 'GRID_STATE';\r\nexport const GRID_STATE_CC = 'GRID_STATE_CC';\r\n\r\n\r\nexport const GET_CATALOGS = 'GET_CATALOGS';\r\nexport const DIALOG_TRANSFER = 'DIALOG_TRANSFER';\r\nexport const DIALOG_TRANSFER_WITHPRODUCT = 'DIALOG_TRANSFER_WITHPRODUCT';\r\n\r\nexport const OPEN_DIALOG_SERVICETEST = 'OPEN_DIALOG_SERVICETEST';\r\nexport const CLOSE_DIALOG_SERVICETEST = 'CLOSE_DIALOG_SERVICETEST';\r\n\r\nexport const OPEN_DIALOG = 'OPEN_DIALOG'\r\nexport const CLOSE_DIALOG = 'CLOSE_DIALOG'\r\n\r\nexport const OPEN_DIALOG_RECIBO = 'OPEN_DIALOG_RECIBO';\r\nexport const CLOSE_DIALOG_RECIBO = 'CLOSE_DIALOG_RECIBO';\r\nexport const DIALOG_BILL = 'DIALOG_BILL';\r\nexport const DIALOG_BILL_DISABLED = 'DIALOG_BILL_DISABLED';\r\nexport const DIALOG_AUTH = 'DIALOG_AUTH';\r\nexport const DIALOG_CLIENT = 'DIALOG_CLIENT';\r\nexport const DIALOG_NC = 'DIALOG_NC';\r\nexport const DIALOG_PROVIDER = 'DIALOG_PROVIDER';\r\nexport const DIALOG_APPRULE = 'DIALOG_APPRULE';\r\nexport const CLIENT_DETAIL = 'CLIENT_DETAIL';\r\nexport const DIALOG_PURCHASE = 'DIALOG_PURCHASE';\r\nexport const DIALOG_TRASLATE = 'DIALOG_TRASLATE';\r\n\r\nexport const TOOLBAR_ADD = 'TOOLBAR_ADD';\r\nexport const TOOLBAR_REMOVE = 'TOOLBAR_REMOVE';\r\nexport const TOOLBAR_LOAD = 'TOOLBAR_LOAD';","import http from \"./http\";\r\nimport CustomStore from 'devextreme/data/custom_store';\r\nimport toCapital from \"./common\";\r\nimport { catalogsName } from \"../store/consts\";\r\n\r\nconst createProxy = (get = '', insert = '', remove = (id = 0) => '', getById = (id = 0) => '', base='') => ({get, insert, remove, getById, base });\r\nconst createProxyBase = root => createProxy(`${root}/get`, `${root}/post`, id => `${root}/${id}/delete`, id => `${root}/get/${id}`, root)\r\n\r\n\r\n/**\r\n * returna una url despues del prefijo api/catalogsCustom/ \r\n * @param {name} name - nombre de la accion\r\n */\r\nconst createStore = ({ name, active }) => createCustomStore({url : `catalogos/${toCapital(name)}`, active})();\r\n\r\nconst createStoreLocal = ({reload = false, name = required('name'), url = '', active = false }) => {\r\n return {\r\n store: new CustomStore({\r\n key: \"id\",\r\n loadMode: \"raw\",\r\n load: function() {\r\n return new Promise(resolve => {\r\n\r\n let existe = false;\r\n let catalogs = JSON.parse(localStorage.getItem(catalogsName));\r\n\r\n if(!reload){ \r\n \r\n existe = catalogs?.[name]?.length;\r\n \r\n } \r\n \r\n if(existe){ \r\n let arr = catalogs[name];\r\n \r\n let first = arr[0];\r\n \r\n if(first.active && active)\r\n resolve(arr.filter(x => x.active))\r\n else\r\n resolve(arr);\r\n }\r\n else{\r\n\r\n let endPoint = url || `catalogos/${toCapital(name)}`\r\n http(endPoint)\r\n .asGet({active})\r\n .then(r => {\r\n resolve(r);\r\n });\r\n }\r\n\r\n });\r\n }\r\n })\r\n }\r\n}\r\n\r\nconst required = name => new Error(`El parametro ${name} es requerido`);\r\n\r\n\r\n/**\r\n * returna una url despues del prefijo api/catalogsCustom/ \r\n * @param {String} url - nombre de la accion\r\n * @param {Function} myStore - nombre de la accion\r\n */\r\nconst createCustomStore = ({url, active = false}) => myStore => {\r\n\r\n return {\r\n store: new CustomStore({\r\n key: \"id\",\r\n loadMode: \"raw\",\r\n load: function() {\r\n return new Promise(resolve => {\r\n http(url)\r\n .asGet({active})\r\n .then(r => resolve(typeof myStore == 'function' ? myStore(r) : r))\r\n });\r\n }\r\n })\r\n }\r\n\r\n}\r\n\r\nexport { createProxy, createProxyBase, createStore, createStoreLocal, createCustomStore, required };","import { createProxy, createProxyBase } from \"./proxy\";\r\n\r\nconst uri = { \r\n authorizations : createProxyBase('authorizations'), \r\n areas : createProxyBase('areas'), \r\n bills : createProxyBase('bills'), \r\n prebills : createProxyBase('prebills'), \r\n clients : createProxyBase('clients'), \r\n cuts : createProxyBase('cuts'), \r\n compras: createProxyBase('purchases'), \r\n movements: createProxyBase('movements'), \r\n providers : createProxyBase('providers'), \r\n estados: createProxyBase('estados'),\r\n file: createProxy('', 'percapitas/post/file'),\r\n fileRates: createProxy('', 'rates/post/file'),\r\n inPutProducts: createProxyBase('inPutProducts'), \r\n outPutProducts: createProxyBase('outPutProducts'), \r\n traslates: createProxyBase('traslates'), \r\n products: createProxyBase('products'),\r\n roles:createProxyBase('roles'),\r\n users:createProxyBase('users'),\r\n rates:createProxyBase('rates'),\r\n receivables: createProxyBase('receivables'),\r\n vendors: createProxyBase('vendors'),\r\n comissions: createProxyBase('Comissions'),\r\n areaProducts : areaId => createProxyBase(`area/${areaId}/products`) ,\r\n areaProductConvert : areaId => createProxyBase(`area/${areaId}/products/convert`),\r\n dashboard: createProxyBase('dashboard'),\r\n};\r\n\r\nuri.resources= roleId => `roles/${roleId}/resources`;\r\nuri.products.getByArea = areaId => `products/getbyarea/${areaId}`;\r\nuri.products.getByAreaGrid = areaId => `products/getbyarea/${areaId}/grid`;\r\nuri.clients.asCatalog = 'clients/asCatalog';\r\n\r\nuri.receivables.byBill = billId =>`receivables/bill/get/${billId}`;\r\nuri.new_catalog = `catalogos/new-catalog`;\r\n\r\nuri.account = 'account/auth';\r\nuri.changepassword = 'account/changepassword';\r\nuri.resetPassword = 'account/resetpassword';\r\n\r\n\r\nexport const routeReset = props => props.history.push({ pathname : '/app/navig' }, { returnUrl: props.location.pathname }); \r\n\r\n\r\nexport default uri;","import http from \"../utils/http\"\r\nimport uri from \"../utils/uri\"\r\n\r\nconst tokenName = 'token';\r\nconst _user = 'user';\r\n\r\n/**\r\n * Logea un usuario y guarda el token\r\n */\r\nconst login = user => http(uri.account).asPost(user).then(resp => setToken(resp));\r\n\r\n\r\nconst changePassword = user => http(uri.changepassword).asPost(user);\r\n\r\nconst resetPassword = user => http(uri.resetPassword).asPost(user);\r\n/**\r\n * Eliminar el token guardado en memoria\r\n */\r\nconst logout = () => {\r\n\r\n localStorage.removeItem(tokenName);\r\n localStorage.removeItem(_user);\r\n \r\n} \r\n\r\n/**\r\n * Guarda el token en memoria\r\n * @param {string} token - token que se va guardar\r\n * @return {object} - Objeto del usuario\r\n */\r\nconst setToken = resp => \r\n{\r\n localStorage.setItem(tokenName, resp.token);\r\n localStorage.setItem(_user, JSON.stringify(buildUser(resp)));\r\n\r\n return resp;\r\n}\r\n\r\nconst buildUser = ({token, ...rest}) => rest;\r\n\r\n/**\r\n * Retorna el token guardado en memoria\r\n * @return {string} token\r\n */\r\nconst getToken = () => localStorage.getItem(tokenName);\r\n\r\n/**\r\n * Retorna el usuario guardado en memoria\r\n * @return {{ resources : []}} token\r\n */\r\nconst getUser = () => JSON.parse(localStorage.getItem(_user));\r\n\r\n/**\r\n * Verificar si el usuario esta logeado\r\n * @return {boolean}\r\n */\r\nconst isLogged = () => getToken() != null;\r\n\r\nexport const userService = {\r\n login,\r\n changePassword,\r\n resetPassword,\r\n logout,\r\n getToken,\r\n getUser,\r\n isLogged\r\n}","import { userService } from \"../services/user.service\";\r\n\r\nconst root = process.env.PUBLIC_URL;\r\nconst path = `${root}/api/`;\r\n\r\nconst http = url => {\r\n\r\n let base = (url, properties) => {\r\n \r\n return new Promise((resolve, reject) => {\r\n\r\n let token = userService.getToken();\r\n\r\n let headers = {};\r\n\r\n if(token) headers = { 'Authorization': `Bearer ${token}`}\r\n\r\n fetch(`${url}`, {...properties, headers})\r\n .then(processResponse)\r\n .catch(error => reject(error))\r\n .then(response => resolve(response));\r\n\r\n })\r\n };\r\n\r\n let getParameters = function(data) {\r\n let queryString = '';\r\n\r\n if (data) {\r\n let parameters = '';\r\n\r\n if (typeof data == 'function')\r\n parameters = data();\r\n else\r\n parameters = data;\r\n\r\n for (const prop in parameters) {\r\n queryString += `&${prop}=${parameters[prop]}`\r\n }\r\n\r\n }\r\n\r\n return queryString.length > 0 ? queryString.replace('&', '?') : queryString;\r\n\r\n };\r\n\r\n const _url = `${path}${url}`;\r\n\r\n return {\r\n \r\n asGet: (data = null) => {\r\n\r\n let params = getParameters(data);\r\n\r\n return base(`${_url}${params}`, { method: 'GET' });\r\n\r\n },\r\n asPost: data => {\r\n return new Promise((resolve, reject) => {\r\n fetch(_url, {\r\n method: 'POST',\r\n body: data ? JSON.stringify(data) : null,\r\n headers: {\r\n \"Content-Type\": \"application/json;charset=UTF-8\",\r\n 'Authorization': 'Bearer ' + userService.getToken()\r\n }\r\n })\r\n .then(processResponse)\r\n .catch(error => reject(error))\r\n .then(data => resolve(data));\r\n })\r\n },\r\n asDelete: (data = null) => {\r\n let params = getParameters(data);\r\n\r\n return base(`${_url}${params}`, { method: 'DELETE', headers: { \r\n 'Authorization': 'Bearer ' + userService.getToken()\r\n }});\r\n\r\n },\r\n asFile: (file = null) => {\r\n return new Promise((resolve, reject) => {\r\n let formData = new FormData();\r\n formData.append('file', file);\r\n fetch(_url, {\r\n method: 'POST',\r\n headers: {\r\n 'Authorization': 'Bearer ' + userService.getToken()\r\n },\r\n body: formData\r\n })\r\n .then(processResponse)\r\n .then(response => resolve(response))\r\n .catch(error => reject(error));\r\n })\r\n },\r\n asGetFile : () => {\r\n\r\n let token = userService.getToken();\r\n\r\n return new Promise((resolve, reject) => {\r\n fetch(`${_url}`, {headers: !token ? {} : { 'Authorization': `Bearer ${token}`}})\r\n .then(resp => resp.blob())\r\n .catch(error => reject(error))\r\n .then(response => resolve(response));\r\n })\r\n }\r\n }\r\n}\r\n\r\nconst processResponse = resp => {\r\n\r\n return new Promise((resolve, reject) => {\r\n\r\n if (resp.status == httpStatus.badRequest)\r\n resp.text().then(err => reject(err));\r\n\r\n if (resp.status == httpStatus.internalServerError)\r\n resp.text().then(err => reject('Error interno en la aplicacion'));\r\n\r\n if (resp.status == httpStatus.unauthorized)\r\n {\r\n window.location.href = '/account/login';\r\n }\r\n\r\n if (resp.status == httpStatus.ok)\r\n resp.json().then(data => resolve(data))\r\n\r\n })\r\n\r\n}\r\n\r\nconst httpStatus = {\r\n ok : 200,\r\n badRequest : 400,\r\n unauthorized : 401,\r\n internalServerError : 500\r\n}\r\n\r\nexport { path };\r\nexport default http;","import React, { useEffect, useState} from 'react';\r\nimport http from '../utils/http';\r\n\r\nconst useCardInfo = ({ url }) => {\r\n\r\n const [cardInfo, setCardInfo] = useState({ value:0, percent:0 });\r\n const [ loading, setLoading ] = useState(true);\r\n\r\n const callApi = async () => {\r\n\r\n setLoading(true);\r\n\r\n const data = await http(url).asGet(); \r\n \r\n setCardInfo(data);\r\n\r\n setLoading(false);\r\n\r\n }\r\n\r\n useEffect(() => {\r\n\r\n callApi();\r\n\r\n }, []);\r\n\r\n return {\r\n loading,\r\n cardInfo\r\n }\r\n}\r\n\r\nexport default useCardInfo;\r\n","import React from 'react';\r\nimport useCardInfo from '../../hooks/useCardInfo';\r\nimport uri from '../../utils/uri';\r\nimport { formatToMoneyNumber } from '../../utils/common';\r\n\r\nconst Cardinfo = ({ title, icon, _path }) => {\r\n\r\n const { loading, cardInfo } = useCardInfo({ url: uri.dashboard.base+'/'+_path });\r\n\r\n const { value, rate: percent } = cardInfo;\r\n\r\n return (\r\n
\r\n
\r\n
\r\n
\r\n
\r\n {title}\r\n
\r\n
\r\n {value}\r\n
\r\n
\r\n
\r\n
\r\n \r\n
\r\n
\r\n
\r\n
\r\n
\r\n C$ {formatToMoneyNumber(percent)}\r\n Último mes\r\n
\r\n
\r\n
\r\n
\r\n );\r\n}\r\n\r\nexport default Cardinfo;\r\n","import { useState,useEffect } from \"react\";\r\nimport http from \"../utils/http\";\r\nimport uri from \"../utils/uri\";\r\n\r\n\r\nconst useApi = ({ url }) => {\r\n \r\n const [ isLoading, setIsLoading] = useState(true);\r\n const [ data, setData] = useState([]); \r\n\r\n const callApi = async () => {\r\n\r\n const data = await http(url).asGet();\r\n setData(data);\r\n setIsLoading(false);\r\n\r\n }\r\n\r\n \r\n useEffect(() => {\r\n callApi();\r\n }, [url]);\r\n\r\n return {\r\n data, \r\n isLoading\r\n }\r\n}\r\n\r\nexport default useApi;","import React from 'react';\r\nimport { Grid, ArgumentAxis,\r\n Chart, Series, CommonSeriesSettings, Legend, ValueAxis, Label, Export, Tooltip, Title, Subtitle, Margin\r\n} from 'devextreme-react/chart';\r\nimport useApi from '../../hooks/useApi';\r\nimport uri from '../../utils/uri';\r\nimport { toMoney } from '../../utils/common';\r\n\r\nconst SalesMonthly = () => {\r\n\r\n const { data } = useApi({ url: uri.dashboard.base + '/get-sales-monthly' });\r\n\r\n const customizeTooltip = (arg) => {\r\n return { text: `${arg.seriesName} total: ${toMoney({value: arg.valueText}) }` };\r\n }\r\n\r\n return (\r\n \r\n \r\n \r\n \r\n\r\n \r\n \r\n \r\n \r\n \r\n \r\n );\r\n}\r\n\r\nexport default SalesMonthly;\r\n","import React from 'react';\r\nimport { Grid, ArgumentAxis,\r\n Chart, Series, CommonSeriesSettings, Legend, ValueAxis, Label, Export, Tooltip, Title, Subtitle, Margin\r\n} from 'devextreme-react/chart';\r\nimport useApi from '../../hooks/useApi';\r\nimport uri from '../../utils/uri';\r\nimport PieChart, {\r\n Legend as PieLegend,\r\n Series as PieSeries,\r\n Tooltip as PieTooltip,\r\n Format as PieFormat,\r\n Label as PieLabel,\r\n Connector,\r\n Export as PieExport,\r\n} from 'devextreme-react/pie-chart';\r\nimport { formatToMoneyNumber } from '../../utils/common';\r\nconst CategorySales = () => {\r\n\r\n const { data } = useApi({ url: uri.dashboard.base + '/get-sales-family' });\r\n\r\n const customizeTooltip2 = arg => {\r\n return { text: `${arg.valueText} - ${(arg.percent * 100).toFixed(2)}%`, }\r\n }\r\n\r\n return (\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n );\r\n}\r\n\r\nexport default CategorySales;\r\n","import React from 'react';\r\nimport { Grid, ArgumentAxis, Chart, Series, CommonSeriesSettings, Legend, Export, Tooltip, Title, Subtitle, Margin\r\n} from 'devextreme-react/chart';\r\nimport useApi from '../../hooks/useApi';\r\nimport uri from '../../utils/uri';\r\nimport moment from 'moment';\r\n\r\nconst SalesDaily = () => {\r\n\r\n const { data } = useApi({ url: uri.dashboard.base + '/get-sales-daily' });\r\n\r\n const users = data?.length ? Object.keys(data[0]).filter(x => x != 'date') : [];\r\n\r\n const deleteDate = ({ date, ...rest}) => rest;\r\n\r\n const result = data.map((item) => {\r\n\r\n item.day = moment(item.date).format('dddd');\r\n\r\n return deleteDate(item);\r\n\r\n });\r\n\r\n return (\r\n \r\n \r\n {\r\n users.filter(x => x != 'day').map((user) => )\r\n\r\n } \r\n\r\n \r\n \r\n \r\n \r\n\r\n \r\n \r\n <Subtitle text=\"Últimos 6 dias\" />\r\n \r\n \r\n \r\n );\r\n}\r\n\r\nexport default SalesDaily;\r\n","import React from 'react';\r\n\r\nimport { Button } from 'devextreme-react/button';\r\n\r\nimport Cardinfo from './CardInfo';\r\nimport './index.css';\r\nimport SalesMonthly from './SalesMonthly';\r\nimport CategorySales from './CategorySales';\r\nimport SalesDaily from './SalesDaily';\r\n\r\nconst Dashboard = (props) => {\r\n\r\n const navegateTo = (path) => {\r\n props.history.push({ pathname: path });\r\n }\r\n\r\n return (\r\n
\r\n
\r\n
\r\n
\r\n
\r\n
\r\n
\r\n
\r\n
\r\n \r\n
\r\n
\r\n \r\n
\r\n
\r\n
\r\n
\r\n \r\n
\r\n
\r\n \r\n
\r\n
\r\n
\r\n
\r\n
\r\n \r\n
\r\n
\r\n
\r\n
\r\n
\r\n
\r\n \r\n
\r\n
\r\n
\r\n
\r\n \r\n
\r\n
\r\n
\r\n
\r\n );\r\n}\r\n\r\nexport default Dashboard;\r\n","\r\nimport React from 'react';\r\nimport { Link } from 'react-router-dom';\r\nimport { logoHome,logoHome150, cart, file, book,cotizacion, ventas, bills, clients, clients2 } from '../../data/logo';\r\nimport Title from '../shared/Title';\r\nimport Dashboard from './Dashboard';\r\n\r\nexport default function HomePage(props) {\r\n \r\n return (\r\n
\r\n
\r\n\r\n \r\n {logoHome150}\r\n <div className='center center2col'>\r\n <div className='d-grid'>\r\n <Link className='d-grid' to={'app/mobile/cotizaciones'}> \r\n {cotizacion}\r\n Cotizaciones\r\n </Link>\r\n </div>\r\n <div className='d-grid'>\r\n <Link className='d-grid' to={'app/mobile/pre-ventas'}> \r\n {ventas}\r\n Preventas\r\n </Link>\r\n </div>\r\n <div className=\"d-grid\">\r\n <Link className='d-grid' to={'app/facturas'}> \r\n {bills}\r\n Facturas\r\n </Link>\r\n </div>\r\n <div className='d-grid'>\r\n <Link className='d-grid' to={'app/clientes/mobile/pending'}> \r\n {clients}\r\n Cta por cobrar\r\n </Link>\r\n </div> \r\n <div className='d-grid'>\r\n <Link className='d-grid' to={'app/mobile/clientes'}> \r\n {clients2}\r\n Clientes\r\n </Link>\r\n </div> \r\n <div className='d-grid'>\r\n <Link className='d-grid' to={'app/inventario/reportes/ingresos'}> \r\n {cart}\r\n Últ Ingresos\r\n </Link>\r\n </div> \r\n </div> \r\n \r\n </header>\r\n <header className=\"site__header d-lg-block d-none\">\r\n\r\n <Title title=\"Inicio\" />\r\n <Dashboard {...props}/>\r\n\r\n </header> \r\n </div>\r\n )\r\n}","// eslint-disable-next-line import/prefer-default-export\r\nexport const GET_APPINFO = 'GET_APPINFO';\r\nexport const UPDATE_APPINFO = 'UPDATE_APPINFO';","import { GET_APPINFO, UPDATE_APPINFO } from './appActionTypes';\r\nimport { createAction } from 'redux-actions';\r\nimport http from '../../utils/http';\r\n\r\n\r\nconst getAppInfoSuccess = createAction(GET_APPINFO);\r\nexport const getAppInfo = () => dispatch => {\r\n http('about/get-info').asGet()\r\n .then(resp => dispatch(getAppInfoSuccess(resp)))\r\n .catch(error => error);\r\n\r\n};\r\n\r\nconst setAppInfoSuccess = createAction(UPDATE_APPINFO);\r\nexport const setAppInfo = data => async(dispatch) => {\r\n return new Promise((resolve, reject) => {\r\n http('about/set-info').asPost(data)\r\n .then(resp => {\r\n dispatch(setAppInfoSuccess(setData(data, resp)));\r\n resolve();\r\n }).catch(err => {\r\n reject(err);\r\n });\r\n });\r\n};\r\n\r\nconst setData = (currentData, newData) => {\r\n let result = {...currentData, ...exluyeVersion(newData) };\r\n return result;\r\n}\r\n\r\nconst exluyeVersion = ({ version, ...resp }) => resp;","// react\r\nimport React, { Component } from 'react';\r\nimport { connect } from 'react-redux';\r\nimport { getAppInfo } from '../../store/app/appActions';\r\nimport { getUser } from '../../store/user/userActions';\r\n\r\nclass Footer extends Component {\r\n constructor(props) {\r\n super(props); \r\n }\r\n\r\n componentDidMount() {\r\n let { getAppInfo, getUser } = this.props;\r\n getAppInfo(); \r\n getUser();\r\n }\r\n\r\n \r\n \r\n render() {\r\n \r\n let { app, user } = this.props;\r\n\r\n const isPre = app.version.includes('_pre');\r\n\r\n const classPre = isPre ? 'color-red' : '';\r\n\r\n return (\r\n <div className=\"site-footer\">\r\n <div className=\"container\">\r\n\r\n <div className=\"site-footer__bottom\">\r\n <div className={`site-footer__copyright ${classPre}`}>\r\n {app.name}\r\n {' '}\r\n — v<i>{app.version}</i>\r\n </div> \r\n <div className=\"site-footer__payments\">\r\n <i className=\"dx-icon-user\"></i> {user.username} <i className=\"dx-icon-map\"></i> {user.area}\r\n </div> \r\n </div>\r\n </div>\r\n </div>\r\n )\r\n }\r\n}\r\n\r\nconst mapStateToProps = (state) => ({\r\n app: state.appInfo,\r\n user : state.user\r\n});\r\n\r\nconst mapDispatchToPros = ({\r\n getAppInfo,\r\n getUser,\r\n});\r\n\r\nexport default connect(mapStateToProps, mapDispatchToPros)(Footer);\r\n","import { GET_USER, UPDATE_USER } from './userActionTypes';\r\n\r\n\r\n// eslint-disable-next-line import/prefer-default-export\r\nexport const getUser = () => ({\r\n type: GET_USER\r\n});\r\n\r\nexport const updateUser = user => ({\r\n type: UPDATE_USER,\r\n payload: user\r\n});","// eslint-disable-next-line import/prefer-default-export\r\nexport const GET_USER = 'GET_USER';\r\nexport const UPDATE_USER = 'UPDATE_USER';","import Footer from './Footer';\r\n\r\nexport default Footer;\r\n","import { catalogsName, GET_CATALOGS } from '../consts';\r\nimport { createAction, handleActions } from 'redux-actions';\r\nimport http from '../../utils/http';\r\n\r\nconst getCatalogSuccess = createAction(GET_CATALOGS);\r\nexport const getCatalogs = () => dispatch => {\r\n http('catalogos/get-catalog-gerenals').asGet()\r\n .then(resp => {\r\n localStorage.setItem(catalogsName, JSON.stringify(resp))\r\n dispatch(getCatalogSuccess(resp))\r\n })\r\n .catch(error => error);\r\n\r\n};\r\n\r\nconst catalog = { \r\n \r\n}\r\n\r\nexport default handleActions({ \r\n [GET_CATALOGS]: (state, action) => {\r\n return action.payload\r\n }\r\n}, catalog)","// react\r\nimport React from 'react';\r\n\r\n// third-party\r\nimport PropTypes from 'prop-types';\r\nimport { Link } from 'react-router-dom';\r\n\r\n\r\nfunction AppLink(props) {\r\n const { external, children, ...otherProps } = props;\r\n let link;\r\n\r\n if (external) {\r\n const {\r\n to,\r\n replace,\r\n innerRef,\r\n ...linkProps\r\n } = otherProps;\r\n\r\n link = <a href={to} {...linkProps}>{children}</a>;\r\n } else {\r\n link = <Link to={otherProps?.to||'/'} {...otherProps}>{children}</Link>;\r\n }\r\n\r\n return link;\r\n}\r\n\r\nAppLink.propTypes = {\r\n to: PropTypes.oneOfType([\r\n PropTypes.string,\r\n PropTypes.shape({\r\n pathname: PropTypes.string,\r\n search: PropTypes.string,\r\n hash: PropTypes.string,\r\n state: PropTypes.any,\r\n }),\r\n ]),\r\n replace: PropTypes.bool,\r\n innerRef: PropTypes.oneOfType([\r\n PropTypes.func,\r\n PropTypes.object,\r\n ]),\r\n external: PropTypes.bool,\r\n};\r\nAppLink.defaultProps = {\r\n external: false,\r\n};\r\n\r\nexport default AppLink;\r\n","// react\r\nimport React from 'react';\r\n\r\n// third-party\r\nimport classNames from 'classnames';\r\nimport PropTypes from 'prop-types';\r\nimport { Link } from 'react-router-dom';\r\n\r\n\r\nfunction MegamenuLinks(props) {\r\n const { links, depth } = props;\r\n\r\n const linksList = links.map((link, index) => {\r\n let title = null;\r\n let subLinks = null;\r\n\r\n if (link.title) {\r\n title = <Link to={link.url}>{link.title}</Link>;\r\n }\r\n\r\n if (link.links && link.links.length) {\r\n subLinks = <MegamenuLinks links={link.links} depth={depth + 1} />;\r\n }\r\n\r\n const classes = classNames('megamenu__item', {\r\n 'megamenu__item--with-submenu': subLinks,\r\n });\r\n\r\n return (\r\n <li key={index} className={classes}>\r\n {title}\r\n {subLinks}\r\n </li>\r\n );\r\n });\r\n\r\n return (\r\n <ul className={`megamenu__links megamenu__links--level--${depth}`}>\r\n {linksList}\r\n </ul>\r\n );\r\n}\r\n\r\nMegamenuLinks.propTypes = {\r\n links: PropTypes.array,\r\n depth: PropTypes.number,\r\n};\r\n\r\nMegamenuLinks.defaultProps = {\r\n depth: 0,\r\n};\r\n\r\nexport default MegamenuLinks;\r\n","// react\r\nimport React from 'react';\r\n\r\n// third-party\r\nimport PropTypes from 'prop-types';\r\n\r\n// application\r\nimport MegamenuLinks from './MegamenuLinks';\r\n\r\n\r\nfunction Megamenu(props) {\r\n const { menu, location } = props;\r\n\r\n if (!menu) {\r\n return [];\r\n }\r\n\r\n const menuStyle = {\r\n backgroundImage: menu.image ? `url('${menu.image}')` : '',\r\n };\r\n\r\n const columns = menu.columns.map((column, index) => (\r\n <div key={index} className={`col-${column.size}`}>\r\n <MegamenuLinks links={column.links} />\r\n </div>\r\n ));\r\n\r\n return (\r\n <div className={`megamenu megamenu--${location}`} style={menuStyle}>\r\n <div className=\"row\">\r\n {columns}\r\n </div>\r\n </div>\r\n );\r\n}\r\n\r\nMegamenu.propTypes = {\r\n /** menu object (required) */\r\n menu: PropTypes.object,\r\n /** one of ['nav-links', 'department'] (default: 'nav-links') */\r\n location: PropTypes.oneOf(['nav-links', 'department']),\r\n};\r\n\r\nMegamenu.defaultProps = {\r\n location: 'nav-links',\r\n};\r\n\r\nexport default Megamenu;\r\n","function _extends() { _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }\n\nfunction _objectWithoutProperties(source, excluded) { if (source == null) return {}; var target = _objectWithoutPropertiesLoose(source, excluded); var key, i; if (Object.getOwnPropertySymbols) { var sourceSymbolKeys = Object.getOwnPropertySymbols(source); for (i = 0; i < sourceSymbolKeys.length; i++) { key = sourceSymbolKeys[i]; if (excluded.indexOf(key) >= 0) continue; if (!Object.prototype.propertyIsEnumerable.call(source, key)) continue; target[key] = source[key]; } } return target; }\n\nfunction _objectWithoutPropertiesLoose(source, excluded) { if (source == null) return {}; var target = {}; var sourceKeys = Object.keys(source); var key, i; for (i = 0; i < sourceKeys.length; i++) { key = sourceKeys[i]; if (excluded.indexOf(key) >= 0) continue; target[key] = source[key]; } return target; }\n\nimport React from \"react\";\n\nvar _ref2 = /*#__PURE__*/React.createElement(\"path\", {\n d: \"M0.3,0.3c0.4-0.4,1-0.4,1.3,0l1.9,2l1.9-2c0.4-0.4,1-0.4,1.3,0c0.4,0.4,0.4,0.9,0,1.3L3.5,5L0.3,1.6 C-0.1,1.2-0.1,0.6,0.3,0.3z\"\n});\n\nvar SvgArrowRoundedDown7X5 = function SvgArrowRoundedDown7X5(_ref) {\n var svgRef = _ref.svgRef,\n title = _ref.title,\n props = _objectWithoutProperties(_ref, [\"svgRef\", \"title\"]);\n\n return /*#__PURE__*/React.createElement(\"svg\", _extends({\n width: 7,\n height: 5,\n ref: svgRef\n }, props), title ? /*#__PURE__*/React.createElement(\"title\", null, title) : null, _ref2);\n};\n\nvar ForwardRef = /*#__PURE__*/React.forwardRef(function (props, ref) {\n return /*#__PURE__*/React.createElement(SvgArrowRoundedDown7X5, _extends({\n svgRef: ref\n }, props));\n});\nexport default __webpack_public_path__ + \"static/media/arrow-rounded-down-7x5.437746a0.svg\";\nexport { ForwardRef as ReactComponent };","function _extends() { _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }\n\nfunction _objectWithoutProperties(source, excluded) { if (source == null) return {}; var target = _objectWithoutPropertiesLoose(source, excluded); var key, i; if (Object.getOwnPropertySymbols) { var sourceSymbolKeys = Object.getOwnPropertySymbols(source); for (i = 0; i < sourceSymbolKeys.length; i++) { key = sourceSymbolKeys[i]; if (excluded.indexOf(key) >= 0) continue; if (!Object.prototype.propertyIsEnumerable.call(source, key)) continue; target[key] = source[key]; } } return target; }\n\nfunction _objectWithoutPropertiesLoose(source, excluded) { if (source == null) return {}; var target = {}; var sourceKeys = Object.keys(source); var key, i; for (i = 0; i < sourceKeys.length; i++) { key = sourceKeys[i]; if (excluded.indexOf(key) >= 0) continue; target[key] = source[key]; } return target; }\n\nimport React from \"react\";\n\nvar _ref2 = /*#__PURE__*/React.createElement(\"path\", {\n d: \"M0.2,0.4c0.4-0.4,1-0.5,1.4-0.1l2.9,3l2.9-3c0.4-0.4,1.1-0.4,1.4,0.1c0.3,0.4,0.3,0.9-0.1,1.3L4.5,6L0.3,1.6C-0.1,1.3-0.1,0.7,0.2,0.4z\"\n});\n\nvar SvgArrowRoundedDown9X6 = function SvgArrowRoundedDown9X6(_ref) {\n var svgRef = _ref.svgRef,\n title = _ref.title,\n props = _objectWithoutProperties(_ref, [\"svgRef\", \"title\"]);\n\n return /*#__PURE__*/React.createElement(\"svg\", _extends({\n width: 9,\n height: 6,\n ref: svgRef\n }, props), title ? /*#__PURE__*/React.createElement(\"title\", null, title) : null, _ref2);\n};\n\nvar ForwardRef = /*#__PURE__*/React.forwardRef(function (props, ref) {\n return /*#__PURE__*/React.createElement(SvgArrowRoundedDown9X6, _extends({\n svgRef: ref\n }, props));\n});\nexport default __webpack_public_path__ + \"static/media/arrow-rounded-down-9x6.6c48d4a4.svg\";\nexport { ForwardRef as ReactComponent };","function _extends() { _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }\n\nfunction _objectWithoutProperties(source, excluded) { if (source == null) return {}; var target = _objectWithoutPropertiesLoose(source, excluded); var key, i; if (Object.getOwnPropertySymbols) { var sourceSymbolKeys = Object.getOwnPropertySymbols(source); for (i = 0; i < sourceSymbolKeys.length; i++) { key = sourceSymbolKeys[i]; if (excluded.indexOf(key) >= 0) continue; if (!Object.prototype.propertyIsEnumerable.call(source, key)) continue; target[key] = source[key]; } } return target; }\n\nfunction _objectWithoutPropertiesLoose(source, excluded) { if (source == null) return {}; var target = {}; var sourceKeys = Object.keys(source); var key, i; for (i = 0; i < sourceKeys.length; i++) { key = sourceKeys[i]; if (excluded.indexOf(key) >= 0) continue; target[key] = source[key]; } return target; }\n\nimport React from \"react\";\n\nvar _ref2 = /*#__PURE__*/React.createElement(\"path\", {\n d: \"M0.286,0.273 L0.286,0.273 C-0.070,0.629 -0.075,1.204 0.276,1.565 L5.516,6.993 L10.757,1.565 C11.108,1.204 11.103,0.629 10.747,0.273 L10.747,0.273 C10.385,-0.089 9.796,-0.086 9.437,0.279 L5.516,4.296 L1.596,0.279 C1.237,-0.086 0.648,-0.089 0.286,0.273 Z\"\n});\n\nvar SvgArrowRoundedDown12X7 = function SvgArrowRoundedDown12X7(_ref) {\n var svgRef = _ref.svgRef,\n title = _ref.title,\n props = _objectWithoutProperties(_ref, [\"svgRef\", \"title\"]);\n\n return /*#__PURE__*/React.createElement(\"svg\", _extends({\n width: \"12px\",\n height: \"7px\",\n ref: svgRef\n }, props), title ? /*#__PURE__*/React.createElement(\"title\", null, title) : null, _ref2);\n};\n\nvar ForwardRef = /*#__PURE__*/React.forwardRef(function (props, ref) {\n return /*#__PURE__*/React.createElement(SvgArrowRoundedDown12X7, _extends({\n svgRef: ref\n }, props));\n});\nexport default __webpack_public_path__ + \"static/media/arrow-rounded-down-12x7.64456a81.svg\";\nexport { ForwardRef as ReactComponent };","function _extends() { _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }\n\nfunction _objectWithoutProperties(source, excluded) { if (source == null) return {}; var target = _objectWithoutPropertiesLoose(source, excluded); var key, i; if (Object.getOwnPropertySymbols) { var sourceSymbolKeys = Object.getOwnPropertySymbols(source); for (i = 0; i < sourceSymbolKeys.length; i++) { key = sourceSymbolKeys[i]; if (excluded.indexOf(key) >= 0) continue; if (!Object.prototype.propertyIsEnumerable.call(source, key)) continue; target[key] = source[key]; } } return target; }\n\nfunction _objectWithoutPropertiesLoose(source, excluded) { if (source == null) return {}; var target = {}; var sourceKeys = Object.keys(source); var key, i; for (i = 0; i < sourceKeys.length; i++) { key = sourceKeys[i]; if (excluded.indexOf(key) >= 0) continue; target[key] = source[key]; } return target; }\n\nimport React from \"react\";\n\nvar _ref2 = /*#__PURE__*/React.createElement(\"path\", {\n d: \"M5.7,8.7L5.7,8.7c-0.4,0.4-0.9,0.4-1.3,0L0,4.5l4.4-4.2c0.4-0.4,0.9-0.3,1.3,0l0,0c0.4,0.4,0.4,1,0,1.3l-3,2.9l3,2.9 C6.1,7.8,6.1,8.4,5.7,8.7z\"\n});\n\nvar SvgArrowRoundedLeft6X9 = function SvgArrowRoundedLeft6X9(_ref) {\n var svgRef = _ref.svgRef,\n title = _ref.title,\n props = _objectWithoutProperties(_ref, [\"svgRef\", \"title\"]);\n\n return /*#__PURE__*/React.createElement(\"svg\", _extends({\n width: 6,\n height: 9,\n ref: svgRef\n }, props), title ? /*#__PURE__*/React.createElement(\"title\", null, title) : null, _ref2);\n};\n\nvar ForwardRef = /*#__PURE__*/React.forwardRef(function (props, ref) {\n return /*#__PURE__*/React.createElement(SvgArrowRoundedLeft6X9, _extends({\n svgRef: ref\n }, props));\n});\nexport default __webpack_public_path__ + \"static/media/arrow-rounded-left-6x9.08e1221c.svg\";\nexport { ForwardRef as ReactComponent };","function _extends() { _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }\n\nfunction _objectWithoutProperties(source, excluded) { if (source == null) return {}; var target = _objectWithoutPropertiesLoose(source, excluded); var key, i; if (Object.getOwnPropertySymbols) { var sourceSymbolKeys = Object.getOwnPropertySymbols(source); for (i = 0; i < sourceSymbolKeys.length; i++) { key = sourceSymbolKeys[i]; if (excluded.indexOf(key) >= 0) continue; if (!Object.prototype.propertyIsEnumerable.call(source, key)) continue; target[key] = source[key]; } } return target; }\n\nfunction _objectWithoutPropertiesLoose(source, excluded) { if (source == null) return {}; var target = {}; var sourceKeys = Object.keys(source); var key, i; for (i = 0; i < sourceKeys.length; i++) { key = sourceKeys[i]; if (excluded.indexOf(key) >= 0) continue; target[key] = source[key]; } return target; }\n\nimport React from \"react\";\n\nvar _ref2 = /*#__PURE__*/React.createElement(\"path\", {\n d: \"M6.7,0.3L6.7,0.3c-0.4-0.4-0.9-0.4-1.3,0L0,5.5l5.4,5.2c0.4,0.4,0.9,0.3,1.3,0l0,0c0.4-0.4,0.4-1,0-1.3l-4-3.9l4-3.9 C7.1,1.2,7.1,0.6,6.7,0.3z\"\n});\n\nvar SvgArrowRoundedLeft7X11 = function SvgArrowRoundedLeft7X11(_ref) {\n var svgRef = _ref.svgRef,\n title = _ref.title,\n props = _objectWithoutProperties(_ref, [\"svgRef\", \"title\"]);\n\n return /*#__PURE__*/React.createElement(\"svg\", _extends({\n width: 7,\n height: 11,\n ref: svgRef\n }, props), title ? /*#__PURE__*/React.createElement(\"title\", null, title) : null, _ref2);\n};\n\nvar ForwardRef = /*#__PURE__*/React.forwardRef(function (props, ref) {\n return /*#__PURE__*/React.createElement(SvgArrowRoundedLeft7X11, _extends({\n svgRef: ref\n }, props));\n});\nexport default __webpack_public_path__ + \"static/media/arrow-rounded-left-7x11.8099ab29.svg\";\nexport { ForwardRef as ReactComponent };","function _extends() { _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }\n\nfunction _objectWithoutProperties(source, excluded) { if (source == null) return {}; var target = _objectWithoutPropertiesLoose(source, excluded); var key, i; if (Object.getOwnPropertySymbols) { var sourceSymbolKeys = Object.getOwnPropertySymbols(source); for (i = 0; i < sourceSymbolKeys.length; i++) { key = sourceSymbolKeys[i]; if (excluded.indexOf(key) >= 0) continue; if (!Object.prototype.propertyIsEnumerable.call(source, key)) continue; target[key] = source[key]; } } return target; }\n\nfunction _objectWithoutPropertiesLoose(source, excluded) { if (source == null) return {}; var target = {}; var sourceKeys = Object.keys(source); var key, i; for (i = 0; i < sourceKeys.length; i++) { key = sourceKeys[i]; if (excluded.indexOf(key) >= 0) continue; target[key] = source[key]; } return target; }\n\nimport React from \"react\";\n\nvar _ref2 = /*#__PURE__*/React.createElement(\"path\", {\n d: \"M7.7,12.7L7.7,12.7c-0.4,0.4-0.9,0.4-1.3,0L0,6.5l6.4-6.2c0.4-0.4,0.9-0.3,1.3,0l0,0c0.4,0.4,0.4,1,0,1.3l-5,4.9l5,4.9 C8.1,11.8,8.1,12.4,7.7,12.7z\"\n});\n\nvar SvgArrowRoundedLeft8X13 = function SvgArrowRoundedLeft8X13(_ref) {\n var svgRef = _ref.svgRef,\n title = _ref.title,\n props = _objectWithoutProperties(_ref, [\"svgRef\", \"title\"]);\n\n return /*#__PURE__*/React.createElement(\"svg\", _extends({\n width: \"8px\",\n height: \"13px\",\n ref: svgRef\n }, props), title ? /*#__PURE__*/React.createElement(\"title\", null, title) : null, _ref2);\n};\n\nvar ForwardRef = /*#__PURE__*/React.forwardRef(function (props, ref) {\n return /*#__PURE__*/React.createElement(SvgArrowRoundedLeft8X13, _extends({\n svgRef: ref\n }, props));\n});\nexport default __webpack_public_path__ + \"static/media/arrow-rounded-left-8x13.369ea40b.svg\";\nexport { ForwardRef as ReactComponent };","function _extends() { _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }\n\nfunction _objectWithoutProperties(source, excluded) { if (source == null) return {}; var target = _objectWithoutPropertiesLoose(source, excluded); var key, i; if (Object.getOwnPropertySymbols) { var sourceSymbolKeys = Object.getOwnPropertySymbols(source); for (i = 0; i < sourceSymbolKeys.length; i++) { key = sourceSymbolKeys[i]; if (excluded.indexOf(key) >= 0) continue; if (!Object.prototype.propertyIsEnumerable.call(source, key)) continue; target[key] = source[key]; } } return target; }\n\nfunction _objectWithoutPropertiesLoose(source, excluded) { if (source == null) return {}; var target = {}; var sourceKeys = Object.keys(source); var key, i; for (i = 0; i < sourceKeys.length; i++) { key = sourceKeys[i]; if (excluded.indexOf(key) >= 0) continue; target[key] = source[key]; } return target; }\n\nimport React from \"react\";\n\nvar _ref2 = /*#__PURE__*/React.createElement(\"path\", {\n d: \"M0.4,8.8c-0.4-0.4-0.5-1-0.1-1.4l3-2.9l-3-2.9c-0.4-0.4-0.4-1.1,0.1-1.4c0.4-0.3,0.9-0.3,1.3,0.1L6,4.5L1.6,8.7C1.3,9.1,0.7,9.1,0.4,8.8z\"\n});\n\nvar SvgArrowRoundedRight6X9 = function SvgArrowRoundedRight6X9(_ref) {\n var svgRef = _ref.svgRef,\n title = _ref.title,\n props = _objectWithoutProperties(_ref, [\"svgRef\", \"title\"]);\n\n return /*#__PURE__*/React.createElement(\"svg\", _extends({\n width: 6,\n height: 9,\n ref: svgRef\n }, props), title ? /*#__PURE__*/React.createElement(\"title\", null, title) : null, _ref2);\n};\n\nvar ForwardRef = /*#__PURE__*/React.forwardRef(function (props, ref) {\n return /*#__PURE__*/React.createElement(SvgArrowRoundedRight6X9, _extends({\n svgRef: ref\n }, props));\n});\nexport default __webpack_public_path__ + \"static/media/arrow-rounded-right-6x9.6f425995.svg\";\nexport { ForwardRef as ReactComponent };","function _extends() { _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }\n\nfunction _objectWithoutProperties(source, excluded) { if (source == null) return {}; var target = _objectWithoutPropertiesLoose(source, excluded); var key, i; if (Object.getOwnPropertySymbols) { var sourceSymbolKeys = Object.getOwnPropertySymbols(source); for (i = 0; i < sourceSymbolKeys.length; i++) { key = sourceSymbolKeys[i]; if (excluded.indexOf(key) >= 0) continue; if (!Object.prototype.propertyIsEnumerable.call(source, key)) continue; target[key] = source[key]; } } return target; }\n\nfunction _objectWithoutPropertiesLoose(source, excluded) { if (source == null) return {}; var target = {}; var sourceKeys = Object.keys(source); var key, i; for (i = 0; i < sourceKeys.length; i++) { key = sourceKeys[i]; if (excluded.indexOf(key) >= 0) continue; target[key] = source[key]; } return target; }\n\nimport React from \"react\";\n\nvar _ref2 = /*#__PURE__*/React.createElement(\"path\", {\n d: \"M0.3,10.7L0.3,10.7c0.4,0.4,0.9,0.4,1.3,0L7,5.5L1.6,0.3C1.2-0.1,0.7,0,0.3,0.3l0,0c-0.4,0.4-0.4,1,0,1.3l4,3.9l-4,3.9 C-0.1,9.8-0.1,10.4,0.3,10.7z\"\n});\n\nvar SvgArrowRoundedRight7X11 = function SvgArrowRoundedRight7X11(_ref) {\n var svgRef = _ref.svgRef,\n title = _ref.title,\n props = _objectWithoutProperties(_ref, [\"svgRef\", \"title\"]);\n\n return /*#__PURE__*/React.createElement(\"svg\", _extends({\n width: 7,\n height: 11,\n ref: svgRef\n }, props), title ? /*#__PURE__*/React.createElement(\"title\", null, title) : null, _ref2);\n};\n\nvar ForwardRef = /*#__PURE__*/React.forwardRef(function (props, ref) {\n return /*#__PURE__*/React.createElement(SvgArrowRoundedRight7X11, _extends({\n svgRef: ref\n }, props));\n});\nexport default __webpack_public_path__ + \"static/media/arrow-rounded-right-7x11.3b09c079.svg\";\nexport { ForwardRef as ReactComponent };","function _extends() { _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }\n\nfunction _objectWithoutProperties(source, excluded) { if (source == null) return {}; var target = _objectWithoutPropertiesLoose(source, excluded); var key, i; if (Object.getOwnPropertySymbols) { var sourceSymbolKeys = Object.getOwnPropertySymbols(source); for (i = 0; i < sourceSymbolKeys.length; i++) { key = sourceSymbolKeys[i]; if (excluded.indexOf(key) >= 0) continue; if (!Object.prototype.propertyIsEnumerable.call(source, key)) continue; target[key] = source[key]; } } return target; }\n\nfunction _objectWithoutPropertiesLoose(source, excluded) { if (source == null) return {}; var target = {}; var sourceKeys = Object.keys(source); var key, i; for (i = 0; i < sourceKeys.length; i++) { key = sourceKeys[i]; if (excluded.indexOf(key) >= 0) continue; target[key] = source[key]; } return target; }\n\nimport React from \"react\";\n\nvar _ref2 = /*#__PURE__*/React.createElement(\"path\", {\n d: \"M0.3,11.4l5-4.9l-5-4.9c-0.4-0.4-0.4-0.9,0-1.3l0,0c0.4-0.4,0.9-0.4,1.3,0L8,6.5l-6.4,6.2c-0.4,0.4-0.9,0.3-1.3,0l0,0 C-0.1,12.4-0.1,11.8,0.3,11.4z\"\n});\n\nvar SvgArrowRoundedRight8X13 = function SvgArrowRoundedRight8X13(_ref) {\n var svgRef = _ref.svgRef,\n title = _ref.title,\n props = _objectWithoutProperties(_ref, [\"svgRef\", \"title\"]);\n\n return /*#__PURE__*/React.createElement(\"svg\", _extends({\n width: \"8px\",\n height: \"13px\",\n ref: svgRef\n }, props), title ? /*#__PURE__*/React.createElement(\"title\", null, title) : null, _ref2);\n};\n\nvar ForwardRef = /*#__PURE__*/React.forwardRef(function (props, ref) {\n return /*#__PURE__*/React.createElement(SvgArrowRoundedRight8X13, _extends({\n svgRef: ref\n }, props));\n});\nexport default __webpack_public_path__ + \"static/media/arrow-rounded-right-8x13.0c286d3f.svg\";\nexport { ForwardRef as ReactComponent };","function _extends() { _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }\n\nfunction _objectWithoutProperties(source, excluded) { if (source == null) return {}; var target = _objectWithoutPropertiesLoose(source, excluded); var key, i; if (Object.getOwnPropertySymbols) { var sourceSymbolKeys = Object.getOwnPropertySymbols(source); for (i = 0; i < sourceSymbolKeys.length; i++) { key = sourceSymbolKeys[i]; if (excluded.indexOf(key) >= 0) continue; if (!Object.prototype.propertyIsEnumerable.call(source, key)) continue; target[key] = source[key]; } } return target; }\n\nfunction _objectWithoutPropertiesLoose(source, excluded) { if (source == null) return {}; var target = {}; var sourceKeys = Object.keys(source); var key, i; for (i = 0; i < sourceKeys.length; i++) { key = sourceKeys[i]; if (excluded.indexOf(key) >= 0) continue; target[key] = source[key]; } return target; }\n\nimport React from \"react\";\n\nvar _ref2 = /*#__PURE__*/React.createElement(\"circle\", {\n cx: 7,\n cy: 17,\n r: 2\n});\n\nvar _ref3 = /*#__PURE__*/React.createElement(\"circle\", {\n cx: 15,\n cy: 17,\n r: 2\n});\n\nvar _ref4 = /*#__PURE__*/React.createElement(\"path\", {\n d: \"M20,4.4V5l-1.8,6.3c-0.1,0.4-0.5,0.7-1,0.7H6.7c-0.4,0-0.8-0.3-1-0.7L3.3,3.9C3.1,3.3,2.6,3,2.1,3H0.4C0.2,3,0,2.8,0,2.6 V1.4C0,1.2,0.2,1,0.4,1h2.5c1,0,1.8,0.6,2.1,1.6L5.1,3l2.3,6.8c0,0.1,0.2,0.2,0.3,0.2h8.6c0.1,0,0.3-0.1,0.3-0.2l1.3-4.4 C17.9,5.2,17.7,5,17.5,5H9.4C9.2,5,9,4.8,9,4.6V3.4C9,3.2,9.2,3,9.4,3h9.2C19.4,3,20,3.6,20,4.4z\"\n});\n\nvar SvgCart20 = function SvgCart20(_ref) {\n var svgRef = _ref.svgRef,\n title = _ref.title,\n props = _objectWithoutProperties(_ref, [\"svgRef\", \"title\"]);\n\n return /*#__PURE__*/React.createElement(\"svg\", _extends({\n width: 20,\n height: 20,\n ref: svgRef\n }, props), title ? /*#__PURE__*/React.createElement(\"title\", null, title) : null, _ref2, _ref3, _ref4);\n};\n\nvar ForwardRef = /*#__PURE__*/React.forwardRef(function (props, ref) {\n return /*#__PURE__*/React.createElement(SvgCart20, _extends({\n svgRef: ref\n }, props));\n});\nexport default __webpack_public_path__ + \"static/media/cart-20.567fd8b6.svg\";\nexport { ForwardRef as ReactComponent };","function _extends() { _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }\n\nfunction _objectWithoutProperties(source, excluded) { if (source == null) return {}; var target = _objectWithoutPropertiesLoose(source, excluded); var key, i; if (Object.getOwnPropertySymbols) { var sourceSymbolKeys = Object.getOwnPropertySymbols(source); for (i = 0; i < sourceSymbolKeys.length; i++) { key = sourceSymbolKeys[i]; if (excluded.indexOf(key) >= 0) continue; if (!Object.prototype.propertyIsEnumerable.call(source, key)) continue; target[key] = source[key]; } } return target; }\n\nfunction _objectWithoutPropertiesLoose(source, excluded) { if (source == null) return {}; var target = {}; var sourceKeys = Object.keys(source); var key, i; for (i = 0; i < sourceKeys.length; i++) { key = sourceKeys[i]; if (excluded.indexOf(key) >= 0) continue; target[key] = source[key]; } return target; }\n\nimport React from \"react\";\n\nvar _ref2 = /*#__PURE__*/React.createElement(\"path\", {\n d: \"M9.002,1.396 L3.461,7.002 L-0.002,3.498 L1.383,2.096 L3.461,4.199 L7.617,-0.006 L9.002,1.396 Z\"\n});\n\nvar SvgCheck9X7 = function SvgCheck9X7(_ref) {\n var svgRef = _ref.svgRef,\n title = _ref.title,\n props = _objectWithoutProperties(_ref, [\"svgRef\", \"title\"]);\n\n return /*#__PURE__*/React.createElement(\"svg\", _extends({\n width: \"9px\",\n height: \"7px\",\n ref: svgRef\n }, props), title ? /*#__PURE__*/React.createElement(\"title\", null, title) : null, _ref2);\n};\n\nvar ForwardRef = /*#__PURE__*/React.forwardRef(function (props, ref) {\n return /*#__PURE__*/React.createElement(SvgCheck9X7, _extends({\n svgRef: ref\n }, props));\n});\nexport default __webpack_public_path__ + \"static/media/check-9x7.671481aa.svg\";\nexport { ForwardRef as ReactComponent };","function _extends() { _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }\n\nfunction _objectWithoutProperties(source, excluded) { if (source == null) return {}; var target = _objectWithoutPropertiesLoose(source, excluded); var key, i; if (Object.getOwnPropertySymbols) { var sourceSymbolKeys = Object.getOwnPropertySymbols(source); for (i = 0; i < sourceSymbolKeys.length; i++) { key = sourceSymbolKeys[i]; if (excluded.indexOf(key) >= 0) continue; if (!Object.prototype.propertyIsEnumerable.call(source, key)) continue; target[key] = source[key]; } } return target; }\n\nfunction _objectWithoutPropertiesLoose(source, excluded) { if (source == null) return {}; var target = {}; var sourceKeys = Object.keys(source); var key, i; for (i = 0; i < sourceKeys.length; i++) { key = sourceKeys[i]; if (excluded.indexOf(key) >= 0) continue; target[key] = source[key]; } return target; }\n\nimport React from \"react\";\n\nvar _ref2 = /*#__PURE__*/React.createElement(\"path\", {\n d: \"M12.002,1.396 L4.461,9.002 L-0.002,4.498 L1.383,3.096 L4.461,6.203 L10.617,-0.006 L12.002,1.396 Z\"\n});\n\nvar SvgCheck12X9 = function SvgCheck12X9(_ref) {\n var svgRef = _ref.svgRef,\n title = _ref.title,\n props = _objectWithoutProperties(_ref, [\"svgRef\", \"title\"]);\n\n return /*#__PURE__*/React.createElement(\"svg\", _extends({\n width: \"12px\",\n height: \"9px\",\n ref: svgRef\n }, props), title ? /*#__PURE__*/React.createElement(\"title\", null, title) : null, _ref2);\n};\n\nvar ForwardRef = /*#__PURE__*/React.forwardRef(function (props, ref) {\n return /*#__PURE__*/React.createElement(SvgCheck12X9, _extends({\n svgRef: ref\n }, props));\n});\nexport default __webpack_public_path__ + \"static/media/check-12x9.804392d0.svg\";\nexport { ForwardRef as ReactComponent };","function _extends() { _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }\n\nfunction _objectWithoutProperties(source, excluded) { if (source == null) return {}; var target = _objectWithoutPropertiesLoose(source, excluded); var key, i; if (Object.getOwnPropertySymbols) { var sourceSymbolKeys = Object.getOwnPropertySymbols(source); for (i = 0; i < sourceSymbolKeys.length; i++) { key = sourceSymbolKeys[i]; if (excluded.indexOf(key) >= 0) continue; if (!Object.prototype.propertyIsEnumerable.call(source, key)) continue; target[key] = source[key]; } } return target; }\n\nfunction _objectWithoutPropertiesLoose(source, excluded) { if (source == null) return {}; var target = {}; var sourceKeys = Object.keys(source); var key, i; for (i = 0; i < sourceKeys.length; i++) { key = sourceKeys[i]; if (excluded.indexOf(key) >= 0) continue; target[key] = source[key]; } return target; }\n\nimport React from \"react\";\n\nvar _ref2 = /*#__PURE__*/React.createElement(\"path\", {\n d: \"M9,15H7c-0.6,0-1-0.4-1-1V2c0-0.6,0.4-1,1-1h2c0.6,0,1,0.4,1,1v12C10,14.6,9.6,15,9,15z\"\n});\n\nvar _ref3 = /*#__PURE__*/React.createElement(\"path\", {\n d: \"M1,9h2c0.6,0,1,0.4,1,1v4c0,0.6-0.4,1-1,1H1c-0.6,0-1-0.4-1-1v-4C0,9.4,0.4,9,1,9z\"\n});\n\nvar _ref4 = /*#__PURE__*/React.createElement(\"path\", {\n d: \"M15,5h-2c-0.6,0-1,0.4-1,1v8c0,0.6,0.4,1,1,1h2c0.6,0,1-0.4,1-1V6C16,5.4,15.6,5,15,5z\"\n});\n\nvar SvgCompare16 = function SvgCompare16(_ref) {\n var svgRef = _ref.svgRef,\n title = _ref.title,\n props = _objectWithoutProperties(_ref, [\"svgRef\", \"title\"]);\n\n return /*#__PURE__*/React.createElement(\"svg\", _extends({\n width: 16,\n height: 16,\n ref: svgRef\n }, props), title ? /*#__PURE__*/React.createElement(\"title\", null, title) : null, _ref2, _ref3, _ref4);\n};\n\nvar ForwardRef = /*#__PURE__*/React.forwardRef(function (props, ref) {\n return /*#__PURE__*/React.createElement(SvgCompare16, _extends({\n svgRef: ref\n }, props));\n});\nexport default __webpack_public_path__ + \"static/media/compare-16.9f781750.svg\";\nexport { ForwardRef as ReactComponent };","function _extends() { _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }\n\nfunction _objectWithoutProperties(source, excluded) { if (source == null) return {}; var target = _objectWithoutPropertiesLoose(source, excluded); var key, i; if (Object.getOwnPropertySymbols) { var sourceSymbolKeys = Object.getOwnPropertySymbols(source); for (i = 0; i < sourceSymbolKeys.length; i++) { key = sourceSymbolKeys[i]; if (excluded.indexOf(key) >= 0) continue; if (!Object.prototype.propertyIsEnumerable.call(source, key)) continue; target[key] = source[key]; } } return target; }\n\nfunction _objectWithoutPropertiesLoose(source, excluded) { if (source == null) return {}; var target = {}; var sourceKeys = Object.keys(source); var key, i; for (i = 0; i < sourceKeys.length; i++) { key = sourceKeys[i]; if (excluded.indexOf(key) >= 0) continue; target[key] = source[key]; } return target; }\n\nimport React from \"react\";\n\nvar _ref2 = /*#__PURE__*/React.createElement(\"path\", {\n d: \"M8.8,8.8L8.8,8.8c-0.4,0.4-1,0.4-1.4,0L5,6.4L2.6,8.8c-0.4,0.4-1,0.4-1.4,0l0,0c-0.4-0.4-0.4-1,0-1.4L3.6,5L1.2,2.6 c-0.4-0.4-0.4-1,0-1.4l0,0c0.4-0.4,1-0.4,1.4,0L5,3.6l2.4-2.4c0.4-0.4,1-0.4,1.4,0l0,0c0.4,0.4,0.4,1,0,1.4L6.4,5l2.4,2.4 C9.2,7.8,9.2,8.4,8.8,8.8z\"\n});\n\nvar SvgCross10 = function SvgCross10(_ref) {\n var svgRef = _ref.svgRef,\n title = _ref.title,\n props = _objectWithoutProperties(_ref, [\"svgRef\", \"title\"]);\n\n return /*#__PURE__*/React.createElement(\"svg\", _extends({\n width: 10,\n height: 10,\n ref: svgRef\n }, props), title ? /*#__PURE__*/React.createElement(\"title\", null, title) : null, _ref2);\n};\n\nvar ForwardRef = /*#__PURE__*/React.forwardRef(function (props, ref) {\n return /*#__PURE__*/React.createElement(SvgCross10, _extends({\n svgRef: ref\n }, props));\n});\nexport default __webpack_public_path__ + \"static/media/cross-10.528734c6.svg\";\nexport { ForwardRef as ReactComponent };","function _extends() { _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }\n\nfunction _objectWithoutProperties(source, excluded) { if (source == null) return {}; var target = _objectWithoutPropertiesLoose(source, excluded); var key, i; if (Object.getOwnPropertySymbols) { var sourceSymbolKeys = Object.getOwnPropertySymbols(source); for (i = 0; i < sourceSymbolKeys.length; i++) { key = sourceSymbolKeys[i]; if (excluded.indexOf(key) >= 0) continue; if (!Object.prototype.propertyIsEnumerable.call(source, key)) continue; target[key] = source[key]; } } return target; }\n\nfunction _objectWithoutPropertiesLoose(source, excluded) { if (source == null) return {}; var target = {}; var sourceKeys = Object.keys(source); var key, i; for (i = 0; i < sourceKeys.length; i++) { key = sourceKeys[i]; if (excluded.indexOf(key) >= 0) continue; target[key] = source[key]; } return target; }\n\nimport React from \"react\";\n\nvar _ref2 = /*#__PURE__*/React.createElement(\"path\", {\n d: \"M10.8,10.8L10.8,10.8c-0.4,0.4-1,0.4-1.4,0L6,7.4l-3.4,3.4c-0.4,0.4-1,0.4-1.4,0l0,0c-0.4-0.4-0.4-1,0-1.4L4.6,6L1.2,2.6 c-0.4-0.4-0.4-1,0-1.4l0,0c0.4-0.4,1-0.4,1.4,0L6,4.6l3.4-3.4c0.4-0.4,1-0.4,1.4,0l0,0c0.4,0.4,0.4,1,0,1.4L7.4,6l3.4,3.4 C11.2,9.8,11.2,10.4,10.8,10.8z\"\n});\n\nvar SvgCross12 = function SvgCross12(_ref) {\n var svgRef = _ref.svgRef,\n title = _ref.title,\n props = _objectWithoutProperties(_ref, [\"svgRef\", \"title\"]);\n\n return /*#__PURE__*/React.createElement(\"svg\", _extends({\n width: 12,\n height: 12,\n ref: svgRef\n }, props), title ? /*#__PURE__*/React.createElement(\"title\", null, title) : null, _ref2);\n};\n\nvar ForwardRef = /*#__PURE__*/React.forwardRef(function (props, ref) {\n return /*#__PURE__*/React.createElement(SvgCross12, _extends({\n svgRef: ref\n }, props));\n});\nexport default __webpack_public_path__ + \"static/media/cross-12.93070ac9.svg\";\nexport { ForwardRef as ReactComponent };","function _extends() { _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }\n\nfunction _objectWithoutProperties(source, excluded) { if (source == null) return {}; var target = _objectWithoutPropertiesLoose(source, excluded); var key, i; if (Object.getOwnPropertySymbols) { var sourceSymbolKeys = Object.getOwnPropertySymbols(source); for (i = 0; i < sourceSymbolKeys.length; i++) { key = sourceSymbolKeys[i]; if (excluded.indexOf(key) >= 0) continue; if (!Object.prototype.propertyIsEnumerable.call(source, key)) continue; target[key] = source[key]; } } return target; }\n\nfunction _objectWithoutPropertiesLoose(source, excluded) { if (source == null) return {}; var target = {}; var sourceKeys = Object.keys(source); var key, i; for (i = 0; i < sourceKeys.length; i++) { key = sourceKeys[i]; if (excluded.indexOf(key) >= 0) continue; target[key] = source[key]; } return target; }\n\nimport React from \"react\";\n\nvar _ref2 = /*#__PURE__*/React.createElement(\"path\", {\n d: \"M17.71,17.71L17.71,17.71c-0.387,0.387-1.013,0.387-1.4,0L10,11.4l-6.31,6.31c-0.387,0.387-1.013,0.387-1.4,0l0,0 c-0.387-0.387-0.387-1.013,0-1.4L8.6,10L2.29,3.69c-0.387-0.387-0.387-1.013,0-1.4l0,0c0.387-0.387,1.013-0.387,1.4,0L10,8.6 l6.31-6.31c0.387-0.387,1.013-0.387,1.4,0l0,0c0.387,0.387,0.387,1.013,0,1.4L11.4,10l6.31,6.31 C18.097,16.697,18.097,17.323,17.71,17.71z\"\n});\n\nvar SvgCross20 = function SvgCross20(_ref) {\n var svgRef = _ref.svgRef,\n title = _ref.title,\n props = _objectWithoutProperties(_ref, [\"svgRef\", \"title\"]);\n\n return /*#__PURE__*/React.createElement(\"svg\", _extends({\n width: 20,\n height: 20,\n ref: svgRef\n }, props), title ? /*#__PURE__*/React.createElement(\"title\", null, title) : null, _ref2);\n};\n\nvar ForwardRef = /*#__PURE__*/React.forwardRef(function (props, ref) {\n return /*#__PURE__*/React.createElement(SvgCross20, _extends({\n svgRef: ref\n }, props));\n});\nexport default __webpack_public_path__ + \"static/media/cross-20.75d4e9e0.svg\";\nexport { ForwardRef as ReactComponent };","function _extends() { _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }\n\nfunction _objectWithoutProperties(source, excluded) { if (source == null) return {}; var target = _objectWithoutPropertiesLoose(source, excluded); var key, i; if (Object.getOwnPropertySymbols) { var sourceSymbolKeys = Object.getOwnPropertySymbols(source); for (i = 0; i < sourceSymbolKeys.length; i++) { key = sourceSymbolKeys[i]; if (excluded.indexOf(key) >= 0) continue; if (!Object.prototype.propertyIsEnumerable.call(source, key)) continue; target[key] = source[key]; } } return target; }\n\nfunction _objectWithoutPropertiesLoose(source, excluded) { if (source == null) return {}; var target = {}; var sourceKeys = Object.keys(source); var key, i; for (i = 0; i < sourceKeys.length; i++) { key = sourceKeys[i]; if (excluded.indexOf(key) >= 0) continue; target[key] = source[key]; } return target; }\n\nimport React from \"react\";\n\nvar _ref2 = /*#__PURE__*/React.createElement(\"g\", null, /*#__PURE__*/React.createElement(\"path\", {\n d: \"M46.2,18.2H46v-0.9c0-1.2-1.2-1.8-2.5-1.8c-0.5,0-1,0.1-1.4,0.3c0,0,2.3-4.6,2.3-4.6c1-2.3-3-4-4.4-1.4l-5.2,10.2 c-0.3,0.6-0.4,1.4,0,2.1c-0.2-0.1-0.4-0.2-0.7-0.2h-4.9c1.6-1.6,6.6-3.5,6.6-8c0-1.6-0.7-3-1.9-4c-1.1-0.9-2.5-1.4-4-1.4 c-2.8,0-5.8,1.8-5.8,5c0,2.2,1.4,2.5,2.3,2.5c1.7,0,2.5-1,2.5-2c0-0.5,0.1-1,1-1c0.9,0,1,0.6,1,0.9c0,2.3-7.1,4.5-7.1,8.4v2.2 c0,1.1,1.3,1.8,2.2,1.8h8c1.4,0,2.3-2.2,1.3-3.7c0.3,0.1,0.6,0.2,0.9,0.2H41v1.7c0,1,1,1.8,2.5,1.8s2.5-0.7,2.5-1.8v-1.7h0.3 c1,0,1.8-1.2,1.8-2.3C48,19.1,47.3,18.2,46.2,18.2L46.2,18.2z M34.2,24.9h-8c-0.4,0-0.8-0.3-0.8-0.4v-2.2c0-3.1,7.1-5,7.1-8.4 c0-1.1-0.8-2.3-2.4-2.3c-1.5,0-2.4,0.9-2.4,2.4c0,0.2-0.4,0.6-1.1,0.6c-0.5,0-0.9-0.1-0.9-1.1c0-2.3,2.3-3.6,4.4-3.6 c2.3,0,4.5,1.4,4.5,3.9c0,4.5-6.9,5.8-6.9,8.5v0.2c0,0.4,0.3,0.7,0.7,0.7h5.9c0.1,0,0.4,0.3,0.4,0.8C34.6,24.5,34.3,24.8,34.2,24.9 L34.2,24.9z M46.2,21.4h-0.9c-0.4,0-0.7,0.3-0.7,0.7v2.4c0,0.2-0.4,0.4-1,0.4s-1-0.2-1-0.4v-2.4c0-0.4-0.3-0.7-0.7-0.7h-5.3 c-0.5,0-0.5-0.5-0.4-0.8c0,0,0,0,0,0l5.2-10.2c0.5-1,1.9-0.2,1.9,0.1c0,0.1,0,0-4,8.1c-0.2,0.5,0.1,1,0.6,1h1.9 c0.4,0,0.7-0.3,0.7-0.7v-1.6c0-0.1,0.4-0.4,1.1-0.4c0.6,0,1,0.2,1,0.4v1.6c0,0.4,0.3,0.7,0.7,0.7h1c0.2,0,0.4,0.4,0.4,0.9 C46.6,21,46.3,21.3,46.2,21.4L46.2,21.4z M41,18v0.2H41L41,18z\"\n}), /*#__PURE__*/React.createElement(\"g\", null, /*#__PURE__*/React.createElement(\"path\", {\n d: \"M37,36.6c2.4-2.3,4.2-5.2,5.2-8.4c0.1-0.4-0.1-0.8-0.5-0.9c-0.4-0.1-0.8,0.1-0.9,0.5c-0.9,2.9-2.6,5.6-4.8,7.7 c-0.3,0.3-0.3,0.7,0,1C36.2,36.9,36.7,36.9,37,36.6L37,36.6z\"\n}), /*#__PURE__*/React.createElement(\"path\", {\n d: \"M35.1,7.9c0.2-0.3,0.2-0.8-0.2-1c-5.3-3.7-11.8-4.5-17.6-2.5C17,4.5,16.8,4.9,17,5.3s0.5,0.6,0.9,0.4 C23.1,3.9,29.2,4.5,34.1,8C34.4,8.2,34.9,8.2,35.1,7.9L35.1,7.9z\"\n}), /*#__PURE__*/React.createElement(\"path\", {\n d: \"M25.2,43.6c-0.9-0.5-1.9-0.6-2.8-0.4c-0.5,0.1-1.1,0.2-1.6,0.3c-0.4,0-0.7,0.4-0.6,0.8s0.4,0.7,0.8,0.6 c0.6,0,1.2-0.1,1.8-0.3c0.6-0.1,1.2,0,1.8,0.3c1.6,0.9,3.5,0.9,5.1-0.1c3.6-2.2,3.2-2,3.4-2.1c2.2-1.5,2.9-4.5,1.5-6.8L32,31.8 c-1.4-2.3-4.5-3.1-6.8-1.6l-3.2,2c-1.5,0.9-2.4,2.5-2.4,4.2c0,0.2-0.1,0.3-0.3,0.2c-1.2-0.3-2.4-0.8-3.3-1.7 c-1.4-1.3-2.6-2.6-3.7-4c-0.2-0.3-0.7-0.4-1-0.1s-0.4,0.7-0.1,1c1.1,1.5,2.4,2.9,3.9,4.2c1.1,1,2.5,1.7,3.9,2c1,0.2,2-0.6,2-1.6 c0-1.2,0.6-2.4,1.7-3l2.7-1.7l6.3,10.2l-2.7,1.7C27.8,44.2,26.4,44.2,25.2,43.6L25.2,43.6z M26.6,31c1.5-0.5,3.3,0.1,4.1,1.5 l2.5,4.1c0.9,1.4,0.6,3.2-0.5,4.4L26.6,31z\"\n}), /*#__PURE__*/React.createElement(\"path\", {\n d: \"M0.4,23.2c1,3.8,2.4,7.2,4.2,10.2s4.2,5.8,7.1,8.4c1.6,1.4,3.6,2.4,5.7,2.9c0.4,0.1,0.8-0.2,0.8-0.5 c0.1-0.4-0.2-0.8-0.5-0.8c-1.9-0.4-3.6-1.3-5.1-2.5c-2.8-2.5-5.1-5.2-6.9-8.1c-1.7-2.8-3.1-6.1-4.1-9.8C0.9,19.4,1.7,15.7,4,13 c0.6-0.7,1-1.7,0.9-2.7C4.8,9,5.5,7.8,6.6,7.1l2.7-1.7l6.3,10.2l-2.7,1.7c-1,0.6-2.3,0.7-3.4,0.2c-0.9-0.5-2,0.1-2.3,1.1 c-0.4,1.5-0.4,3,0,4.5c0.6,2.1,1.3,4.1,2.2,5.8c0.2,0.3,0.6,0.5,1,0.3c0.3-0.2,0.5-0.6,0.3-1c-0.9-1.7-1.6-3.5-2.1-5.5 c-0.3-1.2-0.3-2.5,0-3.7c0-0.1,0.2-0.2,0.3-0.2c1.5,0.8,3.3,0.7,4.8-0.2l3.2-2c2.3-1.4,3.1-4.5,1.6-6.8l-2.5-4.1 c-1.4-2.4-4.5-3.1-6.8-1.6l-3.2,2c-1.5,0.9-2.5,2.7-2.4,4.5c0,0.6-0.2,1.2-0.6,1.7C0.3,15.2-0.6,19.3,0.4,23.2L0.4,23.2z M14.7,6.3l2.5,4.1c0.9,1.4,0.6,3.2-0.5,4.4L10.6,4.8C12.1,4.3,13.9,4.9,14.7,6.3L14.7,6.3z\"\n})));\n\nvar SvgFi24Hours48 = function SvgFi24Hours48(_ref) {\n var svgRef = _ref.svgRef,\n title = _ref.title,\n props = _objectWithoutProperties(_ref, [\"svgRef\", \"title\"]);\n\n return /*#__PURE__*/React.createElement(\"svg\", _extends({\n width: 48,\n height: 48,\n ref: svgRef\n }, props), title ? /*#__PURE__*/React.createElement(\"title\", null, title) : null, _ref2);\n};\n\nvar ForwardRef = /*#__PURE__*/React.forwardRef(function (props, ref) {\n return /*#__PURE__*/React.createElement(SvgFi24Hours48, _extends({\n svgRef: ref\n }, props));\n});\nexport default __webpack_public_path__ + \"static/media/fi-24-hours-48.56dc1a0e.svg\";\nexport { ForwardRef as ReactComponent };","function _extends() { _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }\n\nfunction _objectWithoutProperties(source, excluded) { if (source == null) return {}; var target = _objectWithoutPropertiesLoose(source, excluded); var key, i; if (Object.getOwnPropertySymbols) { var sourceSymbolKeys = Object.getOwnPropertySymbols(source); for (i = 0; i < sourceSymbolKeys.length; i++) { key = sourceSymbolKeys[i]; if (excluded.indexOf(key) >= 0) continue; if (!Object.prototype.propertyIsEnumerable.call(source, key)) continue; target[key] = source[key]; } } return target; }\n\nfunction _objectWithoutPropertiesLoose(source, excluded) { if (source == null) return {}; var target = {}; var sourceKeys = Object.keys(source); var key, i; for (i = 0; i < sourceKeys.length; i++) { key = sourceKeys[i]; if (excluded.indexOf(key) >= 0) continue; target[key] = source[key]; } return target; }\n\nimport React from \"react\";\n\nvar _ref2 = /*#__PURE__*/React.createElement(\"path\", {\n d: \"M44.6,26.9l-1.2-5c0.3-0.1,0.6-0.4,0.6-0.7v-0.8c0-1.7-1.4-3.2-3.2-3.2h-5.7v-1.7c0-0.9-0.7-1.6-1.6-1.6H23.1l6.4-2.6 c0.4-0.2,0.6-0.6,0.4-1c-0.2-0.4-0.6-0.6-1-0.4l-5.2,2.1c1.6-1,3.2-2.2,3.8-2.9c1.2-1.5,0.9-3.7-0.7-4.9c-1.5-1.2-3.7-0.9-4.9,0.7 l0,0c-0.9,1.1-2,4.3-2.7,6.5c-0.7-2.2-1.9-5.4-2.7-6.5l0,0c-1.2-1.5-3.4-1.8-4.9-0.7C10,5.5,9.7,7.7,10.9,9.2 c0.6,0.8,2.2,1.9,3.8,2.9l-5.2-2.1c-0.4-0.2-0.8,0-1,0.4c-0.2,0.4,0,0.8,0.4,1l6.4,2.6H4.8c-0.9,0-1.6,0.7-1.6,1.6v13.6 C3.2,29.6,3.5,30,4,30c0.4,0,0.8-0.3,0.8-0.8V15.6c0,0,0,0,0,0h28.9c0,0,0,0,0,0v13.6c0,0.4,0.3,0.8,0.8,0.8c0.4,0,0.8-0.3,0.8-0.8 v-0.9H44c0,0,0,0,0,0c0,0,0,0,0,0c1.1,0,2,0.7,2.3,1.7H44c-0.4,0-0.8,0.3-0.8,0.8v1.6c0,1.3,1.1,2.4,2.4,2.4h0.9v3.3h-2 c-0.6-1.9-2.4-3.2-4.5-3.2c-2.1,0-3.9,1.3-4.5,3.2h-0.4v-5.7c0-0.4-0.3-0.8-0.8-0.8c-0.4,0-0.8,0.3-0.8,0.8v5.7H18.1 c-0.6-1.9-2.4-3.2-4.5-3.2c-2.1,0-3.9,1.3-4.5,3.2H4.8c0,0,0,0,0,0v-1.7H8c0.4,0,0.8-0.3,0.8-0.8S8.4,34.9,8,34.9H0.8 c-0.4,0-0.8,0.3-0.8,0.8s0.3,0.8,0.8,0.8h2.5V38c0,0.9,0.7,1.6,1.6,1.6h4.1c0,0,0,0,0,0c0,2.6,2.1,4.8,4.8,4.8s4.8-2.1,4.8-4.8 c0,0,0,0,0,0h16.9c0,0,0,0,0,0c0,2.6,2.1,4.8,4.8,4.8s4.8-2.1,4.8-4.8c0,0,0,0,0,0h2.5c0.4,0,0.8-0.3,0.8-0.8v-8 C48,28.8,46.5,27.2,44.6,26.9z M23.1,5.9L23.1,5.9c0.7-0.9,1.9-1,2.8-0.4s1,1.9,0.4,2.8c-0.3,0.3-1.1,1.2-4.1,3 c-0.6,0.4-1.2,0.7-1.7,1C21.2,10.1,22.4,6.9,23.1,5.9z M12.1,8.3c-0.7-0.9-0.5-2.1,0.4-2.8c0.4-0.3,0.8-0.4,1.2-0.4 c0.6,0,1.2,0.3,1.6,0.8l0,0c0.7,1,1.9,4.2,2.6,6.5c-0.5-0.3-1.1-0.6-1.7-1C13.2,9.5,12.4,8.7,12.1,8.3z M35.2,21.9h6.7l1.2,4.9h-7.9 V21.9z M40.8,18.7c0.9,0,1.7,0.7,1.7,1.7v0h-7.3v-1.7L40.8,18.7L40.8,18.7z M13.6,42.9c-1.8,0-3.3-1.5-3.3-3.3s1.5-3.3,3.3-3.3 s3.3,1.5,3.3,3.3S15.4,42.9,13.6,42.9z M40,42.9c-1.8,0-3.3-1.5-3.3-3.3s1.5-3.3,3.3-3.3s3.3,1.5,3.3,3.3S41.8,42.9,40,42.9z M45.6,33.3c-0.5,0-0.9-0.4-0.9-0.9v-0.9h1.7v1.7L45.6,33.3L45.6,33.3z\"\n});\n\nvar _ref3 = /*#__PURE__*/React.createElement(\"path\", {\n d: \"M13.6,38.1c-0.9,0-1.6,0.7-1.6,1.6s0.7,1.6,1.6,1.6s1.6-0.7,1.6-1.6S14.4,38.1,13.6,38.1z\"\n});\n\nvar _ref4 = /*#__PURE__*/React.createElement(\"path\", {\n d: \"M40,38.1c-0.9,0-1.6,0.7-1.6,1.6s0.7,1.6,1.6,1.6c0.9,0,1.6-0.7,1.6-1.6S40.9,38.1,40,38.1z\"\n});\n\nvar _ref5 = /*#__PURE__*/React.createElement(\"path\", {\n d: \"M19.2,35.6c0,0.4,0.3,0.8,0.8,0.8h11.2c0.4,0,0.8-0.3,0.8-0.8s-0.3-0.8-0.8-0.8H20C19.6,34.9,19.2,35.2,19.2,35.6z\"\n});\n\nvar _ref6 = /*#__PURE__*/React.createElement(\"path\", {\n d: \"M2.4,33.2H12c0.4,0,0.8-0.3,0.8-0.8s-0.3-0.8-0.8-0.8H2.4c-0.4,0-0.8,0.3-0.8,0.8S1.9,33.2,2.4,33.2z\"\n});\n\nvar _ref7 = /*#__PURE__*/React.createElement(\"path\", {\n d: \"M12,21.9c0.4,0,0.8-0.3,0.8-0.8s-0.3-0.8-0.8-0.8H8.8c-0.4,0-0.8,0.3-0.8,0.8v6.4c0,0.4,0.3,0.8,0.8,0.8 c0.4,0,0.8-0.3,0.8-0.8v-2.5h1.7c0.4,0,0.8-0.3,0.8-0.8s-0.3-0.8-0.8-0.8H9.5v-1.7L12,21.9L12,21.9z\"\n});\n\nvar _ref8 = /*#__PURE__*/React.createElement(\"path\", {\n d: \"M19.1,23.2c0-1.5-1.2-2.8-2.8-2.8h-2c-0.4,0-0.8,0.3-0.8,0.8v6.4c0,0.4,0.3,0.8,0.8,0.8c0.4,0,0.8-0.3,0.8-0.8V26h1.3 l1.4,2.1c0.1,0.2,0.4,0.3,0.6,0.3c0.1,0,0.3,0,0.4-0.1c0.3-0.2,0.4-0.7,0.2-1l-1.1-1.7C18.6,25,19.1,24.2,19.1,23.2z M15.1,21.9h1.3 c0.7,0,1.3,0.6,1.3,1.3s-0.6,1.3-1.3,1.3h-1.3V21.9z\"\n});\n\nvar _ref9 = /*#__PURE__*/React.createElement(\"path\", {\n d: \"M24,21.9c0.4,0,0.8-0.3,0.8-0.8s-0.3-0.8-0.8-0.8h-3.2c-0.4,0-0.8,0.3-0.8,0.8v6.4c0,0.4,0.3,0.8,0.8,0.8H24 c0.4,0,0.8-0.3,0.8-0.8s-0.3-0.8-0.8-0.8h-2.5v-1.7c0,0,0,0,0,0h1.6c0.4,0,0.8-0.3,0.8-0.8s-0.3-0.8-0.8-0.8h-1.6c0,0,0,0,0,0v-1.7 L24,21.9L24,21.9z\"\n});\n\nvar _ref10 = /*#__PURE__*/React.createElement(\"path\", {\n d: \"M29.6,21.9c0.4,0,0.8-0.3,0.8-0.8s-0.3-0.8-0.8-0.8h-3.2c-0.4,0-0.8,0.3-0.8,0.8v6.4c0,0.4,0.3,0.8,0.8,0.8h3.2 c0.4,0,0.8-0.3,0.8-0.8s-0.3-0.8-0.8-0.8h-2.5v-1.7H28c0.4,0,0.8-0.3,0.8-0.8s-0.3-0.8-0.8-0.8h-0.9v-1.7L29.6,21.9L29.6,21.9z\"\n});\n\nvar SvgFiFreeDelivery48 = function SvgFiFreeDelivery48(_ref) {\n var svgRef = _ref.svgRef,\n title = _ref.title,\n props = _objectWithoutProperties(_ref, [\"svgRef\", \"title\"]);\n\n return /*#__PURE__*/React.createElement(\"svg\", _extends({\n width: 48,\n height: 48,\n ref: svgRef\n }, props), title ? /*#__PURE__*/React.createElement(\"title\", null, title) : null, _ref2, _ref3, _ref4, _ref5, _ref6, _ref7, _ref8, _ref9, _ref10);\n};\n\nvar ForwardRef = /*#__PURE__*/React.forwardRef(function (props, ref) {\n return /*#__PURE__*/React.createElement(SvgFiFreeDelivery48, _extends({\n svgRef: ref\n }, props));\n});\nexport default __webpack_public_path__ + \"static/media/fi-free-delivery-48.fbb019ad.svg\";\nexport { ForwardRef as ReactComponent };","function _extends() { _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }\n\nfunction _objectWithoutProperties(source, excluded) { if (source == null) return {}; var target = _objectWithoutPropertiesLoose(source, excluded); var key, i; if (Object.getOwnPropertySymbols) { var sourceSymbolKeys = Object.getOwnPropertySymbols(source); for (i = 0; i < sourceSymbolKeys.length; i++) { key = sourceSymbolKeys[i]; if (excluded.indexOf(key) >= 0) continue; if (!Object.prototype.propertyIsEnumerable.call(source, key)) continue; target[key] = source[key]; } } return target; }\n\nfunction _objectWithoutPropertiesLoose(source, excluded) { if (source == null) return {}; var target = {}; var sourceKeys = Object.keys(source); var key, i; for (i = 0; i < sourceKeys.length; i++) { key = sourceKeys[i]; if (excluded.indexOf(key) >= 0) continue; target[key] = source[key]; } return target; }\n\nimport React from \"react\";\n\nvar _ref2 = /*#__PURE__*/React.createElement(\"path\", {\n d: \"M30,34.4H2.5c-0.5,0-0.9-0.4-0.9-0.9V7.7c0-0.5,0.4-0.9,0.9-0.9H42c0.5,0,0.9,0.4,0.9,0.9v11.2c0,0.4,0.4,0.8,0.8,0.8 c0.4,0,0.8-0.4,0.8-0.8V7.7c0-1.4-1.1-2.5-2.5-2.5H2.5C1.1,5.2,0,6.3,0,7.7v25.8C0,34.8,1.1,36,2.5,36H30c0.4,0,0.8-0.4,0.8-0.8 C30.8,34.7,30.5,34.4,30,34.4z\"\n});\n\nvar _ref3 = /*#__PURE__*/React.createElement(\"path\", {\n d: \"M15.4,18v-5.2c0-0.9-0.7-1.7-1.7-1.7H6.8c-0.9,0-1.7,0.7-1.7,1.7V18c0,0.9,0.7,1.7,1.7,1.7h6.9C14.6,19.7,15.4,18.9,15.4,18 z M13.7,12.8V18c0,0,0,0.1-0.1,0.1h-3.5v-1.8h0.9c0.4,0,0.8-0.4,0.8-0.8c0-0.4-0.4-0.8-0.8-0.8h-0.9v-1.8L13.7,12.8 C13.7,12.8,13.7,12.8,13.7,12.8z M6.8,18v-5.2c0,0,0-0.1,0.1-0.1h1.8V18L6.8,18C6.8,18,6.8,18,6.8,18z\"\n});\n\nvar _ref4 = /*#__PURE__*/React.createElement(\"path\", {\n d: \"M32.2,11.1c-0.8-0.5-1.7-0.8-2.6-0.8c-2.6,0-4.7,2.1-4.7,4.7s2.1,4.7,4.7,4.7c1,0,1.8-0.3,2.6-0.8c0.8,0.5,1.7,0.8,2.6,0.8 c2.6,0,4.7-2.1,4.7-4.7s-2.1-4.7-4.7-4.7C33.8,10.3,32.9,10.6,32.2,11.1z M26.5,15c0-1.7,1.4-3.1,3.1-3.1c0.5,0,0.9,0.1,1.4,0.3 C30.4,13,30.1,14,30.1,15c0,1,0.3,1.9,0.9,2.7c-0.4,0.2-0.9,0.3-1.4,0.3C27.9,18,26.5,16.7,26.5,15z M37.8,15c0,1.7-1.4,3.1-3.1,3.1 c-0.5,0-0.9-0.1-1.4-0.3c0.6-0.8,0.9-1.7,0.9-2.7c0-0.4-0.4-0.8-0.8-0.8s-0.8,0.4-0.8,0.8c0,0.6-0.2,1.2-0.5,1.6 c-0.3-0.5-0.5-1.1-0.5-1.6c0-1.7,1.4-3.1,3.1-3.1C36.4,11.9,37.8,13.3,37.8,15z\"\n});\n\nvar _ref5 = /*#__PURE__*/React.createElement(\"path\", {\n d: \"M6,24.1c-0.4,0-0.8,0.4-0.8,0.8c0,0.4,0.4,0.8,0.8,0.8h6.9c0.4,0,0.8-0.4,0.8-0.8c0-0.4-0.4-0.8-0.8-0.8H6z\"\n});\n\nvar _ref6 = /*#__PURE__*/React.createElement(\"path\", {\n d: \"M30.9,29.2H6c-0.4,0-0.8,0.4-0.8,0.8c0,0.4,0.4,0.8,0.8,0.8h24.9c0.4,0,0.8-0.4,0.8-0.8S31.3,29.2,30.9,29.2z\"\n});\n\nvar _ref7 = /*#__PURE__*/React.createElement(\"path\", {\n d: \"M16.3,24.1c-0.4,0-0.8,0.4-0.8,0.8c0,0.4,0.4,0.8,0.8,0.8h6.9c0.4,0,0.8-0.4,0.8-0.8c0-0.4-0.4-0.8-0.8-0.8H16.3z\"\n});\n\nvar _ref8 = /*#__PURE__*/React.createElement(\"path\", {\n d: \"M31.7,24.1h-5.2c-0.4,0-0.8,0.4-0.8,0.8c0,0.4,0.4,0.8,0.8,0.8h5.2c0.4,0,0.8-0.4,0.8-0.8C32.5,24.4,32.2,24.1,31.7,24.1z\"\n});\n\nvar _ref9 = /*#__PURE__*/React.createElement(\"path\", {\n d: \"M46.3,30.2v-3.6c0-3.3-2.7-6-6-6c-3.3,0-6,2.7-6,6v3.6c-1,0.3-1.7,1.3-1.7,2.4v7.7c0,1.4,1.1,2.5,2.5,2.5h10.3 c1.4,0,2.5-1.1,2.5-2.5v-7.7C48,31.5,47.3,30.5,46.3,30.2z M40.3,22.2c2.4,0,4.3,2,4.3,4.3v3.5H36v-3.5C36,24.2,37.9,22.2,40.3,22.2 z M46.4,40.3c0,0.5-0.4,0.9-0.9,0.9H35.2c-0.5,0-0.9-0.4-0.9-0.9v-7.7c0-0.5,0.4-0.9,0.9-0.9h10.3c0.5,0,0.9,0.4,0.9,0.9V40.3z\"\n});\n\nvar _ref10 = /*#__PURE__*/React.createElement(\"path\", {\n d: \"M40.3,33.5c-1.2,0-2.1,0.9-2.1,2.1c0,0.9,0.5,1.6,1.3,1.9v1.1c0,0.4,0.4,0.8,0.8,0.8s0.8-0.4,0.8-0.8v-1.1 c0.8-0.3,1.3-1.1,1.3-1.9C42.4,34.4,41.5,33.5,40.3,33.5z M40.3,35.1c0.3,0,0.5,0.2,0.5,0.5s-0.2,0.5-0.5,0.5s-0.5-0.2-0.5-0.5 S40.1,35.1,40.3,35.1z\"\n});\n\nvar SvgFiPaymentSecurity48 = function SvgFiPaymentSecurity48(_ref) {\n var svgRef = _ref.svgRef,\n title = _ref.title,\n props = _objectWithoutProperties(_ref, [\"svgRef\", \"title\"]);\n\n return /*#__PURE__*/React.createElement(\"svg\", _extends({\n width: 48,\n height: 48,\n ref: svgRef\n }, props), title ? /*#__PURE__*/React.createElement(\"title\", null, title) : null, _ref2, _ref3, _ref4, _ref5, _ref6, _ref7, _ref8, _ref9, _ref10);\n};\n\nvar ForwardRef = /*#__PURE__*/React.forwardRef(function (props, ref) {\n return /*#__PURE__*/React.createElement(SvgFiPaymentSecurity48, _extends({\n svgRef: ref\n }, props));\n});\nexport default __webpack_public_path__ + \"static/media/fi-payment-security-48.8bbb999d.svg\";\nexport { ForwardRef as ReactComponent };","function _extends() { _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }\n\nfunction _objectWithoutProperties(source, excluded) { if (source == null) return {}; var target = _objectWithoutPropertiesLoose(source, excluded); var key, i; if (Object.getOwnPropertySymbols) { var sourceSymbolKeys = Object.getOwnPropertySymbols(source); for (i = 0; i < sourceSymbolKeys.length; i++) { key = sourceSymbolKeys[i]; if (excluded.indexOf(key) >= 0) continue; if (!Object.prototype.propertyIsEnumerable.call(source, key)) continue; target[key] = source[key]; } } return target; }\n\nfunction _objectWithoutPropertiesLoose(source, excluded) { if (source == null) return {}; var target = {}; var sourceKeys = Object.keys(source); var key, i; for (i = 0; i < sourceKeys.length; i++) { key = sourceKeys[i]; if (excluded.indexOf(key) >= 0) continue; target[key] = source[key]; } return target; }\n\nimport React from \"react\";\n\nvar _ref2 = /*#__PURE__*/React.createElement(\"path\", {\n d: \"M48,3.3c0-0.9-0.3-1.7-1-2.3c-0.6-0.6-1.4-1-2.3-1c-0.9,0-1.7,0.3-2.3,1c-0.3,0.3-0.7,0.8-1,1.1c-0.3,0.3-0.2,0.8,0.1,1.1 c0.3,0.3,0.8,0.2,1.1-0.1c0.4-0.5,0.7-0.9,0.9-1c0.3-0.3,0.8-0.5,1.2-0.5c0,0,0,0,0,0c0.5,0,0.9,0.2,1.2,0.5 c0.3,0.3,0.5,0.8,0.5,1.2c0,0.5-0.2,0.9-0.5,1.2c-0.3,0.3-1.3,1.1-2.7,2.1c-0.9-1.5-2.4-2.4-4.3-2.4H27.5c-1.5,0-3,0.6-4.1,1.7 L0.7,28.6C0.3,29,0,29.7,0,30.3s0.3,1.3,0.7,1.7L16,47.3c0.5,0.5,1.1,0.7,1.7,0.7c0.7,0,1.3-0.3,1.7-0.7l22.8-22.8 c1.1-1.1,1.7-2.5,1.7-4.1V9.1c0-0.3,0-0.7-0.1-1C45.4,7,46.6,6,47,5.6C47.7,5,48,4.1,48,3.3z M42.3,9.1v11.4c0,1.1-0.4,2.2-1.2,3 L18.3,46.2c-0.3,0.3-0.9,0.3-1.2,0L1.8,30.9c-0.3-0.3-0.3-0.9,0-1.2L24.6,6.9c0.8-0.8,1.8-1.2,3-1.2h11.4c1.3,0,2.4,0.7,3,1.8 c-0.9,0.6-1.9,1.3-3,1.9c0,0-0.1-0.1-0.1-0.1c-1.3-1.3-3.3-1.3-4.6,0s-1.3,3.3,0,4.6c0.6,0.6,1.5,1,2.3,1c0.8,0,1.7-0.3,2.3-1 c0.9-0.9,1.1-2.1,0.8-3.1C40.6,10.2,41.5,9.6,42.3,9.1C42.3,9.1,42.3,9.1,42.3,9.1z M35.7,11.9c0.1,0.3,0.4,0.4,0.7,0.4 c0.1,0,0.2,0,0.3-0.1c0.5-0.2,0.9-0.5,1.4-0.7c0,0.4-0.2,0.9-0.5,1.2c-0.7,0.7-1.8,0.7-2.4,0c-0.7-0.7-0.7-1.8,0-2.4 c0.3-0.3,0.8-0.5,1.2-0.5c0.3,0,0.7,0.1,1,0.3c-0.4,0.2-0.9,0.5-1.3,0.7C35.7,11.1,35.6,11.5,35.7,11.9z\"\n});\n\nvar _ref3 = /*#__PURE__*/React.createElement(\"path\", {\n d: \"M16.3,25.8c-0.3-0.3-0.8-0.3-1.1,0c-0.3,0.3-0.3,0.8,0,1.1l2.4,2.4l-3,3l-2.4-2.4c-0.3-0.3-0.8-0.3-1.1,0 c-0.3,0.3-0.3,0.8,0,1.1l5.9,5.9c0.2,0.2,0.4,0.2,0.5,0.2s0.4-0.1,0.5-0.2c0.3-0.3,0.3-0.8,0-1.1l-2.4-2.4l3-3l2.4,2.4 c0.2,0.2,0.4,0.2,0.5,0.2s0.4-0.1,0.5-0.2c0.3-0.3,0.3-0.8,0-1.1L16.3,25.8z\"\n});\n\nvar _ref4 = /*#__PURE__*/React.createElement(\"path\", {\n d: \"M24.8,21.4c-1.4-1.4-3.8-1.4-5.2,0s-1.4,3.8,0,5.2l1.8,1.8c0.7,0.7,1.7,1.1,2.6,1.1s1.9-0.4,2.6-1.1c1.4-1.4,1.4-3.8,0-5.2 L24.8,21.4z M25.5,27.3c-0.8,0.8-2.2,0.8-3,0l-1.8-1.8c-0.8-0.8-0.8-2.2,0-3c0.4-0.4,1-0.6,1.5-0.6s1.1,0.2,1.5,0.6l1.8,1.8 C26.3,25.1,26.3,26.5,25.5,27.3z\"\n});\n\nvar _ref5 = /*#__PURE__*/React.createElement(\"path\", {\n d: \"M27.4,15.8l1.8-1.8c0.3-0.3,0.3-0.8,0-1.1c-0.3-0.3-0.8-0.3-1.1,0l-4.7,4.7c-0.3,0.3-0.3,0.8,0,1.1c0.2,0.2,0.4,0.2,0.5,0.2 s0.4-0.1,0.5-0.2l1.8-1.8l5.3,5.3c0.2,0.2,0.4,0.2,0.5,0.2c0.2,0,0.4-0.1,0.5-0.2c0.3-0.3,0.3-0.8,0-1.1L27.4,15.8z\"\n});\n\nvar SvgFiTag48 = function SvgFiTag48(_ref) {\n var svgRef = _ref.svgRef,\n title = _ref.title,\n props = _objectWithoutProperties(_ref, [\"svgRef\", \"title\"]);\n\n return /*#__PURE__*/React.createElement(\"svg\", _extends({\n width: 48,\n height: 48,\n ref: svgRef\n }, props), title ? /*#__PURE__*/React.createElement(\"title\", null, title) : null, _ref2, _ref3, _ref4, _ref5);\n};\n\nvar ForwardRef = /*#__PURE__*/React.forwardRef(function (props, ref) {\n return /*#__PURE__*/React.createElement(SvgFiTag48, _extends({\n svgRef: ref\n }, props));\n});\nexport default __webpack_public_path__ + \"static/media/fi-tag-48.00a295d7.svg\";\nexport { ForwardRef as ReactComponent };","function _extends() { _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }\n\nfunction _objectWithoutProperties(source, excluded) { if (source == null) return {}; var target = _objectWithoutPropertiesLoose(source, excluded); var key, i; if (Object.getOwnPropertySymbols) { var sourceSymbolKeys = Object.getOwnPropertySymbols(source); for (i = 0; i < sourceSymbolKeys.length; i++) { key = sourceSymbolKeys[i]; if (excluded.indexOf(key) >= 0) continue; if (!Object.prototype.propertyIsEnumerable.call(source, key)) continue; target[key] = source[key]; } } return target; }\n\nfunction _objectWithoutPropertiesLoose(source, excluded) { if (source == null) return {}; var target = {}; var sourceKeys = Object.keys(source); var key, i; for (i = 0; i < sourceKeys.length; i++) { key = sourceKeys[i]; if (excluded.indexOf(key) >= 0) continue; target[key] = source[key]; } return target; }\n\nimport React from \"react\";\n\nvar _ref2 = /*#__PURE__*/React.createElement(\"path\", {\n d: \"M7,14v-2h9v2H7z M14,7h2v2h-2V7z M12.5,6C12.8,6,13,6.2,13,6.5v3c0,0.3-0.2,0.5-0.5,0.5h-2 C10.2,10,10,9.8,10,9.5v-3C10,6.2,10.2,6,10.5,6H12.5z M7,2h9v2H7V2z M5.5,5h-2C3.2,5,3,4.8,3,4.5v-3C3,1.2,3.2,1,3.5,1h2 C5.8,1,6,1.2,6,1.5v3C6,4.8,5.8,5,5.5,5z M0,2h2v2H0V2z M9,9H0V7h9V9z M2,14H0v-2h2V14z M3.5,11h2C5.8,11,6,11.2,6,11.5v3 C6,14.8,5.8,15,5.5,15h-2C3.2,15,3,14.8,3,14.5v-3C3,11.2,3.2,11,3.5,11z\"\n});\n\nvar SvgFilters16 = function SvgFilters16(_ref) {\n var svgRef = _ref.svgRef,\n title = _ref.title,\n props = _objectWithoutProperties(_ref, [\"svgRef\", \"title\"]);\n\n return /*#__PURE__*/React.createElement(\"svg\", _extends({\n width: 16,\n height: 16,\n ref: svgRef\n }, props), title ? /*#__PURE__*/React.createElement(\"title\", null, title) : null, _ref2);\n};\n\nvar ForwardRef = /*#__PURE__*/React.forwardRef(function (props, ref) {\n return /*#__PURE__*/React.createElement(SvgFilters16, _extends({\n svgRef: ref\n }, props));\n});\nexport default __webpack_public_path__ + \"static/media/filters-16.fae20c05.svg\";\nexport { ForwardRef as ReactComponent };","function _extends() { _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }\n\nfunction _objectWithoutProperties(source, excluded) { if (source == null) return {}; var target = _objectWithoutPropertiesLoose(source, excluded); var key, i; if (Object.getOwnPropertySymbols) { var sourceSymbolKeys = Object.getOwnPropertySymbols(source); for (i = 0; i < sourceSymbolKeys.length; i++) { key = sourceSymbolKeys[i]; if (excluded.indexOf(key) >= 0) continue; if (!Object.prototype.propertyIsEnumerable.call(source, key)) continue; target[key] = source[key]; } } return target; }\n\nfunction _objectWithoutPropertiesLoose(source, excluded) { if (source == null) return {}; var target = {}; var sourceKeys = Object.keys(source); var key, i; for (i = 0; i < sourceKeys.length; i++) { key = sourceKeys[i]; if (excluded.indexOf(key) >= 0) continue; target[key] = source[key]; } return target; }\n\nimport React from \"react\";\n\nvar _ref2 = /*#__PURE__*/React.createElement(\"path\", {\n d: \"M14,3c2.2,0,4,1.8,4,4c0,4-5.2,10-8,10S2,11,2,7c0-2.2,1.8-4,4-4c1,0,1.9,0.4,2.7,1L10,5.2L11.3,4C12.1,3.4,13,3,14,3 M14,1 c-1.5,0-2.9,0.6-4,1.5C8.9,1.6,7.5,1,6,1C2.7,1,0,3.7,0,7c0,5,6,12,10,12s10-7,10-12C20,3.7,17.3,1,14,1L14,1z\"\n});\n\nvar SvgHeart20 = function SvgHeart20(_ref) {\n var svgRef = _ref.svgRef,\n title = _ref.title,\n props = _objectWithoutProperties(_ref, [\"svgRef\", \"title\"]);\n\n return /*#__PURE__*/React.createElement(\"svg\", _extends({\n width: 20,\n height: 20,\n ref: svgRef\n }, props), title ? /*#__PURE__*/React.createElement(\"title\", null, title) : null, _ref2);\n};\n\nvar ForwardRef = /*#__PURE__*/React.forwardRef(function (props, ref) {\n return /*#__PURE__*/React.createElement(SvgHeart20, _extends({\n svgRef: ref\n }, props));\n});\nexport default __webpack_public_path__ + \"static/media/heart-20.93b6c6ff.svg\";\nexport { ForwardRef as ReactComponent };","function _extends() { _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }\n\nfunction _objectWithoutProperties(source, excluded) { if (source == null) return {}; var target = _objectWithoutPropertiesLoose(source, excluded); var key, i; if (Object.getOwnPropertySymbols) { var sourceSymbolKeys = Object.getOwnPropertySymbols(source); for (i = 0; i < sourceSymbolKeys.length; i++) { key = sourceSymbolKeys[i]; if (excluded.indexOf(key) >= 0) continue; if (!Object.prototype.propertyIsEnumerable.call(source, key)) continue; target[key] = source[key]; } } return target; }\n\nfunction _objectWithoutPropertiesLoose(source, excluded) { if (source == null) return {}; var target = {}; var sourceKeys = Object.keys(source); var key, i; for (i = 0; i < sourceKeys.length; i++) { key = sourceKeys[i]; if (excluded.indexOf(key) >= 0) continue; target[key] = source[key]; } return target; }\n\nimport React from \"react\";\n\nvar _ref2 = /*#__PURE__*/React.createElement(\"path\", {\n d: \"M15.2,16H9.8C9.4,16,9,15.6,9,15.2V9.8C9,9.4,9.4,9,9.8,9h5.4C15.6,9,16,9.4,16,9.8v5.4C16,15.6,15.6,16,15.2,16z M15.2,7 H9.8C9.4,7,9,6.6,9,6.2V0.8C9,0.4,9.4,0,9.8,0h5.4C15.6,0,16,0.4,16,0.8v5.4C16,6.6,15.6,7,15.2,7z M6.2,16H0.8 C0.4,16,0,15.6,0,15.2V9.8C0,9.4,0.4,9,0.8,9h5.4C6.6,9,7,9.4,7,9.8v5.4C7,15.6,6.6,16,6.2,16z M6.2,7H0.8C0.4,7,0,6.6,0,6.2V0.8 C0,0.4,0.4,0,0.8,0h5.4C6.6,0,7,0.4,7,0.8v5.4C7,6.6,6.6,7,6.2,7z\"\n});\n\nvar SvgLayoutGrid16X16 = function SvgLayoutGrid16X16(_ref) {\n var svgRef = _ref.svgRef,\n title = _ref.title,\n props = _objectWithoutProperties(_ref, [\"svgRef\", \"title\"]);\n\n return /*#__PURE__*/React.createElement(\"svg\", _extends({\n width: 16,\n height: 16,\n ref: svgRef\n }, props), title ? /*#__PURE__*/React.createElement(\"title\", null, title) : null, _ref2);\n};\n\nvar ForwardRef = /*#__PURE__*/React.forwardRef(function (props, ref) {\n return /*#__PURE__*/React.createElement(SvgLayoutGrid16X16, _extends({\n svgRef: ref\n }, props));\n});\nexport default __webpack_public_path__ + \"static/media/layout-grid-16x16.561a6f5a.svg\";\nexport { ForwardRef as ReactComponent };","function _extends() { _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }\n\nfunction _objectWithoutProperties(source, excluded) { if (source == null) return {}; var target = _objectWithoutPropertiesLoose(source, excluded); var key, i; if (Object.getOwnPropertySymbols) { var sourceSymbolKeys = Object.getOwnPropertySymbols(source); for (i = 0; i < sourceSymbolKeys.length; i++) { key = sourceSymbolKeys[i]; if (excluded.indexOf(key) >= 0) continue; if (!Object.prototype.propertyIsEnumerable.call(source, key)) continue; target[key] = source[key]; } } return target; }\n\nfunction _objectWithoutPropertiesLoose(source, excluded) { if (source == null) return {}; var target = {}; var sourceKeys = Object.keys(source); var key, i; for (i = 0; i < sourceKeys.length; i++) { key = sourceKeys[i]; if (excluded.indexOf(key) >= 0) continue; target[key] = source[key]; } return target; }\n\nimport React from \"react\";\n\nvar _ref2 = /*#__PURE__*/React.createElement(\"path\", {\n d: \"M16,0.8v14.4c0,0.4-0.4,0.8-0.8,0.8H9.8C9.4,16,9,15.6,9,15.2V0.8C9,0.4,9.4,0,9.8,0l5.4,0C15.6,0,16,0.4,16,0.8z M7,0.8 v14.4C7,15.6,6.6,16,6.2,16H0.8C0.4,16,0,15.6,0,15.2L0,0.8C0,0.4,0.4,0,0.8,0l5.4,0C6.6,0,7,0.4,7,0.8z\"\n});\n\nvar SvgLayoutGridWithDetails16X16 = function SvgLayoutGridWithDetails16X16(_ref) {\n var svgRef = _ref.svgRef,\n title = _ref.title,\n props = _objectWithoutProperties(_ref, [\"svgRef\", \"title\"]);\n\n return /*#__PURE__*/React.createElement(\"svg\", _extends({\n width: 16,\n height: 16,\n ref: svgRef\n }, props), title ? /*#__PURE__*/React.createElement(\"title\", null, title) : null, _ref2);\n};\n\nvar ForwardRef = /*#__PURE__*/React.forwardRef(function (props, ref) {\n return /*#__PURE__*/React.createElement(SvgLayoutGridWithDetails16X16, _extends({\n svgRef: ref\n }, props));\n});\nexport default __webpack_public_path__ + \"static/media/layout-grid-with-details-16x16.a13d95e4.svg\";\nexport { ForwardRef as ReactComponent };","function _extends() { _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }\n\nfunction _objectWithoutProperties(source, excluded) { if (source == null) return {}; var target = _objectWithoutPropertiesLoose(source, excluded); var key, i; if (Object.getOwnPropertySymbols) { var sourceSymbolKeys = Object.getOwnPropertySymbols(source); for (i = 0; i < sourceSymbolKeys.length; i++) { key = sourceSymbolKeys[i]; if (excluded.indexOf(key) >= 0) continue; if (!Object.prototype.propertyIsEnumerable.call(source, key)) continue; target[key] = source[key]; } } return target; }\n\nfunction _objectWithoutPropertiesLoose(source, excluded) { if (source == null) return {}; var target = {}; var sourceKeys = Object.keys(source); var key, i; for (i = 0; i < sourceKeys.length; i++) { key = sourceKeys[i]; if (excluded.indexOf(key) >= 0) continue; target[key] = source[key]; } return target; }\n\nimport React from \"react\";\n\nvar _ref2 = /*#__PURE__*/React.createElement(\"path\", {\n d: \"M15.2,16H0.8C0.4,16,0,15.6,0,15.2V9.8C0,9.4,0.4,9,0.8,9h14.4C15.6,9,16,9.4,16,9.8v5.4C16,15.6,15.6,16,15.2,16z M15.2,7 H0.8C0.4,7,0,6.6,0,6.2V0.8C0,0.4,0.4,0,0.8,0h14.4C15.6,0,16,0.4,16,0.8v5.4C16,6.6,15.6,7,15.2,7z\"\n});\n\nvar SvgLayoutList16X16 = function SvgLayoutList16X16(_ref) {\n var svgRef = _ref.svgRef,\n title = _ref.title,\n props = _objectWithoutProperties(_ref, [\"svgRef\", \"title\"]);\n\n return /*#__PURE__*/React.createElement(\"svg\", _extends({\n width: 16,\n height: 16,\n ref: svgRef\n }, props), title ? /*#__PURE__*/React.createElement(\"title\", null, title) : null, _ref2);\n};\n\nvar ForwardRef = /*#__PURE__*/React.forwardRef(function (props, ref) {\n return /*#__PURE__*/React.createElement(SvgLayoutList16X16, _extends({\n svgRef: ref\n }, props));\n});\nexport default __webpack_public_path__ + \"static/media/layout-list-16x16.e1a94a2e.svg\";\nexport { ForwardRef as ReactComponent };","function _extends() { _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }\n\nfunction _objectWithoutProperties(source, excluded) { if (source == null) return {}; var target = _objectWithoutPropertiesLoose(source, excluded); var key, i; if (Object.getOwnPropertySymbols) { var sourceSymbolKeys = Object.getOwnPropertySymbols(source); for (i = 0; i < sourceSymbolKeys.length; i++) { key = sourceSymbolKeys[i]; if (excluded.indexOf(key) >= 0) continue; if (!Object.prototype.propertyIsEnumerable.call(source, key)) continue; target[key] = source[key]; } } return target; }\n\nfunction _objectWithoutPropertiesLoose(source, excluded) { if (source == null) return {}; var target = {}; var sourceKeys = Object.keys(source); var key, i; for (i = 0; i < sourceKeys.length; i++) { key = sourceKeys[i]; if (excluded.indexOf(key) >= 0) continue; target[key] = source[key]; } return target; }\n\nimport React from \"react\";\n\nvar _ref2 = /*#__PURE__*/React.createElement(\"path\", {\n d: \"M194.797,18 L184,18 C184,18.552 183.552,19 183,19 L182,19 C181.448,19 181,18.552 181,18 L181,16 L178.377,16 C177.708,16 177.119,15.556 176.935,14.912 L173.246,2 L168,2 L168,4 L168.500,4 C169.328,4 170,4.672 170,5.500 L170,24.500 C170,25.328 169.328,26 168.500,26 L165.500,26 C164.672,26 164,25.328 164,24.500 L164,5.500 C164,4.672 164.672,4 165.500,4 L166,4 L166,1.500 C166,0.672 166.672,0 167.500,0 L173.622,0 C174.292,0 174.881,0.444 175.065,1.088 L178.754,14 L181,14 L181,13 C181,12.448 181.448,12 182,12 L183,12 C183.552,12 184,12.448 184,13 L194.797,13 C195.461,13 196,13.539 196,14.203 L196,16.797 C196,17.461 195.461,18 194.797,18 ZM156.783,26 L154.483,26 C153.767,26 153.129,25.552 152.884,24.878 L150.437,18.135 C150.407,18.054 150.331,18 150.245,18 L142.768,18 C142.682,18 142.606,18.054 142.576,18.135 L140.129,24.878 C139.884,25.552 139.245,26 138.530,26 L136.230,26 C135.395,26 134.815,25.169 135.100,24.383 L143.445,1.122 C143.690,0.448 144.328,0 145.044,0 L147.969,0 C148.685,0 149.323,0.448 149.568,1.122 L157.913,24.383 C158.198,25.169 157.618,26 156.783,26 ZM148.472,12.725 L146.698,7.848 C146.633,7.668 146.380,7.668 146.315,7.848 L144.541,12.725 C144.492,12.859 144.591,13 144.733,13 L148.280,13 C148.422,13 148.521,12.859 148.472,12.725 ZM130.493,26 L128.090,26 C127.555,26 127.060,25.714 126.792,25.250 L122.610,18 L120.003,22.520 L120.003,24.500 C120.003,25.328 119.333,26 118.505,26 L116.507,26 C115.680,26 115.009,25.328 115.009,24.500 L115.009,1.500 C115.009,0.672 115.680,0 116.507,0 L118.505,0 C119.333,0 120.003,0.672 120.003,1.500 L120.003,12.520 L126.792,0.750 C127.060,0.286 127.555,0 128.090,0 L130.493,0 C131.646,0 132.367,1.250 131.791,2.250 L125.487,13 L131.791,23.750 C132.367,24.750 131.646,26 130.493,26 ZM103.987,15.775 L103.987,24.500 C103.987,25.328 103.315,26 102.486,26 L100.485,26 C99.656,26 98.984,25.328 98.984,24.500 L98.984,15.775 L98.594,15.100 L91.180,2.250 C90.610,1.250 91.330,0 92.481,0 L94.792,0 C95.322,0 95.823,0.290 96.093,0.750 L101.486,10.090 L106.879,0.750 C107.149,0.290 107.649,0 108.179,0 L110.491,0 C111.641,0 112.362,1.250 111.791,2.250 L103.987,15.775 ZM79,26 C71.821,26 66,20.179 66,13 C66,5.820 71.821,-0.001 79,-0.001 C86.180,-0.001 92.001,5.820 92.001,13 C92.001,20.179 86.180,26 79,26 ZM79,5 C74.582,5 71,8.582 71,13 C71,17.418 74.582,21 79,21 C83.418,21 87,17.418 87,13 C87,8.582 83.418,5 79,5 ZM62.793,23.750 C63.362,24.750 62.643,26 61.494,26 L59.186,26 C58.656,26 58.157,25.710 57.887,25.250 L53.711,18 L49.005,18 L49.005,24.500 C49.005,25.330 48.335,26 47.506,26 L45.508,26 C44.679,26 44.009,25.330 44.009,24.500 L44.009,1.500 C44.009,0.670 44.679,0 45.508,0 L54,0 C58.966,0 62.992,4.030 62.992,9 C62.992,12.240 61.274,15.090 58.706,16.670 L62.793,23.750 ZM54,5 L50.004,5 C49.454,5 49.005,5.450 49.005,6 L49.005,12 C49.005,12.550 49.454,13 50.004,13 L54,13 C56.208,13 57.997,11.210 57.997,9 C57.997,6.790 56.208,5 54,5 ZM39.500,5 L33,5 L33,24.500 C33,25.328 32.328,26 31.500,26 L29.500,26 C28.672,26 28,25.328 28,24.500 L28,5 L21.500,5 C20.672,5 20,4.328 20,3.500 L20,1.500 C20,0.672 20.672,0 21.500,0 L39.500,0 C40.328,0 41,0.672 41,1.500 L41,3.500 C41,4.328 40.328,5 39.500,5 ZM16.487,8 L14.181,8 C13.565,8 13.040,7.611 12.790,7.048 C12.261,5.856 10.765,5 9,5 C6.793,5 5.005,6.340 5.005,8 C5.005,8.940 5.575,9.780 6.483,10.320 C6.706,10.455 6.948,10.574 7.206,10.673 C8.059,11 8.412,12.020 7.955,12.812 L6.948,14.558 C6.573,15.208 5.768,15.499 5.080,15.201 C3.872,14.679 2.815,13.924 1.989,13 C0.751,11.630 0.012,9.890 0.012,8 C0.012,3.580 4.037,0 9,0 C13.254,0 17.017,2.629 17.950,6.163 C18.196,7.095 17.450,8 16.487,8 ZM1.513,18 L3.820,18 C4.435,18 4.960,18.389 5.210,18.952 C5.739,20.144 7.236,21 9,21 C11.207,21 12.995,19.660 12.995,18 C12.995,17.060 12.426,16.220 11.517,15.680 C11.294,15.544 11.052,15.426 10.794,15.327 C9.941,14.999 9.588,13.980 10.045,13.188 L11.053,11.442 C11.427,10.792 12.233,10.501 12.920,10.799 C14.128,11.320 15.185,12.075 16.011,13 C17.249,14.370 17.988,16.110 17.988,18 C17.988,22.420 13.964,26 9,26 C4.747,26 0.983,23.371 0.050,19.837 C-0.196,18.905 0.550,18 1.513,18 Z\"\n});\n\nvar SvgLogo = function SvgLogo(_ref) {\n var svgRef = _ref.svgRef,\n title = _ref.title,\n props = _objectWithoutProperties(_ref, [\"svgRef\", \"title\"]);\n\n return /*#__PURE__*/React.createElement(\"svg\", _extends({\n width: \"196px\",\n height: \"26px\",\n ref: svgRef\n }, props), title ? /*#__PURE__*/React.createElement(\"title\", null, title) : null, _ref2);\n};\n\nvar ForwardRef = /*#__PURE__*/React.forwardRef(function (props, ref) {\n return /*#__PURE__*/React.createElement(SvgLogo, _extends({\n svgRef: ref\n }, props));\n});\nexport default __webpack_public_path__ + \"static/media/logo.833bcde2.svg\";\nexport { ForwardRef as ReactComponent };","function _extends() { _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }\n\nfunction _objectWithoutProperties(source, excluded) { if (source == null) return {}; var target = _objectWithoutPropertiesLoose(source, excluded); var key, i; if (Object.getOwnPropertySymbols) { var sourceSymbolKeys = Object.getOwnPropertySymbols(source); for (i = 0; i < sourceSymbolKeys.length; i++) { key = sourceSymbolKeys[i]; if (excluded.indexOf(key) >= 0) continue; if (!Object.prototype.propertyIsEnumerable.call(source, key)) continue; target[key] = source[key]; } } return target; }\n\nfunction _objectWithoutPropertiesLoose(source, excluded) { if (source == null) return {}; var target = {}; var sourceKeys = Object.keys(source); var key, i; for (i = 0; i < sourceKeys.length; i++) { key = sourceKeys[i]; if (excluded.indexOf(key) >= 0) continue; target[key] = source[key]; } return target; }\n\nimport React from \"react\";\n\nvar _ref2 = /*#__PURE__*/React.createElement(\"path\", {\n d: \"M118.5,20h-1.1c-0.6,0-1.2-0.4-1.4-1l-1.5-4h-6.1l-1.5,4c-0.2,0.6-0.8,1-1.4,1h-1.1c-1,0-1.8-1-1.4-2l1.1-3 l1.5-4l3.6-10c0.2-0.6,0.8-1,1.4-1h1.6c0.6,0,1.2,0.4,1.4,1l3.6,10l1.5,4l1.1,3C120.3,19,119.5,20,118.5,20z M111.5,6.6l-1.6,4.4 h3.2L111.5,6.6z M99.5,20h-1.4c-0.4,0-0.7-0.2-0.9-0.5L94,14l-2,3.5v1c0,0.8-0.7,1.5-1.5,1.5h-1c-0.8,0-1.5-0.7-1.5-1.5v-17 C88,0.7,88.7,0,89.5,0h1C91.3,0,92,0.7,92,1.5v8L94,6l3.2-5.5C97.4,0.2,97.7,0,98.1,0h1.4c1.2,0,1.9,1.3,1.3,2.3L96.3,10l4.5,7.8 C101.4,18.8,100.7,20,99.5,20z M80.3,11.8L80,12.3v6.2c0,0.8-0.7,1.5-1.5,1.5h-1c-0.8,0-1.5-0.7-1.5-1.5v-6.2l-0.3-0.5l-5.5-9.5 c-0.6-1,0.2-2.3,1.3-2.3h1.4c0.4,0,0.7,0.2,0.9,0.5L76,4.3l2,3.5l2-3.5l2.2-3.8C82.4,0.2,82.7,0,83.1,0h1.4c1.2,0,1.9,1.3,1.3,2.3 L80.3,11.8z M60,20c-5.5,0-10-4.5-10-10S54.5,0,60,0s10,4.5,10,10S65.5,20,60,20z M60,4c-3.3,0-6,2.7-6,6s2.7,6,6,6s6-2.7,6-6 S63.3,4,60,4z M47.8,17.8c0.6,1-0.2,2.3-1.3,2.3h-2L41,14h-4v4.5c0,0.8-0.7,1.5-1.5,1.5h-1c-0.8,0-1.5-0.7-1.5-1.5v-17 C33,0.7,33.7,0,34.5,0H41c0.3,0,0.7,0,1,0.1c3.4,0.5,6,3.4,6,6.9c0,2.4-1.2,4.5-3.1,5.8L47.8,17.8z M42,4.2C41.7,4.1,41.3,4,41,4h-3 c-0.6,0-1,0.4-1,1v4c0,0.6,0.4,1,1,1h3c0.3,0,0.7-0.1,1-0.2c0.3-0.1,0.6-0.3,0.9-0.5C43.6,8.8,44,7.9,44,7C44,5.7,43.2,4.6,42,4.2z M29.5,4H25v14.5c0,0.8-0.7,1.5-1.5,1.5h-1c-0.8,0-1.5-0.7-1.5-1.5V4h-4.5C15.7,4,15,3.3,15,2.5v-1C15,0.7,15.7,0,16.5,0h13 C30.3,0,31,0.7,31,1.5v1C31,3.3,30.3,4,29.5,4z M6.5,20c-2.8,0-5.5-1.7-6.4-4c-0.4-1,0.3-2,1.3-2h1c0.5,0,0.9,0.3,1.2,0.7 c0.2,0.3,0.4,0.6,0.8,0.8C4.9,15.8,5.8,16,6.5,16c1.5,0,2.8-0.9,2.8-2c0-0.7-0.5-1.3-1.2-1.6C7.4,12,7,11,7.4,10.3l0.4-0.9 c0.4-0.7,1.2-1,1.8-0.6c0.6,0.3,1.2,0.7,1.6,1.2c1,1.1,1.7,2.5,1.7,4C13,17.3,10.1,20,6.5,20z M11.6,6h-1c-0.5,0-0.9-0.3-1.2-0.7 C9.2,4.9,8.9,4.7,8.6,4.5C8.1,4.2,7.2,4,6.5,4C5,4,3.7,4.9,3.7,6c0,0.7,0.5,1.3,1.2,1.6C5.6,8,6,9,5.6,9.7l-0.4,0.9 c-0.4,0.7-1.2,1-1.8,0.6c-0.6-0.3-1.2-0.7-1.6-1.2C0.6,8.9,0,7.5,0,6c0-3.3,2.9-6,6.5-6c2.8,0,5.5,1.7,6.4,4C13.3,4.9,12.6,6,11.6,6 z\"\n});\n\nvar SvgLogoSmall = function SvgLogoSmall(_ref) {\n var svgRef = _ref.svgRef,\n title = _ref.title,\n props = _objectWithoutProperties(_ref, [\"svgRef\", \"title\"]);\n\n return /*#__PURE__*/React.createElement(\"svg\", _extends({\n width: \"120px\",\n height: \"20px\",\n ref: svgRef\n }, props), title ? /*#__PURE__*/React.createElement(\"title\", null, title) : null, _ref2);\n};\n\nvar ForwardRef = /*#__PURE__*/React.forwardRef(function (props, ref) {\n return /*#__PURE__*/React.createElement(SvgLogoSmall, _extends({\n svgRef: ref\n }, props));\n});\nexport default __webpack_public_path__ + \"static/media/logo-small.e16633df.svg\";\nexport { ForwardRef as ReactComponent };","function _extends() { _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }\n\nfunction _objectWithoutProperties(source, excluded) { if (source == null) return {}; var target = _objectWithoutPropertiesLoose(source, excluded); var key, i; if (Object.getOwnPropertySymbols) { var sourceSymbolKeys = Object.getOwnPropertySymbols(source); for (i = 0; i < sourceSymbolKeys.length; i++) { key = sourceSymbolKeys[i]; if (excluded.indexOf(key) >= 0) continue; if (!Object.prototype.propertyIsEnumerable.call(source, key)) continue; target[key] = source[key]; } } return target; }\n\nfunction _objectWithoutPropertiesLoose(source, excluded) { if (source == null) return {}; var target = {}; var sourceKeys = Object.keys(source); var key, i; for (i = 0; i < sourceKeys.length; i++) { key = sourceKeys[i]; if (excluded.indexOf(key) >= 0) continue; target[key] = source[key]; } return target; }\n\nimport React from \"react\";\n\nvar _ref2 = /*#__PURE__*/React.createElement(\"path\", {\n d: \"M-0.000,8.000 L-0.000,6.000 L18.000,6.000 L18.000,8.000 L-0.000,8.000 ZM-0.000,-0.000 L18.000,-0.000 L18.000,2.000 L-0.000,2.000 L-0.000,-0.000 ZM14.000,14.000 L-0.000,14.000 L-0.000,12.000 L14.000,12.000 L14.000,14.000 Z\"\n});\n\nvar SvgMenu18X14 = function SvgMenu18X14(_ref) {\n var svgRef = _ref.svgRef,\n title = _ref.title,\n props = _objectWithoutProperties(_ref, [\"svgRef\", \"title\"]);\n\n return /*#__PURE__*/React.createElement(\"svg\", _extends({\n width: \"18px\",\n height: \"14px\",\n ref: svgRef\n }, props), title ? /*#__PURE__*/React.createElement(\"title\", null, title) : null, _ref2);\n};\n\nvar ForwardRef = /*#__PURE__*/React.forwardRef(function (props, ref) {\n return /*#__PURE__*/React.createElement(SvgMenu18X14, _extends({\n svgRef: ref\n }, props));\n});\nexport default __webpack_public_path__ + \"static/media/menu-18x14.9414eccc.svg\";\nexport { ForwardRef as ReactComponent };","function _extends() { _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }\n\nfunction _objectWithoutProperties(source, excluded) { if (source == null) return {}; var target = _objectWithoutPropertiesLoose(source, excluded); var key, i; if (Object.getOwnPropertySymbols) { var sourceSymbolKeys = Object.getOwnPropertySymbols(source); for (i = 0; i < sourceSymbolKeys.length; i++) { key = sourceSymbolKeys[i]; if (excluded.indexOf(key) >= 0) continue; if (!Object.prototype.propertyIsEnumerable.call(source, key)) continue; target[key] = source[key]; } } return target; }\n\nfunction _objectWithoutPropertiesLoose(source, excluded) { if (source == null) return {}; var target = {}; var sourceKeys = Object.keys(source); var key, i; for (i = 0; i < sourceKeys.length; i++) { key = sourceKeys[i]; if (excluded.indexOf(key) >= 0) continue; target[key] = source[key]; } return target; }\n\nimport React from \"react\";\n\nvar _ref2 = /*#__PURE__*/React.createElement(\"path\", {\n d: \"M14,15h-4v-2h3v-3h2v4C15,14.6,14.6,15,14,15z M13,3h-3V1h4c0.6,0,1,0.4,1,1v4h-2V3z M6,3H3v3H1V2c0-0.6,0.4-1,1-1h4V3z M3,13h3v2H2c-0.6,0-1-0.4-1-1v-4h2V13z\"\n});\n\nvar SvgQuickview16 = function SvgQuickview16(_ref) {\n var svgRef = _ref.svgRef,\n title = _ref.title,\n props = _objectWithoutProperties(_ref, [\"svgRef\", \"title\"]);\n\n return /*#__PURE__*/React.createElement(\"svg\", _extends({\n width: 16,\n height: 16,\n ref: svgRef\n }, props), title ? /*#__PURE__*/React.createElement(\"title\", null, title) : null, _ref2);\n};\n\nvar ForwardRef = /*#__PURE__*/React.forwardRef(function (props, ref) {\n return /*#__PURE__*/React.createElement(SvgQuickview16, _extends({\n svgRef: ref\n }, props));\n});\nexport default __webpack_public_path__ + \"static/media/quickview-16.a0532c00.svg\";\nexport { ForwardRef as ReactComponent };","function _extends() { _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }\n\nfunction _objectWithoutProperties(source, excluded) { if (source == null) return {}; var target = _objectWithoutPropertiesLoose(source, excluded); var key, i; if (Object.getOwnPropertySymbols) { var sourceSymbolKeys = Object.getOwnPropertySymbols(source); for (i = 0; i < sourceSymbolKeys.length; i++) { key = sourceSymbolKeys[i]; if (excluded.indexOf(key) >= 0) continue; if (!Object.prototype.propertyIsEnumerable.call(source, key)) continue; target[key] = source[key]; } } return target; }\n\nfunction _objectWithoutPropertiesLoose(source, excluded) { if (source == null) return {}; var target = {}; var sourceKeys = Object.keys(source); var key, i; for (i = 0; i < sourceKeys.length; i++) { key = sourceKeys[i]; if (excluded.indexOf(key) >= 0) continue; target[key] = source[key]; } return target; }\n\nimport React from \"react\";\n\nvar _ref2 = /*#__PURE__*/React.createElement(\"path\", {\n className: \"rating__fill\",\n d: \"M7,0.3L9,4h3.5c0.4,0.1,0.6,0.8,0.3,1.1L10,7.4l1,4c0.1,0.4-0.4,0.8-0.8,0.6L6.5,10l-3.7,1.9c-0.4,0.2-0.9-0.1-0.8-0.6l1-4 L0.2,5.1C-0.2,4.8,0,4.1,0.5,4H4l2-3.7C6.2-0.1,6.8-0.1,7,0.3z\"\n});\n\nvar _ref3 = /*#__PURE__*/React.createElement(\"path\", {\n className: \"rating__stroke\",\n d: \"M6.5,1.5l1.6,3L8.4,5H9h2.4l-2,1.6L8.9,7L9,7.6l0.7,3L7,9.1L6.5,8.9L6,9.1l-2.8,1.5l0.7-3L4.1,7L3.6,6.6L1.6,5 H4h0.6l0.3-0.5L6.5,1.5 M6.5,0C6.3,0,6.1,0.1,6,0.3L4,4H0.5C0,4.1-0.2,4.8,0.2,5.1L3,7.4l-1,4C1.9,11.7,2.2,12,2.5,12 c0.1,0,0.2,0,0.3-0.1L6.5,10l3.7,1.9c0.1,0,0.2,0.1,0.3,0.1c0.3,0,0.6-0.3,0.5-0.6l-1-4l2.8-2.3c0.3-0.3,0.1-1-0.3-1.1H9L7,0.3 C6.9,0.1,6.7,0,6.5,0L6.5,0z\"\n});\n\nvar SvgRating13X12 = function SvgRating13X12(_ref) {\n var svgRef = _ref.svgRef,\n title = _ref.title,\n props = _objectWithoutProperties(_ref, [\"svgRef\", \"title\"]);\n\n return /*#__PURE__*/React.createElement(\"svg\", _extends({\n width: \"13px\",\n height: \"12px\",\n ref: svgRef\n }, props), title ? /*#__PURE__*/React.createElement(\"title\", null, title) : null, _ref2, _ref3);\n};\n\nvar ForwardRef = /*#__PURE__*/React.forwardRef(function (props, ref) {\n return /*#__PURE__*/React.createElement(SvgRating13X12, _extends({\n svgRef: ref\n }, props));\n});\nexport default __webpack_public_path__ + \"static/media/rating-13x12.1b14329a.svg\";\nexport { ForwardRef as ReactComponent };","function _extends() { _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }\n\nfunction _objectWithoutProperties(source, excluded) { if (source == null) return {}; var target = _objectWithoutPropertiesLoose(source, excluded); var key, i; if (Object.getOwnPropertySymbols) { var sourceSymbolKeys = Object.getOwnPropertySymbols(source); for (i = 0; i < sourceSymbolKeys.length; i++) { key = sourceSymbolKeys[i]; if (excluded.indexOf(key) >= 0) continue; if (!Object.prototype.propertyIsEnumerable.call(source, key)) continue; target[key] = source[key]; } } return target; }\n\nfunction _objectWithoutPropertiesLoose(source, excluded) { if (source == null) return {}; var target = {}; var sourceKeys = Object.keys(source); var key, i; for (i = 0; i < sourceKeys.length; i++) { key = sourceKeys[i]; if (excluded.indexOf(key) >= 0) continue; target[key] = source[key]; } return target; }\n\nimport React from \"react\";\n\nvar _ref2 = /*#__PURE__*/React.createElement(\"path\", {\n d: \"M19.2,17.8c0,0-0.2,0.5-0.5,0.8c-0.4,0.4-0.9,0.6-0.9,0.6s-0.9,0.7-2.8-1.6c-1.1-1.4-2.2-2.8-3.1-3.9C10.9,14.5,9.5,15,8,15 c-3.9,0-7-3.1-7-7s3.1-7,7-7s7,3.1,7,7c0,1.5-0.5,2.9-1.3,4c1.1,0.8,2.5,2,4,3.1C20,16.8,19.2,17.8,19.2,17.8z M8,3C5.2,3,3,5.2,3,8 c0,2.8,2.2,5,5,5c2.8,0,5-2.2,5-5C13,5.2,10.8,3,8,3z\"\n});\n\nvar SvgSearch20 = function SvgSearch20(_ref) {\n var svgRef = _ref.svgRef,\n title = _ref.title,\n props = _objectWithoutProperties(_ref, [\"svgRef\", \"title\"]);\n\n return /*#__PURE__*/React.createElement(\"svg\", _extends({\n width: 20,\n height: 20,\n ref: svgRef\n }, props), title ? /*#__PURE__*/React.createElement(\"title\", null, title) : null, _ref2);\n};\n\nvar ForwardRef = /*#__PURE__*/React.forwardRef(function (props, ref) {\n return /*#__PURE__*/React.createElement(SvgSearch20, _extends({\n svgRef: ref\n }, props));\n});\nexport default __webpack_public_path__ + \"static/media/search-20.5d954e6d.svg\";\nexport { ForwardRef as ReactComponent };","function _extends() { _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }\n\nfunction _objectWithoutProperties(source, excluded) { if (source == null) return {}; var target = _objectWithoutPropertiesLoose(source, excluded); var key, i; if (Object.getOwnPropertySymbols) { var sourceSymbolKeys = Object.getOwnPropertySymbols(source); for (i = 0; i < sourceSymbolKeys.length; i++) { key = sourceSymbolKeys[i]; if (excluded.indexOf(key) >= 0) continue; if (!Object.prototype.propertyIsEnumerable.call(source, key)) continue; target[key] = source[key]; } } return target; }\n\nfunction _objectWithoutPropertiesLoose(source, excluded) { if (source == null) return {}; var target = {}; var sourceKeys = Object.keys(source); var key, i; for (i = 0; i < sourceKeys.length; i++) { key = sourceKeys[i]; if (excluded.indexOf(key) >= 0) continue; target[key] = source[key]; } return target; }\n\nimport React from \"react\";\n\nvar _ref2 = /*#__PURE__*/React.createElement(\"path\", {\n d: \"M13.9,8.4l-5.4,5.4c-0.3,0.3-0.7,0.3-1,0L2.1,8.4c-1.5-1.5-1.5-3.8,0-5.3C2.8,2.4,3.8,2,4.8,2s1.9,0.4,2.6,1.1L8,3.7 l0.6-0.6C9.3,2.4,10.3,2,11.3,2c1,0,1.9,0.4,2.6,1.1C15.4,4.6,15.4,6.9,13.9,8.4z\"\n});\n\nvar SvgWishlist16 = function SvgWishlist16(_ref) {\n var svgRef = _ref.svgRef,\n title = _ref.title,\n props = _objectWithoutProperties(_ref, [\"svgRef\", \"title\"]);\n\n return /*#__PURE__*/React.createElement(\"svg\", _extends({\n width: 16,\n height: 16,\n ref: svgRef\n }, props), title ? /*#__PURE__*/React.createElement(\"title\", null, title) : null, _ref2);\n};\n\nvar ForwardRef = /*#__PURE__*/React.forwardRef(function (props, ref) {\n return /*#__PURE__*/React.createElement(SvgWishlist16, _extends({\n svgRef: ref\n }, props));\n});\nexport default __webpack_public_path__ + \"static/media/wishlist-16.fa274ec1.svg\";\nexport { ForwardRef as ReactComponent };","// react\r\nimport React from 'react';\r\n\r\n// third-party\r\nimport classNames from 'classnames';\r\nimport PropTypes from 'prop-types';\r\n\r\n// application\r\nimport AppLink from '../shared/AppLink';\r\nimport { ArrowRoundedRight6x9Svg } from '../../svg';\r\n\r\n\r\nfunction Menu(props) {\r\n const {\r\n layout,\r\n withIcons,\r\n items,\r\n onClick,\r\n } = props;\r\n\r\n const renderLink = (item, content) => {\r\n let link;\r\n\r\n if (item.url) {\r\n link = (\r\n <AppLink\r\n {...item.props}\r\n to={item.url}\r\n onClick={() => onClick(item)}\r\n >\r\n {content}\r\n </AppLink>\r\n );\r\n } else {\r\n link = <button type=\"button\" onClick={() => onClick(item)}>{content}</button>;\r\n }\r\n\r\n return link;\r\n };\r\n\r\n const itemsList = items.map((item, index) => {\r\n let arrow;\r\n let submenu;\r\n let icon;\r\n\r\n if (item.submenu) {\r\n arrow = <ArrowRoundedRight6x9Svg className=\"menu__arrow\" />;\r\n }\r\n\r\n if (item.submenu) {\r\n submenu = (\r\n <div className=\"menu__submenu\">\r\n <Menu items={item.submenu} />\r\n </div>\r\n );\r\n }\r\n\r\n if (withIcons && item.icon) {\r\n icon = (\r\n <div className=\"menu__icon\">\r\n <img src={item.icon} srcSet={item.icon_srcset} alt=\"\" />\r\n </div>\r\n );\r\n }\r\n\r\n return (\r\n <li key={index}>\r\n {renderLink(item, (\r\n <React.Fragment>\r\n {icon}\r\n {item.title}\r\n {arrow}\r\n </React.Fragment>\r\n ))}\r\n {submenu}\r\n </li>\r\n );\r\n });\r\n\r\n const classes = classNames(`menu menu--layout--${layout}`, {\r\n 'menu--with-icons': withIcons,\r\n });\r\n\r\n return (\r\n <ul className={classes}>\r\n {itemsList}\r\n </ul>\r\n );\r\n}\r\n\r\nMenu.propTypes = {\r\n /** one of ['classic', 'topbar'] (default: 'classic') */\r\n layout: PropTypes.oneOf(['classic', 'topbar']),\r\n /** default: false */\r\n withIcons: PropTypes.bool,\r\n /** array of menu items */\r\n items: PropTypes.array,\r\n /** callback function that is called when the item is clicked */\r\n onClick: PropTypes.func,\r\n};\r\n\r\nMenu.defaultProps = {\r\n layout: 'classic',\r\n withIcons: false,\r\n items: [],\r\n onClick: () => {},\r\n};\r\n\r\nexport default Menu;\r\n","export const _path = {\r\n ROOTMAIN: '/app'\r\n}\r\n\r\nconst menu = [{\r\n layout: 'app',\r\n title: 'Cotizaciones',\r\n url: `${_path.ROOTMAIN}/cotizaciones`,\r\n submenu: {\r\n type: 'menu',\r\n menu: [\r\n { title: 'Cotizaciones', url: `${_path.ROOTMAIN}/cotizaciones` },\r\n { title: 'Preventas', url: `${_path.ROOTMAIN}/pre-ventas` },\r\n ],\r\n },\r\n},{\r\n layout: 'app',\r\n title: 'Facturacion',\r\n url: `${_path.ROOTMAIN}/facturas`,\r\n submenu: {\r\n type: 'menu',\r\n menu: [\r\n { title: 'Facturas', url: `${_path.ROOTMAIN}/facturas` },\r\n { title: 'Actualizar Facturas', url: `${_path.ROOTMAIN}/facturas-updates` }, \r\n { title: 'Gestión de caja', url: `${_path.ROOTMAIN}/cierres-caja` }, \r\n { title: 'Recibos', url: `${_path.ROOTMAIN}/recibos` }, \r\n { title: 'Nota de Crédito', url: `${_path.ROOTMAIN}/notascreditos` }, \r\n { \r\n title: 'Reportes', \r\n url: ``,\r\n submenu : [\r\n { title: 'Ventas', url: `${_path.ROOTMAIN}/facturas/reportes/ventas` },\r\n { title: 'Recibos', url: `${_path.ROOTMAIN}/facturas/reportes/recibos` },\r\n { title: 'Comisiones', url: `${_path.ROOTMAIN}/facturas/reportes/comisiones` },\r\n { title: 'Dashboard', url: `${_path.ROOTMAIN}/facturas/reportes/dashboard`, icon: 'dashboard.png' },\r\n ]\r\n }, \r\n ],\r\n },\r\n},{\r\n layout: 'app',\r\n title: 'Inventario',\r\n url: `${_path.ROOTMAIN}/productos` ,\r\n submenu: {\r\n type: 'menu',\r\n menu: [\r\n { title: 'Productos', url: `${_path.ROOTMAIN}/productos` }, \r\n { title: 'Categorias', url: `${_path.ROOTMAIN}/grupos` },\r\n { title: 'Marcas', url: `${_path.ROOTMAIN}/marcas` },\r\n { title: 'Unidad Medida', url: `${_path.ROOTMAIN}/unidadmedida` }, \r\n { title: 'Tasa de cambio', url: `${_path.ROOTMAIN}/tasa-de-cambio` },\r\n { title: 'Existencias por fecha', url: `${_path.ROOTMAIN}/inventario/reportes/existencias-fecha` },\r\n { \r\n title: 'Reportes', \r\n url: ``,\r\n submenu : [\r\n { title: 'Kardex', url: `${_path.ROOTMAIN}/inventario/reportes/kardex` },\r\n { title: 'Existencias', url: `${_path.ROOTMAIN}/inventario/reportes/existencias` },\r\n { title: 'Stock/Precios', url: `${_path.ROOTMAIN}/inventario/reportes/stock` },\r\n { title: 'Ult ingresos', url: `${_path.ROOTMAIN}/inventario/reportes/ingresos` },\r\n ]\r\n }\r\n ],\r\n }\r\n},{\r\n layout: 'app',\r\n title: 'Clientes',\r\n url: `${_path.ROOTMAIN}/clientes` ,\r\n submenu: {\r\n type: 'menu',\r\n menu: [\r\n { title: 'Gestión de clientes', url: `${_path.ROOTMAIN}/clientes` }, \r\n { title: 'Cuentas por cobrar', url: `${_path.ROOTMAIN}/clientes/pending` }, \r\n ],\r\n },\r\n},{\r\n layout: 'app',\r\n title: 'Compras',\r\n url: `${_path.ROOTMAIN}/compras` ,\r\n submenu: {\r\n type: 'menu',\r\n menu: [\r\n { title: 'Lista de compras', url: `${_path.ROOTMAIN}/compras` }, \r\n { title: 'Proveedores', url: `${_path.ROOTMAIN}/proveedores` }, \r\n { \r\n title: 'Reportes', \r\n url: ``,\r\n submenu : [\r\n { title: 'Compras de productos', url: `${_path.ROOTMAIN}/compras/reportes/` }, \r\n ]\r\n } \r\n ],\r\n },\r\n},{\r\n layout: 'app',\r\n title: 'Entradas',\r\n url: `${_path.ROOTMAIN}/movimientos/entradas` ,\r\n submenu: {\r\n type: 'menu',\r\n menu: [ \r\n { title: 'Ajuste', url: `${_path.ROOTMAIN}/movimientos/entradas` },\r\n { title: 'Inventario Inicial', url: `${_path.ROOTMAIN}/movimientos/inv-inicial` },\r\n { title: 'Solicitud de traslado', url: `${_path.ROOTMAIN}/movimientos/traslados` }, \r\n ],\r\n },\r\n},{\r\n layout: 'app',\r\n title: 'Salidas',\r\n url: `${_path.ROOTMAIN}/movimientos/salidas` ,\r\n submenu: {\r\n type: 'menu',\r\n menu: [\r\n { title: 'Ajustes de salida', url: `${_path.ROOTMAIN}/movimientos/salidas` },\r\n { title: 'Despachos', url: `${_path.ROOTMAIN}/movimientos/despacho` }, \r\n ],\r\n },\r\n},{\r\n layout: 'app',\r\n title: 'Configuración',\r\n url: `${_path.ROOTMAIN}/usuarios` ,\r\n submenu: {\r\n type: 'menu',\r\n menu: [\r\n { title: 'Usuarios', url: `${_path.ROOTMAIN}/usuarios` },\r\n { title: 'Roles', url: `${_path.ROOTMAIN}/roles` },\r\n { title: 'Recursos', url: `${_path.ROOTMAIN}/permisos` },\r\n { title: 'Bodegas', url: `${_path.ROOTMAIN}/areas` }, \r\n { title: 'Bancos', url: `${_path.ROOTMAIN}/bancos` }, \r\n { title: 'Justificación de Notas Crédito', url: `${_path.ROOTMAIN}/gruponotacredito` }, \r\n { title: 'Autorizaciones', url: `${_path.ROOTMAIN}/authorizations` }, \r\n { title: 'Comisión por Categoria', url: `${_path.ROOTMAIN}/comission-config` }, \r\n ],\r\n },\r\n}];\r\n\r\n\r\nexport default menu;","// react\r\nimport React from 'react';\r\n\r\n// third-party\r\nimport classNames from 'classnames';\r\n\r\n// application\r\nimport AppLink from '../shared/AppLink';\r\nimport Megamenu from './Megamenu';\r\nimport Menu from './Menu';\r\nimport { ArrowRoundedDown9x6Svg } from '../../svg';\r\n\r\n// data stubs\r\nimport navLinks from '../../data/headerNavigation';\r\n\r\n\r\nfunction NavLinks(props) {\r\n let { layout } = props;\r\n\r\n const handleMouseEnter = (event) => {\r\n const item = event.currentTarget;\r\n const megamenu = item.querySelector('.nav-links__megamenu');\r\n\r\n if (megamenu) {\r\n const container = megamenu.offsetParent;\r\n const containerWidth = container.getBoundingClientRect().width;\r\n const megamenuWidth = megamenu.getBoundingClientRect().width;\r\n const itemOffsetLeft = item.offsetLeft;\r\n const megamenuPosition = Math.round(\r\n Math.min(itemOffsetLeft, containerWidth - megamenuWidth),\r\n );\r\n\r\n megamenu.style.left = `${megamenuPosition}px`;\r\n }\r\n };\r\n\r\n const linksList = navLinks.filter(x => x.layout == layout).map((item, index) => {\r\n let arrow;\r\n let submenu;\r\n\r\n if (item.submenu) {\r\n arrow = <ArrowRoundedDown9x6Svg className=\"nav-links__arrow\" />;\r\n }\r\n\r\n if (item.submenu && item.submenu.type === 'menu') {\r\n submenu = (\r\n <div className=\"nav-links__menu\">\r\n <Menu items={item.submenu.menu} />\r\n </div>\r\n );\r\n }\r\n\r\n if (item.submenu && item.submenu.type === 'megamenu') {\r\n submenu = (\r\n <div className={`nav-links__megamenu nav-links__megamenu--size--${item.submenu.menu.size}`}>\r\n <Megamenu menu={item.submenu.menu} />\r\n </div>\r\n );\r\n }\r\n\r\n const classes = classNames('nav-links__item', {\r\n 'nav-links__item--with-submenu': item.submenu,\r\n });\r\n\r\n return (\r\n <li key={index} className={classes} onMouseEnter={handleMouseEnter}>\r\n <AppLink to={item.url} {...item.props}>\r\n <span>\r\n {item.title}\r\n {arrow}\r\n </span>\r\n </AppLink>\r\n {submenu}\r\n </li>\r\n );\r\n });\r\n\r\n return (\r\n <ul className=\"nav-links__list\">\r\n {linksList}\r\n </ul>\r\n );\r\n}\r\n\r\nexport default NavLinks;\r\n","// react\r\nimport React, { Component } from 'react';\r\n\r\n// third-party\r\nimport classNames from 'classnames';\r\nimport PropTypes from 'prop-types';\r\nimport { Link } from 'react-router-dom';\r\n\r\n\r\nclass Indicator extends Component {\r\n constructor(props) {\r\n super(props);\r\n\r\n this.state = {\r\n open: false,\r\n };\r\n }\r\n\r\n componentDidMount() {\r\n document.addEventListener('mousedown', this.handleOutsideClick);\r\n }\r\n\r\n componentDidUpdate(prevProps, prevState) {\r\n const { open } = this.state;\r\n const { onOpen, onClose } = this.props;\r\n\r\n if (open !== prevState.open) {\r\n if (open && onOpen) {\r\n onOpen();\r\n }\r\n if (!open && onClose) {\r\n onClose();\r\n }\r\n }\r\n }\r\n\r\n componentWillUnmount() {\r\n document.removeEventListener('mousedown', this.handleOutsideClick);\r\n }\r\n\r\n setWrapperRef = (node) => {\r\n this.wrapperRef = node;\r\n };\r\n\r\n handleOutsideClick = (event) => {\r\n const { open } = this.state;\r\n\r\n if (this.wrapperRef && !this.wrapperRef.contains(event.target) && open) {\r\n this.close();\r\n }\r\n };\r\n\r\n handleButtonClick = (event) => {\r\n const { onClick, dropdown } = this.props;\r\n\r\n if (dropdown) {\r\n event.preventDefault();\r\n }\r\n\r\n this.toggle();\r\n\r\n if (onClick) {\r\n onClick(event);\r\n }\r\n };\r\n\r\n toggle() {\r\n this.setState((state) => ({\r\n open: !state.open,\r\n }));\r\n }\r\n\r\n open() {\r\n this.setState(() => ({\r\n open: true,\r\n }));\r\n }\r\n\r\n close() {\r\n this.setState(() => ({\r\n open: false,\r\n }));\r\n }\r\n\r\n render() {\r\n const { open } = this.state;\r\n const { url, className, icon } = this.props;\r\n let { value, dropdown } = this.props;\r\n let button;\r\n\r\n if (value !== undefined) {\r\n value = <span className=\"indicator__value\">{value}</span>;\r\n }\r\n\r\n const title = (\r\n <span className=\"indicator__area\">\r\n {icon}\r\n {value}\r\n </span>\r\n );\r\n\r\n if (url) {\r\n button = (\r\n <Link to={url} className=\"indicator__button\" onClick={this.handleButtonClick}>\r\n {title}\r\n </Link>\r\n );\r\n } else {\r\n button = (\r\n <button type=\"button\" className=\"indicator__button\" onClick={this.handleButtonClick}>\r\n {title}\r\n </button>\r\n );\r\n }\r\n\r\n if (dropdown) {\r\n dropdown = (\r\n <div className=\"indicator__dropdown\">\r\n {dropdown}\r\n </div>\r\n );\r\n }\r\n\r\n const classes = classNames(`indicator indicator--trigger--click ${className}`, {\r\n 'indicator--opened': open,\r\n });\r\n\r\n return (\r\n <div className={classes} ref={this.setWrapperRef}>\r\n {button}\r\n {dropdown}\r\n </div>\r\n );\r\n }\r\n}\r\n\r\nIndicator.propTypes = {\r\n /** indicator value */\r\n value: PropTypes.number,\r\n /** the component that will be shown in the dropdown */\r\n dropdown: PropTypes.node,\r\n /** indicator icon */\r\n icon: PropTypes.node,\r\n /** indicator url */\r\n url: PropTypes.string,\r\n /** callback function that is called when the dropdown is opened */\r\n onOpen: PropTypes.func,\r\n /** callback function that is called when the dropdown is closed */\r\n onClose: PropTypes.func,\r\n};\r\n\r\nexport default Indicator;\r\n","// react\r\nimport React, { Component } from 'react';\r\nimport { withRouter} from 'react-router-dom';\r\n// application\r\nimport Indicator from './Indicator';\r\nimport { Cross20Svg, Search20Svg } from '../../svg';\r\n\r\n\r\nclass IndicatorSearch extends Component {\r\n constructor(props) {\r\n super(props);\r\n\r\n this.input = React.createRef();\r\n this.indicator = React.createRef();\r\n this.onSubmit = this.onSubmit.bind(this); \r\n }\r\n\r\n handleOpen = () => {\r\n if (this.input.current) {\r\n this.input.current.focus();\r\n }\r\n };\r\n\r\n handleKeyDown = (event) => {\r\n if (event.which === 27 && this.indicator.current) {\r\n this.indicator.current.close();\r\n }\r\n };\r\n\r\n onSubmit(e){\r\n e.preventDefault();\r\n this.props.history.push({ pathname : `/app/paciente/${this.input.current.value}`})\r\n }\r\n\r\n render() {\r\n const searchIcon = (\r\n <React.Fragment>\r\n <Search20Svg className=\"indicator__icon\" />\r\n <Cross20Svg className=\"indicator__icon indicator__icon--open\" />\r\n </React.Fragment>\r\n );\r\n\r\n const searchDropdown = (\r\n <div className=\"drop-search\">\r\n <form action=\"app/paciente\" className=\"drop-search__form\" onSubmit={this.onSubmit}>\r\n <input\r\n ref={this.input}\r\n onKeyDown={this.handleKeyDown}\r\n className=\"drop-search__input\"\r\n name=\"id\"\r\n placeholder=\"Buscar paciente\"\r\n aria-label=\"Site search\"\r\n type=\"text\"\r\n autoComplete=\"off\"\r\n />\r\n <button className=\"drop-search__button drop-search__button--submit\" type=\"submit\">\r\n <Search20Svg />\r\n </button>\r\n </form>\r\n </div>\r\n );\r\n\r\n return (\r\n <Indicator\r\n ref={this.indicator}\r\n dropdown={searchDropdown}\r\n icon={searchIcon}\r\n onOpen={this.handleOpen}\r\n />\r\n );\r\n }\r\n}\r\n\r\nexport default withRouter(IndicatorSearch);\r\n","// react\r\nimport React from 'react';\r\n\r\n// third-party\r\nimport { connect } from 'react-redux';\r\nimport { Link } from 'react-router-dom';\r\n\r\n// application\r\nimport NavLinks from './NavLinks';\r\nimport IndicatorSearch from './IndicatorSearch';\r\nimport { logotipo, colorNavBar } from '../../data/logo';\r\n\r\n\r\nfunction NavPanel(props) {\r\n const { layout } = props;\r\n\r\n let _logo = null;\r\n let searchIndicator;\r\n \r\n _logo = (\r\n <div className=\"nav-panel__logo\" style={{paddingRight:20}}>\r\n <Link to=\"/\">{logotipo}</Link>\r\n </div>\r\n );\r\n\r\n searchIndicator = <IndicatorSearch />;\r\n\r\n var color = colorNavBar(layout);\r\n\r\n return (\r\n <div className=\"nav-panel\" style={{background : color}}>\r\n <div className=\"nav-panel__container container\">\r\n <div className=\"nav-panel__row\">\r\n {_logo} \r\n\r\n <div className=\"nav-panel__nav-links nav-links\">\r\n <NavLinks layout={layout} />\r\n </div>\r\n\r\n <div className=\"nav-panel__indicators\">\r\n {searchIndicator}\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n );\r\n}\r\n\r\nconst mapStateToProps = (state) => ({\r\n wishlist: state.wishlist,\r\n});\r\n\r\nconst mapDispatchToProps = {};\r\n\r\nexport default connect(\r\n mapStateToProps,\r\n mapDispatchToProps,\r\n)(NavPanel);\r\n","// react\r\nimport React, { Component } from 'react';\r\n\r\n// third-party\r\nimport classNames from 'classnames';\r\nimport PropTypes from 'prop-types';\r\n\r\n// application\r\nimport Menu from './Menu';\r\nimport { ArrowRoundedDown7x5Svg } from '../../svg';\r\n\r\n\r\nclass Dropdown extends Component {\r\n constructor(props) {\r\n super(props);\r\n\r\n this.state = {\r\n open: false,\r\n };\r\n }\r\n\r\n componentDidMount() {\r\n document.addEventListener('mousedown', this.handleOutsideClick);\r\n }\r\n\r\n componentWillUnmount() {\r\n document.removeEventListener('mousedown', this.handleOutsideClick);\r\n }\r\n\r\n setWrapperRef = (node) => {\r\n this.wrapperRef = node;\r\n };\r\n\r\n handleOutsideClick = (event) => {\r\n if (this.wrapperRef && !this.wrapperRef.contains(event.target)) {\r\n this.setState(() => ({\r\n open: false,\r\n }));\r\n }\r\n };\r\n\r\n handleButtonClick = () => {\r\n this.setState((state) => ({\r\n open: !state.open,\r\n }));\r\n };\r\n\r\n handleItemClick = (item) => {\r\n const { onClick } = this.props;\r\n\r\n this.setState(() => ({\r\n open: false,\r\n }));\r\n\r\n if (onClick) {\r\n onClick(item);\r\n }\r\n };\r\n\r\n render() {\r\n const { open } = this.state;\r\n const { title, withIcons, items } = this.props;\r\n\r\n const classes = classNames('topbar-dropdown', {\r\n 'topbar-dropdown--opened': open,\r\n });\r\n\r\n return (\r\n <div className={classes} ref={this.setWrapperRef}>\r\n <button className=\"topbar-dropdown__btn\" type=\"button\" onClick={this.handleButtonClick}>\r\n {title}\r\n <ArrowRoundedDown7x5Svg />\r\n </button>\r\n\r\n <div className=\"topbar-dropdown__body\">\r\n <Menu\r\n layout=\"topbar\"\r\n withIcons={withIcons}\r\n items={items}\r\n onClick={this.handleItemClick}\r\n />\r\n </div>\r\n </div>\r\n );\r\n }\r\n}\r\n\r\nDropdown.propTypes = {\r\n /** array of menu items */\r\n items: PropTypes.array.isRequired,\r\n /** default: false */\r\n withIcons: PropTypes.bool,\r\n /** callback function that is called when the item is clicked */\r\n onClick: PropTypes.func,\r\n};\r\n\r\nDropdown.defaultProps = {\r\n withIcons: false,\r\n onClick: undefined,\r\n};\r\n\r\nexport default Dropdown;\r\n","// react\r\nimport React from 'react';\r\n\r\nimport { connect } from 'react-redux';\r\n// third-party\r\nimport { FormattedMessage } from 'react-intl';\r\nimport { Link } from 'react-router-dom';\r\n\r\n// application\r\nimport Dropdown from './Dropdown';\r\n\r\n\r\nfunction Topbar(props) {\r\n \r\n let { user, toolBarOpts } = props;\r\n \r\n const links = toolBarOpts.map(x => ({ title: <FormattedMessage id={'topbar.' + x.name} defaultMessage={x.name} />, url: x.path }));\r\n // [\r\n // { title: <FormattedMessage id=\"topbar.aplicacion\" defaultMessage=\"Aplicación\" />, url: '/app/config' },\r\n // // { title: <FormattedMessage id=\"topbar.contabilidad\" defaultMessage=\"Contabilidad\" />, url: '/conta' }\r\n // ];\r\n\r\n const accountLinks = [\r\n { title: 'Contraseña', url: '/account/password' },\r\n { title: 'Salir', url: '/account/logout' },\r\n ];\r\n\r\n const linksList = links.map((item, index) => (\r\n <div key={index} className=\"topbar__item topbar__item--link\">\r\n <Link className=\"topbar-link\" to={item.url}>{item.title}</Link>\r\n </div>\r\n ));\r\n\r\n\r\n return (\r\n <div className=\"site-header__topbar topbar\">\r\n <div className=\"topbar__container container\">\r\n <div className=\"topbar__row\">\r\n {linksList}\r\n <div className=\"topbar__spring\" />\r\n <div className=\"topbar__item\">\r\n <Dropdown\r\n title={<><span className=\"far fa-user-circle\"></span> <b>{user.username}</b></>}\r\n items={accountLinks}\r\n />\r\n </div> \r\n </div>\r\n </div>\r\n </div>\r\n );\r\n\r\n}\r\n\r\nconst mapStateToProps = (state) => ({ \r\n user: state.user, \r\n toolBarOpts: state.toolBarOpts \r\n});\r\n\r\nexport default connect(mapStateToProps, null)(Topbar);","// react\r\nimport React from 'react';\r\nimport { useDispatch } from \"react-redux\";\r\nimport { getCatalogs } from '../../store/catalogs/catalogReducer';\r\n\r\n// application\r\nimport NavPanel from './NavPanel';\r\nimport Topbar from './Topbar';\r\n\r\n\r\nfunction Header(props) {\r\n \r\n const dispatch = useDispatch();\r\n dispatch(getCatalogs());\r\n\r\n const { layout } = props; \r\n\r\n return (\r\n <div className=\"site-header\">\r\n <Topbar /> \r\n <div className=\"site-header__nav-panel\">\r\n <NavPanel layout={layout} />\r\n </div>\r\n </div>\r\n );\r\n}\r\n\r\nexport default Header;\r\n","import Header from './Header';\r\n\r\nexport default Header;\r\n","const catalogos = [{\r\n name : 'grupos',\r\n caption : 'Categoria de Productos',\r\n url : 'familias'\r\n},{\r\n name : 'marcas',\r\n caption : 'Marcas',\r\n url : 'presentaciones'\r\n},{\r\n name : 'unidadmedida',\r\n caption : 'Unidad de Medida',\r\n url : 'ums'\r\n},{\r\n name : 'bancos',\r\n caption : 'Bancos',\r\n url : 'banks'\r\n},{\r\n name : 'gruponotacredito',\r\n caption : 'Justificación Nota de Crédito',\r\n url : 'movementgroups'\r\n}];\r\n\r\n\r\n\r\nexport default catalogos;","import CustomStore from 'devextreme/data/custom_store';\r\nimport DataSource from \"devextreme/data/data_source\"; \r\nimport notify from 'devextreme/ui/notify';\r\nimport http from '../utils/http';\r\nimport { required } from '../utils/proxy';\r\n\r\n/**\r\n * returna un new CustomStore/ \r\n * @param {model} model - uri para enlazar los datos\r\n * @return {CustomStore} CustomStore\r\n */\r\n\r\n\r\nconst store =\r\n (\r\n defaultModel\r\n ) => {\r\n\r\n let model = {...{\r\n uri: required('uri'),\r\n msgInserted: 'Registro agregado correctamente',\r\n msgUpdated: 'Registro modificado correctamente',\r\n msgDeleted: 'Registro eliminado correctamente',\r\n cb: null,\r\n remoteOperations: false,\r\n extraParameter: null\r\n },\r\n ...defaultModel\r\n };\r\n\r\n const customStore = new CustomStore({ \r\n load: (loadOptions) => {\r\n\r\n let params = {};\r\n params.skip = loadOptions.skip || 0;\r\n params.take = loadOptions.take || 20; \r\n\r\n params.requireTotalCount = loadOptions.requireTotalCount ?? true;\r\n\r\n if (model?.extraParameter?.length) {\r\n for (let index = 0; index < model.extraParameter.length; index++) {\r\n const element = model.extraParameter[index];\r\n \r\n if (typeof element[1] === \"object\") {\r\n params[element[0]] = `${element[1]}`;\r\n } else \r\n params[element[0]] = element[1];\r\n\r\n }\r\n }\r\n \r\n if (model.extraParameter?.key)\r\n params[model.extraParameter.key] = model.extraParameter.value;\r\n\r\n if (loadOptions.filter) {\r\n if (typeof loadOptions.filter[0] == 'object') {\r\n\r\n let moreParams = {};\r\n\r\n const dataFilter = filters =>{\r\n \r\n for (var filter in filters) {\r\n if (filters.hasOwnProperty(filter)) {\r\n\r\n if(['columnIndex','filterValue'].includes(filter)) continue;\r\n\r\n const element = filters[filter]\r\n \r\n if(['!=','==','<','>','<=','>=','and','or'].includes(element)) continue;\r\n \r\n if (typeof element == 'object') {\r\n dataFilter(element);\r\n }else{\r\n if(moreParams[filters[0]])\r\n moreParams[`${filters[0]}End` ] = filters[2];\r\n else\r\n moreParams[filters[0]] = filters[2];\r\n break;\r\n }\r\n }\r\n }\r\n\r\n };\r\n\r\n dataFilter(loadOptions.filter);\r\n \r\n params = { ...params, ...moreParams}\r\n\r\n \r\n } else {\r\n params[loadOptions.filter[0]] = loadOptions.filter[2];\r\n }\r\n }\r\n\r\n return http(model.uri.get)\r\n .asGet(params)\r\n .then((data) => {\r\n\r\n let resp = data;\r\n\r\n if (model.cb)\r\n resp = model.cb(data);\r\n\r\n if (model.remoteOperations)\r\n return {\r\n data: resp.items,\r\n totalCount: resp.totalCount,\r\n }\r\n else\r\n return {\r\n data: resp,\r\n totalCount: resp.length,\r\n };\r\n })\r\n .catch(() => { throw 'Data Loading Error'; });\r\n },\r\n insert: (data) => {\r\n \r\n return new Promise((resolve,reject) =>\r\n http(model.uri.insert).asPost(data).then(result => {\r\n notify(model.msgInserted);\r\n resolve(result);\r\n }).catch(err => {\r\n notify(err, 'error');\r\n reject(err); \r\n })\r\n )\r\n },\r\n update: (data, dataModificada) => {\r\n\r\n return new Promise((resolve,reject) =>\r\n http(model.uri.insert).asPost({...data, ...dataModificada }).then(result => {\r\n notify(model.msgUpdated);\r\n resolve(result);\r\n }).catch(err => {\r\n notify(err, 'error');\r\n reject(err); \r\n })\r\n\r\n )\r\n },\r\n remove: catalogo => {\r\n return new Promise((resolve,reject) =>\r\n http(model.uri.remove(catalogo.id)).asGet().then(result => {\r\n notify(model.msgDeleted, 'error');\r\n resolve(result);\r\n }).catch(err => {\r\n notify(err, 'error');\r\n reject(err); \r\n })\r\n )\r\n },\r\n byKey: id => http(model.uri.getById(id)).asGet()\r\n\r\n });\r\n\r\n return customStore;\r\n }\r\n\r\nconst dataSourceSelect = (url, urlByKey) => new DataSource({\r\n load: (loadOptions) => {\r\n\r\n let params = {};\r\n params.skip = loadOptions.skip || 0;\r\n params.take = loadOptions.take || 10;\r\n\r\n if(loadOptions.searchValue)\r\n params.name = loadOptions.searchValue ;\r\n\r\n return http(url)\r\n .asGet(params).then(x => x.items);\r\n \r\n },\r\n byKey: id => http(urlByKey).asGet(),\r\n paginate : true,\r\n pageSize: 10\r\n})\r\n\r\nexport { store, dataSourceSelect }","import { TOOLBAR_ADD, TOOLBAR_REMOVE, TOOLBAR_LOAD } from \"../consts\";\r\n\r\nconst stateInit = [\r\n { name:'Aplicación', path: '/app/config'}\r\n];\r\n\r\nconst myPathName = 'myPaths';\r\n\r\n\r\nexport const addToolBarAction = ({ name, path}) => ({\r\n type: TOOLBAR_ADD,\r\n payload : {name, path}\r\n});\r\n\r\nexport const removeToolBarAction = (name) => ({\r\n type: TOOLBAR_REMOVE,\r\n payload : name\r\n});\r\n\r\nconst getPaths = () => JSON.parse(localStorage.getItem(myPathName)) || stateInit;\r\n\r\nexport default function toolBarOptsReducer(state = stateInit, { type, payload }) {\r\n\r\n const actions = {\r\n [TOOLBAR_ADD] : () => {\r\n\r\n const myPaths = getPaths();\r\n const exits = myPaths.find(x => x.name === payload.name);\r\n\r\n if(exits) return [...myPaths];\r\n\r\n myPaths.push(payload);\r\n localStorage.setItem(myPathName, JSON.stringify(myPaths));\r\n return [...myPaths];\r\n\r\n },\r\n [TOOLBAR_REMOVE] : () => {\r\n \r\n const myPaths = getPaths();\r\n const myPathsFiltered = myPaths.filter(x => x.name !== payload);\r\n localStorage.setItem(myPathName, JSON.stringify(myPathsFiltered));\r\n return [...myPathsFiltered];\r\n\r\n },\r\n [TOOLBAR_LOAD] : () => {\r\n const myPaths = getPaths();\r\n return myPaths;\r\n }\r\n }\r\n\r\n return actions[type]?.call() || actions[TOOLBAR_LOAD]?.call();\r\n}\r\n\r\n","// react\r\nimport React from 'react';\r\nimport { useDispatch, useSelector } from 'react-redux';\r\nimport { addToolBarAction, removeToolBarAction } from '../../store/toolBar/toolBarOptsReducer';\r\nfunction BlockHeader({showFavorite = false, title, icon, children,...rest}) {\r\n\r\n const { toolBarOpts } = useSelector(store => store);\r\n const dispatch = useDispatch();\r\n\r\n const path = rest.location?.pathname;\r\n\r\n const existFavorite = toolBarOpts.find(x => x.name === title);\r\n\r\n const onClick = () => {\r\n if(existFavorite) \r\n dispatch(removeToolBarAction(title));\r\n else\r\n dispatch(addToolBarAction({ name: title, path})); \r\n\r\n }\r\n\r\n const showFavorites = path && showFavorite\r\n\r\n const className = existFavorite ? 'd-hand dx-icon-favorites exist-favorite' : 'd-hand dx-icon-favorites';\r\n\r\n return (\r\n <div className=\"block-header\">\r\n <h3 className=\"block-header__title\">\r\n {title} {icon && <span className={icon} style={{fontSize : 20}}></span>}\r\n {showFavorites && <span onClick={onClick} className={className} style={{fontSize : 20}}></span>}\r\n </h3>\r\n <div className=\"block-header__divider\" /> \r\n {children}\r\n </div>\r\n );\r\n}\r\n\r\nexport default BlockHeader;\r\n","import React from \"react\";\r\nimport { userService } from \"../services/user.service\";\r\n\r\nconst Authorized = canAction => component => {\r\n return canAction ? component : (\r\n <div className=\"container small text-center text-danger mt-25\">\r\n <p>\r\n El usuario no tiene permisos para este recurso \r\n </p>\r\n </div>\r\n )\r\n}\r\n\r\n/**\r\n * Retorna el un componente si el usuario no tiene permiso al recurso actual\r\n * @param {{resourceId : boolean, action : Number}} token - token que se va guardar\r\n * @return {{canAction: false Unauthorized}} token\r\n */\r\nconst useAuthorization = (..._resources) => {\r\n \r\n const user = userService.getUser();\r\n\r\n const result = _resources.map((x) =>\r\n user.resources.find((y) => y.resource === x) === undefined ? false : true\r\n );\r\n\r\n const authorized = Authorized(result[0])\r\n\r\n return [authorized, ...result, ];\r\n\r\n}\r\n\r\nexport default useAuthorization;","import React from 'react';\r\nimport { DataGrid } from 'devextreme-react';\r\nimport { Item } from 'devextreme-react/form';\r\nimport { \r\n Paging, \r\n Pager, \r\n FilterRow, \r\n HeaderFilter, \r\n ColumnChooser, \r\n Column, \r\n Export, \r\n Editing,\r\n Popup, \r\n Form, \r\n RequiredRule,\r\n StringLengthRule} from 'devextreme-react/data-grid';\r\n\r\nimport uri from '../../utils/uri';\r\nimport toCapital from '../../utils/common';\r\nimport { store } from '../../services/store';\r\nimport Title from './Title';\r\nimport BlockHeader from './BlockHeader';\r\nimport { createProxyBase } from '../../utils/proxy';\r\nimport useAuthorization from '../../hooks/useAuthorization';\r\nimport { dataAccess, editorOptionsSwitch, resources } from '../../data/app';\r\n\r\nfunction Catalogo(props) {\r\n\r\n const { name, url, caption } = props;\r\n\r\n const [ authorized ] = useAuthorization( resources.adminCatalogos );\r\n\r\n let dataGrid = React.createRef();\r\n\r\n const onToolbarPreparing = (e) => { \r\n e.toolbarOptions.items.unshift({\r\n location: 'before',\r\n widget: 'dxButton',\r\n options: {\r\n text: 'Crear nuevo',\r\n icon:'plus',\r\n type:'default',\r\n stylingMode:\"outlined\",\r\n onClick: () => dataGrid.instance.addRow()\r\n }\r\n });\r\n } \r\n\r\n const onInitNewRow = (e) => {\r\n e.data.active = true;\r\n }\r\n \r\n return authorized(\r\n <div className=\"container small\">\r\n <Title title={caption||name}/>\r\n <BlockHeader title={toCapital(caption||name)}/> \r\n <DataGrid id=\"gridContainer\"\r\n ref={(ref) => dataGrid = ref}\r\n selection={{ mode: 'single' }}\r\n dataSource={store({uri : createProxyBase(url)})}\r\n showBorders={true}\r\n showRowLines={true}\r\n allowColumnResizing={true}\r\n allowColumnReordering={true}\r\n onToolbarPreparing={onToolbarPreparing}\r\n onInitNewRow={onInitNewRow}\r\n >\r\n <Paging defaultPageSize={20} />\r\n <Pager\r\n showPageSizeSelector={true}\r\n allowedPageSizes={[10, 20, 50]}\r\n />\r\n <FilterRow visible={true} />\r\n <HeaderFilter visible={true} />\r\n <Export enabled={true} fileName={name} allowExportSelectedData={true} />\r\n <Column dataField=\"name\" caption=\"Descripcion\" />\r\n <Column dataField=\"active\" caption=\"Activo\" dataType=\"boolean\" width={100} />\r\n <Editing\r\n mode=\"popup\"\r\n allowUpdating={true}\r\n useIcons={true}\r\n >\r\n <Popup title={toCapital(caption||name)} showTitle={true} width={450} height={250}>\r\n \r\n </Popup>\r\n <Form>\r\n <Item dataField=\"name\" colSpan={2} >\r\n <RequiredRule message=\"El campo es requerida\"/>\r\n <StringLengthRule max={50} min={2} message=\"Máximo de caracteres 50 y 2 mínimo\"/>\r\n </Item>\r\n <Item dataField=\"active\" colSpan={2} editorType=\"dxSwitch\"\r\n editorOptions={editorOptionsSwitch} >\r\n </Item> \r\n </Form>\r\n </Editing>\r\n </DataGrid>\r\n </div>\r\n )\r\n\r\n};\r\n\r\nexport default Catalogo; //connect(mapStateToProps, mapDispatchToProps)(GridSprintStart);","import React from \"react\";\r\nimport { Route, Redirect } from \"react-router-dom\";\r\nimport { userService } from '../../services/user.service';\r\n\r\n\r\nconst PrivateRoute = routeProps => {\r\n\r\n let {component: Component,render: Render, ...rest} = routeProps;\r\n\r\n return (<Route exact {...rest} render= { props => \r\n userService.isLogged() \r\n ? Component ? <Component {...props} /> : <Render {...props}/>\r\n : <Redirect to={{pathname:'/account/login', state:{from: props.location}}} />\r\n } />)\r\n};\r\n\r\n\r\nexport default PrivateRoute;\r\n","import React, { useEffect, useState } from 'react';\r\nimport { DataGrid } from 'devextreme-react';\r\nimport { Column } from 'devextreme-react/data-grid';\r\nimport { formatDate } from '../../data/app';\r\nimport http from '../../utils/http';\r\nimport BlockHeader from '../shared/BlockHeader';\r\n\r\nconst Paciente = props => {\r\n\r\n const [beneficiaries, setBeneficiaries] = useState([]);\r\n\r\n const { id } = props.match.params;\r\n\r\n useEffect(() => {\r\n http(`beneficiaries/search/${id}`).asGet().then(resp => setBeneficiaries(resp));\r\n }, [id]);\r\n\r\n const title = `Resultado de la busqueda de ${id}`;\r\n\r\n return (\r\n <div className=\"container\"> \r\n <BlockHeader title={title} /> \r\n <DataGrid id=\"gridContainer\"\r\n selection={{ mode: 'single' }}\r\n dataSource={beneficiaries}\r\n showBorders={true}\r\n showRowLines={true}\r\n allowColumnResizing={true}\r\n allowColumnReordering={true}\r\n noDataText='No se encontró ningun beneficiario'\r\n > \r\n <Column dataField=\"inss\" width={100} />\r\n <Column dataField=\"relationship\" width={120} caption=\"Parentesco\">\r\n </Column> \r\n <Column dataField=\"identification\" width={140} />\r\n <Column dataField=\"firstName\" caption=\"Nombre\" />\r\n <Column dataField=\"lastName\" caption=\"Apellidos\" />\r\n <Column dataField=\"birthDate\" caption=\"Fecha Nac.\" width={140} dataType=\"date\" format={formatDate}/>\r\n <Column dataField=\"sex\" width={100} caption=\"Sexo\">\r\n </Column> \r\n <Column dataField=\"phoneNumber\" visible={false} caption=\"Telefono\" width={150} />\r\n <Column dataField=\"cellNumber\" visible={false} caption=\"Celular\" width={150} /> \r\n <Column dataField=\"email\" visible={false} caption=\"Correo\"/>\r\n <Column dataField=\"beneficiaryStatus\" width={100} caption=\"Estado\">\r\n </Column> \r\n <Column dataField='address' caption=\"Dirección\" visible={false}></Column>\r\n \r\n </DataGrid>\r\n </div>\r\n );\r\n}\r\n\r\nexport default Paciente;\r\n","import { dialogDefault, DIALOG_OUTPUTPRODUCT } from \"../consts\";\r\n\r\nconst mydialog = { ...dialogDefault }\r\n\r\nexport const dialogOutputProduct = payload => ({ type: DIALOG_OUTPUTPRODUCT, payload });\r\n\r\nexport default function outPutProductDialogReducer(state = mydialog, { type, payload }) {\r\n const actions = {\r\n [DIALOG_OUTPUTPRODUCT] : () => ({...state, ...payload })\r\n }\r\n\r\n return actions[type]?.call() || state;\r\n}","import moment from 'moment';\r\n\r\nexport const billDefault = {\r\n creditDays : 0,\r\n vendorId: null,\r\n areaId: 0,\r\n observaction: '',\r\n nameClient: '',\r\n clientId: null,\r\n rate : 0,\r\n date : new Date(moment().year(), moment().month(), moment().date(), 0, 0, 0, 0),\r\n}\r\n\r\nexport const inPutProductDefault = {\r\n date : new Date(moment().year(), moment().month(), moment().date(), 0, 0, 0, 0),\r\n}\r\n\r\nexport const outPutProductDefault = {\r\n ...inPutProductDefault\r\n}\r\n\r\nexport const purchaseDefault = {\r\n areaId: 0,\r\n date : new Date(moment().year(), moment().month(), moment().date(), 0, 0, 0, 0),\r\n typeId:0,\r\n providerId: null,\r\n observaction: '',\r\n rate : 0,\r\n currencyId: 1,\r\n}\r\n\r\nexport const movementDefault = {\r\n areaId: 0,\r\n date : new Date(moment().year(), moment().month(), moment().date(), 0, 0, 0, 0),\r\n movementTypeId:undefined,\r\n observaction: '', \r\n}\r\n\r\nexport const traslateDefault ={\r\n date : new Date(moment().year(), moment().month(), moment().date(), 0, 0, 0, 0),\r\n areaId: 0,\r\n observaction: '',\r\n}\r\n\r\n\r\nexport const defaultFacturasDetalle = {\r\n cantidad: 0,\r\n precio: 0,\r\n descuentoAverage: 0,\r\n importe: 0,\r\n inventarioId: 0,\r\n ivaAverage: 0.15,\r\n ivaMonto: 0,\r\n subTotal: 0,\r\n total: 0\r\n}\r\n\r\nexport const receiptDefault = {\r\n id: 0,\r\n billId: 0,\r\n amount : 0, \r\n retention : 0, \r\n balance : 0, \r\n observation: '', \r\n client: '', \r\n paid :false,\r\n applyPayment : false,\r\n createAt: new Date(moment().year(), moment().month(), moment().date(), 0, 0, 0, 0),\r\n} \r\n\r\n\r\n\r\n\r\nexport const productDefault = {\r\n id:0,\r\n description: \"\",\r\n familyId: null,\r\n hasIva: false,\r\n stockInherited: false,\r\n name: \"\",\r\n presentationId: null,\r\n stateId: 1,\r\n stock: 0,\r\n unitOfMeasureId: null,\r\n convertProductId: 0,\r\n convertProductQuantity: 0,\r\n convertSourceQuantiy: 1\r\n}\r\n\r\nexport const labels = {\r\n precio : 'Precio',\r\n costo : 'Costo',\r\n}\r\n\r\nconst today = () => new Date(moment().year(), moment().month(), moment().date(), 0, 0, 0, 0);\r\nconst firstDay = () => moment().set('date', 1);\r\n\r\nexport const dateByReport = {\r\n from: firstDay(),\r\n to: today()\r\n}\r\n\r\nexport const defaultDate = {\r\n from: firstDay(),\r\n to: today()\r\n}\r\n\r\n\r\nexport const defaultLabels = {\r\n family: 'Categoria',\r\n presentacion: 'Marcas',\r\n}\r\n\r\nexport const defaultProvider = {\r\n id: 0,\r\n name: '',\r\n property: '',\r\n ruc: '',\r\n phoneNumber: '',\r\n email: '',\r\n address: '',\r\n observation: '',\r\n active: true,\r\n\r\n}\r\n\r\nexport const defaultClient = {\r\n id: 0,\r\n identification: '',\r\n name: '',\r\n lastName: '',\r\n address: '',\r\n isCompany: false,\r\n\r\n}\r\n\r\nexport const convert2 = value => parseFloat(parseFloat(value).toFixed(2));","import React from 'react';\r\nimport DataGrid, {\r\n Column,\r\n Scrolling,\r\n Selection,\r\n FilterRow,\r\n Button,\r\n Editing\r\n} from 'devextreme-react/data-grid';\r\nimport DropDownBox from 'devextreme-react/drop-down-box';\r\nimport notify from 'devextreme/ui/notify';\r\nimport { cellRender } from '../../utils/common';\r\nimport CustomStore from 'devextreme/data/custom_store';\r\nimport http from '../../utils/http';\r\nimport { defaultLabels } from '../../data/defaultObjects';\r\n\r\nconst dropDownOptions = { fullScreen: true, showCloseButton: true };\r\n\r\nexport default class ProductDDBComponent extends React.Component {\r\n quantity = 'quantity';\r\n\r\n constructor(props) {\r\n super(props);\r\n \r\n this.state = {\r\n currentValue: props.data.value\r\n };\r\n this.dropDownBoxRef = React.createRef();\r\n this.onSelectionChanged = this.onSelectionChanged.bind(this);\r\n this.contentRender = this.contentRender.bind(this);\r\n this.onToolbarPreparing = this.onToolbarPreparing.bind(this);\r\n this.calculateFilterExpression = this.calculateFilterExpression.bind(this);\r\n this.showImage = this.showImage.bind(this);\r\n this.showPrice = props.showPrice;\r\n this.validateQuantity = props.validateQuantity;\r\n\r\n this.quantity = props.quantity || this.quantity;\r\n }\r\n\r\n customStore(url){\r\n return new CustomStore({\r\n key:\"id\",\r\n load: (loadOptions) => {\r\n \r\n let params = {};\r\n params.skip = loadOptions.skip || 0;\r\n params.take = loadOptions.take || 10; \r\n \r\n if (loadOptions.filter) {\r\n if (typeof loadOptions.filter[0] == 'object') {\r\n \r\n let moreParams = {};\r\n \r\n const dataFilter = filters =>{\r\n \r\n for (var filter in filters) {\r\n if (filters.hasOwnProperty(filter)) {\r\n \r\n if(['columnIndex','filterValue'].includes(filter)) continue;\r\n \r\n const element = filters[filter]\r\n \r\n if(['!=','==','<','>','<=','>=','and','or'].includes(element)) continue;\r\n \r\n if (typeof element == 'object') {\r\n dataFilter(element);\r\n }else{\r\n if(moreParams[filters[0]])\r\n moreParams[`${filters[0]}End` ] = filters[2];\r\n else\r\n moreParams[filters[0]] = filters[2];\r\n break;\r\n }\r\n }\r\n }\r\n \r\n };\r\n \r\n dataFilter(loadOptions.filter); \r\n params = { ...params, ...moreParams};\r\n \r\n } else {\r\n params[loadOptions.filter[0]] = loadOptions.filter[2];\r\n }\r\n }\r\n \r\n return http(url)\r\n .asGet(params)\r\n .then((data) => {\r\n\r\n return {\r\n data:data.items,\r\n totalCount: data.totalCount,\r\n };\r\n\r\n })\r\n .catch(() => { throw 'Data Loading Error'; });\r\n },\r\n byKey: id => http(`products/get/${id}`).asGet()\r\n })\r\n }\r\n\r\n onCellPrepared(e) {\r\n\r\n if (e.rowType == 'data') {\r\n if(e.column.dataField == \"stock\")\r\n if(e.value == 0)\r\n e.cellElement.classList.add('stock-0');\r\n \r\n }\r\n } \r\n\r\n calculateFilterExpression(value, selectedFilterOperation, target) { \r\n\r\n const values = value.split('%');\r\n let filters = values.map(v => {\r\n return ['name', 'contains', v];\r\n });\r\n\r\n const filterFull = [];\r\n\r\n if (filters.length > 1) {\r\n\r\n for (let index = 0; index < filters.length; index++) {\r\n const element = filters[index];\r\n filterFull.push(element);\r\n if (index < filters.length - 1) {\r\n filterFull.push('and');\r\n }\r\n }\r\n return filterFull;\r\n\r\n }else{\r\n return [filters]\r\n }\r\n }\r\n\r\n showImage(e){\r\n e.preventDefault();\r\n localStorage.setItem('imageProduct', e.row.data);\r\n window.open(`app/products/get/image/${e.row.data.id}`, '_blank')\r\n }\r\n\r\n contentRender() {\r\n return (\r\n <DataGrid\r\n dataSource={this.props.data.column.lookup.dataSource}\r\n keyExpr=\"id\" \r\n height={'100vh'} \r\n selectedRowKeys={[this.state.currentValue]}\r\n hoverStateEnabled={true}\r\n onSelectionChanged={this.onSelectionChanged}\r\n focusedRowEnabled={true}\r\n defaultFocusedRowKey={this.state.currentValue}\r\n rowAlternationEnabled={true}\r\n allowColumnResizing={true}\r\n columnAutoWidth={true}\r\n onCellPrepared ={this.onCellPrepared}\r\n onToolbarPreparing={this.onToolbarPreparing}\r\n \r\n >\r\n <FilterRow visible={true} />\r\n <Column dataField=\"internalCode\" caption=\"Codigo\" width={110} ></Column>\r\n <Column dataField=\"name\" caption=\"Nombre\" calculateFilterExpression={this.calculateFilterExpression}></Column>\r\n <Column dataField=\"family\" caption={defaultLabels.family} width={120} visible={true}></Column>\r\n <Column dataField=\"um\" caption=\"Unidad Medida\" width={120}></Column>\r\n <Column dataField=\"stock\" caption=\"Cant\" width={90}></Column>\r\n <Column dataField=\"disponible\" caption=\"Disp\" width={90}></Column>\r\n <Column dataField=\"cost\" caption=\"Costo\" visible={!this.showPrice} cellRender={cellRender()} width={90}></Column> \r\n <Column dataField=\"price\" caption=\"Precio\" visible={this.showPrice} cellRender={cellRender()} width={90}></Column>\r\n <Column type=\"buttons\" width={90}>\r\n <Button name=\"edit\" icon=\"image\" onClick={e => (localStorage.setItem('imageProduct', JSON.stringify(e.row.data)),window.open(`app/products/get/image/${e.row.data.id}`, '_blank'))} />\r\n </Column>\r\n <Editing\r\n mode=\"popup\"\r\n allowUpdating={true}\r\n useIcons={true}\r\n ></Editing>\r\n <Scrolling mode=\"virtual\" />\r\n <Selection mode=\"single\" />\r\n </DataGrid>\r\n );\r\n }\r\n\r\n onToolbarPreparing(e) {\r\n e.toolbarOptions.items.unshift({\r\n location: 'before',\r\n widget: 'dxButton',\r\n options: {\r\n text: 'Regresar',\r\n type: 'normal',\r\n icon: 'chevronleft',\r\n stylingMode: \"outlined\",\r\n onClick: () => this.dropDownBoxRef.current.instance.close()\r\n \r\n }\r\n });\r\n }\r\n\r\n onSelectionChanged(e) {\r\n\r\n this.setState({ currentValue: e.selectedRowKeys[0] });\r\n this.props.data.setValue(this.state.currentValue);\r\n \r\n if (e.selectedRowKeys.length > 0) { \r\n \r\n const data = e.selectedRowsData[0];\r\n if(this.validateQuantity && data.stock <= 0){\r\n notify(\"No hay stock disponible\", \"error\", 1000);\r\n }else{\r\n this.dropDownBoxRef.current.instance.close(); \r\n this.props.data.component.editCell(this.props.data.rowIndex, this.quantity);\r\n }\r\n }\r\n\r\n }\r\n\r\n \r\n\r\n render() {\r\n return (\r\n <DropDownBox\r\n ref={this.dropDownBoxRef}\r\n key=\"id\"\r\n dropDownOptions={dropDownOptions}\r\n dataSource={this.props.data.column.lookup.dataSource}\r\n value={this.state.currentValue}\r\n displayExpr={item => item ? `${item.internalCode} - ${item.name}` : ''}\r\n valueExpr=\"id\" \r\n contentRender={this.contentRender}>\r\n </DropDownBox>\r\n );\r\n }\r\n}","import { useState,useEffect } from \"react\";\r\nimport http from \"../utils/http\";\r\nimport uri from \"../utils/uri\";\r\n\r\nconst useProducts = ({areaId = 0,exists=false, active=false, has=false, reload=0, onlyProducts= false }) => {\r\n \r\n const [ isLoading, setIsLoading] = useState(true);\r\n const [ products, setProducts] = useState([]); \r\n\r\n const callApi = async () => {\r\n \r\n const data = await http(uri.products.getByArea(areaId)).asGet({ exists, active, has, onlyProducts }); \r\n \r\n setProducts(data);\r\n setIsLoading(false);\r\n\r\n }\r\n \r\n useEffect(() => {\r\n callApi();\r\n }, [areaId, reload]);\r\n\r\n const refresh = callApi;\r\n\r\n return {\r\n products, \r\n setProducts,\r\n isLoading,\r\n refresh\r\n }\r\n\r\n}\r\n\r\nexport default useProducts;","\r\nconst gridsHelper = (gridRef, options) => {\r\n const onToolbarPreparing = (e) => { \r\n e.toolbarOptions.items.unshift({\r\n location: 'before',\r\n widget: 'dxButton',\r\n options: {\r\n stylingMode:\"outlined\",\r\n text: options.text,\r\n icon:options.icon,\r\n disabled: options.disabled ?? false,\r\n type:'default',\r\n onClick: () => gridRef.current.instance.addRow()\r\n }\r\n });\r\n } \r\n \r\n return onToolbarPreparing;\r\n}\r\n\r\nexport default gridsHelper;\r\n","import React from 'react';\r\nimport { Button } from 'devextreme-react/button';\r\n\r\nconst CustomButton = ({\r\n text, \r\n icon, \r\n onClick, \r\n type='default',\r\n stylingMode=\"contained\",\r\n className ='btn-header',\r\n visible=true,\r\n disabled=false\r\n }) => {\r\n\r\n return ( \r\n \r\n <Button\r\n text={text}\r\n type={type}\r\n icon={icon}\r\n stylingMode={stylingMode}\r\n className={className}\r\n onClick={onClick}\r\n visible={visible}\r\n disabled={disabled}\r\n /> \r\n );\r\n}\r\n\r\nexport default CustomButton;\r\n","import React from 'react';\r\nimport CustomButton from './CustomButton';\r\n\r\nconst ButtonForm = ({icon='save', saving, textSaving, onClick, visible=true, type=\"success\"}) => {\r\n return <CustomButton\r\n text={`${saving?'Guardando...': textSaving}`}\r\n type={type}\r\n icon={icon}\r\n stylingMode=\"contained\"\r\n className=\"m-1\"\r\n onClick={onClick}\r\n visible={visible}\r\n disabled={saving}\r\n /> \r\n}\r\n\r\nexport default ButtonForm;\r\n","import React, { useState, useEffect, useRef, useCallback, useMemo } from 'react';\r\nimport { Popup } from 'devextreme-react/popup';\r\nimport Form, { SimpleItem, GroupItem, Label, RequiredRule, StringLengthRule} from 'devextreme-react/form';\r\nimport { useDispatch, useSelector } from 'react-redux'\r\nimport { dialogOutputProduct } from '../../../store/outPutProduct/outPutProductDialogReducer';\r\nimport { createStoreLocal } from '../../../utils/proxy';\r\nimport { editorOptionsSelect } from '../../../data/app';\r\nimport { DataGrid, SelectBox } from 'devextreme-react';\r\nimport { Column, Editing, Lookup, RequiredRule as RuleRequired, Button as ButtonGrid, SearchPanel, Summary, TotalItem } from 'devextreme-react/data-grid';\r\nimport ProductDDBComponent from '../../../components/dropdown/ProductDDBComponent';\r\nimport uri from '../../../utils/uri';\r\nimport { cellRender, formatId, formatToMoney, onCellPrepared } from '../../../utils/common';\r\nimport http from '../../../utils/http';\r\nimport useProducts from '../../../hooks/useProducts';\r\nimport gridsHelper from '../../../utils/gridsHelper';\r\nimport ButtonForm from '../../../components/buttons/ButtonForm';\r\nimport notify from 'devextreme/ui/notify';\r\nimport { confirm } from 'devextreme/ui/dialog';\r\nimport { defaultLabels, outPutProductDefault } from '../../../data/defaultObjects';\r\nimport moment from 'moment';\r\nimport DataSource from 'devextreme/data/data_source';\r\n\r\nconst Nuevo = props => { \r\n\r\n const { typeId } = props;\r\n\r\n const { outPutProductDialog : { open, id }, user } = useSelector(store => store)\r\n\r\n const active = true;\r\n const exists = true;\r\n\r\n const { products } = useProducts({areaId: user.areaId, active, exists });\r\n const [ outPutProduct, setOutPutProduct ] = useState({...outPutProductDefault});\r\n const [ saving, setSaving ] = useState(false);\r\n const [ details, setDetails ] = useState([]);\r\n const [lots, setLots] = useState([]); \r\n const dispatch = useDispatch();\r\n\r\n let refForm = useRef();\r\n let refGrid = useRef();\r\n let refSelect = useRef(); \r\n\r\n useEffect(() => { \r\n\r\n if(id > 0){\r\n \r\n http(uri.outPutProducts.getById(id)).asGet().then(resp => {\r\n\r\n const { outPutProductDetails, ...rest } = resp;\r\n\r\n outPutProductDetails.map(detail =>{\r\n\r\n let info = products.find(x => x.id == detail.productId);\r\n\r\n detail['presentation'] = info.presentation;\r\n detail['um'] = info.um;\r\n detail['family'] = info.family;\r\n detail['internalCode'] = info.internalCode;\r\n\r\n return detail;\r\n })\r\n\r\n setOutPutProduct({...outPutProduct, ...rest}); \r\n setDetails([...outPutProductDetails]);\r\n\r\n });\r\n\r\n }else{\r\n\r\n setOutPutProduct({...outPutProductDefault, areaId : user.areaId, typeId : typeId});\r\n setDetails([]); \r\n\r\n }\r\n\r\n }, [open]);\r\n \r\n const onToolbarPreparing = gridsHelper(refGrid, { text : 'Agregar producto', icon:'plus' });\r\n\r\n const closeDialog = ( load ) => {\r\n refForm.current.instance.resetValues(); \r\n refGrid.current.instance.cancelEditData();\r\n dispatch(dialogOutputProduct({open : false}));\r\n if (load) {\r\n let { onSave } = props;\r\n onSave(); \r\n } \r\n }\r\n\r\n const onHiding = ({ load }) => {\r\n \r\n closeDialog(load); \r\n }\r\n\r\n const guardarSalida = (e) => {\r\n\r\n let result = refForm.current.instance.validate();\r\n\r\n if (result.isValid) {\r\n\r\n let result = confirm(\"<i>Esta seguro de guardar el ajuste salida?</i>\", \"Confirmar\");\r\n\r\n result.then((dialogResult) => {\r\n if (dialogResult) { \r\n\r\n setSaving(true);\r\n let data = {...outPutProduct,outPutProductDetails:[...details] };\r\n\r\n http(uri.outPutProducts.insert).asPost(data).then(resp => {\r\n setSaving(false);\r\n notify('Entrada registrada correctamente');\r\n closeDialog(true);\r\n }).catch(err => {\r\n setSaving(false);\r\n notify(err, 'error', 5000);\r\n });\r\n }\r\n });\r\n\r\n }\r\n\r\n }\r\n\r\n const setCellValue = (prop, newData, value, currentRowData) => {\r\n\r\n newData[prop] = value || 0;\r\n if(prop == 'productId' && value){\r\n\r\n let info = products.find(x => x.id == value);\r\n\r\n newData['internalCode'] = info.internalCode;\r\n newData['presentation'] = info.presentation;\r\n newData['um'] = info.um;\r\n newData['family'] = info.family;\r\n newData['cost'] = info.cost; \r\n newData['price'] = info.price; \r\n newData['quantity'] = 1;\r\n newData['total'] = info.cost;\r\n }\r\n \r\n if(prop == 'quantity' && (+value) >= 0){\r\n newData['total'] = currentRowData['cost'] * value;\r\n }\r\n\r\n if(prop == 'internalCode' && value){\r\n let product = products.find(x => x.internalCode == value);\r\n if(product){\r\n newData['productId'] = product.id;\r\n newData['presentation'] = product.presentation;\r\n newData['um'] = product.um;\r\n newData['family'] = product.family;\r\n newData['cost'] = product.cost; \r\n newData['price'] = product.price; \r\n newData['quantity'] = 1;\r\n newData['total'] = product.cost;\r\n }\r\n \r\n }\r\n\r\n }\r\n\r\n const isNew = id == 0;\r\n\r\n const textSaving = 'Guardar Salida';\r\n\r\n useEffect(() => {\r\n\r\n http('catalogos/lots').asGet().then(_lots => {\r\n const lotsMap = _lots.map(x => ({ ...x, name: `${x.lote}-${moment(x.expireDate).format('DD-YYYY')}` }));\r\n setLots(lotsMap);\r\n });\r\n \r\n },[]);\r\n\r\n const onRowInserting = (e) => {\r\n\r\n const isCanceled = new Promise((resolve, reject) => {\r\n\r\n const existsProduct = details.find(x => x.productId == e.data.productId);\r\n\r\n if (existsProduct) {\r\n notify(`El producto ya se encuentra en la lista`, 'error', 1000);\r\n reject(`El producto ya se encuentra en la lista`);\r\n }else{\r\n resolve(false);\r\n }\r\n });\r\n e.cancel = isCanceled;\r\n\r\n }\r\n\r\n const ds = useMemo(() =>new DataSource({\r\n key: 'productId',\r\n store: details\r\n }));\r\n\r\n const itemRender = (data) => {\r\n\r\n const isZero = data.stock <= 0;\r\n\r\n const cssZero = isZero ? 'product-stock zero-stock' : 'product-stock';\r\n\r\n return <div className=\"d-flex space-between\">\r\n <div>\r\n <div className=\"product-name\"><b>{data.internalCode}</b>-{data.name}</div>\r\n <div className=\"product-desciption\"><small className='text-muted'>Categoria: </small>{data.family} <small className='text-muted'>Marca: </small>{data.presentation}</div>\r\n </div> \r\n <div className=\"text-right\">\r\n <div className=\"product-price\">{formatToMoney(data.cost)}</div>\r\n <div className={cssZero}><small className='text-muted'>Disponible:</small> {data.stock}/{data.disponible}</div>\r\n </div> \r\n </div>\r\n }\r\n\r\n const dataSourceProduct = useCallback(() => new DataSource({\r\n load: (loadOptions) => {\r\n \r\n let params = {};\r\n params.skip = loadOptions.skip || 0;\r\n params.take = loadOptions.take || 10;\r\n \r\n if(loadOptions.searchValue)\r\n params.name = loadOptions.searchValue;\r\n\r\n params.exists = true;\r\n params.active=false; \r\n params.has=false;\r\n params.onlyProducts= false;\r\n \r\n return http(uri.products.getByArea(user.areaId)+'/grid')\r\n .asGet(params).then(x => x.items);\r\n \r\n },\r\n byKey: id => http(uri.products.getById(id)).asGet(),\r\n paginate : true,\r\n pageSize: 10\r\n }),[]);\r\n\r\n const addProductById = ( id, _info=null ) => {\r\n\r\n if (!id) return;\r\n\r\n const items = ds.items();\r\n\r\n const existsProduct = items.find(x => x.productId == id);\r\n\r\n if (existsProduct) {\r\n notify(`El producto ya se encuentra en la lista`, 'error', 5000);\r\n return\r\n }\r\n\r\n let info = _info == null ? products.find(x => x.id == id) : _info;\r\n\r\n if(info.stock <= 0)\r\n return notify('No hay stock disponible', 'error', 5000);\r\n\r\n let newData = {}; \r\n\r\n newData['presentation'] = info.presentation;\r\n newData['um'] = info.um;\r\n newData['family'] = info.family;\r\n newData['stock'] = info.stock;\r\n newData['price'] = info.price;\r\n newData['customPrice'] = info.price;\r\n newData['cost'] = info.cost;\r\n newData['quantity'] = 1;\r\n newData['total'] = info.price; \r\n newData['discount'] = 0;\r\n newData['productId'] = info.id; \r\n newData['internalCode'] = info.internalCode;\r\n\r\n ds.store().insert(newData).then(() => {\r\n ds.reload().then(() => {\r\n refGrid.current.instance.editCell(details.length-1, 'quantity');\r\n });\r\n });\r\n\r\n //setBill(_bill => ({ ..._bill, billDetails: [...newDetail],}));\r\n\r\n }\r\n\r\n\r\n const setFocus = () => {\r\n setTimeout(() => {\r\n refSelect.current.instance.focus(); \r\n }, 300);\r\n }\r\n\r\n const onEditCanceled = (e) => {\r\n setFocus()\r\n }\r\n\r\n const keyDown = (e) => {\r\n if(e.event.key == 'Enter')\r\n setFocus()\r\n }\r\n\r\n return (\r\n <div>\r\n <Popup\r\n width={'90vw'}\r\n height={'90vh'}\r\n title={isNew ? `Nueva salida de inventario` : `Salida #${ formatId(id)}`} \r\n onHiding={onHiding}\r\n visible={open} \r\n >\r\n <Form formData={outPutProduct} ref={refForm}>\r\n <GroupItem colCount={3}> \r\n <SimpleItem dataField=\"areaId\" editorType=\"dxSelectBox\"\r\n editorOptions={{\r\n disabled: true,\r\n dataSource: createStoreLocal({ name: 'area'}),\r\n ...editorOptionsSelect\r\n }} >\r\n <Label text=\"Area\" />\r\n <RequiredRule message=\"Seleccione el area\" />\r\n </SimpleItem>\r\n <SimpleItem dataField=\"date\" editorType=\"dxDateBox\"\r\n editorOptions={{\r\n displayFormat : 'dd/MM/yyyy',\r\n openOnFieldClick:true,\r\n }} >\r\n <Label text=\"Fecha\" />\r\n <RequiredRule message=\"Seleccione la fecha\" />\r\n </SimpleItem>\r\n <SimpleItem dataField=\"typeId\" editorType=\"dxSelectBox\"\r\n editorOptions={{\r\n disabled: true,\r\n dataSource: createStoreLocal({name: 'outPutProductType'}),\r\n ...editorOptionsSelect\r\n }} >\r\n <Label text=\"Tipo\" />\r\n <RequiredRule message=\"Seleccione el tipo\" />\r\n </SimpleItem>\r\n <SimpleItem dataField=\"observation\" colSpan={3} editorType=\"dxTextArea\">\r\n <Label text=\"Observacion\" />\r\n <RequiredRule message=\"Ingrese una observacion\" />\r\n <StringLengthRule max={500} message=\"Maximo 500 caracteres\" />\r\n </SimpleItem>\r\n </GroupItem>\r\n <GroupItem colCount={4}>\r\n <SimpleItem colSpan={2}>\r\n <SelectBox \r\n ref={refSelect}\r\n dataSource={dataSourceProduct()} \r\n valueExpr=\"id\" \r\n displayExpr={item => item ? `${item.internalCode} - ${item.name}` : ''}\r\n searchEnabled={true} \r\n searchMode=\"contains\" searchExpr={['name','internalCode']} \r\n searchTimeout={600} \r\n placeholder=\"Selecione una producto\" \r\n showClearButton={true} \r\n itemRender={itemRender} \r\n onValueChanged={e => {\r\n\r\n addProductById(e.value);\r\n e.component.reset();\r\n e.component.focus();\r\n //this.props.data.component.editCell(this.props.data.rowIndex, this.quantity);\r\n //refGrid.current.instance.editCell(0, 'quantity');\r\n\r\n }} />\r\n </SimpleItem>\r\n </GroupItem>\r\n <GroupItem>\r\n <DataGrid id=\"gridDetails\"\r\n ref={refGrid}\r\n selection={{ mode: 'single' }}\r\n dataSource={ds}\r\n showBorders={true}\r\n showRowLines={true}\r\n allowColumnResizing={true}\r\n allowColumnReordering={true}\r\n height={320}\r\n onToolbarPreparing={onToolbarPreparing}\r\n onCellPrepared={onCellPrepared}\r\n onRowInserting={onRowInserting}\r\n onEditCanceled={onEditCanceled} \r\n onKeyDown={keyDown}\r\n >\r\n <SearchPanel visible={true} />\r\n <Column dataField=\"internalCode\" caption={'Código'} width={90} allowEditing={true} setCellValue={setCellValue.bind(null,\"internalCode\")}>\r\n <RuleRequired />\r\n </Column> \r\n <Column dataField=\"productId\" caption=\"Producto\"\r\n setCellValue={setCellValue.bind(null,\"productId\")}\r\n editCellComponent={props => <ProductDDBComponent showPrice={false} {...props} validateQuantity={true} />}>\r\n <Lookup \r\n dataSource={products}\r\n valueExpr=\"id\" \r\n displayExpr='name' \r\n />\r\n <RuleRequired />\r\n </Column> \r\n {/* <Column dataField=\"lote\" caption=\"Lote\" width={160} allowEditing={true}>\r\n <Lookup dataSource={opt => {\r\n return{\r\n store: lots,\r\n filter: opt.data ? ['productId', '=', opt.data.productId] : null\r\n }\r\n }} valueExpr=\"id\" displayExpr=\"name\" />\r\n </Column> */}\r\n <Column dataField=\"family\" caption={defaultLabels.family} width={120} allowEditing={false}>\r\n <RuleRequired />\r\n </Column> \r\n <Column dataField=\"um\" caption=\"Unidad Medida\" width={120} allowEditing={false}>\r\n <RuleRequired />\r\n </Column> \r\n <Column dataField=\"quantity\" caption=\"Cantidad\" dataType=\"number\" width={80} setCellValue={setCellValue.bind(null,\"quantity\")}>\r\n <RuleRequired />\r\n </Column>\r\n <Column dataField=\"cost\" caption=\"Costo\" dataType=\"number\" width={100} allowEditing={false} cellRender={cellRender()} >\r\n <RuleRequired />\r\n </Column>\r\n <Column dataField=\"total\" caption=\"Total\" dataType=\"number\" width={120} allowEditing={false} cellRender={cellRender()} >\r\n <RuleRequired />\r\n </Column> \r\n <Column type=\"buttons\" width={50}>\r\n <ButtonGrid name=\"delete\" /> \r\n </Column>\r\n <Editing\r\n mode=\"cell\"\r\n allowDeleting={true} \r\n allowUpdating={true}\r\n selectTextOnEditStart={true}\r\n useIcons={true}\r\n ></Editing>\r\n <Summary>\r\n <TotalItem\r\n column=\"total\"\r\n summaryType=\"sum\" \r\n customizeText={data => `${formatToMoney(data.value)}`} />\r\n </Summary>\r\n </DataGrid>\r\n </GroupItem>\r\n </Form>\r\n\r\n <ButtonForm saving={saving} visible={isNew} textSaving={textSaving} onClick={guardarSalida}/>\r\n \r\n </Popup>\r\n </div>\r\n );\r\n}\r\n\r\nexport default Nuevo;\r\n","export const onToolbar = (actions, grid) => e => { \r\n\r\n const options = [];\r\n\r\n if(actions.export)\r\n options.push({\r\n location: 'before',\r\n widget: 'dxButton',\r\n options: {\r\n text: 'Exportar a excel',\r\n icon: 'exportxlsx',\r\n type: 'success',\r\n stylingMode: \"outlined\",\r\n onClick: () => grid.current.instance.exportToExcel(false)\r\n }\r\n }); \r\n\r\n e.toolbarOptions.items.unshift(...options);\r\n}","\r\nconst urlReport = () => \r\n{\r\n const urlBase = '';\r\n\r\n const root = process.env.PUBLIC_URL;\r\n const path = `${root}/api/`;\r\n\r\n return { \r\n inPut: id => `${path}reports/${id}/movement/in`,\r\n outPut: id => `${path}reports/${id}/movement/out`,\r\n purchase: id => `${path}reports/${id}/Compra`,\r\n notaCredito: id => `${path}reports/${id}/NotaCredito`,\r\n billTicket : id => `${path}reports/print/Factura-${id}`, \r\n preBillTicket : id => `${path}reports/prebill/${id}/print`, \r\n recibo : id => `${urlBase}/bills/recibos?id=${id}`, \r\n commissions : (desde, hasta) => `${urlBase}/bills/commission?desde=${desde}&hasta=${hasta}`, \r\n products : (desde, hasta, username) => `${urlBase}/bills/products?desde=${desde}&hasta=${hasta}&username=${username}`, \r\n\r\n print : (url) => window.open(`${url}`,'_blank'),\r\n \r\n }\r\n\r\n}\r\n///commission?desde=2021-03-15T00:00:00.00&hasta=2021-03-22T00:00:00.00\r\n\r\n\r\nexport default urlReport;","import OutPutProducts from './OutPutProducts';\r\nexport default OutPutProducts;","import React, { useRef } from 'react';\r\nimport DataGrid, {\r\n Column,\r\n ColumnChooser,\r\n Editing,\r\n Export,\r\n FilterRow,\r\n HeaderFilter,\r\n Lookup,\r\n Pager,\r\n Paging,\r\n Button as ButtonGrid,\r\n } from 'devextreme-react/data-grid';\r\nimport BlockHeader from '../../../components/shared/BlockHeader';\r\nimport Title from '../../../components/shared/Title';\r\nimport { dataAccess, formatDate, formatDateTime, resources } from '../../../data/app';\r\nimport useAuthorization from '../../../hooks/useAuthorization';\r\nimport { useDispatch } from 'react-redux';\r\nimport uri from '../../../utils/uri';\r\nimport { createStoreLocal } from '../../../utils/proxy';\r\nimport Nuevo from './Nuevo';\r\nimport CustomButton from '../../../components/buttons/CustomButton';\r\nimport { store } from '../../../services/store';\r\nimport { dialogOutputProduct } from '../../../store/outPutProduct/outPutProductDialogReducer';\r\nimport { outPutProductStates, outPutProductTypes } from '../../../data/enums';\r\nimport { dataFormatId } from '../../../utils/common';\r\nimport { onToolbar } from '../../../components/grids/ToolBar';\r\nimport urlReport from '../../../services/reportServices';\r\n\r\nconst OutPutProducts = () => {\r\n\r\n const [ authorized ] = useAuthorization( resources.ajuste );\r\n\r\n let refGrid = useRef();\r\n const dispatch = useDispatch();\r\n\r\n const reload = () => refGrid.current.instance.refresh();\r\n \r\n const onRowPrepared = (e) => {\r\n if (e.rowType == 'data') {\r\n\r\n if (e.data.stateId == outPutProductStates.noActivo) \r\n e.rowElement.classList.add('no-activo');\r\n \r\n }\r\n }\r\n\r\n const showDialog = id => dispatch(dialogOutputProduct({ open: true, id }))\r\n\r\n const onToolbarPreparing = onToolbar({ export : true } , refGrid);\r\n\r\n const typeId = outPutProductTypes.ajuste;\r\n\r\n const printReport = ( id ) => {\r\n \r\n const report = urlReport();\r\n report.print(`${report.outPut(id)}`);\r\n\r\n }\r\n\r\n const title = \"Ajustes de salida de inventario\";\r\n\r\n return authorized(\r\n <div className=\"container\">\r\n <Title title={title}/> \r\n <BlockHeader title={title} icon=\"dx-icon-decreaseindent color-icon-red\" >\r\n <CustomButton \r\n text='Agregar nueva salida'\r\n icon='plus' \r\n onClick={()=>showDialog(0)}\r\n />\r\n </BlockHeader>\r\n <Nuevo onSave={reload} typeId={outPutProductTypes.ajuste}/> \r\n \r\n <DataGrid id=\"gridContainer\"\r\n ref={refGrid}\r\n selection={{ mode: 'single' }}\r\n dataSource={store({ uri : uri.outPutProducts, remoteOperations : true, extraParameter: typeId ? { key : 'typeId', value : typeId } : null })}\r\n showBorders={true}\r\n showRowLines={true}\r\n allowColumnResizing={true}\r\n allowColumnReordering={true}\r\n onRowPrepared={onRowPrepared}\r\n onToolbarPreparing={onToolbarPreparing}\r\n remoteOperations={{\r\n paging: true,\r\n filtering: true\r\n }} \r\n >\r\n <Paging defaultPageSize={20} />\r\n <Pager\r\n showInfo={true}\r\n showPageSizeSelector={true}\r\n allowedPageSizes={[10, 20, 50]}\r\n />\r\n <FilterRow visible={true} />\r\n <HeaderFilter visible={true} />\r\n <ColumnChooser enabled={true} />\r\n <Export enabled={false} fileName={title} allowExportSelectedData={true} />\r\n <Column dataField=\"id\" caption='Numero' width={100} cellRender={dataFormatId}/>\r\n <Column dataField=\"date\" caption='Fecha' dataType='date' format={formatDate} width={150} />\r\n <Column dataField=\"areaId\" caption=\"Area\" width={200}>\r\n <Lookup disabled={true} dataSource={createStoreLocal({ name: 'area'})} valueExpr=\"id\" displayExpr=\"name\" />\r\n </Column> \r\n <Column dataField=\"typeId\" caption=\"Tipo Entrada\" width={160}>\r\n <Lookup disabled={true} dataSource={createStoreLocal({name: 'outPutProductType'})} valueExpr=\"id\" displayExpr=\"name\" />\r\n </Column> \r\n <Column dataField=\"reference\" caption='Referencia' />\r\n <Column dataField=\"stateId\" caption=\"Estado\" width={150}>\r\n <Lookup disabled={true} dataSource={createStoreLocal({name: 'inPutProductState'})} valueExpr=\"id\" displayExpr=\"name\" />\r\n </Column> \r\n <Column dataField=\"createAt\" caption='Creado el' dataType='date' format={formatDateTime} width={180}/>\r\n <Column dataField=\"createBy\" caption='Creado Por'/>\r\n <Column type=\"buttons\" width={90}>\r\n <ButtonGrid name=\"edit\" icon=\"find\" onClick={e => showDialog(e.row.data.id)}/>\r\n <ButtonGrid name=\"print\" icon=\"print\" onClick={e => printReport(e.row.data.id)}/>\r\n <ButtonGrid name=\"delete\" />\r\n </Column>\r\n <Editing\r\n mode=\"popup\"\r\n allowDeleting={true}\r\n allowUpdating={true}\r\n useIcons={true}\r\n >\r\n </Editing>\r\n </DataGrid>\r\n </div>\r\n );\r\n}\r\n\r\nexport default OutPutProducts;\r\n","import { dialogDefault, DIALOG_PRODUCT } from \"../consts\";\r\n\r\nconst mydialog = { ...dialogDefault }\r\n\r\nexport const dialogProduct = product => ({ type: DIALOG_PRODUCT, payload : product });\r\n\r\nexport default function productDialogReducer(state = mydialog, { type, payload }) {\r\n \r\n const actions = {\r\n [DIALOG_PRODUCT] : () => ({...payload })\r\n }\r\n\r\n return actions[type]?.call() || state;\r\n}","import { dialogDefault, DIALOG_CATALOG } from \"../consts\";\r\n\r\nconst mydialog = { ...dialogDefault }\r\n\r\nexport const dialogCatalog = catalog => ({ type: DIALOG_CATALOG, payload : catalog });\r\n\r\nexport default function catalogDialogReducer(state = mydialog, { type, payload }) {\r\n \r\n const actions = {\r\n [DIALOG_CATALOG] : () => ({...payload })\r\n }\r\n\r\n return actions[type]?.call() || state;\r\n}","import React from \"react\";\r\nimport http from \"../../utils/http\";\r\nimport { useEffect } from \"react\";\r\n\r\n/**\r\n * Component to handle file upload. Works for image\r\n * uploads, but can be edited to work for any file.\r\n */\r\nfunction FileUpload({ id, showInput = true }) {\r\n // State to store uploaded file\r\n const [file, setFile] = React.useState(\"\");\r\n\r\n // Handles file upload event and updates state\r\n function handleUpload(event) {\r\n setFile(event.target.files[0]);\r\n http(`products/file/${id}`).asFile(event.target.files[0]).then(() => loadFile(id));\r\n }\r\n \r\n const loadFile = (id) => {\r\n if(id > 0)\r\n http(`products/file/${id}/get`).asGetFile().then(resp => {\r\n setFile(resp);\r\n });\r\n else\r\n setFile(null);\r\n }\r\n\r\n useEffect(() => { \r\n loadFile(id);\r\n }, [id])\r\n\r\n return (\r\n <div id=\"upload-box\" style={{overflow:'hidden'}}> \r\n {showInput && <input type=\"file\" onChange={handleUpload}/>}\r\n {file && <ImageThumb image={file} showInput={showInput} />}\r\n </div>\r\n );\r\n}\r\n\r\n/**\r\n * Component to display thumbnail of image.\r\n */\r\nconst ImageThumb = ({ image, showInput }) => {\r\n const widt = showInput == true ? '160px' : '250px';\r\n const heig = showInput == true ? '160px' : '250px';\r\n return <img width={widt} height={heig} className=\"img-photo\" src={URL.createObjectURL(image)} alt={image.name} />;\r\n};\r\n\r\nFileUpload.defaultProps = {\r\n onSave : () => {}\r\n}\r\n\r\nexport default FileUpload","import React, { useRef, useState } from 'react';\r\n\r\nimport { Popup, ToolbarItem } from 'devextreme-react/popup';\r\nimport Form, { SimpleItem, GroupItem, Label, EmptyItem, StringLengthRule, RequiredRule, EmailRule, AsyncRule } from 'devextreme-react/form';\r\nimport { Button } from 'devextreme-react/button';\r\n\r\nimport { useDispatch, useSelector } from 'react-redux'\r\nimport { dialogCatalog } from '../../store/catalog/catalogDialogReducer';\r\nimport { Lookup } from 'devextreme-react';\r\nimport http from '../../utils/http';\r\nimport uri from '../../utils/uri';\r\nimport notify from 'devextreme/ui/notify';\r\n\r\nconst NewCatalog = () => {\r\n\r\n const { open } = useSelector(store => store.catalog2);\r\n const [ saving, setSaving ] = useState(false);\r\n const [ catalog, setCatalog ] = useState({ id: 0, name: '', catalogId: 0 });\r\n const [ catalogs ] = useState([\r\n { id: 1, name: 'Categoria' },\r\n { id: 2, name: 'Marca' },\r\n { id: 3, name: 'Unidad de medida' },\r\n ]);\r\n\r\n const refCatalog = useRef();\r\n const dispatch = useDispatch();\r\n\r\n const closeDialog = (load) => {\r\n\r\n setCatalog({ id: 0, name: '', catalogId: 0 });\r\n dispatch(dialogCatalog({ open: false, id: 0 }));\r\n \r\n }\r\n\r\n const onHiding = ({ load }) => {\r\n\r\n closeDialog(load);\r\n\r\n }\r\n\r\n const guardarCatalog = () => {\r\n \r\n if (refCatalog.current.instance.validate().isValid) {\r\n\r\n setSaving(true);\r\n\r\n http(uri.new_catalog).asPost({ ...catalog })\r\n .then(resp => {\r\n setSaving(false);\r\n notify(`Catalogo creado correctamente`);\r\n closeDialog(true);\r\n })\r\n .catch(err => {\r\n setSaving(false);\r\n notify(err, 'error');\r\n })\r\n \r\n }\r\n }\r\n\r\n return (\r\n <div>\r\n <Popup\r\n width={300}\r\n height={200}\r\n title={`Nuevo catalogo`}\r\n onHiding={onHiding}\r\n visible={open}\r\n className=\"bg-fbfbfb\"\r\n >\r\n <Form formData={catalog} ref={refCatalog}> \r\n <SimpleItem dataField=\"name\" >\r\n <Label text=\"Nombre\" />\r\n <RequiredRule message=\"Ingrese el nombre\" />\r\n </SimpleItem>\r\n <SimpleItem dataField={'catalogId'} editorType={'dxSelectBox'} \r\n editorOptions={{ dataSource: catalogs, valueExpr: 'id', displayExpr: 'name' }}>\r\n <Label text=\"Catalogo\" />\r\n <RequiredRule message=\"Seleccione un catalogo\" />\r\n </SimpleItem>\r\n\r\n </Form>\r\n <div>\r\n <Button\r\n width={120}\r\n text={`${saving ? 'Guardando...' : 'Guardar'}`}\r\n type=\"default\"\r\n icon=\"save\"\r\n stylingMode=\"contained\"\r\n className=\"m-1\"\r\n disabled={saving}\r\n onClick={guardarCatalog}\r\n />\r\n </div>\r\n </Popup>\r\n </div>\r\n );\r\n}\r\n\r\nexport default NewCatalog;\r\n","import React, { useEffect, useRef, useState } from 'react';\r\nimport { Popup, ToolbarItem } from 'devextreme-react/popup';\r\nimport Form, { SimpleItem, GroupItem, Label, EmptyItem, StringLengthRule, RequiredRule, EmailRule, AsyncRule } from 'devextreme-react/form';\r\nimport { useDispatch, useSelector } from 'react-redux'\r\nimport Box, { Item } from 'devextreme-react/box';\r\nimport { dialogProduct } from '../../store/product/productDialogReducer';\r\nimport { dialogCatalog } from '../../store/catalog/catalogDialogReducer';\r\nimport { createCustomStore, createStoreLocal } from '../../utils/proxy';\r\nimport { editorOptionsNumberBox, editorOptionsSelect, editorOptionsSwitch, editorOptsTextBox } from '../../data/app';\r\nimport { Button } from 'devextreme-react/button';\r\nimport http from '../../utils/http';\r\nimport uri from '../../utils/uri';\r\nimport notify from 'devextreme/ui/notify';\r\nimport { defaultLabels, productDefault } from '../../data/defaultObjects';\r\nimport { formatId } from '../../utils/common';\r\nimport FileUpload from './FileUpload';\r\nimport NewCatalog from './NewCatalog';\r\n\r\n//import { useBarcode } from 'react-barcodes';\r\n\r\nconst Nuevo = props => {\r\n\r\n let refProduct = useRef();\r\n\r\n const [product, setProduct] = useState({ ...productDefault });\r\n const [saving, setSaving] = useState(false);\r\n const [reloadScreen, setReloadScreen] = useState(0);\r\n const [reload, setReload] = useState(false);\r\n //const [stockInherited, setStockInherited] = useState(false);\r\n const dispatch = useDispatch();\r\n const { productDialog: {open, id}, catalog2 } = useSelector(store => store);\r\n\r\n const closeDialog = (load) => {\r\n\r\n refProduct.current.instance.resetValues();\r\n setProduct({ ...productDefault });\r\n\r\n dispatch(dialogProduct({ open: false, id: 0 }));\r\n\r\n if (load) {\r\n\r\n let { onSave } = props;\r\n onSave();\r\n\r\n }\r\n }\r\n\r\n const onHiding = ({ load }) => {\r\n \r\n closeDialog(load);\r\n\r\n }\r\n\r\n const guardarProduct = (e) => {\r\n \r\n let resultValidate = refProduct.current.instance.validate();\r\n\r\n resultValidate.complete.then(result => {\r\n if (result.isValid) {\r\n\r\n setSaving(true);\r\n\r\n http(uri.products.insert).asPost({ ...product })\r\n .then(resp => {\r\n setSaving(false);\r\n notify(`Producto creado correctamente`);\r\n closeDialog(true);\r\n })\r\n .catch(err => {\r\n setSaving(false);\r\n notify(err, 'error');\r\n })\r\n }\r\n });\r\n }\r\n\r\n useEffect(() => {\r\n\r\n if (id > 0) {\r\n http(uri.products.getById(id)).asGet()\r\n .then(resp => {\r\n setProduct({ ...resp });\r\n })\r\n }\r\n\r\n }, [id]);\r\n\r\n const validationCallback = (e) => {\r\n return new Promise(resolve => {\r\n resolve(\r\n (product.convertProductId > 0 && (e.value != '' && e.value != null)) \r\n || ((product.convertProductId == '' || product.convertProductId == 0 || product.convertProductId == null) \r\n && (e.value == '' || e.value == 0 || e.value == null)));\r\n });\r\n }\r\n\r\n const validationCallback2 = (e) => {\r\n return new Promise(resolve => {\r\n resolve(\r\n (product.convertProductId > 0 && (e.value != '' && e.value != null && e.value > 0)) \r\n || ((product.convertProductId == '' || product.convertProductId == 0 || product.convertProductId == null) \r\n && e.value == 0 ));\r\n });\r\n }\r\n\r\n const buttonActualizar = {\r\n text: 'Actualizar',\r\n icon: 'refresh',\r\n onClick: function(e) { \r\n setReload(true);\r\n setReloadScreen(reloadScreen + 1);\r\n }\r\n };\r\n\r\n const buttonNewCatalog = {\r\n text: 'Nuevo catalogo',\r\n icon: 'plus',\r\n onClick: function(e) {\r\n dispatch(dialogCatalog({ open: true, id: 0 }));\r\n }\r\n };\r\n\r\n console.log({id});\r\n\r\n const isNew = id == 0 || id == undefined || id == null;\r\n\r\n const active = true;\r\n\r\n return (\r\n <div>\r\n <Popup\r\n width={900}\r\n height={'90vh'}\r\n title={isNew ? `Nuevo producto` : `Producto #${formatId(id)}`}\r\n onHiding={onHiding}\r\n visible={open}\r\n className=\"bg-fbfbfb\"\r\n >\r\n <NewCatalog />\r\n <ToolbarItem\r\n widget=\"dxButton\"\r\n location=\"after\"\r\n options={buttonActualizar}>\r\n </ToolbarItem>\r\n <ToolbarItem\r\n widget=\"dxButton\"\r\n location=\"after\"\r\n options={buttonNewCatalog}>\r\n </ToolbarItem>\r\n <Box direction=\"row\" width=\"100%\">\r\n <Item ratio={1}>\r\n <FileUpload id={id} showInput={true}/> \r\n </Item>\r\n <Item ratio={3}>\r\n <Form formData={product} ref={refProduct}>\r\n <GroupItem colCount={2}>\r\n \r\n <SimpleItem dataField=\"id\" colSpan={1} editorType=\"dxNumberBox\" editorOptions={{\r\n disabled: true\r\n }}>\r\n <Label text=\"Codigo\" />\r\n </SimpleItem>\r\n <SimpleItem dataField=\"internalCode\" colSpan={1} editorType=\"dxTextBox\" editorOptions={{\r\n ...editorOptsTextBox,\r\n disabled: false\r\n }}> \r\n <Label text=\"Codigo interno\" />\r\n </SimpleItem>\r\n <SimpleItem dataField=\"name\" colSpan={2}>\r\n <Label text=\"Nombre\" />\r\n <RequiredRule message=\"Ingrese el nombre\" />\r\n <StringLengthRule max={100} min={2} message=\"Máximo de caracteres 50 y 2 mínimo\" />\r\n </SimpleItem>\r\n <SimpleItem dataField=\"description\" colSpan={2}>\r\n <Label text=\"Nota\" />\r\n <StringLengthRule max={150} message=\"Máximo de caracteres 150\" />\r\n </SimpleItem>\r\n <SimpleItem dataField=\"familyId\" editorType=\"dxSelectBox\"\r\n editorOptions={{\r\n dataSource: createStoreLocal({ name: 'family', active, reload }),\r\n ...editorOptionsSelect\r\n }} >\r\n <Label text={defaultLabels.family} />\r\n <RequiredRule message={\"Seleccione el \" + defaultLabels.family} />\r\n </SimpleItem>\r\n <SimpleItem dataField=\"unitOfMeasureId\" editorType=\"dxSelectBox\"\r\n editorOptions={{\r\n dataSource: createStoreLocal({ name: 'unitOfMeasure', active, reload }),\r\n ...editorOptionsSelect\r\n }} >\r\n <Label text=\"Unidad Med.\" />\r\n <RequiredRule message=\"Seleccione la unida medida\" />\r\n </SimpleItem>\r\n <SimpleItem dataField=\"presentationId\" editorType=\"dxSelectBox\"\r\n editorOptions={{\r\n dataSource: createStoreLocal({ name: 'presentation', active, reload }),\r\n ...editorOptionsSelect\r\n }} >\r\n <Label text={defaultLabels.presentacion} />\r\n <RequiredRule message=\"Seleccione el estado\" />\r\n </SimpleItem> \r\n <SimpleItem dataField=\"stateId\" editorType=\"dxSelectBox\"\r\n editorOptions={{\r\n dataSource: createStoreLocal({ name: 'productState', active, reload }),\r\n ...editorOptionsSelect\r\n }} >\r\n <Label text=\"Estado\" />\r\n <RequiredRule message=\"Seleccione el estado\" />\r\n </SimpleItem> \r\n \r\n {/* <SimpleItem dataField=\"stock\" editorType=\"dxNumberBox\">\r\n <Label text=\"Minimo\" />\r\n <RequiredRule message=\"Ingrese el Minimo\" />\r\n </SimpleItem> */}\r\n <SimpleItem dataField=\"hasIva\" editorType=\"dxSwitch\"\r\n editorOptions={editorOptionsSwitch}>\r\n <Label text=\"Aplica IVA\" />\r\n </SimpleItem>\r\n <SimpleItem dataField=\"isService\" editorType=\"dxSwitch\"\r\n editorOptions={editorOptionsSwitch}>\r\n <Label text=\"Es Servicio?\" />\r\n </SimpleItem>\r\n </GroupItem>\r\n <GroupItem colCount={2} caption='Conversion'> \r\n <SimpleItem colSpan={1} dataField=\"convertSourceQuantiy\" editorType=\"dxNumberBox\" editorOptions={{\r\n ...editorOptionsNumberBox\r\n }}>\r\n <Label text=\"Cantidad\" />\r\n <AsyncRule message=\"Ingrese la cantidad\" validationCallback={validationCallback2}></AsyncRule>\r\n </SimpleItem> \r\n <EmptyItem colSpan={1} />\r\n <SimpleItem colSpan={2} dataField=\"convertProductId\" editorType=\"dxSelectBox\"\r\n editorOptions={{\r\n dataSource: createCustomStore({ url: 'catalogos/products' })(),\r\n ...editorOptionsSelect,\r\n displayExpr: item => item ? `${item.internalCode} - ${item.name} (${item.um})` : '', \r\n }} >\r\n <Label text=\"Convertir a\" />\r\n </SimpleItem>\r\n <SimpleItem colSpan={1} dataField=\"convertProductQuantity\" editorType=\"dxNumberBox\" editorOptions={{\r\n ...editorOptionsNumberBox\r\n }}>\r\n <Label text=\"Cantidad\" />\r\n <AsyncRule message=\"Ingrese la cantidad a convertir\" validationCallback={validationCallback}></AsyncRule>\r\n </SimpleItem> \r\n </GroupItem>\r\n </Form>\r\n </Item>\r\n </Box> \r\n <br />\r\n <div>\r\n <Button\r\n width={120}\r\n text={`${saving ? 'Guardando...' : 'Guardar'}`}\r\n type=\"default\"\r\n icon=\"save\"\r\n stylingMode=\"contained\"\r\n className=\"m-1\"\r\n disabled={saving}\r\n onClick={guardarProduct}\r\n />\r\n </div>\r\n </Popup>\r\n </div>\r\n );\r\n}\r\n\r\nexport default Nuevo;\r\n","import Products from './Products';\r\nexport default Products;","import React, { useRef } from 'react';\r\nimport Title from '../../components/shared/Title';\r\nimport DataGrid, {\r\n Column,\r\n ColumnChooser,\r\n Editing,\r\n Export,\r\n FilterRow,\r\n HeaderFilter,\r\n Lookup,\r\n Pager,\r\n Paging,\r\n Button as ButtonGrid \r\n } from 'devextreme-react/data-grid';\r\nimport { createStoreLocal } from '../../utils/proxy';\r\nimport uri from '../../utils/uri';\r\nimport { store } from '../../services/store';\r\nimport CustomButton from '../../components/buttons/CustomButton';\r\nimport { useDispatch } from 'react-redux'\r\nimport { dialogProduct } from '../../store/product/productDialogReducer';\r\nimport BlockHeader from '../../components/shared/BlockHeader';\r\nimport Nuevo from './Nuevo';\r\nimport useAuthorization from '../../hooks/useAuthorization';\r\nimport { resources } from '../../data/app';\r\nimport { dataFormatId } from '../../utils/common';\r\nimport { defaultLabels } from '../../data/defaultObjects';\r\n\r\n\r\nconst Products = (props) => {\r\n\r\n const [ authorized ] = useAuthorization( resources.inventario );\r\n\r\n let dataGrid = useRef();\r\n const dispatch = useDispatch();\r\n\r\n const reload = (params) => {\r\n dataGrid.current.instance.refresh();\r\n }\r\n\r\n const openDialog = (id=0) => dispatch(dialogProduct({open : true, id}));\r\n\r\n const onToolbarPreparing = (e) => {\r\n e.toolbarOptions.items.unshift({\r\n location: 'before',\r\n widget: 'dxButton',\r\n options: {\r\n text: 'Exportar a excel',\r\n icon: 'exportxlsx',\r\n type: 'success',\r\n stylingMode: \"outlined\",\r\n onClick: () => dataGrid.current.instance.exportToExcel(false)\r\n }\r\n });\r\n }\r\n\r\n const title = \"Inventario\";\r\n\r\n return authorized(\r\n <div className=\"container\">\r\n <Title title={title}/>\r\n <BlockHeader showFavorite={true} title={title} {...props}>\r\n <CustomButton\r\n text=\"Crear inventario\"\r\n icon='plus'\r\n onClick={() => openDialog(0)}\r\n />\r\n </BlockHeader>\r\n <Nuevo onSave={reload}/>\r\n <DataGrid id=\"gridContainer\"\r\n ref={dataGrid}\r\n selection={{ mode: 'single' }}\r\n dataSource={store({ uri : uri.products, remoteOperations : true })}\r\n showBorders={true}\r\n showRowLines={true}\r\n allowColumnResizing={true}\r\n allowColumnReordering={true}\r\n onToolbarPreparing={onToolbarPreparing}\r\n remoteOperations={{\r\n paging: true,\r\n filtering: true\r\n }} \r\n >\r\n <Paging defaultPageSize={20} />\r\n <Pager\r\n showPageSizeSelector={true}\r\n allowedPageSizes={[10, 20, 50]}\r\n showInfo={true} \r\n />\r\n <FilterRow visible={true} />\r\n <HeaderFilter visible={true} />\r\n <ColumnChooser enabled={true} />\r\n <Export enabled={false} fileName={title} allowExportSelectedData={true} />\r\n <Column dataField=\"id\" caption='Codigo' width={80} cellRender={dataFormatId} visible={false}/>\r\n <Column dataField=\"internalCode\" caption='Codigo' width={90}/>\r\n <Column dataField=\"name\" caption='Nombre' minWidth={120}/> \r\n <Column dataField=\"description\" caption='Descripcion' visible={false} />\r\n \r\n <Column dataField=\"presentationId\" caption={defaultLabels.presentacion} width={180}>\r\n <Lookup disabled={true} dataSource={createStoreLocal({name:'presentation'})} valueExpr=\"id\" displayExpr=\"name\" />\r\n </Column> \r\n <Column dataField=\"familyId\" caption={defaultLabels.family} width={180}>\r\n <Lookup disabled={true} dataSource={createStoreLocal({name:'family'})} valueExpr=\"id\" displayExpr=\"name\" />\r\n </Column> \r\n <Column dataField=\"unitOfMeasureId\" caption=\"UM\" width={120}>\r\n <Lookup disabled={true} dataSource={createStoreLocal({name: 'unitOfMeasure'})} valueExpr=\"id\" displayExpr=\"name\" />\r\n </Column>\r\n <Column dataField=\"stateId\" caption=\"Estado\" width={100}>\r\n <Lookup disabled={true} dataSource={createStoreLocal({name: 'productState'})} valueExpr=\"id\" displayExpr=\"name\" />\r\n </Column> \r\n <Column dataField=\"hasIva\" caption='IVA ?' type=\"boolean\" width={80} dataType=\"boolean\" visible={false}/>\r\n <Column dataField=\"stock\" caption='Stock' width={90} visible={false}/>\r\n <Column dataField=\"createBy\" caption='Creado Por' visible={false}/>\r\n <Column dataField=\"createAt\" caption='Creado el' visible={false} />\r\n <Column dataField=\"lastModificationBy\" caption='Modificado Por' visible={false}/>\r\n <Column dataField=\"lastDateModificationAt\" caption='Modificado el' visible={false} />\r\n <Column type=\"buttons\" width={60}>\r\n <ButtonGrid name=\"edit\" onClick={e => openDialog(e.row.data.id)}/>\r\n </Column>\r\n <Editing\r\n mode=\"popup\"\r\n useIcons={true}\r\n allowUpdating={true}\r\n >\r\n </Editing>\r\n </DataGrid>\r\n </div>\r\n );\r\n}\r\n\r\nexport default Products;\r\n","import Users from './Users'\r\nexport default Users;","import React, { useRef } from \"react\";\r\nimport {\r\n Column,\r\n FilterRow,\r\n SearchPanel,\r\n Lookup,\r\n Pager,\r\n Paging,\r\n Export,\r\n Editing,\r\n Popup,\r\n Form, \r\n StringLengthRule,\r\n EmailRule,\r\n} from 'devextreme-react/data-grid';\r\nimport { DataGrid } from 'devextreme-react';\r\nimport { createStore } from \"../../utils/proxy\";\r\nimport { confirm } from 'devextreme/ui/dialog';\r\n\r\nimport BlockHeader from '../../components/shared/BlockHeader';\r\nimport Title from \"../../components/shared/Title\";\r\nimport { store } from \"../../services/store\";\r\nimport { Item, RequiredRule } from \"devextreme-react/form\";\r\nimport uri from \"../../utils/uri\";\r\nimport http from \"../../utils/http\";\r\nimport notify from \"devextreme/ui/notify\";\r\nimport { dataAccess, resources } from \"../../data/app\";\r\nimport useAuthorization from \"../../hooks/useAuthorization\";\r\n\r\nconst Users = () => {\r\n\r\n const [ authorized ] = useAuthorization( resources.adminUsuario );\r\n\r\n const dataGrid = useRef();\r\n\r\n const reload = () => {\r\n dataGrid.current.instance.refresh();\r\n }\r\n\r\n const addMenuItems = (e) => {\r\n\r\n if (e.target == \"content\") {\r\n if (!e.items) e.items = [];\r\n\r\n let { username, active } = e.row.data;\r\n \r\n e.items.push({\r\n text: `${active ? 'Anular' : 'Activar'} usuario`,\r\n icon : active ? 'remove' : 'check',\r\n onItemClick: () => { \r\n\r\n http('users/update').asGet({username, active: !active}).then(resp => {\r\n reload();\r\n notify(\"Usuario actualizado correctamente\");\r\n }); \r\n\r\n }\r\n },{\r\n text: `Restablecer contraseña`,\r\n icon : 'refresh',\r\n onItemClick: () => {\r\n \r\n let result = confirm(\"<i>Estas seguro de restablecer la contraseña?</i>\", \"Confirmar\");\r\n result.then((dialogResult) => {\r\n if(dialogResult)\r\n http('account/resetpassworddefault').asPost({username}).then(resp => {\r\n notify(\"Contraseña retablecida correctamente\");\r\n });\r\n });\r\n\r\n \r\n }\r\n });\r\n }\r\n }\r\n\r\n const onToolbarPreparing = (e) => {\r\n e.toolbarOptions.items.unshift({\r\n location: 'before',\r\n widget: 'dxButton',\r\n options: {\r\n text: 'Nuevo usuario',\r\n icon: 'add',\r\n type: 'default',\r\n stylingMode: \"outlined\",\r\n onClick: () => dataGrid.current.instance.addRow()\r\n }\r\n },{\r\n location: 'before',\r\n widget: 'dxButton',\r\n options: {\r\n text: 'Exportar a excel',\r\n icon: 'exportxlsx',\r\n type: 'success',\r\n stylingMode: \"outlined\",\r\n onClick: () => dataGrid.current.instance.exportToExcel(false)\r\n }\r\n });\r\n }\r\n\r\n const setCellValue = (prop, newData, value, currentRowData) => {\r\n\r\n newData[prop] = value || '';\r\n if(prop == 'email' && value){\r\n\r\n let username = '';\r\n if(String(value).length > 0)\r\n username = String(value).split('@')[0];\r\n newData['username'] = username;\r\n \r\n } \r\n \r\n }\r\n \r\n const title = \"Usuarios\";\r\n\r\n return authorized(\r\n <div className=\"container\">\r\n <Title title={title} />\r\n <BlockHeader title={title} />\r\n <DataGrid\r\n ref={dataGrid}\r\n dataSource={store({ uri: uri.users, remoteOperations : true})}\r\n selection={{ mode: 'single' }}\r\n showBorders={true}\r\n showRowLines={true}\r\n allowColumnResizing={true}\r\n allowColumnReordering={true}\r\n hoverStateEnabled={true}\r\n onContextMenuPreparing={addMenuItems}\r\n remoteOperations={{\r\n paging: true,\r\n filtering: true\r\n }}\r\n onToolbarPreparing={onToolbarPreparing}\r\n >\r\n <Pager allowedPageSizes={[15, 30, 50]} showPageSizeSelector={true} showInfo={true} />\r\n <Paging defaultPageSize={30} />\r\n <SearchPanel visible={true} width={250} />\r\n <FilterRow visible={true} /> \r\n <Export enabled={false} fileName={title} allowExportSelectedData={true} />\r\n <Column dataField=\"username\" width={140} allowEditing={false}/>\r\n <Column dataField=\"code\" caption={'Codigo'} width={140} />\r\n <Column dataField=\"fullName\" caption=\"Nombre\" />\r\n <Column dataField=\"email\" allowFiltering={false} setCellValue={setCellValue.bind(null, 'email')}/>\r\n <Column dataField=\"areaId\" width={150} caption=\"Area\">\r\n <Lookup disabled={true} dataSource={createStore({name :'area'})} valueExpr=\"id\" displayExpr=\"name\" />\r\n </Column>\r\n <Column dataField=\"rolId\" width={160} caption=\"Permisos\">\r\n <Lookup disabled={true} dataSource={createStore({name :'rol'})} valueExpr=\"id\" displayExpr=\"name\" />\r\n </Column>\r\n <Column dataField=\"active\" caption=\"Activo\" dataType=\"boolean\" width={100}/>\r\n <Editing\r\n mode=\"popup\"\r\n allowUpdating={true} \r\n useIcons={true} \r\n >\r\n <Popup title={title} showTitle={true} width={380} height={430}> \r\n </Popup>\r\n <Form colCount={1}>\r\n <Item dataField=\"username\">\r\n </Item>\r\n <Item dataField=\"code\">\r\n <RequiredRule message=\"El nombre es requerido\" />\r\n <StringLengthRule max={5} min={2} message=\"Máximo de caracteres 5 y 2 mínimo\" />\r\n </Item>\r\n <Item dataField=\"fullName\" >\r\n <RequiredRule message=\"El nombre es requerido\" />\r\n <StringLengthRule max={150} min={5} message=\"Máximo de caracteres 150 y 5 mínimo\" />\r\n </Item>\r\n <Item dataField=\"email\" >\r\n <RequiredRule message=\"El email es requerido\" />\r\n <EmailRule />\r\n <StringLengthRule max={50} min={5} message=\"Máximo de caracteres 50 y 5 mínimo\" />\r\n </Item> \r\n <Item dataField=\"areaId\" >\r\n <RequiredRule message=\"El area es requerida\" />\r\n </Item>\r\n <Item dataField=\"rolId\" >\r\n <RequiredRule message=\"El rol es requerido\" />\r\n </Item>\r\n\r\n </Form>\r\n </Editing>\r\n </DataGrid>\r\n </div>\r\n );\r\n}\r\n\r\nexport default Users;\r\n\r\n","import Roles from './Roles'\r\nexport default Roles;","import React from \"react\";\r\nimport { DataGrid } from \"devextreme-react\";\r\nimport { Item } from \"devextreme-react/box\";\r\nimport uri from \"../../utils/uri\";\r\nimport { store } from \"../../services/store\";\r\nimport { Column, Editing, Popup, Form,\r\n RequiredRule,\r\n StringLengthRule, } from \"devextreme-react/data-grid\";\r\nimport Title from \"../../components/shared/Title\";\r\nimport BlockHeader from \"../../components/shared/BlockHeader\";\r\nimport { dataAccess, resources } from \"../../data/app\";\r\nimport useAuthorization from \"../../hooks/useAuthorization\";\r\n\r\n\r\n\r\nconst Roles = props => {\r\n\r\n const [ authorized ] = useAuthorization( resources.adminUsuario );\r\n\r\n const title ='Roles'\r\n\r\n return authorized(\r\n <div className=\"container small\">\r\n <Title title={title} />\r\n <BlockHeader title={title} />\r\n <DataGrid\r\n dataSource={store({ uri: uri.roles })}\r\n showBorders={true}\r\n showRowLines={true}\r\n >\r\n <Column dataField=\"id\" caption=\"Id\" width={60} visible={false} allowEditing={false} />\r\n <Column dataField=\"name\" caption=\"Rol\" />\r\n\r\n <Editing\r\n mode=\"popup\"\r\n allowUpdating={true}\r\n allowDeleting={false}\r\n allowAdding={true}\r\n useIcons={true}\r\n >\r\n <Popup width={300} height={200}>\r\n </Popup>\r\n <Form colCount={1}>\r\n <Item dataField=\"id\" >\r\n </Item>\r\n <Item dataField=\"name\" >\r\n <RequiredRule message=\"El nombre es requerido\" />\r\n <StringLengthRule max={50} min={2} message=\"Máximo de caracteres 50 y 2 mínimo\" />\r\n </Item> \r\n </Form>\r\n </Editing>\r\n \r\n </DataGrid>\r\n\r\n </div>\r\n );\r\n}\r\n\r\nexport default Roles;","import Resources from './Resources'\r\nexport default Resources;","import React, { useState, useEffect } from \"react\";\r\nimport { Box, DataGrid, SelectBox } from \"devextreme-react\";\r\nimport { Item } from \"devextreme-react/box\";\r\nimport http from \"../../utils/http\";\r\nimport uri from \"../../utils/uri\";\r\nimport { store } from \"../../services/store\";\r\nimport { Column, Editing, Popup, Form, FilterRow } from \"devextreme-react/data-grid\";\r\nimport Title from \"../../components/shared/Title\";\r\nimport BlockHeader from \"../../components/shared/BlockHeader\";\r\nimport useAuthorization from \"../../hooks/useAuthorization\";\r\nimport { dataAccess, editorOptionsSwitch, resources } from \"../../data/app\";\r\n\r\n\r\n\r\nconst Resources = props => {\r\n\r\n const [ authorized ] = useAuthorization( resources.adminUsuario );\r\n\r\n const [roles, setRoles] = useState([]);\r\n const [rolId, setRolId] = useState(0);\r\n\r\n const onLoad = (e) => {\r\n http(uri.roles.get).asGet().then(resp => {\r\n setRoles(resp);\r\n });\r\n }\r\n\r\n useEffect(() => {\r\n onLoad();\r\n }, [0]);\r\n\r\n const changeHandler = (e) => {\r\n\r\n setRolId(e.value ?? 0);\r\n }\r\n\r\n const title ='Recursos'\r\n\r\n return authorized(\r\n <div className=\"container medium\">\r\n <Title title={title} />\r\n <BlockHeader title={title} />\r\n <Box direction=\"row\" width=\"100%\" height={75}>\r\n <Item ratio={0} baseSize=\"260px\">\r\n <label>Seleccione un rol:</label>\r\n <SelectBox items={roles}\r\n placeholder=\"Selecciona un Rol\"\r\n showClearButton={true} valueExpr=\"id\" displayExpr=\"name\" onValueChanged={changeHandler} />\r\n </Item>\r\n </Box>\r\n <Box direction=\"row\" width=\"100%\" height={75}>\r\n\r\n <Item ratio={1}>\r\n <label>Acceso a recursos</label>\r\n <DataGrid\r\n dataSource={store({ uri: { get: uri.resources(rolId), insert: uri.resources(rolId) } })}\r\n showBorders={true}\r\n showRowLines={true}\r\n selection={{ mode: 'single' }}\r\n allowColumnResizing={true} \r\n rowAlternationEnabled={true}\r\n hoverStateEnabled={true}\r\n groupPanel={{ visible: true }}\r\n >\r\n <Editing\r\n mode=\"popup\"\r\n allowUpdating={true}\r\n allowDeleting={false}\r\n allowAdding={false}\r\n useIcons={true}\r\n >\r\n <Popup title=\"Configuracion\" width={450} height={250}>\r\n </Popup>\r\n <Form colCount={1}>\r\n <Item dataField=\"name\" /> \r\n <Item dataField=\"description\" /> \r\n <Item dataField=\"canRead\" editorType=\"dxSwitch\" editorOptions={editorOptionsSwitch} /> \r\n </Form>\r\n </Editing>\r\n <FilterRow visible={true} />\r\n <Column dataField=\"groupName\" caption=\"Grupo\" allowEditing={false} groupIndex={0} />\r\n <Column dataField=\"name\" caption=\"Recurso\" allowEditing={false} />\r\n <Column dataField=\"description\" caption=\"Descripción\" allowEditing={false} />\r\n <Column dataField=\"canRead\" caption=\"Permiso\" allowFiltering={false} width={160} /> \r\n </DataGrid>\r\n </Item>\r\n\r\n </Box>\r\n\r\n </div>\r\n );\r\n}\r\n\r\nexport default Resources;","import React, { useState } from 'react';\r\nimport { Popup, FileUploader, Button } from 'devextreme-react';\r\nimport notify from 'devextreme/ui/notify';\r\nimport http from '../../utils/http';\r\nimport uri from '../../utils/uri';\r\nimport ButtonForm from '../../components/buttons/ButtonForm';\r\n\r\nconst Nuevo = (props) => {\r\n \r\n const [visible, setVisible] = useState(false);\r\n const [saving, setSaving] = useState(false);\r\n\r\n let formElement = React.createRef();\r\n\r\n const showPopup = (e) => {\r\n setVisible(true);\r\n }\r\n\r\n const hideInfo = ({ cancel }) => {\r\n setVisible(false);\r\n\r\n if (cancel) {\r\n\r\n let { onSave } = props;\r\n onSave();\r\n\r\n }\r\n }\r\n\r\n const onClick = () => {\r\n\r\n if(formElement.current.instance._files.length){\r\n\r\n let file = formElement.current.instance._files[0].value;\r\n setSaving(true);\r\n\r\n http(uri.fileRates.insert).asFile(file).then(r => {\r\n\r\n notify(`Su archivo ${r.name} agregado correctamente`);\r\n setSaving(false);\r\n hideInfo({ cancel: true });\r\n\r\n }).catch(err =>{\r\n\r\n setSaving(false);\r\n notify(err, 'error');\r\n\r\n });\r\n }else\r\n notify('Debe de seleccionar un archivo de excel','warning')\r\n\r\n }\r\n\r\n const textSaving = \"Subir archivo\";\r\n\r\n return (\r\n <div id=\"container\">\r\n <Button\r\n width={180}\r\n text=\"Subir desde excel\"\r\n type=\"success\" \r\n icon=\"exportxlsx\"\r\n stylingMode=\"outlined\"\r\n onClick={showPopup}\r\n />\r\n <Popup\r\n width={400}\r\n height={500}\r\n title=\"Subir archivo\"\r\n onHiding={hideInfo}\r\n visible={visible}\r\n >\r\n <form id=\"form\" method=\"post\" encType=\"multipart/form-data\">\r\n <img width={350} src={require('../../svg/formatRates.png')}></img>\r\n <FileUploader ref={formElement}\r\n selectButtonText=\"Seleccione un archivo\"\r\n labelText=\"\"\r\n allowedFileExtensions={['.xls', '.xlsx']} uploadMode=\"useForm\" />\r\n <ButtonForm saving={saving} textSaving={textSaving} onClick={onClick}/>\r\n </form>\r\n </Popup>\r\n </div>\r\n )\r\n \r\n}\r\n\r\nexport default Nuevo;","import Rates from './Rates';\r\nexport default Rates;","import React from 'react';\r\nimport { DataGrid } from 'devextreme-react';\r\nimport { Paging, Pager, FilterRow, Column, Export, Editing, RequiredRule } from 'devextreme-react/data-grid';\r\n\r\nimport Title from '../../components/shared/Title';\r\nimport { store } from '../../services/store';\r\nimport uri from '../../utils/uri';\r\nimport Nuevo from './Nuevo';\r\nimport BlockHeader from '../../components/shared/BlockHeader';\r\nimport useAuthorization from '../../hooks/useAuthorization';\r\nimport { dataAccess, resources } from '../../data/app';\r\n\r\nconst Rates = () => {\r\n\r\n const [ authorized ] = useAuthorization( resources.adminTasaCambios );\r\n\r\n let dataGrid = React.createRef();\r\n\r\n const reload = () => dataGrid.current.instance.refresh(); \r\n \r\n const onToolbarPreparing = (e) => { \r\n e.toolbarOptions.items.unshift({\r\n location: 'after',\r\n widget: 'dxButton',\r\n options: {\r\n text: 'Agregar',\r\n icon:'plus',\r\n type:'default',\r\n stylingMode:\"outlined\",\r\n onClick: () => dataGrid.current.instance.addRow()\r\n }\r\n });\r\n } \r\n\r\n const title=\"Tasa de cambio\";\r\n\r\n return authorized(\r\n <div className=\"container small\">\r\n <Title title={title}/>\r\n <BlockHeader title={title} />\r\n <Nuevo onSave={reload} />\r\n <DataGrid id=\"gridContainer\"\r\n ref={dataGrid}\r\n selection={{ mode: 'single' }}\r\n dataSource={store({\r\n uri: uri.rates, \r\n msgInserted: 'Tasa de cambio agregada correctamente',\r\n msgUpdated: 'Tasa de cambio modificada correctamente',\r\n msgDeleted: 'Tasa de cambio eliminada correctamente',\r\n remoteOperations : true}\r\n )}\r\n showBorders={true}\r\n showRowLines={true}\r\n allowColumnResizing={true}\r\n allowColumnReordering={true}\r\n remoteOperations={{ \r\n paging: true,\r\n filtering: true\r\n }} \r\n onToolbarPreparing={onToolbarPreparing}\r\n >\r\n <Paging defaultPageSize={10} />\r\n <Pager\r\n showInfo={true}\r\n showPageSizeSelector={true}\r\n allowedPageSizes={[10, 20, 50]}\r\n />\r\n <FilterRow visible={true} /> \r\n <Export enabled={true} fileName=\"TasaCambio\" allowExportSelectedData={true} />\r\n <Column dataField=\"date\" dataType=\"date\" caption=\"Fecha\" format='dd/MM/yyyy'>\r\n <RequiredRule/>\r\n </Column>\r\n <Column dataField=\"value\" caption=\"Valor\" dataType=\"number\">\r\n <RequiredRule/>\r\n </Column>\r\n <Editing\r\n mode=\"cell\"\r\n allowUpdating={true}\r\n allowDeleting={true}\r\n allowAdding={true}\r\n useIcons={true}\r\n > \r\n </Editing>\r\n </DataGrid>\r\n </div>\r\n );\r\n}\r\n\r\nexport default Rates;\r\n","import { dialogDefault, DIALOG_INPUTPRODUCT } from \"../consts\";\r\n\r\nconst mydialog = { ...dialogDefault }\r\n\r\nexport const dialogInputProduct = payload => ({ type: DIALOG_INPUTPRODUCT, payload });\r\n\r\nexport default function inPutProductDialogReducer(state = mydialog, { type, payload }) {\r\n const actions = {\r\n [DIALOG_INPUTPRODUCT] : () => ({...state, ...payload })\r\n }\r\n\r\n return actions[type]?.call() || state;\r\n}","export const addMenu = (e, items) => {\r\n\r\n if (e.target == \"content\") {\r\n \r\n if (!e.items) e.items = [];\r\n \r\n if (e.rowIndex >= 0)\r\n e.items.push(...items);\r\n\r\n }\r\n\r\n}","import React from 'react';\r\nimport BlockHeader from '../../../components/shared/BlockHeader';\r\nimport Title from '../../../components/shared/Title';\r\nimport DataGrid, {\r\n Column,\r\n ColumnChooser,\r\n Editing,\r\n Export,\r\n FilterRow,\r\n HeaderFilter,\r\n Lookup,\r\n Pager,\r\n Paging,\r\n Button as ButtonGrid,\r\n} from 'devextreme-react/data-grid';\r\nimport { createStoreLocal } from '../../../utils/proxy';\r\nimport uri from '../../../utils/uri';\r\nimport { store } from '../../../services/store';\r\nimport { inPutProductStates, inPutProductTypes } from '../../../data/enums';\r\nimport { dataAccess, formatDate, formatDateTime, resources } from '../../../data/app';\r\nimport CustomButton from '../../../components/buttons/CustomButton';\r\nimport { useDispatch } from 'react-redux'\r\nimport { dialogInputProduct } from '../../../store/inPutProduct/inPutProductDialogReducer';\r\nimport useAuthorization from '../../../hooks/useAuthorization';\r\nimport { dataFormatId } from '../../../utils/common';\r\nimport { addMenu } from '../../../components/grids/Menu';\r\nimport { onToolbar } from '../../../components/grids/ToolBar';\r\nimport { Col } from 'devextreme-react/responsive-box';\r\nimport urlReport from '../../../services/reportServices';\r\n\r\nconst InPutProducts = (\r\n {\r\n title = \"Entrada de entrada inventario\",\r\n btnAddText = \"Crear entrada\",\r\n typeId = null,\r\n icon = \"\",\r\n Component = null,\r\n resourcesId = null, \r\n dialog = dialogInputProduct\r\n }) => {\r\n\r\n const [ authorized ] = useAuthorization( resourcesId );\r\n\r\n let dataGrid = React.createRef();\r\n const dispatch = useDispatch();\r\n\r\n const reload = e => dataGrid.current.instance.refresh();\r\n \r\n\r\n const onRowPrepared = (e) => {\r\n if (e.rowType == 'data') {\r\n \r\n if (e.data.stateId == inPutProductStates.noActivo)\r\n e.rowElement.classList.add('no-activo');\r\n\r\n }\r\n }\r\n\r\n const showDialog = (id) => dispatch(dialog({ open: true, id })); \r\n\r\n const addMenuItems = (e) => {\r\n addMenu(e, [{\r\n text: `Ver ${title}`,\r\n icon: 'find',\r\n onItemClick: () => showDialog(e.row.data.id)\r\n }])\r\n }\r\n\r\n const onToolbarPreparing = onToolbar({ export : true } , dataGrid);\r\n\r\n const printReport = ( id ) => {\r\n \r\n const report = urlReport();\r\n report.print(`${report.inPut(id)}`);\r\n\r\n }\r\n\r\n return authorized(\r\n <div className=\"container\">\r\n <Title title={title} />\r\n <BlockHeader title={title} icon={icon} >\r\n <CustomButton\r\n text={btnAddText}\r\n icon='plus'\r\n onClick={() => showDialog(0)}\r\n />\r\n </BlockHeader>\r\n <Component onSave={reload} typeId={typeId} />\r\n\r\n <DataGrid id=\"gridContainer\"\r\n ref={dataGrid}\r\n selection={{ mode: 'single' }}\r\n dataSource={store({ uri: uri.inPutProducts, remoteOperations: true, extraParameter: typeId ? { key: 'typeId', value: typeId } : null })}\r\n showBorders={true}\r\n showRowLines={true}\r\n allowColumnResizing={true}\r\n allowColumnReordering={true}\r\n onRowPrepared={onRowPrepared}\r\n onContextMenuPreparing={addMenuItems}\r\n onToolbarPreparing={onToolbarPreparing}\r\n remoteOperations={{\r\n paging: true,\r\n filtering: true\r\n }}\r\n >\r\n <Paging defaultPageSize={20} />\r\n <Pager\r\n showInfo={true}\r\n showPageSizeSelector={true}\r\n allowedPageSizes={[10, 20, 50]}\r\n />\r\n <FilterRow visible={true} />\r\n <HeaderFilter visible={true} />\r\n <ColumnChooser enabled={true} />\r\n <Export enabled={false} fileName={title} allowExportSelectedData={true} />\r\n <Column dataField=\"id\" caption='Numero' width={100} cellRender={dataFormatId} />\r\n <Column dataField=\"date\" caption='Fecha' dataType='date' format={formatDate} width={90} />\r\n <Column dataField=\"areaId\" caption=\"Area\" width={170}>\r\n <Lookup disabled={true} dataSource={createStoreLocal({ name: 'area' })} valueExpr=\"id\" displayExpr=\"name\" />\r\n </Column>\r\n <Column dataField=\"typeId\" caption=\"Tipo Entrada\" width={130}>\r\n <Lookup disabled={true} dataSource={createStoreLocal({ name: 'inPutProductType' })} valueExpr=\"id\" displayExpr=\"name\" />\r\n </Column>\r\n <Column dataField=\"reference\" caption='Referencia' minWidth={100} />\r\n <Column dataField=\"provider.name\" caption='Proveedor' visible={typeId == inPutProductTypes.compra} />\r\n <Column dataField=\"observation\" caption='Observacion' visible={false} allowHeaderFiltering={false} allowFiltering={false}/>\r\n <Column dataField=\"total\" caption='Total' dataType='number' format={{ type: 'fixedPoint', precision: 2 }} width={100} />\r\n <Column dataField=\"stateId\" caption=\"Estado\" width={90}>\r\n <Lookup disabled={true} dataSource={createStoreLocal({ name: 'inPutProductState' })} valueExpr=\"id\" displayExpr=\"name\" />\r\n </Column>\r\n <Column dataField=\"createAt\" caption='Creado el' dataType='date' format={formatDateTime} width={180} />\r\n <Column dataField=\"createBy\" caption='Creado Por' width={120} />\r\n <Column type=\"buttons\" width={60}>\r\n <ButtonGrid name=\"edit\" icon=\"find\" onClick={e => showDialog(e.row.data.id)}/>\r\n <ButtonGrid name=\"print\" icon=\"print\" onClick={e => printReport(e.row.data.id)}/>\r\n <ButtonGrid name=\"delete\" />\r\n </Column>\r\n <Editing\r\n mode=\"popup\"\r\n allowDeleting={true}\r\n allowUpdating={true}\r\n useIcons={true}\r\n >\r\n </Editing>\r\n </DataGrid>\r\n </div>\r\n );\r\n}\r\n\r\nexport default InPutProducts;\r\n","import React, { useState, useEffect, useRef } from 'react';\r\nimport { Popup } from 'devextreme-react/popup';\r\nimport Form, { SimpleItem, GroupItem, Label, AsyncRule,RequiredRule, StringLengthRule} from 'devextreme-react/form';\r\nimport { useDispatch, useSelector } from 'react-redux'\r\nimport { dialogInputProduct } from '../../../store/inPutProduct/inPutProductDialogReducer';\r\nimport { createStoreLocal } from '../../../utils/proxy';\r\nimport { editorOptionsSelect } from '../../../data/app';\r\nimport { DataGrid } from 'devextreme-react';\r\nimport { Column, Editing, Lookup, RequiredRule as RuleRequired, Button as ButtonGrid, Summary, TotalItem, Pager, SearchPanel } from 'devextreme-react/data-grid';\r\nimport ProductDDBComponent from '../../../components/dropdown/ProductDDBComponent';\r\nimport uri from '../../../utils/uri';\r\nimport { cellRender, onCellPrepared, formatToMoney, formatId } from '../../../utils/common';\r\nimport http from '../../../utils/http';\r\nimport useProducts from '../../../hooks/useProducts';\r\nimport gridsHelper from '../../../utils/gridsHelper';\r\nimport ButtonForm from '../../../components/buttons/ButtonForm';\r\nimport notify from 'devextreme/ui/notify';\r\nimport { confirm } from 'devextreme/ui/dialog';\r\nimport { inPutProductTypes } from '../../../data/enums';\r\nimport { defaultLabels, inPutProductDefault } from '../../../data/defaultObjects';\r\n\r\nconst Nuevo = props => { \r\n \r\n const { typeId, exists = false } = props;\r\n\r\n const canEdit = typeId == inPutProductTypes.saldoInicial;\r\n\r\n const { inPutProductDialog : { open, id }, user } = useSelector(store => store);\r\n\r\n const active = true;\r\n\r\n const { products } = useProducts({ areaId: user.areaId, active, exists, onlyProducts: true });\r\n const [ inPutProduct, setInPutProduct ] = useState({...inPutProductDefault});\r\n const [ saving, setSaving ] = useState(false);\r\n const [ details, setDetails ] = useState([]);\r\n\r\n let refForm = useRef();\r\n let refGrid = useRef();\r\n\r\n useEffect(() => { \r\n\r\n if(id > 0){\r\n \r\n http(uri.inPutProducts.getById(id)).asGet().then(resp => {\r\n\r\n const { inPutProductDetails, ...rest } = resp;\r\n\r\n inPutProductDetails.map(detail =>{\r\n\r\n let info = products.find(x => x.id == detail.productId);\r\n\r\n detail['presentation'] = info.presentation;\r\n detail['um'] = info.um;\r\n detail['family'] = info.family;\r\n\r\n return detail;\r\n });\r\n\r\n setInPutProduct({...inPutProduct, ...rest});\r\n setDetails([...inPutProductDetails]);\r\n\r\n });\r\n\r\n }else{\r\n\r\n setInPutProduct({...inPutProductDefault, areaId : user.areaId, typeId : typeId});\r\n setDetails([]); \r\n\r\n }\r\n }, [open]);\r\n\r\n const dispatch = useDispatch();\r\n const onToolbarPreparing = gridsHelper(refGrid, { text : 'Agregar producto', icon:'plus' });\r\n\r\n const closeDialog = ( load ) => {\r\n\r\n refForm.current.instance.resetValues(); \r\n refGrid.current.instance.cancelEditData();\r\n\r\n dispatch(dialogInputProduct({open : false, id: 0}));\r\n if (load) {\r\n let { onSave } = props;\r\n onSave(); \r\n } \r\n }\r\n\r\n const onHiding = ({ load }) => {\r\n \r\n closeDialog(load); \r\n }\r\n\r\n const guardarEntrada = (e) => {\r\n\r\n let result = refForm.current.instance.validate();\r\n\r\n if (result.isValid) {\r\n\r\n let result = confirm(\"<i>Esta seguro de guardar el ajuste entrada?</i>\", \"Confirmar\");\r\n\r\n result.then((dialogResult) => {\r\n if (dialogResult) { \r\n\r\n setSaving(true);\r\n let data = {...inPutProduct,inPutProductDetails:[...details] };\r\n\r\n http(uri.inPutProducts.insert).asPost(data).then(resp => {\r\n setSaving(false);\r\n notify('Entrada registrada correctamente');\r\n closeDialog(true);\r\n }).catch(err => {\r\n setSaving(false);\r\n notify(err, 'error', 5000);\r\n });\r\n }\r\n });\r\n\r\n }\r\n\r\n }\r\n\r\n const setCellValue = (prop, newData, value, currentRowData) => {\r\n\r\n newData[prop] = value || 0;\r\n if(prop == 'productId' && value){\r\n\r\n let info = products.find(x => x.id == value);\r\n \r\n newData['presentation'] = info.presentation;\r\n newData['um'] = info.um;\r\n newData['family'] = info.family;\r\n newData['cost'] = canEdit ? 0 : info.cost ;\r\n newData['price'] = canEdit ? 0 : info.price ;\r\n newData['quantity'] = 1;\r\n newData['total'] = info.cost;\r\n }\r\n \r\n if(prop == 'quantity' && (+value) >= 0){\r\n newData['total'] = currentRowData['cost'] * value;\r\n }\r\n\r\n if(prop == 'cost' && (+value) >= 0){\r\n newData['total'] = currentRowData['quantity'] * value;\r\n }\r\n\r\n }\r\n\r\n const onRowInserting = (e) => {\r\n\r\n const isCanceled = new Promise((resolve, reject) => {\r\n\r\n const existsProduct = details.find(x => x.productId == e.data.productId);\r\n\r\n if (existsProduct) {\r\n notify(`El producto ya se encuentra en la lista`, 'error', 1000);\r\n reject(`El producto ya se encuentra en la lista`);\r\n }else{\r\n resolve(false);\r\n }\r\n });\r\n e.cancel = isCanceled;\r\n\r\n }\r\n\r\n const isNew = id == 0;\r\n\r\n const textSaving = 'Guardar entrada';\r\n\r\n return (\r\n <div>\r\n <Popup\r\n width={1050}\r\n height={550}\r\n title={isNew ? `Nueva entrada de inventario` : `Entrada #${ formatId(id)}`}\r\n onHiding={onHiding}\r\n visible={open} \r\n >\r\n <Form formData={inPutProduct} ref={refForm}>\r\n <GroupItem colCount={3}> \r\n <SimpleItem dataField=\"areaId\" editorType=\"dxSelectBox\"\r\n editorOptions={{\r\n disabled: true,\r\n dataSource: createStoreLocal({ name: 'area'}),\r\n ...editorOptionsSelect\r\n }} >\r\n <Label text=\"Area\" />\r\n <RequiredRule message=\"Seleccione el area\" />\r\n </SimpleItem>\r\n <SimpleItem dataField=\"date\" editorType=\"dxDateBox\"\r\n editorOptions={{\r\n displayFormat : 'dd/MM/yyyy',\r\n openOnFieldClick:true,\r\n }} >\r\n <Label text=\"Fecha\" />\r\n <RequiredRule message=\"Seleccione la fecha\" />\r\n </SimpleItem>\r\n <SimpleItem dataField=\"typeId\" editorType=\"dxSelectBox\"\r\n editorOptions={{\r\n disabled: true,\r\n dataSource: createStoreLocal({name: 'inPutProductType'}),\r\n ...editorOptionsSelect\r\n }} >\r\n <Label text=\"Tipo\" />\r\n <RequiredRule message=\"Seleccione el tipo\" />\r\n </SimpleItem>\r\n <SimpleItem dataField=\"observation\" colSpan={3} editorType=\"dxTextArea\">\r\n <Label text=\"Observacion\" />\r\n <RequiredRule message=\"Ingrese una observacion\" />\r\n <StringLengthRule max={500} message=\"Maximo 500 caracteres\" />\r\n </SimpleItem>\r\n </GroupItem>\r\n <GroupItem>\r\n <DataGrid id=\"gridDetails\"\r\n ref={refGrid}\r\n selection={{ mode: 'single' }}\r\n dataSource={details}\r\n showBorders={true}\r\n showRowLines={true}\r\n allowColumnResizing={true}\r\n allowColumnReordering={true}\r\n height={320}\r\n onToolbarPreparing={onToolbarPreparing}\r\n onCellPrepared={onCellPrepared}\r\n onRowInserting={onRowInserting}\r\n >\r\n <Pager\r\n showInfo={true}\r\n showPageSizeSelector={true}\r\n allowedPageSizes={[10, 20, 50]}\r\n />\r\n <SearchPanel visible={true} />\r\n <Column dataField=\"productId\" caption=\"Producto\"\r\n setCellValue={setCellValue.bind(null,\"productId\")}\r\n editCellComponent={props => <ProductDDBComponent showPrice={false} {...props} />}>\r\n <Lookup \r\n dataSource={products}\r\n valueExpr=\"id\" \r\n displayExpr={item => item ? `${item.internalCode} - ${item.name}` : ''}\r\n \r\n />\r\n <RuleRequired />\r\n </Column> \r\n <Column dataField=\"family\" caption={defaultLabels.family} width={120} allowEditing={false}>\r\n <RuleRequired />\r\n </Column> \r\n <Column dataField=\"quantity\" caption=\"Cantidad\" dataType=\"number\" width={80} setCellValue={setCellValue.bind(null,\"quantity\")}>\r\n <RuleRequired />\r\n </Column>\r\n <Column dataField=\"cost\" allowEditing={canEdit} caption=\"Costo\" dataType=\"number\" width={100} cellRender={cellRender()} setCellValue={setCellValue.bind(null,\"cost\")}>\r\n <RuleRequired />\r\n </Column>\r\n <Column dataField=\"total\" caption=\"Total\" dataType=\"number\" width={120} allowEditing={false} cellRender={cellRender()} >\r\n <RuleRequired />\r\n </Column> \r\n <Column visible={canEdit} dataField=\"price\" caption=\"Precio\" dataType=\"number\" width={100} cellRender={cellRender()} >\r\n <RuleRequired />\r\n </Column> \r\n \r\n <Column type=\"buttons\" width={50}>\r\n <ButtonGrid name=\"delete\" /> \r\n </Column>\r\n <Summary> \r\n <TotalItem\r\n column=\"total\"\r\n summaryType=\"sum\"\r\n customizeText={data => formatToMoney(data.value)} /> \r\n </Summary>\r\n <Editing\r\n mode=\"cell\"\r\n allowDeleting={true} \r\n allowUpdating={true}\r\n selectTextOnEditStart={true}\r\n useIcons={true}\r\n ></Editing>\r\n </DataGrid>\r\n </GroupItem>\r\n </Form>\r\n\r\n <ButtonForm saving={saving} visible={isNew} textSaving={textSaving} onClick={guardarEntrada}/>\r\n \r\n </Popup>\r\n </div>\r\n );\r\n}\r\n\r\nexport default Nuevo;\r\n","import React from 'react';\r\nimport { inPutProductTypes } from '../../../data/enums';\r\nimport InPutProducts from '../inPutProducts/InPutProducts';\r\nimport { resources } from '../../../data/app';\r\nimport Nuevo from './Nuevo';\r\n\r\nconst initProduct = () => {\r\n\r\n const title ='Saldos iniciales';\r\n const btnAddText ='Nuevo saldo inicial';\r\n const typeId = inPutProductTypes.saldoInicial;\r\n\r\n return (\r\n <InPutProducts \r\n title={title} \r\n btnAddText={btnAddText} \r\n typeId={typeId} \r\n icon=\"dx-icon-increaseindent color-icon-green\" \r\n resourcesId = {resources.ajuste}\r\n Component={Nuevo}/>\r\n );\r\n}\r\n\r\nexport default initProduct;\r\n","import React from 'react';\r\nimport { DataGrid } from 'devextreme-react';\r\nimport { EmailRule, Item } from 'devextreme-react/form';\r\nimport { \r\n Paging, \r\n Pager, \r\n FilterRow, \r\n HeaderFilter, \r\n ColumnChooser, \r\n Column, \r\n Export, \r\n Editing,\r\n Popup, \r\n Form, \r\n RequiredRule,\r\n StringLengthRule, Lookup} from 'devextreme-react/data-grid';\r\n\r\nimport uri from '../../utils/uri';\r\nimport { store } from '../../services/store';\r\nimport Title from '../../components/shared/Title';\r\nimport BlockHeader from '../../components/shared/BlockHeader';\r\nimport { createStore } from '../../utils/proxy';\r\nimport useAuthorization from '../../hooks/useAuthorization';\r\nimport { dataAccess, editorOptionsSwitch, formatDateTime, resources } from '../../data/app';\r\n\r\nconst Providers = () => {\r\n\r\n const [ authorized ] = useAuthorization( resources.administrarProveedores );\r\n\r\n const title = 'Proveedores';\r\n\r\n let dataGrid = React.createRef();\r\n\r\n const onToolbarPreparing = (e) => {\r\n e.toolbarOptions.items.unshift({\r\n location: 'before',\r\n widget: 'dxButton',\r\n options: {\r\n text: 'Nuevo Proveedor',\r\n icon: 'plus',\r\n type:'default',\r\n stylingMode:\"outlined\",\r\n onClick: () => dataGrid.instance.addRow()\r\n }\r\n });\r\n }\r\n\r\n const onInitNewRow = (e) => {\r\n e.data.active = true;\r\n }\r\n\r\n return authorized(\r\n <div className=\"container\">\r\n <Title title={title} />\r\n <BlockHeader title={title} />\r\n <DataGrid id=\"gridContainer\"\r\n ref={(ref) => dataGrid = ref}\r\n selection={{ mode: 'single' }}\r\n dataSource={store({ uri: uri.providers })}\r\n showBorders={true}\r\n showRowLines={true}\r\n allowColumnResizing={true}\r\n allowColumnReordering={true}\r\n onToolbarPreparing={onToolbarPreparing}\r\n onInitNewRow={onInitNewRow}\r\n >\r\n <Paging defaultPageSize={20} />\r\n <Pager\r\n showInfo={true}\r\n showPageSizeSelector={true}\r\n allowedPageSizes={[10, 20, 50]}\r\n />\r\n <FilterRow visible={true} />\r\n <HeaderFilter visible={true} />\r\n <ColumnChooser enabled={true} />\r\n <Export enabled={true} fileName={title} allowExportSelectedData={true} />\r\n <Column dataField=\"name\" caption='Nombre' />\r\n <Column dataField=\"ruc\" caption='RUC' width={130}/>\r\n <Column dataField=\"property\" caption='Propietario' />\r\n <Column dataField=\"phoneNumber\" caption='Telefono' width={110}/>\r\n <Column dataField=\"email\" caption='Email' width={140}/>\r\n <Column dataField=\"address\" caption='Direccion' visible={false}/>\r\n <Column dataField=\"observation\" caption='Observacion' visible={false}/>\r\n <Column dataField=\"active\" caption=\"Activo\" dataType=\"boolean\" width={100}/>\r\n\r\n <Column dataField=\"createBy\" caption='Creado por' width={90} />\r\n <Column dataField=\"createAt\" caption='Creado el' dataType='date' format={formatDateTime} width={150} />\r\n <Column visible={false} dataField=\"modifyBy\" caption='Modificado por' width={90} />\r\n <Column visible={false} dataField=\"modifyAt\" caption='Modificado el' dataType='date' format={formatDateTime} width={150} />\r\n\r\n <Editing\r\n mode=\"popup\"\r\n allowUpdating={true}\r\n allowDeleting={true}\r\n useIcons={true}\r\n >\r\n <Popup title={title} showTitle={true} width={500} height={560}>\r\n\r\n </Popup>\r\n <Form>\r\n <Item dataField=\"name\" colSpan={2}>\r\n <RequiredRule message=\"El campo es requerido\" /> \r\n <StringLengthRule max={50} message=\"Máximo de caracteres 50\" /> \r\n </Item> \r\n <Item dataField=\"ruc\" colSpan={2}>\r\n <RequiredRule message=\"El campo es requerido\" />\r\n <StringLengthRule max={20} message=\"Máximo de caracteres 20\" />\r\n </Item>\r\n <Item dataField=\"property\" colSpan={2}>\r\n <StringLengthRule max={50} message=\"Máximo de caracteres 50\" /> \r\n </Item>\r\n <Item dataField=\"phoneNumber\" colSpan={2}>\r\n <RequiredRule message=\"El campo es requerido\" />\r\n <StringLengthRule max={20} message=\"Máximo de caracteres 20\" />\r\n </Item>\r\n <Item dataField=\"email\" colSpan={2}>\r\n <StringLengthRule max={50} message=\"Máximo de caracteres 50\" />\r\n <EmailRule />\r\n </Item>\r\n <Item dataField=\"address\" editorType=\"dxTextArea\" colSpan={2}>\r\n <RequiredRule message=\"El campo es requerido\" />\r\n <StringLengthRule max={150} message=\"Máximo de caracteres 150\"/>\r\n </Item>\r\n <Item dataField=\"observation\" editorType=\"dxTextArea\" colSpan={2}>\r\n <StringLengthRule max={150} message=\"Máximo de caracteres 150\"/>\r\n </Item>\r\n <Item dataField=\"active\" colSpan={2} editorType=\"dxSwitch\"\r\n editorOptions={editorOptionsSwitch}>\r\n </Item>\r\n </Form>\r\n </Editing>\r\n </DataGrid>\r\n </div>\r\n );\r\n}\r\n\r\nexport default Providers;\r\n","import { dialogDefault, DIALOG_TRASLATE } from \"../consts\";\r\n\r\nconst mydialog = { ...dialogDefault }\r\n\r\nexport const dialogTraslate = payload => ({ type: DIALOG_TRASLATE, payload });\r\n\r\nexport default function traslateDialogReducer(state = mydialog, { type, payload }) {\r\n const actions = {\r\n [DIALOG_TRASLATE] : () => ({...state, ...payload })\r\n }\r\n\r\n return actions[type]?.call() || state;\r\n}","import React, { useState, useEffect, useRef } from 'react';\r\nimport { Popup } from 'devextreme-react/popup';\r\nimport Form, { SimpleItem, GroupItem, Label, RequiredRule, StringLengthRule} from 'devextreme-react/form';\r\nimport { useDispatch, useSelector } from 'react-redux'\r\nimport { dialogTraslate } from '../../../store/traslate/traslateDialogReducer';\r\nimport { createStoreLocal } from '../../../utils/proxy';\r\nimport { editorOptionsSelect } from '../../../data/app';\r\nimport { DataGrid } from 'devextreme-react';\r\nimport { Column, Editing, Lookup, RequiredRule as RuleRequired, Button as ButtonGrid } from 'devextreme-react/data-grid';\r\nimport ProductDDBComponent from '../../../components/dropdown/ProductDDBComponent';\r\nimport uri from '../../../utils/uri';\r\nimport { cellRender, formatId, onCellPrepared } from '../../../utils/common';\r\nimport http from '../../../utils/http';\r\nimport useProducts from '../../../hooks/useProducts';\r\nimport gridsHelper from '../../../utils/gridsHelper';\r\nimport ButtonForm from '../../../components/buttons/ButtonForm';\r\nimport notify from 'devextreme/ui/notify';\r\nimport { stepsTraslate, typeTraslate } from '../../../data/enums';\r\nimport { defaultLabels, traslateDefault } from '../../../data/defaultObjects';\r\n\r\nconst Nuevo = props => { \r\n\r\n const exists = true;\r\n const active = true;\r\n\r\n const {stepId, type} = props;\r\n\r\n const isCreate = type == typeTraslate.create;\r\n\r\n const { traslateDialog : { open, id, editing }, user } = useSelector(store => store);\r\n\r\n const [ areaSourceId, setAreaSourceId ] = useState(0);\r\n const { products, setProducts } = useProducts({areaId: areaSourceId, exists, active });\r\n const [ traslate, setTraslate ] = useState({...traslateDefault, stepId : 1});\r\n const [ saving, setSaving ] = useState(false);\r\n const [ details, setDetails ] = useState([]);\r\n\r\n let refForm = useRef();\r\n let refGrid = useRef();\r\n\r\n useEffect(() => { \r\n\r\n if(id == 0){\r\n setTraslate({...traslate, areaId : user.areaId, stepId : stepId});\r\n setDetails([]);\r\n }\r\n \r\n\r\n if(id > 0){\r\n\r\n http(uri.traslates.getById(id)).asGet().then(resp =>{\r\n\r\n setTraslate({ ...withOutDetaill(resp) });\r\n\r\n http(uri.products.getByArea(resp.areaSourceId)).asGet({ exists }).then(data =>{\r\n \r\n setProducts(data);\r\n\r\n let arr = resp.traslateDetails.map(prod => {\r\n\r\n let info = data.find(x => x.id == prod.productId);\r\n\r\n prod['presentation'] = info.presentation;\r\n prod['um'] = info.um;\r\n prod['family'] = info.family;\r\n\r\n return prod;\r\n })\r\n\r\n setDetails(arr);\r\n\r\n }) \r\n\r\n\r\n });\r\n\r\n }\r\n\r\n\r\n }, [open]);\r\n\r\n const dispatch = useDispatch();\r\n const onToolbarPreparing = areaSourceId > 0 ? gridsHelper(refGrid, { text : 'Agregar producto', icon:'plus' }) : undefined;\r\n\r\n const close = load => {\r\n\r\n refForm.current.instance.resetValues(); \r\n refGrid.current.instance.cancelEditData();\r\n dispatch(dialogTraslate({open: false, id: 0, editing : false}));\r\n if (load) {\r\n let { onSave } = props;\r\n onSave(); \r\n } \r\n\r\n }\r\n\r\n const onHiding = ({ load }) => close(load);\r\n\r\n const crearTraslado = (e) => {\r\n\r\n let result = refForm.current.instance.validate();\r\n\r\n if (result.isValid) {\r\n\r\n setSaving(true);\r\n let data = {...traslate, traslateDetails:[...details] };\r\n\r\n const url = editing ? `${uri.traslates.insert}/asEdit` : uri.traslates.insert; \r\n\r\n http(url).asPost(data).then(resp => {\r\n\r\n setSaving(false);\r\n notify('Soliictud de traslado registrado correctamente');\r\n close(true);\r\n\r\n }).catch(err => {\r\n\r\n setSaving(false);\r\n notify(err, 'error', 5000);\r\n\r\n });\r\n\r\n }\r\n\r\n }\r\n\r\n const despacharTraslado = () => {\r\n\r\n setSaving(true);\r\n let data = {...traslate, id, traslateDetails:[...details] };\r\n \r\n http(uri.traslates.insert).asPost(data).then(resp => {\r\n\r\n setSaving(false);\r\n notify('Traslado registrado correctamente');\r\n close(true);\r\n\r\n }).catch(err => {\r\n\r\n setSaving(false);\r\n notify(err, 'error', 5000);\r\n\r\n });\r\n\r\n }\r\n\r\n const setCellValue = (prop, newData, value, currentRowData) => {\r\n\r\n newData[prop] = value || 0;\r\n if(prop == 'productId' && value){\r\n\r\n let info = products.find(x => x.id == value);\r\n newData['presentation'] = info.presentation;\r\n newData['um'] = info.um;\r\n newData['family'] = info.family;\r\n newData['cost'] = info.cost; \r\n newData['quantityResponse'] = 0; \r\n !currentRowData['quantityRequest'] && (newData['quantityRequest'] = 1);\r\n !currentRowData['total'] &&( newData['total'] = info.cost);\r\n\r\n }\r\n \r\n if(prop == 'quantityRequest' && (+value) >= 0)\r\n newData['total'] = currentRowData['cost'] * value;\r\n\r\n }\r\n\r\n const setCellValueForResponse = (prop, newData, value, currentRowData) => {\r\n\r\n newData[prop] = value || 0;\r\n if(prop == 'quantityResponse' && (+value) >= 0)\r\n newData['total'] = currentRowData['cost'] * value;\r\n\r\n }\r\n\r\n const onValueChangedArea = (e) => {\r\n setAreaSourceId(e.value);\r\n setDetails([]);\r\n }\r\n\r\n const withOutDetaill = ({traslateDetails,...rest}) => rest;\r\n\r\n const textCreating = editing ? 'Modificar traslado ' + formatId(id) : 'Solicitar traslado';\r\n const textEditing = 'Despachar traslado';\r\n\r\n var itemHTML = isCreate ? <SimpleItem dataField=\"areaSourceId\" editorType=\"dxSelectBox\"\r\n editorOptions={{\r\n dataSource: createStoreLocal({ name: 'area'}),\r\n ...editorOptionsSelect,\r\n onValueChanged: onValueChangedArea\r\n }} >\r\n <Label text=\"Bodega\" />\r\n <RequiredRule message=\"Seleccione la bodega\" />\r\n </SimpleItem> \r\n :\r\n <SimpleItem dataField=\"areaTargetId\" editorType=\"dxSelectBox\"\r\n editorOptions={{\r\n dataSource: createStoreLocal({ name: 'area'}),\r\n ...editorOptionsSelect,\r\n }} >\r\n <Label text=\"Area solicitante\" />\r\n <RequiredRule message=\"Seleccione la bodega\" />\r\n </SimpleItem>\r\n\r\n return (\r\n <div>\r\n <Popup\r\n width={1050}\r\n height={580}\r\n title={isCreate ? textCreating : `Despachar solicitud ${id}`}\r\n onHiding={onHiding}\r\n visible={open} \r\n >\r\n <Form formData={traslate} ref={refForm} readOnly={!isCreate}>\r\n <GroupItem colCount={3}> \r\n {itemHTML}\r\n \r\n <SimpleItem dataField=\"date\" editorType=\"dxDateBox\"\r\n editorOptions={{\r\n displayFormat : 'dd/MM/yyyy',\r\n openOnFieldClick:true,\r\n }} >\r\n <Label text=\"Fecha\" />\r\n <RequiredRule message=\"Seleccione la fecha\" />\r\n </SimpleItem> \r\n <SimpleItem dataField=\"stepId\" editorType=\"dxSelectBox\"\r\n editorOptions={{\r\n disabled : true,\r\n dataSource: createStoreLocal({ name: 'traslateStep'}),\r\n ...editorOptionsSelect\r\n }} >\r\n <Label text=\"Etapa\" />\r\n <RequiredRule message=\"Seleccione la bodega\" />\r\n </SimpleItem>\r\n <SimpleItem dataField=\"observation\" colSpan={3} editorType=\"dxTextArea\">\r\n <Label text=\"Observacion\" />\r\n <RequiredRule message=\"Ingrese una observacion\" />\r\n <StringLengthRule max={500} message=\"Maximo 500 caracteres\" />\r\n </SimpleItem>\r\n </GroupItem>\r\n <GroupItem>\r\n <DataGrid id=\"gridDetails\"\r\n ref={refGrid}\r\n selection={{ mode: 'single' }}\r\n dataSource={details}\r\n showBorders={true}\r\n showRowLines={true}\r\n allowColumnResizing={true}\r\n allowColumnReordering={true}\r\n height={320}\r\n onToolbarPreparing={isCreate ? onToolbarPreparing : undefined}\r\n onCellPrepared={onCellPrepared}\r\n >\r\n <Column dataField=\"productId\" caption=\"Producto\"\r\n setCellValue={setCellValue.bind(null,\"productId\")}\r\n editCellComponent={props => <ProductDDBComponent showPrice={false} {...props} quantity='quantityRequest'/>}>\r\n <Lookup \r\n dataSource={products}\r\n valueExpr=\"id\" \r\n displayExpr={item => item ? `${item.id} - ${item.name}` : ''}\r\n \r\n />\r\n <RuleRequired />\r\n </Column> \r\n <Column dataField=\"family\" caption={defaultLabels.family} width={120} allowEditing={false}>\r\n <RuleRequired />\r\n </Column> \r\n <Column dataField=\"um\" caption=\"Unidad Medida\" width={120} allowEditing={false}></Column> \r\n <Column dataField=\"quantityRequest\" \r\n caption=\"Cantidad Solic\" \r\n dataType=\"number\" width={80} \r\n allowEditing={isCreate} \r\n setCellValue={setCellValue.bind(null,\"quantityRequest\")}>\r\n <RuleRequired />\r\n </Column>\r\n <Column dataField=\"quantityResponse\" \r\n caption=\"Cantidad\" \r\n dataType=\"number\" width={80} \r\n visible={!isCreate}\r\n setCellValue={setCellValueForResponse.bind(null,\"quantityResponse\")}>\r\n <RuleRequired />\r\n </Column>\r\n <Column dataField=\"cost\" caption=\"Costo\" dataType=\"number\" width={100} allowEditing={false} cellRender={cellRender()} >\r\n <RuleRequired />\r\n </Column>\r\n <Column dataField=\"total\" caption=\"Total\" dataType=\"number\" width={120} allowEditing={false} cellRender={cellRender()} >\r\n <RuleRequired />\r\n </Column> \r\n <Column type=\"buttons\" width={50}>\r\n <ButtonGrid name=\"delete\" /> \r\n </Column>\r\n <Editing\r\n mode=\"cell\"\r\n allowDeleting={true} \r\n allowUpdating={true}\r\n selectTextOnEditStart={true}\r\n useIcons={true}\r\n ></Editing>\r\n </DataGrid>\r\n </GroupItem>\r\n </Form>\r\n\r\n <ButtonForm \r\n saving={saving} \r\n textSaving={textCreating} \r\n visible={isCreate && traslate.stepId == stepsTraslate.pendiente} \r\n onClick={crearTraslado}/>\r\n <ButtonForm \r\n saving={saving} \r\n textSaving={textEditing} \r\n visible={!isCreate && traslate.stepId == stepsTraslate.pendiente} \r\n onClick={despacharTraslado}/>\r\n \r\n </Popup>\r\n </div>\r\n );\r\n}\r\n\r\nexport default Nuevo;\r\n","import Traslates from './Traslates';\r\nexport default Traslates;","import React, { useRef } from 'react';\r\nimport BlockHeader from '../../../components/shared/BlockHeader';\r\nimport Title from '../../../components/shared/Title';\r\nimport DataGrid, {\r\n Column,\r\n ColumnChooser,\r\n Editing,\r\n Export,\r\n FilterRow,\r\n HeaderFilter,\r\n Lookup,\r\n Pager,\r\n Paging,\r\n Button \r\n } from 'devextreme-react/data-grid';\r\nimport { createStoreLocal } from '../../../utils/proxy';\r\nimport uri from '../../../utils/uri';\r\nimport { store } from '../../../services/store';\r\nimport { dataAccess, formatDate, formatDateTime, resources } from '../../../data/app';\r\nimport Nuevo from './Nuevo';\r\nimport CustomButton from '../../../components/buttons/CustomButton';\r\nimport { useDispatch, useSelector } from 'react-redux'\r\nimport { dialogTraslate } from '../../../store/traslate/traslateDialogReducer';\r\nimport { inPutProductStates, stepsTraslate, typeTraslate } from '../../../data/enums';\r\nimport useAuthorization from '../../../hooks/useAuthorization';\r\nimport { dataFormatId } from '../../../utils/common';\r\nimport { onToolbar } from '../../../components/grids/ToolBar';\r\n\r\nconst Traslates = (props) => {\r\n\r\n const [ authorized ] = useAuthorization( resources.requisa ); \r\n\r\n const { areaId } = useSelector(store => store.user); \r\n\r\n const { type } = props;\r\n\r\n let dataGrid = useRef();\r\n const dispatch = useDispatch();\r\n\r\n const reload = e => dataGrid.current.instance.refresh(); \r\n\r\n const title = type == typeTraslate.create ? \"Traslado de inventario\" : \"Despacho de inventario\";\r\n\r\n let extraParameter = { key : type == typeTraslate.create ? 'areaTargetId':'areaSourceId', value : areaId };\r\n\r\n const onRowPrepared = e => {\r\n if (e.rowType == 'data') {\r\n \r\n if (e.data.stateId == inPutProductStates.noActivo) \r\n e.rowElement.classList.add('no-activo');\r\n \r\n }\r\n }\r\n\r\n const showDialog = (id, editing= false) => dispatch(dialogTraslate({ open: true, id, editing }))\r\n\r\n const isEditVisible = e => type == typeTraslate.create && e.row.data.stepId == stepsTraslate.pendiente;\r\n const onToolbarPreparing = onToolbar({ export : true } , dataGrid);\r\n\r\n return authorized(\r\n <div className=\"container\">\r\n <Title title={title}/>\r\n <BlockHeader title={title} >\r\n {type==typeTraslate.create && <CustomButton \r\n text='Nueva requisa'\r\n icon='plus'\r\n onClick={()=>showDialog( 0 ) }\r\n />}\r\n </BlockHeader>\r\n <Nuevo onSave={reload} stepId={1} type={type}/> \r\n \r\n <DataGrid id=\"gridContainer\"\r\n ref={dataGrid}\r\n selection={{ mode: 'single' }}\r\n dataSource={store({ uri : uri.traslates, remoteOperations : true, extraParameter})}\r\n showBorders={true}\r\n showRowLines={true}\r\n allowColumnResizing={true}\r\n allowColumnReordering={true}\r\n onRowPrepared={onRowPrepared}\r\n onToolbarPreparing={onToolbarPreparing}\r\n remoteOperations={{\r\n paging: true,\r\n filtering: true\r\n }} \r\n >\r\n <Paging defaultPageSize={20} />\r\n <Pager\r\n showInfo={true}\r\n showPageSizeSelector={true}\r\n allowedPageSizes={[10, 20, 50]}\r\n />\r\n <FilterRow visible={true} />\r\n <HeaderFilter visible={true} />\r\n <ColumnChooser enabled={true} />\r\n <Export enabled={false} fileName={title} allowExportSelectedData={true} />\r\n <Column dataField=\"id\" caption='Numero' width={100} cellRender={dataFormatId}/>\r\n <Column dataField=\"date\" caption='Fecha' dataType='date' format={formatDate} width={150} />\r\n <Column dataField=\"areaSourceId\" caption=\"Bodega\" width={250} visible={type == typeTraslate.create}>\r\n <Lookup disabled={true} dataSource={createStoreLocal({ name: 'area'})} valueExpr=\"id\" displayExpr=\"name\" />\r\n </Column>\r\n <Column dataField=\"areaTargetId\" caption=\"Area Solicitante\" width={250} visible={type == typeTraslate.update}>\r\n <Lookup disabled={true} dataSource={createStoreLocal({ name: 'area'})} valueExpr=\"id\" displayExpr=\"name\" />\r\n </Column>\r\n <Column dataField=\"stepId\" caption=\"Proceso\" width={150}>\r\n <Lookup disabled={true} dataSource={createStoreLocal({name: 'traslateStep'})} valueExpr=\"id\" displayExpr=\"name\" />\r\n </Column> \r\n <Column dataField=\"stateId\" caption=\"Estado\" width={150}>\r\n <Lookup disabled={true} dataSource={createStoreLocal({name: 'traslateState'})} valueExpr=\"id\" displayExpr=\"name\" />\r\n </Column> \r\n <Column dataField=\"createAt\" caption='Creado el' dataType='date' format={formatDateTime} width={180}/>\r\n <Column dataField=\"createBy\" caption='Creado Por'/>\r\n <Column type=\"buttons\">\r\n <Button hint=\"Modificar\" icon=\"edit\"onClick={e => showDialog(e.row.data.id, true)} visible={isEditVisible} />\r\n <Button name=\"delete\" />\r\n <Button hint=\"Despachar\" name=\"edit\" icon=\"bulletlist\" onClick={e => showDialog(e.row.data.id)}/>\r\n </Column>\r\n <Editing\r\n mode=\"popup\"\r\n allowUpdating={type == typeTraslate.update}\r\n allowDeleting={true}\r\n useIcons={true}\r\n >\r\n </Editing>\r\n </DataGrid>\r\n </div>\r\n );\r\n}\r\n\r\nexport default Traslates;\r\n","import { dialogDefault, DIALOG_BILL } from \"../consts\";\r\n\r\nconst mydialog = {...dialogDefault}\r\n\r\n\r\nexport const billDialogAction = ({ open = false, id = 0, clientId = 0 }) => ({\r\n type: DIALOG_BILL,\r\n payload : { open, id, clientId }\r\n});\r\n\r\nexport default function billDialogReducer(state = mydialog, { type, payload }) {\r\n\r\n const actions = {\r\n [DIALOG_BILL] : () => ({...state, ...payload })\r\n }\r\n\r\n return actions[type]?.call() || state;\r\n}\r\n\r\n","import { dialogDefault, DIALOG_PURCHASE } from \"../consts\";\r\n\r\nconst mydialog = { ...dialogDefault }\r\n\r\nexport const dialogPurchase = payload => ({ type: DIALOG_PURCHASE, payload });\r\n\r\nexport default function purchaseDialogReducer(state = mydialog, { type, payload }) {\r\n const actions = {\r\n [DIALOG_PURCHASE] : () => ({...state, ...payload })\r\n }\r\n\r\n return actions[type]?.call() || state;\r\n}","import React from \"react\";\r\nimport useApi from \"./useApi\";\r\nimport uri from \"../utils/uri\";\r\n\r\n\r\nconst useUsers = () => {\r\n \r\n const { data: users, isLoading } = useApi({ url: uri.users.base+'/catalogo' }); \r\n \r\n return {\r\n users, \r\n isLoading\r\n }\r\n}\r\n\r\nexport default useUsers;","import React, { useEffect, useState, useRef, useCallback, useMemo } from 'react';\r\nimport { Popup, ToolbarItem } from 'devextreme-react/popup';\r\nimport Form, { SimpleItem, GroupItem, Label, RequiredRule, StringLengthRule } from 'devextreme-react/form';\r\nimport { useDispatch, useSelector } from 'react-redux'\r\nimport { SelectBox } from 'devextreme-react/select-box';\r\nimport { billDialogAction } from '../../store/bill/billDialogReducer';\r\nimport { createStoreLocal } from '../../utils/proxy';\r\nimport { editorOptionsSelect, formatDate, resources } from '../../data/app';\r\nimport { DataGrid, Button, TextBox, DateBox, ScrollView } from 'devextreme-react';\r\nimport { Column, Editing, Lookup, RequiredRule as RuleRequired, Button as ButtonGrid, Summary, TotalItem, SearchPanel } from 'devextreme-react/data-grid';\r\nimport { cellRender, formatId, formatToMoney, toMoney } from '../../utils/common';\r\nimport { LoadPanel } from 'devextreme-react/load-panel';\r\nimport http from '../../utils/http';\r\nimport notify from 'devextreme/ui/notify';\r\nimport { billDefault, defaultLabels } from '../../data/defaultObjects';\r\nimport { paymentType } from '../../data/enums';\r\nimport ProductDDBComponent from '../../components/dropdown/ProductDDBComponent';\r\nimport useProducts from '../../hooks/useProducts';\r\nimport uri from '../../utils/uri';\r\nimport DataSource from 'devextreme/data/data_source';\r\nimport { confirm } from 'devextreme/ui/dialog';\r\nimport useAuthorization from '../../hooks/useAuthorization';\r\nimport urlReport from '../../services/reportServices';\r\nimport useUsers from '../../hooks/useUsers';\r\n\r\nconst Nuevo = props => {\r\n\r\n const [ _, canChangeCreditDays ] = useAuthorization( resources.cambiarDiasCredito );\r\n const { billDialog: { open, id, clientId }, user, } = useSelector(store => store);\r\n const billDefaultCustom = { ...billDefault, clientId: clientId };\r\n\r\n const [ reload, setReload ] = useState(0);\r\n\r\n const { products, setProducts } = useProducts({ areaId: user.areaId, exists: true, reload });\r\n const [bill, setBill] = useState({ ...billDefaultCustom, billDetails: []});\r\n const [saving, setSaving] = useState(false);\r\n const [ loading, setLoading ] = useState(false);\r\n const [ fullscreen, setFullScreen ] = useState(false);\r\n const { users } = useUsers();\r\n const [currentCreditDays, setCurrentCreditDays] = useState(0);\r\n\r\n let clientInfo = {};\r\n\r\n let refForm = useRef();\r\n let refGrid = useRef();\r\n let textBoxRef = useRef();\r\n let refDeliveryDate = useRef(); \r\n let refSelect = useRef(); \r\n\r\n useEffect(() => {\r\n \r\n // if (appInfo.rate == 0) {\r\n // dispatch(billDialogAction({ id: 0, clientId: 0, open: false }));\r\n // notify('Debe ingresar la tasa de cambio del dia para poder facturar', 'warning', 5000)\r\n // props.history.push('/app/tasa-de-cambio');\r\n // }\r\n\r\n if (id > 0) {\r\n setLoading(true);\r\n http(uri.products.getByArea(user.areaId)).asGet().then(data => {\r\n setProducts(data);\r\n\r\n http(uri.bills.getById(id)).asGet().then(resp => {\r\n\r\n resp.billDetails.forEach(detail => {\r\n\r\n let info = products.find(x => x.id == detail.productId);\r\n\r\n detail['presentation'] = info.presentation;\r\n detail['um'] = info.um;\r\n detail['family'] = info.family;\r\n detail['stock'] = info.stock;\r\n\r\n });\r\n\r\n setBill(_bill => ({ ..._bill, ...resp, }));\r\n if (open) textBoxRef.current.instance.focus();\r\n setLoading(false);\r\n })\r\n\r\n });\r\n\r\n } else {\r\n setLoading(true);\r\n setBill({ ...billDefaultCustom, billDetails: [] });\r\n if (open) textBoxRef.current.instance.focus();\r\n setLoading(false);\r\n\r\n }\r\n\r\n \r\n\r\n window.addEventListener(\"beforeunload\", alertUser);\r\n return () => {\r\n window.removeEventListener(\"beforeunload\", alertUser);\r\n };\r\n \r\n \r\n \r\n }, [open]);\r\n\r\n const alertUser = (e) => {\r\n e.preventDefault();\r\n e.returnValue = \"\";\r\n alert('saliendo');\r\n };\r\n\r\n\r\n useEffect(() => {\r\n if (open) textBoxRef.current.instance.focus();\r\n }, [open]);\r\n\r\n const dispatch = useDispatch();\r\n const onToolbarPreparing = (e) => {\r\n e.toolbarOptions.items.unshift({\r\n location: 'before',\r\n widget: 'dxButton',\r\n options: {\r\n text: 'Agregar articulo',\r\n icon: 'plus',\r\n type: 'default',\r\n stylingMode: \"outlined\",\r\n onClick: () => refGrid.current.instance.addRow()\r\n }\r\n },{\r\n location: 'before',\r\n widget: 'dxButton',\r\n options: {\r\n icon: 'refresh',\r\n type: 'default',\r\n stylingMode: \"outlined\",\r\n onClick: () => setReload(Math.random())\r\n }\r\n },{\r\n location: 'before',\r\n widget: 'dxButton',\r\n options: {\r\n icon: 'remove',\r\n type: 'danger',\r\n stylingMode: \"outlined\",\r\n onClick: () => { \r\n\r\n var selectedRow = refGrid.current.instance.getSelectedRowKeys(); \r\n if (selectedRow.length > 0) {\r\n let key = selectedRow[0]\r\n let index = refGrid.current.instance.getRowIndexByKey(key)\r\n refGrid.current.instance.deleteRow(index);\r\n }\r\n }\r\n }\r\n },{\r\n location: 'before',\r\n widget: 'dxButton',\r\n options: {\r\n icon: 'check',\r\n type: 'normal',\r\n stylingMode: \"outlined\",\r\n onClick: () => { \r\n\r\n refGrid.current.instance.saveEditData(); \r\n \r\n }\r\n }\r\n },{\r\n location: 'before',\r\n widget: 'dxButton',\r\n options: {\r\n icon: 'revert',\r\n type: 'normal',\r\n stylingMode: \"outlined\",\r\n onClick: () => { \r\n\r\n refGrid.current.instance.cancelEditData(); \r\n \r\n }\r\n }\r\n }\r\n );\r\n }\r\n\r\n const ds = useMemo(() =>new DataSource({\r\n key: 'productId',\r\n store: bill.billDetails,\r\n // ...\r\n }));\r\n\r\n const addProductById = ( id, _info=null ) => {\r\n\r\n if (!id) return;\r\n\r\n const items = ds.items();\r\n\r\n const existsProduct = items.find(x => x.productId == id);\r\n\r\n if (existsProduct) {\r\n notify(`El producto ya se encuentra en la lista`, 'error', 5000);\r\n return\r\n }\r\n\r\n let info = _info == null ? products.find(x => x.id == id) : _info;\r\n\r\n if(info.stock <= 0)\r\n return notify('No hay stock disponible', 'error', 5000);\r\n\r\n let newData = {}; \r\n\r\n newData['presentation'] = info.presentation;\r\n newData['um'] = info.um;\r\n newData['family'] = info.family;\r\n newData['stock'] = info.stock;\r\n newData['price'] = info.price;\r\n newData['customPrice'] = info.price;\r\n newData['cost'] = info.cost;\r\n newData['quantity'] = 1;\r\n newData['total'] = info.price; \r\n newData['discount'] = 0;\r\n newData['discountUnit'] = 0;\r\n newData['discountPercent'] = 0;\r\n newData['productId'] = info.id; \r\n\r\n const newDetail = [...bill.billDetails, newData ];\r\n\r\n ds.store().insert(newData).then(() => {\r\n ds.reload().then(() => {\r\n refGrid.current.instance.editCell(newDetail.length - 1, 'quantity');\r\n });\r\n });\r\n\r\n //setBill(_bill => ({ ..._bill, billDetails: [...newDetail],}));\r\n\r\n }\r\n\r\n const addProductByCode = code => {\r\n let info = products.find(x => x.internalCode == code);\r\n\r\n if (info)\r\n addProductById(info.id, info);\r\n\r\n }\r\n\r\n const itemRender = (data) => {\r\n\r\n const isZero = data.stock <= 0;\r\n\r\n const cssZero = isZero ? 'product-stock zero-stock' : 'product-stock';\r\n\r\n return <div className=\"d-flex space-between\">\r\n <div>\r\n <div className=\"product-name\"><b>{data.internalCode}</b>-{data.name}</div>\r\n <div className=\"product-desciption\"><small className='text-muted'>Categoria: </small>{data.family} <small className='text-muted'>Marca: </small>{data.presentation}</div>\r\n </div> \r\n <div className=\"text-right\">\r\n <div className=\"product-price\">{formatToMoney(data.price)}</div>\r\n <div className={cssZero}><small className='text-muted'>Disponible:</small> {data.stock}/{data.disponible}</div>\r\n </div> \r\n </div>\r\n }\r\n\r\n const onKeyDown = (e) => {\r\n \r\n if(e?.event?.key == 'Enter'){\r\n\r\n const code = e.event.target.value;\r\n\r\n addProductByCode(code);\r\n\r\n }\r\n\r\n }\r\n\r\n const closeDialog = (load) => {\r\n\r\n refForm.current.instance.resetValues();\r\n refGrid.current.instance.cancelEditData();\r\n\r\n dispatch(billDialogAction({ id: 0, clientId: 0, open: false }));\r\n if (load) {\r\n let { onSave } = props;\r\n onSave();\r\n }\r\n }\r\n\r\n const onHiding = ({ load }) => {\r\n closeDialog(load);\r\n }\r\n\r\n const guardarComoCotizacion = (e) => {\r\n\r\n refGrid.current.instance.saveEditData();\r\n let result = refGrid.current.instance.hasEditData();\r\n\r\n if (!result) {\r\n\r\n let result = refForm.current.instance.validate();\r\n\r\n if (result.isValid) {\r\n\r\n let result = confirm(\"<i>Esta seguro de guardar la cotización?</i>\", \"Confirmar\");\r\n\r\n result.then((dialogResult) => {\r\n if (dialogResult) {\r\n \r\n setSaving(true);\r\n\r\n let { areaId, clientId, paymentTypeId, date, subTotal, discount, iva, toral, rate, observaction, creditDays, paymentMethodId, bankId, reference, nameClient, codigo, codeAuth } = { ...bill }; \r\n\r\n const sendData = () =>{\r\n\r\n http(uri.prebills.insert).asPost(\r\n { id: 0, areaId, clientId, paymentTypeId, date, subTotal, discount, iva, toral, rate, observaction, creditDays, paymentMethodId, bankId, reference, nameClient, codigo, preBillTypeId:2, codeAuth, preBillDetails: [...bill.billDetails] }\r\n \r\n ).then(resp => {\r\n setSaving(false);\r\n notify(`Cotización registrada correctamente`);\r\n setReload(Math.random());\r\n closeDialog(true); \r\n }).catch(err => {\r\n setSaving(false);\r\n notify(err, 'error', 5000);\r\n });\r\n\r\n } \r\n \r\n sendData(); \r\n\r\n }\r\n });\r\n\r\n }\r\n }\r\n\r\n }\r\n\r\n const guardarFactura = (e) => {\r\n\r\n refGrid.current.instance.saveEditData();\r\n let result = refGrid.current.instance.hasEditData();\r\n\r\n if (!result) {\r\n\r\n let result = refForm.current.instance.validate();\r\n\r\n if (result.isValid) {\r\n\r\n let result = confirm(\"<i>Esta seguro de guardar la factura?</i>\", \"Confirmar\");\r\n\r\n result.then((dialogResult) => {\r\n if (dialogResult) {\r\n \r\n setSaving(true);\r\n\r\n let data = { ...bill };\r\n\r\n http(`${uri.clients.getById(data.clientId)}/detail`).asGet().then(hasDueBill => { \r\n\r\n const sendData = () =>{\r\n\r\n http(uri.bills.insert).asPost(data).then(resp => {\r\n setSaving(false);\r\n notify(`Factura registrada correctamente`);\r\n setReload(Math.random());\r\n closeDialog(true); \r\n }).catch(err => {\r\n setSaving(false);\r\n notify(err, 'error', 5000);\r\n });\r\n\r\n }\r\n \r\n if(hasDueBill.dueBills > 0 && data.paymentTypeId != paymentType.contado){\r\n let result = confirm(`<i>El cliente ${hasDueBill.client.name} ${hasDueBill.client.lastName} tiene ${hasDueBill.dueBills} factura(s) vencida(s), <b>¿Desea continuar ?</b></i>`, \"Confirmar\");\r\n result.then((dialogResult) => {\r\n if (dialogResult) {\r\n\r\n sendData();\r\n \r\n } else\r\n setSaving(false); \r\n });\r\n }else{ \r\n \r\n sendData();\r\n \r\n }\r\n\r\n }); \r\n\r\n }\r\n });\r\n\r\n }\r\n }\r\n\r\n }\r\n\r\n const setCellValue = (prop, newData, value, currentRowData) => {\r\n\r\n newData[prop] = value || 0;\r\n if (prop == 'productId' && value) {\r\n\r\n let info = products.find(x => x.id == value);\r\n\r\n newData['presentation'] = info.presentation;\r\n newData['um'] = info.um;\r\n newData['family'] = info.family;\r\n newData['stock'] = info.stock;\r\n newData['price'] = info.price;\r\n newData['customPrice'] = info.price;\r\n newData['cost'] = info.cost;\r\n newData['discount'] = 0;\r\n newData['discountUnit'] = 0;\r\n newData['discountPercent'] = 0;\r\n !currentRowData['quantity'] && (newData['quantity'] = 1);\r\n !currentRowData['total'] && (newData['total'] = info.price);\r\n }\r\n\r\n if (prop == 'quantity' && (+value) >= 0) {\r\n if(value > currentRowData['stock']){\r\n newData['quantity'] = currentRowData['stock'];\r\n newData['total'] = currentRowData['customPrice'] * currentRowData['stock'];\r\n notify(currentRowData['stock'] + \" máximo stock disponible\", \"error\", 5000);\r\n }else{\r\n newData['total'] = currentRowData['customPrice'] * value - currentRowData['discount'];\r\n }\r\n }\r\n\r\n if (prop == 'customPrice' && (+value) >= 0) {\r\n newData['total'] = currentRowData['quantity'] * value;\r\n }\r\n\r\n if (prop == 'discountUnit' && (+value) >= 0) {\r\n newData['discount'] = value * currentRowData['quantity'];\r\n newData['total'] = (currentRowData['quantity'] * currentRowData['customPrice']) - newData['discount'];\r\n newData['discountPercent'] = parseFloat((newData['discount'] * 100) / (currentRowData['quantity'] * currentRowData['customPrice'])).toFixed(6);\r\n }\r\n\r\n if (prop == 'discount' && (+value) >= 0) {\r\n newData['total'] = (currentRowData['quantity'] * currentRowData['customPrice']) - value;\r\n newData['discountPercent'] = parseFloat((value * 100) / (currentRowData['quantity'] * currentRowData['customPrice'])).toFixed(6);\r\n newData['discountUnit'] = parseFloat(value / currentRowData['quantity']).toFixed(6);\r\n }\r\n\r\n if (prop == 'discountPercent' && (+value) >= 0) {\r\n newData['discount'] = parseFloat((currentRowData['quantity'] * currentRowData['customPrice']) * (value / 100)).toFixed(6);\r\n newData['total'] = (currentRowData['quantity'] * currentRowData['customPrice']) - newData['discount'];\r\n newData['discountUnit'] = parseFloat(newData['discount'] / currentRowData['quantity']).toFixed(6);\r\n \r\n }\r\n\r\n }\r\n\r\n const onCellPrepared = e => {\r\n\r\n const cellsQuantity = ['quantity', 'quantityRequest']\r\n\r\n if (e.rowType == 'data' && e.column.allowEditing) {\r\n if (cellsQuantity.includes(e.column.dataField))\r\n e.cellElement.classList.add('quantity-text');\r\n if (e.column.dataField == 'customPrice')\r\n e.cellElement.classList.add('customPrice-text');\r\n\r\n }\r\n\r\n }\r\n\r\n const isNew = id == 0;\r\n\r\n const init = \"\"; \r\n\r\n const paymentTypeIdChanged = (e) => {\r\n\r\n setBill(_bill => ({ \r\n ..._bill, paymentTypeId: e.value, \r\n paymentMethodId: e.value == paymentType.credito ? null : '', \r\n bankId: e.value == paymentType.credito ? null : '', \r\n reference:'', \r\n creditDays: e.value == paymentType.contado ? 0 : currentCreditDays,\r\n }))\r\n }\r\n\r\n const clientIdChanged = (e) => {\r\n\r\n const client = e.component.option('items')\r\n .find(x => x.id == e.value);\r\n\r\n let creditDays = 0;\r\n \r\n if(client)\r\n creditDays = client.creditDays; \r\n \r\n setCurrentCreditDays(creditDays); \r\n setBill(_bill => ({ ..._bill, clientId: e.value, creditDays: creditDays }));\r\n \r\n }\r\n \r\n const dataSource = useCallback(() => new DataSource({\r\n load: (loadOptions) => {\r\n\r\n let params = {};\r\n params.skip = loadOptions.skip || 0;\r\n params.take = loadOptions.take || 10;\r\n\r\n if(loadOptions.searchValue)\r\n params.name = loadOptions.searchValue;\r\n\r\n return http(uri.clients.asCatalog)\r\n .asGet(params).then(x => x.items);\r\n \r\n },\r\n byKey: id => {\r\n\r\n return new Promise((resolve, reject) => {\r\n \r\n if(id == 0)\r\n resolve(null);\r\n else{\r\n if(clientInfo?.id == id){\r\n resolve(clientInfo);\r\n }else{\r\n http(uri.clients.getById(id)).asGet().then(resp => {\r\n clientInfo = resp;\r\n return resolve(resp);\r\n });\r\n }\r\n }\r\n });\r\n \r\n }, \r\n paginate : true,\r\n pageSize: 10\r\n }),[]);\r\n\r\n const onRowInserting = (e) => {\r\n\r\n const isCanceled = new Promise((resolve, reject) => {\r\n\r\n const items = ds.items();\r\n\r\n const existsProduct = items.find(x => x.productId == e.data.productId);\r\n\r\n if (existsProduct) {\r\n notify(`El producto ya se encuentra en la lista`, 'error', 5000);\r\n reject(`El producto ya se encuentra en la lista`);\r\n }else{\r\n resolve(false);\r\n }\r\n });\r\n e.cancel = isCanceled;\r\n\r\n }\r\n\r\n const updateDeliveryDate = (e) => {\r\n \r\n const deliveryDate = refDeliveryDate.current.instance.option('value');\r\n const id = bill.id;\r\n const data = { id, deliveryDate, username: bill.asignedTo };\r\n \r\n setSaving(true);\r\n http(uri.bills.base + '/update').asPost(data).then(resp => {\r\n notify('Fecha de entrega actualizada correctamente'); \r\n setSaving(false);\r\n closeDialog(true); \r\n }).catch(err => {\r\n notify(err, 'error', 5000);\r\n });\r\n }\r\n \r\n const printBill = (e) => {\r\n const report = urlReport();\r\n report.print(`${report.billTicket(bill.id)}`);\r\n }\r\n\r\n const dataSourceProduct = useCallback(() => new DataSource({\r\n load: (loadOptions) => {\r\n \r\n let params = {};\r\n params.skip = loadOptions.skip || 0;\r\n params.take = loadOptions.take || 10;\r\n \r\n if(loadOptions.searchValue)\r\n params.name = loadOptions.searchValue;\r\n\r\n params.exists = true;\r\n params.active=false; \r\n params.has=false;\r\n params.onlyProducts= false;\r\n \r\n return http(uri.products.getByArea(user.areaId)+'/grid')\r\n .asGet(params).then(x => x.items);\r\n \r\n },\r\n byKey: id => http(uri.products.getById(id)).asGet(),\r\n paginate : true,\r\n pageSize: 10\r\n }),[]);\r\n\r\n const setFocus = () => {\r\n setTimeout(() => {\r\n refSelect.current.instance.focus(); \r\n }, 300);\r\n }\r\n\r\n const onEditCanceled = (e) => {\r\n setFocus()\r\n }\r\n\r\n const keyDown = (e) => {\r\n if(e.event.key == 'Enter')\r\n setFocus()\r\n }\r\n\r\n const buttonFSOptions = {\r\n text: '',\r\n icon: 'fullscreen',\r\n onClick: function(e) { \r\n setFullScreen(!fullscreen);\r\n }\r\n };\r\n\r\n return (\r\n <div>\r\n <Popup\r\n width={'90vw'}\r\n height={'98vh'}\r\n fullScreen={fullscreen}\r\n title={isNew ? `Nueva factura` : `Ver factura ${formatId(id)}`}\r\n onHiding={onHiding}\r\n visible={open}\r\n className=\"bg-fbfbfb\"\r\n id='bill-panel'\r\n >\r\n <LoadPanel\r\n shadingColor=\"rgba(0,0,0,0.4)\"\r\n position={{ of: '#bill-panel' }}\r\n visible={loading}\r\n showIndicator={loading}\r\n shading={true}\r\n showPane={true}\r\n />\r\n <ToolbarItem\r\n widget=\"dxButton\"\r\n location=\"after\"\r\n options={buttonFSOptions}>\r\n </ToolbarItem>\r\n <ScrollView showScrollbar='never' > \r\n <Form formData={bill} ref={refForm}>\r\n <GroupItem colCount={4}>\r\n <GroupItem colSpan={4}>\r\n <GroupItem colCount={6}>\r\n\r\n <SimpleItem dataField=\"date\" colSpan={2} editorType=\"dxDateBox\"\r\n editorOptions={{\r\n displayFormat: formatDate,\r\n openOnFieldClick: true,\r\n }} >\r\n <Label text=\"Fecha\" />\r\n <RequiredRule message=\"Seleccione la fecha\" />\r\n </SimpleItem>\r\n <SimpleItem dataField=\"paymentTypeId\" colSpan={2} editorType=\"dxSelectBox\"\r\n editorOptions={{\r\n dataSource: createStoreLocal({ name: 'billPaymentType' }),\r\n ...editorOptionsSelect,\r\n onValueChanged: paymentTypeIdChanged \r\n }} >\r\n <Label text=\"Tipo pago\" />\r\n <RequiredRule message=\"Seleccione el tipo\" />\r\n </SimpleItem>\r\n <SimpleItem dataField=\"codigo\" colSpan={2} editorType=\"dxTextBox\"\r\n editorOptions={{ placeholder: 'Talonario', showClearButton: true }} >\r\n <Label text=\"Referencia\" />\r\n </SimpleItem>\r\n <SimpleItem dataField=\"clientId\" colSpan={4} editorType=\"dxSelectBox\"\r\n editorOptions={{\r\n dataSource: dataSource(),\r\n displayExpr: 'fullName',\r\n valueExpr:\"id\",\r\n displayExpr: item => item ? `${item.id} - ${item.name} ${item.lastName}` : '',\r\n searchEnabled: true,\r\n searchExpr: [\"name\", \"lastName\"],\r\n showClearButton:true, onValueChanged: clientIdChanged}} >\r\n <Label text=\"Cliente\" />\r\n <RequiredRule message=\"Seleccione el cliente\" />\r\n </SimpleItem>\r\n <SimpleItem dataField=\"creditDays\" colSpan={2} editorType=\"dxNumberBox\"\r\n editorOptions={{\r\n disabled: !canChangeCreditDays,\r\n onValueChanged: e => setBill(_bill => ({ ..._bill, creditDays: e.value, })),\r\n }} >\r\n <Label text=\"Dias crédito\" />\r\n <RequiredRule message=\"Seleccione el tipo\" />\r\n </SimpleItem> \r\n\r\n <SimpleItem dataField=\"paymentMethodId\" colSpan={2} editorType=\"dxSelectBox\"\r\n editorOptions={{\r\n disabled: bill.paymentTypeId == paymentType.credito,\r\n dataSource: createStoreLocal({ name: 'billPaymentMethod' }),\r\n ...editorOptionsSelect,\r\n onValueChanged: e => setBill(_bill =>({ ..._bill, billPaymentTypeId: e.value, }))\r\n }} >\r\n <Label text=\"Forma pago\" />\r\n </SimpleItem>\r\n <SimpleItem dataField=\"bankId\" colSpan={2} editorType=\"dxSelectBox\"\r\n editorOptions={{\r\n disabled: bill.paymentTypeId == paymentType.credito,\r\n dataSource: createStoreLocal({ name: 'bank' }),\r\n ...editorOptionsSelect,\r\n onValueChanged: e => setBill(_bill =>({ ..._bill, bankId: e.value, }))\r\n }} >\r\n <Label text=\"Banco\" />\r\n </SimpleItem>\r\n <SimpleItem dataField=\"reference\" colSpan={2} editorType=\"dxTextBox\"\r\n editorOptions={{ showClearButton: true, disabled: bill.paymentTypeId == paymentType.credito, }} >\r\n <Label text=\"Referencia\" />\r\n </SimpleItem>\r\n \r\n <SimpleItem dataField=\"observation\" colSpan={6} editorType=\"dxTextBox\">\r\n <Label text=\"Observacion\" />\r\n <StringLengthRule max={150} message=\"Maximo 150 caracteres\" />\r\n </SimpleItem>\r\n\r\n </GroupItem>\r\n </GroupItem> \r\n\r\n </GroupItem>\r\n <GroupItem colCount={4}>\r\n <SimpleItem colSpan={2}>\r\n <SelectBox \r\n ref={refSelect}\r\n dataSource={dataSourceProduct()} \r\n valueExpr=\"id\" \r\n displayExpr={item => item ? `${item.internalCode} - ${item.name}` : ''}\r\n searchEnabled={true} \r\n searchMode=\"contains\" searchExpr={['name','internalCode']} \r\n searchTimeout={600} \r\n placeholder=\"Selecione una producto\" \r\n showClearButton={true} \r\n itemRender={itemRender} \r\n onValueChanged={e => {\r\n\r\n addProductById(e.value);\r\n e.component.reset();\r\n e.component.focus();\r\n //this.props.data.component.editCell(this.props.data.rowIndex, this.quantity);\r\n //refGrid.current.instance.editCell(0, 'quantity');\r\n\r\n }} />\r\n </SimpleItem>\r\n </GroupItem>\r\n <GroupItem>\r\n <DataGrid id=\"gridDetails\"\r\n ref={refGrid} \r\n selection={{ mode: 'single' }}\r\n dataSource={ds}\r\n showBorders={true}\r\n showRowLines={true}\r\n allowColumnResizing={true}\r\n allowColumnReordering={true}\r\n height={350}\r\n onToolbarPreparing={onToolbarPreparing}\r\n onRowInserting={onRowInserting}\r\n onCellPrepared={onCellPrepared}\r\n onEditCanceled={onEditCanceled} \r\n onKeyDown={keyDown}\r\n > \r\n <SearchPanel visible={true} />\r\n <Column dataField=\"productId\" caption=\"Producto\"\r\n setCellValue={setCellValue.bind(null, \"productId\")}\r\n editCellComponent={props => <ProductDDBComponent showPrice={true} {...props} validateQuantity={true} />}\r\n >\r\n \r\n <Lookup\r\n dataSource={products}\r\n valueExpr=\"id\"\r\n displayExpr={item => item ? `${item.internalCode} - ${item.name}` : ''}\r\n\r\n />\r\n <RuleRequired />\r\n </Column> \r\n <Column dataField=\"family\" caption={defaultLabels.family} width={120} allowEditing={false}>\r\n <RuleRequired />\r\n </Column>\r\n <Column dataField=\"quantity\" caption=\"Cantidad\" dataType=\"number\" width={80}\r\n setCellValue={setCellValue.bind(null, \"quantity\")}\r\n >\r\n <RuleRequired />\r\n </Column>\r\n <Column dataField=\"stock\" caption=\"Disponible\" dataType=\"number\" width={90} allowEditing={false}>\r\n </Column>\r\n <Column visible={false} dataField=\"price\" caption=\"Precio\" dataType=\"number\" width={100} allowEditing={false} cellRender={cellRender()} >\r\n <RuleRequired />\r\n </Column>\r\n <Column dataField=\"customPrice\" caption=\"Precio\" dataType=\"number\" width={100} cellRender={cellRender()}\r\n setCellValue={setCellValue.bind(null, \"customPrice\")}>\r\n <RuleRequired />\r\n </Column>\r\n <Column dataField=\"discountUnit\" caption=\"Desc Uni\" dataType=\"number\" width={80} cellRender={cellRender()}\r\n setCellValue={setCellValue.bind(null, \"discountUnit\")}>\r\n <RuleRequired />\r\n </Column>\r\n <Column dataField=\"discountPercent\" caption=\"Desc %\" dataType=\"number\" width={80}\r\n setCellValue={setCellValue.bind(null, \"discountPercent\")}>\r\n <RuleRequired />\r\n </Column>\r\n <Column dataField=\"discount\" caption=\"Desc\" dataType=\"number\" width={80} cellRender={cellRender()}\r\n setCellValue={setCellValue.bind(null, \"discount\")}>\r\n <RuleRequired />\r\n </Column>\r\n <Column dataField=\"total\" caption=\"Total\" dataType=\"number\" width={120} allowEditing={false} cellRender={cellRender()} >\r\n <RuleRequired />\r\n </Column>\r\n <Column type=\"buttons\" width={50}>\r\n <ButtonGrid name=\"delete\" />\r\n </Column>\r\n <Summary>\r\n <TotalItem column=\"productId\" summaryType=\"count\" />\r\n <TotalItem column=\"discount\" summaryType=\"sum\" customizeText={toMoney} />\r\n <TotalItem column=\"total\" summaryType=\"sum\" customizeText={toMoney} />\r\n </Summary>\r\n <Editing\r\n mode=\"cell\"\r\n allowDeleting={true}\r\n allowUpdating={true}\r\n selectTextOnEditStart={true}\r\n useIcons={true}\r\n ></Editing>\r\n </DataGrid>\r\n </GroupItem>\r\n <GroupItem colCount={6}> \r\n \r\n <SimpleItem colSpan={2} dataField=\"codeAuth\" editorType=\"dxTextBox\" editorOptions={{readOnly: true}}>\r\n <Label text=\"Código Autorización\" /> \r\n </SimpleItem> \r\n <SimpleItem colSpan={2} dataField=\"asignedTo\" editorType=\"dxSelectBox\" editorOptions={{\r\n dataSource: users,\r\n ...editorOptionsSelect,\r\n valueExpr:\"username\", displayExpr:\"username\",\r\n onValueChanged: e => setBill(_bill =>({ ..._bill, createBy: e.value, }))}}>\r\n <Label text=\"Vendedor\" /> \r\n </SimpleItem> \r\n \r\n <SimpleItem colSpan={1} itemType=\"button\" buttonOptions={{\r\n text: saving ? 'Guardando...' : `Guardar cotización`,\r\n type: 'normal',\r\n icon: 'save',\r\n disabled: saving,\r\n visible: isNew,\r\n onClick: guardarComoCotizacion\r\n }} /> \r\n <SimpleItem colSpan={1} itemType=\"button\" buttonOptions={{\r\n text: saving ? 'Guardando...' : `Guardar factura`,\r\n type: 'success',\r\n icon: 'save',\r\n disabled: saving,\r\n visible: isNew,\r\n onClick: guardarFactura\r\n }} /> \r\n <SimpleItem visible={bill.active === false} colSpan={6} dataField=\"disabledSubject\" editorOptions={{readOnly: true}}> \r\n <Label text=\"Anulado\" /> \r\n </SimpleItem> \r\n </GroupItem>\r\n </Form>\r\n <div className='flex-v'>\r\n <TextBox visible={false} focusStateEnabled={true} ref={textBoxRef} onKeyDown={onKeyDown} value={init}></TextBox> \r\n {\r\n bill.active == false && (\r\n <label className=\"text-danger pa-canceled\">Factura anulada</label>\r\n )\r\n }\r\n {\r\n bill.active == true && !isNew && (\r\n <div className='deliveryDateDiv'>\r\n <label>Fecha de entrega</label>\r\n <DateBox ref={refDeliveryDate} value={bill.deliveryDate} showClearButton={true} displayFormat={formatDate} onValueChanged={e => setBill({...bill, deliveryDate: e.value})} /> \r\n <Button text={saving ? 'Actualizando':'Actualizar fecha'} type=\"normal\" icon=\"event\" onClick={updateDeliveryDate} disabled={saving}></Button>\r\n <Button text={'Imprimir'} type=\"primary\" icon=\"print\" onClick={printBill}></Button>\r\n </div>\r\n )\r\n }\r\n </div>\r\n </ScrollView>\r\n\r\n </Popup>\r\n </div>\r\n );\r\n}\r\n\r\nexport default Nuevo;\r\n","import React from 'react';\r\nimport { formatToMoney } from '../../utils/common';\r\n\r\nconst Resumen = ({data = [], rate = 1}) => {\r\n \r\n const importe = data.reduce((actual, nuevo) => {\r\n return actual + nuevo.total;\r\n },0);\r\n\r\n const descuento = data.reduce((actual, nuevo) => {\r\n return actual + nuevo.discount;\r\n },0);\r\n\r\n const iva = 0\r\n const total = data.reduce((actual, nuevo) => {\r\n return actual + nuevo.total;\r\n },0);\r\n\r\n const totalC$ = total * rate;\r\n\r\n return ( \r\n <div className=\"float-right\">\r\n <table>\r\n <tbody style={{fontSize : '20px'}}>\r\n\r\n <tr>\r\n <td>Cantidad:</td>\r\n <td className=\"text-right\">{data.length}</td>\r\n </tr>\r\n <tr>\r\n <td>Sub total:</td>\r\n <td className=\"text-right\">{formatToMoney(importe)}</td>\r\n </tr>\r\n <tr>\r\n <td>Descuento:</td>\r\n <td className=\"text-right\">{formatToMoney(descuento)}</td>\r\n </tr>\r\n {/* <tr>\r\n <td>IVA:</td>\r\n <td className=\"text-right\">{formatToMoney(iva)}</td>\r\n </tr> */}\r\n <tr>\r\n <td>Total:</td>\r\n <td className=\"text-right\"><b>{formatToMoney(total)}</b></td>\r\n </tr> \r\n \r\n </tbody>\r\n </table>\r\n </div>\r\n );\r\n}\r\n\r\nexport default Resumen;\r\n","import React, { useEffect, useState, useRef } from 'react';\r\nimport { Popup } from 'devextreme-react/popup';\r\nimport Form, { SimpleItem, GroupItem, Label, RequiredRule, StringLengthRule } from 'devextreme-react/form';\r\nimport { useDispatch, useSelector } from 'react-redux'\r\nimport { dialogPurchase } from '../../../store/inPutProductPurchase/purchaseDialogReducer';\r\nimport { createStore, createStoreLocal } from '../../../utils/proxy';\r\nimport { editorOptionsSelect } from '../../../data/app';\r\nimport { DataGrid } from 'devextreme-react';\r\nimport { Column, Editing, Lookup, RequiredRule as RuleRequired, Button as ButtonGrid, Summary, TotalItem, Pager } from 'devextreme-react/data-grid';\r\nimport ProductDDBComponent from '../../../components/dropdown/ProductDDBComponent';\r\nimport uri from '../../../utils/uri';\r\nimport { cellRender, cellRenderBold, formatId, formatToMoney, onCellPrepared } from '../../../utils/common';\r\nimport http from '../../../utils/http';\r\nimport useProducts from '../../../hooks/useProducts';\r\nimport gridsHelper from '../../../utils/gridsHelper';\r\nimport ButtonForm from '../../../components/buttons/ButtonForm';\r\nimport notify from 'devextreme/ui/notify';\r\nimport { defaultLabels, labels, purchaseDefault } from '../../../data/defaultObjects';\r\nimport Resumen from '../../../components/form/Resumen';\r\n\r\nconst NuevoPurchase = props => {\r\n\r\n const { typeId } = props;\r\n\r\n const active = true;\r\n\r\n const { purchaseDialog: { open, id }, user } = useSelector(store => store);\r\n\r\n const { products } = useProducts({ areaId: user.areaId, active, onlyProducts: true });\r\n const [inPutProduct, setInPutProduct] = useState({ ...purchaseDefault });\r\n const [saving, setSaving] = useState(false);\r\n const [details, setDetails] = useState([]);\r\n const [resumenData, setResumenData] = useState([]);\r\n\r\n let refForm = useRef();\r\n let refGrid = useRef();\r\n\r\n useEffect(() => {\r\n\r\n if (id > 0) {\r\n\r\n http(uri.inPutProducts.getById(id)).asGet().then(resp => {\r\n\r\n const { inPutProductDetails, ...rest } = resp;\r\n\r\n inPutProductDetails.map(detail => {\r\n\r\n let info = products.find(x => x.id == detail.productId);\r\n\r\n detail['presentation'] = info.presentation;\r\n detail['um'] = info.um;\r\n detail['family'] = info.family;\r\n\r\n return detail;\r\n })\r\n\r\n setInPutProduct({ ...purchaseDefault, ...rest });\r\n setDetails([...inPutProductDetails]);\r\n\r\n setResumenData([...inPutProductDetails]);\r\n\r\n });\r\n\r\n } else {\r\n\r\n setInPutProduct({ ...purchaseDefault, areaId: user.areaId, typeId: typeId });\r\n setDetails([]);\r\n setResumenData([]);\r\n\r\n }\r\n\r\n }, [open]);\r\n\r\n const dispatch = useDispatch();\r\n const onToolbarPreparing = gridsHelper(refGrid, { text: 'Agregar producto', icon: 'plus' });\r\n\r\n const closeDialog = (load) => {\r\n\r\n refForm.current.instance.resetValues();\r\n refGrid.current.instance.cancelEditData();\r\n\r\n dispatch(dialogPurchase({ open: false, id: 0 }));\r\n if (load) {\r\n let { onSave } = props;\r\n onSave();\r\n }\r\n }\r\n\r\n const onHiding = ({ load }) => {\r\n closeDialog(load);\r\n }\r\n\r\n const guardarEntrada = (e) => {\r\n\r\n refGrid.current.instance.saveEditData();\r\n let result = refGrid.current.instance.hasEditData();\r\n\r\n if (!result) {\r\n\r\n result = refForm.current.instance.validate();\r\n\r\n if (result.isValid) {\r\n\r\n setSaving(true);\r\n let data = { ...inPutProduct, inPutProductDetails: [...details] };\r\n\r\n http(uri.inPutProducts.insert).asPost(data).then(resp => {\r\n\r\n setSaving(false);\r\n notify('Compra registrada correctamente');\r\n closeDialog(true);\r\n\r\n }).catch(err => {\r\n\r\n setSaving(false);\r\n notify(err, 'error', 5000);\r\n\r\n });\r\n\r\n }\r\n }\r\n\r\n }\r\n\r\n const setCellValue = (prop, newData, value, currentRowData) => {\r\n\r\n newData[prop] = value || 0;\r\n if (prop == 'productId' && value) {\r\n\r\n let info = products.find(x => x.id == value);\r\n newData['presentation'] = info.presentation;\r\n newData['um'] = info.um;\r\n newData['family'] = info.family;\r\n newData['cost'] = info.cost;\r\n newData['price'] = 0;\r\n newData['quantity'] = 1;\r\n newData['total'] = info.cost;\r\n }\r\n\r\n if (prop == 'quantity' && (+value) >= 0) {\r\n newData['total'] = currentRowData['cost'] * value;\r\n }\r\n\r\n if (prop == 'cost' && (+value) >= 0) {\r\n newData['total'] = currentRowData['quantity'] * value;\r\n }\r\n\r\n }\r\n\r\n const onRowInserted = e => {\r\n setResumenData([...details])\r\n }\r\n\r\n const isNew = id == 0;\r\n\r\n const textSaving = 'Guardar Entrada';\r\n\r\n return (\r\n <div>\r\n <Popup\r\n width={1150}\r\n height={580}\r\n title={isNew ? `Nueva compra de inventario` : `Compra #${formatId(id)}`}\r\n onHiding={onHiding}\r\n visible={open}\r\n >\r\n <Form formData={inPutProduct} ref={refForm}>\r\n <GroupItem colCount={3}>\r\n <GroupItem colSpan={2}>\r\n <GroupItem colCount={3}>\r\n <SimpleItem dataField=\"areaId\" editorType=\"dxSelectBox\"\r\n editorOptions={{\r\n disabled: true,\r\n dataSource: createStoreLocal({ name: 'area' }),\r\n ...editorOptionsSelect\r\n }} >\r\n <Label text=\"Area\" />\r\n <RequiredRule message=\"Seleccione el area\" />\r\n </SimpleItem>\r\n <SimpleItem dataField=\"date\" editorType=\"dxDateBox\"\r\n editorOptions={{\r\n displayFormat: 'dd/MM/yyyy',\r\n openOnFieldClick: true,\r\n }} >\r\n <Label text=\"Fecha\" />\r\n <RequiredRule message=\"Seleccione la fecha\" />\r\n </SimpleItem>\r\n <SimpleItem dataField=\"typeId\" editorType=\"dxSelectBox\"\r\n editorOptions={{\r\n disabled: true,\r\n dataSource: createStoreLocal({ name: 'inPutProductType' }),\r\n ...editorOptionsSelect\r\n }} >\r\n <Label text=\"Tipo\" />\r\n <RequiredRule message=\"Seleccione el tipo\" />\r\n </SimpleItem>\r\n <SimpleItem dataField=\"providerId\" colSpan={2} editorType=\"dxSelectBox\"\r\n editorOptions={{\r\n dataSource: createStore({ name: 'Provider', active: isNew }),\r\n ...editorOptionsSelect\r\n }} >\r\n <Label text=\"Proveedor\" />\r\n <RequiredRule message=\"Seleccione el proveedor\" />\r\n </SimpleItem>\r\n <SimpleItem dataField=\"reference\">\r\n <Label text=\"Referencia\" />\r\n <RequiredRule message=\"Ingrese la referencia de compra\" />\r\n </SimpleItem>\r\n <SimpleItem dataField=\"observation\" colSpan={3} editorType=\"dxTextArea\">\r\n <Label text=\"Observacion\" />\r\n <StringLengthRule max={500} message=\"Maximo 500 caracteres\" />\r\n </SimpleItem>\r\n </GroupItem>\r\n </GroupItem>\r\n <GroupItem colSpan={1}>\r\n <Resumen data={resumenData} /> \r\n </GroupItem>\r\n </GroupItem>\r\n <GroupItem>\r\n <DataGrid id=\"gridDetails\"\r\n ref={refGrid}\r\n selection={{ mode: 'single' }}\r\n dataSource={details}\r\n showBorders={true}\r\n showRowLines={true}\r\n allowColumnResizing={true}\r\n allowColumnReordering={true}\r\n height={290}\r\n onToolbarPreparing={onToolbarPreparing}\r\n onCellPrepared={onCellPrepared}\r\n onRowInserted={onRowInserted}\r\n onRowRemoved={onRowInserted}\r\n onRowUpdated={onRowInserted}\r\n >\r\n <Column dataField=\"productId\" caption=\"Producto\"\r\n setCellValue={setCellValue.bind(null, \"productId\")}\r\n editCellComponent={props => <ProductDDBComponent showPrice={false} {...props} />}>\r\n <Lookup\r\n dataSource={products}\r\n valueExpr=\"id\"\r\n displayExpr={item => item ? `${item.internalCode} - ${item.name}` : ''}\r\n\r\n />\r\n <RuleRequired />\r\n </Column>\r\n <Column dataField=\"family\" caption={defaultLabels.family} width={120} allowEditing={false}>\r\n <RuleRequired />\r\n </Column>\r\n <Column dataField=\"quantity\" caption=\"Cantidad\" dataType=\"number\" width={80} setCellValue={setCellValue.bind(null, \"quantity\")}>\r\n <RuleRequired />\r\n </Column>\r\n <Column dataField=\"cost\" caption={labels.costo} dataType=\"number\" width={100} cellRender={cellRender()} setCellValue={setCellValue.bind(null, \"cost\")}>\r\n <RuleRequired />\r\n </Column>\r\n <Column dataField=\"total\" caption=\"Total\" dataType=\"number\" width={120} allowEditing={false} cellRender={cellRenderBold()} >\r\n <RuleRequired />\r\n </Column>\r\n <Column dataField=\"price\" caption={labels.precio} dataType=\"number\" width={100} cellRender={cellRender()} >\r\n <RuleRequired />\r\n </Column>\r\n\r\n <Column dataField=\"lote\" caption=\"# Lote\" width={80}></Column> \r\n <Column dataField=\"expireDate\" caption=\"Expiración\" dataType='date' format='MM/yyyy' width={80}></Column> \r\n\r\n <Column type=\"buttons\" width={50}>\r\n <ButtonGrid name=\"delete\" />\r\n </Column>\r\n <Pager\r\n showInfo={true}\r\n showPageSizeSelector={true}\r\n allowedPageSizes={[10, 20, 50]}\r\n />\r\n <Summary>\r\n <TotalItem\r\n column=\"total\"\r\n summaryType=\"sum\"\r\n customizeText={data => formatToMoney(data.value)} />\r\n </Summary>\r\n <Editing\r\n mode=\"cell\"\r\n allowDeleting={true}\r\n allowUpdating={true}\r\n selectTextOnEditStart={true}\r\n useIcons={true}\r\n ></Editing>\r\n </DataGrid>\r\n </GroupItem>\r\n </Form>\r\n\r\n <ButtonForm saving={saving} visible={isNew} textSaving={textSaving} onClick={guardarEntrada} />\r\n\r\n </Popup>\r\n </div>\r\n );\r\n}\r\n\r\nexport default NuevoPurchase;\r\n","import Kardex from './Kardex';\r\nexport default Kardex;","import React, { useState, useEffect, useRef } from \"react\";\r\nimport { Box, CheckBox, DataGrid, DateBox, DropDownBox, SelectBox } from \"devextreme-react\";\r\nimport { useDispatch } from \"react-redux\";\r\nimport { Item } from \"devextreme-react/box\";\r\nimport { Column, Selection, Paging, FilterRow, Scrolling, Export, Pager, Button, Editing } from \"devextreme-react/data-grid\";\r\n\r\nimport http from \"../../../utils/http\";\r\nimport uri from \"../../../utils/uri\";\r\nimport Title from \"../../../components/shared/Title\";\r\nimport BlockHeader from \"../../../components/shared/BlockHeader\";\r\nimport useProducts from \"../../../hooks/useProducts\";\r\nimport { cellRender, cellRenderBold, dataFormatId } from \"../../../utils/common\";\r\nimport { formatDate } from \"../../../data/app\";\r\nimport { addMenu } from \"../../../components/grids/Menu\";\r\nimport { inPutProductTypes, outPutProductTypes } from \"../../../data/enums\";\r\n\r\nimport { billDialogAction } from \"../../../store/bill/billDialogReducer\";\r\nimport { dialogOutputProduct } from \"../../../store/outPutProduct/outPutProductDialogReducer\";\r\nimport { dialogInputProduct } from \"../../../store/inPutProduct/inPutProductDialogReducer\";\r\nimport { dialogPurchase } from \"../../../store/inPutProductPurchase/purchaseDialogReducer\";\r\nimport { dialogTraslate } from \"../../../store/traslate/traslateDialogReducer\";\r\n\r\nimport * as ViewBill from '../../bills/Nuevo';\r\nimport * as ViewAjusteSalida from '../../movimientos/outPutProducts/Nuevo';\r\n\r\nimport * as ViewSaldoInicial from '../../movimientos/initProducts/Nuevo';\r\nimport * as ViewCompras from '../../movimientos/initProducts/NuevoPurchase';\r\n\r\nimport * as ViewTraslate from '../../movimientos/traslates/Nuevo';\r\nimport { defaultLabels } from \"../../../data/defaultObjects\";\r\nimport useAuthorization from '../../../hooks/useAuthorization';\r\nimport { resources } from '../../../data/app';\r\n\r\nconst Kardex = (props) => {\r\n\r\n const [ authorized ] = useAuthorization( resources.verKardex );\r\n\r\n let dropDownBoxRef = useRef();\r\n\r\n const [areas, setAreas] = useState([]);\r\n const [areaId, setAreaId] = useState(0);\r\n const [date, setDate] = useState(null);\r\n const {products} = useProducts({ areaId }); \r\n const [gridBoxValue, setGridBoxValue] = useState([]); \r\n\r\n const [kardex, setKardex] = useState(undefined);\r\n const [floating, setFloating] = useState([]);\r\n const [saldoAnterior, setSaldoAnterior] = useState(0);\r\n const [applyFloating, setApplyFloating] = useState(false);\r\n \r\n const changeHandler = (e) => {\r\n setGridBoxValue(e.value);\r\n }\r\n\r\n const dataGrid_onSelectionChanged = (e) => { \r\n setGridBoxValue(e.selectedRowKeys[0].id);\r\n dropDownBoxRef.current.instance.close(); \r\n\r\n }\r\n\r\n const dataGridRender = () => {\r\n return (\r\n <DataGrid\r\n dataSource={products}\r\n hoverStateEnabled={true}\r\n selectedRowKeys={gridBoxValue}\r\n onSelectionChanged={dataGrid_onSelectionChanged}\r\n height=\"100%\"> \r\n <Selection mode=\"single\" />\r\n <Scrolling mode=\"infinite\" />\r\n <Paging enabled={true} pageSize={10} />\r\n <FilterRow visible={true} />\r\n <Column dataField=\"internalCode\" caption=\"Codigo\" width={100}/>\r\n <Column dataField=\"name\" caption=\"Nombre\" />\r\n <Column dataField=\"family\" caption={defaultLabels.family} width={120}></Column>\r\n <Column dataField=\"um\" caption=\"UM\" width={120}></Column>\r\n </DataGrid>\r\n );\r\n }\r\n\r\n const changeArea = e => {\r\n setAreaId(e.value)\r\n }\r\n\r\n const changeDate = e => {\r\n setDate(e.value)\r\n }\r\n\r\n useEffect(() => {\r\n http(uri.areas.get).asGet().then(resp => setAreas(resp));\r\n }, [0]);\r\n\r\n const loadData = async()=>{\r\n if(areaId && gridBoxValue && date){\r\n \r\n const resp = await http('reports/kardex').asPost({areaId, productId : gridBoxValue, date});\r\n\r\n if(applyFloating)\r\n {\r\n const respFlating = await http('reports/floating').asPost({areaId, productId : gridBoxValue, date});\r\n setFloating(respFlating.result);\r\n }else\r\n setFloating([]);\r\n\r\n setKardex(resp.result)\r\n setSaldoAnterior(resp.saldoAnterior)\r\n\r\n }\r\n \r\n }\r\n\r\n useEffect(() => {\r\n loadData();\r\n }, [areaId, gridBoxValue, date, applyFloating]);\r\n\r\n const stockcellRender = (cellData) => { \r\n return cellData.value > 0 ? (\r\n <div className={cellData.data.quantityIn > 0 ? 'inc' : 'dec'} > \r\n <div className='diff'>{cellData.value}</div>\r\n </div>\r\n ): (<div>{cellData.value}</div>);\r\n }\r\n\r\n const dispatch = useDispatch();\r\n const directions = { entrada: 1, salida : 2 };\r\n\r\n const findMove = (e) => {\r\n\r\n const { id, reference, direction, typeId } = e.row.data;\r\n\r\n let codigo = 0;\r\n\r\n if(direction == directions.entrada){\r\n if([inPutProductTypes.compra, inPutProductTypes.ajusteEntrada, inPutProductTypes.saldoInicial].includes(typeId)){\r\n codigo = id;\r\n }else{\r\n codigo = parseInt(reference);\r\n }\r\n }\r\n\r\n if(direction == directions.salida){\r\n if([outPutProductTypes.facturacion, outPutProductTypes.traslado].includes(typeId)){\r\n codigo = parseInt(reference);\r\n }else{\r\n codigo = id;\r\n }\r\n }\r\n\r\n if(direction == directions.salida){\r\n\r\n if(typeId == outPutProductTypes.facturacion)\r\n dispatch(billDialogAction({ open: true, id: codigo }));\r\n\r\n if(typeId == outPutProductTypes.ajuste)\r\n dispatch(dialogOutputProduct({ open: true, id: codigo }));\r\n\r\n if(typeId == inPutProductTypes.traslado)\r\n dispatch(dialogTraslate({open : true, id: codigo}));\r\n }\r\n\r\n if(direction == directions.entrada){\r\n\r\n if(typeId == inPutProductTypes.ajusteEntrada)\r\n dispatch(dialogInputProduct({open : true, id: codigo}));\r\n \r\n if(typeId == inPutProductTypes.saldoInicial)\r\n dispatch(dialogInputProduct({open : true, id: codigo}));\r\n\r\n if(typeId == inPutProductTypes.compra)\r\n dispatch(dialogPurchase({open : true, id: codigo}));\r\n\r\n if(typeId == inPutProductTypes.traslado)\r\n dispatch(dialogTraslate({open : true, id: codigo}));\r\n }\r\n \r\n }\r\n\r\n const addMenuItems = (e) => {\r\n addMenu(e, [{\r\n text: `Ver movimiento`,\r\n icon: 'find',\r\n onItemClick: findMove\r\n }])\r\n }\r\n\r\n const title ='Kardex'; \r\n\r\n return authorized(\r\n <div className=\"container big\">\r\n <Title title={title} />\r\n <BlockHeader title={title} showFavorite={true} {...props} />\r\n\r\n <ViewBill.default />\r\n <ViewSaldoInicial.default type={inPutProductTypes.saldoInicial} />\r\n <ViewCompras.default type={inPutProductTypes.compra} />\r\n\r\n <ViewAjusteSalida.default />\r\n <ViewTraslate.default />\r\n\r\n <Box direction=\"row\" width=\"100%\" height={75}>\r\n <Item ratio={1}>\r\n <div className=\"ml-10\">\r\n <label>Seleccione el area:</label>\r\n <SelectBox items={areas}\r\n placeholder=\"Selecciona una bodega\"\r\n showClearButton={true} valueExpr=\"id\" displayExpr=\"name\" \r\n onValueChanged={changeArea} \r\n />\r\n </div>\r\n </Item>\r\n <Item ratio={2}>\r\n <div className=\"ml-10\">\r\n <label>Seleccione un producto:</label>\r\n <DropDownBox \r\n ref={dropDownBoxRef}\r\n dataSource={products}\r\n key=\"id\"\r\n placeholder=\"Selecciona un producto\"\r\n showClearButton={true} \r\n valueExpr=\"id\" \r\n displayExpr={item => item ? `${item.internalCode} - ${item.name}` : ''} \r\n value = {gridBoxValue} \r\n onValueChanged={changeHandler} \r\n contentRender={dataGridRender} \r\n />\r\n </div>\r\n </Item>\r\n <Item ratio={1}>\r\n <div className=\"ml-10\">\r\n <label>Seleccione la fecha de corte:</label>\r\n <DateBox type=\"date\" displayFormat={formatDate} openOnFieldClick={true} onValueChanged={changeDate}/>\r\n </div>\r\n </Item>\r\n </Box>\r\n <Box direction=\"row\" width=\"100%\" height={75}>\r\n\r\n <Item ratio={1}>\r\n <label>Kardex</label>\r\n <DataGrid\r\n dataSource={[{ stocks : saldoAnterior, type:'Saldo Anterior',id:'-', date: date }]}\r\n showBorders={true}\r\n showRowLines={true}\r\n > \r\n <Export enabled={false} fileName={title} allowExportSelectedData={true} />\r\n <Column dataField=\"tem\" caption=\"Opt\" width={50} />\r\n <Column dataField=\"type\" caption=\"Saldo Antorior\" width={150} />\r\n <Column dataField=\"id\" caption=\"Documento\" width={90} alignment=\"right\"/>\r\n <Column dataField=\"date\" dataType=\"date\" caption=\"Fecha\" format={formatDate} width={100} />\r\n <Column dataField=\"reference\" caption=\"Referencia\" /> \r\n <Column dataField=\"stocks\" caption=\"Existencia\" width={80} />\r\n </DataGrid>\r\n <DataGrid\r\n\r\n id=\"gridContainer\"\r\n className=\"vgridContainer\"\r\n selection={{ mode: 'single' }}\r\n dataSource={kardex}\r\n showBorders={true}\r\n showRowLines={true}\r\n hoverStateEnabled={true}\r\n onContextMenuPreparing={addMenuItems}\r\n > \r\n <Paging defaultPageSize={10} />\r\n <Pager\r\n showInfo={true}\r\n showPageSizeSelector={true}\r\n allowedPageSizes={[10, 20, 50,100,500]}\r\n />\r\n <Export enabled={false} fileName={title} allowExportSelectedData={true} />\r\n <Column type=\"buttons\" width={50}>\r\n <Button name=\"edit\" hint=\"Ver movimientos\" icon=\"find\" onClick={findMove}/>\r\n </Column>\r\n <Column dataField=\"type\" caption=\"Tipo\" width={150} />\r\n <Column dataField=\"id\" caption=\"Documento\" width={90} />\r\n <Column dataField=\"date\" dataType=\"date\" caption=\"Fecha\" format={formatDate} width={100} />\r\n <Column dataField=\"reference\" caption=\"Referencia\" width={90} />\r\n <Column dataField=\"observation\" caption=\"Observación\" />\r\n <Column caption=\"Entradas\" alignment=\"center\">\r\n <Column dataField=\"quantityIn\" caption=\"Cantidad\" width={75} cellRender={stockcellRender}/>\r\n <Column dataField=\"costIn\" caption=\"Costo\" cellRender={cellRender()} width={100} alignment=\"right\" />\r\n <Column dataField=\"costTotalIn\" caption=\"Total\" cellRender={cellRenderBold()} width={115} alignment=\"right\"/>\r\n </Column> \r\n <Column caption=\"Salidas\" alignment=\"center\">\r\n <Column dataField=\"quantityOut\" caption=\"Cantidad\" width={75} cellRender={stockcellRender}/>\r\n <Column dataField=\"costOut\" caption=\"Costo\" cellRender={cellRender()} width={100} alignment=\"right\"/>\r\n <Column dataField=\"costTotalOut\" caption=\"Total\" cellRender={cellRenderBold()} width={115} alignment=\"right\"/>\r\n </Column> \r\n <Column caption=\"Existencias\" alignment=\"center\">\r\n <Column dataField=\"stocks\" caption=\"Existencia\" width={80} />\r\n <Column dataField=\"costAvg\" caption=\"Costo Prom\" cellRender={cellRender()} width={100} alignment=\"right\"/>\r\n <Column dataField=\"costPromOut\" caption=\"Total\" cellRender={cellRenderBold()} width={115} alignment=\"right\"/>\r\n </Column> \r\n <Editing\r\n mode=\"popup\"\r\n allowUpdating={true} \r\n useIcons={true}\r\n >\r\n </Editing> \r\n </DataGrid>\r\n \r\n <label> \r\n <CheckBox value={applyFloating} text=\"Ver saldo flotante\" onValueChanged={e => setApplyFloating(e.value)} />\r\n </label> \r\n <DataGrid\r\n id=\"gridContainer2\"\r\n className=\"vgridContainer\"\r\n selection={{ mode: 'single' }}\r\n dataSource={floating}\r\n showBorders={true}\r\n showRowLines={true}\r\n hoverStateEnabled={true}\r\n visible={applyFloating}\r\n > \r\n <Paging defaultPageSize={10} />\r\n <Pager\r\n showInfo={true}\r\n showPageSizeSelector={true}\r\n allowedPageSizes={[10, 20, 50,100,500]}\r\n />\r\n <Export enabled={false} fileName={title} allowExportSelectedData={true} />\r\n <Column type=\"buttons\" width={50}>\r\n <Button name=\"edit\" hint=\"Ver movimientos\" icon=\"find\" onClick={findMove}/>\r\n </Column>\r\n <Column dataField=\"type\" caption=\"Tipo\" width={150} />\r\n <Column dataField=\"id\" caption=\"Documento\" width={90} />\r\n <Column dataField=\"date\" dataType=\"date\" caption=\"Fecha\" format={formatDate} width={100} />\r\n <Column dataField=\"reference\" caption=\"Referencia\" width={90} />\r\n <Column dataField=\"observation\" caption=\"Observación\" />\r\n <Column caption=\"Entradas\" alignment=\"center\">\r\n <Column dataField=\"quantityIn\" caption=\"Cantidad\" width={75} cellRender={stockcellRender}/>\r\n <Column dataField=\"costIn\" caption=\"Costo\" cellRender={cellRender()} width={100} alignment=\"right\" />\r\n <Column dataField=\"costTotalIn\" caption=\"Total\" cellRender={cellRenderBold()} width={115} alignment=\"right\"/>\r\n </Column> \r\n <Column caption=\"Salidas\" alignment=\"center\">\r\n <Column dataField=\"quantityOut\" caption=\"Cantidad\" width={75} cellRender={stockcellRender}/>\r\n <Column dataField=\"costOut\" caption=\"Costo\" cellRender={cellRender()} width={100} alignment=\"right\"/>\r\n <Column dataField=\"costTotalOut\" caption=\"Total\" cellRender={cellRenderBold()} width={115} alignment=\"right\"/>\r\n </Column> \r\n <Column caption=\"Existencias\" alignment=\"center\">\r\n <Column dataField=\"quantity\" caption=\"Existencia\" width={80} />\r\n <Column dataField=\"cost\" caption=\"Costo Prom\" cellRender={cellRender()} width={100} alignment=\"right\"/>\r\n <Column dataField=\"costPromOut\" caption=\"Total\" cellRender={cellRenderBold()} width={115} alignment=\"right\"/>\r\n </Column> \r\n <Editing\r\n mode=\"popup\"\r\n allowUpdating={true} \r\n useIcons={true}\r\n >\r\n </Editing> \r\n </DataGrid> \r\n </Item>\r\n\r\n \r\n </Box>\r\n \r\n\r\n\r\n </div>\r\n );\r\n}\r\n\r\nexport default Kardex;\r\n","import Existencias from './Existencias';\r\nexport default Existencias;","import React, { useState, useEffect, useRef } from \"react\";\r\nimport { Box, DataGrid, DropDownBox, SelectBox } from \"devextreme-react\";\r\nimport { Item } from \"devextreme-react/box\";\r\nimport { Switch } from 'devextreme-react/switch';\r\nimport { Button } from 'devextreme-react/button';\r\nimport http from \"../../../utils/http\";\r\nimport uri from \"../../../utils/uri\";\r\nimport { Column, Selection, Paging, FilterRow, Scrolling, Export, TotalItem, Summary, MasterDetail } from \"devextreme-react/data-grid\";\r\nimport Title from \"../../../components/shared/Title\";\r\nimport BlockHeader from \"../../../components/shared/BlockHeader\";\r\nimport useProducts from \"../../../hooks/useProducts\";\r\nimport { cellRender, dataFormatId, formatToMoney } from \"../../../utils/common\";\r\nimport { defaultLabels } from \"../../../data/defaultObjects\";\r\nimport useAuthorization from '../../../hooks/useAuthorization';\r\nimport { resources } from '../../../data/app';\r\n\r\nconst Existencias = () => {\r\n\r\n const [ authorized, _, canSeeColCost ] = useAuthorization( resources.verExistencias, resources.verColumnaCostoStock );\r\n\r\n let dataGrid = useRef();\r\n\r\n let dropDownBoxRef = useRef();\r\n\r\n const [areas, setAreas] = useState([]);\r\n const [areaId, setAreaId] = useState( null );\r\n const [withStock, setWithStock] = useState( true );\r\n const {products} = useProducts({ areaId, onlyProducts: true }); \r\n const [gridBoxValue, setGridBoxValue] = useState(null); \r\n const [defaultValue, setDefaultValue] = useState(null);\r\n\r\n const [stocks, setStocks] = useState([]);\r\n\r\n const changeHandler = (e) => {\r\n setGridBoxValue(e.value);\r\n }\r\n\r\n const dataGrid_onSelectionChanged = (e) => { \r\n setGridBoxValue(e.selectedRowKeys[0].id);\r\n dropDownBoxRef.current.instance.close(); \r\n\r\n }\r\n\r\n const dataGridRender = () => {\r\n return (\r\n <DataGrid\r\n dataSource={products}\r\n hoverStateEnabled={true}\r\n selectedRowKeys={gridBoxValue}\r\n onSelectionChanged={dataGrid_onSelectionChanged}\r\n height=\"100%\"> \r\n <Selection mode=\"single\" />\r\n <Scrolling mode=\"infinite\" />\r\n <Paging enabled={true} pageSize={10} />\r\n <FilterRow visible={true} />\r\n <Column dataField=\"internalCode\" caption=\"Codigo\" width={100}/>\r\n <Column dataField=\"name\" caption=\"Nombre\" />\r\n <Column dataField=\"family\" caption={defaultLabels.family} width={100}/>\r\n <Column dataField=\"um\" caption=\"UM\" width={80}/>\r\n </DataGrid>\r\n );\r\n }\r\n\r\n const changeArea = e => {\r\n setAreaId(e.value)\r\n }\r\n\r\n useEffect(() => {\r\n http(uri.areas.get).asGet().then(resp => {\r\n\r\n if(resp.length == 1)\r\n setDefaultValue(resp[0].id);\r\n\r\n setAreas(resp)\r\n \r\n })\r\n }, [0]);\r\n\r\n const buscar = (params) => {\r\n http('reports/stock').asPost({areaId, productId: gridBoxValue, withStock}).then(resp => {\r\n\r\n setStocks(resp.map(x => {\r\n x.total = x.stock * x.costAvg\r\n return x;\r\n }))\r\n }); \r\n }\r\n\r\n const onToolbarPreparing = (e) => { \r\n e.toolbarOptions.items.unshift({\r\n location: 'before',\r\n widget: 'dxButton',\r\n options: {\r\n text: 'Exportar a excel',\r\n icon:'exportxlsx',\r\n type:'success',\r\n stylingMode:\"outlined\",\r\n onClick: () => dataGrid.current.instance.exportToExcel(false)\r\n }\r\n });\r\n } \r\n\r\n const calculateFilterExpression = (value, selectedFilterOperation, target) => { \r\n\r\n const values = value.split('%');\r\n let filters = values.map(v => {\r\n return ['productName', 'contains', v];\r\n });\r\n\r\n const filterFull = [];\r\n\r\n if (filters.length > 1) {\r\n\r\n for (let index = 0; index < filters.length; index++) {\r\n const element = filters[index];\r\n filterFull.push(element);\r\n if (index < filters.length - 1) {\r\n filterFull.push('and');\r\n }\r\n }\r\n return filterFull;\r\n\r\n }else{\r\n return [filters]\r\n }\r\n }\r\n\r\n const title ='Existencias'; \r\n\r\n return authorized(\r\n <div className=\"container big\">\r\n <Title title={title} />\r\n <BlockHeader title={title} />\r\n <Box direction=\"row\" width=\"100%\" height={75}>\r\n <Item ratio={1}>\r\n <div className=\"ml-10\">\r\n <label>Seleccione el area:</label>\r\n <SelectBox items={areas}\r\n defaultValue={defaultValue}\r\n placeholder=\"Selecciona una bodega\"\r\n showClearButton={true} valueExpr=\"id\" displayExpr=\"name\" \r\n onValueChanged={changeArea} \r\n />\r\n </div>\r\n </Item>\r\n <Item ratio={2}>\r\n <div className=\"ml-10\">\r\n <label>Seleccione un producto:</label>\r\n <DropDownBox \r\n ref={dropDownBoxRef}\r\n dataSource={products}\r\n key=\"id\"\r\n placeholder=\"Selecciona un producto\"\r\n showClearButton={true} \r\n valueExpr=\"id\" \r\n displayExpr={item => item ? `${item.internalCode} - ${item.name}` : ''} \r\n value = {gridBoxValue} \r\n onValueChanged={changeHandler} \r\n contentRender={dataGridRender} \r\n />\r\n </div>\r\n </Item>\r\n <Item ratio={1}> \r\n <div className=\"ml-10\">\r\n <label>Ver solo existencias mayor a 0?:</label> \r\n <br />\r\n <Switch \r\n switchedOnText = \"SI\"\r\n switchedOffText =\"NO\"\r\n defaultValue={withStock} \r\n onValueChanged={e => setWithStock(e.value)}/> \r\n </div> \r\n </Item>\r\n <Item ratio={1}> \r\n <div className=\"ml-10\">\r\n <label></label> \r\n <br />\r\n <Button text='Realizar busqueda' onClick={buscar} type='default' stylingMode=\"outlined\" icon='search'/> \r\n </div> \r\n </Item>\r\n </Box>\r\n <Box direction=\"row\" width=\"100%\" height={75}>\r\n\r\n <Item ratio={1}>\r\n <label>Existencias</label>\r\n <DataGrid\r\n ref={dataGrid}\r\n id=\"gridContainer\"\r\n dataSource={stocks}\r\n showBorders={true}\r\n showRowLines={true}\r\n onToolbarPreparing={onToolbarPreparing}\r\n > \r\n <FilterRow visible={true} /> \r\n <Export enabled={false} fileName={title} allowExportSelectedData={true} />\r\n <Column dataField=\"areaId\" visible={false} />\r\n <Column dataField=\"area\" visible={false} groupIndex={0} />\r\n <Column dataField=\"productId\" caption=\"Codigo\" width={150} cellRender={dataFormatId}/>\r\n <Column dataField=\"productName\" caption=\"Producto\" calculateFilterExpression={calculateFilterExpression} />\r\n <Column dataField=\"um\" caption=\"Unidad Medida\" width={120} />\r\n <Column dataField=\"presentation\" caption={defaultLabels.family} width={120} />\r\n <Column dataField=\"price\" caption=\"Precio\" cellRender={cellRender()} width={120} alignment=\"right\" />\r\n { canSeeColCost && <Column dataField=\"costAvg\" caption=\"Costo\" cellRender={cellRender()} width={120} alignment=\"right\" />}\r\n <Column dataField=\"stock\" caption=\"Cant\" width={100} /> \r\n <Column dataField=\"disponible\" caption=\"Disponible\" width={100} />\r\n <Column dataField=\"total\" caption=\"Total\" cellRender={cellRender()} width={120} /> \r\n <Summary>\r\n <TotalItem\r\n column=\"total\"\r\n summaryType=\"sum\" customizeText={data => `${formatToMoney(data.value)}`}/> \r\n </Summary> \r\n </DataGrid>\r\n </Item>\r\n\r\n </Box>\r\n\r\n </div>\r\n );\r\n}\r\n\r\nexport default Existencias;\r\n","import React from 'react';\r\nimport { inPutProductTypes } from '../../../data/enums';\r\nimport InPutProducts from '../inPutProducts/InPutProducts';\r\nimport { resources } from '../../../data/app';\r\nimport Nuevo from './Nuevo';\r\n\r\nconst initAdjustments = () => {\r\n\r\n const title ='Ajuste de entrada';\r\n const btnAddText ='Nueva entrada';\r\n const typeId = inPutProductTypes.ajusteEntrada;\r\n\r\n return (\r\n <InPutProducts \r\n title={title} \r\n btnAddText={btnAddText} \r\n typeId={typeId} \r\n icon=\"dx-icon-increaseindent color-icon-green\" \r\n resourcesId = {resources.ajuste}\r\n Component={props => <Nuevo {...props} exists={true} />}\r\n />\r\n );\r\n}\r\n\r\nexport default initAdjustments;\r\n","import { dialogDefault, DIALOG_CLIENT } from \"../consts\";\r\n\r\nconst mydialog = {...dialogDefault}\r\n\r\n\r\nexport const clientDialogAction = ({ open = false, id = 0, clientId = 0 }) => ({\r\n type: DIALOG_CLIENT,\r\n payload : { open, id, clientId }\r\n});\r\n\r\nexport default function clientDialogReducer(state = mydialog, { type, payload }) {\r\n\r\n const actions = {\r\n [DIALOG_CLIENT] : () => ({...state, ...payload })\r\n }\r\n\r\n return actions[type]?.call() || state;\r\n}\r\n\r\n","import React, { useRef, useState, useEffect } from 'react';\r\nimport { Popup } from 'devextreme-react';\r\nimport Form, { SimpleItem, Label, StringLengthRule, RequiredRule } from 'devextreme-react/form';\r\nimport { Button } from 'devextreme-react/button';\r\nimport notify from 'devextreme/ui/notify';\r\nimport { useDispatch, useSelector } from 'react-redux'\r\nimport http from '../../utils/http';\r\nimport uri from '../../utils/uri';\r\nimport { defaultClient } from '../../data/defaultObjects';\r\nimport { editorOptionsSwitch, editorOptsTextBoxPhone, editorOptionsSelect, editorOptionsNumberBox, resources } from '../../data/app';\r\nimport { clientDialogAction } from '../../store/client/clientDialogReducer';\r\nimport { createStoreLocal } from '../../utils/proxy';\r\nimport useAuthorization from '../../hooks/useAuthorization';\r\n\r\nconst Nuevo = (props) => {\r\n\r\n const { isMobile } = props; \r\n\r\n const [ _, canConfigureCredit ] = useAuthorization( resources.configurarCredito );\r\n\r\n const dispatch = useDispatch();\r\n \r\n const { clientDialog: { open, id } } = useSelector(store => store);\r\n\r\n const [cliente, setcliente] = useState({ ...defaultClient }); \r\n const [cities, setCities] = useState([]); \r\n const [saving, setSaving] = useState({\r\n loading : false,\r\n text : 'Guardar'\r\n });\r\n\r\n const closeDialog = (load, clientId) => {\r\n\r\n dispatch(clientDialogAction({ id: 0, clientId: 0, open: false }));\r\n\r\n if(load)\r\n if(props.onSave)\r\n props.onSave();\r\n\r\n }\r\n\r\n const onHiding = ({ load }) => {\r\n\r\n closeDialog(load, 0);\r\n \r\n }\r\n\r\n const refForm = useRef();\r\n\r\n const guardarCliente = (params) => {\r\n\r\n let result = refForm.current.instance.validate(); \r\n\r\n if (result.isValid) {\r\n\r\n setSaving({loading : true, text:'Guardando...'});\r\n \r\n http(uri.clients.insert).asPost(cliente).then(resp => {\r\n\r\n notify('Datos guardados correctamente');\r\n setSaving({loading : false, text:'Guardar'}); \r\n closeDialog(true, resp.id);\r\n\r\n }).catch(err => {\r\n\r\n setSaving({loading : false, text:'Guardar'});\r\n notify(err, 'error');\r\n\r\n });\r\n\r\n }\r\n }\r\n\r\n useEffect(() => {\r\n http('catalogos/City').asGet().then(resp => setCities(resp))\r\n }, [0]); \r\n\r\n useEffect(() => {\r\n\r\n if(id > 0)\r\n http(uri.clients.getById(id)).asGet().then(resp => setcliente(cli => ({ ...resp, isCompany: resp.isCompany ?? false })));\r\n else{\r\n setcliente({ ...defaultClient });\r\n refForm.current.instance.resetValues();\r\n }\r\n }, [open]); \r\n\r\n const updateCliente = (prop) => e => { \r\n setcliente({ ...cliente, [prop]: e.value }); \r\n }\r\n\r\n const propPop = isMobile ? { fullScreen: true } : { width: 700, height: 600 };\r\n\r\n return (\r\n <div> \r\n <Popup\r\n title={`Cliente`}\r\n {...propPop}\r\n onHiding={onHiding}\r\n visible={open}\r\n showCloseButton={true}\r\n className=\"bg-fbfbfb\"\r\n >\r\n <Form formData={cliente} ref={refForm} colCount={2}>\r\n <SimpleItem dataField=\"isCompany\" editorType='dxSwitch' editorOptions={{...editorOptionsSwitch, onValueChanged: updateCliente('isCompany')}}>\r\n <Label text=\"Es Empresa?\" /> \r\n </SimpleItem> \r\n <SimpleItem dataField=\"typeId\" colSpan={2} editorType=\"dxSelectBox\"\r\n editorOptions={{\r\n disabled: !cliente.isCompany,\r\n dataSource: createStoreLocal({ name: 'clientType' }),\r\n ...editorOptionsSelect,\r\n onValueChanged: e => setcliente({ ...cliente, typeId: e.value, })\r\n }} >\r\n <Label text=\"Tipo\" />\r\n { cliente.isCompany && <RequiredRule message=\"Este campo es requerido\" />}\r\n </SimpleItem> \r\n <SimpleItem dataField=\"identification\">\r\n <Label text={cliente.isCompany ? 'RUC':'Identificación'} />\r\n <StringLengthRule max={50} message=\"Maximo 50 caracteres\" />\r\n </SimpleItem>\r\n <SimpleItem dataField=\"birthdate\" editorType='dxDateBox' editorOptions={{\r\n disabled: cliente.isCompany,\r\n openOnFieldClick:true\r\n }}>\r\n <Label text=\"Fecha de Nac\" />\r\n </SimpleItem> \r\n <SimpleItem dataField=\"name\" colSpan={1}>\r\n <Label text={ cliente.isCompany ? 'Comercio':'Nombre' } />\r\n <RequiredRule message=\"Este campo es requerido\" />\r\n <StringLengthRule max={100} message=\"Maximo 100 caracteres\" />\r\n </SimpleItem>\r\n <SimpleItem dataField=\"lastName\" >\r\n <Label text={ cliente.isCompany ? 'Contacto':'Apellidos'} />\r\n { cliente.isCompany == false && <RequiredRule message=\"Este campo es requerido\" />}\r\n <StringLengthRule max={100} message=\"Maximo 100 caracteres\" />\r\n </SimpleItem>\r\n <SimpleItem dataField=\"sexId\" editorType=\"dxSelectBox\"\r\n editorOptions={{\r\n disabled: cliente.isCompany,\r\n dataSource: createStoreLocal({ name: 'sex' }),\r\n ...editorOptionsSelect,\r\n }} >\r\n <Label text=\"Sexo\" />\r\n </SimpleItem> \r\n <SimpleItem dataField=\"email\">\r\n <Label text=\"Correo\" />\r\n <StringLengthRule max={50} message=\"Maximo 50 caracteres\" />\r\n </SimpleItem> \r\n <SimpleItem dataField=\"phoneNumber\" editorOptions={{...editorOptsTextBoxPhone}}>\r\n <Label text=\"Teléfono\" />\r\n <StringLengthRule max={50} message=\"Maximo 50 caracteres\" />\r\n </SimpleItem> \r\n <SimpleItem dataField=\"cellNumber\" editorOptions={editorOptsTextBoxPhone}>\r\n <Label text=\"Célular\" />\r\n <StringLengthRule max={50} message=\"Maximo 50 caracteres\" />\r\n </SimpleItem>\r\n <SimpleItem dataField=\"departmentId\" editorType=\"dxSelectBox\"\r\n editorOptions={{ \r\n dataSource: createStoreLocal({ name: 'department' }),\r\n onValueChanged: e => setcliente({ ...cliente, departmentId: e.value, }),\r\n ...editorOptionsSelect,\r\n }} >\r\n <Label text=\"Departamento\" />\r\n </SimpleItem> \r\n <SimpleItem dataField=\"cityId\" editorType=\"dxSelectBox\"\r\n editorOptions={{ \r\n dataSource: cities.filter(c => c.departmentId == cliente.departmentId),\r\n ...editorOptionsSelect,\r\n }} >\r\n <Label text=\"Ciudad\" />\r\n </SimpleItem> \r\n \r\n \r\n\r\n <SimpleItem dataField=\"creditLimit\" editorType=\"dxNumberBox\" editorOptions={{...editorOptionsNumberBox, min:0, readOnly: !canConfigureCredit}}>\r\n <Label text=\"Monto Crédito\" />\r\n </SimpleItem>\r\n <SimpleItem dataField=\"creditDays\" editorType=\"dxNumberBox\" editorOptions={{...editorOptionsNumberBox, min:0, readOnly: !canConfigureCredit}}>\r\n <Label text=\"Dias Crédito\" />\r\n </SimpleItem>\r\n\r\n <SimpleItem dataField=\"address\" colSpan={2}>\r\n <Label text=\"Dirección\" />\r\n <StringLengthRule max={250} message=\"Maximo 250 caracteres\" />\r\n </SimpleItem>\r\n <SimpleItem dataField=\"observation\" colSpan={2}>\r\n <Label text=\"Observación\" />\r\n <StringLengthRule max={250} message=\"Maximo 250 caracteres\" />\r\n </SimpleItem>\r\n <SimpleItem dataField=\"blackList\" editorType='dxSwitch' editorOptions={{...editorOptionsSwitch, onValueChanged: updateCliente('blackList')}}>\r\n <Label text=\"Lista Negra\" /> \r\n </SimpleItem> \r\n \r\n </Form>\r\n <br />\r\n <Button\r\n width={180}\r\n text={saving.text} \r\n disabled={saving.loading}\r\n type=\"default\"\r\n icon='save'\r\n onClick={guardarCliente}\r\n />\r\n <br />\r\n </Popup>\r\n </div>\r\n );\r\n}\r\n\r\nexport default Nuevo;\r\n","import Clients from './Clients';\r\nexport default Clients;","import React, { useEffect, useRef, useState } from \"react\";\r\nimport {\r\n Paging,\r\n Pager,\r\n FilterRow,\r\n ColumnChooser,\r\n Column,\r\n Lookup,\r\n Export, \r\n Button as ButtonGrid, \r\n Editing,\r\n Popup, \r\n Form, \r\n RequiredRule,\r\n StringLengthRule, \r\n}\r\n from 'devextreme-react/data-grid';\r\n \r\nimport { EmailRule, EmptyItem, Item } from 'devextreme-react/form';\r\nimport { DataGrid } from 'devextreme-react';\r\nimport BlockHeader from '../../components/shared/BlockHeader';\r\nimport Title from \"../../components/shared/Title\";\r\nimport { store } from \"../../services/store\";\r\nimport { formatDate, resources, } from '../../data/app';\r\nimport { createStore, createStoreLocal } from \"../../utils/proxy\";\r\nimport uri from \"../../utils/uri\";\r\nimport useAuthorization from \"../../hooks/useAuthorization\";\r\nimport { cellRender } from \"../../utils/common\";\r\nimport http from \"../../utils/http\";\r\nimport { clientDialogAction } from \"../../store/client/clientDialogReducer\";\r\nimport { useDispatch } from \"react-redux\";\r\nimport Nuevo from \"./Nuevo\";\r\n\r\nconst Clients = props => {\r\n\r\n const [cities, setCities] = useState([]);\r\n\r\n const [ authorized ] = useAuthorization( resources.verClientes );\r\n\r\n let dataGrid = useRef();\r\n const title = \"Clientes\"; \r\n\r\n const onToolbarPreparing = e => {\r\n\r\n e.toolbarOptions.items.unshift({\r\n location: 'after',\r\n widget: 'dxButton',\r\n options: {\r\n stylingMode:\"outlined\",\r\n type:'default',\r\n icon: 'add',\r\n text: 'Agregar cliente',\r\n onClick: e => showDialog(0)// dispatch(openDialog({open : true, id : 0}))\r\n }\r\n });\r\n }\r\n\r\n const onRowDblClick = (e) => {\r\n // history.push('/clinica/cliente/'+e.data.id);\r\n }\r\n\r\n const onSave = (params) => {\r\n dataGrid.current.instance.refresh();\r\n } \r\n\r\n const dispatch = useDispatch();\r\n\r\n const showDialog = (id) => dispatch(clientDialogAction({ open: true, id }))\r\n\r\n const getFilteredCities = (options) => {\r\n return {\r\n store: cities,\r\n filter: options.data ? ['departmentId', '=', options.data.departmentId] : null\r\n };\r\n }\r\n\r\n const setStateValue = (rowData, value) => {\r\n\r\n rowData['departmentId'] = value || 0;\r\n rowData.cityId = null;\r\n \r\n }\r\n\r\n useEffect(() => {\r\n http('catalogos/City').asGet().then(resp => setCities(resp))\r\n }, [0]);\r\n\r\n const onInitNewRow = (e) => {\r\n e.data.creditLimit = 0;\r\n }\r\n\r\n\r\n\r\n return authorized(\r\n <div className=\"container\">\r\n <Title title={title} />\r\n <BlockHeader showFavorite={true} title={title} {...props} />\r\n <Nuevo onSave={onSave} /> \r\n <DataGrid\r\n ref={dataGrid}\r\n dataSource={store({uri : uri.clients, remoteOperations: true })}\r\n selection={{ mode: 'single' }}\r\n showBorders={true}\r\n showRowLines={true}\r\n allowColumnResizing={true}\r\n allowColumnReordering={true}\r\n hoverStateEnabled={true}\r\n columnAutoWidth={true}\r\n rowAlternationEnabled={true}\r\n onToolbarPreparing={onToolbarPreparing}\r\n onRowDblClick={onRowDblClick}\r\n onInitNewRow={onInitNewRow}\r\n remoteOperations={{\r\n paging: true,\r\n filtering: true\r\n }} \r\n >\r\n <Pager allowedPageSizes={[10, 15, 30, 50]} showPageSizeSelector={true} showInfo={true} />\r\n <Paging defaultPageSize={10} />\r\n <FilterRow visible={true} />\r\n <ColumnChooser enabled={true} />\r\n <Export enabled={true} fileName={title} allowExportSelectedData={true} /> \r\n <Column dataField=\"identification\" caption=\"Identificacion\" width={130} visible={false}/>\r\n <Column dataField=\"typeId\" caption=\"Tipo\" width={120}>\r\n <Lookup disabled={true} dataSource={createStoreLocal({name : 'clientType'} )} valueExpr=\"id\" displayExpr=\"name\" />\r\n </Column>\r\n <Column dataField=\"name\" caption=\"Nombre\" minWidth={180} />\r\n <Column dataField=\"lastName\" caption=\"Apellidos/Contacto\" minWidth={140}/>\r\n <Column dataField=\"birthdate\" caption=\"Fecha de Nac\" width={120} visible={false} dataType=\"date\" format={formatDate} />\r\n <Column dataField=\"sexId\" caption=\"Sexo\" visible={false}>\r\n <Lookup dataSource={createStoreLocal({name : 'sex'} )} valueExpr=\"id\" displayExpr=\"name\" />\r\n </Column>\r\n <Column dataField=\"address\" caption=\"Direción\" visible={false} allowFiltering={false} />\r\n <Column dataField=\"phoneNumber\" caption=\"Telefono\" allowFiltering={false} />\r\n <Column dataField=\"phoneNumberWork\" caption=\"Telefono Trab\" allowFiltering={false} visible={false}/>\r\n <Column dataField=\"cellNumber\" caption=\"Celular\" allowFiltering={false} visible={false}/>\r\n <Column dataField=\"email\" caption=\"Correo\" allowFiltering={false} visible={false} /> \r\n <Column dataField=\"departmentId\" caption=\"Departamento\" width={150} setCellValue={setStateValue} visible={false}>\r\n <Lookup disabled={true} dataSource={createStore({name : 'department'} )} valueExpr=\"id\" displayExpr=\"name\" />\r\n </Column> \r\n <Column dataField=\"cityId\" caption=\"Ciudad\" width={150} visible={false}>\r\n <Lookup disabled={true} dataSource={getFilteredCities} valueExpr=\"id\" displayExpr=\"name\" />\r\n </Column> \r\n <Column dataField=\"creditLimit\" caption=\"Monto Credito\" cellRender={cellRender()} /> \r\n <Column dataField=\"creditDays\" caption=\"Dias Credito\" /> \r\n <Column dataField=\"isCompany\" caption=\"Empresa\" visible={false}/> \r\n <Column dataField=\"blackList\" caption=\"Lsita Negra\" /> \r\n \r\n <Column type=\"buttons\" width={90}>\r\n <ButtonGrid name=\"edit\" icon=\"edit\" onClick={e => showDialog(e.row.data.id)}/>\r\n <ButtonGrid name=\"delete\" />\r\n </Column> \r\n <Editing\r\n mode=\"popup\"\r\n allowUpdating={true}\r\n allowDeleting={true}\r\n useIcons={true}\r\n >\r\n <Popup title={title} showTitle={true} width={800} height={580}>\r\n\r\n </Popup> \r\n </Editing>\r\n </DataGrid>\r\n </div>\r\n )\r\n\r\n\r\n}\r\n\r\n\r\nexport default Clients;\r\n","import { dialogDefault, OPEN_DIALOG_RECIBO, CLOSE_DIALOG_RECIBO } from \"../consts\";\r\n\r\nconst mydialog = {...dialogDefault}\r\n\r\nexport const openDialogRecibo = id => ({\r\n type: OPEN_DIALOG_RECIBO,\r\n payload: { open : true, id : id }\r\n});\r\n\r\nexport const closeDialogRecibo = () => ({\r\n type: CLOSE_DIALOG_RECIBO,\r\n payload: {...dialogDefault}\r\n});\r\n\r\nexport default function dialogReciboReducer(state = mydialog, { type, payload }) {\r\n const actions = {\r\n [OPEN_DIALOG_RECIBO] : () => ({...state, ...payload }),\r\n [CLOSE_DIALOG_RECIBO] : () => ({...state, ...payload })\r\n }\r\n\r\n return actions[type]?.call() || state;\r\n}","export const onCellPreparedReceipt = e => { \r\n\r\n const cells = ['payoff']\r\n\r\n if (e.rowType == 'data' && e.column.allowEditing) {\r\n if (cells.includes(e.column.dataField))\r\n if (e.row.data.payoff)\r\n e.cellElement.classList.add('pagada');\r\n else\r\n e.cellElement.classList.add('pendiente');\r\n\r\n if (e.column.dataField == 'id' && e.element.id == 'grid')\r\n e.cellElement.classList.add('col-id-factura');\r\n if (e.column.dataField == 'id' && e.element.id == 'gridReceipt')\r\n e.cellElement.classList.add('col-id-receipt');\r\n\r\n if (e.column.dataField == 'billId')\r\n e.cellElement.classList.add('col-id-factura');\r\n \r\n\r\n if (e.column.dataField == 'total')\r\n e.cellElement.classList.add('col-id-total');\r\n if (e.column.dataField == 'amount')\r\n e.cellElement.classList.add('col-id-pagado');\r\n if (e.column.dataField == 'balance')\r\n e.cellElement.classList.add('col-id-pendiente');\r\n }\r\n\r\n}\r\n\r\n","\r\nimport React, { useRef } from 'react';\r\nimport { DataGrid } from 'devextreme-react';\r\nimport { store } from '../../services/store';\r\nimport uri from '../../utils/uri';\r\nimport { createStore } from '../../utils/proxy';\r\nimport { Column, Editing, Lookup, Pager, Paging } from 'devextreme-react/data-grid';\r\nimport { cellRender, dataFormatId, formatId } from '../../utils/common';\r\nimport { formatDate } from '../../data/app';\r\nimport { onCellPreparedReceipt } from './CellPrepared';\r\nimport BlockHeader from '../shared/BlockHeader';\r\nimport urlReport from '../../services/reportServices';\r\n\r\nconst DetailTemplate = props => {\r\n \r\n const { onSave } = props;\r\n\r\n const { id } = props.data?.data;\r\n const title = \"Recibos generados\";\r\n\r\n const refGrid = useRef();\r\n\r\n const addMenuItems =(e) => {\r\n \r\n if (e.target == \"content\") {\r\n \r\n // e.items can be undefined\r\n if (!e.items) e.items = [];\r\n \r\n // Add a custom menu item\r\n if(e.rowIndex >= 0)\r\n e.items.push({\r\n\r\n text: `Re-imprimir recibo`,\r\n icon : 'print',\r\n onItemClick: () => {\r\n const report = urlReport();\r\n report.print(`${report.recibo(e.row.data.id)}`);\r\n }\r\n \r\n },{\r\n\r\n text: `Anular recibo`,\r\n icon : 'remove',\r\n onItemClick: () => refGrid.current.instance.deleteRow(e.rowIndex), \r\n color : 'red'\r\n });\r\n \r\n }\r\n }\r\n\r\n const onRowRemoved = (e) => {\r\n onSave();\r\n }\r\n\r\n return (<>\r\n <BlockHeader title={title} />\r\n \r\n <DataGrid\r\n ref={refGrid}\r\n id=\"gridReceipt\"\r\n selection={{ mode: 'single' }}\r\n dataSource={store({ uri: { get : uri.receivables.byBill(id), remove : uri.receivables.remove } })}\r\n showBorders={true}\r\n showRowLines={true}\r\n allowColumnResizing={true}\r\n allowColumnReordering={true}\r\n rowAlternationEnabled={true}\r\n onContextMenuPreparing={addMenuItems}\r\n onRowRemoved={onRowRemoved}\r\n // onRowPrepared={onRowPrepared}\r\n // onToolbarPreparing={onToolbarPreparing}\r\n onCellPrepared={onCellPreparedReceipt} \r\n >\r\n <Paging defaultPageSize={20} />\r\n <Pager\r\n showInfo={true}\r\n showPageSizeSelector={true}\r\n allowedPageSizes={[10, 20, 50]}\r\n />\r\n <Column dataField=\"id\" caption=\"Recibo #\" width={90} cellRender={dataFormatId} />\r\n <Column dataField=\"createAt\" caption=\"Fecha\" dataType='date' format={formatDate} width={120} />\r\n <Column dataField=\"amount\" caption=\"Pagado\" width={100} cellRender={cellRender()} />\r\n <Column dataField=\"balance\" caption=\"Pendiente\" width={100} cellRender={cellRender()} />\r\n <Column dataField=\"createBy\" caption='Creado por' width={100} />\r\n \r\n <Editing\r\n mode=\"popup\"\r\n allowDeleting={true}\r\n useIcons={true}\r\n ></Editing>\r\n </DataGrid>\r\n </>);\r\n};\r\n\r\n\r\n\r\n\r\nfunction getProviders(data, providers) {\r\n\r\n if (data.itemProviders != null) {\r\n return providers.filter(x => data.itemProviders.some(p => p.providerId == x.id));\r\n }\r\n return [];\r\n}\r\n\r\nexport default DetailTemplate;\r\n","import React, { useEffect, useRef, useState } from 'react';\r\nimport { DataGrid } from 'devextreme-react';\r\nimport {\r\n Paging,\r\n Pager,\r\n FilterRow,\r\n HeaderFilter,\r\n ColumnChooser,\r\n Column,\r\n Lookup,\r\n Editing,\r\n Button as ButtonGrid,\r\n MasterDetail,\r\n Summary,\r\n TotalItem\r\n} from 'devextreme-react/data-grid';\r\nimport { createStoreLocal } from '../../utils/proxy';\r\nimport Title from '../shared/Title';\r\nimport BlockHeader from '../shared/BlockHeader';\r\nimport { store } from '../../services/store';\r\n\r\nimport CustomButton from '../buttons/CustomButton';\r\nimport { _path } from \"../../data/headerNavigation\";\r\nimport { dataAccess, formatDate, formatDateTime, resources } from '../../data/app';\r\nimport toCapital, { cellAsPayoff, cellRender, dataFormatId, formatId, formatToMoney } from '../../utils/common';\r\nimport urlReport from '../../services/reportServices';\r\nimport useAuthorization from '../../hooks/useAuthorization';\r\n//import { openDialog } from '../../store/customDialog/customDialogReducer';\r\nimport { useDispatch } from 'react-redux';\r\nimport http from '../../utils/http';\r\nimport Nuevo from './Nuevo';\r\nimport notify from 'devextreme/ui/notify';\r\nimport { confirm } from 'devextreme/ui/dialog';\r\nimport DetailTemplate from './DetailTemplate';\r\nimport { onCellPreparedReceipt } from './CellPrepared';\r\n\r\nconst BillCxC = props => {\r\n\r\n const { clientId = 0 } = props;\r\n const [balance, setBalance] = useState(0);\r\n const [ authorized ] = useAuthorization( resources.cuentasPorCobrar );\r\n const [ dataDialog, setDataDialog ] = useState({ id: 0, billId: 0, open: false, client : '', balance : ''});\r\n\r\n const refGrid = useRef();\r\n\r\n const addMenuItems = (e) => {\r\n\r\n if (e.target == \"content\") {\r\n\r\n if (!e.items) e.items = [];\r\n\r\n if (e.rowIndex >= 0) {\r\n\r\n e.items.push({\r\n\r\n text: `Crear recibo de caja`,\r\n icon: 'doc',\r\n onItemClick: () => { \r\n openDialog(e);\r\n }\r\n\r\n },{\r\n\r\n text: `Ver factura`,\r\n icon: 'doc',\r\n onItemClick: () => { \r\n //openDialog(e);\r\n }\r\n\r\n });\r\n }\r\n\r\n }\r\n }\r\n\r\n const openDialog = e => {\r\n setDataDialog({ id: 0, billId: e.row.data.id, open: true, client : e.row.data.nombre, balance : e.row.data.balance});\r\n }\r\n\r\n const calculareBalance = (params) => {\r\n http(`bills/${clientId}/cxc/get`).asGet().then(resp => { \r\n setBalance(resp.reduce((accumulator, currentValue) => accumulator + currentValue.balance,0))\r\n });\r\n }\r\n\r\n const onSave = e =>{\r\n refGrid.current.instance.refresh();\r\n calculareBalance();\r\n }\r\n\r\n const close = e =>{\r\n setDataDialog({ id: 0, billId: 0, open: false, client : '', balance : ''});\r\n }\r\n\r\n useEffect(() => {\r\n calculareBalance();\r\n }, [clientId]);\r\n\r\n const title = 'Facturas de credito pendientes';\r\n\r\n return authorized(\r\n <div >\r\n <BlockHeader title={title}>\r\n <p style={{fontSize : 28}}>Deuda total : {formatToMoney(balance)}</p>\r\n </BlockHeader>\r\n\r\n <Nuevo data={dataDialog} close={close} onSave={onSave}/>\r\n\r\n <DataGrid id=\"grid\"\r\n ref={refGrid}\r\n selection={{ mode: 'single' }}\r\n dataSource={store({ uri: { get: `bills/${clientId}/cxc/get` }, })}\r\n showBorders={true}\r\n showRowLines={true}\r\n allowColumnResizing={true}\r\n allowColumnReordering={true}\r\n rowAlternationEnabled={true}\r\n onCellPrepared={onCellPreparedReceipt}\r\n onContextMenuPreparing={addMenuItems}\r\n >\r\n <Paging defaultPageSize={20} />\r\n <Pager\r\n showInfo={true}\r\n showPageSizeSelector={true}\r\n allowedPageSizes={[10, 20, 50]}\r\n />\r\n <FilterRow visible={true} />\r\n <HeaderFilter visible={true} />\r\n <Column type=\"buttons\" width={80}>\r\n <ButtonGrid name=\"modificar\" text=\"Pagar\" onClick={openDialog}/>\r\n </Column>\r\n <Column dataField=\"id\" caption=\"Factura #\" width={100} cellRender={dataFormatId} />\r\n <Column dataField=\"date\" caption=\"Fecha\" dataType='date' format={formatDate} width={100} /> \r\n <Column dataField=\"paymentTypeId\" caption=\"Tipo pago\">\r\n <Lookup disabled={true} dataSource={createStoreLocal({ name: 'billPaymentType' })} valueExpr=\"id\" displayExpr=\"name\" />\r\n </Column>\r\n <Column dataField=\"total\" width={120} cellRender={cellRender()} />\r\n <Column dataField=\"amount\" caption=\"Pagado\" width={120} cellRender={cellRender()} />\r\n <Column dataField=\"balance\" caption=\"Pendiente\" width={120} cellRender={cellRender()} />\r\n <Column dataField=\"retention\" caption=\"Retención\" width={120} cellRender={cellRender()} />\r\n <Column dataField=\"daysInDebt\" caption=\"En mora\" width={80}/>\r\n <Column dataField=\"payoff\" width={120} caption='Estado' dataType=\"boolean\" cellRender={cellAsPayoff} />\r\n <Column dataField=\"asignedTo\" caption='Vendedor' width={100} visible={false} />\r\n <Column dataField=\"createAt\" caption='Creado el' dataType='date' format={formatDateTime} width={180} visible={false} />\r\n <Summary> \r\n <TotalItem\r\n column=\"balance\"\r\n summaryType=\"sum\" customizeText={data => `Total: ${formatToMoney(data.value)}`} />\r\n </Summary>\r\n <MasterDetail\r\n enabled={true}\r\n component={props => <DetailTemplate onSave={onSave} {...props}/>}\r\n />\r\n </DataGrid>\r\n </div>\r\n );\r\n}\r\n\r\nexport default BillCxC;\r\n","import React, { useEffect, useState } from 'react';\r\nimport { Box, DataGrid, DateBox, DropDownBox, SelectBox } from \"devextreme-react\";\r\nimport { dataSourceSelect } from '../../services/store';\r\nimport uri from '../../utils/uri';\r\nimport Bills from '../../views/bills/Bills';\r\nimport BillCxC from './BillCxC';\r\n\r\nconst BillByClient = props => {\r\n \r\n const { open } = props;\r\n\r\n const [clientId, setClientId] = useState(0);\r\n\r\n const onValueChanged = e => setClientId(e.value); \r\n\r\n useEffect(() => {\r\n setClientId(0); \r\n }, [open]);\r\n\r\n return (\r\n <div>\r\n <div className=\"ml-10\">\r\n <label>Seleccione el cliente:</label>\r\n <SelectBox \r\n value={clientId}\r\n searchEnabled={true}\r\n placeholder=\"Selecciona un cliente\"\r\n showClearButton={true} valueExpr=\"id\" displayExpr=\"fullName\" \r\n onValueChanged={onValueChanged} \r\n dataSource={dataSourceSelect(uri.clients.asCatalog, uri.clients.getById(clientId))}\r\n />\r\n <BillCxC clientId={clientId}/>\r\n </div>\r\n </div>\r\n );\r\n}\r\n\r\nexport default BillByClient;\r\n","import React, { useEffect, useState, useRef } from 'react';\r\nimport { Popup } from 'devextreme-react/popup';\r\nimport Form, { SimpleItem, GroupItem, Label, RequiredRule, StringLengthRule, EmptyItem} from 'devextreme-react/form';\r\nimport { useDispatch, useSelector } from 'react-redux'\r\nimport { closeDialogRecibo } from '../../store/dialogRecibo/dialogReciboReducer';\r\nimport DataSource from \"devextreme/data/data_source\";\r\nimport { createStore, createStoreLocal } from '../../utils/proxy';\r\nimport { dataAccess, editorOptionsSelect, editorOptsDateBox, formatDate, resources } from '../../data/app';\r\nimport { DataGrid, Button } from 'devextreme-react';\r\nimport { Column, Editing, Lookup, RequiredRule as RuleRequired, Button as ButtonGrid } from 'devextreme-react/data-grid';\r\nimport uri from '../../utils/uri';\r\nimport toCapital, { cellRender } from '../../utils/common';\r\nimport http from '../../utils/http';\r\nimport notify from 'devextreme/ui/notify';\r\nimport { billDefault, receiptDefault } from '../../data/defaultObjects';\r\nimport BillByClient from '../../components/bill/BillByClient';\r\nimport useAuthorization from '../../hooks/useAuthorization';\r\n\r\nconst Nuevo = (props) => {\r\n\r\n const [ authorized, can ] = useAuthorization( resources.crearRecibo );\r\n\r\n const { data, onSave, close } = props;\r\n const { id, billId, open, client, balance} = data;\r\n \r\n const [ saving, setSaving ] = useState(false);\r\n const [ receipt, setReceipt ] = useState({...receiptDefault});\r\n\r\n const refForm = useRef();\r\n\r\n const closeDialog = ( load ) => { \r\n\r\n close();\r\n if (load) {\r\n onSave(); \r\n } \r\n }\r\n\r\n const onHiding = ({ load }) => { \r\n closeDialog(load); \r\n } \r\n\r\n useEffect(() => { \r\n\r\n if (can) {\r\n\r\n setReceipt({...receipt, id, billId, client, balance, amount : 0, observation : '', applyPayment : false,paymentMethodId:null, billPaymentMethodId : null, bankId : null, reference : '', referencePhysical : ''});\r\n refForm.current.instance.resetValues();\r\n if(id > 0)\r\n http(uri.receivables.getById(id)).asGet().then(resp => {\r\n\r\n setReceipt({...resp});\r\n closeDialog(true);\r\n\r\n });\r\n }\r\n\r\n }, [id, billId]);\r\n\r\n const guardarRecibo = (e) => {\r\n\r\n let result = refForm.current.instance.validate();\r\n\r\n if (result.isValid) {\r\n\r\n setSaving(true); \r\n\r\n http(uri.receivables.insert).asPost(receipt).then(resp => {\r\n setSaving(false);\r\n notify(`Recibo ${resp.id} registrado correctamente`);\r\n closeDialog(true);\r\n }).catch(err => {\r\n setSaving(false);\r\n notify(err, 'error', 5000);\r\n });\r\n\r\n }\r\n\r\n }\r\n\r\n const onValueChanged = (e) => {\r\n setReceipt({...receipt, amount : e.value ? balance : 0 }); \r\n }\r\n\r\n return (\r\n <div>\r\n <Popup\r\n width={650}\r\n height={480}\r\n title={id > 0 ? `Ver recibo` : `Nuevo recibo`}\r\n onHiding={onHiding}\r\n visible={open} \r\n className=\"bg-fbfbfb\" \r\n >\r\n {authorized(<><Form formData={receipt} ref={refForm}>\r\n <GroupItem colCount={4}>\r\n <SimpleItem dataField=\"billId\" colSpan={2} \r\n editorOptions={{\r\n disabled : true\r\n }} >\r\n <Label text=\"Factura#\" />\r\n </SimpleItem>\r\n <EmptyItem colSpan={2} />\r\n <SimpleItem dataField=\"client\" colSpan={4} \r\n editorOptions={{\r\n disabled : true\r\n }} >\r\n <Label text=\"Cliente\" />\r\n </SimpleItem>\r\n \r\n <SimpleItem dataField=\"referencePhysical\" colSpan={2} editorType=\"dxTextBox\"\r\n editorOptions={{ showClearButton: true }} >\r\n <Label text=\"# Recibo\" />\r\n <RequiredRule message=\"Seleccione el tipo\" />\r\n </SimpleItem>\r\n <SimpleItem dataField=\"createAt\" colSpan={2} editorType=\"dxDateBox\" editorOptions={{ ...editorOptsDateBox }}>\r\n <Label text=\"Fecha\" />\r\n </SimpleItem>\r\n <SimpleItem dataField=\"balance\" colSpan={2} editorType=\"dxNumberBox\"\r\n editorOptions={{\r\n readOnly : true,\r\n format: \"#,##0.00\"\r\n }} >\r\n <Label text=\"Pendiente\" />\r\n </SimpleItem>\r\n <SimpleItem dataField=\"amount\" colSpan={2} editorType=\"dxNumberBox\" editorOptions={{\r\n readOnly : receipt.applyPayment,\r\n format: \"#,##0.00\"\r\n }}>\r\n <Label text=\"Monto pagado\" />\r\n <RequiredRule message=\"El monto es requerido\" />\r\n </SimpleItem>\r\n <SimpleItem dataField=\"applyPayment\" colSpan={4} editorType=\"dxCheckBox\" editorOptions={{ onValueChanged: onValueChanged }}>\r\n <Label text=\"Aplicar pago completo\" />\r\n </SimpleItem>\r\n <SimpleItem dataField=\"retention\" colSpan={2} editorType=\"dxNumberBox\" editorOptions={{\r\n readOnly : receipt.retention,\r\n format: \"#,##0.00\"\r\n }}>\r\n <Label text=\"Retención\" />\r\n </SimpleItem>\r\n <SimpleItem dataField=\"paymentMethodId\" colSpan={2} editorType=\"dxSelectBox\"\r\n editorOptions={{ \r\n dataSource: createStoreLocal({ name: 'billPaymentMethod' }),\r\n ...editorOptionsSelect,\r\n //onValueChanged: e => setBill(_bill =>({ ..._bill, billPaymentTypeId: e.value, }))\r\n }} >\r\n <Label text=\"Forma pago\" />\r\n </SimpleItem>\r\n <SimpleItem dataField=\"bankId\" colSpan={2} editorType=\"dxSelectBox\"\r\n editorOptions={{ \r\n dataSource: createStoreLocal({ name: 'bank' }),\r\n ...editorOptionsSelect,\r\n //onValueChanged: e => setBill(_bill =>({ ..._bill, bankId: e.value, }))\r\n }} >\r\n <Label text=\"Banco\" />\r\n </SimpleItem>\r\n <SimpleItem dataField=\"reference\" colSpan={2} editorType=\"dxTextBox\"\r\n editorOptions={{ showClearButton: true }} >\r\n <Label text=\"Referencia\" />\r\n </SimpleItem>\r\n \r\n \r\n <SimpleItem dataField=\"observation\" colSpan={4} editorType=\"dxTextArea\">\r\n <Label text=\"Observacion\" />\r\n <RequiredRule message=\"Ingrese una observacion\" />\r\n <StringLengthRule max={150} message=\"Maximo 150 caracteres\" />\r\n </SimpleItem>\r\n </GroupItem> \r\n </Form> \r\n <br/> \r\n <Button\r\n className=\"mt-10\"\r\n text={saving ? 'Guardando...' : `Guardar recibo`}\r\n type=\"success\"\r\n icon='save'\r\n disabled={saving}\r\n onClick={guardarRecibo}\r\n /></>)} \r\n </Popup>\r\n </div>\r\n );\r\n}\r\n\r\nexport default Nuevo;\r\n","import React, { useRef } from 'react';\r\nimport { DataGrid } from 'devextreme-react';\r\nimport { Column, ColumnChooser, Editing, Lookup, Pager, Paging, Summary, TotalItem } from 'devextreme-react/data-grid';\r\nimport BlockHeader from '../../components/shared/BlockHeader';\r\nimport { onCellPreparedReceipt } from '../../components/bill/CellPrepared';\r\nimport { cellRender, dataFormatId, formatId, formatIdValue, formatToMoney } from '../../utils/common';\r\nimport { store } from '../../services/store';\r\nimport uri from '../../utils/uri';\r\nimport { formatDate, formatDateTime } from '../../data/app';\r\nimport urlReport from '../../services/reportServices';\r\n\r\nconst ReceiptByBillId = (props) => {\r\n\r\n const { onSave } = props;\r\n const refGrid = useRef();\r\n\r\n const onRowRemoved = (e) => {\r\n onSave();\r\n }\r\n\r\n const addMenuItems =(e) => {\r\n \r\n if (e.target == \"content\") {\r\n \r\n // e.items can be undefined\r\n if (!e.items) e.items = [];\r\n \r\n // Add a custom menu item\r\n if(e.rowIndex >= 0)\r\n e.items.push({\r\n\r\n text: `Imprimir recibo`,\r\n icon : 'print',\r\n onItemClick: () => {\r\n const report = urlReport();\r\n report.print(`${report.receiptTicket(e.row.data.id)}`);\r\n }\r\n \r\n });\r\n \r\n }\r\n }\r\n\r\n const { id, reference, cliente } = props;\r\n const titleCliente = `Cliente: ${cliente}`;\r\n \r\n return (<>\r\n <BlockHeader title={titleCliente} />\r\n <DataGrid\r\n id=\"gridReceipt\"\r\n ref={refGrid}\r\n selection={{ mode: 'single' }}\r\n dataSource={store({ uri: { get : uri.receivables.byBill(id), remove : uri.receivables.remove } })}\r\n showBorders={true}\r\n showRowLines={true}\r\n allowColumnResizing={true}\r\n allowColumnReordering={true}\r\n rowAlternationEnabled={true} \r\n onCellPrepared={onCellPreparedReceipt} \r\n onRowRemoved={onRowRemoved} \r\n //onContextMenuPreparing={addMenuItems} \r\n >\r\n <Paging defaultPageSize={20} />\r\n <Pager\r\n showInfo={true}\r\n showPageSizeSelector={true}\r\n allowedPageSizes={[10, 20, 50]}\r\n />\r\n <ColumnChooser enabled={true} />\r\n <Column dataField=\"id\" caption=\"Id\" width={100} cellRender={dataFormatId} />\r\n <Column dataField=\"referencePhysical\" caption=\"Recibo #\" width={90} cellRender={dataFormatId} />\r\n <Column dataField=\"amount\" caption=\"Pagado\" width={110} cellRender={cellRender()} />\r\n <Column dataField=\"balance\" caption=\"Pendiente\" width={100} cellRender={cellRender()} />\r\n <Column dataField=\"retention\" caption=\"Retención\" width={100} cellRender={cellRender()} />\r\n <Column dataField=\"paymentMethod\" caption=\"Forma Pago\" width={100} />\r\n <Column dataField=\"banckId\" caption=\"Banco\" visible={false} />\r\n <Column dataField=\"reference\" caption=\"Referencia\" visible={false} />\r\n\r\n <Column dataField=\"observation\" caption=\"Observacion\" />\r\n <Column dataField=\"createBy\" caption='Creado por' width={100} />\r\n <Column dataField=\"createAt\" caption=\"Creado el\" dataType='date' format={formatDateTime} width={140} />\r\n <Summary> \r\n <TotalItem\r\n column=\"amount\"\r\n summaryType=\"sum\" \r\n customizeText={data => `${formatToMoney(data.value)}`} />\r\n </Summary> \r\n <Editing\r\n mode=\"popup\" \r\n allowDeleting={true}\r\n useIcons={true}\r\n ></Editing> \r\n </DataGrid>\r\n </>);\r\n \r\n}\r\n\r\nexport default ReceiptByBillId;\r\n","import { gridStateDefault, GRID_STATE } from \"../consts\";\r\n\r\nconst myState = { ...gridStateDefault }\r\n\r\nexport const setGridState = newState => {\r\n \r\n return{ \r\n type: GRID_STATE, \r\n payload : {...myState, ...newState} \r\n }\r\n\r\n} \r\n\r\n\r\nexport default function gridStateReducer(state = myState, { type, payload }) {\r\n \r\n const actions = {\r\n [GRID_STATE] : () => ({...payload })\r\n }\r\n\r\n return actions[type]?.call() || state;\r\n}","// react\r\nimport React from 'react';\r\nimport { useDispatch, useSelector } from 'react-redux'\r\nimport { Button } from 'devextreme-react/button';\r\nimport { addToolBarAction, removeToolBarAction } from '../../store/toolBar/toolBarOptsReducer';\r\n\r\nfunction BlockHeaderState({\r\n showFavorite = false, \r\n title, \r\n icon,\r\n onClickView,\r\n onClickPrint, \r\n onClickPayment, \r\n onClickViewReceipts, \r\n onClickCancel, \r\n onClickEnable, \r\n onRefresh,\r\n onClickAdd,\r\n\r\n visibleView = false,\r\n visiblePrint= false, \r\n visiblePayment= false, \r\n visibleViewReceipts= false, \r\n visibleCancel= false, \r\n visibleEnable= false, \r\n visibleRefresh= false,\r\n visibleAdd= false,\r\n\r\n children,...rest }) {\r\n\r\n const { gridState: { data,\r\n disabledView, \r\n disabledPrint, \r\n disabledPayment, \r\n disabledViewReceipts, \r\n disabledCancel,\r\n disabledEnable,\r\n \r\n }, toolBarOpts } = useSelector(store => store); \r\n\r\n const dispatch = useDispatch();\r\n\r\n const path = rest.location?.pathname;\r\n\r\n const existFavorite = toolBarOpts.find(x => x.name === title);\r\n\r\n const onClick = () => {\r\n \r\n if(existFavorite) \r\n dispatch(removeToolBarAction(title));\r\n else\r\n dispatch(addToolBarAction({ name: title, path})); \r\n\r\n }\r\n \r\n const showFavorites = path && showFavorite;\r\n\r\n const className = existFavorite ? 'd-hand dx-icon-favorites exist-favorite' : 'd-hand dx-icon-favorites';\r\n\r\n return (\r\n <div className=\"block-header\">\r\n {title && <h3 className=\"block-header__title\">{title} {icon && <span className={icon} style={{fontSize : 20}}></span>} {showFavorites && <span onClick={onClick} className={className} style={{fontSize : 20}}></span>}</h3>}\r\n <div className=\"block-header__divider\" /> \r\n {visibleView && <Button hint='Ver ' onClick={() => onClickView(data.id)} icon={'search'} stylingMode=\"contained\" className='ml-10' type={'normal'} disabled={disabledView}/> }\r\n {visiblePrint && <Button hint='Imprimir' onClick={() => onClickPrint(data.id)} icon={'print'} stylingMode=\"contained\" className='ml-10' type={'normal'} disabled={disabledPrint}/> }\r\n {visiblePayment && <Button hint='Aplicar recibo' onClick={() => onClickPayment(0, data.id, true, data.nombre, data.balance)} icon={'money'} stylingMode=\"contained\" className='ml-10' type={'normal'} disabled={disabledPayment}/> }\r\n {visibleViewReceipts && <Button hint='Ver recibos' onClick={() => onClickViewReceipts(true, data.id, data.nombre)} icon={'product'} stylingMode=\"contained\" className='ml-10' type={'normal'} disabled={disabledViewReceipts}/> }\r\n {visibleCancel && <Button hint='Anular' onClick={() => onClickCancel(data.id, data.nombre)} icon={'remove'} stylingMode=\"contained\" className='ml-10' type={'normal'} disabled={disabledCancel}/> }\r\n {visibleEnable && <Button hint='Habilitar' onClick={() => onClickEnable(data.id)} icon={'check'} stylingMode=\"contained\" className='ml-10' type={'normal'} disabled={disabledEnable}/> }\r\n {visibleRefresh && <Button hint='refrescar' onClick={onRefresh} icon={'refresh'} stylingMode=\"contained\" className='ml-10' type={'normal'} /> }\r\n {visibleAdd && <Button hint='Agregar' onClick={onClickAdd} icon={'plus'} stylingMode=\"contained\" className='ml-10' type={'normal'} /> }\r\n {children}\r\n </div>\r\n );\r\n}\r\n\r\nexport default BlockHeaderState;\r\n","import { DIALOG_BILL_DISABLED } from \"../consts\";\r\n\r\nconst mydialog = { open: false, id: 0, name: '' }\r\n\r\nexport const billDisabledDialogAction = ({ open = false, id = 0, name = '' }) => ({\r\n type: DIALOG_BILL_DISABLED,\r\n payload : { open, id, name }\r\n});\r\n\r\nexport default function billDisabledDialogReducer(state = mydialog, { type, payload }) {\r\n\r\n const actions = {\r\n [DIALOG_BILL_DISABLED] : () => ({...state, ...payload })\r\n }\r\n\r\n return actions[type]?.call() || state;\r\n}\r\n","import React, { useRef, useState } from 'react';\r\nimport { Popup } from 'devextreme-react/popup';\r\nimport Form, { SimpleItem, GroupItem, Label, RequiredRule, StringLengthRule } from 'devextreme-react/form';\r\nimport { useDispatch, useSelector } from 'react-redux'\r\nimport { confirm } from 'devextreme/ui/dialog';\r\nimport { Button } from 'devextreme-react';\r\nimport { useEffect } from 'react';\r\nimport http from '../../utils/http';\r\nimport uri from '../../utils/uri';\r\nimport { billDisabledDialogAction } from '../../store/bill/billDisabledDialogReducer';\r\nimport notify from 'devextreme/ui/notify';\r\n\r\nconst BillDisabled = (props) => {\r\n\r\n const dispatch = useDispatch();\r\n\r\n const { billDisabledDialog: { open, id, name }} = useSelector(store => store);\r\n const [saving, setSaving] = useState(false);\r\n const [formData, setFormData] = useState({ id, name, disabledSubject: '', disassociate: true});\r\n\r\n \r\n const refForm = useRef(null);\r\n\r\n const deleteBill = () => {\r\n\r\n let result = refForm.current.instance.validate();\r\n\r\n if (result.isValid) {\r\n\r\n let resultConfirm = confirm(\"<i>Esta seguro de anular la factura \" + id + \"?</i>\", \"Confirmar\");\r\n resultConfirm.then((dialogResult) => {\r\n if (dialogResult) {\r\n\r\n setSaving(true);\r\n http(`${uri.bills.base}/${id}/delete`).asPost(formData).then(resp => {\r\n\r\n setSaving(false);\r\n notify(`Factura anulada correctamente`);\r\n closeDialog(true);\r\n\r\n }).catch(err => {\r\n\r\n setSaving(false);\r\n notify(err, 'error', 5000);\r\n\r\n });\r\n \r\n }\r\n });\r\n }\r\n\r\n }\r\n\r\n const closeDialog = (load) => {\r\n\r\n refForm.current.instance.resetValues();\r\n\r\n dispatch(billDisabledDialogAction({ id: 0, clientId: 0, open: false }));\r\n if (load) {\r\n let { onSave } = props;\r\n onSave();\r\n }\r\n }\r\n\r\n const onHiding = ({ load }) => {\r\n closeDialog(load);\r\n }\r\n\r\n useEffect(() => {\r\n if (open) { \r\n setFormData({ id, name, disabledSubject: '' })\r\n }\r\n }, [open])\r\n\r\n return (\r\n <Popup title={`Anular factura ${id}`} width={400} height={320} onHiding={onHiding} visible={open} showCloseButton={true}>\r\n <div className=\"popup-content\"> \r\n <div className=\"popup-body\">\r\n <Form formData={formData} ref={refForm} labelLocation='top'>\r\n <GroupItem colCount={2}> \r\n <SimpleItem colSpan={2} dataField=\"name\" editorType=\"dxTextBox\" editorOptions={{ label: 'Cliente', readOnly: true }}>\r\n <Label text=\"Cliente\" />\r\n </SimpleItem>\r\n <SimpleItem colSpan={2} dataField=\"disabledSubject\" editorType=\"dxTextArea\">\r\n <RequiredRule message=\"El motivo de anulación es requerido\" />\r\n <StringLengthRule max={250} message=\"Máximo de caracteres permitidos 250\" />\r\n <Label text=\"Motivo\" />\r\n </SimpleItem>\r\n <SimpleItem colSpan={2} dataField=\"disassociate\" editorType=\"dxCheckBox\">\r\n <Label text=\"Desvincular preventa\" />\r\n </SimpleItem>\r\n </GroupItem>\r\n </Form>\r\n </div>\r\n <div className=\"popup-footer pt-10\">\r\n <Button text={saving ? 'Anulando...':'Anular factura'} type=\"danger\" icon=\"close\" onClick={deleteBill} disabled={saving}></Button>\r\n </div>\r\n </div>\r\n </Popup>\r\n );\r\n}\r\n\r\nexport default BillDisabled;\r\n","import Bills from './Bills';\r\nexport default Bills;","import React, { useRef, useState } from 'react';\r\nimport { DataGrid, Popup } from 'devextreme-react';\r\nimport {\r\n Paging,\r\n Pager,\r\n FilterRow,\r\n HeaderFilter,\r\n ColumnChooser,\r\n Column,\r\n Lookup,\r\n Editing,\r\n Button as ButtonGrid,\r\n Export\r\n} from 'devextreme-react/data-grid';\r\nimport { createStoreLocal } from '../../utils/proxy';\r\nimport Title from '../../components/shared/Title';\r\nimport { store } from '../../services/store';\r\nimport * as NuevoReceipt from '../../components/bill/Nuevo';\r\nimport CustomButton from '../../components/buttons/CustomButton';\r\nimport { _path } from \"../../data/headerNavigation\";\r\nimport { formatDate, formatDateTime } from '../../data/app';\r\nimport { cellAsPayoff, cellRender, dataFormatId, } from '../../utils/common';\r\nimport urlReport from '../../services/reportServices';\r\nimport { billDialogAction } from '../../store/bill/billDialogReducer';\r\nimport Nuevo from './Nuevo';\r\nimport { useDispatch } from 'react-redux';\r\nimport { confirm } from 'devextreme/ui/dialog';\r\n\r\nimport uri from '../../utils/uri';\r\nimport ReceiptByBillId from '../receipts/ReceiptByBillId';\r\nimport { setGridState } from '../../store/gridState/gridStateReducer';\r\nimport BlockHeaderState from '../../components/shared/BlockHeaderState';\r\nimport BillDisabled from './BillDisabled';\r\nimport { billDisabledDialogAction } from '../../store/bill/billDisabledDialogReducer';\r\nimport http from '../../utils/http';\r\nimport notify from 'devextreme/ui/notify';\r\n\r\nconst Bills = props => {\r\n\r\n const { clientId = 0 } = props;\r\n \r\n const [dataDialog, setDataDialog] = useState({ id: 0, billId: 0, open: false, client: '', balance: '' });\r\n const [dialogReceipt, setDialogReceipt] = useState({ open: false, id: 0, reference: 0 });\r\n const dispatch = useDispatch();\r\n let refGrid = useRef();\r\n\r\n const printReport = ( id ) => {\r\n \r\n const report = urlReport();\r\n report.print(`${report.billTicket(id)}`);\r\n\r\n }\r\n\r\n\r\n\r\n const addMenuItems = (e) => {\r\n\r\n if (e.target == \"content\") {\r\n \r\n if (!e.items) e.items = [];\r\n \r\n if (e.rowIndex >= 0){\r\n\r\n const { id, nombre, balance, paymentTypeId } = e.row.data;\r\n\r\n const isContado = paymentTypeId == 1;\r\n\r\n e.items.push({\r\n \r\n text: `Ver factura`,\r\n icon: 'find',\r\n onItemClick: () => {\r\n showDialog(e.row.data.id); \r\n }\r\n\r\n },{\r\n\r\n text: `Imprimir factura`,\r\n icon: 'print',\r\n onItemClick: () => {\r\n printReport(id);\r\n }\r\n }); \r\n\r\n e.items.push({\r\n \r\n text: `Pagar Factura`,\r\n icon: 'money', \r\n disabled: isContado,\r\n onItemClick: () => {\r\n setDataDialog({ id: 0, billId: id, open: true, client: nombre, balance });\r\n }\r\n \r\n },{\r\n \r\n text: `Ver Recibos`,\r\n disabled: isContado,\r\n icon: 'product',\r\n onItemClick: () => {\r\n setDialogReceipt({ open: true, id, reference:id, cliente:nombre })\r\n }\r\n \r\n }); \r\n\r\n e.items.push({\r\n\r\n text: `Anular factura`,\r\n icon: 'remove',\r\n onItemClick: () => refGrid.current.instance.deleteRow(e.rowIndex),\r\n color: 'red'\r\n\r\n }); \r\n \r\n }\r\n\r\n }\r\n }\r\n\r\n const onRowPrepared = (e) => {\r\n if (e.rowType == 'data') {\r\n if (!e.data.active)\r\n e.rowElement.classList.add('no-activo');\r\n\r\n }\r\n }\r\n\r\n const onToolbarPreparing = (e) => {\r\n e.toolbarOptions.items.unshift({\r\n location: 'before',\r\n widget: 'dxButton',\r\n options: {\r\n text: 'Exportar a excel',\r\n icon: 'exportxlsx',\r\n type: 'success',\r\n stylingMode: \"outlined\",\r\n onClick: () => refGrid.current.instance.exportToExcel(false)\r\n }\r\n });\r\n }\r\n\r\n const onCellPrepared = e => {\r\n\r\n const cellsQuantity = ['payoff']\r\n\r\n if (e.rowType == 'data' && e.column.allowEditing) {\r\n if (cellsQuantity.includes(e.column.dataField))\r\n if (e.row.data.payoff)\r\n e.cellElement.classList.add('pagada');\r\n else\r\n e.cellElement.classList.add('pendiente');\r\n\r\n if (e.column.dataField == 'id')\r\n e.cellElement.classList.add('col-id-factura');\r\n if (e.column.dataField == 'reference')\r\n e.cellElement.classList.add('col-reference-factura');\r\n }\r\n\r\n }\r\n\r\n const showDialog = (id) => dispatch(billDialogAction({ open: true, id })); \r\n \r\n const showBillDisabledDialog = (id, name) => dispatch(billDisabledDialogAction({ open: true, id, name, }));\r\n\r\n const onSave = (e) => refGrid.current.instance.refresh();\r\n\r\n const extraParameter = clientId > 0 ? { key: 'clientId', value: clientId } : null;\r\n\r\n const close = e => {\r\n setDataDialog({ id: 0, billId: 0, open: false, client: '', balance: '' });\r\n }\r\n\r\n const enableBill = id => {\r\n\r\n let resultConfirm = confirm(\"<i>Esta seguro de rehabilitar la factura \" + id + \"?</i>\", \"Confirmar\");\r\n resultConfirm.then((dialogResult) => {\r\n if (dialogResult) {\r\n http(`${uri.bills.base}/${id}/update`).asGet().then(resp => {\r\n\r\n notify(`Factura rehabilitada correctamente`);\r\n refGrid.current.instance.refresh();\r\n\r\n }).catch(err => {\r\n\r\n notify(err, 'error', 5000);\r\n\r\n });\r\n }\r\n });\r\n\r\n }\r\n\r\n const onRowClick = e => {\r\n \r\n const { paymentTypeId, id, active } = e.data;\r\n\r\n const isContado = paymentTypeId == 1;\r\n\r\n dispatch(setGridState({\r\n id: id, \r\n data: e.data,\r\n disabledView: false, \r\n disabledPrint: false, \r\n disabledPayment: isContado, \r\n disabledViewReceipts: isContado, \r\n disabledCancel: !active, \r\n disabledEnable: active === true\r\n }));\r\n\r\n }\r\n\r\n const onRowDblClick = e => {\r\n showDialog(e.data.id);\r\n }\r\n\r\n const cellRenderDelivery = (cellData) => {\r\n\r\n const { isDeliveried } = cellData.data;\r\n\r\n let deliveriedClassName = 'not-deliveried';\r\n if(isDeliveried)\r\n deliveriedClassName = 'is-deliveried';\r\n \r\n return (\r\n <div>\r\n <div className=\"current-value\">\r\n <span className={deliveriedClassName}> {isDeliveried ? 'Entregado': 'Sin entrega'} </span>\r\n </div> \r\n </div>\r\n );\r\n };\r\n\r\n const title = 'Facturas';\r\n\r\n return (\r\n <div className=\"container\">\r\n <Title title={title} /> \r\n <BlockHeaderState showFavorite={true} title={title} icon=\"icon-file-text\" \r\n onClickView={(id) => showDialog(id)}\r\n onClickPrint={id => printReport(id)}\r\n onClickPayment={(id, billId, open, client, balance) => setDataDialog({ id: 0, billId, open, client, balance })}\r\n onClickViewReceipts={(open, id, nombre) => setDialogReceipt({ open, id, reference: id, cliente: nombre })}\r\n onClickCancel={(id, nombre) => showBillDisabledDialog(id, nombre)}\r\n onClickEnable={enableBill}\r\n onRefresh={() => refGrid.current.instance.refresh()}\r\n visibleView={true}\r\n visiblePrint={true}\r\n visiblePayment={true}\r\n visibleViewReceipts={true}\r\n visibleCancel={true}\r\n visibleEnable={true}\r\n visibleRefresh={true} {...props}\r\n >\r\n <CustomButton\r\n type=\"default\"\r\n text={`Nueva factura`}\r\n icon='plus'\r\n onClick={() => showDialog(0)}\r\n /> \r\n </BlockHeaderState>\r\n <Popup\r\n width={'90vw'}\r\n height={'80vh'}\r\n title={`Recibos de la factura ${dialogReceipt.id}`}\r\n onHiding={e => setDialogReceipt({ open: false, id: 0 })}\r\n visible={dialogReceipt.open}\r\n className=\"bg-fbfbfb\"\r\n >\r\n <ReceiptByBillId id={dialogReceipt.id} reference={dialogReceipt.reference} onSave={onSave} cliente={dialogReceipt.cliente} />\r\n </Popup>\r\n <Nuevo onSave={onSave} { ...props } />\r\n <NuevoReceipt.default data={dataDialog} close={close} onSave={() => 0} />\r\n <BillDisabled onSave={onSave} />\r\n <DataGrid id=\"gridContainer\"\r\n ref={refGrid}\r\n selection={{ mode: 'single' }}\r\n dataSource={store({ uri: uri.bills, remoteOperations: true, extraParameter })}\r\n showBorders={true}\r\n showRowLines={true}\r\n allowColumnResizing={true}\r\n allowColumnReordering={true}\r\n //rowAlternationEnabled={true}\r\n hoverStateEnabled={true}\r\n onContextMenuPreparing={addMenuItems}\r\n onRowPrepared={onRowPrepared}\r\n onToolbarPreparing={onToolbarPreparing}\r\n onCellPrepared={onCellPrepared}\r\n onRowDblClick={onRowDblClick}\r\n onRowClick={onRowClick}\r\n remoteOperations={{\r\n paging: true,\r\n filtering: true\r\n }} \r\n >\r\n \r\n <Paging defaultPageSize={20} />\r\n <Pager\r\n showInfo={true}\r\n showPageSizeSelector={true}\r\n allowedPageSizes={[10, 20, 50]}\r\n />\r\n \r\n <Export enabled={false} fileName={title} />\r\n <FilterRow visible={true} />\r\n <HeaderFilter visible={true} />\r\n <ColumnChooser enabled={true} />\r\n <Column dataField=\"id\" caption=\"Id\" width={70} cellRender={dataFormatId} />\r\n <Column dataField=\"date\" caption=\"Fecha\" dataType='date' format={formatDate} width={100} />\r\n <Column dataField=\"nombre\" caption=\"Cliente\" visible={clientId == 0} minWidth={150} allowHeaderFiltering={false} />\r\n <Column dataField=\"paymentTypeId\" width={100} caption=\"Tipo pago\">\r\n <Lookup disabled={true} dataSource={createStoreLocal({ name: 'billPaymentType' })} valueExpr=\"id\" displayExpr=\"name\" />\r\n </Column>\r\n <Column dataField=\"total\" width={100} cellRender={cellRender()} />\r\n <Column dataField=\"balance\" width={100} caption=\"Deuda\" cellRender={cellRender()} />\r\n <Column dataField=\"active\" width={90} caption=\"Activa\" visible={false} />\r\n <Column dataField=\"payoff\" width={100} caption='Pagada' dataType=\"boolean\" cellRender={cellAsPayoff} />\r\n <Column dataField=\"asignedTo\" caption='Vendedor' width={100} />\r\n <Column dataField=\"deliveryDate\" caption='Fecha Entregado' dataType='date' format={formatDate} visible={false} width={140} />\r\n <Column dataField=\"createBy\" caption='Creado Por' width={100} visible={false}/>\r\n <Column dataField=\"createAt\" caption='Creado el' dataType='date' format={formatDateTime} visible={false} width={140} />\r\n <Column dataField=\"modifiedBy\" caption='Modificado ' width={100} visible={false} />\r\n <Column dataField=\"modifiedAt\" caption='Creado el' dataType='date' format={formatDateTime} visible={false} width={140} />\r\n <Column dataField=\"ConvertBy\" caption='Modificada por' visible={false} width={100} />\r\n <Column dataField=\"isDeliveriede\" width={100} caption=\"Entregado\" cellRender={cellRenderDelivery} />\r\n <Column type=\"buttons\" width={90}>\r\n <ButtonGrid name=\"print\" icon=\"print\" onClick={e => printReport(e.row.data.id)}/>\r\n <ButtonGrid name=\"edit\" icon=\"find\" onClick={e => showDialog(e.row.data.id)}/>\r\n </Column>\r\n <Editing\r\n mode=\"popup\"\r\n allowUpdating={true}\r\n useIcons={true}\r\n ></Editing>\r\n </DataGrid>\r\n </div>\r\n );\r\n}\r\n\r\nexport default Bills;\r\n","import { dialogDefault, DIALOG_NC } from \"../consts\";\r\n\r\nconst mydialog = {...dialogDefault}\r\n\r\n\r\nexport const ncDialogAction = ({ open = false, id = 0, clientId = 0 }) => ({\r\n type: DIALOG_NC,\r\n payload : { open, id, clientId }\r\n});\r\n\r\nexport default function ncDialogReducer(state = mydialog, { type, payload }) {\r\n\r\n const actions = {\r\n [DIALOG_NC] : () => ({...state, ...payload })\r\n }\r\n\r\n return actions[type]?.call() || state;\r\n}\r\n\r\n","import React, { useEffect, useState, useRef, useMemo } from 'react';\r\nimport { Popup } from 'devextreme-react/popup';\r\nimport Form, { SimpleItem, GroupItem, Label, RequiredRule, StringLengthRule } from 'devextreme-react/form';\r\nimport { useDispatch, useSelector } from 'react-redux'\r\nimport { LoadPanel } from 'devextreme-react/load-panel';\r\nimport { createStoreLocal } from '../../utils/proxy';\r\nimport { editorOptionsSelect } from '../../data/app';\r\nimport { TextBox, Button as TextBoxButton } from 'devextreme-react/text-box';\r\nimport { DataGrid, NumberBox, ScrollView } from 'devextreme-react';\r\nimport { Column, Editing, Lookup, RequiredRule as RuleRequired, Button as ButtonGrid ,Summary,TotalItem} from 'devextreme-react/data-grid';\r\nimport ProductDDBComponent from '../../components/dropdown/ProductDDBComponent';\r\nimport uri from '../../utils/uri';\r\nimport { cellRender, customizeTextAsPercent, formatId, formatToMoney, onCellPrepared } from '../../utils/common';\r\nimport http from '../../utils/http';\r\nimport notify from 'devextreme/ui/notify';\r\nimport { movementDefault } from '../../data/defaultObjects';\r\nimport { ncDialogAction } from '../../store/notacredit/ncDialogReducer';\r\nimport { confirm } from 'devextreme/ui/dialog';\r\n\r\n\r\nconst Nuevo = props => {\r\n\r\n const { ncDialog: { open, id }, user } = useSelector(store => store);\r\n\r\n const [ bill, setBill ] = useState({ id: null });\r\n const [ billDetallis, setBillDetails ] = useState([]);\r\n const [ movement, setMovement ] = useState({ ...movementDefault });\r\n const [ saving, setSaving ] = useState(false);\r\n const [ loading, setLoading ] = useState(false);\r\n const [ searching, setSearching ] = useState(false);\r\n const [ details, setDetails ] = useState([]);\r\n\r\n let refForm = useRef();\r\n let refBillForm = useRef();\r\n let refGrid = useRef();\r\n let billRefId = useRef();\r\n\r\n useEffect(() => {\r\n\r\n if (id > 0) {\r\n setLoading(true);\r\n http(uri.movements.getById(id)).asGet().then(resp => {\r\n\r\n http(`${uri.bills.base}/get/${resp.billId}/info`).asGet().then(data => {\r\n\r\n setBill(data);\r\n setBillDetails(data.details);\r\n\r\n const { movementDetails, ...rest } = resp; \r\n\r\n setMovement({ ...movementDefault, ...rest });\r\n setDetails([...movementDetails]);\r\n setLoading(false);\r\n });\r\n\r\n });\r\n\r\n } else {\r\n setLoading(true);\r\n setMovement({ ...movementDefault, areaId: user.areaId });\r\n setDetails([]);\r\n setLoading(false);\r\n\r\n }\r\n\r\n }, [open]);\r\n\r\n const dispatch = useDispatch();\r\n const onToolbarPreparing = (e) => {\r\n e.toolbarOptions.items.unshift({\r\n location: 'before',\r\n widget: 'dxButton',\r\n options: {\r\n stylingMode:\"outlined\",\r\n text: searching ? 'Cargando...' : 'Agregar producto',\r\n icon:'add',\r\n disabled: searching || isDiscount,\r\n type:'default',\r\n onClick: () => {\r\n\r\n let result = refForm.current.instance.validate();\r\n let resultBill = refBillForm.current.instance.validate();\r\n\r\n if (result.isValid && resultBill.isValid) \r\n refGrid.current.instance.addRow();\r\n\r\n }\r\n }\r\n });\r\n }\r\n\r\n const closeDialog = (load) => {\r\n\r\n refForm.current.instance.resetValues();\r\n refBillForm.current.instance.resetValues();\r\n refGrid.current.instance.cancelEditData();\r\n billRefId.current.instance.reset();\r\n \r\n\r\n dispatch(ncDialogAction({ open: false, id: 0 }));\r\n if (load) {\r\n let { onSave } = props;\r\n onSave();\r\n }\r\n\r\n setMovement({ ...movementDefault, areaId: user.areaId });\r\n setDetails([]);\r\n \r\n }\r\n\r\n const onHiding = ({ load }) => {\r\n closeDialog(load);\r\n }\r\n\r\n const guardarEntrada = (e, successCallback) => {\r\n\r\n let result = refForm.current.instance.validate();\r\n\r\n if (result.isValid) {\r\n\r\n let result = confirm(\"<i>Esta seguro de guardar la nota de crédito?</i>\", \"Confirmar cambios\");\r\n\r\n result.then((dialogResult) => {\r\n if (dialogResult) {\r\n\r\n setSaving(true);\r\n \r\n const newDetails = details.map(x => {\r\n x.id = 0;\r\n return x;\r\n });\r\n\r\n let data = { ...movement,billId: bill.id, clientId:bill.clientId, movementDetails: [...newDetails] };\r\n \r\n http(uri.movements.insert).asPost(data).then(resp => {\r\n setSaving(false);\r\n \r\n if (successCallback) {\r\n successCallback(data);\r\n }\r\n else {\r\n if (isNew) {\r\n notify('Nota de credito registrada correctamente');\r\n closeDialog(true);\r\n }\r\n else {\r\n notify('Nota de credito actualizada correctamente');\r\n }\r\n \r\n }\r\n \r\n \r\n }).catch(err => {\r\n setSaving(false);\r\n notify(err, 'error', 5000);\r\n });\r\n \r\n }\r\n }); \r\n\r\n }\r\n\r\n }\r\n\r\n const setCellValue = (prop, newData, value, currentRowData) => {\r\n \r\n newData[prop] = value || 0;\r\n if (prop == 'productId' && value) {\r\n\r\n let info = billDetallis.find(x => x.id == value); \r\n newData['cost'] = info.cost;\r\n newData['price'] = info.price;\r\n newData['quantity'] = info.stock; \r\n newData['quantityBilled'] = info.stock; \r\n newData['total'] = info.price * info.stock;\r\n newData['importe'] = 0;\r\n newData['totalFact'] = 0;\r\n newData['discountPercent'] = 0;\r\n newData['discount'] = 0;\r\n \r\n }\r\n\r\n if (prop == 'quantity' && (+value) >= 0) \r\n newData['total'] = currentRowData['price'] * value; \r\n\r\n if (prop == 'discountPercent' && (+value) >= 0) {\r\n const totalDiscount = (currentRowData['price'] * currentRowData['quantity']) * (value / 100);\r\n newData['discount'] = totalDiscount;\r\n newData['total'] = totalDiscount;\r\n newData['totalFact'] = (currentRowData['importe'] - totalDiscount);\r\n newData['newPriceAux'] = 0;\r\n\r\n }\r\n\r\n if (prop == 'newPriceAux' && (+value) >= 0) {\r\n\r\n const newDiscount = (((value * currentRowData['quantity']) / currentRowData['importe']) - 1) * 100 * -1;\r\n newData['discountPercent'] = parseFloat(parseFloat(newDiscount).toFixed(4));\r\n\r\n const totalDiscount = (currentRowData['price'] * currentRowData['quantity']) * (newDiscount / 100);\r\n newData['discount'] = totalDiscount;\r\n newData['total'] = totalDiscount;\r\n newData['totalFact'] = (currentRowData['importe'] - totalDiscount);\r\n\r\n }\r\n\r\n }\r\n\r\n const searchBill = (e) => { \r\n\r\n var billId = billRefId.current.instance.option('value');\r\n\r\n if (billId == null || billId == 0) \r\n return; \r\n \r\n setSearching(true);\r\n http(`${uri.bills.base}/get/${billId}/info`).asGet().then(data => {\r\n setSearching(false);\r\n\r\n if (data == null) {\r\n notify('Factura no encontrada', 'error', 2000);\r\n return;\r\n }\r\n \r\n data.totalFormatted = formatToMoney(data.total);\r\n data.deudaFormatted = formatToMoney(data.balance); \r\n\r\n setBill(data);\r\n setBillDetails(data.details);\r\n \r\n }); \r\n \r\n }\r\n\r\n const typeChanged = (e) => {\r\n \r\n if (e.value == 1) { // Devolución\r\n setDetails([]);\r\n }\r\n else {\r\n const _billDetallis = billDetallis.map(x => {\r\n\r\n x.quantityBilled = x.stock;\r\n x.quantity = x.stock;\r\n x.productId = x.id\r\n x.discountPercent = 0;\r\n x.totalDiscount = 0;\r\n x.importe = x.price * x.stock;\r\n x.total = 0;\r\n x.totalFact = x.price * x.stock;\r\n\r\n return x;\r\n });\r\n\r\n setDetails([..._billDetallis]);\r\n }\r\n }\r\n\r\n const isNew = id == 0;\r\n\r\n const textSaving = saving ? 'Guardando...' : 'Guardar Nota';\r\n\r\n const disabled = saving || !isNew;\r\n\r\n const searchButton = useMemo(\r\n () => ({\r\n icon: 'search',\r\n stylingMode: 'text',\r\n onClick: searchBill\r\n }),\r\n [],\r\n );\r\n\r\n const renderButtonSearch = () => {\r\n return (\r\n <NumberBox ref={billRefId}\r\n placeholder=\"0000\" \r\n defaultValue={bill.id}\r\n onValueChanged={searchBill}\r\n >\r\n <TextBoxButton\r\n name=\"password\"\r\n location=\"after\"\r\n options={searchButton}\r\n />\r\n </NumberBox>\r\n );\r\n }\r\n\r\n const isGoBack = movement.movementTypeId == 1;\r\n const isDiscount = movement.movementTypeId == 2;\r\n \r\n return (\r\n <div> \r\n <Popup\r\n width={'90vw'}\r\n height={'98vh'} \r\n title={isNew ? `Nueva Nota de Crédito` : `Nota de Crédito #${formatId(id)}`}\r\n onHiding={onHiding}\r\n visible={open}\r\n id='bill-panel'\r\n > \r\n <LoadPanel\r\n shadingColor=\"rgba(0,0,0,0.4)\"\r\n position={{ of: '#bill-panel' }}\r\n visible={loading}\r\n showIndicator={loading}\r\n shading={true}\r\n showPane={true}\r\n /> \r\n <ScrollView showScrollbar='never'>\r\n <Form formData={bill} ref={refBillForm}>\r\n <GroupItem colCount={4} cssClass={'css-bill'}> \r\n <SimpleItem render={renderButtonSearch} > \r\n <Label text=\"Factura\" />\r\n <RequiredRule message=\"Ingrese la factura\" />\r\n </SimpleItem> \r\n <SimpleItem dataField=\"nombre\" colSpan={2} editorOptions={{ readOnly: true, }} >\r\n <Label text=\"Cliente\" />\r\n <RequiredRule message=\"Ingrese la factura\" />\r\n </SimpleItem> \r\n <SimpleItem dataField=\"asignedTo\" colSpan={1} editorType=\"dxTextBox\" editorOptions={{ readOnly: true, }}>\r\n <Label text=\"Vendedor\" />\r\n <RequiredRule message=\"Ingrese la factura\" />\r\n </SimpleItem> \r\n <SimpleItem dataField=\"date\" editorType=\"dxDateBox\"\r\n editorOptions={{\r\n displayFormat: 'dd/MM/yyyy',\r\n readOnly: true\r\n }} >\r\n <Label text=\"Fecha\" />\r\n <RequiredRule message=\"Ingrese la factura\" />\r\n </SimpleItem> \r\n <SimpleItem dataField=\"totalFormatted\" colSpan={1} editorType=\"dxTextBox\" editorOptions={{ readOnly: true, }}>\r\n <Label text=\"Total\" />\r\n <RequiredRule message=\"Ingrese la factura\" />\r\n </SimpleItem>\r\n <SimpleItem dataField=\"deudaFormatted\" colSpan={1} editorType=\"dxTextBox\" editorOptions={{ readOnly: true, }}>\r\n <Label text=\"Deuda\" />\r\n </SimpleItem>\r\n \r\n </GroupItem>\r\n </Form> \r\n <Form formData={movement} ref={refForm}>\r\n <GroupItem colCount={3} caption={'Datos de la Nota de Crédito'}> \r\n <SimpleItem dataField=\"date\" editorType=\"dxDateBox\" colSpan={1}\r\n editorOptions={{\r\n displayFormat: 'dd/MM/yyyy',\r\n openOnFieldClick: true,\r\n }} >\r\n <Label text=\"Fecha\" />\r\n <RequiredRule message=\"Seleccione la fecha\" />\r\n </SimpleItem>\r\n <SimpleItem dataField=\"movementTypeId\" colSpan={1} editorType=\"dxSelectBox\"\r\n editorOptions={{\r\n dataSource: createStoreLocal({ name: 'movementType' }),\r\n ...editorOptionsSelect,\r\n disabled: bill.id == null,\r\n onValueChanged: typeChanged\r\n }} >\r\n <Label text=\"Tipo\" />\r\n <RequiredRule message=\"Seleccione el tipo de compra\" />\r\n </SimpleItem> \r\n <SimpleItem dataField=\"movementGroupId\" colSpan={1} editorType=\"dxSelectBox\"\r\n editorOptions={{\r\n dataSource: createStoreLocal({ name: 'movementGroup' }),\r\n ...editorOptionsSelect,\r\n disabled: bill.id == null\r\n }} >\r\n <Label text=\"Motivo\" />\r\n <RequiredRule message=\"Seleccione una justificación\" />\r\n </SimpleItem> \r\n </GroupItem>\r\n <GroupItem>\r\n <DataGrid id=\"gridDetails\"\r\n ref={refGrid}\r\n selection={{ mode: 'single' }}\r\n dataSource={details}\r\n showBorders={true}\r\n showRowLines={true}\r\n allowColumnResizing={true}\r\n allowColumnReordering={true}\r\n height={300}\r\n onToolbarPreparing={onToolbarPreparing}\r\n onCellPrepared={onCellPrepared}\r\n >\r\n <Column dataField=\"productId\" caption=\"Producto\"\r\n setCellValue={setCellValue.bind(null, \"productId\")} allowEditing={isGoBack}\r\n editCellComponent={ProductDDBComponent} minWidth={100}>\r\n <Lookup\r\n dataSource={billDetallis}\r\n valueExpr=\"id\"\r\n displayExpr={item => item ? `${item.internalCode} - ${item.name}` : ''}\r\n\r\n />\r\n <RuleRequired />\r\n </Column> \r\n <Column dataField=\"quantity\" caption=\"Cant\" dataType=\"number\" width={50} allowEditing={isGoBack} setCellValue={setCellValue.bind(null, \"quantity\")}>\r\n <RuleRequired />\r\n </Column>\r\n <Column dataField=\"quantityBilled\" caption=\"Cant Fact\" dataType=\"number\" width={80} allowEditing={false} visible={isGoBack}>\r\n <RuleRequired />\r\n </Column>\r\n <Column dataField=\"cost\" caption=\"Costo\" dataType=\"number\" allowEditing={false} width={100} cellRender={cellRender(1)} visible={false}>\r\n <RuleRequired />\r\n </Column>\r\n <Column dataField=\"price\" caption=\"Precio\" dataType=\"number\" width={100} cellRender={cellRender()} allowEditing={false} >\r\n <RuleRequired />\r\n </Column> \r\n <Column dataField=\"newPriceAux\" caption=\"Precio Aux\" dataType=\"number\" width={100} cellRender={cellRender()} visible={isDiscount} setCellValue={setCellValue.bind(null, \"newPriceAux\")}>\r\n </Column> \r\n <Column dataField=\"importe\" caption=\"Importe\" dataType=\"number\" width={120} allowEditing={false} cellRender={cellRender()} >\r\n <RuleRequired />\r\n </Column> \r\n <Column dataField=\"discountPercent\" caption=\"Desc %\" dataType=\"number\" width={80} cellRender={customizeTextAsPercent} allowEditing={isDiscount} visible={isDiscount} setCellValue={setCellValue.bind(null, \"discountPercent\")}>\r\n <RuleRequired />\r\n </Column> \r\n <Column dataField=\"discount\" caption=\"Descuento\" dataType=\"number\" width={100} cellRender={cellRender()} allowEditing={false} visible={isDiscount} >\r\n <RuleRequired />\r\n </Column>\r\n <Column dataField=\"totalFact\" caption=\"Total Fac\" dataType=\"number\" width={120} allowEditing={false} cellRender={cellRender()} >\r\n <RuleRequired />\r\n </Column>\r\n <Column dataField=\"total\" caption=\"Total\" dataType=\"number\" width={120} allowEditing={false} cellRender={cellRender()} visible={isGoBack}>\r\n <RuleRequired />\r\n </Column> \r\n\r\n <Column type=\"buttons\" width={50}>\r\n <ButtonGrid name=\"delete\" />\r\n </Column>\r\n <Editing\r\n mode=\"cell\"\r\n allowDeleting={true}\r\n allowUpdating={true}\r\n selectTextOnEditStart={true}\r\n useIcons={true}\r\n ></Editing>\r\n <Summary>\r\n <TotalItem\r\n column={isGoBack ? 'total':'discount'}\r\n summaryType=\"sum\" \r\n customizeText={data => `${formatToMoney(data.value)}`} />\r\n </Summary>\r\n </DataGrid>\r\n </GroupItem>\r\n <GroupItem colCount={3}>\r\n\r\n <SimpleItem dataField=\"observation\" colSpan={2} editorType=\"dxTextBox\">\r\n <Label text=\"Observación\" />\r\n <StringLengthRule max={150} message=\"Maximo 500 caracteres\" />\r\n <RuleRequired message={\"Ingrese la observacion\"} />\r\n </SimpleItem> \r\n <SimpleItem itemType=\"button\" buttonOptions={{\r\n text: textSaving,\r\n type: 'success',\r\n disabled: disabled,\r\n icon: 'save',\r\n onClick: guardarEntrada\r\n }} />\r\n </GroupItem>\r\n </Form>\r\n </ScrollView>\r\n\r\n </Popup>\r\n </div>\r\n );\r\n}\r\n\r\n\r\n\r\nexport default Nuevo;","import NotasCreditos from './NotasCreditos';\r\nexport default NotasCreditos;","import React, { useRef } from 'react';\r\nimport BlockHeader from '../../components/shared/BlockHeader';\r\nimport Title from '../../components/shared/Title';\r\nimport DataGrid, {\r\n Column,\r\n ColumnChooser,\r\n Editing,\r\n Export,\r\n FilterRow,\r\n HeaderFilter,\r\n Lookup,\r\n Pager,\r\n Paging,\r\n Button as ButtonGrid,\r\n } from 'devextreme-react/data-grid';\r\nimport { createStoreLocal } from '../../utils/proxy';\r\nimport uri from '../../utils/uri';\r\nimport { store } from '../../services/store';\r\nimport { purchaseSteps } from '../../data/enums';\r\nimport { dataAccess, formatDate, formatDateTime } from '../../data/app';\r\nimport CustomButton from '../../components/buttons/CustomButton';\r\nimport { useDispatch } from 'react-redux'\r\nimport useAuthorization from '../../hooks/useAuthorization';\r\nimport { dataFormatId } from '../../utils/common';\r\nimport { addMenu } from '../../components/grids/Menu';\r\nimport { onToolbar } from '../../components/grids/ToolBar';\r\nimport urlReport from '../../services/reportServices';\r\nimport { resources } from '../../data/app';\r\nimport Nuevo from './Nuevo';\r\nimport { ncDialogAction } from '../../store/notacredit/ncDialogReducer';\r\n\r\nconst NotasCreditos = ( \r\n { \r\n title= \"Notas de Crédito\", \r\n btnAddText= \"Nueva Nota de Crédito\",\r\n typeId= null,\r\n icon=\"\", \r\n resourcesId = resources.crearNotasCreditos,\r\n printName = 'notaCredito',\r\n dialog = ncDialogAction,\r\n ...rest\r\n }) => {\r\n \r\n const [ authorized ] = useAuthorization( resourcesId );\r\n\r\n let dataGrid = useRef();\r\n const dispatch = useDispatch();\r\n\r\n const reload = () => dataGrid.current.instance.refresh(); \r\n\r\n const onRowPrepared = (e) => {\r\n if (e.rowType == 'data') {\r\n if (!e.data.active)\r\n e.rowElement.classList.add('no-activo');\r\n\r\n }\r\n }\r\n\r\n const onCellPrepared = e => {\r\n\r\n const cellsQuantity = ['stepId']\r\n \r\n if (e.rowType == 'data' && e.column.allowEditing) {\r\n if(cellsQuantity.includes(e.column.dataField)){\r\n e.cellElement.classList.add('td-status');\r\n\r\n if(e.data.stepId == purchaseSteps.anulada)\r\n e.cellElement.classList.add('td-status-cancelado');\r\n\r\n if(e.data.stepId == purchaseSteps.pendiente)\r\n e.cellElement.classList.add('td-status-pendiente');\r\n\r\n if(e.data.stepId == purchaseSteps.procesada)\r\n e.cellElement.classList.add('td-status-procesado');\r\n }\r\n \r\n }\r\n \r\n }\r\n\r\n const showDialog = id => dispatch(dialog({ open: true, id })); \r\n \r\n const report = urlReport();\r\n\r\n const addMenuItems = (e) => {\r\n addMenu(e, [{\r\n text: `Ver ${title}`,\r\n icon: 'find',\r\n onItemClick: () => showDialog(e.row.data.id)\r\n },{\r\n text: `Imprimir ${title}`,\r\n icon: 'print',\r\n onItemClick: () => {\r\n\r\n if(printName)\r\n report.print(`${report[printName](e.row.data.id)}`) ;\r\n }\r\n }])\r\n }\r\n\r\n const onToolbarPreparing = onToolbar({ export : true } , dataGrid);\r\n\r\n const _uri = uri.movements;\r\n\r\n const printReport = ( id ) => {\r\n \r\n const report = urlReport();\r\n report.print(`${report.notaCredito(id)}`);\r\n\r\n }\r\n\r\n return authorized(\r\n <div className=\"container\">\r\n <Title title={title}/>\r\n <BlockHeader title={title} icon={icon} showFavorite={true} {...rest}>\r\n <CustomButton \r\n text={btnAddText}\r\n icon='plus'\r\n onClick={() => showDialog(0)}\r\n />\r\n </BlockHeader>\r\n <Nuevo onSave={reload} typeId={typeId}/> \r\n \r\n <DataGrid id=\"gridContainer\"\r\n ref={dataGrid}\r\n selection={{ mode: 'single' }}\r\n dataSource={store({ uri : _uri, remoteOperations : true, extraParameter: null })}\r\n showBorders={true}\r\n showRowLines={true}\r\n allowColumnResizing={true}\r\n allowColumnReordering={true}\r\n hoverStateEnabled={true}\r\n onRowPrepared={onRowPrepared}\r\n onCellPrepared={onCellPrepared}\r\n onContextMenuPreparing={addMenuItems}\r\n onToolbarPreparing={onToolbarPreparing}\r\n remoteOperations={{\r\n paging: true,\r\n filtering: true\r\n }} \r\n >\r\n <Paging defaultPageSize={20} />\r\n <Pager\r\n showInfo={true}\r\n showPageSizeSelector={true}\r\n allowedPageSizes={[10, 20, 50]}\r\n />\r\n <FilterRow visible={true} />\r\n <HeaderFilter visible={true} />\r\n <ColumnChooser enabled={true} />\r\n <Export enabled={true} fileName={title} allowExportSelectedData={true} />\r\n <Column dataField=\"id\" caption='Numero' width={100} cellRender={dataFormatId}/>\r\n <Column dataField=\"billId\" caption='Factura' width={100} cellRender={dataFormatId}/>\r\n <Column dataField=\"movementTypeId\" caption=\"Tipo \" width={110}>\r\n <Lookup disabled={true} dataSource={createStoreLocal({name: 'movementType'})} valueExpr=\"id\" displayExpr=\"name\" />\r\n </Column> \r\n <Column dataField=\"name\" caption=\"Cliente\" minWidth={150} allowHeaderFiltering={false} />\r\n <Column dataField=\"total\" caption='Total' dataType='number' format={{ type: 'fixedPoint', precision: 2 }} width={100} /> \r\n <Column dataField=\"observation\" caption='Observacion' visible={false} allowHeaderFiltering={false} allowFiltering={false}/>\r\n <Column dataField=\"active\" width={90} caption=\"Activa\"/>\r\n <Column dataField=\"createAt\" caption='Creado el' dataType='date' format={formatDateTime} width={180}/>\r\n <Column dataField=\"createBy\" caption='Creado Por' width={120}/>\r\n <Column type=\"buttons\" width={90}>\r\n <ButtonGrid name=\"edit\" icon=\"find\" onClick={e => showDialog(e.row.data.id)}/>\r\n <ButtonGrid name=\"print\" icon=\"print\" onClick={e => printReport(e.row.data.id)}/>\r\n <ButtonGrid name=\"delete\" />\r\n </Column>\r\n <Editing\r\n mode=\"popup\"\r\n allowDeleting={true}\r\n allowUpdating={true}\r\n useIcons={true}\r\n >\r\n </Editing>\r\n </DataGrid>\r\n </div>\r\n );\r\n}\r\n\r\nexport default NotasCreditos;\r\n","import React, { useEffect, useState, useRef } from 'react';\r\nimport { Popup } from 'devextreme-react/popup';\r\nimport Form, { SimpleItem, GroupItem, Label, RequiredRule, StringLengthRule, EmptyItem} from 'devextreme-react/form';\r\nimport { useDispatch, useSelector } from 'react-redux'\r\nimport { closeDialogRecibo } from '../../store/dialogRecibo/dialogReciboReducer';\r\nimport DataSource from \"devextreme/data/data_source\";\r\nimport { createStore, createStoreLocal } from '../../utils/proxy';\r\nimport { editorOptionsSelect, formatDate } from '../../data/app';\r\nimport { DataGrid, Button } from 'devextreme-react';\r\nimport { Column, Editing, Lookup, RequiredRule as RuleRequired, Button as ButtonGrid } from 'devextreme-react/data-grid';\r\nimport uri from '../../utils/uri';\r\nimport toCapital, { cellRender } from '../../utils/common';\r\nimport http from '../../utils/http';\r\nimport notify from 'devextreme/ui/notify';\r\nimport { billDefault } from '../../data/defaultObjects';\r\nimport BillByClient from '../../components/bill/BillByClient';\r\nimport useProducts from '../../hooks/useProducts';\r\n\r\nconst Nuevo = (props) => {\r\n\r\n const { dialogRecibo, user } = useSelector(store => store);\r\n\r\n const { products, isLoading } = useProducts({ areaId : user.areaId});\r\n const [ saving, setSaving ] = useState(false);\r\n const [ bill, setBill ] = useState({...billDefault});\r\n\r\n\r\n const dispatch = useDispatch(); \r\n\r\n const closeDialog = ( load ) => { \r\n\r\n dispatch(closeDialogRecibo());\r\n if (load) {\r\n let { onSave } = props;\r\n onSave(); \r\n } \r\n }\r\n\r\n const onHiding = ({ load }) => { \r\n closeDialog(load); \r\n } \r\n\r\n const onCellPrepared = e => {\r\n\r\n const cells = ['quantity', 'quantityRequest']\r\n \r\n if (e.rowType == 'data' && e.column.allowEditing) {\r\n if(cells.includes(e.column.dataField))\r\n e.cellElement.classList.add('quantity-text'); \r\n }\r\n \r\n }\r\n\r\n useEffect(() => { \r\n\r\n if(dialogRecibo.id > 0)\r\n http(uri.bill.getById(dialogRecibo.id)).asGet().then(resp => {\r\n\r\n setBill({...resp});\r\n\r\n });\r\n\r\n }, [dialogRecibo.id]);\r\n\r\n return (\r\n <div>\r\n <Popup\r\n width={1050}\r\n height={580}\r\n title={`Recibos`}\r\n onHiding={onHiding}\r\n visible={dialogRecibo.open} \r\n className=\"bg-fbfbfb\" \r\n >\r\n <BillByClient open={dialogRecibo.open}/> \r\n \r\n </Popup>\r\n </div>\r\n );\r\n}\r\n\r\nexport default Nuevo;\r\n","import Receipts from './Receipts'\r\nexport default Receipts;","import React, { useRef } from 'react';\r\nimport { DataGrid } from 'devextreme-react';\r\nimport { \r\n Paging, \r\n Pager, \r\n FilterRow, \r\n HeaderFilter, \r\n ColumnChooser, \r\n Column, \r\n Lookup,\r\n Editing} from 'devextreme-react/data-grid';\r\nimport { createStoreLocal } from '../../utils/proxy';\r\nimport Title from '../../components/shared/Title';\r\nimport BlockHeader from '../../components/shared/BlockHeader';\r\nimport { store } from '../../services/store';\r\n\r\nimport CustomButton from '../../components/buttons/CustomButton';\r\nimport { _path } from \"../../data/headerNavigation\";\r\nimport { dataAccess, formatDate, formatDateTime, resources } from '../../data/app';\r\nimport toCapital, { cellAsPayoff, cellRender, dataFormatId, formatId } from '../../utils/common';\r\nimport urlReport from '../../services/reportServices';\r\nimport useAuthorization from '../../hooks/useAuthorization';\r\nimport { openDialogRecibo } from '../../store/dialogRecibo/dialogReciboReducer';\r\nimport Nuevo from './Nuevo';\r\nimport { useDispatch } from 'react-redux';\r\nimport http from '../../utils/http';\r\nimport notify from 'devextreme/ui/notify';\r\nimport { confirm } from 'devextreme/ui/dialog';\r\nimport uri from '../../utils/uri';\r\nimport { onCellPreparedReceipt } from '../../components/bill/CellPrepared';\r\n\r\nconst Receipts = () => {\r\n \r\n const [ authorized ] = useAuthorization( resources.verRecibos );\r\n\r\n const dispatch = useDispatch(); \r\n let refGrid = useRef();\r\n\r\n const addMenuItems =(e) => {\r\n \r\n if (e.target == \"content\") {\r\n \r\n // e.items can be undefined\r\n if (!e.items) e.items = [];\r\n \r\n // Add a custom menu item\r\n if(e.rowIndex >= 0)\r\n e.items.push({\r\n\r\n text: `Ver recibo`,\r\n icon : 'doc',\r\n onItemClick: () => { },\r\n color : 'red'\r\n },{\r\n\r\n text: `Ver factura`,\r\n icon : 'doc',\r\n onItemClick: () => { },\r\n color : 'red'\r\n },{\r\n\r\n text: `Re-imprimir recibo`,\r\n icon : 'print',\r\n onItemClick: () => {\r\n const report = urlReport();\r\n report.print(`${report.recibo(e.row.data.id)}`);\r\n }\r\n \r\n },{\r\n\r\n text: `Anular recibo`,\r\n icon : 'remove',\r\n onItemClick: () => refGrid.current.instance.deleteRow(e.rowIndex),\r\n color : 'red'\r\n });\r\n \r\n }\r\n }\r\n\r\n const onRowPrepared = (e) => {\r\n if (e.rowType == 'data') {\r\n if (!e.data.active) \r\n e.rowElement.classList.add('no-activo');\r\n \r\n }\r\n }\r\n\r\n const onToolbarPreparing = (e) => { \r\n e.toolbarOptions.items.unshift({\r\n location: 'before',\r\n widget: 'dxButton',\r\n options: {\r\n text: 'Exportar a excel',\r\n icon:'exportxlsx',\r\n type:'success',\r\n stylingMode:\"outlined\",\r\n onClick: () => refGrid.current.instance.exportToExcel(false)\r\n }\r\n });\r\n } \r\n\r\n const onSave = e => {\r\n \r\n }\r\n\r\n const title ='Recibos de caja';\r\n\r\n return authorized(\r\n <div className=\"container\">\r\n <Title title={title}/>\r\n <BlockHeader title={title}>\r\n <CustomButton\r\n type=\"default\"\r\n text={`Generar recibo`}\r\n icon='plus'\r\n onClick = {() => {\r\n dispatch(openDialogRecibo(0));\r\n }}\r\n />\r\n </BlockHeader>\r\n <Nuevo onSave={onSave} />\r\n <DataGrid id=\"gridReceipt\"\r\n ref={refGrid}\r\n selection={{ mode: 'single' }}\r\n dataSource={store({uri : uri.receivables, remoteOperations: true })}\r\n showBorders={true}\r\n showRowLines={true}\r\n allowColumnResizing={true}\r\n allowColumnReordering={true}\r\n rowAlternationEnabled={true}\r\n onContextMenuPreparing={addMenuItems}\r\n onRowPrepared={onRowPrepared}\r\n onToolbarPreparing={onToolbarPreparing}\r\n onCellPrepared={onCellPreparedReceipt}\r\n remoteOperations={{\r\n paging: true,\r\n filtering: true\r\n }}\r\n >\r\n <Paging defaultPageSize={20} />\r\n <Pager\r\n showInfo={true}\r\n showPageSizeSelector={true}\r\n allowedPageSizes={[10, 20, 50]}\r\n />\r\n <FilterRow visible={true} />\r\n <HeaderFilter visible={true} />\r\n <ColumnChooser enabled={true} />\r\n <Column dataField=\"id\" caption=\"Recibo #\" width={90} cellRender={dataFormatId} />\r\n <Column dataField=\"createAt\" caption=\"Fecha\" dataType='date' format={formatDate} width={120}/> \r\n <Column dataField=\"billId\" caption=\"Factura #\" width={90} cellRender={dataFormatId} />\r\n <Column dataField=\"nombre\" caption=\"Cliente\" /> \r\n <Column dataField=\"amount\" caption=\"Pagado\" width={100} cellRender={cellRender()} />\r\n <Column dataField=\"balance\" caption=\"Pendiente\" width={100} cellRender={cellRender()} />\r\n <Column dataField=\"createBy\" caption='Creado por' width={100} visible={false} />\r\n <Editing\r\n mode=\"popup\" \r\n allowDeleting={true}\r\n useIcons={true}\r\n ></Editing>\r\n </DataGrid>\r\n </div>\r\n );\r\n}\r\n\r\nexport default Receipts;\r\n","import React, { useRef } from 'react';\r\nimport { DataGrid } from 'devextreme-react';\r\nimport { Item } from 'devextreme-react/form';\r\nimport { \r\n Paging, \r\n Pager, \r\n FilterRow, \r\n HeaderFilter, \r\n Column, \r\n Export, \r\n Editing,\r\n Popup, \r\n Form, \r\n RequiredRule,\r\n StringLengthRule} from 'devextreme-react/data-grid';\r\n\r\nimport { store } from '../../services/store';\r\nimport Title from '../../components/shared/Title';\r\nimport BlockHeader from '../../components/shared/BlockHeader';\r\nimport { createProxyBase } from '../../utils/proxy';\r\nimport useAuthorization from '../../hooks/useAuthorization';\r\nimport { dataAccess, editorOptionsSwitch, resources } from '../../data/app';\r\n\r\nfunction Catalogo(props) {\r\n\r\n const [ authorized ] = useAuthorization( resources.adminCatalogos );\r\n\r\n let dataGrid = useRef();\r\n\r\n const onToolbarPreparing = (e) => { \r\n e.toolbarOptions.items.unshift({\r\n location: 'before',\r\n widget: 'dxButton',\r\n options: {\r\n text: 'Crear nuevo',\r\n icon:'plus',\r\n type:'default',\r\n stylingMode:\"outlined\",\r\n onClick: () => dataGrid.current.instance.addRow()\r\n }\r\n });\r\n } \r\n\r\n const onInitNewRow = (e) => {\r\n e.data.active = true;\r\n }\r\n\r\n const title = 'Areas';\r\n \r\n return authorized(\r\n <div className=\"container small\">\r\n <Title title={title}/>\r\n <BlockHeader title={title}/> \r\n <DataGrid id=\"gridContainer\"\r\n ref={dataGrid}\r\n selection={{ mode: 'single' }}\r\n dataSource={store({uri : createProxyBase('areas')})}\r\n showBorders={true}\r\n showRowLines={true}\r\n allowColumnResizing={true}\r\n allowColumnReordering={true}\r\n hoverStateEnabled={true}\r\n onToolbarPreparing={onToolbarPreparing}\r\n onInitNewRow={onInitNewRow}\r\n >\r\n <Paging defaultPageSize={20} />\r\n <Pager\r\n showPageSizeSelector={true}\r\n allowedPageSizes={[10, 20, 50]}\r\n />\r\n <FilterRow visible={true} />\r\n <HeaderFilter visible={true} />\r\n <Export enabled={true} fileName={title} allowExportSelectedData={true} />\r\n <Column dataField=\"name\" caption=\"Descripcion\" /> \r\n <Column dataField=\"active\" caption=\"Activo\" dataType=\"boolean\" width={100} />\r\n <Editing\r\n mode=\"popup\"\r\n allowUpdating={true}\r\n useIcons={true}\r\n >\r\n <Popup title={title} showTitle={true} width={450} height={260}>\r\n \r\n </Popup>\r\n <Form>\r\n <Item dataField=\"name\" colSpan={2} >\r\n <RequiredRule message=\"El campo es requerida\"/>\r\n <StringLengthRule max={50} min={2} message=\"Máximo de caracteres 50 y 2 mínimo\"/>\r\n </Item> \r\n <Item dataField=\"active\" colSpan={2} editorType=\"dxSwitch\"\r\n editorOptions={editorOptionsSwitch} >\r\n </Item>\r\n </Form>\r\n </Editing>\r\n </DataGrid>\r\n </div>\r\n )\r\n\r\n};\r\n\r\nexport default Catalogo; //connect(mapStateToProps, mapDispatchToProps)(GridSprintStart);","import Areas from './Areas';\r\nexport default Areas;","import { Workbook } from 'exceljs';\r\nimport saveAs from 'file-saver';\r\nimport { exportDataGrid } from 'devextreme/excel_exporter';\r\n\r\nconst onExporting = (e, title) => {\r\n const workbook = new Workbook();\r\n const worksheet = workbook.addWorksheet('Main sheet');\r\n\r\n exportDataGrid({\r\n component: e.component,\r\n worksheet: worksheet\r\n }).then(function() {\r\n workbook.xlsx.writeBuffer()\r\n .then(function(buffer) {\r\n saveAs(new Blob([buffer], { type: 'application/octet-stream' }), `${title}.xlsx`);\r\n });\r\n });\r\n e.cancel = true;\r\n}\r\n\r\n\r\n\r\nexport default onExporting;","import React, { useRef } from 'react';\r\nimport { DataGrid } from 'devextreme-react';\r\nimport { Item } from 'devextreme-react/form';\r\nimport { \r\n Paging, \r\n Pager, \r\n FilterRow, \r\n HeaderFilter, \r\n ColumnChooser, \r\n Column, \r\n Export, \r\n Editing,\r\n Popup, \r\n Form, \r\n RequiredRule,\r\n StringLengthRule} from 'devextreme-react/data-grid';\r\n\r\nimport uri from '../../utils/uri';\r\nimport { store } from '../../services/store';\r\nimport Title from '../../components/shared/Title';\r\nimport BlockHeader from '../../components/shared/BlockHeader';\r\nimport onExporting from '../../components/grids/Importer';\r\nimport { editorOptionsSwitch } from '../../data/app';\r\n\r\nfunction Vendors(props) {\r\n\r\n let dataGrid = useRef();\r\n\r\n const onToolbarPreparing = (e) => { \r\n e.toolbarOptions.items.unshift({\r\n location: 'before',\r\n widget: 'dxButton',\r\n options: {\r\n text: 'Agregar vendedor' ,\r\n icon:'plus',\r\n type:'default',\r\n stylingMode:\"outlined\",\r\n onClick: () => dataGrid.current.instance.addRow()\r\n }\r\n },{\r\n location: 'after',\r\n widget: 'dxButton',\r\n options: {\r\n text: 'Exportar a excel',\r\n icon:'exportxlsx',\r\n type:'success',\r\n stylingMode:\"outlined\",\r\n onClick: () => dataGrid.current.instance.exportToExcel(false)\r\n }\r\n });\r\n }\r\n\r\n const onInitNewRow = (e) => {\r\n e.data.active = true;\r\n }\r\n\r\n const title = 'Vendedores';\r\n \r\n return (\r\n <div className=\"container\">\r\n <Title title={title}/>\r\n <BlockHeader title={title}/> \r\n <DataGrid id=\"gridContainer\"\r\n ref={dataGrid}\r\n selection={{ mode: 'single' }}\r\n dataSource={store({uri : uri.vendors})}\r\n showBorders={true}\r\n showRowLines={true}\r\n allowColumnResizing={true}\r\n allowColumnReordering={true}\r\n rowAlternationEnabled={true}\r\n hoverStateEnabled={true}\r\n onToolbarPreparing={onToolbarPreparing}\r\n onInitNewRow={onInitNewRow}\r\n onExporting={(e) => onExporting(e, title)}\r\n >\r\n <Paging defaultPageSize={20} />\r\n <Pager\r\n showPageSizeSelector={true}\r\n allowedPageSizes={[10, 20, 50]}\r\n />\r\n <FilterRow visible={true} />\r\n <HeaderFilter visible={true} />\r\n <ColumnChooser enabled={true} />\r\n <Export enabled={false} fileName={title} allowExportSelectedData={true} />\r\n <Column dataField=\"fullName\"caption=\"Nombre\" width={300} />\r\n <Column dataField=\"phoneNumber\" caption=\"Telefono\" width={150} />\r\n <Column dataField=\"cellNumber\" caption=\"Celular\" width={150} />\r\n <Column dataField=\"email\" />\r\n <Column dataField=\"address\" caption=\"Direccion\"/>\r\n <Column dataField=\"observation\" visible={false} caption=\"Observacion\"/>\r\n <Column dataField=\"active\" width={100} caption=\"Activo\">\r\n </Column> \r\n <Editing\r\n mode=\"popup\"\r\n allowUpdating={true}\r\n allowDeleting={true}\r\n useIcons={true}\r\n >\r\n <Popup title={title} showTitle={true} width={850} height={420}>\r\n \r\n </Popup>\r\n <Form>\r\n <Item dataField=\"fullName\" editorOptions={{ width:300 }} >\r\n <RequiredRule message=\"El nombre es requerido\"/>\r\n <StringLengthRule max={100} min={2} message=\"Máximo de caracteres 100 y 2 mínimo\"/>\r\n </Item>\r\n <Item dataField=\"phoneNumber\" editorOptions={{ width:300 }} >\r\n <StringLengthRule max={15} min={0} message=\"Máximo de caracteres 15 y 2 mínimo\"/>\r\n </Item> \r\n <Item dataField=\"cellNumber\" editorOptions={{ width:300 }} >\r\n <StringLengthRule max={15} min={0} message=\"Máximo de caracteres 15 y 2 mínimo\"/>\r\n </Item> \r\n <Item dataField=\"email\" editorOptions={{ width:300 }} >\r\n <StringLengthRule max={50} min={0} message=\"Máximo de caracteres 50 y 2 mínimo\"/>\r\n </Item> \r\n <Item dataField=\"address\" colSpan={2} editorType=\"dxTextArea\" editorOptions={{ height: 50 }} >\r\n <RequiredRule message=\"La direccion es requerida\"/>\r\n <StringLengthRule max={150} message=\"Máximo de caracteres 150\"/>\r\n </Item> \r\n <Item dataField=\"observation\" colSpan={2} editorType=\"dxTextArea\" editorOptions={{ height: 50 }} >\r\n <StringLengthRule max={250} min={0} message=\"Máximo de caracteres 250 y 2 mínimo\"/>\r\n </Item> \r\n <Item dataField=\"active\" colSpan={2} editorType=\"dxSwitch\"\r\n editorOptions={editorOptionsSwitch} >\r\n </Item> \r\n </Form>\r\n </Editing>\r\n </DataGrid>\r\n </div>\r\n )\r\n\r\n};\r\n\r\nexport default Vendors;","import { DIALOG_AREAPRODUCT } from \"../consts\";\r\n\r\nexport const dialogAreaProduct = payload => ({ type: DIALOG_AREAPRODUCT, payload });\r\n\r\nexport default function areaProductDialogReducer(state = {}, { type, payload }) {\r\n\r\n const actions = {\r\n [DIALOG_AREAPRODUCT] : () => ({...state, ...payload })\r\n };\r\n\r\n return actions[type]?.call() || state;\r\n}","import React, { useEffect, useRef, useState } from 'react';\r\nimport { Popup } from 'devextreme-react/popup';\r\nimport Form, { SimpleItem, GroupItem, Label, AsyncRule, EmptyItem, RequiredRule } from 'devextreme-react/form';\r\nimport { useDispatch, useSelector } from 'react-redux'\r\nimport notify from 'devextreme/ui/notify';\r\nimport uri from '../../../utils/uri';\r\nimport http from '../../../utils/http';\r\nimport { dialogAreaProduct } from '../../../store/areaProduct/areaProductDialogReducer';\r\nimport { Button } from 'devextreme-react';\r\nimport { editorOptionsNumberBox, editorOptionsSwitch } from '../../../data/app';\r\nimport { convert2 } from '../../../data/defaultObjects';\r\n\r\n\r\nconst Nuevo = props => {\r\n\r\n const { areaId } = props;\r\n\r\n let refAreaProduct = useRef();\r\n let refProductConvert = useRef();\r\n\r\n const [areaProduct, setAreaProduct] = useState({});\r\n const [productConvert, setProductConvert] = useState({ areaId, convertProductId: 0, convertProductQuantity: 0, name: ''});\r\n const [areaProductConvert, setAreaProductConvert] = useState({});\r\n\r\n const [saving, setSaving] = useState(false);\r\n const [converting, setConverting] = useState(false);\r\n const { open, productId, name, internalCode } = useSelector(store => store.areaProductDialog);\r\n\r\n const dispatch = useDispatch();\r\n\r\n const closeDialog = ( load ) => {\r\n\r\n dispatch(dialogAreaProduct({open : false, id: 0}));\r\n\r\n if (load) {\r\n\r\n let { onSave } = props;\r\n onSave();\r\n \r\n }\r\n }\r\n\r\n const onHiding = ({ load }) => {\r\n\r\n refAreaProduct.current.instance.resetValues();\r\n setAreaProduct({});\r\n closeDialog(load);\r\n \r\n }\r\n\r\n const convertProductAsync = async() => {\r\n\r\n let resultValidate = refProductConvert.current.instance.validate();\r\n\r\n let result = resultValidate;\r\n\r\n if(resultValidate.complete)\r\n result = await resultValidate.complete; \r\n \r\n if (result.isValid) \r\n {\r\n setConverting(true);\r\n http(uri.areaProductConvert(areaId).insert).asPost({\r\n areaId: areaId,\r\n productId: productId,\r\n quantity: productConvert.convertProductQuantity,\r\n costReal: productConvert.costReal,\r\n costAvg: productConvert.costAvg,\r\n price: productConvert.price\r\n })\r\n .then(resp => {\r\n setConverting(false);\r\n notify(`Producto convertido correctamente`);\r\n closeDialog(true);\r\n })\r\n .catch(err => {\r\n setConverting(false);\r\n notify(err,'error');\r\n })\r\n }\r\n\r\n }\r\n\r\n const guardarProduct = (e) => {\r\n\r\n let result = refAreaProduct.current.instance.validate();\r\n if (result.isValid) \r\n {\r\n setSaving(true);\r\n http(uri.areaProducts(areaId).insert).asPost({...areaProduct})\r\n .then(resp => {\r\n setSaving(false);\r\n notify(`Producto modificado correctamente`);\r\n closeDialog(true);\r\n })\r\n .catch(err => {\r\n setSaving(false);\r\n notify(err,'error');\r\n })\r\n }\r\n }\r\n const onValueChanged = (e) => {\r\n if(e.value){\r\n setAreaProduct({...areaProduct, inherit: e.value, stockMin: 0, stockMax: 0, discount : 0});\r\n\r\n }\r\n else{\r\n setAreaProduct({...areaProduct, inherit: e.value, stockMin: 1, stockMax: 1, discount : 0});\r\n } \r\n\r\n }\r\n\r\n const validationCallback = (e) => {\r\n\r\n let result = e.value > 0 && e.value != '' && e.value != 0 && e.value != null;\r\n\r\n let isMupli = e.value % areaProduct.product.convertSourceQuantiy == 0;\r\n\r\n return new Promise((resolve,reject) => {\r\n if(!isMupli)\r\n reject('La cantidad a convertir debe ser multiplo de ' + areaProduct.product.convertSourceQuantiy); \r\n resolve(result);\r\n });\r\n }\r\n\r\n\r\n useEffect(() => {\r\n\r\n if(productId > 0){\r\n http(uri.areaProducts(areaId).getById(productId)).asGet()\r\n .then(resp => {\r\n\r\n let costReal = 0;\r\n let costAvg = 0;\r\n let price = 0;\r\n\r\n setAreaProduct({productId, name, internalCode, ...resp.areaProduct});\r\n\r\n if(resp.areaProductToConvert){\r\n\r\n costReal = resp.areaProductToConvert.costReal;\r\n costAvg = resp.areaProductToConvert.costAvg;\r\n price = resp.areaProductToConvert.price;\r\n\r\n }\r\n\r\n setProductConvert({...productConvert,convertProductQuantity:resp.areaProduct.product.convertSourceQuantiy, name: resp.productoToConvert?.name,costReal, costAvg, price});\r\n })\r\n }\r\n \r\n }, [open]);\r\n\r\n const onValueChangedConvert = (e) => {\r\n\r\n let costReal = 0;\r\n let costAvg = 0;\r\n let price = 0;\r\n\r\n if(e.value > 0)\r\n {\r\n if(areaProduct.product.convertSourceQuantiy > areaProduct.product.convertProductQuantity)\r\n {\r\n price = convert2(areaProduct.price * areaProduct.product.convertSourceQuantiy);\r\n costReal = convert2(areaProduct.costReal * areaProduct.product.convertSourceQuantiy);\r\n costAvg = convert2(areaProduct.costAvg * areaProduct.product.convertSourceQuantiy);\r\n }else\r\n {\r\n costReal = convert2(areaProduct.costReal / areaProduct.product.convertProductQuantity);\r\n costAvg = convert2(areaProduct.costAvg / areaProduct.product.convertProductQuantity);\r\n price = convert2(areaProduct.price / areaProduct.product.convertProductQuantity);\r\n }\r\n } \r\n\r\n setProductConvert({...productConvert, convertProductQuantity: e.value, costReal, costAvg, price});\r\n }\r\n\r\n const getQuantity = (e) => {\r\n\r\n if(areaProduct && areaProduct.product)\r\n if(open)\r\n return productConvert.convertProductQuantity / areaProduct.product.convertSourceQuantiy * areaProduct.product.convertProductQuantity\r\n \r\n return 0;\r\n }\r\n\r\n const quantityToConvertText = `Cantidad de ${areaProduct?.product?.unitOfMeasure?.name}`;\r\n\r\n const productoToConvertText = <div>Convertir a <b>{getQuantity()}</b> {productConvert?.name}</div>;\r\n\r\n return (\r\n <div>\r\n <Popup\r\n width={600}\r\n height={640}\r\n title={`Inventario`}\r\n onHiding={onHiding}\r\n visible={open}\r\n className=\"bg-fbfbfb\" \r\n > \r\n <Form formData={{\r\n productId : areaProduct.productId,\r\n name : areaProduct.name,\r\n stock : areaProduct.stock,\r\n internalCode : areaProduct.internalCode\r\n }} readOnly={true}>\r\n <GroupItem colCount={3}>\r\n <SimpleItem dataField=\"productId\" colSpan={1} editorType=\"dxNumberBox\"> \r\n <Label text=\"Codigo\" />\r\n </SimpleItem>\r\n <SimpleItem dataField=\"internalCode\" colSpan={1}> \r\n <Label text=\"Código\" />\r\n </SimpleItem>\r\n <SimpleItem dataField=\"stock\" colSpan={1}> \r\n <Label text=\"Existencias\" />\r\n </SimpleItem> \r\n <SimpleItem dataField=\"name\" colSpan={3}> \r\n <Label text=\"Nombre\" />\r\n </SimpleItem>\r\n \r\n </GroupItem>\r\n </Form>\r\n <Form formData={areaProduct} ref={refAreaProduct}>\r\n <GroupItem colCount={2}> \r\n <GroupItem caption=\"Configuración de Costos y precios\" colSpan={2} colCount={2}>\r\n <SimpleItem dataField=\"inherit\" colSpan={2} editorType=\"dxSwitch\" \r\n editorOptions={{\r\n ...editorOptionsSwitch,\r\n onValueChanged : onValueChanged\r\n }}> \r\n <Label text=\"Heredar\" /> \r\n </SimpleItem> \r\n <SimpleItem dataField=\"stockMin\" colSpan={1} editorType=\"dxNumberBox\" \r\n editorOptions={{...editorOptionsNumberBox, disabled : areaProduct.inherit}}>\r\n <Label text=\"Mínimo\" />\r\n </SimpleItem> \r\n <SimpleItem dataField=\"costReal\" colSpan={1} editorType=\"dxNumberBox\" \r\n editorOptions={{...editorOptionsNumberBox }} >\r\n <Label text=\"Cost\" />\r\n <RequiredRule message=\"Ingrese el costo real\" />\r\n </SimpleItem>\r\n <SimpleItem dataField=\"costAvg\" colSpan={1} editorType=\"dxNumberBox\" \r\n editorOptions={{...editorOptionsNumberBox }} >\r\n <Label text=\"Cost Promedio\" />\r\n <RequiredRule message=\"Ingrese el costo promedio\" />\r\n </SimpleItem>\r\n <SimpleItem dataField=\"price\" colSpan={1} editorType=\"dxNumberBox\" \r\n editorOptions={{...editorOptionsNumberBox }} >\r\n <Label text=\"Precio Vta\" />\r\n <RequiredRule message=\"Ingrese el precio de venta\" />\r\n </SimpleItem> \r\n </GroupItem>\r\n \r\n \r\n </GroupItem>\r\n </Form> \r\n <Button\r\n width={120}\r\n text={`${saving?'Guardando...':'Guardar'}`}\r\n type=\"default\"\r\n icon=\"save\"\r\n stylingMode=\"contained\"\r\n className=\"m-1\"\r\n disabled={saving}\r\n onClick={guardarProduct}\r\n />\r\n <Form formData={productConvert} ref={refProductConvert}>\r\n <GroupItem colCount={2} caption='Conversión'> \r\n \r\n <SimpleItem colSpan={2} dataField=\"convertProductQuantity\" editorType=\"dxNumberBox\" editorOptions={{\r\n onValueChanged : onValueChangedConvert,\r\n max: areaProduct.stock,\r\n min: areaProduct?.product?.convertSourceQuantiy || 0,\r\n step: areaProduct?.product?.convertSourceQuantiy || 1,\r\n disabled: productConvert?.name == undefined,\r\n ...editorOptionsNumberBox,\r\n }}>\r\n <Label text={quantityToConvertText} />\r\n <AsyncRule message=\"Ingrese la cantidad a convertir\" validationCallback={validationCallback}></AsyncRule>\r\n </SimpleItem>\r\n <SimpleItem dataField=\"costReal\" colSpan={1} editorType=\"dxNumberBox\" \r\n editorOptions={{disabled: productConvert?.name == undefined,...editorOptionsNumberBox }} >\r\n <Label text=\"Cost\" />\r\n </SimpleItem>\r\n <SimpleItem dataField=\"costAvg\" colSpan={1} editorType=\"dxNumberBox\" \r\n editorOptions={{disabled: productConvert?.name == undefined,...editorOptionsNumberBox }} >\r\n <Label text=\"Cost Promedio\" />\r\n </SimpleItem>\r\n <SimpleItem dataField=\"price\" colSpan={1} editorType=\"dxNumberBox\" \r\n editorOptions={{disabled: productConvert?.name == undefined,...editorOptionsNumberBox }} >\r\n <Label text=\"Precio Vta\" />\r\n </SimpleItem>\r\n <EmptyItem colSpan={1} />\r\n <SimpleItem colSpan={2}>\r\n <div>\r\n {productoToConvertText}\r\n </div>\r\n </SimpleItem>\r\n </GroupItem>\r\n </Form> \r\n <Button\r\n width={150}\r\n text={`${converting?'Convertiendo...':'Convertir'}`}\r\n type=\"default\"\r\n icon=\"save\"\r\n stylingMode=\"contained\"\r\n className=\"m-1\"\r\n visible={true}\r\n disabled={converting}\r\n onClick={convertProductAsync}\r\n />\r\n </Popup>\r\n </div>\r\n );\r\n}\r\n\r\nexport default Nuevo;\r\n","import React,{ useRef } from 'react';\r\nimport DataGrid, {\r\n Column,\r\n ColumnChooser,\r\n Editing,\r\n Export,\r\n FilterRow,\r\n HeaderFilter,\r\n Lookup,\r\n Pager,\r\n Paging, \r\n Button as ButtonGrid \r\n} from 'devextreme-react/data-grid';\r\nimport BlockHeader from '../../../components/shared/BlockHeader';\r\nimport Title from '../../../components/shared/Title';\r\nimport uri from '../../../utils/uri';\r\nimport { useDispatch, useSelector } from 'react-redux';\r\nimport { store } from '../../../services/store';\r\nimport { createStore } from '../../../utils/proxy';\r\nimport Nuevo from './Nuevo';\r\nimport { dialogAreaProduct } from '../../../store/areaProduct/areaProductDialogReducer';\r\nimport onExporting from '../../../components/grids/Importer';\r\nimport { dataFormatId } from '../../../utils/common';\r\nimport { defaultLabels } from '../../../data/defaultObjects';\r\nimport useAuthorization from '../../../hooks/useAuthorization';\r\nimport { resources } from '../../../data/app';\r\n\r\n\r\nconst Stock = () => {\r\n\r\n const [ authorized, _, canSeeColCost ] = useAuthorization( resources.verReporteStock, resources.verColumnaCostoStock );\r\n\r\n const { areaId } = useSelector(store => store.user);\r\n\r\n const dataGrid = useRef();\r\n const dispatch = useDispatch();\r\n\r\n const openDialog = (e) => {\r\n\r\n const { productId, product } = e.row.data;\r\n dispatch(dialogAreaProduct({open : true, productId, name : product.name, internalCode: product.internalCode}));\r\n } \r\n \r\n\r\n const onCellPrepared = e => {\r\n \r\n if (e.rowType == 'data') { \r\n if(e.column.dataField == \"stock\" && e.data.stockMin)\r\n if(e.data.stock < e.data.stockMin)\r\n e.cellElement.classList.add('txt-stockMin'); \r\n else\r\n e.cellElement.classList.add('txt-stock'); \r\n\r\n }\r\n\r\n }\r\n\r\n const cb = data => data.map(x => {\r\n x.isLimit = x.stockMin ? x.stock <= x.stockMin : false\r\n return x;\r\n });\r\n\r\n const onSave = () => dataGrid.current.instance.refresh();\r\n\r\n const onToolbarPreparing = (e) => {\r\n e.toolbarOptions.items.unshift({\r\n location: 'before',\r\n widget: 'dxButton',\r\n options: {\r\n text: 'Exportar a excel',\r\n icon: 'exportxlsx',\r\n type: 'success',\r\n stylingMode: \"outlined\",\r\n onClick: () => dataGrid.current.instance.exportToExcel(false)\r\n }\r\n });\r\n }\r\n\r\n const calculateFilterExpression = (value, selectedFilterOperation, target) => { \r\n\r\n const values = value.split('%');\r\n let filters = values.map(v => {\r\n return ['product.name', 'contains', v];\r\n });\r\n\r\n const filterFull = [];\r\n\r\n if (filters.length > 1) {\r\n\r\n for (let index = 0; index < filters.length; index++) {\r\n const element = filters[index];\r\n filterFull.push(element);\r\n if (index < filters.length - 1) {\r\n filterFull.push('and');\r\n }\r\n }\r\n return filterFull;\r\n\r\n }else{\r\n return [filters]\r\n }\r\n }\r\n \r\n\r\n const title = 'Stock';\r\n\r\n return authorized(\r\n <div className=\"container\">\r\n <Title title={title} />\r\n <BlockHeader title={title} >\r\n </BlockHeader> \r\n <Nuevo onSave={onSave} areaId={areaId}/>\r\n <DataGrid id=\"gridContainer\"\r\n ref={dataGrid}\r\n selection={{ mode: 'single' }}\r\n dataSource={store({ uri: uri.areaProducts(areaId), cb })}\r\n showBorders={true}\r\n showRowLines={true}\r\n allowColumnResizing={true}\r\n allowColumnReordering={true}\r\n hoverStateEnabled={true}\r\n onCellPrepared={onCellPrepared}\r\n onToolbarPreparing={onToolbarPreparing}\r\n onExporting={(e) => onExporting(e, title)}\r\n >\r\n <Paging defaultPageSize={20} />\r\n <Pager\r\n showPageSizeSelector={true}\r\n allowedPageSizes={[10, 20, 50]}\r\n showInfo={true}\r\n />\r\n <Export enabled={false} fileName={title} allowExportSelectedData={true} />\r\n <FilterRow visible={true} />\r\n <HeaderFilter visible={true} />\r\n <ColumnChooser enabled={true} />\r\n <Column dataField=\"areaId\" visible={false} />\r\n <Column dataField=\"productId\" caption='Id' width={70} visible={false}/>\r\n <Column dataField=\"product.internalCode\" caption='Codigo' width={90} cellRender={dataFormatId}/>\r\n <Column dataField=\"product.name\" caption='Nombre' minWidth={120} calculateFilterExpression={calculateFilterExpression}/>\r\n <Column dataField=\"product.familyId\" caption={defaultLabels.family} width={100}>\r\n <Lookup disabled={true} dataSource={createStore({ name: 'family' })} valueExpr=\"id\" displayExpr=\"name\" />\r\n </Column>\r\n <Column dataField=\"product.presentationId\" caption={defaultLabels.presentacion} width={100}>\r\n <Lookup disabled={true} dataSource={createStore({ name: 'presentation' })} valueExpr=\"id\" displayExpr=\"name\" />\r\n </Column>\r\n <Column dataField=\"product.unitOfMeasureId\" caption=\"UM\" width={100}>\r\n <Lookup disabled={true} dataSource={createStore({ name: 'UnitOfMeasure' })} valueExpr=\"id\" displayExpr=\"name\" />\r\n </Column>\r\n <Column dataField=\"stock\" caption='Cantidad' width={100}/>\r\n { canSeeColCost && <Column dataField=\"costAvg\" caption='Costo' width={90}/> }\r\n <Column dataField=\"price\" caption='Precio' width={90}/>\r\n <Column dataField=\"inherit\" caption='Heredado' width={100} allowHeaderFiltering={false} visible={false}/>\r\n <Column dataField=\"stockMin\" caption=\"Mín\" width={60} allowHeaderFiltering={false} visible={false}/>\r\n <Column dataField=\"stockMax\" caption=\"Máx\" width={60} allowHeaderFiltering={false} visible={false}/>\r\n <Column dataField=\"isLimit\" caption=\"Agotado\" width={80} allowHeaderFiltering={false}/>\r\n <Column dataField=\"discount\" caption=\"% Desc\" format=\"#0%\" width={80} allowHeaderFiltering={false}/>\r\n { canSeeColCost && \r\n <Column type=\"buttons\" width={60}>\r\n <ButtonGrid name=\"edit\" onClick={e => openDialog(e)}/>\r\n </Column>\r\n }\r\n <Editing\r\n mode=\"popup\"\r\n allo\r\n useIcons={true}\r\n allowUpdating={true}\r\n > \r\n </Editing>\r\n </DataGrid>\r\n </div>\r\n );\r\n}\r\n\r\nexport default Stock;\r\n","import React from 'react';\r\n\r\nconst Navig = (props) => {\r\n\r\n const { location } = props;\r\n\r\n setTimeout(() => {\r\n var pathname = location?.state?.returnUrl;\r\n props.history.push({ pathname });\r\n }, 1000);\r\n\r\n return (\r\n <div>\r\n \r\n </div>\r\n );\r\n}\r\n\r\nexport default Navig;\r\n","import React from \"react\"\r\n\r\n\r\nexport const DivForm = ({title, required= false, children}) => {\r\n return(\r\n <div className=\"dx-field\">\r\n <div className=\"dx-field-label\" style={{ width : '30%' }}>\r\n {title} {required && <span className=\"dx-field-item-required-mark\">*</span>}\r\n </div>\r\n <div className=\"dx-field-value\" style={{ width : '70%' }}>\r\n {children}\r\n </div>\r\n </div>\r\n )\r\n}\r\n\r\nexport const DivFormColumns = ({title, description, required= false, children}) => {\r\n return(\r\n <div className=\"dx-field\" style={{ borderRadius : '10px', padding:7, border :'solid 1px #e9e9e9',margin: '0 0 10px' }}>\r\n <div className=\"dx-field-label\" style={{ width : '100%', fontSize: 15, fontWeight : \"bold\", paddingBottom : 0, paddingTop:0 }}>\r\n {title} {required && <span className=\"dx-field-item-required-mark\">*</span>}\r\n </div>\r\n <div className=\"dx-field-label\" style={{ width : '100%', color: \"grey\", paddingBottom : 4, paddingTop:4, textWrap: 'wrap', fontSize:'12px' }}>\r\n {description}\r\n </div>\r\n <div className=\"dx-field-value\" style={{ width : '100%' }}>\r\n {children}\r\n </div>\r\n </div>\r\n )\r\n}","import React, { useRef, useState } from 'react';\r\nimport { DropDownBox, DataGrid } from 'devextreme-react';\r\nimport { Column, Paging, Scrolling, Selection } from 'devextreme-react/data-grid';\r\nimport DataSource from \"devextreme/data/data_source\";\r\nimport http from \"../../utils/http\";\r\nimport uri from \"../../utils/uri\";\r\n\r\nconst dataSource = () => new DataSource({\r\n load: (loadOptions) => {\r\n\r\n let params = {};\r\n params.skip = loadOptions.skip || 0;\r\n params.take = loadOptions.take || 10;\r\n\r\n if(loadOptions.searchValue)\r\n params.name = loadOptions.searchValue ;\r\n\r\n return http(uri.clients.asCatalog)\r\n .asGet(params).then(x => x.items);\r\n \r\n },\r\n byKey: id => http(uri.clients.getById(id)).asGet(),\r\n paginate : true,\r\n pageSize: 10\r\n})\r\n\r\nexport const editorOptionsDropDown = {\r\n \r\n dataSource: dataSource(),\r\n valueExpr:\"id\",\r\n displayExpr: item => item ? `${item.id} - ${item.name} ${item.lastName}` : '',\r\n searchEnabled: true\r\n}\r\n\r\n\r\n\r\nexport const DropDownBoxClient = props => {\r\n\r\n const dropDownBoxRef = useRef();\r\n\r\n const { onValueChanged } = props;\r\n const [value, setValue] = useState(0);\r\n\r\n const contentRender = (params) => {\r\n\r\n const onSelectionChanged =e =>{\r\n\r\n if (e.selectedRowKeys.length > 0) { \r\n dropDownBoxRef.current.instance.close(); \r\n setValue(e.selectedRowKeys[0].id); \r\n onValueChanged(e.selectedRowKeys[0].id)\r\n } \r\n \r\n }\r\n \r\n return (\r\n <DataGrid\r\n dataSource={dataSource()}\r\n hoverStateEnabled={true}\r\n remoteOperations={{\r\n paging: true,\r\n filtering: true\r\n }}\r\n selectedRowKeys={[value]}\r\n onSelectionChanged={onSelectionChanged}\r\n height=\"100%\">\r\n <Selection mode=\"single\" />\r\n <Scrolling mode=\"infinite\" />\r\n <Paging enabled={true} pageSize={10} /> \r\n <Column width={80} dataField=\"id\" caption=\"Codigo\" /> \r\n <Column width={150} dataField=\"identification\" caption=\"Identificacion\" /> \r\n <Column dataField=\"fullName\" caption=\"Nombre\" /> \r\n <Column width={150} dataField=\"fileNumber\" caption=\"# Expediente\" /> \r\n </DataGrid>\r\n );\r\n }\r\n\r\n return( \r\n <DropDownBox\r\n width={750}\r\n ref={dropDownBoxRef}\r\n value={[value]}\r\n valueExpr=\"id\"\r\n displayExpr={item => item ? `${item.name} ${item.lastName}` : ''}\r\n placeholder=\"Seleccione un cliente\" \r\n dataSource={dataSource()}\r\n // onValueChanged={onValueChanged} \r\n contentRender={contentRender} \r\n />\r\n )\r\n}","import React, { useEffect, useMemo, useState } from 'react';\r\nimport { Button, NumberBox, SelectBox, Switch, } from 'devextreme-react';\r\nimport { TextBox, Button as TextBoxButton } from 'devextreme-react/text-box';\r\n\r\nimport {\r\n Validator,\r\n RequiredRule,\r\n CustomRule,\r\n StringLengthRule\r\n} from 'devextreme-react/validator';\r\nimport useAuthorization from '../../hooks/useAuthorization';\r\nimport { calculateEvaluate, dataAccess, editorOptionsNumberBox, editorOptionsSelect, editorOptionsSwitch, resources } from '../../data/app';\r\nimport http from '../../utils/http';\r\nimport notify from 'devextreme/ui/notify';\r\nimport { useSelector,useDispatch } from 'react-redux';\r\nimport { setAppInfo } from '../../store/app/appActions';\r\nimport BlockHeader from '../../components/shared/BlockHeader';\r\nimport Title from '../../components/shared/Title';\r\nimport { DivForm, DivFormColumns } from '../../components/form/DivForm';\r\nimport { editorOptionsDropDown } from '../../components/dropdown/ClienteDropDown';\r\nimport { createStoreLocal } from '../../utils/proxy';\r\n\r\nconst AppConfig = () => {\r\n\r\n const [ authorized ] = useAuthorization( resources.app );\r\n const [saving, setSaving] = useState({\r\n loading : false,\r\n text : 'Guardar'\r\n });\r\n\r\n const dispatch = useDispatch();\r\n const { appInfo } = useSelector(store => store);\r\n\r\n const [app, setApp] = useState({...appInfo});\r\n const [textValuated, setTextValuated] = useState('');\r\n const [textValuatedLocal, setTextValuatedLocal] = useState('');\r\n const [textValuatedPrice, setTextValuatedPrice] = useState('');\r\n \r\n\r\n const onFormSubmit = (e) => {\r\n\r\n e.preventDefault();\r\n\r\n setSaving({loading : true, text:'Guardando...'});\r\n http('about/set-info').asPost(app).then(resp => {\r\n\r\n notify('Datos actualizados');\r\n setSaving({loading : false, text:'Guardar'});\r\n dispatch(setAppInfo(app));\r\n \r\n }).catch(err => {\r\n\r\n notify(err, 'error');\r\n setSaving({loading : false, text:'Guardar'});\r\n\r\n });\r\n }\r\n\r\n useEffect(() => {\r\n setApp({...app, ...appInfo});\r\n }, [appInfo]);\r\n\r\n const title = 'Configuracion';\r\n\r\n const costMock = 100;\r\n\r\n \r\n\r\n const evaluateRules = rule => {\r\n\r\n if(rule.value?.length > 0){\r\n\r\n const valSpaceless = rule.value.replace(/\\s/g, '');\r\n\r\n if(valSpaceless.startsWith('*') || valSpaceless.startsWith('+') || valSpaceless.startsWith('-') || valSpaceless.startsWith('/')){\r\n \r\n const result = calculateEvaluate(costMock, rule.value); \r\n \r\n if (result == null) return false;\r\n if (result == undefined) return false;\r\n if (isNaN(result)) return false;\r\n \r\n return true; \r\n \r\n }\r\n\r\n rule.rule.message = 'La formula debe iniciar con un operador matemático (*, +, -, /)';\r\n\r\n return false; \r\n\r\n }\r\n\r\n return true;\r\n\r\n }\r\n\r\n const setRule = propName => e => {\r\n\r\n const result = calculateEvaluate(costMock, e.value);\r\n const text = `Costo=${costMock}, Formula: ${costMock}${e.value}, Resultado del costo real: ${result}`\r\n\r\n setApp(app => ({ ...app, [propName]: e.value }));\r\n\r\n if (propName == 'ruleCalcuteNewPrice') \r\n setTextValuated(text);\r\n\r\n if (propName == 'ruleCalcuteNewPriceLocal')\r\n setTextValuatedLocal(text);\r\n \r\n\r\n }\r\n \r\n const costButton = useMemo(\r\n () => ({\r\n text: 'Costo',\r\n stylingMode: 'text',\r\n onClick: () => 0,\r\n }),\r\n [],\r\n );\r\n\r\n const priceButton = useMemo(\r\n () => ({\r\n text: 'Precio',\r\n stylingMode: 'text',\r\n onClick: () => 0,\r\n }),\r\n [],\r\n );\r\n\r\n return authorized(\r\n <div className=\"container small\">\r\n <Title title={title} />\r\n <BlockHeader title='Configuracion del sistema' /> \r\n <form onSubmit={onFormSubmit}>\r\n <div className=\"dx-fieldset\">\r\n <div className=\"dx-fieldset-header\">Configuracion de la empresa</div>\r\n <DivFormColumns title='Nombre de la empresa'\r\n description=\"Ingrese nombre de la empresa\"> \r\n <TextBox \r\n value={app.name} \r\n onValueChanged={e => setApp(app => ({ ...app, name: e.value }))} \r\n >\r\n <Validator>\r\n <RequiredRule message=\"Este campo es requerido\" />\r\n </Validator>\r\n </TextBox>\r\n </DivFormColumns>\r\n <DivFormColumns title='Ruc'\r\n description=\"Ingrese ruc de la empresa\"> \r\n <TextBox \r\n value={app.slogan} \r\n onValueChanged={e => setApp(app => ({ ...app, slogan: e.value }))} \r\n >\r\n <Validator>\r\n <RequiredRule message=\"Este campo es requerido\" />\r\n </Validator>\r\n </TextBox>\r\n </DivFormColumns>\r\n <DivFormColumns title='Direción de la empresa'\r\n description=\"Ingrese la direción de la empresa\"> \r\n <TextBox \r\n value={app.address} \r\n onValueChanged={e => setApp(app => ({ ...app, address: e.value }))} \r\n >\r\n <Validator>\r\n <RequiredRule message=\"Este campo es requerido\" />\r\n </Validator>\r\n </TextBox>\r\n </DivFormColumns>\r\n <DivFormColumns title='Teléfono de la empresa'\r\n description=\"Ingrese el teléfono de la empresa\"> \r\n <TextBox \r\n value={app.phoneNumber} \r\n onValueChanged={e => setApp(app => ({ ...app, phoneNumber: e.value }))} \r\n >\r\n </TextBox>\r\n </DivFormColumns>\r\n <div className=\"dx-fieldset-header\">Configuracion de bodega principal</div>\r\n <DivFormColumns title='Area'\r\n description=\"Seleccione el area que desea como bodega pricipal\"> \r\n <SelectBox \r\n value={app.areaMainId} \r\n onValueChanged={e => setApp(app => ({ ...app, areaMainId: e.value }))}\r\n dataSource= {createStoreLocal({name : 'area'})}\r\n {...editorOptionsSelect}\r\n >\r\n <Validator>\r\n <RequiredRule message=\"Este campo es requerido\" />\r\n </Validator>\r\n </SelectBox>\r\n </DivFormColumns>\r\n <DivFormColumns title='Validar precio' \r\n description=\"Validar que el precio siempre sea mayor al costo en las salidas de inventario (no aplica para servicios)\"> \r\n <Switch style={{ float : \"left\" }} \r\n value={app.validatePriceGreaterCost} \r\n onValueChanged={e => setApp(app => ({ ...app, validatePriceGreaterCost: e.value }))} \r\n {...editorOptionsSwitch} \r\n > \r\n </Switch>\r\n </DivFormColumns>\r\n <div className=\"dx-fieldset-header\">Configuración de facturas</div>\r\n <DivFormColumns title='% de IVA' required\r\n description=\"El iva a aplicar en las facturas, compras y movimiento de inventario\"> \r\n <NumberBox \r\n value={app.iva} \r\n onValueChanged={e => setApp(app => ({ ...app, iva: e.value }))}\r\n {...editorOptionsNumberBox}\r\n >\r\n <Validator>\r\n <RequiredRule message=\"Este campo es requerido\" />\r\n </Validator>\r\n </NumberBox>\r\n </DivFormColumns>\r\n <DivFormColumns title='Cliente' required\r\n description=\"Cliente que se registra en la factura por defecto para aquellas facturas que son ventas rapidas\"> \r\n <SelectBox \r\n value={app.clientDefault}\r\n onValueChanged={e => setApp(app => ({ ...app, clientDefault: e.value }))}\r\n {...editorOptionsDropDown}\r\n >\r\n <Validator>\r\n <RequiredRule message=\"Este campo es requerido\" />\r\n </Validator>\r\n </SelectBox>\r\n </DivFormColumns>\r\n <DivFormColumns title='Factura tamaño A4' required\r\n description=\"Cliente que se registra en la factura por defecto para aquellas facturas que son ventas rapidas\"> \r\n <Switch style={{ float: \"left\" }}\r\n value={app.billA4Size}\r\n onValueChanged={e => setApp(app => ({ ...app, billA4Size: e.value }))}\r\n {...editorOptionsSwitch}\r\n >\r\n </Switch>\r\n </DivFormColumns>\r\n <DivFormColumns title='Validar credito de clientes' required\r\n description=\"Validar si se le puede dar credito a un cliente que no tenga configurado el limite de crédito\"> \r\n <Switch style={{ float: \"left\" }}\r\n value={app.validateCreditClient}\r\n onValueChanged={e => setApp(app => ({ ...app, validateCreditClient: e.value }))}\r\n {...editorOptionsSwitch}\r\n >\r\n </Switch>\r\n </DivFormColumns>\r\n <div className=\"dx-fieldset-header\">Configuración de Compras</div>\r\n <DivFormColumns title='Fórmula para compras de importación'\r\n description=\"Defina la fórmula para el cálculo del costo real en base al costo para las compras de importación\"> \r\n <div>\r\n <TextBox \r\n placeholder=' * 1.15 * 1.30'\r\n value={app.ruleCalcuteNewPrice}\r\n onValueChanged={setRule('ruleCalcuteNewPrice')}\r\n >\r\n <TextBoxButton\r\n name=\"ruleCalcuteNewPrice\"\r\n location=\"before\"\r\n options={costButton}\r\n />\r\n <Validator>\r\n <StringLengthRule max={350} message=\"Maximo de caracteres permitidos 350\" />\r\n <CustomRule \r\n validationCallback={evaluateRules}\r\n message=\"Fórmula incorrecta, verifique los valores ingresados\"\r\n />\r\n </Validator>\r\n </TextBox>\r\n <span>{textValuated}</span>\r\n </div>\r\n </DivFormColumns>\r\n <DivFormColumns title='Fórmula para compras locales'\r\n description=\"Defina la fórmula para el cálculo del costo real en base al costo para las compras locales\"> \r\n <div>\r\n <TextBox \r\n placeholder=' * 1.15 * 1.30'\r\n value={app.ruleCalcuteNewPriceLocal}\r\n onValueChanged={setRule('ruleCalcuteNewPriceLocal')}\r\n >\r\n <TextBoxButton\r\n name=\"ruleCalcuteNewPriceLocal\"\r\n location=\"before\"\r\n options={costButton}\r\n />\r\n <Validator>\r\n <StringLengthRule max={350} message=\"Maximo de caracteres permitidos 350\" />\r\n <CustomRule \r\n validationCallback={evaluateRules}\r\n message=\"Fórmula incorrecta, verifique los valores ingresados\"\r\n />\r\n </Validator>\r\n </TextBox>\r\n <span>{textValuatedLocal}</span>\r\n </div> \r\n \r\n </DivFormColumns>\r\n <DivFormColumns title='Fórmula para el precio en las compras '\r\n description=\"Defina la fórmula para el cálculo del precio real en base al costo para las compras\"> \r\n <div>\r\n <TextBox \r\n placeholder=' * 1.15 '\r\n value={app.ruleProfitPrice}\r\n onValueChanged={e => {\r\n\r\n setApp(app => ({ ...app, ruleProfitPrice: e.value }));\r\n const result = calculateEvaluate(costMock, e.value);\r\n const text = `Costo Real=${costMock}, Formula: ${costMock}${e.value}, Resultado del precio: ${result}`\r\n setTextValuatedPrice(text);\r\n\r\n }}\r\n >\r\n <TextBoxButton\r\n name=\"ruleProfitPrice\"\r\n location=\"before\"\r\n options={priceButton}\r\n />\r\n <Validator>\r\n <StringLengthRule max={350} message=\"Maximo de caracteres permitidos 350\" />\r\n <CustomRule \r\n validationCallback={evaluateRules}\r\n message=\"Fórmula incorrecta, verifique los valores ingresados\"\r\n />\r\n </Validator>\r\n </TextBox>\r\n <span>{textValuatedPrice}</span>\r\n </div> \r\n \r\n </DivFormColumns>\r\n \r\n </div>\r\n <Button \r\n icon='save'\r\n text={saving.text} \r\n disabled={saving.loading}\r\n type=\"default\" \r\n useSubmitBehavior={true}>\r\n </Button>\r\n </form> \r\n \r\n </div>\r\n );\r\n}\r\n\r\nexport default AppConfig;\r\n","import React, { useEffect, useState, useRef } from 'react';\r\nimport { DataGrid, Box, DateBox, SelectBox, Button, Popup } from 'devextreme-react';\r\nimport { Item } from \"devextreme-react/box\";\r\nimport {\r\n Paging,\r\n Pager, \r\n Column, \r\n FilterRow,\r\n Summary,\r\n TotalItem,\r\n GroupItem, \r\n Button as ButtonGrid,\r\n} from 'devextreme-react/data-grid';\r\nimport Title from '../../../components/shared/Title';\r\nimport BlockHeader from '../../../components/shared/BlockHeader';\r\n\r\nimport { _path } from \"../../../data/headerNavigation\"; \r\nimport { formatDate } from '../../../data/app';\r\nimport { cellRender, cellRenderBold, dataFormatId, formatId, toBoldMoney, toMoney } from '../../../utils/common';\r\n\r\nimport uri from '../../../utils/uri';\r\nimport http from '../../../utils/http';\r\nimport { dateByReport } from '../../../data/defaultObjects';\r\nimport { userService } from '../../../services/user.service';\r\nimport moment from 'moment';\r\nimport ReceiptByBillId from '../../receipts/ReceiptByBillId';\r\nimport Nuevo from '../../bills/Nuevo';\r\nimport { billDialogAction } from '../../../store/bill/billDialogReducer';\r\nimport { useDispatch } from 'react-redux';\r\n\r\nconst Comision = (props) => {\r\n\r\n const user = userService.getUser();\r\n const dispatch = useDispatch();\r\n const refGrid = useRef();\r\n\r\n const [ users, setUsers ] = useState([]);\r\n const [ username, setUsername ] = useState(user.username);\r\n const [ dateFrom, setDateFrom ] = useState(dateByReport.from);\r\n const [ dateTo, setDateTo ] = useState(dateByReport.to);\r\n const [ data, setData ] = useState(undefined);\r\n const [ loading, setLoading ] = useState(false); \r\n const [dialogReceipt, setDialogReceipt] = useState({ open: false, id: 0, reference: 0 });\r\n\r\n const changeUser = e => setUsername(e.value); \r\n\r\n const changeDateFrom = e => setDateFrom(e.value);\r\n\r\n const changeDateTo = e => setDateTo(e.value); \r\n\r\n useEffect(() => {\r\n http(uri.users.get).asGet().then(resp => setUsers(resp));\r\n }, [0]);\r\n\r\n const loadReport = () => {\r\n if(dateFrom && dateTo){\r\n setLoading(true);\r\n http('reports/comissions').asPost({username, from : dateFrom, to: dateTo}).then(resp => {\r\n setData(resp);\r\n setLoading(false);\r\n }); \r\n }\r\n };\r\n\r\n const onCellPrepared = e => {\r\n \r\n if (e.rowType == 'data') { \r\n\r\n if (e.column.dataField == 'billId')\r\n e.cellElement.classList.add('col-id-factura');\r\n } \r\n\r\n } \r\n\r\n const DateCell = (cellData) => {\r\n\r\n const { billDate, payOfDate, diasTranscurridos, daysMora } = cellData.data;\r\n let datePaid = 'datePaid';\r\n if(daysMora > 0)\r\n datePaid = 'dateMora';\r\n\r\n \r\n return (\r\n <div>\r\n <div className=\"current-value\">\r\n <span className='datebill'>{moment(billDate).format('DD/MM/YYYY')}</span>-<span className={datePaid}>{moment(payOfDate).format('DD/MM/YYYY')}</span> <b>{diasTranscurridos}</b>\r\n </div> \r\n </div>\r\n );\r\n };\r\n\r\n const showDialog = id => dispatch(billDialogAction({ open: true, id })); \r\n\r\n const showReceipt = ( id, nombre ) => setDialogReceipt({ open: true, id, reference:id, cliente:nombre })\r\n\r\n const title = 'Comisiones';\r\n \r\n return (\r\n <div className=''>\r\n <Title title={title} />\r\n <BlockHeader title={title} showFavorite={true} {...props} />\r\n <Popup\r\n width={800}\r\n height={400}\r\n title={`Recibos`}\r\n onHiding={e => setDialogReceipt({ open: false, id: 0 })}\r\n visible={dialogReceipt.open}\r\n className=\"bg-fbfbfb\"\r\n >\r\n <ReceiptByBillId id={dialogReceipt.id} reference={dialogReceipt.reference} onSave={_ => _} cliente={dialogReceipt.cliente} />\r\n </Popup>\r\n <Nuevo onSave={_ => _} { ...props } />\r\n <Box direction=\"row\" width=\"100%\" height={75}> \r\n <Item ratio={1}>\r\n <div className=\"ml-10\">\r\n <label>Desde:</label>\r\n <DateBox type=\"date\" \r\n value={dateFrom}\r\n displayFormat={formatDate} \r\n openOnFieldClick={true} \r\n onValueChanged={changeDateFrom}/>\r\n </div>\r\n </Item>\r\n <Item ratio={1}>\r\n <div className=\"ml-10\">\r\n <label>Hasta:</label>\r\n <DateBox type=\"date\" \r\n value={dateTo}\r\n displayFormat={formatDate} \r\n openOnFieldClick={true} \r\n onValueChanged={changeDateTo}/>\r\n </div>\r\n </Item> \r\n <Item ratio={1}>\r\n <div className=\"ml-10\">\r\n <label>Usuario:</label>\r\n <SelectBox items={users}\r\n placeholder=\"Selecciona\"\r\n showClearButton={true} valueExpr=\"username\" displayExpr=\"username\" \r\n value={username}\r\n onValueChanged={changeUser} \r\n />\r\n </div>\r\n </Item> \r\n \r\n <Item ratio={1}>\r\n <div style={{ paddingTop : '19px' }}>\r\n <Button\r\n width={120}\r\n text={`${loading ? 'Buscando...' : 'Buscar'}`}\r\n type=\"default\"\r\n icon=\"search\"\r\n stylingMode=\"contained\"\r\n className=\"m-1\"\r\n disabled={loading}\r\n onClick={loadReport}\r\n />\r\n </div>\r\n </Item>\r\n <Item ratio={1}>\r\n <div style={{ paddingTop : '19px' }}>\r\n <Button\r\n width={180}\r\n text={`Exportar a Excel`}\r\n type=\"success\"\r\n icon=\"file\"\r\n stylingMode=\"contained\"\r\n className=\"m-1\"\r\n disabled={loading}\r\n onClick={() => { \r\n refGrid.current.instance.exportToExcel();\r\n }}\r\n />\r\n </div>\r\n </Item>\r\n </Box>\r\n <Box direction=\"row\" width=\"100%\" height={75}>\r\n\r\n <Item ratio={1}> \r\n <DataGrid \r\n ref={refGrid} \r\n dataSource={data}\r\n selection={{ mode: 'single' }}\r\n showBorders={true}\r\n showRowLines={true}\r\n allowColumnResizing={true} \r\n allowColumnReordering={true}\r\n hoverStateEnabled={true}\r\n columnAutoWidth={true}\r\n onCellPrepared={onCellPrepared}\r\n >\r\n <Pager allowedPageSizes={[10, 15, 30, 50]} showPageSizeSelector={true} showInfo={true} />\r\n <Paging defaultPageSize={15} />\r\n <FilterRow visible={false} />\r\n <Column type=\"buttons\" width={60}>\r\n <ButtonGrid name=\"showBill\" icon=\"find\" onClick={e => showDialog(e.row.data.billId)}/>\r\n <ButtonGrid name=\"receive\" icon=\"product\" onClick={e => showReceipt(e.row.data.billId, e.row.data.fullName)}/>\r\n </Column>\r\n <Column dataField=\"asignedTo\" caption=\"Vendedor\" width={90} groupIndex={0} />\r\n <Column caption=\"DETALLE DE FACTURA\" alignment={'center'}>\r\n <Column dataField=\"billId\" caption=\"Factura #\" width={70} cellRender={dataFormatId}/>\r\n <Column dataField=\"fullName\" caption=\"Cliente\" minWidth={50} />\r\n <Column dataField=\"diasTranscurridos\" caption=\"Fecha\" width={190} cellRender={DateCell}/>\r\n <Column dataField=\"daysMora\" caption=\"Mora\" width={50}/>\r\n <Column dataField=\"total\" caption=\"Total\" width={100} cellRender={toBoldMoney}/>\r\n </Column>\r\n <Column caption=\"Categorias\" alignment={'center'}>\r\n <Column dataField=\"c0_5\" caption=\"0.5%\" width={80} alignment={'right'} cellRender={toMoney} /> \r\n <Column dataField=\"c1\" caption=\"1%\" width={80} alignment={'right'} cellRender={toMoney}/> \r\n \r\n <Column dataField=\"c1_5\" caption=\"1.5%\" width={80} alignment={'right'} cellRender={toMoney}/> \r\n <Column dataField=\"c2\" caption=\"2%\" width={80} alignment={'right'} cellRender={toMoney}/> \r\n \r\n <Column dataField=\"c2_5\" caption=\"2.5%\" width={80} alignment={'right'} cellRender={toMoney}/> \r\n <Column dataField=\"c3\" caption=\"3%\" width={80} alignment={'right'} cellRender={toMoney}/> \r\n </Column>\r\n <Column caption=\"Comisión\" alignment={'center'}>\r\n <Column dataField=\"totalComi\" caption=\"Total\" width={90} alignment={'right'} cellRender={toBoldMoney}/> \r\n </Column> \r\n \r\n <Summary>\r\n <TotalItem column=\"billId\" summaryType=\"count\" />\r\n <TotalItem column=\"total\" summaryType=\"sum\" customizeText={toMoney} />\r\n <TotalItem column=\"totalComi\" summaryType=\"sum\" customizeText={toMoney} />\r\n <GroupItem\r\n column=\"billId\"\r\n summaryType=\"count\"\r\n displayFormat=\"{0} items\"\r\n />\r\n <GroupItem column=\"totalComi\" summaryType=\"sum\" showInGroupFooter={true} alignByColumn={true} customizeText={toMoney} />\r\n <GroupItem column=\"total\" summaryType=\"sum\" showInGroupFooter={true} alignByColumn={true} customizeText={toMoney} />\r\n <GroupItem column=\"c0_5\" summaryType=\"sum\" showInGroupFooter={true} alignByColumn={true} customizeText={toMoney} />\r\n <GroupItem column=\"c1\" summaryType=\"sum\" showInGroupFooter={true} alignByColumn={true} customizeText={toMoney} />\r\n <GroupItem column=\"c1_5\" summaryType=\"sum\" showInGroupFooter={true} alignByColumn={true} customizeText={toMoney} />\r\n <GroupItem column=\"c2\" summaryType=\"sum\" showInGroupFooter={true} alignByColumn={true} customizeText={toMoney} />\r\n <GroupItem column=\"c2_5\" summaryType=\"sum\" showInGroupFooter={true} alignByColumn={true} customizeText={toMoney} />\r\n <GroupItem column=\"c3\" summaryType=\"sum\" showInGroupFooter={true} alignByColumn={true} customizeText={toMoney} />\r\n </Summary> \r\n \r\n </DataGrid>\r\n </Item>\r\n </Box>\r\n </div>\r\n );\r\n}\r\n\r\nexport default Comision;\r\n","import { Button, DateBox, Popup } from 'devextreme-react';\r\nimport moment from 'moment';\r\nimport React, { useState } from 'react';\r\n\r\nconst DialogPopup = ({title, onClick}) => {\r\n\r\n const now = new Date(moment().year(), moment().month(), moment().date(), 0, 0, 0, 0);\r\n const [open, setOpen] = useState(true);\r\n\r\n const [date, setDate] = useState({\r\n desde: now,\r\n hasta: now\r\n }); \r\n\r\n const onHiding = (e) => {\r\n setOpen(false);\r\n }\r\n\r\n const onClicked = e => {\r\n onClick(date.desde, date.hasta);\r\n }\r\n\r\n return (\r\n <div>\r\n <Popup\r\n width={300}\r\n height={300}\r\n title={title} \r\n visible={open}\r\n onHiding={onHiding}\r\n className=\"bg-fbfbfb\" \r\n > \r\n <label>Desde</label>\r\n <DateBox defaultValue={date.desde} onValueChanged={e => setDate({...date, desde: e.value})}></DateBox>\r\n <label>Hasta</label>\r\n <DateBox defaultValue={date.hasta} onValueChanged={e => setDate({...date, hasta: e.value})}></DateBox>\r\n <br/>\r\n <Button text=\"Aceptar\" onClick={onClicked}></Button>\r\n </Popup>\r\n </div>\r\n );\r\n}\r\n\r\nexport default DialogPopup;\r\n","\r\nimport moment from 'moment';\r\nimport React from 'react';\r\nimport { useSelector } from 'react-redux';\r\nimport urlReport from '../../../services/reportServices';\r\nimport DialogPopup from './DialogPopup';\r\n\r\nconst ProductsInfo = () => {\r\n\r\n const { user } = useSelector(store => store);\r\n \r\n const getReport = (desde, hasta) => {\r\n\r\n const report = urlReport();\r\n report.print(`${report.products(moment(desde).format('YYYY-MM-DD'), moment(hasta).format('YYYY-MM-DD'), user.username)}`);\r\n\r\n } \r\n\r\n return (\r\n <div>\r\n <DialogPopup onClick={getReport} title='Productos vendidos'></DialogPopup>\r\n </div>\r\n );\r\n}\r\n\r\nexport default ProductsInfo;\r\n","import React, { useRef } from 'react';\r\nimport { DataGrid } from 'devextreme-react';\r\nimport { Item } from 'devextreme-react/form';\r\nimport { \r\n Paging, \r\n Pager, \r\n FilterRow, \r\n HeaderFilter, \r\n Column, \r\n Export, \r\n Editing,\r\n Popup, \r\n Form, \r\n RequiredRule,\r\n StringLengthRule} from 'devextreme-react/data-grid';\r\n\r\nimport { store } from '../../services/store';\r\nimport Title from '../../components/shared/Title';\r\nimport BlockHeader from '../../components/shared/BlockHeader';\r\nimport { createProxyBase } from '../../utils/proxy';\r\nimport useAuthorization from '../../hooks/useAuthorization';\r\nimport { dataAccess, editorOptionsSwitch, resources } from '../../data/app';\r\n\r\nfunction Clasifications(props) {\r\n\r\n const [ authorized ] = useAuthorization( resources.adminCatalogos );\r\n\r\n let dataGrid = useRef();\r\n\r\n const onToolbarPreparing = (e) => { \r\n e.toolbarOptions.items.unshift({\r\n location: 'before',\r\n widget: 'dxButton',\r\n options: {\r\n text: 'Nueva clasificacion',\r\n icon:'plus',\r\n type:'default',\r\n stylingMode:\"outlined\",\r\n onClick: () => dataGrid.current.instance.addRow()\r\n }\r\n });\r\n } \r\n\r\n\r\n const title = 'Clasificaciones';\r\n \r\n return authorized(\r\n <div className=\"container small\">\r\n <Title title={title}/>\r\n <BlockHeader title={title}/> \r\n <DataGrid id=\"gridContainer\"\r\n ref={dataGrid}\r\n selection={{ mode: 'single' }}\r\n dataSource={store({uri : createProxyBase('clasifications')})}\r\n showBorders={true}\r\n showRowLines={true}\r\n allowColumnResizing={true}\r\n allowColumnReordering={true}\r\n hoverStateEnabled={true}\r\n onToolbarPreparing={onToolbarPreparing}\r\n >\r\n <Paging defaultPageSize={20} />\r\n <Pager\r\n showPageSizeSelector={true}\r\n allowedPageSizes={[10, 20, 50]}\r\n />\r\n <FilterRow visible={true} />\r\n <HeaderFilter visible={true} />\r\n <Export enabled={true} fileName={title} allowExportSelectedData={true} />\r\n <Column dataField=\"name\" caption=\"Descripcion\" /> \r\n <Column dataField=\"active\" caption=\"Activo\" dataType=\"boolean\" width={100} />\r\n <Editing\r\n mode=\"popup\"\r\n allowUpdating={true}\r\n useIcons={true}\r\n >\r\n <Popup title={title} showTitle={true} width={450} height={230}>\r\n \r\n </Popup>\r\n <Form>\r\n <Item dataField=\"name\" colSpan={2} >\r\n <RequiredRule message=\"El campo es requerida\"/>\r\n <StringLengthRule max={50} min={2} message=\"Máximo de caracteres 50 y 2 mínimo\"/>\r\n </Item> \r\n </Form>\r\n </Editing>\r\n </DataGrid>\r\n </div>\r\n )\r\n\r\n};\r\n\r\nexport default Clasifications; //connect(mapStateToProps, mapDispatchToProps)(GridSprintStart);","import Clasifications from './Clasifications';\r\nexport default Clasifications;","// react\r\nimport React from 'react';\r\nimport { useDispatch, useSelector } from 'react-redux'\r\nimport { addToolBarAction, removeToolBarAction } from '../../store/toolBar/toolBarOptsReducer';\r\nimport { Button } from 'devextreme-react/button';\r\n\r\nfunction BlockHeaderStateCC({showFavorite = false, title, icon,onClickView,onClickPrint, onClickPayment, onClickViewReceipts,...rest }) {\r\n\r\n const { toolBarOpts, gridStateCC: { data,\r\n disabledView, \r\n disabledPrint, \r\n disabledPayment, \r\n disabledViewReceipts, \r\n }} = useSelector(store => store); \r\n \r\n const dispatch = useDispatch();\r\n\r\n const path = rest.location?.pathname;\r\n\r\n const existFavorite = toolBarOpts.find(x => x.name === title);\r\n\r\n const onClick = () => {\r\n if(existFavorite) \r\n dispatch(removeToolBarAction(title));\r\n else\r\n dispatch(addToolBarAction({ name: title, path})); \r\n\r\n }\r\n\r\n const showFavorites = path && showFavorite\r\n\r\n const className = existFavorite ? 'd-hand dx-icon-favorites exist-favorite' : 'd-hand dx-icon-favorites';\r\n\r\n return (\r\n <div className=\"block-header\"> \r\n <h3 className=\"block-header__title\">\r\n {title} {icon && <span className={icon} style={{fontSize : 20}}></span>}\r\n {showFavorites && <span onClick={onClick} className={className} style={{fontSize : 20}}></span>}\r\n </h3>\r\n <div className=\"block-header__divider\" /> \r\n <Button onClick={() => onClickView(data.id)} icon={'search'} stylingMode=\"contained\" className='ml-10' type={'normal'} disabled={disabledView}/> \r\n <Button onClick={() => onClickPrint(data.id)} icon={'print'} stylingMode=\"contained\" className='ml-10' type={'normal'} disabled={disabledPrint}/> \r\n <Button onClick={() => onClickPayment(0, data.id, true, data.name, data.balance)} icon={'money'} stylingMode=\"contained\" className='ml-10' type={'normal'} disabled={disabledPayment}/> \r\n <Button onClick={() => onClickViewReceipts(true, data.id, data.name)} icon={'product'} stylingMode=\"contained\" className='ml-10' type={'normal'} disabled={disabledViewReceipts}/>\r\n </div>\r\n );\r\n}\r\n\r\nexport default BlockHeaderStateCC;\r\n","import { gridStateDefault, GRID_STATE_CC } from \"../consts\";\r\n\r\nconst myState = { ...gridStateDefault }\r\n\r\nexport const setGridStateCC = newState => {\r\n \r\n return{ \r\n type: GRID_STATE_CC, \r\n payload : {...myState, ...newState} \r\n }\r\n\r\n} \r\n\r\n\r\nexport default function gridStateCCReducer(state = myState, { type, payload }) {\r\n \r\n const actions = {\r\n [GRID_STATE_CC] : () => ({...payload })\r\n }\r\n\r\n return actions[type]?.call() || state;\r\n}","import React, { useRef, useState }from \"react\";\r\nimport {\r\n Paging,\r\n Pager,\r\n FilterRow,\r\n ColumnChooser,\r\n Column,\r\n Lookup,\r\n Export, \r\n Summary,\r\n TotalItem, \r\n}\r\n from 'devextreme-react/data-grid';\r\nimport * as NuevoReceipt from '../../components/bill/Nuevo';\r\nimport { DataGrid, ProgressBar, Popup } from 'devextreme-react';\r\nimport Title from \"../../components/shared/Title\";\r\nimport { store } from \"../../services/store\";\r\nimport { formatDate, formatDateTime } from '../../data/app';\r\nimport { useDispatch } from 'react-redux';\r\nimport { cellRender, cellRenderBold, dataFormatId } from \"../../utils/common\";\r\nimport numeral from \"numeral\";\r\nimport moment from \"moment\";\r\nimport BlockHeaderStateCC from \"../../components/shared/BlockHeaderStateCC\";\r\nimport { setGridStateCC } from '../../store/gridStateCC/gridStateCCReducer';\r\nimport { billDialogAction } from '../../store/bill/billDialogReducer';\r\nimport Nuevo from '../bills/Nuevo';\r\nimport urlReport from \"../../services/reportServices\";\r\nimport ReceiptByBillId from \"../receipts/ReceiptByBillId\";\r\n\r\nconst Pending = props => {\r\n\r\n const [dataDialog, setDataDialog] = useState({ id: 0, billId: 0, open: false, client: '', balance: '' });\r\n const [dialogReceipt, setDialogReceipt] = useState({ open: false, id: 0, reference: 0 });\r\n\r\n let refGrid = useRef();\r\n\r\n const dispatch = useDispatch();\r\n\r\n const showDialog = (id) => dispatch(billDialogAction({ open: true, id })); \r\n \r\n const printReport = ( id ) => {\r\n \r\n const report = urlReport();\r\n report.print(`${report.billTicket(id)}`);\r\n\r\n }\r\n\r\n const close = e => {\r\n setDataDialog({ id: 0, billId: 0, open: false, client: '', balance: '' });\r\n }\r\n \r\n const onCellPrepared = e => {\r\n\r\n const cellsQuantity = ['payoff']\r\n\r\n if (e.rowType == 'data' && e.column.allowEditing) {\r\n if (cellsQuantity.includes(e.column.dataField))\r\n if (e.row.data.payoff)\r\n e.cellElement.classList.add('pagada');\r\n else\r\n e.cellElement.classList.add('pendiente');\r\n\r\n if (e.column.dataField == 'id')\r\n e.cellElement.classList.add('col-id-factura');\r\n if (e.column.dataField == 'reference')\r\n e.cellElement.classList.add('col-reference-factura');\r\n if (e.column.dataField == 'mora')\r\n if(e.row.data.mora < 0)\r\n e.cellElement.classList.add('col-mora');\r\n }\r\n\r\n }\r\n\r\n const title = \"Cuentas por cobrar\"; \r\n \r\n const customizeText = (cellInfo) => {\r\n return `C$ ${numeral(cellInfo.value).format('0,0.00')}`\r\n }\r\n\r\n const cellBar = (data) => {\r\n\r\n const { creditDays, daysInDebt, mora, expirationDate } = data.row.data;\r\n\r\n const vence = moment(expirationDate).format('DD/MM/YYYY');\r\n\r\n const statusFormat = value => mora < 0 ? `Vencida el ${vence}` : `${creditDays - daysInDebt} dias restantes. Vence el ${vence}`;\r\n\r\n return (\r\n <ProgressBar\r\n id=\"progress-bar-status\" \r\n className={mora < 0 ? 'bar-red' : 'bar-blue'} \r\n min={0} \r\n max={creditDays}\r\n value={daysInDebt}\r\n statusFormat={statusFormat}\r\n showStatus={true}\r\n />\r\n )\r\n }\r\n\r\n const onRowClick = e => {\r\n \r\n const { id } = e.data;\r\n\r\n dispatch(setGridStateCC({\r\n id: id, \r\n data: e.data,\r\n disabledView: false, \r\n disabledPrint: false, \r\n disabledPayment: false, \r\n disabledViewReceipts: false, \r\n disabledCancel: false }));\r\n\r\n }\r\n\r\n const onSave = (e) => refGrid.current.instance.refresh();\r\n\r\n return (\r\n <div className=\"container\">\r\n <Title title={title}/>\r\n <BlockHeaderStateCC title={title} icon=\"icon-file-text\" showFavorite={true} {...props}\r\n onClickView={(id) => showDialog(id)}\r\n onClickPrint={id => printReport(id)}\r\n onClickPayment={(id, billId, open, client, balance) => setDataDialog({ id: 0, billId, open, client, balance })}\r\n onClickViewReceipts={(open, id, nombre) => setDialogReceipt({ open, id, reference: id, cliente:nombre })}\r\n > \r\n </BlockHeaderStateCC> \r\n <Popup\r\n width={800}\r\n height={400}\r\n title={`Recibos`}\r\n onHiding={e => setDialogReceipt({ open: false, id: 0 })}\r\n visible={dialogReceipt.open}\r\n className=\"bg-fbfbfb\"\r\n >\r\n <ReceiptByBillId id={dialogReceipt.id} reference={dialogReceipt.reference} onSave={onSave} cliente={dialogReceipt.cliente} />\r\n </Popup> \r\n <Nuevo onSave={onSave} { ...props } />\r\n <NuevoReceipt.default data={dataDialog} close={close} onSave={() => 0} />\r\n <DataGrid\r\n ref={refGrid}\r\n dataSource={store({uri : { get : 'clients/pending/get' } })}\r\n selection={{ mode: 'single' }}\r\n showBorders={true}\r\n showRowLines={true}\r\n allowColumnResizing={true}\r\n columnHidingEnabled={true}\r\n allowColumnReordering={true}\r\n hoverStateEnabled={true}\r\n columnAutoWidth={true} \r\n onRowClick={onRowClick}\r\n onCellPrepared={onCellPrepared} \r\n >\r\n <Pager allowedPageSizes={[10, 15, 30, 50]} showPageSizeSelector={true} showInfo={true} />\r\n <Paging defaultPageSize={15} />\r\n <FilterRow visible={true} />\r\n <ColumnChooser enabled={true} />\r\n <Export enabled={true} fileName={title} allowExportSelectedData={true} /> \r\n <Column dataField=\"id\" caption=\"Factura\" width={70} cellRender={dataFormatId} alignment=\"rigth\" />\r\n <Column dataField=\"date\" caption=\"Fecha\" dataType='date' format={formatDate} width={100} />\r\n <Column dataField=\"name\" caption=\"Cliente\" allowHeaderFiltering={false} minWidth={100} />\r\n <Column dataField=\"asignedTo\" caption='Vendedor' width={100} /> \r\n <Column dataField=\"total\" width={110} cellRender={cellRender()} />\r\n <Column dataField=\"amount\" caption='Pagado' width={110} cellRender={cellRender()} />\r\n <Column dataField=\"balance\" caption='Saldo' width={110} cellRender={cellRenderBold()} />\r\n <Column dataField=\"mora\" caption='Mora' width={60} />\r\n <Column dataField=\"blackList\" caption='Lista Negra' width={60} visible={false} />\r\n <Column dataField=\"expirationDate\" caption='Expira' dataType='date' format={formatDate} width={100} />\r\n <Column dataField=\"progress\" caption=\"Activa\" cellRender={cellBar} />\r\n <Column dataField=\"createAt\" caption='Creado el' dataType='date' visible={false} format={formatDateTime} width={180} /> \r\n <Summary> \r\n <TotalItem column=\"total\" summaryType=\"sum\" customizeText={customizeText} />\r\n <TotalItem column=\"amount\" summaryType=\"sum\" customizeText={customizeText} />\r\n <TotalItem column=\"balance\" summaryType=\"sum\" customizeText={customizeText} />\r\n </Summary>\r\n </DataGrid>\r\n </div>\r\n )\r\n\r\n\r\n}\r\n\r\n\r\nexport default Pending;\r\n","// react\r\nimport { Component } from 'react';\r\n\r\n// third-party\r\nimport PropTypes from 'prop-types';\r\n\r\n\r\nclass Collapse extends Component {\r\n componentDidMount() {\r\n if (!this.content) {\r\n return;\r\n }\r\n\r\n const { open } = this.props;\r\n\r\n this.content.addEventListener('transitionend', this.handleTransitionEnd);\r\n\r\n if (open === true) {\r\n this.expand(true);\r\n }\r\n if (open === false) {\r\n this.collapse(true);\r\n }\r\n }\r\n\r\n componentDidUpdate() {\r\n const { open } = this.props;\r\n\r\n if (typeof open === 'boolean') {\r\n if (open) {\r\n this.expand();\r\n } else {\r\n this.collapse();\r\n }\r\n }\r\n }\r\n\r\n componentWillUnmount() {\r\n if (!this.content) {\r\n return;\r\n }\r\n\r\n this.content.removeEventListener('transitionend', this.handleTransitionEnd);\r\n }\r\n\r\n handleTransitionEnd = (event) => {\r\n if (this.content && event.propertyName === 'height') {\r\n this.content.style.height = '';\r\n }\r\n };\r\n\r\n handleToggle = () => {\r\n const { toggleClass } = this.props;\r\n\r\n if (!this.item || !this.content || !toggleClass) {\r\n return;\r\n }\r\n\r\n if (this.item.classList.contains(toggleClass)) {\r\n this.collapse();\r\n } else {\r\n this.expand();\r\n }\r\n };\r\n\r\n setItemRef = (ref) => {\r\n this.item = ref;\r\n };\r\n\r\n setContentRef = (ref) => {\r\n this.content = ref;\r\n };\r\n\r\n expand(immediate = false) {\r\n const { toggleClass } = this.props;\r\n\r\n if (!this.item || !this.content || !toggleClass) {\r\n return;\r\n }\r\n\r\n if (immediate) {\r\n this.item.classList.add(toggleClass);\r\n this.content.style.height = '';\r\n } else {\r\n const startHeight = this.content.getBoundingClientRect().height;\r\n\r\n this.item.classList.add(toggleClass);\r\n\r\n const endHeight = this.content.getBoundingClientRect().height;\r\n\r\n this.content.style.height = `${startHeight}px`;\r\n this.content.getBoundingClientRect(); // force reflow\r\n this.content.style.height = `${endHeight}px`;\r\n }\r\n }\r\n\r\n collapse(immediate = false) {\r\n const { toggleClass } = this.props;\r\n\r\n if (immediate) {\r\n this.item.classList.remove(toggleClass);\r\n this.content.style.height = '';\r\n } else {\r\n const startHeight = this.content.getBoundingClientRect().height;\r\n\r\n this.content.style.height = `${startHeight}px`;\r\n this.item.classList.remove(toggleClass);\r\n\r\n this.content.getBoundingClientRect(); // force reflow\r\n this.content.style.height = '';\r\n }\r\n }\r\n\r\n render() {\r\n const { render } = this.props;\r\n\r\n if (render) {\r\n return render({\r\n toggle: this.handleToggle,\r\n setItemRef: this.setItemRef,\r\n setContentRef: this.setContentRef,\r\n });\r\n }\r\n\r\n return null;\r\n }\r\n}\r\n\r\nCollapse.propTypes = {\r\n /** class that will be applied to this.item when opened */\r\n toggleClass: PropTypes.string,\r\n /** render function with arguments: toggle, setItemRef, setContentRef */\r\n render: PropTypes.func,\r\n /** if specified, the component will behave as a stateless component */\r\n open: PropTypes.bool,\r\n};\r\n\r\nexport default Collapse;\r\n","// react\r\nimport React from 'react';\r\n\r\n// third-party\r\nimport PropTypes from 'prop-types';\r\n\r\n// application\r\nimport AppLink from '../shared/AppLink';\r\nimport Collapse from '../shared/Collapse';\r\nimport { ArrowRoundedDown12x7Svg } from '../../svg';\r\n\r\n\r\nfunction MobileLinks(props) {\r\n const { links, level, onItemClick } = props;\r\n\r\n const handleItemClick = (item) => {\r\n if (onItemClick) {\r\n onItemClick(item);\r\n }\r\n };\r\n\r\n const linksList = links.map((link, index) => {\r\n let item;\r\n\r\n if (link.type === 'link' || link.type === 'button') {\r\n item = (\r\n <Collapse\r\n toggleClass=\"mobile-links__item--open\"\r\n render={({ toggle, setItemRef, setContentRef }) => {\r\n let arrow;\r\n let subLinks;\r\n let linkOrButton;\r\n\r\n if (link.children && link.children.length > 0) {\r\n arrow = (\r\n <button className=\"mobile-links__item-toggle\" type=\"button\" onClick={toggle}>\r\n <ArrowRoundedDown12x7Svg className=\"mobile-links__item-arrow\" />\r\n </button>\r\n );\r\n\r\n subLinks = (\r\n <div className=\"mobile-links__item-sub-links\" ref={setContentRef}>\r\n <MobileLinks\r\n links={link.children}\r\n level={level + 1}\r\n onItemClick={onItemClick}\r\n />\r\n </div>\r\n );\r\n }\r\n\r\n if (link.type === 'link') {\r\n linkOrButton = (\r\n <AppLink\r\n to={link.url}\r\n className=\"mobile-links__item-link\"\r\n onClick={() => handleItemClick(link)}\r\n >\r\n {link.label}\r\n </AppLink>\r\n );\r\n } else {\r\n linkOrButton = (\r\n <button\r\n type=\"button\"\r\n className=\"mobile-links__item-link\"\r\n onClick={() => handleItemClick(link)}\r\n >\r\n {link.label}\r\n </button>\r\n );\r\n }\r\n\r\n return (\r\n <div className=\"mobile-links__item\" ref={setItemRef}>\r\n <div className=\"mobile-links__item-title\">\r\n {linkOrButton}\r\n {arrow}\r\n </div>\r\n {subLinks}\r\n </div>\r\n );\r\n }}\r\n />\r\n );\r\n } else if (link.type === 'divider') {\r\n item = <div className=\"mobile-links__divider\" />;\r\n }\r\n\r\n return <li key={index}>{item}</li>;\r\n });\r\n\r\n return (\r\n <ul className={`mobile-links mobile-links--level--${level}`}>\r\n {linksList}\r\n </ul>\r\n );\r\n}\r\n\r\nMobileLinks.propTypes = {\r\n links: PropTypes.array,\r\n level: PropTypes.number,\r\n onItemClick: PropTypes.func,\r\n};\r\n\r\nMobileLinks.defaultProps = {\r\n links: [],\r\n level: 0,\r\n};\r\n\r\nexport default MobileLinks;\r\n","import { MOBILE_MENU_CLOSE, MOBILE_MENU_OPEN } from './mobileMenuActionTypes';\r\n\r\n\r\nconst initialState = {\r\n open: false,\r\n};\r\n\r\nexport default function mobileMenuReducer(state = initialState, action) {\r\n switch (action.type) {\r\n case MOBILE_MENU_OPEN:\r\n return {\r\n ...state,\r\n open: true,\r\n };\r\n case MOBILE_MENU_CLOSE:\r\n return {\r\n ...state,\r\n open: false,\r\n };\r\n default:\r\n return state;\r\n }\r\n}\r\n","import mobileMenuReducer from './mobileMenuReducer';\r\n\r\nexport * from './mobileMenuActions';\r\nexport default mobileMenuReducer;\r\n","export const MOBILE_MENU_OPEN = 'MOBILE_MENU_OPEN';\r\nexport const MOBILE_MENU_CLOSE = 'MOBILE_MENU_CLOSE';\r\n","import { _path } from \"./headerNavigation\";\r\n\r\nexport default [{\r\n layout: 'conta',\r\n type: 'link',\r\n label: 'Inicio',\r\n url: '/',\r\n},\r\n{\r\n layout: 'app',\r\n type: 'link',\r\n label: 'Cotizaciones',\r\n url: `${_path.ROOTMAIN}/mobile/cotizaciones`,\r\n children: [\r\n { type: 'link', label: 'Cotizaciones', url: `${_path.ROOTMAIN}/mobile/cotizaciones` },\r\n { type: 'link', label: 'Preventas', url: `${_path.ROOTMAIN}/mobile/pre-ventas` },\r\n ],\r\n},\r\n{\r\n layout: 'app',\r\n type: 'link',\r\n label: 'Facturacion',\r\n url: `${_path.ROOTMAIN}/facturas`,\r\n children: [\r\n { type: 'link', label: 'Facturas', url: `${_path.ROOTMAIN}/facturas` },\r\n { type: 'link', label: 'Facturas rápida', url: `${_path.ROOTMAIN}/facturas-quickly` },\r\n { type: 'link', label: 'Gestión de caja', url: `${_path.ROOTMAIN}/cierres-caja` }, \r\n { type: 'link', label: 'Recibos', url: `${_path.ROOTMAIN}/recibos` }, \r\n { type: 'link', label: 'Nota de Crédito', url: `${_path.ROOTMAIN}/notascreditos` }, \r\n {\r\n type: 'link',\r\n label: 'Reportes',\r\n url: '',\r\n children: [\r\n { type: 'link', label: 'Ventas', url: `${_path.ROOTMAIN}/facturas/reportes/ventas` },\r\n ],\r\n },\r\n ],\r\n},\r\n\r\n{\r\n layout: 'app',\r\n type: 'link',\r\n label: 'Compras',\r\n url: `${_path.ROOTMAIN}/compras`,\r\n children: [\r\n { type: 'link', label: 'Lista de compras', url: `${_path.ROOTMAIN}/movimientos/compras` },\r\n { type: 'link', label: 'Proveedores', url: `${_path.ROOTMAIN}/proveedores` },\r\n {\r\n type: 'link',\r\n label: 'Reportes',\r\n url: '',\r\n children: [\r\n { type: 'link', label: 'Compras de productos', url: `${_path.ROOTMAIN}/compras/reportes` },\r\n ],\r\n },\r\n ],\r\n},\r\n\r\n{\r\n layout: 'app',\r\n type: 'link',\r\n label: 'Inventario',\r\n url: `${_path.ROOTMAIN}/productos`,\r\n children: [\r\n { type: 'link', label: 'Productos', url: `${_path.ROOTMAIN}/productos` },\r\n { type: 'link', label: 'Grupos', url: `${_path.ROOTMAIN}/familias` }, \r\n { type: 'link', label: 'Unidad Medida', url: `${_path.ROOTMAIN}/unidadmedida` },\r\n { type: 'link', label: 'Tasa de cambio', url: `${_path.ROOTMAIN}/tasa-de-cambio` },\r\n {\r\n type: 'link',\r\n label: 'Reportes',\r\n url: '',\r\n children: [\r\n { type: 'link', label: 'Kardex', url: `${_path.ROOTMAIN}/inventario/reportes/kardex` },\r\n { type: 'link', label: 'Existencias', url: `${_path.ROOTMAIN}/inventario/reportes/existencias` },\r\n { type: 'link', label: 'Stock', url: `${_path.ROOTMAIN}/inventario/reportes/stock` },\r\n { type: 'link', label: 'Ult ingresos', url: `${_path.ROOTMAIN}/inventario/reportes/ingresos` },\r\n ],\r\n },\r\n ],\r\n},\r\n{\r\n layout: 'app',\r\n type: 'link',\r\n label: 'Clientes',\r\n url: `${_path.ROOTMAIN}/clientes`,\r\n children: [\r\n { type: 'link', label: 'Gestión de clientes', url: `${_path.ROOTMAIN}/clientes` },\r\n { type: 'link', label: 'Cuentas por cobrar', url: `${_path.ROOTMAIN}/clientes/pending` },\r\n {\r\n type: 'link',\r\n label: 'Reportes',\r\n url: '',\r\n children: [\r\n ],\r\n },\r\n ],\r\n},\r\n\r\n{\r\n layout: 'app',\r\n type: 'link',\r\n label: 'Entradas',\r\n url: `${_path.ROOTMAIN}/movimientos/entradas`,\r\n children: [\r\n { type: 'link', label: 'Ajustes', url: `${_path.ROOTMAIN}/movimientos/entradas` },\r\n { type: 'link', label: 'Inventario Inicial', url: `${_path.ROOTMAIN}/movimientos/inv-inicial` },\r\n { type: 'link', label: 'Solicitud de traslado', url: `${_path.ROOTMAIN}/movimientos/traslados` },\r\n \r\n ],\r\n},\r\n{\r\n layout: 'app',\r\n type: 'link',\r\n label: 'Salidas',\r\n url: `${_path.ROOTMAIN}/movimientos/salidas`,\r\n children: [\r\n { type: 'link', label: 'Ajustes de salida', url: `${_path.ROOTMAIN}/movimientos/salidas` },\r\n { type: 'link', label: 'Despachos', url: `${_path.ROOTMAIN}/movimientos/despacho` },\r\n \r\n ],\r\n},\r\n{\r\n layout: 'app',\r\n type: 'link',\r\n label: 'Configuración',\r\n url: `${_path.ROOTMAIN}/usuarios`,\r\n children: [\r\n { type: 'link', label: 'Usuarios', url: `${_path.ROOTMAIN}/usuarios` },\r\n { type: 'link', label: 'Roles', url: `${_path.ROOTMAIN}/roles` },\r\n { type: 'link', label: 'Recursos', url: `${_path.ROOTMAIN}/permisos` },\r\n { type: 'link', label: 'Areas', url: `${_path.ROOTMAIN}/areas` }, \r\n ],\r\n},\r\n\r\n{\r\n layout: 'app',\r\n type: 'link',\r\n label: 'Cuenta',\r\n url: `${_path.ROOTMAIN}/usuarios`,\r\n children: [\r\n { type: 'link', label: 'Password', url: `/account/password` },\r\n { type: 'link', label: 'Salir', url: `/account/logout` },\r\n ],\r\n},\r\n\r\n];","// react\r\nimport React from 'react';\r\n\r\n// third-party\r\nimport classNames from 'classnames';\r\nimport { connect } from 'react-redux';\r\n\r\n// application\r\nimport MobileLinks from './MobileLinks';\r\nimport { Cross20Svg } from '../../svg';\r\nimport { mobileMenuClose } from '../../store/mobile-menu';\r\n\r\nimport mobileMenuLinks from '../../data/mobileMenu';\r\n\r\n\r\nfunction MobileMenu(props) {\r\n const {\r\n mobileMenuState,\r\n closeMobileMenu,\r\n } = props;\r\n\r\n const classes = classNames('mobilemenu', {\r\n 'mobilemenu--open': mobileMenuState.open,\r\n });\r\n\r\n const handleItemClick = (item) => {\r\n closeMobileMenu();\r\n //if (item.data) {\r\n //if (item.data.type === 'language') {\r\n // closeMobileMenu();\r\n // }\r\n // if (item.data.type === 'currency') {\r\n // const currency = currencies.find((x) => x.currency.code === item.data.code);\r\n\r\n // if (currency) {\r\n // closeMobileMenu();\r\n // }\r\n // }\r\n // }\r\n };\r\n\r\n return (\r\n <div className={classes}>\r\n {/* eslint-disable-next-line max-len */}\r\n {/* eslint-disable-next-line jsx-a11y/no-static-element-interactions,jsx-a11y/click-events-have-key-events */}\r\n <div className=\"mobilemenu__backdrop\" onClick={closeMobileMenu} />\r\n <div className=\"mobilemenu__body\">\r\n <div className=\"mobilemenu__header\">\r\n <div className=\"mobilemenu__title\">Menu</div>\r\n <button type=\"button\" className=\"mobilemenu__close\" onClick={closeMobileMenu}>\r\n <Cross20Svg />\r\n </button>\r\n </div>\r\n <div className=\"mobilemenu__content\">\r\n <MobileLinks links={mobileMenuLinks} onItemClick={handleItemClick} />\r\n </div>\r\n </div>\r\n </div>\r\n );\r\n}\r\n\r\nconst mapStateToProps = (state) => ({\r\n mobileMenuState: state.mobileMenu,\r\n});\r\n\r\nconst mapDispatchToProps = {\r\n closeMobileMenu: mobileMenuClose, \r\n};\r\n\r\nexport default connect(mapStateToProps, mapDispatchToProps)(MobileMenu);\r\n","import { MOBILE_MENU_CLOSE, MOBILE_MENU_OPEN } from './mobileMenuActionTypes';\r\n\r\n\r\nexport function mobileMenuOpen() {\r\n return { type: MOBILE_MENU_OPEN };\r\n}\r\n\r\nexport function mobileMenuClose() {\r\n return { type: MOBILE_MENU_CLOSE };\r\n}\r\n","// react\r\nimport React, { Component } from 'react';\r\n\r\n// third-party\r\nimport classNames from 'classnames';\r\nimport { connect } from 'react-redux';\r\nimport { Link } from 'react-router-dom';\r\n\r\n// application\r\nimport Indicator from '../header/Indicator';\r\nimport {\r\n Menu18x14Svg,\r\n LogoSmallSvg,\r\n Search20Svg,\r\n Cross20Svg,\r\n Heart20Svg,\r\n Cart20Svg,\r\n} from '../../svg';\r\nimport { mobileMenuOpen } from '../../store/mobile-menu';\r\n\r\n\r\nclass MobileHeader extends Component {\r\n constructor(props) {\r\n super(props);\r\n\r\n this.state = {\r\n searchOpen: false,\r\n };\r\n }\r\n\r\n componentDidMount() {\r\n document.addEventListener('mousedown', this.handleOutsideClick);\r\n }\r\n\r\n componentDidUpdate(prevProps, prevState) {\r\n const { searchOpen } = this.state;\r\n\r\n if (searchOpen && searchOpen !== prevState.searchOpen && this.searchInputRef) {\r\n this.searchInputRef.focus();\r\n }\r\n }\r\n\r\n componentWillUnmount() {\r\n document.removeEventListener('mousedown', this.handleOutsideClick);\r\n }\r\n\r\n setSearchWrapperRef = (node) => {\r\n this.searchWrapperRef = node;\r\n };\r\n\r\n setSearchInputRef = (node) => {\r\n this.searchInputRef = node;\r\n };\r\n\r\n handleOutsideClick = (event) => {\r\n if (this.searchWrapperRef && !this.searchWrapperRef.contains(event.target)) {\r\n this.setState(() => ({ searchOpen: false }));\r\n }\r\n };\r\n\r\n handleOpenSearch = () => {\r\n this.setState(() => ({ searchOpen: true }));\r\n };\r\n\r\n handleCloseSearch = () => {\r\n this.setState(() => ({ searchOpen: false }));\r\n };\r\n\r\n handleSearchKeyDown = (event) => {\r\n if (event.which === 27) {\r\n this.setState(() => ({ searchOpen: false }));\r\n }\r\n };\r\n\r\n \r\n render() {\r\n \r\n const { openMobileMenu, wishlist, app } = this.props;\r\n const { searchOpen } = this.state;\r\n const searchClasses = classNames('mobile-header__search', {\r\n 'mobile-header__search--opened': searchOpen,\r\n });\r\n\r\n return (\r\n <div className=\"mobile-header\">\r\n <div className=\"mobile-header__panel\">\r\n <div className=\"container\">\r\n <div className=\"mobile-header__body\">\r\n <button type=\"button\" className=\"mobile-header__menu-button\" onClick={openMobileMenu}>\r\n <Menu18x14Svg />\r\n </button>\r\n {app.name}\r\n <div className={searchClasses} ref={this.setSearchWrapperRef}>\r\n <form className=\"mobile-header__search-form\" action=\"\">\r\n <input\r\n className=\"mobile-header__search-input\"\r\n name=\"search\"\r\n placeholder=\"Buscar cliente\"\r\n aria-label=\"Site search\"\r\n type=\"text\"\r\n autoComplete=\"off\"\r\n onKeyDown={this.handleSearchKeyDown}\r\n ref={this.setSearchInputRef}\r\n />\r\n <button type=\"submit\" className=\"mobile-header__search-button mobile-header__search-button--submit\">\r\n <Search20Svg />\r\n </button>\r\n <button\r\n type=\"button\"\r\n className=\"mobile-header__search-button mobile-header__search-button--close\"\r\n onClick={this.handleCloseSearch}\r\n >\r\n <Cross20Svg />\r\n </button>\r\n <div className=\"mobile-header__search-body\" />\r\n </form>\r\n </div>\r\n\r\n <div className=\"mobile-header__indicators\">\r\n <Indicator\r\n className=\"indicator--mobile indicator--mobile-search d-sm-none\"\r\n onClick={this.handleOpenSearch}\r\n icon={<Search20Svg />}\r\n /> \r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n );\r\n }\r\n}\r\n\r\nconst mapStateToProps = (state) => ({\r\n cart: state.cart,\r\n app: state.appInfo,\r\n wishlist: state.wishlist,\r\n});\r\n\r\nconst mapDispatchToProps = {\r\n openMobileMenu: mobileMenuOpen,\r\n};\r\n\r\nexport default connect(\r\n mapStateToProps,\r\n mapDispatchToProps,\r\n)(MobileHeader);\r\n","import React, { useEffect, useRef, useState } from 'react';\r\nimport { DataGrid, Box, DropDownBox, DateBox, SelectBox, Button } from 'devextreme-react';\r\nimport { Item } from \"devextreme-react/box\";\r\nimport {\r\n Paging,\r\n Pager,\r\n FilterRow,\r\n Column,\r\n Export,\r\n Scrolling,\r\n Selection,\r\n GroupPanel,\r\n SearchPanel,\r\n Grouping,\r\n Summary,\r\n TotalItem,\r\n GroupItem\r\n} from 'devextreme-react/data-grid';\r\nimport Title from '../../components/shared/Title';\r\nimport BlockHeader from '../../components/shared/BlockHeader';\r\n\r\nimport { _path } from \"../../data/headerNavigation\";\r\nimport { formatDate, resources } from '../../data/app';\r\nimport { cellRender, cellRenderBold, dataFormatId, formatToMoneyNumber, onCellPreparedSales, } from '../../utils/common';\r\n\r\nimport uri from '../../utils/uri';\r\nimport useProducts from '../../hooks/useProducts';\r\nimport http from '../../utils/http';\r\nimport { dateByReport, defaultLabels } from '../../data/defaultObjects';\r\nimport { userService } from '../../services/user.service';\r\nimport CustomButton from '../../components/buttons/CustomButton';\r\nimport notify from 'devextreme/ui/notify';\r\nimport useAuthorization from '../../hooks/useAuthorization';\r\n\r\nconst Ventas = (props) => {\r\n\r\n const user = userService.getUser();\r\n\r\n let dropDownBoxRef = useRef();\r\n\r\n const [ areaId, setAreaId ] = useState(user.areaId);\r\n const [ tipoFecha, setTipoFecha ] = useState(3);\r\n const { products } = useProducts({ areaId }); \r\n const [ productId, setProductId ] = useState(null);\r\n const [ users, setUsers ] = useState([]);\r\n const [ username, setUsername ] = useState('');\r\n const [ dateFrom, setDateFrom ] = useState(dateByReport.from);\r\n const [ dateTo, setDateTo ] = useState(dateByReport.to);\r\n const [ data, setData ] = useState(undefined);\r\n const [ loading, setLoading ] = useState(false);\r\n const [ _, canSeeAllUser ] = useAuthorization(resources.verReporteDeVentas);\r\n //const [ options, setOptions ] = useState([]);\r\n\r\n let refData = useRef(null);\r\n const optsRef = useRef(\r\n localStorage.getItem('ventas_options') ? JSON.parse(localStorage.getItem('ventas_options')) : []\r\n );\r\n\r\n const changeHandler = (e) => {\r\n setProductId(e.value);\r\n }\r\n\r\n const dataGrid_onSelectionChanged = (e) => { \r\n setProductId(e.selectedRowKeys[0].id);\r\n dropDownBoxRef.current.instance.close(); \r\n\r\n }\r\n\r\n const changeArea = e => setAreaId(e.value); \r\n\r\n const changeUser = e => setUsername(e.value); \r\n\r\n const changeDateFrom = e => setDateFrom(e.value);\r\n\r\n const changeDateTo = e => setDateTo(e.value); \r\n \r\n const changeTipoFecha = e => setTipoFecha(e.value);\r\n\r\n useEffect(() => {\r\n http(uri.users.get).asGet().then(resp => {\r\n if(canSeeAllUser)\r\n setUsers(resp)\r\n else\r\n setUsers([...resp.filter(x => x.username == user.username)]);\r\n });\r\n }, [0]);\r\n\r\n const loadReport = () => {\r\n if(areaId > 0 && dateFrom && dateTo){\r\n setLoading(true);\r\n http('reports/sales').asPost({areaId, productId, from : dateFrom, to: dateTo, tipoFecha, username}).then(resp => {\r\n setData(resp);\r\n setLoading(false);\r\n }); \r\n }\r\n };\r\n\r\n const dataGridRender = () => {\r\n return (\r\n <DataGrid\r\n dataSource={products}\r\n hoverStateEnabled={true}\r\n selectedRowKeys={productId}\r\n onSelectionChanged={dataGrid_onSelectionChanged}\r\n height=\"100%\"> \r\n <Selection mode=\"single\" />\r\n <Scrolling mode=\"infinite\" />\r\n <Paging enabled={true} pageSize={10} />\r\n <FilterRow visible={true} />\r\n <Column dataField=\"internalCode\" caption=\"Codigo\" width={80} cellRender={dataFormatId}/>\r\n <Column dataField=\"name\" caption=\"Nombre\" />\r\n <Column dataField=\"family\" caption={defaultLabels.family} width={120}></Column>\r\n <Column dataField=\"um\" caption=\"UM\" width={120}></Column>\r\n </DataGrid>\r\n );\r\n }\r\n\r\n const toMoney = data => formatToMoneyNumber(data.value); \r\n\r\n const title = 'Reporte de Ventas';\r\n\r\n const tipos = [{\r\n id: 1,\r\n name: 'Creado entre'\r\n },{\r\n id: 2,\r\n name: 'Pagado entre'\r\n },{\r\n id: 3,\r\n name: 'Entregado entre'\r\n }]\r\n\r\n const saveOpts = () => {\r\n let cols = refData.current.instance.option('columns');\r\n const newOpts = [];\r\n for (const col of cols) {\r\n const colOpt = refData.current.instance.columnOption(col.dataField);\r\n if(colOpt.groupIndex !== undefined) \r\n newOpts.push({column: col.dataField, groupIndex: colOpt.groupIndex});\r\n \r\n }\r\n localStorage.setItem('ventas_options', JSON.stringify(newOpts));\r\n notify('Configuración guardada');\r\n //setOptions(newOpts);\r\n } \r\n\r\n return (\r\n <div className=\"container\">\r\n <Title title={title} />\r\n <BlockHeader title={title} showFavorite={true} {...props}>\r\n <CustomButton\r\n type=\"normal\"\r\n text={`Guardar configuracion`}\r\n icon='save'\r\n onClick={saveOpts}\r\n /> \r\n </BlockHeader>\r\n <Box direction=\"row\" width=\"100%\" height={75}> \r\n <Item ratio={1}>\r\n <div className=\"ml-10\">\r\n <label>Seleccione el area:</label>\r\n <SelectBox items={tipos}\r\n placeholder=\"Selecciona una bodega\"\r\n showClearButton={false} valueExpr=\"id\" displayExpr=\"name\" \r\n defaultValue={tipoFecha}\r\n onValueChanged={changeTipoFecha} \r\n />\r\n </div>\r\n </Item> \r\n <Item ratio={1}>\r\n <div className=\"ml-10\">\r\n <label>Desde:</label>\r\n <DateBox type=\"date\" \r\n value={dateFrom}\r\n displayFormat={formatDate} \r\n openOnFieldClick={true} \r\n onValueChanged={changeDateFrom}/>\r\n </div>\r\n </Item>\r\n <Item ratio={1}>\r\n <div className=\"ml-10\">\r\n <label>Hasta:</label>\r\n <DateBox type=\"date\" \r\n value={dateTo}\r\n displayFormat={formatDate} \r\n openOnFieldClick={true} \r\n onValueChanged={changeDateTo}/>\r\n </div>\r\n </Item> \r\n <Item ratio={1}>\r\n <div className=\"ml-10\">\r\n <label>Usuario:</label>\r\n <SelectBox items={users}\r\n placeholder=\"Selecciona\"\r\n showClearButton={true} valueExpr=\"username\" displayExpr=\"username\" \r\n value={username}\r\n onValueChanged={changeUser} \r\n />\r\n </div>\r\n </Item> \r\n <Item ratio={2}>\r\n <div className=\"ml-10\">\r\n <label>Seleccione un item:</label>\r\n <DropDownBox\r\n ref={dropDownBoxRef}\r\n dataSource={products}\r\n key=\"id\"\r\n placeholder=\"Selecciona un producto\"\r\n showClearButton={true} \r\n valueExpr=\"id\" \r\n displayExpr={item => item ? `${item.internalCode} - ${item.name}` : ''} \r\n value = {productId} \r\n onValueChanged={changeHandler} \r\n contentRender={dataGridRender} \r\n dropDownOptions={{ width: 500 }} \r\n />\r\n </div>\r\n </Item> \r\n <Item ratio={1}>\r\n <div style={{ paddingTop : '19px' }}>\r\n <Button\r\n width={120}\r\n text={`${loading ? 'Buscando...' : 'Buscar'}`}\r\n type=\"default\"\r\n icon=\"search\"\r\n stylingMode=\"contained\"\r\n className=\"m-1\"\r\n disabled={loading}\r\n onClick={loadReport}\r\n />\r\n </div>\r\n </Item>\r\n </Box>\r\n <Box direction=\"row\" width=\"100%\" height={75}>\r\n\r\n <Item ratio={1}> \r\n <DataGrid\r\n id=\"gridContainer\"\r\n ref={refData}\r\n keyExpr=\"id\"\r\n selection={{ mode: 'single' }}\r\n dataSource={data}\r\n showBorders={true}\r\n showRowLines={true}\r\n hoverStateEnabled={true}\r\n onCellPrepared={onCellPreparedSales}\r\n > \r\n <GroupPanel visible={true} />\r\n <SearchPanel visible={true} width={200}/>\r\n <Grouping autoExpandAll={true} /> \r\n <Paging defaultPageSize={10} />\r\n <Pager\r\n showInfo={true}\r\n showPageSizeSelector={true}\r\n allowedPageSizes={[10, 20, 50,100,500]}\r\n />\r\n <Export enabled={true} fileName={title} allowExportSelectedData={true} /> \r\n\r\n\r\n <Column dataField=\"id\" caption=\"Factura\" width={70} cellRender={dataFormatId} groupIndex={optsRef.current.find(x => x.column == 'id')?.groupIndex}/> \r\n <Column dataField=\"date\" dataType=\"date\" caption=\"Fecha\" format={formatDate} width={100}/> \r\n <Column dataField=\"payOfDate\" dataType=\"date\" caption=\"Fecha Pago\" format={formatDate} width={100}/> \r\n <Column dataField=\"paymentType\" caption=\"Tipo\" width={70}/> \r\n \r\n <Column dataField=\"productId\" caption=\"Código\" width={70}/> \r\n <Column dataField=\"product\" caption=\"Producto\" /> \r\n\r\n <Column dataField=\"quantity\" caption=\"Cant\" width={70}/> \r\n <Column dataField=\"price\" caption=\"Precio\" cellRender={cellRender()} width={100}/> \r\n <Column dataField=\"totalDetail\" caption=\"Total\" cellRender={cellRenderBold()} width={120}/> \r\n\r\n <Column dataField=\"cost\" caption=\"Costo\" width={100} /> \r\n <Column dataField=\"costoTotal\" caption=\"Costo Total\" cellRender={cellRender()} width={100}/> \r\n <Column dataField=\"utilidades\" caption=\"Utilidades\" cellRender={cellRenderBold()} width={110}/> \r\n <Column dataField=\"asignedTo\" caption=\"Vendedor\" width={100} groupIndex={optsRef.current.find(x => x.column == 'asignedTo')?.groupIndex}/> \r\n <Summary>\r\n\r\n <TotalItem column=\"price\" summaryType=\"sum\" customizeText={() => 'Totales :'}/>\r\n \r\n <TotalItem column=\"totalDetail\" summaryType=\"sum\" customizeText={toMoney}/>\r\n <TotalItem column=\"cost\" summaryType=\"sum\" customizeText={toMoney} />\r\n <TotalItem column=\"costoTotal\" summaryType=\"sum\" customizeText={toMoney}/>\r\n <TotalItem column=\"utilidades\" summaryType=\"sum\" customizeText={toMoney}/>\r\n\r\n <GroupItem column=\"totalDetail\" summaryType=\"sum\" alignByColumn={true} customizeText={toMoney}/>\r\n <GroupItem column=\"cost\" summaryType=\"sum\" alignByColumn={true} showInGroupFooter={true} customizeText={toMoney}/>\r\n <GroupItem column=\"costoTotal\" summaryType=\"sum\" alignByColumn={true} showInGroupFooter={true} customizeText={toMoney}/>\r\n <GroupItem column=\"utilidades\" summaryType=\"sum\" alignByColumn={true} showInGroupFooter={true} customizeText={toMoney}/>\r\n\r\n </Summary> \r\n </DataGrid>\r\n </Item> \r\n </Box>\r\n </div>\r\n );\r\n}\r\n\r\n\r\n\r\nexport default Ventas;\r\n","import Cuts from './Cuts';\r\nexport default Cuts;","import React, { useRef } from \"react\";\r\nimport {\r\n Paging,\r\n Pager,\r\n FilterRow,\r\n ColumnChooser,\r\n Column,\r\n Export, \r\n Button as ButtonGrid, \r\n Editing,\r\n Popup, \r\n Form, \r\n RequiredRule,\r\n}\r\n from 'devextreme-react/data-grid';\r\n \r\nimport { Item } from 'devextreme-react/form';\r\nimport { DataGrid } from 'devextreme-react';\r\nimport BlockHeader from '../../components/shared/BlockHeader';\r\nimport Title from \"../../components/shared/Title\";\r\nimport { store } from \"../../services/store\";\r\nimport { resources, formatDateTime, formatDate } from '../../data/app';\r\nimport uri from \"../../utils/uri\";\r\nimport useAuthorization from \"../../hooks/useAuthorization\";\r\nimport { cellRender } from \"../../utils/common\";\r\nimport { userService } from \"../../services/user.service\";\r\nimport { confirm } from \"devextreme/ui/dialog\";\r\nimport http from \"../../utils/http\";\r\n\r\nconst Cuts = props => {\r\n\r\n var user = userService.getUser();\r\n \r\n const { history } = props;\r\n\r\n const [ authorized ] = useAuthorization( resources.gestionCierreCaja );\r\n\r\n let dataGrid = useRef();\r\n const title = \"Cierres de caja\"; \r\n\r\n const onToolbarPreparing = e => {\r\n\r\n e.toolbarOptions.items.unshift({\r\n location: 'after',\r\n widget: 'dxButton',\r\n options: {\r\n stylingMode:\"outlined\",\r\n type:'default',\r\n icon: 'add',\r\n text: 'Nuevo cierre de caja',\r\n onClick: e => dataGrid.current.instance.addRow()// dispatch(openDialog({open : true, id : 0}))\r\n }\r\n });\r\n }\r\n\r\n const onRowDblClick = (e) => {\r\n history.push('/clinica/cliente/'+e.data.id);\r\n } \r\n\r\n const onInitNewRow = (e) => {\r\n e.data.createBy = user.username;\r\n }\r\n\r\n const reopen = (e) => { \r\n\r\n const { id } = e.row.data; \r\n let confirmResult = confirm('¿Desea reabrir la caja?', 'Reapertura de caja');\r\n confirmResult.then(res => {\r\n if(res){\r\n dataGrid.current.instance.option('loadPanel.enabled', true);\r\n http(uri.cuts.base + '/re-open/' +id).asGet().then(resp => {\r\n dataGrid.current.instance.option('loadPanel.enabled', false);\r\n dataGrid.current.instance.refresh();\r\n });\r\n }\r\n });\r\n\r\n }\r\n\r\n\r\n return authorized(\r\n <div className=\"container\">\r\n <Title title={title} />\r\n <BlockHeader title={title} /> \r\n <DataGrid\r\n ref={dataGrid}\r\n dataSource={store({uri : uri.cuts, remoteOperations: true })}\r\n selection={{ mode: 'single' }}\r\n showBorders={true}\r\n showRowLines={true}\r\n allowColumnResizing={true}\r\n columnHidingEnabled={true}\r\n allowColumnReordering={true}\r\n hoverStateEnabled={true}\r\n columnAutoWidth={true}\r\n rowAlternationEnabled={true}\r\n onToolbarPreparing={onToolbarPreparing}\r\n onRowDblClick={onRowDblClick}\r\n onInitNewRow={onInitNewRow}\r\n remoteOperations={{\r\n paging: true,\r\n filtering: true\r\n }} \r\n >\r\n <Pager allowedPageSizes={[10, 15, 30, 50]} showPageSizeSelector={true} showInfo={true} />\r\n <Paging defaultPageSize={15} />\r\n <FilterRow visible={true} />\r\n <ColumnChooser enabled={true} />\r\n <Export enabled={true} fileName={title} allowExportSelectedData={true} /> \r\n <Column type='buttons'>\r\n <ButtonGrid icon='pulldown'\r\n visible={e => e.row.data.status}\r\n hint={'Reaperturar caja'}\r\n onClick={reopen}\r\n />\r\n <ButtonGrid icon='menu'\r\n visible={e => !e.row.data.status}\r\n hint={'Ejecutar cierre'}\r\n onClick={e => {\r\n\r\n const { id } = e.row.data; \r\n props.history.push('/app/cierre/ejecute', { id });\r\n\r\n }}\r\n />\r\n </Column> \r\n <Column dataField=\"id\" caption=\"#\" width={70} />\r\n <Column dataField=\"descripcion\" caption=\"Corte\" minWidth={180} />\r\n <Column dataField=\"cutDate\" caption=\"Fecha\" minWidth={180} dataType=\"date\" format={formatDate}/>\r\n <Column dataField=\"createBy\" caption=\"Usuario\" />\r\n <Column dataField=\"startAt\" caption=\"Inicia\" width={180} dataType=\"date\" format={formatDateTime} />\r\n <Column dataField=\"endAt\" caption=\"Termina\" width={180} dataType=\"date\" format={formatDateTime} />\r\n <Column dataField=\"initValue\" caption=\"Saldo inicial\" cellRender={cellRender(1)} />\r\n <Column dataField=\"endValue\" caption=\"Saldo Final\" cellRender={cellRender(1)}/>\r\n <Column dataField=\"status\" caption=\"Cerrada?\" />\r\n <Column type='buttons'>\r\n <ButtonGrid name='edit' /> \r\n </Column>\r\n <Editing\r\n mode=\"popup\"\r\n allowUpdating={true}\r\n useIcons={true}\r\n >\r\n <Popup title={'Apertura de caja'} showTitle={true} width={400} height={300}>\r\n\r\n </Popup>\r\n <Form>\r\n <Item dataField=\"initValue\" colSpan={2}>\r\n <RequiredRule message=\"El campo es requerido\" /> \r\n </Item>\r\n <Item dataField=\"cutDate\" colSpan={2} editorOptions={{ openOnFieldClick: true }}>\r\n <RequiredRule message=\"El campo es requerido\" /> \r\n </Item>\r\n <Item dataField=\"createBy\" colSpan={2} editorOptions={{ readOnly: true}}>\r\n </Item> \r\n </Form>\r\n </Editing>\r\n </DataGrid>\r\n </div>\r\n )\r\n\r\n\r\n}\r\n\r\n\r\nexport default Cuts;\r\n","import React, { useEffect, useRef, useState } from \"react\";\r\nimport {\r\n Paging,\r\n Pager,\r\n FilterRow,\r\n ColumnChooser,\r\n Column,\r\n Lookup,\r\n Export,\r\n Summary, GroupItem as GroupItemGrid\r\n}\r\n from 'devextreme-react/data-grid';\r\n\r\nimport { DataGrid } from 'devextreme-react';\r\nimport { Button } from 'devextreme-react/button';\r\nimport Form, { SimpleItem, GroupItem, Label, EmptyItem, StringLengthRule, RequiredRule, EmailRule, AsyncRule } from 'devextreme-react/form';\r\nimport BlockHeader from '../../components/shared/BlockHeader';\r\nimport Title from \"../../components/shared/Title\";\r\nimport { store } from \"../../services/store\";\r\nimport { dataAccess, editorOptionsNumberBox, editorOptionsSwitch, formatDate, resources, editorOptsTextBoxPhone, formatDateTime } from '../../data/app';\r\nimport { createStore, createStoreLocal } from \"../../utils/proxy\";\r\nimport uri from \"../../utils/uri\";\r\nimport useAuthorization from \"../../hooks/useAuthorization\";\r\nimport { cellAsPayoff, cellRender, cellRenderBold, dataFormatId } from \"../../utils/common\";\r\nimport http from \"../../utils/http\";\r\nimport notify from \"devextreme/ui/notify\";\r\n\r\nconst Ejecute = props => {\r\n\r\n const [state, setState] = useState({});\r\n const [saving, setSaving] = useState(false);\r\n const [bills, setBills] = useState([]);\r\n const [loading, setLoading] = useState(true);\r\n\r\n const { id } = props.location.state;\r\n let refCut = useRef();\r\n\r\n const getInfoCut = async () => {\r\n\r\n const data = await http(`cuts/pre-ejecute/${id}`).asGet();\r\n const sales = await http(`bills/bills-by-cut/${id}`).asGet();\r\n\r\n data.endValue = sales.reduce((previousValue, currentValue) => previousValue + currentValue.totalDetail, 0);\r\n data.calculateValue = data.initValue + data.endValue;\r\n setState(data);\r\n setBills(sales);\r\n\r\n setLoading(false);\r\n\r\n }\r\n\r\n const guardarCut = () => {\r\n \r\n setSaving(true);\r\n http(`cuts/close`).asPost(state).then(resp => {\r\n\r\n setSaving(false);\r\n notify(`Cierre de caja aplicado correctamente`);\r\n setState({ ...state, status: true });\r\n\r\n }).catch(err => {\r\n setSaving(false);\r\n notify(err, 'error', 5000);\r\n });\r\n\r\n }\r\n\r\n useEffect(() => {\r\n getInfoCut();\r\n }, [0]);\r\n\r\n const onCellPrepared = e => {\r\n\r\n const cellsQuantity = ['payoff']\r\n\r\n if (e.rowType == 'data' && e.column.allowEditing) {\r\n if (cellsQuantity.includes(e.column.dataField))\r\n if (e.row.data.payoff)\r\n e.cellElement.classList.add('pagada');\r\n else\r\n e.cellElement.classList.add('pendiente');\r\n\r\n if (e.column.dataField == 'id')\r\n e.cellElement.classList.add('col-id-factura');\r\n if (e.column.dataField == 'reference')\r\n e.cellElement.classList.add('col-reference-factura');\r\n }\r\n\r\n }\r\n\r\n const backPage = () => {\r\n props.history.push('/app/cierres-caja');\r\n }\r\n\r\n const title = \"Cierre de caja\";\r\n\r\n const isClosed = state.status;\r\n\r\n return (\r\n <div className=\"container\">\r\n {loading ? <div style={{ display: 'flex', justifyContent: 'center'}}>Cargando...</div> :\r\n <div>\r\n <Title title={title} />\r\n <BlockHeader title={title} />\r\n <DataGrid\r\n dataSource={bills}\r\n selection={{ mode: 'single' }}\r\n showBorders={true}\r\n showRowLines={true}\r\n\r\n allowColumnResizing={true}\r\n columnHidingEnabled={true}\r\n allowColumnReordering={true}\r\n hoverStateEnabled={true}\r\n columnAutoWidth={true}\r\n onCellPrepared={onCellPrepared}\r\n >\r\n <Pager allowedPageSizes={[10]} showPageSizeSelector={true} showInfo={true} />\r\n <Paging defaultPageSize={10} />\r\n <FilterRow visible={true} />\r\n <ColumnChooser enabled={true} />\r\n <Export enabled={true} fileName={title} allowExportSelectedData={true} />\r\n <Column dataField=\"id\" caption=\"Factura #\" width={90} groupIndex={0} cellRender={dataFormatId} alignment=\"rigth\" />\r\n <Column dataField=\"date\" caption=\"Fecha\" dataType='date' format={formatDate} width={120} />\r\n <Column dataField=\"product\" caption=\"Item\" allowHeaderFiltering={false} />\r\n <Column dataField=\"paymentTypeId\" width={100} caption=\"Tipo pago\">\r\n <Lookup disabled={true} dataSource={createStoreLocal({ name: 'billPaymentType' })} valueExpr=\"id\" displayExpr=\"name\" />\r\n </Column>\r\n <Column dataField=\"totalDetail\" width={110} cellRender={cellRender()} />\r\n <Column dataField=\"createBy\" caption='Creado por' width={100} />\r\n <Column dataField=\"createAt\" caption='Creado el' dataType='date' format={formatDateTime} width={180} />\r\n <Summary>\r\n <GroupItemGrid\r\n column=\"totalDetail\"\r\n summaryType=\"sum\" displayFormat=\"Total: {0}\" alignByColumn={true} />\r\n </Summary>\r\n </DataGrid>\r\n <br />\r\n <Form formData={state} ref={refCut}>\r\n <GroupItem colCount={6}>\r\n <SimpleItem dataField=\"initValue\" colSpan={2} editorOptions={{ readOnly: true }}>\r\n <Label text=\"Saldo Inicial\" />\r\n </SimpleItem>\r\n <SimpleItem dataField=\"endValue\" colSpan={2} editorOptions={{ readOnly: true }}>\r\n <Label text=\"Ingresos\" />\r\n </SimpleItem>\r\n <SimpleItem dataField=\"calculateValue\" colSpan={2} editorOptions={{ readOnly: true }}>\r\n <Label text=\"Total Caja\" />\r\n </SimpleItem>\r\n </GroupItem>\r\n </Form>\r\n <br />\r\n <Button\r\n text={`Regresar`}\r\n type=\"normal\"\r\n icon=\"chevronleft\"\r\n stylingMode=\"contained\"\r\n className=\"m-1\"\r\n disabled={saving}\r\n onClick={backPage}\r\n />\r\n <Button\r\n text={`${saving ? 'Guardando...' : 'Cerrar caja'}`}\r\n type=\"default\"\r\n icon=\"save\"\r\n stylingMode=\"contained\"\r\n className=\"m-1\"\r\n disabled={saving || isClosed}\r\n onClick={guardarCut}\r\n />\r\n </div>\r\n }\r\n\r\n </div>\r\n )\r\n\r\n\r\n}\r\n\r\n\r\nexport default Ejecute;\r\n","import React, { useEffect, useRef, useState } from 'react';\r\nimport { DataGrid, Box, DropDownBox, DateBox, SelectBox, Button } from 'devextreme-react';\r\nimport { Item } from \"devextreme-react/box\";\r\nimport {\r\n Paging,\r\n Pager,\r\n FilterRow,\r\n HeaderFilter,\r\n ColumnChooser,\r\n Column,\r\n Lookup,\r\n Editing,\r\n Button as ButtonGrid,\r\n Export,\r\n Scrolling,\r\n Selection,\r\n GroupPanel,\r\n SearchPanel,\r\n Grouping,\r\n Summary,\r\n TotalItem,\r\n GroupItem\r\n} from 'devextreme-react/data-grid';\r\nimport Title from '../../../components/shared/Title';\r\nimport BlockHeader from '../../../components/shared/BlockHeader';\r\n\r\nimport { _path } from \"../../../data/headerNavigation\";\r\nimport { formatDate } from '../../../data/app';\r\nimport { cellRender, cellRenderBold, dataFormatId, formatToMoneyNumber, onCellPreparedSales, } from '../../../utils/common';\r\n\r\nimport uri from '../../../utils/uri';\r\nimport useProducts from '../../../hooks/useProducts';\r\nimport http from '../../../utils/http';\r\nimport { dateByReport, defaultLabels } from '../../../data/defaultObjects';\r\nimport { userService } from '../../../services/user.service';\r\n\r\nconst Compras = () => {\r\n\r\n const user = userService.getUser();\r\n\r\n let dropDownBoxRef = useRef();\r\n\r\n const [ areas, setAreas ] = useState([]);\r\n const [ areaId, setAreaId ] = useState(user.areaId);\r\n const { products } = useProducts({ areaId }); \r\n const [ productId, setProductId ] = useState(null);\r\n const [ users, setUsers ] = useState([]);\r\n const [ username, setUsername ] = useState([]);\r\n const [ dateFrom, setDateFrom ] = useState(dateByReport.from);\r\n const [ dateTo, setDateTo ] = useState(dateByReport.to);\r\n const [ data, setData ] = useState(undefined);\r\n const [ loading, setLoading ] = useState(false);\r\n\r\n const changeHandler = (e) => {\r\n setProductId(e.value);\r\n }\r\n\r\n const dataGrid_onSelectionChanged = (e) => { \r\n setProductId(e.selectedRowKeys[0].id);\r\n dropDownBoxRef.current.instance.close(); \r\n\r\n }\r\n\r\n const changeArea = e => setAreaId(e.value); \r\n\r\n const changeUser = e => setUsername(e.value); \r\n\r\n const changeDateFrom = e => setDateFrom(e.value);\r\n\r\n const changeDateTo = e => setDateTo(e.value); \r\n\r\n useEffect(() => {\r\n http(uri.areas.get).asGet().then(resp => setAreas(resp));\r\n http(uri.users.get).asGet().then(resp => setUsers(resp));\r\n }, [0]);\r\n\r\n const loadReport = () => {\r\n if(areaId > 0 && dateFrom && dateTo){\r\n setLoading(true);\r\n http('reports/shoppings').asPost({areaId, productId, from : dateFrom, to: dateTo}).then(resp => {\r\n setData(resp);\r\n setLoading(false);\r\n }); \r\n }\r\n };\r\n\r\n const dataGridRender = () => {\r\n return (\r\n <DataGrid\r\n dataSource={products}\r\n hoverStateEnabled={true}\r\n selectedRowKeys={productId}\r\n onSelectionChanged={dataGrid_onSelectionChanged}\r\n height=\"100%\"> \r\n <Selection mode=\"single\" />\r\n <Scrolling mode=\"infinite\" />\r\n <Paging enabled={true} pageSize={10} />\r\n <FilterRow visible={true} />\r\n <Column dataField=\"internalCode\" caption=\"Codigo\" width={80} />\r\n <Column dataField=\"name\" caption=\"Nombre\" />\r\n <Column dataField=\"family\" caption={defaultLabels.family} width={120}></Column>\r\n <Column dataField=\"um\" caption=\"UM\" width={120}></Column>\r\n </DataGrid>\r\n );\r\n }\r\n\r\n const toMoney = data => formatToMoneyNumber(data.value); \r\n\r\n const title = 'Reporte de Compras';\r\n\r\n return (\r\n <div className=\"container\">\r\n <Title title={title} />\r\n <BlockHeader title={title}>\r\n \r\n </BlockHeader>\r\n <Box direction=\"row\" width=\"100%\" height={75}> \r\n <Item ratio={1}>\r\n <div className=\"ml-10\">\r\n <label>Seleccione el area:</label>\r\n <SelectBox items={areas}\r\n placeholder=\"Selecciona una bodega\"\r\n showClearButton={true} valueExpr=\"id\" displayExpr=\"name\" \r\n value={areaId}\r\n onValueChanged={changeArea} \r\n />\r\n </div>\r\n </Item> \r\n <Item ratio={1}>\r\n <div className=\"ml-10\">\r\n <label>Desde:</label>\r\n <DateBox type=\"date\" \r\n value={dateFrom}\r\n displayFormat={formatDate} \r\n openOnFieldClick={true} \r\n onValueChanged={changeDateFrom}/>\r\n </div>\r\n </Item>\r\n <Item ratio={1}>\r\n <div className=\"ml-10\">\r\n <label>Hasta:</label>\r\n <DateBox type=\"date\" \r\n value={dateTo}\r\n displayFormat={formatDate} \r\n openOnFieldClick={true} \r\n onValueChanged={changeDateTo}/>\r\n </div>\r\n </Item> \r\n <Item ratio={1}>\r\n <div className=\"ml-10\">\r\n <label>Usuario:</label>\r\n <SelectBox items={users}\r\n placeholder=\"Selecciona\"\r\n showClearButton={true} valueExpr=\"username\" displayExpr=\"username\" \r\n value={username}\r\n onValueChanged={changeUser} \r\n />\r\n </div>\r\n </Item> \r\n <Item ratio={2}>\r\n <div className=\"ml-10\">\r\n <label>Seleccione un item:</label>\r\n <DropDownBox\r\n ref={dropDownBoxRef}\r\n dataSource={products}\r\n key=\"id\"\r\n placeholder=\"Selecciona un producto\"\r\n showClearButton={true} \r\n valueExpr=\"id\" \r\n displayExpr={item => item ? `${item.internalCode} - ${item.name}` : ''} \r\n value = {productId} \r\n onValueChanged={changeHandler} \r\n contentRender={dataGridRender} \r\n dropDownOptions={{ width: 500 }} \r\n />\r\n </div>\r\n </Item> \r\n <Item ratio={1}>\r\n <div style={{ paddingTop : '19px' }}>\r\n <Button\r\n width={120}\r\n text={`${loading ? 'Buscando...' : 'Buscar'}`}\r\n type=\"default\"\r\n icon=\"search\"\r\n stylingMode=\"contained\"\r\n className=\"m-1\"\r\n disabled={loading}\r\n onClick={loadReport}\r\n />\r\n </div>\r\n </Item>\r\n </Box>\r\n <Box direction=\"row\" width=\"100%\" height={75}>\r\n\r\n <Item ratio={1}> \r\n <DataGrid\r\n id=\"gridContainer\"\r\n //keyExpr=\"id\"\r\n selection={{ mode: 'single' }}\r\n dataSource={data}\r\n showBorders={true}\r\n showRowLines={true}\r\n hoverStateEnabled={true}\r\n onCellPrepared={onCellPreparedSales}\r\n > \r\n <GroupPanel visible={true} />\r\n <SearchPanel visible={true} width={200}/>\r\n <Grouping autoExpandAll={true} /> \r\n <Paging defaultPageSize={10} />\r\n <Pager\r\n showInfo={true}\r\n showPageSizeSelector={true}\r\n allowedPageSizes={[10, 20, 50,100,500]}\r\n />\r\n <Export enabled={true} fileName={title} allowExportSelectedData={true} /> \r\n\r\n\r\n <Column dataField=\"id\" caption=\"Factura\" width={100} cellRender={dataFormatId}/> \r\n <Column dataField=\"date\" dataType=\"date\" caption=\"Fecha\" format={formatDate} width={100}/> \r\n \r\n <Column dataField=\"productId\" caption=\"Código\" width={80}/> \r\n <Column dataField=\"product\" caption=\"Producto\" /> \r\n\r\n <Column dataField=\"quantity\" caption=\"Cantidad\" width={80}/> \r\n \r\n <Column caption='Costos' alignment='center'>\r\n <Column dataField=\"cost\" caption=\"Costo\" cellRender={cellRender()} width={100} /> \r\n <Column dataField=\"costoTotal\" caption=\"Costo Total\" cellRender={cellRender()} width={100}/> \r\n </Column>\r\n <Column caption='Precios' alignment='center'>\r\n <Column dataField=\"price\" caption=\"Precio\" cellRender={cellRender()} width={100} /> \r\n <Column dataField=\"priceTotal\" caption=\"Precio Total\" cellRender={cellRender()} width={100} /> \r\n <Column dataField=\"utilidades\" caption=\"Utilidades\" cellRender={cellRender()} width={100}/> \r\n </Column>\r\n <Summary>\r\n\r\n <TotalItem column=\"id\" summaryType=\"sum\" customizeText={() => 'Totales :'}/>\r\n \r\n <TotalItem column=\"price\" summaryType=\"sum\" customizeText={toMoney}/>\r\n <TotalItem column=\"totalDetail\" summaryType=\"sum\" customizeText={toMoney}/>\r\n <TotalItem column=\"cost\" summaryType=\"sum\" customizeText={toMoney} />\r\n <TotalItem column=\"costoTotal\" summaryType=\"sum\" customizeText={toMoney}/>\r\n <TotalItem column=\"priceTotal\" summaryType=\"sum\" customizeText={toMoney}/>\r\n <TotalItem column=\"utilidades\" summaryType=\"sum\" customizeText={toMoney}/>\r\n\r\n <GroupItem column=\"totalDetail\" summaryType=\"sum\" alignByColumn={true} customizeText={toMoney}/>\r\n <GroupItem column=\"price\" summaryType=\"sum\" alignByColumn={true} showInGroupFooter={true} customizeText={toMoney}/>\r\n <GroupItem column=\"utilidades\" summaryType=\"sum\" alignByColumn={true} showInGroupFooter={true} customizeText={toMoney}/>\r\n <GroupItem column=\"priceTotal\" summaryType=\"sum\" alignByColumn={true} showInGroupFooter={true} customizeText={toMoney}/>\r\n <GroupItem column=\"cost\" summaryType=\"sum\" alignByColumn={true} showInGroupFooter={true} customizeText={toMoney}/>\r\n <GroupItem column=\"costoTotal\" summaryType=\"sum\" alignByColumn={true} showInGroupFooter={true} customizeText={toMoney}/>\r\n\r\n </Summary> \r\n </DataGrid>\r\n </Item> \r\n </Box>\r\n </div>\r\n );\r\n}\r\n\r\n\r\n\r\nexport default Compras;\r\n","import React, { useEffect, useState } from 'react';\r\nimport uri from '../utils/uri';\r\nimport http from '../utils/http';\r\n\r\nconst useClientDetail = ({clientId = 0}) => {\r\n\r\n const [data, setData] = useState({});\r\n const [ isLoading, setIsLoading] = useState(false);\r\n\r\n const getClient = async () => {\r\n\r\n setIsLoading(true);\r\n const resp = await http(`${uri.clients.getById(clientId)}/detail`).asGet();\r\n setData(resp);\r\n setIsLoading(false);\r\n \r\n }\r\n\r\n useEffect(() => { \r\n\r\n if (clientId > 0)\r\n getClient();\r\n else\r\n setData({});\r\n\r\n }, [clientId]);\r\n\r\n return {\r\n data,\r\n isLoading\r\n };\r\n}\r\n\r\nexport default useClientDetail;\r\n","import React from 'react';\r\nimport { useSelector } from 'react-redux';\r\nimport useClientDetail from '../../hooks/useClientDetail';\r\nimport moment from 'moment';\r\n\r\nconst ClientInfo = ({ isMobile= false, user='' }) => {\r\n\r\n const { clientId } = useSelector(store => store.clientDetail);\r\n \r\n const { data, isLoading } = useClientDetail({ clientId });\r\n\r\n const { client , saldo, date, dueBills, department, city} = data;\r\n\r\n const creditLimit = client?.creditLimit ?? '--';\r\n const typeId = client?.typeId ?? '--';\r\n const saldoDisponible = saldo || '--';\r\n let dateUltCompra = '--';\r\n \r\n if(date)\r\n dateUltCompra = moment(date).format('DD-MM-YYYY');\r\n\r\n\r\n let _depto = '';\r\n let _city = '';\r\n\r\n if(department?.name)\r\n _depto = department?.name;\r\n\r\n if(city?.name)\r\n _city = city?.name;\r\n\r\n let deptoCity = '';\r\n if(_depto && _city)\r\n deptoCity = `(${_depto} ${_city})`;\r\n else if(_depto)\r\n deptoCity = `(${_depto})`;\r\n else if(_city)\r\n deptoCity = `(${_city})`;\r\n \r\n return (\r\n <div>\r\n {isLoading ? \r\n 'Cargando...' : \r\n <table>\r\n {\r\n isMobile && \r\n <tbody>\r\n <tr>\r\n <td className='text-blue'>Crédito:</td>\r\n <td className='pr-30'><b>{creditLimit}</b></td> \r\n <td className='text-blue'>Tipo:</td>\r\n <td className='pr-30'><b>{typeId === 1 ? 'Cuota Fija' : typeId == 2 ? 'Regimen General': '--'}</b></td>\r\n </tr> \r\n <tr>\r\n <td className='text-blue'>Disponible:</td>\r\n <td><b>{saldo < 0 ? <div className =\"text-danger\">{saldoDisponible}</div>:<div>{saldoDisponible}</div>}</b></td> \r\n <td className='text-blue'>Últ Compra:</td>\r\n <td><b>{dateUltCompra}</b></td> \r\n </tr>\r\n <tr> \r\n <td className='text-blue'>Fact Vencidas:</td>\r\n <td className='pr-30'><b>{dueBills}</b></td> \r\n </tr> \r\n <tr>\r\n <td className='text-blue'>Dirección:</td>\r\n <td colSpan={3} className='pr-30'><b>{deptoCity} {client?.address}</b></td> \r\n </tr>\r\n </tbody>\r\n }\r\n {\r\n !isMobile && \r\n <tbody>\r\n <tr>\r\n <td className='text-blue'>Limite crédito:</td>\r\n <td className='pr-30'><b>{creditLimit}</b></td>\r\n <td className='text-blue'>Tipo:</td>\r\n <td className='pr-30'><b>{typeId === 1 ? 'Cuota Fija' : typeId == 2 ? 'Regimen General': '--'}</b></td>\r\n <td className='text-blue'>Facturas Vencidas:</td>\r\n <td className='pr-30'><b>{dueBills}</b></td> \r\n </tr> \r\n <tr>\r\n <td className='text-blue'>Saldo Disponible:</td>\r\n <td><b>{saldo < 0 ? <div className =\"text-danger\">{saldoDisponible}</div>:<div>{saldoDisponible}</div>}</b></td> \r\n <td className='text-blue'>Ult compra:</td>\r\n <td><b>{dateUltCompra}</b></td>\r\n <td className='text-blue'>Vendedor:</td>\r\n <td><b>{user}</b></td>\r\n </tr>\r\n <tr>\r\n <td className='text-blue'>Dirección:</td>\r\n <td colSpan={4} className='pr-30'><b>{deptoCity} {client?.address}</b></td> \r\n </tr>\r\n </tbody>\r\n } \r\n </table>\r\n }\r\n </div>\r\n );\r\n}\r\n\r\nexport default ClientInfo;\r\n","import React, { useRef, useState } from 'react';\r\nimport { Popup } from 'devextreme-react';\r\nimport Form, { SimpleItem, Label, StringLengthRule, RequiredRule } from 'devextreme-react/form';\r\nimport { Button } from 'devextreme-react/button';\r\nimport notify from 'devextreme/ui/notify';\r\nimport { useDispatch, useSelector } from 'react-redux'\r\nimport http from '../../utils/http';\r\nimport uri from '../../utils/uri';\r\nimport { defaultClient } from '../../data/defaultObjects';\r\nimport { editorOptionsSwitch, editorOptsTextBoxPhone, editorOptionsSelect, resources } from '../../data/app';\r\nimport { clientDialogAction } from '../../store/client/clientDialogReducer';\r\nimport { createStoreLocal } from '../../utils/proxy';\r\nimport useAuthorization from '../../hooks/useAuthorization';\r\n\r\nconst NuevoClient = (props) => {\r\n\r\n const { fullScreen } = props;\r\n\r\n const dispatch = useDispatch();\r\n \r\n const { clientDialog: { open } } = useSelector(store => store);\r\n\r\n const [cliente, setcliente] = useState({ ...defaultClient }); \r\n const [saving, setSaving] = useState({\r\n loading : false,\r\n text : 'Guardar'\r\n });\r\n\r\n const closeDialog = (load, clientId) => {\r\n\r\n dispatch(clientDialogAction({ id: 0, clientId: 0, open: false }));\r\n\r\n if(load)\r\n if(props.onCreate)\r\n props.onCreate(clientId);\r\n\r\n }\r\n\r\n const onHiding = ({ load }) => {\r\n\r\n closeDialog(load, 0);\r\n \r\n }\r\n\r\n\r\n const onShowing = (e) => {\r\n setcliente({ ...defaultClient });\r\n }\r\n\r\n const refForm = useRef();\r\n\r\n const guardarCliente = (params) => {\r\n\r\n let result = refForm.current.instance.validate(); \r\n\r\n if (result.isValid) {\r\n\r\n setSaving({loading : true, text:'Guardando...'});\r\n \r\n http(uri.clients.insert).asPost(cliente).then(resp => {\r\n\r\n notify('Datos guardados correctamente');\r\n setSaving({loading : false, text:'Guardar'}); \r\n closeDialog(true, resp.id);\r\n\r\n }).catch(err => {\r\n\r\n setSaving({loading : false, text:'Guardar'});\r\n notify(err, 'error');\r\n\r\n });\r\n\r\n }\r\n }\r\n\r\n const screenOpts = { };\r\n\r\n if(fullScreen)\r\n screenOpts.fullScreen = true;\r\n else{\r\n screenOpts.width = 850;\r\n screenOpts.height = 430;\r\n } \r\n\r\n return (\r\n <div> \r\n <Popup\r\n title={`Cliente`}\r\n {...screenOpts}\r\n onHiding={onHiding}\r\n onShowing={onShowing}\r\n visible={open}\r\n showCloseButton={true}\r\n className=\"bg-fbfbfb\"\r\n >\r\n <Form formData={cliente} ref={refForm} colCount={2}>\r\n <SimpleItem dataField=\"isCompany\" colSpan={2} editorType='dxSwitch' editorOptions={{...editorOptionsSwitch, onValueChanged: e => setcliente({ ...cliente, isCompany: e.value, typeId: e.value ? cliente.typeId : null })}}>\r\n <Label text=\"Es Empresa ?\" /> \r\n </SimpleItem>\r\n <SimpleItem dataField=\"identification\">\r\n <Label text={cliente.isCompany ? 'RUC':'Identificación'} />\r\n <StringLengthRule max={50} message=\"Maximo 50 caracteres\" />\r\n </SimpleItem>\r\n <SimpleItem dataField=\"typeId\" editorType=\"dxSelectBox\"\r\n editorOptions={{\r\n disabled: !cliente.isCompany,\r\n dataSource: createStoreLocal({ name: 'clientType' }),\r\n ...editorOptionsSelect,\r\n onValueChanged: e => setcliente({ ...cliente, typeId: e.value, })\r\n }} >\r\n <Label text=\"Tipo\" />\r\n { cliente.isCompany == true && <RequiredRule message=\"Este campo es requerido\" />}\r\n </SimpleItem> \r\n <SimpleItem dataField=\"name\" colSpan={1}>\r\n <Label text={ cliente.isCompany ? 'Comercio':'Nombre' } />\r\n <RequiredRule message=\"Este campo es requerido\" />\r\n <StringLengthRule max={100} message=\"Maximo 100 caracteres\" />\r\n </SimpleItem>\r\n <SimpleItem dataField=\"lastName\">\r\n <Label text={ cliente.isCompany ? 'Contacto':'Apellidos'} />\r\n { cliente.isCompany == false && <RequiredRule message=\"Este campo es requerido\" />}\r\n <StringLengthRule max={100} message=\"Maximo 100 caracteres\" />\r\n </SimpleItem>\r\n <SimpleItem dataField=\"birthdate\" editorType='dxDateBox' editorOptions={{\r\n disabled: cliente.isCompany,\r\n openOnFieldClick:true\r\n }}>\r\n <Label text=\"Fecha de Nac\" />\r\n </SimpleItem> \r\n \r\n <SimpleItem dataField=\"phoneNumber\" editorOptions={{...editorOptsTextBoxPhone}}>\r\n <Label text=\"Telefono\" />\r\n <StringLengthRule max={50} message=\"Maximo 50 caracteres\" />\r\n </SimpleItem>\r\n <SimpleItem dataField=\"phoneNumberWork\" editorOptions={editorOptsTextBoxPhone}>\r\n <Label text=\"Telefono Trabajo\" />\r\n <StringLengthRule max={50} message=\"Maximo 50 caracteres\" />\r\n </SimpleItem>\r\n <SimpleItem dataField=\"cellNumber\" editorOptions={editorOptsTextBoxPhone}>\r\n <Label text=\"Celular\" />\r\n <StringLengthRule max={50} message=\"Maximo 50 caracteres\" />\r\n </SimpleItem>\r\n <SimpleItem dataField=\"email\">\r\n <Label text=\"Correo\" />\r\n <StringLengthRule max={50} message=\"Maximo 50 caracteres\" />\r\n </SimpleItem>\r\n <SimpleItem dataField=\"address\">\r\n <Label text=\"Dirección\" />\r\n <StringLengthRule max={250} message=\"Maximo 250 caracteres\" />\r\n </SimpleItem>\r\n \r\n </Form>\r\n <br />\r\n <Button\r\n width={180}\r\n text={saving.text} \r\n disabled={saving.loading}\r\n type=\"default\"\r\n icon='save'\r\n onClick={guardarCliente}\r\n />\r\n <br />\r\n </Popup>\r\n </div>\r\n );\r\n}\r\n\r\nexport default NuevoClient;\r\n","import React from \"react\";\r\nimport useApi from \"./useApi\";\r\nimport uri from \"../utils/uri\";\r\n\r\n\r\nconst useClients = ({reload=0}) => { \r\n \r\n const { data: clients, isLoading } = useApi({ url: uri.clients.base+'/catalogo?reload='+reload }); \r\n \r\n return {\r\n clients, \r\n isLoading\r\n }\r\n}\r\n\r\nexport default useClients;","import { CLIENT_DETAIL } from \"../consts\";\r\n\r\nconst stateInit = {clientId: 0};\r\n\r\n\r\nexport const clientDetailAction = ({clientId}) => ({\r\n type: CLIENT_DETAIL,\r\n payload : {clientId}\r\n});\r\n\r\nexport default function clientDetailReducer(state = stateInit, { type, payload }) {\r\n\r\n const actions = {\r\n [CLIENT_DETAIL] : () => {\r\n return {...stateInit,...payload}\r\n }\r\n }\r\n\r\n return actions[type]?.call() || state;\r\n}\r\n\r\n","import React, { useEffect, useState, useRef, useCallback, useMemo } from 'react';\r\nimport { Popup, ToolbarItem } from 'devextreme-react/popup';\r\nimport Form, { SimpleItem, GroupItem, Label, RequiredRule, StringLengthRule } from 'devextreme-react/form';\r\nimport { useDispatch, useSelector } from 'react-redux'\r\nimport { billDialogAction } from '../../store/bill/billDialogReducer';\r\nimport { createCustomStore, createStoreLocal } from '../../utils/proxy';\r\nimport { editorOptionsSelect, formatDate, resources } from '../../data/app';\r\nimport { DataGrid, Button, TextBox, ScrollView, SelectBox } from 'devextreme-react';\r\nimport { LoadPanel } from 'devextreme-react/load-panel';\r\nimport { Column, Editing, Lookup, RequiredRule as RuleRequired, Button as ButtonGrid, Summary, TotalItem, SearchPanel } from 'devextreme-react/data-grid';\r\nimport { cellRender, formatId, formatToMoney, toMoney } from '../../utils/common';\r\nimport http from '../../utils/http';\r\nimport notify from 'devextreme/ui/notify';\r\nimport { billDefault, defaultLabels } from '../../data/defaultObjects';\r\nimport { paymentType, preBillType } from '../../data/enums';\r\nimport ProductDDBComponent from '../../components/dropdown/ProductDDBComponent';\r\nimport useProducts from '../../hooks/useProducts';\r\nimport uri from '../../utils/uri';\r\nimport Resumen from '../../components/form/Resumen';\r\nimport ClientInfo from '../clients/ClientInfo';\r\nimport { confirm } from 'devextreme/ui/dialog';\r\nimport NuevoClient from '../clients/NuevoClient';\r\nimport useAuthorization from '../../hooks/useAuthorization';\r\nimport useClients from '../../hooks/useClients';\r\nimport { clientDetailAction } from '../../store/clientDetail/clientDetailReducer';\r\nimport { clientDialogAction } from '../../store/client/clientDialogReducer';\r\nimport urlReport from '../../services/reportServices';\r\nimport DataSource from 'devextreme/data/data_source';\r\n\r\n\r\nconst Nuevo = props => {\r\n\r\n const [ _, canChangeCreditDays ] = useAuthorization( resources.cambiarDiasCredito );\r\n const { action, typeId } = props;\r\n\r\n const { billDialog: { open, id, clientId }, user, } = useSelector(store => store);\r\n const [resumenData, setResumenData] = useState([]);\r\n const billDefaultCustom = { ...billDefault, clientId: clientId, preBillTypeId: typeId, paymentTypeId: 2 };\r\n\r\n const [ reload, setReload ] = useState(0);\r\n const [ loading, setLoading ] = useState(false);\r\n const [ editing, setEditing ] = useState(false);\r\n const [ fullScreen, setFullScreen ] = useState(false);\r\n\r\n const { products, setProducts } = useProducts({ areaId: user.areaId, exists: true, reload });\r\n const [bill, setBill] = useState({ ...billDefaultCustom });\r\n const [saving, setSaving] = useState(false);\r\n const [currentCreditDays, setCurrentCreditDays] = useState(0);\r\n\r\n let refForm = useRef();\r\n let refGrid = useRef();\r\n let textBoxRef = useRef();\r\n let refSelect = useRef(); \r\n\r\n useEffect(() => { \r\n\r\n if (id > 0) {\r\n setLoading(true);\r\n http(uri.products.getByArea(user.areaId)).asGet().then(data => {\r\n setProducts(data);\r\n\r\n http(uri.prebills.getById(id)).asGet().then(resp => {\r\n\r\n resp.preBillDetails.forEach(detail => {\r\n\r\n let info = products.find(x => x.id == detail.productId);\r\n\r\n detail['presentation'] = info.presentation;\r\n detail['um'] = info.um;\r\n detail['family'] = info.family;\r\n detail['stock'] = info.stock;\r\n detail['product'] = null;\r\n\r\n });\r\n\r\n setBill(_bill =>({ ..._bill, ...resp }));\r\n setResumenData([...resp.preBillDetails]);\r\n setEditing(false);\r\n setLoading(false);\r\n })\r\n\r\n });\r\n\r\n } else {\r\n\r\n setLoading(true);\r\n setBill({ ...billDefaultCustom, preBillDetails: [] });\r\n setResumenData([]); \r\n setEditing(true); \r\n setLoading(false); \r\n\r\n }\r\n\r\n if(open)\r\n window.addEventListener(\"beforeunload\", alertUser);\r\n \r\n return () => {\r\n if(open)\r\n window.removeEventListener(\"beforeunload\", alertUser);\r\n };\r\n\r\n }, [open]);\r\n\r\n const alertUser = (e) => {\r\n e.preventDefault();\r\n e.returnValue = \"\";\r\n alert('saliendo');\r\n };\r\n\r\n const dispatch = useDispatch();\r\n\r\n const onToolbarPreparing = (e) => {\r\n e.toolbarOptions.items.unshift({\r\n location: 'before',\r\n widget: 'dxButton',\r\n options: {\r\n text: 'Agregar producto',\r\n icon: 'plus',\r\n type: 'default',\r\n stylingMode: \"outlined\",\r\n disabled: !editing && !currentIsCotizazion,\r\n onClick: () => refGrid.current.instance.addRow()\r\n }\r\n },{\r\n location: 'before',\r\n widget: 'dxButton',\r\n options: {\r\n icon: 'refresh',\r\n type: 'default',\r\n stylingMode: \"outlined\",\r\n onClick: () => setReload(Math.random())\r\n }\r\n },{\r\n location: 'before',\r\n widget: 'dxButton',\r\n options: {\r\n icon: 'check',\r\n type: 'revert',\r\n stylingMode: \"outlined\",\r\n onClick: () => { \r\n\r\n refGrid.current.instance.cancelEditData(); \r\n \r\n }\r\n }\r\n },{\r\n location: 'before',\r\n widget: 'dxButton',\r\n options: {\r\n icon: 'revert',\r\n type: 'normal',\r\n stylingMode: \"outlined\",\r\n onClick: () => { \r\n\r\n refGrid.current.instance.cancelEditData(); \r\n \r\n }\r\n }\r\n }\r\n );\r\n } \r\n\r\n const closeDialog = (load) => {\r\n\r\n refForm.current.instance.resetValues();\r\n refGrid.current.instance.cancelEditData();\r\n\r\n dispatch(billDialogAction({ id: 0, clientId: 0, open: false }));\r\n setReload(Math.random());\r\n\r\n if (load) {\r\n let { onSave } = props;\r\n onSave();\r\n }\r\n }\r\n\r\n const onHiding = ({ load }) => {\r\n closeDialog(load);\r\n }\r\n\r\n const convertFactura = (print) => {\r\n\r\n let result = confirm(\"<i>Esta seguro de convertir a factura la preventa: <b>\"+formatId(id)+\"</b>?</i>\", \"Confirmar\");\r\n result.then((dialogResult) => {\r\n\r\n if (dialogResult){\r\n\r\n setSaving(true);\r\n \r\n http(`${uri.prebills.base}/${id}/convertToBill`).asGet().then(resp => {\r\n \r\n notify(`Se ha creado la factura correctamente correctamente`);\r\n if(print)\r\n {\r\n const report = urlReport();\r\n report.print(`${report.billTicket(resp.billId)}`);\r\n }\r\n closeDialog(true); \r\n setSaving(false);\r\n \r\n \r\n }).catch(err => { \r\n notify(err, 'error', 5000);\r\n setSaving(false);\r\n });\r\n \r\n }\r\n });\r\n\r\n }\r\n\r\n\r\n const guardarAsCotizacion = () => {\r\n guardarFactura({ preBillTypeId: preBillType.cotizacion });\r\n }\r\n\r\n const guardarFactura = ({ preBillTypeId = null }) => {\r\n\r\n refGrid.current.instance.saveEditData();\r\n let result = refGrid.current.instance.hasEditData();\r\n\r\n if (!result) {\r\n\r\n let result = refForm.current.instance.validate();\r\n\r\n if (result.isValid) {\r\n\r\n setSaving(true);\r\n let data = { ...bill };\r\n\r\n if(preBillTypeId)\r\n data.preBillTypeId = preBillTypeId;\r\n\r\n http(uri.prebills.insert).asPost(data).then(resp => {\r\n setSaving(false);\r\n notify(`${action} registrada correctamente`);\r\n setReload(Math.random());\r\n closeDialog(true); \r\n }).catch(err => {\r\n setSaving(false);\r\n notify(err, 'error', 6000);\r\n });\r\n\r\n }\r\n }\r\n\r\n }\r\n\r\n const setCellValue = (prop, newData, value, currentRowData) => {\r\n\r\n newData[prop] = value || 0;\r\n if (prop == 'productId' && value) {\r\n\r\n let info = products.find(x => x.id == value);\r\n\r\n newData['presentation'] = info.presentation;\r\n newData['um'] = info.um;\r\n newData['family'] = info.family;\r\n newData['stock'] = info.stock;\r\n newData['price'] = info.price;\r\n newData['customPrice'] = info.price;\r\n newData['cost'] = info.cost;\r\n newData['discount'] = 0;\r\n newData['discountUnit'] = 0;\r\n newData['discountPercent'] = 0;\r\n !currentRowData['quantity'] && (newData['quantity'] = 1);\r\n !currentRowData['total'] && (newData['total'] = info.price);\r\n }\r\n\r\n if (prop == 'quantity' && (+value) >= 0) {\r\n const stock = currentRowData['stock'] + value;\r\n if(value > stock && isPreventa){\r\n newData['quantity'] = currentRowData['stock'];\r\n newData['total'] = currentRowData['customPrice'] * currentRowData['stock'];\r\n notify(stock + \" máximo stock disponible\", \"error\", 5000);\r\n }else{\r\n newData['total'] = currentRowData['customPrice'] * value;\r\n }\r\n }\r\n\r\n if (prop == 'customPrice' && (+value) >= 0) {\r\n newData['total'] = currentRowData['quantity'] * value;\r\n }\r\n\r\n if (prop == 'discountUnit' && (+value) >= 0) {\r\n newData['discount'] = value * currentRowData['quantity'];\r\n newData['total'] = (currentRowData['quantity'] * currentRowData['customPrice']) - newData['discount'];\r\n newData['discountPercent'] = parseFloat((newData['discount'] * 100) / (currentRowData['quantity'] * currentRowData['customPrice'])).toFixed(6);\r\n }\r\n\r\n if (prop == 'discount' && (+value) >= 0) {\r\n newData['total'] = (currentRowData['quantity'] * currentRowData['customPrice']) - value;\r\n newData['discountPercent'] = parseFloat((value * 100) / (currentRowData['quantity'] * currentRowData['customPrice'])).toFixed(6);\r\n newData['discountUnit'] = parseFloat(value / currentRowData['quantity']).toFixed(6);\r\n }\r\n\r\n if (prop == 'discountPercent' && (+value) >= 0) {\r\n newData['discount'] = parseFloat((currentRowData['quantity'] * currentRowData['customPrice']) * (value / 100)).toFixed(6);\r\n newData['total'] = (currentRowData['quantity'] * currentRowData['customPrice']) - newData['discount'];\r\n newData['discountUnit'] = parseFloat(newData['discount'] / currentRowData['quantity']).toFixed(6);\r\n \r\n }\r\n\r\n }\r\n\r\n const onCellPrepared = e => {\r\n\r\n const cellsQuantity = ['quantity', 'quantityRequest']\r\n\r\n if (e.rowType == 'data' && e.column.allowEditing) {\r\n if (cellsQuantity.includes(e.column.dataField))\r\n e.cellElement.classList.add('quantity-text');\r\n if (e.column.dataField == 'customPrice')\r\n e.cellElement.classList.add('customPrice-text');\r\n\r\n }\r\n\r\n }\r\n\r\n const onRowInserted = e => {\r\n setResumenData([...bill.preBillDetails])\r\n }\r\n\r\n const isNew = id == 0;\r\n\r\n const init = \"\"; \r\n\r\n\r\n const reloadClient = clientId => {\r\n setBill(_bill => ({ ..._bill, clientId: clientId }));\r\n }\r\n\r\n const onRowInserting = (e) => {\r\n\r\n const isCanceled = new Promise((resolve, reject) => {\r\n\r\n const existsProduct = bill.preBillDetails.find(x => x.productId == e.data.productId);\r\n\r\n if (existsProduct) {\r\n notify(`El producto ya se encuentra en la lista`, 'error', 5000);\r\n reject(`El producto ya se encuentra en la lista`);\r\n }else{\r\n resolve(false);\r\n }\r\n });\r\n e.cancel = isCanceled;\r\n\r\n }\r\n\r\n const paymentTypeIdChanged = (e) => {\r\n\r\n setBill(_bill => ({ \r\n ..._bill, paymentTypeId: e.value, \r\n paymentMethodId: e.value == paymentType.credito ? null : '', \r\n bankId: e.value == paymentType.credito ? null : '', \r\n reference:'', \r\n creditDays: e.value == paymentType.contado ? 0 : currentCreditDays,\r\n }))\r\n }\r\n\r\n const clientIdChanged = e => {\r\n\r\n const client = e.component.option('items')\r\n .find(x => x.id == e.value);\r\n\r\n let creditDays = 0;\r\n\r\n if(client)\r\n creditDays = client.creditDays; \r\n \r\n dispatch(clientDetailAction( {clientId:e.value}));\r\n setCurrentCreditDays(creditDays);\r\n setBill(_bill => ({ ..._bill, clientId: e.value, creditDays: creditDays }));\r\n\r\n }\r\n\r\n const buttonOptions2 = {\r\n icon: 'edit',\r\n onClick: e => setEditing(!editing),\r\n };\r\n\r\n const buttonOptions = {\r\n text: 'Crear Cliente',\r\n icon: 'user',\r\n onClick: function(e) { \r\n dispatch(clientDialogAction({ open: true }));\r\n }\r\n };\r\n\r\n const buttonFSOptions = {\r\n text: '',\r\n icon: 'fullscreen',\r\n onClick: function(e) { \r\n setFullScreen(!fullScreen);\r\n }\r\n };\r\n\r\n const ds = useMemo(() =>new DataSource({\r\n key: 'productId',\r\n store: bill.preBillDetails,\r\n // ...\r\n }));\r\n\r\n\r\n const addProductById = ( id, _info=null ) => {\r\n\r\n if (!id) return;\r\n\r\n const items = ds.items();\r\n\r\n const existsProduct = items.find(x => x.productId == id);\r\n\r\n if (existsProduct) {\r\n notify(`El producto ya se encuentra en la lista`, 'error', 5000);\r\n return\r\n }\r\n\r\n let info = _info == null ? products.find(x => x.id == id) : _info;\r\n\r\n if(info.stock <= 0)\r\n return notify('No hay stock disponible', 'error', 5000);\r\n\r\n let newData = {}; \r\n\r\n newData['presentation'] = info.presentation;\r\n newData['um'] = info.um;\r\n newData['family'] = info.family;\r\n newData['stock'] = info.stock;\r\n newData['price'] = info.price;\r\n newData['customPrice'] = info.price;\r\n newData['cost'] = info.cost;\r\n newData['quantity'] = 1;\r\n newData['total'] = info.price; \r\n newData['discount'] = 0;\r\n newData['discountUnit'] = 0;\r\n newData['discountPercent'] = 0;\r\n newData['productId'] = info.id; \r\n\r\n ds.store().insert(newData).then(() => {\r\n ds.reload().then(() => {\r\n refGrid.current.instance.editCell(bill.preBillDetails.length - 1, 'quantity');\r\n });\r\n });\r\n\r\n //setBill(_bill => ({ ..._bill, billDetails: [...newDetail],}));\r\n\r\n }\r\n\r\n const dataSourceProduct = useCallback(() => new DataSource({\r\n load: (loadOptions) => {\r\n \r\n let params = {};\r\n params.skip = loadOptions.skip || 0;\r\n params.take = loadOptions.take || 10;\r\n \r\n if(loadOptions.searchValue)\r\n params.name = loadOptions.searchValue;\r\n\r\n params.exists = true;\r\n params.active=false; \r\n params.has=false;\r\n params.onlyProducts= false;\r\n \r\n return http(uri.products.getByArea(user.areaId)+'/grid')\r\n .asGet(params).then(x => x.items);\r\n \r\n },\r\n byKey: id => http(uri.products.getById(id)).asGet(),\r\n paginate : true,\r\n pageSize: 10\r\n }),[]);\r\n\r\n const setFocus = () => {\r\n setTimeout(() => {\r\n refSelect.current.instance.focus(); \r\n }, 300);\r\n }\r\n\r\n const onEditCanceled = (e) => {\r\n setFocus()\r\n }\r\n\r\n const keyDown = (e) => {\r\n if(e.event.key == 'Enter')\r\n setFocus()\r\n }\r\n\r\n const itemRender = (data) => {\r\n\r\n const isZero = data.stock <= 0;\r\n\r\n const cssZero = isZero ? 'product-stock zero-stock' : 'product-stock';\r\n\r\n return <div className=\"d-flex space-between\">\r\n <div>\r\n <div className=\"product-name\"><b>{data.internalCode}</b>-{data.name}</div>\r\n <div className=\"product-desciption\"><small className='text-muted'>Categoria: </small>{data.family} <small className='text-muted'>Marca: </small>{data.presentation}</div>\r\n </div> \r\n <div className=\"text-right\">\r\n <div className=\"product-price\">{formatToMoney(data.price)}</div>\r\n <div className={cssZero}><small className='text-muted'>Disponible:</small> {data.stock}/{data.disponible}</div>\r\n </div> \r\n </div>\r\n }\r\n\r\n\r\n const isPreventa = typeId == preBillType.preventa;\r\n\r\n const currentIsPreventa = bill.preBillTypeId == preBillType.preventa;\r\n\r\n const currentIsCotizazion = bill.preBillTypeId == preBillType.cotizacion;\r\n \r\n return (\r\n <div>\r\n <NuevoClient onCreate={reloadClient} />\r\n <Popup\r\n height={'100vh'}\r\n width={'90vw'}\r\n title={isNew ? `Nueva ${action}` : `Ver ${action} ${formatId(id)}`}\r\n onHiding={onHiding}\r\n visible={open}\r\n className=\"bg-fbfbfb\"\r\n fullScreen={fullScreen}\r\n id='bill-panel'\r\n >\r\n <LoadPanel\r\n shadingColor=\"rgba(0,0,0,0.4)\"\r\n position={{ of: '#bill-panel' }}\r\n visible={loading}\r\n showIndicator={loading}\r\n shading={true}\r\n showPane={true}\r\n />\r\n <ToolbarItem\r\n widget=\"dxButton\" \r\n location=\"after\"\r\n visible={!isNew && currentIsPreventa} \r\n options={buttonOptions2}>\r\n\r\n </ToolbarItem>\r\n <ToolbarItem\r\n widget=\"dxButton\"\r\n location=\"after\"\r\n options={buttonOptions}>\r\n </ToolbarItem>\r\n <ToolbarItem\r\n widget=\"dxButton\"\r\n location=\"after\"\r\n options={buttonFSOptions}>\r\n </ToolbarItem>\r\n <ScrollView showScrollbar='never' > \r\n <Form formData={bill} ref={refForm} readOnly={!editing && !currentIsCotizazion}>\r\n <GroupItem colCount={4}>\r\n <GroupItem colSpan={4}>\r\n <GroupItem colCount={6}>\r\n\r\n <SimpleItem dataField=\"date\" colSpan={2} editorType=\"dxDateBox\"\r\n editorOptions={{\r\n displayFormat: formatDate,\r\n openOnFieldClick: true,\r\n }} >\r\n <Label text=\"Fecha\" />\r\n <RequiredRule message=\"Seleccione la fecha\" />\r\n </SimpleItem>\r\n <SimpleItem dataField=\"paymentTypeId\" colSpan={2} editorType=\"dxSelectBox\"\r\n editorOptions={{\r\n dataSource: createStoreLocal({ name: 'billPaymentType' }),\r\n ...editorOptionsSelect,\r\n searchEnabled: false, \r\n onValueChanged: paymentTypeIdChanged \r\n }} >\r\n <Label text=\"Tipo pago\" />\r\n <RequiredRule message=\"Seleccione el tipo\" />\r\n </SimpleItem>\r\n <SimpleItem dataField=\"codigo\" colSpan={2} editorType=\"dxTextBox\"\r\n editorOptions={{ placeholder: 'Talonario', showClearButton: true }} >\r\n <Label text=\"Referencia\" />\r\n </SimpleItem>\r\n <SimpleItem dataField=\"clientId\" colSpan={4} editorType=\"dxSelectBox\"\r\n editorOptions={{\r\n dataSource: createCustomStore({ url: uri.clients.base+'/catalogo?reload='+reload, active: true })(),\r\n valueExpr:\"id\",\r\n displayExpr: item => item ? `${item.id} - ${item.name}` : '',\r\n searchEnabled: true,\r\n showClearButton:true,\r\n searchExpr: [\"name\"],\r\n onValueChanged: clientIdChanged\r\n }} >\r\n <Label text=\"Cliente\" />\r\n <RequiredRule message=\"Seleccione el cliente\" />\r\n </SimpleItem>\r\n <SimpleItem dataField=\"creditDays\" colSpan={2} editorType=\"dxNumberBox\"\r\n editorOptions={{\r\n disabled: !canChangeCreditDays,\r\n onValueChanged: e => setBill(_bill => ({ ..._bill, creditDays: e.value, })),\r\n }} >\r\n <Label text=\"Dias crédito\" />\r\n <RequiredRule message=\"Seleccione el tipo\" />\r\n </SimpleItem> \r\n <SimpleItem colSpan={6} >\r\n <ClientInfo user={bill.createBy} />\r\n </SimpleItem> \r\n <SimpleItem dataField=\"paymentMethodId\" colSpan={2} editorType=\"dxSelectBox\"\r\n editorOptions={{\r\n disabled: bill.paymentTypeId == paymentType.credito,\r\n dataSource: createStoreLocal({ name: 'billPaymentMethod' }),\r\n ...editorOptionsSelect,\r\n onValueChanged: e => setBill(_bill => ({ ..._bill, paymentMethodId: e.value, }))\r\n }} >\r\n <Label text=\"Forma pago\" />\r\n </SimpleItem>\r\n <SimpleItem dataField=\"bankId\" colSpan={2} editorType=\"dxSelectBox\"\r\n editorOptions={{\r\n disabled: bill.paymentTypeId == paymentType.credito,\r\n dataSource: createStoreLocal({ name: 'bank' }),\r\n ...editorOptionsSelect,\r\n onValueChanged: e => setBill(_bill => ({ ..._bill, bankId: e.value, }))\r\n }} >\r\n <Label text=\"Banco\" />\r\n </SimpleItem>\r\n <SimpleItem dataField=\"reference\" colSpan={2} editorType=\"dxTextBox\"\r\n editorOptions={{ showClearButton: true, disabled: bill.paymentTypeId == paymentType.credito, }} >\r\n <Label text=\"Referencia\" />\r\n </SimpleItem>\r\n\r\n </GroupItem>\r\n </GroupItem>\r\n\r\n </GroupItem>\r\n <GroupItem colCount={4}>\r\n <SimpleItem colSpan={2}>\r\n <SelectBox\r\n ref={refSelect}\r\n dataSource={dataSourceProduct()} \r\n valueExpr=\"id\" \r\n displayExpr={item => item ? `${item.internalCode} - ${item.name}` : ''}\r\n searchEnabled={true} \r\n disabled={!editing && !currentIsCotizazion}\r\n searchMode=\"contains\" searchExpr={['name','internalCode']} \r\n searchTimeout={600} \r\n placeholder=\"Selecione una producto\" \r\n showClearButton={true} \r\n itemRender={itemRender} \r\n onValueChanged={e => {\r\n\r\n addProductById(e.value);\r\n e.component.reset();\r\n e.component.focus(); \r\n\r\n }} />\r\n </SimpleItem>\r\n </GroupItem>\r\n <GroupItem>\r\n <DataGrid id=\"gridDetails\"\r\n ref={refGrid}\r\n selection={{ mode: 'single' }}\r\n dataSource={ds}\r\n showBorders={true}\r\n showRowLines={true}\r\n allowColumnResizing={true}\r\n allowColumnReordering={true}\r\n height={270}\r\n onToolbarPreparing={onToolbarPreparing}\r\n onRowInserted={onRowInserted}\r\n onRowRemoved={onRowInserted}\r\n onRowUpdated={onRowInserted}\r\n onCellPrepared={onCellPrepared}\r\n onRowInserting={onRowInserting}\r\n onEditCanceled={onEditCanceled} \r\n onKeyDown={keyDown}\r\n >\r\n <SearchPanel visible={true} />\r\n <Column dataField=\"productId\" caption=\"Producto\"\r\n setCellValue={setCellValue.bind(null, \"productId\")}\r\n editCellComponent={props => <ProductDDBComponent showPrice={true} {...props} validateQuantity={isPreventa} />}\r\n >\r\n \r\n <Lookup\r\n dataSource={products}\r\n valueExpr=\"id\"\r\n displayExpr={item => item ? `${item.internalCode} - ${item.name}` : ''}\r\n\r\n />\r\n <RuleRequired />\r\n </Column> \r\n <Column dataField=\"family\" caption={defaultLabels.family} width={120} allowEditing={false}>\r\n <RuleRequired />\r\n </Column>\r\n <Column dataField=\"quantity\" caption=\"Cantidad\" dataType=\"number\" width={80}\r\n setCellValue={setCellValue.bind(null, \"quantity\")}\r\n >\r\n <RuleRequired />\r\n </Column>\r\n <Column dataField=\"stock\" caption=\"Disponible\" dataType=\"number\" width={90} allowEditing={false}>\r\n </Column>\r\n <Column visible={false} dataField=\"price\" caption=\"Precio\" dataType=\"number\" width={100} allowEditing={false} cellRender={cellRender()} >\r\n <RuleRequired />\r\n </Column>\r\n <Column dataField=\"customPrice\" caption=\"Precio\" dataType=\"number\" width={100} cellRender={cellRender()}\r\n setCellValue={setCellValue.bind(null, \"customPrice\")}>\r\n <RuleRequired />\r\n </Column>\r\n <Column dataField=\"discountUnit\" caption=\"Desc Uni\" dataType=\"number\" width={80} cellRender={cellRender()}\r\n setCellValue={setCellValue.bind(null, \"discountUnit\")}>\r\n <RuleRequired />\r\n </Column>\r\n <Column dataField=\"discountPercent\" caption=\"Desc %\" dataType=\"number\" width={80}\r\n setCellValue={setCellValue.bind(null, \"discountPercent\")}>\r\n <RuleRequired />\r\n </Column>\r\n <Column dataField=\"discount\" caption=\"Desc\" dataType=\"number\" width={80} cellRender={cellRender()}\r\n setCellValue={setCellValue.bind(null, \"discount\")}>\r\n <RuleRequired />\r\n </Column>\r\n <Column dataField=\"total\" caption=\"Total\" dataType=\"number\" width={120} allowEditing={false} cellRender={cellRender()} >\r\n <RuleRequired />\r\n </Column>\r\n <Column type=\"buttons\" width={50}>\r\n <ButtonGrid name=\"delete\" />\r\n </Column> \r\n <Summary>\r\n <TotalItem column=\"productId\" summaryType=\"count\" />\r\n <TotalItem column=\"discount\" summaryType=\"sum\" customizeText={toMoney} />\r\n <TotalItem column=\"total\" summaryType=\"sum\" customizeText={toMoney} />\r\n </Summary> \r\n <Editing\r\n mode=\"cell\"\r\n allowDeleting={editing || currentIsCotizazion}\r\n allowUpdating={editing || currentIsCotizazion}\r\n selectTextOnEditStart={true}\r\n useIcons={true}\r\n ></Editing>\r\n </DataGrid>\r\n </GroupItem>\r\n <GroupItem colCount={6}>\r\n <SimpleItem colSpan={4} dataField=\"observation\" editorType=\"dxTextBox\">\r\n <Label text=\"Observacion\" />\r\n <StringLengthRule max={150} message=\"Maximo 150 caracteres\" />\r\n </SimpleItem>\r\n <SimpleItem colSpan={2} dataField=\"codeAuth\" editorType=\"dxTextBox\">\r\n <Label text=\"Código Autorización\" />\r\n <StringLengthRule max={150} message=\"Maximo 150 caracteres\" />\r\n </SimpleItem>\r\n </GroupItem>\r\n </Form>\r\n <br />\r\n <div className='flex-v'>\r\n {bill.active == false && <label className=\"text-danger pa-canceled\">Registro Anulado</label>}\r\n {\r\n !isPreventa && <Button\r\n className=\"mt-10\"\r\n text={saving ? 'Guardando...' : `Guardar ${action}`}\r\n type=\"success\"\r\n icon='save'\r\n disabled={saving }\r\n onClick={guardarFactura}\r\n />\r\n }{\r\n currentIsPreventa && <>\r\n <div className=\"flex-end\">\r\n\r\n <Button\r\n className=\"mt-10\"\r\n text={saving ? 'Guardando...' : `Convertir a factura`}\r\n type=\"default\"\r\n icon='save'\r\n visible={!isNew && isPreventa }\r\n disabled={saving || editing || bill.active == false}\r\n onClick={() => convertFactura()}\r\n />\r\n <Button\r\n className=\"mt-10 ml-10\"\r\n text={saving ? 'Guardando...' : `Convertir a factura e Imprimiir`}\r\n type=\"default\"\r\n icon='save'\r\n visible={!isNew && isPreventa }\r\n disabled={saving || editing || bill.active == false}\r\n onClick={() => convertFactura(true)}\r\n />\r\n </div>\r\n <div className=\"flex-end\">\r\n <Button\r\n className=\"mt-10 ml-10\"\r\n text={saving ? 'Guardando...' : `Guardar como cotización`}\r\n type=\"primary\"\r\n icon='save'\r\n visible={isNew}\r\n disabled={saving || !editing || bill.active == false}\r\n onClick={e => guardarAsCotizacion()}\r\n />\r\n <Button\r\n className=\"mt-10\"\r\n text={saving ? 'Guardando...' : `Guardar ${action}`}\r\n type=\"success\"\r\n icon='save'\r\n disabled={saving || !editing || bill.active == false}\r\n onClick={guardarFactura}\r\n />\r\n \r\n </div>\r\n </>\r\n }\r\n \r\n </div>\r\n </ScrollView>\r\n </Popup>\r\n </div>\r\n );\r\n}\r\n\r\nexport default Nuevo;\r\n","import React, { useRef, useState } from 'react';\r\nimport { DataGrid, Popup } from 'devextreme-react';\r\nimport {\r\n Paging,\r\n Pager,\r\n FilterRow,\r\n HeaderFilter,\r\n ColumnChooser,\r\n Column,\r\n Lookup,\r\n Editing,\r\n Button as ButtonGrid,\r\n Export\r\n} from 'devextreme-react/data-grid';\r\nimport { createStoreLocal } from '../../utils/proxy';\r\nimport Title from '../../components/shared/Title';\r\nimport BlockHeader from '../../components/shared/BlockHeader';\r\nimport { store } from '../../services/store';\r\nimport * as NuevoReceipt from '../../components/bill/Nuevo';\r\nimport CustomButton from '../../components/buttons/CustomButton';\r\nimport { _path } from \"../../data/headerNavigation\";\r\nimport { dataAccess, formatDate, formatDateTime, resources } from '../../data/app';\r\nimport { cellAsPayoff, cellRender, dataFormatId, } from '../../utils/common';\r\nimport urlReport from '../../services/reportServices';\r\nimport useAuthorization from '../../hooks/useAuthorization';\r\nimport { billDialogAction } from '../../store/bill/billDialogReducer';\r\nimport Nuevo from './Nuevo';\r\nimport { useDispatch } from 'react-redux';\r\n\r\nimport uri from '../../utils/uri';\r\nimport ReceiptByBillId from '../receipts/ReceiptByBillId';\r\nimport http from '../../utils/http';\r\nimport notify from 'devextreme/ui/notify';\r\nimport { preBillType } from '../../data/enums';\r\nimport { confirm } from 'devextreme/ui/dialog';\r\n\r\nconst PreBills = props => {\r\n\r\n const { clientId = 0, title='',action='', typeId=0, initStates, ...rest } = props;\r\n\r\n const [ authorized ] = useAuthorization( resources.cotizacion );\r\n const [ setDataDialog] = useState({ id: 0, billId: 0, open: false, client: '', balance: '' });\r\n const [states, setStates] = useState([...initStates]);\r\n const [statesActive, setStatesActive] = useState(1);\r\n\r\n const dispatch = useDispatch();\r\n let refGrid = useRef();\r\n\r\n const printReport = ({ row }) => {\r\n\r\n console.log(row);\r\n\r\n const { id } = row.data;\r\n const report = urlReport();\r\n report.print(`${report.preBillTicket(id)}`);\r\n\r\n }\r\n\r\n const addMenuItems = (e) => {\r\n\r\n if (e.target == \"content\") {\r\n \r\n if (!e.items) e.items = [];\r\n \r\n if (e.rowIndex >= 0){\r\n\r\n e.items.push({\r\n \r\n text: `Ver ${action}`,\r\n icon: 'find',\r\n onItemClick: () => {\r\n showDialog(e.row.data.id); \r\n }\r\n\r\n },{\r\n\r\n text: `Imprimir ${action}`,\r\n icon: 'print',\r\n onItemClick: () => {\r\n printReport(e);\r\n }\r\n }); \r\n\r\n e.items.push({\r\n\r\n text: `Anular ${action}`,\r\n icon: 'remove',\r\n onItemClick: () => refGrid.current.instance.deleteRow(e.rowIndex),\r\n color: 'red'\r\n\r\n }); \r\n \r\n }\r\n\r\n }\r\n }\r\n\r\n const onRowPrepared = (e) => {\r\n if (e.rowType == 'data') {\r\n if (!e.data.active)\r\n e.rowElement.classList.add('no-activo');\r\n else{\r\n if (e.data.preBillTypeId == preBillType.facturacion)\r\n e.rowElement.classList.add('converted');\r\n \r\n }\r\n\r\n }\r\n }\r\n\r\n const onToolbarPreparing = (e) => {\r\n e.toolbarOptions.items.unshift({\r\n location: 'before',\r\n widget: 'dxButton',\r\n options: {\r\n text: 'Exportar a excel',\r\n icon: 'exportxlsx',\r\n type: 'success',\r\n stylingMode: \"outlined\",\r\n onClick: () => refGrid.current.instance.exportToExcel(false)\r\n }\r\n },{\r\n location: 'after',\r\n widget: 'dxTagBox',\r\n options: {\r\n width: 420,\r\n placeholder: 'Filtrar por Tipo',\r\n dataSource : e.component.columnOption('preBillTypeId').lookup.dataSource,\r\n valueExpr:'id', \r\n displayExpr:'name',\r\n value: states,\r\n showClearButton:true,\r\n multiline:false,\r\n hideSelectedItems:true,\r\n onValueChanged: (e) => {\r\n setStates(e.value);\r\n }\r\n\r\n }\r\n },{\r\n location: 'after',\r\n widget: 'dxSelectBox',\r\n options: {\r\n width: 200,\r\n placeholder: 'Seleccionar',\r\n dataSource : [{ id: 0, name: 'Todas' }, { id: 1, name: 'Activas' }, { id: 2, name: 'Inactivas' }],\r\n valueExpr:'id', \r\n displayExpr:'name',\r\n value: statesActive,\r\n showClearButton:true,\r\n onValueChanged: (e) => {\r\n setStatesActive(e.value);\r\n if(e.value == 1)\r\n refGrid.current.instance.filter(['active', '=', true]);\r\n else if(e.value == 2)\r\n refGrid.current.instance.filter(['active', '=', false]);\r\n else\r\n refGrid.current.instance.clearFilter();\r\n }\r\n\r\n }\r\n });\r\n }\r\n\r\n const onCellPrepared = e => {\r\n\r\n const cellsQuantity = ['payoff']\r\n\r\n if (e.rowType == 'data' && e.column.allowEditing) {\r\n if (cellsQuantity.includes(e.column.dataField))\r\n if (e.row.data.payoff)\r\n e.cellElement.classList.add('pagada');\r\n else\r\n e.cellElement.classList.add('pendiente');\r\n\r\n if (e.column.dataField == 'id')\r\n e.cellElement.classList.add('col-id-factura');\r\n if (e.column.dataField == 'reference')\r\n e.cellElement.classList.add('col-reference-factura');\r\n }\r\n\r\n }\r\n\r\n const showDialog = (id) => dispatch(billDialogAction({ open: true, id }))\r\n\r\n const onSave = (e) => refGrid.current.instance.refresh(); \r\n\r\n const close = e => {\r\n setDataDialog({ id: 0, billId: 0, open: false, client: '', balance: '' });\r\n }\r\n\r\n const changePreBill = ({ title, action, id }) => {\r\n\r\n let result = confirm(\"<i>Esta seguro de \"+title+\"?</i>\", title);\r\n result.then((dialogResult) => {\r\n\r\n if (dialogResult){\r\n \r\n http(`${uri.prebills.base}/${id}/${action}`).asGet().then(resp => {\r\n \r\n notify(`Acción ${title} realizada correctamente`);\r\n refGrid.current.instance.refresh(); \r\n \r\n }).catch(err => {\r\n \r\n notify(err, 'error', 5000);\r\n });\r\n \r\n }\r\n });\r\n\r\n }\r\n\r\n const revert = ({ row }) => {\r\n\r\n const { id } = row.data;\r\n changePreBill({ title: 'Revertir a cotización', action: 'revert', id });\r\n\r\n } \r\n\r\n const convert = ({ row }) => {\r\n\r\n const { id } = row.data;\r\n changePreBill({ title: 'Convertir a preventa', action: 'convert', id }); \r\n\r\n }\r\n\r\n const cellRenderDelivery = (cellData) => {\r\n\r\n const { isDeliveried, billId } = cellData.data;\r\n\r\n let deliveriedClassName = 'not-deliveried';\r\n if(isDeliveried)\r\n deliveriedClassName = 'is-deliveried';\r\n \r\n return (\r\n <div>\r\n <div className=\"current-value\">\r\n <span className={deliveriedClassName}> {billId == null ? '--' : isDeliveried ? 'Entregado': 'Sin entrega'} </span>\r\n </div> \r\n </div>\r\n );\r\n };\r\n\r\n //let extraParameter = [['preBillTypeId', typeId]];\r\n let extraParameter =[['preBillTypeId', states]];\r\n\r\n if (clientId > 0)\r\n extraParameter.push(['clientId', clientId]);\r\n\r\n const active = statesActive == 1 ? true : statesActive == 2 ? false : null;\r\n\r\n return authorized(\r\n <div className=\"container\">\r\n <Title title={title} />\r\n <BlockHeader title={title} showFavorite={true} {...rest}>\r\n <CustomButton\r\n type=\"default\"\r\n text={`Nueva ${action}`}\r\n icon='plus'\r\n onClick={() => showDialog(0)}\r\n /> \r\n </BlockHeader> \r\n <Nuevo onSave={onSave} { ...props } />\r\n <DataGrid id=\"gridContainer\"\r\n ref={refGrid}\r\n selection={{ mode: 'single' }}\r\n dataSource={store({ uri: uri.prebills, remoteOperations: true, extraParameter })}\r\n showBorders={true}\r\n showRowLines={true}\r\n allowColumnResizing={true}\r\n allowColumnReordering={true}\r\n hoverStateEnabled={true}\r\n onContextMenuPreparing={addMenuItems}\r\n onRowPrepared={onRowPrepared}\r\n onToolbarPreparing={onToolbarPreparing}\r\n onCellPrepared={onCellPrepared}\r\n remoteOperations={{\r\n paging: true,\r\n filtering: true\r\n }}\r\n >\r\n <Paging defaultPageSize={20} />\r\n <Pager\r\n showInfo={true}\r\n showPageSizeSelector={true}\r\n allowedPageSizes={[10, 20, 50]}\r\n />\r\n <Export enabled={false} fileName={title} />\r\n <FilterRow visible={true} />\r\n <HeaderFilter visible={true} />\r\n <ColumnChooser enabled={true} />\r\n <Column type=\"buttons\" width={50}>\r\n <ButtonGrid visible={typeId == preBillType.cotizacion} name=\"convert\" icon=\"refresh\" onClick={convert} hint={'Convertir a preventa'}/>\r\n <ButtonGrid visible={typeId == preBillType.preventa} name=\"revert\" icon=\"revert\" onClick={revert} hint={'Revertir a cotización'}/>\r\n </Column>\r\n <Column dataField=\"id\" caption=\"Id\" width={80} cellRender={dataFormatId} />\r\n <Column dataField=\"billId\" caption=\"Factura\" width={80} cellRender={dataFormatId} />\r\n <Column dataField=\"date\" caption=\"Fecha\" dataType='date' format={formatDate} width={110} />\r\n <Column dataField=\"nombre\" caption=\"Cliente\" minWidth={200} visible={clientId == 0} allowHeaderFiltering={false} />\r\n <Column dataField=\"paymentTypeId\" width={80} caption=\"Tipo\">\r\n <Lookup disabled={true} dataSource={createStoreLocal({ name: 'billPaymentType' })} valueExpr=\"id\" displayExpr=\"name\" />\r\n </Column>\r\n <Column dataField=\"preBillTypeId\" width={110} caption=\"Documento\">\r\n <Lookup disabled={true} dataSource={createStoreLocal({ name: 'preBillType' })} valueExpr=\"id\" displayExpr=\"name\" />\r\n </Column>\r\n <Column dataField=\"total\" width={100} cellRender={cellRender()} />\r\n <Column dataField=\"active\" width={100} caption=\"Activa\" filterValue={active} />\r\n <Column dataField=\"createBy\" caption='Vendedor' width={100} />\r\n <Column dataField=\"isDeliveriede\" width={100} caption=\"Entregado\" cellRender={cellRenderDelivery} />\r\n <Column dataField=\"createAt\" caption='Creado el' dataType='date' format={formatDateTime} width={180} visible={false} />\r\n <Column type=\"buttons\" width={90}>\r\n <ButtonGrid name=\"print\" icon=\"print\" onClick={printReport}/>\r\n <ButtonGrid name=\"edit\" icon=\"find\" onClick={e => showDialog(e.row.data.id)}/>\r\n <ButtonGrid name=\"delete\" />\r\n </Column>\r\n <Editing\r\n mode=\"popup\"\r\n allowDeleting={true}\r\n allowUpdating={true}\r\n useIcons={true}\r\n ></Editing>\r\n </DataGrid>\r\n </div>\r\n );\r\n}\r\n\r\nexport default PreBills;\r\n","import React from 'react';\r\nimport PreBills from './PreBills';\r\nimport { preBillType } from '../../data/enums';\r\n\r\nconst Cotizaciones = (props) => {\r\n\r\n const title = \"Cotizaciones\";\r\n const action = \"Cotización\";\r\n const typeId = preBillType.cotizacion;\r\n const initStates = [1];\r\n\r\n return (\r\n <PreBills title={title} action={action} typeId={typeId} initStates={initStates} {...props}/>\r\n );\r\n}\r\n\r\nexport default Cotizaciones;\r\n","import React from 'react';\r\nimport PreBills from './PreBills';\r\nimport { preBillType } from '../../data/enums';\r\n\r\nconst PreVentas = (props) => {\r\n\r\n const title = \"Pre-Ventas\";\r\n const action = \"Pre-Venta\";\r\n const typeId = preBillType.preventa;\r\n const initStates = [2,3];\r\n\r\n return (\r\n <PreBills title={title} action={action} typeId={typeId} initStates={initStates} {...props}/>\r\n );\r\n\r\n}\r\n\r\nexport default PreVentas;\r\n","import { dialogDefault, DIALOG_PROVIDER } from \"../consts\";\r\n\r\nconst mydialog = {...dialogDefault}\r\n\r\n\r\nexport const providerDialogAction = ({ open = false, id = 0, providerId = 0 }) => ({\r\n type: DIALOG_PROVIDER,\r\n payload : { open, id, providerId }\r\n});\r\n\r\nexport default function providerDialogReducer(state = mydialog, { type, payload }) {\r\n\r\n const actions = {\r\n [DIALOG_PROVIDER] : () => ({...state, ...payload })\r\n }\r\n\r\n return actions[type]?.call() || state;\r\n}\r\n\r\n","import React, { useRef, useState } from 'react';\r\nimport { Popup } from 'devextreme-react';\r\nimport Form, { SimpleItem, Label, StringLengthRule, RequiredRule } from 'devextreme-react/form';\r\nimport { Button } from 'devextreme-react/button';\r\nimport notify from 'devextreme/ui/notify';\r\nimport { useDispatch, useSelector } from 'react-redux'\r\nimport http from '../../utils/http';\r\nimport uri from '../../utils/uri';\r\nimport { defaultProvider } from '../../data/defaultObjects';\r\nimport { editorOptionsSwitch } from '../../data/app';\r\nimport { providerDialogAction } from '../../store/provider/providerDialogReducer';\r\n\r\nconst NuevoProvider = (props) => {\r\n\r\n const { fullScreen } = props;\r\n\r\n const dispatch = useDispatch();\r\n \r\n const { providerDialog: { open } } = useSelector(store => store);\r\n\r\n const [provider, setProvider] = useState({ ...defaultProvider }); \r\n const [saving, setSaving] = useState({\r\n loading : false,\r\n text : 'Guardar'\r\n });\r\n\r\n const closeDialog = (load, providerId) => {\r\n\r\n dispatch(providerDialogAction({ id: 0, providerId: 0, open: false }));\r\n\r\n if(load)\r\n if(props.onCreate)\r\n props.onCreate(providerId);\r\n\r\n }\r\n\r\n const onHiding = ({ load }) => {\r\n\r\n closeDialog(load, 0);\r\n \r\n }\r\n\r\n\r\n const onShowing = (e) => {\r\n setProvider({ ...defaultProvider });\r\n }\r\n\r\n const refForm = useRef();\r\n\r\n const guardarProveedor = (params) => {\r\n\r\n let result = refForm.current.instance.validate(); \r\n\r\n if (result.isValid) {\r\n\r\n setSaving({loading : true, text:'Guardando...'});\r\n \r\n http(uri.providers.insert).asPost(provider).then(resp => {\r\n\r\n notify('Datos guardados correctamente');\r\n setSaving({loading : false, text:'Guardar'}); \r\n closeDialog(true, resp.id);\r\n\r\n }).catch(err => {\r\n\r\n setSaving({loading : false, text:'Guardar'});\r\n notify(err, 'error');\r\n\r\n });\r\n\r\n }\r\n }\r\n\r\n const screenOpts = { };\r\n\r\n if(fullScreen)\r\n screenOpts.fullScreen = true;\r\n else{\r\n screenOpts.width = 700;\r\n screenOpts.height = 430;\r\n } \r\n\r\n return (\r\n <div> \r\n <Popup\r\n title={`Proveedor`}\r\n {...screenOpts}\r\n onHiding={onHiding}\r\n onShowing={onShowing}\r\n visible={open}\r\n showCloseButton={true}\r\n className=\"bg-fbfbfb\"\r\n >\r\n <Form formData={provider} ref={refForm} colCount={2}> \r\n <SimpleItem dataField=\"name\" colSpan={2}>\r\n <Label text={'Nombre'} />\r\n <RequiredRule message=\"Este campo es requerido\" />\r\n <StringLengthRule max={50} message=\"Maximo 50 caracteres\" />\r\n </SimpleItem>\r\n <SimpleItem dataField=\"ruc\">\r\n <Label text={'RUC'} />\r\n <RequiredRule message=\"Este campo es requerido\" />\r\n <StringLengthRule max={20} message=\"Maximo 20 caracteres\" />\r\n </SimpleItem>\r\n <SimpleItem dataField=\"property\">\r\n <Label text={'Propietario'} />\r\n <StringLengthRule max={50} message=\"Maximo 50 caracteres\" />\r\n </SimpleItem>\r\n <SimpleItem dataField=\"phoneNumber\">\r\n <Label text={'Teléfono'} />\r\n <RequiredRule message=\"Este campo es requerido\" />\r\n <StringLengthRule max={20} message=\"Maximo 20 caracteres\" />\r\n </SimpleItem>\r\n <SimpleItem dataField=\"email\">\r\n <Label text={'Correo'} /> \r\n <StringLengthRule max={50} message=\"Maximo 50 caracteres\" />\r\n </SimpleItem>\r\n <SimpleItem dataField=\"address\" colSpan={2}>\r\n <Label text=\"Dirección\" />\r\n <StringLengthRule max={150} message=\"Maximo 150 caracteres\" />\r\n </SimpleItem>\r\n <SimpleItem dataField=\"observation\" colSpan={2}>\r\n <Label text=\"Nota\" />\r\n <StringLengthRule max={150} message=\"Maximo 150 caracteres\" />\r\n </SimpleItem>\r\n <SimpleItem dataField=\"active\" editorType=\"dxSwitch\" editorOptions={{...editorOptionsSwitch}}>\r\n <Label text=\"Active\" />\r\n </SimpleItem> \r\n </Form>\r\n <br />\r\n <Button\r\n width={180}\r\n text={saving.text} \r\n disabled={saving.loading}\r\n type=\"default\"\r\n icon='save'\r\n onClick={guardarProveedor}\r\n />\r\n <br />\r\n </Popup>\r\n </div>\r\n );\r\n}\r\n\r\nexport default NuevoProvider;\r\n","import { dialogDefault, DIALOG_APPRULE } from \"../consts\";\r\n\r\nconst mydialog = {...dialogDefault}\r\n\r\n\r\nexport const appRuleDialogAction = ({ open = false }) => ({\r\n type: DIALOG_APPRULE,\r\n payload : { open }\r\n});\r\n\r\nexport default function appRuleDialogReducer(state = mydialog, { type, payload }) {\r\n\r\n const actions = {\r\n [DIALOG_APPRULE] : () => ({...state, ...payload })\r\n }\r\n\r\n return actions[type]?.call() || state;\r\n}\r\n\r\n","import React, { useEffect, useMemo, useState } from 'react';\r\nimport { TextBox, Button as TextBoxButton } from 'devextreme-react/text-box';\r\nimport { Popup,Button } from 'devextreme-react';\r\nimport {\r\n Validator,\r\n CustomRule,\r\n StringLengthRule\r\n} from 'devextreme-react/validator';\r\nimport { calculateEvaluate } from '../../data/app';\r\nimport notify from 'devextreme/ui/notify';\r\nimport { useSelector, useDispatch } from 'react-redux';\r\nimport { DivFormColumns } from '../../components/form/DivForm';\r\nimport { appRuleDialogAction } from '../../store/appRule/appRuleDialogReducer';\r\nimport http from '../../utils/http';\r\nimport { setAppInfo } from '../../store/app/appActions';\r\n\r\nconst AppInfo = () => { \r\n\r\n const [saving, setSaving] = useState({\r\n loading : false,\r\n text : 'Actualizar'\r\n });\r\n\r\n const dispatch = useDispatch();\r\n const { appInfo, appRuleDialog: { open } } = useSelector(store => store);\r\n\r\n const [app, setApp] = useState({...appInfo});\r\n const [textValuated, setTextValuated] = useState('');\r\n const [textValuatedLocal, setTextValuatedLocal] = useState(''); \r\n const [textValuatedPrice, setTextValuatedPrice] = useState('');\r\n\r\n useEffect(() => {\r\n setApp({...app, ...appInfo});\r\n }, [appInfo]);\r\n\r\n const costMock = 100; \r\n\r\n const evaluateRules = rule => {\r\n\r\n if(rule.value?.length > 0){\r\n\r\n const valSpaceless = rule.value.replace(/\\s/g, '');\r\n\r\n if(valSpaceless.startsWith('*') || valSpaceless.startsWith('+') || valSpaceless.startsWith('-') || valSpaceless.startsWith('/')){\r\n \r\n const result = calculateEvaluate(costMock, rule.value); \r\n \r\n if (result == null) return false;\r\n if (result == undefined) return false;\r\n if (isNaN(result)) return false;\r\n \r\n return true; \r\n \r\n }\r\n\r\n rule.rule.message = 'La formula debe iniciar con un operador matemático (*, +, -, /)';\r\n\r\n return false; \r\n\r\n }\r\n\r\n return true;\r\n\r\n }\r\n\r\n const setRule = propName => e => {\r\n\r\n const result = calculateEvaluate(costMock, e.value);\r\n const text = `Costo=${costMock}, Formula: ${costMock}${e.value}, Resultado del costo real: ${result}`\r\n\r\n setApp(app => ({ ...app, [propName]: e.value }));\r\n\r\n if (propName == 'ruleCalcuteNewPrice') \r\n setTextValuated(text);\r\n\r\n if (propName == 'ruleCalcuteNewPriceLocal')\r\n setTextValuatedLocal(text);\r\n \r\n\r\n }\r\n\r\n const closeDialog = () => {\r\n\r\n dispatch(appRuleDialogAction({ open: false }));\r\n\r\n }\r\n\r\n const onHiding = ({ load }) => {\r\n\r\n closeDialog();\r\n \r\n }\r\n\r\n \r\n const onFormSubmit = (e) => {\r\n\r\n e.preventDefault();\r\n\r\n setSaving({loading : true, text:'Guardando...'});\r\n http('about/set-info').asPost(app).then(resp => {\r\n\r\n notify('Datos actualizados');\r\n setSaving({loading : false, text:'Guardar'});\r\n dispatch(setAppInfo(app));\r\n \r\n }).catch(err => {\r\n\r\n notify(err, 'error');\r\n setSaving({loading : false, text:'Guardar'});\r\n\r\n });\r\n }\r\n \r\n const costButton = useMemo(\r\n () => ({\r\n text: 'Costo',\r\n stylingMode: 'text',\r\n onClick: () => 0,\r\n }),\r\n [],\r\n );\r\n\r\n const priceButton = useMemo(\r\n () => ({\r\n text: 'Precio',\r\n stylingMode: 'text',\r\n onClick: () => 0,\r\n }),\r\n [],\r\n );\r\n\r\n return (\r\n <Popup\r\n title={`Configuración del Compras`} \r\n onHiding={onHiding} \r\n visible={open}\r\n showCloseButton={true}\r\n className=\"bg-fbfbfb\"\r\n width={500}\r\n height={'95vh'}\r\n >\r\n <div className=\"\"> \r\n <form onSubmit={onFormSubmit}>\r\n <div className=\"\"> \r\n <DivFormColumns title='Fórmula para compras de importación'\r\n description=\"Defina la fórmula para el cálculo del precio en base al costo para las compras de importación\"> \r\n <div>\r\n <TextBox \r\n placeholder=' * 1.15 * 1.30'\r\n value={app.ruleCalcuteNewPrice}\r\n onValueChanged={setRule('ruleCalcuteNewPrice')}\r\n >\r\n <TextBoxButton\r\n name=\"ruleCalcuteNewPrice\"\r\n location=\"before\"\r\n options={costButton}\r\n />\r\n <Validator>\r\n <StringLengthRule max={350} message=\"Maximo de caracteres permitidos 350\" />\r\n <CustomRule \r\n validationCallback={evaluateRules}\r\n message=\"Fórmula incorrecta, verifique los valores ingresados\"\r\n />\r\n </Validator>\r\n </TextBox>\r\n <span>{textValuated}</span>\r\n </div>\r\n </DivFormColumns>\r\n <DivFormColumns title='Fórmula para compras locales'\r\n description=\"Defina la fórmula para el cálculo del precio en base al costo para las compras locales\"> \r\n <div>\r\n <TextBox \r\n placeholder=' * 1.15 * 1.30'\r\n value={app.ruleCalcuteNewPriceLocal}\r\n onValueChanged={setRule('ruleCalcuteNewPriceLocal')}\r\n >\r\n <TextBoxButton\r\n name=\"ruleCalcuteNewPriceLocal\"\r\n location=\"before\"\r\n options={costButton}\r\n />\r\n <Validator>\r\n <StringLengthRule max={350} message=\"Maximo de caracteres permitidos 350\" />\r\n <CustomRule \r\n validationCallback={evaluateRules}\r\n message=\"Fórmula incorrecta, verifique los valores ingresados\"\r\n />\r\n </Validator>\r\n </TextBox>\r\n <span>{textValuatedLocal}</span>\r\n </div> \r\n \r\n </DivFormColumns>\r\n <DivFormColumns title='Fórmula para el precio en las compras'\r\n description=\"Defina la fórmula para el cálculo del precio real en base al costo para las compras\"> \r\n <div>\r\n <TextBox \r\n placeholder=' * 1.15 '\r\n value={app.ruleProfitPrice}\r\n showClearButton={true}\r\n onValueChanged={e => {\r\n\r\n setApp(app => ({ ...app, ruleProfitPrice: e.value }));\r\n const result = calculateEvaluate(costMock, e.value);\r\n const text = `Costo Real=${costMock}, Formula: ${costMock}${e.value}, Resultado del precio: ${result}`\r\n setTextValuatedPrice(text);\r\n }}\r\n >\r\n <TextBoxButton\r\n name=\"ruleProfitPrice\"\r\n location=\"before\"\r\n options={priceButton}\r\n />\r\n <Validator>\r\n <StringLengthRule max={350} message=\"Maximo de caracteres permitidos 350\" />\r\n <CustomRule \r\n validationCallback={evaluateRules}\r\n message=\"Fórmula incorrecta, verifique los valores ingresados\"\r\n />\r\n </Validator>\r\n </TextBox>\r\n <span>{textValuatedPrice}</span>\r\n </div> \r\n \r\n </DivFormColumns>\r\n </div> \r\n <Button \r\n icon='save'\r\n text={saving.text} \r\n disabled={saving.loading}\r\n type=\"default\" \r\n useSubmitBehavior={true}>\r\n </Button> \r\n </form> \r\n \r\n </div>\r\n </Popup>\r\n \r\n );\r\n}\r\n\r\nexport default AppInfo;\r\n","import React, { useEffect, useState, useRef, useCallback, useMemo } from 'react';\r\nimport { Popup, ToolbarItem } from 'devextreme-react/popup';\r\nimport Form, { SimpleItem, GroupItem, Label, RequiredRule, StringLengthRule, CustomRule } from 'devextreme-react/form';\r\nimport { useDispatch, useSelector } from 'react-redux'\r\nimport { LoadPanel } from 'devextreme-react/load-panel';\r\nimport { createStoreLocal } from '../../utils/proxy';\r\nimport { calculateEvaluate, editorOptionsSelect } from '../../data/app';\r\nimport { DataGrid, ScrollView, SelectBox } from 'devextreme-react';\r\nimport { Column, Editing, Lookup, RequiredRule as RuleRequired, Button as ButtonGrid ,Summary,TotalItem, SearchPanel} from 'devextreme-react/data-grid';\r\nimport ProductDDBComponent from '../../components/dropdown/ProductDDBComponent';\r\nimport uri from '../../utils/uri';\r\nimport { cellRender, formatId, formatToMoney, onCellPrepared } from '../../utils/common';\r\nimport http from '../../utils/http';\r\nimport useProducts from '../../hooks/useProducts';\r\nimport ButtonForm from '../../components/buttons/ButtonForm';\r\nimport notify from 'devextreme/ui/notify';\r\nimport { convert2, defaultLabels, purchaseDefault } from '../../data/defaultObjects';\r\nimport { dialogPurchase } from '../../store/inPutProductPurchase/purchaseDialogReducer';\r\nimport { purchaseSteps, purchaseTypes } from '../../data/enums';\r\nimport { confirm } from 'devextreme/ui/dialog';\r\nimport NuevoProvider from '../providers/NuevoProvider';\r\nimport Nuevo from '../products/Nuevo';\r\nimport { providerDialogAction } from '../../store/provider/providerDialogReducer';\r\nimport { appRuleDialogAction } from '../../store/appRule/appRuleDialogReducer';\r\nimport { dialogProduct } from '../../store/product/productDialogReducer';\r\nimport AppInfo from '../app/AppInfo';\r\nimport DataSource from 'devextreme/data/data_source';\r\n\r\nconst NewPurchase = props => {\r\n\r\n const active = true;\r\n\r\n const { purchaseDialog: { open, id }, user, appInfo } = useSelector(store => store);\r\n\r\n const [ reloadScreen, setReloadScreen] = useState(0);\r\n const [ reload, setReload] = useState(false);\r\n\r\n const { products, setProducts, refresh } = useProducts({ areaId: user.areaId, active, reload: reloadScreen });\r\n const [ purchase, setPurchase ] = useState({ ...purchaseDefault });\r\n const [ saving, setSaving ] = useState(false);\r\n const [ processing, setProcessing ] = useState(false);\r\n const [ loading, setLoading ] = useState(false);\r\n const [ details, setDetails ] = useState([]);\r\n const [ rate, setRate ] = useState(0);\r\n\r\n \r\n let refForm = useRef();\r\n let refGrid = useRef();\r\n let refSelect = useRef(); \r\n\r\n useEffect(() => {\r\n\r\n if (id > 0) {\r\n setLoading(true);\r\n http(uri.compras.getById(id)).asGet().then(resp => {\r\n\r\n http(uri.products.getByArea(resp.areaId)).asGet().then(data => {\r\n\r\n setProducts(data);\r\n\r\n const { purchaseDetails, ...rest } = resp;\r\n\r\n purchaseDetails.map(detail => {\r\n\r\n let info = products.find(x => x.id == detail.productId);\r\n\r\n detail['presentation'] = info.presentation;\r\n detail['um'] = info.um;\r\n detail['family'] = info.family;\r\n\r\n return detail;\r\n })\r\n\r\n setPurchase({ ...purchaseDefault, ...rest });\r\n setDetails([...purchaseDetails]);\r\n\r\n setLoading(false);\r\n\r\n });\r\n\r\n });\r\n\r\n } else {\r\n setLoading(true);\r\n setPurchase({ ...purchaseDefault, areaId: user.areaId, rate });\r\n setDetails([]);\r\n setLoading(false);\r\n }\r\n\r\n if(open) refresh();\r\n\r\n }, [open]);\r\n\r\n const dispatch = useDispatch();\r\n const onToolbarPreparing = (e) => {\r\n e.toolbarOptions.items.unshift({\r\n location: 'before',\r\n widget: 'dxButton',\r\n options: {\r\n stylingMode:\"outlined\",\r\n text: 'Agregar producto',\r\n icon:'add',\r\n disabled: purchase.purchaseTypeId == undefined,\r\n type:'default',\r\n onClick: () => {\r\n\r\n let result = refForm.current.instance.validate();\r\n\r\n if (result.isValid) \r\n refGrid.current.instance.addRow();\r\n\r\n }\r\n }\r\n },{\r\n location: 'before',\r\n widget: 'dxButton',\r\n options: {\r\n icon: 'check',\r\n type: 'normal',\r\n stylingMode: \"outlined\",\r\n onClick: () => { \r\n\r\n refGrid.current.instance.saveEditData(); \r\n \r\n }\r\n }\r\n },{\r\n location: 'before',\r\n widget: 'dxButton',\r\n options: {\r\n icon: 'revert',\r\n type: 'normal',\r\n stylingMode: \"outlined\",\r\n onClick: () => { \r\n\r\n refGrid.current.instance.cancelEditData(); \r\n \r\n }\r\n }\r\n });\r\n }\r\n\r\n const closeDialog = (load) => {\r\n\r\n refForm.current.instance.resetValues();\r\n refGrid.current.instance.cancelEditData();\r\n\r\n dispatch(dialogPurchase({ open: false, id: 0 }));\r\n if (load) {\r\n let { onSave } = props;\r\n onSave();\r\n }\r\n\r\n setPurchase({ ...purchaseDefault, areaId: user.areaId });\r\n setDetails([]);\r\n }\r\n\r\n const onHiding = ({ load }) => {\r\n closeDialog(load);\r\n }\r\n\r\n const validateAllRows = () => {\r\n\r\n let result = true;\r\n let i = 0;\r\n let items = ds.items();\r\n\r\n while (i < items.length) {\r\n\r\n let item = items[i];\r\n\r\n if (item.cost <= 0) {\r\n refGrid.current.instance.editCell(i, 'cost');\r\n result = false;\r\n break;\r\n }\r\n if (item.quantity <= 0) {\r\n refGrid.current.instance.editCell(i, 'quantity');\r\n result = false;\r\n break;\r\n }\r\n if (item.price <= 0) {\r\n refGrid.current.instance.editCell(i, 'price');\r\n result = false;\r\n break;\r\n }\r\n\r\n i++;\r\n }\r\n\r\n return result;\r\n\r\n }\r\n\r\n const guardarEntrada = (e, successCallback) => {\r\n\r\n refGrid.current.instance.saveEditData();\r\n let result = refGrid.current.instance.hasEditData();\r\n\r\n if (!result) {\r\n\r\n let result = refForm.current.instance.validate();\r\n\r\n if (result.isValid) {\r\n\r\n if (validateAllRows()) {\r\n \r\n let result = confirm(\"<i>Esta seguro de guardar la orden compra?</i>\", \"Confirmar cambios\");\r\n\r\n result.then((dialogResult) => {\r\n if (dialogResult) {\r\n\r\n setSaving(true);\r\n let data = { ...purchase, purchaseDetails: [...details] };\r\n \r\n http(uri.compras.insert).asPost(data).then(resp => {\r\n setSaving(false);\r\n \r\n if (successCallback) {\r\n successCallback(data);\r\n }\r\n else {\r\n if (isNew) {\r\n notify('Compra registrada correctamente');\r\n closeDialog(true);\r\n }\r\n else {\r\n notify('Compra actualizada correctamente');\r\n }\r\n \r\n }\r\n \r\n \r\n }).catch(err => {\r\n setSaving(false);\r\n notify(err, 'error', 8000);\r\n });\r\n \r\n }\r\n });\r\n\r\n }\r\n\r\n }\r\n\r\n }\r\n\r\n }\r\n\r\n const procesarCompra = (e) => {\r\n\r\n setProcessing(true);\r\n setSaving(true);\r\n guardarEntrada(e, (data) => {\r\n http(uri.compras.base + '/process').asPost(data).then(resp => {\r\n notify('Compra procesada en inventario correctamente');\r\n setProcessing(false);\r\n setSaving(false);\r\n closeDialog(true);\r\n }).catch(err => {\r\n setProcessing(false);\r\n setSaving(false);\r\n notify(err, 'error', 6000);\r\n });\r\n });\r\n\r\n }\r\n\r\n const getResult = (cost, ruleName) => {\r\n\r\n let rule = ''\r\n rule = appInfo[ruleName]; \r\n const resultCost = calculateEvaluate(cost, rule);\r\n\r\n return resultCost ?? 0;\r\n \r\n }\r\n\r\n const itemRender = (data) => {\r\n\r\n const isZero = data.stock <= 0;\r\n\r\n const cssZero = isZero ? 'product-stock zero-stock' : 'product-stock';\r\n\r\n return <div className=\"d-flex space-between\">\r\n <div>\r\n <div className=\"product-name\"><b>{data.internalCode}</b>-{data.name}</div>\r\n <div className=\"product-desciption\"><small className='text-muted'>Categoria: </small>{data.family} <small className='text-muted'>Marca: </small>{data.presentation}</div>\r\n </div> \r\n <div className=\"text-right\">\r\n <div className=\"product-price\"><span className='product--render-cost'>{formatToMoney(data.cost)}</span> | <span className='product--render-price'>{formatToMoney(data.price)}</span></div>\r\n <div className={cssZero}><small className='text-muted'>Disponible:</small> {data.stock}/{data.disponible}</div>\r\n </div> \r\n </div>\r\n }\r\n\r\n const setCellValue = (prop, newData, value, currentRowData) => {\r\n \r\n newData[prop] = value || 0;\r\n if (prop == 'productId' && value) {\r\n let info = products.find(x => x.id == value);\r\n\r\n newData['presentation'] = info.presentation;\r\n newData['um'] = info.um;\r\n newData['family'] = info.family;\r\n newData['cost'] = 0;\r\n newData['realCost'] = info.cost;\r\n newData['price'] = 0;\r\n newData['oldPrice'] = info.price;\r\n newData['quantity'] = 1; \r\n newData['total'] = info.cost;\r\n\r\n if(purchase.currencyId == 1){\r\n if(rate > 0)\r\n newData['dolarCost'] = convert2(info.cost / rate);\r\n else\r\n newData['dolarCost'] = 0 \r\n } \r\n }\r\n\r\n if (prop == 'quantity' && (+value) >= 0) {\r\n newData['total'] = currentRowData['realCost'] * value;\r\n \r\n if(purchase.currencyId == 1){\r\n if(rate > 0)\r\n newData['dolarCost'] = convert2(value / rate);\r\n else\r\n newData['dolarCost'] = 0; \r\n } \r\n \r\n }\r\n\r\n if (prop == 'cost' && (+value) >= 0) {\r\n\r\n const info = products.find(x => x.id == currentRowData.productId);\r\n \r\n newData['dolarCost'] = (rate > 0 ? convert2(value / rate) : 0); \r\n \r\n let realCost = 0;\r\n if(purchase.purchaseTypeId == purchaseTypes.nacional) \r\n realCost = getResult(value, 'ruleCalcuteNewPriceLocal'); \r\n \r\n if(purchase.purchaseTypeId == purchaseTypes.importacion)\r\n realCost = getResult(value, 'ruleCalcuteNewPrice');\r\n\r\n newData['realCost'] = realCost;\r\n newData['total'] = currentRowData['quantity'] * realCost;\r\n newData['price'] = getResult(info.price, 'ruleProfitPrice');\r\n\r\n }\r\n\r\n if (prop == 'dolarCost' && (+value) >= 0) { \r\n \r\n const info = products.find(x => x.id == currentRowData.productId);\r\n \r\n const newCost= value * rate;\r\n newData['cost'] = newCost; \r\n\r\n let realCost = 0;\r\n\r\n if(purchase.purchaseTypeId == purchaseTypes.nacional) \r\n realCost = getResult(newCost, 'ruleCalcuteNewPriceLocal'); \r\n \r\n if(purchase.purchaseTypeId == purchaseTypes.importacion) \r\n realCost = getResult(newCost, 'ruleCalcuteNewPrice'); \r\n \r\n \r\n newData['realCost'] = realCost;\r\n newData['total'] = currentRowData['quantity'] * realCost;\r\n newData['price'] = getResult(info.price, 'ruleProfitPrice');\r\n\r\n }\r\n\r\n }\r\n\r\n const isNew = id == 0;\r\n\r\n const textSaving = 'Guardar Entrada';\r\n\r\n const canProcess = !isNew && purchase.stepId == purchaseSteps.pendiente;\r\n\r\n const canSave = isNew || purchase.stepId == purchaseSteps.pendiente;\r\n\r\n const buttonProveedor = {\r\n text: 'Nuevo proveedor',\r\n icon: 'user',\r\n onClick: function(e) { \r\n dispatch(providerDialogAction({ open: true }));\r\n }\r\n };\r\n\r\n const buttonProducts = {\r\n text: 'Nuevo producto',\r\n icon: 'box',\r\n onClick: function(e) { \r\n openDialog(0);\r\n }\r\n };\r\n\r\n const buttonRules = {\r\n text: 'Reglas de cálculo',\r\n icon: 'menu',\r\n onClick: function(e) { \r\n dispatch(appRuleDialogAction({ open: true }));\r\n }\r\n };\r\n\r\n const reloadProvider = providerId => {\r\n setPurchase(_purchase => ({ ..._purchase, providerId: providerId }));\r\n }\r\n\r\n useEffect(() => {\r\n \r\n if(purchase.date)\r\n http(uri.rates.base + '/GetByDate').asPost(purchase.date).then(resp => {\r\n\r\n const newRate = resp ? resp.value : 0;\r\n\r\n if(newRate != purchase.rate && newRate > 0){\r\n\r\n setPurchase(_purchase => ({ ..._purchase, rate: newRate }));\r\n setRate(newRate);\r\n\r\n }\r\n \r\n });\r\n \r\n }, [purchase.date]);\r\n\r\n const currencies = [{ id: 1, name: 'Córdobas' }, { id: 2, name: 'Dólares' }];\r\n\r\n const onRowInserting = (e) => {\r\n\r\n const isCanceled = new Promise((resolve, reject) => {\r\n\r\n const existsProduct = details.find(x => x.productId == e.data.productId);\r\n\r\n if (existsProduct) {\r\n notify(`El producto ya se encuentra en la lista`, 'error', 5000);\r\n reject(`El producto ya se encuentra en la lista`);\r\n }else{\r\n resolve(false);\r\n }\r\n });\r\n e.cancel = isCanceled;\r\n\r\n }\r\n\r\n const dataSourceProduct = useCallback(() => new DataSource({\r\n load: (loadOptions) => {\r\n \r\n let params = {};\r\n params.skip = loadOptions.skip || 0;\r\n params.take = loadOptions.take || 10;\r\n \r\n if(loadOptions.searchValue)\r\n params.name = loadOptions.searchValue;\r\n\r\n params.exists = true;\r\n params.active=false; \r\n params.has=false;\r\n params.onlyProducts= false;\r\n \r\n return http(uri.products.getByArea(user.areaId)+'/grid')\r\n .asGet(params).then(x => x.items);\r\n \r\n },\r\n byKey: id => http(uri.products.getById(id)).asGet(),\r\n paginate : true,\r\n pageSize: 10\r\n }),[]);\r\n\r\n useEffect(() => {\r\n\r\n if(!refGrid.current)\r\n return;\r\n\r\n refGrid.current.instance.beginUpdate();\r\n \r\n let i = 0;\r\n const totalCount = refGrid.current.instance.totalCount()\r\n while(i < totalCount) {\r\n\r\n if(purchase.currencyId == 1) //Cordobas\r\n {\r\n let valueCordoba = refGrid.current.instance.cellValue(i, 'cost');\r\n let valueRound = convert2(valueCordoba / rate);\r\n refGrid.current.instance.cellValue(i, 'dolarCost', valueRound);\r\n }\r\n\r\n if(purchase.currencyId == 2) //Dolares\r\n {\r\n let valueDolar = refGrid.current.instance.cellValue(i, 'dolarCost');\r\n let valueRound = convert2(valueDolar * rate);\r\n refGrid.current.instance.cellValue(i, 'cost', valueRound); \r\n }\r\n\r\n \r\n i++;\r\n\r\n }\r\n\r\n refGrid.current.instance.endUpdate();\r\n refGrid.current.instance.saveEditData();\r\n }, [rate]);\r\n\r\n const validateRate = e => {\r\n if(purchase.currencyId == 1)\r\n return true;\r\n if(purchase.currencyId == 2)\r\n return e.value > 0;\r\n \r\n }\r\n\r\n const buttonActualizar = {\r\n text: 'Actualizar',\r\n icon: 'refresh',\r\n onClick: function(e) { \r\n setReload(true);\r\n setReloadScreen(reloadScreen + 1);\r\n }\r\n };\r\n\r\n const ds = useMemo(() =>new DataSource({\r\n key: 'productId',\r\n store: details,\r\n }));\r\n\r\n const addProductById = ( id, _info=null ) => {\r\n\r\n if (!id) return;\r\n\r\n const items = ds.items();\r\n\r\n const existsProduct = items.find(x => x.productId == id);\r\n\r\n if (existsProduct) {\r\n notify(`El producto ya se encuentra en la lista`, 'error', 5000);\r\n return\r\n }\r\n\r\n let info = _info == null ? products.find(x => x.id == id) : _info;\r\n \r\n let newData = {}; \r\n\r\n newData['presentation'] = info.presentation;\r\n newData['um'] = info.um;\r\n newData['family'] = info.family; \r\n newData['cost'] = 0;\r\n newData['realCost'] = info.cost; \r\n newData['price'] = 0;\r\n newData['oldPrice'] = info.price;\r\n newData['quantity'] = 1; \r\n newData['total'] = info.cost;\r\n newData['productId'] = info.id; \r\n\r\n if(purchase.currencyId == 1){\r\n if(rate > 0)\r\n newData['dolarCost'] = convert2(info.cost / rate);\r\n else\r\n newData['dolarCost'] = 0 \r\n } \r\n\r\n ds.store().insert(newData).then(() => {\r\n ds.reload().then(() => {\r\n \r\n refGrid.current.instance.editCell(details.length-1, 'quantity');\r\n //refGrid.current.instance.editRow(details.length);\r\n\r\n });\r\n });\r\n\r\n }\r\n\r\n const setFocus = () => { \r\n setTimeout(() => {\r\n refSelect.current.instance.focus(); \r\n }, 300);\r\n }\r\n\r\n const onEditCanceled = (e) => {\r\n setFocus()\r\n }\r\n\r\n const keyDown = (e) => {\r\n if(e.event.key == 'Enter')\r\n setFocus()\r\n }\r\n\r\n const openDialog = (id=0) => dispatch(dialogProduct({open : true, id}));\r\n\r\n return (\r\n <div>\r\n <NuevoProvider onCreate={reloadProvider} />\r\n <Nuevo onSave={()=>0}/>\r\n <AppInfo />\r\n <Popup\r\n width={'95vw'}\r\n height={'95vh'} \r\n title={isNew ? `Nueva compra de inventario` : `Compra #${formatId(id)}`}\r\n onHiding={onHiding}\r\n visible={open}\r\n id='bill-panel'\r\n dra\r\n >\r\n <LoadPanel\r\n shadingColor=\"rgba(0,0,0,0.4)\"\r\n position={{ of: '#bill-panel' }}\r\n visible={loading}\r\n showIndicator={loading}\r\n shading={true}\r\n showPane={true}\r\n />\r\n <ToolbarItem widget=\"dxButton\" \r\n location=\"after\" \r\n options={buttonActualizar}>\r\n </ToolbarItem>\r\n <ToolbarItem widget=\"dxButton\" \r\n location=\"after\" \r\n options={buttonProveedor}>\r\n </ToolbarItem>\r\n <ToolbarItem widget=\"dxButton\" \r\n location=\"after\" \r\n options={buttonProducts}>\r\n </ToolbarItem>\r\n <ToolbarItem widget=\"dxButton\" \r\n location=\"after\" \r\n options={buttonRules}>\r\n </ToolbarItem>\r\n <ScrollView showScrollbar='never'> \r\n <Form formData={purchase} ref={refForm}>\r\n <GroupItem colCount={3}>\r\n <SimpleItem dataField=\"areaId\" editorType=\"dxSelectBox\"\r\n editorOptions={{\r\n disabled: true,\r\n dataSource: createStoreLocal({ name: 'area' }),\r\n ...editorOptionsSelect\r\n }} >\r\n <Label text=\"Area\" />\r\n <RequiredRule message=\"Seleccione el area\" />\r\n </SimpleItem>\r\n <SimpleItem dataField=\"date\" editorType=\"dxDateBox\"\r\n editorOptions={{\r\n displayFormat: 'dd/MM/yyyy',\r\n openOnFieldClick: true,\r\n onValueChanged: e => setPurchase({ ...purchase, date: e.value })\r\n }} >\r\n <Label text=\"Fecha\" />\r\n <RequiredRule message=\"Seleccione la fecha\" />\r\n </SimpleItem>\r\n <SimpleItem dataField=\"purchaseTypeId\" colSpan={2} editorType=\"dxSelectBox\"\r\n editorOptions={{\r\n dataSource: createStoreLocal({ name: 'purchaseType' }),\r\n ...editorOptionsSelect,\r\n onValueChanged: e => setPurchase({ ...purchase, purchaseTypeId: e.value })\r\n }} >\r\n <Label text=\"Tipo de compra:\" />\r\n <RequiredRule message=\"Seleccione el tipo de compra\" />\r\n </SimpleItem>\r\n <SimpleItem dataField=\"providerId\" colSpan={1} editorType=\"dxSelectBox\"\r\n editorOptions={{\r\n dataSource: createStoreLocal({ name: 'Provider', reload }),\r\n ...editorOptionsSelect\r\n }} >\r\n <Label text=\"Proveedor\" />\r\n <RequiredRule message=\"Seleccione el proveedor\" />\r\n </SimpleItem>\r\n \r\n <SimpleItem dataField=\"reference\">\r\n <Label text=\"Referencia\" />\r\n <RequiredRule message=\"La referencia es requerida\" />\r\n </SimpleItem>\r\n <SimpleItem dataField=\"rate\" editorOptions={{\r\n onValueChanged: e => setRate(e.value)\r\n }}>\r\n <Label text=\"Tipo cambio\" />\r\n <CustomRule validationCallback={validateRate} message=\"Ingrese el tipo de cambio\" />\r\n </SimpleItem>\r\n {/* <EmptyItem></EmptyItem> */}\r\n <SimpleItem dataField=\"currencyId\" colSpan={1} editorType=\"dxSelectBox\"\r\n editorOptions={{\r\n dataSource: currencies,\r\n ...editorOptionsSelect,\r\n onValueChanged: e => setPurchase({ ...purchase, currencyId: e.value })\r\n }} >\r\n <Label text=\"Moneda\" />\r\n <RequiredRule message=\"Seleccione la moenda\" />\r\n </SimpleItem>\r\n <SimpleItem dataField=\"observation\" colSpan={2} editorType=\"dxTextBox\">\r\n <Label text=\"Observacion\" />\r\n <StringLengthRule max={500} message=\"Maximo 500 caracteres\" />\r\n </SimpleItem>\r\n </GroupItem>\r\n <GroupItem colCount={4}>\r\n <SimpleItem colSpan={2}>\r\n <SelectBox\r\n ref={refSelect}\r\n disabled={purchase.purchaseTypeId == undefined}\r\n dataSource={dataSourceProduct()} \r\n valueExpr=\"id\" \r\n displayExpr={item => item ? `${item.internalCode} - ${item.name}` : ''}\r\n searchEnabled={true} \r\n searchMode=\"contains\" searchExpr={['name','internalCode']} \r\n searchTimeout={600} \r\n placeholder=\"Selecione una producto\" \r\n showClearButton={true} \r\n itemRender={itemRender} \r\n onValueChanged={e => {\r\n\r\n addProductById(e.value);\r\n e.component.reset();\r\n e.component.focus();\r\n \r\n\r\n }} />\r\n </SimpleItem>\r\n </GroupItem>\r\n <GroupItem>\r\n <DataGrid id=\"gridDetails\"\r\n ref={refGrid}\r\n selection={{ mode: 'single' }}\r\n dataSource={ds}\r\n showBorders={true}\r\n showRowLines={true}\r\n allowColumnResizing={true}\r\n allowColumnReordering={true}\r\n height={350}\r\n onToolbarPreparing={onToolbarPreparing}\r\n onCellPrepared={onCellPrepared}\r\n onRowInserting={onRowInserting}\r\n onEditCanceled={onEditCanceled} \r\n onKeyDown={keyDown}\r\n >\r\n <SearchPanel visible={true} />\r\n <Column dataField=\"productId\" caption=\"Producto\"\r\n setCellValue={setCellValue.bind(null, \"productId\")}\r\n editCellComponent={ProductDDBComponent} minWidth={100}>\r\n <Lookup\r\n dataSource={products}\r\n valueExpr=\"id\"\r\n displayExpr={item => item ? `${item.internalCode} - ${item.name}` : ''}\r\n\r\n />\r\n <RuleRequired />\r\n </Column> \r\n <Column dataField=\"um\" caption=\"Um\" width={100} allowEditing={false}>\r\n <RuleRequired />\r\n </Column>\r\n <Column dataField=\"family\" caption={defaultLabels.family} width={120} allowEditing={false}>\r\n <RuleRequired />\r\n </Column>\r\n <Column dataField=\"quantity\" caption=\"Cant\" dataType=\"number\" width={50} setCellValue={setCellValue.bind(null, \"quantity\")}>\r\n <RuleRequired />\r\n </Column> \r\n <Column dataField=\"dolarCost\" caption=\"Costo $\" dataType=\"number\" allowEditing={purchase.currencyId == 2} width={100} cellRender={cellRender(2)} setCellValue={setCellValue.bind(null, \"dolarCost\")}>\r\n <RuleRequired />\r\n </Column>\r\n <Column dataField=\"cost\" caption=\"Costo\" dataType=\"number\" allowEditing={purchase.currencyId == 1} width={100} cellRender={cellRender(1)} setCellValue={setCellValue.bind(null, \"cost\")}>\r\n <RuleRequired />\r\n </Column>\r\n <Column dataField=\"realCost\" caption=\"Costo Real\" dataType=\"number\" width={100} cellRender={cellRender(1)} setCellValue={setCellValue.bind(null, \"cost\")}>\r\n <RuleRequired />\r\n </Column>\r\n <Column dataField=\"total\" caption=\"Total\" dataType=\"number\" width={120} allowEditing={false} cellRender={cellRender()} >\r\n <RuleRequired />\r\n </Column>\r\n <Column dataField=\"price\" caption=\"Precio\" dataType=\"number\" width={100} cellRender={cellRender()} >\r\n <RuleRequired />\r\n </Column>\r\n <Column dataField=\"oldPrice\" caption=\"Precio Ant\" dataType=\"number\" width={100} cellRender={cellRender()} allowEditing={false}>\r\n <RuleRequired />\r\n </Column>\r\n\r\n <Column type=\"buttons\" width={50}>\r\n <ButtonGrid name=\"delete\" />\r\n </Column>\r\n <Editing\r\n mode=\"cell\"\r\n allowDeleting={true}\r\n allowUpdating={true}\r\n selectTextOnEditStart={true}\r\n useIcons={true}\r\n ></Editing>\r\n <Summary>\r\n <TotalItem\r\n column=\"total\"\r\n summaryType=\"sum\" \r\n customizeText={data => `${formatToMoney(data.value)}`} />\r\n </Summary>\r\n </DataGrid>\r\n </GroupItem>\r\n </Form>\r\n\r\n <ButtonForm saving={saving} textSaving={textSaving} onClick={guardarEntrada} visible={canSave} />\r\n <ButtonForm saving={processing} textSaving=\"Procesar compra\" onClick={procesarCompra} visible={canProcess} icon=\"check\" type='default' />\r\n </ScrollView>\r\n\r\n </Popup>\r\n </div>\r\n );\r\n}\r\n\r\nexport default NewPurchase;","import Purchases from './Purchases';\r\nexport default Purchases;","import React, { useRef } from 'react';\r\nimport BlockHeader from '../../components/shared/BlockHeader';\r\nimport Title from '../../components/shared/Title';\r\nimport DataGrid, {\r\n Column,\r\n ColumnChooser,\r\n Editing,\r\n Export,\r\n FilterRow,\r\n HeaderFilter,\r\n Lookup,\r\n Pager,\r\n Paging,\r\n Button as ButtonGrid,\r\n } from 'devextreme-react/data-grid';\r\nimport { createStoreLocal } from '../../utils/proxy';\r\nimport uri from '../../utils/uri';\r\nimport { store } from '../../services/store';\r\nimport { purchaseSteps } from '../../data/enums';\r\nimport { dataAccess, formatDate, formatDateTime } from '../../data/app';\r\nimport CustomButton from '../../components/buttons/CustomButton';\r\nimport { useDispatch } from 'react-redux'\r\nimport { dialogPurchase } from '../../store/inPutProductPurchase/purchaseDialogReducer';\r\nimport useAuthorization from '../../hooks/useAuthorization';\r\nimport { dataFormatId } from '../../utils/common';\r\nimport { addMenu } from '../../components/grids/Menu';\r\nimport { onToolbar } from '../../components/grids/ToolBar';\r\nimport urlReport from '../../services/reportServices';\r\nimport { resources } from '../../data/app';\r\nimport NewPurchase from './NewPurchase';\r\n\r\nconst Purchases = ( \r\n { \r\n title= \"Compras\", \r\n btnAddText= \"Crear nueva compra\",\r\n typeId= null,\r\n icon=\"\",\r\n Component= NewPurchase,\r\n resourcesId = resources.ordenesDeCompra,\r\n printName = null,\r\n dialog = dialogPurchase,\r\n ...rest\r\n }) => {\r\n\r\n const [ authorized ] = useAuthorization( resourcesId );\r\n\r\n let dataGrid = useRef();\r\n const dispatch = useDispatch();\r\n\r\n const reload = () => dataGrid.current.instance.refresh(); \r\n\r\n const onRowPrepared = (e) => {\r\n if (e.rowType == 'data') {\r\n \r\n if (e.data.stateId == purchaseSteps.anulada) \r\n e.rowElement.classList.add('no-activo');\r\n \r\n }\r\n }\r\n\r\n const onCellPrepared = e => {\r\n\r\n const cellsQuantity = ['stepId']\r\n \r\n if (e.rowType == 'data' && e.column.allowEditing) {\r\n if(cellsQuantity.includes(e.column.dataField)){\r\n e.cellElement.classList.add('td-status');\r\n\r\n if(e.data.stepId == purchaseSteps.anulada)\r\n e.cellElement.classList.add('td-status-cancelado');\r\n\r\n if(e.data.stepId == purchaseSteps.pendiente)\r\n e.cellElement.classList.add('td-status-pendiente');\r\n\r\n if(e.data.stepId == purchaseSteps.procesada)\r\n e.cellElement.classList.add('td-status-procesado');\r\n }\r\n \r\n }\r\n \r\n }\r\n\r\n const showDialog = id => dispatch(dialog({ open: true, id })); \r\n \r\n const report = urlReport();\r\n\r\n const addMenuItems = (e) => {\r\n addMenu(e, [{\r\n text: `Ver ${title}`,\r\n icon: 'find',\r\n onItemClick: () => showDialog(e.row.data.id)\r\n },{\r\n text: `Imprimir ${title}`,\r\n icon: 'print',\r\n onItemClick: () => {\r\n\r\n if(printName)\r\n report.print(`${report[printName](e.row.data.id)}`) ;\r\n }\r\n }])\r\n }\r\n\r\n const onToolbarPreparing = onToolbar({ export : true } , dataGrid);\r\n\r\n const _uri = uri.compras;\r\n\r\n const printReport = ( id ) => {\r\n \r\n const report = urlReport();\r\n report.print(`${report.purchase(id)}`);\r\n\r\n }\r\n\r\n return authorized(\r\n <div className=\"container\">\r\n <Title title={title}/>\r\n <BlockHeader title={title} icon={icon} showFavorite={true} {...rest} >\r\n <CustomButton \r\n text={btnAddText}\r\n icon='plus'\r\n onClick={() => showDialog(0)}\r\n />\r\n </BlockHeader>\r\n <Component onSave={reload} typeId={typeId}/> \r\n \r\n <DataGrid id=\"gridContainer\"\r\n ref={dataGrid}\r\n selection={{ mode: 'single' }}\r\n dataSource={store({ uri : _uri, remoteOperations : true, extraParameter: typeId ? { key : 'typeId', value : typeId } : null })}\r\n showBorders={true}\r\n showRowLines={true}\r\n allowColumnResizing={true}\r\n allowColumnReordering={true}\r\n hoverStateEnabled={true}\r\n onRowPrepared={onRowPrepared}\r\n onCellPrepared={onCellPrepared}\r\n onContextMenuPreparing={addMenuItems}\r\n onToolbarPreparing={onToolbarPreparing}\r\n remoteOperations={{\r\n paging: true,\r\n filtering: true\r\n }} \r\n >\r\n <Paging defaultPageSize={20} />\r\n <Pager\r\n showInfo={true}\r\n showPageSizeSelector={true}\r\n allowedPageSizes={[10, 20, 50]}\r\n />\r\n <FilterRow visible={true} />\r\n <HeaderFilter visible={true} />\r\n <ColumnChooser enabled={true} />\r\n <Export enabled={true} fileName={title} allowExportSelectedData={true} />\r\n <Column dataField=\"id\" caption='Numero' width={100} cellRender={dataFormatId}/>\r\n <Column dataField=\"date\" caption='Fecha' dataType='date' format={formatDate} width={90} />\r\n <Column dataField=\"areaId\" caption=\"Area\" width={170} visible={false}>\r\n <Lookup disabled={true} dataSource={createStoreLocal({ name: 'area'})} valueExpr=\"id\" displayExpr=\"name\" />\r\n </Column> \r\n <Column dataField=\"providerId\" caption=\"Proveedor\" minWidth={120}>\r\n <Lookup disabled={true} dataSource={createStoreLocal({ name: 'provider'})} valueExpr=\"id\" displayExpr=\"name\" />\r\n </Column> \r\n <Column dataField=\"reference\" caption='Referencia' width={100}/>\r\n <Column dataField=\"total\" caption='Total' dataType='number' format={{ type: 'fixedPoint', precision: 2 }} width={100} />\r\n\r\n <Column dataField=\"purchaseTypeId\" caption=\"Tipo Compra\" width={90}>\r\n <Lookup disabled={true} dataSource={createStoreLocal({name: 'purchaseType'})} valueExpr=\"id\" displayExpr=\"name\" />\r\n </Column> \r\n\r\n <Column dataField=\"stepId\" caption=\"Estado\" width={90}>\r\n <Lookup disabled={true} dataSource={createStoreLocal({name: 'purchaseStep'})} valueExpr=\"id\" displayExpr=\"name\" />\r\n </Column> \r\n <Column dataField=\"observation\" caption='Observacion' visible={false} allowHeaderFiltering={false} allowFiltering={false}/>\r\n <Column dataField=\"createAt\" caption='Creado el' dataType='date' format={formatDateTime} width={180}/>\r\n <Column dataField=\"createBy\" caption='Creado Por' width={120}/>\r\n <Column type=\"buttons\" width={90}>\r\n <ButtonGrid name=\"edit\" icon=\"find\" onClick={e => showDialog(e.row.data.id)}/>\r\n <ButtonGrid name=\"print\" icon=\"print\" onClick={e => printReport(e.row.data.id)}/>\r\n <ButtonGrid name=\"delete\" icon=\"remove\" cssClass=\"btn-color-red\" />\r\n </Column>\r\n <Editing\r\n mode=\"popup\"\r\n allowDeleting={true}\r\n allowUpdating={true}\r\n useIcons={true}\r\n >\r\n </Editing>\r\n </DataGrid>\r\n </div>\r\n );\r\n}\r\n\r\nexport default Purchases;","import { dialogDefault, DIALOG_AUTH } from \"../consts\";\r\n\r\nconst mydialog = {...dialogDefault}\r\n\r\n\r\nexport const authDialogAction = ({ open = false, id = 0 }) => ({\r\n type: DIALOG_AUTH,\r\n payload : { open, id }\r\n});\r\n\r\nexport default function authDialogReducer(state = mydialog, { type, payload }) {\r\n\r\n const actions = {\r\n [DIALOG_AUTH] : () => ({...state, ...payload })\r\n }\r\n\r\n return actions[type]?.call() || state;\r\n}\r\n\r\n","import React, { useEffect, useState, useRef } from 'react';\r\nimport { Popup } from 'devextreme-react/popup';\r\nimport Form, { SimpleItem, GroupItem, Label, RequiredRule, StringLengthRule } from 'devextreme-react/form';\r\nimport { useDispatch, useSelector } from 'react-redux'\r\nimport { createStoreLocal } from '../../utils/proxy';\r\nimport { editorOptionsSelect, formatDate, editorOptionsSwitch } from '../../data/app';\r\nimport { Button } from 'devextreme-react';\r\n\r\nimport { formatId } from '../../utils/common';\r\nimport http from '../../utils/http';\r\nimport notify from 'devextreme/ui/notify';\r\n\r\nimport useProducts from '../../hooks/useProducts';\r\nimport uri from '../../utils/uri';\r\nimport { authDialogAction } from '../../store/authorization/authDialogReducer';\r\nimport useClients from '../../hooks/useClients';\r\nimport useUsers from '../../hooks/useUsers';\r\nimport { typeAuths } from '../../data/enums';\r\n\r\nconst Nuevo = props => {\r\n\r\n const { authDialog: { open, id }, user, } = useSelector(store => store);\r\n const authDefaultCustom = { \r\n typeId: null,\r\n userOneTime:false,\r\n observation: '',\r\n clientId: null,\r\n\r\n };\r\n\r\n const [ reload, setReload ] = useState(0);\r\n\r\n const { products } = useProducts({ areaId: user.areaId, exists: true, reload });\r\n const { clients } = useClients({ });\r\n const { users } = useUsers({ });\r\n\r\n const [auth, setAuth] = useState({ ...authDefaultCustom });\r\n const [saving, setSaving] = useState(false);\r\n\r\n let refForm = useRef();\r\n\r\n useEffect(() => { \r\n\r\n if (id > 0) { \r\n\r\n http(uri.authorizations.getById(id)).asGet().then(resp => { \r\n setAuth({ ...auth, ...resp });\r\n })\r\n \r\n } else {\r\n\r\n if(open)\r\n setAuth({ ...authDefaultCustom });\r\n\r\n }\r\n\r\n }, [open]);\r\n\r\n const dispatch = useDispatch(); \r\n\r\n const closeDialog = (load) => {\r\n\r\n refForm.current.instance.resetValues(); \r\n\r\n dispatch(authDialogAction({ id: 0, open: false }));\r\n if (load) {\r\n let { onSave } = props;\r\n onSave();\r\n }\r\n }\r\n\r\n const onHiding = ({ load }) => {\r\n closeDialog(load);\r\n }\r\n\r\n const guardar = (e) => {\r\n\r\n\r\n let result = refForm.current.instance.validate();\r\n\r\n if (result.isValid) {\r\n\r\n setSaving(true);\r\n let data = { ...auth };\r\n\r\n http(uri.authorizations.insert).asPost(data).then(resp => {\r\n setSaving(false);\r\n notify(`Regla registrada correctamente`);\r\n closeDialog(true); \r\n }).catch(err => {\r\n setSaving(false);\r\n notify(err, 'error', 5000);\r\n });\r\n\r\n }\r\n \r\n\r\n }\r\n\r\n const isNew = id == 0; \r\n\r\n const isDiscount = auth.typeId == typeAuths.discount;\r\n const isCredit = auth.typeId == typeAuths.credit;\r\n\r\n return (\r\n <div>\r\n <Popup\r\n width={500}\r\n height={550}\r\n title={isNew ? `Nueva regla` : `Editar regla ${formatId(id)}`}\r\n onHiding={onHiding}\r\n visible={open}\r\n className=\"bg-fbfbfb\"\r\n > \r\n <Form formData={auth} ref={refForm}>\r\n <GroupItem colCount={2}>\r\n\r\n <SimpleItem dataField=\"typeId\" colSpan={2} editorType=\"dxSelectBox\"\r\n editorOptions={{\r\n dataSource: createStoreLocal({ name: 'AuthorizationType' }),\r\n ...editorOptionsSelect,\r\n onValueChanged: e => setAuth({ ...auth, typeId: e.value })\r\n }} >\r\n <Label text=\"Tipo Autorización\" />\r\n <RequiredRule message=\"Seleccione el tipo\" />\r\n </SimpleItem>\r\n\r\n <SimpleItem dataField=\"description\" colSpan={2} editorType=\"dxTextBox\"\r\n editorOptions={{ placeholder: 'Descriptión', showClearButton: true }} >\r\n <Label text=\"Descriptión\" />\r\n <RequiredRule message=\"Este dato es requerido\" />\r\n </SimpleItem>\r\n\r\n <SimpleItem dataField=\"discount\" colSpan={2} editorType=\"dxNumberBox\"\r\n editorOptions={{\r\n min:0,\r\n max:100,\r\n readOnly: !isDiscount,\r\n }} >\r\n <Label text=\"Descuento\" />\r\n {isDiscount && <RequiredRule message=\"Este dato es requerido\" />}\r\n </SimpleItem>\r\n\r\n <SimpleItem dataField=\"useOneTime\" colSpan={2} editorType=\"dxSwitch\"\r\n editorOptions={{\r\n ...editorOptionsSwitch,\r\n onValueChanged: e => setAuth({ ...auth, userOneTime: e.value, expiredDate: null })\r\n }} >\r\n <Label text=\"Un solo uso\" />\r\n </SimpleItem>\r\n\r\n <SimpleItem dataField=\"expiredDate\" colSpan={2} editorType=\"dxDateBox\"\r\n editorOptions={{\r\n displayFormat: formatDate,\r\n openOnFieldClick: true,\r\n disabled: auth.userOneTime,\r\n onValueChanged: e => setAuth({ ...auth, expiredDate: e.value })\r\n }} >\r\n <Label text=\"Fecha de fin\" />\r\n {!auth.userOneTime && <RequiredRule message=\"Seleccione la fecha\" />}\r\n </SimpleItem>\r\n <SimpleItem dataField=\"productId\" colSpan={2} editorType=\"dxSelectBox\"\r\n editorOptions={{\r\n dataSource: products,\r\n ...editorOptionsSelect,\r\n showClearButton:true,\r\n onValueChanged: e => setAuth({ ...auth, clientId: e.value })\r\n }} >\r\n <Label text=\"Producto\" />\r\n </SimpleItem>\r\n <SimpleItem dataField=\"clientId\" colSpan={2} editorType=\"dxSelectBox\"\r\n editorOptions={{\r\n dataSource: clients,\r\n ...editorOptionsSelect,\r\n showClearButton:true,\r\n onValueChanged: e => setAuth({ ...auth, clientId: e.value })\r\n }} >\r\n <Label text=\"Cliente\" />\r\n </SimpleItem>\r\n <SimpleItem dataField=\"username\" colSpan={2} editorType=\"dxSelectBox\"\r\n editorOptions={{\r\n dataSource: users,\r\n ...editorOptionsSelect,\r\n showClearButton:true,\r\n valueExpr: \"username\",\r\n displayExpr: item => item ? `${item.username} | ${item.fullName}` : \"\",\r\n onValueChanged: e => setAuth({ ...auth, username: e.value })\r\n }} >\r\n <Label text=\"Usuario\" />\r\n </SimpleItem>\r\n <SimpleItem dataField=\"active\" colSpan={2} editorType=\"dxSwitch\"\r\n editorOptions={{\r\n ...editorOptionsSwitch,\r\n }} >\r\n <Label text=\"Activa\" />\r\n </SimpleItem>\r\n\r\n </GroupItem> \r\n </Form>\r\n <br />\r\n <div className='flex-v'>\r\n <Button\r\n className=\"mt-10\"\r\n text={saving ? 'Guardando...' : `Guardar`}\r\n type=\"success\"\r\n icon='save'\r\n disabled={saving}\r\n onClick={guardar}\r\n />\r\n </div>\r\n\r\n </Popup>\r\n </div>\r\n );\r\n}\r\n\r\nexport default Nuevo;\r\n","import React, { useRef } from 'react';\r\nimport { DataGrid } from 'devextreme-react';\r\nimport { EmailRule, Item } from 'devextreme-react/form';\r\nimport { \r\n Paging, \r\n Pager, \r\n FilterRow, \r\n HeaderFilter, \r\n ColumnChooser, \r\n Column, \r\n Export, \r\n Editing, \r\n Button as ButtonGrid,\r\n Lookup} from 'devextreme-react/data-grid';\r\n\r\nimport uri from '../../utils/uri';\r\nimport { store } from '../../services/store';\r\nimport Title from '../../components/shared/Title';\r\nimport BlockHeader from '../../components/shared/BlockHeader';\r\nimport useAuthorization from '../../hooks/useAuthorization';\r\nimport { dataAccess, editorOptionsSwitch, formatDateTime, resources } from '../../data/app';\r\nimport { createStoreLocal } from '../../utils/proxy';\r\nimport Nuevo from './Nuevo';\r\nimport { useDispatch } from 'react-redux';\r\nimport { authDialogAction } from '../../store/authorization/authDialogReducer';\r\n\r\nconst Authorizations = () => {\r\n\r\n const [ authorized ] = useAuthorization( resources.auths );\r\n\r\n const title = 'Autorización de descuentos';\r\n\r\n let gridRef = useRef();\r\n\r\n const dispatch = useDispatch();\r\n\r\n const onToolbarPreparing = (e) => {\r\n e.toolbarOptions.items.unshift({\r\n location: 'before',\r\n widget: 'dxButton',\r\n options: {\r\n text: 'Nueva autoriación',\r\n icon: 'plus',\r\n type:'default',\r\n stylingMode:\"outlined\",\r\n onClick: () => showDialog(0)\r\n }\r\n });\r\n }\r\n\r\n const showDialog = (id) => {\r\n dispatch(authDialogAction({ open: true, id }));\r\n }\r\n\r\n const onSave = () => {\r\n gridRef.current.instance.refresh();\r\n }\r\n\r\n return authorized(\r\n <div className=\"container\">\r\n <Nuevo onSave={onSave}/>\r\n <Title title={title} />\r\n <BlockHeader title={title} />\r\n <DataGrid id=\"gridContainer\"\r\n ref={gridRef}\r\n selection={{ mode: 'single' }}\r\n dataSource={store({ uri: uri.authorizations })}\r\n showBorders={true}\r\n showRowLines={true}\r\n allowColumnResizing={true}\r\n allowColumnReordering={true}\r\n onToolbarPreparing={onToolbarPreparing}\r\n >\r\n <Paging defaultPageSize={20} />\r\n <Pager\r\n showInfo={true}\r\n showPageSizeSelector={true}\r\n allowedPageSizes={[10, 20, 50]}\r\n />\r\n <FilterRow visible={true} />\r\n <HeaderFilter visible={true} />\r\n <ColumnChooser enabled={true} />\r\n <Export enabled={true} fileName={title} allowExportSelectedData={true} />\r\n <Column dataField=\"codeAuth\" caption='Codigo' width={130}/>\r\n <Column dataField=\"typeId\" width={150} caption=\"Tipo pago\">\r\n <Lookup disabled={true} dataSource={createStoreLocal({ name: 'AuthorizationType' })} valueExpr=\"id\" displayExpr=\"name\" />\r\n </Column>\r\n <Column dataField=\"description\" caption='Descripción' />\r\n <Column dataField=\"used\" caption=\"Aplicado\" dataType=\"boolean\" width={100}/>\r\n <Column dataField=\"active\" caption=\"Activo\" dataType=\"boolean\" width={100}/>\r\n\r\n <Column dataField=\"createdBy\" caption='Creado por' width={90} />\r\n <Column dataField=\"createdAt\" caption='Creado el' dataType='date' format={formatDateTime} width={150} />\r\n <Column visible={false} dataField=\"modifiedBy\" caption='Modificado por' width={90} />\r\n <Column visible={false} dataField=\"modifiedAt\" caption='Modificado el' dataType='date' format={formatDateTime} width={150} />\r\n <Column type=\"buttons\" width={60}>\r\n <ButtonGrid name=\"edit\" icon=\"find\" onClick={e => showDialog(e.row.data.id)}/>\r\n <ButtonGrid name=\"delete\" />\r\n </Column>\r\n <Editing\r\n mode=\"popup\"\r\n allowUpdating={true}\r\n allowDeleting={true}\r\n useIcons={true}\r\n > \r\n </Editing>\r\n </DataGrid>\r\n </div>\r\n );\r\n}\r\n\r\nexport default Authorizations;\r\n","import React from 'react';\r\nimport DataGrid, {\r\n Column,\r\n Scrolling,\r\n Selection,\r\n FilterRow,\r\n} from 'devextreme-react/data-grid';\r\nimport notify from 'devextreme/ui/notify';\r\nimport DropDownBox from 'devextreme-react/drop-down-box';\r\nimport { cellRender } from '../../utils/common';\r\nimport { defaultLabels } from '../../data/defaultObjects';\r\n\r\n\r\nconst dropDownOptions = { fullScreen: true, showCloseButton: true};\r\n\r\nexport default class ProductDDBComponentMobile extends React.Component {\r\n quantity = 'quantity';\r\n\r\n constructor(props) {\r\n super(props);\r\n \r\n this.state = {\r\n currentValue: props.data.value\r\n };\r\n this.dropDownBoxRef = React.createRef();\r\n this.onSelectionChanged = this.onSelectionChanged.bind(this);\r\n this.contentRender = this.contentRender.bind(this);\r\n this.onToolbarPreparing = this.onToolbarPreparing.bind(this);\r\n this.calculateFilterExpression = this.calculateFilterExpression.bind(this);\r\n this.showPrice = props.showPrice;\r\n this.validateQuantity = props.validateQuantity;\r\n\r\n this.quantity = props.quantity || this.quantity;\r\n }\r\n\r\n onCellPrepared(e) {\r\n\r\n if (e.rowType == 'data') {\r\n if(e.column.dataField == \"stock\")\r\n if(e.value == 0)\r\n e.cellElement.classList.add('stock-0');\r\n \r\n }\r\n } \r\n onToolbarPreparing(e) {\r\n e.toolbarOptions.items.unshift({\r\n location: 'before',\r\n widget: 'dxButton',\r\n options: {\r\n text: 'Regresar',\r\n type: 'normal',\r\n icon: 'chevronleft',\r\n stylingMode: \"outlined\",\r\n onClick: () => this.dropDownBoxRef.current.instance.close()\r\n \r\n }\r\n });\r\n }\r\n\r\n calculateFilterExpression(value, selectedFilterOperation, target) { \r\n\r\n const values = value.split('%');\r\n let filters = values.map(v => {\r\n return ['name', 'contains', v];\r\n });\r\n\r\n const filterFull = [];\r\n\r\n if (filters.length > 1) {\r\n\r\n for (let index = 0; index < filters.length; index++) {\r\n const element = filters[index];\r\n filterFull.push(element);\r\n if (index < filters.length - 1) {\r\n filterFull.push('and');\r\n }\r\n }\r\n return filterFull;\r\n\r\n }else{\r\n return [filters]\r\n }\r\n }\r\n\r\n contentRender() {\r\n return ( \r\n <DataGrid\r\n dataSource={this.props.data.column.lookup.dataSource}\r\n keyExpr=\"id\" \r\n height={'100vh'} \r\n selectedRowKeys={[this.state.currentValue]}\r\n hoverStateEnabled={true}\r\n onSelectionChanged={this.onSelectionChanged}\r\n focusedRowEnabled={true}\r\n defaultFocusedRowKey={this.state.currentValue}\r\n rowAlternationEnabled={true}\r\n allowColumnResizing={false}\r\n columnAutoWidth={true}\r\n onCellPrepared ={this.onCellPrepared}\r\n onToolbarPreparing={this.onToolbarPreparing}\r\n \r\n >\r\n <FilterRow visible={true} /> \r\n <Column dataField=\"internalCode\" caption=\"Codigo\" width={80} ></Column>\r\n <Column dataField=\"name\" caption=\"Nombre\" calculateFilterExpression={this.calculateFilterExpression}></Column>\r\n <Column dataField=\"price\" caption=\"Precio\" visible={this.showPrice} cellRender={cellRender()} width={90}></Column>\r\n <Column dataField=\"stock\" caption=\"Cant\" width={70}></Column>\r\n <Column dataField=\"disponible\" caption=\"Disp\" width={90}></Column>\r\n <Column dataField=\"um\" caption=\"Unidad Medida\" width={120}></Column>\r\n <Column dataField=\"family\" caption={defaultLabels.family} width={120} visible={true}></Column>\r\n <Column dataField=\"cost\" caption=\"Costo\" visible={!this.showPrice} cellRender={cellRender()} width={90}></Column> \r\n <Scrolling mode=\"virtual\" />\r\n <Selection mode=\"single\" />\r\n </DataGrid>\r\n );\r\n }\r\n\r\n onSelectionChanged(e) {\r\n\r\n this.setState({ currentValue: e.selectedRowKeys[0] });\r\n this.props.data.setValue(this.state.currentValue);\r\n \r\n if (e.selectedRowKeys.length > 0) { \r\n const data = e.selectedRowsData[0];\r\n if(this.validateQuantity && data.stock <= 0){\r\n notify(\"No hay stock disponible\", \"error\", 1000);\r\n }else{\r\n this.dropDownBoxRef.current.instance.close(); \r\n this.props.data.component.editCell(this.props.data.rowIndex, this.quantity);\r\n } \r\n \r\n }\r\n\r\n } \r\n\r\n render() {\r\n return (\r\n <DropDownBox\r\n ref={this.dropDownBoxRef}\r\n key=\"id\"\r\n dropDownOptions={dropDownOptions}\r\n dataSource={this.props.data.column.lookup.dataSource}\r\n value={this.state.currentValue}\r\n displayExpr={item => item ? `${item.internalCode} - ${item.name}` : ''}\r\n valueExpr=\"id\" \r\n contentRender={this.contentRender}>\r\n </DropDownBox>\r\n );\r\n }\r\n}","import React, { useEffect, useState, useRef, useCallback } from 'react';\r\nimport { Popup, ToolbarItem, } from 'devextreme-react/popup';\r\nimport Form, { SimpleItem, GroupItem, Label, RequiredRule, StringLengthRule } from 'devextreme-react/form';\r\nimport { useDispatch, useSelector } from 'react-redux'\r\nimport { billDialogAction } from '../../../store/bill/billDialogReducer';\r\nimport { createCustomStore, createStoreLocal } from '../../../utils/proxy';\r\nimport { editorOptionsSelect, formatDate, resources } from '../../../data/app';\r\nimport { DataGrid, Button, ScrollView } from 'devextreme-react';\r\nimport { LoadPanel } from 'devextreme-react/load-panel';\r\nimport { Column, Editing, Lookup, RequiredRule as RuleRequired, Button as ButtonGrid, Summary, TotalItem, SearchPanel } from 'devextreme-react/data-grid';\r\nimport { cellRender, formatId } from '../../../utils/common';\r\nimport http from '../../../utils/http';\r\nimport notify from 'devextreme/ui/notify';\r\nimport { billDefault, defaultLabels } from '../../../data/defaultObjects';\r\nimport { paymentType, preBillType } from '../../../data/enums';\r\nimport useProducts from '../../../hooks/useProducts';\r\nimport uri from '../../../utils/uri';\r\nimport Resumen from '../../../components/form/Resumen';\r\nimport ClientInfo from '../../clients/ClientInfo';\r\nimport { confirm } from 'devextreme/ui/dialog';\r\nimport NuevoClient from '../../clients/NuevoClient';\r\nimport { clientDialogAction } from '../../../store/client/clientDialogReducer';\r\nimport ProductDDBComponentMobile from '../../../components/dropdown/ProductDDBComponentMobile';\r\nimport useAuthorization from '../../../hooks/useAuthorization';\r\nimport useClients from '../../../hooks/useClients';\r\nimport { clientDetailAction } from '../../../store/clientDetail/clientDetailReducer';\r\n\r\nconst NuevoNew = props => {\r\n\r\n const [ _, canChangeCreditDays ] = useAuthorization( resources.cambiarDiasCredito );\r\n const { action, typeId } = props;\r\n\r\n const { billDialog: { open, id, clientId }, user, } = useSelector(store => store);\r\n const [resumenData, setResumenData] = useState([]);\r\n const billDefaultCustom = { ...billDefault, clientId: clientId, preBillTypeId: typeId, paymentTypeId: 2, preBillDetails: []};\r\n \r\n const [ reload, setReload ] = useState(0);\r\n const [ loading, setLoading ] = useState(false);\r\n\r\n const { products, setProducts } = useProducts({ areaId: user.areaId, exists: true, reload });\r\n const [bill, setBill] = useState({ ...billDefaultCustom });\r\n const [saving, setSaving] = useState(false);\r\n const [currentCreditDays, setCurrentCreditDays] = useState(0);\r\n const [showRest, setShowRest] = useState(false);\r\n\r\n let refForm = useRef();\r\n let refGrid = useRef();\r\n\r\n useEffect(() => { \r\n\r\n if (id > 0) {\r\n\r\n setLoading(true);\r\n http(uri.products.getByArea(user.areaId)).asGet().then(data => {\r\n setProducts(data);\r\n\r\n http(uri.prebills.getById(id)).asGet().then(resp => {\r\n\r\n resp.preBillDetails.forEach(detail => {\r\n\r\n let info = products.find(x => x.id == detail.productId);\r\n\r\n detail['presentation'] = info.presentation;\r\n detail['um'] = info.um;\r\n detail['family'] = info.family;\r\n detail['product'] = null;\r\n\r\n });\r\n\r\n setBill({ ...bill, ...resp });\r\n setResumenData([...resp.preBillDetails]);\r\n setLoading(false);\r\n })\r\n\r\n });\r\n\r\n } else {\r\n\r\n setLoading(true);\r\n setBill({ ...billDefaultCustom, preBillDetails: [] });\r\n setResumenData([]);\r\n setLoading(false); \r\n\r\n }\r\n\r\n if(open)\r\n window.addEventListener(\"beforeunload\", alertUser);\r\n \r\n return () => {\r\n if(open)\r\n window.removeEventListener(\"beforeunload\", alertUser); \r\n \r\n };\r\n\r\n }, [open]); \r\n\r\n const alertUser = (e) => {\r\n e.preventDefault();\r\n e.returnValue = \"\";\r\n alert('saliendo');\r\n };\r\n\r\n const dispatch = useDispatch();\r\n\r\n const onToolbarPreparing = (e) => {\r\n e.toolbarOptions.items.unshift({\r\n location: 'before',\r\n widget: 'dxButton',\r\n options: {\r\n icon: 'plus',\r\n type: 'default',\r\n stylingMode: \"outlined\",\r\n onClick: () => refGrid.current.instance.addRow()\r\n }\r\n },{\r\n location: 'before',\r\n widget: 'dxButton',\r\n options: {\r\n icon: 'refresh',\r\n type: 'default',\r\n stylingMode: \"outlined\",\r\n onClick: () => setReload(Math.random())\r\n }\r\n },{\r\n location: 'before',\r\n widget: 'dxButton',\r\n options: {\r\n icon: 'remove',\r\n type: 'danger',\r\n stylingMode: \"outlined\",\r\n onClick: () => { \r\n\r\n var selectedRow = refGrid.current.instance.getSelectedRowKeys(); \r\n if (selectedRow.length > 0) {\r\n let key = selectedRow[0]\r\n let index = refGrid.current.instance.getRowIndexByKey(key)\r\n refGrid.current.instance.deleteRow(index);\r\n }\r\n }\r\n }\r\n },{\r\n location: 'before',\r\n widget: 'dxButton',\r\n options: {\r\n icon: 'check',\r\n type: 'normal',\r\n stylingMode: \"outlined\",\r\n onClick: () => { \r\n\r\n refGrid.current.instance.saveEditData(); \r\n \r\n }\r\n }\r\n },{\r\n location: 'before',\r\n widget: 'dxButton',\r\n options: {\r\n icon: 'revert',\r\n type: 'normal',\r\n stylingMode: \"outlined\",\r\n onClick: () => { \r\n\r\n refGrid.current.instance.cancelEditData(); \r\n \r\n }\r\n }\r\n }\r\n );\r\n }\r\n\r\n const closeDialog = (load) => {\r\n\r\n refForm.current.instance.resetValues();\r\n refGrid.current.instance.cancelEditData();\r\n\r\n dispatch(billDialogAction({ id: 0, clientId: 0, open: false }));\r\n dispatch(clientDetailAction( {clientId:0} ));\r\n if (load) {\r\n let { onSave } = props;\r\n onSave();\r\n }\r\n }\r\n\r\n const onHiding = ({ load }) => {\r\n closeDialog(load);\r\n }\r\n\r\n const convertFactura = () => {\r\n\r\n let result = confirm(\"<i>Esta seguro de convertir a factura la preventa: <b>\"+formatId(id)+\"</b>?</i>\", \"Confirmar\");\r\n result.then((dialogResult) => {\r\n\r\n if (dialogResult){\r\n\r\n setSaving(true);\r\n \r\n http(`${uri.prebills.base}/${id}/convertToBill`).asGet().then(resp => {\r\n \r\n notify(`Se ha creado la factura correctamente correctamente`);\r\n setSaving(false);\r\n refGrid.current.instance.refresh(); \r\n \r\n }).catch(err => { \r\n notify(err, 'error', 5000);\r\n setSaving(false);\r\n });\r\n \r\n }\r\n });\r\n\r\n }\r\n\r\n const guardarFactura = (e) => {\r\n\r\n refGrid.current.instance.saveEditData();\r\n let result = refGrid.current.instance.hasEditData();\r\n\r\n if (!result) {\r\n\r\n let result = refForm.current.instance.validate();\r\n\r\n if (result.isValid) {\r\n\r\n setSaving(true);\r\n let data = { ...bill };\r\n\r\n http(uri.prebills.insert).asPost(data).then(resp => {\r\n setSaving(false);\r\n notify(`${action} registrada correctamente`);\r\n setReload(Math.random());\r\n closeDialog(true); \r\n }).catch(err => {\r\n setSaving(false);\r\n notify(err, 'error', 6000);\r\n });\r\n\r\n }\r\n }\r\n\r\n }\r\n\r\n const setCellValue = (prop, newData, value, currentRowData) => {\r\n\r\n if (value == undefined)\r\n newData[prop] = 0;\r\n else if(value.constructor.name === 'Object')\r\n newData[prop] = value.id;\r\n else\r\n newData[prop] = value || 0;\r\n \r\n if (prop == 'productId' && value) {\r\n\r\n let info = products.find(x => x.id == value);\r\n\r\n newData['presentation'] = info.presentation;\r\n newData['um'] = info.um;\r\n newData['family'] = info.family;\r\n newData['stock'] = info.stock;\r\n newData['price'] = info.price;\r\n newData['customPrice'] = info.price;\r\n newData['cost'] = info.cost;\r\n newData['discount'] = 0;\r\n !currentRowData['quantity'] && (newData['quantity'] = 1);\r\n !currentRowData['total'] && (newData['total'] = info.price);\r\n }\r\n\r\n if (prop == 'quantity' && (+value) >= 0) {\r\n if(value > currentRowData['stock'] && isPreventa){\r\n newData['quantity'] = currentRowData['stock'];\r\n newData['total'] = currentRowData['customPrice'] * currentRowData['stock'];\r\n notify(currentRowData['stock'] + \" máximo stock disponible\", \"error\", 5000);\r\n }else{\r\n newData['total'] = currentRowData['customPrice'] * value;\r\n }\r\n }\r\n\r\n\r\n if (prop == 'customPrice' && (+value) >= 0) {\r\n newData['total'] = currentRowData['quantity'] * value;\r\n }\r\n\r\n if (prop == 'discount' && (+value) >= 0) {\r\n newData['total'] = (currentRowData['quantity'] * currentRowData['customPrice']) - value;\r\n }\r\n\r\n }\r\n\r\n const onCellPrepared = useCallback(e => {\r\n\r\n const cellsQuantity = ['quantity', 'quantityRequest']\r\n\r\n if (e.rowType == 'data' && e.column.allowEditing) {\r\n if (cellsQuantity.includes(e.column.dataField))\r\n e.cellElement.classList.add('quantity-text');\r\n if (e.column.dataField == 'customPrice')\r\n e.cellElement.classList.add('customPrice-text');\r\n if (e.column.dataField == 'productoId')\r\n e.cellElement.classList.add('fs-text-13');\r\n\r\n }\r\n\r\n },[]);\r\n\r\n const onRowInserted = e => {\r\n setResumenData([...bill.preBillDetails])\r\n }\r\n\r\n const isNew = id == 0;\r\n \r\n const buttonOptions = {\r\n text: 'Crear Cliente',\r\n icon: 'user',\r\n onClick: function(e) { \r\n dispatch(clientDialogAction({ open: true }));\r\n }\r\n };\r\n\r\n const reloadClient = clientId => {\r\n setReload(Math.random());\r\n setBill(_bill => ({ ..._bill, clientId: clientId }));\r\n }\r\n\r\n const onRowInserting = useCallback((e) => {\r\n\r\n const isCanceled = new Promise((resolve, reject) => {\r\n\r\n const existsProduct = refGrid.current.instance.getDataSource().items().find(x => x.productId == e.data.productId);\r\n\r\n if (existsProduct) {\r\n notify(`El producto ya se encuentra en la lista`, 'error', 5000);\r\n reject(`El producto ya se encuentra en la lista`);\r\n }else{\r\n resolve(false);\r\n }\r\n });\r\n e.cancel = isCanceled;\r\n\r\n },[]);\r\n\r\n const paymentTypeIdChanged = useCallback((e) => {\r\n\r\n setBill(_bill => ({ \r\n ..._bill, paymentTypeId: e.value, \r\n paymentMethodId: e.value == paymentType.credito ? null : '', \r\n bankId: e.value == paymentType.credito ? null : '', \r\n reference:'', \r\n creditDays: e.value == paymentType.contado ? 0 : currentCreditDays,\r\n }))\r\n },[]);\r\n\r\n const clientIdChanged = useCallback(e => {\r\n const client = e.component.option('items')\r\n .find(x => x.id == e.value);\r\n\r\n let creditDays = 0;\r\n\r\n if(client)\r\n creditDays = client.creditDays; \r\n \r\n dispatch(clientDetailAction( {clientId:e.value}));\r\n setCurrentCreditDays(creditDays);\r\n setBill(_bill => ({ ..._bill, creditDays: creditDays, clientId: e.value}));\r\n },[]);\r\n\r\n const isPreventa = typeId == preBillType.preventa;\r\n\r\n const buttonOptions2 = {\r\n icon: 'close',\r\n onClick: e => onHiding({ load: false }),\r\n };\r\n\r\n const buttonOptions3 = {\r\n icon: 'menu',\r\n onClick: e => setShowRest(!showRest),\r\n };\r\n\r\n return (\r\n <div>\r\n <NuevoClient onCreate={reloadClient} fullScreen={true}/>\r\n <Popup\r\n fullScreen={true}\r\n title={isNew ? `Nueva ${action}` : `Ver ${action} ${formatId(id)}`}\r\n onHiding={onHiding}\r\n visible={open}\r\n className=\"bg-fbfbfb\"\r\n showCloseButton={false}\r\n id='bill-panel'\r\n > \r\n <LoadPanel\r\n shadingColor=\"rgba(0,0,0,0.4)\"\r\n position={{ of: '#bill-panel' }}\r\n visible={loading}\r\n showIndicator={loading}\r\n shading={true}\r\n showPane={true}\r\n />\r\n <ToolbarItem\r\n widget=\"dxButton\" \r\n location=\"after\" options={buttonOptions3}>\r\n </ToolbarItem>\r\n <ToolbarItem \r\n widget=\"dxButton\" \r\n location=\"after\" \r\n options={buttonOptions2}>\r\n </ToolbarItem>\r\n <ScrollView showScrollbar='never'>\r\n\r\n <Form formData={bill} ref={refForm} labelLocation='top'>\r\n <GroupItem colCount={2}>\r\n <GroupItem colSpan={2}>\r\n <GroupItem colCount={2}>\r\n <SimpleItem dataField=\"clientId\" colSpan={2} editorType=\"dxSelectBox\"\r\n editorOptions={{\r\n dataSource: createCustomStore({ url: uri.clients.base+'/catalogo?reload='+reload, active: true })(),\r\n valueExpr:\"id\",\r\n displayExpr: item => item ? `${item.id} - ${item.name}` : '',\r\n searchEnabled: true, \r\n showClearButton:true,\r\n searchExpr: [\"name\"],\r\n onValueChanged: clientIdChanged\r\n }} >\r\n <Label text=\"Cliente\" />\r\n <RequiredRule message=\"Seleccione el cliente\" />\r\n </SimpleItem>\r\n <SimpleItem dataField=\"date\" colSpan={2} editorType=\"dxDateBox\"\r\n editorOptions={{\r\n displayFormat: formatDate,\r\n openOnFieldClick: true,\r\n }} >\r\n <Label text=\"Fecha\" />\r\n <RequiredRule message=\"Seleccione la fecha\" />\r\n </SimpleItem>\r\n <SimpleItem dataField=\"paymentTypeId\" colSpan={2} editorType=\"dxSelectBox\"\r\n editorOptions={{\r\n dataSource: createStoreLocal({ name: 'billPaymentType' }),\r\n ...editorOptionsSelect,\r\n searchEnabled: false, \r\n onValueChanged: paymentTypeIdChanged \r\n }} >\r\n <Label text=\"Tipo pago\" />\r\n <RequiredRule message=\"Seleccione el tipo\" />\r\n </SimpleItem>\r\n <SimpleItem dataField=\"creditDays\" colSpan={2} editorType=\"dxNumberBox\"\r\n editorOptions={{\r\n disabled: !canChangeCreditDays,\r\n onValueChanged: e => setBill(_bill => ({ ..._bill, creditDays: e.value, })),\r\n }} >\r\n <Label text=\"Dias crédito\" />\r\n <RequiredRule message=\"Seleccione el tipo\" /> \r\n </SimpleItem> \r\n \r\n <SimpleItem colSpan={2} >\r\n <ClientInfo isMobile={true} />\r\n </SimpleItem> \r\n \r\n { (showRest && isPreventa) && <SimpleItem dataField=\"paymentMethodId\" colSpan={2} editorType=\"dxSelectBox\"\r\n editorOptions={{\r\n disabled: bill.paymentTypeId == paymentType.credito,\r\n dataSource: createStoreLocal({ name: 'BillPaymentMethod' }),\r\n ...editorOptionsSelect,\r\n searchEnabled: false, \r\n onValueChanged: e => setBill(_bill => ({ ...bill, billPaymentTypeId: e.value, }))\r\n }} >\r\n <Label text=\"Forma pago\" />\r\n </SimpleItem>\r\n } \r\n {(showRest && isPreventa) && <SimpleItem dataField=\"bankId\" colSpan={2} editorType=\"dxSelectBox\"\r\n editorOptions={{\r\n disabled: bill.paymentTypeId == paymentType.credito,\r\n dataSource: createStoreLocal({ name: 'bank' }),\r\n ...editorOptionsSelect,\r\n searchEnabled: false, \r\n onValueChanged: e => setBill(_bill => ({ ...bill, bankId: e.value, }))\r\n }} >\r\n <Label text=\"Banco\" />\r\n </SimpleItem>\r\n }\r\n {(showRest && isPreventa) && <SimpleItem dataField=\"reference\" colSpan={2} editorType=\"dxTextBox\"\r\n editorOptions={{ showClearButton: true, disabled: bill.paymentTypeId == paymentType.credito, }} >\r\n <Label text=\"Referencia\" />\r\n </SimpleItem>\r\n }\r\n {(showRest && isPreventa) && <SimpleItem dataField=\"codigo\" colSpan={2} editorType=\"dxTextBox\"\r\n editorOptions={{ placeholder: 'Talonario', showClearButton: true }} >\r\n <Label text=\"Referencia\" />\r\n </SimpleItem>\r\n }\r\n <SimpleItem colSpan={2} >\r\n <Button {...buttonOptions}></Button>\r\n </SimpleItem> \r\n\r\n </GroupItem>\r\n </GroupItem> \r\n </GroupItem>\r\n <GroupItem>\r\n <DataGrid id=\"gridDetails\"\r\n ref={refGrid}\r\n selection={{ mode: 'single' }}\r\n dataSource={bill.preBillDetails}\r\n showBorders={true}\r\n showRowLines={true}\r\n allowColumnResizing={true}\r\n allowColumnReordering={true}\r\n height={400}\r\n onToolbarPreparing={onToolbarPreparing}\r\n onRowInserted={onRowInserted}\r\n onRowRemoved={onRowInserted}\r\n onRowUpdated={onRowInserted}\r\n onCellPrepared={onCellPrepared}\r\n onRowInserting={onRowInserting}\r\n >\r\n <SearchPanel visible={true} width={120} />\r\n <Column dataField=\"productId\" caption=\"Producto\" minWidth={190}\r\n setCellValue={setCellValue.bind(null, \"productId\")}\r\n editCellComponent={props => <ProductDDBComponentMobile showPrice={true} {...props} validateQuantity={isPreventa}/>}\r\n >\r\n \r\n <Lookup\r\n dataSource={products}\r\n valueExpr=\"id\"\r\n displayExpr={item => item ? `${item.internalCode}-${item.name}` : ''}\r\n\r\n />\r\n <RuleRequired message={\"Seleccione un producto\"} />\r\n </Column> \r\n \r\n <Column dataField=\"quantity\" caption=\"Cant\" dataType=\"number\" width={55}\r\n setCellValue={setCellValue.bind(null, \"quantity\")}\r\n >\r\n <RuleRequired message={\"Ingrese la cantidad\"} />\r\n </Column>\r\n \r\n <Column visible={false} dataField=\"price\" caption=\"Precio\" dataType=\"number\" width={85} allowEditing={false} cellRender={cellRender()} >\r\n <RuleRequired message={\"Ingrese el precio\"} />\r\n </Column>\r\n <Column dataField=\"customPrice\" caption=\"Precio\" dataType=\"number\" width={100} cellRender={cellRender()}\r\n setCellValue={setCellValue.bind(null, \"customPrice\")}>\r\n <RuleRequired message={\"Ingrese el precio\"}/>\r\n </Column>\r\n <Column dataField=\"discount\" caption=\"Desc\" dataType=\"number\" width={80} cellRender={cellRender()}\r\n setCellValue={setCellValue.bind(null, \"discount\")}>\r\n <RuleRequired message={\"Ingrese el descuento\"}/>\r\n </Column>\r\n <Column dataField=\"total\" caption=\"Total\" dataType=\"number\" width={120} allowEditing={false} cellRender={cellRender()} >\r\n <RuleRequired />\r\n </Column>\r\n <Column dataField=\"family\" caption={defaultLabels.family} width={120} allowEditing={false}>\r\n <RuleRequired />\r\n </Column>\r\n <Column dataField=\"stock\" caption=\"Disponible\" dataType=\"number\" width={90} allowEditing={false}>\r\n </Column>\r\n <Column type=\"buttons\" width={50}>\r\n <ButtonGrid name=\"delete\" />\r\n </Column>\r\n <Column type={'selection'} width={50} />\r\n <Editing\r\n mode=\"cell\"\r\n allowDeleting={true}\r\n allowUpdating={true}\r\n selectTextOnEditStart={true}\r\n useIcons={true}\r\n ></Editing>\r\n <Summary>\r\n <TotalItem column=\"productId\" summaryType=\"count\" />\r\n </Summary>\r\n </DataGrid>\r\n </GroupItem>\r\n <GroupItem >\r\n <SimpleItem dataField=\"observation\" editorType=\"dxTextBox\">\r\n <Label text=\"Observacion\" />\r\n <StringLengthRule max={150} message=\"Maximo 150 caracteres\" />\r\n </SimpleItem>\r\n <SimpleItem colSpan={2} dataField=\"codeAuth\" editorType=\"dxTextBox\">\r\n <Label text=\"Código Autorización\" />\r\n <StringLengthRule max={150} message=\"Maximo 150 caracteres\" />\r\n </SimpleItem>\r\n </GroupItem>\r\n <GroupItem colSpan={2}>\r\n <Resumen data={resumenData} />\r\n </GroupItem>\r\n </Form>\r\n <div className='d-grid'> \r\n {bill.active == false && <label className=\"text-danger pa-canceled-mobile\">Registro Anulado</label>}\r\n <Button\r\n className=\"mt-10\"\r\n text={saving ? 'Guardando...' : `Convertir a factura`}\r\n type=\"default\"\r\n icon='save'\r\n visible={!isNew && isPreventa}\r\n disabled={saving}\r\n onClick={convertFactura}\r\n width={'100%'}\r\n />\r\n\r\n <Button\r\n className=\"mt-10\"\r\n text={saving ? 'Guardando...' : `Guardar ${action}`}\r\n type=\"success\"\r\n icon='save'\r\n disabled={saving}\r\n onClick={guardarFactura}\r\n width={'100%'}\r\n />\r\n </div>\r\n\r\n </ScrollView> \r\n </Popup>\r\n </div>\r\n );\r\n}\r\n\r\nexport default NuevoNew;\r\n","import React, { useRef, useState } from 'react';\r\nimport { DataGrid } from 'devextreme-react';\r\nimport {\r\n Paging,\r\n Pager,\r\n FilterRow,\r\n HeaderFilter,\r\n ColumnChooser,\r\n Column,\r\n Lookup,\r\n Editing,\r\n Button as ButtonGrid,\r\n Export\r\n} from 'devextreme-react/data-grid';\r\nimport { createStoreLocal } from '../../../utils/proxy';\r\nimport Title from '../../../components/shared/Title';\r\nimport BlockHeader from '../../../components/shared/BlockHeader';\r\nimport { store } from '../../../services/store';\r\nimport CustomButton from '../../../components/buttons/CustomButton';\r\nimport { _path } from \"../../../data/headerNavigation\";\r\nimport { formatDate, formatDateTime, resources } from '../../../data/app';\r\nimport { cellRender, dataFormatIdMobile, } from '../../../utils/common';\r\nimport urlReport from '../../../services/reportServices';\r\nimport useAuthorization from '../../../hooks/useAuthorization';\r\nimport { billDialogAction } from '../../../store/bill/billDialogReducer';\r\nimport { useDispatch } from 'react-redux';\r\n\r\nimport uri from '../../../utils/uri';\r\nimport http from '../../../utils/http';\r\nimport notify from 'devextreme/ui/notify';\r\nimport { preBillType } from '../../../data/enums';\r\nimport { confirm } from 'devextreme/ui/dialog';\r\nimport BlockHeaderState from '../../../components/shared/BlockHeaderState';\r\nimport { setGridState } from '../../../store/gridState/gridStateReducer';\r\nimport NuevoNew from './NuevoNew';\r\n\r\nconst PreBills = props => {\r\n\r\n const { clientId = 0, title='',action='', typeId=0, initStates, targetPage = '' } = props;\r\n\r\n const [ authorized ] = useAuthorization( resources.cotizacion );\r\n const [states, setStates] = useState([...initStates]);\r\n const dispatch = useDispatch();\r\n let refGrid = useRef();\r\n\r\n const printReport = ( id ) => {\r\n\r\n //const { id } = row.data;\r\n const report = urlReport();\r\n report.print(`${report.preBillTicket(id)}`);\r\n\r\n }\r\n\r\n const onRowPrepared = (e) => {\r\n if (e.rowType == 'data') {\r\n if (!e.data.active)\r\n e.rowElement.classList.add('no-activo');\r\n else{\r\n if (e.data.preBillTypeId == preBillType.facturacion)\r\n e.rowElement.classList.add('converted');\r\n \r\n }\r\n\r\n }\r\n }\r\n\r\n const onToolbarPreparing = (e) => {\r\n e.toolbarOptions.items.unshift({\r\n location: 'after',\r\n widget: 'dxTagBox',\r\n options: {\r\n width: 320,\r\n placeholder: 'Filtrar por Tipo',\r\n dataSource : e.component.columnOption('preBillTypeId').lookup.dataSource,\r\n valueExpr:'id', \r\n displayExpr:'name',\r\n value: states,\r\n showClearButton:true,\r\n multiline:false,\r\n hideSelectedItems:true,\r\n onValueChanged: (e) => {\r\n setStates(e.value);\r\n }\r\n\r\n }\r\n });\r\n }\r\n\r\n const onCellPrepared = e => {\r\n\r\n const cellsQuantity = ['payoff']\r\n\r\n if (e.rowType == 'data' && e.column.allowEditing) {\r\n if (cellsQuantity.includes(e.column.dataField))\r\n if (e.row.data.payoff)\r\n e.cellElement.classList.add('pagada');\r\n else\r\n e.cellElement.classList.add('pendiente');\r\n\r\n if (e.column.dataField == 'id')\r\n e.cellElement.classList.add('col-id-factura');\r\n if (e.column.dataField == 'reference')\r\n e.cellElement.classList.add('col-reference-factura');\r\n }\r\n\r\n }\r\n\r\n const showDialog = (id) => dispatch(billDialogAction({ open: true, id }));\r\n\r\n //const showDialog2 = (id) => dispatch(billDialogAction2({ open: true, id }));\r\n\r\n const onSave = (e) => refGrid.current.instance.refresh(); \r\n\r\n const changePreBill = ({ title, action, id }) => {\r\n\r\n let result = confirm(\"<i>Esta seguro de \"+title+\"?</i>\", title);\r\n result.then((dialogResult) => {\r\n\r\n if (dialogResult){\r\n \r\n http(`${uri.prebills.base}/${id}/${action}`).asGet().then(resp => {\r\n \r\n notify(`Acción ${title} realizada correctamente`);\r\n refGrid.current.instance.refresh(); \r\n \r\n }).catch(err => {\r\n \r\n notify(err, 'error', 5000);\r\n });\r\n \r\n }\r\n });\r\n\r\n }\r\n\r\n const revert = ({ row }) => {\r\n\r\n const { id } = row.data;\r\n changePreBill({ title: 'Revertir a cotización', action: 'revert', id });\r\n\r\n } \r\n\r\n const convert = ({ row }) => {\r\n\r\n const { id } = row.data;\r\n changePreBill({ title: 'Convertir a preventa', action: 'convert', id }); \r\n\r\n }\r\n\r\n const onRowClick = e => {\r\n \r\n const { id, active } = e.data;\r\n\r\n dispatch(setGridState({\r\n id: id, \r\n data: e.data,\r\n disabledView: false, \r\n disabledPrint: false, \r\n disabledPayment: true, \r\n disabledViewReceipts: true, \r\n disabledCancel: !active \r\n }));\r\n\r\n }\r\n\r\n const deleteRow = (id) => {\r\n refGrid.current.instance.deleteRow(id)\r\n }\r\n\r\n\r\n let extraParameter =[['preBillTypeId', states]];\r\n\r\n if (clientId > 0)\r\n extraParameter.push(['clientId', clientId]); \r\n\r\n return authorized(\r\n <div className=\"container mobile\">\r\n <Title title={title} />\r\n <BlockHeader title={title}>\r\n <CustomButton\r\n type=\"default\" \r\n icon='menu'\r\n onClick={() => props.history.push({ pathname: '/app/mobile/' + targetPage })\r\n }\r\n /> \r\n <CustomButton\r\n type=\"default\"\r\n text={`Nueva ${action}`}\r\n icon='plus'\r\n onClick={() => showDialog(0)}\r\n /> \r\n \r\n </BlockHeader> \r\n <BlockHeaderState icon=\"icon-file-text\" \r\n onClickView={(id) => showDialog(id)}\r\n onClickPrint={id => printReport(id)} \r\n onClickCancel={deleteRow}\r\n onRefresh={() => refGrid.current.instance.refresh()} \r\n onClickAdd={() => showDialog(0)}\r\n visibleView={true}\r\n visiblePrint={true}\r\n visibleCancel={true}\r\n visibleRefresh={true}\r\n visibleAdd={true}\r\n > \r\n </BlockHeaderState> \r\n <NuevoNew onSave={onSave} { ...props } />\r\n <DataGrid id=\"gridContainer\"\r\n ref={refGrid}\r\n selection={{ mode: 'single' }}\r\n dataSource={store({ uri: uri.prebills, remoteOperations: true, extraParameter })}\r\n showBorders={true}\r\n showRowLines={true}\r\n allowColumnResizing={true}\r\n allowColumnReordering={true}\r\n hoverStateEnabled={true}\r\n onRowPrepared={onRowPrepared}\r\n onToolbarPreparing={onToolbarPreparing}\r\n onCellPrepared={onCellPrepared}\r\n onRowClick={onRowClick} \r\n remoteOperations={{\r\n paging: true,\r\n filtering: true\r\n }}\r\n >\r\n <Paging defaultPageSize={20} />\r\n <Pager\r\n showInfo={true}\r\n showPageSizeSelector={true}\r\n allowedPageSizes={[10, 20, 50]}\r\n />\r\n <Export enabled={false} fileName={title} />\r\n <FilterRow visible={true} />\r\n <HeaderFilter visible={true} />\r\n <ColumnChooser enabled={true} />\r\n <Column type=\"buttons\" width={40} >\r\n <ButtonGrid visible={typeId == preBillType.cotizacion} name=\"convert\" icon=\"refresh\" onClick={convert} hint={'Convertir a preventa'}/>\r\n <ButtonGrid visible={typeId == preBillType.preventa} name=\"revert\" icon=\"revert\" onClick={revert} hint={'Revertir a cotización'}/>\r\n </Column>\r\n <Column dataField=\"id\" caption=\"Id\" width={55} cellRender={dataFormatIdMobile} />\r\n <Column dataField=\"nombre\" caption=\"Cliente\" visible={clientId == 0} allowHeaderFiltering={false} minWidth={180} />\r\n <Column dataField=\"total\" width={100} cellRender={cellRender()} />\r\n <Column dataField=\"billId\" caption=\"Factura\" width={70} cellRender={dataFormatIdMobile} />\r\n <Column dataField=\"date\" caption=\"Fecha\" dataType='date' format={formatDate} width={100} />\r\n <Column dataField=\"paymentTypeId\" width={100} caption=\"Tipo pago\">\r\n <Lookup disabled={true} dataSource={createStoreLocal({ name: 'billPaymentType' })} valueExpr=\"id\" displayExpr=\"name\" />\r\n </Column>\r\n <Column dataField=\"preBillTypeId\" width={110} caption=\"Documento\">\r\n <Lookup disabled={true} dataSource={createStoreLocal({ name: 'preBillType' })} valueExpr=\"id\" displayExpr=\"name\" />\r\n </Column>\r\n <Column dataField=\"active\" width={100} caption=\"Activa\" />\r\n <Column dataField=\"createBy\" caption='Creado por' width={100} />\r\n <Column dataField=\"createAt\" caption='Creado el' dataType='date' format={formatDateTime} width={180} />\r\n <Column type=\"buttons\" width={90} visible={true}>\r\n <ButtonGrid name=\"print\" icon=\"print\" onClick={e => printReport(e.row.data.id)}/>\r\n <ButtonGrid name=\"edit\" icon=\"find\" onClick={e => showDialog(e.row.data.id)}/>\r\n <ButtonGrid name=\"delete\" />\r\n </Column>\r\n <Editing\r\n mode=\"popup\"\r\n allowDeleting={true}\r\n allowUpdating={true}\r\n useIcons={true}\r\n ></Editing>\r\n </DataGrid>\r\n </div>\r\n );\r\n}\r\n\r\nexport default PreBills;\r\n","import React from 'react';\r\nimport PreBills from './PreBills';\r\nimport { preBillType } from '../../../data/enums';\r\n\r\nconst MobileCotizaciones = (props) => {\r\n\r\n const title = \"Cotizaciones\";\r\n const action = \"Cotización\";\r\n const typeId = preBillType.cotizacion;\r\n const initStates = [1];\r\n\r\n return (\r\n <PreBills title={title} action={action} typeId={typeId} initStates={initStates} targetPage='pre-ventas' {...props}/>\r\n );\r\n}\r\n\r\nexport default MobileCotizaciones;\r\n","import React from 'react';\r\nimport PreBills from './PreBills';\r\nimport { preBillType } from '../../../data/enums';\r\n\r\nconst MobilePreVentas = (props) => {\r\n\r\n const title = \"PreVentas\";\r\n const action = \"PreVenta\";\r\n const typeId = preBillType.preventa;\r\n const initStates = [2,3];\r\n \r\n return (\r\n <PreBills title={title} action={action} typeId={typeId} initStates={initStates} targetPage='cotizaciones' {...props}/>\r\n );\r\n\r\n}\r\n\r\nexport default MobilePreVentas;\r\n","import React, { useRef } from 'react';\r\nimport { DataGrid } from 'devextreme-react';\r\nimport { Item } from 'devextreme-react/form';\r\nimport { \r\n Paging, \r\n Pager, \r\n FilterRow, \r\n HeaderFilter,\r\n Column, \r\n Editing,\r\n Popup, \r\n Form, \r\n RequiredRule,\r\n StringLengthRule,\r\n Lookup} from 'devextreme-react/data-grid';\r\n\r\nimport uri from '../../utils/uri';\r\nimport toCapital from '../../utils/common';\r\nimport { store } from '../../services/store';\r\nimport useAuthorization from '../../hooks/useAuthorization';\r\nimport { resources } from '../../data/app';\r\nimport { defaultLabels } from '../../data/defaultObjects';\r\nimport BlockHeader from '../../components/shared/BlockHeader';\r\nimport Title from '../../components/shared/Title';\r\nimport { createStoreLocal } from '../../utils/proxy';\r\n\r\nfunction ComisionFamilies(props) {\r\n\r\n const [ authorized ] = useAuthorization( resources.configurarComisiones );\r\n\r\n let refGrid = useRef()\r\n\r\n const onToolbarPreparing = (e) => { \r\n e.toolbarOptions.items.unshift({\r\n location: 'before',\r\n widget: 'dxButton',\r\n options: {\r\n text: 'Crear nuevo',\r\n icon:'plus',\r\n type:'default',\r\n stylingMode:\"outlined\",\r\n onClick: () => refGrid.current.instance.addRow()\r\n }\r\n });\r\n } \r\n\r\n const caption = \"Comisiones por categoría\";\r\n \r\n return authorized(\r\n <div className=\"container small\">\r\n <Title title={caption}/>\r\n <BlockHeader title={toCapital(caption)}/> \r\n <DataGrid id=\"gridContainer\"\r\n ref={refGrid}\r\n selection={{ mode: 'single' }}\r\n dataSource={store({uri : uri.comissions })}\r\n showBorders={true}\r\n showRowLines={true}\r\n allowColumnResizing={true}\r\n allowColumnReordering={true}\r\n onToolbarPreparing={onToolbarPreparing}\r\n >\r\n <Paging defaultPageSize={20} />\r\n <Pager\r\n showPageSizeSelector={true}\r\n allowedPageSizes={[10, 20, 50]}\r\n />\r\n <FilterRow visible={true} />\r\n <HeaderFilter visible={true} />\r\n <Column dataField=\"familyId\" caption={defaultLabels.family}>\r\n <Lookup disabled={true} dataSource={createStoreLocal({name:'family'})} valueExpr=\"id\" displayExpr=\"name\" />\r\n </Column> \r\n <Column dataField=\"comission\" caption=\"Comisión\" width={100} allowHeaderFiltering={false} allowFiltering={false} />\r\n <Column dataField=\"d46a59\" caption=\"De 46 a 59\" width={100} allowHeaderFiltering={false} allowFiltering={false} />\r\n <Column dataField=\"d60aMas\" caption=\"De 60 a Más\" width={100} allowHeaderFiltering={false} allowFiltering={false}/>\r\n <Editing\r\n mode=\"popup\"\r\n allowUpdating={true}\r\n useIcons={true}\r\n >\r\n <Popup title={toCapital(caption)} showTitle={true} width={450} height={350}>\r\n \r\n </Popup>\r\n <Form>\r\n <Item dataField=\"familyId\" colSpan={2} >\r\n <RequiredRule message=\"El campo es requerido\"/>\r\n </Item>\r\n <Item dataField=\"comission\" colSpan={2} >\r\n <RequiredRule message=\"El campo es requerido\"/>\r\n </Item>\r\n <Item dataField=\"d46a59\" colSpan={2} >\r\n <RequiredRule message=\"El campo es requerido\"/>\r\n </Item>\r\n <Item dataField=\"d60aMas\" colSpan={2} >\r\n <RequiredRule message=\"El campo es requerido\"/>\r\n </Item>\r\n \r\n </Form>\r\n </Editing>\r\n </DataGrid>\r\n </div>\r\n )\r\n\r\n};\r\n\r\nexport default ComisionFamilies; //connect(mapStateToProps, mapDispatchToProps)(GridSprintStart);","import React, { useEffect, useState } from 'react';\r\nimport { DataGrid, Box, DateBox, SelectBox, Button } from 'devextreme-react';\r\nimport { Item } from \"devextreme-react/box\";\r\nimport {\r\n Paging,\r\n Pager, \r\n Column, \r\n Export,\r\n GroupPanel,\r\n SearchPanel,\r\n Grouping,\r\n Summary,\r\n TotalItem,\r\n ColumnChooser,\r\n FilterRow,\r\n} from 'devextreme-react/data-grid';\r\nimport Title from '../../components/shared/Title';\r\nimport BlockHeader from '../../components/shared/BlockHeader';\r\n\r\nimport { _path } from \"../../data/headerNavigation\";\r\nimport { formatDate, formatDateTime } from '../../data/app';\r\nimport { cellDataAsBold, cellRender, dataFormatId, formatToMoneyNumber, onCellPreparedSales, } from '../../utils/common';\r\n\r\nimport uri from '../../utils/uri';\r\nimport http from '../../utils/http';\r\nimport { dateByReport } from '../../data/defaultObjects';\r\nimport { userService } from '../../services/user.service';\r\n\r\nconst Recibos = (props) => {\r\n\r\n const user = userService.getUser();\r\n\r\n const [ areas, setAreas ] = useState([]);\r\n const [ areaId, setAreaId ] = useState(user.areaId);\r\n const [ productId, setProductId ] = useState(null);\r\n const [ users, setUsers ] = useState([]);\r\n const [ username, setUsername ] = useState([]);\r\n const [ dateFrom, setDateFrom ] = useState(dateByReport.from);\r\n const [ dateTo, setDateTo ] = useState(dateByReport.to);\r\n const [ data, setData ] = useState(undefined);\r\n const [ loading, setLoading ] = useState(false); \r\n\r\n const changeUser = e => setUsername(e.value); \r\n\r\n const changeDateFrom = e => setDateFrom(e.value);\r\n\r\n const changeDateTo = e => setDateTo(e.value); \r\n\r\n useEffect(() => {\r\n http(uri.areas.get).asGet().then(resp => setAreas(resp));\r\n http(uri.users.get).asGet().then(resp => setUsers(resp));\r\n }, [0]);\r\n\r\n const loadReport = () => {\r\n if(areaId > 0 && dateFrom && dateTo){\r\n setLoading(true);\r\n http('reports/receipts').asPost({areaId, productId, from : dateFrom, to: dateTo}).then(resp => {\r\n setData(resp);\r\n setLoading(false);\r\n }); \r\n }\r\n };\r\n\r\n const toMoney = data => formatToMoneyNumber(data.value); \r\n\r\n const title = 'Reporte de Recibos';\r\n\r\n return (\r\n <div className=\"container\">\r\n <Title title={title} />\r\n <BlockHeader title={title} showFavorite={true} {...props}>\r\n \r\n </BlockHeader>\r\n <Box direction=\"row\" width=\"100%\" height={75}> \r\n <Item ratio={1}>\r\n <div className=\"ml-10\">\r\n <label>Desde:</label>\r\n <DateBox type=\"date\" \r\n value={dateFrom}\r\n displayFormat={formatDate} \r\n openOnFieldClick={true} \r\n onValueChanged={changeDateFrom}/>\r\n </div>\r\n </Item>\r\n <Item ratio={1}>\r\n <div className=\"ml-10\">\r\n <label>Hasta:</label>\r\n <DateBox type=\"date\" \r\n value={dateTo}\r\n displayFormat={formatDate} \r\n openOnFieldClick={true} \r\n onValueChanged={changeDateTo}/>\r\n </div>\r\n </Item> \r\n <Item ratio={1}>\r\n <div className=\"ml-10\">\r\n <label>Usuario:</label>\r\n <SelectBox items={users}\r\n placeholder=\"Selecciona\"\r\n showClearButton={true} valueExpr=\"username\" displayExpr=\"username\" \r\n value={username}\r\n onValueChanged={changeUser} \r\n />\r\n </div>\r\n </Item> \r\n \r\n <Item ratio={1}>\r\n <div style={{ paddingTop : '19px' }}>\r\n <Button\r\n width={120}\r\n text={`${loading ? 'Buscando...' : 'Buscar'}`}\r\n type=\"default\"\r\n icon=\"search\"\r\n stylingMode=\"contained\"\r\n className=\"m-1\"\r\n disabled={loading}\r\n onClick={loadReport}\r\n />\r\n </div>\r\n </Item>\r\n </Box>\r\n <Box direction=\"row\" width=\"100%\" height={75}>\r\n\r\n <Item ratio={1}> \r\n <DataGrid\r\n id=\"gridContainer\"\r\n keyExpr=\"receipId\"\r\n selection={{ mode: 'single' }}\r\n dataSource={data}\r\n showBorders={true}\r\n allowColumnResizing={true}\r\n showRowLines={true}\r\n hoverStateEnabled={true}\r\n onCellPrepared={onCellPreparedSales}\r\n > \r\n <GroupPanel visible={true} />\r\n <SearchPanel visible={true} width={200}/>\r\n <Grouping autoExpandAll={true} /> \r\n <Paging defaultPageSize={10} />\r\n <Pager\r\n showInfo={true}\r\n showPageSizeSelector={true}\r\n allowedPageSizes={[10, 20, 50,100,500]}\r\n />\r\n <Export enabled={true} fileName={title} allowExportSelectedData={true} /> \r\n <ColumnChooser enabled={true} />\r\n <FilterRow visible={true} />\r\n <Column dataField=\"receipId\" caption=\"Id\" width={100} cellRender={dataFormatId}/> \r\n <Column dataField=\"billId\" caption=\"# Factura\" width={80} cellRender={dataFormatId}/> \r\n <Column dataField=\"reference\" caption=\"# Recibo\" width={80} cellRender={cellDataAsBold}/> \r\n <Column dataField=\"fullName\" caption=\"Cliente\" minWidth={200}/> \r\n <Column dataField=\"amount\" caption=\"Abonado\" cellRender={cellRender()} width={100}/> \r\n <Column dataField=\"pending\" caption=\"Pendiente\" cellRender={cellRender()} width={100}/> \r\n <Column dataField=\"retention\" caption=\"Retención\" cellRender={cellRender()} width={100}/> \r\n <Column dataField=\"paymentMethod\" caption=\"Forma Pago\" width={110}/> \r\n <Column dataField=\"createAt\" dataType=\"date\" caption=\"Fecha\" format={formatDateTime} width={150}/> \r\n <Column dataField=\"observation\" caption=\"Observación\" /> \r\n <Column dataField=\"createBy\" caption=\"vendedor\" /> \r\n <Summary>\r\n\r\n <TotalItem column=\"billId\" summaryType=\"sum\" customizeText={() => 'Totales :'}/> \r\n <TotalItem column=\"amount\" summaryType=\"sum\" customizeText={toMoney}/>\r\n <TotalItem column=\"pending\" summaryType=\"sum\" customizeText={toMoney} /> \r\n\r\n </Summary> \r\n </DataGrid>\r\n </Item> \r\n </Box>\r\n </div>\r\n );\r\n}\r\n\r\n\r\n\r\nexport default Recibos;\r\n","import React, { useEffect, useState, useRef } from 'react';\r\nimport { Popup } from 'devextreme-react/popup';\r\nimport Form, { SimpleItem, GroupItem, Label, RequiredRule, StringLengthRule, EmptyItem} from 'devextreme-react/form';\r\nimport { useDispatch, useSelector } from 'react-redux'\r\nimport { closeDialogRecibo } from '../../store/dialogRecibo/dialogReciboReducer';\r\nimport DataSource from \"devextreme/data/data_source\";\r\nimport { createStore, createStoreLocal } from '../../utils/proxy';\r\nimport { dataAccess, editorOptionsSelect, formatDate, resources } from '../../data/app';\r\nimport { DataGrid, Button } from 'devextreme-react';\r\nimport { Column, Editing, Lookup, RequiredRule as RuleRequired, Button as ButtonGrid } from 'devextreme-react/data-grid';\r\nimport uri from '../../utils/uri';\r\nimport toCapital, { cellRender } from '../../utils/common';\r\nimport http from '../../utils/http';\r\nimport notify from 'devextreme/ui/notify';\r\nimport { billDefault, receiptDefault } from '../../data/defaultObjects';\r\nimport BillByClient from './BillByClient';\r\nimport useAuthorization from '../../hooks/useAuthorization';\r\n\r\nconst MobilNuevo = (props) => {\r\n\r\n const [ authorized, can ] = useAuthorization( resources.crearRecibo );\r\n\r\n const { data, onSave, close } = props;\r\n const { id, billId, open, client, balance} = data;\r\n \r\n const [ saving, setSaving ] = useState(false);\r\n const [ receipt, setReceipt ] = useState({...receiptDefault});\r\n\r\n const refForm = useRef();\r\n\r\n const closeDialog = ( load ) => { \r\n\r\n close();\r\n if (load) {\r\n onSave(); \r\n } \r\n }\r\n\r\n const onHiding = ({ load }) => { \r\n closeDialog(load); \r\n } \r\n\r\n useEffect(() => { \r\n\r\n setReceipt({...receipt, id, billId, client, balance, amount : 0, observation : ''});\r\n\r\n if(id > 0)\r\n http(uri.receivables.getById(id)).asGet().then(resp => {\r\n\r\n setReceipt({...resp});\r\n closeDialog(true);\r\n\r\n });\r\n\r\n }, [id, billId]);\r\n\r\n const guardarRecibo = (e) => {\r\n\r\n let result = refForm.current.instance.validate();\r\n\r\n if (result.isValid) {\r\n\r\n setSaving(true); \r\n\r\n http(uri.receivables.insert).asPost(receipt).then(resp => {\r\n setSaving(false);\r\n notify(`Recibo ${resp.id} registrado correctamente`);\r\n closeDialog(true);\r\n }).catch(err => {\r\n setSaving(false);\r\n notify(err, 'error', 5000);\r\n });\r\n\r\n }\r\n\r\n }\r\n\r\n const onValueChanged = (e) => {\r\n setReceipt({...receipt, amount : e.value ? balance : 0 }); \r\n }\r\n\r\n return (\r\n <div>\r\n <Popup\r\n fullScreen={true}\r\n title={id > 0 ? `Ver recibo` : `Nuevo recibo`}\r\n onHiding={onHiding}\r\n visible={open} \r\n className=\"bg-fbfbfb\" \r\n showCloseButton={true} \r\n >\r\n {authorized(<><Form formData={receipt} ref={refForm}>\r\n <GroupItem colCount={4}>\r\n <SimpleItem dataField=\"billId\" colSpan={2} \r\n editorOptions={{\r\n disabled : true\r\n }} >\r\n <Label text=\"Factura#\" />\r\n </SimpleItem>\r\n <EmptyItem colSpan={2} />\r\n <SimpleItem dataField=\"client\" colSpan={4} \r\n editorOptions={{\r\n disabled : true\r\n }} >\r\n <Label text=\"Cliente\" />\r\n </SimpleItem>\r\n <SimpleItem dataField=\"balance\" colSpan={2} editorType=\"dxNumberBox\"\r\n editorOptions={{\r\n readOnly : true,\r\n format: \"#,##0.00\"\r\n }} >\r\n <Label text=\"Pendiente\" />\r\n </SimpleItem>\r\n <SimpleItem dataField=\"amount\" colSpan={2} editorType=\"dxNumberBox\" editorOptions={{\r\n format: \"#,##0.00\"\r\n }}>\r\n <Label text=\"Monto pagado\" />\r\n <RequiredRule message=\"El monto es requerido\" />\r\n </SimpleItem>\r\n <SimpleItem dataField=\"referencePhysical\" colSpan={2} editorType=\"dxTextBox\"\r\n editorOptions={{ showClearButton: true }} >\r\n <Label text=\"# Recibo\" />\r\n <RequiredRule message=\"Seleccione el tipo\" />\r\n </SimpleItem>\r\n <SimpleItem dataField=\"paymentMethodId\" colSpan={2} editorType=\"dxSelectBox\"\r\n editorOptions={{ \r\n dataSource: createStoreLocal({ name: 'billPaymentMethod' }),\r\n ...editorOptionsSelect,\r\n searchEnabled: false,\r\n //onValueChanged: e => setBill(_bill =>({ ..._bill, billPaymentTypeId: e.value, }))\r\n }} >\r\n <Label text=\"Forma pago\" />\r\n </SimpleItem>\r\n <SimpleItem dataField=\"bankId\" colSpan={2} editorType=\"dxSelectBox\"\r\n editorOptions={{ \r\n dataSource: createStoreLocal({ name: 'bank' }),\r\n ...editorOptionsSelect,\r\n searchEnabled: false,\r\n //onValueChanged: e => setBill(_bill =>({ ..._bill, bankId: e.value, }))\r\n }} >\r\n <Label text=\"Banco\" />\r\n </SimpleItem>\r\n <SimpleItem dataField=\"reference\" colSpan={2} editorType=\"dxTextBox\"\r\n editorOptions={{ showClearButton: true }} >\r\n <Label text=\"Referencia\" />\r\n </SimpleItem>\r\n <SimpleItem dataField=\"observation\" colSpan={4} editorType=\"dxTextArea\">\r\n <Label text=\"Observacion\" />\r\n <RequiredRule message=\"Ingrese una observacion\" />\r\n <StringLengthRule max={150} message=\"Maximo 150 caracteres\" />\r\n </SimpleItem>\r\n </GroupItem> \r\n </Form> \r\n <br/> \r\n <Button\r\n className=\"mt-10\"\r\n text={saving ? 'Guardando...' : `Guardar recibo`}\r\n type=\"success\"\r\n icon='save'\r\n disabled={saving}\r\n onClick={guardarRecibo}\r\n /></>)} \r\n </Popup>\r\n </div>\r\n );\r\n}\r\n\r\nexport default MobilNuevo;\r\n","import React, { useRef } from 'react';\r\nimport { DataGrid } from 'devextreme-react';\r\nimport { Column, Editing, Pager, Paging, Summary, TotalItem } from 'devextreme-react/data-grid';\r\nimport BlockHeader from '../../../components/shared/BlockHeader';\r\nimport { onCellPreparedReceipt } from '../../../components/bill/CellPrepared';\r\nimport { cellRender, dataFormatId, formatId, formatToMoney, toMoney } from '../../../utils/common';\r\nimport { store } from '../../../services/store';\r\nimport uri from '../../../utils/uri';\r\nimport { formatDateTime } from '../../../data/app';\r\nimport urlReport from '../../../services/reportServices';\r\n\r\nconst MobileReceiptByBillId = (props) => {\r\n\r\n const { onSave } = props;\r\n const refGrid = useRef();\r\n\r\n const onRowRemoved = (e) => {\r\n onSave();\r\n }\r\n\r\n const addMenuItems =(e) => {\r\n \r\n if (e.target == \"content\") {\r\n \r\n // e.items can be undefined\r\n if (!e.items) e.items = [];\r\n \r\n // Add a custom menu item\r\n if(e.rowIndex >= 0)\r\n e.items.push({\r\n\r\n text: `Imprimir recibo`,\r\n icon : 'print',\r\n onItemClick: () => {\r\n const report = urlReport();\r\n report.print(`${report.receiptTicket(e.row.data.id)}`);\r\n }\r\n \r\n });\r\n \r\n }\r\n }\r\n\r\n const { id, reference, cliente } = props;\r\n const title = `Recibos de la factura ${formatId(reference)}`;\r\n const titleCliente = `Cliente: ${cliente}`;\r\n \r\n return (<>\r\n <BlockHeader title={title} />\r\n <BlockHeader title={titleCliente} />\r\n <DataGrid\r\n id=\"gridReceipt\"\r\n ref={refGrid}\r\n selection={{ mode: 'single' }}\r\n dataSource={store({ uri: { get : uri.receivables.byBill(id), remove : uri.receivables.remove } })}\r\n showBorders={true}\r\n showRowLines={true}\r\n allowColumnResizing={true}\r\n allowColumnReordering={true}\r\n rowAlternationEnabled={true} \r\n onCellPrepared={onCellPreparedReceipt} \r\n onRowRemoved={onRowRemoved} \r\n columnHidingEnabled={true}\r\n >\r\n <Paging defaultPageSize={20} />\r\n <Pager\r\n showInfo={true}\r\n showPageSizeSelector={true}\r\n allowedPageSizes={[10, 20, 50]}\r\n />\r\n \r\n <Column dataField=\"referencePhysical\" caption=\"Recibo\" width={70} cellRender={dataFormatId} />\r\n <Column dataField=\"amount\" caption=\"Pagado\" width={70} cellRender={toMoney} />\r\n <Column dataField=\"balance\" caption=\"Pendiente\" width={80} cellRender={toMoney} />\r\n <Column dataField=\"observation\" caption=\"Observacion\" />\r\n <Column dataField=\"createBy\" caption='Creado por' width={100} />\r\n <Column dataField=\"createAt\" caption=\"Creado el\" dataType='date' format={formatDateTime} width={140} />\r\n <Summary> \r\n <TotalItem\r\n column=\"amount\"\r\n summaryType=\"sum\" \r\n customizeText={data => `${formatToMoney(data.value)}`} />\r\n </Summary> \r\n <Editing\r\n mode=\"popup\" \r\n allowDeleting={true}\r\n useIcons={true}\r\n ></Editing> \r\n </DataGrid>\r\n </>);\r\n \r\n}\r\n\r\nexport default MobileReceiptByBillId;\r\n","import React, { useEffect, useState, useRef, useCallback } from 'react';\r\nimport { Popup } from 'devextreme-react/popup';\r\nimport Form, { SimpleItem, GroupItem, Label, RequiredRule, StringLengthRule } from 'devextreme-react/form';\r\nimport { useDispatch, useSelector } from 'react-redux'\r\nimport { billDialogAction } from '../../../store/bill/billDialogReducer';\r\nimport { createStoreLocal } from '../../../utils/proxy';\r\nimport { editorOptionsSelect, formatDate } from '../../../data/app';\r\nimport { DataGrid, Button, TextBox, ScrollView } from 'devextreme-react';\r\nimport { Column, Editing, Lookup, RequiredRule as RuleRequired, Button as ButtonGrid, Summary, TotalItem } from 'devextreme-react/data-grid';\r\nimport { cellRender, formatId, toMoney } from '../../../utils/common';\r\nimport http from '../../../utils/http';\r\nimport notify from 'devextreme/ui/notify';\r\nimport { billDefault, defaultLabels } from '../../../data/defaultObjects';\r\nimport { paymentType } from '../../../data/enums';\r\nimport ProductDDBComponent from '../../../components/dropdown/ProductDDBComponent';\r\nimport useProducts from '../../../hooks/useProducts';\r\nimport uri from '../../../utils/uri';\r\nimport moment from 'moment';\r\nimport DataSource from 'devextreme/data/data_source';\r\nimport { confirm } from 'devextreme/ui/dialog';\r\n\r\nconst Nuevo = props => {\r\n\r\n const { billDialog: { open, id, clientId }, user, } = useSelector(store => store);\r\n const [resumenData, setResumenData] = useState([]);\r\n const billDefaultCustom = { ...billDefault, clientId: clientId };\r\n\r\n const [ reload, setReload ] = useState(0);\r\n\r\n const { products, setProducts } = useProducts({ areaId: user.areaId, exists: true, reload });\r\n const [bill, setBill] = useState({ ...billDefaultCustom });\r\n const [saving, setSaving] = useState(false);\r\n const [lots, setLots] = useState([]); \r\n const [currentCreditDays, setCurrentCreditDays] = useState(0);\r\n\r\n let refForm = useRef();\r\n let refGrid = useRef();\r\n let textBoxRef = useRef();\r\n\r\n useEffect(() => {\r\n \r\n // if (appInfo.rate == 0) {\r\n // dispatch(billDialogAction({ id: 0, clientId: 0, open: false }));\r\n // notify('Debe ingresar la tasa de cambio del dia para poder facturar', 'warning', 5000)\r\n // props.history.push('/app/tasa-de-cambio');\r\n // }\r\n\r\n if (id > 0) {\r\n\r\n http(uri.products.getByArea(user.areaId)).asGet().then(data => {\r\n setProducts(data);\r\n\r\n http(uri.bills.getById(id)).asGet().then(resp => {\r\n\r\n resp.billDetails.forEach(detail => {\r\n\r\n let info = products.find(x => x.id == detail.productId);\r\n\r\n detail['presentation'] = info.presentation;\r\n detail['um'] = info.um;\r\n detail['family'] = info.family;\r\n\r\n });\r\n\r\n setBill(_bill => ({ ..._bill, ...resp }));\r\n setResumenData([...resp.billDetails]);\r\n if (open) textBoxRef.current.instance.focus();\r\n })\r\n\r\n });\r\n\r\n } else {\r\n\r\n setBill({ ...billDefaultCustom, billDetails: [] });\r\n setResumenData([]);\r\n if (open) textBoxRef.current.instance.focus();\r\n\r\n }\r\n \r\n \r\n }, [open]);\r\n\r\n const alertUser = (e) => {\r\n e.preventDefault();\r\n e.returnValue = \"\";\r\n alert('saliendo');\r\n };\r\n\r\n\r\n useEffect(() => {\r\n if (open) textBoxRef.current.instance.focus();\r\n }, [open]);\r\n\r\n const dispatch = useDispatch();\r\n\r\n const onKeyDown = (e) => {\r\n \r\n if(e?.event?.key == 'Enter'){\r\n\r\n const code = e.event.target.value;\r\n\r\n let info = products.find(x => x.internalCode == code);\r\n let newData = {};\r\n\r\n newData['presentation'] = info.presentation;\r\n newData['um'] = info.um;\r\n newData['family'] = info.family;\r\n newData['price'] = info.price;\r\n newData['customPrice'] = info.price;\r\n newData['cost'] = info.cost;\r\n newData['quantity'] = 1;\r\n newData['total'] = info.price; \r\n newData['discount'] = 0;\r\n newData['productId'] = info.id; \r\n\r\n const newDetail = [...bill.billDetails, newData ];\r\n\r\n setBill(_bill => ({ ..._bill, billDetails: [...newDetail] }));\r\n setResumenData([...newDetail]); \r\n \r\n // textBoxRef.current.instance.option('value','');\r\n // textBoxRef.current.instance.focus();\r\n\r\n }\r\n\r\n }\r\n\r\n const closeDialog = (load) => {\r\n\r\n refForm.current.instance.resetValues();\r\n refGrid.current.instance.cancelEditData();\r\n\r\n dispatch(billDialogAction({ id: 0, clientId: 0, open: false }));\r\n if (load) {\r\n let { onSave } = props;\r\n onSave();\r\n }\r\n }\r\n\r\n const onHiding = ({ load }) => {\r\n closeDialog(load);\r\n }\r\n\r\n const guardarFactura = (e) => {\r\n\r\n refGrid.current.instance.saveEditData();\r\n let result = refGrid.current.instance.hasEditData();\r\n\r\n if (!result) {\r\n\r\n let result = refForm.current.instance.validate();\r\n\r\n if (result.isValid) {\r\n\r\n let result = confirm(\"<i>Esta seguro de guardar la factura?</i>\", \"Confirmar\");\r\n\r\n result.then((dialogResult) => {\r\n if (dialogResult) {\r\n \r\n setSaving(true);\r\n let data = { ...bill };\r\n \r\n http(uri.bills.insert).asPost(data).then(resp => {\r\n setSaving(false);\r\n notify(`Factura registrada correctamente`);\r\n setReload(Math.random());\r\n closeDialog(true); \r\n }).catch(err => {\r\n setSaving(false);\r\n notify(err, 'error', 5000);\r\n });\r\n\r\n }\r\n });\r\n\r\n }\r\n }\r\n\r\n }\r\n\r\n const setCellValue = (prop, newData, value, currentRowData) => {\r\n\r\n newData[prop] = value || 0;\r\n if (prop == 'productId' && value) {\r\n\r\n let info = products.find(x => x.id == value);\r\n\r\n newData['presentation'] = info.presentation;\r\n newData['um'] = info.um;\r\n newData['family'] = info.family;\r\n newData['price'] = info.price;\r\n newData['customPrice'] = info.price;\r\n newData['cost'] = info.cost;\r\n newData['discount'] = 0;\r\n !currentRowData['quantity'] && (newData['quantity'] = 1);\r\n !currentRowData['total'] && (newData['total'] = info.price);\r\n }\r\n\r\n if (prop == 'quantity' && (+value) >= 0) {\r\n newData['total'] = currentRowData['price'] * value;\r\n }\r\n\r\n if (prop == 'customPrice' && (+value) >= 0) {\r\n newData['total'] = currentRowData['quantity'] * value;\r\n }\r\n\r\n if (prop == 'discount' && (+value) >= 0) {\r\n newData['total'] = (currentRowData['quantity'] * currentRowData['customPrice']) - value;\r\n }\r\n\r\n }\r\n\r\n const onCellPrepared = e => {\r\n\r\n const cellsQuantity = ['quantity', 'quantityRequest']\r\n\r\n if (e.rowType == 'data' && e.column.allowEditing) {\r\n if (cellsQuantity.includes(e.column.dataField))\r\n e.cellElement.classList.add('quantity-text');\r\n if (e.column.dataField == 'customPrice')\r\n e.cellElement.classList.add('customPrice-text');\r\n\r\n }\r\n\r\n }\r\n\r\n const onRowInserted = e => {\r\n setResumenData([...bill.billDetails])\r\n }\r\n\r\n const isNew = id == 0;\r\n\r\n const init = \"\";\r\n\r\n useEffect(() => {\r\n\r\n http('catalogos/lots').asGet().then(_lots => {\r\n const lotsMap = _lots.map(x => ({ ...x, name: `${x.lote}-${moment(x.expireDate).format('DD-YYYY')}` }));\r\n setLots(lotsMap);\r\n });\r\n \r\n },[reload]);\r\n\r\n const paymentTypeIdChanged = (e) => {\r\n\r\n setBill(_bill => ({ \r\n ..._bill, paymentTypeId: e.value, \r\n paymentMethodId: e.value == paymentType.credito ? null : '', \r\n bankId: e.value == paymentType.credito ? null : '', \r\n reference:'', \r\n creditDays: e.value == paymentType.contado ? 0 : currentCreditDays }))\r\n }\r\n\r\n const clientIdChanged = (e) => {\r\n\r\n const client = e.component.option('items')\r\n .find(x => x.id == e.value);\r\n\r\n let creditDays = 0;\r\n \r\n if(client)\r\n creditDays = client.creditDays; \r\n \r\n setCurrentCreditDays(creditDays);\r\n setBill(_bill => ({ ..._bill, clientId: e.value, creditDays: creditDays }));\r\n \r\n }\r\n\r\n \r\n const dataSource = useCallback(() => new DataSource({\r\n load: (loadOptions) => {\r\n\r\n let params = {};\r\n params.skip = loadOptions.skip || 0;\r\n params.take = loadOptions.take || 10;\r\n\r\n if(loadOptions.searchValue)\r\n params.name = loadOptions.searchValue ;\r\n\r\n return http(uri.clients.asCatalog)\r\n .asGet(params).then(x => x.items);\r\n \r\n },\r\n byKey: id => {\r\n\r\n return new Promise((resolve, reject) => {\r\n\r\n if(id == 0)\r\n resolve(null);\r\n else\r\n http(uri.clients.getById(id)).asGet().then(resp => resolve(resp));\r\n });\r\n \r\n }, \r\n paginate : true,\r\n pageSize: 10\r\n }),[]);\r\n\r\n\r\n return (\r\n <div>\r\n <Popup\r\n fullScreen={true}\r\n title={isNew ? `Nueva factura` : `Ver factura ${formatId(id)}`}\r\n onHiding={onHiding}\r\n visible={open}\r\n showCloseButton={true}\r\n className=\"bg-fbfbfb\"\r\n >\r\n <ScrollView showScrollbar='never'>\r\n <Form formData={bill} ref={refForm}>\r\n <GroupItem colCount={4}>\r\n <GroupItem colSpan={4}>\r\n <GroupItem colCount={6}>\r\n\r\n <SimpleItem dataField=\"date\" colSpan={2} editorType=\"dxDateBox\"\r\n editorOptions={{\r\n displayFormat: formatDate,\r\n openOnFieldClick: true,\r\n }} >\r\n <Label text=\"Fecha\" />\r\n <RequiredRule message=\"Seleccione la fecha\" />\r\n </SimpleItem>\r\n <SimpleItem dataField=\"paymentTypeId\" colSpan={2} editorType=\"dxSelectBox\"\r\n editorOptions={{\r\n dataSource: createStoreLocal({ name: 'billPaymentType' }),\r\n ...editorOptionsSelect,\r\n onValueChanged: paymentTypeIdChanged \r\n }} >\r\n <Label text=\"Tipo pago\" />\r\n <RequiredRule message=\"Seleccione el tipo\" />\r\n </SimpleItem>\r\n <SimpleItem dataField=\"codigo\" colSpan={2} editorType=\"dxTextBox\"\r\n editorOptions={{ placeholder: 'Talonario', showClearButton: true }} >\r\n <Label text=\"Referencia\" />\r\n </SimpleItem>\r\n <SimpleItem dataField=\"clientId\" colSpan={4} editorType=\"dxSelectBox\"\r\n editorOptions={{\r\n dataSource: dataSource(),\r\n valueExpr:\"id\",\r\n displayExpr: item => item ? `${item.id} - ${item.name} ${item.lastName}` : '',\r\n searchEnabled: true,\r\n searchExpr: [\"name\", \"lastName\"]\r\n , showClearButton:true, onValueChanged: clientIdChanged}} >\r\n <Label text=\"Cliente\" />\r\n <RequiredRule message=\"Seleccione el cliente\" />\r\n </SimpleItem>\r\n <SimpleItem dataField=\"creditDays\" colSpan={2} editorType=\"dxNumberBox\"\r\n editorOptions={{\r\n disabled: true\r\n }} >\r\n <Label text=\"Dias crédito\" />\r\n <RequiredRule message=\"Seleccione el tipo\" />\r\n </SimpleItem> \r\n\r\n <SimpleItem dataField=\"paymentMethodId\" colSpan={2} editorType=\"dxSelectBox\"\r\n editorOptions={{\r\n disabled: bill.paymentTypeId == paymentType.credito,\r\n dataSource: createStoreLocal({ name: 'billPaymentMethod' }),\r\n ...editorOptionsSelect,\r\n onValueChanged: e => setBill(_bill =>({ ..._bill, billPaymentTypeId: e.value, }))\r\n }} >\r\n <Label text=\"Forma pago\" />\r\n </SimpleItem>\r\n <SimpleItem dataField=\"bankId\" colSpan={2} editorType=\"dxSelectBox\"\r\n editorOptions={{\r\n disabled: bill.paymentTypeId == paymentType.credito,\r\n dataSource: createStoreLocal({ name: 'bank' }),\r\n ...editorOptionsSelect,\r\n onValueChanged: e => setBill(_bill =>({ ..._bill, bankId: e.value, }))\r\n }} >\r\n <Label text=\"Banco\" />\r\n </SimpleItem>\r\n <SimpleItem dataField=\"reference\" colSpan={2} editorType=\"dxTextBox\"\r\n editorOptions={{ showClearButton: true, disabled: bill.paymentTypeId == paymentType.credito, }} >\r\n <Label text=\"Referencia\" />\r\n </SimpleItem>\r\n \r\n <SimpleItem dataField=\"observation\" colSpan={6} editorType=\"dxTextBox\">\r\n <Label text=\"Observacion\" />\r\n <StringLengthRule max={150} message=\"Maximo 150 caracteres\" />\r\n </SimpleItem>\r\n\r\n </GroupItem>\r\n </GroupItem> \r\n\r\n </GroupItem>\r\n <GroupItem>\r\n <DataGrid id=\"gridDetails\"\r\n ref={refGrid}\r\n selection={{ mode: 'single' }}\r\n dataSource={bill.billDetails}\r\n showBorders={true}\r\n showRowLines={true}\r\n allowColumnResizing={true}\r\n allowColumnReordering={true}\r\n height={280}\r\n columnHidingEnabled={true}\r\n onRowInserted={onRowInserted}\r\n onRowRemoved={onRowInserted}\r\n onRowUpdated={onRowInserted}\r\n onCellPrepared={onCellPrepared}\r\n >\r\n \r\n <Column dataField=\"productId\" caption=\"Producto\"\r\n setCellValue={setCellValue.bind(null, \"productId\")}\r\n editCellComponent={props => <ProductDDBComponent showPrice={true} {...props} />}\r\n >\r\n \r\n <Lookup\r\n dataSource={products}\r\n valueExpr=\"id\"\r\n displayExpr={item => item ? `${item.internalCode} - ${item.name}` : ''}\r\n\r\n />\r\n <RuleRequired />\r\n </Column> \r\n <Column dataField=\"family\" caption={defaultLabels.family} width={120} allowEditing={false}>\r\n <RuleRequired />\r\n </Column>\r\n <Column dataField=\"quantity\" caption=\"Cantidad\" dataType=\"number\" width={80}\r\n setCellValue={setCellValue.bind(null, \"quantity\")}\r\n >\r\n <RuleRequired />\r\n </Column>\r\n <Column visible={false} dataField=\"price\" caption=\"Precio\" dataType=\"number\" width={100} allowEditing={false} cellRender={cellRender()} >\r\n <RuleRequired />\r\n </Column>\r\n <Column dataField=\"customPrice\" caption=\"Precio\" dataType=\"number\" width={100} cellRender={cellRender()}\r\n setCellValue={setCellValue.bind(null, \"customPrice\")}>\r\n <RuleRequired />\r\n </Column>\r\n <Column dataField=\"discount\" caption=\"Desc\" dataType=\"number\" width={80} cellRender={cellRender()}\r\n setCellValue={setCellValue.bind(null, \"discount\")}>\r\n <RuleRequired />\r\n </Column>\r\n <Column dataField=\"total\" caption=\"Total\" dataType=\"number\" width={120} allowEditing={false} cellRender={cellRender()} >\r\n <RuleRequired />\r\n </Column>\r\n <Column type=\"buttons\" width={50}>\r\n <ButtonGrid name=\"delete\" />\r\n </Column>\r\n <Summary>\r\n <TotalItem column=\"productId\" summaryType=\"count\" />\r\n <TotalItem column=\"discount\" summaryType=\"sum\" customizeText={toMoney} />\r\n <TotalItem column=\"total\" summaryType=\"sum\" customizeText={toMoney} />\r\n </Summary>\r\n <Editing\r\n mode=\"cell\"\r\n allowDeleting={true}\r\n allowUpdating={true}\r\n selectTextOnEditStart={true}\r\n useIcons={true}\r\n ></Editing>\r\n </DataGrid>\r\n </GroupItem>\r\n <GroupItem colCount={6}> \r\n <SimpleItem colSpan={2} dataField=\"codeAuth\" editorType=\"dxTextBox\" editorOptions={{readOnly: true}}>\r\n <Label text=\"Código Autorización\" /> \r\n </SimpleItem>\r\n </GroupItem>\r\n </Form>\r\n </ScrollView>\r\n <div className='flex-v'>\r\n <TextBox visible={false} focusStateEnabled={true} ref={textBoxRef} onKeyDown={onKeyDown} value={init}></TextBox>\r\n <Button\r\n className=\"mt-10\"\r\n text={saving ? 'Guardando...' : `Guardar factura`}\r\n type=\"success\"\r\n icon='save'\r\n disabled={saving}\r\n visible={isNew}\r\n onClick={guardarFactura}\r\n />\r\n </div>\r\n\r\n </Popup>\r\n </div>\r\n );\r\n}\r\n\r\nexport default Nuevo;\r\n","import React, { useRef, useState }from \"react\";\r\nimport {\r\n Paging,\r\n Pager,\r\n FilterRow,\r\n Column, \r\n Summary,\r\n TotalItem, \r\n}\r\n from 'devextreme-react/data-grid';\r\nimport * as NuevoReceipt from '../../../components/bill/MobilNuevo';\r\nimport { DataGrid, ProgressBar, Popup } from 'devextreme-react';\r\nimport Title from \"../../../components/shared/Title\";\r\nimport { store } from \"../../../services/store\";\r\nimport { formatDate, formatDateTime } from '../../../data/app';\r\nimport { useDispatch } from 'react-redux';\r\nimport { cellRender, cellRenderBold, dataFormatId } from \"../../../utils/common\";\r\nimport numeral from \"numeral\";\r\nimport moment from \"moment\";\r\nimport BlockHeaderStateCC from \"../../../components/shared/BlockHeaderStateCC\";\r\nimport { setGridStateCC } from '../../../store/gridStateCC/gridStateCCReducer';\r\nimport { billDialogAction } from '../../../store/bill/billDialogReducer';\r\nimport urlReport from \"../../../services/reportServices\";\r\nimport MobileReceiptByBillId from \"../receipts/MobileReceiptByBillId\";\r\nimport Nuevo from '../bills/Nuevo';\r\n\r\nconst MobilePending = props => {\r\n\r\n const [dataDialog, setDataDialog] = useState({ id: 0, billId: 0, open: false, client: '', balance: '' });\r\n const [dialogReceipt, setDialogReceipt] = useState({ open: false, id: 0, reference: 0 });\r\n\r\n let refGrid = useRef();\r\n\r\n const dispatch = useDispatch();\r\n\r\n const showDialog = (id) => dispatch(billDialogAction({ open: true, id })); \r\n \r\n const printReport = ( id ) => {\r\n \r\n const report = urlReport();\r\n report.print(`${report.billTicket(id)}`);\r\n\r\n }\r\n\r\n const close = e => {\r\n setDataDialog({ id: 0, billId: 0, open: false, client: '', balance: '' });\r\n }\r\n \r\n const onCellPrepared = e => {\r\n\r\n const cellsQuantity = ['payoff']\r\n\r\n if (e.rowType == 'data' && e.column.allowEditing) {\r\n if (cellsQuantity.includes(e.column.dataField))\r\n if (e.row.data.payoff)\r\n e.cellElement.classList.add('pagada');\r\n else\r\n e.cellElement.classList.add('pendiente');\r\n\r\n if (e.column.dataField == 'id')\r\n e.cellElement.classList.add('col-id-factura');\r\n if (e.column.dataField == 'reference')\r\n e.cellElement.classList.add('col-reference-factura');\r\n }\r\n\r\n }\r\n\r\n const title = \"Cuentas por cobrar\"; \r\n \r\n const customizeText = (cellInfo) => {\r\n return `C$ ${numeral(cellInfo.value).format('0,0.00')}`\r\n }\r\n\r\n const cellBar = (data) => {\r\n\r\n const { creditDays, daysInDebt, mora, expirationDate } = data.row.data;\r\n\r\n const vence = moment(expirationDate).format('DD/MM/YYYY');\r\n\r\n const statusFormat = value => mora < 0 ? `Vencida el ${vence}` : `${creditDays - daysInDebt} dias restantes. Vence el ${vence}`;\r\n\r\n return (\r\n <ProgressBar\r\n id=\"progress-bar-status\" \r\n className={mora < 0 ? 'bar-red' : 'bar-blue'} \r\n min={0} \r\n max={creditDays}\r\n value={daysInDebt}\r\n statusFormat={statusFormat}\r\n showStatus={true}\r\n />\r\n )\r\n }\r\n\r\n const onRowClick = e => {\r\n \r\n const { id } = e.data;\r\n\r\n dispatch(setGridStateCC({\r\n id: id, \r\n data: e.data,\r\n disabledView: false, \r\n disabledPrint: false, \r\n disabledPayment: false, \r\n disabledViewReceipts: false, \r\n disabledCancel: false }));\r\n\r\n }\r\n\r\n const onSave = (e) => refGrid.current.instance.refresh();\r\n\r\n return (\r\n <div className=\"container mobile\">\r\n <Title title={title} />\r\n <BlockHeaderStateCC title={title} icon=\"icon-file-text\" \r\n onClickView={(id) => showDialog(id)}\r\n onClickPrint={id => printReport(id)}\r\n onClickPayment={(id, billId, open, client, balance) => setDataDialog({ id: 0, billId, open, client, balance })}\r\n onClickViewReceipts={(open, id, nombre) => setDialogReceipt({ open, id, reference: id, cliente:nombre })}\r\n > \r\n </BlockHeaderStateCC> \r\n <Popup\r\n fullScreen={true}\r\n showCloseButton={true}\r\n title={`Recibos`}\r\n onHiding={e => setDialogReceipt({ open: false, id: 0 })}\r\n visible={dialogReceipt.open}\r\n className=\"bg-fbfbfb\"\r\n >\r\n <MobileReceiptByBillId id={dialogReceipt.id} reference={dialogReceipt.reference} onSave={onSave} cliente={dialogReceipt.cliente} />\r\n </Popup> \r\n <Nuevo onSave={onSave} { ...props } />\r\n <NuevoReceipt.default data={dataDialog} close={close} onSave={() => 0} />\r\n <DataGrid\r\n ref={refGrid}\r\n dataSource={store({uri : { get : 'clients/pending/get' } })}\r\n selection={{ mode: 'single' }}\r\n showBorders={true}\r\n showRowLines={true}\r\n allowColumnResizing={true}\r\n //columnHidingEnabled={true}\r\n allowColumnReordering={true}\r\n hoverStateEnabled={true}\r\n columnAutoWidth={true} \r\n onRowClick={onRowClick}\r\n onCellPrepared={onCellPrepared} \r\n >\r\n <Pager allowedPageSizes={[10, 15, 30, 50]} showPageSizeSelector={true} showInfo={true} />\r\n <Paging defaultPageSize={15} />\r\n <FilterRow visible={true} /> \r\n <Column dataField=\"id\" caption=\"Factura\" width={70} cellRender={dataFormatId} alignment=\"rigth\" />\r\n <Column dataField=\"date\" caption=\"Fecha\" dataType='date' format={formatDate} width={100} />\r\n <Column dataField=\"name\" caption=\"Cliente\" allowHeaderFiltering={false} />\r\n <Column dataField=\"asignedTo\" caption='Vendedor' width={100} /> \r\n <Column dataField=\"total\" width={110} cellRender={cellRender()} />\r\n <Column dataField=\"amount\" caption='Pagado' width={110} cellRender={cellRender()} />\r\n <Column dataField=\"balance\" caption='Saldo' width={110} cellRender={cellRenderBold()} />\r\n <Column dataField=\"mora\" caption='Mora Dias' width={110} />\r\n <Column dataField=\"progress\" caption=\"Activa\" cellRender={cellBar} />\r\n <Column dataField=\"createAt\" caption='Creado el' dataType='date' visible={true} format={formatDateTime} width={180} /> \r\n <Summary> \r\n <TotalItem column=\"total\" summaryType=\"sum\" customizeText={customizeText} />\r\n <TotalItem column=\"amount\" summaryType=\"sum\" customizeText={customizeText} />\r\n <TotalItem column=\"balance\" summaryType=\"sum\" customizeText={customizeText} />\r\n </Summary>\r\n </DataGrid>\r\n </div>\r\n )\r\n\r\n\r\n}\r\n\r\n\r\nexport default MobilePending;\r\n","import React, { useEffect, useRef, useState } from \"react\";\r\nimport {\r\n Paging,\r\n Pager,\r\n FilterRow,\r\n ColumnChooser,\r\n Column,\r\n Lookup,\r\n Export, \r\n Button as ButtonGrid, \r\n Editing,\r\n Popup, \r\n Form, \r\n RequiredRule,\r\n StringLengthRule, \r\n}\r\n from 'devextreme-react/data-grid';\r\n \r\nimport { EmailRule, EmptyItem, Item } from 'devextreme-react/form';\r\nimport { DataGrid } from 'devextreme-react';\r\nimport BlockHeader from '../../components/shared/BlockHeader';\r\nimport Title from \"../../components/shared/Title\";\r\nimport { store } from \"../../services/store\";\r\nimport { formatDate, resources, } from '../../data/app';\r\nimport { createStore, createStoreLocal } from \"../../utils/proxy\";\r\nimport uri from \"../../utils/uri\";\r\nimport useAuthorization from \"../../hooks/useAuthorization\";\r\nimport { cellRender } from \"../../utils/common\";\r\nimport http from \"../../utils/http\";\r\nimport { clientDialogAction } from \"../../store/client/clientDialogReducer\";\r\nimport { useDispatch } from \"react-redux\";\r\nimport Nuevo from \"./Nuevo\";\r\n\r\nconst ClientsMobile = props => {\r\n\r\n const [cities, setCities] = useState([]);\r\n\r\n const [ authorized ] = useAuthorization( resources.verClientes );\r\n\r\n let dataGrid = useRef();\r\n const title = \"Clientes\"; \r\n\r\n const onToolbarPreparing = e => {\r\n\r\n e.toolbarOptions.items.unshift({\r\n location: 'after',\r\n widget: 'dxButton',\r\n options: {\r\n stylingMode:\"outlined\",\r\n type:'default',\r\n icon: 'add',\r\n text: 'Agregar cliente',\r\n onClick: e => showDialog(0)// dispatch(openDialog({open : true, id : 0}))\r\n }\r\n });\r\n }\r\n\r\n const onRowDblClick = (e) => {\r\n // history.push('/clinica/cliente/'+e.data.id);\r\n }\r\n\r\n const onSave = (params) => {\r\n dataGrid.current.instance.refresh();\r\n } \r\n\r\n const dispatch = useDispatch();\r\n\r\n const showDialog = (id) => dispatch(clientDialogAction({ open: true, id }))\r\n\r\n const getFilteredCities = (options) => {\r\n return {\r\n store: cities,\r\n filter: options.data ? ['departmentId', '=', options.data.departmentId] : null\r\n };\r\n }\r\n\r\n const setStateValue = (rowData, value) => {\r\n\r\n rowData['departmentId'] = value || 0;\r\n rowData.cityId = null;\r\n \r\n }\r\n\r\n useEffect(() => {\r\n http('catalogos/City').asGet().then(resp => setCities(resp))\r\n }, [0]);\r\n\r\n const onInitNewRow = (e) => {\r\n e.data.creditLimit = 0;\r\n }\r\n\r\n\r\n\r\n return authorized(\r\n <div className=\"container\">\r\n <Title title={title} />\r\n <BlockHeader title={title} />\r\n <Nuevo onSave={onSave} isMobile={true} /> \r\n <DataGrid\r\n ref={dataGrid}\r\n dataSource={store({uri : uri.clients, remoteOperations: true })}\r\n selection={{ mode: 'single' }}\r\n showBorders={true}\r\n showRowLines={true}\r\n allowColumnResizing={true}\r\n allowColumnReordering={true}\r\n hoverStateEnabled={true}\r\n columnAutoWidth={true}\r\n rowAlternationEnabled={true}\r\n onToolbarPreparing={onToolbarPreparing}\r\n onRowDblClick={onRowDblClick}\r\n onInitNewRow={onInitNewRow}\r\n remoteOperations={{\r\n paging: true,\r\n filtering: true\r\n }} \r\n >\r\n <Pager allowedPageSizes={[10, 15, 30, 50]} showPageSizeSelector={true} showInfo={true} />\r\n <Paging defaultPageSize={10} />\r\n <FilterRow visible={true} />\r\n <ColumnChooser enabled={true} />\r\n <Export enabled={true} fileName={title} allowExportSelectedData={true} /> \r\n <Column type=\"buttons\" width={90}>\r\n <ButtonGrid name=\"edit\" icon=\"edit\" onClick={e => showDialog(e.row.data.id)}/>\r\n <ButtonGrid name=\"delete\" />\r\n </Column> \r\n <Column dataField=\"identification\" caption=\"Identificacion\" width={130} visible={false} />\r\n <Column dataField=\"name\" caption=\"Nombre\" minWidth={180} />\r\n <Column dataField=\"typeId\" caption=\"Tipo\" width={120}>\r\n <Lookup disabled={true} dataSource={createStoreLocal({name : 'clientType'} )} valueExpr=\"id\" displayExpr=\"name\" />\r\n </Column>\r\n <Column dataField=\"lastName\" caption=\"Apellidos/Contacto\" minWidth={140}/>\r\n <Column dataField=\"birthdate\" caption=\"Fecha de Nac\" width={120} dataType=\"date\" format={formatDate} />\r\n <Column dataField=\"sexId\" caption=\"Sexo\" visible={false}>\r\n <Lookup dataSource={createStoreLocal({name : 'sex'} )} valueExpr=\"id\" displayExpr=\"name\" />\r\n </Column>\r\n <Column dataField=\"address\" caption=\"Direción\" visible={false} allowFiltering={false} />\r\n <Column dataField=\"phoneNumber\" caption=\"Telefono\" allowFiltering={false} />\r\n <Column dataField=\"phoneNumberWork\" caption=\"Telefono Trab\" allowFiltering={false} visible={false}/>\r\n <Column dataField=\"cellNumber\" caption=\"Celular\" allowFiltering={false} />\r\n <Column dataField=\"email\" caption=\"Correo\" allowFiltering={false} visible={false} /> \r\n <Column dataField=\"departmentId\" caption=\"Departamento\" width={150} setCellValue={setStateValue} visible={false}>\r\n <Lookup disabled={true} dataSource={createStore({name : 'department'} )} valueExpr=\"id\" displayExpr=\"name\" />\r\n </Column> \r\n <Column dataField=\"cityId\" caption=\"Ciudad\" width={150} visible={false}>\r\n <Lookup disabled={true} dataSource={getFilteredCities} valueExpr=\"id\" displayExpr=\"name\" />\r\n </Column> \r\n <Column dataField=\"creditLimit\" caption=\"Monto Credito\" cellRender={cellRender()} /> \r\n <Column dataField=\"creditDays\" caption=\"Dias Credito\" /> \r\n <Column dataField=\"isCompany\" caption=\"Empresa\"/> \r\n \r\n \r\n <Editing\r\n mode=\"popup\"\r\n allowUpdating={true}\r\n allowDeleting={true}\r\n useIcons={true}\r\n >\r\n <Popup title={title} showTitle={true} width={800} height={580}>\r\n\r\n </Popup> \r\n </Editing>\r\n </DataGrid>\r\n </div>\r\n )\r\n\r\n\r\n}\r\n\r\n\r\nexport default ClientsMobile;\r\n","import React, { useEffect, useRef, useState } from 'react';\r\nimport { DataGrid, Box, DropDownBox, DateBox, SelectBox, Button } from 'devextreme-react';\r\nimport { Item } from \"devextreme-react/box\";\r\nimport {\r\n Paging,\r\n Pager,\r\n FilterRow,\r\n Column,\r\n Export,\r\n Scrolling,\r\n Selection,\r\n GroupPanel,\r\n SearchPanel,\r\n Grouping,\r\n Summary,\r\n TotalItem,\r\n GroupItem\r\n} from 'devextreme-react/data-grid';\r\nimport Title from '../../../components/shared/Title';\r\nimport BlockHeader from '../../../components/shared/BlockHeader';\r\n\r\nimport { _path } from \"../../../data/headerNavigation\";\r\nimport { formatDate } from '../../../data/app';\r\nimport { cellRender, formatToMoneyNumber, onCellPreparedSales, } from '../../../utils/common';\r\n\r\nimport uri from '../../../utils/uri';\r\nimport http from '../../../utils/http';\r\n\r\nimport { dateByReport, defaultLabels } from '../../../data/defaultObjects';\r\n\r\nconst Ingresos = (props) => {\r\n \r\n const [ dateFrom, setDateFrom ] = useState(dateByReport.from);\r\n const [ dateTo, setDateTo ] = useState(dateByReport.to);\r\n const [ data, setData ] = useState(undefined);\r\n const [ loading, setLoading ] = useState(false);\r\n\r\n\r\n const changeDateFrom = e => setDateFrom(e.value);\r\n\r\n const changeDateTo = e => setDateTo(e.value); \r\n\r\n const loadReport = () => {\r\n if(dateFrom && dateTo){\r\n setLoading(true);\r\n http('reports/ingresos').asPost({areaId:0, from : dateFrom, to: dateTo}).then(resp => {\r\n setData(resp);\r\n setLoading(false);\r\n }); \r\n }\r\n };\r\n\r\n const title = 'Últimos Ingresos';\r\n\r\n return (\r\n <div className=\"container\">\r\n <Title title={title} />\r\n <BlockHeader title={title} showFavorite={true} {...props}></BlockHeader>\r\n <Box direction=\"row\" width=\"100%\" height={75}> \r\n <Item ratio={1}>\r\n <div className=\"ml-10\">\r\n <label>Desde:</label>\r\n <DateBox type=\"date\" \r\n value={dateFrom}\r\n displayFormat={formatDate} \r\n openOnFieldClick={true} \r\n onValueChanged={changeDateFrom}/>\r\n </div>\r\n </Item>\r\n <Item ratio={1}>\r\n <div className=\"ml-10\">\r\n <label>Hasta:</label>\r\n <DateBox type=\"date\" \r\n value={dateTo}\r\n displayFormat={formatDate} \r\n openOnFieldClick={true} \r\n onValueChanged={changeDateTo}/>\r\n </div>\r\n </Item> \r\n <Item ratio={1}>\r\n <div style={{ paddingTop : '19px' }}>\r\n <Button\r\n width={120}\r\n text={`${loading ? 'Buscando...' : 'Buscar'}`}\r\n type=\"default\"\r\n icon=\"search\"\r\n stylingMode=\"contained\"\r\n className=\"m-1\"\r\n disabled={loading}\r\n onClick={loadReport}\r\n />\r\n </div>\r\n </Item>\r\n </Box>\r\n <Box direction=\"row\" width=\"100%\" height={75}>\r\n <Item ratio={1}> \r\n <DataGrid\r\n id=\"gridContainer\"\r\n keyExpr=\"id\"\r\n selection={{ mode: 'single' }}\r\n dataSource={data}\r\n showBorders={true}\r\n showRowLines={true}\r\n hoverStateEnabled={true}\r\n onCellPrepared={onCellPreparedSales}\r\n > \r\n \r\n \r\n <Paging defaultPageSize={10} />\r\n <Pager\r\n showInfo={true}\r\n showPageSizeSelector={true}\r\n allowedPageSizes={[10, 20, 50,100,500]}\r\n />\r\n <Export enabled={true} fileName={title} allowExportSelectedData={true} /> \r\n <FilterRow visible={true} />\r\n\r\n <Column dataField=\"id\" caption=\"Compra#\" width={70} /> \r\n <Column dataField=\"date\" dataType=\"date\" caption=\"Fecha\" format={formatDate} width={100}/> \r\n <Column dataField=\"provider\" caption=\"Proveedor\" width={70} visible={false}/> \r\n \r\n <Column dataField=\"internalCode\" caption=\"Código\" width={100}/> \r\n <Column dataField=\"product\" minWidth={180} caption=\"Producto\" /> \r\n\r\n <Column dataField=\"family\" caption={defaultLabels.family} width={100}/> \r\n <Column dataField=\"um\" caption=\"UM\" width={100}/> \r\n <Column dataField=\"presentation\" caption={defaultLabels.presentacion} width={100}/> \r\n\r\n <Column dataField=\"quantity\" caption=\"Cant\" width={70}/> \r\n <Column dataField=\"price\" caption=\"Precio\" cellRender={cellRender()} width={100}/> \r\n \r\n \r\n </DataGrid>\r\n </Item> \r\n </Box>\r\n </div>\r\n );\r\n}\r\n\r\n\r\n\r\nexport default Ingresos;\r\n","import React from 'react';\r\n\r\nimport {\r\n Chart,\r\n CommonSeriesSettings,\r\n Series,\r\n ArgumentAxis,\r\n Grid,\r\n Crosshair,\r\n Export,\r\n Legend,\r\n Point,\r\n Label,\r\n Font,\r\n Title,\r\n Subtitle,\r\n Tooltip,\r\n } from 'devextreme-react/chart';\r\nimport { formatToMoneyNumber } from '../../../../utils/common';\r\nimport moment from 'moment';\r\n\r\n\r\nconst ChartLine = ({ data, type, typeLabel, reverseType, reverseTypeLabel , collection, currentCategory }) => {\r\n \r\n const customizeTooltip = (pointInfo) => ({\r\n text: `${formatToMoneyNumber(pointInfo.valueText)}`,\r\n });\r\n\r\n function onLegendClick(e) {\r\n e.target.isVisible() ? e.target.hide() : e.target.show();\r\n }\r\n\r\n const customizeText = (e) => moment(e.value).format('DD-MMM');\r\n\r\n const orderByDate = (a, b) => {\r\n return new Date(a.date) - new Date(b.date);\r\n }\r\n\r\n return (\r\n <Chart\r\n id={`chart-${type}`}\r\n dataSource={data.sort(orderByDate)}\r\n onLegendClick={onLegendClick} \r\n title={`Top ventas de ${typeLabel} por ${reverseTypeLabel} ${currentCategory}`}\r\n >\r\n <CommonSeriesSettings\r\n argumentField={'date'}\r\n type=\"spline\" \r\n />\r\n {collection.map((item) => (\r\n <Series\r\n key={item}\r\n valueField={item}\r\n name={item}\r\n ignoreEmptyPoints={true}\r\n showInLegend={true}\r\n />\r\n ))}\r\n <ArgumentAxis\r\n valueMarginsEnabled={false}\r\n discreteAxisDivisionMode=\"crossLabels\"\r\n >\r\n <Grid visible={true} />\r\n <Label customizeText={customizeText} />\r\n </ArgumentAxis>\r\n <Crosshair\r\n enabled={true}\r\n color=\"#949494\"\r\n width={3}\r\n dashStyle=\"dot\"\r\n >\r\n <Label\r\n visible={true}\r\n backgroundColor=\"#949494\"\r\n >\r\n <Font\r\n color=\"#fff\"\r\n size={12}\r\n />\r\n </Label>\r\n </Crosshair>\r\n <Legend\r\n verticalAlignment=\"left\"\r\n horizontalAlignment=\"left\"\r\n itemTextPosition=\"left\"\r\n \r\n />\r\n <Title text=\"Energy Consumption in 2004\">\r\n <Subtitle text=\"(Millions of Tons, Oil Equivalent)\" />\r\n \r\n \r\n \r\n \r\n );\r\n}\r\n\r\nexport default ChartLine;\r\n","import React from 'react';\r\n\r\nimport Chart, {\r\n CommonSeriesSettings,\r\n Series,\r\n SelectionStyle,\r\n Hatching,\r\n Legend,\r\n Export,\r\n Tooltip,\r\n Title\r\n } from 'devextreme-react/chart';\r\n\r\nimport { formatToMoneyNumber } from '../../../../utils/common';\r\n\r\n\r\n\r\nconst ChartBar = ({ data, type, typeLabel, reverseType, reverseTypeLabel , onPointClick }) => {\r\n \r\n const totalGlobal = data.reduce((prev, current) => prev + current.total, 0);\r\n\r\n const customizeTooltipHTML = (pointInfo) => {\r\n\r\n const percent = parseFloat((pointInfo.value / totalGlobal) * 100).toFixed(2);\r\n\r\n return {\r\n html: `
\r\n
${pointInfo.argumentText}
\r\n
\r\n
\r\n Total C$: \r\n
\r\n
\r\n ${formatToMoneyNumber(pointInfo.valueText)}\r\n
\r\n
\r\n Porcentaje: \r\n
\r\n
\r\n ${percent}% \r\n
\r\n
\r\n
`,\r\n }\r\n }\r\n\r\n const orderByTotal = (a, b) => {\r\n return b.total - a.total;\r\n }\r\n\r\n return (\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n );\r\n}\r\n\r\nexport default ChartBar;\r\n","import React from 'react';\r\n\r\nimport PieChart, {\r\n Legend as PieLegend,\r\n Series as PieSeries,\r\n Tooltip as PieTooltip,\r\n Format as PieFormat,\r\n Label as PieLabel,\r\n Connector,\r\n Export as PieExport,\r\n} from 'devextreme-react/pie-chart';\r\nimport { formatToMoneyNumber } from '../../../../utils/common';\r\n\r\nconst ChartPie = ({ data, type, typeLabel, reverseType, reverseTypeLabel , currentCategory }) => {\r\n\r\n console.log(type);\r\n console.log(data);\r\n\r\n const customizeText = arg => {\r\n return `${formatToMoneyNumber(arg.valueText)} - ${(arg.percent * 100).toFixed(2)}%`\r\n }\r\n\r\n const customizeTooltipHTML = (pointInfo) => {\r\n\r\n console.log(pointInfo);\r\n\r\n //const percent = parseFloat((pointInfo.value / totalGlobal) * 100).toFixed(2);\r\n\r\n return {\r\n html: `
\r\n
${pointInfo.argumentText}
\r\n
\r\n
\r\n Total C$: \r\n
\r\n
\r\n ${formatToMoneyNumber(pointInfo.value)}\r\n
\r\n
\r\n Porcentaje: \r\n
\r\n
\r\n ${(pointInfo.percent * 100).toFixed(2)}% \r\n
\r\n
\r\n
`,\r\n }\r\n }\r\n\r\n return (\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n );\r\n}\r\n\r\nexport default ChartPie;\r\n","import React, { useCallback, useState } from 'react';\r\nimport ChartLine from './ChartLine';\r\nimport ChartBar from './ChartBar';\r\nimport { Box, TagBox } from 'devextreme-react';\r\nimport { Item } from 'devextreme-react/box';\r\nimport ChartPie from './PieChart';\r\nimport './index.css';\r\nconst CharByType = ({ data, type, typeLabel, reverseType, reverseTypeLabel }) => {\r\n\r\n const [ currentCategory, setCurrentCategory ] = useState(null);\r\n const [ filter, setFilter ] = useState([]);\r\n\r\n const onPointClick = (e) => {\r\n\r\n const { target: point } = e;\r\n\r\n if (point.isSelected()) {\r\n point.clearSelection();\r\n setCurrentCategory(null);\r\n } else {\r\n point.select();\r\n setCurrentCategory(point.argument);\r\n }\r\n\r\n }\r\n\r\n const getUniques = (property, _data) => {\r\n return [...new Set(_data.map(item => item[property]))];\r\n }\r\n\r\n\r\n const getDataGeneral = useCallback((_data) => { \r\n\r\n const data = _data.filter(item => {\r\n\r\n if(filter.length == 0) return true;\r\n\r\n return filter.includes(item[type]);\r\n \r\n });\r\n\r\n if(data.length === 0) return [];\r\n\r\n const getTotal = (_type) => {\r\n return data.filter(item => item[type] === _type)\r\n .reduce((prev, current) => prev + current.total, 0);\r\n }\r\n\r\n const dataByType = getUniques(type, data)\r\n\r\n const dataGeneral = dataByType.map(_type => {\r\n return {\r\n [type] : _type,\r\n total : getTotal(_type)\r\n }\r\n });\r\n\r\n return dataGeneral;\r\n\r\n },[filter, data]);\r\n\r\n const getDataDetail = useCallback((data) => {\r\n\r\n if(data.length === 0) return [];\r\n\r\n if(!currentCategory) return [];\r\n\r\n const dataByDates = getUniques('date', data);\r\n const dataByTypes = getUniques(reverseType, data);\r\n\r\n const dataDetail = dataByDates.map(date => {\r\n\r\n const dataByReverseType = dataByTypes.map(dataByType => {\r\n return {\r\n [dataByType] : data.filter(item => item.date === date && item[reverseType] === dataByType && item[type] === currentCategory)\r\n .reduce((prev, current) => prev + current.total, 0)\r\n }\r\n });\r\n\r\n let result = { date };\r\n\r\n for (const value of dataByReverseType.values()) {\r\n\r\n result = { ...result, ...value };\r\n \r\n }\r\n\r\n return result;\r\n })\r\n\r\n return dataDetail;\r\n\r\n\r\n\r\n } ,[currentCategory]);\r\n\r\n const getDataDetailDoughnut = useCallback((data) => {\r\n\r\n if(data.length === 0) return [];\r\n\r\n if(!currentCategory) return [];\r\n \r\n const dataByTypes = getUniques(reverseType, data);\r\n\r\n const dataDetail = dataByTypes.map(dataByType => {\r\n return {\r\n [reverseType]: dataByType,\r\n total : data.filter(item => item[reverseType] === dataByType && item[type] === currentCategory)\r\n .reduce((prev, current) => prev + current.total, 0)\r\n }\r\n }); \r\n\r\n return dataDetail;\r\n\r\n } ,[currentCategory]);\r\n \r\n const dataGeneral = getDataGeneral(data);\r\n\r\n const dataDetail = getDataDetail(data);\r\n\r\n const dataDetailDoughnut = getDataDetailDoughnut(data);\r\n\r\n const collection = getUniques(type, data);\r\n\r\n const collectionReserve = getUniques(reverseType, data);\r\n\r\n return (\r\n
\r\n
\r\n setFilter(e.value)}\r\n >\r\n \r\n
\r\n
\r\n \r\n
\r\n
\r\n { dataDetail.length > 0 && }\r\n
\r\n
\r\n { dataDetail.length > 0 && }\r\n
\r\n
\r\n );\r\n}\r\n\r\nexport default CharByType;\r\n","import React, { useEffect, useRef, useState } from 'react';\r\nimport { DataGrid, Box, DropDownBox, DateBox, SelectBox, Button } from 'devextreme-react';\r\nimport { Item } from \"devextreme-react/box\";\r\nimport {\r\n Paging,\r\n Pager,\r\n FilterRow,\r\n Column,\r\n Export,\r\n Scrolling,\r\n Selection,\r\n GroupPanel,\r\n SearchPanel,\r\n Grouping,\r\n Summary,\r\n TotalItem,\r\n GroupItem\r\n} from 'devextreme-react/data-grid';\r\nimport Title from '../../../components/shared/Title';\r\nimport BlockHeader from '../../../components/shared/BlockHeader';\r\n\r\nimport { _path } from \"../../../data/headerNavigation\";\r\nimport { formatDate } from '../../../data/app';\r\n\r\nimport http from '../../../utils/http';\r\n\r\nimport { dateByReport, defaultLabels } from '../../../data/defaultObjects';\r\nimport CharByType from './DashboardComponent/CharByType';\r\n\r\nconst DashboardSales = (props) => {\r\n \r\n const [ dateFrom, setDateFrom ] = useState(dateByReport.from);\r\n const [ dateTo, setDateTo ] = useState(dateByReport.to);\r\n const [ data, setData ] = useState([]);\r\n const [ dashboardType, setDashboardType ] = useState('family');\r\n const [ loading, setLoading ] = useState(false);\r\n\r\n const changeDateFrom = e => setDateFrom(e.value);\r\n\r\n const changeDateTo = e => setDateTo(e.value); \r\n\r\n const changeDashboard = e => setDashboardType(e.value); \r\n\r\n const loadReport = () => {\r\n if(dateFrom && dateTo){\r\n\r\n setLoading(true); \r\n\r\n http('reports/dashboard').asPost({areaId:0, from : dateFrom, to: dateTo}).then(resp => {\r\n setData(resp);\r\n setLoading(false);\r\n }); \r\n\r\n }\r\n }; \r\n\r\n const currentTypeLabel = dashboardType === 'family' ? defaultLabels.family : 'Vendedor';\r\n\r\n const reverseType = dashboardType === 'family' ? 'username' : 'family';\r\n const reverseTypeLabel = dashboardType === 'family' ? 'Vendedor' : defaultLabels.family;\r\n \r\n const title = 'Últimos Ingresos';\r\n\r\n return (\r\n
\r\n \r\n <BlockHeader title={title} showFavorite={true} {...props}></BlockHeader>\r\n <Box direction=\"row\" width=\"100%\" height={75}> \r\n <Item ratio={1}>\r\n <div className=\"ml-10\">\r\n <label>Desde:</label>\r\n <DateBox type=\"date\" \r\n value={dateFrom}\r\n displayFormat={formatDate} \r\n openOnFieldClick={true} \r\n onValueChanged={changeDateFrom}/>\r\n </div>\r\n </Item>\r\n <Item ratio={1}>\r\n <div className=\"ml-10\">\r\n <label>Hasta:</label>\r\n <DateBox type=\"date\" \r\n value={dateTo}\r\n displayFormat={formatDate} \r\n openOnFieldClick={true} \r\n onValueChanged={changeDateTo}/>\r\n </div>\r\n </Item> \r\n <Item ratio={1}>\r\n <div className=\"ml-10\">\r\n <label>Tipo Dashboard:</label>\r\n <SelectBox items={[\r\n { id: 'family', name: defaultLabels.family },\r\n { id: 'username', name: 'Vendedor' }\r\n ]} \r\n valueExpr={'id'}\r\n displayExpr={'name'}\r\n defaultValue={'Categoria'}\r\n showClearButton={true}\r\n value={dashboardType}\r\n onValueChanged={changeDashboard} \r\n />\r\n </div>\r\n </Item> \r\n <Item ratio={1}>\r\n <div style={{ paddingTop : '19px' }}>\r\n <Button\r\n width={120}\r\n text={`${loading ? 'Buscando...' : 'Buscar'}`}\r\n type=\"default\"\r\n icon=\"search\"\r\n stylingMode=\"contained\"\r\n className=\"m-1\"\r\n disabled={loading}\r\n onClick={loadReport}\r\n />\r\n </div>\r\n </Item>\r\n </Box>\r\n <div>\r\n <CharByType \r\n type={dashboardType} \r\n typeLabel={currentTypeLabel} \r\n reverseType={reverseType}\r\n reverseTypeLabel={reverseTypeLabel}\r\n data={data} />\r\n </div>\r\n \r\n </div>\r\n );\r\n}\r\n\r\n\r\n\r\nexport default DashboardSales;\r\n","import React, { useRef, useState } from 'react';\r\nimport { DataGrid } from 'devextreme-react';\r\nimport {\r\n Paging,\r\n Pager,\r\n FilterRow,\r\n HeaderFilter,\r\n ColumnChooser,\r\n Column,\r\n Lookup,\r\n Editing,\r\n Button as ButtonGrid,\r\n Export\r\n} from 'devextreme-react/data-grid';\r\nimport { createStoreLocal } from '../../utils/proxy';\r\nimport Title from '../../components/shared/Title';\r\nimport { store } from '../../services/store';\r\nimport { _path } from \"../../data/headerNavigation\";\r\nimport { formatDate, formatDateTime, resources } from '../../data/app';\r\nimport { cellAsPayoff, cellRender, dataFormatId, } from '../../utils/common';\r\nimport urlReport from '../../services/reportServices';\r\n\r\n\r\nimport uri from '../../utils/uri';\r\nimport BlockHeaderState from '../../components/shared/BlockHeaderState';\r\nimport useAuthorization from '../../hooks/useAuthorization';\r\n\r\nconst BillUpdates = props => {\r\n\r\n const [ authorized ] = useAuthorization(resources.verMenuActualizarFacturas);\r\n\r\n const { clientId = 0 } = props; \r\n \r\n let refGrid = useRef();\r\n\r\n const printReport = ( id ) => {\r\n \r\n const report = urlReport();\r\n report.print(`${report.billTicket(id)}`);\r\n\r\n }\r\n\r\n\r\n const onRowPrepared = (e) => {\r\n if (e.rowType == 'data') {\r\n if (!e.data.active)\r\n e.rowElement.classList.add('no-activo');\r\n\r\n }\r\n }\r\n\r\n const onToolbarPreparing = (e) => {\r\n e.toolbarOptions.items.unshift({\r\n location: 'before',\r\n widget: 'dxButton',\r\n options: {\r\n text: 'Exportar a excel',\r\n icon: 'exportxlsx',\r\n type: 'success',\r\n stylingMode: \"outlined\",\r\n onClick: () => refGrid.current.instance.exportToExcel(false)\r\n }\r\n });\r\n }\r\n\r\n const onCellPrepared = e => {\r\n\r\n const cellsQuantity = ['payoff']\r\n\r\n if (e.rowType == 'data') {\r\n if (cellsQuantity.includes(e.column.dataField))\r\n if (e.row.data.payoff)\r\n e.cellElement.classList.add('pagada');\r\n else\r\n e.cellElement.classList.add('pendiente');\r\n\r\n if (e.column.dataField == 'id')\r\n e.cellElement.classList.add('col-id-factura');\r\n if (e.column.dataField == 'reference')\r\n e.cellElement.classList.add('col-reference-factura');\r\n if (e.column.dataField == 'asignedTo' || e.column.dataField == 'creditDays' || e.column.dataField == 'deliveryDate' )\r\n e.cellElement.classList.add('bill-update');\r\n }\r\n\r\n }\r\n\r\n const extraParameter = clientId > 0 ? { key: 'clientId', value: clientId } : null;\r\n\r\n const cellRenderDelivery = (cellData) => {\r\n\r\n const { isDeliveried } = cellData.data;\r\n\r\n let deliveriedClassName = 'not-deliveried';\r\n if(isDeliveried)\r\n deliveriedClassName = 'is-deliveried';\r\n \r\n return (\r\n <div>\r\n <div className=\"current-value\">\r\n <span className={deliveriedClassName}> {isDeliveried ? 'Entregado': 'Sin entrega'} </span>\r\n </div> \r\n </div>\r\n );\r\n };\r\n\r\n const title = 'Facturas';\r\n\r\n return authorized(\r\n <div className=\"container\">\r\n <Title title={title} /> \r\n <BlockHeaderState showFavorite={true} title={title} icon=\"icon-file-text\" \r\n onRefresh={() => refGrid.current.instance.refresh()} \r\n visibleRefresh={true} {...props}\r\n > \r\n </BlockHeaderState> \r\n <DataGrid id=\"gridContainer\"\r\n ref={refGrid}\r\n selection={{ mode: 'single' }}\r\n dataSource={store({ uri: {\r\n get: uri.bills.get, \r\n insert: uri.bills.base+'/update',\r\n update: uri.bills.base+'/update'\r\n }, remoteOperations: true, extraParameter })}\r\n showBorders={true}\r\n showRowLines={true}\r\n allowColumnResizing={true}\r\n allowColumnReordering={true}\r\n //rowAlternationEnabled={true}\r\n hoverStateEnabled={true} \r\n onRowPrepared={onRowPrepared}\r\n onToolbarPreparing={onToolbarPreparing}\r\n onCellPrepared={onCellPrepared} \r\n remoteOperations={{\r\n paging: true,\r\n filtering: true\r\n }} \r\n >\r\n \r\n <Paging defaultPageSize={20} />\r\n <Pager\r\n showInfo={true}\r\n showPageSizeSelector={true}\r\n allowedPageSizes={[10, 20, 50]}\r\n />\r\n \r\n <Export enabled={false} fileName={title} />\r\n <FilterRow visible={true} />\r\n <HeaderFilter visible={true} />\r\n <ColumnChooser enabled={true} />\r\n <Column dataField=\"id\" caption=\"Id\" width={70} cellRender={dataFormatId} allowEditing={false} />\r\n <Column dataField=\"date\" caption=\"Fecha\" dataType='date' format={formatDate} width={100} allowEditing={false}/>\r\n <Column dataField=\"nombre\" caption=\"Cliente\" visible={clientId == 0} minWidth={150} allowHeaderFiltering={false} allowEditing={false} />\r\n <Column dataField=\"paymentTypeId\" width={100} caption=\"Tipo pago\" allowEditing={false}>\r\n <Lookup disabled={true} dataSource={createStoreLocal({ name: 'billPaymentType' })} valueExpr=\"id\" displayExpr=\"name\" />\r\n </Column>\r\n <Column dataField=\"total\" width={100} cellRender={cellRender()} allowEditing={false}/>\r\n <Column dataField=\"balance\" width={100} caption=\"Deuda\" cellRender={cellRender()} allowEditing={false}/>\r\n <Column dataField=\"active\" width={90} caption=\"Activa\" visible={false} allowEditing={false}/>\r\n <Column dataField=\"payoff\" width={100} caption='Pagada' dataType=\"boolean\" cellRender={cellAsPayoff} allowEditing={false}/>\r\n <Column dataField=\"payOfDate\" caption='Pagado el' dataType='date' format={formatDate} visible={false} width={100} allowEditing={false}/>\r\n <Column dataField=\"asignedTo\" width={100} caption=\"Vendedor\">\r\n <Lookup disabled={true} dataSource={createStoreLocal({ url: uri.users.base + '/vendors' })} valueExpr=\"username\" displayExpr=\"username\" />\r\n </Column>\r\n <Column dataField=\"daysDiff\" caption='Mora' width={60} visible={false} allowEditing={false}/>\r\n <Column dataField=\"creditDays\" caption='Dias Crédito' width={100} />\r\n <Column dataField=\"deliveryDate\" caption='F Entregado' dataType='date' format={formatDate} width={120} />\r\n <Column dataField=\"createBy\" caption='Creado Por' width={100} visible={false} allowEditing={false}/>\r\n <Column dataField=\"createAt\" caption='Creado el' dataType='date' format={formatDateTime} visible={false} width={140} allowEditing={false}/>\r\n <Column dataField=\"modifiedBy\" caption='Modificado ' width={100} visible={false} allowEditing={false}/>\r\n <Column dataField=\"modifiedAt\" caption='Modificado el' dataType='date' format={formatDateTime} visible={false} width={140} allowEditing={false}/>\r\n <Column dataField=\"ConvertBy\" caption='Modificada por' visible={false} width={100} allowEditing={false}/>\r\n <Column dataField=\"isDeliveriede\" width={100} caption=\"Entregado\" cellRender={cellRenderDelivery} allowEditing={false}/> \r\n <Editing\r\n mode=\"batch\"\r\n allowUpdating={true}\r\n useIcons={true}\r\n ></Editing>\r\n </DataGrid>\r\n </div>\r\n );\r\n}\r\n\r\nexport default BillUpdates;\r\n","import React from 'react';\r\nimport { useEffect } from 'react';\r\nimport { useParams } from 'react-router-dom';\r\nimport FileUpload from './FileUpload';\r\nconst ImageProduct = () => {\r\n\r\n //get id from route\r\n const { id } = useParams();\r\n\r\n const product = JSON.parse(localStorage.getItem('imageProduct'));\r\n\r\n const { internalCode, name, family, presentation, um, price } = product;\r\n\r\n return (\r\n <div className='container medium'>\r\n <h4>{internalCode} - {name}</h4>\r\n <FileUpload id={id} showInput={false} />\r\n <div><span className='text-muted'>Categoria</span>:<span className='text-bold'>{family}</span></div>\r\n <div><span className='text-muted'>Marca</span>:<span className='text-bold'>{presentation}</span></div>\r\n <div><span className='text-muted'>Unidad de medida</span>:<span className='text-bold'>{um}</span></div>\r\n <div><span className='text-muted'>Precio</span>:<span className='text-bold'>{price}</span></div>\r\n </div>\r\n );\r\n}\r\n\r\nexport default ImageProduct;\r\n","import React, { useState, useEffect } from \"react\";\r\nimport { Box, DataGrid, DateBox } from \"devextreme-react\";\r\nimport { Item } from \"devextreme-react/box\";\r\nimport { Column, Paging, Export, Pager, Editing } from \"devextreme-react/data-grid\";\r\n\r\nimport http from \"../../../utils/http\";\r\nimport Title from \"../../../components/shared/Title\";\r\nimport BlockHeader from \"../../../components/shared/BlockHeader\";\r\nimport { cellRender, cellRenderBold } from \"../../../utils/common\";\r\nimport { formatDate } from \"../../../data/app\";\r\nimport useAuthorization from '../../../hooks/useAuthorization';\r\nimport { resources } from '../../../data/app';\r\n\r\nconst StockByDate = (props) => {\r\n\r\n const [ authorized ] = useAuthorization( resources.verKardex );\r\n const [date, setDate] = useState(null); \r\n const [kardex, setKardex] = useState(undefined); \r\n const [loading, setLoading] = useState(false);\r\n\r\n const changeDate = e => {\r\n setDate(e.value)\r\n }\r\n\r\n const loadData = async()=>{\r\n if(date){\r\n setKardex([]);\r\n setLoading(true);\r\n const resp = await http('reports/StocksByDate').asPost({ date }); \r\n setKardex(resp);\r\n setLoading(false);\r\n\r\n } \r\n }\r\n\r\n useEffect(() => {\r\n loadData();\r\n }, [date]); \r\n\r\n const title ='Existencias por fecha'; \r\n\r\n return authorized(\r\n <div className=\"container big\">\r\n <Title title={title} />\r\n <BlockHeader title={title} showFavorite={true} {...props} /> \r\n\r\n <Box direction=\"row\" width=\"20%\" height={75}> \r\n <Item ratio={1}>\r\n <div className=\"ml-10\">\r\n <label>Seleccione la fecha de corte:</label>\r\n <DateBox type=\"date\" displayFormat={formatDate} openOnFieldClick={true} onValueChanged={changeDate}/>\r\n </div>\r\n </Item>\r\n </Box>\r\n { loading && <div className=\"text-center\">Cargando datos...</div> }\r\n <Box direction=\"row\" width=\"100%\" height={75}>\r\n\r\n <Item ratio={1}>\r\n <label>Reporte de existencias por fecha</label> \r\n <DataGrid\r\n\r\n id=\"gridContainer\"\r\n className=\"vgridContainer\"\r\n selection={{ mode: 'single' }}\r\n dataSource={kardex}\r\n showBorders={true}\r\n showRowLines={true}\r\n allowColumnResizing={true}\r\n hoverStateEnabled={true}\r\n > \r\n <Paging defaultPageSize={10} />\r\n <Pager\r\n showInfo={true}\r\n showPageSizeSelector={true}\r\n allowedPageSizes={[10, 20, 50,100,500]}\r\n />\r\n <Export enabled={true} fileName={title} allowExportSelectedData={true} /> \r\n <Column dataField=\"internalCode\" caption=\"Código\" width={90} />\r\n <Column dataField=\"location\" caption=\"Ubicación\" width={90} />\r\n <Column dataField=\"providerName\" caption=\"Proveedor\" width={90} />\r\n <Column dataField=\"reference\" caption=\"Factura\" width={90} />\r\n <Column dataField=\"name\" caption=\"Nombre\" />\r\n <Column dataField=\"categoryName\" caption=\"Categoria\" width={110} />\r\n <Column dataField=\"marcName\" caption=\"Marca\" width={110} />\r\n <Column dataField=\"um\" caption=\"UM\" width={110} />\r\n \r\n <Column dataField=\"stocks\" caption=\"Cantidad\" width={75}/>\r\n <Column dataField=\"cost\" caption=\"Costo\" cellRender={cellRender()} width={100} alignment=\"right\" />\r\n <Column dataField=\"price\" caption=\"Precio\" cellRender={cellRender()} width={100} alignment=\"right\" />\r\n <Column dataField=\"total\" caption=\"Total\" cellRender={cellRenderBold()} width={115} alignment=\"right\"/>\r\n \r\n <Editing\r\n mode=\"popup\"\r\n allowUpdating={false} \r\n useIcons={true}\r\n >\r\n </Editing> \r\n </DataGrid> \r\n </Item> \r\n </Box> \r\n </div>\r\n );\r\n}\r\n\r\nexport default StockByDate;\r\n","// react\r\nimport React from 'react';\r\n\r\n// third-party\r\nimport { Switch } from 'react-router-dom';\r\nimport { ToastContainer } from 'react-toastify';\r\nimport HomePage from './home/HomePage';\r\n\r\n// application\r\nimport Footer from './footer';\r\nimport Header from './header';\r\n\r\nimport catalogos from '../data/catalogos';\r\nimport { typeTraslate } from '../data/enums';\r\nimport Catalogo from './shared/Catalogos';\r\nimport { _path } from '../data/headerNavigation';\r\nimport PrivateRoute from './header/PrivateRouter';\r\nimport Paciente from './search/Paciente';\r\nimport OutPutProducts from '../views/movimientos/outPutProducts';\r\nimport Products from '../views/products';\r\nimport Users from '../views/users';\r\nimport Roles from '../views/roles';\r\nimport Resources from '../views/resources';\r\nimport Rates from '../views/rates';\r\nimport initProduct from '../views/movimientos/initProducts/initProduct';\r\nimport Providers from '../views/providers/Providers';\r\nimport Traslates from '../views/movimientos/traslates';\r\nimport Kardex from '../views/reports/kardex';\r\nimport Existencias from '../views/reports/stocks';\r\nimport initAdjustments from '../views/movimientos/initProducts/initAdjustments';\r\nimport Clients from '../views/clients';\r\nimport Bills from '../views/bills';\r\nimport NotasCreditos from '../views/notascreditos';\r\nimport Receipts from '../views/receipts';\r\nimport Areas from '../views/areas';\r\nimport Vendors from '../views/vendors/Vendors';\r\nimport Stock from '../views/reports/stocks/Stock';\r\nimport NuevoQuickly from '../views/bills/NuevoQuickly';\r\nimport Navig from './navigator/Navig';\r\nimport AppConfig from '../views/app/AppConfig';\r\nimport Comision from '../views/reports/facturas/Comision';\r\nimport ProductsInfo from '../views/reports/facturas/ProductsInfo';\r\nimport Clasifications from '../views/clasifications';\r\nimport Pending from '../views/clients/Pending';\r\nimport MobileMenu from './mobile/MobileMenu';\r\nimport MobileHeader from './mobile/MobileHeader';\r\nimport Ventas from '../views/bills/Ventas';\r\nimport Cuts from '../views/cuts';\r\nimport Ejecute from '../views/cuts/Ejecute';\r\nimport Compras from '../views/reports/compras/Compras';\r\nimport Cotizaciones from '../views/prebills/Cotizaciones';\r\nimport PreVentas from '../views/prebills/PreVentas';\r\nimport Purchases from '../views/purchases';\r\nimport Authorizations from '../views/app/Authorizations';\r\nimport MobileCotizaciones from '../views/mobile/prebills/MobileCotizaciones';\r\nimport MobilePreVentas from '../views/mobile/prebills/PreVentas';\r\nimport ComisionFamilies from '../views/comisionFamilies/ComisionFamilies';\r\nimport Recibos from '../views/bills/Recibos';\r\nimport MobilePending from '../views/mobile/clients/MobilePending';\r\nimport ClientsMobile from '../views/clients/ClientsMobile';\r\nimport Ingresos from '../views/reports/stocks/Ingresos';\r\nimport DashboardSales from '../views/reports/stocks/DashboardSales';\r\nimport BillUpdates from '../views/bills/BillUpdates';\r\nimport ImageProduct from '../views/products/ImageProduct';\r\nimport StockByDate from '../views/reports/stockByDate/StockByDate';\r\n\r\nfunction Layout(props) {\r\n const { headerLayout } = props;\r\n\r\n const PrintCatalogos = catalogos.map(c => {\r\n return <PrivateRoute key={c.name} exact path={`${_path.ROOTMAIN}/${c.name}`} render={(props) => (\r\n <Catalogo {...props} {...c} />\r\n )} />\r\n });\r\n\r\n let prop = (path, component) => ({exact:true, path : `${_path.ROOTMAIN}/${path}`, component });\r\n\r\n const builRoute = (path, component) => <PrivateRoute key={path} {...prop(path, component) } /> ;\r\n\r\n const routes = [\r\n builRoute('', HomePage) \r\n ,builRoute('areas', Areas) \r\n ,builRoute('clasificaciones', Clasifications) \r\n ,builRoute('paciente/:id', Paciente) \r\n ,builRoute(`products/get/image/:id`, ImageProduct) \r\n ,builRoute('facturas', Bills) \r\n ,builRoute('notascreditos', NotasCreditos) \r\n ,builRoute('cotizaciones', Cotizaciones)\r\n ,builRoute('pre-ventas', PreVentas)\r\n ,builRoute('mobile/cotizaciones', MobileCotizaciones)\r\n ,builRoute('mobile/pre-ventas', MobilePreVentas)\r\n ,builRoute('facturas-updates', BillUpdates) \r\n ,builRoute('vendedores', Vendors) \r\n ,builRoute('recibos', Receipts) \r\n ,builRoute('clientes', Clients) \r\n ,builRoute('mobile/clientes', ClientsMobile) \r\n ,builRoute('clientes/pending', Pending) \r\n ,builRoute('clientes/mobile/pending', MobilePending) \r\n ,builRoute('movimientos/entradas', initAdjustments)\r\n ,builRoute('movimientos/salidas', OutPutProducts)\r\n //,builRoute('movimientos/entradas', InPutProducts)\r\n ,builRoute('movimientos/inv-inicial', initProduct)\r\n ,builRoute('compras', Purchases)\r\n ,builRoute('productos', Products)\r\n ,builRoute('tasa-de-cambio', Rates)\r\n ,builRoute('proveedores', Providers)\r\n ,builRoute('usuarios', Users)\r\n ,builRoute('roles', Roles)\r\n ,builRoute('facturas/reportes/ventas', Ventas)\r\n ,builRoute('facturas/reportes/recibos', Recibos)\r\n ,builRoute('facturas/reportes/dashboard', DashboardSales)\r\n ,builRoute('permisos', Resources)\r\n ,builRoute('inventario/reportes/kardex', Kardex)\r\n ,builRoute('inventario/reportes/existencias', Existencias)\r\n ,builRoute('inventario/reportes/existencias-fecha', StockByDate)\r\n ,builRoute('inventario/reportes/stock', Stock)\r\n ,builRoute('inventario/reportes/ingresos', Ingresos)\r\n ,builRoute('facturas/reportes/comisiones', Comision)\r\n ,builRoute('facturas/reportes/productos-consolidados', ProductsInfo)\r\n ,builRoute('cierres-caja', Cuts)\r\n ,builRoute('cierre/ejecute', Ejecute)\r\n ,builRoute('compras/reportes/', Compras)\r\n ,builRoute('authorizations', Authorizations)\r\n\r\n ,builRoute('navig', Navig)\r\n ,builRoute('config', AppConfig)\r\n ,builRoute('comission-config', ComisionFamilies)\r\n \r\n ];\r\n return (\r\n <React.Fragment> \r\n\r\n <ToastContainer autoClose={5000} hideProgressBar />\r\n\r\n <MobileMenu layout={headerLayout}/>\r\n\r\n <div className=\"site\">\r\n <header className=\"site__header d-lg-none\">\r\n <MobileHeader />\r\n </header>\r\n\r\n <header className=\"site__header d-lg-block d-none\">\r\n <Header layout={headerLayout} />\r\n </header>\r\n\r\n <div className=\"site__body\">\r\n \r\n <Switch>\r\n {PrintCatalogos} \r\n {routes} \r\n <PrivateRoute key={1} exact path={`${_path.ROOTMAIN}/movimientos/traslados`} render={props => <Traslates {...props} type={typeTraslate.create} /> } /> \r\n <PrivateRoute key={2} exact path={`${_path.ROOTMAIN}/movimientos/despacho`} render={props => <Traslates {...props} type={typeTraslate.update}/> } /> \r\n\r\n </Switch>\r\n </div>\r\n\r\n <footer className=\"site__footer\">\r\n <Footer showInfo={true} />\r\n </footer>\r\n </div>\r\n </React.Fragment>\r\n\r\n )\r\n}\r\n\r\nexport default Layout;\r\n\r\n","export const esMessages = {\r\n \"Yes\": \"Sí\",\r\n \"No\": \"No\",\r\n \"Cancel\": \"Cancelar\",\r\n \"Clear\": \"Limpiar\",\r\n \"Done\": \"Hecho\",\r\n \"Loading\": \"Cargando...\",\r\n \"Select\": \"Seleccionar...\",\r\n \"Search\": \"Buscar\",\r\n \"Back\": \"Volver\",\r\n \"OK\": \"Aceptar\",\r\n \"dxCollectionWidget-noDataText\": \"Sin datos para mostrar\",\r\n \"dxDropDownEditor-selectLabel\": \"Seleccionar\",\r\n \"validation-required\": \"Obligatorio\",\r\n \"validation-required-formatted\": \"{0} es obligatorio\",\r\n \"validation-numeric\": \"Valor debe ser un número\",\r\n \"validation-numeric-formatted\": \"{0} debe ser un número\",\r\n \"validation-range\": \"Valor fuera de rango\",\r\n \"validation-range-formatted\": \"{0} fuera de rango\",\r\n \"validation-stringLength\": \"El tamaño del valor es incorrecto\",\r\n \"validation-stringLength-formatted\": \"El tamaño de {0} es incorrecto\",\r\n \"validation-custom\": \"Valor inválido\",\r\n \"validation-custom-formatted\": \"{0} inválido\",\r\n \"validation-async\": \"Valor inválido\",\r\n \"validation-async-formatted\": \"{0} inválido\",\r\n \"validation-compare\": \"Valores no coinciden\",\r\n \"validation-compare-formatted\": \"{0} no coinciden\",\r\n \"validation-pattern\": \"Valor no coincide con el patrón\",\r\n \"validation-pattern-formatted\": \"{0} no coincide con el patrón\",\r\n \"validation-email\": \"Email inválido\",\r\n \"validation-email-formatted\": \"{0} inválido\",\r\n \"validation-mask\": \"Valor inválido\",\r\n \"dxLookup-searchPlaceholder\": \"Cantidad mínima de caracteres: {0}\",\r\n \"dxList-pullingDownText\": \"Desliza hacia abajo para actualizar...\",\r\n \"dxList-pulledDownText\": \"Suelta para actualizar...\",\r\n \"dxList-refreshingText\": \"Actualizando...\",\r\n \"dxList-pageLoadingText\": \"Cargando...\",\r\n \"dxList-nextButtonText\": \"Más\",\r\n \"dxList-selectAll\": \"Seleccionar Todo\",\r\n \"dxListEditDecorator-delete\": \"Eliminar\",\r\n \"dxListEditDecorator-more\": \"Más\",\r\n \"dxScrollView-pullingDownText\": \"Desliza hacia abajo para actualizar...\",\r\n \"dxScrollView-pulledDownText\": \"Suelta para actualizar...\",\r\n \"dxScrollView-refreshingText\": \"Actualizando...\",\r\n \"dxScrollView-reachBottomText\": \"Cargando...\",\r\n \"dxDateBox-simulatedDataPickerTitleTime\": \"Seleccione hora\",\r\n \"dxDateBox-simulatedDataPickerTitleDate\": \"Seleccione fecha\",\r\n \"dxDateBox-simulatedDataPickerTitleDateTime\": \"Seleccione fecha y hora\",\r\n \"dxDateBox-validation-datetime\": \"Valor debe ser una fecha u hora\",\r\n \"dxFileUploader-selectFile\": \"Seleccionar archivo\",\r\n \"dxFileUploader-dropFile\": \"o arrastre un archivo aquí\",\r\n \"dxFileUploader-bytes\": \"bytes\",\r\n \"dxFileUploader-kb\": \"kb\",\r\n \"dxFileUploader-Mb\": \"Mb\",\r\n \"dxFileUploader-Gb\": \"Gb\",\r\n \"dxFileUploader-upload\": \"Subir\",\r\n \"dxFileUploader-uploaded\": \"Subido\",\r\n \"dxFileUploader-readyToUpload\": \"Listo para subir\",\r\n \"dxFileUploader-uploadFailedMessage\": \"Falla ao subir\",\r\n \"dxFileUploader-invalidFileExtension\": \"Tipo de archivo no está permitido\",\r\n \"dxFileUploader-invalidMaxFileSize\": \"Archivo es muy grande\",\r\n \"dxFileUploader-invalidMinFileSize\": \"Archivo es muy pequeño\",\r\n \"dxRangeSlider-ariaFrom\": \"Desde\",\r\n \"dxRangeSlider-ariaTill\": \"Hasta\",\r\n \"dxSwitch-switchedOnText\": \"ENCENDIDO\",\r\n \"dxSwitch-switchedOffText\": \"APAGADO\",\r\n \"dxForm-optionalMark\": \"opcional\",\r\n \"dxForm-requiredMessage\": \"{0} es obligatorio\",\r\n \"dxNumberBox-invalidValueMessage\": \"Valor debe ser un número\",\r\n \"dxDataGrid-columnChooserTitle\": \"Selector de Columnas\",\r\n \"dxDataGrid-columnChooserEmptyText\": \"Arrastra una columna aquí para ocultarla\",\r\n \"dxDataGrid-groupContinuesMessage\": \"Continúa en la página siguiente\",\r\n \"dxDataGrid-groupContinuedMessage\": \"Continuación de la página anterior\",\r\n \"dxDataGrid-groupHeaderText\": \"Agrupar por esta columna\",\r\n \"dxDataGrid-ungroupHeaderText\": \"Desagrupar\",\r\n \"dxDataGrid-ungroupAllText\": \"Desagrupar Todo\",\r\n \"dxDataGrid-editingEditRow\": \"Modificar\",\r\n \"dxDataGrid-editingSaveRowChanges\": \"Guardar\",\r\n \"dxDataGrid-editingCancelRowChanges\": \"Cancelar\",\r\n \"dxDataGrid-editingDeleteRow\": \"Eliminar\",\r\n \"dxDataGrid-editingUndeleteRow\": \"Recuperar\",\r\n \"dxDataGrid-editingConfirmDeleteMessage\": \"¿Está seguro que desea eliminar este registro?\",\r\n \"dxDataGrid-validationCancelChanges\": \"Cancelar cambios\",\r\n \"dxDataGrid-groupPanelEmptyText\": \"Arrastra una columna aquí para agrupar por ella\",\r\n \"dxDataGrid-noDataText\": \"Sin datos\",\r\n \"dxDataGrid-searchPanelPlaceholder\": \"Buscar...\",\r\n \"dxDataGrid-filterRowShowAllText\": \"(Todos)\",\r\n \"dxDataGrid-filterRowResetOperationText\": \"Reestablecer\",\r\n \"dxDataGrid-filterRowOperationEquals\": \"Igual\",\r\n \"dxDataGrid-filterRowOperationNotEquals\": \"No es igual\",\r\n \"dxDataGrid-filterRowOperationLess\": \"Menor que\",\r\n \"dxDataGrid-filterRowOperationLessOrEquals\": \"Menor o igual a\",\r\n \"dxDataGrid-filterRowOperationGreater\": \"Mayor que\",\r\n \"dxDataGrid-filterRowOperationGreaterOrEquals\": \"Mayor o igual a\",\r\n \"dxDataGrid-filterRowOperationStartsWith\": \"Empieza con\",\r\n \"dxDataGrid-filterRowOperationContains\": \"Contiene\",\r\n \"dxDataGrid-filterRowOperationNotContains\": \"No contiene\",\r\n \"dxDataGrid-filterRowOperationEndsWith\": \"Termina con\",\r\n \"dxDataGrid-filterRowOperationBetween\": \"Entre\",\r\n \"dxDataGrid-filterRowOperationBetweenStartText\": \"Inicio\",\r\n \"dxDataGrid-filterRowOperationBetweenEndText\": \"Fin\",\r\n \"dxDataGrid-applyFilterText\": \"Filtrar\",\r\n \"dxDataGrid-trueText\": \"verdadero\",\r\n \"dxDataGrid-falseText\": \"falso\",\r\n \"dxDataGrid-sortingAscendingText\": \"Orden Ascendente\",\r\n \"dxDataGrid-sortingDescendingText\": \"Orden Descendente\",\r\n \"dxDataGrid-sortingClearText\": \"Limpiar Ordenamiento\",\r\n \"dxDataGrid-editingSaveAllChanges\": \"Guardar cambios\",\r\n \"dxDataGrid-editingCancelAllChanges\": \"Descartar cambios\",\r\n \"dxDataGrid-editingAddRow\": \"Agregar una fila\",\r\n \"dxDataGrid-summaryMin\": \"Mín: {0}\",\r\n \"dxDataGrid-summaryMinOtherColumn\": \"Mín de {1} es {0}\",\r\n \"dxDataGrid-summaryMax\": \"Máx: {0}\",\r\n \"dxDataGrid-summaryMaxOtherColumn\": \"Máx de {1} es {0}\",\r\n \"dxDataGrid-summaryAvg\": \"Prom: {0}\",\r\n \"dxDataGrid-summaryAvgOtherColumn\": \"Prom de {1} es {0}\",\r\n \"dxDataGrid-summarySum\": \"Suma: {0}\",\r\n \"dxDataGrid-summarySumOtherColumn\": \"Suma de {1} es {0}\",\r\n \"dxDataGrid-summaryCount\": \"Cantidad: {0}\",\r\n \"dxDataGrid-columnFixingFix\": \"Anclar\",\r\n \"dxDataGrid-columnFixingUnfix\": \"Desanclar\",\r\n \"dxDataGrid-columnFixingLeftPosition\": \"A la izquierda\",\r\n \"dxDataGrid-columnFixingRightPosition\": \"A la derecha\",\r\n \"dxDataGrid-exportTo\": \"Exportar\",\r\n \"dxDataGrid-exportToExcel\": \"Exportar a archivo Excel\",\r\n \"dxDataGrid-excelFormat\": \"Archivo Excel\",\r\n \"dxDataGrid-selectedRows\": \"Filas seleccionadas\",\r\n \"dxDataGrid-exportSelectedRows\": \"Exportar filas seleccionadas\",\r\n \"dxDataGrid-exportAll\": \"Exportar todo\",\r\n \"dxDataGrid-headerFilterEmptyValue\": \"(Vacio)\",\r\n \"dxDataGrid-headerFilterOK\": \"Aceptar\",\r\n \"dxDataGrid-headerFilterCancel\": \"Cancelar\",\r\n \"dxDataGrid-ariaColumn\": \"Columna\",\r\n \"dxDataGrid-ariaValue\": \"Valor\",\r\n \"dxDataGrid-ariaFilterCell\": \"Celda de filtro\",\r\n \"dxDataGrid-ariaCollapse\": \"Colapsar\",\r\n \"dxDataGrid-ariaExpand\": \"Expandir\",\r\n \"dxDataGrid-ariaDataGrid\": \"Tabla de datos\",\r\n \"dxDataGrid-ariaSearchInGrid\": \"Buscar en la tabla de datos\",\r\n \"dxDataGrid-ariaSelectAll\": \"Seleccionar todo\",\r\n \"dxDataGrid-ariaSelectRow\": \"Seleccionar fila\",\r\n \"dxDataGrid-filterBuilderPopupTitle\": \"Constructor de filtro\",\r\n \"dxDataGrid-filterPanelCreateFilter\": \"Crear filtro\",\r\n \"dxDataGrid-filterPanelClearFilter\": \"Limpiar filtro\",\r\n \"dxDataGrid-filterPanelFilterEnabledHint\": \"Habilitar filtro\",\r\n \"dxTreeList-ariaTreeList\": \"Lista de árbol\",\r\n \"dxTreeList-editingAddRowToNode\": \"Añadir\",\r\n \"dxPager-infoText\": \"Página {0} de {1} ({2} ítems)\",\r\n \"dxPager-pagesCountText\": \"de\",\r\n \"dxPivotGrid-grandTotal\": \"Gran Total\",\r\n \"dxPivotGrid-total\": \"{0} Total\",\r\n \"dxPivotGrid-fieldChooserTitle\": \"Selector de Campos\",\r\n \"dxPivotGrid-showFieldChooser\": \"Mostrar Selector de Campos\",\r\n \"dxPivotGrid-expandAll\": \"Expandir Todo\",\r\n \"dxPivotGrid-collapseAll\": \"Colapsar Todo\",\r\n \"dxPivotGrid-sortColumnBySummary\": \"Ordenar \\\"{0}\\\" por esta columna\",\r\n \"dxPivotGrid-sortRowBySummary\": \"Ordenar \\\"{0}\\\" por esta fila\",\r\n \"dxPivotGrid-removeAllSorting\": \"Remover ordenamiento\",\r\n \"dxPivotGrid-dataNotAvailable\": \"N/A\",\r\n \"dxPivotGrid-rowFields\": \"Campos de fila\",\r\n \"dxPivotGrid-columnFields\": \"Campos de columna\",\r\n \"dxPivotGrid-dataFields\": \"Campos de dato\",\r\n \"dxPivotGrid-filterFields\": \"Campos de filtro\",\r\n \"dxPivotGrid-allFields\": \"Todos los campos\",\r\n \"dxPivotGrid-columnFieldArea\": \"Arrastra campos de columna aquí\",\r\n \"dxPivotGrid-dataFieldArea\": \"Arrastra campos de dato aquí\",\r\n \"dxPivotGrid-rowFieldArea\": \"Arrastra campos de fila aquí\",\r\n \"dxPivotGrid-filterFieldArea\": \"Arrastra campos de filtro aquí\",\r\n \"dxScheduler-editorLabelTitle\": \"Asunto\",\r\n \"dxScheduler-editorLabelStartDate\": \"Fecha inicial\",\r\n \"dxScheduler-editorLabelEndDate\": \"Fecha final\",\r\n \"dxScheduler-editorLabelDescription\": \"Descripción\",\r\n \"dxScheduler-editorLabelRecurrence\": \"Repetir\",\r\n \"dxScheduler-openAppointment\": \"Abrir cita\",\r\n \"dxScheduler-recurrenceNever\": \"Nunca\",\r\n \"dxScheduler-recurrenceDaily\": \"Diario\",\r\n \"dxScheduler-recurrenceWeekly\": \"Semanal\",\r\n \"dxScheduler-recurrenceMonthly\": \"Mensual\",\r\n \"dxScheduler-recurrenceYearly\": \"Anual\",\r\n \"dxScheduler-recurrenceRepeatEvery\": \"Cada\",\r\n \"dxScheduler-recurrenceRepeatOn\": \"Repeat On\",\r\n \"dxScheduler-recurrenceEnd\": \"Terminar repetición\",\r\n \"dxScheduler-recurrenceAfter\": \"Después\",\r\n \"dxScheduler-recurrenceOn\": \"En\",\r\n \"dxScheduler-recurrenceRepeatDaily\": \"día(s)\",\r\n \"dxScheduler-recurrenceRepeatWeekly\": \"semana(s)\",\r\n \"dxScheduler-recurrenceRepeatMonthly\": \"mes(es)\",\r\n \"dxScheduler-recurrenceRepeatYearly\": \"año(s)\",\r\n \"dxScheduler-switcherDay\": \"Día\",\r\n \"dxScheduler-switcherWeek\": \"Semana\",\r\n \"dxScheduler-switcherWorkWeek\": \"Semana Laboral\",\r\n \"dxScheduler-switcherMonth\": \"Mes\",\r\n \"dxScheduler-switcherAgenda\": \"Agenda\",\r\n \"dxScheduler-switcherTimelineDay\": \"Línea de tiempo Día\",\r\n \"dxScheduler-switcherTimelineWeek\": \"Línea de tiempo Semana\",\r\n \"dxScheduler-switcherTimelineWorkWeek\": \"Línea de tiempo Semana Laboral\",\r\n \"dxScheduler-switcherTimelineMonth\": \"Línea de tiempo Mes\",\r\n \"dxScheduler-recurrenceRepeatOnDate\": \"en la fecha\",\r\n \"dxScheduler-recurrenceRepeatCount\": \"ocurrencia(s)\",\r\n \"dxScheduler-allDay\": \"Todo el día\",\r\n \"dxScheduler-confirmRecurrenceEditMessage\": \"¿Quiere modificar solo esta cita o toda la serie?\",\r\n \"dxScheduler-confirmRecurrenceDeleteMessage\": \"¿Quiere eliminar solo esta cita o toda la serie?\",\r\n \"dxScheduler-confirmRecurrenceEditSeries\": \"Modificar serie\",\r\n \"dxScheduler-confirmRecurrenceDeleteSeries\": \"Eliminar serie\",\r\n \"dxScheduler-confirmRecurrenceEditOccurrence\": \"Modificar cita\",\r\n \"dxScheduler-confirmRecurrenceDeleteOccurrence\": \"Eliminar cita\",\r\n \"dxScheduler-noTimezoneTitle\": \"Sin zona horaria\",\r\n \"dxScheduler-moreAppointments\": \"{0} más\",\r\n \"dxCalendar-todayButtonText\": \"Hoy\",\r\n \"dxCalendar-ariaWidgetName\": \"Calendario\",\r\n \"dxColorView-ariaRed\": \"Rojo\",\r\n \"dxColorView-ariaGreen\": \"Verde\",\r\n \"dxColorView-ariaBlue\": \"Azul\",\r\n \"dxColorView-ariaAlpha\": \"Transparencia\",\r\n \"dxColorView-ariaHex\": \"Código del color\",\r\n \"dxTagBox-selected\": \"{0} seleccionado\",\r\n \"dxTagBox-allSelected\": \"Todos seleccionados ({0})\",\r\n \"dxTagBox-moreSelected\": \"{0} más\",\r\n \"vizExport-printingButtonText\": \"Imprimir\",\r\n \"vizExport-titleMenuText\": \"Exportar/Imprimir\",\r\n \"vizExport-exportButtonText\": \"Archivo {0}\",\r\n \"dxFilterBuilder-and\": \"Y\",\r\n \"dxFilterBuilder-or\": \"O\",\r\n \"dxFilterBuilder-notAnd\": \"NO Y\",\r\n \"dxFilterBuilder-notOr\": \"NO O\",\r\n \"dxFilterBuilder-addCondition\": \"Añadir condición\",\r\n \"dxFilterBuilder-addGroup\": \"Añadir Grupo\",\r\n \"dxFilterBuilder-enterValueText\": \"<rellene con un valor>\",\r\n \"dxFilterBuilder-filterOperationEquals\": \"Igual\",\r\n \"dxFilterBuilder-filterOperationNotEquals\": \"Diferente\",\r\n \"dxFilterBuilder-filterOperationLess\": \"Menos que\",\r\n \"dxFilterBuilder-filterOperationLessOrEquals\": \"Menor o igual que\",\r\n \"dxFilterBuilder-filterOperationGreater\": \"Más grande que\",\r\n \"dxFilterBuilder-filterOperationGreaterOrEquals\": \"Mayor o igual que\",\r\n \"dxFilterBuilder-filterOperationStartsWith\": \"Comienza con\",\r\n \"dxFilterBuilder-filterOperationContains\": \"Contiene\",\r\n \"dxFilterBuilder-filterOperationNotContains\": \"No contiene\",\r\n \"dxFilterBuilder-filterOperationEndsWith\": \"Termina con\",\r\n \"dxFilterBuilder-filterOperationIsBlank\": \"Vacío\",\r\n \"dxFilterBuilder-filterOperationIsNotBlank\": \"No vacío\",\r\n \"dxFilterBuilder-filterOperationBetween\": \"Entre\",\r\n \"dxFilterBuilder-filterOperationAnyOf\": \"Alguno de\",\r\n \"dxFilterBuilder-filterOperationNoneOf\": \"Ningún de\",\r\n \"dxHtmlEditor-dialogColorCaption\": \"Cambiar el color de la fuente\",\r\n \"dxHtmlEditor-dialogBackgroundCaption\": \"Cambiar el color de fondo\",\r\n \"dxHtmlEditor-dialogLinkCaption\": \"Añadir enlace\",\r\n \"dxHtmlEditor-dialogLinkUrlField\": \"URL\",\r\n \"dxHtmlEditor-dialogLinkTextField\": \"Texto\",\r\n \"dxHtmlEditor-dialogLinkTargetField\": \"Abrir enlace en nueva ventana\",\r\n \"dxHtmlEditor-dialogImageCaption\": \"Añadir imagen\",\r\n \"dxHtmlEditor-dialogImageUrlField\": \"URL\",\r\n \"dxHtmlEditor-dialogImageAltField\": \"Texto alternativo\",\r\n \"dxHtmlEditor-dialogImageWidthField\": \"Anchura (px)\",\r\n \"dxHtmlEditor-dialogImageHeightField\": \"Altura (px)\",\r\n \"dxHtmlEditor-heading\": \"Encabezamiento\",\r\n \"dxHtmlEditor-normalText\": \"Texto normal\",\r\n\r\n \"dxFileManager-newFolderName\": \"Sin título\",\r\n \"dxFileManager-rootFolderName\": \"Archivos\",\r\n \"dxFileManager-errorNoAccess\": \"Acceso denegado. La operación no se puede completar.\",\r\n \"dxFileManager-errorDirectoryExistsFormat\": \"Carpeta {0} ya existe.\",\r\n \"dxFileManager-errorFileExistsFormat\": \"Archivo {0} ya existe.\",\r\n \"dxFileManager-errorFileNotFoundFormat\": \"Archivo {0} no encontrado.\",\r\n \"dxFileManager-errorDirectoryNotFoundFormat\": \"TODO\",\r\n \"dxFileManager-errorWrongFileExtension\": \"TODO\",\r\n \"dxFileManager-errorMaxFileSizeExceeded\": \"TODO\",\r\n \"dxFileManager-errorDefault\": \"Error no especificado\",\r\n\r\n \"dxDiagram-categoryGeneral\": \"TODO\",\r\n \"dxDiagram-categoryFlowchart\": \"TODO\",\r\n \"dxDiagram-categoryOrgChart\": \"TODO\",\r\n \"dxDiagram-categoryContainers\": \"TODO\",\r\n \"dxDiagram-categoryCustom\": \"TODO\",\r\n \"dxDiagram-commandProperties\": \"TODO\",\r\n \"dxDiagram-commandExport\": \"TODO\",\r\n \"dxDiagram-commandExportToSvg\": \"TODO\",\r\n \"dxDiagram-commandExportToPng\": \"TODO\",\r\n \"dxDiagram-commandExportToJpg\": \"TODO\",\r\n \"dxDiagram-commandUndo\": \"TODO\",\r\n \"dxDiagram-commandRedo\": \"TODO\",\r\n \"dxDiagram-commandFontName\": \"TODO\",\r\n \"dxDiagram-commandFontSize\": \"TODO\",\r\n \"dxDiagram-commandBold\": \"TODO\",\r\n \"dxDiagram-commandItalic\": \"TODO\",\r\n \"dxDiagram-commandUnderline\": \"TODO\",\r\n \"dxDiagram-commandTextColor\": \"TODO\",\r\n \"dxDiagram-commandLineColor\": \"TODO\",\r\n \"dxDiagram-commandFillColor\": \"TODO\",\r\n \"dxDiagram-commandAlignLeft\": \"TODO\",\r\n \"dxDiagram-commandAlignCenter\": \"TODO\",\r\n \"dxDiagram-commandAlignRight\": \"TODO\",\r\n \"dxDiagram-commandConnectorLineType\": \"TODO\",\r\n \"dxDiagram-commandConnectorLineStraight\": \"TODO\",\r\n \"dxDiagram-commandConnectorLineOrthogonal\": \"TODO\",\r\n \"dxDiagram-commandConnectorLineStart\": \"TODO\",\r\n \"dxDiagram-commandConnectorLineEnd\": \"TODO\",\r\n \"dxDiagram-commandConnectorLineNone\": \"TODO\",\r\n \"dxDiagram-commandConnectorLineArrow\": \"TODO\",\r\n \"dxDiagram-commandAutoLayout\": \"TODO\",\r\n \"dxDiagram-commandAutoLayoutTree\": \"TODO\",\r\n \"dxDiagram-commandAutoLayoutLayered\": \"TODO\",\r\n \"dxDiagram-commandAutoLayoutHorizontal\": \"TODO\",\r\n \"dxDiagram-commandAutoLayoutVertical\": \"TODO\",\r\n \"dxDiagram-commandFullscreen\": \"TODO\",\r\n \"dxDiagram-commandUnits\": \"TODO\",\r\n \"dxDiagram-commandPageSize\": \"TODO\",\r\n \"dxDiagram-commandPageOrientation\": \"TODO\",\r\n \"dxDiagram-commandPageOrientationLandscape\": \"TODO\",\r\n \"dxDiagram-commandPageOrientationPortrait\": \"TODO\",\r\n \"dxDiagram-commandPageColor\": \"TODO\",\r\n \"dxDiagram-commandShowGrid\": \"TODO\",\r\n \"dxDiagram-commandSnapToGrid\": \"TODO\",\r\n \"dxDiagram-commandGridSize\": \"TODO\",\r\n \"dxDiagram-commandZoomLevel\": \"TODO\",\r\n \"dxDiagram-commandAutoZoom\": \"TODO\",\r\n \"dxDiagram-commandSimpleView\": \"TODO\",\r\n \"dxDiagram-commandCut\": \"TODO\",\r\n \"dxDiagram-commandCopy\": \"TODO\",\r\n \"dxDiagram-commandPaste\": \"TODO\",\r\n \"dxDiagram-commandSelectAll\": \"TODO\",\r\n \"dxDiagram-commandDelete\": \"TODO\",\r\n \"dxDiagram-commandBringToFront\": \"TODO\",\r\n \"dxDiagram-commandSendToBack\": \"TODO\",\r\n \"dxDiagram-commandLock\": \"TODO\",\r\n \"dxDiagram-commandUnlock\": \"TODO\",\r\n \"dxDiagram-commandInsertShapeImage\": \"TODO\",\r\n \"dxDiagram-commandEditShapeImage\": \"TODO\",\r\n \"dxDiagram-commandDeleteShapeImage\": \"TODO\",\r\n \"dxDiagram-unitIn\": \"TODO\",\r\n \"dxDiagram-unitCm\": \"TODO\",\r\n \"dxDiagram-unitPx\": \"TODO\",\r\n \"dxDiagram-dialogButtonOK\": \"TODO\",\r\n \"dxDiagram-dialogButtonCancel\": \"TODO\",\r\n \"dxDiagram-dialogInsertShapeImageTitle\": \"TODO\",\r\n \"dxDiagram-dialogEditShapeImageTitle\": \"TODO\",\r\n \"dxDiagram-dialogEditShapeImageSelectButton\": \"TODO\",\r\n \"dxDiagram-dialogEditShapeImageLabelText\": \"TODO\"\r\n}","import React, { useState, useEffect } from \"react\";\r\nimport { userService } from \"../../services/user.service\";\r\nimport notify from \"devextreme/ui/notify\";\r\nimport { useDispatch, useSelector } from \"react-redux\";\r\nimport * as actions from '../../store/user/userActions';\r\nimport { ToastContainer } from \"react-toastify\";\r\nimport { Link } from 'react-router-dom';\r\nimport { getAppInfo } from \"../../store/app/appActions\";\r\nimport http from \"../../utils/http\";\r\n\r\nfunction Login(props) {\r\n\r\n let username = props.location.state?.username;\r\n\r\n const { appInfo, } = useSelector(store => store);\r\n\r\n const dispatch = useDispatch();\r\n const [user, setUser] = useState({ username: username ? username : \"\", password: \"\" });\r\n const [loading, setLoading] = useState(false);\r\n const [version, setVersion] = useState('Cargando...');\r\n\r\n const onValueChange = e => {\r\n\r\n setUser({\r\n ...user,\r\n [e.target.name]: e.target.value\r\n });\r\n\r\n }\r\n\r\n const sendUser = e => {\r\n e.preventDefault();\r\n setLoading(true);\r\n userService.login(user)\r\n .then(userResp => {\r\n\r\n dispatch(actions.updateUser({ username: userResp.username, areaId : userResp.areaId, area : userResp.area }));\r\n if (userResp.mustChangePassword) {\r\n\r\n props.history.push({ pathname: '/account/password', state: { username: userResp.username } });\r\n \r\n }else{\r\n \r\n let pathname = (props?.location?.state?.from?.pathname || '/app');\r\n \r\n pathname = pathname.includes('login') ? '/app' : pathname;\r\n \r\n props.history.push({ pathname });\r\n\r\n }\r\n\r\n }).catch(err => {\r\n setLoading(false)\r\n notify(err, \"error\")\r\n });\r\n\r\n }\r\n\r\n useEffect(() => {\r\n http('about/get-info').asGet()\r\n .then(resp => {\r\n setVersion(resp.version);\r\n })\r\n .catch(error => error);\r\n }, [0]);\r\n\r\n return (\r\n <React.Fragment>\r\n <ToastContainer autoClose={5000} hideProgressBar />\r\n <div className=\"wrapper-login\">\r\n <form className=\"form-signin\" onSubmit={sendUser}>\r\n <div className=\"imglog\">\r\n <img className=\"nav-panel-logo\" width={310} src={require('../../svg/logo.png')} />\r\n </div>\r\n <div style={{ paddingTop: 20 }}>\r\n <h4>Iniciar sesión</h4>\r\n <input value={user.username} onChange={onValueChange} type=\"text\" className=\"form-control\" name=\"username\" placeholder=\"Usuario\" required autoFocus={true} />\r\n <input value={user.password} onChange={onValueChange} type=\"password\" className=\"form-control\" name=\"password\" placeholder=\"Contraseña\" required />\r\n </div>\r\n <input\r\n className=\"btn btn-lg btn-primary btn-block custom-button\" \r\n type=\"submit\" \r\n value={loading ? \"Iniciando...\" : \"Login\"} \r\n disabled={loading}/>\r\n <br/>\r\n <Link to={'/account/resetpassword'} >Olvidaste tu contraseña?</Link>\r\n <div style={{color:'#d1d1d1',marginTop:20, fontSize:'12px', textAlign: 'center'}}>\r\n Versión {version}\r\n </div>\r\n </form>\r\n </div>\r\n \r\n </React.Fragment>\r\n );\r\n\r\n}\r\n\r\nexport default Login;\r\n","import React from \"react\";\r\nimport { _path } from \"../../data/headerNavigation\";\r\nimport { userService } from \"../../services/user.service\";\r\n\r\n\r\nfunction Logout(props) {\r\n\r\n userService.logout();\r\n\r\n props.history.push({ pathname : `${_path.ROOTMAIN}/login`});\r\n\r\n return (\r\n <div></div>\r\n );\r\n\r\n}\r\n\r\n\r\nexport default Logout;\r\n","import React, { useState } from \"react\";\r\nimport { userService } from \"../../services/user.service\";\r\nimport notify from \"devextreme/ui/notify\";\r\nimport { ToastContainer } from \"react-toastify\";\r\nimport { useSelector } from 'react-redux';\r\nimport { Link } from \"react-router-dom\";\r\n\r\nfunction ChangePassword(props) {\r\n\r\n const currenteUser = useSelector(store => store.user); \r\n\r\n const [user, setUser] = useState({ \r\n username: currenteUser.username, \r\n oldPassword: \"\", \r\n newPassword: \"\",\r\n repeatPassword: \"\" \r\n });\r\n const [loading, setLoading] = useState(false);\r\n\r\n const onValueChange = e => {\r\n\r\n setUser({\r\n ...user,\r\n [e.target.name]: e.target.value\r\n });\r\n\r\n }\r\n\r\n const sendUser = (e) => {\r\n\r\n e.preventDefault();\r\n\r\n setLoading(true);\r\n userService.changePassword(user)\r\n .then(userResp => {\r\n\r\n let pathname = '/account/login';\r\n \r\n props.history.push({ pathname }, {username : currenteUser.username});\r\n\r\n }).catch(err => {\r\n setLoading(false)\r\n notify(err, \"error\")\r\n });\r\n\r\n }\r\n\r\n const goBack = () => {\r\n props.history.goBack();\r\n }\r\n\r\n return (\r\n <React.Fragment>\r\n <ToastContainer autoClose={5000} hideProgressBar />\r\n <div className=\"wrapper-login\">\r\n <form className=\"form-signin\" onSubmit={sendUser}> \r\n <div style={{ paddingTop: 50 }}>\r\n <h4 className=\"\">Cambiar contraseña</h4>\r\n <input value={user.username} type=\"text\" className=\"form-control\" name=\"username\" placeholder=\"Usuario\" required=\"\" readOnly={true}/>\r\n <input value={user.oldPassword} onChange={onValueChange} type=\"password\" className=\"form-control\" name=\"oldPassword\" placeholder=\"Contraseña actual\" required autoFocus={true} />\r\n <input value={user.newPassword} onChange={onValueChange} type=\"password\" className=\"form-control\" name=\"newPassword\" placeholder=\"Nueva contraseña\" required />\r\n <input value={user.repeatPassword} onChange={onValueChange} type=\"password\" className=\"form-control\" name=\"repeatPassword\" placeholder=\"Repetir contraseña\" required />\r\n </div> \r\n <input \r\n className=\"btn btn-lg btn-primary btn-block custom-button\" \r\n type=\"submit\" \r\n value={loading ? \"Iniciando...\" : \"Cambiar contraseña\"} \r\n disabled={loading}/>\r\n \r\n <input \r\n className=\"btn btn-lg btn-default btn-block \" \r\n type=\"button\" \r\n value={\"Regresar\"} \r\n onClick={goBack} \r\n disabled={loading}/>\r\n </form>\r\n\r\n </div> \r\n </React.Fragment>\r\n );\r\n\r\n}\r\n\r\nexport default ChangePassword;\r\n","import React, { useState } from \"react\";\r\nimport { userService } from \"../../services/user.service\";\r\nimport notify from \"devextreme/ui/notify\";\r\nimport { ToastContainer } from \"react-toastify\";\r\nimport { useSelector } from \"react-redux\";\r\nimport { Link } from \"react-router-dom\";\r\n\r\nfunction ResetPassword(props) { \r\n\r\n const { appInfo } = useSelector(store => store);\r\n\r\n const [user, setUser] = useState({ username: \"\" });\r\n const [email, setEmail] = useState(\"\");\r\n const [loading, setLoading] = useState(false);\r\n\r\n const onValueChange = e => {\r\n\r\n setUser({\r\n ...user,\r\n [e.target.name]: e.target.value\r\n });\r\n\r\n }\r\n\r\n const sendUser = e => {\r\n e.preventDefault();\r\n setLoading(true);\r\n userService.resetPassword(user)\r\n .then(userResp => {\r\n\r\n setEmail(userResp.email);\r\n\r\n \r\n }).catch(err => {\r\n setLoading(false)\r\n notify(err, \"error\")\r\n });\r\n\r\n }\r\n\r\n const Login = () => <div> \r\n <input value={user.username} onChange={onValueChange} type=\"text\" className=\"form-control\" name=\"username\" placeholder=\"Usuario o correo\" required autoFocus={true} />\r\n <br />\r\n <input\r\n className=\"btn btn-lg btn-primary btn-block\" \r\n type=\"submit\" \r\n value={loading ? \"Restableciendo...\" : \"Restablecer\"} \r\n disabled={loading}/>\r\n </div>\r\n \r\n\r\n const Info = () => <div>\r\n <p>La contraseña fue restablecida y enviada al correo <b>{email}</b></p>\r\n </div>\r\n\r\n return (\r\n <React.Fragment>\r\n <ToastContainer autoClose={5000} hideProgressBar />\r\n <div className=\"wrapper-login\">\r\n <form className=\"form-signin\" onSubmit={sendUser}>\r\n <div className=\"imglog\">\r\n <img className=\"nav-panel-logo\" width={200} src={require('../../svg/logo.png')} />\r\n </div>\r\n <div style={{ paddingTop: 50 }}>\r\n <h4>Restablecer contraseña</h4>\r\n {email ? <Info /> : <Login />}\r\n </div> \r\n <br/>\r\n <Link to={'/account/login'} >Iniciar sesión</Link>\r\n <div style={{color:'#d1d1d1',marginTop:20}}>\r\n Versión {appInfo.version}\r\n </div>\r\n </form>;\r\n </div> \r\n </React.Fragment>\r\n );\r\n\r\n}\r\n\r\nexport default ResetPassword;\r\n","import React, { Component } from 'react';\r\nimport {\r\n BrowserRouter,\r\n Route,\r\n Switch,\r\n Redirect,\r\n} from 'react-router-dom';\r\nimport Layout from './Layout';\r\nimport { locale, loadMessages } from \"devextreme/localization\";\r\nimport { esMessages } from '../data/dx.messages.es';\r\nimport PrivateRoute from './header/PrivateRouter';\r\nimport Login from './account/Login';\r\nimport Logout from './account/Logout';\r\nimport HomePage from './home/HomePage';\r\nimport ChangePassword from './account/ChangePassword';\r\nimport ResetPassword from './account/ResetPassword';\r\n\r\nexport default class Root extends Component {\r\n\r\n constructor(props) {\r\n super(props);\r\n loadMessages({\r\n 'es': esMessages\r\n });\r\n locale('es-419');\r\n }\r\n\r\n componentDidMount() {\r\n setTimeout(() => {\r\n const preloader = document.querySelector('.site-preloader');\r\n\r\n preloader.addEventListener('transitionend', (event) => {\r\n if (event.propertyName === 'opacity') {\r\n preloader.parentNode.removeChild(preloader);\r\n }\r\n });\r\n preloader.classList.add('site-preloader__fade');\r\n }, 500);\r\n }\r\n\r\n render(){\r\n return (\r\n <BrowserRouter basename={process.env.PUBLIC_URL}>\r\n <Switch> \r\n <PrivateRoute\r\n path=\"/app\"\r\n render={(props) => (\r\n <Layout {...props} headerLayout='app'/>\r\n )}\r\n />\r\n <Route path=\"/account/login\" component={Login} />\r\n <Route path=\"/account/logout\" component={Logout} /> \r\n <Route path=\"/account/password\" component={ChangePassword} /> \r\n <Route path=\"/account/resetpassword\" component={ResetPassword} /> \r\n <Route path=\"/app\" component={HomePage} />\r\n <Redirect to='/app'/>\r\n </Switch>\r\n </BrowserRouter>\r\n )\r\n } \r\n}\r\n\r\n","import { SIDEBAR_CLOSE, SIDEBAR_OPEN } from './sidebarActionTypes';\r\n\r\n\r\nconst initialState = {\r\n open: false,\r\n};\r\n\r\nexport default function sidebarReducer(state = initialState, action) {\r\n switch (action.type) {\r\n case SIDEBAR_OPEN:\r\n return {\r\n ...state,\r\n open: true,\r\n };\r\n case SIDEBAR_CLOSE:\r\n return {\r\n ...state,\r\n open: false,\r\n };\r\n default:\r\n return state;\r\n }\r\n}\r\n","import sidebarReducer from './sidebarReducer';\r\n\r\nexport * from './sidebarActions';\r\nexport default sidebarReducer;\r\n","export const SIDEBAR_OPEN = 'SIDEBAR_OPEN';\r\nexport const SIDEBAR_CLOSE = 'SIDEBAR_CLOSE';\r\n","import { GET_USER, UPDATE_USER } from \"./userActionTypes\";\r\n\r\nconst user = {\r\n username: '',\r\n areaId: null,\r\n area: ''\r\n};\r\n\r\n\r\n\r\nexport default function userReducer(state = user, { type, payload }) {\r\n switch (type) {\r\n case GET_USER:\r\n\r\n var user =JSON.parse(localStorage.getItem('user'));\r\n\r\n return {...state, ...user};\r\n\r\n case UPDATE_USER:\r\n let newState = {...state, ...payload }\r\n return newState;\r\n\r\n default:\r\n var user =JSON.parse(localStorage.getItem('user'));\r\n\r\n return {...state, ...user};\r\n }\r\n\r\n}","import userReducer from './userReducer';\r\n\r\nexport default userReducer;","import { GET_COMPRA_ID, UPDATE_COMPRA_ID } from \"./compraActionTypes\";\r\n\r\nconst compra = {\r\n id: 0,\r\n open: false,\r\n editable: true,\r\n descarga: false\r\n};\r\n\r\nexport default function compraReducer(state = compra, { type, payload }) {\r\n switch (type) {\r\n case GET_COMPRA_ID:\r\n\r\n return state;\r\n\r\n case UPDATE_COMPRA_ID:\r\n return payload;\r\n\r\n default:\r\n return state;\r\n }\r\n\r\n}","import compraReducer from './compraReducer';\r\n\r\nexport default compraReducer;","// eslint-disable-next-line import/prefer-default-export\r\nexport const GET_COMPRA_ID = 'GET_COMPRA_ID';\r\nexport const UPDATE_COMPRA_ID = 'UPDATE_COMPRA_ID';","import { GET_FACTURA_ID, UPDATE_FACTURA_ID } from \"./facturaActionTypes\";\r\n\r\nconst factura = {\r\n id: 0,\r\n open: false,\r\n editable: true\r\n};\r\n\r\nexport default function facturaReducer(state = factura, { type, payload }) {\r\n switch (type) {\r\n case GET_FACTURA_ID:\r\n\r\n return state;\r\n\r\n case UPDATE_FACTURA_ID:\r\n return payload;\r\n\r\n default:\r\n return state;\r\n }\r\n\r\n}","import facturaReducer from './facturaReducer';\r\n\r\nexport default facturaReducer;","// eslint-disable-next-line import/prefer-default-export\r\nexport const GET_FACTURA_ID = 'GET_FACTURA_ID';\r\nexport const UPDATE_FACTURA_ID = 'UPDATE_FACTURA_ID';","import { GET_SERVICIO_ID, UPDATE_SERVICIO_ID } from \"./servicioActionTypes\";\r\n\r\nconst servicio = {\r\n id: 0,\r\n open: false,\r\n editable: true\r\n};\r\n\r\nexport default function servicioReducer(state = servicio, { type, payload }) {\r\n switch (type) {\r\n case GET_SERVICIO_ID:\r\n\r\n return state;\r\n\r\n case UPDATE_SERVICIO_ID:\r\n return payload;\r\n\r\n default:\r\n return state;\r\n }\r\n\r\n}","import servicioReducer from './servicioReducer';\r\n\r\nexport default servicioReducer;","// eslint-disable-next-line import/prefer-default-export\r\nexport const GET_SERVICIO_ID = 'GET_SERVICIO_ID';\r\nexport const UPDATE_SERVICIO_ID = 'UPDATE_SERVICIO_ID';","import appReducer from './appReducer';\r\n\r\nexport default appReducer;","import { handleActions } from 'redux-actions'\r\nimport { GET_APPINFO, UPDATE_APPINFO } from './appActionTypes'\r\n\r\nconst app = {\r\n name: 'Mi Empresa',\r\n version: '1.0.0',\r\n fullName: 'Mi Empresa'\r\n}\r\n\r\nexport default handleActions({\r\n [GET_APPINFO]: (state, action) => {\r\n return action.payload\r\n }, \r\n [UPDATE_APPINFO]: (state, action) => {\r\n return action.payload\r\n }\r\n}, app);","import catalogReducer from './catalogReducer';\r\n\r\nexport default catalogReducer;","import inPutProductDialogReducer from './inPutProductDialogReducer';\r\n\r\nexport default inPutProductDialogReducer;","import purchaseDialogReducer from './purchaseDialogReducer';\r\n\r\nexport default purchaseDialogReducer;","import outPutProductDialogReducer from './outPutProductDialogReducer';\r\n\r\nexport default outPutProductDialogReducer;","import productDialogReducer from './productDialogReducer';\r\n\r\nexport default productDialogReducer;","import { dialogDefault, OPEN_DIALOG, CLOSE_DIALOG } from \"../consts\";\r\n\r\nconst mydialog = { ...dialogDefault }\r\n\r\nexport const openDialog = payload => ({ type: OPEN_DIALOG, payload});\r\nexport const closeDialog = () => ({ type: CLOSE_DIALOG });\r\n\r\nexport default function customDialogReducer(state = mydialog, { type, payload }) {\r\n const actions = {\r\n [OPEN_DIALOG] : () => ({...state, open : true, ...payload }),\r\n [CLOSE_DIALOG] : () => ({...mydialog })\r\n }\r\n\r\n return actions[type]?.call() || state;\r\n}","import customDialogReducer from './customDialogReducer';\r\n\r\nexport default customDialogReducer;","import billDialogReducer from './billDialogReducer';\r\n\r\nexport default billDialogReducer;","import dialogReciboReducer from './dialogReciboReducer';\r\n\r\nexport default dialogReciboReducer;","import areaProductDialogReducer from './areaProductDialogReducer';\r\n\r\nexport default areaProductDialogReducer;","import traslateDialogReducer from './traslateDialogReducer';\r\n\r\nexport default traslateDialogReducer;","import clientDialogReducer from './clientDialogReducer';\r\n\r\nexport default clientDialogReducer;","import appRuleDialogReducer from './appRuleDialogReducer';\r\n\r\nexport default appRuleDialogReducer;","import gridStateReducer from './gridStateReducer';\r\n\r\nexport default gridStateReducer;","import gridStateCCReducer from './gridStateCCReducer';\r\n\r\nexport default gridStateCCReducer;","import clientDetailReducer from './clientDetailReducer';\r\n\r\nexport default clientDetailReducer;","import ncDialogReducer from './ncDialogReducer';\r\n\r\nexport default ncDialogReducer;","import toolBarOptsReducer from './toolBarOptsReducer';\r\n\r\nexport default toolBarOptsReducer;","import { combineReducers } from 'redux';\r\n\r\nimport mobileMenuReducer from './mobile-menu';\r\nimport sidebarReducer from './sidebar';\r\nimport userReducer from './user'\r\nimport compraReducer from './compra'\r\nimport facturaReducer from './factura'\r\nimport servicioReducer from './servicio'\r\nimport appReducer from './app';\r\nimport catalogReducer from './catalogs';\r\nimport * as catalogReducer2 from './catalog';\r\nimport inPutProductDialogReducer from './inPutProduct';\r\nimport purchaseDialogReducer from './inPutProductPurchase';\r\nimport outPutProductDialogReducer from './outPutProduct';\r\nimport productDialogReducer from './product';\r\nimport customDialogReducer from './customDialog';\r\nimport billDialogReducer from './bill';\r\nimport billDisabledDialogReducer from './bill/billDisabledDialogReducer';\r\nimport dialogReciboReducer from './dialogRecibo';\r\nimport areaProductDialogReducer from './areaProduct';\r\nimport traslateDialogReducer from './traslate';\r\nimport clientDialogReducer from './client';\r\nimport authDialogReducer from './authorization/authDialogReducer';\r\nimport providerDialogReducer from './provider/providerDialogReducer';\r\nimport appRuleDialogReducer from './appRule';\r\nimport gridStateReducer from './gridState';\r\nimport gridStateCCReducer from './gridStateCC';\r\nimport clientDetailReducer from './clientDetail';\r\nimport ncDialogReducer from './notacredit';\r\nimport toolBarOptsReducer from './toolBar';\r\n\r\nexport default combineReducers({\r\n mobileMenu: mobileMenuReducer,\r\n sidebar: sidebarReducer, \r\n user: userReducer,\r\n compra: compraReducer,\r\n factura: facturaReducer,\r\n servicio: servicioReducer,\r\n appInfo: appReducer, \r\n inPutProductDialog : inPutProductDialogReducer,\r\n outPutProductDialog : outPutProductDialogReducer, \r\n productDialog : productDialogReducer,\r\n catalog : catalogReducer,\r\n catalog2 : catalogReducer2.catalogDialogReducer,\r\n customDialog : customDialogReducer,\r\n billDialog: billDialogReducer,\r\n billDisabledDialog: billDisabledDialogReducer,\r\n dialogRecibo : dialogReciboReducer,\r\n areaProductDialog : areaProductDialogReducer,\r\n purchaseDialog : purchaseDialogReducer,\r\n traslateDialog : traslateDialogReducer,\r\n clientDialog : clientDialogReducer,\r\n providerDialog : providerDialogReducer,\r\n authDialog: authDialogReducer,\r\n appRuleDialog: appRuleDialogReducer,\r\n gridState: gridStateReducer,\r\n gridStateCC: gridStateCCReducer,\r\n clientDetail: clientDetailReducer,\r\n ncDialog: ncDialogReducer,\r\n toolBarOpts: toolBarOptsReducer,\r\n\r\n\r\n \r\n});","// third-party\r\nimport { createStore, applyMiddleware, compose } from 'redux';\r\nimport thunk from 'redux-thunk';\r\n\r\n// reducer\r\nimport rootReducer from './rootReducer';\r\n\r\n\r\nfunction load() {\r\n let state;\r\n\r\n try {\r\n state = localStorage.getItem('state');\r\n\r\n if (typeof state === 'string') {\r\n state = JSON.parse(state);\r\n }\r\n } catch (error) {\r\n // eslint-disable-next-line no-console\r\n console.error(error);\r\n }\r\n\r\n return state || undefined;\r\n}\r\n\r\nconst store = createStore(rootReducer, undefined, compose(\r\n applyMiddleware(thunk),\r\n // window.__REDUX_DEVTOOLS_EXTENSION__ && window.__REDUX_DEVTOOLS_EXTENSION__()\r\n));\r\n\r\nfunction save() {\r\n try {\r\n localStorage.setItem('state', JSON.stringify(store.getState()));\r\n } catch (error) {\r\n // eslint-disable-next-line no-console\r\n console.error(error);\r\n }\r\n}\r\n\r\n// store.subscribe(() => save());\r\n\r\nexport default store;\r\n","import store from './store';\r\n\r\nexport default store;\r\n","import 'bootstrap/dist/css/bootstrap.css';\r\nimport React from 'react';\r\nimport ReactDOM from 'react-dom';\r\nimport Root from './components/Root';\r\nimport store from './store';\r\nimport { Provider } from 'react-redux';\r\n\r\n// styles\r\nimport 'slick-carousel/slick/slick.css';\r\nimport 'react-toastify/dist/ReactToastify.min.css';\r\nimport '@fortawesome/fontawesome-free/css/all.min.css';\r\nimport 'react-input-range/lib/css/index.css';\r\nimport './scss/style.scss';\r\n\r\nconst rootElement = document.getElementById('root');\r\n\r\nReactDOM.render((\r\n <Provider store={store}>\r\n <Root/>\r\n </Provider>),\r\n rootElement);\r\n\r\n\r\n","module.exports = __webpack_public_path__ + \"static/media/logo.cb8b9a2c.png\";","module.exports = __webpack_public_path__ + \"static/media/homelogo.7ea4971c.png\";","module.exports = __webpack_public_path__ + \"static/media/logotipo.cb8b9a2c.png\";","module.exports = __webpack_public_path__ + \"static/media/working.3e94ee93.png\";","module.exports = \"data:image/png;base64,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\"","module.exports = \"data:image/png;base64,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\"","module.exports = \"data:image/png;base64,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\"","module.exports = \"data:image/png;base64,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\"","module.exports = \"data:image/png;base64,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\"","module.exports = \"data:image/png;base64,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\"","module.exports = \"data:image/png;base64,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\"","module.exports = \"data:image/png;base64,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\"","module.exports = \"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAEAAAABACAYAAACqaXHeAAAACXBIWXMAAAsTAAALEwEAmpwYAAALQElEQVR4nO1beXRTVRpn9nGOZ+acOXNm5ug5jrIriKCj4oAwLqOsCqhgLUJVFAEr0AELRWutIC1SbG1Zu9CWUihV6EILtCmULkBDC7VNt6R0Sd7L0uS9pNmoLP3m3lcS8vqSkrzcwD/znfM7zXJz7/f73e9+3333vQ4b9n8LrJn19Firgf7AxtLbrAydb2OpZitLq2wMzaLPwMpSVhtD6dB37eizM+j9HjtDhdlZ9XQA+e/utf8+G0DtbxDJ1xCpA4igGpMUCySUHf0tRVhtsWj+eq+5DWlXjZqHrQwVj4j3+EPaoxgMdR1FSKGVUc+411x51tdDjUaOpaMQvhYI4h7EuGgz0vPuKXFQKu9DxKMQ8b67RdyNEOUWRjPurpO3GFUvoMG77hVxvgj0z3giAOBXASeOBvkFGjAckb/hjXPmTgkYG/Zxf62aBrAxykBGw1mbQflg4MjrdPej7H7CF6eMTQdAnTXcBSNAk/OEW+gKXgVDxRowteQgoVTihEDl1KZXP02cvMmk/DMqSed8nhVtI2iyRw8S4c7QHXseeuXHxEUC2legSjGTGHmzmf4L3rz45ISuBZgLUaD9YbLP5F2jha3dJj4vsNRcv8kDTf/B15k3ydJRSE/0gzgfpsZUkZFA2+0s/bx48iir+rrm2ZrNxIg7gPODrUcuMifQLN6KixIAlxafZr4hhTh5DCpzPCgSJ4Dqx2XAtp4SIQTViCPZJ/Kozr/obanDsGh+AvXhx4mTV6YMB/n2R6DNieFAF4WJKKdUstfkuXXPUB2+DGCojiBOvmvvcBfifNDF60QkRtUs70Kfpbb62vlQ2V6b+wwYSj8GY+VmhK9BXxwM6oMjPbanETp2uSfuRNwI6O2o8lEAWgGdnb8fkjy+sBkoId53bFFWu09eB0cBU7oSzJcOIBzkwVQdg0SbIiSfiWY+5Z+gOvgG0LlLgTryLnRnzAZFwjiBCGpJlO9RwFKbhp59hs7wtVN3yU9zcAwYK74SEOehLguY8o3Qc3wB9OTPBkPJh8BW73Dbtle6HzqTp/ME6MpeKCIh0iaWvfInt+RRzXxIzCUtK90qEIApWzs0eRFgymN4AlxJfkGMAHgphLsVgDvMENEh3vHx1/xk5HAWcQFwn+2JT9wWYM9zogRAOU6D9ji/5pHHH6AvtGI6ZC/G8gQwlCwPAPkBdO1/1SlAR+pLIgXAuUA1e1Dmp18X25nxp2T+1rV6W8AEoHKCXXLAG34IQB8elPyoLLGd9V45cVuA7LFccguUAJr8VU4BqMI1/ghg55VE9AElujNdK+ArN279/zglYOQxtMfDnALoKuNFC4CBT7U48vhiwZ+OMLRHp3IC9BTOve1wHQrZku+hOftLqE/bAPX7N3KvlSfjweQmSihJElxK3wCVCaugfPtyqE5cBQ0HI8FwPs3ZRnci3CmAuOsCFzB09MDsD9y08KszveR9TgB98SLO0d7aA9CSHQV1yeuh/VgMEiIBVKcSuNeXU8KhMWMTunJMdxJryd0Mkq0hUJv6GSiObYWO49uh7YctcC4pFMq2fQD06Z1cO31JpHMnaOlp91eA044E+K2/Alg1MtAVzgb9ibc5Rw3VqdCaEw2sy+w5YJRmQMuhKNCW7+Heq0oTQfLNe9CNImNw214URU2orSIvZkCAsq9BHv8osLJC/8gPQH2r/tMFBDoDc3cFEmChgAQjzYQNK4Lg89DFYKwVbosbsj7nZt7x/uiuTbAsaC7U5Ql3hT2SaFCXRpIgz8FgMPwRX/zISHXInosUOH02eyuMHj2ag/TH7YLv61I+g8asL5zvZ740lWuLRRMIUBYNZuonYgJYjdQkvyrAYPS25gmcNtRkwH8/WggbV77jNgIGC5CbtBGWvDnTrVjsxTRi5DFQJfg3joBeYh3SDT6XtsECDAm5hKgA3MEpd9ORVIc9ioAKYOmoJBsBLP0OWgKUjVinhu7ACtBVQzYCjOoFw7i7KQQ7NV/O9kkARV4sdBbFedXWqrpENgIM9H9wGVQQFaA+1+co8BZWdSPZCDCoJuMcUE5UgMb8wAmgbSMsgPJBXAX2Eg2rlpMBE8Bm6CTmJ76HiO92D8MPJJEUwNpeHhgB6nPIzj5D1d06C1RPJyoASlRuCaArwNyIj+DAmqWesTYEOk8kuf99cxFZARw3SwBkvyVeCj1Ugo7iJDgcvswt+eyw96D+UIznEth5gagAdoYOcj0Ol5Ds3NJe4ZFIT3UaXNwfDSdi1sCxyJVQtGU11KR+BdqKFM/hfzmHE5ZYlDJUv1Wn+7vrmeBqouGFnGWkwn2/GPQimNqric4+ingp70wQP4RI+jG3dkkqGC6k+0ce5Y2O0p1gVMqICoDwieC+APrwOMlB5KUp0JQXB6oze0WRZ9BVpLwoAWR524kKgK99LFrt39zcGFHPIClAZ1UO5zzGlVNJYLzo/ZJQVyLx8uO437YUJYKJaiE3+wyVKSB/+3SYkpIaqM9sAL28BpoKvuOINBfEAX12H3dY6ok4K82E9lOJTuE6q47ANbsZzBo/z/9uz36/hdGM9ygAfvyUmNJWC2CzG7WgkKQ5ScmLv+eE0J/fjwhngKEmHbTVqdAl2Q3Nt2a9qSCeEw/6+7k+DBQhAVg61yN5l5JYRmIws8UKDrt58wZomypAdovgUFCcToervXpwtc62BgKzT/fh2/93FODWMwKinv+tqzwJcdER8OacGaCiNTDYzHoVtJ3c45Y4XvPalirov3lT8LvFQUEQHvohFOfuB0bkckDLO/KO5F2iwKsHpFTyeshOToBP3g+GpyZOgoceGuHE6fIqARFsN65fB+WlMh75NlQxLGyP2/ZXr/bx+h01YgzMn/kKxH6xDqpK8vC69kIASnbHp0NcDY37S3e7Q5OuG8oKcyBq/afw6gvT4ZGHR/Gcc8W3cd+7JeSwWoUaIvYeg4wSKfx8QzjrDmvv6PY4BsZTEyfCiiWLIGvPd0AphCfGaN1ftbCqCV6Td0aBvvsBfFrUVFsBu7dHw5K3XodHxzw2pDOumDVnvkdS9uv9EFxkg5EpZng83QJSzQ2PbQuLSrwe8+F/jISXp02FiDUfc8vFqOnER98hPpN3WPKO6LVjRo312oHB6Pv5mlvyi2+Rd2BihgXqe9yLEBm1RfT46z4O6RBN3mFxUWG7RwwfLcqBLiXNI3PtRj8sKeaTd2BSpgVaDdcFAjw/7SVRY7/7xlzLkSNHyPwPQUzEmsM4+fjqRImk3EmkH9X0Rnk3LM+j3QrwXCYLJ6VysFjtzt9YbVdFkQ9ZOM8UFxd3HxHyDov/av3m8Y+O88mRb2LinORliPxZqQzO1MhgYa6WvwTSTZBT2cp9X32pBSyIOLY2RYfP5JcvfktPbOYH267YiI+mPfdsv7fOvPzKHB55B05daIZZu5UwY9cAYgrkvO/PXWoFq70P8gqKvSY+auRYiAxbcTYgxF0tJTH2gZBF80zeOna+rolHDmNnfjM8EtrmRPB3LYI25y+3wsrQMK/GmPrs0/07Y79YGXDyrrYjat3OKc88fcdoSNybKSAXktDCE+CxsDaQnJcJ2o0f/+TQs47y0upli7vyk7cIL2/vhuGB1y5f2v7YWM+5ISz8Sx4pnAMmrG/lCYCRcLSZ1+5o8RmPfeJ6//ZrM+27Y6OC7uzlXbC0+OhR61YsbX1i/ASBs/PfDB4y/D0tgx1JKYK+8M7z3QVzLHc93L21pKSk+7duWn0oaN4sm6NsTnpy8pDh72kZhK7dcDuZTptyc2PoB5d3xnz9r3vN0WvDywNvoj59P1iZlpnTX1hS5TH8XZdBSUUtHD5aBJ+tXW2JXr/q1L4dX74YSD//B5DHEuIEPxMoAAAAAElFTkSuQmCC\"","export const formatDateTime = 'dd/MM/yyyy hh:mm a';\r\nexport const formatDate = 'dd/MM/yyyy';\r\n\r\nexport const editorOptions = { stylingMode: \"filled\" };\r\n\r\nexport const editorOptionsSelect = {\r\n valueExpr: \"id\",\r\n displayExpr: \"name\",\r\n searchEnabled: true, \r\n}\r\n\r\nexport const editorOptionsSwitch = {\r\n switchedOffText:\"NO\",\r\n switchedOnText:\"SI\",\r\n}\r\n\r\nexport const editorOptionsNumberBox={\r\n showSpinButtons:true,\r\n showClearButton:true\r\n}\r\n\r\nexport const editorOptsTextBoxPhone={\r\n mask: \"0000-0000\"\r\n}\r\n\r\nexport const editorOptsDateBox={\r\n openOnFieldClick:true,\r\n displayFormat: formatDate,\r\n}\r\n\r\nexport const editorOptsTextBox={\r\n showClearButton:true\r\n}\r\n\r\nexport const cssClasses = {\r\n 0 : '',\r\n 1 : 'custome-active',\r\n 2 : 'custome-noactive',\r\n}\r\n\r\n\r\n\r\nexport const areaRestrict = {\r\n bodega : 1\r\n}\r\n\r\nexport const resources = { \r\n\r\n verTodasFacturas : 1, \r\n inventario : 2,\r\n ajuste : 3,\r\n requisa : 4,\r\n ordenesDeCompra : 5,\r\n crearCompra : 6, //asignar al boton\r\n adminCatalogos : 7,\r\n adminUsuario : 8,\r\n verClientes : 9,\r\n crearRecibo : 10,\r\n app : 11,\r\n cotizacion: 12,\r\n reporteCompra : 13,\r\n auths : 14,\r\n cuentasPorCobrar: 18,\r\n verRecibos: 19,\r\n verMisFacturas: 20,\r\n crearFactura: 21,\r\n crearClienteEnPreventa: 22,\r\n crearClienteConCreditos: 23,\r\n administrarProveedores: 24,\r\n adminTasaCambios: 27,\r\n verMisCuentasXCobrar: 28,\r\n gestionCierreCaja: 29,\r\n configurarComisiones: 30,\r\n cambiarDiasCredito: 31,\r\n configurarCredito: 32,\r\n crearNotasCreditos: 33,\r\n verReporteStock: 34,\r\n verExistencias: 35,\r\n verKardex: 36,\r\n verColumnaCostoStock: 37,\r\n verReporteDeVentas: 39,\r\n verMenuActualizarFacturas: 40,\r\n\r\n}\r\n\r\n\r\nexport const dataAccess = {\r\n none : 0x0,\r\n access : 0x01,\r\n create : 0x02,\r\n update : 0x04,\r\n delete : 0x08\r\n}\r\n\r\nexport const calculateEvaluate = (cost, rule) => {\r\n\r\n const stringRule = cost + rule;\r\n\r\n try {\r\n\r\n const result = eval(stringRule);\r\n\r\n return result;\r\n\r\n } catch (error) {\r\n return null;\r\n }\r\n\r\n}\r\n\r\n\r\n\r\n\r\n\r\n\r\n"],"sourceRoot":""}