mirror of
https://github.com/frappe/erpnext.git
synced 2026-05-25 16:04:46 +00:00
Merge branch 'responsive' of git://github.com/webnotes/erpnext into responsive
This commit is contained in:
@@ -211,19 +211,10 @@ cur_frm.cscript['Make Delivery Note'] = function() {
|
||||
|
||||
|
||||
cur_frm.cscript['Make Sales Invoice'] = function() {
|
||||
var doc = cur_frm.doc;
|
||||
|
||||
n = wn.model.make_new_doc_and_get_name('Sales Invoice');
|
||||
$c('dt_map', args={
|
||||
'docs':wn.model.compress([locals['Sales Invoice'][n]]),
|
||||
'from_doctype':doc.doctype,
|
||||
'to_doctype':'Sales Invoice',
|
||||
'from_docname':doc.name,
|
||||
'from_to_list':"[['Sales Order','Sales Invoice'],['Sales Order Item','Sales Invoice Item'],['Sales Taxes and Charges','Sales Taxes and Charges'],['Sales Team','Sales Team']]"
|
||||
}, function(r,rt) {
|
||||
loaddoc('Sales Invoice', n);
|
||||
}
|
||||
);
|
||||
wn.model.open_mapped_doc({
|
||||
method: "selling.doctype.sales_order.sales_order.make_sales_invoice",
|
||||
source_name: cur_frm.doc.name
|
||||
})
|
||||
}
|
||||
|
||||
|
||||
|
||||
@@ -84,9 +84,6 @@ class DocType(SellingController):
|
||||
def validate_fiscal_year(self):
|
||||
get_obj('Sales Common').validate_fiscal_year(self.doc.fiscal_year,self.doc.transaction_date,'Sales Order Date')
|
||||
|
||||
def validate_reference_value(self):
|
||||
get_obj('DocType Mapper', 'Quotation-Sales Order', with_children = 1).validate_reference_value(self, self.doc.name)
|
||||
|
||||
def validate_mandatory(self):
|
||||
# validate transaction date v/s delivery date
|
||||
if self.doc.delivery_date:
|
||||
@@ -190,7 +187,6 @@ class DocType(SellingController):
|
||||
self.validate_mandatory()
|
||||
self.validate_proj_cust()
|
||||
self.validate_po()
|
||||
#self.validate_reference_value()
|
||||
|
||||
if self.doc.docstatus == 1:
|
||||
self.validate_for_items()
|
||||
@@ -447,3 +443,43 @@ def make_delivery_note(source_name, target_doclist=None):
|
||||
}, target_doclist)
|
||||
|
||||
return [d.fields for d in doclist]
|
||||
|
||||
@webnotes.whitelist()
|
||||
def make_sales_invoice(source_name, target_doclist=None):
|
||||
from webnotes.model.mapper import get_mapped_doclist
|
||||
|
||||
def update_item(obj, target):
|
||||
target.export_amount = (flt(obj.amount) - flt(obj.billed_amt))* flt(obj.export_rate)/flt(obj.basic_rate)
|
||||
target.qty = obj.basic_rate and (flt(obj.amount) - flt(obj.billed_amt))/flt(obj.basic_rate) or obj.qty
|
||||
target.amount = flt(obj.amount) - flt(obj.billed_amt)
|
||||
|
||||
def update_accounts(source, target):
|
||||
si = webnotes.bean(target)
|
||||
si.run_method("update_accounts")
|
||||
|
||||
doclist = get_mapped_doclist("Sales Order", source_name, {
|
||||
"Sales Order": {
|
||||
"doctype": "Sales Invoice",
|
||||
"validation": {
|
||||
"docstatus": ["=", 1]
|
||||
}
|
||||
},
|
||||
"Sales Order Item": {
|
||||
"doctype": "Sales Invoice Item",
|
||||
"field_map": {
|
||||
"name": "so_detail",
|
||||
"parent": "sales_order",
|
||||
"reserved_warehouse": "warehouse"
|
||||
},
|
||||
"postprocess": update_item,
|
||||
"condition": lambda doc: doc.amount==0 or doc.billed_amt < doc.amount
|
||||
},
|
||||
"Sales Taxes and Charges": {
|
||||
"doctype": "Sales Taxes and Charges",
|
||||
},
|
||||
"Sales Team": {
|
||||
"doctype": "Sales Team",
|
||||
}
|
||||
}, target_doclist, update_accounts)
|
||||
|
||||
return [d.fields for d in doclist]
|
||||
|
||||
@@ -33,6 +33,30 @@ class TestSalesOrder(unittest.TestCase):
|
||||
self.assertEquals(dn[0]["doctype"], "Delivery Note")
|
||||
self.assertEquals(len(dn), len(sales_order.doclist))
|
||||
|
||||
def test_make_sales_invoice(self):
|
||||
from selling.doctype.sales_order.sales_order import make_sales_invoice
|
||||
|
||||
so = webnotes.bean(copy=test_records[0]).insert()
|
||||
|
||||
self.assertRaises(webnotes.ValidationError, make_sales_invoice,
|
||||
so.doc.name)
|
||||
|
||||
sales_order = webnotes.bean("Sales Order", so.doc.name)
|
||||
sales_order.submit()
|
||||
si = make_sales_invoice(so.doc.name)
|
||||
|
||||
self.assertEquals(si[0]["doctype"], "Sales Invoice")
|
||||
self.assertEquals(len(si), len(sales_order.doclist))
|
||||
self.assertEquals(len([d for d in si if d["doctype"]=="Sales Invoice Item"]), 1)
|
||||
|
||||
si = webnotes.bean(si)
|
||||
si.insert()
|
||||
si.submit()
|
||||
|
||||
si1 = make_sales_invoice(so.doc.name)
|
||||
self.assertEquals(len([d for d in si1 if d["doctype"]=="Sales Invoice Item"]), 0)
|
||||
|
||||
|
||||
def create_so(self, so_doclist = None):
|
||||
if not so_doclist:
|
||||
so_doclist =test_records[0]
|
||||
|
||||
Reference in New Issue
Block a user