diff --git a/foundation/erpnext_foundation/doctype/conference_participant/conference_participant.json b/foundation/erpnext_foundation/doctype/conference_participant/conference_participant.json index 45b736dc..34ae3b6a 100644 --- a/foundation/erpnext_foundation/doctype/conference_participant/conference_participant.json +++ b/foundation/erpnext_foundation/doctype/conference_participant/conference_participant.json @@ -43,7 +43,8 @@ "fieldname": "email", "fieldtype": "Data", "label": "Email", - "options": "Email" + "options": "Email", + "reqd": 1 }, { "fieldname": "conference_details_section", @@ -59,7 +60,8 @@ { "fieldname": "full_conference_tickets", "fieldtype": "Int", - "label": "Full Conference Tickets" + "label": "Full Conference Tickets", + "reqd": 1 }, { "fieldname": "user_conference_tickets", @@ -116,7 +118,7 @@ "options": "\nCxO\nAnalyst\nConsultant\nDeveloper\nSystem Administrator\nOther" } ], - "modified": "2019-08-02 19:07:44.339770", + "modified": "2019-08-05 16:31:57.901437", "modified_by": "Administrator", "module": "ERPNext Foundation", "name": "Conference Participant", diff --git a/foundation/erpnext_foundation/doctype/conference_participant/conference_participant.py b/foundation/erpnext_foundation/doctype/conference_participant/conference_participant.py index b8f99278..5c940cca 100644 --- a/foundation/erpnext_foundation/doctype/conference_participant/conference_participant.py +++ b/foundation/erpnext_foundation/doctype/conference_participant/conference_participant.py @@ -5,6 +5,7 @@ from __future__ import unicode_literals import frappe from frappe.model.document import Document +import json class ConferenceParticipant(Document): def validate(self): @@ -15,4 +16,99 @@ class ConferenceParticipant(Document): def on_payment_authorized(self, status_changed_to=None): self.paid = 1 - self.save(ignore_permissions=True) \ No newline at end of file + self.save(ignore_permissions=True) + + def on_update(self): + transaction = get_integration_request(self.name, self.currency) + if self.paid and transaction: + self.create_and_send_invoice(transaction) + + def create_and_send_invoice(self, transaction): + series = 'BC-19-20-' + rate = '5000' + currency = 'INR' + item_income_account = 'Sales - Event Tickets - EF' + + if transaction.service == 'Paypal': + series = 'EXP-19-20-' + rate = '70' + currency = 'USD' + item_income_account = 'Sales - Event Tickets (International) - EF' + + + invoice = frappe.get_doc({ + 'doctype': 'Sales Invoice', + 'customer': 'ERPNext Conference 2019 Participant', + 'taxes_and_charges': 'In State GST', + 'debit_to': 'Debtors - EF', + 'remarks': json.dumps(transaction), + 'currency': currency, + 'series': series, + 'items': [ + { + 'item_code': 'ERPNext Conference', + 'rate': rate, + 'qty': self.full_conference_tickets, + 'cost_center': 'Conference - EF', + 'income_account': item_income_account, + 'description': self.name + } + ], + 'taxes': [ + { + 'charge_type': 'On Net Total', + 'account_head': 'SGST - EF', + 'description': 'SGST', + 'rate': 9, + 'included_in_print_rate': 1, + }, + { + 'charge_type': 'On Net Total', + 'account_head': 'CGST - EF', + 'description': 'CGST', + 'rate': 9, + 'included_in_print_rate': 1, + } + ] + }) + + invoice.insert() + email_args = { + "recipients": [self.email], + "message": "Thank you for registering for the ERPNext Conference, Attached herewith is the invoice for the ticket.", + "subject": 'Invoice for ERPNext Conference', + "attachments": [frappe.attach_print('Sales Invoice', invoice.name, file_name=invoice.name)], + "reference_doctype": 'Sales Invoice', + "reference_name": invoice.name + } + frappe.sendmail(**email_args) + + + +def get_integration_request(docname, currency): + service = 'Paypal' + transaction_field = 'correlation_id' + if currency == 'INR': + service = 'Razorpay' + transaction_field = 'razorpay_payment_id' + + filters = { + 'reference_doctype': 'Conference Participant', + 'reference_docname': docname, + 'integration_request_service': service, + 'status': ['in', ['Authorized', 'Completed']] + } + + try: + transaction = frappe.get_list('Integration Request', filters=filters, fields=['name', 'data'])[0] + except IndexError: + return None + else: + transaction.data = json.loads(transaction.data) + return frappe._dict({ + 'transaction_id': transaction.data[transaction_field], + 'amount': transaction.data['amount'], + 'name': transaction.name, + 'service': service, + 'ref_ticket': docname, + }) diff --git a/foundation/erpnext_foundation/notification/conference_ticket_confirmation/conference_ticket_confirmation.json b/foundation/erpnext_foundation/notification/conference_ticket_confirmation/conference_ticket_confirmation.json index f973b2b9..685bcab9 100644 --- a/foundation/erpnext_foundation/notification/conference_ticket_confirmation/conference_ticket_confirmation.json +++ b/foundation/erpnext_foundation/notification/conference_ticket_confirmation/conference_ticket_confirmation.json @@ -7,12 +7,12 @@ "docstatus": 0, "doctype": "Notification", "document_type": "Conference Participant", - "enabled": 1, + "enabled": 0, "event": "Save", "idx": 0, "is_standard": 1, "message": "
Dear {{ doc.participant_name }},
\n\nThank you for registering for the 2019 ERPNext Conference!
\n\nHere are your ticket details:
\n\n| Ticket Type | \n\t\tQty | \n\t\tRate | \n\t
|---|---|---|
| Conference Tickets + Lunch + Dinner | \n\t\t{{ doc.full_conference_tickets or 0 }} | \n\t\t{% if doc.currency==\"INR\" %}5000{% else %}70{% endif %} | \n\t
If you need any help, please email us at foundation@erpnext.com
", - "modified": "2019-08-05 13:09:17.385839", + "modified": "2019-08-05 17:21:30.465249", "modified_by": "Administrator", "module": "ERPNext Foundation", "name": "Conference Ticket Confirmation", diff --git a/foundation/erpnext_foundation/web_form/buy_tickets_inr/buy_tickets_inr.json b/foundation/erpnext_foundation/web_form/buy_tickets_inr/buy_tickets_inr.json index 045f4160..6b912460 100644 --- a/foundation/erpnext_foundation/web_form/buy_tickets_inr/buy_tickets_inr.json +++ b/foundation/erpnext_foundation/web_form/buy_tickets_inr/buy_tickets_inr.json @@ -20,7 +20,7 @@ "is_standard": 1, "login_required": 0, "max_attachment_size": 0, - "modified": "2019-08-02 20:42:18.541094", + "modified": "2019-08-05 16:32:20.478032", "modified_by": "Administrator", "module": "ERPNext Foundation", "name": "buy-tickets-inr", @@ -73,7 +73,7 @@ "max_value": 0, "options": "Email", "read_only": 0, - "reqd": 0, + "reqd": 1, "show_in_filter": 0 }, { @@ -86,7 +86,7 @@ "max_length": 0, "max_value": 0, "read_only": 0, - "reqd": 0, + "reqd": 1, "show_in_filter": 0 }, {