{"version":3,"sources":["1Initializers.js","invoicedatatables.js","invoicemodels.js","invoiceviews.js"],"names":["PJQ","views","invoices","constants","view","INVOICES","TRANSACTIONS","invoiceDateRange","MONTH_TO_DATE","DAYS_30","DAYS_60","DAYS_90","DAYS_180","YEAR_TO_DATE","invoiceStatus","DRAFT","PAYMENT_REQUESTED","PENDING","PAID","VOIDED","REFUNDED","RETURNED","invoiceStatusNames","0","1","2","3","4","5","6","transactionType","PAYMENT_PENDING","PAYMENT","VOID","REFUND_PENDING","REFUND","RETURN","transactionTypeNames","paymentType","EXTERNAL","CREDIT_CARD_PAYSIMPLE","ACH_PAYSIMPLE","paymentTypeNames","notificationType","PAYMENT_REQUEST_REMINDER","SETTLED","RECEIPT","notificationTypeNames","7","8","checkingAccountType","CHECKING","SAVINGS","app","module","modules","addOldRoutes","route","name","callback","router","navigate","trigger","replace","routes","session","project","get","initNavigator","activeItem","invoiceId","viewOptions","parseInt","context","invoice","models","Invoice","fetch","success","InvoicePayor","el","$el","error","tmp","templating","Template","TemplateRenderer","renderTemplate","addRoutes","BaseDataTable","dataTables","DataTable","extend","defaults","language","zeroRecords","isHideSearch","dom","phoneWidth","events","click .btn-copy-phone","click .btn-copy-fax","click .btn-copy-cell","click .btn-copy-email","beforeDataTableRender","this","options","rowCallback","row","data","childDataTables","contextMenuOptions","actions","getContextMenuItems","isHideNoActions","onRowDoubleClick","_","bind","editRow","settings","rowsPerPage","indexOf","pageLength","orderBy","size","columns","columnsDefault","each","getColumns","column","index","columnData","order","orderAscending","colReorder","fixedColumnsLeft","realtime","createdRow","afterDataTableRender","on","e","details","$dataTable","id","oInstance","oldOrder","length","src","dir","invoicesView","userSettings","save","drop","mapping","newSort","key","sort","map","sortBy","filter","afterDataTableRenderChild","dataTable","getRowChildTable","childOpts","getRowChildData","setRowStyle","status","isBlacklisted","model","set","InvoiceEditModal","onSave","renderView","onDelete","statusChanged","statuses","childRowToggle","sender","$target","$","currentTarget","tr","closest","getRow","child","isShown","hide","removeClass","addClass","childClass","toString","$childTable","class","show","childData","loader","Loader","parent","type","remove","childTable","parentId","childDt","push","cleanup","undelegateEvents","empty","getIsRootView","dataIndex","copyPhone","inputId","uniqueId","hiddenInput","value","style","append","select","document","execCommand","notifications","notify","successNotify","message","copyEmail","InvoiceDataTable","click i.contact-toggle-row","click .btn-view-invoice","click .btn-delete-invoice","a","iconClass","onClick","exportInvoice","isDanger","deleteInvoice","hasPermission","includeAllColumns","arguments","undefined","includeColumns","maxEmailWidth","window","width","columnName","title","orderable","render","helpers","dateHelpers","getDateString","Date","dateFormats","DATE_TIME","DATE","className","formatHelpers","formatCurrency","html","phoneFormatted","phone","formatPhoneNumber","fax","emailFormatted","email","searchable","visible","viewInvoice","TransactionDataTable","InvoiceUserSettings","BaseModel","isAPIv2","endpoint","params","forCompany","parameter","urlHelpers","generateEndpoint","getSettings","find","attributes","viewSettings","setting","InvoiceSettings","InvoiceIntegrationSettings","isCreditCard","contains","paymentTypes","isACH","getTerms","terms","idAttribute","getInvoiceStatusLabel","includeDate","result","collections","Invoices","BaseCollection","urlOptions","endpointArr","isExport","parse","exportURL","url","totalRows","totalDraft","totalRequested","totalPaymentPending","totalPaid","totalVoided","totalRefunded","totalReturned","totals","rows","export","ajax","Request","timeout","post","done","response","fail","Transactions","Notifications","BaseView","template","isShowHeader","click .btn-invoice-settings","keyup .input-search","click .search","click .clear-search","click .new-invoice","click .export-list","beforeFirstRender","isSettingsFetched","currentView","renderData","showHeader","isAdmin","settingsFetched","afterRender","startDate","parseDateString","getCurrentYear","getCurrentMonth","getNewDateAddDays","startDateDatePicker","inputs","Datepicker","datepickerOptions","defaultDate","format","datePicker","onChange","endDateDatePicker","viewSelectPicker","Selectpicker","isIntChoices","isMultiple","mustSelectValue","defaultValue","onHide","invoiceStatusSelectPicker","transactionTypeSelectPicker","getValue","inputHelpers","setInputError","page","stayOnPage","clearServerCache","pageCache","tableSettings","dataTableOptions","getPageCallback","getViewData","displayStart","deferRender","showPageSelector","onTableDraw","css","getDataTableInstance","pageNumber","pageSize","orderArr","dateNow","parameters","searchFor","val","DATE_YMD","endDate","orderDirection","direction","timeZoneOffset","getTimezoneOffset","join","text","pageSelectPicker","searchChanged","keyCode","search","clearFilter","InvoiceSettingsModal","newInvoice","modals","DeleteCancel","header","body","destroy","files","downloadFile","exportList","downloadEndpoint","BaseModal","minWidth","noop","click button.view-notifications","click button.view-transactions","click button.select-payor","click button.clear-payor","click button.invoice-save","click button.invoice-delete","click button.invoice-void","click button.add-line-item","click button.save-line-item","click button.cancel-edit-line-item","click button.edit-line-item","click button.delete-line-item","click button.invoice-export","click button.invoice-request-payment","click button.invoice-manual-payment","beforeModalCreated","payor","contactId","country","lineItems","canEdit","Binder","watchElements","newDate","statePicker","noneSelectedText","state","toLowerCase","toUpperCase","countryChanged","countryPicker","zip","inputMaskPhone","editLineItemRow","lineItemsDataTable","description","quantity","toFixed","unitPrice","extPrice","inputMaskDecimal","inputMaskCurrency","focus","recalculateTotal","addLineItem","invoiceLineItemId","isNew","isDeleted","addRow","saveLineItem","prop","isValid","parseFloat","refresh","cancelEditLineItem","lineItem","removeRow","editLineItem","deleteLineItem","total","states","abbreviation","setValue","inputMaskZip","removeModal","validateForm","validators","validateEmail","companyName","contactName","address1","address2","city","phoneExtension","delete","selectPayor","contacts","SelectContactsModal","contexts","CONTACTS","isSingleChoice","clearPayor","viewNotifications","ViewNotificationsModal","viewTransactions","ViewTransactionsModal","voidInvoice","YesNo","onYes","errorNotify","requestPayment","manualPayment","ManualInvoicePaymentModal","onPay","click .payment-save","savePayment","trim","click .make-payment","click .export","makePayment","integrationSettings","InvoicePaymentModal","InvoicePaymentTermsModal","click button.pay","keyup .cardholder-name","keyup .card-number","keyup .cvv","keyup .billing-zip","keyup .account-holder","keyup .routing-number","keyup .account-number","change .agree","click .terms","today","paymentTypeSelectPicker","expirationMonthSelectPicker","expirationYearSelectPicker","getFullYear","inputmask","placeholder","checkingAccountTypeSelectPicker","validateKeyUp","validate","showErrors","validateZip","pay","card","cardholderName","cardNumber","expirationMonth","expirationYear","cVV","billingZip","bankAccount","accountType","accountHolder","routingNumber","accountNumber","responseText","viewTerms","change .select-column","click .btn-edit-company-default","click .payment-terms-override","click .payment-terms-revert","click .payment-processing-terms-override","click .payment-processing-terms-revert","click button.settings-save","beforeRender","defaultView","defaultDateRange","selectedColumns","selectView","payee","paymentTerms","paymentProcessingTerms","editCompanySettings","columnSelected","numbersOnly","fnOnSave","settingTemp","slice","columnTemp","paymentTermsOverride","paymentTermsRevert","paymentProcessingTermsOverride","paymentProcessingTermsRevert","isFetched","InvoicePreview"],"mappings":"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","file":"app.js","sourcesContent":["PJQ.views.invoices = {};\n\nPJQ.constants.invoices = {\n view: {\n INVOICES: 'invoices',\n TRANSACTIONS: 'transactions'\n },\n invoiceDateRange: {\n MONTH_TO_DATE: -1,\n DAYS_30: 30,\n DAYS_60: 60,\n DAYS_90: 90,\n DAYS_180: 180,\n YEAR_TO_DATE: -10\n },\n invoiceStatus: {\n DRAFT: 0,\n PAYMENT_REQUESTED: 1,\n PENDING: 2,\n PAID: 3,\n VOIDED: 4,\n REFUNDED: 5,\n RETURNED: 6\n },\n invoiceStatusNames: {\n 0: 'Draft',\n 1: 'Payment Requested',\n 2: 'Pending',\n 3: 'Paid',\n 4: 'Voided',\n 5: 'Refunded',\n 6: 'Returned'\n },\n transactionType: {\n PAYMENT_PENDING: 0,\n PAYMENT: 1,\n VOID: 2,\n REFUND_PENDING: 3,\n REFUND: 4,\n RETURN: 5,\n },\n transactionTypeNames: {\n 0: 'Pending Payment',\n 1: 'Payment',\n 2: 'Void',\n 3: 'Pending Refund',\n 4: 'Refund',\n 5: 'Return'\n },\n paymentType: {\n EXTERNAL: 0,\n CREDIT_CARD_PAYSIMPLE: 1,\n ACH_PAYSIMPLE: 2\n },\n paymentTypeNames: {\n 0: 'External',\n 1: 'Credit Card',\n 2: 'Check (ACH)'\n },\n notificationType: {\n PAYMENT_REQUESTED: 1,\n PAYMENT_REQUEST_REMINDER: 2,\n PAYMENT: 3,\n VOIDED: 4,\n REFUNDED: 5,\n SETTLED: 6,\n RETURNED: 7,\n RECEIPT: 8\n },\n notificationTypeNames: {\n 1: 'Request Payment',\n 2: 'Payment Reminder',\n 3: 'Invoice Payment',\n 4: 'Invoice Voided',\n 5: 'Invoice Refunded',\n 6: 'Payment Settled',\n 7: 'Payment Returned',\n 8: 'Invoice Receipt'\n },\n checkingAccountType: {\n CHECKING : 'checking',\n SAVINGS: 'savings'\n }\n\n};\n\nif (PJQ.app.module === PJQ.constants.modules.INVOICES) {\n PJQ.app.addOldRoutes([\n {\n route: '',\n name: 'default',\n callback: function () {\n PJQ.app.router.navigate('invoices', {\n trigger: true,\n replace: true\n });\n }\n }\n ]);\n}\n\nPJQ.modules.invoices = {\n routes: [\n {\n route: 'invoices',\n name: 'invoices',\n callback: function () {\n PJQ.app.session.project = null;\n if (PJQ.app.session.get('ownsPortal')) {\n PJQ.app.initNavigator({\n activeItem: \"invoices\"\n });\n }\n else {\n PJQ.app.initNavigator();\n }\n }\n },\n {\n route: 'invoices/:invoiceId',\n name: 'invoiceLink',\n callback: function (invoiceId) {\n if (PJQ.app.session.get('ownsPortal')) {\n PJQ.app.initNavigator({\n activeItem: \"invoices\",\n viewOptions: {\n invoiceId: parseInt(invoiceId)\n }\n });\n }\n else {\n PJQ.app.initNavigator();\n }\n }\n },\n {\n route: 'invoices/:invoiceId/context/:context',\n name: 'invoiceGuestLink',\n callback: function (invoiceId, context) {\n\n let invoice = new PJQ.models.invoices.Invoice({\n invoiceId: invoiceId,\n context: context\n });\n\n invoice.fetch({\n success: function() {\n new PJQ.views.invoices.InvoicePayor({\n el: PJQ.app.$el,\n invoice: invoice\n });\n },\n error: function() {\n let tmp = new PJQ.templating.Template(PJQ.constants.modules.INVOICES, 'invoice-not-available');\n PJQ.templating.TemplateRenderer.renderTemplate(false, tmp, PJQ.app.$el);\n }\n });\n\n }\n }\n ]\n};\n\nPJQ.app.addRoutes(PJQ.modules.invoices.routes);\n","PJQ.views.invoices.BaseDataTable = PJQ.views.dataTables.DataTable.extend({\n defaults: {\n language: {\n zeroRecords: \"No Results Available\"\n },\n isHideSearch: true,\n dom: '<\"top\"p<\"clear\">>rt<\"bottom\"p<\"clear\">>',\n phoneWidth: '125px'\n },\n events: {\n 'click .btn-copy-phone': 'copyPhone',\n 'click .btn-copy-fax': 'copyPhone',\n 'click .btn-copy-cell': 'copyPhone',\n 'click .btn-copy-email': 'copyEmail'\n },\n beforeDataTableRender: function () {\n let self = this;\n this.options.rowCallback = function (row, data) {\n };\n\n this.options.childDataTables = [];\n\n this.options.contextMenuOptions = {\n actions: this.getContextMenuItems(),\n isHideNoActions: true\n };\n\n this.options.onRowDoubleClick = _.bind(function (row) {\n if (row.data()) {\n this.editRow(row.data());\n }\n }, this);\n\n if (this.options.settings) {\n // enable paging for grids that have a setting for it / are not subgrids\n if (this.options.settings.rowsPerPage !== 0 && this.options.view.indexOf('-') === -1)\n this.options.pageLength = this.options.settings.rowsPerPage;\n else\n this.options.pageLength = 2147483646;\n\n if (this.options.settings.orderBy !== 'sortOrder') {\n if (_.size(this.options.settings.columns) === 0) {\n this.options.settings.orderBy = this.options.settings.columnsDefault[0];\n }\n else if (this.options.settings.columns.indexOf(this.options.settings.orderBy) === -1) {\n this.options.settings.orderBy = this.options.settings.columns[0];\n }\n }\n _.each(this.getColumns(false, this.options.view), _.bind(function (column, index) {\n if (column.columnData === this.options.settings.orderBy) {\n this.options.order = [[index, this.options.settings.orderAscending ? 'asc' : 'desc']];\n }\n }, this));\n\n let fixedColumnsLeft = 0;\n this.options.colReorder = {\n fixedColumnsLeft: fixedColumnsLeft,\n realtime: false\n };\n }\n\n this.options.createdRow = _.bind(this.createdRow, this);\n\n if (typeof this.options.beforeDataTableRender === 'function') {\n this.options.beforeDataTableRender();\n }\n },\n afterDataTableRender: function () {\n this.$el.on('order.dt', _.bind(function (e, settings, details) {\n if (this.$dataTable[0].id !== settings.oInstance[0].id)\n return;\n\n if (!this.options.settings)\n return;\n\n let oldOrder = 0, columns = this.getColumns(false);\n _.each(columns, _.bind(function (column, index) {\n if (column.columnData === this.options.settings.orderBy)\n oldOrder = index;\n }, this));\n\n if (oldOrder !== details[details.length - 1].src || this.options.settings.orderAscending !== (details[details.length - 1].dir === 'asc')) {\n this.options.settings.orderBy = columns[details[details.length - 1].src].columnData;\n this.options.settings.orderAscending = details[details.length - 1].dir === 'asc';\n this.options.invoicesView.userSettings.save();\n }\n }, this));\n\n this.$el.on('column-reorder.dt', _.bind(function (e, settings, details) {\n if (this.$dataTable[0].id !== settings.oInstance[0].id)\n return;\n\n if (details.drop) {\n let columns = this.getColumns(false);\n _.each(details.mapping, function (newSort, key) {\n columns[key].sort = newSort;\n });\n this.options.settings.columns = _.map(_.sortBy(_.filter(columns, _.bind(function (column) {\n return (column.sort > this.options.colReorder.fixedColumnsLeft - 2);\n }, this)), function (column) {\n return column.sort;\n }), function (column) {\n return column.columnData;\n });\n this.options.invoicesView.userSettings.save();\n }\n }, this));\n\n this.$el.on('draw.dt', _.bind(function () {\n this.afterDataTableRenderChild();\n }, this));\n\n if (typeof this.options.afterDataTableRender === 'function') {\n this.options.afterDataTableRender(this.dataTable);\n }\n\n this.afterDataTableRenderChild();\n },\n afterDataTableRenderChild: function () {\n },\n getRowChildTable: function (childOpts) {\n },\n getRowChildData: function (row) {\n },\n setRowStyle: function (row, status, isBlacklisted) {\n },\n getContextMenuItems: function () {\n },\n editRow: function (model) {\n let invoice = new PJQ.models.invoices.Invoice();\n invoice.set('invoiceId', model.get('invoiceId'));\n invoice.fetch({\n success: _.bind(function() {\n new PJQ.views.invoices.InvoiceEditModal({\n model: invoice,\n invoicesView: this.options.invoicesView,\n onSave: _.bind(function() {\n this.options.invoicesView.renderView();\n }, this),\n onDelete: _.bind(function() {\n this.options.invoicesView.renderView();\n }, this)\n });\n }, this)\n });\n },\n statusChanged: function (statuses) {\n },\n childRowToggle: function (sender) {\n let $target = $(sender.currentTarget),\n id = $target.data('id'),\n tr = $target.closest('tr'),\n row = this.getRow(tr);\n if (row.child.isShown()) {\n // This row is already open - close it\n row.child.hide();\n tr.removeClass('shown');\n $target.removeClass('fa-minus-circle').addClass('fa-plus-circle');\n }\n else {\n $target.removeClass('fa-plus-circle').addClass('fa-minus-circle');\n let childClass = 'subgrid-' + id.toString(),\n $childTable = $('
', {\n class: childClass + ' p-2'\n });\n row.child($childTable).show();\n\n let childData = this.getRowChildData(row);\n if (childData != null) {\n let loader = new PJQ.Loader(this.$el.parent());\n childData.fetch({\n type: 'POST',\n data: {\n },\n success: _.bind(function () {\n loader.remove();\n let childTable = this.getRowChildTable({\n el: $childTable,\n data: childData.models,\n parentId: id,\n invoicesView: this.options.invoicesView\n });\n this.options.childDataTables = _.filter(this.options.childDataTables, _.bind(function (childDt) {\n return childDt.options.parentId !== id;\n }, this));\n this.options.childDataTables.push(childTable);\n tr.addClass('shown');\n }, this)\n });\n }\n }\n },\n getColumns: function () {\n },\n cleanup: function () {\n this.undelegateEvents();\n $(this.el).empty();\n },\n getIsRootView: function () {\n return (this.options.view.indexOf('-') === -1);\n },\n createdRow: function (row, data, dataIndex) {\n },\n copyPhone: function (e) {\n let inputId = 'h_input_' + _.uniqueId(),\n hiddenInput = $('', {\n value: $(e.currentTarget).data('phone'),\n style: 'position: absolute;left:-2000px;top:-2000px',\n id: inputId\n });\n this.$el.append(hiddenInput);\n hiddenInput[0].select();\n document.execCommand(\"copy\");\n hiddenInput.remove();\n PJQ.notifications.notify.successNotify({\n message: 'Number copied to clipboard.'\n });\n },\n copyEmail: function (e) {\n let inputId = 'h_input_' + _.uniqueId(),\n hiddenInput = $('', {\n value: $(e.currentTarget).data('email'),\n style: 'position: absolute;left:-2000px;top:-2000px',\n id: inputId\n });\n this.$el.append(hiddenInput);\n hiddenInput[0].select();\n document.execCommand(\"copy\");\n hiddenInput.remove();\n PJQ.notifications.notify.successNotify({\n message: 'Email copied to clipboard.'\n });\n }\n});\n\nPJQ.views.invoices.InvoiceDataTable = PJQ.views.invoices.BaseDataTable.extend({\n events: {\n 'click i.contact-toggle-row': 'childRowToggle',\n 'click .btn-view-invoice': 'viewInvoice',\n 'click .btn-delete-invoice': 'deleteInvoice',\n 'click .btn-copy-phone': function (e) {\n this.copyPhone(e);\n },\n 'click .btn-copy-email': function (e) {\n this.copyEmail(e);\n }\n },\n getContextMenuItems: function (a) {\n return [\n {\n name: 'View Invoice',\n iconClass: 'fal fa-file-invoice-dollar',\n onClick: _.bind(function (row) {\n this.editRow(row.data());\n }, this)\n },\n {\n name: 'Export PDF',\n iconClass: 'fal fa-file-pdf',\n onClick: _.bind(function (row) {\n this.options.invoicesView.exportInvoice(row.data().get('invoiceId'));\n }, this)\n },\n {\n name: 'Delete Invoice',\n iconClass: 'fal fa-trash',\n isDanger: true,\n onClick: _.bind(function (row) {\n this.options.invoicesView.deleteInvoice(row.data());\n }, this),\n isShown: _.bind(function (row) {\n return PJQ.app.session.hasPermission('invoices.isAdmin') && (row.data().get('invoiceStatusId') === PJQ.constants.invoices.invoiceStatus.DRAFT || row.data().get('invoiceStatusId') === PJQ.constants.invoices.invoiceStatus.PAYMENT_REQUESTED);\n }, this)\n }\n ]\n },\n getColumns: function (includeAllColumns = false) {\n let columns = [],\n includeColumns = ['createdOn', 'createdBy', 'invoiceDate', 'invoiceNumber', 'invoiceStatus', 'total', 'requestedOn','paidOn','voidedOn','refundedOn', 'payor.companyName', 'payor.contactName', 'payor.address1', 'payor.address2', 'payor.city', 'payor.state', 'payor.zip', 'payor.country', 'payor.phone', 'payor.fax', 'payor.email'];\n\n if (!includeAllColumns) {\n if (_.size(this.options.settings.columns) > 0)\n includeColumns = this.options.settings.columns;\n else\n includeColumns = this.options.settings.columnsDefault;\n }\n let maxEmailWidth = $(window).width() > 1200 ? 225 : 100;\n\n _.each(includeColumns, _.bind(function (columnName) {\n switch (columnName) {\n case 'createdOn':\n columns.push({\n \"columnData\": \"createdOn\",\n \"data\": \"attributes.createdOn\",\n \"title\": 'Created',\n \"width\": '90px',\n \"orderable\": true,\n \"render\": _.bind(function (data, type, row) {\n\n return PJQ.helpers.dateHelpers.getDateString(new Date(row.get('createdOn')), PJQ.helpers.dateHelpers.dateFormats.DATE_TIME);\n }, this)\n });\n break;\n case 'invoiceNumber':\n columns.push({\n \"columnData\": \"invoiceNumber\",\n \"data\": \"attributes.invoiceNumber\",\n \"width\": '100px',\n \"title\": \"Invoice #\",\n });\n break;\n case 'invoiceDate':\n columns.push({\n \"columnData\": \"invoiceDate\",\n \"data\": \"attributes.invoiceDate\",\n \"title\": 'Invoice Date',\n \"width\": '100px',\n \"orderable\": true,\n \"render\": _.bind(function (data, type, row) {\n return PJQ.helpers.dateHelpers.getDateString(new Date(row.get('invoiceDate')), PJQ.helpers.dateHelpers.dateFormats.DATE);\n }, this)\n });\n break;\n case 'total':\n columns.push({\n \"columnData\": \"total\",\n \"data\": \"attributes.total\",\n \"title\": 'Total',\n \"width\": '85px',\n \"className\": \"text-align-right\",\n \"orderable\": true,\n \"render\": _.bind(function (data, type, row) {\n return PJQ.helpers.formatHelpers.formatCurrency(row.get('total'));\n }, this)\n });\n break;\n case 'invoiceStatus':\n columns.push({\n \"columnData\": \"invoiceStatus\",\n \"data\": \"attributes.invoiceStatus\",\n \"title\": 'Status',\n \"orderable\": true,\n \"render\": _.bind(function (data, type, row) {\n return PJQ.constants.invoices.invoiceStatusNames[row.get('invoiceStatusId')];\n }, this)\n });\n break;\n case 'createdBy':\n columns.push({\n \"columnData\": \"createdBy\",\n \"data\": \"attributes.createdByDisplay\",\n \"title\": \"Created by\",\n });\n break;\n case 'requestedOn':\n columns.push({\n \"columnData\": \"requestedOn\",\n \"data\": \"attributes.requestedOn\",\n \"title\": 'Requested',\n \"width\": '90px',\n \"orderable\": true,\n \"render\": _.bind(function (data, type, row) {\n return row.get('requestedOn') ? PJQ.helpers.dateHelpers.getDateString(new Date(row.get('requestedOn')), PJQ.helpers.dateHelpers.dateFormats.DATE_TIME) : '';\n }, this)\n });\n break;\n case 'paidOn':\n columns.push({\n \"columnData\": \"paidOn\",\n \"data\": \"attributes.paidOn\",\n \"title\": 'Paid Date',\n \"width\": '90px',\n \"orderable\": true,\n \"render\": _.bind(function (data, type, row) {\n return row.get('paidOn') ? PJQ.helpers.dateHelpers.getDateString(new Date(row.get('paidOn')), PJQ.helpers.dateHelpers.dateFormats.DATE_TIME) : '';\n }, this)\n });\n break;\n case 'voidedOn':\n columns.push({\n \"columnData\": \"voidedOn\",\n \"data\": \"attributes.voidedOn\",\n \"title\": 'Void Date',\n \"width\": '90px',\n \"orderable\": true,\n \"render\": _.bind(function (data, type, row) {\n return row.get('voidedOn') ? PJQ.helpers.dateHelpers.getDateString(new Date(row.get('voidedOn')), PJQ.helpers.dateHelpers.dateFormats.DATE_TIME) : '';\n }, this)\n });\n break;\n case 'refundedOn':\n columns.push({\n \"columnData\": \"refundedOn\",\n \"data\": \"attributes.refundedOn\",\n \"title\": 'Refund Date',\n \"width\": '90px',\n \"orderable\": true,\n \"render\": _.bind(function (data, type, row) {\n return row.get('refundedOn') ? PJQ.helpers.dateHelpers.getDateString(new Date(row.get('refundedOn')), PJQ.helpers.dateHelpers.dateFormats.DATE_TIME) : '';\n }, this)\n });\n break;\n case 'payor.companyName':\n columns.push({\n \"columnData\": \"payor.companyName\",\n \"data\": \"attributes.payor.companyName\",\n \"title\": \"Company\",\n });\n break;\n case 'payor.contactName':\n columns.push({\n \"columnData\": \"payor.contactName\",\n \"data\": \"attributes.payor.contactName\",\n \"title\": \"Contact\",\n });\n break;\n case 'payor.address1':\n columns.push({\n \"columnData\": \"payor.address1\",\n \"data\": \"attributes.payor.address1\",\n \"title\": \"Address 1\"\n });\n break;\n case 'payor.address2':\n columns.push({\n \"columnData\": \"payor.address2\",\n \"data\": \"attributes.payor.address2\",\n \"title\": \"Address 2\"\n });\n break;\n case 'payor.city':\n columns.push({\n \"columnData\": \"payor.city\",\n \"data\": \"attributes.payor.city\",\n \"title\": \"City\"\n });\n break;\n case 'payor.state':\n columns.push({\n \"columnData\": \"payor.state\",\n \"data\": \"attributes.payor.state\",\n \"title\": \"State\",\n });\n break;\n case 'payor.zip':\n columns.push({\n \"columnData\": \"payor.zip\",\n \"data\": \"attributes.payor.zip\",\n \"title\": \"Postal Code\",\n });\n break;\n case 'payor.country':\n columns.push({\n \"columnData\": \"payor.country\",\n \"data\": \"attributes.payor.country\",\n \"title\": \"Country\",\n });\n break;\n case 'payor.phone':\n columns.push({\n \"columnData\": \"payor.phone\",\n \"data\": \"attributes.payor.phone\",\n \"title\": \"Phone\",\n \"width\": this.options.phoneWidth,\n \"render\": _.bind(function (data, type, row) {\n let html = '
',\n phoneFormatted = (row.get('payor').phone ? PJQ.helpers.formatHelpers.formatPhoneNumber(row.get('payor').phone) : 'N/A');\n\n if (row.get('payor').phone !== '')\n html += '';\n\n html += '
' + phoneFormatted + '
';\n html += '
';\n return html;\n }, this)\n });\n break;\n case 'payor.fax':\n columns.push({\n \"columnData\": \"payor.fax\",\n \"data\": \"attributes.payor.fax\",\n \"title\": \"Fax\",\n \"width\": this.options.phoneWidth,\n \"render\": _.bind(function (data, type, row) {\n let html = '
',\n phoneFormatted = (row.get('payor').fax ? PJQ.helpers.formatHelpers.formatPhoneNumber(row.get('payor').fax) : 'N/A');\n\n if (row.get('payor').fax !== '')\n html += '';\n\n html += '
' + phoneFormatted + '
';\n html += '
';\n return html;\n }, this)\n });\n break;\n case 'payor.email':\n columns.push({\n \"columnData\": \"payor.email\",\n \"data\": \"attributes.payor.email\",\n \"title\": \"Email\",\n \"render\": function (data, type, row) {\n let html = '
',\n emailFormatted = (row.get('payor').email ? ('' + row.get('payor').email + '') : '');\n\n if (row.get('payor').email !== '')\n html += '';\n\n html += '
' + emailFormatted + '
';\n return html;\n }\n });\n break;\n }\n }, this));\n\n if (!includeAllColumns) {\n columns.push({\n \"title\": '',\n \"render\": _.bind(function (data, type, row) {\n\n let html = '
';\n html += '';\n\n if (PJQ.app.session.hasPermission('invoices.isAdmin') && (row.get('invoiceStatusId') === PJQ.constants.invoices.invoiceStatus.DRAFT || row.get('invoiceStatusId') === PJQ.constants.invoices.invoiceStatus.PAYMENT_REQUESTED))\n html += '';\n\n html += '
';\n\n return html;\n }, this),\n \"orderable\": false,\n \"searchable\": false,\n \"width\": \"100px\",\n \"className\": \"text-center\",\n \"visible\": true\n });\n }\n\n return columns;\n },\n viewInvoice: function(e) {\n let row = this.getRow($(e.currentTarget).closest('tr'));\n this.editRow(row.data());\n },\n deleteInvoice: function(e) {\n let row = this.getRow($(e.currentTarget).closest('tr'));\n this.options.invoicesView.deleteInvoice(row.data());\n }\n});\n\nPJQ.views.invoices.TransactionDataTable = PJQ.views.invoices.BaseDataTable.extend({\n events: {\n 'click i.contact-toggle-row': 'childRowToggle',\n 'click .btn-copy-phone': function (e) {\n this.copyPhone(e);\n },\n 'click .btn-copy-email': function (e) {\n this.copyEmail(e);\n }\n },\n getContextMenuItems: function (a) {\n return [\n {\n name: 'View Invoice',\n iconClass: 'fal fa-file-invoice-dollar',\n onClick: _.bind(function (row) {\n this.editRow(row.data());\n }, this)\n }\n ]\n },\n getColumns: function (includeAllColumns = false) {\n let columns = [],\n includeColumns = ['createdOn', 'invoiceDate', 'invoiceNumber', 'paymentType', 'transactionType', 'last4', 'paymentReference', 'amount', 'payor.companyName', 'payor.contactName', 'payor.address1', 'payor.address2', 'payor.city', 'payor.state', 'payor.zip', 'payor.country', 'payor.phone', 'payor.fax', 'payor.email'];\n\n if (!includeAllColumns) {\n if (_.size(this.options.settings.columns) > 0)\n includeColumns = this.options.settings.columns;\n else\n includeColumns = this.options.settings.columnsDefault;\n }\n let maxEmailWidth = $(window).width() > 1200 ? 225 : 100;\n\n _.each(includeColumns, _.bind(function (columnName) {\n switch (columnName) {\n case 'createdOn':\n columns.push({\n \"columnData\": \"createdOn\",\n \"data\": \"attributes.createdOn\",\n \"title\": 'Date',\n \"width\": '90px',\n \"orderable\": true,\n \"render\": _.bind(function (data, type, row) {\n return PJQ.helpers.dateHelpers.getDateString(new Date(row.get('createdOn')), PJQ.helpers.dateHelpers.dateFormats.DATE_TIME);\n }, this)\n });\n break;\n case 'invoiceNumber':\n columns.push({\n \"columnData\": \"invoiceNumber\",\n \"data\": \"attributes.invoiceNumber\",\n \"width\": '100px',\n \"title\": \"Invoice #\",\n });\n break;\n case 'invoiceDate':\n columns.push({\n \"columnData\": \"invoiceDate\",\n \"data\": \"attributes.invoiceDate\",\n \"title\": 'Invoice Date',\n \"width\": '100px',\n \"orderable\": true,\n \"render\": _.bind(function (data, type, row) {\n return PJQ.helpers.dateHelpers.getDateString(new Date(row.get('invoiceDate')), PJQ.helpers.dateHelpers.dateFormats.DATE);\n }, this)\n });\n break;\n case 'amount':\n columns.push({\n \"columnData\": \"amount\",\n \"data\": \"attributes.amount\",\n \"title\": 'Amount',\n \"width\": '85px',\n \"className\": \"text-align-right\",\n \"orderable\": true,\n \"render\": _.bind(function (data, type, row) {\n return PJQ.helpers.formatHelpers.formatCurrency(row.get('amount'));\n }, this)\n });\n break;\n case 'last4':\n columns.push({\n \"columnData\": \"last4\",\n \"data\": \"attributes.last4\",\n \"width\": '60px',\n \"title\": \"Last 4\",\n });\n break;\n case 'paymentType':\n columns.push({\n \"columnData\": \"paymentType\",\n \"data\": \"attributes.paymentType\",\n \"width\": '100px',\n \"title\": 'Method',\n \"orderable\": true,\n \"render\": _.bind(function (data, type, row) {\n return PJQ.constants.invoices.paymentTypeNames[row.get('paymentTypeId')];\n }, this)\n });\n break;\n case 'transactionType':\n columns.push({\n \"columnData\": \"transactionType\",\n \"data\": \"attributes.transactionType\",\n \"title\": 'Type',\n \"width\": '100px',\n \"orderable\": true,\n \"render\": _.bind(function (data, type, row) {\n return PJQ.constants.invoices.transactionTypeNames[row.get('transactionTypeId')];\n }, this)\n });\n break;\n case 'paymentReference':\n columns.push({\n \"columnData\": \"paymentReference\",\n \"data\": \"attributes.paymentReference\",\n \"title\": \"Payment Ref.\",\n });\n break;\n case 'payor.companyName':\n columns.push({\n \"columnData\": \"payor.companyName\",\n \"data\": \"attributes.payor.companyName\",\n \"title\": \"Company\",\n });\n break;\n case 'payor.contactName':\n columns.push({\n \"columnData\": \"payor.contactName\",\n \"data\": \"attributes.payor.contactName\",\n \"title\": \"Contact\",\n });\n break;\n case 'payor.address1':\n columns.push({\n \"columnData\": \"payor.address1\",\n \"data\": \"attributes.payor.address1\",\n \"title\": \"Address 1\"\n });\n break;\n case 'payor.address2':\n columns.push({\n \"columnData\": \"payor.address2\",\n \"data\": \"attributes.payor.address2\",\n \"title\": \"Address 2\"\n });\n break;\n case 'payor.city':\n columns.push({\n \"columnData\": \"payor.city\",\n \"data\": \"attributes.payor.city\",\n \"title\": \"City\"\n });\n break;\n case 'payor.state':\n columns.push({\n \"columnData\": \"payor.state\",\n \"data\": \"attributes.payor.state\",\n \"title\": \"State\",\n });\n break;\n case 'payor.zip':\n columns.push({\n \"columnData\": \"payor.zip\",\n \"data\": \"attributes.payor.zip\",\n \"title\": \"Postal Code\",\n });\n break;\n case 'payor.country':\n columns.push({\n \"columnData\": \"payor.country\",\n \"data\": \"attributes.payor.country\",\n \"title\": \"Country\",\n });\n break;\n case 'payor.phone':\n columns.push({\n \"columnData\": \"payor.phone\",\n \"data\": \"attributes.payor.phone\",\n \"title\": \"Phone\",\n \"width\": this.options.phoneWidth,\n \"render\": _.bind(function (data, type, row) {\n let html = '
',\n phoneFormatted = (row.get('payor.phone') ? PJQ.helpers.formatHelpers.formatPhoneNumber(row.get('payor.phone')) : 'N/A');\n\n if (row.get('payor.phone') !== '')\n html += '';\n\n html += '
' + phoneFormatted + '
';\n html += '
';\n return html;\n }, this)\n });\n break;\n case 'payor.fax':\n columns.push({\n \"columnData\": \"payor.fax\",\n \"data\": \"attributes.payor.fax\",\n \"title\": \"Fax\",\n \"width\": this.options.phoneWidth,\n \"render\": _.bind(function (data, type, row) {\n let html = '
',\n phoneFormatted = (row.get('payor.fax') ? PJQ.helpers.formatHelpers.formatPhoneNumber(row.get('payor.fax')) : 'N/A');\n\n if (row.get('payor.fax') !== '')\n html += '';\n\n html += '
' + phoneFormatted + '
';\n html += '
';\n return html;\n }, this)\n });\n break;\n case 'payor.email':\n columns.push({\n \"columnData\": \"payor.email\",\n \"data\": \"attributes.payor.email\",\n \"title\": \"Email\",\n \"render\": function (data, type, row) {\n let html = '
',\n emailFormatted = (row.get('payor.email') ? ('' + row.get('payor.email') + '') : '');\n\n if (row.get('payor.email') !== '')\n html += '';\n\n html += '
' + emailFormatted + '
';\n return html;\n }\n });\n break;\n }\n\n }, this));\n\n return columns;\n }\n});\n","PJQ.models.invoices = {};\n\n// Settings\nPJQ.models.invoices.InvoiceUserSettings = PJQ.models.BaseModel.extend({\n defaults: {\n isAPIv2: true\n },\n endpoint: function () {\n let params = [];\n if (this.options.forCompany) {\n params.push({\n parameter: 'forCompany',\n value: true\n });\n }\n return PJQ.helpers.urlHelpers.generateEndpoint([\n {\n endpoint: 'invoices'\n },\n {\n endpoint: 'settings'\n },\n {\n endpoint: 'user'\n }\n ], params);\n },\n getSettings: function (view) {\n return _.find(this.attributes.viewSettings, _.bind(function (setting) {\n return setting.view === view;\n }, this));\n }\n});\n\nPJQ.models.invoices.InvoiceSettings = PJQ.models.BaseModel.extend({\n defaults: {\n isAPIv2: true\n },\n endpoint: function () {\n let params = [];\n return PJQ.helpers.urlHelpers.generateEndpoint([\n {\n endpoint: 'invoices'\n },\n {\n endpoint: 'settings'\n }\n ], params);\n }\n});\n\nPJQ.models.invoices.InvoiceIntegrationSettings = PJQ.models.BaseModel.extend({\n defaults: {\n isAPIv2: true\n },\n endpoint: function () {\n return PJQ.helpers.urlHelpers.generateEndpoint([\n {\n endpoint: 'invoices'\n },\n {\n endpoint: 'settings'\n },\n {\n endpoint: 'integration'\n }\n ], [\n {\n parameter: 'invoiceId',\n value: this.options.invoiceId\n },\n {\n parameter: 'context',\n value: this.options.context\n }\n ]);\n },\n isCreditCard: function () {\n return _.contains(this.attributes.settings.paymentTypes, 'credit_card');\n },\n isACH: function () {\n return _.contains(this.attributes.settings.paymentTypes, 'ach');\n },\n getTerms: function() {\n return this.attributes.terms;\n }\n});\n// Invoices\nPJQ.models.invoices.Invoice = PJQ.models.BaseModel.extend({\n defaults: {\n isAPIv2: true\n },\n idAttribute: 'invoiceId',\n endpoint: function () {\n let params = [];\n if (this.get('context'))\n params.push({\n parameter: 'context',\n value: this.get('context')\n });\n return PJQ.helpers.urlHelpers.generateEndpoint([\n {\n endpoint: 'invoices',\n value: this.get('invoiceId')\n }\n ], params);\n },\n getInvoiceStatusLabel: function(includeDate = true) {\n let result = PJQ.constants.invoices.invoiceStatusNames[this.get('invoiceStatusId')];\n\n if (includeDate) {\n if (this.get('invoiceStatusId') === PJQ.constants.invoices.invoiceStatus.PAYMENT_REQUESTED)\n result += ' - ' + PJQ.helpers.dateHelpers.getDateString(new Date(this.get('requestedOn')), PJQ.helpers.dateHelpers.dateFormats.DATE_TIME);\n else if (this.get('invoiceStatusId') === PJQ.constants.invoices.invoiceStatus.PAID)\n result += ' - ' + PJQ.helpers.dateHelpers.getDateString(new Date(this.get('paidOn')), PJQ.helpers.dateHelpers.dateFormats.DATE_TIME);\n else if (this.get('invoiceStatusId') === PJQ.constants.invoices.invoiceStatus.VOIDED)\n result += ' - ' + PJQ.helpers.dateHelpers.getDateString(new Date(this.get('voidedOn')), PJQ.helpers.dateHelpers.dateFormats.DATE_TIME);\n else if (this.get('invoiceStatusId') === PJQ.constants.invoices.invoiceStatus.REFUNDED)\n result += ' - ' + PJQ.helpers.dateHelpers.getDateString(new Date(this.get('refundedOn')), PJQ.helpers.dateHelpers.dateFormats.DATE_TIME);\n }\n\n return result;\n }\n});\n\nPJQ.collections.invoices = {};\nPJQ.collections.invoices.Invoices = PJQ.collections.BaseCollection.extend({\n defaults: {\n isAPIv2: true\n },\n model: PJQ.models.invoices.Invoice,\n endpoint: function (urlOptions) {\n let endpointArr = [\n {\n endpoint: 'invoices'\n }\n ];\n\n if (urlOptions && urlOptions.isExport)\n endpointArr.push({endpoint: 'export'});\n\n return PJQ.helpers.urlHelpers.generateEndpoint(endpointArr);\n },\n parse: function (data) {\n if (this.options.isExport) {\n this.exportURL = data.url;\n }\n else {\n this.totalRows = 0;\n this.totalDraft = 0;\n this.totalRequested = 0;\n this.totalPaymentPending = 0;\n this.totalPaid = 0;\n this.totalVoided = 0;\n this.totalRefunded = 0;\n this.totalReturned = 0;\n if (data) {\n this.totalRows = data.totals.totalRows;\n this.totalDraft = data.totals.totalDraft;\n this.totalRequested = data.totals.totalRequested;\n this.totalPaymentPending = data.totals.totalPaymentPending;\n this.totalPaid = data.totals.totalPaid;\n this.totalVoided = data.totals.totalVoided;\n this.totalRefunded = data.totals.totalRefunded;\n this.totalReturned = data.totals.totalReturned;\n return data.rows;\n }\n }\n return null;\n },\n export: function (data, callback) {\n if (typeof callback !== 'function') {\n return;\n }\n new PJQ.ajax.Request({\n endpoint: this.endpoint({\n isExport: true\n }),\n type: 'POST',\n timeout: 600000,\n data: data\n }).post().done(function (response) {\n callback(response);\n }).fail(function () {\n callback(null);\n });\n }\n});\n\nPJQ.collections.invoices.Transactions = PJQ.collections.BaseCollection.extend({\n defaults: {\n isAPIv2: true\n },\n endpoint: function (urlOptions) {\n let endpointArr = [\n {\n endpoint: 'invoices',\n value: this.options.invoiceId\n },\n {\n endpoint: 'transactions'\n }\n ];\n\n if (urlOptions && urlOptions.isExport)\n endpointArr.push({endpoint: 'export'});\n\n return PJQ.helpers.urlHelpers.generateEndpoint(endpointArr);\n },\n parse: function (data) {\n if (this.options.isExport) {\n this.exportURL = data.url;\n }\n else {\n this.totalRows = 0;\n this.totalPaid = 0;\n this.totalVoided = 0;\n this.totalRefunded = 0;\n if (data && data.invoiceId === undefined) {\n this.totalRows = data.totals.totalRows;\n this.totalPaid = data.totals.totalPaid;\n this.totalVoided = data.totals.totalVoided;\n this.totalRefunded = data.totals.totalRefunded;\n return data.rows;\n }\n }\n return null;\n },\n export: function (data, callback) {\n if (typeof callback !== 'function') {\n return;\n }\n new PJQ.ajax.Request({\n endpoint: this.endpoint({\n isExport: true\n }),\n type: 'POST',\n timeout: 600000,\n data: data\n }).post().done(function (response) {\n callback(response);\n }).fail(function () {\n callback(null);\n });\n }\n});\n\nPJQ.collections.invoices.Notifications = PJQ.collections.BaseCollection.extend({\n defaults: {\n isAPIv2: true\n },\n endpoint: function (urlOptions) {\n let endpointArr = [\n {\n endpoint: 'invoices',\n value: this.options.invoiceId\n },\n {\n endpoint: 'notifications'\n }\n ];\n\n return PJQ.helpers.urlHelpers.generateEndpoint(endpointArr);\n }\n});\n","PJQ.views.invoices.Invoices = PJQ.views.BaseView.extend({\n defaults: {\n template: new PJQ.templating.Template(PJQ.constants.modules.INVOICES, 'invoices'),\n isShowHeader: true\n },\n events: {\n 'click .btn-invoice-settings': 'userSettings',\n 'keyup .input-search': 'searchChanged',\n 'click .search': 'search',\n 'click .clear-search': 'clearFilter',\n 'click .new-invoice': 'newInvoice',\n 'click .export-list': 'exportList'\n },\n beforeFirstRender: function () {\n this.isSettingsFetched = false;\n\n this.userSettings = new PJQ.models.invoices.InvoiceUserSettings();\n this.userSettings.fetch({\n success: _.bind(function () {\n this.isSettingsFetched = true;\n this.currentView = 'invoices';\n this.render();\n }, this)\n });\n },\n renderData: function () {\n return {\n showHeader: this.options.isShowHeader,\n isAdmin: PJQ.app.session.hasPermission('invoices.isAdmin'),\n settingsFetched: this.isSettingsFetched\n };\n },\n afterRender: function () {\n if (!this.isSettingsFetched)\n return;\n\n let startDate = null;\n switch (this.userSettings.get('defaultDateRange')) {\n case PJQ.constants.invoices.invoiceDateRange.MONTH_TO_DATE:\n startDate = PJQ.helpers.dateHelpers.parseDateString(PJQ.helpers.dateHelpers.getCurrentYear() + '-' + PJQ.helpers.dateHelpers.getCurrentMonth() + '-01 00:00:00');\n break;\n case PJQ.constants.invoices.invoiceDateRange.YEAR_TO_DATE:\n startDate = PJQ.helpers.dateHelpers.parseDateString(PJQ.helpers.dateHelpers.getCurrentYear() + '-01-01 00:00:00');\n break;\n case PJQ.constants.invoices.invoiceDateRange.DAYS_30:\n startDate = PJQ.helpers.dateHelpers.getNewDateAddDays(new Date(), -30);\n break;\n case PJQ.constants.invoices.invoiceDateRange.DAYS_60:\n startDate = PJQ.helpers.dateHelpers.getNewDateAddDays(new Date(), -60);\n break;\n case PJQ.constants.invoices.invoiceDateRange.DAYS_90:\n startDate = PJQ.helpers.dateHelpers.getNewDateAddDays(new Date(), -90);\n break;\n case PJQ.constants.invoices.invoiceDateRange.DAYS_180:\n startDate = PJQ.helpers.dateHelpers.getNewDateAddDays(new Date(), -180);\n break;\n }\n\n this.startDateDatePicker = new PJQ.inputs.Datepicker({\n el: this.$('.start-date'),\n datepickerOptions: {\n defaultDate: startDate,\n format: PJQ.helpers.dateHelpers.dateFormats.datePicker.DATE,\n },\n onChange: _.bind(function() {\n this.renderView();\n }, this)\n });\n\n this.endDateDatePicker = new PJQ.inputs.Datepicker({\n el: this.$('.end-date'),\n datepickerOptions: {\n defaultDate: new Date(),\n format: PJQ.helpers.dateHelpers.dateFormats.datePicker.DATE,\n },\n onChange: _.bind(function() {\n this.renderView();\n }, this)\n });\n\n this.viewSelectPicker = new PJQ.inputs.Selectpicker({\n el: this.$('.invoices-view'),\n isIntChoices: false,\n isMultiple: false,\n mustSelectValue: true,\n defaultValue: this.userSettings.get('defaultView'),\n onHide: _.bind(function() {\n this.renderView();\n }, this)\n });\n\n this.invoiceStatusSelectPicker = new PJQ.inputs.Selectpicker({\n el: this.$('select.invoice-status'),\n isIntChoices: true,\n isMultiple: true,\n mustSelectValue: true,\n defaultValue: [PJQ.constants.invoices.invoiceStatus.DRAFT, PJQ.constants.invoices.invoiceStatus.PAYMENT_REQUESTED, PJQ.constants.invoices.invoiceStatus.PENDING, PJQ.constants.invoices.invoiceStatus.PAID, PJQ.constants.invoices.invoiceStatus.VOIDED, PJQ.constants.invoices.invoiceStatus.REFUNDED, PJQ.constants.invoices.invoiceStatus.RETURNED],\n onHide: _.bind(function() {\n this.renderView();\n }, this)\n });\n\n this.transactionTypeSelectPicker = new PJQ.inputs.Selectpicker({\n el: this.$('select.transaction-type'),\n isIntChoices: true,\n isMultiple: true,\n mustSelectValue: true,\n defaultValue: [PJQ.constants.invoices.transactionType.PAYMENT_PENDING, PJQ.constants.invoices.transactionType.PAYMENT,PJQ.constants.invoices.transactionType.VOID,PJQ.constants.invoices.transactionType.REFUND, PJQ.constants.invoices.transactionType.RETURN, PJQ.constants.invoices.transactionType.REFUND_PENDING ],\n onHide: _.bind(function() {\n this.renderView();\n }, this)\n });\n\n this.renderView();\n\n if (this.options.invoiceId > 0) {\n let invoice = new PJQ.models.invoices.Invoice();\n invoice.set('invoiceId', this.options.invoiceId);\n invoice.fetch({\n success: _.bind(function() {\n new PJQ.views.invoices.InvoiceEditModal({\n model: invoice,\n invoicesView: this,\n onSave: _.bind(function() {\n this.renderView();\n }, this),\n onDelete: _.bind(function() {\n this.renderView();\n }, this)\n });\n }, this)\n });\n this.options.invoiceId = null;\n }\n },\n renderView: function(view, options = {}) {\n this.currentView = view ? view : this.viewSelectPicker.getValue();\n\n if (this.currentView === PJQ.constants.invoices.view.INVOICES) {\n this.invoiceStatusSelectPicker.show();\n this.transactionTypeSelectPicker.hide();\n }\n else if (this.currentView === PJQ.constants.invoices.view.TRANSACTIONS) {\n this.invoiceStatusSelectPicker.hide();\n this.transactionTypeSelectPicker.show();\n }\n\n PJQ.helpers.inputHelpers.setInputError(this.$('.start-date, .end-date'), true);\n if (this.startDateDatePicker.getValue() > this.endDateDatePicker.getValue()) {\n PJQ.helpers.inputHelpers.setInputError(this.$('.start-date, .end-date'), false);\n return;\n }\n\n let page = null;\n if (options.stayOnPage && this.dataTable != null) {\n page = this.dataTable.dataTable.page();\n }\n\n if (this.dataTable) {\n this.dataTable.cleanup();\n this.dataTable.clearServerCache = true;\n this.dataTable.pageCache = [];\n this.dataTable.remove();\n this.dataTable = null;\n this.$('.invoices-data').empty();\n }\n\n let tableSettings = this.userSettings.getSettings(this.currentView),\n dataTableOptions = {\n el: this.$('.invoices-data'),\n language: {\n zeroRecords: 'No Results Available'\n },\n data: null,\n view: this.currentView,\n invoicesView: this,\n settings: tableSettings,\n getPageCallback: _.bind(this.getViewData, this),\n displayStart: page != null ? page * tableSettings.rowsPerPage : null,\n deferRender: true,\n clearServerCache: true,\n showPageSelector: true,\n onTableDraw: _.bind(function (dataTable) {\n this.$('.invoices-data').css('margin-top', -40);\n }, this)\n };\n\n this.dataTable = this.getDataTableInstance(dataTableOptions);\n },\n getViewData: function (pageNumber, pageSize, orderArr, callback) {\n let order = orderArr[0];\n this.data = null;\n\n switch(this.currentView) {\n case PJQ.constants.invoices.view.INVOICES:\n this.data = new PJQ.collections.invoices.Invoices();\n break;\n case PJQ.constants.invoices.view.TRANSACTIONS:\n this.data = new PJQ.collections.invoices.Transactions();\n break;\n }\n\n let dateNow = new Date(), parameters = {\n searchFor: this.$('.input-search').val(),\n startDate: PJQ.helpers.dateHelpers.getDateString(this.startDateDatePicker.getValue(), PJQ.helpers.dateHelpers.dateFormats.DATE_YMD),\n endDate: PJQ.helpers.dateHelpers.getDateString(this.endDateDatePicker.getValue(), PJQ.helpers.dateHelpers.dateFormats.DATE_YMD),\n page: pageNumber,\n pageSize: pageSize,\n orderBy: order.name,\n orderDirection: order.direction,\n timeZoneOffset: dateNow.getTimezoneOffset()\n };\n\n if (this.currentView === PJQ.constants.invoices.view.INVOICES) {\n parameters.invoiceStatus = this.invoiceStatusSelectPicker.getValue().join(',');\n }\n else if (this.currentView === PJQ.constants.invoices.view.TRANSACTIONS) {\n parameters.transactionType = this.transactionTypeSelectPicker.getValue().join(',');\n }\n\n this.data.fetch({\n data: parameters,\n success: _.bind(function () {\n\n if (this.currentView === PJQ.constants.invoices.view.INVOICES) {\n this.$('.invoice-stats').removeClass('hidden');\n this.$('.total-rows-label').text('Invoices');\n this.$('.total-rows').text(this.data.totalRows);\n this.$('.total-draft').text(PJQ.helpers.formatHelpers.formatCurrency(this.data.totalDraft));\n this.$('.total-requested').text(PJQ.helpers.formatHelpers.formatCurrency(this.data.totalRequested));\n this.$('.total-pending').text(PJQ.helpers.formatHelpers.formatCurrency(this.data.totalPaymentPending));\n this.$('.total-paid').text(PJQ.helpers.formatHelpers.formatCurrency(this.data.totalPaid));\n this.$('.total-voided').text(PJQ.helpers.formatHelpers.formatCurrency(this.data.totalVoided));\n this.$('.total-refunded').text(PJQ.helpers.formatHelpers.formatCurrency(this.data.totalRefunded));\n this.$('.total-returned').text(PJQ.helpers.formatHelpers.formatCurrency(this.data.totalReturned));\n } else if (this.currentView === PJQ.constants.invoices.view.TRANSACTIONS) {\n this.$('.invoice-stats').addClass('hidden');\n }\n\n callback(this.data.models, this.data.totalRows);\n if (this.pageSelectPicker == null) {\n // this.renderPageSelect();\n }\n }, this),\n fail: _.bind(function () {\n callback();\n }, this)\n });\n },\n getDataTableInstance: function(options) {\n let dataTable = null;\n\n switch (options.view) {\n case PJQ.constants.invoices.view.INVOICES:\n dataTable = new PJQ.views.invoices.InvoiceDataTable(options);\n break;\n case PJQ.constants.invoices.view.TRANSACTIONS:\n dataTable = new PJQ.views.invoices.TransactionDataTable(options);\n break;\n }\n return dataTable;\n },\n searchChanged: function (e) {\n if (e.keyCode === 13) {\n this.search();\n }\n },\n search: function () {\n this.renderView();\n },\n clearFilter: function() {\n this.$('.input-search').val('');\n this.renderView();\n },\n userSettings: function() {\n var settings = new PJQ.models.invoices.InvoiceSettings();\n settings.fetch({\n success: _.bind(function() {\n new PJQ.views.invoices.InvoiceSettingsModal({\n invoicesView: this,\n settings: settings,\n onSave: _.bind(function () {\n this.renderView();\n PJQ.notifications.notify.successNotify({\n message: 'Settings updated successfully'\n });\n }, this)\n });\n }, this)\n });\n },\n newInvoice: function() {\n new PJQ.views.invoices.InvoiceEditModal({\n invoicesView: this,\n onSave: _.bind(function() {\n this.renderView();\n }, this)\n });\n },\n deleteInvoice: function(invoice, callback) {\n new PJQ.views.modals.DeleteCancel({\n header: \"Delete Invoice\",\n body: \"Are you sure you want to delete this invoice?\",\n onDelete: _.bind(function () {\n invoice.destroy();\n if (typeof callback === 'function') {\n callback();\n }\n this.renderView();\n }, this)\n });\n\n },\n exportInvoice: function (invoiceId, context) {\n PJQ.files.downloadFile(PJQ.helpers.urlHelpers.generateEndpoint([\n {\n endpoint: 'invoices',\n value: invoiceId\n },\n {\n endpoint: 'export',\n }\n ]), { isAPIv2: true });\n },\n exportList: function () {\n let parameters = [\n {\n parameter: 'searchFor',\n value: this.$('.input-search').val()\n },\n {\n parameter: 'startDate',\n value: PJQ.helpers.dateHelpers.getDateString(this.startDateDatePicker.getValue(), PJQ.helpers.dateHelpers.dateFormats.DATE_YMD)\n },\n {\n parameter: 'endDate',\n value: PJQ.helpers.dateHelpers.getDateString(this.endDateDatePicker.getValue(), PJQ.helpers.dateHelpers.dateFormats.DATE_YMD)\n },\n {\n parameter: 'timeZoneOffset',\n value: new Date().getTimezoneOffset()\n }\n ];\n\n if (this.currentView === PJQ.constants.invoices.view.INVOICES) {\n parameters.push({\n parameter: 'invoiceStatus',\n value: this.invoiceStatusSelectPicker.getValue().join(',')\n });\n }\n else if (this.currentView === PJQ.constants.invoices.view.TRANSACTIONS) {\n parameters.push({\n parameter: 'transactionType',\n value: this.transactionTypeSelectPicker.getValue().join(',')\n });\n }\n var downloadEndpoint = [\n {\n endpoint: 'invoices'\n }\n ];\n\n if (this.currentView === PJQ.constants.invoices.view.TRANSACTIONS) {\n downloadEndpoint.push({\n endpoint: 'transactions'\n });\n }\n\n downloadEndpoint.push({\n endpoint: 'export'\n });\n\n PJQ.files.downloadFile(PJQ.helpers.urlHelpers.generateEndpoint(downloadEndpoint, parameters), { isAPIv2: true });\n }\n});\n\nPJQ.views.invoices.InvoiceEditModal = PJQ.views.BaseModal.extend({\n defaults: {\n template: new PJQ.templating.Template(PJQ.constants.modules.INVOICES, 'modal-invoice-edit'),\n minWidth: 1000,\n model: null,\n invoicesView: null,\n onSave: _.noop(),\n onDelete: _.noop()\n },\n events: {\n 'click button.view-notifications': 'viewNotifications',\n 'click button.view-transactions': 'viewTransactions',\n 'click button.select-payor': 'selectPayor',\n 'click button.clear-payor': 'clearPayor',\n 'click button.invoice-save': 'onSave',\n 'click button.invoice-delete': 'deleteInvoice',\n 'click button.invoice-void': 'voidInvoice',\n 'click button.add-line-item': 'addLineItem',\n 'click button.save-line-item': 'saveLineItem',\n 'click button.cancel-edit-line-item': 'cancelEditLineItem',\n 'click button.edit-line-item': 'editLineItem',\n 'click button.delete-line-item': 'deleteLineItem',\n 'click button.invoice-export': 'exportInvoice',\n 'click button.invoice-request-payment': 'requestPayment',\n 'click button.invoice-manual-payment': 'manualPayment'\n },\n beforeModalCreated: function () {\n if (this.options.model)\n this.model = this.options.model;\n else {\n this.model = new PJQ.models.invoices.Invoice();\n this.model.set('invoiceDate', PJQ.helpers.dateHelpers.getDateString(new Date(), PJQ.helpers.dateHelpers.dateFormats.DATE_TIME, false));\n this.model.set('invoiceStatusId', PJQ.constants.invoices.invoiceStatus.DRAFT);\n this.model.attributes.payor = {\n contactId: 0,\n country: 'US'\n };\n this.model.attributes.lineItems = [];\n }\n },\n /*\n beforeRender: function () {\n\n },\n\n */\n renderData: function () {\n return {\n model: this.model,\n canEdit: PJQ.app.session.hasPermission('invoices.isAdmin') && (this.model.get('invoiceStatusId') === PJQ.constants.invoices.invoiceStatus.DRAFT || this.model.get('invoiceStatusId') === PJQ.constants.invoices.invoiceStatus.PAYMENT_REQUESTED)\n }\n },\n afterRender: function () {\n let self = this;\n\n new PJQ.Binder(this.$el, this.model, {\n watchElements: [\n 'input',\n 'textarea'\n ]\n });\n\n new PJQ.inputs.Datepicker({\n el: this.$('.invoice-date'),\n datepickerOptions: {\n format: PJQ.helpers.dateHelpers.dateFormats.datePicker.DATE,\n defaultDate: this.model.get('invoiceDate') ? new Date(this.model.get('invoiceDate')) : new Date()\n },\n onChange: _.bind(function (newDate) {\n this.model.set('invoiceDate', newDate);\n }, this)\n });\n\n this.statePicker = new PJQ.inputs.Selectpicker({\n el: this.$('.payor-state'),\n noneSelectedText: 'Select State',\n defaultValue: _.size(this.model.get('payor').state) > 0 ? this.model.get('payor').state.toLowerCase() : null,\n onChange: _.bind(function (value) {\n this.model.get('payor').state = value.toUpperCase();\n }, this)\n });\n this.countryChanged();\n\n this.countryPicker = new PJQ.inputs.Selectpicker({\n el: this.$('.payor-country'),\n noneSelectedText: 'Select Country',\n defaultValue: _.size(this.model.get('country')) > 0 ? this.model.get('country').toLowerCase() : 'us',\n onChange: _.bind(function (value) {\n this.model.get('payor').country = value.toUpperCase();\n this.model.get('payor').zip = '';\n this.model.get('payor').state = '';\n this.countryChanged();\n }, this)\n });\n\n PJQ.helpers.inputHelpers.inputMaskPhone(this.$('input.payor-phone'));\n PJQ.helpers.inputHelpers.inputMaskPhone(this.$('input.payor-fax'));\n\n this.editLineItemRow = null;\n this.lineItemsDataTable = new PJQ.views.dataTables.DataTable({\n el: this.$('.line-items'),\n pageLength: 999999,\n isHideSearch: true,\n data: this.model.get('lineItems'),\n language: {\n zeroRecords: 'Click \"Add Line Item\" to add a line item'\n },\n dom: 't',\n order: [],\n columns: [\n {\n \"title\": \"Description\",\n \"orderable\": false,\n \"render\": _.bind(function (data, type, row) {\n if (this.editLineItemRow === row) {\n return '';\n }\n else {\n return row.description;\n }\n }, this)\n },\n {\n \"title\": \"Quantity\",\n \"width\": '75px',\n \"className\": \"text-align-right\",\n \"orderable\": false,\n \"render\": _.bind(function (data, type, row) {\n if (this.editLineItemRow === row) {\n return '';\n }\n else {\n return (row.quantity / 100).toFixed(2).toString();\n }\n }, this)\n },\n {\n \"title\": \"Unit Price\",\n \"width\": '100px',\n \"className\": \"text-align-right\",\n \"orderable\": false,\n \"render\": _.bind(function (data, type, row) {\n if (this.editLineItemRow === row) {\n return '';\n }\n else {\n return PJQ.helpers.formatHelpers.formatCurrency(row.unitPrice);\n }\n }, this)\n },\n {\n \"title\": \"Ext. Price\",\n \"width\": '100px',\n \"className\": \"text-align-right\",\n \"orderable\": false,\n \"render\": _.bind(function (data, type, row) {\n return PJQ.helpers.formatHelpers.formatCurrency(row.extPrice);\n }, this)\n },\n {\n \"title\": '',\n \"render\": _.bind(function (data, type, row) {\n let html = '';\n if (this.model.get('invoiceStatusId') === PJQ.constants.invoices.invoiceStatus.DRAFT || this.model.get('invoiceStatusId') === PJQ.constants.invoices.invoiceStatus.PAYMENT_REQUESTED) {\n html += '
';\n\n if (PJQ.app.session.hasPermission('invoices.isAdmin') && this.editLineItemRow === row) {\n html += '';\n html += '';\n } else if (PJQ.app.session.hasPermission('invoices.isAdmin') && this.editLineItemRow !== row) {\n html += '';\n html += '';\n }\n\n html += '
';\n }\n return html;\n }, this),\n \"orderable\": false,\n \"searchable\": false,\n \"width\": \"100px\",\n \"className\": \"text-center\",\n \"visible\": true\n }\n ]\n });\n this.$('.line-items').on('draw.dt', _.bind(function () {\n PJQ.helpers.inputHelpers.inputMaskDecimal(this.$('.input-line-item-quantity'), 2);\n PJQ.helpers.inputHelpers.inputMaskCurrency(this.$('.input-line-item-unit-price'), 2);\n\n if (this.$('.input-line-item-description').length > 0)\n this.$('.input-line-item-description').focus();\n\n }, this));\n\n\n this.recalculateTotal();\n this.$('.invoice-number').focus();\n },\n addLineItem: function() {\n this.editLineItemRow = {\n invoiceLineItemId: 0,\n description: '',\n quantity: 100,\n unitPrice: 0,\n isNew: true,\n isDeleted: false\n };\n this.lineItemsDataTable.addRow(this.editLineItemRow);\n },\n saveLineItem: function(e) {\n this.$('.invoice-save').prop('disabled', false);\n let isValid = true;\n PJQ.helpers.inputHelpers.setInputError(this.$('.input-line-item-description, .input-line-item-quantity, .input-line-item-unit-price'), true);\n if (!this.$('.input-line-item-description').val()) {\n PJQ.helpers.inputHelpers.setInputError(this.$('.input-line-item-description'), false);\n isValid = false;\n }\n\n let quantity = parseInt(parseFloat(this.$('.input-line-item-quantity').val()) * 100);\n if (quantity <= 0) {\n PJQ.helpers.inputHelpers.setInputError(this.$('.input-line-item-quantity'), false);\n isValid = false;\n }\n\n let unitPrice = parseInt(parseFloat(this.$('.input-line-item-unit-price').val()) * 100);\n if (unitPrice < 0) {\n PJQ.helpers.inputHelpers.setInputError(this.$('.input-line-item-unit-price'), false);\n isValid = false;\n }\n\n if (!isValid)\n return;\n\n this.editLineItemRow.description = this.$('.input-line-item-description').val();\n this.editLineItemRow.quantity = quantity;\n this.editLineItemRow.unitPrice = unitPrice;\n this.editLineItemRow.extPrice = (quantity / 100) * unitPrice;\n\n if (this.editLineItemRow.isNew) {\n this.editLineItemRow.isNew = false;\n this.model.attributes.lineItems.push(this.editLineItemRow);\n }\n\n this.editLineItemRow = null;\n this.lineItemsDataTable.refresh();\n this.recalculateTotal();\n },\n cancelEditLineItem: function(e) {\n let row = this.lineItemsDataTable.getRow($(e.currentTarget).closest('tr')[0]);\n this.$('.invoice-save').prop('disabled', false);\n\n if (row.data().isNew) {\n this.model.attributes.lineItems = _.filter(this.model.attributes.lineItems, function(lineItem) {\n return !lineItem.isNew;\n });\n this.lineItemsDataTable.removeRow(row);\n }\n\n this.editLineItemRow = null;\n this.lineItemsDataTable.refresh();\n },\n editLineItem: function(e) {\n this.$('.invoice-save').prop('disabled', true);\n this.editLineItemRow = this.lineItemsDataTable.getRow($(e.currentTarget).closest('tr')[0]).data();\n this.lineItemsDataTable.refresh();\n },\n deleteLineItem: function(e) {\n let row = this.lineItemsDataTable.getRow($(e.currentTarget).closest('tr')[0]);\n row.data().isDeleted = true;\n this.lineItemsDataTable.removeRow(row);\n this.$('.invoice-save').prop('disabled', false);\n this.recalculateTotal();\n },\n recalculateTotal: function() {\n let total = 0;\n _.each(this.model.get('lineItems'), function(lineItem) {\n if (!lineItem.isDeleted)\n total += ((lineItem.quantity/100) * lineItem.unitPrice);\n });\n\n this.model.set('total', total);\n\n this.$('.invoice-total').html(PJQ.helpers.formatHelpers.formatCurrency(total));\n\n return total;\n },\n countryChanged: function() {\n let country = this.model.get('payor').country && this.model.get('payor').country.length > 0 ? this.model.get('payor').country.toLowerCase() : 'us',\n options = '';\n _.each(PJQ.constants.states[country], function (state) {\n options += '';\n });\n this.statePicker.$el.html(options);\n this.statePicker.refresh();\n if (this.model.get('payor').state)\n this.statePicker.setValue(this.model.get('payor').state.toLowerCase());\n\n PJQ.helpers.inputHelpers.inputMaskZip(this.$('.payor-zip'), country);\n },\n onSave: function() {\n let callback = _.bind(function() {\n if (typeof this.options.onSave === 'function')\n this.options.onSave();\n\n this.removeModal();\n }, this);\n\n this.save(callback);\n },\n validateForm: function() {\n let isValid = true;\n\n PJQ.helpers.inputHelpers.setInputError(this.$('.invoice-number, .invoice-date, .payor-companyname, .payor-email'), true);\n if (!this.model.get('invoiceNumber')) {\n PJQ.helpers.inputHelpers.setInputError(this.$('.invoice-number'), false);\n isValid = false;\n }\n if (!this.model.get('invoiceDate')) {\n PJQ.helpers.inputHelpers.setInputError(this.$('.invoice-date'), false);\n isValid = false;\n }\n\n if (!this.$('.payor-companyname').val()) {\n PJQ.helpers.inputHelpers.setInputError(this.$('.payor-companyname'), false);\n isValid = false;\n }\n\n if (!this.$('.payor-email').val() || !PJQ.helpers.validators.validateEmail(this.$('.payor-email').val()).success) {\n PJQ.helpers.inputHelpers.setInputError(this.$('.payor-email'), false);\n isValid = false;\n }\n\n return isValid;\n },\n save: function(callback) {\n // TODO: validation / duplicate invoice # check\n if (!this.validateForm())\n return;\n\n this.model.get('payor').companyName = this.$('.payor-companyname').val();\n this.model.get('payor').contactName = this.$('.payor-contactname').val();\n this.model.get('payor').address1 = this.$('.payor-address1').val();\n this.model.get('payor').address2 = this.$('.payor-address2').val();\n this.model.get('payor').city = this.$('.payor-city').val();\n this.model.get('payor').zip = this.$('.payor-zip').val();\n this.model.get('payor').phone = this.$('.payor-phone').val();\n this.model.get('payor').phoneExtension = this.$('.payor-phone-ext').val();\n this.model.get('payor').fax = this.$('.payor-fax').val();\n this.model.get('payor').email = this.$('.payor-email').val();\n\n if (!isValid)\n return;\n\n this.model.save(null, {\n success: _.bind(function () {\n PJQ.notifications.notify.successNotify({\n message: 'Invoice saved successfully'\n });\n callback();\n }, this),\n error: _.bind(function(data) {\n // TODO: show error message if it was duplicate invoice #\n debugger;\n }, this)\n });\n },\n delete: function() {\n this.options.onDelete();\n },\n selectPayor: function() {\n new PJQ.views.contacts.SelectContactsModal({\n context: PJQ.constants.contacts.contexts.CONTACTS,\n isSingleChoice: true,\n defaultValue: this.model.get('payor').contactId,\n onSave: _.bind(function (data) {\n this.model.get('payor').contactId = data.get('contactId');\n this.model.get('payor').companyName = data.get('companyName');\n this.model.get('payor').contactName = data.get('contactName');\n this.model.get('payor').address1 = data.get('address1');\n this.model.get('payor').address2 = data.get('address2');\n this.model.get('payor').city = data.get('city');\n this.model.get('payor').state = data.get('state');\n this.model.get('payor').zip = data.get('zip');\n this.model.get('payor').country = data.get('country');\n this.model.get('payor').phone = data.get('phone');\n this.model.get('payor').phoneExtension = data.get('phoneExtension');\n this.model.get('payor').fax = data.get('fax');\n this.model.get('payor').email = data.get('email');\n\n this.$('.payor-companyname').val(data.get('companyName'));\n this.$('.payor-contactname').val(data.get('contactName'));\n this.$('.payor-address1').val(data.get('address1'));\n this.$('.payor-address2').val(data.get('address2'));\n this.$('.payor-city').val(data.get('city'));\n this.countryPicker.setValue('us'); // TODO: contact picker does not expose country\n this.countryChanged();\n this.statePicker.setValue(data.get('state').toLowerCase());\n this.$('.payor-zip').val(data.get('zip'));\n this.$('.payor-phone').val(data.get('phone'));\n this.$('.payor-phone-ext').val(data.get('phoneExtension'));\n this.$('.payor-fax').val(data.get('fax'));\n this.$('.payor-email').val(data.get('email'));\n\n this.$('.payor-companyname').focus();\n }, this)\n });\n },\n clearPayor: function() {\n this.model.get('payor').contactId = 0;\n this.model.get('payor').companyName = '';\n this.model.get('payor').contactName = '';\n this.model.get('payor').address1 = '';\n this.model.get('payor').address2 = '';\n this.model.get('payor').city = '';\n this.model.get('payor').state = '';\n this.model.get('payor').zip = '';\n this.model.get('payor').country = 'US';\n this.model.get('payor').phone = '';\n this.model.get('payor').phoneExtension = '';\n this.model.get('payor').fax = '';\n this.model.get('payor').email = '';\n\n this.$('.payor-companyname, .payor-contactname, .payor-address1, .payor-address2, .payor-city, .payor-zip, .payor-phone, .payor-phone-ext, .payor-fax, .payor-email').val('');\n this.countryPicker.setValue('us');\n this.countryChanged();\n\n this.$('.payor-companyname').focus();\n },\n viewNotifications: function() {\n new PJQ.views.invoices.ViewNotificationsModal({\n invoiceId: this.model.get('invoiceId')\n });\n },\n viewTransactions: function() {\n new PJQ.views.invoices.ViewTransactionsModal({\n invoiceId: this.model.get('invoiceId')\n });\n },\n deleteInvoice: function() {\n this.options.invoicesView.deleteInvoice(this.model, _.bind(function() { this.removeModal(); }, this));\n },\n voidInvoice: function() {\n new PJQ.views.modals.YesNo({\n header: \"Void/Refund Invoice\",\n body: \"Are you sure you want to void/refund this invoice?\",\n onYes: _.bind(function () {\n\n new PJQ.ajax.Request({\n endpoint: PJQ.helpers.urlHelpers.generateEndpoint([\n {\n endpoint: 'invoices',\n value: this.model.get('invoiceId')\n },\n {\n endpoint: 'void'\n }\n ]),\n isAPIv2: true\n }).post().done(_.bind(function (data) {\n PJQ.notifications.notify.successNotify({\n message: 'Invoice voided successfully'\n });\n this.options.invoicesView.renderView();\n this.removeModal();\n }, this)).fail(function(data) {\n PJQ.notifications.notify.errorNotify({\n message: 'Unable to void this invoice'\n });\n });\n\n }, this)\n });\n\n },\n exportInvoice: function() {\n let callback = _.bind(function () {\n if (typeof this.options.onSave === 'function')\n this.options.onSave();\n\n this.options.invoicesView.exportInvoice(this.model.get('invoiceId'));\n }, this);\n\n if (this.model.get('invoiceStatusId') === PJQ.constants.invoices.invoiceStatus.DRAFT || this.model.get('invoiceStatusId') === PJQ.constants.invoices.invoiceStatus.PAYMENT_REQUESTED)\n this.save(callback);\n else\n this.options.invoicesView.exportInvoice(this.model.get('invoiceId'));\n },\n requestPayment: function() {\n\n if (!this.validateForm())\n return;\n\n if (this.recalculateTotal() === 0) {\n new PJQ.views.BaseModal({\n header: \"Amount Due Error\",\n body: \"Please add one or more line items before requesting payment.\"\n });\n return;\n }\n\n let callback = _.bind(function () {\n new PJQ.ajax.Request({\n endpoint: PJQ.helpers.urlHelpers.generateEndpoint([\n {\n endpoint: 'invoices',\n value: this.model.get('invoiceId')\n },\n {\n endpoint: 'requestpayment'\n }\n ]),\n isAPIv2: true\n }).post().done(_.bind(function (response) {\n if (typeof this.options.onSave === 'function')\n this.options.onSave();\n\n PJQ.notifications.notify.successNotify({\n message: 'Request for Payment has been sent'\n });\n this.removeModal();\n }, this));\n }, this);\n\n if (this.model.get('invoiceStatusId') === PJQ.constants.invoices.invoiceStatus.DRAFT || this.model.get('invoiceStatusId') === PJQ.constants.invoices.invoiceStatus.PAYMENT_REQUESTED || this.model.get('invoiceStatusId') === PJQ.constants.invoices.invoiceStatus.RETURNED)\n this.save(callback);\n },\n manualPayment: function() {\n if (!this.validateForm())\n return;\n\n if (_.size(this.model.get('lineItems')) === 0) {\n new PJQ.views.BaseModal({\n header: \"Line Item Error\",\n body: \"Please add one or more line items before marking paid.\"\n });\n return;\n }\n\n new PJQ.views.invoices.ManualInvoicePaymentModal({\n onPay: _.bind(function(data) {\n let callback = _.bind(function() {\n new PJQ.ajax.Request({\n endpoint: PJQ.helpers.urlHelpers.generateEndpoint([\n {\n endpoint: 'invoices',\n value: this.model.get('invoiceId')\n },\n {\n endpoint: 'manualpay'\n }\n ], [\n {\n parameter: 'paymentReference',\n value: data\n }\n ]),\n isAPIv2: true\n }).post().done(_.bind(function (response) {\n if (typeof this.options.onSave === 'function')\n this.options.onSave();\n\n PJQ.notifications.notify.successNotify({\n message: 'Invoice has been marked as paid'\n });\n this.removeModal();\n }, this));\n\n }, this);\n\n this.save(callback);\n }, this)\n });\n }\n});\n\nPJQ.views.invoices.ManualInvoicePaymentModal = PJQ.views.BaseModal.extend({\n defaults: {\n template: new PJQ.templating.Template(PJQ.constants.modules.INVOICES, 'modal-invoice-payment-manual'),\n onPay: _.noop()\n },\n events: {\n 'click .payment-save': 'savePayment'\n },\n savePayment: function() {\n if (typeof this.options.onPay === 'function')\n this.options.onPay(this.$('.payment-reference').val().trim());\n\n this.removeModal();\n }\n});\n\nPJQ.views.invoices.InvoicePayor = PJQ.views.BaseView.extend({\n defaults: {\n template: new PJQ.templating.Template(PJQ.constants.modules.INVOICES, 'invoice-payor')\n },\n events: {\n 'click .make-payment': 'makePayment',\n 'click .export': 'exportInvoice'\n },\n renderData: function () {\n return {\n invoice: this.options.invoice\n }\n },\n makePayment: function() {\n let integrationSettings = new PJQ.models.invoices.InvoiceIntegrationSettings(null, {\n invoiceId: this.options.invoice.get('invoiceId'),\n context: this.options.invoice.get('context')\n });\n integrationSettings.fetch({\n success: _.bind(function (data) {\n new PJQ.views.invoices.InvoicePaymentModal({\n invoice: this.options.invoice,\n integrationSettings: integrationSettings,\n onPay: _.bind(function() {\n this.$('.make-payment').prop('disabled', true);\n new PJQ.views.BaseModal({\n header: \"Payment Successful\",\n body: \"Your payment has been submitted. You will receive an email with an attached invoice showing that it is Paid when the payment has processed completely.\"\n });\n }, this)\n });\n }, this)\n });\n\n },\n exportInvoice: function () {\n PJQ.files.downloadFile(PJQ.helpers.urlHelpers.generateEndpoint([\n {\n endpoint: 'invoices',\n value: this.options.invoice.get('invoiceId')\n },\n {\n endpoint: 'export',\n }\n ], [\n {\n parameter: 'context',\n value: this.options.invoice.get('context')\n }\n ]), { isAPIv2: true });\n }\n});\n\nPJQ.views.invoices.InvoicePaymentTermsModal = PJQ.views.BaseModal.extend({\n defaults: {\n template: new PJQ.templating.Template(PJQ.constants.modules.INVOICES, 'modal-invoice-terms'),\n width: '600px'\n },\n events: {\n },\n afterRender: function() {\n this.$('.terms').html(this.options.terms);\n }\n});\n\nPJQ.views.invoices.InvoicePaymentModal = PJQ.views.BaseModal.extend({\n defaults: {\n template: new PJQ.templating.Template(PJQ.constants.modules.INVOICES, 'modal-invoice-payment'),\n width: '600px',\n onPay: _.noop()\n },\n events: {\n 'click button.pay': 'pay',\n 'keyup .cardholder-name': 'validateKeyUp',\n 'keyup .card-number': 'validateKeyUp',\n 'keyup .cvv': 'validateKeyUp',\n 'keyup .billing-zip': 'validateKeyUp',\n 'keyup .account-holder': 'validateKeyUp',\n 'keyup .routing-number': 'validateKeyUp',\n 'keyup .account-number': 'validateKeyUp',\n 'change .agree': 'validateKeyUp',\n 'click .terms': 'viewTerms'\n },\n renderData: function () {\n return {\n invoice: this.options.invoice,\n today: new Date()\n }\n },\n afterRender: function() {\n\n this.paymentTypeSelectPicker = new PJQ.inputs.Selectpicker({\n el: this.$('select.payment-type'),\n isIntChoices: true,\n isMultiple: false,\n mustSelectValue: true,\n defaultValue: this.options.integrationSettings.isCreditCard() ? PJQ.constants.invoices.paymentType.CREDIT_CARD_PAYSIMPLE : PJQ.constants.invoices.paymentType.ACH_PAYSIMPLE,\n onHide: _.bind(function() {\n if (this.paymentTypeSelectPicker.getValue() === PJQ.constants.invoices.paymentType.CREDIT_CARD_PAYSIMPLE) {\n this.$('.credit-card').removeClass('hidden');\n this.$('.check').addClass('hidden');\n }\n else if (this.paymentTypeSelectPicker.getValue() === PJQ.constants.invoices.paymentType.ACH_PAYSIMPLE) {\n this.$('.credit-card').addClass('hidden');\n this.$('.check').removeClass('hidden');\n }\n }, this)\n });\n\n if (!this.options.integrationSettings.isCreditCard()) {\n this.$('.credit-card').addClass('hidden');\n this.$('.check').removeClass('hidden');\n this.$('.payment-types').addClass('hidden');\n }\n else if (!this.options.integrationSettings.isACH()) {\n this.$('.payment-types').addClass('hidden');\n }\n\n this.expirationMonthSelectPicker = new PJQ.inputs.Selectpicker({\n el: this.$('select.exp-month'),\n isIntChoices: false,\n isMultiple: false,\n mustSelectValue: true,\n defaultValue: '01'\n });\n\n let today = new Date();\n this.expirationYearSelectPicker = new PJQ.inputs.Selectpicker({\n el: this.$('select.exp-year'),\n isIntChoices: false,\n isMultiple: false,\n mustSelectValue: true,\n defaultValue: today.getFullYear().toString()\n });\n\n this.$('.card-number').inputmask('9999999999999999999', {\n placeholder: ''\n });\n\n this.$('.cvv').inputmask('9999', {\n placeholder: ''\n });\n\n PJQ.helpers.inputHelpers.inputMaskZip(this.$('.billing-zip'), 'US');\n\n this.checkingAccountTypeSelectPicker = new PJQ.inputs.Selectpicker({\n el: this.$('select.checking-account-type'),\n isIntChoices: false,\n isMultiple: false,\n mustSelectValue: true,\n defaultValue: PJQ.constants.invoices.checkingAccountType.CHECKING\n });\n\n this.$('.routing-number').inputmask('999999999', {\n placeholder: ''\n });\n\n this.$('.account-number').inputmask('99999999999999999', {\n placeholder: ''\n });\n },\n validateKeyUp: function() {\n return this.validate();\n },\n validate: function(showErrors = false) {\n let isValid = true;\n\n PJQ.helpers.inputHelpers.setInputError(this.$('.agree'), true);\n if (!this.$('.agree').prop('checked')) {\n if (showErrors)\n PJQ.helpers.inputHelpers.setInputError(this.$('.agree'), false);\n\n isValid = false;\n }\n\n if (this.paymentTypeSelectPicker.getValue() === PJQ.constants.invoices.paymentType.CREDIT_CARD_PAYSIMPLE) {\n PJQ.helpers.inputHelpers.setInputError(this.$('.cardholder-name'), true);\n if (!_.size(this.$('.cardholder-name').val().trim())) {\n if (showErrors)\n PJQ.helpers.inputHelpers.setInputError(this.$('.cardholder-name'), false);\n isValid = false;\n }\n\n PJQ.helpers.inputHelpers.setInputError(this.$('.card-number'), true);\n if (_.size(this.$('.card-number').val().trim()) < 16) {\n if (showErrors)\n PJQ.helpers.inputHelpers.setInputError(this.$('.card-number'), false);\n isValid = false;\n }\n\n PJQ.helpers.inputHelpers.setInputError(this.$('.cvv'), true);\n if (_.size(this.$('.cvv').val().trim()) < 3) {\n if (showErrors)\n PJQ.helpers.inputHelpers.setInputError(this.$('.cvv'), false);\n isValid = false;\n }\n\n PJQ.helpers.inputHelpers.setInputError(this.$('.billing-zip'), true);\n if (!PJQ.helpers.validators.validateZip(this.$('.billing-zip').val())) {\n if (showErrors)\n PJQ.helpers.inputHelpers.setInputError(this.$('.billing-zip'), false);\n isValid = false;\n }\n }\n else if (this.paymentTypeSelectPicker.getValue() === PJQ.constants.invoices.paymentType.ACH_PAYSIMPLE) {\n PJQ.helpers.inputHelpers.setInputError(this.$('.account-holder'), true);\n if (!_.size(this.$('.account-holder').val().trim())) {\n if (showErrors)\n PJQ.helpers.inputHelpers.setInputError(this.$('.account-holder'), false);\n isValid = false;\n }\n\n PJQ.helpers.inputHelpers.setInputError(this.$('.routing-number'), true);\n if (_.size(this.$('.routing-number').val().trim()) < 9) {\n if (showErrors)\n PJQ.helpers.inputHelpers.setInputError(this.$('.routing-number'), false);\n isValid = false;\n }\n\n PJQ.helpers.inputHelpers.setInputError(this.$('.account-number'), true);\n if (_.size(this.$('.account-number').val().trim()) < 14) {\n if (showErrors)\n PJQ.helpers.inputHelpers.setInputError(this.$('.account-number'), false);\n isValid = false;\n }\n }\n\n this.$('.pay').prop('disabled', !isValid);\n\n return isValid;\n },\n pay: function() {\n if (!this.validate(true))\n return;\n\n this.$('.pay').prop('disabled', true);\n\n let data = {\n context: this.options.invoice.get('context')\n };\n\n if (this.paymentTypeSelectPicker.getValue() === PJQ.constants.invoices.paymentType.CREDIT_CARD_PAYSIMPLE) {\n data.card = {\n cardholderName: this.$('.cardholder-name').val().trim(),\n cardNumber: this.$('.card-number').val().trim(),\n expirationMonth: this.expirationMonthSelectPicker.getValue(),\n expirationYear: this.expirationYearSelectPicker.getValue(),\n cVV: this.$('.cvv').val().trim(),\n billingZip: this.$('.billing-zip').val()\n };\n } else if (this.paymentTypeSelectPicker.getValue() === PJQ.constants.invoices.paymentType.ACH_PAYSIMPLE) {\n data.bankAccount = {\n accountType: this.checkingAccountTypeSelectPicker.getValue(),\n accountHolder: this.$('.account-holder').val().trim(),\n routingNumber: this.$('.routing-number').val().trim(),\n accountNumber: this.$('.account-number').val().trim()\n };\n }\n\n new PJQ.ajax.Request({\n endpoint: PJQ.helpers.urlHelpers.generateEndpoint([\n {\n endpoint: 'invoices',\n value: this.options.invoice.get('invoiceId')\n },\n {\n endpoint: 'pay'\n }\n ]),\n isAPIv2: true,\n data: data\n }).post().done(_.bind(function (data) {\n if (typeof this.options.onPay === 'function') {\n this.options.onPay();\n }\n this.removeModal();\n }, this)).fail(_.bind(function(data) {\n this.$('.pay').prop('disabled', true);\n new PJQ.views.BaseModal({\n header: \"Payment Error\",\n body: \"Your payment could not be processed:
\" + (data.responseText ? data.responseText : 'Unhandled Error') + '

' + 'Call 877-219-9777 if you need assistance with your payment.'\n });\n }, this));\n },\n viewTerms: function() {\n new PJQ.views.invoices.InvoicePaymentTermsModal({\n terms: this.options.integrationSettings.getTerms()\n });\n }\n});\n\nPJQ.views.invoices.InvoiceSettingsModal = PJQ.views.BaseModal.extend({\n defaults: {\n template: new PJQ.templating.Template(PJQ.constants.modules.INVOICES, 'modal-invoice-settings'),\n minWidth: '1000px',\n },\n events: {\n 'change .select-column': 'columnSelected',\n 'click .btn-edit-company-default': 'editCompanySettings',\n 'click .payment-terms-override': 'paymentTermsOverride',\n 'click .payment-terms-revert': 'paymentTermsRevert',\n 'click .payment-processing-terms-override': 'paymentProcessingTermsOverride',\n 'click .payment-processing-terms-revert': 'paymentProcessingTermsRevert',\n 'click button.settings-save': 'onSave'\n },\n beforeModalCreated: function () {\n this.userSettings = this.options.invoicesView.userSettings;\n },\n beforeRender: function () {\n // copy userSettings for our UI; we only update global userSettings object on save.\n this.options.userSettings = [];\n this.options.defaultView = this.userSettings.get('defaultView');\n this.options.defaultDateRange = this.userSettings.get('defaultDateRange');\n _.each(this.userSettings.attributes.viewSettings, _.bind(function (setting) {\n\n let columns = this.options.invoicesView.getDataTableInstance({\n view: setting.view,\n settings: this.userSettings.getSettings(setting.view)\n }).getColumns(true),\n selectedColumns = (_.size(setting.columns) > 0) ? setting.columns : setting.columnsDefault;\n _.each(columns, _.bind(function (column) {\n column.visible = selectedColumns.indexOf(column.columnData) !== -1\n }, this));\n\n this.options.userSettings.push({\n view: setting.view,\n rowsPerPage: setting.rowsPerPage,\n columns: columns\n });\n }, this));\n },\n renderData: function () {\n return {\n userSettings: this.userSettings,\n settings: this.options.settings,\n canEdit: PJQ.app.session.hasPermission('invoices.isAdmin')\n }\n },\n afterRender: function () {\n\n new PJQ.inputs.Selectpicker({\n el: this.$('select.select-view-default'),\n defaultValue: this.options.defaultView,\n onChange: _.bind(function (value) {\n this.options.defaultView = value;\n }, this)\n\n });\n\n new PJQ.inputs.Selectpicker({\n el: this.$('select.select-date-range-default'),\n defaultValue: this.options.defaultDateRange,\n onChange: _.bind(function (value) {\n this.options.defaultDateRange = value;\n }, this)\n\n });\n\n new PJQ.inputs.Selectpicker({\n el: this.$('select.select-view'),\n defaultValue: this.options.invoicesView.dataTable.options.view,\n onChange: _.bind(function (value) {\n this.selectView(value);\n }, this)\n });\n\n this.rowsPerPage = new PJQ.inputs.Selectpicker({\n el: this.$('select.rows-per-page'),\n isIntChoices: true,\n onChange: _.bind(function (value) {\n this.currentView.rowsPerPage = value;\n }, this)\n\n });\n this.selectView(this.options.invoicesView.dataTable.options.view);\n\n this.statePicker = new PJQ.inputs.Selectpicker({\n el: this.$('.payee-state'),\n noneSelectedText: 'Select State',\n defaultValue: _.size(this.options.settings.get('customSettings').payee.state) > 0 ? this.options.settings.get('customSettings').payee.state.toLowerCase() : null,\n onChange: _.bind(function (value) {\n this.options.settings.get('customSettings').payee.state = value.toUpperCase();\n }, this)\n });\n this.countryChanged();\n\n this.countryPicker = new PJQ.inputs.Selectpicker({\n el: this.$('.payee-country'),\n noneSelectedText: 'Select Country',\n defaultValue: _.size(this.options.settings.get('customSettings').payee.country) > 0 ? this.options.settings.get('customSettings').payee.country.toLowerCase() : 'us',\n onChange: _.bind(function (value) {\n this.options.settings.get('customSettings').payee.country = value.toUpperCase();\n this.options.settings.get('customSettings').payee.zip = '';\n this.options.settings.get('customSettings').payee.state = '';\n this.countryChanged();\n }, this)\n });\n\n PJQ.helpers.inputHelpers.inputMaskPhone(this.$('input.payee-phone'));\n PJQ.helpers.inputHelpers.inputMaskPhone(this.$('input.payee-fax'));\n\n if (_.size(this.options.settings.get('customSettings').paymentTerms) > 0) {\n this.$('.payment-terms').val(this.options.settings.get('customSettings').paymentTerms).prop('disabled', false);\n this.$('.payment-terms-revert').removeClass('hidden');\n this.$('.payment-terms-override').addClass('hidden');\n }\n else {\n this.$('.payment-terms').val(this.options.settings.get('defaultSettings').paymentTerms).prop('disabled', true);\n this.$('.payment-terms-revert').addClass('hidden');\n this.$('.payment-terms-override').removeClass('hidden');\n }\n\n if (_.size(this.options.settings.get('customSettings').paymentProcessingTerms) > 0) {\n this.$('.payment-processing-terms').val(this.options.settings.get('customSettings').paymentProcessingTerms).prop('disabled', false);\n this.$('.payment-processing-terms-revert').removeClass('hidden');\n this.$('.payment-processing-terms-override').addClass('hidden');\n }\n else {\n this.$('.payment-processing-terms').val(this.options.settings.get('defaultSettings').paymentProcessingTerms).prop('disabled', true);\n this.$('.payment-processing-terms-revert').addClass('hidden');\n this.$('.payment-processing-terms-override').removeClass('hidden');\n }\n\n },\n editCompanySettings: function () {\n this.userSettings = new PJQ.models.invoices.InvoiceUserSettings(null, {\n forCompany: true\n });\n this.userSettings.fetch({\n success: _.bind(function () {\n this.render();\n }, this)\n });\n },\n selectView: function (view) {\n this.currentView = _.find(this.options.userSettings, _.bind(function (setting) {\n return setting.view === view;\n }, this));\n\n this.rowsPerPage.setValue(this.currentView.rowsPerPage);\n\n if (this.dataTable) {\n this.dataTable.undelegateEvents();\n $(this.dataTable.el).empty();\n }\n\n this.dataTable = new PJQ.views.dataTables.DataTable({\n el: this.$('div.select-columns-datatable'),\n data: this.currentView.columns,\n isHideSearch: true,\n pageLength: 6,\n order: [],\n columns: [\n {\"data\": \"title\", \"title\": \"Column\", \"orderable\": false},\n {\n \"data\": \"visible\",\n \"title\": \"Show\",\n \"orderable\": false,\n \"searchable\": false,\n \"render\": _.bind(function (data) {\n return ('
');\n }, this),\n \"width\": '10%'\n }\n ],\n dom: '<\"top\"<\"clear\">>rt<\"bottom\"p<\"clear\">>'\n });\n },\n columnSelected: function (sender) {\n this.dataTable.dataTable.row($(sender.currentTarget).closest('tr')).data().visible = $(sender.currentTarget).prop('checked');\n },\n onSave: function () {\n let isValid = true;\n\n PJQ.helpers.inputHelpers.setInputError(this.$('.payee-companyname, .payee-contactname, .payee-address1, .payee-city, .payee-zip, .payee-country, .payee-phone, .payee-email, .payment-terms, .payment-processing-terms'), true);\n PJQ.helpers.inputHelpers.setInputError(this.$('.payee-state'), true);\n if (!this.$('.payee-companyname').val()) {\n PJQ.helpers.inputHelpers.setInputError(this.$('.payee-companyname'), false);\n isValid = false;\n }\n if (!this.$('.payee-contactname').val()) {\n PJQ.helpers.inputHelpers.setInputError(this.$('.payee-contactname'), false);\n isValid = false;\n }\n if (!this.$('.payee-address1').val()) {\n PJQ.helpers.inputHelpers.setInputError(this.$('.payee-address1'), false);\n isValid = false;\n }\n if (!this.$('.payee-city').val()) {\n PJQ.helpers.inputHelpers.setInputError(this.$('.payee-city'), false);\n isValid = false;\n }\n if (!this.statePicker.getValue()) {\n PJQ.helpers.inputHelpers.setInputError(this.$('.payee-state'), false);\n isValid = false;\n }\n if (!this.$('.payee-zip').val()) {\n PJQ.helpers.inputHelpers.setInputError(this.$('.payee-zip'), false);\n isValid = false;\n }\n if (!this.countryPicker.getValue()) {\n PJQ.helpers.inputHelpers.setInputError(this.$('.payee-country'), false);\n isValid = false;\n }\n if (!this.$('.payee-phone').val()) {\n PJQ.helpers.inputHelpers.setInputError(this.$('.payee-phone'), false);\n isValid = false;\n }\n if (!this.$('.payee-email').val() || !PJQ.helpers.validators.validateEmail(this.$('.payee-email').val()).success) {\n PJQ.helpers.inputHelpers.setInputError(this.$('.payee-email'), false);\n isValid = false;\n }\n\n if (!this.$('.payment-terms').prop('disabled') && _.size(this.$('.payment-terms').val().trim()) === 0) {\n PJQ.helpers.inputHelpers.setInputError(this.$('.payment-terms'), false);\n isValid = false;\n }\n\n if (!this.$('.payment-processing-terms').prop('disabled') && _.size(this.$('.payment-processing-terms').val().trim()) === 0) {\n PJQ.helpers.inputHelpers.setInputError(this.$('.payment-processing-terms'), false);\n isValid = false;\n }\n\n if (!isValid)\n return;\n\n this.options.settings.get('customSettings').payee.companyName = this.$('.payee-companyname').val().trim();\n this.options.settings.get('customSettings').payee.contactName = this.$('.payee-contactname').val().trim();\n this.options.settings.get('customSettings').payee.address1 = this.$('.payee-address1').val().trim();\n this.options.settings.get('customSettings').payee.address2 = this.$('.payee-address2').val().trim();\n this.options.settings.get('customSettings').payee.city = this.$('.payee-city').val().trim();\n this.options.settings.get('customSettings').payee.zip = this.$('.payee-zip').val().trim();\n this.options.settings.get('customSettings').payee.phone = PJQ.helpers.formatHelpers.numbersOnly(this.$('.payee-phone').val().trim());\n this.options.settings.get('customSettings').payee.phoneExtension = this.$('.payee-phone-ext').val().trim();\n this.options.settings.get('customSettings').payee.fax = PJQ.helpers.formatHelpers.numbersOnly(this.$('.payee-fax').val().trim());\n this.options.settings.get('customSettings').payee.email = this.$('.payee-email').val().trim();\n this.options.settings.get('customSettings').paymentTerms = this.$('.payment-terms').prop('disabled') ? '' : this.$('.payment-terms').val().trim();\n this.options.settings.get('customSettings').paymentProcessingTerms = this.$('.payment-processing-terms').prop('disabled') ? '' : this.$('.payment-processing-terms').val().trim();\n\n let fnOnSave = _.bind(function () {\n if (typeof this.options.onSave === 'function')\n this.options.onSave();\n this.removeModal();\n }, this);\n\n this.userSettings.set('defaultView', this.options.defaultView);\n this.userSettings.set('defaultDateRange', this.options.defaultDateRange);\n\n _.each(this.options.userSettings, _.bind(function (settingTemp) {\n _.each(this.userSettings.get('viewSettings'), _.bind(function (setting) {\n if (settingTemp.view === setting.view) {\n setting.rowsPerPage = settingTemp.rowsPerPage;\n\n let columns = _.size(setting.columns) > 0 ? setting.columns.slice() : setting.columnsDefault.slice();\n\n // update columns\n _.each(settingTemp.columns, _.bind(function (column) {\n if (column.visible) {\n if (columns.indexOf(column.columnData) === -1)\n columns.push(column.columnData);\n }\n else {\n if (columns.indexOf(column.columnData) !== -1)\n columns = _.filter(columns, _.bind(function (columnTemp) {\n return columnTemp != column.columnData;\n }, this));\n }\n }, this));\n\n setting.columns = columns;\n }\n }, this));\n }, this));\n\n this.options.settings.save(null, {\n success: _.bind(function() {\n this.userSettings.save(null, {\n success: _.bind(function () {\n this.userSettings.set('defaultView', this.options.defaultView);\n fnOnSave();\n }, this)\n });\n }, this)\n });\n },\n countryChanged: function() {\n let country = this.options.settings.get('customSettings').payee.country && this.options.settings.get('customSettings').payee.country.length > 0 ? this.options.settings.get('customSettings').payee.country.toLowerCase() : 'us',\n options = '';\n _.each(PJQ.constants.states[country], function (state) {\n options += '';\n });\n this.statePicker.$el.html(options);\n this.statePicker.refresh();\n if ( this.options.settings.get('customSettings').payee.state)\n this.statePicker.setValue( this.options.settings.get('customSettings').payee.state.toLowerCase());\n\n PJQ.helpers.inputHelpers.inputMaskZip(this.$('.payee-zip'), country);\n },\n paymentTermsOverride: function() {\n this.$('.payment-terms').val('').prop('disabled', false);\n this.$('.payment-terms-revert').removeClass('hidden');\n this.$('.payment-terms-override').addClass('hidden');\n this.$('.payment-terms').focus();\n },\n paymentTermsRevert: function () {\n this.$('.payment-terms').val(this.options.settings.get('defaultSettings').paymentTerms).prop('disabled', true);\n this.$('.payment-terms-revert').addClass('hidden');\n this.$('.payment-terms-override').removeClass('hidden');\n },\n paymentProcessingTermsOverride: function() {\n this.$('.payment-processing-terms').val('').prop('disabled', false);\n this.$('.payment-processing-terms-revert').removeClass('hidden');\n this.$('.payment-processing-terms-override').addClass('hidden');\n this.$('.payment-processing-terms').focus();\n },\n paymentProcessingTermsRevert: function () {\n this.$('.payment-processing-terms').val(this.options.settings.get('defaultSettings').paymentProcessingTerms).prop('disabled', true);\n this.$('.payment-processing-terms-revert').addClass('hidden');\n this.$('.payment-processing-terms-override').removeClass('hidden');\n }\n});\n\nPJQ.views.invoices.ViewNotificationsModal = PJQ.views.BaseModal.extend({\n defaults: {\n template: new PJQ.templating.Template(PJQ.constants.modules.INVOICES, 'modal-invoice-notifications'),\n width: 700,\n minWidth: 700\n },\n beforeRender: function() {\n if (this.data == null) {\n this.data = new PJQ.collections.invoices.Notifications(null, {invoiceId: this.options.invoiceId});\n this.data.fetch({\n success: _.bind(function () {\n this.isFetched = true;\n this.render();\n }, this)\n });\n }\n },\n afterRender: function() {\n if (!this.isFetched)\n return;\n\n new PJQ.views.dataTables.DataTable({\n el: this.$('.list-data'),\n pageLength: 999999,\n isHideSearch: true,\n data: this.data.models,\n dom: 't',\n order: [],\n columns: [\n {\n \"title\": \"Date\",\n \"width\": '90px',\n \"orderable\": false,\n \"render\": _.bind(function (data, type, row) {\n return PJQ.helpers.dateHelpers.getDateString(new Date(row.get('createdOn')), PJQ.helpers.dateHelpers.dateFormats.DATE_TIME);\n }, this)\n },\n {\n \"title\": 'Type',\n \"orderable\": false,\n \"render\": _.bind(function (data, type, row) {\n return PJQ.constants.invoices.notificationTypeNames[row.get('notificationTypeId')];\n }, this)\n },\n {\n \"data\": \"attributes.email\",\n \"orderable\": false,\n \"title\": \"Email\"\n },\n {\n \"orderable\": false,\n \"title\": \"Status\",\n \"width\": \"100px\",\n \"render\": _.bind(function (data, type, row) {\n return '' + row.get('broadcastStatus') + '';\n }, this)\n }\n ]\n });\n }\n});\n\nPJQ.views.invoices.ViewTransactionsModal = PJQ.views.BaseModal.extend({\n defaults: {\n template: new PJQ.templating.Template(PJQ.constants.modules.INVOICES, 'modal-invoice-transactions'),\n width: 600,\n minWidth: 600\n },\n beforeRender: function() {\n if (this.data == null) {\n this.data = new PJQ.collections.invoices.Transactions(null, {invoiceId: this.options.invoiceId});\n this.data.fetch({\n success: _.bind(function () {\n this.isFetched = true;\n this.render();\n }, this)\n });\n }\n },\n afterRender: function() {\n if (!this.isFetched)\n return;\n\n new PJQ.views.dataTables.DataTable({\n el: this.$('.list-data'),\n pageLength: 999999,\n isHideSearch: true,\n data: this.data.models,\n dom: 't',\n order: [],\n columns: [\n {\n \"title\": \"Date\",\n \"width\": '90px',\n \"orderable\": false,\n \"render\": _.bind(function (data, type, row) {\n return PJQ.helpers.dateHelpers.getDateString(new Date(row.get('createdOn')), PJQ.helpers.dateHelpers.dateFormats.DATE_TIME);\n }, this)\n },\n {\n \"title\": 'Type',\n \"width\": '100px',\n \"orderable\": false,\n \"render\": _.bind(function (data, type, row) {\n return PJQ.constants.invoices.transactionTypeNames[row.get('transactionTypeId')];\n }, this)\n },\n {\n \"width\": '100px',\n \"title\": 'Method',\n \"orderable\": false,\n \"render\": _.bind(function (data, type, row) {\n return PJQ.constants.invoices.paymentTypeNames[row.get('paymentTypeId')];\n }, this)\n },\n {\n \"data\": \"attributes.last4\",\n \"width\": '60px',\n \"orderable\": false,\n \"title\": \"Last 4\"\n },\n {\n \"title\": 'Amount',\n \"width\": '120px',\n \"className\": \"text-align-right\",\n \"orderable\": false,\n \"render\": _.bind(function (data, type, row) {\n return PJQ.helpers.formatHelpers.formatCurrency(row.get('amount'));\n }, this)\n }\n\n ]\n });\n }\n});\n\nPJQ.views.invoices.InvoicePreview = PJQ.views.BaseView.extend({\n defaults: {\n template: new PJQ.templating.Template(PJQ.constants.modules.INVOICES, 'invoice-preview')\n },\n});"]}