diff --git a/accounts/doctype/pos_setting/pos_setting.txt b/accounts/doctype/pos_setting/pos_setting.txt index d82749011a8..9f5b246ff36 100755 --- a/accounts/doctype/pos_setting/pos_setting.txt +++ b/accounts/doctype/pos_setting/pos_setting.txt @@ -2,7 +2,7 @@ { "creation": "2013-05-24 12:15:51", "docstatus": 0, - "modified": "2013-07-26 11:16:53", + "modified": "2013-08-01 16:50:05", "modified_by": "Administrator", "owner": "Administrator" }, @@ -81,7 +81,6 @@ "reqd": 1 }, { - "default": "1", "doctype": "DocField", "fieldname": "conversion_rate", "fieldtype": "Float", diff --git a/accounts/doctype/purchase_invoice/purchase_invoice.txt b/accounts/doctype/purchase_invoice/purchase_invoice.txt index 6ed049e86fc..47958cf9fb7 100755 --- a/accounts/doctype/purchase_invoice/purchase_invoice.txt +++ b/accounts/doctype/purchase_invoice/purchase_invoice.txt @@ -2,7 +2,7 @@ { "creation": "2013-05-21 16:16:39", "docstatus": 0, - "modified": "2013-07-25 16:08:44", + "modified": "2013-08-01 16:49:49", "modified_by": "Administrator", "owner": "Administrator" }, @@ -223,7 +223,6 @@ "read_only": 0 }, { - "default": "1", "description": "The rate at which Bill Currency is converted into company's base currency", "doctype": "DocField", "fieldname": "conversion_rate", diff --git a/accounts/doctype/sales_invoice/sales_invoice.js b/accounts/doctype/sales_invoice/sales_invoice.js index 345dbc94032..d8d06dd957f 100644 --- a/accounts/doctype/sales_invoice/sales_invoice.js +++ b/accounts/doctype/sales_invoice/sales_invoice.js @@ -93,12 +93,18 @@ erpnext.accounts.SalesInvoiceController = erpnext.selling.SellingController.exte wn.model.map_current_doc({ method: "stock.doctype.delivery_note.delivery_note.make_sales_invoice", source_doctype: "Delivery Note", - get_query_filters: { - docstatus: 1, - customer: cur_frm.doc.customer || undefined, - company: cur_frm.doc.company + get_query: function() { + var filters = { + docstatus: 1, + company: cur_frm.doc.company + }; + if(cur_frm.doc.customer) filters["customer"] = cur_frm.doc.customer; + return { + query: "controllers.queries.get_delivery_notes_to_be_billed", + filters: filters + }; } - }) + }); }); // cur_frm.add_custom_button(wn._("POS View"), function() { diff --git a/accounts/doctype/sales_invoice/sales_invoice.py b/accounts/doctype/sales_invoice/sales_invoice.py index ca937860540..09df5f65121 100644 --- a/accounts/doctype/sales_invoice/sales_invoice.py +++ b/accounts/doctype/sales_invoice/sales_invoice.py @@ -1001,10 +1001,12 @@ def make_delivery_note(source_name, target_doclist=None): bean = webnotes.bean(target) bean.run_method("onload_post_render") - def update_item(obj, target, source_parent): - target.amount = (flt(obj.qty) - flt(obj.delivered_qty)) * flt(obj.basic_rate) - target.export_amount = (flt(obj.qty) - flt(obj.delivered_qty)) * flt(obj.export_rate) - target.qty = flt(obj.qty) - flt(obj.delivered_qty) + def update_item(source_doc, target_doc, source_parent): + target_doc.amount = (flt(source_doc.qty) - flt(source_doc.delivered_qty)) * \ + flt(source_doc.basic_rate) + target_doc.export_amount = (flt(source_doc.qty) - flt(source_doc.delivered_qty)) * \ + flt(source_doc.export_rate) + target_doc.qty = flt(source_doc.qty) - flt(source_doc.delivered_qty) doclist = get_mapped_doclist("Sales Invoice", source_name, { "Sales Invoice": { diff --git a/accounts/report/delivered_items_to_be_billed/delivered_items_to_be_billed.txt b/accounts/report/delivered_items_to_be_billed/delivered_items_to_be_billed.txt index 05983b072d0..a42bcbd74f6 100644 --- a/accounts/report/delivered_items_to_be_billed/delivered_items_to_be_billed.txt +++ b/accounts/report/delivered_items_to_be_billed/delivered_items_to_be_billed.txt @@ -2,7 +2,7 @@ { "creation": "2013-07-30 17:28:49", "docstatus": 0, - "modified": "2013-07-30 18:41:28", + "modified": "2013-08-02 18:41:28", "modified_by": "Administrator", "owner": "Administrator" }, @@ -10,7 +10,7 @@ "doctype": "Report", "is_standard": "Yes", "name": "__common__", - "query": "select\n `tabDelivery Note`.`name` as \"Delivery Note:Link/Delivery Note:120\",\n\t`tabDelivery Note`.`customer` as \"Customer:Link/Customer:120\",\n\t`tabDelivery Note`.`posting_date` as \"Date:Date\",\n\t`tabDelivery Note`.`project_name` as \"Project\",\n\t`tabDelivery Note Item`.`item_code` as \"Item:Link/Item:120\",\n\t(`tabDelivery Note Item`.`qty` - ifnull((select sum(qty) from `tabSales Invoice Item` \n\t where `tabSales Invoice Item`.delivery_note = `tabDelivery Note`.name and\n\t `tabSales Invoice Item`.dn_detail = `tabDelivery Note Item`.name), 0))\n\t\tas \"Qty:Float:110\",\n\t(`tabDelivery Note Item`.`amount` - ifnull((select sum(amount) from `tabSales Invoice Item` \n where `tabSales Invoice Item`.delivery_note = `tabDelivery Note`.name and\n `tabSales Invoice Item`.dn_detail = `tabDelivery Note Item`.name), 0))\n\t\tas \"Amount:Currency:110\",\n\t`tabDelivery Note Item`.`item_name` as \"Item Name::150\",\n\t`tabDelivery Note Item`.`description` as \"Description::200\"\nfrom `tabDelivery Note`, `tabDelivery Note Item`\nwhere\n `tabDelivery Note`.docstatus = 1 and\n\t`tabDelivery Note`.status != \"Stopped\" and\n `tabDelivery Note`.name = `tabDelivery Note Item`.parent and\n (`tabDelivery Note Item`.qty > ifnull((select sum(qty) from `tabSales Invoice Item` \n where `tabSales Invoice Item`.delivery_note = `tabDelivery Note`.name and\n `tabSales Invoice Item`.dn_detail = `tabDelivery Note Item`.name), 0))\norder by `tabDelivery Note`.`name` desc", + "query": "select\n `tabDelivery Note`.`name` as \"Delivery Note:Link/Delivery Note:120\",\n\t`tabDelivery Note`.`customer` as \"Customer:Link/Customer:120\",\n\t`tabDelivery Note`.`posting_date` as \"Date:Date\",\n\t`tabDelivery Note`.`project_name` as \"Project\",\n\t`tabDelivery Note Item`.`item_code` as \"Item:Link/Item:120\",\n\t(`tabDelivery Note Item`.`qty` - ifnull((select sum(qty) from `tabSales Invoice Item` \n\t where `tabSales Invoice Item`.delivery_note = `tabDelivery Note`.name and\n\t `tabSales Invoice Item`.dn_detail = `tabDelivery Note Item`.name), 0))\n\t\tas \"Qty:Float:110\",\n\t(`tabDelivery Note Item`.`amount` - ifnull((select sum(amount) from `tabSales Invoice Item` \n where `tabSales Invoice Item`.delivery_note = `tabDelivery Note`.name and\n `tabSales Invoice Item`.dn_detail = `tabDelivery Note Item`.name), 0))\n\t\tas \"Amount:Currency:110\",\n\t`tabDelivery Note Item`.`item_name` as \"Item Name::150\",\n\t`tabDelivery Note Item`.`description` as \"Description::200\"\nfrom `tabDelivery Note`, `tabDelivery Note Item`\nwhere\n `tabDelivery Note`.docstatus = 1 and\n\t`tabDelivery Note`.`status` != \"Stopped\" and\n `tabDelivery Note`.name = `tabDelivery Note Item`.parent and\n (`tabDelivery Note Item`.qty > ifnull((select sum(qty) from `tabSales Invoice Item` \n where `tabSales Invoice Item`.delivery_note = `tabDelivery Note`.name and\n `tabSales Invoice Item`.dn_detail = `tabDelivery Note Item`.name), 0))\norder by `tabDelivery Note`.`name` desc", "ref_doctype": "Sales Invoice", "report_name": "Delivered Items To Be Billed", "report_type": "Query Report" diff --git a/accounts/report/purchase_register/purchase_register.py b/accounts/report/purchase_register/purchase_register.py index 0a4711ffb80..91525fbc4e2 100644 --- a/accounts/report/purchase_register/purchase_register.py +++ b/accounts/report/purchase_register/purchase_register.py @@ -43,7 +43,7 @@ def execute(filters=None): purchase_receipt = list(set(invoice_po_pr_map.get(inv.name, {}).get("purchase_receipt", []))) project_name = list(set(invoice_po_pr_map.get(inv.name, {}).get("project_name", []))) - row = [inv.name, inv.posting_date, inv.supplier_name, inv.credit_to, + row = [inv.name, inv.posting_date, inv.supplier, inv.supplier_name, inv.credit_to, account_map.get(inv.credit_to), ", ".join(project_name), inv.bill_no, inv.bill_date, inv.remarks, ", ".join(purchase_order), ", ".join(purchase_receipt)] @@ -76,9 +76,10 @@ def execute(filters=None): def get_columns(invoice_list): """return columns based on filters""" columns = [ - "Invoice:Link/Purchase Invoice:120", "Posting Date:Date:80", "Supplier::120", - "Supplier Account:Link/Account:120", "Account Group:LInk/Account:120", - "Project:Link/Project:80", "Bill No::120", "Bill Date:Date:80", "Remarks::150", + "Invoice:Link/Purchase Invoice:120", "Posting Date:Date:80", "Supplier Id::120", + "Supplier Name::120", "Supplier Account:Link/Account:120", + "Account Group:LInk/Account:120", "Project:Link/Project:80", "Bill No::120", + "Bill Date:Date:80", "Remarks::150", "Purchase Order:Link/Purchase Order:100", "Purchase Receipt:Link/Purchase Receipt:100" ] expense_accounts = tax_accounts = expense_columns = tax_columns = [] diff --git a/accounts/report/sales_register/sales_register.py b/accounts/report/sales_register/sales_register.py index 87c58164bca..0c96684aa32 100644 --- a/accounts/report/sales_register/sales_register.py +++ b/accounts/report/sales_register/sales_register.py @@ -43,7 +43,7 @@ def execute(filters=None): sales_order = list(set(invoice_so_dn_map.get(inv.name, {}).get("sales_order", []))) delivery_note = list(set(invoice_so_dn_map.get(inv.name, {}).get("delivery_note", []))) - row = [inv.name, inv.posting_date, inv.customer_name, inv.debit_to, + row = [inv.name, inv.posting_date, inv.customer, inv.customer_name, inv.debit_to, account_map.get(inv.debit_to), customer_map.get(inv.customer), inv.project_name, inv.remarks, ", ".join(sales_order), ", ".join(delivery_note)] @@ -76,10 +76,10 @@ def execute(filters=None): def get_columns(invoice_list): """return columns based on filters""" columns = [ - "Invoice:Link/Sales Invoice:120", "Posting Date:Date:80", "Customer::120", - "Customer Account:Link/Account:120", "Account Group:LInk/Account:120", - "Territory:Link/Territory:80", "Project:Link/Project:80", - "Remarks::150", "Sales Order:Link/Sales Order:100", "Delivery Note:Link/Delivery Note:100" + "Invoice:Link/Sales Invoice:120", "Posting Date:Date:80", "Customer Id::120", + "Customer Name::120", "Customer Account:Link/Account:120", "Account Group:LInk/Account:120", + "Territory:Link/Territory:80", "Project:Link/Project:80", "Remarks::150", + "Sales Order:Link/Sales Order:100", "Delivery Note:Link/Delivery Note:100" ] income_accounts = tax_accounts = income_columns = tax_columns = [] diff --git a/buying/doctype/purchase_order/purchase_order.txt b/buying/doctype/purchase_order/purchase_order.txt index a79d98e2b94..8f69a349fee 100644 --- a/buying/doctype/purchase_order/purchase_order.txt +++ b/buying/doctype/purchase_order/purchase_order.txt @@ -2,7 +2,7 @@ { "creation": "2013-05-21 16:16:39", "docstatus": 0, - "modified": "2013-07-23 15:26:28", + "modified": "2013-08-01 16:49:16", "modified_by": "Administrator", "owner": "Administrator" }, @@ -191,7 +191,6 @@ "reqd": 1 }, { - "default": "1", "description": "Rate at which supplier's currency is converted to company's base currency", "doctype": "DocField", "fieldname": "conversion_rate", @@ -313,7 +312,7 @@ "fieldname": "purchase_other_charges", "fieldtype": "Link", "label": "Purchase Taxes and Charges", - "no_copy": 1, + "no_copy": 0, "oldfieldname": "purchase_other_charges", "oldfieldtype": "Link", "options": "Purchase Taxes and Charges Master", diff --git a/buying/doctype/supplier_quotation/supplier_quotation.txt b/buying/doctype/supplier_quotation/supplier_quotation.txt index e18e0111c7e..8ac5060b48c 100644 --- a/buying/doctype/supplier_quotation/supplier_quotation.txt +++ b/buying/doctype/supplier_quotation/supplier_quotation.txt @@ -2,7 +2,7 @@ { "creation": "2013-05-21 16:16:45", "docstatus": 0, - "modified": "2013-07-23 15:27:23", + "modified": "2013-08-01 16:49:33", "modified_by": "Administrator", "owner": "Administrator" }, @@ -186,7 +186,6 @@ "reqd": 1 }, { - "default": "1", "description": "Rate at which supplier's currency is converted to company's base currency", "doctype": "DocField", "fieldname": "conversion_rate", diff --git a/controllers/accounts_controller.py b/controllers/accounts_controller.py index 725fdb32797..e3e5d5eaf38 100644 --- a/controllers/accounts_controller.py +++ b/controllers/accounts_controller.py @@ -67,6 +67,7 @@ class AccountsController(TransactionBase): self.doc.doctype + _(" can not be made."), raise_exception=1) def set_price_list_currency(self, buying_or_selling): + company_currency = get_company_currency(self.doc.company) # TODO - change this, since price list now has only one currency allowed if self.meta.get_field("price_list_name") and self.doc.price_list_name and \ not self.doc.price_list_currency: @@ -74,7 +75,6 @@ class AccountsController(TransactionBase): if self.doc.price_list_currency: if not self.doc.plc_conversion_rate: - company_currency = get_company_currency(self.doc.company) if self.doc.price_list_currency == company_currency: self.doc.plc_conversion_rate = 1.0 else: @@ -86,6 +86,12 @@ class AccountsController(TransactionBase): self.doc.currency = self.doc.price_list_currency self.doc.conversion_rate = self.doc.plc_conversion_rate + if self.meta.get_field("currency") and self.doc.currency != company_currency and \ + not self.doc.conversion_rate: + exchange = self.doc.currency + "-" + company_currency + self.doc.conversion_rate = flt(webnotes.conn.get_value("Currency Exchange", + exchange, "exchange_rate")) + def set_missing_item_details(self, get_item_details): """set missing item values""" for item in self.doclist.get({"parentfield": self.fname}): @@ -394,7 +400,6 @@ class AccountsController(TransactionBase): total_billed_amt = flt(flt(already_billed) + flt(item.fields[based_on]), self.precision(based_on, item)) - webnotes.errprint([max_allowed_amt, total_billed_amt]) if max_allowed_amt and total_billed_amt - max_allowed_amt > 0.02: webnotes.msgprint(_("Row ")+ cstr(item.idx) + ": " + cstr(item.item_code) + diff --git a/controllers/queries.py b/controllers/queries.py index caa2f6f0650..462c22d914c 100644 --- a/controllers/queries.py +++ b/controllers/queries.py @@ -23,7 +23,7 @@ def get_filters_cond(doctype, filters, conditions): filters = filters.items() flt = [] for f in filters: - if f[1][0] == '!': + if isinstance(f[1], basestring) and f[1][0] == '!': flt.append([doctype, f[0], '!=', f[1][1:]]) else: flt.append([doctype, f[0], '=', f[1]]) @@ -204,4 +204,20 @@ def get_price_list_currency(doctype, txt, searchfield, start, page_len, filters) and `%s` like %s order by ref_currency asc limit %s, %s""" % ("%s", "%s", searchfield, "%s", "%s", "%s"), (filters["price_list_name"], filters['buying_or_selling'], "%%%s%%" % txt, - start, page_len)) \ No newline at end of file + start, page_len)) + +def get_delivery_notes_to_be_billed(doctype, txt, searchfield, start, page_len, filters): + return webnotes.conn.sql("""select `tabDelivery Note`.name, `tabDelivery Note`.customer_name + from `tabDelivery Note` + where `tabDelivery Note`.`%(key)s` like %(txt)s %(fcond)s and + (ifnull((select sum(qty) from `tabDelivery Note Item` where + `tabDelivery Note Item`.parent=`tabDelivery Note`.name), 0) > + ifnull((select sum(qty) from `tabSales Invoice Item` where + `tabSales Invoice Item`.delivery_note=`tabDelivery Note`.name), 0)) + %(mcond)s order by `tabDelivery Note`.`%(key)s` asc + limit %(start)s, %(page_len)s""" % { + "key": searchfield, + "fcond": get_filters_cond(doctype, filters, []), + "mcond": get_match_cond(doctype), + "start": "%(start)s", "page_len": "%(page_len)s", "txt": "%(txt)s" + }, { "start": start, "page_len": page_len, "txt": ("%%%s%%" % txt) }, debug=True) \ No newline at end of file diff --git a/public/js/feature_setup.js b/public/js/feature_setup.js index add4bfda9a5..4ce50f0a8bb 100644 --- a/public/js/feature_setup.js +++ b/public/js/feature_setup.js @@ -127,12 +127,12 @@ pscript.feature_dict = { 'Sales Order': {'sales_order_details':['page_break']} }, 'fs_exports': { - 'Delivery Note': {'fields':['conversion_rate','currency','grand_total_export','in_words_export','rounded_total_export'],'delivery_note_details':['base_ref_rate','amount','basic_rate']}, + 'Delivery Note': {'fields':['conversion_rate','currency','grand_total','in_words','rounded_total'],'delivery_note_details':['base_ref_rate','amount','basic_rate']}, 'POS Setting': {'fields':['conversion_rate','currency']}, - 'Quotation': {'fields':['conversion_rate','currency','grand_total_export','in_words_export','rounded_total_export'],'quotation_details':['base_ref_rate','amount','basic_rate']}, - 'Sales Invoice': {'fields':['conversion_rate','currency','grand_total_export','in_words_export','rounded_total_export'],'entries':['base_ref_rate','amount','basic_rate']}, + 'Quotation': {'fields':['conversion_rate','currency','grand_total','in_words','rounded_total'],'quotation_details':['base_ref_rate','amount','basic_rate']}, + 'Sales Invoice': {'fields':['conversion_rate','currency','grand_total','in_words','rounded_total'],'entries':['base_ref_rate','amount','basic_rate']}, 'Sales BOM': {'fields':['currency']}, - 'Sales Order': {'fields':['conversion_rate','currency','grand_total_export','in_words_export','rounded_total_export'],'sales_order_details':['base_ref_rate','amount','basic_rate']} + 'Sales Order': {'fields':['conversion_rate','currency','grand_total','in_words','rounded_total'],'sales_order_details':['base_ref_rate','amount','basic_rate']} }, 'fs_imports': { diff --git a/public/js/startup.css b/public/js/startup.css index 835e2bd8b65..d15b7a4791d 100644 --- a/public/js/startup.css +++ b/public/js/startup.css @@ -20,8 +20,8 @@ span, div, td, input, textarea, button, select { } .expiry-info { - margin-top: 40px; - margin-bottom: -40px; + margin-top: -20px; + margin-bottom: 20px; text-align: center; background-color: rgb(255, 255, 204); padding: 7px; diff --git a/public/js/toolbar.js b/public/js/toolbar.js index c50f1ed14bf..f54996942b7 100644 --- a/public/js/toolbar.js +++ b/public/js/toolbar.js @@ -24,11 +24,14 @@ erpnext.toolbar.setup = function() { +wn._("My Settings")+'...'); $user.append('
'); $user.append('Email Settings
\
Integrate incoming support emails to Support Ticket