+ Let your customer can attach the proof of payment. +
+Key Highlights +
+User can upload their payment information.
+User can upload both image and pdf files while creating quotation or in the payment screen +
+Displays attached payment
+User can display already uploaded files +
+In the "my account" section.
++ + Initial Commit for Payment Proof Attachment.
+Related Products
+Our Services
+ +Odoo Customization
+Odoo Implementation
+Odoo Support
+Hire Odoo Developer
+Odoo Integration
+Odoo Migration
+Odoo Consultancy
+Odoo Implementation
+Odoo Licensing Consultancy
+Our Industries
+ +Trading
+Easily procure and sell your products
+POS
+Easy configuration and convivial experience
+Education
+A platform for educational management
+Manufacturing
+Plan, track and schedule your operations
+E-commerce & Website
+Mobile friendly, awe-inspiring product pages
+Service Management
+Keep track of services and invoice
+Restaurant
+Run your bar or restaurant methodically
+Hotel Management
+An all-inclusive hotel management application
+Support
+Got questions or need help? Get in touch.
+Say hi to us on WhatsApp!
+There is no attachments for this sale order.
") + } + }) + } +}) diff --git a/payment_proof_attachment/static/src/js/payment_screen.js b/payment_proof_attachment/static/src/js/payment_screen.js new file mode 100755 index 000000000..5df88c041 --- /dev/null +++ b/payment_proof_attachment/static/src/js/payment_screen.js @@ -0,0 +1,85 @@ +/** @odoo-module **/ +import publicWidget from "@web/legacy/js/public/public_widget"; + +publicWidget.registry.PaymentProof = publicWidget.Widget.extend({ + init() { + this.rpc = this.bindService("rpc"); + }, + selector: '.payment_screen', + events: { + 'click #btnShowModal': '_onClickShowModal', + 'click .close_modal': '_onClickCloseModal', + 'change #payment_proof': '_onChangePaymentProof', + 'click #payment_proof_cart_update': '_onClickUpdateAttachment', + 'click #paymentScreenBtnShowReceipt': '_onClickShowReceipt', + 'click #refresh_payment_receipt': '_onClickShowReceipt', + }, + /** + *for closing the modal dialog + */ + _onClickShowModal: function () { + this.el.querySelector('#myModal').style.display = 'block'; + }, + /** + *for closing the modal dialog + */ + _onClickCloseModal: function () { + this.el.querySelector('#myModal').style.display = 'none'; + }, + /** + *getting content from the uploaded file + */ + _onChangePaymentProof: function (ev) { + const files = ev.target.files; + var fileList = []; + for (let i = 0; i < files.length; i++) { + var reader = new FileReader(); + var reader_content = reader.readAsDataURL(files[i]); + reader.onload = function (reader_content) { + var dataURL = reader_content.target.result.split(',')[1]; + var fileName = files[i].name; + fileList.push({ + name: fileName, + content: dataURL + }); + } + } + this.fileList = fileList; + }, + /** + *transfer the content to python in payment screen + */ + _onClickUpdateAttachment: function (ev) { + var self = this; + this.el.querySelector('#myModal').style.display = 'none'; + if (self.fileList) { + this.rpc('/payment_proof/submit', { + 'attachments': this.fileList + }).then(function () { + self.fileList = "" + self.$el.find("#payment_proof").val("") + }); + } + }, + /** + *getting updated attachments + */ + _onClickShowReceipt: function () { + var self = this; + this.$el.find('#updated_receipt').css("display", "block") + this.$el.find('#paymentScreenBtnShowReceipt').css("display", "none") + this.rpc('/my_account_screen/show_updated', {}).then(function (attachment_ids) { + if (attachment_ids.length > 0) { + self.$el.find("#showing_updated_receipt").empty(); + $(attachment_ids).each(function (attachment_id) { + var id = "/web/content/" + attachment_ids[attachment_id]['id'] + var name = attachment_ids[attachment_id]['name'] + self.$el.find('#showing_updated_receipt').append("" + name + "+