import React from 'react'; import ReactDOM from 'react-dom'; import { Space, Tag } from 'antd'; import ReactModalAdapterBase from '../../../../web/api/ReactModalAdapterBase'; import { EditOutlined, DeleteOutlined, CopyOutlined, MonitorOutlined, PrinterOutlined, } from '@ant-design/icons'; /** * VatInvoiceAdapter */ class InvoiceAdapter extends ReactModalAdapterBase { getDataMapping() { return [ 'id', 'paymentId', 'invoiceId', 'description', 'buyerName', 'buyerAddress', 'buyerPostalAddress', 'buyerVatId', 'buyerEmail', 'sellerName', 'sellerAddress', 'sellerVatId', 'amount', 'vat', 'vatRate', 'issuedDate', 'dueDate', 'paidDate', 'status', 'acceptPayments', 'created', 'updated', 'link', 'paymentLink' ]; } getHeaders() { return [ { sTitle: 'ID', bVisible: false }, { sTitle: 'Payment Id' }, { sTitle: 'Invoice ID' }, { sTitle: 'Description' }, { sTitle: 'Buyer Name' }, { sTitle: 'Buyer Address' }, { sTitle: 'Buyer Postal Code' }, { sTitle: 'Buyer Country' }, { sTitle: 'Buyer Vat Id' }, { sTitle: 'Buyer Email' }, { sTitle: 'Seller Name' }, { sTitle: 'Seller Country' }, { sTitle: 'Seller Vat Id' }, { sTitle: 'Amount' }, { sTitle: 'Vat' }, { sTitle: 'Vat Rate' }, { sTitle: 'Issued Date' }, { sTitle: 'Paid Date' }, { sTitle: 'Status' }, { sTitle: 'Accept Payments' }, { sTitle: 'Created' }, { sTitle: 'Updated' }, { sTitle: 'Link' }, { sTitle: 'Payment Link' }, ]; } getCountryList() { return [ ['DE', 'Germany'], ['LK', 'Sri Lanka'], ]; } getFormFields() { return [ [ 'id', {"label":"ID","type":"hidden"}], [ 'paymentId', {"label":"Payment Id","type":"text","validation":"int"}], [ 'invoiceId', {"label":"Invoice Id","type":"text","validation":"int"}], [ 'description', {"label":"Description","type":"textarea","validation":"none"}], [ 'buyerName', {"label":"Buyer Name","type":"text"}], [ 'buyerAddress', {"label":"Buyer Address","type":"textarea"}], [ 'buyerPostalCode', {"label":"Buyer Postal Code","type":"text"}], [ 'buyerCountry', {"label":"Buyer Country","type":"select2", "remote-source": ["Country", "code", "name"]}], [ 'buyerVatId', {"label":"Buyer Vat Id","type":"text","validation":"none"}], [ 'buyerEmail', {"label":"Buyer Email","type":"text","validation":"email"}], [ 'sellerName', {"label":"Seller Name","type":"text"}], [ 'sellerAddress', {"label":"Seller Address","type":"text"}], [ 'sellerCountry', {"label":"Seller Country","type":"select2", "remote-source": ["Country", "code", "name"]}], [ 'sellerVatId', {"label":"Seller Vat Id","type":"text"}], [ 'amount', {"label":"Amount with VAT","type":"text", "validation":"float"}], [ 'vat', {"label":"Vat","type":"text", "validation":"float"}], [ 'vatRate', {"label":"Vat Rate","type":"text", "validation":"float"}], [ 'issuedDate', {"label":"Issued Date","type":"datetime", "validation":""}], [ 'dueDate', {"label":"Due Date","type":"datetime", "validation":""}], [ 'paidDate', {"label":"Paid Date","type":"datetime", "validation":""}], [ 'status', {"label":"Status","type":"select","source":[["Pending","Pending"],["Paid","Paid"],["Processing","Processing"],["Draft","Draft"],["Sent","Sent"],["Canceled","Canceled"]]}], [ 'acceptPayments', {"label":"Accept Payments","type":"select","source":[["0","No"],["1","Yes"]]}], [ 'created', {"label":"Created","type":"datetime", "validation":""}], [ 'updated', {"label":"Updated","type":"datetime", "validation":""}], [ 'link', {"label":"Link","type":"placeholder"}], [ 'paymentLink', {"label":"Payment Link","type":"placeholder"}], ['items', { label: 'Items', type: 'datagroup', form: [ ['description', { label: 'Description', type: 'textarea', validation: '' }], ['rate', { label: 'Rate', type: 'text', validation: '' }], ['qty', { label: 'Quantity', type: 'text', validation: '' }], ['lineTotal', { label: 'Line Total', type: 'text', validation: '' }], ], html: '
#_delete_##_edit_#Date: #_date_#
#_note_#
', validation: 'none', columns: [ { title: 'Description', dataIndex: 'description', key: 'description', }, { title: 'Rate', dataIndex: 'rate', key: 'rate', }, { title: 'Quantity', dataIndex: 'qty', key: 'qty', }, { title: 'Line Total', dataIndex: 'lineTotal', key: 'lineTotal', }, ], 'sort-function': function (a, b) { const t1 = Date.parse(a.date).getTime(); const t2 = Date.parse(b.date).getTime(); return (t1 < t2); }, 'custom-validate-function': function (data) { const res = {}; res.valid = true; data.date = new Date().toString('d-MMM-yyyy hh:mm tt'); res.params = data; return res; }, }], ]; } getTableColumns() { return [ { title: 'Invoice Id', dataIndex: 'invoiceId', sorter: true, }, { title: 'Description', dataIndex: 'description', sorter: true, }, ]; } getTableActionButtonJsx(adapter) { return (text, record) => ( {adapter.hasAccess('save') && adapter.showEdit && ( modJs.edit(record.id)} style={{ cursor: 'pointer' }}> {` ${adapter.gt('Edit')}`} )} {adapter.hasAccess('element') && ( modJs.viewElement(record.id)} style={{ cursor: 'pointer' }}> {` ${adapter.gt('View')}`} )} {adapter.hasAccess('delete') && adapter.showDelete && ( modJs.deleteRow(record.id)} style={{ cursor: 'pointer' }}> {` ${adapter.gt('Delete')}`} )} {adapter.hasAccess('save') && ( modJs.copyRow(record.id)} style={{ cursor: 'pointer' }}> {` ${adapter.gt('Copy')}`} )} modJs.printInvoice(record.id)} style={{ cursor: 'pointer' }}> {` ${adapter.gt('Print')}`} ); } printInvoice(id) { const params = {}; params.id = id; const reqJson = JSON.stringify(params); const callBackData = []; callBackData.callBackData = []; callBackData.callBackSuccess = 'printInvoiceSuccessCallback'; callBackData.callBackFail = 'printInvoiceFailCallback'; this.customAction('printInvoice', 'extension=invoices', reqJson, callBackData); } printInvoiceSuccessCallback(callBackData) { this.showMessage('Success', 'Printing Done'); this.get([]); } printInvoiceFailCallback(callBackData) { this.showMessage('Error', callBackData); } } module.exports ={InvoiceAdapter};