Show Write-Off for all Sales Invoices if there is a Grand Total

This commit is contained in:
Anand Doshi 2015-04-02 13:43:51 +05:30
parent d7a5b7309b
commit 83f87da3d1
3 changed files with 62 additions and 48 deletions

View File

@ -174,7 +174,7 @@ erpnext.accounts.SalesInvoiceController = erpnext.selling.SellingController.exte
frappe.model.round_floats_in(this.frm.doc, ["base_grand_total", "paid_amount"]);
// this will make outstanding amount 0
this.frm.set_value("write_off_amount",
flt(this.frm.doc.base_grand_total - this.frm.doc.paid_amount, precision("write_off_amount"))
flt(this.frm.doc.base_grand_total - this.frm.doc.paid_amount - this.frm.doc.total_advance, precision("write_off_amount"))
);
this.frm.toggle_enable("write_off_amount", false);

View File

@ -662,14 +662,6 @@
"permlevel": 0,
"read_only": 0
},
{
"depends_on": "is_pos",
"fieldname": "column_break3",
"fieldtype": "Column Break",
"permlevel": 0,
"read_only": 0,
"width": "50%"
},
{
"depends_on": "is_pos",
"fieldname": "paid_amount",
@ -683,6 +675,14 @@
"print_hide": 1,
"read_only": 0
},
{
"depends_on": "is_pos",
"fieldname": "column_break3",
"fieldtype": "Column Break",
"permlevel": 0,
"read_only": 0,
"width": "50%"
},
{
"depends_on": "is_pos",
"fieldname": "cash_bank_account",
@ -696,24 +696,16 @@
"read_only": 0
},
{
"depends_on": "eval:doc.is_pos===1||(doc.advances && doc.advances.length>0)",
"depends_on": "grand_total",
"fieldname": "column_break4",
"fieldtype": "Column Break",
"fieldtype": "Section Break",
"label": "Write Off",
"permlevel": 0,
"read_only": 0,
"width": "50%"
},
{
"depends_on": "eval:doc.is_pos===1||(doc.advances && doc.advances.length>0)",
"fieldname": "write_off_outstanding_amount_automatically",
"fieldtype": "Check",
"label": "Write Off Outstanding Amount",
"permlevel": 0,
"print_hide": 1,
"read_only": 0
},
{
"depends_on": "eval:doc.is_pos===1||(doc.advances && doc.advances.length>0)",
"depends_on": "",
"fieldname": "write_off_amount",
"fieldtype": "Currency",
"label": "Write Off Amount",
@ -723,8 +715,24 @@
"print_hide": 1,
"read_only": 0
},
{
"depends_on": "",
"fieldname": "write_off_outstanding_amount_automatically",
"fieldtype": "Check",
"label": "Write Off Outstanding Amount",
"permlevel": 0,
"print_hide": 1,
"read_only": 0
},
{
"depends_on": "eval:doc.is_pos===1||(doc.advances && doc.advances.length>0)",
"fieldname": "column_break_74",
"fieldtype": "Column Break",
"permlevel": 0,
"precision": ""
},
{
"depends_on": "",
"fieldname": "write_off_account",
"fieldtype": "Link",
"label": "Write Off Account",
@ -734,7 +742,7 @@
"read_only": 0
},
{
"depends_on": "eval:doc.is_pos===1||(doc.advances && doc.advances.length>0)",
"depends_on": "",
"fieldname": "write_off_cost_center",
"fieldtype": "Link",
"label": "Write Off Cost Center",
@ -1246,8 +1254,8 @@
"icon": "icon-file-text",
"idx": 1,
"is_submittable": 1,
"modified": "2015-04-01 06:50:49.748285",
"modified_by": "Administrator",
"modified": "2015-04-02 13:42:22.985078",
"modified_by": "anand@erpnext.com",
"module": "Accounts",
"name": "Sales Invoice",
"owner": "Administrator",

View File

@ -48,10 +48,10 @@ class SalesInvoice(SellingController):
self.clear_unallocated_advances("Sales Invoice Advance", "advances")
self.validate_advance_jv("advances", "sales_order")
self.add_remarks()
self.validate_write_off_account()
if cint(self.is_pos):
self.validate_pos()
self.validate_write_off_account()
if cint(self.update_stock):
self.validate_item_code()
@ -453,8 +453,10 @@ class SalesInvoice(SellingController):
if gl_entries:
from erpnext.accounts.general_ledger import make_gl_entries
# if POS and amount is written off, there's no outstanding and hence no need to update it
update_outstanding = cint(self.is_pos) and self.write_off_account \
and 'No' or 'Yes'
make_gl_entries(gl_entries, cancel=(self.docstatus == 2),
update_outstanding=update_outstanding, merge_entries=False)
@ -483,6 +485,8 @@ class SalesInvoice(SellingController):
self.make_pos_gl_entries(gl_entries)
self.make_write_off_gl_entry(gl_entries)
return gl_entries
def make_customer_gl_entry(self, gl_entries):
@ -555,29 +559,31 @@ class SalesInvoice(SellingController):
"remarks": self.remarks,
})
)
# write off entries, applicable if only pos
if self.write_off_account and self.write_off_amount:
gl_entries.append(
self.get_gl_dict({
"account": self.debit_to,
"party_type": "Customer",
"party": self.customer,
"against": self.write_off_account,
"credit": self.write_off_amount,
"remarks": self.remarks,
"against_voucher": self.name,
"against_voucher_type": self.doctype,
})
)
gl_entries.append(
self.get_gl_dict({
"account": self.write_off_account,
"against": self.debit_to,
"debit": self.write_off_amount,
"remarks": self.remarks,
"cost_center": self.write_off_cost_center
})
)
def make_write_off_gl_entry(self, gl_entries):
# write off entries, applicable if only pos
if self.write_off_account and self.write_off_amount:
gl_entries.append(
self.get_gl_dict({
"account": self.debit_to,
"party_type": "Customer",
"party": self.customer,
"against": self.write_off_account,
"credit": self.write_off_amount,
"remarks": self.remarks,
"against_voucher": self.name,
"against_voucher_type": self.doctype,
})
)
gl_entries.append(
self.get_gl_dict({
"account": self.write_off_account,
"against": self.debit_to,
"debit": self.write_off_amount,
"remarks": self.remarks,
"cost_center": self.write_off_cost_center
})
)
def get_list_context(context=None):
from erpnext.controllers.website_list_for_contact import get_list_context