Merge branch 'master' into edge
Conflicts:
accounts/doctype/sales_invoice/sales_invoice.txt
stock/doctype/item/item.txt
diff --git a/accounts/doctype/purchase_invoice/purchase_invoice_list.js b/accounts/doctype/purchase_invoice/purchase_invoice_list.js
index a3f667f..7b410a3 100644
--- a/accounts/doctype/purchase_invoice/purchase_invoice_list.js
+++ b/accounts/doctype/purchase_invoice/purchase_invoice_list.js
@@ -1,9 +1,9 @@
// render
wn.listview_settings['Purchase Invoice'] = {
add_fields: ["`tabPurchase Invoice`.grand_total", "`tabPurchase Invoice`.outstanding_amount"],
- add_columns: [{"content":"outstanding_amount", width:"10%", type:"bar-graph", label: "Paid"}],
+ add_columns: [{"content":"paid_amount", width:"10%", type:"bar-graph", label: "Paid"}],
prepare_data: function(data) {
- data.outstanding_amount = ((flt(data.grand_total) -
- flt(data.outstanding_amount)) / flt(data.grand_total)) * 100;
+ data.paid_amount = flt(data.grand_total) ? (((flt(data.grand_total) -
+ flt(data.outstanding_amount)) / flt(data.grand_total)) * 100) : 0;
}
};
diff --git a/accounts/doctype/sales_invoice/sales_invoice.js b/accounts/doctype/sales_invoice/sales_invoice.js
index 7863306..be6ec3d 100644
--- a/accounts/doctype/sales_invoice/sales_invoice.js
+++ b/accounts/doctype/sales_invoice/sales_invoice.js
@@ -159,7 +159,6 @@
cur_frm.cscript.hide_fields(doc, dt, dn);
}
-
cur_frm.cscript.warehouse = function(doc, cdt , cdn) {
var d = locals[cdt][cdn];
if (!d.item_code) { msgprint("please enter item code first"); return };
diff --git a/accounts/doctype/sales_invoice/sales_invoice.txt b/accounts/doctype/sales_invoice/sales_invoice.txt
index 442e665..a2c422f 100644
--- a/accounts/doctype/sales_invoice/sales_invoice.txt
+++ b/accounts/doctype/sales_invoice/sales_invoice.txt
@@ -1,8 +1,8 @@
[
{
- "creation": "2013-04-09 10:18:11",
+ "creation": "2013-04-19 11:00:14",
"docstatus": 0,
- "modified": "2013-03-22 18:38:13",
+ "modified": "2013-04-22 11:59:28",
"modified_by": "Administrator",
"owner": "Administrator"
},
@@ -42,7 +42,8 @@
"fieldtype": "Section Break",
"label": "Basic Info",
"oldfieldtype": "Section Break",
- "print_hide": 1
+ "print_hide": 1,
+ "read_only": 0
},
{
"doctype": "DocField",
@@ -50,6 +51,7 @@
"fieldtype": "Column Break",
"oldfieldtype": "Column Break",
"print_hide": 0,
+ "read_only": 0,
"width": "50%"
},
{
@@ -63,6 +65,7 @@
"oldfieldtype": "Select",
"options": "INV\nINV/10-11/",
"print_hide": 1,
+ "read_only": 0,
"reqd": 1
},
{
@@ -72,7 +75,8 @@
"label": "Is POS",
"oldfieldname": "is_pos",
"oldfieldtype": "Check",
- "print_hide": 1
+ "print_hide": 1,
+ "read_only": 0
},
{
"depends_on": "eval:doc.is_pos==1",
@@ -82,7 +86,8 @@
"label": "Update Stock",
"oldfieldname": "update_stock",
"oldfieldtype": "Check",
- "print_hide": 1
+ "print_hide": 1,
+ "read_only": 0
},
{
"description": "The account to which you will pay (have paid) the money to.",
@@ -95,6 +100,7 @@
"oldfieldtype": "Link",
"options": "Account",
"print_hide": 1,
+ "read_only": 0,
"reqd": 1,
"search_index": 1
},
@@ -108,7 +114,8 @@
"oldfieldname": "customer",
"oldfieldtype": "Link",
"options": "Customer",
- "print_hide": 1
+ "print_hide": 1,
+ "read_only": 0
},
{
"doctype": "DocField",
@@ -158,7 +165,8 @@
"doctype": "DocField",
"fieldname": "column_break1",
"fieldtype": "Column Break",
- "oldfieldtype": "Column Break"
+ "oldfieldtype": "Column Break",
+ "read_only": 0
},
{
"default": "Today",
@@ -172,6 +180,7 @@
"oldfieldname": "posting_date",
"oldfieldtype": "Date",
"print_hide": 0,
+ "read_only": 0,
"reqd": 1,
"search_index": 1
},
@@ -186,6 +195,7 @@
"no_copy": 1,
"oldfieldname": "due_date",
"oldfieldtype": "Date",
+ "read_only": 0,
"reqd": 1,
"search_index": 0
},
@@ -196,14 +206,16 @@
"label": "Mode of Payment",
"oldfieldname": "mode_of_payment",
"oldfieldtype": "Select",
- "options": "link:Mode of Payment"
+ "options": "link:Mode of Payment",
+ "read_only": 0
},
{
"doctype": "DocField",
"fieldname": "items",
"fieldtype": "Section Break",
"label": "Items",
- "oldfieldtype": "Section Break"
+ "oldfieldtype": "Section Break",
+ "read_only": 0
},
{
"allow_on_submit": 1,
@@ -213,25 +225,29 @@
"label": "Entries",
"oldfieldname": "entries",
"oldfieldtype": "Table",
- "options": "Sales Invoice Item"
+ "options": "Sales Invoice Item",
+ "read_only": 0
},
{
"doctype": "DocField",
"fieldname": "sales_bom_help",
"fieldtype": "HTML",
"label": "Sales BOM Help",
- "print_hide": 1
+ "print_hide": 1,
+ "read_only": 0
},
{
"doctype": "DocField",
"fieldname": "section_break0",
"fieldtype": "Section Break",
- "options": "Simple"
+ "options": "Simple",
+ "read_only": 0
},
{
"doctype": "DocField",
"fieldname": "col_break26",
"fieldtype": "Column Break",
+ "read_only": 0,
"width": "50%"
},
{
@@ -253,12 +269,14 @@
"fieldtype": "Button",
"label": "Re-Calculate Values",
"oldfieldtype": "Button",
- "print_hide": 1
+ "print_hide": 1,
+ "read_only": 0
},
{
"doctype": "DocField",
"fieldname": "col_break25",
"fieldtype": "Column Break",
+ "read_only": 0,
"width": "50%"
},
{
@@ -270,7 +288,8 @@
"oldfieldname": "sales_order_main",
"oldfieldtype": "Link",
"options": "Sales Order",
- "print_hide": 1
+ "print_hide": 1,
+ "read_only": 0
},
{
"description": "Select Items from Delivery Note",
@@ -281,7 +300,8 @@
"oldfieldname": "delivery_note_main",
"oldfieldtype": "Link",
"options": "Delivery Note",
- "print_hide": 1
+ "print_hide": 1,
+ "read_only": 0
},
{
"doctype": "DocField",
@@ -289,18 +309,21 @@
"fieldtype": "Button",
"label": "Get Items",
"oldfieldtype": "Button",
- "print_hide": 1
+ "print_hide": 1,
+ "read_only": 0
},
{
"doctype": "DocField",
"fieldname": "currency_section",
"fieldtype": "Section Break",
- "label": "Price List and Currency"
+ "label": "Price List and Currency",
+ "read_only": 0
},
{
"doctype": "DocField",
"fieldname": "col_break27",
"fieldtype": "Column Break",
+ "read_only": 0,
"width": "50%"
},
{
@@ -312,6 +335,7 @@
"oldfieldtype": "Select",
"options": "link:Price List",
"print_hide": 1,
+ "read_only": 0,
"reqd": 1
},
{
@@ -322,6 +346,7 @@
"label": "Price List Currency",
"options": "Currency",
"print_hide": 1,
+ "read_only": 0,
"reqd": 1
},
{
@@ -331,12 +356,14 @@
"fieldtype": "Float",
"label": "Price List Currency Conversion Rate",
"print_hide": 1,
+ "read_only": 0,
"reqd": 1
},
{
"doctype": "DocField",
"fieldname": "column_break2",
"fieldtype": "Column Break",
+ "read_only": 0,
"width": "50%"
},
{
@@ -348,6 +375,7 @@
"oldfieldtype": "Select",
"options": "Currency",
"print_hide": 1,
+ "read_only": 0,
"reqd": 1
},
{
@@ -360,6 +388,7 @@
"oldfieldname": "conversion_rate",
"oldfieldtype": "Currency",
"print_hide": 1,
+ "read_only": 0,
"reqd": 1
},
{
@@ -367,7 +396,8 @@
"fieldname": "taxes",
"fieldtype": "Section Break",
"label": "Taxes and Charges",
- "oldfieldtype": "Section Break"
+ "oldfieldtype": "Section Break",
+ "read_only": 0
},
{
"doctype": "DocField",
@@ -377,7 +407,8 @@
"oldfieldname": "charge",
"oldfieldtype": "Link",
"options": "Sales Taxes and Charges Master",
- "print_hide": 1
+ "print_hide": 1,
+ "read_only": 0
},
{
"doctype": "DocField",
@@ -385,7 +416,8 @@
"fieldtype": "Button",
"label": "Get Taxes and Charges",
"oldfieldtype": "Button",
- "print_hide": 1
+ "print_hide": 1,
+ "read_only": 0
},
{
"allow_on_submit": 1,
@@ -395,7 +427,8 @@
"label": "Taxes and Charges1",
"oldfieldname": "other_charges",
"oldfieldtype": "Table",
- "options": "Sales Taxes and Charges"
+ "options": "Sales Taxes and Charges",
+ "read_only": 0
},
{
"doctype": "DocField",
@@ -403,7 +436,8 @@
"fieldtype": "Button",
"label": "Calculate Taxes and Charges",
"oldfieldtype": "Button",
- "print_hide": 1
+ "print_hide": 1,
+ "read_only": 0
},
{
"doctype": "DocField",
@@ -422,7 +456,8 @@
"fieldtype": "HTML",
"label": "Taxes and Charges Calculation",
"oldfieldtype": "HTML",
- "print_hide": 1
+ "print_hide": 1,
+ "read_only": 0
},
{
"doctype": "DocField",
@@ -430,7 +465,8 @@
"fieldtype": "Section Break",
"label": "Totals",
"oldfieldtype": "Section Break",
- "print_hide": 1
+ "print_hide": 1,
+ "read_only": 0
},
{
"doctype": "DocField",
@@ -438,6 +474,7 @@
"fieldtype": "Column Break",
"oldfieldtype": "Column Break",
"print_hide": 1,
+ "read_only": 0,
"width": "50%"
},
{
@@ -506,6 +543,7 @@
"fieldtype": "Column Break",
"oldfieldtype": "Column Break",
"print_hide": 1,
+ "read_only": 0,
"width": "50%"
},
{
@@ -567,12 +605,14 @@
"doctype": "DocField",
"fieldname": "payments_section",
"fieldtype": "Section Break",
- "label": "Payments"
+ "label": "Payments",
+ "read_only": 0
},
{
"doctype": "DocField",
"fieldname": "column_break3",
"fieldtype": "Column Break",
+ "read_only": 0,
"width": "50%"
},
{
@@ -583,7 +623,8 @@
"oldfieldname": "paid_amount",
"oldfieldtype": "Currency",
"options": "Company:company:default_currency",
- "print_hide": 1
+ "print_hide": 1,
+ "read_only": 0
},
{
"doctype": "DocField",
@@ -593,12 +634,14 @@
"oldfieldname": "cash_bank_account",
"oldfieldtype": "Link",
"options": "Account",
- "print_hide": 1
+ "print_hide": 1,
+ "read_only": 0
},
{
"doctype": "DocField",
"fieldname": "column_break4",
"fieldtype": "Column Break",
+ "read_only": 0,
"width": "50%"
},
{
@@ -606,7 +649,8 @@
"fieldname": "write_off_outstanding_amount_automatically",
"fieldtype": "Check",
"label": "Write Off Outstanding Amount",
- "print_hide": 1
+ "print_hide": 1,
+ "read_only": 0
},
{
"doctype": "DocField",
@@ -614,7 +658,8 @@
"fieldtype": "Currency",
"label": "Write Off Amount",
"options": "Company:company:default_currency",
- "print_hide": 1
+ "print_hide": 1,
+ "read_only": 0
},
{
"doctype": "DocField",
@@ -622,7 +667,8 @@
"fieldtype": "Link",
"label": "Write Off Account",
"options": "Account",
- "print_hide": 1
+ "print_hide": 1,
+ "read_only": 0
},
{
"doctype": "DocField",
@@ -630,14 +676,16 @@
"fieldtype": "Link",
"label": "Write Off Cost Center",
"options": "Cost Center",
- "print_hide": 1
+ "print_hide": 1,
+ "read_only": 0
},
{
"doctype": "DocField",
"fieldname": "terms_section_break",
"fieldtype": "Section Break",
"label": "Terms and Conditions",
- "oldfieldtype": "Section Break"
+ "oldfieldtype": "Section Break",
+ "read_only": 0
},
{
"doctype": "DocField",
@@ -647,7 +695,8 @@
"oldfieldname": "tc_name",
"oldfieldtype": "Link",
"options": "Terms and Conditions",
- "print_hide": 1
+ "print_hide": 1,
+ "read_only": 0
},
{
"doctype": "DocField",
@@ -656,7 +705,8 @@
"label": "Get Terms and Conditions",
"oldfieldtype": "Button",
"options": "get_tc_details",
- "print_hide": 1
+ "print_hide": 1,
+ "read_only": 0
},
{
"doctype": "DocField",
@@ -665,7 +715,8 @@
"label": "Terms and Conditions HTML",
"oldfieldtype": "HTML",
"options": "You can add Terms and Notes that will be printed in the Transaction",
- "print_hide": 1
+ "print_hide": 1,
+ "read_only": 0
},
{
"doctype": "DocField",
@@ -673,18 +724,21 @@
"fieldtype": "Text Editor",
"label": "Terms and Conditions Details",
"oldfieldname": "terms",
- "oldfieldtype": "Text Editor"
+ "oldfieldtype": "Text Editor",
+ "read_only": 0
},
{
"doctype": "DocField",
"fieldname": "contact_section",
"fieldtype": "Section Break",
- "label": "Contact Info"
+ "label": "Contact Info",
+ "read_only": 0
},
{
"doctype": "DocField",
"fieldname": "col_break23",
"fieldtype": "Column Break",
+ "read_only": 0,
"width": "50%"
},
{
@@ -693,7 +747,8 @@
"fieldtype": "Link",
"label": "Customer Address",
"options": "Address",
- "print_hide": 1
+ "print_hide": 1,
+ "read_only": 0
},
{
"doctype": "DocField",
@@ -701,12 +756,14 @@
"fieldtype": "Link",
"label": "Contact Person",
"options": "Contact",
- "print_hide": 1
+ "print_hide": 1,
+ "read_only": 0
},
{
"doctype": "DocField",
"fieldname": "col_break24",
"fieldtype": "Column Break",
+ "read_only": 0,
"width": "50%"
},
{
@@ -717,6 +774,7 @@
"label": "Territory",
"options": "Territory",
"print_hide": 1,
+ "read_only": 0,
"reqd": 1,
"search_index": 0
},
@@ -728,6 +786,7 @@
"label": "Customer Group",
"options": "Customer Group",
"print_hide": 1,
+ "read_only": 0,
"search_index": 0
},
{
@@ -736,7 +795,8 @@
"fieldtype": "Section Break",
"label": "More Info",
"oldfieldtype": "Section Break",
- "print_hide": 1
+ "print_hide": 1,
+ "read_only": 0
},
{
"doctype": "DocField",
@@ -744,6 +804,7 @@
"fieldtype": "Column Break",
"oldfieldtype": "Column Break",
"print_hide": 1,
+ "read_only": 0,
"width": "50%"
},
{
@@ -758,6 +819,7 @@
"oldfieldtype": "Select",
"options": "No\nYes",
"print_hide": 1,
+ "read_only": 0,
"search_index": 0
},
{
@@ -768,7 +830,8 @@
"label": "Aging Date",
"oldfieldname": "aging_date",
"oldfieldtype": "Date",
- "print_hide": 1
+ "print_hide": 1,
+ "read_only": 0
},
{
"doctype": "DocField",
@@ -778,7 +841,8 @@
"no_copy": 1,
"oldfieldname": "posting_time",
"oldfieldtype": "Time",
- "print_hide": 1
+ "print_hide": 1,
+ "read_only": 0
},
{
"allow_on_submit": 1,
@@ -789,7 +853,8 @@
"oldfieldname": "letter_head",
"oldfieldtype": "Select",
"options": "link:Letter Head",
- "print_hide": 1
+ "print_hide": 1,
+ "read_only": 0
},
{
"doctype": "DocField",
@@ -799,6 +864,7 @@
"no_copy": 1,
"options": "No\nYes",
"print_hide": 1,
+ "read_only": 0,
"report_hide": 0
},
{
@@ -820,7 +886,8 @@
"oldfieldname": "campaign",
"oldfieldtype": "Link",
"options": "Campaign",
- "print_hide": 1
+ "print_hide": 1,
+ "read_only": 0
},
{
"description": "Track this Sales Invoice against any Project",
@@ -832,6 +899,7 @@
"oldfieldname": "project_name",
"oldfieldtype": "Link",
"options": "Project",
+ "read_only": 0,
"search_index": 1
},
{
@@ -845,6 +913,7 @@
"oldfieldtype": "Link",
"options": "Print Heading",
"print_hide": 1,
+ "read_only": 0,
"report_hide": 1
},
{
@@ -852,7 +921,8 @@
"fieldname": "column_break8",
"fieldtype": "Column Break",
"oldfieldtype": "Column Break",
- "print_hide": 1
+ "print_hide": 1,
+ "read_only": 0
},
{
"doctype": "DocField",
@@ -862,7 +932,8 @@
"oldfieldname": "source",
"oldfieldtype": "Select",
"options": "\nExisting Customer\nReference\nAdvertisement\nCold Calling\nExhibition\nSupplier Reference\nMass Mailing\nCustomer's Vendor\nCampaign",
- "print_hide": 1
+ "print_hide": 1,
+ "read_only": 0
},
{
"doctype": "DocField",
@@ -874,6 +945,7 @@
"oldfieldtype": "Link",
"options": "Company",
"print_hide": 1,
+ "read_only": 0,
"reqd": 1,
"search_index": 0
},
@@ -888,6 +960,7 @@
"oldfieldtype": "Select",
"options": "link:Fiscal Year",
"print_hide": 1,
+ "read_only": 0,
"reqd": 1,
"search_index": 0
},
@@ -912,7 +985,8 @@
"no_copy": 1,
"oldfieldname": "amendment_date",
"oldfieldtype": "Date",
- "print_hide": 1
+ "print_hide": 1,
+ "read_only": 0
},
{
"depends_on": "eval:!doc.__islocal",
@@ -934,6 +1008,7 @@
"oldfieldname": "remarks",
"oldfieldtype": "Text",
"print_hide": 1,
+ "read_only": 0,
"reqd": 0
},
{
@@ -942,7 +1017,8 @@
"fieldtype": "Section Break",
"label": "Advances",
"oldfieldtype": "Section Break",
- "print_hide": 1
+ "print_hide": 1,
+ "read_only": 0
},
{
"doctype": "DocField",
@@ -951,7 +1027,8 @@
"label": "Get Advances Received",
"oldfieldtype": "Button",
"options": "get_advances",
- "print_hide": 1
+ "print_hide": 1,
+ "read_only": 0
},
{
"doctype": "DocField",
@@ -961,14 +1038,16 @@
"oldfieldname": "advance_adjustment_details",
"oldfieldtype": "Table",
"options": "Sales Invoice Advance",
- "print_hide": 1
+ "print_hide": 1,
+ "read_only": 0
},
{
"doctype": "DocField",
"fieldname": "packing_list",
"fieldtype": "Section Break",
"label": "Packing List",
- "print_hide": 1
+ "print_hide": 1,
+ "read_only": 0
},
{
"doctype": "DocField",
@@ -976,7 +1055,8 @@
"fieldtype": "Table",
"label": "Packing Details",
"options": "Delivery Note Packing Item",
- "print_hide": 1
+ "print_hide": 1,
+ "read_only": 0
},
{
"doctype": "DocField",
@@ -984,7 +1064,8 @@
"fieldtype": "Section Break",
"label": "Sales Team",
"oldfieldtype": "Section Break",
- "print_hide": 1
+ "print_hide": 1,
+ "read_only": 0
},
{
"doctype": "DocField",
@@ -992,6 +1073,7 @@
"fieldtype": "Column Break",
"oldfieldtype": "Column Break",
"print_hide": 1,
+ "read_only": 0,
"width": "50%"
},
{
@@ -1003,7 +1085,8 @@
"oldfieldname": "sales_partner",
"oldfieldtype": "Link",
"options": "Sales Partner",
- "print_hide": 1
+ "print_hide": 1,
+ "read_only": 0
},
{
"doctype": "DocField",
@@ -1011,6 +1094,7 @@
"fieldtype": "Column Break",
"oldfieldtype": "Column Break",
"print_hide": 1,
+ "read_only": 0,
"width": "50%"
},
{
@@ -1020,7 +1104,8 @@
"label": "Commission Rate (%)",
"oldfieldname": "commission_rate",
"oldfieldtype": "Currency",
- "print_hide": 1
+ "print_hide": 1,
+ "read_only": 0
},
{
"doctype": "DocField",
@@ -1030,14 +1115,16 @@
"oldfieldname": "total_commission",
"oldfieldtype": "Currency",
"options": "Company:company:default_currency",
- "print_hide": 1
+ "print_hide": 1,
+ "read_only": 0
},
{
"doctype": "DocField",
"fieldname": "section_break2",
"fieldtype": "Section Break",
"options": "Simple",
- "print_hide": 1
+ "print_hide": 1,
+ "read_only": 0
},
{
"doctype": "DocField",
@@ -1047,7 +1134,8 @@
"oldfieldname": "sales_team",
"oldfieldtype": "Table",
"options": "Sales Team",
- "print_hide": 1
+ "print_hide": 1,
+ "read_only": 0
},
{
"depends_on": "eval:doc.docstatus<2",
@@ -1055,13 +1143,15 @@
"fieldname": "recurring_invoice",
"fieldtype": "Section Break",
"label": "Recurring Invoice",
- "print_hide": 1
+ "print_hide": 1,
+ "read_only": 0
},
{
"doctype": "DocField",
"fieldname": "column_break11",
"fieldtype": "Column Break",
"print_hide": 1,
+ "read_only": 0,
"width": "50%"
},
{
@@ -1073,7 +1163,8 @@
"fieldtype": "Check",
"label": "Convert into Recurring Invoice",
"no_copy": 1,
- "print_hide": 1
+ "print_hide": 1,
+ "read_only": 0
},
{
"allow_on_submit": 1,
@@ -1085,7 +1176,8 @@
"label": "Recurring Type",
"no_copy": 1,
"options": "Monthly\nQuarterly\nHalf-yearly\nYearly",
- "print_hide": 1
+ "print_hide": 1,
+ "read_only": 0
},
{
"allow_on_submit": 1,
@@ -1096,7 +1188,8 @@
"fieldtype": "Int",
"label": "Repeat on Day of Month",
"no_copy": 1,
- "print_hide": 1
+ "print_hide": 1,
+ "read_only": 0
},
{
"allow_on_submit": 1,
@@ -1107,7 +1200,8 @@
"fieldtype": "Date",
"label": "Invoice Period From Date",
"no_copy": 1,
- "print_hide": 1
+ "print_hide": 1,
+ "read_only": 0
},
{
"allow_on_submit": 1,
@@ -1118,7 +1212,8 @@
"fieldtype": "Date",
"label": "Invoice Period To Date",
"no_copy": 1,
- "print_hide": 1
+ "print_hide": 1,
+ "read_only": 0
},
{
"doctype": "DocField",
@@ -1126,6 +1221,7 @@
"fieldtype": "Column Break",
"no_copy": 0,
"print_hide": 1,
+ "read_only": 0,
"width": "50%"
},
{
@@ -1137,7 +1233,8 @@
"fieldtype": "Small Text",
"label": "Notification Email Address",
"no_copy": 1,
- "print_hide": 1
+ "print_hide": 1,
+ "read_only": 0
},
{
"depends_on": "eval:doc.convert_into_recurring_invoice==1",
@@ -1170,7 +1267,8 @@
"fieldtype": "Date",
"label": "End Date",
"no_copy": 1,
- "print_hide": 1
+ "print_hide": 1,
+ "read_only": 0
},
{
"doctype": "DocField",
@@ -1182,64 +1280,25 @@
"oldfieldname": "against_income_account",
"oldfieldtype": "Small Text",
"print_hide": 1,
+ "read_only": 0,
"report_hide": 1
},
{
- "amend": 0,
- "cancel": 0,
- "create": 0,
- "doctype": "DocPerm",
- "match": "",
- "permlevel": 1,
- "report": 0,
- "role": "Accounts Manager",
- "submit": 0,
- "write": 0
- },
- {
"amend": 1,
"cancel": 1,
"create": 1,
"doctype": "DocPerm",
"permlevel": 0,
"report": 1,
- "role": "Accounts Manager",
- "submit": 1,
- "write": 1
- },
- {
- "amend": 1,
- "cancel": 0,
- "create": 1,
- "doctype": "DocPerm",
- "permlevel": 0,
- "report": 1,
"role": "Accounts User",
"submit": 1,
"write": 1
},
{
- "amend": 0,
- "cancel": 0,
- "create": 0,
- "doctype": "DocPerm",
- "match": "",
- "permlevel": 1,
- "report": 0,
- "role": "Accounts User",
- "submit": 0,
- "write": 0
- },
- {
"doctype": "DocPerm",
"match": "customer",
"permlevel": 0,
"report": 1,
"role": "Customer"
},
- {
- "doctype": "DocPerm",
- "permlevel": 0,
- "role": "Retail User"
- }
]
\ No newline at end of file
diff --git a/accounts/doctype/sales_invoice/sales_invoice_list.js b/accounts/doctype/sales_invoice/sales_invoice_list.js
index 14d92f2..e83611a 100644
--- a/accounts/doctype/sales_invoice/sales_invoice_list.js
+++ b/accounts/doctype/sales_invoice/sales_invoice_list.js
@@ -1,10 +1,10 @@
// render
wn.listview_settings['Sales Invoice'] = {
add_fields: ["`tabSales Invoice`.grand_total", "`tabSales Invoice`.outstanding_amount"],
- add_columns: [{"content":"outstanding_amount", width:"10%", type:"bar-graph",
+ add_columns: [{"content":"paid_amount", width:"10%", type:"bar-graph",
label: "Payment Received"}],
prepare_data: function(data) {
- data.outstanding_amount = (flt(data.grand_total) -
- flt(data.outstanding_amount)) / flt(data.grand_total) * 100;
+ data.paid_amount = flt(data.grand_total) ? (((flt(data.grand_total) -
+ flt(data.outstanding_amount)) / flt(data.grand_total)) * 100) : 0;
}
};
diff --git a/accounts/page/accounts_home/accounts_home.js b/accounts/page/accounts_home/accounts_home.js
index 9981ee9..0dd00ed 100644
--- a/accounts/page/accounts_home/accounts_home.js
+++ b/accounts/page/accounts_home/accounts_home.js
@@ -139,6 +139,11 @@
"page":"Financial Statements",
"label": wn._("Financial Statements")
},
+ {
+ "label":wn._("Accounts Receivable"),
+ route: "query-report/Accounts Receivable",
+ doctype: "Sales Invoice"
+ },
]
},
{
diff --git a/accounts/report/accounts_receivable/__init__.py b/accounts/report/accounts_receivable/__init__.py
new file mode 100644
index 0000000..e69de29
--- /dev/null
+++ b/accounts/report/accounts_receivable/__init__.py
diff --git a/accounts/report/accounts_receivable/accounts_receivable.js b/accounts/report/accounts_receivable/accounts_receivable.js
new file mode 100644
index 0000000..68c8593
--- /dev/null
+++ b/accounts/report/accounts_receivable/accounts_receivable.js
@@ -0,0 +1,42 @@
+wn.query_reports["Accounts Receivable"] = {
+ "filters": [
+ {
+ "fieldname":"company",
+ "label": "Company",
+ "fieldtype": "Link",
+ "options": "Company",
+ "default": sys_defaults.company
+ },
+ {
+ "fieldname":"account",
+ "label": "Account",
+ "fieldtype": "Link",
+ "options": "Account",
+ "get_query": function() {
+ var company = wn.query_report.filters_by_name.company.get_value();
+ return {
+ "query": "accounts.utils.get_account_list",
+ "filters": {
+ "is_pl_account": "No",
+ "debit_or_credit": "Debit",
+ "company": company,
+ "master_type": "Customer"
+ }
+ }
+ }
+ },
+ {
+ "fieldname":"report_date",
+ "label": "Date",
+ "fieldtype": "Date",
+ "default": get_today()
+ },
+ {
+ "fieldname":"ageing_based_on",
+ "label": "Ageing Based On",
+ "fieldtype": "Select",
+ "options": 'Posting Date' + NEWLINE + 'Due Date',
+ "default": "Posting Date"
+ }
+ ]
+}
\ No newline at end of file
diff --git a/accounts/report/accounts_receivable/accounts_receivable.py b/accounts/report/accounts_receivable/accounts_receivable.py
new file mode 100644
index 0000000..4c0d4e1
--- /dev/null
+++ b/accounts/report/accounts_receivable/accounts_receivable.py
@@ -0,0 +1,141 @@
+from __future__ import unicode_literals
+import webnotes
+from webnotes.utils import getdate, nowdate, flt, cstr
+
+def execute(filters=None):
+ if not filters: filters = {}
+ columns = get_columns()
+ entries = get_gl_entries(filters)
+
+ entries_after_report_date = [[gle.voucher_type, gle.voucher_no]
+ for gle in get_gl_entries(filters, upto_report_date=False)]
+
+ account_territory_map = get_account_territory_map()
+ si_due_date_map = get_si_due_date_map()
+
+ # Age of the invoice on this date
+ age_on = getdate(filters.get("report_date")) > getdate(nowdate()) \
+ and nowdate() or filters.get("report_date")
+
+ data = []
+ total_invoiced_amount = total_payment = total_outstanding = 0
+ for gle in entries:
+ if cstr(gle.against_voucher) == gle.voucher_no or not gle.against_voucher \
+ or [gle.against_voucher_type, gle.against_voucher] in entries_after_report_date:
+
+ due_date = (gle.voucher_type == "Sales Invoice") \
+ and si_due_date_map.get(gle.voucher_no) or ""
+
+ invoiced_amount = gle.debit > 0 and gle.debit or 0
+ payment_amount = get_payment_amount(gle, filters.get("report_date") or nowdate(),
+ entries_after_report_date)
+ outstanding_amount = invoiced_amount - payment_amount
+
+ if abs(flt(outstanding_amount)) > 0.01:
+ row = [gle.posting_date, gle.account, gle.voucher_type, gle.voucher_no,
+ gle.remarks, due_date, account_territory_map.get(gle.account),
+ invoiced_amount, payment_amount, outstanding_amount]
+ # Ageing
+ if filters.get("ageing_based_on") == "Due Date":
+ ageing_based_on_date = due_date
+ else:
+ ageing_based_on_date = gle.posting_date
+ row += get_ageing_data(ageing_based_on_date, age_on, outstanding_amount)
+
+ # Add to total
+ total_invoiced_amount += flt(invoiced_amount)
+ total_payment += flt(payment_amount)
+ total_outstanding += flt(outstanding_amount)
+
+ data.append(row)
+ if data:
+ data.append(["", "", "", "", "", "", "Total", total_invoiced_amount, total_payment,
+ total_outstanding, "", "", "", ""])
+
+ return columns, data
+
+def get_columns():
+ return [
+ "Posting Date:Date:80", "Account:Link/Account:150", "Voucher Type::110",
+ "Voucher No::120", "Remarks::150", "Due Date:Date:80", "Territory:Link/Territory:80",
+ "Invoiced Amount:Currency:100", "Payment Amount:Currency:100",
+ "Outstanding Amount:Currency:100", "Age:Int:50", "0-30:Currency:100",
+ "30-60:Currency:100", "60-90:Currency:100", "90-Above:Currency:100"
+ ]
+
+def get_gl_entries(filters, upto_report_date=True):
+ conditions, customer_accounts = get_conditions(filters, upto_report_date)
+ return webnotes.conn.sql("""select * from `tabGL Entry`
+ where ifnull(is_cancelled, 'No') = 'No' %s order by posting_date, account""" %
+ (conditions) % (", ".join(['%s']*len(customer_accounts))),
+ tuple(customer_accounts), as_dict=1)
+
+def get_conditions(filters, upto_report_date=True):
+ conditions = ""
+ if filters.get("company"):
+ conditions += " and company='%s'" % filters["company"]
+
+ customer_accounts = []
+ if filters.get("account"):
+ customer_accounts = [filters["account"]]
+ elif filters.get("company"):
+ customer_accounts = webnotes.conn.sql_list("""select name from `tabAccount`
+ where ifnull(master_type, '') = 'Customer' and docstatus < 2 %s""" %
+ conditions, filters)
+
+ if customer_accounts:
+ conditions += " and account in (%s)"
+
+ if filters.get("report_date"):
+ if upto_report_date:
+ conditions += " and posting_date<='%s'" % filters["report_date"]
+ else:
+ conditions += " and posting_date>'%s'" % filters["report_date"]
+
+ return conditions, customer_accounts
+
+def get_account_territory_map():
+ account_territory_map = {}
+ for each in webnotes.conn.sql("""select t2.name, t1.territory from `tabCustomer` t1,
+ `tabAccount` t2 where t1.name = t2.master_name group by t2.name"""):
+ account_territory_map[each[0]] = each[1]
+
+ return account_territory_map
+
+def get_si_due_date_map():
+ """ get due_date from sales invoice """
+ si_due_date_map = {}
+ for t in webnotes.conn.sql("""select name, due_date from `tabSales Invoice` group by name"""):
+ si_due_date_map[t[0]] = t[1]
+
+ return si_due_date_map
+
+def get_payment_amount(gle, report_date, entries_after_report_date):
+ payment_amount = 0
+ if flt(gle.credit) > 0 and (not gle.against_voucher or
+ [gle.against_voucher_type, gle.against_voucher] in entries_after_report_date):
+ payment_amount = gle.credit
+ elif flt(gle.debit) > 0:
+ payment_amount = webnotes.conn.sql("""
+ select sum(ifnull(credit, 0)) - sum(ifnull(debit, 0)) from `tabGL Entry`
+ where account = %s and posting_date <= %s and against_voucher_type = %s
+ and against_voucher = %s and name != %s and ifnull(is_cancelled, 'No') = 'No'""",
+ (gle.account, report_date, gle.voucher_type, gle.voucher_no, gle.name))[0][0]
+
+ return flt(payment_amount)
+
+def get_ageing_data(ageing_based_on_date, age_on, outstanding_amount):
+ val1 = val2 = val3 = val4 = diff = 0
+ diff = age_on and ageing_based_on_date \
+ and (getdate(age_on) - getdate(ageing_based_on_date)).days or 0
+
+ if diff <= 30:
+ val1 = outstanding_amount
+ elif 30 < diff <= 60:
+ val2 = outstanding_amount
+ elif 60 < diff <= 90:
+ val3 = outstanding_amount
+ elif diff > 90:
+ val4 = outstanding_amount
+
+ return [diff, val1, val2, val3, val4]
\ No newline at end of file
diff --git a/accounts/report/accounts_receivable/accounts_receivable.txt b/accounts/report/accounts_receivable/accounts_receivable.txt
new file mode 100644
index 0000000..28f7e4f
--- /dev/null
+++ b/accounts/report/accounts_receivable/accounts_receivable.txt
@@ -0,0 +1,21 @@
+[
+ {
+ "creation": "2013-04-16 11:31:13",
+ "docstatus": 0,
+ "modified": "2013-04-16 11:31:13",
+ "modified_by": "Administrator",
+ "owner": "Administrator"
+ },
+ {
+ "doctype": "Report",
+ "is_standard": "Yes",
+ "name": "__common__",
+ "ref_doctype": "Sales Invoice",
+ "report_name": "Accounts Receivable",
+ "report_type": "Script Report"
+ },
+ {
+ "doctype": "Report",
+ "name": "Accounts Receivable"
+ }
+]
\ No newline at end of file
diff --git a/accounts/search_criteria/accounts_receivable/accounts_receivable.sql b/accounts/search_criteria/accounts_receivable/accounts_receivable.sql
index e9f3922..6f1c459 100644
--- a/accounts/search_criteria/accounts_receivable/accounts_receivable.sql
+++ b/accounts/search_criteria/accounts_receivable/accounts_receivable.sql
@@ -13,4 +13,4 @@
AND `tabGL Entry`.`is_cancelled` = 'No'
AND `tabAccount`.`master_type` = 'Customer'
AND `tabAccount`.`name` = `tabGL Entry`.`account`
-ORDER BY `tabGL Entry`.`posting_date`
+ORDER BY `tabGL Entry`.`posting_date`, `tabGL Entry`.`account`
diff --git a/hr/doctype/leave_application/leave_application.js b/hr/doctype/leave_application/leave_application.js
index 7f8948a..2715a6c 100755
--- a/hr/doctype/leave_application/leave_application.js
+++ b/hr/doctype/leave_application/leave_application.js
@@ -16,7 +16,6 @@
cur_frm.add_fetch('employee','employee_name','employee_name');
-
cur_frm.cscript.onload = function(doc, dt, dn) {
if(!doc.posting_date)
set_multiple(dt,dn,{posting_date:get_today()});
@@ -127,4 +126,8 @@
}
}
-cur_frm.fields_dict.employee.get_query = erpnext.utils.employee_query;
\ No newline at end of file
+cur_frm.fields_dict.employee.get_query = function() {
+ return {
+ query: "hr.doctype.leave_application.leave_application.query_for_permitted_employees"
+ };
+}
\ No newline at end of file
diff --git a/hr/doctype/leave_application/leave_application.py b/hr/doctype/leave_application/leave_application.py
index b9f9e5b..6e39751 100755
--- a/hr/doctype/leave_application/leave_application.py
+++ b/hr/doctype/leave_application/leave_application.py
@@ -330,3 +330,20 @@
"title": _("Holiday") + ": " + cstr(holiday.description),
"name": holiday.name
})
+
+@webnotes.whitelist()
+def query_for_permitted_employees(doctype, txt, searchfield, start, page_len, filters):
+ txt = "%" + cstr(txt) + "%"
+
+ return webnotes.conn.sql("""select name, employee_name from `tabEmployee` emp
+ where status = 'Active' and docstatus < 2 and
+ (`%s` like %s or employee_name like %s) and
+ (exists(select ela.name from `tabEmployee Leave Approver` ela
+ where ela.parent=emp.name and ela.leave_approver=%s) or
+ not exists(select ela.name from `tabEmployee Leave Approver` ela where ela.parent=emp.name)
+ or user_id = %s)
+ order by
+ case when name like %s then 0 else 1 end,
+ case when employee_name like %s then 0 else 1 end,
+ name limit %s, %s""" % tuple([searchfield] + ["%s"]*8),
+ (txt, txt, webnotes.session.user, webnotes.session.user, txt, txt, start, page_len))
diff --git a/hr/doctype/salary_structure/salary_structure.py b/hr/doctype/salary_structure/salary_structure.py
index 22789e3..018aab7 100644
--- a/hr/doctype/salary_structure/salary_structure.py
+++ b/hr/doctype/salary_structure/salary_structure.py
@@ -18,31 +18,25 @@
import webnotes
from webnotes.utils import cstr, flt
-from webnotes.model import db_exists
from webnotes.model.doc import addchild, make_autoname
-from webnotes.model.bean import copy_doclist
-from webnotes import msgprint
+from webnotes import msgprint, _
sql = webnotes.conn.sql
class DocType:
- #init function
def __init__(self,doc,doclist=[]):
self.doc = doc
self.doclist = doclist
-
- #autoname function
- #---------------------------------------------------------
+
def autoname(self):
self.doc.name = make_autoname(self.doc.employee + '/.SST' + '/.#####')
-
- #get employee details
- #---------------------------------------------------------
+
def get_employee_details(self):
ret = {}
- det = sql("select employee_name, branch, designation, department, grade from `tabEmployee` where name = '%s'" %self.doc.employee)
+ det = sql("""select employee_name, branch, designation, department, grade
+ from `tabEmployee` where name = %s""", self.doc.employee)
if det:
ret = {
'employee_name': cstr(det[0][0]),
@@ -53,20 +47,16 @@
'backup_employee': cstr(self.doc.employee)
}
return ret
-
- # Set Salary structure field values
- #---------------------------------------------------------
def get_ss_values(self,employee):
- basic_info = sql("select bank_name, bank_ac_no, esic_card_no, pf_number from `tabEmployee` where name ='%s'" % employee)
+ basic_info = sql("""select bank_name, bank_ac_no, esic_card_no, pf_number
+ from `tabEmployee` where name =%s""", employee)
ret = {'bank_name': basic_info and basic_info[0][0] or '',
'bank_ac_no': basic_info and basic_info[0][1] or '',
'esic_no': basic_info and basic_info[0][2] or '',
'pf_no': basic_info and basic_info[0][3] or ''}
return ret
-
- # Make earning and deduction table
- #---------------------------------------------------------
+
def make_table(self, doct_name, tab_fname, tab_name):
list1 = sql("select name from `tab%s` where docstatus != 2" % doct_name)
for li in list1:
@@ -77,37 +67,31 @@
elif(tab_fname == 'deduction_details'):
child.d_type = cstr(li[0])
child.d_modified_amt = 0
-
- # add earning & deduction types to table
- #---------------------------------------------------------
+
def make_earn_ded_table(self):
- #Earning List
self.make_table('Earning Type','earning_details','Salary Structure Earning')
-
- #Deduction List
- self.make_table('Deduction Type','deduction_details',
- 'Salary Structure Deduction')
-
+ self.make_table('Deduction Type','deduction_details', 'Salary Structure Deduction')
- # Check if another active ss exists
- #---------------------------------------------------------
def check_existing(self):
- ret = sql("select name from `tabSalary Structure` where is_active = 'Yes' and employee = '%s' and name!='%s'" %(self.doc.employee,self.doc.name))
+ ret = sql("""select name from `tabSalary Structure` where is_active = 'Yes'
+ and employee = %s and name!=%s""", (self.doc.employee,self.doc.name))
if ret and self.doc.is_active=='Yes':
- msgprint("Another Salary Structure '%s' is active for employee '%s'. Please make its status 'Inactive' to proceed."%(cstr(ret), self.doc.employee))
- raise Exception
+ msgprint(_("""Another Salary Structure '%s' is active for employee '%s'.
+ Please make its status 'Inactive' to proceed.""") %
+ (cstr(ret), self.doc.employee), raise_exception=1)
- # Validate net pay
- #---------------------------------------------------------
- def validate_net_pay(self):
+ def validate_amount(self):
+ if flt(self.doc.ctc) < 12*flt(self.doc.total_earning):
+ msgprint(_("Annual Cost To Company can not be less than 12 months of Total Earning"),
+ raise_exception=1)
+
if flt(self.doc.net_pay) < 0:
- msgprint("Net pay can not be negative")
- raise Exception
- elif flt(self.doc.net_pay) > flt(self.doc.ctc):
- msgprint("Net pay can not be greater than CTC")
- raise Exception
+ msgprint(_("Net pay can not be negative"), raise_exception=1)
+ elif flt(self.doc.net_pay)*12 > flt(self.doc.ctc):
+ msgprint(_("Net pay can not be greater than 1/12th of Annual Cost To Company"),
+ raise_exception=1)
+
def validate(self):
self.check_existing()
- self.validate_net_pay()
-
+ self.validate_amount()
\ No newline at end of file
diff --git a/hr/doctype/salary_structure/salary_structure.txt b/hr/doctype/salary_structure/salary_structure.txt
index c2efac6..43b3662 100644
--- a/hr/doctype/salary_structure/salary_structure.txt
+++ b/hr/doctype/salary_structure/salary_structure.txt
@@ -1,8 +1,8 @@
[
{
- "creation": "2013-01-23 19:57:18",
+ "creation": "2013-03-07 18:50:29",
"docstatus": 0,
- "modified": "2013-01-29 17:35:34",
+ "modified": "2013-04-22 14:09:04",
"modified_by": "Administrator",
"owner": "Administrator"
},
@@ -41,6 +41,7 @@
"doctype": "DocField",
"fieldname": "column_break0",
"fieldtype": "Column Break",
+ "read_only": 0,
"width": "50%"
},
{
@@ -52,6 +53,7 @@
"oldfieldname": "employee",
"oldfieldtype": "Link",
"options": "Employee",
+ "read_only": 0,
"reqd": 1
},
{
@@ -116,6 +118,7 @@
"doctype": "DocField",
"fieldname": "column_break1",
"fieldtype": "Column Break",
+ "read_only": 0,
"width": "50%"
},
{
@@ -129,6 +132,7 @@
"oldfieldname": "is_active",
"oldfieldtype": "Select",
"options": "\nYes\nNo",
+ "read_only": 0,
"reqd": 1
},
{
@@ -139,6 +143,7 @@
"label": "From Date",
"oldfieldname": "from_date",
"oldfieldtype": "Date",
+ "read_only": 0,
"reqd": 1
},
{
@@ -148,7 +153,8 @@
"in_list_view": 1,
"label": "To Date",
"oldfieldname": "to_date",
- "oldfieldtype": "Date"
+ "oldfieldtype": "Date",
+ "read_only": 0
},
{
"description": "Cost to Company",
@@ -156,10 +162,11 @@
"fieldname": "ctc",
"fieldtype": "Currency",
"in_filter": 1,
- "label": "CTC",
+ "label": "Annual Cost To Company",
"oldfieldname": "ctc",
"oldfieldtype": "Currency",
"options": "Company:company:default_currency",
+ "read_only": 0,
"reqd": 1
},
{
@@ -169,6 +176,7 @@
"in_filter": 1,
"label": "Company",
"options": "link:Company",
+ "read_only": 0,
"reqd": 1
},
{
@@ -178,7 +186,8 @@
"fieldtype": "Section Break",
"label": "Earning & Deduction",
"oldfieldname": "earning_deduction",
- "oldfieldtype": "Section Break"
+ "oldfieldtype": "Section Break",
+ "read_only": 0
},
{
"doctype": "DocField",
@@ -188,6 +197,7 @@
"label": "Earning",
"oldfieldname": "col_brk2",
"oldfieldtype": "Column Break",
+ "read_only": 0,
"width": "50%"
},
{
@@ -198,7 +208,8 @@
"label": "Earning1",
"oldfieldname": "earning_details",
"oldfieldtype": "Table",
- "options": "Salary Structure Earning"
+ "options": "Salary Structure Earning",
+ "read_only": 0
},
{
"doctype": "DocField",
@@ -208,6 +219,7 @@
"label": "Deduction",
"oldfieldname": "col_brk3",
"oldfieldtype": "Column Break",
+ "read_only": 0,
"width": "50%"
},
{
@@ -218,18 +230,21 @@
"label": "Deduction1",
"oldfieldname": "deduction_details",
"oldfieldtype": "Table",
- "options": "Salary Structure Deduction"
+ "options": "Salary Structure Deduction",
+ "read_only": 0
},
{
"doctype": "DocField",
"fieldname": "section_break0",
"fieldtype": "Section Break",
- "options": "Simple"
+ "options": "Simple",
+ "read_only": 0
},
{
"doctype": "DocField",
"fieldname": "column_break2",
"fieldtype": "Column Break",
+ "read_only": 0,
"width": "50%"
},
{
@@ -256,6 +271,7 @@
"doctype": "DocField",
"fieldname": "column_break3",
"fieldtype": "Column Break",
+ "read_only": 0,
"width": "50%"
},
{
diff --git a/patches/october_2012/update_account_property.py b/patches/october_2012/update_account_property.py
index efe0649..a9d365f 100644
--- a/patches/october_2012/update_account_property.py
+++ b/patches/october_2012/update_account_property.py
@@ -11,4 +11,4 @@
for acc in roots:
webnotes.conn.sql("""update tabAccount set debit_or_credit = %(debit_or_credit)s,
is_pl_account = %(is_pl_account)s, company = %(company)s
- where lft > %(lft)s and rgt < %(rgt)s""", acc, debug=1)
\ No newline at end of file
+ where lft > %(lft)s and rgt < %(rgt)s""", acc)
\ No newline at end of file
diff --git a/setup/doctype/backup_manager/backup_manager.py b/setup/doctype/backup_manager/backup_manager.py
index 4fb6ab3..ce0f1e1 100644
--- a/setup/doctype/backup_manager/backup_manager.py
+++ b/setup/doctype/backup_manager/backup_manager.py
@@ -27,8 +27,8 @@
from setup.doctype.backup_manager.backup_dropbox import backup_to_dropbox
backup_to_dropbox()
send_email(True, "Dropbox")
- except Exception, e:
- send_email(False, "Dropbox", e)
+ except Exception:
+ send_email(False, "Dropbox", webnotes.getTraceback())
#backup to gdrive
@webnotes.whitelist()
@@ -37,8 +37,8 @@
from setup.doctype.backup_manager.backup_googledrive import backup_to_gdrive
backup_to_gdrive()
send_email(True, "Google Drive")
- except Exception, e:
- send_email(False, "Google Drive", e)
+ except Exception:
+ send_email(False, "Google Drive", webnotes.getTraceback())
def send_email(success, service_name, error_status=None):
if success:
diff --git a/stock/doctype/item/item.txt b/stock/doctype/item/item.txt
index e1c04a7..cafda11 100644
--- a/stock/doctype/item/item.txt
+++ b/stock/doctype/item/item.txt
@@ -1,8 +1,8 @@
[
{
- "creation": "2013-03-28 10:35:28",
+ "creation": "2013-03-28 15:56:38",
"docstatus": 0,
- "modified": "2013-03-20 15:10:12",
+ "modified": "2013-04-23 11:39:22",
"modified_by": "Administrator",
"owner": "Administrator"
},
@@ -34,6 +34,7 @@
"parent": "Item",
"parentfield": "permissions",
"parenttype": "DocType",
+ "permlevel": 0,
"read": 1,
"submit": 0
},
@@ -47,7 +48,8 @@
"fieldtype": "Section Break",
"label": "Item",
"no_copy": 0,
- "oldfieldtype": "Section Break"
+ "oldfieldtype": "Section Break",
+ "read_only": 0
},
{
"description": "Item will be saved by this name in the data base.",
@@ -58,6 +60,7 @@
"label": "Item Code",
"oldfieldname": "item_code",
"oldfieldtype": "Data",
+ "read_only": 0,
"reqd": 1,
"search_index": 0
},
@@ -70,6 +73,7 @@
"label": "Item Name",
"oldfieldname": "item_name",
"oldfieldtype": "Data",
+ "read_only": 0,
"reqd": 1,
"search_index": 1
},
@@ -83,6 +87,7 @@
"oldfieldname": "item_group",
"oldfieldtype": "Link",
"options": "Item Group",
+ "read_only": 0,
"reqd": 1
},
{
@@ -94,7 +99,8 @@
"oldfieldname": "stock_uom",
"oldfieldtype": "Link",
"options": "UOM",
- "reqd": 0
+ "read_only": 0,
+ "reqd": 1
},
{
"doctype": "DocField",
@@ -106,25 +112,29 @@
"oldfieldtype": "Link",
"options": "Brand",
"print_hide": 1,
+ "read_only": 0,
"reqd": 0
},
{
"doctype": "DocField",
"fieldname": "barcode",
"fieldtype": "Data",
- "label": "Barcode"
+ "label": "Barcode",
+ "read_only": 0
},
{
"doctype": "DocField",
"fieldname": "column_break0",
- "fieldtype": "Column Break"
+ "fieldtype": "Column Break",
+ "read_only": 0
},
{
"doctype": "DocField",
"fieldname": "image",
"fieldtype": "Select",
"label": "Image",
- "options": "attach_files:"
+ "options": "attach_files:",
+ "read_only": 0
},
{
"doctype": "DocField",
@@ -132,7 +142,8 @@
"fieldtype": "Image",
"in_list_view": 1,
"label": "Image View",
- "options": "image"
+ "options": "image",
+ "read_only": 0
},
{
"doctype": "DocField",
@@ -143,6 +154,7 @@
"label": "Description",
"oldfieldname": "description",
"oldfieldtype": "Text",
+ "read_only": 0,
"reqd": 1,
"search_index": 0
},
@@ -150,21 +162,24 @@
"doctype": "DocField",
"fieldname": "description_html",
"fieldtype": "Small Text",
- "label": "Description HTML"
+ "label": "Description HTML",
+ "read_only": 0
},
{
"description": "Generates HTML to include selected image in the description",
"doctype": "DocField",
"fieldname": "add_image",
"fieldtype": "Button",
- "label": "Generate Description HTML"
+ "label": "Generate Description HTML",
+ "read_only": 0
},
{
"doctype": "DocField",
"fieldname": "inventory",
"fieldtype": "Section Break",
"label": "Inventory",
- "oldfieldtype": "Section Break"
+ "oldfieldtype": "Section Break",
+ "read_only": 0
},
{
"default": "Yes",
@@ -176,6 +191,7 @@
"oldfieldname": "is_stock_item",
"oldfieldtype": "Select",
"options": "\nYes\nNo",
+ "read_only": 0,
"reqd": 1
},
{
@@ -187,7 +203,8 @@
"label": "Default Reserved Warehouse",
"oldfieldname": "default_warehouse",
"oldfieldtype": "Link",
- "options": "Warehouse"
+ "options": "Warehouse",
+ "read_only": 0
},
{
"depends_on": "eval:doc.is_stock_item==\"Yes\"",
@@ -197,7 +214,8 @@
"fieldtype": "Float",
"label": "Allowance Percent",
"oldfieldname": "tolerance",
- "oldfieldtype": "Currency"
+ "oldfieldtype": "Currency",
+ "read_only": 0
},
{
"depends_on": "eval:doc.is_stock_item==\"Yes\"",
@@ -205,7 +223,8 @@
"fieldname": "valuation_method",
"fieldtype": "Select",
"label": "Valuation Method",
- "options": "\nFIFO\nMoving Average"
+ "options": "\nFIFO\nMoving Average",
+ "read_only": 0
},
{
"default": "0.00",
@@ -217,7 +236,8 @@
"hidden": 0,
"label": "Minimum Order Qty",
"oldfieldname": "min_order_qty",
- "oldfieldtype": "Currency"
+ "oldfieldtype": "Currency",
+ "read_only": 0
},
{
"depends_on": "eval:doc.is_stock_item==\"Yes\"",
@@ -225,6 +245,7 @@
"fieldname": "column_break1",
"fieldtype": "Column Break",
"oldfieldtype": "Column Break",
+ "read_only": 0,
"width": "50%"
},
{
@@ -238,6 +259,7 @@
"oldfieldname": "is_asset_item",
"oldfieldtype": "Select",
"options": "\nYes\nNo",
+ "read_only": 0,
"reqd": 1
},
{
@@ -250,6 +272,7 @@
"oldfieldname": "has_batch_no",
"oldfieldtype": "Select",
"options": "\nYes\nNo",
+ "read_only": 0,
"reqd": 1
},
{
@@ -264,6 +287,7 @@
"oldfieldname": "has_serial_no",
"oldfieldtype": "Select",
"options": "\nYes\nNo",
+ "read_only": 0,
"reqd": 1
},
{
@@ -273,7 +297,8 @@
"fieldtype": "Data",
"label": "Warranty Period (in days)",
"oldfieldname": "warranty_period",
- "oldfieldtype": "Data"
+ "oldfieldtype": "Data",
+ "read_only": 0
},
{
"depends_on": "eval:doc.is_stock_item==\"Yes\"",
@@ -282,7 +307,8 @@
"fieldtype": "Date",
"label": "End of Life",
"oldfieldname": "end_of_life",
- "oldfieldtype": "Date"
+ "oldfieldtype": "Date",
+ "read_only": 0
},
{
"depends_on": "eval:doc.is_stock_item==\"Yes\"",
@@ -290,7 +316,8 @@
"doctype": "DocField",
"fieldname": "net_weight",
"fieldtype": "Float",
- "label": "Net Weight"
+ "label": "Net Weight",
+ "read_only": 0
},
{
"depends_on": "eval:doc.is_stock_item==\"Yes\"",
@@ -298,14 +325,16 @@
"fieldname": "weight_uom",
"fieldtype": "Link",
"label": "Weight UOM",
- "options": "UOM"
+ "options": "UOM",
+ "read_only": 0
},
{
"description": "Auto-raise Material Request if quantity goes below re-order level in a warehouse",
"doctype": "DocField",
"fieldname": "reorder_section",
"fieldtype": "Section Break",
- "label": "Re-order"
+ "label": "Re-order",
+ "read_only": 0
},
{
"depends_on": "eval:doc.is_stock_item==\"Yes\"",
@@ -314,19 +343,22 @@
"fieldtype": "Float",
"label": "Re-Order Level",
"oldfieldname": "re_order_level",
- "oldfieldtype": "Currency"
+ "oldfieldtype": "Currency",
+ "read_only": 0
},
{
"depends_on": "eval:doc.is_stock_item==\"Yes\"",
"doctype": "DocField",
"fieldname": "re_order_qty",
"fieldtype": "Float",
- "label": "Re-Order Qty"
+ "label": "Re-Order Qty",
+ "read_only": 0
},
{
"doctype": "DocField",
"fieldname": "column_break_31",
- "fieldtype": "Column Break"
+ "fieldtype": "Column Break",
+ "read_only": 0
},
{
"depends_on": "eval:doc.is_stock_item==\"Yes\"",
@@ -334,27 +366,31 @@
"doctype": "DocField",
"fieldname": "email_notify",
"fieldtype": "Check",
- "label": "Notify by Email on Re-order"
+ "label": "Notify by Email on Re-order",
+ "read_only": 0
},
{
"doctype": "DocField",
"fieldname": "section_break_31",
"fieldtype": "Section Break",
- "options": "Simple"
+ "options": "Simple",
+ "read_only": 0
},
{
"doctype": "DocField",
"fieldname": "item_reorder",
"fieldtype": "Table",
"label": "Warehouse-wise Item Reorder",
- "options": "Item Reorder"
+ "options": "Item Reorder",
+ "read_only": 0
},
{
"doctype": "DocField",
"fieldname": "purchase_details",
"fieldtype": "Section Break",
"label": "Purchase Details",
- "oldfieldtype": "Section Break"
+ "oldfieldtype": "Section Break",
+ "read_only": 0
},
{
"default": "Yes",
@@ -366,6 +402,7 @@
"oldfieldname": "is_purchase_item",
"oldfieldtype": "Select",
"options": "\nYes\nNo",
+ "read_only": 0,
"reqd": 1
},
{
@@ -377,7 +414,8 @@
"label": "Lead Time Days",
"no_copy": 1,
"oldfieldname": "lead_time_days",
- "oldfieldtype": "Int"
+ "oldfieldtype": "Int",
+ "read_only": 0
},
{
"depends_on": "eval:doc.is_purchase_item==\"Yes\"",
@@ -388,7 +426,8 @@
"label": "Default Expense Account",
"oldfieldname": "purchase_account",
"oldfieldtype": "Link",
- "options": "Account"
+ "options": "Account",
+ "read_only": 0
},
{
"depends_on": "eval:doc.is_purchase_item==\"Yes\"",
@@ -399,7 +438,8 @@
"label": "Default Cost Center",
"oldfieldname": "cost_center",
"oldfieldtype": "Link",
- "options": "Cost Center"
+ "options": "Cost Center",
+ "read_only": 0
},
{
"depends_on": "eval:doc.is_purchase_item==\"Yes\"",
@@ -419,7 +459,8 @@
"fieldtype": "Float",
"label": "Standard Rate",
"oldfieldname": "standard_rate",
- "oldfieldtype": "Currency"
+ "oldfieldtype": "Currency",
+ "read_only": 0
},
{
"depends_on": "eval:doc.is_purchase_item==\"Yes\"",
@@ -427,6 +468,7 @@
"fieldname": "column_break2",
"fieldtype": "Column Break",
"oldfieldtype": "Column Break",
+ "read_only": 0,
"width": "50%"
},
{
@@ -438,21 +480,24 @@
"no_copy": 1,
"oldfieldname": "uom_conversion_details",
"oldfieldtype": "Table",
- "options": "UOM Conversion Detail"
+ "options": "UOM Conversion Detail",
+ "read_only": 0
},
{
"depends_on": "eval:doc.is_purchase_item==\"Yes\"",
"doctype": "DocField",
"fieldname": "manufacturer",
"fieldtype": "Data",
- "label": "Manufacturer"
+ "label": "Manufacturer",
+ "read_only": 0
},
{
"depends_on": "eval:doc.is_purchase_item==\"Yes\"",
"doctype": "DocField",
"fieldname": "manufacturer_part_no",
"fieldtype": "Data",
- "label": "Manufacturer Part Number"
+ "label": "Manufacturer Part Number",
+ "read_only": 0
},
{
"depends_on": "eval:doc.is_purchase_item==\"Yes\"",
@@ -460,14 +505,16 @@
"fieldname": "item_supplier_details",
"fieldtype": "Table",
"label": "Item Supplier Details",
- "options": "Item Supplier"
+ "options": "Item Supplier",
+ "read_only": 0
},
{
"doctype": "DocField",
"fieldname": "sales_details",
"fieldtype": "Section Break",
"label": "Sales Details",
- "oldfieldtype": "Section Break"
+ "oldfieldtype": "Section Break",
+ "read_only": 0
},
{
"default": "Yes",
@@ -480,6 +527,7 @@
"oldfieldname": "is_sales_item",
"oldfieldtype": "Select",
"options": "\nYes\nNo",
+ "read_only": 0,
"reqd": 1
},
{
@@ -494,6 +542,7 @@
"oldfieldname": "is_service_item",
"oldfieldtype": "Select",
"options": "\nYes\nNo",
+ "read_only": 0,
"reqd": 1
},
{
@@ -507,6 +556,7 @@
"oldfieldname": "is_sample_item",
"oldfieldtype": "Select",
"options": "\nYes\nNo",
+ "read_only": 0,
"reqd": 1
},
{
@@ -516,7 +566,8 @@
"fieldtype": "Float",
"label": "Max Discount (%)",
"oldfieldname": "max_discount",
- "oldfieldtype": "Currency"
+ "oldfieldtype": "Currency",
+ "read_only": 0
},
{
"depends_on": "eval:doc.is_sales_item==\"Yes\"",
@@ -524,7 +575,8 @@
"fieldname": "default_income_account",
"fieldtype": "Link",
"label": "Default Income Account",
- "options": "Account"
+ "options": "Account",
+ "read_only": 0
},
{
"depends_on": "eval:doc.is_sales_item==\"Yes\"",
@@ -532,7 +584,8 @@
"fieldname": "default_sales_cost_center",
"fieldtype": "Link",
"label": "Cost Center",
- "options": "Cost Center"
+ "options": "Cost Center",
+ "read_only": 0
},
{
"depends_on": "eval:doc.is_sales_item==\"Yes\"",
@@ -542,7 +595,8 @@
"hidden": 1,
"label": "Sales Rate",
"oldfieldname": "sales_rate",
- "oldfieldtype": "Currency"
+ "oldfieldtype": "Currency",
+ "read_only": 0
},
{
"depends_on": "eval:doc.is_sales_item==\"Yes\"",
@@ -550,6 +604,7 @@
"fieldname": "column_break3",
"fieldtype": "Column Break",
"oldfieldtype": "Column Break",
+ "read_only": 0,
"width": "50%"
},
{
@@ -559,14 +614,16 @@
"fieldname": "item_customer_details",
"fieldtype": "Table",
"label": "Customer Codes",
- "options": "Item Customer Detail"
+ "options": "Item Customer Detail",
+ "read_only": 0
},
{
"doctype": "DocField",
"fieldname": "item_tax_section_break",
"fieldtype": "Section Break",
"label": "Item Tax",
- "oldfieldtype": "Section Break"
+ "oldfieldtype": "Section Break",
+ "read_only": 0
},
{
"doctype": "DocField",
@@ -575,13 +632,15 @@
"label": "Item Tax1",
"oldfieldname": "item_tax",
"oldfieldtype": "Table",
- "options": "Item Tax"
+ "options": "Item Tax",
+ "read_only": 0
},
{
"doctype": "DocField",
"fieldname": "price_list_section",
"fieldtype": "Section Break",
- "label": "Price Lists and Rates"
+ "label": "Price Lists and Rates",
+ "read_only": 0
},
{
"description": "Create a price list from Price List master and enter standard ref rates against each of them. On selection of a price list in Quotation, Sales Order or Delivery Note, corresponding ref rate will be fetched for this item.",
@@ -591,14 +650,16 @@
"label": "Item Prices",
"oldfieldname": "ref_rate_details",
"oldfieldtype": "Table",
- "options": "Item Price"
+ "options": "Item Price",
+ "read_only": 0
},
{
"doctype": "DocField",
"fieldname": "inspection_criteria",
"fieldtype": "Section Break",
"label": "Inspection Criteria",
- "oldfieldtype": "Section Break"
+ "oldfieldtype": "Section Break",
+ "read_only": 0
},
{
"default": "No",
@@ -610,6 +671,7 @@
"oldfieldname": "inspection_required",
"oldfieldtype": "Select",
"options": "\nYes\nNo",
+ "read_only": 0,
"reqd": 1
},
{
@@ -621,14 +683,16 @@
"label": "Item Quality Inspection Parameter",
"oldfieldname": "item_specification_details",
"oldfieldtype": "Table",
- "options": "Item Quality Inspection Parameter"
+ "options": "Item Quality Inspection Parameter",
+ "read_only": 0
},
{
"doctype": "DocField",
"fieldname": "manufacturing",
"fieldtype": "Section Break",
"label": "Manufacturing",
- "oldfieldtype": "Section Break"
+ "oldfieldtype": "Section Break",
+ "read_only": 0
},
{
"default": "No",
@@ -640,6 +704,7 @@
"oldfieldname": "is_manufactured_item",
"oldfieldtype": "Select",
"options": "\nYes\nNo",
+ "read_only": 0,
"reqd": 1
},
{
@@ -665,6 +730,7 @@
"oldfieldname": "is_pro_applicable",
"oldfieldtype": "Select",
"options": "\nYes\nNo",
+ "read_only": 0,
"reqd": 1
},
{
@@ -677,6 +743,7 @@
"oldfieldname": "is_sub_contracted_item",
"oldfieldtype": "Select",
"options": "\nYes\nNo",
+ "read_only": 0,
"reqd": 1
},
{
@@ -687,19 +754,22 @@
"in_filter": 1,
"label": "Customer Code",
"no_copy": 1,
- "print_hide": 1
+ "print_hide": 1,
+ "read_only": 0
},
{
"doctype": "DocField",
"fieldname": "website_section",
"fieldtype": "Section Break",
- "label": "Website"
+ "label": "Website",
+ "read_only": 0
},
{
"doctype": "DocField",
"fieldname": "show_in_website",
"fieldtype": "Check",
- "label": "Show in Website"
+ "label": "Show in Website",
+ "read_only": 0
},
{
"depends_on": "show_in_website",
@@ -717,6 +787,7 @@
"fieldname": "weightage",
"fieldtype": "Int",
"label": "Weightage",
+ "read_only": 0,
"search_index": 1
},
{
@@ -726,7 +797,8 @@
"fieldname": "slideshow",
"fieldtype": "Link",
"label": "Slideshow",
- "options": "Website Slideshow"
+ "options": "Website Slideshow",
+ "read_only": 0
},
{
"depends_on": "show_in_website",
@@ -735,12 +807,14 @@
"fieldname": "website_image",
"fieldtype": "Select",
"label": "Image",
- "options": "attach_files:"
+ "options": "attach_files:",
+ "read_only": 0
},
{
"doctype": "DocField",
"fieldname": "cb72",
- "fieldtype": "Column Break"
+ "fieldtype": "Column Break",
+ "read_only": 0
},
{
"depends_on": "show_in_website",
@@ -749,7 +823,8 @@
"fieldname": "website_price_list",
"fieldtype": "Link",
"label": "Website Price List",
- "options": "Price List"
+ "options": "Price List",
+ "read_only": 0
},
{
"depends_on": "show_in_website",
@@ -758,7 +833,8 @@
"fieldname": "website_warehouse",
"fieldtype": "Link",
"label": "Website Warehouse",
- "options": "Warehouse"
+ "options": "Warehouse",
+ "read_only": 0
},
{
"depends_on": "show_in_website",
@@ -767,19 +843,22 @@
"fieldname": "website_item_groups",
"fieldtype": "Table",
"label": "Website Item Groups",
- "options": "Website Item Group"
+ "options": "Website Item Group",
+ "read_only": 0
},
{
"depends_on": "show_in_website",
"doctype": "DocField",
"fieldname": "sb72",
- "fieldtype": "Section Break"
+ "fieldtype": "Section Break",
+ "read_only": 0
},
{
"doctype": "DocField",
"fieldname": "copy_from_item_group",
"fieldtype": "Button",
- "label": "Copy From Item Group"
+ "label": "Copy From Item Group",
+ "read_only": 0
},
{
"depends_on": "show_in_website",
@@ -787,57 +866,21 @@
"fieldname": "item_website_specifications",
"fieldtype": "Table",
"label": "Item Website Specifications",
- "options": "Item Website Specification"
+ "options": "Item Website Specification",
+ "read_only": 0
},
{
"depends_on": "show_in_website",
"doctype": "DocField",
"fieldname": "web_long_description",
"fieldtype": "Text Editor",
- "label": "Website Description"
- },
- {
- "cancel": 0,
- "create": 0,
- "doctype": "DocPerm",
- "permlevel": 1,
- "report": 0,
- "role": "Material Manager",
- "write": 0
- },
- {
- "cancel": 0,
- "create": 0,
- "doctype": "DocPerm",
- "permlevel": 0,
- "report": 1,
- "role": "Material Manager",
- "write": 0
- },
- {
- "cancel": 0,
- "create": 0,
- "doctype": "DocPerm",
- "permlevel": 1,
- "report": 0,
- "role": "Material User",
- "write": 0
- },
- {
- "cancel": 0,
- "create": 0,
- "doctype": "DocPerm",
- "permlevel": 0,
- "report": 1,
- "role": "Material User",
- "write": 0
+ "label": "Website Description",
+ "read_only": 0
},
{
"cancel": 1,
"create": 1,
"doctype": "DocPerm",
- "permlevel": 0,
- "report": 1,
"role": "Material Master Manager",
"write": 1
},
@@ -845,27 +888,14 @@
"cancel": 0,
"create": 0,
"doctype": "DocPerm",
- "permlevel": 1,
- "report": 0,
- "role": "Material Master Manager",
+ "role": "Material Manager",
"write": 0
},
{
- "cancel": 1,
- "create": 1,
- "doctype": "DocPerm",
- "permlevel": 0,
- "report": 1,
- "role": "System Manager",
- "write": 1
- },
- {
"cancel": 0,
"create": 0,
"doctype": "DocPerm",
- "permlevel": 1,
- "report": 0,
- "role": "System Manager",
+ "role": "Material User",
"write": 0
}
]
\ No newline at end of file