Merge pull request #2572 from neilLasrado/credit-note
journal entry linked with Stock Entry
This commit is contained in:
commit
cff8993478
@ -12,6 +12,22 @@
|
|||||||
"options": "icon-flag",
|
"options": "icon-flag",
|
||||||
"permlevel": 0
|
"permlevel": 0
|
||||||
},
|
},
|
||||||
|
{
|
||||||
|
"default": "Journal Entry",
|
||||||
|
"fieldname": "voucher_type",
|
||||||
|
"fieldtype": "Select",
|
||||||
|
"in_filter": 1,
|
||||||
|
"in_list_view": 1,
|
||||||
|
"label": "Voucher Type",
|
||||||
|
"oldfieldname": "voucher_type",
|
||||||
|
"oldfieldtype": "Select",
|
||||||
|
"options": "Journal Entry\nBank Entry\nCash Entry\nCredit Card Entry\nDebit Note\nCredit Note\nContra Entry\nExcise Entry\nWrite Off Entry\nOpening Entry",
|
||||||
|
"permlevel": 0,
|
||||||
|
"print_hide": 0,
|
||||||
|
"read_only": 0,
|
||||||
|
"reqd": 1,
|
||||||
|
"search_index": 1
|
||||||
|
},
|
||||||
{
|
{
|
||||||
"fieldname": "column_break0",
|
"fieldname": "column_break0",
|
||||||
"fieldtype": "Column Break",
|
"fieldtype": "Column Break",
|
||||||
@ -33,22 +49,6 @@
|
|||||||
"read_only": 0,
|
"read_only": 0,
|
||||||
"reqd": 1
|
"reqd": 1
|
||||||
},
|
},
|
||||||
{
|
|
||||||
"default": "Journal Entry",
|
|
||||||
"fieldname": "voucher_type",
|
|
||||||
"fieldtype": "Select",
|
|
||||||
"in_filter": 1,
|
|
||||||
"in_list_view": 0,
|
|
||||||
"label": "Voucher Type",
|
|
||||||
"oldfieldname": "voucher_type",
|
|
||||||
"oldfieldtype": "Select",
|
|
||||||
"options": "Journal Entry\nBank Entry\nCash Entry\nCredit Card Entry\nDebit Note\nCredit Note\nContra Entry\nExcise Entry\nWrite Off Entry\nOpening Entry",
|
|
||||||
"permlevel": 0,
|
|
||||||
"print_hide": 0,
|
|
||||||
"read_only": 0,
|
|
||||||
"reqd": 1,
|
|
||||||
"search_index": 1
|
|
||||||
},
|
|
||||||
{
|
{
|
||||||
"fieldname": "column_break1",
|
"fieldname": "column_break1",
|
||||||
"fieldtype": "Column Break",
|
"fieldtype": "Column Break",
|
||||||
@ -61,7 +61,7 @@
|
|||||||
"fieldname": "posting_date",
|
"fieldname": "posting_date",
|
||||||
"fieldtype": "Date",
|
"fieldtype": "Date",
|
||||||
"in_filter": 1,
|
"in_filter": 1,
|
||||||
"in_list_view": 0,
|
"in_list_view": 1,
|
||||||
"label": "Posting Date",
|
"label": "Posting Date",
|
||||||
"no_copy": 1,
|
"no_copy": 1,
|
||||||
"oldfieldname": "posting_date",
|
"oldfieldname": "posting_date",
|
||||||
@ -98,6 +98,15 @@
|
|||||||
"permlevel": 0,
|
"permlevel": 0,
|
||||||
"read_only": 0
|
"read_only": 0
|
||||||
},
|
},
|
||||||
|
{
|
||||||
|
"depends_on": "eval:inList([\"Credit Note\", \"Debit Note\"], doc.voucher_type)",
|
||||||
|
"fieldname": "stock_entry",
|
||||||
|
"fieldtype": "Link",
|
||||||
|
"label": "Stock Entry",
|
||||||
|
"options": "Stock Entry",
|
||||||
|
"permlevel": 0,
|
||||||
|
"precision": ""
|
||||||
|
},
|
||||||
{
|
{
|
||||||
"fieldname": "total_debit",
|
"fieldname": "total_debit",
|
||||||
"fieldtype": "Currency",
|
"fieldtype": "Currency",
|
||||||
@ -154,7 +163,7 @@
|
|||||||
"fieldname": "cheque_no",
|
"fieldname": "cheque_no",
|
||||||
"fieldtype": "Data",
|
"fieldtype": "Data",
|
||||||
"in_filter": 1,
|
"in_filter": 1,
|
||||||
"in_list_view": 0,
|
"in_list_view": 1,
|
||||||
"label": "Reference Number",
|
"label": "Reference Number",
|
||||||
"no_copy": 1,
|
"no_copy": 1,
|
||||||
"oldfieldname": "cheque_no",
|
"oldfieldname": "cheque_no",
|
||||||
@ -177,7 +186,6 @@
|
|||||||
"fieldname": "user_remark",
|
"fieldname": "user_remark",
|
||||||
"fieldtype": "Small Text",
|
"fieldtype": "Small Text",
|
||||||
"in_filter": 1,
|
"in_filter": 1,
|
||||||
"in_list_view": 1,
|
|
||||||
"label": "User Remark",
|
"label": "User Remark",
|
||||||
"no_copy": 1,
|
"no_copy": 1,
|
||||||
"oldfieldname": "user_remark",
|
"oldfieldname": "user_remark",
|
||||||
@ -449,7 +457,7 @@
|
|||||||
"icon": "icon-file-text",
|
"icon": "icon-file-text",
|
||||||
"idx": 1,
|
"idx": 1,
|
||||||
"is_submittable": 1,
|
"is_submittable": 1,
|
||||||
"modified": "2015-01-06 12:01:51.379685",
|
"modified": "2015-01-07 18:06:21.042991",
|
||||||
"modified_by": "Administrator",
|
"modified_by": "Administrator",
|
||||||
"module": "Accounts",
|
"module": "Accounts",
|
||||||
"name": "Journal Entry",
|
"name": "Journal Entry",
|
||||||
|
@ -38,6 +38,7 @@ class JournalEntry(AccountsController):
|
|||||||
self.validate_against_purchase_order()
|
self.validate_against_purchase_order()
|
||||||
self.check_credit_days()
|
self.check_credit_days()
|
||||||
self.validate_expense_claim()
|
self.validate_expense_claim()
|
||||||
|
self.validate_credit_debit_note()
|
||||||
|
|
||||||
def on_submit(self):
|
def on_submit(self):
|
||||||
self.check_credit_limit()
|
self.check_credit_limit()
|
||||||
@ -440,6 +441,15 @@ class JournalEntry(AccountsController):
|
|||||||
if d.debit > pending_amount:
|
if d.debit > pending_amount:
|
||||||
frappe.throw(_("Row No {0}: Amount cannot be greater than Pending Amount against Expense Claim {1}. \
|
frappe.throw(_("Row No {0}: Amount cannot be greater than Pending Amount against Expense Claim {1}. \
|
||||||
Pending Amount is {2}".format(d.idx, d.against_expense_claim, pending_amount)))
|
Pending Amount is {2}".format(d.idx, d.against_expense_claim, pending_amount)))
|
||||||
|
|
||||||
|
def validate_credit_debit_note(self):
|
||||||
|
count = frappe.db.exists({
|
||||||
|
"doctype": "Journal Entry",
|
||||||
|
"stock_entry":self.stock_entry,
|
||||||
|
"docstatus":1
|
||||||
|
})
|
||||||
|
if count:
|
||||||
|
frappe.throw(_("{0} already made against stock entry {1}".format(self.voucher_type, self.stock_entry)))
|
||||||
|
|
||||||
@frappe.whitelist()
|
@frappe.whitelist()
|
||||||
def get_default_bank_cash_account(company, voucher_type, mode_of_payment=None):
|
def get_default_bank_cash_account(company, voucher_type, mode_of_payment=None):
|
||||||
|
@ -65,8 +65,8 @@ erpnext.stock.StockEntry = erpnext.stock.StockController.extend({
|
|||||||
this.show_stock_ledger();
|
this.show_stock_ledger();
|
||||||
this.show_general_ledger();
|
this.show_general_ledger();
|
||||||
|
|
||||||
if(this.frm.doc.docstatus === 1 &&
|
if(this.frm.doc.docstatus === 1 && frappe.boot.user.can_create.indexOf("Journal Entry")!==-1
|
||||||
frappe.boot.user.can_create.indexOf("Journal Entry")!==-1) {
|
&& this.frm.doc.__onload.credit_debit_note_exists == 0 ) {
|
||||||
if(this.frm.doc.purpose === "Sales Return") {
|
if(this.frm.doc.purpose === "Sales Return") {
|
||||||
this.frm.add_custom_button(__("Make Credit Note"),
|
this.frm.add_custom_button(__("Make Credit Note"),
|
||||||
function() { me.make_return_jv(); }, frappe.boot.doctype_icons["Journal Entry"]);
|
function() { me.make_return_jv(); }, frappe.boot.doctype_icons["Journal Entry"]);
|
||||||
@ -77,7 +77,6 @@ erpnext.stock.StockEntry = erpnext.stock.StockController.extend({
|
|||||||
this.add_excise_button();
|
this.add_excise_button();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
},
|
},
|
||||||
|
|
||||||
on_submit: function() {
|
on_submit: function() {
|
||||||
|
@ -576,6 +576,15 @@
|
|||||||
"report_hide": 0,
|
"report_hide": 0,
|
||||||
"reqd": 0,
|
"reqd": 0,
|
||||||
"search_index": 0
|
"search_index": 0
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"fieldname": "credit_note",
|
||||||
|
"fieldtype": "Link",
|
||||||
|
"hidden": 1,
|
||||||
|
"label": "Credit Note",
|
||||||
|
"options": "Journal Entry",
|
||||||
|
"permlevel": 0,
|
||||||
|
"precision": ""
|
||||||
}
|
}
|
||||||
],
|
],
|
||||||
"hide_heading": 0,
|
"hide_heading": 0,
|
||||||
@ -587,7 +596,7 @@
|
|||||||
"is_submittable": 1,
|
"is_submittable": 1,
|
||||||
"issingle": 0,
|
"issingle": 0,
|
||||||
"max_attachments": 0,
|
"max_attachments": 0,
|
||||||
"modified": "2015-01-05 15:28:49.649079",
|
"modified": "2015-01-07 17:38:40.170567",
|
||||||
"modified_by": "Administrator",
|
"modified_by": "Administrator",
|
||||||
"module": "Stock",
|
"module": "Stock",
|
||||||
"name": "Stock Entry",
|
"name": "Stock Entry",
|
||||||
|
@ -34,7 +34,14 @@ class StockEntry(StockController):
|
|||||||
for item in self.get("items"):
|
for item in self.get("items"):
|
||||||
item.update(get_available_qty(item.item_code,
|
item.update(get_available_qty(item.item_code,
|
||||||
item.s_warehouse))
|
item.s_warehouse))
|
||||||
|
|
||||||
|
count = frappe.db.exists({
|
||||||
|
"doctype": "Journal Entry",
|
||||||
|
"stock_entry":self.name,
|
||||||
|
"docstatus":1
|
||||||
|
})
|
||||||
|
self.get("__onload").credit_debit_note_exists = 1 if count else 0
|
||||||
|
|
||||||
def validate(self):
|
def validate(self):
|
||||||
self.validate_posting_time()
|
self.validate_posting_time()
|
||||||
self.validate_purpose()
|
self.validate_purpose()
|
||||||
@ -825,7 +832,8 @@ def make_return_jv(stock_entry):
|
|||||||
"posting_date": se.posting_date,
|
"posting_date": se.posting_date,
|
||||||
"voucher_type": se.purpose == "Sales Return" and "Credit Note" or "Debit Note",
|
"voucher_type": se.purpose == "Sales Return" and "Credit Note" or "Debit Note",
|
||||||
"fiscal_year": se.fiscal_year,
|
"fiscal_year": se.fiscal_year,
|
||||||
"company": se.company
|
"company": se.company,
|
||||||
|
"stock_entry": se.name
|
||||||
})
|
})
|
||||||
|
|
||||||
from erpnext.accounts.utils import get_balance_on
|
from erpnext.accounts.utils import get_balance_on
|
||||||
|
Loading…
Reference in New Issue
Block a user