mirror of
https://github.com/frappe/erpnext.git
synced 2026-06-13 01:43:05 +00:00
Compare commits
45 Commits
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
1bdffbff57 | ||
|
|
094d3adba3 | ||
|
|
6a5751e91c | ||
|
|
23147ff881 | ||
|
|
c16c0ca944 | ||
|
|
525900c5c1 | ||
|
|
75a41a6f75 | ||
|
|
9b54b78794 | ||
|
|
93851df048 | ||
|
|
f79d7188de | ||
|
|
3cdc74e3b0 | ||
|
|
377c7acd53 | ||
|
|
05621ed564 | ||
|
|
ca627fb806 | ||
|
|
6e4ab60e4c | ||
|
|
911e9caa43 | ||
|
|
b239a09951 | ||
|
|
d223a03814 | ||
|
|
4cb58c410a | ||
|
|
906552a401 | ||
|
|
3bd5014b7b | ||
|
|
8693b5c93a | ||
|
|
36830016ee | ||
|
|
533e564867 | ||
|
|
88d7e419ad | ||
|
|
54254cca58 | ||
|
|
142f14dd5c | ||
|
|
0f0c131ba4 | ||
|
|
e1e187bee1 | ||
|
|
c946c730da | ||
|
|
5a4ca64c4a | ||
|
|
47fd4c6521 | ||
|
|
e58031ab49 | ||
|
|
f8e374643c | ||
|
|
0ef9da65dc | ||
|
|
98d58b5ed1 | ||
|
|
ff910f4c72 | ||
|
|
5c69fed218 | ||
|
|
d07557eaf6 | ||
|
|
13b37c6346 | ||
|
|
b34ba6bd6e | ||
|
|
94dbc14f8a | ||
|
|
600ab0f7a0 | ||
|
|
9afee28c36 | ||
|
|
86f143863f |
@@ -2,7 +2,7 @@
|
||||
from __future__ import unicode_literals
|
||||
import frappe
|
||||
|
||||
__version__ = '7.0.35'
|
||||
__version__ = '7.0.41'
|
||||
|
||||
def get_default_company(user=None):
|
||||
'''Get default company for user'''
|
||||
|
||||
@@ -18,7 +18,8 @@ frappe.ui.form.on('Asset', {
|
||||
frm.set_query("warehouse", function() {
|
||||
return {
|
||||
"filters": {
|
||||
"company": frm.doc.company
|
||||
"company": frm.doc.company,
|
||||
"is_group": 0
|
||||
}
|
||||
};
|
||||
});
|
||||
@@ -232,7 +233,10 @@ erpnext.asset.transfer_asset = function(frm) {
|
||||
"options": "Warehouse",
|
||||
"get_query": function () {
|
||||
return {
|
||||
filters: [["Warehouse", "company", "in", ["", cstr(frm.doc.company)]]]
|
||||
filters: [
|
||||
["Warehouse", "company", "in", ["", cstr(frm.doc.company)]],
|
||||
["Warehouse", "is_group", "=", 0]
|
||||
]
|
||||
}
|
||||
},
|
||||
"reqd": 1
|
||||
|
||||
@@ -7,7 +7,10 @@ frappe.ui.form.on('Asset Movement', {
|
||||
|
||||
frm.set_query("target_warehouse", function() {
|
||||
return {
|
||||
filters: [["Warehouse", "company", "in", ["", cstr(frm.doc.company)]]]
|
||||
filters: [
|
||||
["Warehouse", "company", "in", ["", cstr(frm.doc.company)]],
|
||||
["Warehouse", "is_group", "=", 0]
|
||||
]
|
||||
}
|
||||
})
|
||||
|
||||
|
||||
@@ -43,7 +43,7 @@ def create_or_update_cheque_print_format(template_name):
|
||||
</span>
|
||||
<span style="top:%(payer_name_from_top_edge)scm;left: %(payer_name_from_left_edge)scm;
|
||||
position: absolute;">
|
||||
{{doc.party}}
|
||||
{{doc.party_name}}
|
||||
</span>
|
||||
<span style="top:%(amt_in_words_from_top_edge)scm; left:%(amt_in_words_from_left_edge)scm;
|
||||
position: absolute; display: block; width: %(amt_in_word_width)scm;
|
||||
|
||||
@@ -226,6 +226,12 @@ frappe.ui.form.on('Payment Entry', {
|
||||
|
||||
party: function(frm) {
|
||||
if(frm.doc.payment_type && frm.doc.party_type && frm.doc.party) {
|
||||
if(!frm.doc.posting_date) {
|
||||
frappe.msgprint(__("Please select Posting Date before selecting Party"))
|
||||
frm.set_value("party", "");
|
||||
return ;
|
||||
}
|
||||
|
||||
frm.set_party_account_based_on_party = true;
|
||||
|
||||
return frappe.call({
|
||||
|
||||
@@ -15,6 +15,7 @@
|
||||
"allow_on_submit": 0,
|
||||
"bold": 0,
|
||||
"collapsible": 0,
|
||||
"columns": 0,
|
||||
"fieldname": "type_of_payment",
|
||||
"fieldtype": "Section Break",
|
||||
"hidden": 0,
|
||||
@@ -40,6 +41,7 @@
|
||||
"allow_on_submit": 0,
|
||||
"bold": 1,
|
||||
"collapsible": 0,
|
||||
"columns": 0,
|
||||
"fieldname": "naming_series",
|
||||
"fieldtype": "Select",
|
||||
"hidden": 0,
|
||||
@@ -66,13 +68,14 @@
|
||||
"allow_on_submit": 0,
|
||||
"bold": 1,
|
||||
"collapsible": 0,
|
||||
"columns": 0,
|
||||
"fieldname": "payment_type",
|
||||
"fieldtype": "Select",
|
||||
"hidden": 0,
|
||||
"ignore_user_permissions": 0,
|
||||
"ignore_xss_filter": 0,
|
||||
"in_filter": 0,
|
||||
"in_list_view": 0,
|
||||
"in_list_view": 1,
|
||||
"label": "Payment Type",
|
||||
"length": 0,
|
||||
"no_copy": 0,
|
||||
@@ -92,6 +95,7 @@
|
||||
"allow_on_submit": 0,
|
||||
"bold": 0,
|
||||
"collapsible": 0,
|
||||
"columns": 0,
|
||||
"depends_on": "eval:in_list([\"Receive\", \"Pay\"], doc.payment_type)",
|
||||
"fieldname": "party_type",
|
||||
"fieldtype": "Select",
|
||||
@@ -119,6 +123,7 @@
|
||||
"allow_on_submit": 0,
|
||||
"bold": 1,
|
||||
"collapsible": 0,
|
||||
"columns": 0,
|
||||
"depends_on": "eval:in_list([\"Receive\", \"Pay\"], doc.payment_type) && doc.party_type",
|
||||
"fieldname": "party",
|
||||
"fieldtype": "Dynamic Link",
|
||||
@@ -146,6 +151,33 @@
|
||||
"allow_on_submit": 0,
|
||||
"bold": 0,
|
||||
"collapsible": 0,
|
||||
"columns": 0,
|
||||
"fieldname": "party_name",
|
||||
"fieldtype": "Data",
|
||||
"hidden": 1,
|
||||
"ignore_user_permissions": 0,
|
||||
"ignore_xss_filter": 0,
|
||||
"in_filter": 0,
|
||||
"in_list_view": 0,
|
||||
"label": "Party Name",
|
||||
"length": 0,
|
||||
"no_copy": 0,
|
||||
"permlevel": 0,
|
||||
"precision": "",
|
||||
"print_hide": 0,
|
||||
"print_hide_if_no_value": 0,
|
||||
"read_only": 1,
|
||||
"report_hide": 0,
|
||||
"reqd": 0,
|
||||
"search_index": 0,
|
||||
"set_only_once": 0,
|
||||
"unique": 0
|
||||
},
|
||||
{
|
||||
"allow_on_submit": 0,
|
||||
"bold": 0,
|
||||
"collapsible": 0,
|
||||
"columns": 0,
|
||||
"fieldname": "column_break_5",
|
||||
"fieldtype": "Column Break",
|
||||
"hidden": 0,
|
||||
@@ -170,6 +202,7 @@
|
||||
"allow_on_submit": 0,
|
||||
"bold": 1,
|
||||
"collapsible": 0,
|
||||
"columns": 0,
|
||||
"default": "Today",
|
||||
"fieldname": "posting_date",
|
||||
"fieldtype": "Date",
|
||||
@@ -196,6 +229,7 @@
|
||||
"allow_on_submit": 0,
|
||||
"bold": 0,
|
||||
"collapsible": 0,
|
||||
"columns": 0,
|
||||
"fieldname": "company",
|
||||
"fieldtype": "Link",
|
||||
"hidden": 0,
|
||||
@@ -222,6 +256,7 @@
|
||||
"allow_on_submit": 0,
|
||||
"bold": 0,
|
||||
"collapsible": 0,
|
||||
"columns": 0,
|
||||
"fieldname": "mode_of_payment",
|
||||
"fieldtype": "Link",
|
||||
"hidden": 0,
|
||||
@@ -248,6 +283,7 @@
|
||||
"allow_on_submit": 0,
|
||||
"bold": 0,
|
||||
"collapsible": 1,
|
||||
"columns": 0,
|
||||
"fieldname": "payment_accounts_section",
|
||||
"fieldtype": "Section Break",
|
||||
"hidden": 0,
|
||||
@@ -273,6 +309,7 @@
|
||||
"allow_on_submit": 0,
|
||||
"bold": 0,
|
||||
"collapsible": 0,
|
||||
"columns": 0,
|
||||
"depends_on": "party",
|
||||
"fieldname": "party_balance",
|
||||
"fieldtype": "Currency",
|
||||
@@ -299,6 +336,7 @@
|
||||
"allow_on_submit": 0,
|
||||
"bold": 1,
|
||||
"collapsible": 0,
|
||||
"columns": 0,
|
||||
"depends_on": "eval:(in_list([\"Internal Transfer\", \"Pay\"], doc.payment_type) || doc.party)",
|
||||
"fieldname": "paid_from",
|
||||
"fieldtype": "Link",
|
||||
@@ -326,6 +364,7 @@
|
||||
"allow_on_submit": 0,
|
||||
"bold": 0,
|
||||
"collapsible": 0,
|
||||
"columns": 0,
|
||||
"depends_on": "paid_from",
|
||||
"fieldname": "paid_from_account_currency",
|
||||
"fieldtype": "Link",
|
||||
@@ -353,6 +392,7 @@
|
||||
"allow_on_submit": 0,
|
||||
"bold": 0,
|
||||
"collapsible": 0,
|
||||
"columns": 0,
|
||||
"depends_on": "paid_from",
|
||||
"fieldname": "paid_from_account_balance",
|
||||
"fieldtype": "Currency",
|
||||
@@ -380,6 +420,7 @@
|
||||
"allow_on_submit": 0,
|
||||
"bold": 0,
|
||||
"collapsible": 0,
|
||||
"columns": 0,
|
||||
"fieldname": "column_break_18",
|
||||
"fieldtype": "Column Break",
|
||||
"hidden": 0,
|
||||
@@ -404,6 +445,7 @@
|
||||
"allow_on_submit": 0,
|
||||
"bold": 0,
|
||||
"collapsible": 0,
|
||||
"columns": 0,
|
||||
"depends_on": "eval:(in_list([\"Internal Transfer\", \"Receive\"], doc.payment_type) || doc.party)",
|
||||
"fieldname": "paid_to",
|
||||
"fieldtype": "Link",
|
||||
@@ -431,6 +473,7 @@
|
||||
"allow_on_submit": 0,
|
||||
"bold": 0,
|
||||
"collapsible": 0,
|
||||
"columns": 0,
|
||||
"depends_on": "paid_to",
|
||||
"fieldname": "paid_to_account_currency",
|
||||
"fieldtype": "Link",
|
||||
@@ -458,6 +501,7 @@
|
||||
"allow_on_submit": 0,
|
||||
"bold": 0,
|
||||
"collapsible": 0,
|
||||
"columns": 0,
|
||||
"depends_on": "paid_to",
|
||||
"fieldname": "paid_to_account_balance",
|
||||
"fieldtype": "Currency",
|
||||
@@ -486,6 +530,7 @@
|
||||
"bold": 0,
|
||||
"collapsible": 0,
|
||||
"collapsible_depends_on": "",
|
||||
"columns": 0,
|
||||
"depends_on": "eval:(doc.paid_to && doc.paid_from)",
|
||||
"fieldname": "payment_amounts_section",
|
||||
"fieldtype": "Section Break",
|
||||
@@ -512,6 +557,7 @@
|
||||
"allow_on_submit": 0,
|
||||
"bold": 1,
|
||||
"collapsible": 0,
|
||||
"columns": 0,
|
||||
"depends_on": "",
|
||||
"fieldname": "paid_amount",
|
||||
"fieldtype": "Currency",
|
||||
@@ -539,6 +585,7 @@
|
||||
"allow_on_submit": 0,
|
||||
"bold": 0,
|
||||
"collapsible": 0,
|
||||
"columns": 0,
|
||||
"depends_on": "",
|
||||
"fieldname": "source_exchange_rate",
|
||||
"fieldtype": "Float",
|
||||
@@ -565,6 +612,7 @@
|
||||
"allow_on_submit": 0,
|
||||
"bold": 0,
|
||||
"collapsible": 0,
|
||||
"columns": 0,
|
||||
"depends_on": "",
|
||||
"fieldname": "base_paid_amount",
|
||||
"fieldtype": "Currency",
|
||||
@@ -592,6 +640,7 @@
|
||||
"allow_on_submit": 0,
|
||||
"bold": 0,
|
||||
"collapsible": 0,
|
||||
"columns": 0,
|
||||
"fieldname": "column_break_21",
|
||||
"fieldtype": "Column Break",
|
||||
"hidden": 0,
|
||||
@@ -616,6 +665,7 @@
|
||||
"allow_on_submit": 0,
|
||||
"bold": 1,
|
||||
"collapsible": 0,
|
||||
"columns": 0,
|
||||
"depends_on": "",
|
||||
"fieldname": "received_amount",
|
||||
"fieldtype": "Currency",
|
||||
@@ -643,6 +693,7 @@
|
||||
"allow_on_submit": 0,
|
||||
"bold": 0,
|
||||
"collapsible": 0,
|
||||
"columns": 0,
|
||||
"depends_on": "",
|
||||
"fieldname": "target_exchange_rate",
|
||||
"fieldtype": "Float",
|
||||
@@ -669,6 +720,7 @@
|
||||
"allow_on_submit": 0,
|
||||
"bold": 0,
|
||||
"collapsible": 0,
|
||||
"columns": 0,
|
||||
"depends_on": "",
|
||||
"fieldname": "base_received_amount",
|
||||
"fieldtype": "Currency",
|
||||
@@ -697,6 +749,7 @@
|
||||
"bold": 0,
|
||||
"collapsible": 1,
|
||||
"collapsible_depends_on": "references",
|
||||
"columns": 0,
|
||||
"depends_on": "eval:(doc.party && doc.paid_from && doc.paid_to && doc.paid_amount && doc.received_amount)",
|
||||
"fieldname": "section_break_14",
|
||||
"fieldtype": "Section Break",
|
||||
@@ -723,6 +776,7 @@
|
||||
"allow_on_submit": 0,
|
||||
"bold": 0,
|
||||
"collapsible": 0,
|
||||
"columns": 0,
|
||||
"depends_on": "",
|
||||
"fieldname": "references",
|
||||
"fieldtype": "Table",
|
||||
@@ -750,6 +804,7 @@
|
||||
"allow_on_submit": 0,
|
||||
"bold": 0,
|
||||
"collapsible": 0,
|
||||
"columns": 0,
|
||||
"depends_on": "",
|
||||
"fieldname": "section_break_34",
|
||||
"fieldtype": "Section Break",
|
||||
@@ -776,6 +831,7 @@
|
||||
"allow_on_submit": 0,
|
||||
"bold": 1,
|
||||
"collapsible": 0,
|
||||
"columns": 0,
|
||||
"depends_on": "eval:(doc.paid_amount && doc.received_amount && doc.references)",
|
||||
"fieldname": "total_allocated_amount",
|
||||
"fieldtype": "Currency",
|
||||
@@ -802,6 +858,7 @@
|
||||
"allow_on_submit": 0,
|
||||
"bold": 0,
|
||||
"collapsible": 0,
|
||||
"columns": 0,
|
||||
"depends_on": "",
|
||||
"fieldname": "base_total_allocated_amount",
|
||||
"fieldtype": "Currency",
|
||||
@@ -829,6 +886,7 @@
|
||||
"allow_on_submit": 0,
|
||||
"bold": 0,
|
||||
"collapsible": 0,
|
||||
"columns": 0,
|
||||
"fieldname": "set_exchange_gain_loss",
|
||||
"fieldtype": "Button",
|
||||
"hidden": 0,
|
||||
@@ -854,6 +912,7 @@
|
||||
"allow_on_submit": 0,
|
||||
"bold": 0,
|
||||
"collapsible": 0,
|
||||
"columns": 0,
|
||||
"fieldname": "column_break_36",
|
||||
"fieldtype": "Column Break",
|
||||
"hidden": 0,
|
||||
@@ -878,6 +937,7 @@
|
||||
"allow_on_submit": 0,
|
||||
"bold": 0,
|
||||
"collapsible": 0,
|
||||
"columns": 0,
|
||||
"depends_on": "eval:(doc.paid_amount && doc.received_amount && doc.references)",
|
||||
"fieldname": "unallocated_amount",
|
||||
"fieldtype": "Currency",
|
||||
@@ -904,6 +964,7 @@
|
||||
"allow_on_submit": 0,
|
||||
"bold": 1,
|
||||
"collapsible": 0,
|
||||
"columns": 0,
|
||||
"depends_on": "eval:(doc.paid_amount && doc.received_amount)",
|
||||
"fieldname": "difference_amount",
|
||||
"fieldtype": "Currency",
|
||||
@@ -931,6 +992,7 @@
|
||||
"allow_on_submit": 0,
|
||||
"bold": 0,
|
||||
"collapsible": 0,
|
||||
"columns": 0,
|
||||
"depends_on": "difference_amount",
|
||||
"fieldname": "write_off_difference_amount",
|
||||
"fieldtype": "Button",
|
||||
@@ -958,6 +1020,7 @@
|
||||
"bold": 0,
|
||||
"collapsible": 1,
|
||||
"collapsible_depends_on": "deductions",
|
||||
"columns": 0,
|
||||
"depends_on": "eval:(doc.paid_amount && doc.received_amount)",
|
||||
"fieldname": "deductions_or_loss_section",
|
||||
"fieldtype": "Section Break",
|
||||
@@ -984,6 +1047,7 @@
|
||||
"allow_on_submit": 0,
|
||||
"bold": 0,
|
||||
"collapsible": 0,
|
||||
"columns": 0,
|
||||
"fieldname": "deductions",
|
||||
"fieldtype": "Table",
|
||||
"hidden": 0,
|
||||
@@ -1010,6 +1074,7 @@
|
||||
"allow_on_submit": 0,
|
||||
"bold": 0,
|
||||
"collapsible": 0,
|
||||
"columns": 0,
|
||||
"fieldname": "transaction_references",
|
||||
"fieldtype": "Section Break",
|
||||
"hidden": 0,
|
||||
@@ -1035,6 +1100,7 @@
|
||||
"allow_on_submit": 0,
|
||||
"bold": 1,
|
||||
"collapsible": 0,
|
||||
"columns": 0,
|
||||
"depends_on": "eval:(doc.paid_from && doc.paid_to)",
|
||||
"fieldname": "reference_no",
|
||||
"fieldtype": "Data",
|
||||
@@ -1061,6 +1127,7 @@
|
||||
"allow_on_submit": 0,
|
||||
"bold": 0,
|
||||
"collapsible": 0,
|
||||
"columns": 0,
|
||||
"fieldname": "column_break_23",
|
||||
"fieldtype": "Column Break",
|
||||
"hidden": 0,
|
||||
@@ -1085,6 +1152,7 @@
|
||||
"allow_on_submit": 0,
|
||||
"bold": 1,
|
||||
"collapsible": 0,
|
||||
"columns": 0,
|
||||
"depends_on": "eval:(doc.paid_from && doc.paid_to)",
|
||||
"fieldname": "reference_date",
|
||||
"fieldtype": "Date",
|
||||
@@ -1111,6 +1179,7 @@
|
||||
"allow_on_submit": 0,
|
||||
"bold": 0,
|
||||
"collapsible": 0,
|
||||
"columns": 0,
|
||||
"depends_on": "eval:doc.docstatus==1",
|
||||
"fieldname": "clearance_date",
|
||||
"fieldtype": "Date",
|
||||
@@ -1138,6 +1207,7 @@
|
||||
"bold": 0,
|
||||
"collapsible": 1,
|
||||
"collapsible_depends_on": "",
|
||||
"columns": 0,
|
||||
"depends_on": "eval:(doc.paid_from && doc.paid_to && doc.paid_amount && doc.received_amount)",
|
||||
"fieldname": "section_break_12",
|
||||
"fieldtype": "Section Break",
|
||||
@@ -1164,6 +1234,7 @@
|
||||
"allow_on_submit": 0,
|
||||
"bold": 0,
|
||||
"collapsible": 0,
|
||||
"columns": 0,
|
||||
"depends_on": "",
|
||||
"fieldname": "project",
|
||||
"fieldtype": "Link",
|
||||
@@ -1191,6 +1262,7 @@
|
||||
"allow_on_submit": 0,
|
||||
"bold": 0,
|
||||
"collapsible": 0,
|
||||
"columns": 0,
|
||||
"fieldname": "remarks",
|
||||
"fieldtype": "Small Text",
|
||||
"hidden": 0,
|
||||
@@ -1216,6 +1288,7 @@
|
||||
"allow_on_submit": 0,
|
||||
"bold": 0,
|
||||
"collapsible": 0,
|
||||
"columns": 0,
|
||||
"fieldname": "column_break_16",
|
||||
"fieldtype": "Column Break",
|
||||
"hidden": 0,
|
||||
@@ -1240,6 +1313,7 @@
|
||||
"allow_on_submit": 0,
|
||||
"bold": 0,
|
||||
"collapsible": 0,
|
||||
"columns": 0,
|
||||
"fieldname": "letter_head",
|
||||
"fieldtype": "Link",
|
||||
"hidden": 0,
|
||||
@@ -1266,6 +1340,7 @@
|
||||
"allow_on_submit": 0,
|
||||
"bold": 0,
|
||||
"collapsible": 0,
|
||||
"columns": 0,
|
||||
"fieldname": "print_heading",
|
||||
"fieldtype": "Link",
|
||||
"hidden": 0,
|
||||
@@ -1292,6 +1367,7 @@
|
||||
"allow_on_submit": 0,
|
||||
"bold": 0,
|
||||
"collapsible": 0,
|
||||
"columns": 0,
|
||||
"fieldname": "amended_from",
|
||||
"fieldtype": "Link",
|
||||
"hidden": 0,
|
||||
@@ -1317,6 +1393,7 @@
|
||||
"allow_on_submit": 0,
|
||||
"bold": 0,
|
||||
"collapsible": 0,
|
||||
"columns": 0,
|
||||
"fieldname": "title",
|
||||
"fieldtype": "Data",
|
||||
"hidden": 1,
|
||||
@@ -1349,8 +1426,8 @@
|
||||
"issingle": 0,
|
||||
"istable": 0,
|
||||
"max_attachments": 0,
|
||||
"modified": "2016-07-11 08:06:33.121527",
|
||||
"modified_by": "NuranVerkleij@example.com",
|
||||
"modified": "2016-09-05 11:06:18.183458",
|
||||
"modified_by": "Administrator",
|
||||
"module": "Accounts",
|
||||
"name": "Payment Entry",
|
||||
"name_case": "",
|
||||
|
||||
@@ -73,6 +73,9 @@ class PaymentEntry(AccountsController):
|
||||
|
||||
if not self.party:
|
||||
frappe.throw(_("Party is mandatory"))
|
||||
|
||||
self.party_name = frappe.db.get_value(self.party_type, self.party,
|
||||
self.party_type.lower() + "_name")
|
||||
|
||||
if self.party:
|
||||
if not self.party_balance:
|
||||
|
||||
@@ -1,6 +0,0 @@
|
||||
frappe.listview_settings['Payment Entry'] = {
|
||||
add_fields: ["payment_type"],
|
||||
get_indicator: function(doc) {
|
||||
return [__(doc.payment_type), (doc.docstatus==0 ? 'red' : 'blue'), 'status=' + doc.payment_type]
|
||||
}
|
||||
}
|
||||
@@ -171,7 +171,7 @@
|
||||
"ignore_user_permissions": 0,
|
||||
"ignore_xss_filter": 0,
|
||||
"in_filter": 0,
|
||||
"in_list_view": 0,
|
||||
"in_list_view": 1,
|
||||
"label": "Allocated",
|
||||
"length": 0,
|
||||
"no_copy": 0,
|
||||
|
||||
@@ -340,14 +340,20 @@ frappe.ui.form.on("Purchase Invoice", {
|
||||
$.each(["warehouse", "rejected_warehouse"], function(i, field) {
|
||||
frm.set_query(field, "items", function() {
|
||||
return {
|
||||
filters: [["Warehouse", "company", "in", ["", cstr(frm.doc.company)]]]
|
||||
filters: [
|
||||
["Warehouse", "company", "in", ["", cstr(frm.doc.company)]],
|
||||
["Warehouse", "is_group", "=", 0]
|
||||
]
|
||||
}
|
||||
})
|
||||
})
|
||||
|
||||
frm.set_query("supplier_warehouse", function() {
|
||||
return {
|
||||
filters: [["Warehouse", "company", "in", ["", cstr(frm.doc.company)]]]
|
||||
filters: [
|
||||
["Warehouse", "company", "in", ["", cstr(frm.doc.company)]],
|
||||
["Warehouse", "is_group", "=", 0]
|
||||
]
|
||||
}
|
||||
})
|
||||
},
|
||||
|
||||
@@ -614,6 +614,7 @@ erpnext.pos.PointOfSale = erpnext.taxes_and_totals.extend({
|
||||
this.child.batch_no = this.item_batch_no[this.child.item_code];
|
||||
this.child.serial_no = (this.item_serial_no[this.child.item_code]
|
||||
? this.item_serial_no[this.child.item_code][0] : '');
|
||||
this.child.item_tax_rate = this.items[0].taxes;
|
||||
},
|
||||
|
||||
update_paid_amount_status: function(update_paid_amount){
|
||||
@@ -775,6 +776,7 @@ erpnext.pos.PointOfSale = erpnext.taxes_and_totals.extend({
|
||||
this.update_invoice()
|
||||
}else{
|
||||
this.name = $.now();
|
||||
this.frm.doc.offline_pos_name = this.name;
|
||||
this.frm.doc.posting_date = frappe.datetime.get_today();
|
||||
this.frm.doc.posting_time = frappe.datetime.now_time();
|
||||
invoice_data[this.name] = this.frm.doc
|
||||
|
||||
@@ -6,9 +6,9 @@
|
||||
"docstatus": 0,
|
||||
"doctype": "Print Format",
|
||||
"font": "Default",
|
||||
"html": "<style>\n\t.print-format table, .print-format tr, \n\t.print-format td, .print-format div, .print-format p {\n\t\tfont-family: Monospace;\n\t\tline-height: 200%;\n\t\tvertical-align: middle;\n\t}\n\t@media screen {\n\t\t.print-format {\n\t\t\twidth: 4in;\n\t\t\tpadding: 0.25in;\n\t\t\tmin-height: 8in;\n\t\t}\n\t}\n</style>\n\n<p class=\"text-center\">\n\t{{ company }}<br>\n\t{{ __(\"Invoice\") }}<br>\n</p>\n<p>\n\t<b>{{ __(\"Date\") }}:</b> {{ dateutil.global_date_format(posting_date) }}<br>\n</p>\n\n<hr>\n<table class=\"table table-condensed cart no-border\">\n\t<thead>\n\t\t<tr>\n\t\t\t<th width=\"50%\">{{ __(\"Item\") }}</b></th>\n\t\t\t<th width=\"25%\" class=\"text-right\">{{ __(\"Qty\") }}</th>\n\t\t\t<th width=\"25%\" class=\"text-right\">{{ __(\"Amount\") }}</th>\n\t\t</tr>\n\t</thead>\n\t<tbody>\n\t\t{% for item in items %}\n\t\t<tr>\n\t\t\t<td>\n\t\t\t\t{{ item.item_name }}\n\t\t\t</td>\n\t\t\t<td class=\"text-right\">{{ format_number(item.qty, precision(\"difference\")) }}<br>@ {{ format_currency(item.rate, currency) }}</td>\n\t\t\t<td class=\"text-right\">{{ format_currency(item.amount, currency) }}</td>\n\t\t</tr>\n\t\t{% endfor %}\n\t</tbody>\n</table>\n\n<table class=\"table table-condensed no-border\">\n\t<tbody>\n\t\t<tr>\n\t\t\t<td class=\"text-right\" style=\"width: 70%\">\n\t\t\t\t{{ __(\"Net Total\") }}\n\t\t\t</td>\n\t\t\t<td class=\"text-right\">\n\t\t\t\t{{ format_currency(total, currency) }}\n\t\t\t</td>\n\t\t</tr>\n\t\t{% for row in taxes %}\n\t\t{% if not row.included_in_print_rate %}\n\t\t<tr>\n\t\t\t<td class=\"text-right\" style=\"width: 70%\">\n\t\t\t\t{{ row.description }}\n\t\t\t</td>\n\t\t\t<td class=\"text-right\">\n\t\t\t\t{{ format_currency(row.tax_amount, currency) }}\n\t\t\t</td>\n\t\t</tr>\n\t\t{% endif %}\n\t\t{% endfor %}\n\t\t{% if discount_amount %}\n\t\t<tr>\n\t\t\t<td class=\"text-right\" style=\"width: 75%\">\n\t\t\t\t{{ __(\"Discount\") }}\n\t\t\t</td>\n\t\t\t<td class=\"text-right\">\n\t\t\t\t{{ format_currency(discount_amount, currency) }}\n\t\t\t</td>\n\t\t</tr>\n\t\t{% endif %}\n\t\t<tr>\n\t\t\t<td class=\"text-right\" style=\"width: 75%\">\n\t\t\t\t<b>{{ __(\"Grand Total\") }}</b>\n\t\t\t</td>\n\t\t\t<td class=\"text-right\">\n\t\t\t\t{{ format_currency(grand_total, currency) }}\n\t\t\t</td>\n\t\t</tr>\n\t</tbody>\n</table>\n\n\n<hr>\n<p class=\"text-center\">{{ __(\"Thank you, please visit again.\") }}</p>",
|
||||
"html": "<style>\n\t.print-format table, .print-format tr, \n\t.print-format td, .print-format div, .print-format p {\n\t\tfont-family: Monospace;\n\t\tline-height: 200%;\n\t\tvertical-align: middle;\n\t}\n\t@media screen {\n\t\t.print-format {\n\t\t\twidth: 4in;\n\t\t\tpadding: 0.25in;\n\t\t\tmin-height: 8in;\n\t\t}\n\t}\n</style>\n\n<p class=\"text-center\">\n\t{{ company }}<br>\n\t{{ __(\"POS No : \") }}{{offline_pos_name}}<br>\n</p>\n<p>\n\t<b>{{ __(\"Date\") }}:</b> {{ dateutil.global_date_format(posting_date) }}<br>\n</p>\n\n<hr>\n<table class=\"table table-condensed cart no-border\">\n\t<thead>\n\t\t<tr>\n\t\t\t<th width=\"50%\">{{ __(\"Item\") }}</b></th>\n\t\t\t<th width=\"25%\" class=\"text-right\">{{ __(\"Qty\") }}</th>\n\t\t\t<th width=\"25%\" class=\"text-right\">{{ __(\"Amount\") }}</th>\n\t\t</tr>\n\t</thead>\n\t<tbody>\n\t\t{% for item in items %}\n\t\t<tr>\n\t\t\t<td>\n\t\t\t\t{{ item.item_name }}\n\t\t\t</td>\n\t\t\t<td class=\"text-right\">{{ format_number(item.qty, precision(\"difference\")) }}<br>@ {{ format_currency(item.rate, currency) }}</td>\n\t\t\t<td class=\"text-right\">{{ format_currency(item.amount, currency) }}</td>\n\t\t</tr>\n\t\t{% endfor %}\n\t</tbody>\n</table>\n\n<table class=\"table table-condensed no-border\">\n\t<tbody>\n\t\t<tr>\n\t\t\t<td class=\"text-right\" style=\"width: 70%\">\n\t\t\t\t{{ __(\"Net Total\") }}\n\t\t\t</td>\n\t\t\t<td class=\"text-right\">\n\t\t\t\t{{ format_currency(total, currency) }}\n\t\t\t</td>\n\t\t</tr>\n\t\t{% for row in taxes %}\n\t\t{% if not row.included_in_print_rate %}\n\t\t<tr>\n\t\t\t<td class=\"text-right\" style=\"width: 70%\">\n\t\t\t\t{{ row.description }}\n\t\t\t</td>\n\t\t\t<td class=\"text-right\">\n\t\t\t\t{{ format_currency(row.tax_amount, currency) }}\n\t\t\t</td>\n\t\t</tr>\n\t\t{% endif %}\n\t\t{% endfor %}\n\t\t{% if discount_amount %}\n\t\t<tr>\n\t\t\t<td class=\"text-right\" style=\"width: 75%\">\n\t\t\t\t{{ __(\"Discount\") }}\n\t\t\t</td>\n\t\t\t<td class=\"text-right\">\n\t\t\t\t{{ format_currency(discount_amount, currency) }}\n\t\t\t</td>\n\t\t</tr>\n\t\t{% endif %}\n\t\t<tr>\n\t\t\t<td class=\"text-right\" style=\"width: 75%\">\n\t\t\t\t<b>{{ __(\"Grand Total\") }}</b>\n\t\t\t</td>\n\t\t\t<td class=\"text-right\">\n\t\t\t\t{{ format_currency(grand_total, currency) }}\n\t\t\t</td>\n\t\t</tr>\n\t</tbody>\n</table>\n\n\n<hr>\n<p class=\"text-center\">{{ __(\"Thank you, please visit again.\") }}</p>",
|
||||
"idx": 0,
|
||||
"modified": "2016-08-11 07:23:04.530676",
|
||||
"modified": "2016-09-05 08:28:42.308782",
|
||||
"modified_by": "Administrator",
|
||||
"name": "Point of Sale",
|
||||
"owner": "Administrator",
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
<div style="margin-bottom: 7px;" class="text-center">
|
||||
{%= frappe.boot.letter_heads[frappe.defaults.get_default("letter_head")] %}
|
||||
{%= frappe.boot.letter_heads[frappe.get_doc(":Company", filters.company).default_letter_head || frappe.defaults.get_default("letter_head")] %}
|
||||
</div>
|
||||
<h2 class="text-center">{%= __(report.report_name) %}</h2>
|
||||
<h4 class="text-center">{%= filters.customer || filters.supplier %} </h4>
|
||||
|
||||
@@ -13,7 +13,9 @@
|
||||
height: 37px;
|
||||
}
|
||||
</style>
|
||||
|
||||
<div style="margin-bottom: 7px;" class="text-center">
|
||||
{%= frappe.boot.letter_heads[frappe.get_doc(":Company", filters.company).default_letter_head || frappe.defaults.get_default("letter_head")] %}
|
||||
</div>
|
||||
<h2 class="text-center">{%= __(report.report_name) %}</h2>
|
||||
<h4 class="text-center">{%= filters.company %}</h3>
|
||||
<h4 class="text-center">{%= filters.fiscal_year %}</h3>
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
<div style="margin-bottom: 7px;" class="text-center">
|
||||
{%= frappe.boot.letter_heads[filters.letter_head || frappe.defaults.get_default("letter_head")] %}
|
||||
{%= frappe.boot.letter_heads[filters.letter_head || frappe.get_doc(":Company", filters.company).default_letter_head || frappe.defaults.get_default("letter_head")] %}
|
||||
</div>
|
||||
<h2 class="text-center">{%= __("Statement of Account") %}</h2>
|
||||
<h4 class="text-center">{%= (filters.party || filters.account) && ((filters.party || filters.account) + ", ") || "" %} {%= filters.company %}</h4>
|
||||
|
||||
@@ -662,7 +662,7 @@ def get_advance_journal_entries(party_type, party, party_account, amount_field,
|
||||
.format(order_doctype, order_condition))
|
||||
|
||||
reference_condition = " and (" + " or ".join(conditions) + ")" if conditions else ""
|
||||
|
||||
|
||||
journal_entries = frappe.db.sql("""
|
||||
select
|
||||
"Journal Entry" as reference_type, t1.name as reference_name,
|
||||
@@ -674,8 +674,7 @@ def get_advance_journal_entries(party_type, party, party_account, amount_field,
|
||||
t1.name = t2.parent and t2.account = %s
|
||||
and t2.party_type = %s and t2.party = %s
|
||||
and t2.is_advance = 'Yes' and t1.docstatus = 1
|
||||
and {1} > 0
|
||||
and (ifnull(t2.reference_name, '')='' {2})
|
||||
and {1} > 0 {2}
|
||||
order by t1.posting_date""".format(amount_field, dr_or_cr, reference_condition),
|
||||
[party_account, party_type, party] + order_list, as_dict=1)
|
||||
|
||||
|
||||
@@ -17,7 +17,8 @@ def get_filters_cond(doctype, filters, conditions):
|
||||
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]])
|
||||
value = frappe.db.escape(f[1]) if isinstance(f[1], basestring) else f[1]
|
||||
flt.append([doctype, f[0], '=', value])
|
||||
|
||||
query = DatabaseQuery(doctype)
|
||||
query.filters = flt
|
||||
|
||||
@@ -39,6 +39,7 @@ def validate_filters(filters):
|
||||
frappe.throw(_("'Based On' and 'Group By' can not be same"))
|
||||
|
||||
def get_data(filters, conditions):
|
||||
|
||||
data = []
|
||||
inc, cond= '',''
|
||||
query_details = conditions["based_on_select"] + conditions["period_wise_select"]
|
||||
@@ -49,6 +50,9 @@ def get_data(filters, conditions):
|
||||
|
||||
if conditions["based_on_select"] in ["t1.project,", "t2.project,"]:
|
||||
cond = 'and '+ conditions["based_on_select"][:-1] +' IS Not NULL'
|
||||
|
||||
if conditions.get('trans') in ['Sales Order', 'Purchase Order']:
|
||||
cond += "and t1.status != 'Closed'"
|
||||
|
||||
year_start_date, year_end_date = frappe.db.get_value("Fiscal Year",
|
||||
filters.get('fiscal_year'), ["year_start_date", "year_end_date"])
|
||||
@@ -85,10 +89,10 @@ def get_data(filters, conditions):
|
||||
#to get distinct value of col specified by group_by in filter
|
||||
row = frappe.db.sql("""select DISTINCT(%s) from `tab%s` t1, `tab%s Item` t2 %s
|
||||
where t2.parent = t1.name and t1.company = %s and %s between %s and %s
|
||||
and t1.docstatus = 1 and %s = %s %s
|
||||
and t1.docstatus = 1 and %s = %s %s %s
|
||||
""" %
|
||||
(sel_col, conditions["trans"], conditions["trans"], conditions["addl_tables"],
|
||||
"%s", posting_date, "%s", "%s", conditions["group_by"], "%s", conditions.get("addl_tables_relational_cond")),
|
||||
"%s", posting_date, "%s", "%s", conditions["group_by"], "%s", conditions.get("addl_tables_relational_cond"), cond),
|
||||
(filters.get("company"), year_start_date, year_end_date, data1[d][0]), as_list=1)
|
||||
|
||||
for i in range(len(row)):
|
||||
@@ -97,11 +101,11 @@ def get_data(filters, conditions):
|
||||
#get data for group_by filter
|
||||
row1 = frappe.db.sql(""" select %s , %s from `tab%s` t1, `tab%s Item` t2 %s
|
||||
where t2.parent = t1.name and t1.company = %s and %s between %s and %s
|
||||
and t1.docstatus = 1 and %s = %s and %s = %s %s
|
||||
and t1.docstatus = 1 and %s = %s and %s = %s %s %s
|
||||
""" %
|
||||
(sel_col, conditions["period_wise_select"], conditions["trans"],
|
||||
conditions["trans"], conditions["addl_tables"], "%s", posting_date, "%s","%s", sel_col,
|
||||
"%s", conditions["group_by"], "%s", conditions.get("addl_tables_relational_cond")),
|
||||
"%s", conditions["group_by"], "%s", conditions.get("addl_tables_relational_cond"), cond),
|
||||
(filters.get("company"), year_start_date, year_end_date, row[i][0],
|
||||
data1[d][0]), as_list=1)
|
||||
|
||||
|
||||
@@ -58,7 +58,7 @@ class MaintenanceSchedule(TransactionBase):
|
||||
if no_email_sp:
|
||||
frappe.msgprint(
|
||||
frappe._("Setting Events to {0}, since the Employee attached to the below Sales Persons does not have a User ID{1}").format(
|
||||
self.owner, "<br>"+no_email_sp.join("<br>")
|
||||
self.owner, "<br>" + "<br>".join(no_email_sp)
|
||||
))
|
||||
|
||||
scheduled_date = frappe.db.sql("""select scheduled_date from
|
||||
@@ -187,14 +187,17 @@ class MaintenanceSchedule(TransactionBase):
|
||||
if not sr_details:
|
||||
frappe.throw(_("Serial No {0} not found").format(serial_no))
|
||||
|
||||
if sr_details.warranty_expiry_date and sr_details.warranty_expiry_date>=amc_start_date:
|
||||
throw(_("Serial No {0} is under warranty upto {1}").format(serial_no, sr_details.warranty_expiry_date))
|
||||
if sr_details.warranty_expiry_date \
|
||||
and getdate(sr_details.warranty_expiry_date) >= getdate(amc_start_date):
|
||||
throw(_("Serial No {0} is under warranty upto {1}")
|
||||
.format(serial_no, sr_details.warranty_expiry_date))
|
||||
|
||||
if sr_details.amc_expiry_date and sr_details.amc_expiry_date >= amc_start_date:
|
||||
throw(_("Serial No {0} is under maintenance contract upto {1}").format(serial_no, sr_details.amc_start_date))
|
||||
if sr_details.amc_expiry_date and getdate(sr_details.amc_expiry_date) >= getdate(amc_start_date):
|
||||
throw(_("Serial No {0} is under maintenance contract upto {1}")
|
||||
.format(serial_no, sr_details.amc_start_date))
|
||||
|
||||
if not sr_details.warehouse and sr_details.delivery_date and \
|
||||
sr_details.delivery_date >= amc_start_date:
|
||||
getdate(sr_details.delivery_date) >= getdate(amc_start_date):
|
||||
throw(_("Maintenance start date can not be before delivery date for Serial No {0}")
|
||||
.format(serial_no))
|
||||
|
||||
|
||||
@@ -174,7 +174,8 @@ erpnext.production_order = {
|
||||
var company_filter = function(doc) {
|
||||
return {
|
||||
filters: {
|
||||
'company': frm.doc.company
|
||||
'company': frm.doc.company,
|
||||
'is_group': 0
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -313,4 +313,6 @@ erpnext.patches.v7_0.set_portal_settings
|
||||
erpnext.patches.v7_0.repost_future_gle_for_purchase_invoice
|
||||
erpnext.patches.v7_0.fix_duplicate_icons
|
||||
erpnext.patches.v7_0.repost_gle_for_pos_sales_return
|
||||
erpnext.patches.v7_0.update_missing_employee_in_timesheet
|
||||
erpnext.patches.v7_0.update_missing_employee_in_timesheet
|
||||
erpnext.patches.v7_0.update_status_for_timesheet
|
||||
erpnext.patches.v7_0.set_party_name_in_payment_entry
|
||||
|
||||
@@ -4,8 +4,10 @@ from erpnext.manufacturing.doctype.production_order.production_order \
|
||||
|
||||
def execute():
|
||||
frappe.reload_doc('projects', 'doctype', 'timesheet')
|
||||
if not frappe.db.table_exists("Time Log"):
|
||||
return
|
||||
|
||||
for data in frappe.get_all('Time Log', fields=["*"], filters = [["docstatus", "<", "2"]]):
|
||||
for data in frappe.db.sql("select * from `tabTime Log` where where docstatus < 2", as_dict=1):
|
||||
if data.task:
|
||||
company = frappe.db.get_value("Task", data.task, "company")
|
||||
elif data.production_order:
|
||||
@@ -19,13 +21,14 @@ def execute():
|
||||
time_sheet.employee = data.employee
|
||||
time_sheet.note = data.note
|
||||
time_sheet.company = company
|
||||
|
||||
|
||||
time_sheet.set_status()
|
||||
time_sheet.set_dates()
|
||||
time_sheet.update_cost()
|
||||
time_sheet.calculate_total_amounts()
|
||||
time_sheet.flags.ignore_validate = True
|
||||
time_sheet.save(ignore_permissions=True)
|
||||
|
||||
|
||||
# To ignore validate_mandatory_fields function
|
||||
if data.docstatus == 1:
|
||||
time_sheet.db_set("docstatus", 1)
|
||||
@@ -33,7 +36,6 @@ def execute():
|
||||
d.db_set("docstatus", 1)
|
||||
time_sheet.update_production_order(time_sheet.name)
|
||||
time_sheet.update_task_and_project()
|
||||
|
||||
|
||||
def get_timelog_data(data):
|
||||
return {
|
||||
|
||||
@@ -4,17 +4,35 @@ import frappe
|
||||
def execute():
|
||||
frappe.reload_doc('accounts', 'doctype', 'sales_invoice_timesheet')
|
||||
frappe.reload_doc('accounts', 'doctype', 'sales_invoice_payment')
|
||||
|
||||
for data in frappe.db.sql("""select name, mode_of_payment, cash_bank_account, paid_amount from
|
||||
`tabSales Invoice` where is_pos = 1 and docstatus < 2 and cash_bank_account is not null""", as_dict=1):
|
||||
frappe.reload_doc('accounts', 'doctype', 'mode_of_payment')
|
||||
|
||||
count = 0
|
||||
for data in frappe.db.sql("""select name, mode_of_payment, cash_bank_account, paid_amount, company
|
||||
from `tabSales Invoice` si
|
||||
where si.is_pos = 1 and si.docstatus < 2
|
||||
and si.cash_bank_account is not null and si.cash_bank_account != ''
|
||||
and not exists(select name from `tabSales Invoice Payment` where parent=si.name)""", as_dict=1):
|
||||
|
||||
if not data.mode_of_payment and not frappe.db.exists("Mode of Payment", "Cash"):
|
||||
mop = frappe.new_doc("Mode of Payment")
|
||||
mop.mode_of_payment = "Cash"
|
||||
mop.type = "Cash"
|
||||
mop.save()
|
||||
|
||||
si_doc = frappe.get_doc('Sales Invoice', data.name)
|
||||
si_doc.append('payments', {
|
||||
row = si_doc.append('payments', {
|
||||
'mode_of_payment': data.mode_of_payment or 'Cash',
|
||||
'account': data.cash_bank_account,
|
||||
'type': frappe.db.get_value('Mode of Payment', data.mode_of_payment, 'type') or 'Cash',
|
||||
'amount': data.paid_amount
|
||||
})
|
||||
|
||||
row.db_update()
|
||||
|
||||
si_doc.set_paid_amount()
|
||||
si_doc.flags.ignore_validate_update_after_submit = True
|
||||
si_doc.save()
|
||||
si_doc.db_set("paid_amount", si_doc.paid_amount)
|
||||
si_doc.db_set("base_paid_amount", si_doc.base_paid_amount)
|
||||
|
||||
count +=1
|
||||
|
||||
if count % 200 == 0:
|
||||
frappe.db.commit()
|
||||
20
erpnext/patches/v7_0/set_party_name_in_payment_entry.py
Normal file
20
erpnext/patches/v7_0/set_party_name_in_payment_entry.py
Normal file
@@ -0,0 +1,20 @@
|
||||
# Copyright (c) 2015, Frappe Technologies Pvt. Ltd. and Contributors
|
||||
# License: GNU General Public License v3. See license.txt
|
||||
|
||||
from __future__ import unicode_literals
|
||||
|
||||
import frappe
|
||||
|
||||
def execute():
|
||||
customers = frappe._dict(frappe.db.sql("select name, customer_name from tabCustomer"))
|
||||
suppliers = frappe._dict(frappe.db.sql("select name, supplier_name from tabSupplier"))
|
||||
|
||||
frappe.reload_doc('accounts', 'doctype', 'payment_entry')
|
||||
|
||||
pe_list = frappe.db.sql("""select name, party_type, party from `tabPayment Entry`
|
||||
where party is not null and party != ''""", as_dict=1)
|
||||
for pe in pe_list:
|
||||
party_name = customers.get(pe.party) if pe.party_type=="Customer" else suppliers.get(pe.party)
|
||||
|
||||
frappe.db.set_value("Payment Entry", pe.name, "party_name", party_name, update_modified=False)
|
||||
|
||||
@@ -9,7 +9,8 @@ def execute():
|
||||
return
|
||||
|
||||
for expense_claim_type in frappe.get_all("Expense Claim Type", fields=["name", "default_account"]):
|
||||
if expense_claim_type.default_account:
|
||||
if expense_claim_type.default_account \
|
||||
and frappe.db.exists("Account", expense_claim_type.default_account):
|
||||
doc = frappe.get_doc("Expense Claim Type", expense_claim_type.name)
|
||||
doc.append("accounts", {
|
||||
"company": frappe.db.get_value("Account", expense_claim_type.default_account, "company"),
|
||||
|
||||
@@ -2,18 +2,19 @@ from __future__ import unicode_literals
|
||||
import frappe
|
||||
|
||||
def execute():
|
||||
timesheet = frappe.db.sql("""select tl.employee as employee, ts.name as name,
|
||||
tl.modified as modified, tl.modified_by as modified_by, tl.creation as creation, tl.owner as owner
|
||||
from
|
||||
`tabTimesheet` ts, `tabTimesheet Detail` tsd, `tabTime Log` tl
|
||||
where
|
||||
tsd.parent = ts.name and tl.from_time = tsd.from_time and tl.to_time = tsd.to_time
|
||||
and tl.hours = tsd.hours and tl.billing_rate = tsd.billing_rate and tsd.idx=1
|
||||
and tl.docstatus < 2 and (ts.employee = '' or ts.employee is null)""", as_dict=1)
|
||||
if frappe.db.table_exists("Time Log") and "employee" in frappe.db.get_table_columns("Time Log"):
|
||||
timesheet = frappe.db.sql("""select tl.employee as employee, ts.name as name,
|
||||
tl.modified as modified, tl.modified_by as modified_by, tl.creation as creation, tl.owner as owner
|
||||
from
|
||||
`tabTimesheet` ts, `tabTimesheet Detail` tsd, `tabTime Log` tl
|
||||
where
|
||||
tsd.parent = ts.name and tl.from_time = tsd.from_time and tl.to_time = tsd.to_time
|
||||
and tl.hours = tsd.hours and tl.billing_rate = tsd.billing_rate and tsd.idx=1
|
||||
and tl.docstatus < 2 and (ts.employee = '' or ts.employee is null)""", as_dict=1)
|
||||
|
||||
for data in timesheet:
|
||||
ts_doc = frappe.get_doc('Timesheet', data.name)
|
||||
if len(ts_doc.time_logs) == 1:
|
||||
frappe.db.sql(""" update `tabTimesheet` set creation = %(creation)s,
|
||||
owner = %(owner)s, modified = %(modified)s, modified_by = %(modified_by)s,
|
||||
employee = %(employee)s where name = %(name)s""", data)
|
||||
for data in timesheet:
|
||||
ts_doc = frappe.get_doc('Timesheet', data.name)
|
||||
if len(ts_doc.time_logs) == 1:
|
||||
frappe.db.sql(""" update `tabTimesheet` set creation = %(creation)s,
|
||||
owner = %(owner)s, modified = %(modified)s, modified_by = %(modified_by)s,
|
||||
employee = %(employee)s where name = %(name)s""", data)
|
||||
|
||||
11
erpnext/patches/v7_0/update_status_for_timesheet.py
Normal file
11
erpnext/patches/v7_0/update_status_for_timesheet.py
Normal file
@@ -0,0 +1,11 @@
|
||||
from __future__ import unicode_literals
|
||||
import frappe
|
||||
|
||||
def execute():
|
||||
frappe.db.sql("""update
|
||||
`tabTimesheet` as ts,
|
||||
(
|
||||
select min(from_time)as from_time, max(to_time) as to_time, parent from `tabTimesheet Detail` group by parent
|
||||
) as tsd
|
||||
set ts.status = 'Submitted', ts.start_date = tsd.from_time, ts.end_date = tsd.to_time
|
||||
where tsd.parent = ts.name and ts.status = 'Draft' and ts.docstatus =1""")
|
||||
@@ -12,8 +12,9 @@ def execute(filters=None):
|
||||
filters["from_time"] = "00:00:00"
|
||||
filters["to_time"] = "24:00:00"
|
||||
|
||||
columns = [_("Timesheet") + ":Link/Timesheet:120", _("Employee") + "::150", _("From Datetime") + "::140",
|
||||
_("To Datetime") + "::140", _("Hours") + "::70", _("Activity Type") + "::120", _("Task") + ":Link/Task:150",
|
||||
columns = [_("Timesheet") + ":Link/Timesheet:120", _("Employee") + "::150", _("Employee Name") + "::150",
|
||||
_("From Datetime") + "::140", _("To Datetime") + "::140", _("Hours") + "::70",
|
||||
_("Activity Type") + "::120", _("Task") + ":Link/Task:150",
|
||||
_("Project") + ":Link/Project:120", _("Status") + "::70"]
|
||||
|
||||
conditions = "ts.docstatus = 1"
|
||||
@@ -27,7 +28,8 @@ def execute(filters=None):
|
||||
return columns, data
|
||||
|
||||
def get_data(conditions, filters):
|
||||
time_sheet = frappe.db.sql(""" select ts.name, ts.employee, tsd.from_time, tsd.to_time, tsd.hours,
|
||||
time_sheet = frappe.db.sql(""" select ts.name, ts.employee, ts.employee_name,
|
||||
tsd.from_time, tsd.to_time, tsd.hours,
|
||||
tsd.activity_type, tsd.task, tsd.project, ts.status from `tabTimesheet Detail` tsd,
|
||||
`tabTimesheet` ts where ts.name = tsd.parent and %s order by ts.name"""%(conditions), filters, as_list=1)
|
||||
|
||||
|
||||
@@ -22,12 +22,21 @@ def get_notification_config():
|
||||
"docstatus": ("<", 2)
|
||||
},
|
||||
"Journal Entry": {"docstatus": 0},
|
||||
"Sales Invoice": { "outstanding_amount": (">", 0), "docstatus": ("<", 2) },
|
||||
"Purchase Invoice": {"docstatus": 0},
|
||||
"Sales Invoice": {
|
||||
"outstanding_amount": (">", 0),
|
||||
"docstatus": ("<", 2)
|
||||
},
|
||||
"Purchase Invoice": {
|
||||
"outstanding_amount": (">", 0),
|
||||
"docstatus": ("<", 2)
|
||||
},
|
||||
"Leave Application": {"status": "Open"},
|
||||
"Expense Claim": {"approval_status": "Draft"},
|
||||
"Job Applicant": {"status": "Open"},
|
||||
"Delivery Note": {"docstatus": 0},
|
||||
"Delivery Note": {
|
||||
"status": ("not in", ("Completed", "Closed")),
|
||||
"docstatus": ("<", 2)
|
||||
},
|
||||
"Stock Entry": {"docstatus": 0},
|
||||
"Material Request": {
|
||||
"docstatus": ("<", 2),
|
||||
@@ -40,7 +49,10 @@ def get_notification_config():
|
||||
"status": ("not in", ("Completed", "Closed")),
|
||||
"docstatus": ("<", 2)
|
||||
},
|
||||
"Purchase Receipt": {"docstatus": 0},
|
||||
"Purchase Receipt": {
|
||||
"status": ("not in", ("Completed", "Closed")),
|
||||
"docstatus": ("<", 2)
|
||||
},
|
||||
"Production Order": { "status": ("in", ("Draft", "Not Started", "In Process")) },
|
||||
"BOM": {"docstatus": 0},
|
||||
"Timesheet": {"status": "Draft"}
|
||||
|
||||
@@ -25,14 +25,20 @@ frappe.ui.form.on("Purchase Receipt", {
|
||||
$.each(["warehouse", "rejected_warehouse"], function(i, field) {
|
||||
frm.set_query(field, "items", function() {
|
||||
return {
|
||||
filters: [["Warehouse", "company", "in", ["", cstr(frm.doc.company)]]]
|
||||
filters: [
|
||||
["Warehouse", "company", "in", ["", cstr(frm.doc.company)]],
|
||||
["Warehouse", "is_group", "=", 0]
|
||||
]
|
||||
}
|
||||
})
|
||||
})
|
||||
|
||||
frm.set_query("supplier_warehouse", function() {
|
||||
return {
|
||||
filters: [["Warehouse", "company", "in", ["", cstr(frm.doc.company)]]]
|
||||
filters: [
|
||||
["Warehouse", "company", "in", ["", cstr(frm.doc.company)]],
|
||||
["Warehouse", "is_group", "=", 0]
|
||||
]
|
||||
}
|
||||
})
|
||||
}
|
||||
|
||||
@@ -30,9 +30,10 @@ rfq = Class.extend({
|
||||
var me = this;
|
||||
$('.rfq-items').on("change", ".rfq-qty", function(){
|
||||
me.idx = parseFloat($(this).attr('data-idx'));
|
||||
me.qty = parseFloat($(this).val());
|
||||
me.qty = parseFloat($(this).val()) || 0;
|
||||
me.rate = parseFloat($(repl('.rfq-rate[data-idx=%(idx)s]',{'idx': me.idx})).val());
|
||||
me.update_qty_rate();
|
||||
$(this).val(format_number(me.qty, 2));
|
||||
})
|
||||
},
|
||||
|
||||
@@ -40,9 +41,10 @@ rfq = Class.extend({
|
||||
var me = this;
|
||||
$(".rfq-items").on("change", ".rfq-rate", function(){
|
||||
me.idx = parseFloat($(this).attr('data-idx'));
|
||||
me.rate = parseFloat($(this).val());
|
||||
me.rate = parseFloat($(this).val()) || 0;
|
||||
me.qty = parseFloat($(repl('.rfq-qty[data-idx=%(idx)s]',{'idx': me.idx})).val());
|
||||
me.update_qty_rate();
|
||||
$(this).val(format_number(me.rate, 2));
|
||||
})
|
||||
},
|
||||
|
||||
|
||||
@@ -3,26 +3,26 @@
|
||||
{% for d in doc.items %}
|
||||
<div class="rfq-item">
|
||||
<div class="row">
|
||||
<div class="col-sm-6 col-xs-6" style="margin-bottom: 10px;margin-top: 5px;">
|
||||
<div class="col-sm-5 col-xs-12" style="margin-bottom: 10px;margin-top: 5px;">
|
||||
{{ item_name_and_description(d, doc) }}
|
||||
</div>
|
||||
<!-- <div class="col-sm-2 col-xs-2" style="margin-bottom: 10px;">
|
||||
<textarea type="text" style="margin-top: 5px;" class="input-with-feedback form-control rfq-offer_detail" ></textarea>
|
||||
</div> -->
|
||||
<div class="col-sm-2 col-xs-2 text-right">
|
||||
<input type="number" class="form-control text-right rfq-qty" style="margin-top: 5px; max-width: 70px;display: inline-block"
|
||||
<div class="col-sm-2 col-xs-4 text-right">
|
||||
<input type="text" class="form-control text-right rfq-qty" style="margin-top: 5px;display: inline-block"
|
||||
value = "{{ d.get_formatted('qty') }}"
|
||||
data-idx="{{ d.idx }}">
|
||||
<p class="text-muted small" style="margin-top: 10px;">
|
||||
{{_("UOM") + ": "+ d.uom}}
|
||||
{{_("UOM") + ":"+ d.uom}}
|
||||
</p>
|
||||
</div>
|
||||
<div class="col-sm-2 col-xs-2 text-right">
|
||||
{{doc.currency_symbol}} <input type="number" class="form-control text-right rfq-rate"
|
||||
style="margin-top: 5px; max-width: 70px;display: inline-block" value="0.00"
|
||||
<div class="col-sm-2 col-xs-4 text-right">
|
||||
<input type="text" class="form-control text-right rfq-rate"
|
||||
style="margin-top: 5px;display: inline-block" value="0.00"
|
||||
data-idx="{{ d.idx }}">
|
||||
</div>
|
||||
<div class="col-sm-2 col-xs-2 text-right" style="padding-top: 9px;">
|
||||
<div class="col-sm-3 col-xs-4 text-right" style="padding-top: 9px;">
|
||||
{{doc.currency_symbol}} <span class="rfq-amount" data-idx="{{ d.idx }}">0.00</span>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
@@ -33,16 +33,16 @@
|
||||
<div id="order-container">
|
||||
<div id="rfq-items">
|
||||
<div class="row cart-item-header">
|
||||
<div class="col-sm-6 col-xs-6">
|
||||
<div class="col-sm-5 col-xs-12">
|
||||
Items
|
||||
</div>
|
||||
<div class="col-sm-2 col-xs-2 text-right">
|
||||
<div class="col-sm-2 col-xs-4 text-right">
|
||||
Qty
|
||||
</div>
|
||||
<div class="col-sm-2 col-xs-2 text-right">
|
||||
<div class="col-sm-2 col-xs-4 text-right">
|
||||
Rate
|
||||
</div>
|
||||
<div class="col-sm-2 col-xs-2 text-right">
|
||||
<div class="col-sm-3 col-xs-4 text-right">
|
||||
Amount
|
||||
</div>
|
||||
</div>
|
||||
@@ -55,8 +55,8 @@
|
||||
</div>
|
||||
{% if doc.items %}
|
||||
<div class="row grand-total-row">
|
||||
<div class="col-xs-10 text-right">{{ _("Grand Total") }}</div>
|
||||
<div class="col-xs-2 text-right">
|
||||
<div class="col-xs-9 text-right">{{ _("Grand Total") }}</div>
|
||||
<div class="col-xs-3 text-right">
|
||||
{{doc.currency_symbol}} <span class="tax-grand-total">0.0</span>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
Reference in New Issue
Block a user