├── .gitattributes ├── .gitignore ├── .meteor ├── .finished-upgraders ├── .gitignore ├── .id ├── cordova-plugins ├── packages ├── platforms ├── release └── versions ├── README.md ├── client ├── Dashboard │ ├── Dashboard.js │ ├── account-watchlist-widget │ │ ├── account-watchlist-widget.html │ │ └── account-watchlist-widget.js │ ├── bank-accounts │ │ ├── bank-accounts-widget.html │ │ └── bank-accounts-widget.js │ ├── bills-pending-widget │ │ ├── bills-pending-widget.html │ │ └── bills-pending-widget.js │ ├── business-saving-account │ │ ├── business-saving-account.html │ │ └── business-saving-account.js │ ├── dashboard-service.js │ ├── dashboard.html │ ├── expense-claims-widget │ │ ├── expense-claims-widget.html │ │ └── expense-claims-widget.js │ ├── invoice-owed-widget │ │ ├── invoice-owed-widget.html │ │ └── invoice-owed-widget.js │ ├── main.html │ ├── main.js │ └── total-cash-widget │ │ ├── total-cash-widget.html │ │ └── total-cash-widget.js ├── Footer │ └── footer.html ├── Login │ ├── forgotpassword.html │ ├── login.html │ ├── packagerenewal.html │ ├── purchasedb.html │ ├── register.html │ ├── registerdb.html │ ├── registersts.html │ ├── resetpassword.html │ ├── send-invitation-modal.html │ ├── simonpurchasedb.html │ ├── test_login.html │ ├── vs1_login.html │ ├── vs1check.html │ └── vs1greentrack_login.html ├── Navigation │ ├── ApAlertPop.html │ ├── chartloading.html │ ├── closex.html │ ├── header.html │ ├── nav.html │ ├── newsidenav.html │ ├── refreshButton.html │ └── sidebar.html ├── accesslevel │ ├── accesslevel.html │ ├── accesslevel.js │ ├── accessleveldup.html │ ├── accessleveldup.js │ ├── companyappsettings.html │ ├── companyappsettings.js │ ├── companyappsettingsdup.html │ ├── companyappsettingsdup.js │ └── featureallocation.html ├── accounts │ ├── account-service.js │ ├── accountlistpop.html │ ├── accountlistpop.js │ ├── addaccountpop.html │ ├── addaccountpop.js │ └── chartsofaccounts │ │ └── chartofaccounts.html ├── appointments │ ├── appointment-service.js │ ├── appointmentlist.html │ ├── appointmentlist.js │ ├── appointments.html │ ├── appointments.js │ ├── appointmenttimelist.html │ ├── appointmenttimelist.js │ └── newappointments.html ├── bills │ ├── bill_list.html │ ├── bill_list.js │ └── frmbill_card.html ├── body.html ├── body.js ├── cheque │ ├── cheque_list.html │ ├── cheque_list.js │ └── frmcheque_card.html ├── compatibility │ └── assets │ │ └── bootstrap │ │ └── css │ │ └── bootstrap.min.css ├── connection │ └── connection.html ├── contacts │ ├── Model │ │ └── example │ │ │ └── _TEmployeePeySettings.json │ ├── addCustomer.html │ ├── addCustomer.js │ ├── addEmployee.html │ ├── addEmployee.js │ ├── addSupplier.html │ ├── addSupplier.js │ ├── addcustomerpop.html │ ├── addcustomerpop.js │ ├── addemployeepop.html │ ├── addemployeepop.js │ ├── addsupplierpop.html │ ├── addsupplierpop.js │ ├── contact-service.js │ ├── contactlistpop.html │ ├── contactlistpop.js │ ├── customerlist.html │ ├── customerlist.js │ ├── customerlistpop.html │ ├── customerlistpop.js │ ├── employeelist.html │ ├── employeelist.js │ ├── employeelistpop.html │ ├── employeelistpop.js │ ├── joblist.html │ ├── joblist.js │ ├── leadlist.html │ ├── leadlist.js │ ├── popemployeelist.html │ ├── popemployeelist.js │ ├── statementlist.html │ ├── statementlist.js │ ├── supplierlist.html │ ├── supplierlist.js │ ├── supplierlistpop.html │ └── supplierlistpop.js ├── credit │ ├── credit_list.html │ ├── credit_list.js │ └── frmcredit_card.html ├── creditnotes │ └── creditnote_list.html ├── crm │ ├── components │ │ ├── addTaskModal │ │ │ ├── addTask.html │ │ │ └── addTask.js │ │ ├── alltasks │ │ │ ├── alltasks.html │ │ │ └── alltasks.js │ │ ├── help-modal.html │ │ ├── newAllTasks │ │ │ ├── taskdatatable.html │ │ │ └── taskdatatable.js │ │ ├── newTaskLayout │ │ │ ├── taskdatatable.html │ │ │ └── taskdatatable.js │ │ ├── taskDetailModal │ │ │ ├── taskmodal.html │ │ │ └── taskmodal.js │ │ ├── taskDropMenu │ │ │ └── task_drop_menu.html │ │ ├── tasklist_sidebar │ │ │ ├── tasklist_sidebar.html │ │ │ └── tasklist_sidebar.js │ │ ├── top-cards.html │ │ └── top-menu.html │ ├── crm-service.js │ ├── crm.html │ ├── crm.js │ ├── crmprojects │ │ ├── crmproject.html │ │ ├── crmproject.js │ │ ├── editProjectModal.html │ │ └── newProjectModal.html │ ├── filterslabels │ │ ├── filterslabels.html │ │ ├── filterslabels.js │ │ ├── newFilterModal.html │ │ └── newLabelModal.html │ ├── leadlist │ │ ├── leadlist.html │ │ └── leadlist.js │ ├── tasktoday │ │ ├── tasktoday.html │ │ └── tasktoday.js │ └── taskupcoming │ │ ├── taskupcoming.html │ │ └── taskupcoming.js ├── default.html ├── deposits │ ├── deposit_list.html │ ├── deposit_list.js │ └── frm_deposit.html ├── erptohide.txt ├── expenseclaim │ └── expenseclaims.html ├── files │ ├── addCurrencyPoP.html │ ├── addCurrencyPoP.js │ └── files.html ├── fittings │ ├── fitting-service.js │ ├── fittings.html │ ├── fittings_scan.html │ ├── fittingsquickInv.html │ ├── fittingsquickSO.html │ ├── manufacturing_list.html │ └── manufacturing_list.js ├── inventory │ ├── employeeproductlistpop.html │ ├── employeeproductlistpop.js │ ├── inventory.html │ ├── inventory.js │ ├── inventory_add.html │ ├── inventorylist.html │ ├── inventorylist.js │ ├── newproductpop.html │ ├── newproductpop.js │ ├── payrollproductlistpop.html │ ├── payrollproductlistpop.js │ ├── productlist.html │ ├── productlist.js │ ├── productlistpop.html │ ├── productlistpop.js │ ├── productview.html │ ├── productview.js │ ├── stockadjust-service.js │ └── stockadjustment │ │ ├── frm_stockAdjustment.html │ │ ├── frm_stockAdjustment.js │ │ ├── stockAdjusmentOverview.html │ │ └── stockadjustmentoverview.js ├── invoice │ ├── frm_invoice.html │ ├── frm_refund.html │ ├── invoice-service.js │ ├── invoice_express_listBO_tables.js │ ├── invoice_express_list_tables.js │ ├── invoice_list.html │ ├── invoice_list_bo.html │ ├── invoiceemail.html │ └── invoiceemail.js ├── journalEntry │ ├── frm_journalentry.html │ ├── journalentry_list.html │ └── journalentry_list.js ├── js │ ├── Api │ │ ├── AccountOverviewApi.js │ │ ├── ChartsApi.js │ │ ├── DashboardApi.js │ │ ├── EmployeePayrollApi.js │ │ ├── Model │ │ │ ├── AssignLeaveType.js │ │ │ ├── AssignLeaveTypeFields.js │ │ │ ├── Employee.js │ │ │ ├── EmployeePaySettingFields.js │ │ │ ├── EmployeePaySettings.js │ │ │ ├── LeaveRequest.js │ │ │ ├── LeaveRequestFields.js │ │ │ ├── PayTemplateDeductionLine.js │ │ │ ├── PayTemplateDeductionLineFields.js │ │ │ ├── PayTemplateEarningLine.js │ │ │ ├── PayTemplateEarningLineFields.js │ │ │ ├── PayTemplateReiumbursementLine.js │ │ │ ├── PayTemplateReiumbursementLineFields.js │ │ │ ├── PayTemplateSuperannuationLine.js │ │ │ ├── PayTemplateSuperannuationLineFields.js │ │ │ ├── Tvs1CardPreference.js │ │ │ ├── Tvs1CardPreferenceFields.js │ │ │ ├── Tvs1Chart.js │ │ │ ├── Tvs1ChartDashboardPreference.js │ │ │ ├── Tvs1ChartDashboardPreferenceField.js │ │ │ ├── Tvs1ChartField.js │ │ │ └── User.js │ │ └── Module │ │ │ ├── Api.js │ │ │ ├── ApiCollection.js │ │ │ ├── ApiCollectionHelper.js │ │ │ ├── ApiEndPoint.js │ │ │ ├── ApiRequest.js │ │ │ └── ApiService.js │ ├── Apptimer.js │ ├── Charts │ │ ├── ChartHandler.js │ │ ├── ChartsEditor.js │ │ ├── draggableCharts.js │ │ └── resizableCharts.js │ ├── Nav.js │ ├── accesslevel-service.js │ ├── account_settings.js │ ├── alertmessage.js │ ├── appPopRelogin.js │ ├── base-service.js │ ├── cheque_card.js │ ├── core-service.js │ ├── country-service.js │ ├── email_settings.js │ ├── employee-service.js │ ├── employeepayroll-service.js │ ├── files.js │ ├── forgotpassword.js │ ├── frm_deposit.js │ ├── frm_journalentry.js │ ├── header.js │ ├── ion.sound.js │ ├── new_bill.js │ ├── new_credit.js │ ├── new_invoice.js │ ├── new_purchaseorder.js │ ├── new_quote.js │ ├── new_salesorder.js │ ├── newsidenav.js │ ├── ocr-service.js │ ├── organisation-service.js │ ├── packagerenewal.js │ ├── profile-service.js │ ├── purchase-service.js │ ├── purchasedb.js │ ├── ratetype_service.js │ ├── refundcard.js │ ├── register.js │ ├── registerdb.js │ ├── registersts.js │ ├── resetpassword.js │ ├── sales-service.js │ ├── sidebar-service.js │ ├── sidebar.js │ ├── simonpurchasedb.js │ ├── sms-settings-service.js │ ├── testLogin.js │ ├── vs1Login.js │ ├── vs1check.js │ └── vs1greentracklogin.js ├── lib │ └── global │ │ ├── addBill_row.js │ │ ├── addStockAdjust_row.js │ │ ├── add_row.js │ │ ├── erp-objects.js │ │ ├── erpconnection.js │ │ ├── erpglobalrequest.js │ │ ├── globalAutoFocusOff.js │ │ ├── globalFitting.js │ │ ├── globalShipping.js │ │ ├── globalStockTransfer.js │ │ ├── globalfunction.js │ │ ├── helpvids.js │ │ ├── indexdbstorage.js │ │ ├── selectrow.js │ │ ├── soundalert.js │ │ ├── stockAdjustScan_row.js │ │ ├── updateBill_row.js │ │ ├── update_row.js │ │ └── utBarcodeConst.js ├── main.html ├── my-account │ └── account.html ├── notFound.html ├── overviews │ ├── HeaderCard.js │ ├── accountOverview.html │ ├── accountsoverview.js │ ├── bankingoverview.html │ ├── bankingoverview.js │ ├── contactOverview.html │ ├── contactoverview.js │ ├── paymentOverview.html │ ├── paymentoverview.js │ ├── payrolloverview.html │ ├── payrolloverview.js │ ├── purchaseOverview.html │ ├── purchaseOverview.js │ ├── salesOverview.html │ └── salesoverview.js ├── payments │ ├── customerAwaitingPayments.html │ ├── customerAwaitingPayments.js │ ├── customerPayments.html │ ├── customerpayment.js │ ├── paymentcard │ │ ├── paymentcard.html │ │ ├── paymentcard.js │ │ ├── supplierPaymentCard.html │ │ └── supplierPaymentcard.js │ ├── payments-service.js │ ├── supplierAwaitingBills.html │ ├── supplierAwaitingBills.js │ ├── supplierAwaitingPurchaseOrder.html │ ├── supplierAwaitingPurchaseOrder.js │ ├── supplierBills.html │ ├── supplierpayment.html │ └── supplierpayment.js ├── payroll │ ├── adpapi │ │ ├── adpapi.html │ │ └── adpapi.js │ ├── clockonoff │ │ ├── clockonoff.js │ │ └── employeetimeclock.html │ ├── paychexapi │ │ ├── paychexapi.html │ │ └── paychexapi.js │ ├── payrun │ │ ├── payrun.html │ │ ├── payrun.js │ │ ├── payrundetails.html │ │ ├── payrundetails.js │ │ ├── payslip.html │ │ └── payslip.js │ ├── singletouchpayroll │ │ ├── singletouch.html │ │ ├── singletouch.js │ │ ├── singletouchpayroll.html │ │ └── singletouchpayroll.js │ ├── squareapi │ │ ├── squareapi.html │ │ └── squareapi.js │ └── timesheet │ │ ├── timesheet.html │ │ ├── timesheet.js │ │ ├── timesheettimelog.html │ │ └── timesheettimelog.js ├── popUps │ ├── accounttypepop.html │ ├── accounttypepop.js │ ├── clienttypepopup.js │ ├── clienttypepopuplist.html │ ├── currnecypopup.html │ ├── currnecypopup.js │ ├── custfieldlist.html │ ├── custfieldlist.js │ ├── customfieldformpop.html │ ├── customfieldformpop.js │ ├── customfieldpop.html │ ├── customfieldpop.js │ ├── departmentpop.html │ ├── departmentpop.js │ ├── newcurrencypop.html │ ├── newcurrencypop.js │ ├── newdepartmentpop.html │ ├── newdepartmentpop.js │ ├── newpaymentmethodpop.html │ ├── newpaymentmethodpop.js │ ├── newshipvia.html │ ├── newshipvia.js │ ├── newstatuspop.html │ ├── newstatuspop.js │ ├── newtermspopup.html │ ├── newtermspopup.js │ ├── paymentmethodpopup.html │ ├── paymentmethodpopup.js │ ├── seriallotnumberpop.html │ ├── seriallotnumberpop.js │ ├── shipviapop.html │ ├── shipviapop.js │ ├── statuspop.html │ ├── statuspop.js │ ├── supportpopup.html │ ├── supportpopup.js │ ├── termspopup.html │ └── termspopup.js ├── product │ ├── product-service.js │ └── productcard │ │ ├── Product_Card.js │ │ ├── productcard.css │ │ └── productcard.html ├── profile │ └── profile.html ├── purchase │ ├── frm_purchaseorder.html │ ├── purchase-service.js │ ├── purchaseorder_express_list_tables.html │ ├── purchaseorder_express_list_tables.js │ ├── purchaseorderbo_express_list_tables.html │ └── purchaseorderbo_express_list_tables.js ├── quote │ ├── frm_quote.html │ ├── quote_express_list_tables.html │ └── quote_express_list_tables.js ├── receipts │ ├── receiptclaims.html │ └── receiptclaims.js ├── reconciliation │ ├── accounttransactions.html │ ├── accounttransactions.js │ ├── bankrecon.html │ ├── bankrecon.js │ ├── bankstatementlist.html │ ├── newbankrecon.html │ ├── newbankrecon.js │ ├── recon-service.js │ ├── reconciliation.html │ ├── reconciliation.js │ ├── reconciliationlist.html │ ├── reconciliationlist.js │ ├── recontransactiondetail.html │ └── recontransactiondetail.js ├── refunds │ ├── refunds_list.html │ └── refunds_list.js ├── reminders │ └── reminders.html ├── reports │ ├── 1099report │ │ ├── 1099report.html │ │ └── 1099report.js │ ├── accounting │ │ └── accounting-reports.js │ ├── agedpayables │ │ ├── agedpayables.html │ │ ├── agedpayables.js │ │ ├── agedpayablessummary.html │ │ └── agedpayablessummary.js │ ├── agedreceivables │ │ ├── agedreceivables.html │ │ ├── agedreceivables.js │ │ ├── agedreceivablessummary.html │ │ └── agedreceivablessummary.js │ ├── allreports.js │ ├── balancesheet │ │ ├── balancesheet.html │ │ ├── balancesheet.js │ │ ├── balancetransactionlist.html │ │ └── balancetransactionlist.js │ ├── generalledger │ │ ├── generalledger.html │ │ └── generalledger.js │ ├── inventory │ │ └── inventory-service.js │ ├── printstatement │ │ ├── printstatement.html │ │ └── printstatement.js │ ├── profitandloss │ │ ├── _ProfitAndLossLayout.json │ │ ├── _ProfitAndLossReOrder.json │ │ ├── layoutEditor.js │ │ ├── new_profit.html │ │ ├── new_profit.js │ │ ├── profitandlossreport.html │ │ └── profitandlossreport.js │ ├── purchases │ │ └── purchases-reports.js │ ├── purchasesreport │ │ ├── purchaseslist.html │ │ ├── purchaseslist.js │ │ ├── purchasesreport.html │ │ ├── purchasesreport.js │ │ ├── purchasesummaryreport.html │ │ └── purchasesummaryreport.js │ ├── report-service.js │ ├── reports.html │ ├── sales │ │ ├── productsaleslist.html │ │ ├── productsaleslist.js │ │ ├── productsalesreport.html │ │ ├── productsalesreport.js │ │ ├── reports-sales-services.js │ │ ├── saleslist.html │ │ ├── saleslist.js │ │ ├── salesreport.html │ │ ├── salesreport.js │ │ ├── salessummaryreport.html │ │ └── salessummaryreport.js │ ├── tax │ │ ├── taxsummaryreport.html │ │ └── taxsummaryreport.js │ └── trialbalance │ │ ├── trialbalance.html │ │ └── trialbalance.js ├── route.js ├── route_backup_20210914.backup ├── route_backup_iron.bak ├── sales │ ├── edit-repeating │ │ ├── edit-repeating.css │ │ ├── edit-repeating.html │ │ └── edit-repeating.js │ ├── new-batch-deposit │ │ ├── new-batch-deposit.css │ │ ├── new-batch-deposit.html │ │ └── new-batch-deposit.js │ ├── new_department.css │ ├── new_department.html │ ├── new_department.js │ ├── sales.css │ ├── sales.html │ ├── sales_lists.html │ └── view-statement │ │ ├── view-statement.css │ │ ├── view-statement.html │ │ └── view-statement.js ├── salesorder │ ├── frm_salesorder.html │ ├── salesorder_express_list_tables.js │ └── salesorder_list.html ├── scanner │ ├── scan.html │ └── scan.js ├── seedtosale │ ├── sts-service.js │ ├── sts_dashboard.html │ ├── sts_dashboard.js │ ├── sts_harvests │ │ ├── sts-createharvest.js │ │ ├── sts-harvests.js │ │ ├── sts_createharvest.html │ │ └── sts_harvests.html │ ├── sts_overviews │ │ ├── sts-overviews.js │ │ ├── sts_activeinventory.html │ │ ├── sts_activitylog.html │ │ ├── sts_harvestlist.html │ │ ├── sts_locationoverview.html │ │ ├── sts_overviews.html │ │ ├── sts_packagelist.html │ │ ├── sts_taghistory.html │ │ ├── sts_tagorderlist.html │ │ └── sts_transferhistory.html │ ├── sts_packages │ │ ├── sts-createpackagefromharvests.js │ │ ├── sts-createpackagefrompackages.js │ │ ├── sts-createpackagesfromharvests.js │ │ ├── sts-packages.js │ │ ├── sts_createpackagefromharvests.html │ │ ├── sts_createpackagefrompackages.html │ │ ├── sts_createpackagesfromharvest.html │ │ ├── sts_outgoingorders.html │ │ ├── sts_packages.html │ │ └── sts_printlabels.html │ ├── sts_plants │ │ ├── sts-changegrowthphase.js │ │ ├── sts-createplantings.js │ │ ├── sts-destroyplants.js │ │ ├── sts-manicureplants.js │ │ ├── sts-plants.js │ │ ├── sts-recordadditives.js │ │ ├── sts_changegrowthphase.html │ │ ├── sts_changeroom.html │ │ ├── sts_createplantings.html │ │ ├── sts_destroyplants.html │ │ ├── sts_manicureplants.html │ │ ├── sts_plants.html │ │ └── sts_recordadditives.html │ ├── sts_settings.html │ ├── sts_settings.js │ └── sts_transfers │ │ ├── sts_addtransfercontent.html │ │ ├── sts_createtransfer.html │ │ └── sts_transfers.html ├── settings │ ├── Invoice_reminders │ │ ├── Invoice_reminders.css │ │ └── Invoice_reminders.html │ ├── True-erp-setting │ │ ├── True-erp.css │ │ ├── True-erp.js │ │ └── trueERP-to-trueERP.html │ ├── Users-setting │ │ ├── users.css │ │ └── users.html │ ├── backup-settings │ │ ├── backuprestore.html │ │ └── backuprestore.js │ ├── chart-accounts-setting │ │ ├── chart-account-settings-table.html │ │ ├── chart-account-settings-table.js │ │ ├── chart-accounts.css │ │ ├── chart-accounts.js │ │ ├── chart-of-accounts.html │ │ └── import-chart-accounts-settings │ │ │ ├── import-chart-accounts-settings.css │ │ │ ├── import-chart-accounts-settings.html │ │ │ └── import-chart-accounts-settings.js │ ├── clienttype-setting │ │ ├── clienttype.html │ │ ├── clienttype.js │ │ ├── clientypemodal.html │ │ └── clientypemodal.js │ ├── connected-apps-setting │ │ ├── connected-apps.css │ │ └── connected-apps.html │ ├── conversion-balances-setting │ │ ├── conversion-balances.css │ │ └── conversion-balances.html │ ├── currencies-setting │ │ ├── currencies.css │ │ ├── currencies.html │ │ ├── currencies.js │ │ ├── currencydropdown.html │ │ └── currencydropdown.js │ ├── custom-contact-links-setting │ │ ├── custom-contact-links.css │ │ └── custom-contact-links.html │ ├── department-setting │ │ ├── departments.html │ │ └── departments.js │ ├── email-settings │ │ ├── Email.css │ │ ├── email.html │ │ ├── emailSetting.js │ │ ├── emailTemplate.html │ │ ├── emailsettings.html │ │ └── emailsettings.js │ ├── financial-settings │ │ ├── Financial.css │ │ ├── financial.html │ │ └── financial.js │ ├── fixed-asset_edit-add-pool │ │ ├── fixed-asset_edit-add-pool.css │ │ ├── fixed-asset_edit-add-pool.html │ │ └── fixed-asset_edit-add-pool.js │ ├── fixed-asset_edit-asset-type │ │ ├── fixed-asset_edit-asset-type.css │ │ ├── fixed-asset_edit-asset-type.html │ │ └── fixed-asset_edit-asset-type.js │ ├── fixed-assets-settings │ │ ├── Fixed-assets.css │ │ ├── fixed-assets.html │ │ └── fixed-assets.js │ ├── fxupdate │ │ ├── fxupdate.css │ │ ├── fxupdate.html │ │ └── fxupdatesettings.js │ ├── general.html │ ├── invoice-settings │ │ ├── invoice.css │ │ ├── invoice.html │ │ └── invoice.js │ ├── linktrueerp │ │ ├── linkTrueERP.html │ │ └── linkTrueERP.js │ ├── organisation-setting │ │ ├── organisation.html │ │ └── organisation_settings.js │ ├── payItems-Setting │ │ ├── pay-items.html │ │ └── payItems.css │ ├── paymentmethod-setting │ │ ├── paymentmethods.html │ │ └── paymentmethods.js │ ├── payroll-settings │ │ ├── addratetype.html │ │ ├── addratetype.js │ │ ├── fundtype.html │ │ ├── fundtypelist.html │ │ ├── fundtypelist.js │ │ ├── payroll-settings-service.js │ │ ├── payroll.css │ │ ├── payroll.html │ │ ├── payrollrules.html │ │ ├── payrollrules.js │ │ ├── ratetypelistpop.html │ │ └── ratetypelistpop.js │ ├── settings-service.js │ ├── settings.html │ ├── settings.js │ ├── sms-settings │ │ ├── sms-settings.js │ │ ├── sms.html │ │ └── sms_settings.json │ ├── subscription-settings │ │ ├── subscription.html │ │ └── subscription.js │ ├── tax-rates-setting │ │ ├── addnew-taxrate.html │ │ ├── addnew-taxrate.js │ │ ├── newtaxratepop.html │ │ ├── newtaxratepop.js │ │ ├── tax-rates.css │ │ ├── tax-rates.html │ │ ├── tax-rates.js │ │ ├── taxratelistpop.html │ │ └── taxratelistpop.js │ ├── template-settings │ │ ├── templatesettings.html │ │ └── templatesettings.js │ ├── term-setting │ │ ├── term.html │ │ └── term.js │ └── tracking-settings │ │ ├── tracking.css │ │ ├── tracking.html │ │ └── tracking.js ├── shipping │ ├── deliverylist.html │ ├── shipping-service.js │ ├── shipping.css │ ├── shipping.html │ ├── shipping_list.html │ ├── shipping_scan.html │ ├── shippinglist.js │ ├── shippingquickInv.html │ └── shippingquickSO.html ├── startup.js ├── stocktake │ ├── add-new-stock-adjust │ │ ├── new_stocktake_scan.html │ │ └── stockadjustadd.js │ ├── stockadjust-list │ │ ├── stockadjust-list.js │ │ ├── stockadjustment.css │ │ └── stocktake.html │ ├── stockadjust-service.js │ ├── stockadjust.css │ ├── stocktake.html │ └── stocktake_card.html ├── stocktransfer │ ├── stocktransfercard.html │ ├── stocktransfercard.js │ ├── stocktransferlist.html │ └── stocktransferlist.js ├── supplier │ ├── supplier_add.html │ └── supplier_edit.html ├── user-profile │ ├── profile.css │ └── profile.html ├── utility-service.js ├── vs1charts │ ├── absenteeRate │ │ ├── absenteeRate.html │ │ └── absenteeRate.js │ ├── accountrevenuestreams │ │ ├── accountrevenuestreams.html │ │ └── accountrevenuestreams.js │ ├── activeEmployees │ │ ├── User.js │ │ ├── activeEmployees.html │ │ └── activeEmployees.js │ ├── allChartLists │ │ ├── allChartLists.html │ │ └── allChartLists.js │ ├── clockedOnEmployees │ │ ├── clockedOnEmployees.html │ │ └── clockedOnEmployees.js │ ├── employeecompletedjobs │ │ ├── employeecompletedjobs.html │ │ └── employeecompletedjobs.js │ ├── expensebreakdown │ │ ├── expensebreakdown.html │ │ └── expensebreakdown.js │ ├── expenses │ │ ├── expenseschart.html │ │ └── expenseschart.js │ ├── invstockonhandanddemand │ │ ├── invstockonhandanddemand.html │ │ └── invstockonhandanddemand.js │ ├── monthllyexpenses │ │ ├── monthllyexpenses.html │ │ └── monthllyexpenses.js │ ├── monthlyearnings │ │ ├── monthlyearnings.html │ │ └── monthlyearnings.js │ ├── monthlyprofitandloss │ │ ├── monthlyprofitandloss.html │ │ └── monthlyprofitandloss.js │ ├── profitandlosschart │ │ ├── profitandlosschart.html │ │ └── profitandlosschart.js │ ├── purchasesaleschart │ │ ├── purchasesaleschart.html │ │ └── purchasesaleschart.js │ ├── quotedinvoicedamounts │ │ ├── quotedinvoicedamounts.html │ │ └── quotedinvoicedamounts.js │ ├── quotedsalesorderinvoicedamounts │ │ ├── quotedsalesorderinvoicedamounts.html │ │ └── quotedsalesorderinvoicedamounts.js │ ├── resalescomparision │ │ ├── resalescomparision.html │ │ └── resalescomparision.js │ ├── top10Customers │ │ ├── Customer.js │ │ ├── top10Customers.html │ │ └── top10Customers.js │ ├── top10Suppliers │ │ ├── Customer.js │ │ ├── top10Suppliers.html │ │ └── top10Suppliers.js │ └── vs1charts-service.js └── vs1shipping │ ├── shippingDocket.html │ ├── shippingOverview.html │ ├── shippingdocket.js │ └── shippingoverview.js ├── collections ├── emailDB.js └── registerDB.js ├── config └── settings.json ├── etc └── npmrc ├── imports └── startup │ └── client │ └── serviceWorker.js ├── package.json ├── packages.json ├── packages ├── meteor-ssr │ ├── .gitignore │ ├── .travis.yml │ ├── README.md │ ├── lib │ │ ├── api.js │ │ ├── dynamic.js │ │ ├── overrides.js │ │ └── template.js │ ├── package.js │ ├── test │ │ ├── base.js │ │ └── jade.js │ └── versions.json ├── meteor-synced-cron │ ├── .gitignore │ ├── .npm │ │ └── package │ │ │ ├── .gitignore │ │ │ ├── README │ │ │ └── npm-shrinkwrap.json │ ├── .versions │ ├── LICENSE │ ├── README.md │ ├── example │ │ ├── .meteor │ │ │ ├── .finished-upgraders │ │ │ ├── .gitignore │ │ │ ├── .id │ │ │ ├── packages │ │ │ ├── platforms │ │ │ ├── release │ │ │ └── versions │ │ ├── example.css │ │ ├── example.html │ │ └── example.js │ ├── package.js │ ├── synced-cron-server.js │ ├── synced-cron-tests.js │ └── versions.json └── packages │ └── meteor-synced-cron │ ├── .gitignore │ ├── .npm │ └── package │ │ ├── .gitignore │ │ ├── README │ │ └── npm-shrinkwrap.json │ ├── .versions │ ├── LICENSE │ ├── README.md │ ├── example │ ├── .meteor │ │ ├── .finished-upgraders │ │ ├── .gitignore │ │ ├── .id │ │ ├── packages │ │ ├── platforms │ │ ├── release │ │ └── versions │ ├── example.css │ ├── example.html │ └── example.js │ ├── package.js │ ├── synced-cron-server.js │ ├── synced-cron-tests.js │ └── versions.json ├── private └── email │ └── templates │ ├── invitation.html │ ├── orderemail.html │ └── reportemail.html ├── public ├── APK │ └── com.google.zxing.client.android-4.7.3-103-minAPI15.apk ├── GreentrackModules.json ├── MasterVS1Pricing.json ├── VS1Modules.json ├── assets │ ├── VS1logo.png │ ├── bootstrap │ │ ├── css │ │ │ └── bootstrap.min.css │ │ └── js │ │ │ └── bootstrap.min.js │ ├── css │ │ ├── Bootstrap-DataTables.css │ │ ├── Custom-File-Upload.css │ │ ├── Drag--Drop-Upload-Form.css │ │ ├── Login-Form-Clean.css │ │ ├── Login-Form-Dark.css │ │ ├── Scrollbar.css │ │ └── dndfield.compiled.css │ ├── fonts │ │ ├── FontAwesome.otf │ │ ├── fa-brands-400.eot │ │ ├── fa-brands-400.svg │ │ ├── fa-brands-400.ttf │ │ ├── fa-brands-400.woff │ │ ├── fa-brands-400.woff2 │ │ ├── fa-regular-400.eot │ │ ├── fa-regular-400.svg │ │ ├── fa-regular-400.ttf │ │ ├── fa-regular-400.woff │ │ ├── fa-regular-400.woff2 │ │ ├── fa-solid-900.eot │ │ ├── fa-solid-900.svg │ │ ├── fa-solid-900.ttf │ │ ├── fa-solid-900.woff │ │ ├── fa-solid-900.woff2 │ │ ├── font-awesome.min.css │ │ ├── fontawesome-all.min.css │ │ ├── fontawesome-webfont.eot │ │ ├── fontawesome-webfont.svg │ │ ├── fontawesome-webfont.ttf │ │ ├── fontawesome-webfont.woff │ │ ├── fontawesome-webfont.woff2 │ │ ├── fontawesome5-overrides.min.css │ │ ├── ionicons.eot │ │ ├── ionicons.min.css │ │ ├── ionicons.svg │ │ ├── ionicons.ttf │ │ ├── ionicons.woff │ │ ├── line-awesome.eot │ │ ├── line-awesome.min.css │ │ ├── line-awesome.svg │ │ ├── line-awesome.ttf │ │ ├── line-awesome.woff │ │ └── line-awesome.woff2 │ ├── img │ │ ├── GreenTrackLogin.png │ │ ├── Thumbs.db │ │ ├── VS1.png │ │ ├── VS1Cloud Icon.png │ │ ├── VS1CloudBackground.jpeg │ │ ├── VS1CloudLogo.png │ │ ├── avatars │ │ │ ├── Thumbs.db │ │ │ ├── avatar1.jpeg │ │ │ ├── avatar2.jpeg │ │ │ ├── avatar3.jpeg │ │ │ ├── avatar4.jpeg │ │ │ └── avatar5.jpeg │ │ ├── cannabis1.webp │ │ ├── cannabis3.webp │ │ ├── dogs │ │ │ ├── image1.jpeg │ │ │ ├── image2.jpeg │ │ │ └── image3.jpeg │ │ ├── icon-print-preview.png │ │ ├── left-squared.png │ │ ├── right-squared.png │ │ ├── share.jpg │ │ ├── vs1cloudbrand.png │ │ ├── vs1greentracklogo.png │ │ ├── vs1logo.png │ │ ├── vs1production.png │ │ └── vs1sandbox.png │ └── js │ │ ├── Bootstrap-DataTables.js │ │ ├── Bootstrap-Table.js │ │ ├── ColReorderWithResize.js │ │ ├── Custom-File-Upload.js │ │ ├── bs-init.js │ │ ├── chart.min.js │ │ ├── dndfield.js │ │ ├── dragndrop.table.columns.js │ │ ├── html2pdf.bundle.js │ │ ├── jquery.min.js │ │ └── theme.js ├── css │ ├── Thumbs.db │ ├── export-excel.css │ ├── loading-36.gif │ ├── loadingspinner.gif │ └── spinner.css ├── downloads │ └── csvHelpFile.pdf ├── favicon.ico ├── icons │ ├── 020c9df5cbaec55afebfe04669263d57.png │ ├── Thumbs.db │ ├── android-icon-144x144.png │ ├── android-icon-192x192.png │ ├── android-icon-36x36.png │ ├── android-icon-48x48.png │ ├── android-icon-72x72.png │ ├── android-icon-96x96.png │ ├── apple-icon-114x114.png │ ├── apple-icon-120x120.png │ ├── apple-icon-144x144.png │ ├── apple-icon-152x152.png │ ├── apple-icon-180x180.png │ ├── apple-icon-57x57 - Copy.png │ ├── apple-icon-57x57.png │ ├── apple-icon-60x60.ico │ ├── apple-icon-60x60.png │ ├── apple-icon-72x72.png │ ├── apple-icon-76x76.png │ ├── apple-icon-precomposed.png │ ├── apple-icon.png │ ├── browserconfig.xml │ ├── cal_icon.png │ ├── checkSign.png │ ├── closehelp.PNG │ ├── delIcon.png │ ├── demo_video.png │ ├── earnings.svg │ ├── env1.png │ ├── erp_favicon.ico │ ├── excel-icon.png │ ├── exceldropicon.png │ ├── excelicon2.jpg │ ├── excelicon2.png │ ├── exp_bubble.jpg │ ├── favicon-16x16.png │ ├── favicon-32x32.png │ ├── favicon-96x96.png │ ├── favicon.ico │ ├── favicon.png │ ├── googledocdropicon.png │ ├── greentrackIcon.png │ ├── info_icon.png │ ├── manifest.json │ ├── ms-icon-144x144.png │ ├── ms-icon-150x150.png │ ├── ms-icon-310x310.png │ ├── ms-icon-70x70.png │ ├── nav_doc.png │ ├── nav_mail.png │ ├── nav_plus.png │ ├── nav_ques.png │ ├── nav_search.png │ ├── nofiles_icon.jpg │ ├── nofiles_icon.png │ ├── pdfdropicon.png │ ├── poic1.jpg │ ├── poic1.png │ ├── poic2.png │ ├── poic3.png │ ├── poic4.png │ ├── poic5.png │ ├── poic6.png │ ├── prodDelIcon.png │ ├── quoteSent.png │ ├── quotetermarrow.png │ ├── tableRow_Icon.png │ ├── vidbankaccounts.png │ ├── vidchartofaccounts.png │ ├── vidcontacts.png │ ├── videxpense.png │ ├── vidfixedassets.png │ ├── vidinventory.png │ ├── vidpurchases.png │ ├── vidsales.png │ ├── vidthumb.png │ ├── vs1_icons.png │ ├── vs1_logo.jpg │ ├── vs1_logo.png │ ├── vs1_logo_SML.png │ ├── vs1cloud_logo.ico │ └── wideviewarrow.png ├── images │ ├── Thumbs.db │ ├── VS1CloudIcon.png │ ├── VS1logo.png │ ├── gridoption.svg │ ├── icon_australia.png │ ├── icon_southafrica.png │ ├── icon_usa.png │ ├── icons-192 (1).png │ ├── icons-192 (2).png │ ├── icons-192.png │ ├── icons-512 (1).png │ ├── icons-512 (2).png │ ├── icons-512.png │ ├── listoption.svg │ ├── phone-support.png │ ├── receipt1.jpg │ ├── receipt2.jpg │ ├── reportdownload.png │ ├── skype1.png │ ├── splashtop.png │ ├── upgradetovs1.png │ ├── vs1_512x512.jpg │ └── zoom1.png ├── img │ ├── 70x70.jpg │ ├── BusinessIcons.png │ ├── Currencies.png │ ├── Fixed-Asset.png │ ├── GetFile (1).jpg │ ├── GetFile.jpg │ ├── INDEXING.png │ ├── Include.svg │ ├── Invoice.png │ ├── Link-Definition-bg.png │ ├── Payment-Services.jpg │ ├── RenameIcon.gif │ ├── Settings.gif │ ├── Thumbs.db │ ├── Tracking.png │ ├── Users.png │ ├── action-bar.png │ ├── add.gif │ ├── arrow.gif │ ├── avatar.png │ ├── back-icons.gif │ ├── bank-rules.png │ ├── bankwest_small.png │ ├── border-bottom-bg.gif │ ├── business-performance.jpg │ ├── chat1.png │ ├── close.png │ ├── closeButton.png │ ├── credittNote.png │ ├── custom-contact-links.png │ ├── d01c34020b914cd1b65eb6eb3349b8f6.gif │ ├── deductions.svg │ ├── demo-logo.png │ ├── deputy.svg │ ├── documents.png │ ├── down_arrow.gif │ ├── dropdown_icon.png │ ├── dropdown_iconbill.png │ ├── eceaicons.png │ ├── email-bg.png │ ├── error-icons.png │ ├── file-icons.png │ ├── file_icons-samall.png │ ├── hubdoc.svg │ ├── icon_100x100.png │ ├── imgCal.png │ ├── imgCal2.png │ ├── invoice-icons.png │ ├── logo_new.png │ ├── logo_new1.png │ ├── noc_icon.jpg │ ├── noc_icon1.png │ ├── orange.png │ ├── padlock.png │ ├── parPal.svg │ ├── payrollSettings.png │ ├── pdf.png │ ├── percent-bg.png │ ├── productDrop.png │ ├── profile-org-example.png │ ├── receipt-bank.svg │ ├── s.gif │ ├── spotlight-reporting.svg │ ├── table_icons.gif │ ├── tax-rates.png │ ├── taxable-payments.png │ ├── template.png │ ├── this.gif │ ├── tick-circle.svg │ ├── true-icons.png │ ├── upload.png │ ├── user.jpg │ ├── vs1_logo_cloud.jpg │ ├── vs1_logo_cloud.png │ ├── vs1_logo_cloud.zip │ ├── vs1_logo_cloud_SML.png │ ├── watermarks.png │ └── wide-view-icons.png ├── js │ └── choosen.js ├── manifest2.json ├── sample_imports │ ├── SampleAccount.csv │ ├── SampleAccount.ods │ ├── SampleAccounts - Copy.xlsx │ ├── SampleAccounts.xlsx │ ├── SampleChartOfAccounts.csv │ ├── SampleCustomer.csv │ ├── SampleCustomer.ods │ ├── SampleCustomer.xlsx │ ├── SampleEmployee.ods │ ├── SampleEmployee.xlsx │ ├── SampleProduct.xlsx │ ├── SampleSupplier.ods │ └── SampleSupplier.xlsx ├── sounds │ ├── furrow.ogg │ ├── plucky.m4r │ ├── plucky.mp3 │ ├── system-fault.aiff │ ├── system-fault.m4r │ └── system-fault.mp3 ├── sts_images │ ├── barcode.png │ ├── graphs.svg │ ├── harvest.svg │ ├── harvests.svg │ ├── packages.svg │ ├── plants.svg │ ├── refresh.svg │ ├── settings.svg │ ├── sync.svg │ └── transfers.svg ├── sw.js ├── vs1cloudsoftware.mp4 └── vs1cloudsoftwarelogin.mp4 ├── server ├── mailgun_config.js └── main.js ├── settings-development.json ├── settings.json └── start-dev.sh /.gitattributes: -------------------------------------------------------------------------------- 1 | # Auto detect text files and perform LF normalization 2 | * text=auto 3 | -------------------------------------------------------------------------------- /.gitignore: -------------------------------------------------------------------------------- 1 | node_modules 2 | .idea 3 | package-lock.json 4 | /package-lock.json 5 | .vscode 6 | -------------------------------------------------------------------------------- /.meteor/.finished-upgraders: -------------------------------------------------------------------------------- 1 | # This file contains information which helps Meteor properly upgrade your 2 | # app when you run 'meteor update'. You should check it into version control 3 | # with your project. 4 | 5 | notices-for-0.9.0 6 | notices-for-0.9.1 7 | 0.9.4-platform-file 8 | notices-for-facebook-graph-api-2 9 | 1.2.0-standard-minifiers-package 10 | 1.2.0-meteor-platform-split 11 | 1.2.0-cordova-changes 12 | 1.2.0-breaking-changes 13 | 1.3.0-split-minifiers-package 14 | 1.4.0-remove-old-dev-bundle-link 15 | 1.4.1-add-shell-server-package 16 | 1.4.3-split-account-service-packages 17 | 1.5-add-dynamic-import-package 18 | -------------------------------------------------------------------------------- /.meteor/.gitignore: -------------------------------------------------------------------------------- 1 | local 2 | -------------------------------------------------------------------------------- /.meteor/.id: -------------------------------------------------------------------------------- 1 | # This file contains a token that is unique to your project. 2 | # Check it into your repository along with the rest of this directory. 3 | # It can be used for purposes such as: 4 | # - ensuring you don't accidentally deploy one app on top of another 5 | # - providing package authors with aggregated statistics 6 | 7 | 1u3l6cds5t1lpmnwdey 8 | -------------------------------------------------------------------------------- /.meteor/cordova-plugins: -------------------------------------------------------------------------------- 1 | com.phonegap.plugins.facebookconnect@https://github.com/Wizcorp/phonegap-facebook-plugin.git#5dbb1583168558b4447a13235283803151cb04ec 2 | me.dispatch.crosswalk-permissions@file://./packages 3 | phonegap-plugin-barcodescanner@2.0.1 4 | -------------------------------------------------------------------------------- /.meteor/platforms: -------------------------------------------------------------------------------- 1 | android 2 | browser 3 | ios 4 | server 5 | -------------------------------------------------------------------------------- /.meteor/release: -------------------------------------------------------------------------------- 1 | METEOR@1.6 2 | -------------------------------------------------------------------------------- /client/Dashboard/account-watchlist-widget/account-watchlist-widget.html: -------------------------------------------------------------------------------- 1 | 25 | -------------------------------------------------------------------------------- /client/Dashboard/dashboard-service.js: -------------------------------------------------------------------------------- 1 | import {BaseService} from '../js/base-service.js'; 2 | export class DashBoardService extends BaseService { 3 | getAwaitingPayment() { 4 | let options = { 5 | PropertyList: "ID,TotalAmountInc,TotalBalance,DueDate", 6 | select: "[IsPaid]=false and [deleted]=false" 7 | //LimitCount : 5 8 | } 9 | return this.getList(this.ERPObjects.TInvoice, options); 10 | } 11 | 12 | getDraft() { 13 | let options = { 14 | PropertyList: "ID,TotalAmountInc,TotalBalance,DueDate", 15 | select: "[SalesStatus]='Draft' and [deleted]=false" 16 | //LimitCount : 5 17 | } 18 | return this.getList(this.ERPObjects.TInvoice, options); 19 | } 20 | 21 | getDraftBill(){ 22 | let options = { 23 | PropertyList: "ID,TotalAmountInc,TotalBalance", 24 | select: "[OrderStatus]='Draft' and [deleted]=false" 25 | //LimitCount : 5 26 | } 27 | return this.getList(this.ERPObjects.TBill, options); 28 | } 29 | 30 | getOneInvoice(id) { 31 | return this.getOneById(this.ERPObjects.TInvoice, id); 32 | } 33 | 34 | getAwaitingBills() { 35 | return this.GET(this.erpGet.ERPAwaitingPaymentBill); 36 | } 37 | 38 | getOverduePayments() { 39 | return this.GET(this.erpGet.ERPOverDuePaymentInv); 40 | 41 | } 42 | 43 | getOverdueBills() { 44 | return this.GET(this.erpGet.ERPOverDuePaymentBill); 45 | } 46 | 47 | getExpenseClaim() { 48 | return this.GET(this.erpGet.ERPTExpense); 49 | } 50 | getAccountWatchlistData() { 51 | return this.getList(this.ERPObjects.TDashboardAccountSummaryReport); 52 | 53 | } 54 | } 55 | -------------------------------------------------------------------------------- /client/Dashboard/expense-claims-widget/expense-claims-widget.html: -------------------------------------------------------------------------------- 1 | 29 | -------------------------------------------------------------------------------- /client/Dashboard/total-cash-widget/total-cash-widget.html: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /client/Footer/footer.html: -------------------------------------------------------------------------------- 1 | 8 | -------------------------------------------------------------------------------- /client/Login/vs1check.html: -------------------------------------------------------------------------------- 1 | 6 | -------------------------------------------------------------------------------- /client/Navigation/closex.html: -------------------------------------------------------------------------------- 1 | 8 | -------------------------------------------------------------------------------- /client/accesslevel/accesslevel.html: -------------------------------------------------------------------------------- 1 | 9 | -------------------------------------------------------------------------------- /client/accesslevel/companyappsettings.html: -------------------------------------------------------------------------------- 1 | 11 | -------------------------------------------------------------------------------- /client/crm/components/addTaskModal/addTask.js: -------------------------------------------------------------------------------- 1 | Template.addTask.onCreated(function () { 2 | }); 3 | 4 | Template.addTask.events({ 5 | 6 | }); 7 | 8 | Template.addTask.helpers({ 9 | 10 | getTodayDate: (format) => { 11 | return moment().format(format); 12 | }, 13 | 14 | getTomorrowDay: () => { 15 | return moment().add(1, 'day').format('ddd'); 16 | }, 17 | 18 | getNextMonday: () => { 19 | var startDate = moment(); 20 | return moment(startDate).day(1 + 7).format('ddd MMM D'); 21 | }, 22 | 23 | getDescription: (description) => { 24 | return description.length < 80 ? description : description.substring(0, 79) + '...' 25 | } 26 | }); 27 | -------------------------------------------------------------------------------- /client/crm/components/taskDetailModal/taskmodal.js: -------------------------------------------------------------------------------- 1 | import { CRMService } from '../../crm-service'; 2 | let crmService = new CRMService(); 3 | 4 | Template.taskmodal.onCreated(function () { 5 | }); 6 | 7 | Template.taskmodal.onRendered(function () { 8 | }); 9 | 10 | Template.taskmodal.events({ 11 | 12 | }); 13 | 14 | Template.taskmodal.helpers({ 15 | }); 16 | -------------------------------------------------------------------------------- /client/crm/components/taskDropMenu/task_drop_menu.html: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /client/crm/components/top-menu.html: -------------------------------------------------------------------------------- 1 | 14 | -------------------------------------------------------------------------------- /client/crm/leadlist/leadlist.html: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/prowebdev119/Meteor/c3d20b0bb3b255cc63fd92f6d9aa771cd1689df0/client/crm/leadlist/leadlist.html -------------------------------------------------------------------------------- /client/crm/leadlist/leadlist.js: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/prowebdev119/Meteor/c3d20b0bb3b255cc63fd92f6d9aa771cd1689df0/client/crm/leadlist/leadlist.js -------------------------------------------------------------------------------- /client/default.html: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/prowebdev119/Meteor/c3d20b0bb3b255cc63fd92f6d9aa771cd1689df0/client/default.html -------------------------------------------------------------------------------- /client/erptohide.txt: -------------------------------------------------------------------------------- 1 | bankAccountsWidget hide Reconcile (0) items 2 | -------------------------------------------------------------------------------- /client/fittings/fitting-service.js: -------------------------------------------------------------------------------- 1 | import {BaseService} from "../js/base-service"; 2 | export class FittingService extends BaseService { 3 | getAllSalesOrder() { 4 | let options = { 5 | PropertyList: "Id,DocNumber,ClientName,EmployeeName,SaleClassName,SaleDate,TermsName,deleted", 6 | // select: "[deleted]=false" 7 | }; 8 | return this.getList(this.ERPObjects.TSalesOrder, options); 9 | } 10 | 11 | } 12 | -------------------------------------------------------------------------------- /client/fittings/fittings_scan.html: -------------------------------------------------------------------------------- 1 | 45 | -------------------------------------------------------------------------------- /client/inventory/inventory_add.html: -------------------------------------------------------------------------------- 1 | 11 | -------------------------------------------------------------------------------- /client/js/Api/AccountOverviewApi.js: -------------------------------------------------------------------------------- 1 | import ApiService from "./Module/ApiService"; 2 | import ApiCollection from "./Module/ApiCollection"; 3 | import ApiCollectionHelper from "./Module/ApiCollectionHelper"; 4 | import ApiEndpoint from "./Module/ApiEndPoint"; 5 | 6 | /** 7 | * @param {ApiCollection} collection 8 | */ 9 | export default class AccountOverviewApi { 10 | constructor() { 11 | this.name = "dashboard"; 12 | 13 | this.collectionNames = { 14 | vs1charts: "vs1charts", 15 | TVs1TabGroups: "TVs1TabGroups", 16 | Tvs1dashboardpreferences: "Tvs1dashboardpreferences" 17 | 18 | }; 19 | 20 | this.collection = new ApiCollection([ 21 | new ApiEndpoint({ 22 | name: this.collectionNames.vs1charts, 23 | url: ApiService.getBaseUrl({ endpoint: "Tvs1charts" }), 24 | headers: ApiService.getHeaders() 25 | }), 26 | new ApiEndpoint({ 27 | name: this.collectionNames.TVs1TabGroups, 28 | url: ApiService.getBaseUrl({ endpoint: "TVs1TabGroups" }), 29 | headers: ApiService.getHeaders() 30 | }), 31 | new ApiEndpoint({ 32 | name: this.collectionNames.Tvs1dashboardpreferences, 33 | url: ApiService.getBaseUrl({ endpoint: `Tvs1dashboardpreferences` }), 34 | headers: ApiService.getHeaders() 35 | }), 36 | ]); 37 | } 38 | } 39 | -------------------------------------------------------------------------------- /client/js/Api/ChartsApi.js: -------------------------------------------------------------------------------- 1 | import ApiService from "./Module/ApiService"; 2 | import ApiCollection from "./Module/ApiCollection"; 3 | import ApiCollectionHelper from "./Module/ApiCollectionHelper"; 4 | import ApiEndpoint from "./Module/ApiEndPoint"; 5 | 6 | /** 7 | * @param {ApiCollection} collection 8 | */ 9 | export default class ChartsApi { 10 | constructor() { 11 | this.name = "dashboard"; 12 | 13 | this.collectionNames = { 14 | vs1charts: "vs1charts", 15 | TVs1TabGroups: "TVs1TabGroups", 16 | Tvs1dashboardpreferences: "Tvs1dashboardpreferences" 17 | 18 | }; 19 | 20 | this.collection = new ApiCollection([ 21 | new ApiEndpoint({ 22 | name: this.collectionNames.vs1charts, 23 | url: ApiService.getBaseUrl({ endpoint: "Tvs1charts" }), 24 | headers: ApiService.getHeaders() 25 | }), 26 | new ApiEndpoint({ 27 | name: this.collectionNames.TVs1TabGroups, 28 | url: ApiService.getBaseUrl({ endpoint: "TVs1TabGroups" }), 29 | headers: ApiService.getHeaders() 30 | }), 31 | new ApiEndpoint({ 32 | name: this.collectionNames.Tvs1dashboardpreferences, 33 | url: ApiService.getBaseUrl({ endpoint: `Tvs1dashboardpreferences` }), 34 | headers: ApiService.getHeaders() 35 | }), 36 | ]); 37 | } 38 | } 39 | -------------------------------------------------------------------------------- /client/js/Api/DashboardApi.js: -------------------------------------------------------------------------------- 1 | import ApiService from "./Module/ApiService"; 2 | import ApiCollection from "./Module/ApiCollection"; 3 | import ApiCollectionHelper from "./Module/ApiCollectionHelper"; 4 | import ApiEndpoint from "./Module/ApiEndPoint"; 5 | 6 | /** 7 | * @param {ApiCollection} collection 8 | */ 9 | export default class DashboardApi { 10 | constructor() { 11 | this.name = "dashboard"; 12 | 13 | this.collectionNames = { 14 | vs1charts: "vs1charts", 15 | TVs1TabGroups: "TVs1TabGroups", 16 | Tvs1dashboardpreferences: "Tvs1dashboardpreferences" 17 | 18 | }; 19 | 20 | this.collection = new ApiCollection([ 21 | new ApiEndpoint({ 22 | name: this.collectionNames.vs1charts, 23 | url: ApiService.getBaseUrl({ endpoint: "Tvs1charts" }), 24 | headers: ApiService.getHeaders() 25 | }), 26 | new ApiEndpoint({ 27 | name: this.collectionNames.TVs1TabGroups, 28 | url: ApiService.getBaseUrl({ endpoint: "TVs1TabGroups" }), 29 | headers: ApiService.getHeaders() 30 | }), 31 | new ApiEndpoint({ 32 | name: this.collectionNames.Tvs1dashboardpreferences, 33 | url: ApiService.getBaseUrl({ endpoint: `Tvs1dashboardpreferences` }), 34 | headers: ApiService.getHeaders() 35 | }), 36 | ]); 37 | } 38 | } 39 | -------------------------------------------------------------------------------- /client/js/Api/EmployeePayrollApi.js: -------------------------------------------------------------------------------- 1 | import ApiService from "./Module/ApiService"; 2 | import ApiCollection from "./Module/ApiCollection"; 3 | import ApiCollectionHelper from "./Module/ApiCollectionHelper"; 4 | import ApiEndpoint from "./Module/ApiEndPoint"; 5 | 6 | /** 7 | * @param {ApiCollection} collection 8 | */ 9 | export default class EmployeePayrollApi { 10 | constructor() { 11 | this.name = "employeePayroll"; 12 | 13 | this.collectionNames = { 14 | TEmployeepaysettings: "TEmployeepaysettings" 15 | }; 16 | 17 | this.collection = new ApiCollection([ 18 | new ApiEndpoint({ 19 | name: this.collectionNames.TEmployeepaysettings, 20 | url: ApiService.getBaseUrl({ endpoint: "TEmployeepaysettings" }), 21 | headers: ApiService.getHeaders() 22 | }) 23 | ]); 24 | } 25 | } 26 | -------------------------------------------------------------------------------- /client/js/Api/Model/AssignLeaveType.js: -------------------------------------------------------------------------------- 1 | import AssignLeaveTypeFields from "./AssignLeaveTypeFields"; 2 | export default class AssignLeaveType { 3 | constructor({type, fields}) { 4 | this.type = type; 5 | 6 | if(fields instanceof AssignLeaveTypeFields) { 7 | this.fields = fields; 8 | }else { 9 | this.fields = new AssignLeaveTypeFields(fields); 10 | } 11 | 12 | } 13 | 14 | /** 15 | * 16 | * @param {Array} array 17 | * @return {AssignLeaveType[]} 18 | */ 19 | static fromList(array) { 20 | let myList = []; 21 | array.forEach((element) => { 22 | myList.push(new AssignLeaveType(element)); 23 | }); 24 | 25 | return myList; 26 | } 27 | 28 | } -------------------------------------------------------------------------------- /client/js/Api/Model/AssignLeaveTypeFields.js: -------------------------------------------------------------------------------- 1 | export default class AssignLeaveTypeFields { 2 | constructor({ 3 | LeaveType, 4 | EmployeeID, 5 | LeaveCalcMethod, 6 | HoursAccruedAnnually, 7 | HoursAccruedAnnuallyFullTimeEmp, 8 | HoursFullTimeEmpFortnightlyPay, 9 | HoursLeave, 10 | OpeningBalance, 11 | OnTerminationUnusedBalance, 12 | EFTLeaveType, 13 | SuperannuationGuarantee 14 | }){ 15 | this.LeaveType = LeaveType; 16 | this.EmployeeID = EmployeeID; 17 | this.LeaveCalcMethod = LeaveCalcMethod; 18 | this.HoursAccruedAnnually = HoursAccruedAnnually; 19 | this.HoursAccruedAnnuallyFullTimeEmp = HoursAccruedAnnuallyFullTimeEmp; 20 | this.HoursFullTimeEmpFortnightlyPay = HoursFullTimeEmpFortnightlyPay; 21 | this.HoursLeave = HoursLeave; 22 | this.OpeningBalance = OpeningBalance; 23 | this.OnTerminationUnusedBalance = OnTerminationUnusedBalance; 24 | this.EFTLeaveType = EFTLeaveType; 25 | this.SuperannuationGuarantee = SuperannuationGuarantee; 26 | } 27 | } 28 | 29 | -------------------------------------------------------------------------------- /client/js/Api/Model/EmployeePaySettings.js: -------------------------------------------------------------------------------- 1 | import EmployeePaySettingFields from "./EmployeePaySettingFields"; 2 | 3 | /** 4 | * @param {EmployeePaySettingFields} fields 5 | * @type {{type: string, fields: EmployeePaySettingFields}} 6 | */ 7 | 8 | export default class EmployeePaySettings { 9 | constructor(options) { 10 | this.type = options.type; 11 | if (options.fields instanceof EmployeePaySettingFields) { 12 | this.fields = fields; 13 | } else { 14 | this.fields = new EmployeePaySettingFields(options.fields); 15 | } 16 | } 17 | 18 | /** 19 | * 20 | * @param {Array} array 21 | * @return {EmployeePaySettings[]} 22 | */ 23 | static fromList(array) { 24 | let myList = []; 25 | array.forEach((element) => { 26 | myList.push(new EmployeePaySettings(element)); 27 | }); 28 | 29 | return myList; 30 | } 31 | } 32 | -------------------------------------------------------------------------------- /client/js/Api/Model/LeaveRequest.js: -------------------------------------------------------------------------------- 1 | import LeaveRequestFields from "./LeaveRequestFields"; 2 | export default class LeaveRequest { 3 | constructor({type, fields}) { 4 | this.type = type; 5 | 6 | if(fields instanceof LeaveRequestFields) { 7 | this.fields = fields; 8 | }else { 9 | this.fields = new LeaveRequestFields(fields); 10 | } 11 | 12 | } 13 | 14 | /** 15 | * 16 | * @param {Array} array 17 | * @return {LeaveRequest[]} 18 | */ 19 | static fromList(array) { 20 | let myList = []; 21 | array.forEach((element) => { 22 | myList.push(new LeaveRequest(element)); 23 | }); 24 | 25 | return myList; 26 | } 27 | 28 | } -------------------------------------------------------------------------------- /client/js/Api/Model/LeaveRequestFields.js: -------------------------------------------------------------------------------- 1 | export default class LeaveRequestFields { 2 | constructor({ 3 | EmployeeID, 4 | TypeofRequest, 5 | Description, 6 | StartDate, 7 | EndDate, 8 | PayPeriod, 9 | Hours, 10 | Status 11 | }){ 12 | this.EmployeeID = EmployeeID; 13 | this.TypeofRequest = TypeofRequest; 14 | this.Description = Description; 15 | this.StartDate = StartDate; 16 | this.EndDate = EndDate; 17 | this.PayPeriod = PayPeriod; 18 | this.Hours = Hours; 19 | this.Status = Status; 20 | } 21 | } 22 | 23 | -------------------------------------------------------------------------------- /client/js/Api/Model/PayTemplateDeductionLine.js: -------------------------------------------------------------------------------- 1 | import PayTemplateDeductionLineFields from "./PayTemplateDeductionLineFields"; 2 | export default class PayTemplateDeductionLine { 3 | constructor({type, fields}) { 4 | this.type = type; 5 | 6 | if(fields instanceof PayTemplateDeductionLineFields) { 7 | this.fields = fields; 8 | }else { 9 | this.fields = new PayTemplateDeductionLineFields(fields); 10 | } 11 | 12 | } 13 | 14 | /** 15 | * 16 | * @param {Array} array 17 | * @return {PayTemplateDeductionLine[]} 18 | */ 19 | static fromList(array) { 20 | let myList = []; 21 | array.forEach((element) => { 22 | myList.push(new PayTemplateDeductionLine(element)); 23 | }); 24 | 25 | return myList; 26 | } 27 | 28 | } -------------------------------------------------------------------------------- /client/js/Api/Model/PayTemplateDeductionLineFields.js: -------------------------------------------------------------------------------- 1 | export default class PayTemplateDeductionLineFields { 2 | constructor({ 3 | ID, 4 | EmployeeID, 5 | DeductionType, 6 | CalculationType, 7 | ControlAccount, 8 | Percentage, 9 | Amount, 10 | }){ 11 | this.ID = ID; 12 | this.EmployeeID = EmployeeID; 13 | this.DeductionType = DeductionType; 14 | this.CalculationType = CalculationType; 15 | this.ControlAccount = ControlAccount; 16 | this.Percentage = Percentage; 17 | this.Amount = Amount; 18 | } 19 | } 20 | 21 | -------------------------------------------------------------------------------- /client/js/Api/Model/PayTemplateEarningLine.js: -------------------------------------------------------------------------------- 1 | import PayTemplateEarningLineFields from "./PayTemplateEarningLineFields"; 2 | export default class PayTemplateEarningLine { 3 | constructor({type, fields}) { 4 | this.type = type; 5 | 6 | if(fields instanceof PayTemplateEarningLineFields) { 7 | this.fields = fields; 8 | }else { 9 | this.fields = new PayTemplateEarningLineFields(fields); 10 | } 11 | 12 | } 13 | 14 | /** 15 | * 16 | * @param {Array} array 17 | * @return {PayTemplateEarningLine[]} 18 | */ 19 | static fromList(array) { 20 | let myList = []; 21 | array.forEach((element) => { 22 | myList.push(new PayTemplateEarningLine(element)); 23 | }); 24 | 25 | return myList; 26 | } 27 | 28 | } -------------------------------------------------------------------------------- /client/js/Api/Model/PayTemplateEarningLineFields.js: -------------------------------------------------------------------------------- 1 | export default class PayTemplateEarningLineFields { 2 | constructor({ 3 | ID, 4 | EmployeeID, 5 | EarningRate, 6 | CalculationType, 7 | ExpenseAccount, 8 | HoursPerWeek, 9 | AnnualSalary, 10 | FixedAmount, 11 | Hours, 12 | Rate, 13 | Total 14 | }){ 15 | this.ID = ID; 16 | this.EmployeeID = EmployeeID; 17 | this.EarningRate = EarningRate; 18 | this.CalculationType = CalculationType; 19 | this.ExpenseAccount = ExpenseAccount; 20 | this.HoursPerWeek = HoursPerWeek; 21 | this.AnnualSalary = AnnualSalary; 22 | this.FixedAmount = FixedAmount; 23 | this.Hours = Hours; 24 | this.Rate = Rate; 25 | this.Total = Total; 26 | } 27 | } 28 | 29 | -------------------------------------------------------------------------------- /client/js/Api/Model/PayTemplateReiumbursementLine.js: -------------------------------------------------------------------------------- 1 | import PayTemplateReiumbursementLineFields from "./PayTemplateReiumbursementLineFields"; 2 | export default class PayTemplateReiumbursementLine { 3 | constructor({type, fields}) { 4 | this.type = type; 5 | 6 | if(fields instanceof PayTemplateReiumbursementLineFields) { 7 | this.fields = fields; 8 | }else { 9 | this.fields = new PayTemplateReiumbursementLineFields(fields); 10 | } 11 | 12 | } 13 | 14 | /** 15 | * 16 | * @param {Array} array 17 | * @return {PayTemplateReiumbursementLine[]} 18 | */ 19 | static fromList(array) { 20 | let myList = []; 21 | array.forEach((element) => { 22 | myList.push(new PayTemplateReiumbursementLine(element)); 23 | }); 24 | 25 | return myList; 26 | } 27 | 28 | } -------------------------------------------------------------------------------- /client/js/Api/Model/PayTemplateReiumbursementLineFields.js: -------------------------------------------------------------------------------- 1 | export default class PayTemplateReiumbursementLineFields { 2 | constructor({ 3 | ID, 4 | EmployeeID, 5 | ReiumbursementType, 6 | Description, 7 | ControlExpenseAccount, 8 | Amount 9 | }){ 10 | this.ID = ID; 11 | this.EmployeeID = EmployeeID; 12 | this.ReiumbursementType = ReiumbursementType; 13 | this.Description = Description; 14 | this.ControlExpenseAccount = ControlExpenseAccount; 15 | this.Amount = Amount; 16 | } 17 | } 18 | 19 | -------------------------------------------------------------------------------- /client/js/Api/Model/PayTemplateSuperannuationLine.js: -------------------------------------------------------------------------------- 1 | import PayTemplateSuperannuationLineFields from "./PayTemplateSuperannuationLineFields"; 2 | export default class PayTemplateSuperannuationLine { 3 | constructor({type, fields}) { 4 | this.type = type; 5 | 6 | if(fields instanceof PayTemplateSuperannuationLineFields) { 7 | this.fields = fields; 8 | }else { 9 | this.fields = new PayTemplateSuperannuationLineFields(fields); 10 | } 11 | 12 | } 13 | 14 | /** 15 | * 16 | * @param {Array} array 17 | * @return {PayTemplateSuperannuationLine[]} 18 | */ 19 | static fromList(array) { 20 | let myList = []; 21 | array.forEach((element) => { 22 | myList.push(new PayTemplateSuperannuationLine(element)); 23 | }); 24 | 25 | return myList; 26 | } 27 | 28 | } -------------------------------------------------------------------------------- /client/js/Api/Model/PayTemplateSuperannuationLineFields.js: -------------------------------------------------------------------------------- 1 | export default class PayTemplateSuperannuationLineFields { 2 | constructor({ 3 | ID, 4 | EmployeeID, 5 | Fund, 6 | ContributionType, 7 | ReducesSGC, 8 | CalculationType, 9 | MinimumMonthlyEarnings, 10 | ExpenseAccount, 11 | LiabilityAccount, 12 | PaymentFrequency, 13 | PeriodPaymentDate 14 | }){ 15 | this.ID = ID; 16 | this.EmployeeID = EmployeeID; 17 | this.Fund = Fund; 18 | this.ContributionType = ContributionType; 19 | this.ReducesSGC = ReducesSGC; 20 | this.CalculationType = CalculationType; 21 | this.MinimumMonthlyEarnings = MinimumMonthlyEarnings; 22 | this.ExpenseAccount = ExpenseAccount; 23 | this.LiabilityAccount = LiabilityAccount; 24 | this.PaymentFrequency = PaymentFrequency; 25 | this.PeriodPaymentDate = PeriodPaymentDate; 26 | } 27 | } 28 | 29 | -------------------------------------------------------------------------------- /client/js/Api/Model/Tvs1CardPreference.js: -------------------------------------------------------------------------------- 1 | import Tvs1CardPreferenceFields from "./Tvs1CardPreferenceFields"; 2 | export default class Tvs1CardPreference { 3 | constructor({type, fields}) { 4 | this.type = type; 5 | 6 | if(fields instanceof Tvs1CardPreferenceFields) { 7 | this.fields = fields; 8 | }else { 9 | this.fields = new Tvs1CardPreferenceFields(fields); 10 | } 11 | 12 | } 13 | 14 | /** 15 | * 16 | * @param {Array} array 17 | * @return {Tvs1CardPreference[]} 18 | */ 19 | static fromList(array) { 20 | let myList = []; 21 | array.forEach((element) => { 22 | myList.push(new Tvs1CardPreference(element)); 23 | }); 24 | 25 | return myList; 26 | } 27 | 28 | } -------------------------------------------------------------------------------- /client/js/Api/Model/Tvs1CardPreferenceFields.js: -------------------------------------------------------------------------------- 1 | export default class Tvs1CardPreferenceFields { 2 | constructor({ 3 | ID, 4 | EmployeeID, 5 | CardKey, 6 | Position, 7 | TabGroup, 8 | Active 9 | }){ 10 | this.ID = ID; 11 | this.EmployeeID = EmployeeID; 12 | this.CardKey = CardKey; 13 | this.Position = Position; 14 | this.TabGroup = TabGroup; 15 | this.Active = Active; 16 | } 17 | } 18 | 19 | -------------------------------------------------------------------------------- /client/js/Api/Model/Tvs1Chart.js: -------------------------------------------------------------------------------- 1 | import Tvs1ChartField from "./Tvs1ChartField"; 2 | 3 | /** 4 | * @type {type: string, fields: Tvs1ChartField} options 5 | * @param {String} options.type 6 | * @param {Tvs1ChartField} options.fields 7 | */ 8 | export default class Tvs1chart { 9 | constructor(options) { 10 | this.type = options.type; 11 | if (options.fields instanceof Tvs1ChartField) { 12 | this.fields = fields; 13 | } else { 14 | this.fields = new Tvs1ChartField(options.fields); 15 | } 16 | } 17 | 18 | /** 19 | * 20 | * @param {Array} array 21 | * @return {Tvs1chart[]} 22 | */ 23 | static fromList(array) { 24 | let myList = []; 25 | array.forEach((element) => { 26 | myList.push(new Tvs1chart(element)); 27 | }); 28 | 29 | return myList; 30 | } 31 | } 32 | -------------------------------------------------------------------------------- /client/js/Api/Model/Tvs1ChartDashboardPreference.js: -------------------------------------------------------------------------------- 1 | import Tvs1ChartDashboardPreferenceField from "./Tvs1ChartDashboardPreferenceField"; 2 | 3 | /** 4 | * @param {Tvs1ChartDashboardPreferenceField} fields 5 | * @type {{type: string, fields: Tvs1ChartDashboardPreferenceField}} 6 | */ 7 | export default class Tvs1ChartDashboardPreference { 8 | constructor({type, fields}) { 9 | this.type = type; 10 | 11 | if(fields instanceof Tvs1ChartDashboardPreference) { 12 | this.fields = fields; 13 | }else { 14 | this.fields = new Tvs1ChartDashboardPreferenceField(fields); 15 | } 16 | 17 | } 18 | 19 | 20 | /** 21 | * 22 | * @param {Array} array 23 | * @return {Tvs1ChartDashboardPreference[]} 24 | */ 25 | static fromList(array) { 26 | 27 | let myList = []; 28 | array.forEach((element) => { 29 | myList.push(new Tvs1ChartDashboardPreference(element)); 30 | }); 31 | 32 | return myList; 33 | } 34 | } 35 | -------------------------------------------------------------------------------- /client/js/Api/Model/Tvs1ChartDashboardPreferenceField.js: -------------------------------------------------------------------------------- 1 | 2 | export default class Tvs1ChartDashboardPreferenceField { 3 | constructor({ 4 | Active, 5 | ChartGroup, 6 | ChartID, 7 | ChartWidth, 8 | Chartname, 9 | EmployeeID, 10 | Employeename, 11 | Gloablref, 12 | GlobalRef, 13 | ID, 14 | ISEmpty, 15 | KeyStringFieldName, 16 | KeyValue, 17 | MsTimeStamp, 18 | MsUpdateSiteCode, 19 | Position, 20 | Recno, 21 | TabGroup, 22 | ChartHeight 23 | }) { 24 | this.Active = Active; 25 | this.ChartGroup = ChartGroup; 26 | this.Chartname = Chartname; 27 | this.ChartID = ChartID; 28 | this.ChartWidth = ChartWidth; 29 | this.EmployeeID = EmployeeID; 30 | this.Employeename = Employeename; 31 | this.Position = Position; 32 | this.TabGroup = TabGroup; 33 | this.GlobalRef = GlobalRef; 34 | this.Gloablref = Gloablref; 35 | this.ChartHeight = ChartHeight; 36 | this.ID = ID; 37 | this.ISEmpty = ISEmpty; 38 | this.KeyStringFieldName = KeyStringFieldName; 39 | this.KeyValue = KeyValue; 40 | this.MsTimeStamp = MsTimeStamp; 41 | this.MsUpdateSiteCode = MsUpdateSiteCode; 42 | this.Recno = Recno; 43 | } 44 | } 45 | -------------------------------------------------------------------------------- /client/js/Api/Model/Tvs1ChartField.js: -------------------------------------------------------------------------------- 1 | export default class Tvs1ChartField { 2 | constructor({ 3 | Active, 4 | ChartGroup, 5 | ChartName, 6 | Gloablref, 7 | GlobalRef, 8 | ID, 9 | ISEmpty, 10 | KeyStringFieldName, 11 | KeyValue, 12 | MsTimeStamp, 13 | MsUpdateSiteCode, 14 | Recno 15 | }) { 16 | this.Active = Active; 17 | this.ChartGroup = ChartGroup; 18 | this.ChartName = ChartName; 19 | this.GlobalRef = GlobalRef; 20 | this.gloablref = Gloablref; 21 | this.ID = ID; 22 | this.ISEmpty = ISEmpty; 23 | this.KeyStringFieldName = KeyStringFieldName; 24 | this.KeyValue = KeyValue; 25 | this.MsTimeStamp = MsTimeStamp; 26 | this.MsUpdateSiteCode = MsUpdateSiteCode; 27 | this.Recno = Recno; 28 | } 29 | } 30 | -------------------------------------------------------------------------------- /client/js/Api/Model/User.js: -------------------------------------------------------------------------------- 1 | /** 2 | * @type {{type: string, fields: UserFields}} 3 | */ 4 | export default class User { 5 | constructor({ type, fields }) { 6 | this.type = type; 7 | this.fields = fields; 8 | } 9 | } 10 | 11 | export class UserFields { 12 | constructor({ 13 | Active, 14 | EmployeeId, 15 | EmployeeName, 16 | GlobalRef, 17 | ID, 18 | ISEmpty, 19 | IsVS1User, 20 | KeyStringFieldName, 21 | KeyValue, 22 | LogonName, 23 | LogonPassword, 24 | Logon_Name, 25 | MsTimeStamp, 26 | MsUpdateSiteCode, 27 | PasswordDate, 28 | PasswordHash, 29 | Recno, 30 | }) { 31 | this.Active = Active; 32 | this.EmployeeId = EmployeeId; 33 | this.EmployeeName = EmployeeName; 34 | this.GlobalRef = GlobalRef; 35 | this.ID = ID; 36 | this.ISEmpty = ISEmpty; 37 | this.IsVS1User = IsVS1User; 38 | this.KeyStringFieldName = KeyStringFieldName; 39 | this.KeyValue = KeyValue; 40 | this.LogonName = LogonName; 41 | this.LogonPassword = LogonName; 42 | this.Logon_Name = Logon_Name; 43 | this.MsTimeStamp = MsTimeStamp; 44 | this.MsUpdateSiteCode = MsUpdateSiteCode; 45 | this.PasswordDate = PasswordDate; 46 | this.PasswordHash = PasswordHash; 47 | this.Recno = Recno; 48 | } 49 | } 50 | -------------------------------------------------------------------------------- /client/js/Api/Module/Api.js: -------------------------------------------------------------------------------- 1 | 2 | 3 | export default class Api { 4 | constructor() { 5 | 6 | } 7 | 8 | 9 | } -------------------------------------------------------------------------------- /client/js/Api/Module/ApiCollection.js: -------------------------------------------------------------------------------- 1 | import ApiCollectionHelper from "./ApiCollectionHelper"; 2 | import ApiEndPoint from "./ApiEndPoint"; 3 | 4 | /** 5 | * 6 | * @param {ApiEndPoint[]} endpointCollection List of endpoints 7 | */ 8 | export default class ApiCollection extends ApiCollectionHelper { 9 | constructor(endpointCollection = []) { 10 | if (endpointCollection == null) { 11 | return; 12 | } 13 | super(endpointCollection); 14 | this.collection = endpointCollection; 15 | } 16 | } 17 | -------------------------------------------------------------------------------- /client/js/Api/Module/ApiCollectionHelper.js: -------------------------------------------------------------------------------- 1 | import ApiEndPoint from "./ApiEndPoint"; 2 | 3 | export default class ApiCollectionHelper { 4 | constructor(collection = []) { 5 | this.name = null; 6 | 7 | this.debug = false; 8 | 9 | this.collection = collection; 10 | 11 | 12 | //console.log("ApiCollectionHelper module loaded"); 13 | } 14 | 15 | debugMe(message = null, params = []) { 16 | if (this.debug == true) { 17 | const startString = `========================== ${this.constructor.name} ==========================`; 18 | const endString = (startString) => { 19 | let string = ""; 20 | 21 | for (let i = 0; i < startString.length; i++) { 22 | string += "="; 23 | } 24 | return string; 25 | }; 26 | 27 | console.log(startString); 28 | console.log(message, ...params); 29 | console.log(endString(startString)); 30 | console.log(`You see this because debug mode is active`); 31 | } 32 | } 33 | 34 | /** 35 | * 36 | * @param {string} name 37 | * @returns {ApiEndPoint} 38 | * 39 | */ 40 | findByName(name) { 41 | let endpoint; 42 | 43 | this.collection.forEach((apiEndpoint) => { 44 | this.debugMe(`Searching endpoint: ${name}`); 45 | if (apiEndpoint.name.toLocaleLowerCase() == name.toLocaleLowerCase()) { 46 | this.debugMe(`${name} endpoint found`); 47 | endpoint = apiEndpoint; 48 | } 49 | }); 50 | 51 | return endpoint; 52 | } 53 | } 54 | -------------------------------------------------------------------------------- /client/js/Api/Module/ApiEndPoint.js: -------------------------------------------------------------------------------- 1 | import ApiService from "./ApiService"; 2 | 3 | /** 4 | * @type {{name: string, url: URL, headers: HeadersInit}} 5 | */ 6 | export default class ApiEndPoint { 7 | constructor({ name = null, url = null, headers = null }) { 8 | this.name = name.toLowerCase(); 9 | this.url = url; 10 | this.headers = headers; 11 | } 12 | 13 | /** 14 | * 15 | * @param {RequestInfo} url - If empty, it will use default endpoint 16 | * @param {RequestInit} options 17 | * @param {CallableFunction} onResponse 18 | */ 19 | async fetch(url = null, options = null) { 20 | if (options == null) { 21 | options = { 22 | headers: this.headers, 23 | }; 24 | } 25 | 26 | if (url == null) { 27 | url = this.url; 28 | } 29 | 30 | try { 31 | const response = await fetch(url, options); 32 | return response; 33 | } catch (exception) { 34 | console.log(exception); 35 | } 36 | } 37 | } 38 | -------------------------------------------------------------------------------- /client/js/Api/Module/ApiRequest.js: -------------------------------------------------------------------------------- 1 | import ApiService from "./ApiService"; 2 | 3 | 4 | export default class ApiRequest { 5 | constructor() { 6 | console.log('ApiRequest module loaded'); 7 | } 8 | 9 | static async getDashboardCharts() { 10 | const url = ApiService.getBaseUrl() + "Tvs1charts"; 11 | await ApiService.fetch(url, { 12 | headers: ApiService.getHeaders(), 13 | method: "GET" 14 | }, (response) => { 15 | console.log(response); 16 | }); 17 | 18 | console.log(url); 19 | 20 | 21 | } 22 | 23 | static async getDashboardTabGroups() { 24 | const url = ApiService.getBaseUrl() + "TVs1TabGroups"; 25 | 26 | console.log(url); 27 | 28 | 29 | } 30 | static async getDashboardPreferences() { 31 | const url = ApiService.getBaseUrl() + "Tvs1dashboardpreferences"; 32 | console.log(url); 33 | 34 | 35 | } 36 | } -------------------------------------------------------------------------------- /client/js/Api/Module/ApiService.js: -------------------------------------------------------------------------------- 1 | export default class ApiService { 2 | constructor() { 3 | this.erpGet = erpDb(); 4 | this.ERPObjects = ERPObjects(); 5 | 6 | console.log("ApiService module loaded"); 7 | } 8 | 9 | /** 10 | * @param {string} endpoint my-endpoint 11 | * @returns {URL} 12 | */ 13 | static getBaseUrl({ endpoint = null}) { 14 | let url = new URL( 15 | URLRequest + 16 | erpDb().ERPIPAddress + 17 | ":" + 18 | erpDb().ERPPort + 19 | "/" + 20 | erpDb().ERPApi + 21 | "/" 22 | ); 23 | 24 | if(endpoint != null) { 25 | url = new URL( 26 | URLRequest + 27 | erpDb().ERPIPAddress + 28 | ":" + 29 | erpDb().ERPPort + 30 | "/" + 31 | erpDb().ERPApi + 32 | "/" + endpoint 33 | ); 34 | } 35 | 36 | // if (endpoint != null) { 37 | // url = url + endpoint; 38 | // } 39 | 40 | return url; 41 | } 42 | 43 | /** 44 | * 45 | * @returns {HeadersInit} 46 | */ 47 | static getHeaders() { 48 | var headers = { 49 | database: erpDb().ERPDatabase, 50 | username: erpDb().ERPUsername, 51 | password: erpDb().ERPPassword, 52 | }; 53 | return headers; 54 | } 55 | 56 | /** 57 | * 58 | * @returns {HeadersInit} 59 | */ 60 | static getPostHeaders() { 61 | postHeaders = { 62 | database: erpDb().ERPDatabase, 63 | username: erpDb().ERPUsername, 64 | password: erpDb().ERPPassword, 65 | }; 66 | 67 | return postHeaders; 68 | } 69 | } 70 | -------------------------------------------------------------------------------- /client/js/Apptimer.js: -------------------------------------------------------------------------------- 1 | var activityTimeout = setTimeout(inActive, 1800000); 2 | var sidebarTimeout = setTimeout(closeSideBar, 3000); 3 | 4 | function resetActive(){ 5 | $(document.body).attr('class', 'active'); 6 | clearTimeout(activityTimeout); 7 | clearTimeout(sidebarTimeout); 8 | activityTimeout = setTimeout(inActive, 1800000); 9 | sidebarTimeout = setTimeout(closeSideBar, 3000); 10 | } 11 | function closeSideBar(){ 12 | if ($(".collapse.show")[0]){ 13 | // $('.nav-item .collapse').removeClass('show'); 14 | } 15 | } 16 | function inActive(){ 17 | $(document.body).attr('class', 'inactive'); 18 | var loc = FlowRouter.current().path; 19 | 20 | if ((loc != '/') && (loc != '/register') && (loc != '/registerdb') 21 | && (loc != '/vs1greentracklogin')&& (loc != '/registersts') 22 | && (loc != '/paymentmethodSettings')) { 23 | CloudUser.update({_id: Session.get('mycloudLogonID')},{ $set: {userMultiLogon: false}}); 24 | if(Session.get('isGreenTrack')){ 25 | window.open('/vs1greentracklogin','_self'); 26 | }else{ 27 | //window.open('/','_self'); 28 | } 29 | 30 | document.getElementById('apptimer').style.display='block'; 31 | // $('#sessionTimeout').modal('toggle'); 32 | } 33 | 34 | } 35 | 36 | $(document).bind('mousemove', function(){resetActive()}); 37 | -------------------------------------------------------------------------------- /client/js/account_settings.js: -------------------------------------------------------------------------------- 1 | import {EmployeeProfileService} from './profile-service'; 2 | import { ReactiveVar } from 'meteor/reactive-var'; 3 | import { CoreService } from '../js/core-service'; 4 | Template.myAccount.onRendered(function(){ 5 | var employeeProfileService = new EmployeeProfileService(); 6 | getEmployeeProfiles(); 7 | 8 | function getEmployeeProfiles () { 9 | 10 | employeeProfileService.getEmployeeProfile().then((dataListRet)=>{ 11 | for (var event in dataListRet) { 12 | var dataCopy = dataListRet[event]; 13 | for (var data in dataCopy) { 14 | var mainData = dataCopy[data]; 15 | var customerEmail = mainData.Email; 16 | 17 | if(customerEmail != ''){ 18 | document.getElementById("useremail").innerHTML = 'Your current email address is '+ customerEmail +''; 19 | }else{ 20 | document.getElementById("useremail").innerHTML = ' + Add email address'; 21 | } 22 | 23 | 24 | 25 | } 26 | } 27 | 28 | }); 29 | } 30 | 31 | 32 | 33 | }); 34 | -------------------------------------------------------------------------------- /client/js/alertmessage.js: -------------------------------------------------------------------------------- 1 | Bert.defaults = { 2 | hideDelay: 2500, 3 | style: 'fixed-top', 4 | type: 'default' 5 | }; 6 | -------------------------------------------------------------------------------- /client/js/appPopRelogin.js: -------------------------------------------------------------------------------- 1 | Template.appAlertPage.onCreated(function(){ 2 | 3 | 4 | }); 5 | 6 | Template.appAlertPage.onRendered(function(){ 7 | $("#resubmitLogin").click(function(e){ 8 | var password = $("#erppassword").val(); 9 | var entpassword = CryptoJS.MD5(password).toString().toUpperCase(); 10 | var userPassword = Session.get('myerpPassword'); 11 | if(password.toUpperCase() == userPassword.toUpperCase()){ 12 | document.getElementById('apptimer').style.display='none'; 13 | }else{ 14 | 15 | swal('Invalid VS1 Password', 'The entered user password is not correct, please re-enter your password and try again!', 'error'); 16 | $("#erppassword").focus(); 17 | } 18 | e.preventDefault(); 19 | }); 20 | 21 | $("#erppassword").keyup(function (e) { 22 | if (e.keyCode == 13) { 23 | $("#resubmitLogin").trigger("click"); 24 | } 25 | }); 26 | 27 | $(".btnLogOut").click(function(e){ 28 | window.open('/', '_self'); 29 | }); 30 | 31 | }); 32 | -------------------------------------------------------------------------------- /client/js/core-service.js: -------------------------------------------------------------------------------- 1 | import {BaseService} from '../js/base-service.js'; 2 | export class CoreService extends BaseService { 3 | static getCurrentDatabase() { 4 | var erpGet = erpDb(); 5 | return erpGet.ERPDatabase; 6 | } 7 | } -------------------------------------------------------------------------------- /client/js/country-service.js: -------------------------------------------------------------------------------- 1 | import {BaseService} from '../js/base-service.js'; 2 | export class CountryService extends BaseService { 3 | getCountry() { 4 | return this.GET(this.erpGet.ERPCountries); 5 | } 6 | 7 | } 8 | -------------------------------------------------------------------------------- /client/js/email_settings.js: -------------------------------------------------------------------------------- 1 | import {EmployeeProfileService} from './profile-service'; 2 | import { ReactiveVar } from 'meteor/reactive-var'; 3 | import { CoreService } from '../js/core-service'; 4 | Template.emailSettings.onRendered(function(){ 5 | 6 | var employeeProfileService = new EmployeeProfileService(); 7 | getEmployeeProfiles(); 8 | 9 | function getEmployeeProfiles () { 10 | 11 | employeeProfileService.getEmployeeProfile().then((dataListRet)=>{ 12 | 13 | for (var event in dataListRet) { 14 | var dataCopy = dataListRet[event]; 15 | for (var data in dataCopy) { 16 | var mainData = dataCopy[data]; 17 | var userEmail = mainData.Email; 18 | 19 | if(userEmail != ""){ 20 | 21 | document.getElementById("loggeduseremail").innerHTML = '<'+userEmail+'>'; 22 | document.getElementById("loggeduseremailEdit").innerHTML = '<'+userEmail+'>'; 23 | $('#sltnew_email').append($('