Compare commits

..

152 Commits

Author SHA1 Message Date
mbauskar
1508267fd6 Merge branch 'develop' 2017-06-29 15:07:26 +05:30
mbauskar
8f1f93603d bumped to version 8.2.0 2017-06-29 15:37:26 +06:00
Aditya Duggal
f1bd39c937 Allow NA values in GSTIN number (#9503)
-Reason for allowing NA value is that if a user wants to make GSTIN number mandatory then they can do the same easily
2017-06-29 14:25:19 +05:30
mbauskar
ec252c806f resolved merge conflicts 2017-06-29 12:11:07 +05:30
mbauskar
2a903a0608 Merge branch 'hotfix' 2017-06-29 12:09:40 +05:30
mbauskar
71b4e48ea5 bumped to version 8.1.7 2017-06-29 12:39:39 +06:00
Makarand Bauskar
ae2d92ee76 Merge pull request #9523 from saurabh6790/setup_wiz_fix
[fix] translate domain
2017-06-29 12:07:19 +05:30
Saurabh
21cf1fd851 [fix] translate domain 2017-06-29 12:04:45 +05:30
Makarand Bauskar
02c281cc2f Merge pull request #9522 from rmehta/update-gstin-2
[fix] update-gstin
2017-06-29 12:01:20 +05:30
Makarand Bauskar
a938d3956a [minor] get doc using party_name instead of party 2017-06-29 11:58:50 +05:30
Rushabh Mehta
02b0ed4199 [fix] update-gstin 2017-06-29 11:56:14 +05:30
Vishal Dhayagude
76f93d05b7 display image in supplier's list view (#9500)
* [fix]display supplier image in desk

* Supplier image displayed in desk

* Show image in supplier desk page

* [minor] removed whitespaces
2017-06-29 11:23:13 +05:30
Makarand Bauskar
24ab20fe11 Merge pull request #9467 from rohitwaghchaure/support_hours_report
[enhance] Report for analysis of support hours count
2017-06-29 11:19:41 +05:30
Makarand Bauskar
1eb31db71f Merge pull request #9466 from manassolanki/validation
changes in student settings for validating the students in the student groups
2017-06-29 10:48:59 +05:30
Makarand Bauskar
ef95b4d6e3 Merge pull request #9468 from manassolanki/issue-11
in program enrollment filter out students which are already enrolled
2017-06-29 10:48:12 +05:30
Makarand Bauskar
514c0417dd Merge pull request #9483 from manassolanki/fix-student-fetch
fetch queries for the students in the student group
2017-06-29 10:47:05 +05:30
Makarand Bauskar
67f6ac848c Merge pull request #9497 from ashwinisave35/email_template_redesign
Adding ERPNext logo for email templates.
2017-06-29 10:46:44 +05:30
Makarand Bauskar
5d95ebec4e Merge pull request #9508 from rohitwaghchaure/contacts_module_error
[Fix] Module error during patch execution
2017-06-29 10:46:17 +05:30
Makarand Bauskar
bb7317d398 Merge pull request #9512 from mbauskar/patch-fix
[fixes] delete auto email report of deprecated reports and other minor fixes
2017-06-29 10:45:50 +05:30
Makarand Bauskar
550268eaf3 Merge pull request #9518 from sagarvora/gh-9516
[minor] fix supplier GSTIN portal not getting displayed
2017-06-29 10:43:53 +05:30
Makarand Bauskar
7f9af46da5 [minor] removed whitespace 2017-06-29 09:38:46 +05:30
Makarand Bauskar
e38eb83358 [minor] removed print statement 2017-06-29 09:35:11 +05:30
Makarand Bauskar
af00c9f70b [minor] removed whitespaces from get_students method 2017-06-29 09:25:19 +05:30
Makarand Bauskar
5c7545da0c [minor] passed index for string format 2017-06-29 09:07:59 +05:30
mbauskar
d6e8bb5452 [fixes] delete auto email report of deprecated reports and other minor fixes 2017-06-29 08:39:01 +05:30
Sagar Vora
435032f5bc [minor] fix typo 2017-06-28 23:59:47 +05:30
Sagar Vora
1ef50c89db [minor] use party_name instead of party and save GSTIN in uppercase 2017-06-28 23:52:22 +05:30
Rohit Waghchaure
2e4b4454b3 [Fix] Module error during patch execution 2017-06-28 17:31:59 +05:30
rohitwaghchaure
4b33b7e1c1 Merge pull request #9418 from nick9822/nick9822-patch-3
Removed "Asset" filter on payment account
2017-06-28 16:38:21 +05:30
rohitwaghchaure
69279229cc Merge pull request #8987 from bcornwellmott/bom_convert_uom
Added BOM UOM selection for items
2017-06-28 16:28:31 +05:30
Rohit Waghchaure
5b7028c7bb stock qty not changed if item change 2017-06-28 15:58:51 +05:30
mbauskar
0018db344c Merge branch 'develop' 2017-06-28 13:32:29 +05:30
mbauskar
e9a4f4e70d bumped to version 8.1.6 2017-06-28 14:02:29 +06:00
Saurabh
be03de3ad6 Merge pull request #9502 from mbauskar/patch-fix
[fix] delete/update desktop icon for deprecated report
2017-06-28 13:28:33 +05:30
Makarand Bauskar
d235325a95 Merge pull request #9501 from saurabh6790/gst_patch_fix
[fix] delete custom field tax_id if exists in transaction Sales Order, Sales Invoice and Delivery Note
2017-06-28 13:28:02 +05:30
mbauskar
6daa6e422e [fix] delete/update desktop icon for deprecated report 2017-06-28 13:26:50 +05:30
Saurabh
07913c3ff2 [fix] delete custom field tax_id if exists in trasaction Sales Order, Sales Invoice and Delivery Note 2017-06-28 13:16:50 +05:30
Makarand Bauskar
71ba7ea717 Merge pull request #9498 from mbauskar/develop
[minor] fixed broken image url in gst documentation
2017-06-28 12:30:56 +05:30
mbauskar
3b0e6cecd6 [minor] fixed broken image url in gst documentation 2017-06-28 12:29:19 +05:30
Ashwini Save
544de60d36 Adding ERPNext logo for email tempates. 2017-06-28 11:44:09 +05:30
Manas Solanki
d652221071 fetch queries for the students in the student group 2017-06-28 11:26:41 +05:30
mbauskar
4d5d3b7685 Merge branch 'develop' 2017-06-28 11:01:40 +05:30
mbauskar
3bf9071598 bumped to version 8.1.5 2017-06-28 11:31:40 +06:00
Saurabh
46af07cc09 Merge pull request #9494 from mbauskar/patch-fixes
[fix] handle email exception if email account is not configured
2017-06-28 11:00:00 +05:30
mbauskar
27692670b1 [fix] handle email exception if email account is not configured 2017-06-28 10:56:50 +05:30
Makarand Bauskar
3708df61bf Merge pull request #9493 from saurabh6790/gst_patch_fix
[fix] reload gst settings doctype in patch
2017-06-28 10:52:49 +05:30
Saurabh
3f2dd04b10 [fix] reload gst settings doctype in patch 2017-06-28 10:50:38 +05:30
mbauskar
fd598d8f3a Merge branch 'develop' 2017-06-28 10:40:07 +05:30
mbauskar
4e0999dda7 bumped to version 8.1.4 2017-06-28 11:10:07 +06:00
Makarand Bauskar
eef3f62ff7 Merge pull request #9488 from rmehta/gst-reminder
[regional] ability to send gst reminders to all parties
2017-06-27 19:33:05 +05:30
Makarand Bauskar
104eb8c6ad [minor] render GSTIN value as "" instead of None 2017-06-27 18:59:35 +05:30
Manas Solanki
3959c7c3c1 filter out students which are already enrolled in program enrollment 2017-06-27 18:22:05 +05:30
Makarand Bauskar
b43f4073db fixed TypeError: throw() got an unexpected keyword argument 'exception' 2017-06-27 18:15:52 +05:30
Rushabh Mehta
01659271be [minor] dont make fixtures again by patch 2017-06-27 18:05:54 +05:30
Rushabh Mehta
c616a4a527 [tests] codacy 2017-06-27 17:50:15 +05:30
Rushabh Mehta
00ae424cac [regional] ability to send gst reminders to all parties 2017-06-27 17:31:41 +05:30
Makarand Bauskar
7b6e09b9a7 Merge pull request #9487 from rohitwaghchaure/currency_label_issue
[fix] Currency label not displaying in the total advance field
2017-06-27 16:16:22 +05:30
Makarand Bauskar
90a3e60de7 Merge pull request #9372 from pratu16x7/serial-batch-entry
Serial no/batch entry dialog
2017-06-27 16:12:30 +05:30
Rohit Waghchaure
f3e91e2b2b [minor] Currency label not displaying in the total advance field 2017-06-27 15:51:35 +05:30
pratu16x7
846f5d4bd8 [fix] cloning rows 2017-06-27 14:03:56 +05:30
Makarand Bauskar
51520f9de6 Merge pull request #9479 from frappe-pr-bot/translations-2017-06-27
[translation] translation update
2017-06-27 13:58:04 +05:30
Makarand Bauskar
9d457d3e34 Merge pull request #9485 from saurabh6790/gst_update_email
send email to system managers about gst update
2017-06-27 13:42:52 +05:30
frappe-pr-bot
8ddd946dea [translation] translation updates 2017-06-27 10:10:50 +02:00
Saurabh
c20abf6b2a send email to system managers about gst setup 2017-06-27 13:21:57 +05:30
Makarand Bauskar
68a48c9cfc Merge pull request #9484 from mbauskar/develop
revert customer-orders-invoices-and-shipping-status.md documentation
2017-06-27 12:51:32 +05:30
mbauskar
8c3f99f12e revert customer-orders-invoices-and-shipping-status.md documentation 2017-06-27 12:49:10 +05:30
Rushabh Mehta
9b09ff29d2 [fix] address creation for india/setup.py 2017-06-27 12:17:39 +05:30
Rushabh Mehta
f4e908bd91 [minor] general_ledger.js 2017-06-27 11:56:30 +05:30
Makarand Bauskar
5d8803b23e Merge pull request #9435 from rmehta/gst
GST (India) Setup and Invoices #8711
2017-06-27 11:44:33 +05:30
pratu16x7
f970ca4d35 Update docs 2017-06-27 10:12:58 +05:30
pratu16x7
29cebbb0cd use set_value() for setting rows 2017-06-27 09:48:28 +05:30
pratu16x7
89d001caf3 [lint] fixes 2017-06-26 17:45:49 +05:30
Rohit Waghchaure
67526f244e [enhance] Report for analysis of support hours count 2017-06-26 17:04:52 +05:30
pratu16x7
ae450fc23b async call to require, more validation 2017-06-26 15:31:46 +05:30
nick9822
82e816054e Added report_type to payment account filter 2017-06-26 15:29:44 +05:30
Manas Solanki
cb650f836e validation of student in student attendance 2017-06-26 14:11:12 +05:30
Saurabh
f4fc30a72d Merge branch 'develop' 2017-06-26 13:55:59 +05:30
Saurabh
095701e86b bumped to version 8.1.3 2017-06-26 14:25:59 +06:00
Saurabh
dccceb44f9 Merge pull request #9463 from saurabh6790/v8_1_patch_fixes
[fix] patch fixes
2017-06-26 13:52:23 +05:30
pratu16x7
5f389c999a [fix] values update in items in invoices 2017-06-26 13:38:24 +05:30
Saurabh
29fa0a9a17 [fix] patch fixes 2017-06-26 13:28:45 +05:30
Saurabh
81bb2c9f3c Merge branch 'develop' 2017-06-26 11:01:38 +05:30
Saurabh
3bf5a38c6f bumped to version 8.1.2 2017-06-26 11:31:37 +06:00
Makarand Bauskar
c93de0e803 [minor] removed global roles from company doctype field's depends on propery (#9450) 2017-06-24 10:39:30 +05:30
Rushabh Mehta
d03203966a [minor] fix old patch 2017-06-24 10:37:19 +05:30
pratu16x7
577e4c4e28 Add in transaction.js, cleanups 2017-06-23 19:25:01 +05:30
Makarand Bauskar
ebaea08225 Merge pull request #9437 from Arundhatii/20Jun
Added help pages and deleted old images links to #9241
2017-06-23 18:54:45 +05:30
Makarand Bauskar
1a78a3244b removed conflicts 2017-06-23 18:37:08 +05:30
rohitwaghchaure
8f51a5e527 In POS on click of delete button, remove the selected item from the cart (#9428) 2017-06-23 18:17:04 +05:30
Makarand Bauskar
1d962dd3f7 removed conflicts 2017-06-23 18:11:58 +05:30
Makarand Bauskar
bbf81aa3a4 image title translation 2017-06-23 18:11:00 +05:30
Makarand Bauskar
862302f02d image title translation 2017-06-23 18:10:06 +05:30
Makarand Bauskar
408336e7ad image title translation 2017-06-23 18:08:45 +05:30
Makarand Bauskar
ab49c3100d corrected image title 2017-06-23 18:04:56 +05:30
Makarand Bauskar
ec27a30069 Merge pull request #9442 from creamdory/develop
BOM Stock Report to allow Multi Level Warehouse Setup
2017-06-23 17:59:56 +05:30
Makarand Bauskar
5e994ddf65 removed white spaces 2017-06-23 17:58:50 +05:30
Makarand Bauskar
4eced4acec Merge pull request #9445 from rohitwaghchaure/column_width_issue_bank_reco
[minor] Fix grid column of the Bank Reconciliation
2017-06-23 17:24:50 +05:30
Makarand Bauskar
6df26422f6 Merge pull request #9446 from rohitwaghchaure/delivery_required_issue_for_pos
Don't validate delivery note and sales order required for the POS invoice
2017-06-23 17:24:21 +05:30
Frappe
a951e56f9c Modified help pages 2017-06-23 16:49:35 +05:30
Frappe
1f8e5fbcb1 Edited help page 2017-06-23 16:48:46 +05:30
Frappe
ca6fed359b Added help pages for Subcontracting and deleted old images 2017-06-23 16:48:17 +05:30
creamdory
9961fb82d6 Bom Stock Report Change Requests 2017-06-23 15:57:52 +08:00
Rohit Waghchaure
8326028d33 Don't validate delivery note and sales order required for the POS invoice 2017-06-23 12:56:12 +05:30
Rohit Waghchaure
666d004b40 [minor] Fix grid column of the Bank Reconciliation 2017-06-23 12:10:21 +05:30
Frappe
9a8f33f855 Replaced screenshot in help pages, links to #9241 2017-06-23 11:30:26 +05:30
Frappe
8181a7463e added help page for Kanban Board, links to #9241 2017-06-23 11:30:26 +05:30
Frappe
ac08fbd438 added test documentation 2017-06-23 11:30:26 +05:30
Rushabh Mehta
210b6f8f7e [docs] 2017-06-22 22:32:08 +05:30
Rushabh Mehta
25366a22ad [minor] cleanup 2017-06-22 22:32:08 +05:30
Rushabh Mehta
919a74ad88 [gst] adde reports + docs 2017-06-22 22:32:08 +05:30
Rushabh Mehta
b3c8f44b3e [wip] GST for India. Pending reports 2017-06-22 22:31:32 +05:30
pratu16x7
759f669214 Add in delivery note 2017-06-22 18:14:29 +05:30
pratu16x7
70eca9462b make erpnext.SerialNoBatchSelector 2017-06-22 18:14:29 +05:30
pratu16x7
60d9446656 onchange in df 2017-06-22 18:14:29 +05:30
pratu16x7
934105bf34 fix modified by, blur serial field 2017-06-22 18:14:28 +05:30
pratu16x7
26b8f5c3ce [minor] 2017-06-22 18:14:16 +05:30
pratu16x7
36693e27be [fix] tests 2017-06-22 18:14:16 +05:30
pratu16x7
a5d5403bf3 specific change bubbling for grid fields 2017-06-22 18:13:56 +05:30
pratu16x7
0e35651e94 Add get_stock_qty test 2017-06-22 18:13:56 +05:30
pratu16x7
837ffbddbc [minor] 2017-06-22 18:13:55 +05:30
pratu16x7
ff25573558 cleanup 2017-06-22 18:13:55 +05:30
pratu16x7
82a199d6d7 [fix] availably qty reupdate 2017-06-22 18:13:55 +05:30
pratu16x7
d15a507567 add serial_no_check 2017-06-22 18:13:55 +05:30
pratu16x7
01e79f033e add warehouse selection and mapping 2017-06-22 18:13:55 +05:30
pratu16x7
9a6e675b41 wip 2017-06-22 18:13:55 +05:30
pratu16x7
7331f169fc [fix] warehouse required bug 2017-06-22 18:13:54 +05:30
pratu16x7
d09f35fa98 fire modal on item_code, events, validation 2017-06-22 18:13:54 +05:30
pratu16x7
52d703a232 [fix] test 2017-06-22 18:13:54 +05:30
pratu16x7
e4e00d2215 batch item distribution by oldest, serial no check 2017-06-22 18:13:54 +05:30
pratu16x7
60944e3397 get oldest batch in modal, insert batch items 2017-06-22 18:13:30 +05:30
pratu16x7
0b642cd414 set available qty 2017-06-22 18:13:30 +05:30
pratu16x7
b4de1c771b WIP 2017-06-22 18:13:30 +05:30
Rushabh Mehta
aedaac63ea [wip] batch, serial number selector 2017-06-22 18:13:30 +05:30
Saurabh
2cb598f644 Merge pull request #9430 from sagarvora/fix-travis
[ci] use deprecated trusty build for now
2017-06-22 17:28:10 +05:30
Sagar Vora
f070c548de [ci] use deprecated trusty build for now 2017-06-22 16:43:28 +05:30
Ben Cornwell-Mott
ac3ad0810a Merge branch 'bom_convert_uom' of https://github.com/bcornwellmott/erpnext into bom_convert_uom 2017-06-21 10:17:39 -07:00
Ben Cornwell-Mott
1e96b7bbe5 Added conversion_factor update in patch 2017-06-21 10:16:50 -07:00
Makarand Bauskar
0ea5d941e6 Merge branch 'develop' into bom_convert_uom 2017-06-21 21:35:38 +05:30
nick9822
881491cd2b Removed "Asset" filter on payment account 2017-06-21 19:51:08 +05:30
Ben Cornwell-Mott
2c77165fc6 Fixed small code issues (codecy) 2017-06-16 13:47:40 -07:00
bcornwellmott
6561b8ade9 Merge branch 'develop' into bom_convert_uom 2017-06-16 08:29:00 -07:00
Ben Cornwell-Mott
840c757b12 Merge branch 'bom_convert_uom' of https://github.com/bcornwellmott/erpnext into bom_convert_uom 2017-06-15 08:53:29 -07:00
Ben Cornwell-Mott
7055446508 Reload explosion and scrap items docs 2017-06-15 08:52:55 -07:00
Rushabh Mehta
e0434ad40e Merge branch 'develop' into bom_convert_uom 2017-06-15 17:32:27 +05:30
bcornwellmott
d53dd7f4c9 Merge branch 'develop' into bom_convert_uom 2017-06-13 08:40:24 -07:00
bcornwellmott
fed9816213 Removed trailing whitespace 2017-06-09 07:37:27 -07:00
bcornwellmott
a35839aa47 Removing unused pprint 2017-06-09 07:36:15 -07:00
bcornwellmott
5491275b66 Merge branch 'develop' into bom_convert_uom 2017-06-07 08:42:54 -07:00
Ben Cornwell-Mott
70fe968f02 Fixed some errors 2017-06-04 20:19:59 -07:00
Ben Cornwell-Mott
a3aa6a4449 Changed Explosion Item as well 2017-06-02 16:54:03 -07:00
bcornwellmott
8fa1e03367 Merge branch 'develop' into bom_convert_uom 2017-05-24 12:35:12 -07:00
Ben Cornwell-Mott
0f0b121669 Added BOM UOM selection for items
Added patch for BOM Item UOM

Fixed scrap qty issue

Added Scrap Qty update to patch

Reverted test record for production order
2017-05-24 11:12:51 -07:00
257 changed files with 57245 additions and 4211 deletions

View File

@@ -1,5 +1,6 @@
language: python
dist: trusty
group: deprecated-2017Q2
python:
- "2.7"

View File

@@ -2,7 +2,7 @@
from __future__ import unicode_literals
import frappe
__version__ = '8.1.1'
__version__ = '8.2.0'
def get_default_company(user=None):

View File

@@ -1,5 +1,6 @@
{
"allow_copy": 0,
"allow_guest_to_view": 0,
"allow_import": 0,
"allow_rename": 0,
"beta": 0,
@@ -10,6 +11,7 @@
"editable_grid": 1,
"fields": [
{
"allow_bulk_edit": 0,
"allow_on_submit": 0,
"bold": 0,
"collapsible": 0,
@@ -20,7 +22,9 @@
"ignore_user_permissions": 0,
"ignore_xss_filter": 0,
"in_filter": 0,
"in_global_search": 0,
"in_list_view": 0,
"in_standard_filter": 0,
"label": "Payment Document",
"length": 0,
"no_copy": 0,
@@ -30,6 +34,7 @@
"print_hide": 0,
"print_hide_if_no_value": 0,
"read_only": 0,
"remember_last_selected_value": 0,
"report_hide": 0,
"reqd": 0,
"search_index": 0,
@@ -37,17 +42,20 @@
"unique": 0
},
{
"allow_bulk_edit": 0,
"allow_on_submit": 0,
"bold": 0,
"collapsible": 0,
"columns": 1,
"columns": 2,
"fieldname": "payment_entry",
"fieldtype": "Dynamic Link",
"hidden": 0,
"ignore_user_permissions": 0,
"ignore_xss_filter": 0,
"in_filter": 0,
"in_global_search": 0,
"in_list_view": 1,
"in_standard_filter": 0,
"label": "Payment Entry",
"length": 0,
"no_copy": 0,
@@ -58,6 +66,7 @@
"print_hide": 0,
"print_hide_if_no_value": 0,
"read_only": 0,
"remember_last_selected_value": 0,
"report_hide": 0,
"reqd": 0,
"search_index": 0,
@@ -66,6 +75,7 @@
"width": "50"
},
{
"allow_bulk_edit": 0,
"allow_on_submit": 0,
"bold": 0,
"collapsible": 0,
@@ -76,7 +86,9 @@
"ignore_user_permissions": 0,
"ignore_xss_filter": 0,
"in_filter": 0,
"in_global_search": 0,
"in_list_view": 1,
"in_standard_filter": 0,
"label": "Against Account",
"length": 0,
"no_copy": 0,
@@ -86,6 +98,7 @@
"print_hide": 0,
"print_hide_if_no_value": 0,
"read_only": 1,
"remember_last_selected_value": 0,
"report_hide": 0,
"reqd": 0,
"search_index": 0,
@@ -94,6 +107,7 @@
"width": "15"
},
{
"allow_bulk_edit": 0,
"allow_on_submit": 0,
"bold": 0,
"collapsible": 0,
@@ -104,7 +118,9 @@
"ignore_user_permissions": 0,
"ignore_xss_filter": 0,
"in_filter": 0,
"in_global_search": 0,
"in_list_view": 1,
"in_standard_filter": 0,
"label": "Amount",
"length": 0,
"no_copy": 0,
@@ -115,6 +131,7 @@
"print_hide": 0,
"print_hide_if_no_value": 0,
"read_only": 1,
"remember_last_selected_value": 0,
"report_hide": 0,
"reqd": 0,
"search_index": 0,
@@ -122,6 +139,7 @@
"unique": 0
},
{
"allow_bulk_edit": 0,
"allow_on_submit": 0,
"bold": 0,
"collapsible": 0,
@@ -132,7 +150,9 @@
"ignore_user_permissions": 0,
"ignore_xss_filter": 0,
"in_filter": 0,
"in_global_search": 0,
"in_list_view": 0,
"in_standard_filter": 0,
"length": 0,
"no_copy": 0,
"permlevel": 0,
@@ -140,6 +160,7 @@
"print_hide": 0,
"print_hide_if_no_value": 0,
"read_only": 0,
"remember_last_selected_value": 0,
"report_hide": 0,
"reqd": 0,
"search_index": 0,
@@ -148,6 +169,7 @@
"width": "50%"
},
{
"allow_bulk_edit": 0,
"allow_on_submit": 0,
"bold": 0,
"collapsible": 0,
@@ -158,7 +180,9 @@
"ignore_user_permissions": 0,
"ignore_xss_filter": 0,
"in_filter": 0,
"in_global_search": 0,
"in_list_view": 0,
"in_standard_filter": 0,
"label": "Posting Date",
"length": 0,
"no_copy": 0,
@@ -168,6 +192,7 @@
"print_hide": 0,
"print_hide_if_no_value": 0,
"read_only": 1,
"remember_last_selected_value": 0,
"report_hide": 0,
"reqd": 0,
"search_index": 0,
@@ -175,17 +200,20 @@
"unique": 0
},
{
"allow_bulk_edit": 0,
"allow_on_submit": 0,
"bold": 0,
"collapsible": 0,
"columns": 1,
"columns": 2,
"fieldname": "cheque_number",
"fieldtype": "Data",
"hidden": 0,
"ignore_user_permissions": 0,
"ignore_xss_filter": 0,
"in_filter": 0,
"in_global_search": 0,
"in_list_view": 1,
"in_standard_filter": 0,
"label": "Cheque Number",
"length": 0,
"no_copy": 0,
@@ -195,6 +223,7 @@
"print_hide": 0,
"print_hide_if_no_value": 0,
"read_only": 1,
"remember_last_selected_value": 0,
"report_hide": 0,
"reqd": 0,
"search_index": 0,
@@ -202,6 +231,7 @@
"unique": 0
},
{
"allow_bulk_edit": 0,
"allow_on_submit": 0,
"bold": 0,
"collapsible": 0,
@@ -212,7 +242,9 @@
"ignore_user_permissions": 0,
"ignore_xss_filter": 0,
"in_filter": 0,
"in_global_search": 0,
"in_list_view": 0,
"in_standard_filter": 0,
"label": "Cheque Date",
"length": 0,
"no_copy": 0,
@@ -222,6 +254,7 @@
"print_hide": 0,
"print_hide_if_no_value": 0,
"read_only": 1,
"remember_last_selected_value": 0,
"report_hide": 0,
"reqd": 0,
"search_index": 0,
@@ -229,6 +262,7 @@
"unique": 0
},
{
"allow_bulk_edit": 0,
"allow_on_submit": 0,
"bold": 0,
"collapsible": 0,
@@ -239,7 +273,9 @@
"ignore_user_permissions": 0,
"ignore_xss_filter": 0,
"in_filter": 0,
"in_global_search": 0,
"in_list_view": 1,
"in_standard_filter": 0,
"label": "Clearance Date",
"length": 0,
"no_copy": 0,
@@ -249,6 +285,7 @@
"print_hide": 0,
"print_hide_if_no_value": 0,
"read_only": 0,
"remember_last_selected_value": 0,
"report_hide": 0,
"reqd": 0,
"search_index": 0,
@@ -256,18 +293,18 @@
"unique": 0
}
],
"has_web_view": 0,
"hide_heading": 0,
"hide_toolbar": 0,
"idx": 1,
"image_view": 0,
"in_create": 0,
"in_dialog": 0,
"is_submittable": 0,
"issingle": 0,
"istable": 1,
"max_attachments": 0,
"menu_index": 0,
"modified": "2016-11-17 11:39:00.308624",
"modified": "2017-06-23 12:07:50.883515",
"modified_by": "Administrator",
"module": "Accounts",
"name": "Bank Reconciliation Detail",
@@ -276,6 +313,8 @@
"quick_entry": 1,
"read_only": 0,
"read_only_onload": 0,
"show_name_in_global_search": 0,
"sort_order": "ASC",
"track_changes": 0,
"track_seen": 0
}

View File

@@ -224,9 +224,9 @@ cur_frm.fields_dict.cash_bank_account.get_query = function(doc) {
return {
filters: [
["Account", "account_type", "in", ["Cash", "Bank"]],
["Account", "root_type", "=", "Asset"],
["Account", "is_group", "=",0],
["Account", "company", "=", doc.company]
["Account", "company", "=", doc.company],
["Account", "report_type", "=", "Balance Sheet"]
]
}
}

View File

@@ -503,7 +503,19 @@ frappe.ui.form.on('Sales Invoice', {
}
}
frm.set_query('company_address', function(doc) {
if(!doc.company) {
frappe.throw(_('Please set Company'));
}
return {
query: 'frappe.contacts.doctype.address.address.address_query',
filters: {
link_doctype: 'Company',
link_name: doc.company
}
};
});
},
project: function(frm){

View File

@@ -940,22 +940,22 @@
"bold": 0,
"collapsible": 0,
"columns": 0,
"description": "",
"fieldname": "customer_group",
"fieldname": "company_address",
"fieldtype": "Link",
"hidden": 1,
"hidden": 0,
"ignore_user_permissions": 0,
"ignore_xss_filter": 0,
"in_filter": 0,
"in_global_search": 0,
"in_list_view": 0,
"in_standard_filter": 0,
"label": "Customer Group",
"label": "Company Address",
"length": 0,
"no_copy": 0,
"options": "Customer Group",
"options": "Address",
"permlevel": 0,
"print_hide": 1,
"precision": "",
"print_hide": 0,
"print_hide_if_no_value": 0,
"read_only": 0,
"remember_last_selected_value": 0,
@@ -3489,6 +3489,37 @@
"set_only_once": 0,
"unique": 0
},
{
"allow_bulk_edit": 0,
"allow_on_submit": 0,
"bold": 0,
"collapsible": 0,
"columns": 0,
"description": "",
"fieldname": "customer_group",
"fieldtype": "Link",
"hidden": 1,
"ignore_user_permissions": 0,
"ignore_xss_filter": 0,
"in_filter": 0,
"in_global_search": 0,
"in_list_view": 0,
"in_standard_filter": 0,
"label": "Customer Group",
"length": 0,
"no_copy": 0,
"options": "Customer Group",
"permlevel": 0,
"print_hide": 1,
"print_hide_if_no_value": 0,
"read_only": 0,
"remember_last_selected_value": 0,
"report_hide": 0,
"reqd": 0,
"search_index": 0,
"set_only_once": 0,
"unique": 0
},
{
"allow_bulk_edit": 0,
"allow_on_submit": 0,
@@ -4596,7 +4627,7 @@
"istable": 0,
"max_attachments": 0,
"menu_index": 0,
"modified": "2017-06-16 17:07:55.483734",
"modified": "2017-06-22 14:45:35.257640",
"modified_by": "Administrator",
"module": "Accounts",
"name": "Sales Invoice",

View File

@@ -54,7 +54,10 @@ class SalesInvoice(SellingController):
def validate(self):
super(SalesInvoice, self).validate()
self.validate_auto_set_posting_time()
if not self.is_pos:
self.so_dn_required()
self.validate_proj_cust()
self.validate_with_previous_doc()
self.validate_uom_is_integer("stock_uom", "stock_qty")

View File

@@ -576,11 +576,15 @@ erpnext.pos.PointOfSale = erpnext.taxes_and_totals.extend({
})
$(this.numeric_keypad).find('.numeric-del').click(function(){
if(me.numeric_id) {
me.selected_field = $(me.wrapper).find('.selected-item').find('.' + me.numeric_id)
me.numeric_val = cstr(flt(me.selected_field.val())).slice(0, -1);
me.selected_field.val(me.numeric_val);
me.selected_field.trigger("change")
// me.render_selected_item()
} else {
//Remove an item from the cart, if focus is at selected item
me.remove_selected_item()
}
})
$(this.numeric_keypad).find('.pos-pay').click(function(){
@@ -591,6 +595,14 @@ erpnext.pos.PointOfSale = erpnext.taxes_and_totals.extend({
})
},
remove_selected_item: function() {
this.remove_item = []
idx = $(this.wrapper).find(".pos-selected-item-action").attr("data-idx")
this.remove_item.push(idx)
this.remove_zero_qty_item()
this.update_paid_amount_status(false)
},
render_list_customers: function () {
var me = this;

View File

@@ -7,11 +7,12 @@ import frappe
import datetime
from frappe import _, msgprint, scrub
from frappe.defaults import get_user_permissions
from frappe.model.utils import get_fetch_values
from frappe.utils import add_days, getdate, formatdate, get_first_day, date_diff, \
add_years, get_timestamp, nowdate, flt
from frappe.contacts.doctype.address.address import get_address_display, get_default_address
from frappe.contacts.doctype.contact.contact import get_contact_details, get_default_contact
from erpnext.exceptions import PartyFrozen, InvalidCurrency, PartyDisabled, InvalidAccountCurrency
from erpnext.exceptions import PartyFrozen, PartyDisabled, InvalidAccountCurrency
from erpnext.accounts.utils import get_fiscal_year
from erpnext import get_default_currency
@@ -42,7 +43,7 @@ def _get_party_details(party=None, account=None, party_type="Customer", company=
party = frappe.get_doc(party_type, party)
set_address_details(out, party, party_type)
set_address_details(out, party, party_type, doctype, company)
set_contact_details(out, party, party_type)
set_other_values(out, party, party_type)
set_price_list(out, party, party_type, price_list)
@@ -60,10 +61,11 @@ def _get_party_details(party=None, account=None, party_type="Customer", company=
return out
def set_address_details(out, party, party_type):
def set_address_details(out, party, party_type, doctype=None, company=None):
billing_address_field = "customer_address" if party_type == "Lead" \
else party_type.lower() + "_address"
out[billing_address_field] = get_default_address(party_type, party.name)
out.update(get_fetch_values(doctype, billing_address_field, out[billing_address_field]))
# address display
out.address_display = get_address_display(out[billing_address_field])
@@ -72,6 +74,11 @@ def set_address_details(out, party, party_type):
if party_type in ["Customer", "Lead"]:
out.shipping_address_name = get_default_address(party_type, party.name, 'is_shipping_address')
out.shipping_address = get_address_display(out["shipping_address_name"])
out.update(get_fetch_values(doctype, 'shipping_address_name', out.shipping_address_name))
if doctype and doctype in ['Sales Invoice']:
out.company_address = get_default_address('Company', company)
out.update(get_fetch_values(doctype, 'company_address', out.company_address))
def set_contact_details(out, party, party_type):
out.contact_person = get_default_contact(party_type, party.name)

View File

@@ -75,7 +75,7 @@ frappe.query_reports["General Ledger"] = {
}
return party_type;
},
change: function() {
on_change: function() {
var party_type = frappe.query_report_filters_by_name.party_type.get_value();
var party = frappe.query_report_filters_by_name.party.get_value();
if(!party_type || !party) {

View File

@@ -7,11 +7,14 @@ from frappe import _
from frappe.utils import flt
def execute(filters=None):
return _execute(filters)
def _execute(filters=None, additional_table_columns=None, additional_query_columns=None):
if not filters: filters = {}
columns = get_columns()
columns = get_columns(additional_table_columns)
last_col = len(columns)
item_list = get_items(filters)
item_list = get_items(filters, additional_query_columns)
aii_account_map = get_aii_accounts()
if item_list:
item_row_tax, tax_accounts = get_tax_accounts(item_list, columns)
@@ -35,8 +38,16 @@ def execute(filters=None):
expense_account = d.expense_account or aii_account_map.get(d.company)
row = [d.item_code, d.item_name, d.item_group, d.parent, d.posting_date, d.supplier,
d.supplier_name, d.credit_to, d.mode_of_payment, d.project, d.company, d.purchase_order,
purchase_receipt, expense_account, d.qty, d.base_net_rate, d.base_net_amount]
d.supplier_name]
if additional_query_columns:
for col in additional_query_columns:
row.append(d.get(col))
row += [
d.credit_to, d.mode_of_payment, d.project, d.company, d.purchase_order,
purchase_receipt, expense_account, d.qty, d.base_net_rate, d.base_net_amount
]
for tax in tax_accounts:
row.append(item_row_tax.get(d.name, {}).get(tax, 0))
@@ -49,17 +60,27 @@ def execute(filters=None):
return columns, data
def get_columns():
return [_("Item Code") + ":Link/Item:120", _("Item Name") + "::120",
def get_columns(additional_table_columns):
columns = [
_("Item Code") + ":Link/Item:120", _("Item Name") + "::120",
_("Item Group") + ":Link/Item Group:100", _("Invoice") + ":Link/Purchase Invoice:120",
_("Posting Date") + ":Date:80", _("Supplier") + ":Link/Supplier:120",
"Supplier Name::120", "Payable Account:Link/Account:120",
"Supplier Name::120"
]
if additional_table_columns:
columns += additional_table_columns
columns += [
"Payable Account:Link/Account:120",
_("Mode of Payment") + ":Link/Mode of Payment:80", _("Project") + ":Link/Project:80",
_("Company") + ":Link/Company:100", _("Purchase Order") + ":Link/Purchase Order:100",
_("Purchase Receipt") + ":Link/Purchase Receipt:100", _("Expense Account") + ":Link/Account:140",
_("Qty") + ":Float:120", _("Rate") + ":Currency/currency:120", _("Amount") + ":Currency/currency:120"
]
return columns
def get_conditions(filters):
conditions = ""
@@ -74,9 +95,11 @@ def get_conditions(filters):
return conditions
def get_items(filters):
def get_items(filters, additional_query_columns):
conditions = get_conditions(filters)
match_conditions = frappe.build_match_conditions("Purchase Invoice")
if additional_query_columns:
additional_query_columns = ', ' + ', '.join(additional_query_columns)
return frappe.db.sql("""
select
@@ -84,11 +107,11 @@ def get_items(filters):
pi.supplier, pi.remarks, pi.base_net_total, pi_item.item_code, pi_item.item_name,
pi_item.item_group, pi_item.project, pi_item.purchase_order, pi_item.purchase_receipt,
pi_item.po_detail, pi_item.expense_account, pi_item.qty, pi_item.base_net_rate,
pi_item.base_net_amount, pi.supplier_name, pi.mode_of_payment
pi_item.base_net_amount, pi.supplier_name, pi.mode_of_payment {0}
from `tabPurchase Invoice` pi, `tabPurchase Invoice Item` pi_item
where pi.name = pi_item.parent and pi.docstatus = 1 %s %s
order by pi.posting_date desc, pi_item.item_code desc
""" % (conditions, match_conditions), filters, as_dict=1)
""".format(additional_query_columns) % (conditions, match_conditions), filters, as_dict=1)
def get_aii_accounts():
return dict(frappe.db.sql("select name, stock_received_but_not_billed from tabCompany"))

View File

@@ -8,11 +8,14 @@ from frappe.utils import flt
from erpnext.accounts.report.sales_register.sales_register import get_mode_of_payments
def execute(filters=None):
return _execute(filters)
def _execute(filters=None, additional_table_columns=None, additional_query_columns=None):
if not filters: filters = {}
columns = get_columns()
columns = get_columns(additional_table_columns)
last_col = len(columns)
item_list = get_items(filters)
item_list = get_items(filters, additional_query_columns)
if item_list:
item_row_tax, tax_accounts = get_tax_accounts(item_list, columns)
columns.append({
@@ -35,10 +38,17 @@ def execute(filters=None):
if not delivery_note and d.update_stock:
delivery_note = d.parent
row = [d.item_code, d.item_name, d.item_group, d.parent, d.posting_date, d.customer, d.customer_name,
row = [d.item_code, d.item_name, d.item_group, d.parent, d.posting_date, d.customer, d.customer_name]
if additional_query_columns:
for col in additional_query_columns:
row.append(d.get(col))
row += [
d.customer_group, d.debit_to, ", ".join(mode_of_payments.get(d.parent, [])),
d.territory, d.project, d.company, d.sales_order,
delivery_note, d.income_account, d.cost_center, d.qty, d.base_net_rate, d.base_net_amount]
delivery_note, d.income_account, d.cost_center, d.qty, d.base_net_rate, d.base_net_amount
]
for tax in tax_accounts:
row.append(item_row_tax.get(d.name, {}).get(tax, 0))
@@ -50,12 +60,18 @@ def execute(filters=None):
return columns, data
def get_columns():
return [
def get_columns(additional_table_columns):
columns = [
_("Item Code") + ":Link/Item:120", _("Item Name") + "::120",
_("Item Group") + ":Link/Item Group:100", _("Invoice") + ":Link/Sales Invoice:120",
_("Posting Date") + ":Date:80", _("Customer") + ":Link/Customer:120",
_("Customer Name") + "::120", _("Customer Group") + ":Link/Customer Group:120",
_("Customer Name") + "::120"]
if additional_table_columns:
columns += additional_table_columns
columns += [
_("Customer Group") + ":Link/Customer Group:120",
_("Receivable Account") + ":Link/Account:120",
_("Mode of Payment") + "::120", _("Territory") + ":Link/Territory:80",
_("Project") + ":Link/Project:80", _("Company") + ":Link/Company:100",
@@ -66,6 +82,8 @@ def get_columns():
_("Amount") + ":Currency/currency:120"
]
return columns
def get_conditions(filters):
conditions = ""
@@ -84,7 +102,10 @@ def get_conditions(filters):
return conditions
def get_items(filters):
def get_items(filters, additional_query_columns):
if additional_query_columns:
additional_query_columns = ', ' + ', '.join(additional_query_columns)
conditions = get_conditions(filters)
return frappe.db.sql("""
select
@@ -93,10 +114,11 @@ def get_items(filters):
si_item.item_code, si_item.item_name, si_item.item_group, si_item.sales_order,
si_item.delivery_note, si_item.income_account, si_item.cost_center, si_item.qty,
si_item.base_net_rate, si_item.base_net_amount, si.customer_name,
si.customer_group, si_item.so_detail, si.update_stock
si.customer_group, si_item.so_detail, si.update_stock {0}
from `tabSales Invoice` si, `tabSales Invoice Item` si_item
where si.name = si_item.parent and si.docstatus = 1 %s
order by si.posting_date desc, si_item.item_code desc""" % conditions, filters, as_dict=1)
order by si.posting_date desc, si_item.item_code desc
""".format(additional_query_columns or '') % conditions, filters, as_dict=1)
def get_tax_accounts(item_list, columns):
import json

View File

@@ -7,10 +7,13 @@ from frappe.utils import flt
from frappe import msgprint, _
def execute(filters=None):
return _execute(filters)
def _execute(filters=None, additional_table_columns=None, additional_query_columns=None):
if not filters: filters = {}
invoice_list = get_invoices(filters)
columns, expense_accounts, tax_accounts = get_columns(invoice_list)
invoice_list = get_invoices(filters, additional_query_columns)
columns, expense_accounts, tax_accounts = get_columns(invoice_list, additional_table_columns)
if not invoice_list:
msgprint(_("No record found"))
@@ -20,7 +23,8 @@ def execute(filters=None):
invoice_expense_map, invoice_tax_map = get_invoice_tax_map(invoice_list,
invoice_expense_map, expense_accounts)
invoice_po_pr_map = get_invoice_po_pr_map(invoice_list)
supplier_details = get_supplier_details(invoice_list)
suppliers = list(set([d.supplier for d in invoice_list]))
supplier_details = get_supplier_details(suppliers)
company_currency = frappe.db.get_value("Company", filters.company, "default_currency")
@@ -31,10 +35,18 @@ def execute(filters=None):
purchase_receipt = list(set(invoice_po_pr_map.get(inv.name, {}).get("purchase_receipt", [])))
project = list(set(invoice_po_pr_map.get(inv.name, {}).get("project", [])))
row = [inv.name, inv.posting_date, inv.supplier, inv.supplier_name,
supplier_details.get(inv.supplier),
inv.credit_to, inv.mode_of_payment, ", ".join(project), inv.bill_no, inv.bill_date, inv.remarks,
", ".join(purchase_order), ", ".join(purchase_receipt), company_currency]
row = [inv.name, inv.posting_date, inv.supplier, inv.supplier_name]
if additional_query_columns:
for col in additional_query_columns:
row.append(inv.get(col))
row += [
supplier_details.get(inv.supplier), # supplier_type
inv.credit_to, inv.mode_of_payment, ", ".join(project),
inv.bill_no, inv.bill_date, inv.remarks,
", ".join(purchase_order), ", ".join(purchase_receipt), company_currency
]
# map expense values
base_net_total = 0
@@ -61,11 +73,16 @@ def execute(filters=None):
return columns, data
def get_columns(invoice_list):
def get_columns(invoice_list, additional_table_columns):
"""return columns based on filters"""
columns = [
_("Invoice") + ":Link/Purchase Invoice:120", _("Posting Date") + ":Date:80",
_("Supplier Id") + "::120", _("Supplier Name") + "::120",
_("Supplier Id") + "::120", _("Supplier Name") + "::120"]
if additional_table_columns:
columns += additional_table_columns
columns += [
_("Supplier Type") + ":Link/Supplier Type:120", _("Payable Account") + ":Link/Account:120",
_("Mode of Payment") + ":Link/Mode of Payment:80", _("Project") + ":Link/Project:80",
_("Bill No") + "::120", _("Bill Date") + ":Date:80", _("Remarks") + "::150",
@@ -119,15 +136,19 @@ def get_conditions(filters):
return conditions
def get_invoices(filters):
def get_invoices(filters, additional_query_columns):
if additional_query_columns:
additional_query_columns = ', ' + ', '.join(additional_query_columns)
conditions = get_conditions(filters)
return frappe.db.sql("""
select
name, posting_date, credit_to, supplier, supplier_name, bill_no, bill_date, remarks,
base_net_total, base_grand_total, outstanding_amount, mode_of_payment
name, posting_date, credit_to, supplier, supplier_name, bill_no, bill_date,
remarks, base_net_total, base_grand_total, outstanding_amount,
mode_of_payment {0}
from `tabPurchase Invoice`
where docstatus = 1 %s
order by posting_date desc, name desc""" % conditions, filters, as_dict=1)
order by posting_date desc, name desc""".format(additional_query_columns or '') % conditions, filters, as_dict=1)
def get_invoice_expense_map(invoice_list):
@@ -205,9 +226,8 @@ def get_account_details(invoice_list):
return account_map
def get_supplier_details(invoice_list):
def get_supplier_details(suppliers):
supplier_details = {}
suppliers = list(set([inv.supplier for inv in invoice_list]))
for supp in frappe.db.sql("""select name, supplier_type from `tabSupplier`
where name in (%s)""" % ", ".join(["%s"]*len(suppliers)), tuple(suppliers), as_dict=1):
supplier_details.setdefault(supp.name, supp.supplier_type)

View File

@@ -7,10 +7,13 @@ from frappe.utils import flt
from frappe import msgprint, _
def execute(filters=None):
return _execute(filters)
def _execute(filters, additional_table_columns=None, additional_query_columns=None):
if not filters: filters = frappe._dict({})
invoice_list = get_invoices(filters)
columns, income_accounts, tax_accounts = get_columns(invoice_list)
invoice_list = get_invoices(filters, additional_query_columns)
columns, income_accounts, tax_accounts = get_columns(invoice_list, additional_table_columns)
if not invoice_list:
msgprint(_("No record found"))
@@ -21,7 +24,8 @@ def execute(filters=None):
invoice_income_map, income_accounts)
invoice_so_dn_map = get_invoice_so_dn_map(invoice_list)
customer_map = get_customer_details(invoice_list)
customers = list(set([inv.customer for inv in invoice_list]))
customer_map = get_customer_details(customers)
company_currency = frappe.db.get_value("Company", filters.company, "default_currency")
mode_of_payments = get_mode_of_payments([inv.name for inv in invoice_list])
@@ -31,12 +35,22 @@ def execute(filters=None):
sales_order = list(set(invoice_so_dn_map.get(inv.name, {}).get("sales_order", [])))
delivery_note = list(set(invoice_so_dn_map.get(inv.name, {}).get("delivery_note", [])))
row = [inv.name, inv.posting_date, inv.customer, inv.customer_name,
customer_map.get(inv.customer, {}).get("customer_group"),
customer_map.get(inv.customer, {}).get("territory"),
inv.debit_to, ", ".join(mode_of_payments.get(inv.name, [])), inv.project, inv.remarks,
", ".join(sales_order), ", ".join(delivery_note), company_currency]
customer_details = customer_map.get(inv.customer, {})
row = [
inv.name, inv.posting_date, inv.customer, inv.customer_name
]
if additional_query_columns:
for col in additional_query_columns:
row.append(inv.get(col))
row +=[
customer_details.get("customer_group"),
customer_details.get("territory"),
inv.debit_to, ", ".join(mode_of_payments.get(inv.name, [])),
inv.project, inv.remarks,
", ".join(sales_order), ", ".join(delivery_note), company_currency
]
# map income values
base_net_total = 0
for income_acc in income_accounts:
@@ -62,12 +76,17 @@ def execute(filters=None):
return columns, data
def get_columns(invoice_list):
def get_columns(invoice_list, additional_table_columns):
"""return columns based on filters"""
columns = [
_("Invoice") + ":Link/Sales Invoice:120", _("Posting Date") + ":Date:80",
_("Customer Id") + "::120", _("Customer Name") + "::120",
_("Customer") + ":Link/Customer:120", _("Customer Name") + "::120"
]
if additional_table_columns:
columns += additional_table_columns
columns +=[
_("Customer Group") + ":Link/Customer Group:120", _("Territory") + ":Link/Territory:80",
_("Receivable Account") + ":Link/Account:120", _("Mode of Payment") + "::120",
_("Project") +":Link/Project:80", _("Remarks") + "::150",
@@ -121,12 +140,15 @@ def get_conditions(filters):
return conditions
def get_invoices(filters):
def get_invoices(filters, additional_query_columns):
if additional_query_columns:
additional_query_columns = ', ' + ', '.join(additional_query_columns)
conditions = get_conditions(filters)
return frappe.db.sql("""select name, posting_date, debit_to, project, customer, customer_name, remarks,
base_net_total, base_grand_total, base_rounded_total, outstanding_amount
base_net_total, base_grand_total, base_rounded_total, outstanding_amount {0}
from `tabSales Invoice`
where docstatus = 1 %s order by posting_date desc, name desc""" %
where docstatus = 1 %s order by posting_date desc, name desc""".format(additional_query_columns or '') %
conditions, filters, as_dict=1)
def get_invoice_income_map(invoice_list):
@@ -184,9 +206,8 @@ def get_invoice_so_dn_map(invoice_list):
return invoice_so_dn_map
def get_customer_details(invoice_list):
def get_customer_details(customers):
customer_map = {}
customers = list(set([inv.customer for inv in invoice_list]))
for cust in frappe.db.sql("""select name, territory, customer_group from `tabCustomer`
where name in (%s)""" % ", ".join(["%s"]*len(customers)), tuple(customers), as_dict=1):
customer_map.setdefault(cust.name, cust)

View File

@@ -311,6 +311,9 @@ def make_purchase_invoice(source_name, target_doc=None):
doc = get_mapped_doc("Purchase Order", source_name, {
"Purchase Order": {
"doctype": "Purchase Invoice",
"field_map": {
"party_account_currency": "party_account_currency"
},
"validation": {
"docstatus": ["=", 1],
}

View File

@@ -0,0 +1,3 @@
{% include "erpnext/regional/india/party.js" %}
erpnext.setup_gst_reminder_button('Supplier');

View File

@@ -1,3 +1,3 @@
frappe.listview_settings['Supplier'] = {
add_fields: ["supplier_name", "supplier_type"],
add_fields: ["supplier_name", "supplier_type", "image"],
};

View File

@@ -198,6 +198,39 @@ def get_data():
},
]
},
{
"label": _("Goods and Services Tax (GST India)"),
"items": [
{
"type": "doctype",
"name": "GST Settings",
},
{
"type": "doctype",
"name": "GST HSN Code",
},
{
"type": "report",
"name": "GST Sales Register",
"is_query_report": True
},
{
"type": "report",
"name": "GST Purchase Register",
"is_query_report": True
},
{
"type": "report",
"name": "GST Itemised Sales Register",
"is_query_report": True
},
{
"type": "report",
"name": "GST Itemised Purchase Register",
"is_query_report": True
},
]
},
{
"label": _("Budget and Cost Center"),
"items": [

View File

@@ -49,6 +49,12 @@ def get_data():
"doctype": "Issue",
"is_query_report": True
},
{
"type": "report",
"name": "Support Hours",
"doctype": "Issue",
"is_query_report": True
},
]
},
]

View File

@@ -255,7 +255,7 @@ class BuyingController(StockController):
def get_items_from_bom(self, item_code, bom):
bom_items = frappe.db.sql("""select t2.item_code,
t2.qty / ifnull(t1.quantity, 1) as qty_consumed_per_unit,
t2.stock_qty / ifnull(t1.quantity, 1) as qty_consumed_per_unit,
t2.rate, t2.stock_uom, t2.name, t2.description
from `tabBOM` t1, `tabBOM Item` t2, tabItem t3
where t2.parent = t1.name and t1.item = %s

View File

@@ -316,6 +316,8 @@ def setup_account():
doc.parent_account = frappe.db.get_value('Account', {'account_name': doc.parent_account})
doc.insert()
frappe.flags.in_import = False
def setup_account_to_expense_type():
company_abbr = frappe.db.get_value("Company", erpnext.get_default_company(), "abbr")
expense_types = [{'name': _('Calls'), "account": "Sales Expenses - "+ company_abbr},
@@ -380,4 +382,6 @@ def import_json(doctype, submit=False, values=None):
frappe.db.commit()
frappe.flags.in_import = False

Binary file not shown.

After

Width:  |  Height:  |  Size: 426 KiB

View File

Before

Width:  |  Height:  |  Size: 37 KiB

After

Width:  |  Height:  |  Size: 37 KiB

View File

Before

Width:  |  Height:  |  Size: 6.8 KiB

After

Width:  |  Height:  |  Size: 6.8 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 82 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 4.9 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.6 MiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 60 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 103 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 80 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 152 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 568 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 429 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 113 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 268 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 39 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 98 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 72 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 117 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 82 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 279 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.0 MiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 106 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 170 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 120 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 162 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 538 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 789 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 107 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 109 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 337 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 46 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 53 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 84 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 380 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 52 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 565 KiB

View File

Before

Width:  |  Height:  |  Size: 9.0 KiB

After

Width:  |  Height:  |  Size: 9.0 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 56 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.7 MiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 82 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 50 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 54 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 58 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 103 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 75 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 48 KiB

View File

Before

Width:  |  Height:  |  Size: 15 KiB

After

Width:  |  Height:  |  Size: 15 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 88 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 92 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 97 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 65 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 54 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 84 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 162 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 3.6 MiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 48 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 66 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 53 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 84 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 380 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 52 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 565 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 106 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 9.4 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 10 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 9.9 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 49 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 77 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 44 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 60 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 99 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 26 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 128 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 28 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 46 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 30 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 23 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 34 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 17 KiB

Some files were not shown because too many files have changed in this diff Show More