Merge pull request #1985 from ankitjavalkarwork/payrec

Remove Payment To Invoice Matching Tool
diff --git a/erpnext/accounts/doctype/payment_to_invoice_matching_tool/README.md b/erpnext/accounts/doctype/payment_to_invoice_matching_tool/README.md
deleted file mode 100644
index bcde4b3..0000000
--- a/erpnext/accounts/doctype/payment_to_invoice_matching_tool/README.md
+++ /dev/null
@@ -1 +0,0 @@
-Tool for mapping (cancelling) unpaid invoices and payments.
\ No newline at end of file
diff --git a/erpnext/accounts/doctype/payment_to_invoice_matching_tool/__init__.py b/erpnext/accounts/doctype/payment_to_invoice_matching_tool/__init__.py
deleted file mode 100644
index baffc48..0000000
--- a/erpnext/accounts/doctype/payment_to_invoice_matching_tool/__init__.py
+++ /dev/null
@@ -1 +0,0 @@
-from __future__ import unicode_literals
diff --git a/erpnext/accounts/doctype/payment_to_invoice_matching_tool/payment_to_invoice_matching_tool.js b/erpnext/accounts/doctype/payment_to_invoice_matching_tool/payment_to_invoice_matching_tool.js
deleted file mode 100644
index 4c5a382..0000000
--- a/erpnext/accounts/doctype/payment_to_invoice_matching_tool/payment_to_invoice_matching_tool.js
+++ /dev/null
@@ -1,51 +0,0 @@
-// Copyright (c) 2013, Web Notes Technologies Pvt. Ltd. and Contributors
-// License: GNU General Public License v3. See license.txt
-
-cur_frm.cscript.onload_post_render = function(doc) {
-	$(cur_frm.get_field("reconcile").input).addClass("btn-info");
-}
-
-cur_frm.fields_dict.voucher_no.get_query = function(doc) {
-	// TO-do: check for pos, it should not come
-	if (!doc.account) msgprint(__("Please select Account first"));
-	else {
-		return {
-			doctype: doc.voucher_type,
-			query: "erpnext.accounts.doctype.payment_to_invoice_matching_tool.payment_to_invoice_matching_tool.get_voucher_nos",
-			filters: {
-				"voucher_type": doc.voucher_type,
-				"account": doc.account
-			}
-		}
-	}
-}
-
-cur_frm.cscript.voucher_no  = function() {
-	return cur_frm.call({
-		doc: cur_frm.doc,
-		method: "get_voucher_details"
-	});
-}
-
-cur_frm.cscript.get_against_entries  = function() {
-	return cur_frm.call({
-		doc: cur_frm.doc,
-		method: "get_against_entries"
-	});
-}
-
-cur_frm.cscript.reconcile  = function() {
-	return cur_frm.call({
-		doc: cur_frm.doc,
-		method: "reconcile"
-	});
-}
-
-cur_frm.cscript.allocated_amount = function(doc, cdt, cdn) {
-	var total_allocated_amount = 0
-	$.each(cur_frm.doc.against_entries, function(i, d) {
-		if(d.allocated_amount > 0) total_allocated_amount += flt(d.allocated_amount);
-		else if (d.allocated_amount < 0) frappe.throw(__("Allocated amount can not be negative"));
-	})
-	cur_frm.set_value("total_allocated_amount", total_allocated_amount);
-}
diff --git a/erpnext/accounts/doctype/payment_to_invoice_matching_tool/payment_to_invoice_matching_tool.json b/erpnext/accounts/doctype/payment_to_invoice_matching_tool/payment_to_invoice_matching_tool.json
deleted file mode 100644
index 8d12f08..0000000
--- a/erpnext/accounts/doctype/payment_to_invoice_matching_tool/payment_to_invoice_matching_tool.json
+++ /dev/null
@@ -1,187 +0,0 @@
-{
- "creation": "2013-01-30 12:49:46", 
- "docstatus": 0, 
- "doctype": "DocType", 
- "document_type": "Other", 
- "fields": [
-  {
-   "fieldname": "account", 
-   "fieldtype": "Link", 
-   "in_list_view": 0, 
-   "label": "Account", 
-   "options": "Account", 
-   "permlevel": 0, 
-   "reqd": 1
-  }, 
-  {
-   "default": "Journal Voucher", 
-   "fieldname": "voucher_type", 
-   "fieldtype": "Select", 
-   "in_list_view": 0, 
-   "label": "Voucher Type", 
-   "options": "Sales Invoice\nPurchase Invoice\nJournal Voucher", 
-   "permlevel": 0, 
-   "reqd": 1
-  }, 
-  {
-   "fieldname": "voucher_no", 
-   "fieldtype": "Link", 
-   "in_list_view": 1, 
-   "label": "Voucher No", 
-   "options": "[Select]", 
-   "permlevel": 0, 
-   "reqd": 1
-  }, 
-  {
-   "fieldname": "column_break1", 
-   "fieldtype": "Column Break", 
-   "in_list_view": 0, 
-   "permlevel": 0, 
-   "print_width": "50%", 
-   "width": "50%"
-  }, 
-  {
-   "fieldname": "total_amount", 
-   "fieldtype": "Currency", 
-   "in_list_view": 1, 
-   "label": "Total Amount", 
-   "options": "", 
-   "permlevel": 0, 
-   "read_only": 1
-  }, 
-  {
-   "fieldname": "unmatched_amount", 
-   "fieldtype": "Currency", 
-   "label": "Unmatched Amount", 
-   "options": "", 
-   "permlevel": 0, 
-   "read_only": 1
-  }, 
-  {
-   "fieldname": "against_entries_section", 
-   "fieldtype": "Section Break", 
-   "label": "Against Entries", 
-   "permlevel": 0
-  }, 
-  {
-   "fieldname": "from_date", 
-   "fieldtype": "Date", 
-   "label": "From Date", 
-   "permlevel": 0
-  }, 
-  {
-   "fieldname": "to_date", 
-   "fieldtype": "Date", 
-   "label": "To Date", 
-   "permlevel": 0
-  }, 
-  {
-   "fieldname": "column_break3", 
-   "fieldtype": "Column Break", 
-   "label": "", 
-   "permlevel": 0, 
-   "print_width": "50%", 
-   "width": "50%"
-  }, 
-  {
-   "fieldname": "amt_greater_than", 
-   "fieldtype": "Currency", 
-   "label": "Amount >=", 
-   "permlevel": 0
-  }, 
-  {
-   "fieldname": "amt_less_than", 
-   "fieldtype": "Currency", 
-   "label": "Amount <=", 
-   "permlevel": 0
-  }, 
-  {
-   "fieldname": "section_break0", 
-   "fieldtype": "Section Break", 
-   "options": "Simple", 
-   "permlevel": 0
-  }, 
-  {
-   "fieldname": "get_against_entries", 
-   "fieldtype": "Button", 
-   "label": "Get Against Entries", 
-   "options": "", 
-   "permlevel": 0
-  }, 
-  {
-   "description": "Update allocated amount in the above table and then click \"Allocate\" button", 
-   "fieldname": "against_entries", 
-   "fieldtype": "Table", 
-   "label": "Against Entries", 
-   "options": "Payment to Invoice Matching Tool Detail", 
-   "permlevel": 0
-  }, 
-  {
-   "fieldname": "sec_break1", 
-   "fieldtype": "Section Break", 
-   "options": "Simple", 
-   "permlevel": 0
-  }, 
-  {
-   "fieldname": "total_allocated_amount", 
-   "fieldtype": "Currency", 
-   "label": "Total Allocated Amount", 
-   "permlevel": 0, 
-   "read_only": 1
-  }, 
-  {
-   "fieldname": "col_breal4", 
-   "fieldtype": "Column Break", 
-   "permlevel": 0
-  }, 
-  {
-   "default": "", 
-   "fieldname": "allocate_amount_automatically", 
-   "fieldtype": "Button", 
-   "hidden": 1, 
-   "label": "Allocate Amount Automatically", 
-   "permlevel": 0, 
-   "reqd": 0
-  }, 
-  {
-   "fieldname": "reconcile", 
-   "fieldtype": "Button", 
-   "label": "Reconcile", 
-   "options": "", 
-   "permlevel": 0
-  }
- ], 
- "hide_toolbar": 0, 
- "icon": "icon-magic", 
- "idx": 1, 
- "issingle": 1, 
- "modified": "2014-04-30 17:11:05.908619", 
- "modified_by": "Administrator", 
- "module": "Accounts", 
- "name": "Payment to Invoice Matching Tool", 
- "owner": "Administrator", 
- "permissions": [
-  {
-   "create": 1, 
-   "email": 1, 
-   "permlevel": 0, 
-   "print": 1, 
-   "read": 1, 
-   "report": 0, 
-   "role": "Accounts Manager", 
-   "submit": 0, 
-   "write": 1
-  }, 
-  {
-   "create": 1, 
-   "email": 1, 
-   "permlevel": 0, 
-   "print": 1, 
-   "read": 1, 
-   "report": 0, 
-   "role": "Accounts User", 
-   "submit": 0, 
-   "write": 1
-  }
- ]
-}
\ No newline at end of file
diff --git a/erpnext/accounts/doctype/payment_to_invoice_matching_tool/payment_to_invoice_matching_tool.py b/erpnext/accounts/doctype/payment_to_invoice_matching_tool/payment_to_invoice_matching_tool.py
deleted file mode 100644
index 300d25e..0000000
--- a/erpnext/accounts/doctype/payment_to_invoice_matching_tool/payment_to_invoice_matching_tool.py
+++ /dev/null
@@ -1,173 +0,0 @@
-# Copyright (c) 2013, Web Notes Technologies Pvt. Ltd. and Contributors
-# License: GNU General Public License v3. See license.txt
-
-from __future__ import unicode_literals
-import frappe
-
-from frappe.utils import flt
-
-from frappe import msgprint, _
-
-from frappe.model.document import Document
-
-class PaymenttoInvoiceMatchingTool(Document):
-	def get_voucher_details(self):
-		total_amount = frappe.db.sql("""select sum(ifnull(debit, 0)) - sum(ifnull(credit, 0))
-			from `tabGL Entry`
-			where voucher_type = %s and voucher_no = %s
-				and account = %s and ifnull(against_voucher, '') != voucher_no""",
-			(self.voucher_type, self.voucher_no, self.account))
-
-		self.total_amount = total_amount and flt(total_amount[0][0]) or 0
-
-		reconciled_payment = frappe.db.sql("""
-			select abs(sum(ifnull(debit, 0)) - sum(ifnull(credit, 0)))
-			from `tabGL Entry`
-			where against_voucher_type = %s and against_voucher = %s and account = %s
-		""", (self.voucher_type, self.voucher_no, self.account))
-
-		reconciled_payment = reconciled_payment and flt(reconciled_payment[0][0]) or 0
-		self.unmatched_amount = self.total_amount - reconciled_payment
-
-	def get_against_entries(self):
-		self.set('against_entries', [])
-		gle = self.get_gl_entries()
-		self.create_against_entries_table(gle)
-
-	def get_gl_entries(self):
-		self.validate_mandatory()
-
-		dr_or_cr = "credit" if self.total_amount > 0 else "debit"
-
-		cond = self.from_date and " and t1.posting_date >= '" + self.from_date + "'" or ""
-		cond += self.to_date and " and t1.posting_date <= '" + self.to_date + "'" or ""
-
-		if self.amt_greater_than:
-			cond += ' and abs(ifnull(t2.debit, 0) - ifnull(t2.credit, 0)) >= ' + self.amt_greater_than
-		if self.amt_less_than:
-			cond += ' and abs(ifnull(t2.debit, 0) - ifnull(t2.credit, 0)) >= ' + self.amt_less_than
-
-		gle = frappe.db.sql("""
-			select
-				t1.name as voucher_no, t1.posting_date, t1.total_debit as total_amt,
-			 	abs(ifnull(t2.debit, 0) - ifnull(t2.credit, 0)) as unmatched_amount, t1.remark,
-			 	t2.against_account, t2.name as voucher_detail_no, t2.is_advance
-			from
-				`tabJournal Voucher` t1, `tabJournal Voucher Detail` t2
-			where
-				t1.name = t2.parent and t1.docstatus = 1 and t2.account = %s
-				and ifnull(t2.against_voucher, '')='' and ifnull(t2.against_invoice, '')=''
-				and ifnull(t2.against_jv, '')='' and t2.%s > 0 and t1.name != %s
-				and not exists (select * from `tabJournal Voucher Detail`
-					where parent=%s and against_jv = t1.name) %s
-			group by t1.name, t2.name """ %	('%s', dr_or_cr, '%s', '%s', cond),
-			(self.account, self.voucher_no, self.voucher_no), as_dict=1)
-
-		return gle
-
-	def create_against_entries_table(self, gle):
-		adjusted_jv = {}
-		for d in gle:
-			if not adjusted_jv.has_key(d.get("voucher_no")):
-				matched_amount = frappe.db.sql("""
-					select
-						ifnull(abs(sum(ifnull(debit, 0)) - sum(ifnull(credit, 0))), 0)
-					from
-						`tabGL Entry`
-					where
-						account = %s and against_voucher_type = "Journal Voucher"
-						and ifnull(against_voucher, '') = %s
-				""", (self.account, d.get('voucher_no')))
-				matched_amount = matched_amount[0][0] if matched_amount else 0
-			else:
-				matched_amount = adjusted_jv.get(d.get("voucher_no"))
-
-			if matched_amount < flt(d.get('unmatched_amount')):
-				unmatched_amount = flt(d.get('unmatched_amount')) - matched_amount
-				adjusted_jv.setdefault(d.get("voucher_no"), 0)
-			else:
-				unmatched_amount = 0
-				adjusted_jv.setdefault(d.get("voucher_no"), matched_amount - flt(d.get('unmatched_amount')))
-
-			if unmatched_amount:
-				ch = self.append('against_entries', {})
-				ch.voucher_no = d.get('voucher_no')
-				ch.posting_date = d.get('posting_date')
-				ch.unmatched_amount = unmatched_amount
-				ch.total_amt = flt(d.get('total_amt'))
-				ch.against_account = d.get('against_account')
-				ch.remarks = d.get('remark')
-				ch.voucher_detail_no = d.get('voucher_detail_no')
-				ch.is_advance = d.get("is_advance")
-				ch.original_amount = flt(d.get('unmatched_amount'))
-
-	def validate_mandatory(self):
-		for fieldname in ["account", "voucher_type", "voucher_no"]:
-			if not self.get(fieldname):
-				frappe.throw(_("Please select {0} first").format(self.meta.get_label("fieldname")))
-
-		if not frappe.db.exists(self.voucher_type, self.voucher_no):
-			frappe.throw(_("Voucher No is not valid"))
-
-	def reconcile(self):
-		self.validate_mandatory()
-		self.validate_allocated_amount()
-
-		dr_or_cr = "credit" if self.total_amount > 0 else "debit"
-
-		lst = []
-		for d in self.get('against_entries'):
-			if flt(d.allocated_amount) > 0:
-				lst.append({
-					'voucher_no' : d.voucher_no,
-					'voucher_detail_no' : d.voucher_detail_no,
-					'against_voucher_type' : self.voucher_type,
-					'against_voucher'  : self.voucher_no,
-					'account' : self.account,
-					'is_advance' : d.is_advance,
-					'dr_or_cr' : dr_or_cr,
-					'unadjusted_amt' : flt(d.original_amount),
-					'allocated_amt' : flt(d.allocated_amount)
-				})
-
-		if lst:
-			from erpnext.accounts.utils import reconcile_against_document
-			reconcile_against_document(lst)
-			self.get_voucher_details()
-			self.get_against_entries()
-			msgprint(_("Successfully allocated"))
-
-	def validate_allocated_amount(self):
-		if not self.total_allocated_amount:
-			frappe.throw(_("You must allocate amount before reconcile"))
-		elif self.total_allocated_amount > self.unmatched_amount:
-			frappe.throw(_("Total Allocated Amount can not be greater than unmatched amount"))
-
-def get_voucher_nos(doctype, txt, searchfield, start, page_len, filters):
-	non_reconclied_entries = []
-	entries = frappe.db.sql("""
-		select
-			voucher_no, posting_date, ifnull(abs(sum(ifnull(debit, 0)) - sum(ifnull(credit, 0))), 0) as amount
-		from
-			`tabGL Entry`
-		where
-			account = %s and voucher_type = %s and voucher_no like %s
-			and ifnull(against_voucher, '') = ''
-		group by voucher_no
-	""", (filters["account"], filters["voucher_type"], "%%%s%%" % txt), as_dict=True)
-
-	for d in entries:
-		adjusted_amount = frappe.db.sql("""
-			select
-				ifnull(abs(sum(ifnull(debit, 0)) - sum(ifnull(credit, 0))), 0)
-			from
-				`tabGL Entry`
-			where
-				account = %s and against_voucher_type = %s and ifnull(against_voucher, '') = %s
-		""", (filters["account"], filters["voucher_type"], d.voucher_no))
-		adjusted_amount = adjusted_amount[0][0] if adjusted_amount else 0
-
-		if d.amount > adjusted_amount:
-			non_reconclied_entries.append([d.voucher_no, d.posting_date, d.amount])
-
-	return non_reconclied_entries
diff --git a/erpnext/accounts/doctype/payment_to_invoice_matching_tool/test_payment_to_invoice_matching_tool.py b/erpnext/accounts/doctype/payment_to_invoice_matching_tool/test_payment_to_invoice_matching_tool.py
deleted file mode 100644
index 2198909..0000000
--- a/erpnext/accounts/doctype/payment_to_invoice_matching_tool/test_payment_to_invoice_matching_tool.py
+++ /dev/null
@@ -1,8 +0,0 @@
-# Copyright (c) 2013, Web Notes Technologies Pvt. Ltd. and Contributors
-# License: GNU General Public License v3. See license.txt
-
-from __future__ import unicode_literals
-import unittest
-import frappe
-
-test_records = frappe.get_test_records('Payment To Invoice Matching Tool')
\ No newline at end of file
diff --git a/erpnext/accounts/doctype/payment_to_invoice_matching_tool/test_records.json b/erpnext/accounts/doctype/payment_to_invoice_matching_tool/test_records.json
deleted file mode 100644
index 0637a08..0000000
--- a/erpnext/accounts/doctype/payment_to_invoice_matching_tool/test_records.json
+++ /dev/null
@@ -1 +0,0 @@
-[]
\ No newline at end of file
diff --git a/erpnext/accounts/doctype/payment_to_invoice_matching_tool_detail/README.md b/erpnext/accounts/doctype/payment_to_invoice_matching_tool_detail/README.md
deleted file mode 100644
index ed32991..0000000
--- a/erpnext/accounts/doctype/payment_to_invoice_matching_tool_detail/README.md
+++ /dev/null
@@ -1 +0,0 @@
-Journal Voucher (payment) detail for matching to invoice.
\ No newline at end of file
diff --git a/erpnext/accounts/doctype/payment_to_invoice_matching_tool_detail/__init__.py b/erpnext/accounts/doctype/payment_to_invoice_matching_tool_detail/__init__.py
deleted file mode 100644
index baffc48..0000000
--- a/erpnext/accounts/doctype/payment_to_invoice_matching_tool_detail/__init__.py
+++ /dev/null
@@ -1 +0,0 @@
-from __future__ import unicode_literals
diff --git a/erpnext/accounts/doctype/payment_to_invoice_matching_tool_detail/payment_to_invoice_matching_tool_detail.json b/erpnext/accounts/doctype/payment_to_invoice_matching_tool_detail/payment_to_invoice_matching_tool_detail.json
deleted file mode 100644
index 247f023..0000000
--- a/erpnext/accounts/doctype/payment_to_invoice_matching_tool_detail/payment_to_invoice_matching_tool_detail.json
+++ /dev/null
@@ -1,110 +0,0 @@
-{
- "creation": "2013-02-22 01:27:39", 
- "docstatus": 0, 
- "doctype": "DocType", 
- "fields": [
-  {
-   "fieldname": "voucher_no", 
-   "fieldtype": "Link", 
-   "in_list_view": 1, 
-   "label": "Voucher No", 
-   "options": "Journal Voucher", 
-   "permlevel": 0, 
-   "print_width": "140px", 
-   "read_only": 1, 
-   "reqd": 0, 
-   "width": "140px"
-  }, 
-  {
-   "fieldname": "unmatched_amount", 
-   "fieldtype": "Currency", 
-   "in_list_view": 1, 
-   "label": "Unmatched Amount", 
-   "options": "Company:company:default_currency", 
-   "permlevel": 0, 
-   "read_only": 1
-  }, 
-  {
-   "fieldname": "allocated_amount", 
-   "fieldtype": "Currency", 
-   "in_list_view": 1, 
-   "label": "Allocated Amount", 
-   "options": "Company:company:default_currency", 
-   "permlevel": 0, 
-   "reqd": 1
-  }, 
-  {
-   "fieldname": "col_break1", 
-   "fieldtype": "Column Break", 
-   "permlevel": 0
-  }, 
-  {
-   "fieldname": "posting_date", 
-   "fieldtype": "Date", 
-   "in_list_view": 1, 
-   "label": "Posting Date", 
-   "permlevel": 0, 
-   "read_only": 1
-  }, 
-  {
-   "fieldname": "total_amt", 
-   "fieldtype": "Currency", 
-   "in_list_view": 1, 
-   "label": "Total Amount", 
-   "options": "Company:company:default_currency", 
-   "permlevel": 0, 
-   "read_only": 1
-  }, 
-  {
-   "fieldname": "against_account", 
-   "fieldtype": "Data", 
-   "in_list_view": 1, 
-   "label": "Against Account", 
-   "permlevel": 0, 
-   "read_only": 1
-  }, 
-  {
-   "fieldname": "remarks", 
-   "fieldtype": "Small Text", 
-   "label": "Remarks", 
-   "permlevel": 0, 
-   "print_width": "200px", 
-   "read_only": 1, 
-   "width": "200px"
-  }, 
-  {
-   "fieldname": "voucher_detail_no", 
-   "fieldtype": "Data", 
-   "hidden": 1, 
-   "label": "Voucher Detail No", 
-   "permlevel": 0, 
-   "print_hide": 1, 
-   "read_only": 1, 
-   "reqd": 0
-  }, 
-  {
-   "fieldname": "is_advance", 
-   "fieldtype": "Data", 
-   "hidden": 1, 
-   "label": "Is Advance", 
-   "permlevel": 0, 
-   "read_only": 1
-  }, 
-  {
-   "fieldname": "original_amount", 
-   "fieldtype": "Currency", 
-   "hidden": 1, 
-   "label": "Original Amount", 
-   "permlevel": 0
-  }
- ], 
- "hide_toolbar": 1, 
- "idx": 1, 
- "istable": 1, 
- "modified": "2014-04-30 19:27:15.993641", 
- "modified_by": "Administrator", 
- "module": "Accounts", 
- "name": "Payment to Invoice Matching Tool Detail", 
- "owner": "Administrator", 
- "permissions": []
-}
\ No newline at end of file
diff --git a/erpnext/accounts/doctype/payment_to_invoice_matching_tool_detail/payment_to_invoice_matching_tool_detail.py b/erpnext/accounts/doctype/payment_to_invoice_matching_tool_detail/payment_to_invoice_matching_tool_detail.py
deleted file mode 100644
index a7bf686..0000000
--- a/erpnext/accounts/doctype/payment_to_invoice_matching_tool_detail/payment_to_invoice_matching_tool_detail.py
+++ /dev/null
@@ -1,10 +0,0 @@
-# Copyright (c) 2013, Web Notes Technologies Pvt. Ltd. and Contributors
-# License: GNU General Public License v3. See license.txt
-
-from __future__ import unicode_literals
-import frappe
-
-from frappe.model.document import Document
-
-class PaymentToInvoiceMatchingToolDetail(Document):
-	pass
\ No newline at end of file