Compare commits

...

2013 Commits

Author SHA1 Message Date
Pratik Vyas
14e0e58a7d Merge branch 'develop' 2014-10-17 15:04:05 +05:30
Pratik Vyas
5eb373f7b5 bumped to version 4.8.0 2014-10-17 15:34:05 +06:00
Nabin Hait
4595c30a7b Merge pull request #2322 from nabinhait/stock_reco
Partial payment reconciliation
2014-10-17 15:01:13 +05:30
Nabin Hait
fc2dd44694 Partial payment reconciliation. Fixes #1982 2014-10-17 14:57:20 +05:30
Pratik Vyas
053c54017e [minor] add admin password to travis test site 2014-10-17 14:16:10 +05:30
Pratik Vyas
af473d78f2 Merge branch 'develop' 2014-10-15 15:34:39 +05:30
Pratik Vyas
26d096aa87 bumped to version 4.7.2 2014-10-15 16:04:39 +06:00
Nabin Hait
476c613ba6 Merge pull request #2317 from nabinhait/stock_reco
repost stock utility
2014-10-15 15:33:50 +05:30
Nabin Hait
2348a5f592 repost stock utility 2014-10-15 15:31:33 +05:30
Pratik Vyas
9d8d045c66 Merge branch 'develop' 2014-10-15 14:44:35 +05:30
Pratik Vyas
63914dd55b bumped to version 4.7.1 2014-10-15 15:14:35 +06:00
Nabin Hait
93a8042f08 Merge pull request #2316 from nabinhait/stock_reco
Minor fix
2014-10-15 14:44:06 +05:30
Nabin Hait
b2f32dac1b Minor fix 2014-10-15 14:42:18 +05:30
Pratik Vyas
577a3acaac Merge branch 'develop' 2014-10-15 14:35:47 +05:30
Pratik Vyas
5e46ce8a50 bumped to version 4.7.0 2014-10-15 15:05:47 +06:00
Nabin Hait
3b7342b7b5 Merge pull request #2315 from nabinhait/stock_reco
Strip company in setup wizard
2014-10-15 13:59:07 +05:30
Nabin Hait
531077e504 Strip company in setup wizard 2014-10-15 13:55:37 +05:30
Nabin Hait
147918ed66 Merge pull request #2313 from nabinhait/stock_reco
Fix gl entries for stock transactions
2014-10-15 12:44:59 +05:30
Nabin Hait
9bbfca9226 Fix gl entries for stock transactions 2014-10-15 12:24:38 +05:30
Nabin Hait
f1a07ff105 Allow zero rate while reposting 2014-10-15 12:23:35 +05:30
Nabin Hait
fb6e434315 Guess valuation rate in case of negative stock 2014-10-15 11:34:40 +05:30
Rushabh Mehta
3811d96feb Merge pull request #2308 from devdesco-ceo/patch-1
Update README.md
2014-10-15 10:02:06 +05:30
Viktor Zhuromskyy
1017615d02 Update README.md 2014-10-14 10:12:10 -05:00
Pratik Vyas
056d627f46 Merge branch 'develop' 2014-10-14 17:34:01 +05:30
Pratik Vyas
663bfeacf4 bumped to version 4.6.2 2014-10-14 18:04:01 +06:00
Nabin Hait
e918ebd721 Merge pull request #2307 from nabinhait/stock_reco
Minor fixes
2014-10-14 17:16:32 +05:30
Nabin Hait
0dc18f0102 Minor fixes 2014-10-14 17:15:02 +05:30
Pratik Vyas
8ddc882a66 Merge branch 'develop' 2014-10-14 16:16:29 +05:30
Pratik Vyas
49365d0982 bumped to version 4.6.1 2014-10-14 16:46:29 +06:00
Nabin Hait
50c29c7d0f Merge pull request #2306 from nabinhait/stock_reco
Negative stock in perpetual inventory
2014-10-14 16:10:46 +05:30
Nabin Hait
bf492122f8 minor fix 2014-10-14 16:09:14 +05:30
Nabin Hait
38d0ed9f3a Negative stock allowed for perpetual inventory. Blocked in specific case 2014-10-14 16:08:19 +05:30
Pratik Vyas
248a65b37d Merge branch 'develop' 2014-10-14 12:37:07 +05:30
Pratik Vyas
78f86e9385 bumped to version 4.6.0 2014-10-14 13:07:07 +06:00
Nabin Hait
d9f3e0c275 Merge pull request #2297 from neilLasrado/bom-issue
Fix - BOM calculated wrong cost on update cost
2014-10-14 12:28:16 +05:30
Neil Trini Lasrado
c40451ee2e Patch Fixed 2014-10-14 12:14:39 +05:30
Neil Trini Lasrado
6644406185 Fix - BOM calculated wrong cost on update cost 2014-10-14 12:14:38 +05:30
Nabin Hait
b3a962e121 Merge pull request #2304 from nabinhait/stock_reco
Repost gl entries where mismatch with stock balance
2014-10-14 11:58:41 +05:30
Nabin Hait
8a28ccfa2f Repost gl entries where mismatch with stock balance 2014-10-14 11:41:56 +05:30
Nabin Hait
0a75fa09ef Merge pull request #2300 from nabinhait/stock_reco
Minor fixes
2014-10-13 11:52:00 +05:30
Nabin Hait
17a16eeaf4 Tets case fixed for payment tool 2014-10-13 11:43:14 +05:30
Nabin Hait
3d3f0bcf54 Minor fix in setup wizard 2014-10-13 11:32:41 +05:30
Nabin Hait
bc8b20ae3c Allocate entire advance amount if advance against SO/PO 2014-10-13 10:48:26 +05:30
Nabin Hait
daf344e5fd Precision fixed in batch-wise balance report 2014-10-13 10:48:26 +05:30
Pratik Vyas
7916792f99 Merge pull request #2298 from pdvyas/fix-mariadb
add my_config patch to travis
2014-10-12 19:39:52 +05:30
Pratik Vyas
27e37e68b2 add my_config patch to travis 2014-10-12 19:35:46 +05:30
Nabin Hait
a538f8a24a Merge pull request #2296 from nabinhait/stock_reco
Stock balance report and valuation fixes
2014-10-10 21:23:30 +05:30
Nabin Hait
70ec88b733 fixed test cases 2014-10-10 21:22:46 +05:30
Nabin Hait
4f0e5db216 Stock balance grid report deprecated and moved to server side 2014-10-10 20:54:57 +05:30
Nabin Hait
79ed124939 Update journal_voucher.py 2014-10-10 18:19:03 +05:30
Nabin Hait
c0a3cd603b Merge pull request #2290 from ankitjavalkarwork/accreport
Bug Fixes
2014-10-10 18:11:36 +05:30
Nabin Hait
7c6f990cf9 Minor fix for moving average 2014-10-10 18:03:27 +05:30
Nabin Hait
7820b171d3 Stock balance grid report deprecated and moved to server side 2014-10-10 18:03:07 +05:30
ankitjavalkarwork
0cf4cc283c Add Shipping Addr to Sales Invoice 2014-10-10 16:55:03 +05:30
ankitjavalkarwork
9a4b173b88 Add validation for stopped orders, advance payment in journal voucher 2014-10-10 16:28:41 +05:30
ankitjavalkarwork
6d83454237 Disallow Stopped Orders in Against Voucher table 2014-10-10 13:30:10 +05:30
ankitjavalkarwork
ff231b5e62 Allow advance JV payments in Accounts Receivable/Payable 2014-10-10 13:13:39 +05:30
Nabin Hait
4d74216147 Maintain negative stock balance if balance qty is negative 2014-10-09 19:25:19 +05:30
Nabin Hait
b7e5ad0a31 Merge pull request #2276 from ankitjavalkarwork/sopofield
Rearrange To/From, Recurring Type field for better UX
2014-10-09 11:58:13 +05:30
Pratik Vyas
e435592d64 [minor] Fix default website style patch (reload doc) 2014-10-09 11:22:12 +05:30
Nabin Hait
7ddde8dc3a Merge pull request #2278 from nabinhait/stock_reco
stock reco and repost vouchers
2014-10-08 18:38:54 +05:30
Nabin Hait
fce2881de6 minor fix 2014-10-08 18:38:27 +05:30
Nabin Hait
e96e83d557 stock reco and repost vouchers 2014-10-08 18:06:14 +05:30
ankitjavalkarwork
1b2944e871 Rearrange To/From, Recurring Type field for better UX 2014-10-08 14:24:58 +05:30
Rushabh Mehta
074e73a0dd [translations] updated via translator 2014-10-08 14:16:33 +05:30
Nabin Hait
8923801881 Update stock_entry.py 2014-10-08 13:20:31 +05:30
Nabin Hait
cfafe93391 Merge pull request #2274 from nabinhait/stock_reco
Stock reco
2014-10-08 11:03:03 +05:30
Nabin Hait
6c48ef781b Utility: Repost stock ledger entries and gl entries for all stock transactions 2014-10-08 11:02:18 +05:30
Nabin Hait
adeb976a1b Block negative stock in perpetual inventory 2014-10-08 11:02:18 +05:30
Nabin Hait
bb19b91ef9 stock reco fixes 2014-10-08 11:02:18 +05:30
Nabin Hait
bfa7f171bd Stock reconciliation sl entries 2014-10-08 11:02:18 +05:30
Nabin Hait
b96c014daf Stock Reconciliation logic simplified 2014-10-08 11:02:18 +05:30
Pratik Vyas
e0c83e22d9 Merge branch 'develop' 2014-10-07 17:05:32 +05:30
pdvyas
099ad0f5e1 bumped to version 4.5.2 2014-10-07 17:35:32 +06:00
Nabin Hait
cf9746dd84 Merge pull request #2270 from nabinhait/fix2
Voucher dynamic link in general ledger report
2014-10-07 11:33:40 +05:30
Nabin Hait
b70712dbba Voucher dynamic link in general ledger report 2014-10-07 11:32:54 +05:30
Rushabh Mehta
4c057fe693 Merge pull request #2269 from rmehta/fixes
[fix] packing slip
2014-10-07 11:06:08 +05:30
Nabin Hait
ee8ff51d60 Merge pull request #2261 from ankitjavalkarwork/sopofield
[#2253] Rearrange To/From fields and depend on is_recurring
2014-10-07 10:52:10 +05:30
Rushabh Mehta
9974b16c32 [fix] packing slip 2014-10-07 10:52:05 +05:30
ankitjavalkarwork
9e5f319d80 [#2253] Rearrange To/From fields and depend on is_recurring in SI,SO,PI,PO 2014-10-06 12:58:38 +05:30
Nabin Hait
4f614b4030 Merge pull request #2195 from neilLasrado/manufacture-and-repack
[fix] Issue #2183 - Manufacturing and repack seprated in stock entry
2014-09-30 15:11:05 +05:30
Nabin Hait
3d458e973e Merge pull request #2236 from neilLasrado/upstream/develop
Has Batch No field should be freezed #2023
2014-09-30 14:56:15 +05:30
Neil Trini Lasrado
3a19a71262 patch fixed 2014-09-30 14:48:38 +05:30
Neil Trini Lasrado
29d1a1c593 manufacturing and repack sepreted, test cases fixed, patch fixed 2014-09-30 14:07:56 +05:30
Neil Trini Lasrado
3b90de558f Has Batch No field should be freezed #2023 2014-09-30 12:57:32 +05:30
Nabin Hait
af7e31acb3 Merge pull request #2235 from adityaduggal/develop
Added the dynamic link field in the accounts receivable report.
2014-09-30 10:39:40 +05:30
Aditya Duggal
a2c9d35efb Added the dynamic link field. 2014-09-29 17:44:28 +05:30
Aditya Duggal
4c058f4056 Added the dynamic link and removed the link column 2014-09-29 17:41:19 +05:30
Pratik Vyas
ad67b84d43 Merge branch 'develop' 2014-09-29 15:40:04 +05:30
Pratik Vyas
4e81e4065b bumped to version 4.5.1 2014-09-29 16:10:04 +06:00
Nabin Hait
81332789cb Merge pull request #2232 from nabinhait/hotfix
Fix gl entries for stock transactions
2014-09-29 15:25:02 +05:30
Nabin Hait
82d7c0c9eb Patch: Fix gl entries for stock transactions 2014-09-29 15:07:51 +05:30
Nabin Hait
d60235e239 minor fix in warehouse-wise stock balance report 2014-09-29 11:36:06 +05:30
Nabin Hait
9b50b0a762 Fixes for item list view 2014-09-29 11:36:06 +05:30
Pratik Vyas
21e14c4c98 Merge branch 'develop' 2014-09-26 16:49:59 +05:30
Pratik Vyas
16edacebc7 bumped to version 4.5.0 2014-09-26 17:19:59 +06:00
Nabin Hait
75027b4d54 Merge pull request #2225 from nabinhait/hotfix
GL Entries for future stock voucher and multiple minor fixes
2014-09-26 14:48:56 +05:30
Nabin Hait
b0bd99266d Fix in landed cost voucher 2014-09-26 14:30:02 +05:30
Nabin Hait
b9e04815f8 Repost gl entries for future stock vouchers 2014-09-26 14:24:42 +05:30
Nabin Hait
18ccc27b1b Minor fix in naming naming series 2014-09-26 14:23:00 +05:30
Nabin Hait
95f1fe92e2 Maintenance visit search field issue fixed 2014-09-26 14:23:00 +05:30
Nabin Hait
b783f519ee Fixes in sales/purchase invoice trends report 2014-09-26 14:23:00 +05:30
Nabin Hait
996a1010cb Moved Installation note from tools to documents section 2014-09-26 14:23:00 +05:30
Anand Doshi
32a9dfd983 Merge branch 'sbkolate-develop' into develop 2014-09-22 13:19:24 +05:30
Anand Doshi
1394509343 Fixes for recurring document 2014-09-21 19:45:49 +05:30
Pratik Vyas
0f31c36b2c Merge branch 'develop' 2014-09-19 14:46:07 +05:30
Pratik Vyas
14ac8f71b7 bumped to version 4.4.2 2014-09-19 15:16:07 +06:00
Nabin Hait
6a92d51383 Merge pull request #2212 from nabinhait/hotfix
Fetch and validate advance entries in sales/purchase invoice
2014-09-19 14:41:20 +05:30
Nabin Hait
7c831c3fe5 Get advance in sales/purchase invoice 2014-09-19 14:31:49 +05:30
Nabin Hait
778ff463af Minor fix in authorization control 2014-09-19 11:39:47 +05:30
Nabin Hait
70a31d5402 Gantt view fix for translations 2014-09-19 11:18:10 +05:30
Nabin Hait
48f5fa69f3 Fetch and validate advance entries in sales/purchase invoice 2014-09-18 15:04:11 +05:30
Pratik Vyas
83a2d12cd2 Merge branch 'develop' 2014-09-18 14:19:15 +05:30
Pratik Vyas
e539297e53 bumped to version 4.4.1 2014-09-18 14:49:14 +06:00
Nabin Hait
bbc3d015a3 Update authorization_control.py 2014-09-18 14:09:20 +05:30
Nabin Hait
e4475c635d Merge pull request #2211 from nabinhait/hotfix
Escaped single quote in authorization control queries
2014-09-18 13:01:33 +05:30
Anand Doshi
8370cb3e71 Merge branch 'develop' of https://github.com/sbkolate/erpnext into sbkolate-develop 2014-09-18 12:06:05 +05:30
Nabin Hait
4073880ecf Escaped single quote in authorization control queries 2014-09-18 11:01:26 +05:30
Nabin Hait
763c7a56dc Merge pull request #2209 from nabinhait/hotfix
Minor fix in gross profit report
2014-09-17 14:02:51 +05:30
Nabin Hait
556fbc487d Minor fix in gross profit report 2014-09-17 12:13:44 +05:30
Pratik Vyas
54938d431c Merge branch 'develop' 2014-09-16 15:58:28 +05:30
Pratik Vyas
31c61e7eae bumped to version 4.4.0 2014-09-16 16:28:28 +06:00
Anand Doshi
a23151b138 Merge pull request #2202 from 81552433qqcom/develop
hotfix for project wise report and translation.
2014-09-16 15:23:34 +05:30
Anand Doshi
11b75759d2 Merge pull request #2194 from ankitjavalkarwork/stockbalreport
Update report with Valuation rate, stock values, move to Main report
2014-09-16 15:22:25 +05:30
Rushabh Mehta
a2c562fea4 Update CONTRIBUTING.md 2014-09-16 15:21:43 +05:30
Anand Doshi
8950abc36f Merge pull request #2197 from anandpdoshi/anand-september-15
[minor] removed Suggest
2014-09-16 15:18:57 +05:30
Anand Doshi
27c7226d97 Merge pull request #2201 from nabinhait/hotfix
Columns added in report and fixes in customer's account creation
2014-09-16 15:18:31 +05:30
81552433qqcom
1db294e837 hotfix for project wise report
translation patch for email digest and support ticket.
2014-09-16 16:49:58 +08:00
Nabin Hait
16e943f120 Removed link of item-wise last purchase rate from buying home page 2014-09-16 12:57:31 +05:30
Nabin Hait
9d610214cf Strip party name before checking for account 2014-09-16 12:28:40 +05:30
Nabin Hait
c25681c36c Added item group and brand in sales-person-wise transaction summary report 2014-09-16 12:28:40 +05:30
Nabin Hait
1aea75261d Merge pull request #2200 from nabinhait/hotfix
Minor fix
2014-09-16 11:28:15 +05:30
Nabin Hait
5cd20e3d24 Minor fix 2014-09-16 11:26:53 +05:30
Nabin Hait
9968c7ef70 Merge pull request #2199 from nabinhait/hotfix
Minor fix
2014-09-16 11:25:06 +05:30
Nabin Hait
ca260618d8 Minor fix 2014-09-16 11:24:25 +05:30
Anand Doshi
30c5b41398 [minor] removed Suggest 2014-09-15 16:43:34 +05:30
Sambhaji Kolate
f37d4337a4 fix test for purchase order 2014-09-15 13:37:46 +05:30
Anand Doshi
93c2adb2cd Merge pull request #2193 from anandpdoshi/anand-september-15
Recurring fix, cherry-picked nabin's address template fix
2014-09-15 13:04:12 +05:30
Sambhaji Kolate
525ab0a925 fix build 2014-09-15 12:57:58 +05:30
Anand Doshi
a92c6886cd Merge pull request #2173 from ankitjavalkarwork/fix2043
Add message on cancel in SI if C-Form exists, fix minor error, Add validation in C-Form
2014-09-15 12:56:51 +05:30
Anand Doshi
01d171756b [fix] before_recurring, set due_date, ageing_date as None, fixed account due date validation 2014-09-15 12:50:37 +05:30
Sambhaji Kolate
930e7f5578 fix conflict 2014-09-15 12:43:48 +05:30
Sambhaji Kolate
d14e15d432 fix conflict 2014-09-15 12:31:44 +05:30
Sambhaji Kolate
4d3a18890b fix conflict 2014-09-15 12:20:11 +05:30
Nabin Hait
65bef02607 Fixes in address template 2014-09-15 12:18:28 +05:30
Rushabh Mehta
cb9331ddca Merge pull request #2191 from 81552433qqcom/develop
#2190 hotfix, item page
2014-09-15 10:13:09 +05:30
81552433qqcom
ac0c3fb696 #2190 hotfix, item page 2014-09-15 10:21:36 +08:00
Anand Doshi
a844fb78bb Merge branch '81552433qqcom-master' into develop 2014-09-12 16:23:08 +05:30
81552433qqcom
6d02939256 changed indent. as well use tab instead of space. 2014-09-12 16:22:28 +05:30
81552433qqcom
e3b63f2d9c added __() for options that need label. 2014-09-12 16:07:12 +05:30
81552433qqcom
1c440b3b31 month options doesn't get translated. 2014-09-12 16:07:12 +05:30
81552433qqcom
c5a0ef8399 fix according to the suggestion. 2014-09-12 16:07:12 +05:30
81552433qqcom
951da0ca3d added translations to report py file. 2014-09-12 16:07:12 +05:30
81552433qqcom
351be9ca42 translations. 2014-09-12 16:07:11 +05:30
81552433qqcom
4bab0a2f54 various translation missed __() 2014-09-12 16:07:11 +05:30
Anand Doshi
97478b746d Merge pull request #2185 from anandpdoshi/ankit-payment-tool
Payment Tool
2014-09-12 15:53:03 +05:30
Anand Doshi
61a591944b [minor] ui/ux fixes in Payment Tool 2014-09-12 15:42:16 +05:30
Ankit Javalkar
8e7ca41817 Payment Tool #2106 2014-09-12 15:23:46 +05:30
Anand Doshi
84e08fd534 Merge pull request #2174 from neilLasrado/cost-of-production-cycle-magix
Cost of Production cycle
2014-09-12 14:45:19 +05:30
Anand Doshi
b0e56fa1b5 Merge pull request #2181 from nabinhait/hotfix
Report print format fixed for translated columns
2014-09-12 14:18:52 +05:30
Neil Trini Lasrado
e7c48ed3b0 bom operation inList view fix 2014-09-12 12:08:02 +05:30
Nabin Hait
c432270ca8 Report print format fixed for translated columns 2014-09-12 12:00:47 +05:30
Neil Trini Lasrado
6a7f75c3e3 Cost of Production cycle 2014-09-12 11:25:03 +05:30
Neil Trini Lasrado
e9882e12ba Cost of Production cycle 2014-09-12 11:25:03 +05:30
ankitjavalkarwork
3df10429db Add message on cancel in SI if C-Form exists, Add validation in C-Form, remove update_c_form 2014-09-11 16:58:18 +05:30
Anand Doshi
eee569bb20 Merge pull request #2177 from anandpdoshi/anand-september-11
[fix] transfer_qty in get_stock_and_rate
2014-09-11 16:47:59 +05:30
ankitjavalkarwork
2e07305616 Update report with Valuation rate, stock values, move to Main report 2014-09-11 16:47:19 +05:30
Anand Doshi
2f9c36a588 Merge pull request #2175 from ankitjavalkarwork/fix2153
[minor] Add Permission for additional roles to Customer, Supplier
2014-09-11 16:47:08 +05:30
Anand Doshi
907494c5d4 [fix] transfer_qty in get_stock_and_rate 2014-09-11 16:22:12 +05:30
Sambhaji Kolate
b14401c320 change convert_to_recurring() to take recurring_id dynamicaly 2014-09-11 16:09:05 +05:30
Anand Doshi
4d2520ea53 Merge pull request #2176 from nabinhait/hotfix
Opening entry should not be considered in bank reconciliation statement
2014-09-11 15:21:24 +05:30
Nabin Hait
cece0c7ffe Opening entry should not be considered in bank reconciliation statement 2014-09-11 13:59:00 +05:30
ankitjavalkarwork
5e34383e25 [minor] Add Permission for additional roles to Customer, Supplier 2014-09-10 17:54:42 +05:30
Sambhaji Kolate
b2a3f2d386 some minor changes get fixed for PO/PI 2014-09-10 17:40:48 +05:30
Anand Doshi
8e39ee79b0 Merge pull request #2167 from anandpdoshi/anand-september-9
Set allow_on_submit for 'page_break', 'letter_head', 'select_print_heading', 'print_heading'. Fixes frappe/erpnext#1810
2014-09-10 15:24:52 +05:30
Sambhaji Kolate
6b679c45df Updated purchase_invoice.json and purchase_order.json with some missed out changes 2014-09-10 13:57:45 +05:30
Sambhaji Kolate
e3d2643f2b Changes for Recurring PO/PI 2014-09-10 13:07:59 +05:30
Anand Doshi
fc33d5a75b Set allow_on_submit for 'page_break', 'letter_head', 'select_print_heading', 'print_heading'. Fixes frappe/erpnext#1810 2014-09-09 15:25:43 +05:30
Pratik Vyas
6e566fb154 Merge branch 'develop' 2014-09-09 15:10:47 +05:30
Pratik Vyas
6675ce9036 bumped to version 4.3.0 2014-09-09 15:40:47 +06:00
Pratik Vyas
2cf75fcca2 change version in hooks.py 2014-09-09 15:10:18 +05:30
Anand Doshi
941f698daf Merge pull request #2165 from anandpdoshi/anand-september-9
Fix in web clear cache for Item, cheque printing format
2014-09-09 13:59:39 +05:30
Anand Doshi
48b3d1383f [minor] Cheque Printing Format 2014-09-09 12:59:16 +05:30
Anand Doshi
dc79334f1c [fix] Clear website cache for Item Group on saving Item 2014-09-09 12:35:15 +05:30
Anand Doshi
ab74a502e2 Merge pull request #2162 from nabinhait/hotfix
Get items in PO from material requests based on supplier
2014-09-09 12:07:27 +05:30
Nabin Hait
fa18e7c21f Merge pull request #2140 from nathando/patch-1
get_item_list does not [item qty=0]
2014-09-09 12:06:21 +05:30
Nabin Hait
ff7e9b6b22 Get items in PO from material requests based on supplier 2014-09-09 11:01:55 +05:30
Rushabh Mehta
00e93d1c1d Merge pull request #2159 from anandpdoshi/anand-september-8
[minor] Set in_list_view for Sales and Purchase item tables
2014-09-09 09:21:04 +05:30
Anand Doshi
45c9b1c065 [minor] Set in_list_view for Sales and Purchase item tables 2014-09-08 17:42:17 +05:30
Anand Doshi
dcfcd693c2 Merge pull request #2158 from rmehta/translated
transations-08-sep-2014
2014-09-08 15:30:15 +05:30
RM
7ab4ee1d79 transations-08-sep-2014 2014-09-08 09:28:34 +00:00
Nabin Hait
c017ed251d Merge pull request #2151 from ankitjavalkarwork/fix1999
Allow renaming for Sales Partner Doctype
2014-09-08 14:23:17 +05:30
Nabin Hait
34b94aff73 Merge pull request #2154 from anandpdoshi/anand-september-5
Setup Wizard: set corrected number format in system settings
2014-09-08 14:23:07 +05:30
Anand Doshi
65a5f85af5 Setup Wizard: set corrected number format in system settings 2014-09-05 17:27:25 +05:30
Anand Doshi
52a39a00d5 Merge pull request #2149 from anandpdoshi/anand-september-5
[fix] Validate Expense Approver
2014-09-05 15:24:24 +05:30
ankitjavalkarwork
ce9a9eeecc Allow renaming for Sales Partner Doctype 2014-09-05 14:58:21 +05:30
Nabin Hait
cbd433603d Merge pull request #2150 from nabinhait/hotfix
minor fixes
2014-09-05 14:57:02 +05:30
Nabin Hait
91fb661d12 minor fixes 2014-09-05 14:56:24 +05:30
Anand Doshi
0b74b6d98c [fix] Validate Expense Approver 2014-09-05 14:41:53 +05:30
Anand Doshi
d42326bf43 [hotfix] hooks - recurring order 2014-09-05 11:20:29 +05:30
Anand Doshi
4c93f35c2b Merge pull request #2145 from nabinhait/hotfix
Minor fixes
2014-09-04 15:38:00 +05:30
Nabin Hait
84f0cc6614 Dont show opening entries in Bank reconciliation 2014-09-04 15:21:46 +05:30
Nabin Hait
0f798dda15 Valuation rate for finished goods in repack entries 2014-09-04 15:21:46 +05:30
Nabin Hait
629e51a8e9 Search field fixed in stock entry 2014-09-04 15:21:46 +05:30
Anand Doshi
4211aa41a0 [hotfix] Product Search 'More' button 2014-09-04 15:16:13 +05:30
Anand Doshi
5893e143f4 Merge pull request #2143 from anandpdoshi/anand-septemper-3
[minor] id.csv
2014-09-04 15:00:41 +05:30
Anand Doshi
d91c4d3e00 [translations] German translations from a user 2014-09-03 21:39:05 +05:30
Anand Doshi
3d911eba6c [minor] id.csv 2014-09-03 17:33:33 +05:30
Nabin Hait
0c8e4335f9 Merge pull request #2142 from nabinhait/hotfix
removed test records for landed cost voucher
2014-09-03 14:30:50 +05:30
nathando
247e9ffc96 get_item_list does not [item qty=0]
- By using `if not d.qty:` it totally limits the chance of creating an empty Delivery Note 
- Should be changed to `if d.qty is None` 

Use case for empty DN: 
- Open a Delivery Note and tight to a specific Sales Order first without knowing the real qty at this point.
- Using barcode scanner to receive Sales Order to this DN (multiple times).
2014-09-03 15:03:31 +08:00
Pratik Vyas
3f4c3086df Remove frappe version pinning in requirements.txt 2014-09-03 10:35:13 +05:30
Nabin Hait
a84f3663dd removed test records for landed cost voucher 2014-09-02 23:11:06 +05:30
Nabin Hait
714b3ef7f8 Merge pull request #2139 from nabinhait/hotfix
Repost stock reconciliation and valuation rate in repack entry
2014-09-02 20:06:28 +05:30
Nabin Hait
96bdc5834c Get valuation rate in manufacturing/repack entry 2014-09-02 20:02:25 +05:30
Nabin Hait
3f4885e342 repost stock reconciliation 2014-09-02 20:02:24 +05:30
Nabin Hait
ee2bc92ab2 Merge pull request #2134 from nabinhait/hotfix
Stock reconciliation fixes
2014-09-02 20:01:57 +05:30
Pratik Vyas
144f06e381 Update patches.txt 2014-09-01 18:31:11 +05:30
Nabin Hait
7f3f2a0f0a Fixes in repost_stock utility 2014-09-01 18:16:24 +05:30
Nabin Hait
9e563e7b47 Stock reconciliation when valuation rate column is blank 2014-09-01 18:16:24 +05:30
Nabin Hait
12ce3eefca landed cost voucher added in module page 2014-09-01 18:16:24 +05:30
Anand Doshi
f395b7ce11 [hotfix] item grid rate visibility booboo 2014-09-01 17:26:00 +05:30
Anand Doshi
4228adfaa7 Merge pull request #2109 from ankitjavalkarwork/recurringorder2
Commonified Recurring for Sales Invoice and Sales Order
2014-09-01 16:34:12 +05:30
Anand Doshi
8ad474b910 Merge pull request #2122 from neilLasrado/print-templates-fix
[Cosmetics] Print Templates Layout Improved
2014-09-01 16:33:34 +05:30
ankitjavalkarwork
737d8e4d9f fix minor issue and set default value send as pdf 2014-09-01 16:22:56 +05:30
ankitjavalkarwork
aaac7c17b8 Fix minor errors, fix patch, call in hooks, move from account_controller to recurring_document 2014-09-01 16:22:56 +05:30
ankitjavalkarwork
28a975dd32 Add patch for field name change in SI, rename email template 2014-09-01 16:22:56 +05:30
ankitjavalkarwork
e60822b094 Add tests for Recurring Document, Sales Inv, Sales Order, fix minor errors 2014-09-01 16:20:59 +05:30
ankitjavalkarwork
ac085e0f59 Add manage_recurring_documents and path to hooks, fix minor issues 2014-09-01 16:20:59 +05:30
ankitjavalkarwork
e8331d40f3 Commonify Recurring Sales Order/Invoice 2014-09-01 16:20:59 +05:30
Rushabh Mehta
21b8d30c80 Merge pull request #2131 from anandpdoshi/anand-september-1
Hide Rate, Amount in Item Grid template based on permlevel
2014-09-01 12:52:45 +05:30
Anand Doshi
24989b90ba Hide Rate, Amount in Item Grid template based on permlevel 2014-09-01 12:38:09 +05:30
Nabin Hait
4f1bccb53d Merge pull request #2129 from anandpdoshi/anand-september-1
[patch] Set company's country
2014-09-01 11:11:19 +05:30
Anand Doshi
98eacdb785 [patch] Set company's country 2014-09-01 10:23:47 +05:30
Neil Trini Lasrado
8331ec7482 [cosmetics] Cheque Print format 2 2014-08-29 20:27:45 +05:30
Neil Trini Lasrado
d43752fc4f [cosmetics] Cheque Print format 1 2014-08-29 16:43:48 +05:30
Neil Trini Lasrado
bd03c8b28a Merge branch 'develop' of https://github.com/frappe/erpnext into print-templates-fix 2014-08-29 16:42:44 +05:30
Anand Doshi
d490933fce Merge pull request #2125 from anandpdoshi/anand-august-29
[fix] Maintenance Schedule, Incoming Rate
2014-08-29 16:38:03 +05:30
Neil Trini Lasrado
f65817d4c2 [cosmetics] payment receipt Print format 1 2014-08-29 16:31:57 +05:30
Anand Doshi
40a8ae2907 [fix] get incoming rate 2014-08-29 16:28:31 +05:30
Anand Doshi
12b98027ee [fix] Maintenance Scheduler periodicity validation 2014-08-29 16:11:11 +05:30
Neil Trini Lasrado
45a0ea9628 Merge branch 'develop' of https://github.com/frappe/erpnext into print-templates-fix 2014-08-29 15:48:42 +05:30
Anand Doshi
98ff85dea1 Merge pull request #2108 from neilLasrado/fix-issue-448
[Fix] Issue #448
2014-08-29 15:46:13 +05:30
Anand Doshi
0015157cba Merge pull request #2120 from nabinhait/hotfix
Fixes in BOM and maintenance schedule
2014-08-29 15:43:00 +05:30
Anand Doshi
f513531d3a Merge pull request #2114 from neilLasrado/credit-note-feature
[print-template] Credit Note Issue #31
2014-08-29 15:32:42 +05:30
Neil Trini Lasrado
4e16e9ed89 Refactored Credit Note Print Format 2014-08-29 13:20:58 +05:30
Anand Doshi
9f0ea97d85 [fix] get future vouchers query
[print-template] Credit Note Issue #31 2
2014-08-29 12:50:28 +05:30
Neil Trini Lasrado
7a435bb4f1 [print-template] Credit Note Issue #31 1 2014-08-29 12:50:28 +05:30
Neil Trini Lasrado
014346acba [print-template] Credit Note 2014-08-29 12:50:28 +05:30
Anand Doshi
c90773cc85 Merge pull request #2115 from anandpdoshi/user-permission-doctypes
HR permissions, translations
2014-08-29 11:55:51 +05:30
Nabin Hait
0514e07ef4 minor fix 2014-08-29 11:50:59 +05:30
Nabin Hait
14b8af2e65 Rounding issue fixed for bom quantity 2014-08-29 11:50:58 +05:30
Nabin Hait
818bacae49 Minor fix in maintenance schedule 2014-08-29 11:50:58 +05:30
Anand Doshi
6ba2e3deef Merge pull request #2118 from anandpdoshi/anand-august-28
[fix] default quotation list filter
2014-08-29 11:25:21 +05:30
Anand Doshi
bb370f3b6a HR - Leave Approver and Expense Approver fields changed to Link Fields, better default permissions 2014-08-29 11:19:10 +05:30
Anand Doshi
f680626f53 [minor] send translations in response 2014-08-29 11:19:10 +05:30
Neil Trini Lasrado
83ca3e5563 [Cosmetics] Print Templates Layout Improved 2014-08-28 14:48:16 +05:30
Anand Doshi
37cb544839 [fix] default quotation list filter 2014-08-28 11:27:18 +05:30
Nabin Hait
ec8964dde5 Merge pull request #2117 from anandpdoshi/anand-august-27
[fix] get future vouchers query
2014-08-28 10:43:35 +05:30
Anand Doshi
913c51b1f8 [fix] get future vouchers query 2014-08-27 22:09:15 +05:30
Neil Trini Lasrado
cd1efb94ed Merge branch 'develop' of https://github.com/frappe/erpnext into fix-issue-448 2014-08-27 18:49:03 +05:30
Neil Trini Lasrado
d6d71e8078 [fix] issue 448 final 1 2014-08-27 18:48:57 +05:30
Pratik Vyas
4cb67339c5 Merge pull request #2112 from anandpdoshi/anand-august-27
Enqueue Newsletter sending in Longjob Queue
2014-08-27 15:14:26 +05:30
Neil Trini Lasrado
4b71fe6fc1 Merge branch 'develop' of https://github.com/frappe/erpnext into fix-issue-448 2014-08-27 12:31:31 +05:30
Anand Doshi
46256cddd7 Enqueue Newsletter sending in Longjob Queue 2014-08-27 12:23:52 +05:30
Neil Trini Lasrado
ad24069cdc [fix] issue 448 final 2014-08-26 16:30:39 +05:30
Nabin Hait
3b1733bc04 minor fix in sales invoice test records 2014-08-26 16:30:39 +05:30
Anand Doshi
43f087c99d [hotfix] Supplier read permission for Purchase User
[Fix] Issue #448

[Fix] Issue #448 2
2014-08-26 16:30:39 +05:30
Nabin Hait
54ca95bc6e Merge pull request #2110 from nabinhait/hotfix
minor fix in sales invoice test records
2014-08-26 16:21:32 +05:30
Nabin Hait
e3f2323e14 minor fix in sales invoice test records 2014-08-26 16:20:38 +05:30
Anand Doshi
c147667486 [hotfix] Supplier read permission for Purchase User 2014-08-26 14:26:07 +05:30
Anand Doshi
5ed2c06eb5 Merge pull request #2089 from neilLasrado/item_group
Item group
2014-08-26 12:56:54 +05:30
Neil Trini Lasrado
9d1e8b61fe [Fix] Issue #980 final 2014-08-25 19:04:30 +05:30
Anand Doshi
e0ffe7a575 [hotfix] Product Search 2014-08-25 18:38:08 +05:30
Neil Trini Lasrado
d676491b6e Merge https://github.com/frappe/erpnext into item_group 2014-08-25 16:18:31 +05:30
Anand Doshi
580f447bbd Merge pull request #2100 from rmehta/aug-22
[cleanup] remove allow_attach
2014-08-25 16:07:50 +05:30
Rushabh Mehta
52f04da5f5 [style] default website 2014-08-25 15:17:20 +05:30
Nabin Hait
06927a20b2 Update repost_stock.py 2014-08-25 14:08:54 +05:30
Neil Trini Lasrado
caba531e89 [fix] issue#980 2014-08-25 13:22:15 +05:30
Rushabh Mehta
7a6ab91080 remove set_title_left 2014-08-25 13:04:22 +05:30
Rushabh Mehta
e8dd4160d4 [cleanup] remove allow_attach 2014-08-25 13:04:21 +05:30
Anand Doshi
bb6b58c271 Merge pull request #2074 from neilLasrado/purchase-invoice-fix
[fix] frappe/erpnext#1510
2014-08-25 12:51:16 +05:30
Anand Doshi
def374370f Merge pull request #2083 from geo-poland/basic-polish-language-support
Basic Polish language support
2014-08-25 12:48:33 +05:30
Nabin Hait
b748115609 Merge pull request #2101 from nabinhait/hotfix
Required raw materials qty in PP tool
2014-08-23 20:05:42 +05:30
Nabin Hait
a592a914b8 PP Tool: get query for sales order 2014-08-22 16:25:04 +05:30
Nabin Hait
1ae48f4988 Required raw materials qty in PP tool 2014-08-22 16:20:07 +05:30
Nabin Hait
bb29d15d5a Merge pull request #2099 from nabinhait/hotfix
Minor fixes
2014-08-22 15:26:38 +05:30
Nabin Hait
40e3d0c780 General ledger: debit/credit value rounding upto 3 decimals 2014-08-22 14:37:55 +05:30
Nabin Hait
00fc600e8b PP Tool: Raise material request based on projected qty in selected warehouse 2014-08-22 14:06:22 +05:30
Nabin Hait
f4ad37d208 Reset receiver list always on create receiver list button 2014-08-22 12:42:57 +05:30
Nabin Hait
79f91109cd Update pricing_rule.py 2014-08-21 19:21:25 +05:30
Nabin Hait
d67cbdf725 Merge pull request #2097 from nabinhait/hotfix
Escaped item group value in pricing rule condition
2014-08-21 19:19:34 +05:30
Nabin Hait
16aba71da0 Escaped item group value in pricing rule condition 2014-08-21 19:02:02 +05:30
Nabin Hait
9426522159 Merge pull request #2096 from nabinhait/hotfix
Fixex in payment reconciliation
2014-08-21 18:07:39 +05:30
Nabin Hait
8058832a48 Fixex in payment reconciliation 2014-08-21 18:06:35 +05:30
Nabin Hait
fa3f22c448 Merge pull request #2093 from nabinhait/hotfix
Packing list visibility and update status on communication
2014-08-21 17:34:58 +05:30
Nabin Hait
cabf9c5bee Minor fix in status updater 2014-08-21 16:44:32 +05:30
Nabin Hait
4417529952 Packing list visibility issue 2014-08-21 16:44:32 +05:30
Anand Doshi
bb3f192b07 Merge pull request #2091 from nabinhait/hotfix
Minor fixes
2014-08-21 12:42:40 +05:30
Nabin Hait
f71011aff0 Project query fixed 2014-08-21 11:34:31 +05:30
Nabin Hait
df5ab4e228 Minor fix in maintenance schedule 2014-08-21 11:32:39 +05:30
Neil Trini Lasrado
b02b59b8c8 Merge branch 'develop' of https://github.com/frappe/erpnext into purchase-invoice-fix 2014-08-20 14:57:24 +05:30
Rushabh Mehta
f29449ba07 Merge pull request #2086 from rmehta/route-redesign
Route redesign
2014-08-20 14:49:27 +05:30
Neil Trini Lasrado
bf4ceb981f Merge https://github.com/frappe/erpnext into purchase-invoice-fix 2014-08-20 14:39:22 +05:30
Neil Trini Lasrado
84e5a4a2c2 [fix-remarks-changed-issue#110] 2014-08-20 13:44:56 +05:30
Rushabh Mehta
ebd30beee4 [route] redesigned 2014-08-20 11:44:30 +05:30
Rushabh Mehta
cb067aa579 [route] refactor, wip 2014-08-20 11:44:30 +05:30
Rushabh Mehta
74bc2baa1d remove website route, wip 2014-08-20 11:43:58 +05:30
Tytus
f546ab3130 Add csv file with initial translations. 2014-08-19 15:53:08 +02:00
Tytus
35142cb206 Add Polish language to setup wizard. 2014-08-19 15:51:36 +02:00
Nabin Hait
13313b5cb6 Merge pull request #2082 from nabinhait/hotfix
Bank reconciliation statement: show amounts which has cleared in the ban...
2014-08-19 17:42:26 +05:30
Nabin Hait
432431f2e6 fix for translation 2014-08-19 16:49:44 +05:30
Anand Doshi
dd952146d1 Merge pull request #2081 from anandpdoshi/anand-august-19
[fix] Error Reports
2014-08-19 16:37:50 +05:30
Nabin Hait
237f3765e5 Bank reconciliation statement: show amounts which has cleared in the bank but not registered in the system 2014-08-19 16:29:31 +05:30
Anand Doshi
cca6460e65 [fix] Error Reports 2014-08-19 16:06:09 +05:30
Rushabh Mehta
354acf6fc9 Merge pull request #2076 from anandpdoshi/anand-august-19
[fix] Error Reports
2014-08-19 14:07:03 +05:30
Anand Doshi
7ce0609800 Merge pull request #2077 from nabinhait/hotfix
Precision issue in tax calculation
2014-08-19 13:43:23 +05:30
Nabin Hait
0a35effe49 Precision issue in tax calculation 2014-08-19 13:22:19 +05:30
Neil Trini Lasrado
95b395505f [new fix issue No #1510] 2014-08-19 13:12:33 +05:30
Neil Trini Lasrado
67e14a48b8 [fix issue No #1510] 2014-08-19 12:35:14 +05:30
Neil Trini Lasrado
2026148dbe [fix issue No #1510] 2014-08-19 12:22:45 +05:30
Anand Doshi
78b6366325 [fix] Error Reports 2014-08-19 12:20:48 +05:30
Neil Trini Lasrado
9c3535307f [fix] frappe/erpnext#1510 2014-08-19 10:41:34 +05:30
Rushabh Mehta
5e893ef8fd Merge pull request #2073 from anandpdoshi/anand-august-18
[fix] Leave Application Calendar - Fixes #2065
2014-08-18 22:11:28 +05:30
Anand Doshi
f72de95a38 [fix] SMS Center 2014-08-18 19:51:47 +05:30
Anand Doshi
6ab831b387 Allow Default Warehouse for Item, even if not a Stock Item 2014-08-18 19:04:19 +05:30
Anand Doshi
e4c434ab6f [fix] Leave Application Calendar 2014-08-18 17:04:04 +05:30
Pratik Vyas
1f3310e0d1 Merge pull request #2072 from nabinhait/hotfix
Multiple small fixes
2014-08-18 16:49:06 +05:30
Nabin Hait
c41a9480b8 Credit limit fixes 2014-08-18 15:40:36 +05:30
Nabin Hait
6394f5b1a9 minot fix in pro order 2014-08-18 15:40:36 +05:30
Nabin Hait
448c9b71c1 minot fix in material request 2014-08-18 15:40:36 +05:30
Nabin Hait
32a3a86a00 General ledger report: invalid account 2014-08-18 15:40:36 +05:30
Nabin Hait
dcce0c86ed Minimum ordered qty validation 2014-08-18 15:40:36 +05:30
Anand Doshi
f4b3d30312 Merge pull request #2071 from anandpdoshi/anand-august-18
[minor] Removed 'PIN: ' from default Address Template
2014-08-18 14:53:26 +05:30
Anand Doshi
62aa8fa4e7 [minor] Removed 'PIN: ' from default Address Template 2014-08-18 12:53:37 +05:30
Rushabh Mehta
e8a52d810f Merge pull request #2067 from dalwadani/develop
Improve Arabic translation
2014-08-18 09:54:12 +05:30
Dhaifallah Alwadani
5e27a759b7 Improve Arabic translation 2014-08-16 18:11:48 +01:00
Pratik Vyas
c0d31ce648 Merge pull request #2062 from nabinhait/hotfix
Hotfix
2014-08-15 11:06:44 +05:30
Anand Doshi
eb39435481 [hotfix] Allow on submit for Projected Qty 2014-08-14 18:08:19 +05:30
Nabin Hait
54498452b6 Stock entry minor fix 2014-08-14 15:49:44 +05:30
Nabin Hait
821aad5281 Sales/purchase return: fixes for qty validation 2014-08-14 15:15:14 +05:30
Nabin Hait
5145b1445b Fixes in production planning tool 2014-08-14 15:15:14 +05:30
Nabin Hait
e368091627 Fixes in Payment Reconciliation 2014-08-14 15:15:14 +05:30
Anand Doshi
d5a08ea449 Merge pull request #2055 from rmehta/aug-11
Timeline and Folds
2014-08-14 12:00:03 +05:30
Rushabh Mehta
c31a1eec5b [ux] fixes to timeline 2014-08-14 11:47:31 +05:30
Rushabh Mehta
0d0f5f6c25 [ux] fixes to timeline 2014-08-14 11:43:46 +05:30
Rushabh Mehta
ab8bde0149 [ux] added folds, show actual / projected qty in pos 2014-08-14 11:43:46 +05:30
Anand Doshi
cf8bb668b3 Merge pull request #2051 from anandpdoshi/anand-august-12
[logic] Email Digest - use transaction/posting date
2014-08-12 19:51:22 +05:30
Anand Doshi
f0075b9ce2 [fix] Opportunity communication listing 2014-08-12 15:20:39 +05:30
Anand Doshi
67d249eea9 [logic] Email Digest - use transaction/posting date 2014-08-12 12:45:23 +05:30
Anand Doshi
c7105a1a79 Merge branch 'nabinhait-landed_cost' into develop 2014-08-11 18:04:08 +05:30
Anand Doshi
f957cbd8ef [test] Purchase Receipt - update rejected serial no 2014-08-11 18:03:43 +05:30
Nabin Hait
5c0db8d05e Landed Cost voucher test case for serialized items 2014-08-11 16:28:29 +05:30
Nabin Hait
200e8d971f Landed Cost voucher test case for serialized items 2014-08-11 16:12:32 +05:30
Nabin Hait
a97e700371 Add rejected serial nos in Purchase Receipt if auto-created based on series 2014-08-11 16:12:32 +05:30
Nabin Hait
4e6c52dd24 Test case fixes 2014-08-11 16:12:32 +05:30
Nabin Hait
2b776e8c3a Landed cost voucher minor fixes 2014-08-11 16:12:32 +05:30
Nabin Hait
f3e1181ad9 Landed cost voucher fixes 2014-08-11 16:12:32 +05:30
nabinhait
9cbcf96aeb no copy property for landed cost voucher amount field 2014-08-11 16:12:32 +05:30
nabinhait
8ca3189f07 pr and pi gl entries 2014-08-11 16:12:31 +05:30
nabinhait
98e7dcfe2c landed cost voucher minor fix 2014-08-11 16:12:31 +05:30
nabinhait
cfd1b10980 Purchase receipt gl entries if there is warehouse without account 2014-08-11 16:12:31 +05:30
nabinhait
f807cda375 PR and PI gl entries fixes for landed cost 2014-08-11 16:12:31 +05:30
nabinhait
11594c7927 purchase receipt gl entries 2014-08-11 16:12:31 +05:30
nabinhait
509aa52efc minor fix 2014-08-11 16:12:31 +05:30
nabinhait
e2c3f7ab14 Added help in landed cost voucher 2014-08-11 16:12:31 +05:30
nabinhait
fe39442c48 Removed old landed cost wizard 2014-08-11 16:12:31 +05:30
nabinhait
b21b6598f1 Test case for landed cost voucher 2014-08-11 16:12:31 +05:30
nabinhait
5e1b0014c2 GL entries for sub-contracting and rejected qty 2014-08-11 16:12:31 +05:30
nabinhait
cc0692d714 landed cost fix 2014-08-11 16:12:31 +05:30
nabinhait
87f2401c1e Landed Cost on_submit and gl entries for PR 2014-08-11 16:12:31 +05:30
nabinhait
f6ea21c8ae landed cost voucher design changed #1921 2014-08-11 16:12:30 +05:30
nabinhait
4436157da1 Landed cost redesign initial commit #1921 2014-08-11 16:12:30 +05:30
Anand Doshi
b00a2422e4 [hotfix] Allow on Submit - Actual / Projected Qty for Packed Item 2014-08-11 15:54:20 +05:30
Anand Doshi
475b118fba Merge pull request #2050 from anandpdoshi/anand-august-11
Feed, Form Grid
2014-08-11 13:44:01 +05:30
Anand Doshi
42335fb2cb [minor] Allow on Submit - Actual / Projected Qty 2014-08-11 13:28:29 +05:30
Anand Doshi
15ec1e1860 Merge pull request #2049 from nabinhait/hotfix
Fixes in Order trends report
2014-08-11 12:48:16 +05:30
Anand Doshi
96964a4e03 [minor] Visible Columns' Label should show ellipsis on overflow 2014-08-11 12:28:32 +05:30
Anand Doshi
e4aaa3d18f [minor] Truncate comment in Feed to 240 chars 2014-08-11 12:27:47 +05:30
Nabin Hait
a6b597a0bd Fixes in Order trends report 2014-08-11 11:54:37 +05:30
Anand Doshi
52d1ea83a0 [hotfix] Stock Entry List 2014-08-11 09:16:59 +05:30
Anand Doshi
5d64f5abd4 [hotfix] Sales Order list 2014-08-09 14:54:52 +05:30
Anand Doshi
3e103ebffe [minor] ERPNext uses MariaDB 2014-08-08 17:36:25 +05:30
Rushabh Mehta
992bc448a2 Merge pull request #2045 from rmehta/fixes-aug-8
[fix] [pos] pos view only for draft docs
2014-08-08 17:30:12 +05:30
Rushabh Mehta
23607f91cd [fix] [pos] pos view only for draft docs 2014-08-08 17:29:16 +05:30
Anand Doshi
3a97739f83 Merge pull request #2042 from rmehta/pos-module
added icon for pos
2014-08-08 16:56:45 +05:30
Rushabh Mehta
e0ee6fe8cd Merge pull request #2044 from nabinhait/hotfix
PO-PI mapping: divisional loss issue fixed
2014-08-08 16:44:15 +05:30
Rushabh Mehta
a3f76fc14d Update sales_invoice.js 2014-08-08 16:43:21 +05:30
Nabin Hait
c85abbfeca PO-PI mapping: divisional loss issue fixed 2014-08-08 16:07:02 +05:30
Rushabh Mehta
139ec2a64f Update note_list.html 2014-08-08 15:47:56 +05:30
Rushabh Mehta
72e1719220 added icon for pos 2014-08-08 15:43:26 +05:30
Pratik Vyas
3de7757ba4 Update update_project_milestones.py 2014-08-08 14:49:53 +05:30
Anand Doshi
7c3fad63b1 Merge pull request #2040 from anandpdoshi/anand-august-8
[patch] Add currency Turkish Lira
2014-08-08 14:17:39 +05:30
Anand Doshi
6b8145a813 [patch] Add currency Turkish Lira 2014-08-08 14:05:01 +05:30
Nabin Hait
688a7a7329 Merge pull request #2039 from anandpdoshi/anand-august-8
[fix] Show Employee Name in Employee Birthday report
2014-08-08 13:21:36 +05:30
Anand Doshi
26201a5828 [fix] Show Employee Name in Employee Birthday report 2014-08-08 12:49:11 +05:30
Anand Doshi
6cd59537b6 Merge pull request #2037 from nabinhait/hotfix
Fixes in 'Received Items to be Billed' report
2014-08-08 12:45:56 +05:30
Anand Doshi
854f9895e4 Merge branch 'rmehta-microtemplate-fixes' into develop 2014-08-08 11:56:52 +05:30
Anand Doshi
4cc94df752 [tests] Fixed Test Records 2014-08-08 11:56:32 +05:30
Anand Doshi
03eadb74ab Fixes to microtemplate feature 2014-08-08 11:56:32 +05:30
Rushabh Mehta
7a4e739d6c templating for hr 2014-08-08 11:56:32 +05:30
Rushabh Mehta
a660464cec added for support 2014-08-08 11:56:32 +05:30
Rushabh Mehta
c9bd3f5d4a added templates for projects 2014-08-08 11:56:32 +05:30
Rushabh Mehta
873141c1a5 more updates to lists and started sane filters 2014-08-08 11:56:32 +05:30
Rushabh Mehta
8544447b19 added more listview templates 2014-08-08 11:56:32 +05:30
Rushabh Mehta
18eb4f5015 added listviews for sales, purchase 2014-08-08 11:56:31 +05:30
Rushabh Mehta
67af99794d start custom list rendering for Sales Order 2014-08-08 11:56:31 +05:30
Rushabh Mehta
b5e768906a built item grids for sales, purchase, stock 2014-08-08 11:56:31 +05:30
Anand Doshi
c13727adba Merge branch 'rmehta-primary-action-fixes' into develop 2014-08-08 11:55:37 +05:30
Anand Doshi
69ccf9695c [minor] primary action 2014-08-08 11:51:24 +05:30
Rushabh Mehta
995185d02d [ux] fixed primary action 2014-08-08 11:51:23 +05:30
Nabin Hait
f4de6e21fa Fixes in 'Received Items to be Billed' report 2014-08-08 11:23:59 +05:30
Nabin Hait
a6db05e18d Fixes in 'Received Items to be Billed' report 2014-08-08 11:02:06 +05:30
Nabin Hait
d91cefb23d Update fix_account_master_type.py 2014-08-07 19:22:02 +05:30
Anand Doshi
e7f7416190 Merge pull request #2035 from nabinhait/hotfix
Account master type patch and Stock RBNB Diff
2014-08-07 18:15:25 +05:30
Nabin Hait
67cd3fb89c Fixes in making credit note from Sales Return 2014-08-07 15:34:53 +05:30
Nabin Hait
849b7b172a minor fix 2014-08-07 15:13:52 +05:30
Nabin Hait
9a0c46fda7 Get Stock Rreceived But Not Billed Difference Amount 2014-08-07 15:10:05 +05:30
Nabin Hait
05b56d0d08 Fix account's master type 2014-08-07 15:03:41 +05:30
Anand Doshi
43ffa64849 Merge pull request #2030 from nabinhait/hotfix
Hotfix
2014-08-06 17:39:33 +05:30
Nabin Hait
7881df2138 minor fix 2014-08-06 17:29:07 +05:30
Nabin Hait
fd90571d49 fiscal year validation in financial statement 2014-08-06 17:25:23 +05:30
Nabin Hait
9f7e00bb3a Send salary slip mail after submit via Salary Manager 2014-08-06 17:25:23 +05:30
Nabin Hait
45b7d17ee8 Employee can be reselected but not changed in salary structure 2014-08-06 17:25:23 +05:30
Rushabh Mehta
859a995bd6 Merge pull request #2025 from anandpdoshi/anand-august-5
[test] Block Delivery Note if it is linked to a cancelled Sales Order
2014-08-05 14:44:38 +05:30
Anand Doshi
959bd6e9e7 [test] Block Delivery Note if it is linked to a cancelled Sales Order 2014-08-05 14:25:40 +05:30
Anand Doshi
9c47cae5c7 Merge pull request #2024 from anandpdoshi/anand-august-5
Print Fixes
2014-08-05 14:13:17 +05:30
Anand Doshi
f16fefafe3 [print] [fix] empty item grid issue 2014-08-05 13:57:29 +05:30
Anand Doshi
8d16e9fd6d [print] convert newlines to <br> based on fieldtype for Text/Small Text 2014-08-05 11:39:51 +05:30
Anand Doshi
2b8344e75c [print] [fix] when item grid is empty 2014-08-05 11:30:37 +05:30
Rushabh Mehta
a8755af0fa Merge pull request #2022 from nabinhait/hotfix
Fixes for customer / supplier renaming
2014-08-05 10:42:44 +05:30
Rushabh Mehta
ca70eaa388 Merge pull request #2019 from anandpdoshi/anand-august-1
Account Issues
2014-08-05 10:36:08 +05:30
Pratik Vyas
1271bc4457 [hotfix] [patch] remove missing patch 2014-08-05 06:54:11 +05:30
Nabin Hait
4d18b3f96d Fixes for standard print formats 2014-08-04 17:01:01 +05:30
Nabin Hait
1279f1d430 Fixes for customer / supplier renaming 2014-08-04 13:05:59 +05:30
Anand Doshi
e88b7fbcc4 Journal Voucher Detail: show Account Balance as Dr or Cr. Fixes #675 2014-08-01 16:56:32 +05:30
Anand Doshi
8c838061f9 [minor] Check account read permission for get_balance_on 2014-08-01 16:13:44 +05:30
Anand Doshi
6c608e04bc Fixes #699 - Cost Center mandatory 2014-08-01 16:04:35 +05:30
Anand Doshi
6e4efa7edd Merge pull request #2013 from anandpdoshi/anand-july-31
Fixes and Translations
2014-08-01 11:12:19 +05:30
Anand Doshi
a66ef778ec [translations] Added Turkish, Vietnamese. Updated rest of the translations. [frappe/erpnext#2012] 2014-08-01 00:06:42 +05:30
Anand Doshi
1b90207360 [minor] [fix] Serial No Servic Contract Expiry 2014-07-31 18:57:51 +05:30
Anand Doshi
3f28ac3205 Merge pull request #2010 from anandpdoshi/anand-july-31
[print] Labels and Total Taxes and Charges
2014-07-31 16:31:57 +05:30
Anand Doshi
29817d6d8b [print] Moved Total Taxes and Charges to the right column 2014-07-31 16:05:19 +05:30
Anand Doshi
92980e6882 Merge pull request #2009 from anandpdoshi/anand-july-31
Labels: Use Date instead of Posting Date
2014-07-31 15:07:11 +05:30
Anand Doshi
b4ad175b13 Merge pull request #2008 from pdvyas/print-format-patch-fix
[patch] remove reloading of removed print formats
2014-07-31 14:53:45 +05:30
Pratik Vyas
b91079676d [patch] remove reloading of removed print formats 2014-07-31 14:31:58 +05:30
Anand Doshi
fbe37c9158 Labels: Use Date instead of Posting Date 2014-07-31 14:31:25 +05:30
Pratik Vyas
1483e9d8d2 Merge pull request #2007 from nabinhait/hotfix
Activity: fix for timeline-wise display
2014-07-31 12:45:43 +05:30
nabinhait
8efd74b9b1 Activity: fix for timeline-wise display 2014-07-31 12:12:05 +05:30
Anand Doshi
c2371af779 Merge pull request #2001 from nabinhait/hotfix
Validation: Account must belong to the same company
2014-07-31 11:55:56 +05:30
nabinhait
8dbd295c9b bom operations on_delete_row function 2014-07-31 11:40:41 +05:30
nabinhait
d6ff58daa1 Minor fix in customer issue 2014-07-31 11:40:41 +05:30
nabinhait
4859b48c43 message fix 2014-07-31 11:40:41 +05:30
nabinhait
c34329284b Post gl entries only if there are atleast 2 distinct account head 2014-07-31 11:40:41 +05:30
nabinhait
0ad677045a Test record fixed for warehouse 2014-07-31 11:40:40 +05:30
nabinhait
c1f65dd863 Validation: Account must belong to the same company 2014-07-31 11:40:40 +05:30
Anand Doshi
b9fed3f046 Merge pull request #2004 from anandpdoshi/anand-july-30
[fixes] Leave Application and Toggle Rounded Totals
2014-07-30 17:40:01 +05:30
Anand Doshi
35cc320e21 [fixes] Leave Application and Toggle Rounded Totals 2014-07-30 17:00:26 +05:30
Pratik Vyas
5a5b405a18 Update .travis.yml 2014-07-30 16:49:05 +05:30
Pratik Vyas
cd4d6a228b Update .travis.yml 2014-07-30 16:42:39 +05:30
Anand Doshi
6c5e1c9701 Merge pull request #2003 from anandpdoshi/anand-july-30
Changed fieldtype of 'contact_email', 'contact_mobile' to Small Text
2014-07-30 14:10:16 +05:30
Anand Doshi
627f13ea26 Changed fieldtype of 'contact_email', 'contact_mobile' to Small Text 2014-07-30 13:09:01 +05:30
Anand Doshi
20fbfa2a44 [travis] 2014-07-30 11:50:05 +05:30
Anand Doshi
3f790eae55 [travis] 2014-07-29 23:42:30 +05:30
Anand Doshi
ddbf14adba Merge pull request #2002 from anandpdoshi/anand-july-29
[print] Hide Rate, Amount if Print Without Amount in Delivery Note
2014-07-29 23:38:24 +05:30
Anand Doshi
22608ad206 [travis] 2014-07-29 23:20:42 +05:30
Anand Doshi
60ee2ea8af [hotfix] Stock Entry search fields 2014-07-29 23:16:24 +05:30
Anand Doshi
bc708ee4c2 [print] Disable rounded total 2014-07-29 22:24:31 +05:30
Anand Doshi
0e93352c8d [print] Hide Rate, Amount if Print Without Amount in Delivery Note 2014-07-29 22:03:40 +05:30
Anand Doshi
a12312553b Merge pull request #1997 from nabinhait/hotfix
Fixes
2014-07-29 15:48:04 +05:30
nabinhait
78777e141a minor fix 2014-07-29 15:19:41 +05:30
Anand Doshi
9d9192d496 Merge pull request #2000 from anandpdoshi/anand-july-29
[print] Improvements to Item grid
2014-07-29 15:13:22 +05:30
Anand Doshi
ad1638e6b6 [print] Improvements to Item grid 2014-07-29 14:38:48 +05:30
nabinhait
0bab81aef9 minor fix in chart of accounts help message 2014-07-29 12:59:47 +05:30
nabinhait
92a1e06665 message fix 2014-07-29 12:46:56 +05:30
nabinhait
079611936f Delete Payment-to-invoice-matching-tool through patch 2014-07-29 12:12:09 +05:30
nabinhait
d4b92a1d20 Set ignore pricing rule while mapping SI to DN 2014-07-29 11:35:41 +05:30
nabinhait
7555d619f2 Message for frozen stock entries 2014-07-29 11:35:41 +05:30
Anand Doshi
bd748bd115 [hotfix] [patch] Delete old print formats 2014-07-29 08:51:41 +05:30
Anand Doshi
85eefadada [fix] [print] Print Hide Item Code 2014-07-28 21:17:20 +05:30
Anand Doshi
07d3261467 [hotfix] don't override default print format if specified in POS Sales Invoice 2014-07-28 19:55:13 +05:30
Anand Doshi
11586eda4c [minor] [fix] taxes print 2014-07-28 17:38:08 +05:30
Anand Doshi
423361946d Merge pull request #1996 from nabinhait/hotfix
Fixes
2014-07-28 16:56:11 +05:30
nabinhait
0a35277c96 Stock reconciliation only for valuation 2014-07-28 16:41:34 +05:30
nabinhait
16317748dd Issue fixes related to length of the report result 2014-07-28 16:41:34 +05:30
nabinhait
3d48a4ef65 Sales / purchase return: Get party details fix 2014-07-28 16:41:33 +05:30
nabinhait
b739264243 Don't run company trigger on amendment 2014-07-28 16:41:33 +05:30
nabinhait
957971eb1d Column added 'Reqd by Date' in po_items_to_be_billed report 2014-07-28 16:41:33 +05:30
Anand Doshi
e3c161f0ea Merge pull request #1995 from anandpdoshi/anand-july-28
[minor] apply pricing rule / price list only if item_code
2014-07-28 16:05:42 +05:30
Anand Doshi
39edcbc93b [minor] apply pricing rule / price list only if item_code 2014-07-28 16:00:19 +05:30
Anand Doshi
beb3e35153 Merge pull request #1989 from dalwadani/develop
Improve Arabic Translation
2014-07-28 15:46:22 +05:30
Anand Doshi
0416e59267 Merge pull request #1994 from anandpdoshi/anand-july-28
[minor] Show company name in General Ledger print
2014-07-28 15:44:07 +05:30
Anand Doshi
57f8dabf59 [minor] Show company name in General Ledger print 2014-07-28 15:28:44 +05:30
Anand Doshi
9ea4154b81 Merge pull request #1993 from anandpdoshi/anand-july-28
[minor] Fixed address listing
2014-07-28 14:21:29 +05:30
Anand Doshi
9c018fe984 [minor] Fixed address listing 2014-07-28 12:59:52 +05:30
Dhaifallah Alwadani
faeca7cf11 Improve Arabic Translation 2014-07-26 05:43:03 +03:00
Nabin Hait
f8b318aef1 Merge pull request #1987 from anandpdoshi/anand-july-25
[fix] Feed listing based on permissions
2014-07-25 15:08:30 +05:30
Anand Doshi
93e2defc96 [fix] Feed listing based on permissions 2014-07-25 14:57:37 +05:30
Anand Doshi
1c735365d0 Merge pull request #1986 from anandpdoshi/rmehta-print-formats
Print Formats (by Rushabh)
2014-07-25 13:58:18 +05:30
Anand Doshi
161f63d393 [travis] Install wkhtmltopdf 2014-07-25 13:36:47 +05:30
Anand Doshi
8f49cf7c03 [minor] fixed testcase 2014-07-25 13:02:29 +05:30
Anand Doshi
62b1cbf003 [impact] Limit available functions in jinja environment 2014-07-25 13:02:29 +05:30
Anand Doshi
a5437cdac1 Fixes for print 2014-07-25 13:02:28 +05:30
Anand Doshi
16deabef82 Format Qty 2014-07-25 13:02:28 +05:30
ankitjavalkarwork
82ec488b99 Payment Reconciliation Feature/Tool - Patch 2014-07-25 13:02:28 +05:30
Rushabh Mehta
781ddc3a25 added patch to remove old print formats 2014-07-25 13:02:28 +05:30
Rushabh Mehta
85ff3bcd04 updated pos invoice 2014-07-25 13:01:53 +05:30
Rushabh Mehta
5b51cc86a9 many fixes to print 2014-07-25 13:01:53 +05:30
Rushabh Mehta
d82352eacc item grid, added other printable fields in description 2014-07-25 13:01:53 +05:30
Rushabh Mehta
f84c240d1c cleanup for print format 2014-07-25 13:01:52 +05:30
Rushabh Mehta
28804bfb62 started sales order print format (new style) 2014-07-25 13:01:52 +05:30
Nabin Hait
5cf3a6bcd2 Merge pull request #1975 from anandpdoshi/anand-july-22
Trial Balance and Newsletter sending via Worker
2014-07-25 11:21:13 +05:30
Anand Doshi
329a8ef9a1 Merge pull request #1985 from ankitjavalkarwork/payrec
Remove Payment To Invoice Matching Tool
2014-07-24 18:57:46 +05:30
Anand Doshi
9e89dcf855 Merge pull request #1984 from nabinhait/hotfix
Fix for company in chart of accounts
2014-07-24 18:57:31 +05:30
ankitjavalkarwork
344dd3793a Merge branch 'develop' of https://github.com/frappe/erpnext into payrec 2014-07-24 15:15:12 +05:30
ankitjavalkarwork
d93f4c99e1 Remove Payment To Invoice Matching Tool 2014-07-24 15:14:36 +05:30
nabinhait
ffd57a0565 Fix for company in chart of accounts 2014-07-24 10:40:18 +05:30
Rushabh Mehta
92c043423e updated bench 2014-07-23 15:57:01 +05:30
Anand Doshi
d1a2ce2750 [minor] is_ajax check in newsletter 2014-07-23 12:51:17 +05:30
Rushabh Mehta
3c78ab5841 [email digest] [fix] [hot] only open to-do items 2014-07-23 10:19:31 +05:30
Anand Doshi
de85a3af15 Newsletter: Bulk Send via worker 2014-07-22 19:49:16 +05:30
Anand Doshi
cb86d597b7 Report: Trial Balance 2014-07-22 19:49:16 +05:30
Nabin Hait
9df4196597 Merge pull request #1970 from ankitjavalkarwork/payrec
Added Payment Reconciliation to list accounts.py
2014-07-22 18:24:58 +05:30
ankitjavalkarwork
87633d6be6 Payment Reconciliation Feature/Tool - Patch 2014-07-22 18:14:30 +05:30
Anand Doshi
33a94a74df Merge pull request #1968 from nabinhait/hotfix
Fixes
2014-07-22 17:39:07 +05:30
ankitjavalkarwork
b5ae643b6e Payment Reconciliation Feature/Tool - minor change 2014-07-22 15:26:04 +05:30
ankitjavalkarwork
b0cffac79d Payment Reconciliation Feature/Tool - add in module list 2014-07-22 15:02:59 +05:30
nabinhait
b5f9b5de45 PP Tool: data for required raw materials 2014-07-22 11:38:15 +05:30
nabinhait
c772b3d86a Purchase invoice: Copy project name from first row on addition of row 2014-07-22 11:38:14 +05:30
nabinhait
7d7123de37 Merge branch 'ankitjavalkarwork-wip_payrec' into develop 2014-07-21 19:23:20 +05:30
nabinhait
7f1e4a29c5 Merge branch 'develop' of https://github.com/frappe/erpnext into develop 2014-07-21 19:23:07 +05:30
nabinhait
97ab902895 payment reconciliation fixes 2014-07-21 19:22:02 +05:30
Anand Doshi
6e15f675a5 Merge pull request #1966 from anandpdoshi/anand-july-21
Stock Entry Warehouse prefill, Item autosuggest by description
2014-07-21 18:25:16 +05:30
Anand Doshi
67ecce695d [fix] Show against account in General Ledger Print Format 2014-07-21 18:13:05 +05:30
Anand Doshi
ac11d6ff97 Merge pull request #1964 from frappe/new-production-order-fix
[minor] fix server error for new production order if sales order is invalid
2014-07-21 18:05:06 +05:30
Anand Doshi
4c5d7617fb [minor] Update if missing, source and target warehouse in stock entry detail table, when they are specified in the form 2014-07-21 18:02:22 +05:30
Anand Doshi
7fcb3c9865 [minor] Item query - search by description 2014-07-21 17:51:32 +05:30
Pratik Vyas
994d9075b4 Change TRAVIS_BRANCH to develop 2014-07-21 17:36:50 +05:30
Pratik Vyas
649d18c4f7 [minor] fix server error for new production order if sales order is invalid 2014-07-21 17:17:59 +05:30
Nabin Hait
cbf0cb7de7 Merge pull request #1955 from anandpdoshi/financial-statements
Balance Sheet and Profit and Loss Statement
2014-07-21 16:44:46 +05:30
Anand Doshi
5f0459c321 Fixes to Financial Statements 2014-07-21 16:13:06 +05:30
nabinhait
2d355c7478 Merge branch 'wip_payrec' of github.com:ankitjavalkarwork/erpnext into ankitjavalkarwork-wip_payrec 2014-07-21 15:33:50 +05:30
ankitjavalkarwork
4dfe19e613 Merge branch 'develop' of https://github.com/frappe/erpnext into wip_payrec 2014-07-21 14:23:52 +05:30
Rushabh Mehta
1c6313679b Update material_request.js 2014-07-21 13:08:49 +05:30
Anand Doshi
f457bce0e7 Changed localize_date to formatdate 2014-07-21 12:03:04 +05:30
Anand Doshi
6cc5babd2e Use include directive to embed common print format 2014-07-21 11:43:19 +05:30
Anand Doshi
db4ba39824 Better handling of ignore zero values 2014-07-21 11:43:19 +05:30
Anand Doshi
825d014616 Commonfied code for Financial Statements and added Profit and Loss Statement 2014-07-21 11:43:18 +05:30
Anand Doshi
fa576a22e3 Balance Sheet 2014-07-21 11:43:18 +05:30
Anand Doshi
059f1e09a8 Balance Sheet - first cut 2014-07-21 11:43:18 +05:30
Anand Doshi
7a7675c7ef Merge pull request #1957 from nabinhait/hotfix
Hotfix
2014-07-19 18:17:52 +05:30
nabinhait
b1e7bf16ba Translate while creating India specific accounts 2014-07-19 17:56:43 +05:30
nabinhait
711e8bec3d Fixes overflow tolerance 2014-07-19 17:00:15 +05:30
nabinhait
b1c5738a67 Fixes overflow tolerance 2014-07-19 16:53:45 +05:30
ankitjavalkarwork
5283e5a7d8 Add Payment Reconciliation Feature/Tool - JS changes1 2014-07-18 15:54:29 +05:30
Anand Doshi
1a2516d4be Merge pull request #1953 from anandpdoshi/anand-july-18
Minor fix in reorder item
2014-07-18 10:32:14 +05:30
Anand Doshi
d141cf7293 Minor fix in reorder item 2014-07-18 10:31:34 +05:30
Anand Doshi
3c45c37428 Merge pull request #1952 from nabinhait/hotfix
Country mandatory in company master
2014-07-18 10:22:13 +05:30
nabinhait
d4e080be29 Country mandatory in company master 2014-07-17 19:32:12 +05:30
ankitjavalkarwork
84fd33ea7a Merge branch 'develop' of https://github.com/frappe/erpnext into wip_payrec 2014-07-17 19:11:07 +05:30
ankitjavalkarwork
87e30f68b9 Add Payment Reconciliation Feature/Tool - Complete 2014-07-17 19:10:45 +05:30
Anand Doshi
e8332be285 Merge pull request #1949 from anandpdoshi/anand-july-17
Fix in Stock Entry test case
2014-07-17 12:37:42 +05:30
Anand Doshi
e5df7a7f01 Merge pull request #1935 from nabinhait/hotfix
Default letter head in general ledger and bank reco statement print
2014-07-17 12:31:34 +05:30
Anand Doshi
fa0db761da Fix in Stock Entry test case 2014-07-17 12:30:55 +05:30
nabinhait
5f2f955224 From date and to date in general ledger print format 2014-07-17 12:29:56 +05:30
nabinhait
e26204e61d From date and to date in general ledger print format 2014-07-17 12:22:58 +05:30
nabinhait
fa1cd5faff Fixed root type of liability accounts 2014-07-17 11:52:50 +05:30
nabinhait
d16081c4d9 Batch no get query fix 2014-07-17 11:08:19 +05:30
nabinhait
143400d444 Batch no get query fix 2014-07-17 11:00:13 +05:30
nabinhait
96cb130263 Default letter head in general ledger and bank reco statement print 2014-07-17 10:56:07 +05:30
Nabin Hait
0a4c824a06 Merge pull request #1946 from anandpdoshi/anand-july-16
Fixes in load defaults of transaction.js
2014-07-16 20:04:37 +05:30
Anand Doshi
b8189d7d23 Auto Re-order Item for default warehouse only, if Warehouse wise re-order not specified 2014-07-16 19:24:53 +05:30
Anand Doshi
4b5e89a067 Fixes in Stock Entry test cases 2014-07-16 19:23:58 +05:30
Anand Doshi
f214bfcfc3 Fixes in load defaults of transaction.js 2014-07-16 17:53:02 +05:30
Rushabh Mehta
2e21e25613 Merge pull request #1945 from anandpdoshi/anand-july-16
Fixes in Stock Entry and test cases
2014-07-16 17:04:18 +05:30
Anand Doshi
d93fa2f78b Fixes in Stock Entry and test cases 2014-07-16 16:08:15 +05:30
Anand Doshi
75936cdde5 Merge pull request #1942 from anandpdoshi/anand-july-16
Fixes in Setup Wizard and Support Ticket
2014-07-16 13:17:50 +05:30
Anand Doshi
e73ed2afae Setup Wizard: fixed attachment issue #1940 2014-07-16 11:48:51 +05:30
Anand Doshi
c70d2d23a8 Support Ticket: set resolution_date as None if missing 2014-07-16 11:48:51 +05:30
ankitjavalkarwork
540a1eb6d9 Merge branch 'develop' of https://github.com/frappe/erpnext into wip_payrec 2014-07-15 18:02:08 +05:30
ankitjavalkarwork
d934cd105b Add Payment Reconciliation Feature/Tool - invoice entries table population 2014-07-15 18:01:36 +05:30
ankitjavalkarwork
ec05d7f8a1 Add Payment Reconciliation Feature/Tool - javascript validation 2014-07-14 18:28:10 +05:30
ankitjavalkarwork
345753ed19 Add Payment Reconciliation Feature/Tool - fetch unreconciled entries 2014-07-14 16:38:27 +05:30
Anand Doshi
c58e6c0dff Merge pull request #1932 from nabinhait/hotfix
Fixes
2014-07-14 14:28:05 +05:30
Anand Doshi
1829bd84d3 hotfix: website_image 2014-07-14 14:26:42 +05:30
nabinhait
7700c62fa8 Minor fix 2014-07-14 14:21:21 +05:30
Anand Doshi
8efbf5ef33 Merge pull request #1933 from anandpdoshi/anand-july-14
Fixed Address and Contact report name
2014-07-14 14:16:26 +05:30
Anand Doshi
e8c5cb8c9a Fixed Address and Contact report name 2014-07-14 13:10:24 +05:30
nabinhait
d5fd535909 Minor fix, if no default company 2014-07-14 12:39:50 +05:30
nabinhait
b0a8d000b1 Utility: reset serial no status and warehouse 2014-07-14 11:56:03 +05:30
nabinhait
5c38488590 Utility: reset serial no status and warehouse 2014-07-14 11:44:42 +05:30
nabinhait
614fb750b7 set qty as per stock uom in entire purchase cycle 2014-07-14 10:48:12 +05:30
nabinhait
e6cee7b41f Expense account can be liability account for stock reconciliation 2014-07-14 10:48:11 +05:30
ankitjavalkarwork
0e57b971ad Add Payment Reconciliation Feature/Tool - minor changes 2014-07-11 16:08:55 +05:30
ankitjavalkarwork
90b79fcd1f Add Payment Reconciliation Feature/Tool - minor changes 2014-07-11 15:23:26 +05:30
webnotes
9d31705f75 Merge https://github.com/frappe/erpnext into wip_payrec 2014-07-11 11:21:51 +05:30
webnotes
059922cef1 Add Payment Reconciliation Feature/Tool 2014-07-11 11:20:44 +05:30
Rushabh Mehta
8e4a9ba831 Merge pull request #1927 from anandpdoshi/anand-july-10
Bank Reconciliation Statement Print Format
2014-07-10 21:59:05 +05:30
Anand Doshi
9b7b9b2e93 Bank Reconciliation Statement Print Format 2014-07-10 18:45:03 +05:30
Rushabh Mehta
e0d7a6869c Merge pull request #1926 from anandpdoshi/anand-july-10
Production Planning Tool - Fixed bom get query
2014-07-10 17:37:34 +05:30
Anand Doshi
28c4bee0b1 Production Planning Tool - Fixed bom get query 2014-07-10 16:43:31 +05:30
Rushabh Mehta
052b5a68ed Merge pull request #1925 from nabinhait/hotfix
Overflow validation fixed
2014-07-10 15:46:08 +05:30
nabinhait
ee8b6f28b8 minor fix 2014-07-10 15:27:27 +05:30
nabinhait
d5fb5d91e9 overflow validation fixed 2014-07-10 15:27:27 +05:30
Anand Doshi
16658c14fe Merge pull request #1924 from anandpdoshi/anand-july-10
Print Hide other charges calculation
2014-07-10 13:09:39 +05:30
Anand Doshi
a96cf5b96b Print Hide other charges calculation 2014-07-10 12:16:39 +05:30
Anand Doshi
287fe0559e Merge pull request #1920 from anandpdoshi/anand-july-9
Fixes in queries
2014-07-09 13:39:51 +05:30
Anand Doshi
9006bba11e Merge pull request #1919 from nabinhait/hotfix
Github issue fixes
2014-07-09 13:39:38 +05:30
Anand Doshi
48d3b54e02 Fixes in queries 2014-07-09 13:15:03 +05:30
Anand Doshi
0c3bb75fd9 Added error_report_email in hooks 2014-07-09 12:59:56 +05:30
nabinhait
7e848b1924 Title mandatory in Note. Fixes #1913 2014-07-09 12:54:56 +05:30
nabinhait
8e4fcca216 Get query fixes in address in contact listing. Fixes #1911 2014-07-09 12:50:50 +05:30
nabinhait
fcfa42d992 Minor fixes #1917 2014-07-09 11:31:11 +05:30
nabinhait
5e0de79c0d Account validated in general ledger report. Fixed #1912 2014-07-09 11:10:40 +05:30
Anand Doshi
8adb211216 Fixed patch: erpnext/patches/v4_1/fix_delivery_and_billing_status.py 2014-07-09 11:09:53 +05:30
nabinhait
5eea6f1b6d Account validated in general ledger report. Fixed #1912 2014-07-09 11:08:59 +05:30
Rushabh Mehta
3f606b6c64 Update project.py 2014-07-09 09:27:02 +05:30
Rushabh Mehta
f31221d0d3 Changed raise Exception to frappe.throw 2014-07-09 09:13:00 +05:30
nabinhait
5220b462fd Merge branch 'anandpdoshi-reapply-price-list' into develop 2014-07-08 16:03:53 +05:30
nabinhait
89b5e3e2ea Set discount zero while fetching price list rate 2014-07-08 16:00:25 +05:30
nabinhait
ff2cc1626e Merge branch 'reapply-price-list' of github.com:anandpdoshi/erpnext into anandpdoshi-reapply-price-list 2014-07-08 15:30:25 +05:30
Anand Doshi
cf6d31cefc Sales Order: Fixed test case 2014-07-07 18:46:02 +05:30
Anand Doshi
46d64849b4 Merge pull request #1902 from nabinhait/hotfix
Run trigger of company field on onload function, even if company exists
2014-07-07 18:08:51 +05:30
nabinhait
6c40079139 Update delivery and billing status in SO 2014-07-07 18:02:53 +05:30
nabinhait
2c0c66e756 Update delivery and billing status in SO 2014-07-07 17:56:25 +05:30
nabinhait
bc408d8d0b Run trigger of company field on onload function, even if company exists 2014-07-07 17:56:24 +05:30
Anand Doshi
06cf2c7b51 Merge pull request #1903 from anandpdoshi/anand-july-7
Translations: Indonesian, Japanese and Russian
2014-07-07 17:44:04 +05:30
Anand Doshi
37f15ea664 Translations: Indonesian, Japanese and Russian 2014-07-07 17:26:51 +05:30
Anand Doshi
0da9060a80 Merge pull request #1900 from anandpdoshi/anand-july-7
Fix in Purchase Order and Re-order Item
2014-07-07 16:12:50 +05:30
Anand Doshi
e729516af7 Minor fix 2014-07-07 15:54:11 +05:30
Anand Doshi
4f0a42846c Catch FiscalYearError in Re-order Item 2014-07-07 15:21:18 +05:30
Anand Doshi
484b092720 BugFix in Purchase Order: Validate minimum order qty using Qty in Stock UOM 2014-07-07 14:03:26 +05:30
Rushabh Mehta
ada6e5a5c4 Merge pull request #1899 from anandpdoshi/anand-july-7
BugFix: Maintenance Visit against Customer Issue
2014-07-07 13:57:59 +05:30
Anand Doshi
2cf256c6d0 Merge pull request #1898 from rmehta/pdf-etc
sales order status bugfix, add leading / in website_image and removed se...
2014-07-07 13:09:22 +05:30
Rushabh Mehta
58692fe4d1 sales order status bugfix, add leading / in website_image and removed send_print_in_body_and_attachment 2014-07-07 12:29:43 +05:30
Anand Doshi
3a389788bf BugFix: Maintenance Visit against Customer Issue
+ Map Item details from Customer Issue into Maintenance Visit Purpose Table
+ Map Prev DocType and Prev DocName
+ Changed prevdoc_doctype and prevdoc_docname into Dynamic Link
2014-07-07 12:24:19 +05:30
Rushabh Mehta
47f26b0df4 Merge pull request #1896 from anandpdoshi/anand-july-7
BugFix: selling_controller.py
2014-07-07 11:50:54 +05:30
Anand Doshi
80a988c04f BugFix: selling_controller.py 2014-07-07 11:35:54 +05:30
Anand Doshi
51f722d20f Trigger Apply Price List on change of Currency Conversion Rate or Price List Currency Conversion Rate 2014-07-04 15:44:49 +05:30
Anand Doshi
dffec8fb85 Reapply Price List on Change 2014-07-04 15:44:48 +05:30
Anand Doshi
f9cae65df5 Merge pull request #1884 from nabinhait/hotfix
Hotfix
2014-07-04 15:31:15 +05:30
Rushabh Mehta
bcad536a90 Merge pull request #1883 from anandpdoshi/anand-july-3
Issues originating due to sql_mode='STRICT_ALL_TABLES'
2014-07-03 15:18:06 +05:30
Anand Doshi
d2f44006bd Issues originating due to sql_mode='STRICT_ALL_TABLES'
Fixes frappe/frappe-bench#18
2014-07-03 14:32:21 +05:30
nabinhait
23cce731ab Fixes in action, not defined if called from outside document class 2014-07-03 12:25:06 +05:30
Prakash Hodage
c01f4582de Description removed for default cost center 2014-07-03 10:50:35 +05:30
Rushabh Mehta
0e085e15bb Merge pull request #1881 from anandpdoshi/anand-wip
Fixes to end_of_life conditions
2014-07-02 18:16:54 +05:30
Anand Doshi
e673a664ac Fixes to end_of_life conditions 2014-07-02 18:15:01 +05:30
Anand Doshi
57f76e936a Merge pull request #1880 from rmehta/fixes-july-2
formatting fix in support ticket autoreply
2014-07-02 18:13:55 +05:30
Rushabh Mehta
501b2cc617 duplicate name fix for customer 2014-07-02 18:01:30 +05:30
Anand Doshi
843cdbe690 Merge pull request #1879 from anandpdoshi/anand-wip
Fixed Employee Birthday Report
2014-07-02 17:44:05 +05:30
Anand Doshi
df7f1c17ac Fixed Employee Birthday Report 2014-07-02 17:35:00 +05:30
Anand Doshi
1601742092 Merge pull request #1878 from anandpdoshi/anand-wip
Automatic Outstanding Writeoff
2014-07-02 17:17:29 +05:30
Rushabh Mehta
6084a3e63a formatting fix in support ticket autoreply 2014-07-02 17:13:08 +05:30
Anand Doshi
adfada707d Automatic Outstanding Writeoff 2014-07-02 17:10:46 +05:30
Anand Doshi
e8533d15b3 Hotfix: Get Balance query 2014-07-01 19:46:22 +05:30
Anand Doshi
67721444b9 Merge pull request #1875 from rmehta/develop
status_updater.py
2014-07-01 18:50:25 +05:30
Rushabh Mehta
5f42276dbd added patch for fixing sales order delivered qty 2014-07-01 18:42:59 +05:30
Rushabh Mehta
c53efc0d6c fix status_updater - update delivery status in Sales Order from Sales Invoice 2014-07-01 18:42:30 +05:30
Rushabh Mehta
ddd2648c1e fix travis, build website before tests 2014-07-01 18:42:30 +05:30
Rushabh Mehta
079e640b6b Merge pull request #1876 from anandpdoshi/anand-wip
Fix JV Remarks
2014-07-01 18:35:13 +05:30
Anand Doshi
bc71f737b8 Fix JV Remarks 2014-07-01 18:12:26 +05:30
Anand Doshi
c33ae0c7df Minor fix: commonified message. 2014-07-01 16:27:24 +05:30
Rushabh Mehta
e9f43251ab Update journal_voucher.py 2014-07-01 15:19:15 +05:30
Rushabh Mehta
bc920dd2a5 Merge pull request #1868 from anandpdoshi/anand-wip
Fix comments
2014-07-01 12:34:17 +05:30
Anand Doshi
9398932c47 Merge pull request #1869 from nabinhait/v4-hotfix
Minor fix in authorization rule
2014-06-30 18:47:42 +05:30
Anand Doshi
da8adea0a9 Fixed customer test 2014-06-30 17:28:52 +05:30
Nabin Hait
669e789bc3 Minor fix in authorization rule 2014-06-30 17:15:52 +05:30
Anand Doshi
02cb347ac7 Fix comments after naming series records rename 2014-06-30 17:05:51 +05:30
Anand Doshi
0e72a87613 Improved test_rename: check if comments are also moved on rename 2014-06-30 17:05:51 +05:30
Anand Doshi
8ac4643fd7 Merge pull request #1867 from nabinhait/v4-hotfix
Multiple fixes
2014-06-30 13:20:49 +05:30
Rushabh Mehta
578a6db659 Merge pull request #1866 from anandpdoshi/anand-wip
Fixed get_sender for Sales and Jobs
2014-06-30 12:33:10 +05:30
Anand Doshi
4aa2380de2 Fixed get_sender for Sales and Jobs 2014-06-30 12:19:22 +05:30
Anand Doshi
2adf73cca1 Fixed requirements.txt 2014-06-30 12:18:08 +05:30
Anand Doshi
27b0d16422 Bumped to v4.1.0 2014-06-30 12:09:41 +05:30
Anand Doshi
c459fe21f8 Merge pull request #1865 from frappe/wip-4.1
Wip 4.1
2014-06-30 12:00:55 +05:30
Nabin Hait
6c7cd70202 Pricing rule condition if item group missing 2014-06-30 11:50:17 +05:30
Nabin Hait
606c601fc0 Make debit/credit note from sales/purchase return 2014-06-30 11:50:17 +05:30
Nabin Hait
7c9652997b Item website specification from item group 2014-06-30 11:50:17 +05:30
Nabin Hait
4e4a83bcef Fixes in maintenance schedule 2014-06-30 11:50:17 +05:30
Anand Doshi
7cac2884ae Merge pull request #1862 from anandpdoshi/anand-wip-4.1
Fixes in Website Route system and other misc fixes
2014-06-30 11:30:30 +05:30
Anand Doshi
11ada53ed5 Fixes related to Website Route system and other misc fixes 2014-06-28 12:13:11 +05:30
Anand Doshi
5ba7ab0fed Outgoing Mail Footer patch 2014-06-27 21:00:51 +05:30
Anand Doshi
ebcb654649 Minor: General Ledger Report - print format improvements 2014-06-27 20:53:13 +05:30
Nabin Hait
a46af033b9 Merge pull request #1860 from nabinhait/v4-hotfix
item  query fixed in stock entry
2014-06-27 13:04:58 +05:30
Nabin Hait
a0a18d963d item query fixed in stock entry 2014-06-27 13:04:22 +05:30
Anand Doshi
4105f324f7 Merge pull request #1858 from nabinhait/v4-hotfix
with_doc issue fixes
2014-06-26 16:16:35 +05:30
Nabin Hait
b7e91ee95e with_doc issue fixes 2014-06-26 15:54:45 +05:30
Anand Doshi
f1af06c00d Merge remote-tracking branch 'frappe/develop' into wip-4.1 2014-06-26 15:05:42 +05:30
Anand Doshi
779111d781 Merge pull request #1856 from nabinhait/v4-hotfix
V4 hotfix
2014-06-26 15:03:59 +05:30
Nabin Hait
3e6586f58d minor fix 2014-06-26 14:56:47 +05:30
Nabin Hait
cf2632fe59 Fetch warehouse from pos settings 2014-06-26 13:05:10 +05:30
Anand Doshi
322f3caec6 Merge pull request #1854 from anandpdoshi/anand-wip-4.1
Changed System Signature to Footer
2014-06-26 12:59:08 +05:30
Anand Doshi
56198f40ac Changed System Signature to Footer 2014-06-26 12:47:45 +05:30
Nabin Hait
4a1c897b2d Select field options in serial no 2014-06-26 12:35:14 +05:30
Rushabh Mehta
2b62accee0 Merge pull request #1853 from anandpdoshi/anand-wip
Material Request: fixed series issue in insert_purchase_request
2014-06-26 12:31:17 +05:30
Rushabh Mehta
16e543e734 Merge pull request #1852 from anandpdoshi/anand-wip-4.1
Fixes frappe/erpnext#1849
2014-06-26 12:30:29 +05:30
Anand Doshi
1030af7b48 Material Request: fixed series issue in insert_purchase_request 2014-06-26 12:07:55 +05:30
Anand Doshi
7f41ff26fa Fixes frappe/erpnext#1849 2014-06-26 12:02:55 +05:30
Rushabh Mehta
994f0c3d49 Merge pull request #1851 from nabinhait/v4-hotfix
Show Frozen field in account to all if Frozen Account Modifier is not sp...
2014-06-26 10:59:27 +05:30
Nabin Hait
500e1bc9b5 Show Frozen field in account to all if Frozen Account Modifier is not specified in Accounts Settings 2014-06-26 10:53:32 +05:30
Nabin Hait
23152f68f2 Merge pull request #1845 from nabinhait/v4-hotfix
V4 hotfix
2014-06-25 19:16:05 +05:30
Nabin Hait
00778c9a1e Validate expense account for perpetual inventory 2014-06-25 19:12:24 +05:30
Nabin Hait
33a21ffbdc Minor fixes in recurring invoice 2014-06-25 18:35:36 +05:30
Anand Doshi
5263b1a9c1 Merge remote-tracking branch 'frappe/develop' into wip-4.1 2014-06-25 17:06:51 +05:30
Anand Doshi
3fc1088d73 Merge branch 'rmehta-wip-4.1' into wip-4.1 2014-06-25 17:04:37 +05:30
Anand Doshi
d12be12f72 Fixed gantt chart query for Task 2014-06-25 16:57:51 +05:30
Anand Doshi
fda8858fc3 Warehouse query filtered by company 2014-06-25 16:57:50 +05:30
Nabin Hait
29de86253f minor fixes 2014-06-25 16:57:50 +05:30
Nabin Hait
c7c89a5927 Cost center-wise net profit in financial analytics report 2014-06-25 16:57:50 +05:30
Nabin Hait
48f1142523 Fixed address deletion issue 2014-06-25 16:57:50 +05:30
Nabin Hait
9c2459658a Fixes for recurring invoice 2014-06-25 16:57:50 +05:30
Anand Doshi
ca37ff8b08 Fix in pricing rule patch 2014-06-25 16:57:50 +05:30
Nabin Hait
e6440a75b5 Allowed renaming for project 2014-06-25 16:57:50 +05:30
Nabin Hait
2b400dc2ad stock entry incoming rate based on precision 2014-06-25 16:57:49 +05:30
Nabin Hait
860b2e2bbb Fixes in pricing rule 2014-06-25 16:57:49 +05:30
Nabin Hait
f27fa5cbf3 Fixes in pricing rule 2014-06-25 16:57:49 +05:30
Nabin Hait
98bec6f96b Fixes in pricing rule 2014-06-25 16:57:49 +05:30
Nabin Hait
379d86f9a3 sms sending issue fixed 2014-06-25 16:57:49 +05:30
Anand Doshi
8b2dfcff29 Naming Series Property Setter Patch 2014-06-25 16:57:49 +05:30
Nabin Hait
b569930b2a Made warehouse and selling pricing list non-mandatory in pos setting 2014-06-25 16:57:48 +05:30
Nabin Hait
061c9744af Set status button in serial no 2014-06-25 16:57:48 +05:30
Nabin Hait
43616619ec Set status button in serial no 2014-06-25 16:57:48 +05:30
Nabin Hait
838aeb149f minor fix in sales invoice 2014-06-25 16:57:48 +05:30
Rushabh Mehta
37f809a1f4 fix end of life query for item 2014-06-25 16:57:48 +05:30
Rushabh Mehta
32303daf63 fixes to bom.js 2014-06-25 16:57:48 +05:30
Anand Doshi
d709f4dfdd Naming Series property type as Text 2014-06-25 16:57:47 +05:30
Nabin Hait
80142af9b8 Minor fixes 2014-06-25 16:57:47 +05:30
Nabin Hait
1b1b3a8fd6 validate pricing rule discount with item max discount 2014-06-25 16:57:47 +05:30
Nabin Hait
afffd656f6 Reload pricing rule in patch 2014-06-25 16:57:47 +05:30
Nabin Hait
4f6e31eb08 validate pricing rule discount with item max discount 2014-06-25 16:57:47 +05:30
Nabin Hait
9daca108b3 Pricing Rule fixes and improvements. Fixes #1795 2014-06-25 16:57:47 +05:30
Anand Doshi
de5e397fd4 Inventory Accounting: Cost Center only required for Expense Account 2014-06-25 16:57:46 +05:30
Anand Doshi
f5ec92c79a Validate Select field values 2014-06-25 16:57:46 +05:30
Anand Doshi
f654fea736 Fixed feed type options 2014-06-25 16:57:08 +05:30
Anand Doshi
daa56ca50f Fixed number format in currency 2014-06-25 16:57:08 +05:30
Anand Doshi
c20de7b264 Minor fix in Journal Voucher 2014-06-25 16:57:07 +05:30
Nabin Hait
c5e813f9f4 Overwrite from POS Settings if value exists 2014-06-25 16:57:07 +05:30
Nabin Hait
3b7dd0396f Get party details fixes 2014-06-25 16:57:07 +05:30
Nabin Hait
c226292d8e Stocvk entry incoming rate for sales return 2014-06-25 16:57:07 +05:30
Nabin Hait
216e5bb208 Incoming rate for sales return 2014-06-25 16:57:07 +05:30
Nabin Hait
afdc0a5f59 Valuation rate and amount for fg item 2014-06-25 16:57:07 +05:30
Anand Doshi
5a9e00ce71 Fixed Employee Leave Balance Report 2014-06-25 16:57:07 +05:30
Anand Doshi
ca3d60c160 Fixed Sales Order -> Delivery Note mapping of address fields 2014-06-25 16:57:06 +05:30
Anand Doshi
222b7b660e Stock Entry: get fg item incoming rate if bom is mentioned 2014-06-25 16:57:06 +05:30
Anand Doshi
a469954ef3 Revert "Stock Entry: get fg item incoming rate if bom is mentioned"
This reverts commit 297939325a.
2014-06-25 16:57:06 +05:30
Anand Doshi
be1d11f98d Travis: Install frappe of targetted branch
For example:
If pull request is for wip-4.1 branch of erpnext, install frappe with branch as wip-4.1
2014-06-25 16:57:05 +05:30
Anand Doshi
457515fc08 Stock Entry: get fg item incoming rate if bom is mentioned 2014-06-25 16:57:05 +05:30
Anand Doshi
e3ac8dd5a8 Don't set default for warehouse when creating serial no 2014-06-25 16:57:05 +05:30
Anand Doshi
14920b447c Fixed Currency Exchange error 2014-06-25 16:57:04 +05:30
Nabin Hait
0c6177dd9a Patch: update users report view settings for rename fields 2014-06-25 16:57:04 +05:30
Nabin Hait
cea571fc31 Fixes in fetching valuation rate in stock entry 2014-06-25 16:57:03 +05:30
Nabin Hait
d5a4c871f2 Field renamed in sms center 2014-06-25 16:57:02 +05:30
Nabin Hait
7c6c2e0ccf Do not make packing list after submission 2014-06-25 16:57:02 +05:30
Rushabh Mehta
476d1fb334 Update sms_center.json
changed total words to total characters
2014-06-25 16:57:01 +05:30
Rushabh Mehta
7ca3be57df Merge pull request #1844 from anandpdoshi/anand-wip
Serial No Validation in Stock Entry, Warehouse query fix
2014-06-25 16:05:17 +05:30
Anand Doshi
d1419edfd0 Merge remote-tracking branch 'frappe/develop' into wip-4.1 2014-06-25 15:25:48 +05:30
Anand Doshi
a740f750c7 Stock Entry: Serial No Mandatory when purpose in Material Transfer, Sales Return, Purchase Return 2014-06-25 13:31:02 +05:30
Anand Doshi
610a405c85 Fix in warehouse query 2014-06-25 13:30:26 +05:30
Rushabh Mehta
aa1edfb6ae Merge pull request #1842 from anandpdoshi/anand-wip
Warehouse query filtered by Company, Fixed Gantt Chart query for task
2014-06-25 10:18:35 +05:30
Anand Doshi
4864c9e96a Fixed gantt chart query for Task 2014-06-24 18:53:17 +05:30
Anand Doshi
faefeaa644 Warehouse query filtered by company 2014-06-24 18:53:04 +05:30
Anand Doshi
e0a7ff77df Merge pull request #1838 from nabinhait/v4-hotfix
Multiple fixes
2014-06-24 17:37:39 +05:30
Nabin Hait
60c48fee16 minor fixes 2014-06-24 17:34:52 +05:30
Anand Doshi
1ef3dbabfc Merge pull request #1837 from anandpdoshi/anand-wip
Fix in pricing rule patch
2014-06-24 17:11:29 +05:30
Nabin Hait
0b15755441 Cost center-wise net profit in financial analytics report 2014-06-24 17:02:45 +05:30
Nabin Hait
e9b95bbfe8 Fixed address deletion issue 2014-06-24 16:35:00 +05:30
Nabin Hait
d0bf91d639 Fixes for recurring invoice 2014-06-24 16:19:16 +05:30
Anand Doshi
a1be6021c4 Fix in pricing rule patch 2014-06-24 15:26:40 +05:30
Nabin Hait
21efc93e54 Allowed renaming for project 2014-06-24 12:44:49 +05:30
Nabin Hait
fdf38dab6f stock entry incoming rate based on precision 2014-06-24 12:42:36 +05:30
Rushabh Mehta
5dfacf2615 Merge pull request #1834 from nabinhait/v4-hotfix
Multiple fixes
2014-06-24 12:09:12 +05:30
Nabin Hait
613d784cfb Fixes in pricing rule 2014-06-24 12:07:56 +05:30
Nabin Hait
efd426650d Fixes in pricing rule 2014-06-24 11:11:08 +05:30
Nabin Hait
f62b75c731 Fixes in pricing rule 2014-06-24 11:00:13 +05:30
Nabin Hait
65efd0a9a1 sms sending issue fixed 2014-06-23 18:21:37 +05:30
Anand Doshi
f08881a2b7 Merge pull request #1831 from anandpdoshi/anand-wip
Naming Series Property Setter Patch
2014-06-23 18:15:01 +05:30
Anand Doshi
83da92fdcc Naming Series Property Setter Patch 2014-06-23 18:04:07 +05:30
Nabin Hait
16fa6472b3 Made warehouse and selling pricing list non-mandatory in pos setting 2014-06-23 16:42:36 +05:30
Anand Doshi
6781f62c70 Merge pull request #1828 from rmehta/develop
item query fix
2014-06-23 15:53:38 +05:30
Anand Doshi
a445c39901 Merge pull request #1829 from nabinhait/v4-hotfix
V4 hotfix
2014-06-23 15:52:54 +05:30
Nabin Hait
da490e3f53 Set status button in serial no 2014-06-23 15:51:03 +05:30
Nabin Hait
ccd2e2496c Merge pull request #1827 from anandpdoshi/anand-wip
Naming Series property type as Text
2014-06-23 15:44:29 +05:30
Nabin Hait
36da171a3d Set status button in serial no 2014-06-23 15:36:31 +05:30
Nabin Hait
e84f8b23aa minor fix in sales invoice 2014-06-23 15:36:30 +05:30
Rushabh Mehta
864d1ea87f fix end of life query for item 2014-06-23 12:20:39 +05:30
Rushabh Mehta
58ff651c6d fixes to bom.js 2014-06-23 12:20:39 +05:30
Anand Doshi
c027563b13 Merge pull request #1826 from nabinhait/v4-hotfix
V4 hotfix
2014-06-20 20:44:17 +05:30
Anand Doshi
f0a1735ac8 Naming Series property type as Text 2014-06-20 20:19:51 +05:30
Nabin Hait
56f6d01757 Minor fixes 2014-06-20 19:37:53 +05:30
Nabin Hait
3c946b2a72 validate pricing rule discount with item max discount 2014-06-20 19:07:44 +05:30
Nabin Hait
1d37698d4c Reload pricing rule in patch 2014-06-20 16:30:44 +05:30
Nabin Hait
be50c289f8 validate pricing rule discount with item max discount 2014-06-20 16:19:55 +05:30
Nabin Hait
444f956e7b Pricing Rule fixes and improvements. Fixes #1795 2014-06-20 16:00:45 +05:30
Rushabh Mehta
b35d84156f Merge pull request #1822 from anandpdoshi/anand-wip
Inventory Accounting: Cost Center only required for Expense Account
2014-06-20 11:24:45 +05:30
Anand Doshi
496123a646 Inventory Accounting: Cost Center only required for Expense Account 2014-06-19 19:25:19 +05:30
Anand Doshi
861747ec26 Merge remote-tracking branch 'frappe/develop' into wip-4.1 2014-06-19 17:44:33 +05:30
Anand Doshi
7bbaf0298e Merge pull request #1821 from nabinhait/v4-hotfix
Overwrite from POS Settings if value exists
2014-06-19 16:48:53 +05:30
Rushabh Mehta
a2f5a7f3cd Merge pull request #1820 from anandpdoshi/anand-wip
Validate Select Fields
2014-06-19 16:32:50 +05:30
Anand Doshi
a5cfc59d81 Validate Select field values 2014-06-19 16:05:08 +05:30
Anand Doshi
da342c7855 Fixed feed type options 2014-06-18 21:09:19 +05:30
Anand Doshi
aecddefbc8 Fixed number format in currency 2014-06-18 20:55:39 +05:30
Anand Doshi
fd05f458e1 Minor fix in Journal Voucher 2014-06-18 20:55:18 +05:30
Nabin Hait
faf176d78c Overwrite from POS Settings if value exists 2014-06-18 19:52:24 +05:30
Rushabh Mehta
151125e537 fixed for travis 2014-06-18 17:33:01 +05:30
Anand Doshi
64a0eb42ed Merge pull request #1816 from nabinhait/v4-hotfix
Stock Entry incoming rate
2014-06-18 17:32:04 +05:30
Nabin Hait
ba6cc2864a Merge pull request #1817 from anandpdoshi/anand-wip
Fixed Employee Leave Balance Report
2014-06-18 17:18:26 +05:30
Nabin Hait
4d7c4fc0f4 Get party details fixes 2014-06-18 16:40:59 +05:30
Nabin Hait
e7c2f74a07 Stocvk entry incoming rate for sales return 2014-06-18 16:40:59 +05:30
Nabin Hait
a7da6e1480 Incoming rate for sales return 2014-06-18 16:40:59 +05:30
Nabin Hait
ae0d753cad Valuation rate and amount for fg item 2014-06-18 16:40:59 +05:30
Anand Doshi
31c977b906 Fixed Employee Leave Balance Report 2014-06-18 16:26:45 +05:30
Nabin Hait
87179346d4 Merge pull request #1814 from anandpdoshi/anand-wip
Don't set warehouse when creating serial no, fixed currency exchange error message
2014-06-18 16:00:53 +05:30
Anand Doshi
d768afb80b Fixed Sales Order -> Delivery Note mapping of address fields 2014-06-18 15:23:25 +05:30
Anand Doshi
de12a0941f Stock Entry: get fg item incoming rate if bom is mentioned 2014-06-18 14:05:29 +05:30
Anand Doshi
987a28fc6a Revert "Stock Entry: get fg item incoming rate if bom is mentioned"
This reverts commit 297939325a.
2014-06-18 14:05:08 +05:30
Anand Doshi
c5dbf0f8ad Travis: Install frappe of targetted branch
For example:
If pull request is for wip-4.1 branch of erpnext, install frappe with branch as wip-4.1
2014-06-18 13:35:37 +05:30
Anand Doshi
297939325a Stock Entry: get fg item incoming rate if bom is mentioned 2014-06-18 13:10:10 +05:30
Anand Doshi
2f800521cb Don't set default for warehouse when creating serial no 2014-06-18 12:48:46 +05:30
Anand Doshi
72a178a37e Fixed Currency Exchange error 2014-06-18 12:14:17 +05:30
Anand Doshi
8c7b4549ed Merge pull request #1812 from nabinhait/v4-hotfix
Multiple fixes
2014-06-18 10:59:05 +05:30
Nabin Hait
91090042d1 Patch: update users report view settings for rename fields 2014-06-18 10:29:53 +05:30
Nabin Hait
0693937c1e Fixes in fetching valuation rate in stock entry 2014-06-18 10:20:01 +05:30
Nabin Hait
ac1a4ed576 Field renamed in sms center 2014-06-18 10:20:01 +05:30
Nabin Hait
b73d3f925d Do not make packing list after submission 2014-06-18 10:18:50 +05:30
Rushabh Mehta
69641ddc36 Update sms_center.json
changed total words to total characters
2014-06-18 09:04:09 +05:30
Rushabh Mehta
36881807ed Merge branch 'wip-4.2' into wip-4.1 2014-06-17 17:36:22 +05:30
Rushabh Mehta
1a18b427a8 make font size smaller for erpnext powered 2014-06-17 16:54:55 +05:30
Rushabh Mehta
69ce97b80a added print format for general ledger 2014-06-17 16:54:55 +05:30
Rushabh Mehta
9f887b436c fixes new routing, for frappe/frappe#600 2014-06-17 16:53:44 +05:30
Anand Doshi
5780163fb7 Merge remote-tracking branch 'frappe/develop' into wip-4.1 2014-06-17 14:58:18 +05:30
Anand Doshi
1c5fb9495e Merge pull request #1806 from nabinhait/v4-hotfix
Fixes
2014-06-17 14:54:44 +05:30
Rushabh Mehta
5df521bad5 updated generators for wip-4.2 2014-06-17 14:21:26 +05:30
Nabin Hait
be75d0265b Merge pull request #1805 from anandpdoshi/anand-wip
Sales Invoice List: show percent paid as 100% if grand total is 0
2014-06-17 14:12:26 +05:30
Anand Doshi
b20de6a3ec Sales Invoice List: show percent paid as 100% if grand total is 0 2014-06-17 13:58:06 +05:30
Nabin Hait
4ee8704b99 Fixes in financial analytics 2014-06-17 13:52:03 +05:30
Nabin Hait
d2e8a0a96a Delivery note update after submission 2014-06-17 12:55:52 +05:30
Anand Doshi
ff367c7b31 Merge pull request #1798 from nabinhait/v4-hotfix
Account common get_query
2014-06-16 16:04:32 +05:30
Nabin Hait
98d9d797fd Tax category validation ignored in material request 2014-06-16 15:54:05 +05:30
Nabin Hait
a6fc3f6337 Ignore pricing rule for material request 2014-06-16 15:34:52 +05:30
Nabin Hait
539f352318 Delivery note to packing slip mapping 2014-06-16 15:03:36 +05:30
Nabin Hait
e1b2b3e995 Account common get_query 2014-06-16 15:03:36 +05:30
Rushabh Mehta
3b7bcf0f4f make font size smaller for erpnext powered 2014-06-16 14:21:37 +05:30
Rushabh Mehta
03ae32d937 added print format for general ledger 2014-06-16 14:21:37 +05:30
Anand Doshi
ccf370f813 Fixed item query 2014-06-16 13:50:11 +05:30
Anand Doshi
0521814dea Fixed item query 2014-06-16 13:25:20 +05:30
Anand Doshi
e35841a2ea Reload Shopping Cart Settings in create price list patch 2014-06-16 12:59:54 +05:30
Anand Doshi
3474c273a5 Ignore mandatory in employee patch 2014-06-16 12:14:21 +05:30
Anand Doshi
3dc722b096 Create price list only if setup complete 2014-06-13 15:30:38 +05:30
Rushabh Mehta
5002a6467d Merge pull request #1793 from anandpdoshi/anand-wip
Create price list if missing
2014-06-13 13:20:46 +05:30
Anand Doshi
c1bfb63d96 Create price list if missing 2014-06-13 12:41:08 +05:30
Anand Doshi
27e295a4cb Merge pull request #1789 from nabinhait/v4-hotfix
V4 hotfix
2014-06-12 15:39:58 +05:30
Rushabh Mehta
99703a95c2 Merge pull request #1790 from anandpdoshi/wip-anand
Fixes split email settings, removed clear custom buttons, pos view switch
2014-06-12 15:25:03 +05:30
Nabin Hait
f2202fc014 minor fix 2014-06-12 15:20:47 +05:30
Anand Doshi
3761ff3522 Fix in patch: split email settings 2014-06-12 15:00:52 +05:30
Anand Doshi
205438669a Removed clear_custom_buttons, pos view switch fix 2014-06-12 15:00:51 +05:30
Nabin Hait
e7f2d3179d update other_charges in custom print formats 2014-06-12 14:58:09 +05:30
Anand Doshi
277f4a1bfe Removed clear_custom_buttons, pos view switch fix 2014-06-12 12:59:23 +05:30
Nabin Hait
46dc3b1442 validations added in stock entry 2014-06-12 12:48:28 +05:30
Nabin Hait
2128c98c35 available qty validation. Fixes #1045 2014-06-12 12:42:22 +05:30
Nabin Hait
e98b326ba3 Stock Entry: Always set valuation rate automatically if source warehouse provided or sales return. Fixes #932 2014-06-12 12:25:23 +05:30
Rushabh Mehta
7bcd31bddb Merge pull request #1785 from rmehta/develop
minor fix for outgoing communication email
2014-06-12 10:32:21 +05:30
Rushabh Mehta
6def968c3c minor fix for outgoing communication email 2014-06-12 10:31:43 +05:30
Nabin Hait
f2ee3cec19 Merge pull request #1784 from nabinhait/v4-hotfix
Minor fixes in salary manager. Fixes #1754
2014-06-12 10:19:27 +05:30
Nabin Hait
589a298096 Minor fixes in salary manager. Fixes #1754 2014-06-11 13:00:31 +05:30
Rushabh Mehta
94c17bdf85 Update CONTRIBUTING.md 2014-06-11 10:45:57 +05:30
Anand Doshi
fdfea0c17b Fixed Recurring Sales Invoice 2014-06-10 17:54:04 +05:30
Anand Doshi
862fe60368 Minor fix in newsletter 2014-06-10 17:15:50 +05:30
Nabin Hait
6a3e97a9f8 Merge pull request #1781 from anandpdoshi/hotfix
Reload sales taxes and charges in patch
2014-06-10 16:37:59 +05:30
Anand Doshi
7656377f3f Show website route for generator via set_intro, fix in Support Email Settings 2014-06-10 15:48:37 +05:30
Anand Doshi
82029be6f9 Reload sales taxes and charges in patch 2014-06-10 14:52:49 +05:30
Anand Doshi
339f75eb53 Merge pull request #1780 from nabinhait/v4-hotfix
minor fix in global defaults
2014-06-10 14:36:29 +05:30
Nabin Hait
7425634692 minor fix in global defaults 2014-06-10 14:12:28 +05:30
Anand Doshi
38d5407ea1 Merge pull request #1779 from nabinhait/v4-hotfix
Fixes
2014-06-10 11:40:26 +05:30
Nabin Hait
6febfca5a6 changed insert after for india related custom fields 2014-06-10 11:21:38 +05:30
Nabin Hait
7cba72a0b7 Pricing Rule: price / discount percentage can not be negative 2014-06-10 11:09:21 +05:30
Anand Doshi
fb6c003c97 Merge pull request #1778 from nabinhait/v4-hotfix
update custom print formats for renamed fields
2014-06-10 10:43:51 +05:30
Nabin Hait
91016ba989 update custom print formats for renamed fields 2014-06-10 10:41:37 +05:30
Nabin Hait
2aaf1de7fe Merge pull request #1777 from anandpdoshi/hotfix
Default Letterhead, Item wise Price List Rate
2014-06-09 18:52:28 +05:30
Anand Doshi
b527e54809 Fixed report: Item wise Price List Rate 2014-06-09 18:08:46 +05:30
Anand Doshi
c01db5fe9c Save default letterhead 2014-06-09 18:01:14 +05:30
Anand Doshi
534ebde638 Merge pull request #1775 from nabinhait/v4-hotfix
create custom fields for india specific fields
2014-06-09 16:23:21 +05:30
Nabin Hait
d532d2f64f create custom fields for india specific fields 2014-06-09 16:00:49 +05:30
Nabin Hait
7bcd69e157 Merge pull request #1774 from anandpdoshi/hotfix
Also save Global Defaults in System Settings patch
2014-06-09 15:52:03 +05:30
Anand Doshi
af63d053b1 Also save Global Defaults in System Settings patch 2014-06-09 15:51:12 +05:30
Nabin Hait
d9ff118b40 Merge pull request #1771 from anandpdoshi/hotfix
Fix in HR patch
2014-06-09 15:33:14 +05:30
Anand Doshi
be3f914acd Fixed add address template 2014-06-09 15:18:45 +05:30
Anand Doshi
edb9efd9a6 Fixed manifest and website 2014-06-09 15:11:18 +05:30
Anand Doshi
cdfa9a371d Export perm for GL Entry and Stock Ledger Entry 2014-06-09 15:11:17 +05:30
Anand Doshi
390efdc884 Fix in HR patch 2014-06-09 15:04:00 +05:30
Anand Doshi
ac276a27b7 Merge pull request #1772 from nabinhait/v4-hotfix
Update tax amount after discount in existing documents
2014-06-09 14:04:15 +05:30
Nabin Hait
b63e99eb43 Update tax amount after discount in existing documents 2014-06-09 12:49:09 +05:30
Anand Doshi
00976cfe47 Merge pull request #1768 from anandpdoshi/hotfix
Fixed HR patch
2014-06-06 22:11:39 +05:30
Anand Doshi
6f561aa846 Fixed HR patch 2014-06-06 22:10:18 +05:30
Anand Doshi
276386c94a Merge pull request #1765 from anandpdoshi/hotfix
Fixed Purchase Receipt qty trigger
2014-06-06 20:39:52 +05:30
Anand Doshi
0aa125304d Fixed Reset Permissions patch 2014-06-06 20:39:21 +05:30
Anand Doshi
482d29dc53 Fixed Purchase Receipt qty trigger 2014-06-06 20:34:08 +05:30
Anand Doshi
cd0aed993a Fixed Address Template Patch 2014-06-06 17:37:31 +05:30
Anand Doshi
f56656f6b4 Merge pull request #1763 from anandpdoshi/hotfix
Fixed address template and changed case
2014-06-06 17:20:57 +05:30
Anand Doshi
fc601659f5 Fixed Address Template 2014-06-06 17:07:50 +05:30
Anand Doshi
4a069a1e7f Changed case in modules.txt 2014-06-06 16:28:03 +05:30
Anand Doshi
04badf7e6e Hotfix: module name case for HR 2014-06-06 15:29:55 +05:30
Rushabh Mehta
0b31a163a3 Merge pull request #1761 from anandpdoshi/hotfix
Improved FIscal Year Error Messages, Reset Permissions for some DocTypes
2014-06-06 15:20:07 +05:30
Anand Doshi
171c00cfd6 Reload permissions for master and setting documents 2014-06-06 15:13:20 +05:30
Anand Doshi
b5cefa92fa Improved Fiscal Year validation messages 2014-06-06 15:10:00 +05:30
Anand Doshi
8cead48342 Merge pull request #1756 from rmehta/develop
removed sms control and related cleanup, fixes frappe/erpnext#462
2014-06-06 14:52:22 +05:30
Rushabh Mehta
1989e4fca0 Merge pull request #1755 from nabinhait/v4-hotfix
Fixes in trends report
2014-06-06 12:49:34 +05:30
Rushabh Mehta
880b3ef6c0 added qty updating option multi-item selector 2014-06-06 11:45:30 +05:30
Anand Doshi
2ec93590e4 Minor fix in address template 2014-06-06 11:45:30 +05:30
Anand Doshi
5fe69fb556 Fixes 2014-06-06 11:45:29 +05:30
Anand Doshi
290ed09dc6 Update new_address_template.py 2014-06-06 11:45:29 +05:30
Anand Doshi
65018daebc Minor fix in address template 2014-06-05 18:33:26 +05:30
Rushabh Mehta
0739937fa2 bug: added empty class for sms settings 2014-06-05 18:15:00 +05:30
Anand Doshi
ede8ea52b0 Fixes 2014-06-05 18:06:20 +05:30
Rushabh Mehta
ba83e9cfbe removed sms control and related cleanup, fixes frappe/erpnext#462 2014-06-05 17:56:42 +05:30
Nabin Hait
977331806b Set missing values only in unsubmitted documents 2014-06-05 17:55:00 +05:30
Nabin Hait
86207afe15 Set missing values only in unsubmitted documents 2014-06-05 17:55:00 +05:30
Nabin Hait
704a453b7a Set missing values only in unsubmitted documents 2014-06-05 17:55:00 +05:30
Nabin Hait
b7438894f6 Fixes in trends report 2014-06-05 17:55:00 +05:30
Anand Doshi
4022586015 Update new_address_template.py 2014-06-05 17:34:59 +05:30
Anand Doshi
26fcef69c7 Merge pull request #1753 from rmehta/develop
Address Template
2014-06-05 16:28:10 +05:30
Rushabh Mehta
5036706f81 removed address_title from address and removed test 2014-06-05 16:16:13 +05:30
Rushabh Mehta
c02fbd22fa removed address_title from address and removed test 2014-06-05 16:16:13 +05:30
Rushabh Mehta
33020a63b8 patch for address template fixes #1749 2014-06-05 16:16:13 +05:30
Rushabh Mehta
eaa2e55d20 patch for address template fixes #1749 2014-06-05 16:16:13 +05:30
Rushabh Mehta
c22e11d483 added address template: 2014-06-05 16:01:55 +05:30
Rushabh Mehta
41471c3b44 fixed description in salary manager 2014-06-05 16:01:55 +05:30
Anand Doshi
17e7538937 Merge pull request #1746 from nabinhait/v4-hotfix
Multiple issues
2014-06-05 15:27:57 +05:30
Nabin Hait
c8be8ba42c function renamed 2014-06-05 15:18:10 +05:30
Nabin Hait
4d4df03f88 Added total debit / credit row in trial balance. Fixes #1313 2014-06-04 19:00:57 +05:30
Nabin Hait
deb6e06336 minor fix 2014-06-04 19:00:56 +05:30
Nabin Hait
c3d1d6a946 cleanup raw materials supplied table for sub-contraction. Fixes #1743 2014-06-04 19:00:56 +05:30
Nabin Hait
1055139c83 get accounts for opening entry 2014-06-04 19:00:56 +05:30
Nabin Hait
19d1e499c3 Removed Purchase in transit report #1435 2014-06-04 19:00:56 +05:30
Nabin Hait
b161eea793 Account balance must be debit / credit, validate if balance already in credit / debit. Fixes #1442 2014-06-04 18:57:53 +05:30
Anand Doshi
8fbe4b9c3b Merge pull request #1747 from anandpdoshi/apply_user_permissions
Apply user permissions
2014-06-04 18:38:25 +05:30
Anand Doshi
85479bcbc0 Fixes for apply user permissions and momentjs 2014-06-04 18:15:43 +05:30
Anand Doshi
ec8240e890 Apply User Permissions optional in Script and Query Reports 2014-06-04 17:48:58 +05:30
Anand Doshi
221dec8cac transaction.js: calculate only if one entry in table 2014-06-04 17:48:57 +05:30
Anand Doshi
9a0f6f5bb4 Enable Scheduler in System Settings when Setup Wizard is completed 2014-06-04 17:48:57 +05:30
Anand Doshi
38dedf402b Fixes in patches for migration 2014-06-04 17:48:56 +05:30
Anand Doshi
c280d0655c Set Employee Name if missing 2014-06-04 17:48:56 +05:30
Anand Doshi
cdc1b640d9 Fixes in user permissions patches 2014-06-04 17:48:56 +05:30
Anand Doshi
37993dd713 Romanian and Korean Translations 2014-06-04 17:48:55 +05:30
Anand Doshi
cd25301607 Translations 2014-06-04 17:48:55 +05:30
Anand Doshi
4985691617 Role and User Permissions 2014-06-04 17:48:54 +05:30
Anand Doshi
69eec9e344 Role and User Permissions 2014-06-04 17:48:54 +05:30
Anand Doshi
a8ce570635 Permission relogication continued 2014-06-04 17:48:53 +05:30
Anand Doshi
fab0904af7 Started permission relogication 2014-06-04 17:48:52 +05:30
Anand Doshi
ffc28faa51 Merge pull request #1744 from rmehta/develop
added multiple item select and allow non purchase items in Material Requ...
2014-06-04 17:47:58 +05:30
Rushabh Mehta
b6843f2087 added multiple item select and allow non purchase items in Material Request of type transfer 2014-06-04 13:10:41 +05:30
Anand Doshi
3f6606acdb Merge pull request #1702 from pdvyas/put-version-in-file
keep version in separate file
2014-06-04 12:28:37 +05:30
Anand Doshi
7a3885863c Merge pull request #1740 from nabinhait/v4-hotfix
fixes
2014-06-04 11:56:42 +05:30
Nabin Hait
67d8b91690 Fixes in bank reconciliation statement 2014-06-04 11:18:25 +05:30
Nabin Hait
ce6977ffe6 Minor fixes in fetching item details 2014-06-03 23:02:02 +05:30
Nabin Hait
bc7efa6da6 Parent account mandatory for all non-root accounts 2014-06-03 23:02:02 +05:30
Anand Doshi
9198444a3b Merge pull request #1737 from nabinhait/v4-hotfix
Grid report translations and closing balance in trial balance
2014-06-03 14:40:26 +05:30
Nabin Hait
b15764ef2c Translation issue fixed in analytics/grid report 2014-06-03 13:02:39 +05:30
Nabin Hait
abb62c76d8 Removed allocated to field from serach fields in support ticket 2014-06-03 10:50:55 +05:30
Nabin Hait
51b7f322cc Closing balance fixes in trial balance. Fixes #1730 2014-06-02 18:47:46 +05:30
Anand Doshi
be99b1240c Merge pull request #1722 from nabinhait/v4-hotfix
multiple fixes
2014-06-02 11:09:32 +05:30
Anand Doshi
315e3b563b Merge pull request #1725 from rmehta/develop
Fix for awesome bar
2014-06-02 11:07:26 +05:30
Rushabh Mehta
430d132ee0 awesomebar: add tree links 2014-05-31 10:36:42 +05:30
Rushabh Mehta
cc37cc83cd removed section_style 2014-05-31 10:36:41 +05:30
Nabin Hait
0984f227a8 minor fixes related to path 2014-05-30 19:10:12 +05:30
Nabin Hait
548cf96c44 Minor fixes in sales return 2014-05-30 19:09:59 +05:30
Nabin Hait
0be378af6a Purchase ordered qty can not be less than minimum order qty. fixes #1529 2014-05-30 15:53:20 +05:30
Nabin Hait
fb988ba834 Salary Slip: pull details from salary struture. fixes #1719 2014-05-30 15:53:20 +05:30
Nabin Hait
e6ddd28067 Don't execute reorder_item, if initial setup not completed. fixes #1668 2014-05-30 15:53:20 +05:30
Nabin Hait
0acd3159db Merge pull request #1718 from nabinhait/v4-hotfix
Remove blank lines from uploaded file of attendance
2014-05-30 14:33:59 +05:30
Nabin Hait
1897e75894 Remove blank lines from uploaded file of attendance #1714 2014-05-30 14:31:10 +05:30
Anand Doshi
852e7cdb41 Merge pull request #1691 from nabinhait/v4-hotfix
build_filter_conditions and pricing rules
2014-05-30 11:51:36 +05:30
Nabin Hait
c1367d9d10 minor fixes 2014-05-30 11:43:00 +05:30
Nabin Hait
cb9bdf43f6 over billing validation fixed 2014-05-30 11:22:16 +05:30
Nabin Hait
6b1a8e0a40 minor fixes 2014-05-30 11:22:16 +05:30
Nabin Hait
7f32cbeb06 Total valuation for manufactured or repacked item(s) can not be less than total valuation of raw materials #1688 2014-05-30 11:22:15 +05:30
Nabin Hait
c7253b3a37 Get valuation rate for fg item base don issued item cost + operation cost. #1688 2014-05-30 11:22:15 +05:30
Nabin Hait
7f03e24c55 Valuation rate of raw materials in BOM. #1688 2014-05-30 11:22:15 +05:30
Nabin Hait
66cecf4824 uom trigger issue in stock entry fixes #1712 2014-05-30 11:22:15 +05:30
Nabin Hait
f3552ca737 packing slip fixes #1711 2014-05-30 11:22:15 +05:30
Nabin Hait
3dc6a80198 deleted delivery note packing list wise print format 2014-05-30 11:22:14 +05:30
Nabin Hait
e71159d6ea Standard Rate field removed from item. Fixes #1688 2014-05-30 11:22:14 +05:30
Nabin Hait
732a7e81a0 Incoming rate in stock ledger and valuation rate in stock balance report. Fixes #1706 2014-05-30 11:22:14 +05:30
Nabin Hait
c3cbe2a30c minor fixes in sales invoice validation 2014-05-30 11:22:13 +05:30
Nabin Hait
9bc9b8795b Fixes in stock reconciliation 2014-05-30 11:22:13 +05:30
Nabin Hait
d0605443fb removed print statement 2014-05-30 11:22:13 +05:30
Nabin Hait
47a8670d37 pricing rule testcase fixes 2014-05-30 11:22:12 +05:30
Nabin Hait
e7546e2305 SMS Settings added in setup and selling module page. Fixes #1693 2014-05-30 11:22:12 +05:30
Nabin Hait
ccb9826afd pricing list tets case fixes 2014-05-30 11:22:12 +05:30
Nabin Hait
8de61559b0 Minor fixes in sales / purchase analytics. Fixes #1701 2014-05-30 11:22:11 +05:30
Nabin Hait
ea4aa04cc4 Search query for account cleanup 2014-05-30 11:22:11 +05:30
Nabin Hait
a3dd72a759 Pricing Rule 2014-05-30 11:22:10 +05:30
Nabin Hait
62ec60188b use build_filter_conditions from db_query. Fixes #1679 2014-05-30 11:22:10 +05:30
Anand Doshi
10cb4799bc Merge pull request #1700 from rmehta/develop
Various UI Bug Fixes
2014-05-30 11:12:21 +05:30
Pratik Vyas
8e0438bad4 keep version in separate file 2014-05-28 16:58:55 +05:30
Pratik Vyas
76e48b5c3f hotfix: update_account_root_type.py patch 2014-05-28 15:22:34 +05:30
Rushabh Mehta
1bf9df7c85 removed about 2014-05-28 13:15:32 +05:30
Anand Doshi
32063bb472 Removed designation 'Director' owing to problems with Greek translation 2014-05-27 22:40:53 +05:30
Rushabh Mehta
f944e819e9 fixes #1581 and added icons to grid reports 2014-05-27 15:22:04 +05:30
Nabin Hait
9c1ae09994 Merge pull request #1689 from rmehta/develop
fix to pos invoice
2014-05-26 16:22:03 +05:30
Rushabh Mehta
d82e85d099 fix to pos invoice 2014-05-26 16:01:01 +05:30
Nabin Hait
c1d0851a56 Merge pull request #1687 from nabinhait/v4-hotfix
Update status based on communication. Fixes #1682
2014-05-26 15:07:31 +05:30
Nabin Hait
08dd6af446 Update status based on communication. Fixes #1682 2014-05-26 15:06:42 +05:30
Nabin Hait
ff8f32ca80 Merge pull request #1686 from rmehta/develop
Fixes
2014-05-26 13:36:28 +05:30
Rushabh Mehta
a7c46e4d83 removed debug in query (packing_slip.py) 2014-05-26 13:35:47 +05:30
Rushabh Mehta
b15d760406 fix to packing slip (validation) 2014-05-26 13:05:19 +05:30
Rushabh Mehta
9f399f139b Merge branch 'develop' of github.com:frappe/erpnext into develop 2014-05-26 11:40:46 +05:30
Rushabh Mehta
3b0f026522 fix to sales parter 2014-05-24 12:04:13 +05:30
Anand Doshi
8db94e7407 Merge pull request #1680 from anandpdoshi/hotfix
Updated Translations
2014-05-23 10:43:16 +05:30
Anand Doshi
8d321446ad Updated translations 2014-05-23 10:29:37 +05:30
Anand Doshi
c783c2636f Updated translations 2014-05-23 09:22:12 +05:30
Anand Doshi
5468740042 Fixed setup wizard errors for chinese simplified 2014-05-23 09:21:55 +05:30
Anand Doshi
69e4b16817 Setup Wizard: clear cache on language change 2014-05-22 22:52:36 +05:30
Pratik Vyas
e35a1025c9 hotfix: communication email bug 2014-05-22 18:37:55 +05:30
Rushabh Mehta
0f5601dad4 Merge pull request #1677 from rmehta/develop
Added title_field and added ignore_permission while creating Event from Lead
2014-05-22 11:23:03 +05:30
Pratik Vyas
a5f35e2b3c Merge pull request #1678 from anandpdoshi/hotfix
Fixed global_defaults_to_system_settings
2014-05-22 11:15:21 +05:30
Anand Doshi
c57d7dea8b Fixed global_defaults_to_system_settings 2014-05-22 11:05:46 +05:30
Rushabh Mehta
a39cae9c2e added title field to support ticket, lead and employee 2014-05-21 17:34:22 +05:30
Anand Doshi
53142f125b Merge pull request #1675 from nabinhait/v4-hotfix
Create serial no based on series only if item is serialized
2014-05-21 16:08:14 +05:30
Nabin Hait
edf87a258f Create serial no based on series only if item is serialized 2014-05-21 15:38:56 +05:30
Anand Doshi
18144da755 Merge pull request #1674 from anandpdoshi/hotfix
Hook: setup_wizard_success
2014-05-21 15:25:11 +05:30
Anand Doshi
d6007e7d9c Hook: setup_wizard_success 2014-05-21 15:22:15 +05:30
Rushabh Mehta
92ce693e6f added ignore_permission in Lead for creating Event 2014-05-21 14:59:56 +05:30
Anand Doshi
d2802cab6c Merge pull request #1672 from nabinhait/v4-hotfix
Account root type and email digest for income / expense
2014-05-21 12:50:08 +05:30
Nabin Hait
177fb132b9 description added in setup wizard 2014-05-21 12:39:37 +05:30
Nabin Hait
d811303d7b minor fix 2014-05-21 12:36:43 +05:30
Nabin Hait
27b12ef1b6 update account root type patch 2014-05-21 11:53:59 +05:30
Nabin Hait
4efc5d74d4 Setup Wizard: company abbr length validation on onchange trigger 2014-05-21 11:53:59 +05:30
Nabin Hait
b5c552faf3 minor fix 2014-05-21 11:53:59 +05:30
Nabin Hait
dec02340e8 reload account doc in root type patch 2014-05-21 11:53:59 +05:30
Nabin Hait
3f80ef0648 reload account doc in root type patch 2014-05-21 11:53:59 +05:30
Nabin Hait
44ae408b36 Income/expense info in email digest 2014-05-21 11:53:58 +05:30
Nabin Hait
0e6554edc1 Root Type field added in account and patch for existing accoutns 2014-05-21 11:53:58 +05:30
Pratik Vyas
c8c5d37bcf Release 4.0.2 2014-05-20 16:42:10 +05:30
Pratik Vyas
5873e50c50 Release 4.0.2 2014-05-20 16:42:01 +05:30
Pratik Vyas
4f1371945d hotfix: frappe version in requirements.txt 2014-05-20 16:39:29 +05:30
Pratik Vyas
444d496c8b Release v4.0.1 2014-05-20 16:32:21 +05:30
Pratik Vyas
98c09e2a91 Release v4.0.1 2014-05-20 16:17:22 +05:30
Nabin Hait
f5ac91da06 Merge pull request #1671 from nabinhait/v4-hotfix
V4 hotfix
2014-05-20 15:25:20 +05:30
Nabin Hait
f7361fc982 Merge branch 'develop' of github.com:frappe/erpnext into v4-hotfix 2014-05-20 15:08:13 +05:30
Nabin Hait
c49b7f8c63 minor fix 2014-05-20 15:07:18 +05:30
Anand Doshi
1a7c3897b1 Merge pull request #1667 from nabinhait/v4-hotfix
Server side onload functionality in multiple docs && support ticket status
2014-05-20 10:46:37 +05:30
Nabin Hait
956d7868b5 removed print statement 2014-05-20 10:36:14 +05:30
Nabin Hait
85786f3071 Support ticket / lead status based on communication. Fixes #1645 2014-05-19 19:31:40 +05:30
Nabin Hait
2e0620e370 Server side onload functionality in multiple docs 2014-05-19 18:15:58 +05:30
Pratik Vyas
f87c72646c Merge pull request #1660 from anandpdoshi/hotfix
Fixed multilingual UOM issue
2014-05-17 00:12:14 +05:30
Anand Doshi
6664af9557 Fixed multilingual UOM issue 2014-05-17 00:07:45 +05:30
Nabin Hait
097227d5ea Merge pull request #1659 from nabinhait/v4-hotfix
translation and fraction issue fixes
2014-05-16 20:11:26 +05:30
Nabin Hait
e60853930b traslation issue fixed in setup wizard and desktop 2014-05-16 19:56:43 +05:30
Nabin Hait
091b48168e Journal voucher debit != credit #fraction issue 2014-05-16 19:56:43 +05:30
Nabin Hait
ad68d64d93 Leave approver select options in leave application and employee 2014-05-16 19:56:43 +05:30
Pratik Vyas
fa7444ec94 fix shipping rule test cases (copy name with copy_doc) 2014-05-16 15:19:51 +05:30
Pratik Vyas
3d8f8f68d8 Merge pull request #1652 from anandpdoshi/hotfix
Do not create Feed when frappe.flags.in_patch
2014-05-16 12:38:24 +05:30
Nabin Hait
a220e5d850 Update global_defaults_to_system_settings.py 2014-05-15 18:36:38 +05:30
Nabin Hait
ac3ba70ed9 Update global_defaults_to_system_settings.py 2014-05-15 18:25:57 +05:30
Nabin Hait
52b5c134fc Update global_defaults_to_system_settings.py 2014-05-15 18:25:10 +05:30
Nabin Hait
5c50e213ac Update global_defaults_to_system_settings.py 2014-05-15 18:18:32 +05:30
Pratik Vyas
740dd447b4 Merge pull request #1654 from nabinhait/v4-hotfix
fixes and patches
2014-05-15 18:11:39 +05:30
Nabin Hait
9419575126 Merged language patch with global_defaults_to_system_settings patch 2014-05-15 17:17:58 +05:30
Nabin Hait
d0a915c47a Global Defaults to system settings. Fixes #1653 2014-05-15 16:42:23 +05:30
Nabin Hait
b5a8cab8df Valuation Rate column in Stock Ledger report. Fixed #1633 2014-05-15 11:50:46 +05:30
Nabin Hait
bc7659ab90 Employee leave balance report fixes #1647 2014-05-15 11:37:12 +05:30
Anand Doshi
38d5424b21 Do not create Feed when frappe.flags.in_patch 2014-05-14 19:33:21 +05:30
Anand Doshi
3c4dba3e51 Merge pull request #1650 from nabinhait/v4-hotfix
Clear default for price_list_currency
2014-05-14 19:15:49 +05:30
Nabin Hait
ea7e3d6405 Clear default for price_list_currency 2014-05-14 18:52:06 +05:30
Anand Doshi
f70c7320d5 Merge pull request #1649 from anandpdoshi/hotfix
Pass frm to open_mapped_doc
2014-05-14 18:00:30 +05:30
Anand Doshi
54b7962eb9 Pass frm to open_mapped_doc 2014-05-14 17:38:45 +05:30
Nabin Hait
7b1698dbae Merge pull request #1646 from anandpdoshi/hotfix
Setup Wizard width, Stock Reconcilation
2014-05-14 16:57:30 +05:30
Anand Doshi
39cc1df560 Fixes #1635, Stock Reconcilation 2014-05-14 15:10:00 +05:30
Anand Doshi
5ce287d611 Setup Wizard width fix for chrome 2014-05-14 13:31:11 +05:30
Anand Doshi
51ba6f816b Fixed Setup Wizard 2014-05-13 21:02:47 +05:30
Nabin Hait
a8e7191b14 Merge pull request #1640 from anandpdoshi/print_format_lowercase
Changed Print Format files to lowercase
2014-05-13 18:21:22 +05:30
Anand Doshi
4c83e407a9 Changed Print Format files to lowercase 2014-05-13 17:58:30 +05:30
Pratik Vyas
b1f212d653 Merge pull request #1638 from anandpdoshi/hotfix
Improved Item maker in Setup Wizard. Fixes #1501 and #1601
2014-05-13 17:38:30 +05:30
Anand Doshi
0e2cf69345 Merge pull request #1636 from nabinhait/v4-hotfix
reports, print formats modified and minor fix
2014-05-13 17:31:14 +05:30
Anand Doshi
8fe0208fb6 Improved Item maker in Setup Wizard. Fixes #1501 and #1601 2014-05-13 16:52:26 +05:30
Nabin Hait
03f3a8a2ef Get taxes and charges records from matser. Fixes #1634 2014-05-13 16:38:31 +05:30
Nabin Hait
aade34b0c9 Reports and print formats modified for renamed fields 2014-05-13 16:12:37 +05:30
Nabin Hait
10f97d2e9e Merge pull request #1631 from nabinhait/v4-hotfix
daily time log summary report fixes
2014-05-13 11:41:12 +05:30
Nabin Hait
54f0d24d80 Merge branch 'develop' of github.com:frappe/erpnext into v4-hotfix 2014-05-13 11:33:09 +05:30
Nabin Hait
b76061530e Daily time log fixes #1614 2014-05-13 11:32:39 +05:30
Anand Doshi
d711209dde Fixed patches.txt 2014-05-12 19:42:38 +05:30
Nabin Hait
3b5f107a11 Merge pull request #1630 from nabinhait/v4-hotfix
fixes
2014-05-12 17:50:03 +05:30
Nabin Hait
b3bead2f06 Merge branch 'develop' of github.com:frappe/erpnext into v4-hotfix 2014-05-12 17:46:02 +05:30
Nabin Hait
827480fd2b import, export and report permission in account and pricing rule 2014-05-12 17:45:37 +05:30
Nabin Hait
0c54e2d0d0 4_0 patch dir renamed to v4_0 2014-05-12 17:44:55 +05:30
Rushabh Mehta
2fdb51f85e fixes frappe/erpnext#1627 2014-05-12 17:32:36 +05:30
Rushabh Mehta
37f54f9a35 added description to letter head in setup wizard 2014-05-12 16:45:49 +05:30
Pratik Vyas
b2ce9c5487 Merge pull request #1625 from anandpdoshi/hotfix
Added hook: setup_wizard_exception
2014-05-12 12:53:38 +05:30
Anand Doshi
02edae8fac Added hook: setup_wizard_exception 2014-05-12 12:37:32 +05:30
Nabin Hait
fb7fb73ba3 Merge pull request #1621 from nabinhait/v4-hotfix
BOM validation message fixed
2014-05-11 18:30:41 +05:30
Nabin Hait
bbfe2517ea BOM validation message fixed 2014-05-11 18:27:07 +05:30
Nabin Hait
0baf1479a3 Merge pull request #1618 from nabinhait/v4-hotfix
Test case fixes for serial no
2014-05-11 13:11:02 +05:30
Nabin Hait
2f50b85f99 Test case fixes for serial no 2014-05-11 13:03:53 +05:30
Nabin Hait
8ae4bcac58 Merge pull request #1617 from nabinhait/v4-hotfix
test case fixes
2014-05-11 12:13:16 +05:30
Nabin Hait
0ff6e3a6bb Merge branch 'develop' of github.com:frappe/erpnext into v4-hotfix 2014-05-11 12:11:50 +05:30
Nabin Hait
75e50ee082 Fixes for subcontracting 2014-05-11 12:11:15 +05:30
Nabin Hait
6d5c248402 Test case fixes for serial no 2014-05-11 12:10:57 +05:30
Nabin Hait
5365108ef9 Test case fixes for pos setting 2014-05-11 12:10:17 +05:30
Nabin Hait
7e373010d7 Test case fixes in time log batch 2014-05-11 12:08:39 +05:30
Rushabh Mehta
409c8e9732 removed confirmation date validations (wtf) 2014-05-11 10:01:16 +05:30
Rushabh Mehta
75e11a7270 Merge pull request #1616 from pdvyas/migrate-3to4
3 to 4 migration fixes
2014-05-10 22:19:07 +05:30
Pratik Vyas
6e686224eb fix patches 2014-05-10 22:17:04 +05:30
Pratik Vyas
95f558e7bc fix update user properties patch 2014-05-10 22:16:39 +05:30
Rushabh Mehta
2667a50334 clear cache before running setup wizard 2014-05-09 19:20:31 +05:30
Rushabh Mehta
9591b8ec93 Merge pull request #1613 from anandpdoshi/deprecate-link-selects
Deprecate Select fields with options as link:
2014-05-09 14:09:51 +05:30
Anand Doshi
78e9c6ef70 Deprecate Select fields with options as link: 2014-05-09 13:36:13 +05:30
Nabin Hait
a5ac0149af Merge pull request #1612 from pdvyas/migrate-3to4
3 to 4 migration
2014-05-09 12:07:11 +05:30
Pratik Vyas
34e36a233c Patch changes for 3 to 4 migration 2014-05-09 12:01:25 +05:30
Nabin Hait
d64a952b5d Stock reco: item and warehouse validation and translation fixes 2014-05-09 11:50:24 +05:30
Nabin Hait
7dada72085 Merge pull request #1610 from nabinhait/v4-hotfix
minor fix
2014-05-09 10:54:53 +05:30
Nabin Hait
966edff222 minor fix 2014-05-09 10:54:12 +05:30
Nabin Hait
b52c6e866f Merge pull request #1609 from nabinhait/v4-hotfix
V4 hotfix
2014-05-08 19:10:55 +05:30
Nabin Hait
344f4436f1 Create / update raw materials supplied table for sub-contracting 2014-05-08 19:08:20 +05:30
Nabin Hait
5d070753fd Item managed batch-wise, can not be reconciled through stock reconciliation 2014-05-08 19:08:06 +05:30
Nabin Hait
844dd36ff9 PP tool: get items from SO based on item filter 2014-05-08 19:07:34 +05:30
Nabin Hait
3c5bc544ea Serial no and batch no field added in purchase receipt item supplied table 2014-05-08 19:07:02 +05:30
Nabin Hait
227db769a0 Item valuation rate on material transfer based on fifo 2014-05-08 19:06:01 +05:30
Anand Doshi
713e453126 Merge pull request #1607 from anandpdoshi/hotfix
Fixed clear cache for item page
2014-05-08 17:46:30 +05:30
Anand Doshi
0c85169539 Fixed clear cache for item page 2014-05-08 17:46:00 +05:30
Anand Doshi
3415cdb208 Merge pull request #1604 from anandpdoshi/bugfix-v4
Newsletter status display. Fixes #1593
2014-05-08 12:09:29 +05:30
Anand Doshi
08ef467fc6 Fixed moduleview language issue 2014-05-08 11:43:18 +05:30
Nabin Hait
5da2f21aed Merge pull request #1603 from nabinhait/v4-hotfix
fixes
2014-05-07 19:22:02 +05:30
Nabin Hait
e37b8e6682 fixed conflict 2014-05-07 19:20:56 +05:30
Nabin Hait
23649c6852 fixe in query.py 2014-05-07 19:18:15 +05:30
Anand Doshi
7e1b75a705 Newsletter status display. Fixes #1593 2014-05-07 18:44:02 +05:30
Nabin Hait
17425a24c6 Merge pull request #1602 from anandpdoshi/better-default-permissions
Better default permissions, ignore_restrictions for defaults, removed fi...
2014-05-07 17:51:08 +05:30
Anand Doshi
f410bd9bf9 Better default permissions, ignore_restrictions for defaults, removed field trash_reason
Additions:
	Account --> Material User: Read
	Cost Center --> Sales User, Purchase User: Read
	Mode of Payment --> Accounts User: Read
	Supplier --> Material User, Accounts User: Read
	Employee --> Employee: Restricted Read
	Leave Type --> Employee: Read
	Production Order --> Material User: Read
	Sales Order --> Material User: Read
	Print Heading --> All: Read
	Terms and Conditions --> Purchase User, Material User: Read
	Territory --> Material User, Maintenance User: Read
	Item --> Sales User, Purchase User, Maintenance User, Accounts User: Read
	Price List --> Manufacturing User: Read
	Purchase Receipt --> Accounts User: Read
	Warehouse --> Manufacturing User: Read
2014-05-07 17:20:42 +05:30
Nabin Hait
706eb7f2c7 fixed conflict 2014-05-07 15:13:52 +05:30
Nabin Hait
90f2d8d9fc minor fix 2014-05-07 14:55:09 +05:30
Anand Doshi
dc644c37e6 Merge pull request #1597 from anandpdoshi/naming-series-by-fiscal-year
Naming series by fiscal year
2014-05-07 11:06:36 +05:30
Anand Doshi
4b438eee6d Revert "Autocreate naming series options based on Fiscal Year"
This reverts commit 8a6febbaa5.
2014-05-07 10:58:39 +05:30
Anand Doshi
8a6febbaa5 Autocreate naming series options based on Fiscal Year 2014-05-06 19:44:22 +05:30
Anand Doshi
8c2dbab878 Changed default naming series options
C-Form: C-FORM-.#####
	Purchase Invoice: PINV-.#####
	Sales Invoice: SINV-.#####
	Purchase Order: PO-.#####
	Quality Inspection: QI-.#####
	Supplier: SUPP-.#####
	Supplier Quotation: SQTN-.#####
	Attendance: ATT-.#####
	Production Order: PRO-.#####
	Installation Note: IN-.#####
	Lead: LEAD-.#####
	Opportunity: OPTY-.#####
	Quotation: QTN-.#####
	Sales Order: SO-.#####
	Delivery Note: DN-.#####
	Item: ITEM-.#####
	Material Request: MREQ-.#####
	Packing Slip: PS-.#####
	Purchase Receipt: PREC-.#####
	Stock Entry: STE-.#####
	Customer Issue: CI-.#####
	Support Ticket: SUP-.#####
	Customer: CUST-.#####
	Journal Voucher: JV-.#####
2014-05-06 19:43:11 +05:30
Nabin Hait
cc6b20b614 Merge pull request #1596 from nabinhait/v4-hotfix
V4 fixes and updates
2014-05-06 19:17:13 +05:30
Nabin Hait
3fcec56f7b Bulk rename tool fixes #1594 2014-05-06 19:13:46 +05:30
Nabin Hait
a521343063 Merge branch 'develop' of github.com:frappe/erpnext into v4-hotfix 2014-05-06 18:53:02 +05:30
Nabin Hait
ce4a87ce83 Maintenance schedule: get no of visits and period validation. Fixes #1591 2014-05-06 18:52:36 +05:30
Anand Doshi
7fc9b63dc7 Merge pull request #1590 from anandpdoshi/remove-india-specific-fields
Remove India specific fields
2014-05-06 16:48:18 +05:30
Nabin Hait
50e962b279 Special characters allowed in company name. Fixes #1259 2014-05-06 16:46:32 +05:30
Anand Doshi
4b7a6b13ec Additions to remove India specific fields 2014-05-06 16:41:31 +05:30
Nabin Hait
3190f99ebe Option for selecting already reconciled entries in bank reconciliation #1310 2014-05-06 16:39:24 +05:30
Anand Doshi
37909b292f Remove India specific fields 2014-05-06 16:15:56 +05:30
Nabin Hait
8b22fab2f7 Merge pull request #1589 from nabinhait/v4-hotfix
V4 hotfix
2014-05-06 14:20:19 +05:30
Nabin Hait
5c82014ba9 Merge branch 'develop' of github.com:frappe/erpnext into v4-hotfix 2014-05-06 14:01:30 +05:30
Nabin Hait
c82e967e97 Cannada translation 2014-05-06 14:01:04 +05:30
Nabin Hait
b63384b3d4 Merge pull request #1588 from nabinhait/v4-hotfix
Allow Rename option added in multiple docs. Fixes #1521
2014-05-06 12:34:50 +05:30
Nabin Hait
02d37bbb5a Allow Rename option added in multiple docs. Fixes #1521 2014-05-06 12:18:50 +05:30
Anand Doshi
728be8c4d4 Merge pull request #1587 from anandpdoshi/bugfix-v4
Enable frequently used currencies. Fixes #1561
2014-05-06 12:18:37 +05:30
Nabin Hait
07a31d2975 Merge pull request #1586 from nabinhait/v4-hotfix
V4 hotfix
2014-05-06 12:03:06 +05:30
Anand Doshi
de560aa094 Enable frequently used currencies. Fixes #1561 2014-05-06 12:02:23 +05:30
Nabin Hait
b1285f9fce Time Log Batch creation from time log list 2014-05-06 11:58:00 +05:30
Nabin Hait
cea4cd4e5f Pull stock entry difference account from company 2014-05-06 11:57:33 +05:30
Pratik Vyas
4d911db902 Release 4.0.0 2014-05-05 19:14:45 +05:30
Nabin Hait
b99a3517c3 Merge branch 'develop' of github.com:frappe/erpnext into develop 2014-05-05 18:42:07 +05:30
Nabin Hait
98c2a052e5 Fixes in pricing rule testcases #565 2014-05-05 18:41:41 +05:30
Nabin Hait
ac1bc212ea Merge branch 'develop' of github.com:frappe/erpnext into develop 2014-05-05 18:27:31 +05:30
Anand Doshi
91b451b8ce Updated validate v3 patch 2014-05-05 18:25:37 +05:30
Anand Doshi
648062d071 Fixes in test cases 2014-05-05 16:46:38 +05:30
Rushabh Mehta
45a3226645 minor 2014-05-05 15:16:11 +05:30
Nabin Hait
f2db87a766 Pricing Rule: If rule for price applied, discount rule against price list should not be applied #565 2014-05-05 15:04:55 +05:30
Nabin Hait
53dab55703 Pricing Rule: if multiple rules, ask to resolve conflict #565 2014-05-05 14:49:40 +05:30
Nabin Hait
0c7e28ec9f Pricing Rule improvements #565 2014-05-05 11:13:36 +05:30
Nabin Hait
ed8a845e83 POS Make Payment dialog box fix #1441 2014-05-05 11:01:32 +05:30
Nabin Hait
d5886f36af Merge branch 'develop' of github.com:frappe/erpnext into develop 2014-05-05 10:28:20 +05:30
Nabin Hait
f57f0a661a Stock Entry: pulling items from BOM fixed #1579 2014-05-05 10:27:53 +05:30
Anand Doshi
69e0cb5d6f Fixed POS and Sales Invoice paid amount display, when invoice not submitted. Fixes #1573 2014-05-04 19:37:45 +05:30
Anand Doshi
2af558598c Fixed travis 2014-05-04 16:13:33 +05:30
Nabin Hait
6dad4e9e89 Merge branch 'develop' of github.com:frappe/erpnext into develop 2014-05-04 16:02:44 +05:30
Nabin Hait
a096b2004f Financial analytics graph fix #1542 2014-05-04 16:02:26 +05:30
Anand Doshi
4ab5382d3f Item Group delete permission, Serial No status and item code should be non-editable. Fixes #1564 2014-05-04 11:50:10 +05:30
Rushabh Mehta
24a3ec57e3 update to tests 2014-05-03 16:22:46 +05:30
Anand Doshi
75042fd502 Show Activity entries based on permissions. Completely fixes #1481 2014-05-02 19:44:28 +05:30
Anand Doshi
2b0e4266cf Go to home page on clicking left arrow in note list 2014-05-02 19:43:11 +05:30
Anand Doshi
ef5407479a Show Chart of Accounts in Accounts > Documents. Fixes #1559 2014-05-02 19:42:27 +05:30
Anand Doshi
56f29cbb27 Fixed contact page response. Fixes #1557 2014-05-02 18:17:39 +05:30
Nabin Hait
232954d4b9 Fixed updating cost on BOM after submission #1563 2014-05-02 17:51:24 +05:30
Nabin Hait
053a87edf6 Merge branch 'develop' of github.com:frappe/erpnext into develop 2014-05-02 17:37:38 +05:30
Nabin Hait
296d626e53 Back flush issue fixed in sub contracting #1567 2014-05-02 17:36:13 +05:30
Nabin Hait
bc83b9c1ac minor fix 2014-05-02 17:03:18 +05:30
Anand Doshi
b71a18cd1e Leave Allocation Tool and Employee. Fixes #1555 2014-05-02 16:23:51 +05:30
Nabin Hait
2cebf9b499 minor fix #1565 2014-05-02 16:12:07 +05:30
Nabin Hait
ef30932807 Merge branch 'develop' of github.com:frappe/erpnext into develop 2014-05-02 15:45:52 +05:30
Nabin Hait
6b03914731 asynchronus issue in get_party_details 2014-05-02 15:45:10 +05:30
Anand Doshi
f29bcaf436 Added new fixtures (Fixes #1540). Removed Employee Grade from HR. 2014-05-02 13:55:07 +05:30
Rushabh Mehta
4ceb20e07f hooks.txt -> hooks.py 2014-05-02 12:15:11 +05:30
Nabin Hait
1e6c32e95f Address and contact creation from opportunity #1570 2014-05-02 11:42:24 +05:30
Nabin Hait
92c4fc4e19 Merge branch 'develop' of github.com:frappe/erpnext into develop 2014-05-02 10:27:17 +05:30
Nabin Hait
d341254786 Purchase receipt to purchase invoice item 2014-05-01 17:42:21 +05:30
Anand Doshi
51e6d2228d Salary Slip - read permission for Employee. Fixes #1553 2014-05-01 16:28:13 +05:30
Nabin Hait
292a254bc1 payment to invoice matching tool disabled temporarily 2014-05-01 15:46:37 +05:30
Nabin Hait
5b98340d15 payment to invoice matching 2014-05-01 15:43:22 +05:30
Nabin Hait
e5bd955f4d Merge branch 'develop' of github.com:frappe/erpnext into develop 2014-05-01 09:56:14 +05:30
Anand Doshi
d9f0f27cd4 Fixes in test cases 2014-04-30 22:16:25 +05:30
Nabin Hait
dcfad4f645 Merge branch 'develop' of github.com:frappe/erpnext into develop 2014-04-30 20:32:07 +05:30
Nabin Hait
613919325d Fixes in link field queries 2014-04-30 20:30:33 +05:30
Rushabh Mehta
a15164750d started client side testing using selenium and other related and unrelated fixes 2014-04-30 19:39:13 +05:30
Nabin Hait
b85a9108eb Payment to invoice matching tool 2014-04-30 19:32:16 +05:30
Nabin Hait
498ecfc192 Merge branch 'develop' of github.com:frappe/erpnext into develop 2014-04-30 19:31:22 +05:30
Nabin Hait
576f025c84 Payment to invoice matching tool 2014-04-30 19:30:50 +05:30
Anand Doshi
a47bf2ab66 Removed check for duplicate in sales bom, set default income account in Company 2014-04-30 18:54:05 +05:30
Anand Doshi
f62da519d6 Sales BOM Parent Item search - Fixes #1544 2014-04-30 16:50:39 +05:30
Anand Doshi
04f8990c11 Fixed can freeze account check for account doc in client side 2014-04-30 15:02:17 +05:30
Rushabh Mehta
33003c6168 fix for feature setup in install.py 2014-04-30 11:16:02 +05:30
Rushabh Mehta
104c9f465d updated translations 2014-04-29 18:36:27 +05:30
Rushabh Mehta
d21f55b5d2 fix in naming and feature setup on install: 2014-04-29 16:25:07 +05:30
Nabin Hait
b54307d58e minor fixes for pos trigger 2014-04-29 13:40:54 +05:30
Nabin Hait
b1777ecfd8 Merge branch 'develop' of github.com:frappe/erpnext into develop 2014-04-29 11:31:37 +05:30
Nabin Hait
17910aa0d6 Removed income and expense related info temporarily from email digest 2014-04-29 11:31:11 +05:30
Anand Doshi
cd17bdffcd Fixes in account query, fiscal year and cost center 2014-04-28 20:34:48 +05:30
Nabin Hait
6777efa7fa Merge branch 'develop' of github.com:frappe/erpnext into develop 2014-04-28 17:09:13 +05:30
Nabin Hait
985918d42b Minor fixes in company and account 2014-04-28 17:08:28 +05:30
Anand Doshi
69aa8ffac4 Fixed as_dict of employee.py 2014-04-28 16:51:34 +05:30
Nabin Hait
2594e41462 Removed Stock Ledger doctype 2014-04-28 16:23:45 +05:30
Nabin Hait
48962e1148 Minor fix in sales funnel report 2014-04-28 15:43:32 +05:30
Anand Doshi
65f83cbae7 BugFix: Sales Order with Order Type as Shopping Cart 2014-04-28 15:33:34 +05:30
Anand Doshi
3b3d55cda2 Usability: Set For Warehouse and Work-in-Progress Warehouse as mandatory, when the user clicks Submit 2014-04-28 15:33:34 +05:30
Anand Doshi
4c90bae16d BugFix: Item search in Production Planning Tool 2014-04-28 15:33:34 +05:30
Anand Doshi
6916baa299 BugFix: Item search in Stock UOM Replace Utility 2014-04-28 15:33:34 +05:30
Nabin Hait
ac87c1d618 Merge pull request #1537 from n3storm/develop
Update mode_of_payment.py
2014-04-28 15:32:31 +05:30
Néstor Díaz Valencia
21412ddf65 Update mode_of_payment.py
Renamed solves issue #1536
2014-04-28 11:54:31 +02:00
Rushabh Mehta
41d126586e fix get_server_fields in stock_entry.js 2014-04-27 12:30:20 +05:30
Anand Doshi
8e5b2af0fb Set conversion_factor in stock entry test case 2014-04-25 19:35:06 +05:30
Anand Doshi
fc79efb97c Fixes #1532. Only show an error message for missing Quality Inspection but let the user submit Purchase Receipt. 2014-04-25 18:44:28 +05:30
Anand Doshi
1872312cc6 Deprecated client side mapper: frappe.model.map. Fixes #1530 2014-04-25 18:38:08 +05:30
Anand Doshi
e3f6b6d899 Fixed Opportunity Lost UX 2014-04-25 18:36:06 +05:30
Anand Doshi
69a2c25ca5 Fixed set_query 2014-04-25 18:35:45 +05:30
Anand Doshi
bbffaf78fb BugFix: use transfer_qty instead of actual_qty in check_duplicate_entry_for_production_order - ported webnotes/erpnext@942ff2583b 2014-04-25 18:31:09 +05:30
Anand Doshi
8bde7f9b3a Conditionally toggle Naming Series. Fixes #1526 2014-04-24 18:11:49 +05:30
Anand Doshi
7f2d08b03f Fixed Naming Series page loading fails #1524 2014-04-24 13:51:35 +05:30
Anand Doshi
8c62c40a3d Fixed Make Sales Order from Quotation #1522 2014-04-24 12:40:19 +05:30
Anand Doshi
78eeacb53c Fixes in Lead, Opportunity, Quotation, Setup Wizard 2014-04-23 19:15:15 +05:30
Anand Doshi
f50a65294f Fixed NameError handling 2014-04-23 13:41:28 +05:30
Anand Doshi
b054eb7a4f Call calculate_taxes_and_totals after mapping 2014-04-22 20:35:22 +05:30
Anand Doshi
4bb87373dc Fixed default website creation
Default website generation was creating company page twice,
which led to duplicate website route validation
2014-04-22 19:50:08 +05:30
Anand Doshi
68d0b7c7ff get_item_details fixed for Material Request 2014-04-22 19:30:53 +05:30
Anand Doshi
3e41fd1fd3 List route for tree browser based doctypes; Fixes to add child in tree browsers 2014-04-22 18:55:21 +05:30
Rushabh Mehta
4ef1835bee website updates 2014-04-22 16:52:35 +05:30
Anand Doshi
2944f49974 Setup Wizard: on country select, change date format, save logo in Website Settings > Brand HTML 2014-04-22 16:25:58 +05:30
Anand Doshi
07339fc69e Fixes in Setup Wizard and Attachments 2014-04-22 15:30:24 +05:30
Rushabh Mehta
3f51705ba4 website cleanups 2014-04-21 22:10:43 +05:30
Anand Doshi
0549b1c5c9 Duplicate supplier delivery number validation in Purchase Receipt should happen per financial year 2014-04-21 15:59:47 +05:30
Anand Doshi
21ae930b4c Removed controller.py 2014-04-21 15:12:50 +05:30
Anand Doshi
424c033395 Removed controller.py 2014-04-21 15:06:56 +05:30
Rushabh Mehta
40b2b03bcb demo fixes 2014-04-21 13:43:35 +05:30
Rushabh Mehta
f63513ed38 minor fixes to website 2014-04-21 13:43:35 +05:30
Anand Doshi
9365b616b8 Added an exist check for accounts.utils.get_balance_on 2014-04-21 12:42:21 +05:30
Anand Doshi
cbbf451974 Fixes throw 2014-04-21 11:33:49 +05:30
Rushabh Mehta
0900beecb2 added languages.txt 2014-04-18 16:24:28 +05:30
Anand Doshi
5d591ebe83 Item, Item Group and Partner Web Page generators moved from Shopping Cart to ERPNext 2014-04-18 16:20:07 +05:30
Rushabh Mehta
603e6e21b5 test fixes 2014-04-18 16:17:29 +05:30
Rushabh Mehta
370a024e46 cleaned up sample website and separated fixtures by country 2014-04-18 16:00:41 +05:30
Rushabh Mehta
169c1fd93b fixed translation for setup-wizard and removed purchase validation for Material Request #925 2014-04-18 10:40:17 +05:30
Anand Doshi
ac32bad25a Fixes in Taxes, Quotation and Address Territory 2014-04-18 01:32:02 +05:30
Pratik Vyas
33e1db8c40 Add language to setup wizard (travis) 2014-04-17 19:04:34 +05:30
Rushabh Mehta
52e618d0b2 updates to Setup Wizard, set language as first input 2014-04-17 18:50:33 +05:30
Anand Doshi
dbfcd328fb Fixes update_after_submit validation errors 2014-04-17 12:35:04 +05:30
Anand Doshi
0d345c9152 Fixes Item Price duplicate entry validation 2014-04-17 11:40:22 +05:30
Anand Doshi
de1a97d506 Fixes get_voucher_detail for Stock Reconcilation 2014-04-17 11:37:46 +05:30
Anand Doshi
094610d7ce Fixes in Production, Stock Entry and Stock Controller 2014-04-16 20:23:24 +05:30
Rushabh Mehta
eea802298e refactor get_voucher_details in stock_controller 2014-04-16 19:38:40 +05:30
Rushabh Mehta
052fe82688 production order: test fixed and added in test_stock_entry.py 2014-04-16 19:20:11 +05:30
Rushabh Mehta
166bc2a0e0 translations: updated German 2014-04-16 18:37:57 +05:30
Rushabh Mehta
c38fc713c6 updated translations 2014-04-16 17:46:30 +05:30
Rushabh Mehta
8c51318d82 added naming series for campaign #1413 2014-04-16 17:41:52 +05:30
Rushabh Mehta
e8b0402a10 added naming series for campaign #1413 2014-04-16 17:41:52 +05:30
Rushabh Mehta
c635875765 added naming series for campaign #1413 2014-04-16 17:41:51 +05:30
Anand Doshi
652bc0784a Ported v3 fixes to v4
Commit range: webnotes/erpnext@e4b72df2f4bd7272c42e90f6faec3c27aa763b82..webnotes/erpnext@85441b0180f84246259d5a0ab4e3bcbf29355efe
2014-04-16 15:26:42 +05:30
Nabin Hait
13429a3b34 Space allowed in naming series
Conflicts:
	setup/doctype/naming_series/naming_series.py
2014-04-16 15:24:04 +05:30
Nabin Hait
a0c239db8d perpetual inventory fix related to sub-contracting
Cherry-picked and modified by @anandpdoshi

Conflicts:
	accounts/doctype/purchase_invoice/purchase_invoice.py
	controllers/buying_controller.py
	controllers/stock_controller.py
2014-04-16 15:23:10 +05:30
Nabin Hait
450d9d72d7 Minor fix in monthly attendance report
Cherry-picked and modified by @anandpdoshi

Conflicts:
	hr/report/monthly_attendance_sheet/monthly_attendance_sheet.py
2014-04-16 15:23:09 +05:30
Nabin Hait
6298536e46 set stock balance as per serial no count
Cherry Picked and Modified by @anandpdoshi

Conflicts:
	stock/doctype/stock_ledger/stock_ledger.py
	utilities/repost_stock.py
2014-04-16 15:23:08 +05:30
Anand Doshi
88a869f34d No Copy for Paid and Write Off Amount in Sales Invoice
Ported webnotes/erpnext@f739bffedd
2014-04-16 15:23:08 +05:30
Rushabh Mehta
1d8f1a9a46 #1481 2014-04-16 09:32:51 +05:30
Rushabh Mehta
82d8a637ac #1252 2014-04-16 09:20:00 +05:30
Rushabh Mehta
d85dc868ca more message fixes for translation 2014-04-15 22:54:34 +05:30
Rushabh Mehta
ff93802d58 more message fixes 2014-04-15 18:40:31 +05:30
Anand Doshi
a6e2ca9d3b Fixes #1491 2014-04-15 17:12:15 +05:30
Rushabh Mehta
8a40c136ce more message fixing 2014-04-15 16:31:20 +05:30
Anand Doshi
c5e057f676 Fixed exploded BOM construction 2014-04-15 16:14:15 +05:30
Rushabh Mehta
2c45899a02 fixed strings for translation 2014-04-15 14:41:56 +05:30
Anand Doshi
5d4ffa6cf8 Fixed splash.svg 2014-04-15 13:09:09 +05:30
Pratik Vyas
f37d6fe32b Merge pull request #1514 from frappe/js-translate-refactor
JS translation refactor
2014-04-15 11:44:16 +05:30
Pratik Vyas
e1eeb22f1e remove linebreaks for translation strings (js) 2014-04-15 10:50:36 +05:30
Pratik Vyas
13c92e3ad5 fix accounts browser and cost center strings (js) 2014-04-15 10:08:53 +05:30
Pratik Vyas
ec9c448ccf fix taxes and charges strings and labels 2014-04-15 09:49:40 +05:30
Rushabh Mehta
549977bf4f typo fix in journal_voucher.py 2014-04-14 22:40:17 +05:30
Rushabh Mehta
354b32177d fix for leave application test 2014-04-14 22:23:41 +05:30
Rushabh Mehta
9f0d625300 update translation strings #1403 2014-04-14 19:20:45 +05:30
Pratik Vyas
b0f279a34e js translations refactor 2014-04-14 17:14:23 +05:30
Pratik Vyas
b52618c142 frappe._ to __ 2014-04-14 16:25:30 +05:30
Pratik Vyas
7da01d6007 fix manifest 2014-04-13 03:12:12 +05:30
Anand Doshi
bd67e87921 Fixes saving of Sales Order and fetching Prices frappe/frappe#478 2014-04-11 16:51:27 +05:30
Anand Doshi
13ae548ff6 Fixes for model-cleanup frappe/frappe#478 2014-04-10 18:43:07 +05:30
Pratik Vyas
f7daab7393 pass only valid columns to get_item_details 2014-04-10 17:53:30 +05:30
Anand Doshi
233fbb08b2 Minor fix 2014-04-10 12:53:16 +05:30
Anand Doshi
61649c1d43 Verbose in travis 2014-04-10 12:40:29 +05:30
Anand Doshi
ddd2b8a398 Merge pull request #1504 from frappe/model-cleanup
Model cleanup
2014-04-10 11:39:16 +05:30
Anand Doshi
8c45d4ce3c Fixed travis frappe/frappe#478 2014-04-10 11:38:11 +05:30
Anand Doshi
20771621e7 Verbose app install in travis 2014-04-09 20:03:27 +05:30
Anand Doshi
9fd50bcfb6 Fixed rest of the test cases frappe/frapp#478 2014-04-09 19:20:01 +05:30
Anand Doshi
d29465029d Fixed Test Cases frappe/frappe#478 2014-04-08 20:15:22 +05:30
Anand Doshi
cd71e1d8ab Test Cases - Journal Voucher, Purchase Invoice, Period Closing Voucher frappe/frappe#478 2014-04-08 13:53:35 +05:30
Anand Doshi
2ce39cf770 Fixed Stock Entry Test Cases frappe/frappe#478 2014-04-07 18:51:58 +05:30
Nabin Hait
103cc58cb6 material request testcase #478 2014-04-07 16:40:43 +05:30
Nabin Hait
4155e58a61 Merge branch 'model-cleanup' of github.com:frappe/erpnext into model-cleanup 2014-04-07 16:00:49 +05:30
Nabin Hait
088dec6c09 testcase fixes #478 2014-04-07 16:00:28 +05:30
Rushabh Mehta
322d39f3a6 Merge branch 'model-cleanup' of github.com:frappe/erpnext into model-cleanup 2014-04-07 15:09:25 +05:30
Rushabh Mehta
49f49ea603 started party frappe/erpnext#1503 2014-04-07 15:09:09 +05:30
Nabin Hait
dc82d4f0cd frappe/frappe#478 fixes 2014-04-07 12:02:57 +05:30
Nabin Hait
9f66c306ea Merge branch 'model-cleanup' of github.com:frappe/erpnext into model-cleanup 2014-04-07 12:01:59 +05:30
Anand Doshi
bedc62f090 Fixed Feed 2014-04-04 16:26:45 +05:30
Nabin Hait
e7885e3ee0 frappe/frappe#478 replaced doclist in testcases 2014-04-04 13:26:50 +05:30
Rushabh Mehta
a504f0638b frappe/frappe#478, fixed list passed in 2014-04-04 12:16:26 +05:30
Rushabh Mehta
558a9aabfb removed control panel 2014-04-04 12:00:36 +05:30
Nabin Hait
312ba99e71 frappe/frappe#478 fixes 2014-04-04 11:06:10 +05:30
Rushabh Mehta
c10213d861 Merge branch 'model-cleanup' of github.com:frappe/erpnext into model-cleanup 2014-04-03 17:43:28 +05:30
Rushabh Mehta
0cf531c8a6 frappe/frappe#478 fixes 2014-04-03 17:43:06 +05:30
Nabin Hait
c272f2020b Merge branch 'model-cleanup' of github.com:frappe/erpnext into model-cleanup 2014-04-03 17:39:50 +05:30
Nabin Hait
365ae27acf frappe/frappe#478 fixes 2014-04-03 17:38:54 +05:30
Rushabh Mehta
7db7112d3f frappe/frappe#478 fix and added print heading 2014-04-03 15:04:18 +05:30
Rushabh Mehta
99f914b782 frappe/frappe#478, fixes 2014-04-03 14:47:03 +05:30
Rushabh Mehta
2fbb00fd8d frappe/frappe#478, more changes, removed bean 2014-04-03 14:38:22 +05:30
Rushabh Mehta
f14b809ab5 frappe/frappe#478, more changes, removed bean 2014-04-03 14:30:42 +05:30
Rushabh Mehta
d36cb5c812 frappe/frappe#478 removed more instances of doclist 2014-04-03 12:38:42 +05:30
Rushabh Mehta
cfb6ccfe51 frappe/frappe#478 removed self.doclist 2014-04-03 11:46:52 +05:30
Rushabh Mehta
f191f854cd frappe/frappe#478 erpnext install works 2014-04-02 18:09:34 +05:30
Anand Doshi
943e614810 frappe/frappe#478 2014-04-02 16:37:35 +05:30
Anand Doshi
63dfe3d3b3 Merge branch 'model-cleanup' of github.com:frappe/erpnext into model-cleanup 2014-04-02 15:03:51 +05:30
Anand Doshi
5b552b51f1 frappe/frappe#478 2014-04-02 15:03:35 +05:30
Rushabh Mehta
732825cb23 frappe/frappe#478 fixed todo and renamed hooks 2014-04-02 12:08:03 +05:30
Anand Doshi
dd32d6eb1f frappe/frappe#478 2014-04-01 12:22:14 +05:30
Rushabh Mehta
f2227d033c frappe/frappe#478, removed instances of .fields 2014-03-31 23:37:40 +05:30
Rushabh Mehta
231f6a5b58 frappe/frappe#478 added test_records.json 2014-03-31 23:05:12 +05:30
Rushabh Mehta
0a0f2495a2 frappe/frappe#478, frappe tests pass, .txt renamed to .json 2014-03-31 17:27:06 +05:30
Nabin Hait
0e13cd5ac9 frappe/frappe#478 2014-03-28 17:01:32 +05:30
Nabin Hait
0d8d30e1cc frappe/frappe#478 2014-03-28 16:57:21 +05:30
Rushabh Mehta
b385ecf65e frappe/frappe#478 2014-03-28 16:54:45 +05:30
Anand Doshi
43405203b2 frappe/frappe#478 2014-03-28 16:43:50 +05:30
Anand Doshi
81ba0b29da frappe/frappe#478 2014-03-28 15:23:26 +05:30
Anand Doshi
f78d1aee28 Replaced doc, doc.fields frappe/frappe#478 2014-03-28 13:55:00 +05:30
Anand Doshi
67d6a4e3aa Merge remote-tracking branch 'frappe/develop' into model-cleanup
Conflicts:
	erpnext/accounts/doctype/payment_to_invoice_matching_tool/payment_to_invoice_matching_tool.py
	erpnext/accounts/doctype/sales_invoice/sales_invoice.py
	erpnext/controllers/stock_controller.py
2014-03-28 13:41:59 +05:30
Anand Doshi
40534f076b Changed creation, modified format frappe/frappe#478 2014-03-28 12:46:53 +05:30
Rushabh Mehta
daae743608 frappe/frappe#478 2014-03-27 17:54:18 +05:30
Rushabh Mehta
e88bc8b12a frappe/frappe#478 2014-03-27 17:51:41 +05:30
Nabin Hait
4090c78c3f coa: payment to invoice matching tool fixes 2014-03-27 17:19:32 +05:30
Nabin Hait
becf75d791 Perpetual inventory cleanup 2014-03-27 17:18:29 +05:30
Rushabh Mehta
d2b34dc30c frappe/frappe#478 2014-03-27 16:12:56 +05:30
Rushabh Mehta
66d52b55c0 #478 2014-03-27 14:17:33 +05:30
Rushabh Mehta
aa355af2cf refactored client side Model and Meta - frappe/frappe#478 2014-03-26 18:24:30 +05:30
Nabin Hait
5c6b34a84c minor fix 2014-03-26 10:30:25 +05:30
Nabin Hait
3a70ba3ba1 Merge github.com:frappe/erpnext into develop 2014-03-26 10:23:53 +05:30
Nabin Hait
d6e4ab3fd4 maintenance schedule: validate amc dates and update in serial no 2014-03-26 10:23:27 +05:30
Nabin Hait
1d630ccaa5 Update serial no maintenance status based on warranty/amc expiry date 2014-03-26 10:23:14 +05:30
Anand Doshi
754cbd4036 Fixed Permissions and Time Log 2014-03-25 20:09:12 +05:30
Nabin Hait
6fa0f25e7c Merge branch 'develop' of github.com:frappe/erpnext into develop 2014-03-25 19:36:16 +05:30
Nabin Hait
0c9d42258c Minor fix related to pos paid amount 2014-03-25 19:35:41 +05:30
Anand Doshi
79196a9ef7 Fixed install 2014-03-25 19:32:08 +05:30
Anand Doshi
059b83a2ce Fixed MariaDB install steps in travis 2014-03-25 18:40:46 +05:30
Anand Doshi
3be9e26934 Fixed MariaDB install steps in travis 2014-03-25 18:39:56 +05:30
Nabin Hait
2c517e0a62 Fixes related to countrywise coa 2014-03-25 18:28:49 +05:30
Nabin Hait
ec9fb67d84 fixed conflict 2014-03-25 16:53:50 +05:30
Anand Doshi
7fbdba02ab Fixed Countrywise Chart of Accounts patch 2014-03-25 13:50:52 +05:30
Nabin Hait
221a8fff1c minor fix in patch 2014-03-23 17:35:24 +05:30
Nabin Hait
96c0afe0f1 minor fix in patch 2014-03-23 17:25:02 +05:30
Nabin Hait
06a595090d coa: minor fix 2014-03-21 18:30:46 +05:30
Nabin Hait
425bfc5c8d minor fix in serial no 2014-03-21 18:15:26 +05:30
Nabin Hait
c07537b1e9 unidecode added to the erpnext requirements 2014-03-21 12:25:49 +05:30
Nabin Hait
155c96b410 patch to delete mis control and financial statements and set bank/cash account 2014-03-21 12:15:13 +05:30
Nabin Hait
19dadb4a82 unidecode added to the erpnext requirements 2014-03-21 11:46:51 +05:30
Nabin Hait
f7f95ea37a Merge pull request #1482 from nabinhait/countrywise_coa
Countrywise coa
2014-03-21 11:38:35 +05:30
Nabin Hait
0c21e2afef Is_pl_account and debit_or_credit field removed and added report_type field in account 2014-03-21 11:35:59 +05:30
Nabin Hait
b5e6d7e171 Account balance in debit and credit columns in trial balance and financial analytics report 2014-03-21 11:26:09 +05:30
Nabin Hait
47a3c10334 Patch to update old accounts property 2014-03-21 11:26:08 +05:30
Nabin Hait
e67202484d Imported charts with proper report types 2014-03-21 11:26:08 +05:30
Nabin Hait
e0f98d7202 account properties file added 2014-03-21 11:26:08 +05:30
Nabin Hait
102842ba79 Leave allocation fix 2014-03-21 11:26:08 +05:30
Nabin Hait
73083dc960 Fix related to user_default 2014-03-21 11:26:08 +05:30
Nabin Hait
27bb7892b3 Fixes in pos settings 2014-03-21 11:26:07 +05:30
Nabin Hait
482ffac83f Set paid amount to zero if not pos 2014-03-21 11:26:07 +05:30
Nabin Hait
439dceebd8 minor fix in landed cost wizard 2014-03-21 11:25:17 +05:30
Nabin Hait
e848914da1 consider all entries against bank account in bank reconciliation statement, even if no reference no 2014-03-21 11:25:17 +05:30
Nabin Hait
d8dcdfbf4f Warehouse disable option 2014-03-21 11:25:17 +05:30
Nabin Hait
eb1192771f set root type from parent or child 2014-03-21 11:25:17 +05:30
Nabin Hait
e71cf6d6a1 More country charts imported from openerp 2014-03-21 11:25:17 +05:30
Nabin Hait
037bf6b382 More country charts imported from openerp 2014-03-21 11:25:17 +05:30
Nabin Hait
24e136e3f3 Patch: set root_type for old existing accounts 2014-03-21 11:25:16 +05:30
Nabin Hait
3dfe854108 Rename duplicate account 2014-03-21 11:25:16 +05:30
Nabin Hait
fc37fd8b6e Set Paid amount and write off amount for pos 2014-03-21 11:25:16 +05:30
Nabin Hait
55a03dbf69 major fixes in importing charts from openerp 2014-03-21 11:22:42 +05:30
Nabin Hait
b93ebaebe4 Added new account types and patch for existing 2014-03-21 11:22:41 +05:30
Nabin Hait
a18bf07920 updated charts json with proper account and root types 2014-03-21 11:22:41 +05:30
Nabin Hait
d7d9d25d71 Country and chart fields added in company master 2014-03-21 11:22:40 +05:30
Nabin Hait
813a93d78d import chart records into database frm json 2014-03-21 11:22:40 +05:30
Nabin Hait
a69c30edec country code added 2014-03-21 11:22:39 +05:30
Nabin Hait
d89f3403ac charts of account doctype added and imported charts json from openerp 2014-03-21 11:22:39 +05:30
Nabin Hait
b77773ca07 fixes in financial statements 2014-03-21 11:22:38 +05:30
Nabin Hait
2b57ecbd6c fixes for debit_or_credit in account tree grid report 2014-03-21 11:22:38 +05:30
Nabin Hait
53822ae9d0 Account balance must be of type debit/credit 2014-03-21 11:22:38 +05:30
Nabin Hait
49a6f0754e Removed debit_or_credit field 2014-03-21 11:22:38 +05:30
Nabin Hait
133490a0c5 Removed max roots validation 2014-03-21 11:22:37 +05:30
Nabin Hait
4d713ac5ba sql injection fixes 2014-03-21 11:22:37 +05:30
Anand Doshi
eb7fea673b Fixed set_single_defaults during install 2014-03-19 17:10:01 +05:30
Anand Doshi
4b2692182a Fixes after change in fields handling in Document 2014-03-19 16:58:42 +05:30
Anand Doshi
76f330ca66 Fixed Fiscal Year input issue in Setup Wizard 2014-03-19 15:45:05 +05:30
Anand Doshi
2134d24b36 Removed cloud subscription logic 2014-03-14 15:24:57 +05:30
Pratik Vyas
9d1e8640ef Update README.md 2014-03-13 20:45:27 +05:30
Anand Doshi
49e0a687b3 Minor Fixes 2014-03-13 20:44:28 +05:30
Nabin Hait
54106807e4 Set paid amount to zero if not pos 2014-03-13 17:26:41 +05:30
Nabin Hait
a8dbb0dd41 Merge branch 'develop' of github.com:frappe/erpnext into develop 2014-03-13 17:23:24 +05:30
Pratik Vyas
65e8676f8b Profile -> User 2014-03-13 03:09:15 +05:30
Pratik Vyas
5c81f9c44e check docstatus before updating employee 2014-03-13 02:35:23 +05:30
Rushabh Mehta
7c932003ed rename Profile to User frappe/frappe#470 2014-03-11 16:15:59 +05:30
Anand Doshi
c379c78fec Fixed Dropbox, Scheduler, 3to4 migration 2014-03-11 15:17:13 +05:30
Anand Doshi
09a9f4c0c9 Added module to Report doctype 2014-03-07 17:20:22 +05:30
Anand Doshi
ec621194fc Verbose is default in cli.py 2014-03-07 14:01:56 +05:30
Rushabh Mehta
c12ccdb6ea bugfix erpnext/frappe#1446 2014-03-06 15:45:45 +05:30
Rushabh Mehta
d8de921c40 fixed erpnext/frappe#1441 and other pos related cleanups 2014-03-06 15:40:22 +05:30
Rushabh Mehta
73f0bf36c1 fixed #1454 2014-03-06 14:45:02 +05:30
Rushabh Mehta
2e7ad8980c fix for queries 2014-03-06 12:28:47 +05:30
Rushabh Mehta
4541875c81 removed searchfield condition from get_match_cond frappe/erpnext#1457 2014-03-06 11:19:46 +05:30
Rushabh Mehta
0fabc6a841 minor fix 2014-03-06 11:19:46 +05:30
Rushabh Mehta
2a45e1cfd0 Merge pull request #1437 from ddimmich/patch-1
Update README.md
2014-03-06 10:46:03 +05:30
Anand Doshi
2d5727b17b Ignore mandatory during email pulling 2014-03-05 19:24:07 +05:30
Anand Doshi
b2c2fca8a5 Added Pricing Rule to Accounts, Buying, Selling home 2014-03-05 18:25:10 +05:30
Nabin Hait
9472247b6e Update stock_entry.js 2014-03-05 17:45:58 +05:30
Anand Doshi
ebdac5db5c Fix in Pricing Rule Patch 2014-03-05 17:31:37 +05:30
Anand Doshi
7ea8528d50 Fixed Pricing Rule Cleanup Fieldname 2014-03-05 17:27:00 +05:30
Anand Doshi
74d0e40bdc Moved Notification Count hooks to frappe, employee user id patch, Item ignore restriction fields 2014-03-05 15:24:29 +05:30
Nabin Hait
2d57b0aa52 Merge branch 'develop' of github.com:frappe/erpnext into develop 2014-03-05 10:51:04 +05:30
Anand Doshi
0c4ef64b32 Fixed booboo: Moved website moduleview to framework 2014-03-04 11:15:08 +05:30
Anand Doshi
e30511d315 Email Settings split into Outgoing Email Settings and Support Email Settings 2014-03-03 20:32:20 +05:30
Anand Doshi
64f2ccd9e1 Global Settings in Setup, Sales Master Manager can restrict for Customer 2014-03-03 19:28:30 +05:30
Anand Doshi
6b12b07b33 Fixes to Module Views 2014-03-03 16:05:00 +05:30
Anand Doshi
f5794f1c07 Module Home Pages using Module View 2014-03-03 15:06:34 +05:30
Nabin Hait
8e4640f464 minor fix in report 2014-03-03 12:06:50 +05:30
Nabin Hait
f976143063 pricing rule patch fix 2014-02-28 19:02:27 +05:30
Nabin Hait
177b86a15b fix in pricing rule 2014-02-28 15:47:22 +05:30
Nabin Hait
e7e615cf18 pricing rule: fixes in testcase 2014-02-28 15:21:49 +05:30
Nabin Hait
13b93ebed8 pricing rule: fixes in testcase 2014-02-28 15:04:05 +05:30
Nabin Hait
3319170805 pricing rule: condition for tree-type docs 2014-02-28 13:04:19 +05:30
Nabin Hait
ed5f423e65 pricing rule: condition for tree-type docs 2014-02-28 13:04:19 +05:30
Nabin Hait
311079a311 Patch: copy customer discount to pricing rule 2014-02-28 13:04:19 +05:30
Nabin Hait
08222150f2 Pricing Rule fixes and reference field in all item table 2014-02-28 13:02:00 +05:30
Nabin Hait
7e8e8ba714 pricing rule 2014-02-28 13:02:00 +05:30
Nabin Hait
c65a0c7197 Allowed stock entry import 2014-02-28 13:02:00 +05:30
Nabin Hait
bc34f3edae shortage qty column added in stock projected qty report 2014-02-28 13:02:00 +05:30
Nabin Hait
615d342056 Pricing Rule: first commit 2014-02-28 13:02:00 +05:30
Anand Doshi
8462a7691b Fixed login 2014-02-28 11:53:59 +05:30
Rushabh Mehta
063141d152 added patch for address 2014-02-28 11:37:36 +05:30
Anand Doshi
fb21ce3893 3to4 fixes 2014-02-27 13:18:20 +05:30
Damian Dimmich
1ee5675750 Update README.md
remove old doc line
2014-02-26 10:29:42 +01:00
Anand Doshi
e9baaa68e7 Changed frappe.conn to frappe.db 2014-02-26 12:35:33 +05:30
Anand Doshi
901f4434fd Fixed Purchase Invoice test cases 2014-02-25 17:25:28 +05:30
Anand Doshi
0936ae6dca Fixed company web page creation 2014-02-25 16:21:50 +05:30
Anand Doshi
4362443b6e Propagate ignore_permissions during mapping from quotation to sales order 2014-02-25 15:42:32 +05:30
Anand Doshi
201dbbd977 Quotation Item Table can be empty 2014-02-25 15:42:32 +05:30
Rushabh Mehta
a6628eee56 rename sitemap to route 2014-02-25 11:08:37 +05:30
Nabin Hait
a1c96de9fc party related cleanup 2014-02-21 14:45:10 +05:30
Rushabh Mehta
6fbda08583 fixed sitemap patch 2014-02-20 19:03:03 +05:30
Nabin Hait
cda83bba59 Row no fix in stock reconciliation 2014-02-20 15:01:51 +05:30
Nabin Hait
2f8d4451f5 calculate outstanding amount in server side, only if docstatus is 0 2014-02-20 14:59:37 +05:30
Nabin Hait
0f2310690e fix in fetch item details and supplier non-mandatory to fetch 2014-02-20 11:27:47 +05:30
Pratik Vyas
33f36c3462 Add CI badge to readme 2014-02-20 00:17:43 +05:30
Pratik Vyas
a08855a0de add site arg to travis build script, booboo 2014-02-20 00:06:35 +05:30
Pratik Vyas
3197767650 run setup wizard before running tests on travis 2014-02-19 23:22:02 +05:30
Pratik Vyas
28da7523be set single defaults after install 2014-02-19 20:53:45 +05:30
Nabin Hait
ce64afaa51 default value in single doctypes 2014-02-19 19:12:01 +05:30
Nabin Hait
f5bb9ae1b1 default value in single doctypes 2014-02-19 19:02:40 +05:30
Nabin Hait
22831563ff default value in selling settings 2014-02-19 18:35:54 +05:30
Nabin Hait
32f168617c default value in global defaults 2014-02-19 18:11:42 +05:30
Nabin Hait
74bbd24b1d Merge github.com:frappe/erpnext into develop 2014-02-19 17:43:51 +05:30
Nabin Hait
9d1f077922 get lead details in quotation 2014-02-19 17:43:24 +05:30
Rushabh Mehta
e0e3f92019 fixed sales / accounts tree 2014-02-19 12:43:16 +05:30
Nabin Hait
05b28eb161 minor fixes 2014-02-19 11:04:32 +05:30
Nabin Hait
36a4db69b8 price list on_trash function 2014-02-18 15:14:46 +05:30
Pratik Vyas
da0a23e635 remove print in patch, booboo 2014-02-17 14:56:00 +05:30
Pratik Vyas
31affc0e67 bump modified dates for purchase receipt and purchase invoice 2014-02-17 11:36:10 +05:30
Pratik Vyas
d4f9af3498 Delete install_erpnext.py 2014-02-15 15:29:29 +05:30
Pratik Vyas
ad9b4faa47 Update README.md 2014-02-15 15:23:25 +05:30
Pratik Vyas
0240dc53ae 4.change version to 4.0.0-beta 2014-02-14 16:10:55 +05:30
Pratik Vyas
ed20b68a3a Update .travis.yml 2014-02-14 16:10:03 +05:30
Rushabh Mehta
86903e5f5b fixed travis 2014-02-14 15:54:43 +05:30
Rushabh Mehta
793ba6bd37 -webnotes +frappe 💥 2014-02-14 15:47:51 +05:30
Nabin Hait
8ae051cb39 fixed conflict 2014-02-14 13:42:41 +05:30
Nabin Hait
adeff27f28 Merge branch '4.0.0-wip' of github.com:webnotes/erpnext into 4.0.0-wip 2014-02-14 13:41:00 +05:30
Nabin Hait
9ea461638e minor fix 2014-02-14 13:40:41 +05:30
Rushabh Mehta
989b60ae52 removed setup from desktop: 2014-02-14 13:16:39 +05:30
Pratik Vyas
fc274e29ec Merge branch 'develop' 2014-02-14 10:36:23 +05:30
Pratik Vyas
d45f7d60c3 bumped to version 3.8.6 2014-02-14 11:06:23 +06:00
Nabin Hait
c1611abebf Merge pull request #1418 from nabinhait/hotfix
minor fixes in account receivable/payable
2014-02-13 18:44:15 +05:30
Nabin Hait
e0f6b3edbe minor fixes in account receivable/payable 2014-02-13 18:43:18 +05:30
Nabin Hait
a038831c45 validate item of item_price record 2014-02-13 15:54:51 +05:30
Nabin Hait
36028bfb56 minor 2014-02-12 19:09:28 +05:30
Nabin Hait
a87121c6da Merge branch '4.0.0-wip' of github.com:webnotes/erpnext into 4.0.0-wip 2014-02-12 17:09:08 +05:30
Nabin Hait
e219d61ed4 patch included in patches txt 2014-02-12 17:08:35 +05:30
Nabin Hait
66b2717c54 Merge pull request #1414 from akhileshdarjee/4.0-hotfix
Customer and Supplier dashboard set to company currency
2014-02-12 16:55:17 +05:30
Nabin Hait
eba1bdbcca minor fixes 2014-02-12 16:04:17 +05:30
Nabin Hait
139dc7b9b2 minor fixes 2014-02-12 14:54:16 +05:30
Nabin Hait
0aa71a5c41 minor fixes 2014-02-12 14:54:15 +05:30
Nabin Hait
5aecc538dd Letter Head field added in purchase receipt and invoice 2014-02-12 14:54:15 +05:30
Nabin Hait
5f59726903 Rename fields: replaced in html and txt files 2014-02-12 14:54:15 +05:30
Nabin Hait
1eb560130a Rename fields: amount related fields 2014-02-12 14:54:14 +05:30
Nabin Hait
7979f7ed21 Field Rename: rate field mass replacement 2014-02-12 14:54:14 +05:30
Nabin Hait
a7f757a3f4 Rename fields: initial commit 2014-02-12 14:54:13 +05:30
Nabin Hait
777397489e Fields renamed in schema 2014-02-12 14:54:13 +05:30
Nabin Hait
436f526102 commonify get_item_details and rename fields to sync selling and purchase 2014-02-12 14:54:12 +05:30
Nabin Hait
c28c86dfd8 Validate duplicate serial nos entry 2014-02-12 14:54:11 +05:30
Nabin Hait
9beffb646d Validate duplicate serial nos entry 2014-02-12 14:54:11 +05:30
Nabin Hait
f0d29be1d5 Removed on_trash function from support ticket 2014-02-12 14:54:11 +05:30
Akhilesh Darjee
f2b7cd65a9 customer and supplier dashboard set to company currency 2014-02-12 11:29:08 +05:30
Anand Doshi
2735733d1f Minor fix in setup import 2014-02-11 20:28:11 +05:30
Anand Doshi
93fdc670fe Fixes in Test Cases 2014-02-11 14:40:21 +05:30
Nabin Hait
40c5174aa0 Merge pull request #1410 from nabinhait/hotfix
Hotfix
2014-02-11 12:03:11 +05:30
Nabin Hait
0799b28e46 Letter Head field added in purchase receipt and invoice 2014-02-11 12:02:46 +05:30
Pratik Vyas
89a3ee7f57 Merge branch 'develop' 2014-02-10 20:57:25 +05:30
Pratik Vyas
347bf93b4f bumped to version 3.8.5 2014-02-10 21:27:25 +06:00
Anand Doshi
d7cc47e3ac Do not validate Material Request against Sales Order, Moved Setup page to Framework 2014-02-10 17:39:12 +05:30
Anand Doshi
1d7e933590 Fix in Get Job Applications 2014-02-07 20:26:56 +05:30
Anand Doshi
080b64a98f Fixes in Sales Partner and Support Mails 2014-02-07 19:14:21 +05:30
Rushabh Mehta
c4ec534b06 added config.setup 2014-02-07 19:04:19 +05:30
Rushabh Mehta
22ababbec1 configs 2014-02-07 18:16:11 +05:30
Pratik Vyas
17cb5b7799 Merge branch 'develop' 2014-02-07 16:03:09 +05:30
Pratik Vyas
e0c9dd3d23 bumped to version 3.8.4 2014-02-07 16:33:09 +06:00
Nabin Hait
41891ec95c Merge pull request #1405 from nabinhait/hotfix
Serial No duplicate entry fix
2014-02-07 15:54:57 +05:30
Nabin Hait
dfc0072929 Merge branch 'develop' of github.com:webnotes/erpnext into hotfix 2014-02-07 15:45:39 +05:30
Nabin Hait
e1e5d675ac Validate duplicate serial nos entry 2014-02-07 15:33:34 +05:30
Nabin Hait
c4e92c6416 Validate duplicate serial nos entry 2014-02-07 15:22:50 +05:30
Anand Doshi
7c34f1c472 Test Item Group 2014-02-07 14:52:14 +05:30
Nabin Hait
2c832addca Merge pull request #1404 from nabinhait/hotfix
Hotfix
2014-02-07 11:51:54 +05:30
Nabin Hait
c095cfa224 Merge branch 'develop' of github.com:webnotes/erpnext into hotfix 2014-02-07 11:49:45 +05:30
Nabin Hait
fbb10d37d3 Removed on_trash function from support ticket 2014-02-07 11:49:26 +05:30
Anand Doshi
7bb9c3f125 Nested Set Test using Test Item group 2014-02-06 17:51:18 +05:30
Nabin Hait
a03f654446 Merge pull request #1382 from akhileshdarjee/4.0-hotfix
Newsletter can also be sent to employees
2014-02-06 16:02:39 +05:30
Nabin Hait
574c7e7c63 item related cleanup 2014-02-06 15:51:01 +05:30
Pratik Vyas
9294fc8e7e Merge branch 'develop' 2014-02-06 15:27:11 +05:30
Pratik Vyas
07d4c373f3 bumped to version 3.8.3 2014-02-06 15:57:11 +06:00
Pratik Vyas
79499e3615 fix syntax error in material request, merge booboo 2014-02-06 15:25:17 +05:30
Pratik Vyas
cc9bc95b25 fix language typo in build script 2014-02-06 14:59:05 +05:30
Pratik Vyas
ae763d7afa Merge pull request #1394 from pdvyas/testing-develop3
fix travis build script typo
2014-02-06 14:54:13 +05:30
Pratik Vyas
70e2a50f0f fix travis build script typo 2014-02-06 14:07:58 +05:30
Pratik Vyas
c22ff12951 Merge pull request #1390 from pdvyas/testing4
fix webnotes url in travis build script
2014-02-06 13:37:41 +05:30
Pratik Vyas
1b8c158fdc Merge pull request #1393 from pdvyas/testing-develop2
add travis build script
2014-02-06 13:37:21 +05:30
Pratik Vyas
4078ef8ef5 add travis build script 2014-02-06 13:36:26 +05:30
Akhilesh Darjee
462740f72b sales funnel fix 2014-02-06 13:14:15 +05:30
Pratik Vyas
c055ea6465 fix webnotes url in travis build script 2014-02-06 12:54:52 +05:30
Anand Doshi
3decf4dbc5 Fixes related website hierarchy 2014-02-06 12:50:35 +05:30
Rushabh Mehta
4b41e420c0 cleaned up splash: 2014-02-06 11:02:53 +05:30
Rushabh Mehta
2c545ef1ad bugfix to feed 2014-02-06 10:38:45 +05:30
Pratik Vyas
c6b59ef082 Merge branch 'develop' 2014-02-05 18:49:29 +05:30
Pratik Vyas
dbbba659a8 bumped to version 3.8.2 2014-02-05 19:19:29 +06:00
Nabin Hait
3c3719fa9c Merge pull request #1388 from nabinhait/hotfix
Hotfix
2014-02-05 18:46:54 +05:30
Nabin Hait
a7af1d619e Fix in accounts receivable report 2014-02-05 18:15:12 +05:30
Rushabh Mehta
307fac8b78 hooks fixes 2014-02-05 17:04:49 +05:30
Nabin Hait
18eb8c5f68 fixed unicode and null issue in sms center 2014-02-05 15:06:09 +05:30
Akhilesh Darjee
602fdc0000 patch reloading employee form 2014-02-03 19:32:59 +05:30
Akhilesh Darjee
f1c3537924 webnotes/erpnext#869 newsletter to send to employees 2014-02-03 19:28:36 +05:30
Akhilesh Darjee
81578d2e77 Merge branch '4.0.0-wip' of github.com:webnotes/erpnext into 4.0-hotfix 2014-02-03 17:48:46 +05:30
Akhilesh Darjee
8f674fe0fb minor changes 2014-02-03 17:47:50 +05:30
Akhilesh Darjee
abb3af7b30 Merge branch '4.0.0-wip' of github.com:webnotes/erpnext into 4.0-hotfix 2014-02-03 16:44:14 +05:30
Rushabh Mehta
cc008cc109 commonified get_party_details 2014-02-03 16:14:56 +05:30
Rushabh Mehta
347889b233 merge 2014-02-03 14:49:53 +05:30
Rushabh Mehta
8ed0268b9d fix to SalesInvoice format 2014-02-03 14:40:01 +05:30
Rushabh Mehta
fa799f7d81 Merge branch '4.0.0-cleanup' of github.com:webnotes/erpnext into 4.0.0-cleanup 2014-02-03 14:38:52 +05:30
Nabin Hait
23c28704d2 Field arrangement in child table 2014-02-03 14:36:59 +05:30
Akhilesh Darjee
dd905fcaba Merge branch '4.0.0-wip' of github.com:webnotes/erpnext into 4.0-hotfix 2014-02-03 13:56:10 +05:30
Akhilesh Darjee
53593c9c47 Newsletter allow delete 2014-02-03 13:40:27 +05:30
Rushabh Mehta
8612778136 style fix 2014-02-03 10:45:21 +05:30
Rushabh Mehta
9adcf85a14 Merge branch '4.0.0-wip' of github.com:webnotes/erpnext into 4.0.0-wip 2014-02-03 10:44:34 +05:30
Akhilesh Darjee
d6d2193f91 newsletter reload 2014-01-31 19:59:25 +05:30
Nabin Hait
bec11fa86e Newsletter permissions 2014-01-31 17:33:23 +05:30
Nabin Hait
dfae0ea570 minor fix in patch 2014-01-31 17:25:09 +05:30
Nabin Hait
d7fb6dce89 Stock reconciliation: cost center filters 2014-01-31 17:05:09 +05:30
Nabin Hait
759f9ee973 Merge branch '4.0.0-wip' of github.com:webnotes/erpnext into 4.0.0-wip 2014-01-31 16:28:31 +05:30
Nabin Hait
646d06ee9f Merge branch 'develop' of github.com:webnotes/erpnext into 4.0.0-wip
Conflicts:
	config.json
2014-01-31 16:28:05 +05:30
Nabin Hait
7f80485070 Merge pull request #1374 from akhileshdarjee/sms-center
SMS center character count
2014-01-31 02:57:35 -08:00
Nabin Hait
45f0c25a6d Merge pull request #1365 from akhileshdarjee/4.0-hotfix
Stay Updated button in website fixed
2014-01-31 02:44:35 -08:00
Nabin Hait
c3211ab394 Merge pull request #1368 from akhileshdarjee/default-tax
Default tax for customer and supplier
2014-01-31 02:40:51 -08:00
Akhilesh Darjee
dc45153430 webnotes/erpnext#1221 dont allow duplicate user id in employee 2014-01-31 12:23:13 +05:30
Akhilesh Darjee
4e3b601990 webnotes/erpnext#1188 sms center character count 2014-01-30 19:13:25 +05:30
Nabin Hait
b5be7bab9b Stock Return: fetch customer and supplier details 2014-01-30 18:47:12 +05:30
Nabin Hait
8dc2c6a16c Default accounts in company should not be copied 2014-01-30 17:00:09 +05:30
Pratik Vyas
fe977289eb Merge branch 'develop' 2014-01-30 16:00:29 +05:30
Pratik Vyas
45b5b6d11f bumped to version 3.8.1 2014-01-30 16:30:29 +06:00
Nabin Hait
ec43e4dd33 Merged with develop 2014-01-30 15:22:10 +05:30
Nabin Hait
c58b330673 Merge pull request #1372 from nabinhait/hotfix
Hotfix
2014-01-30 01:49:29 -08:00
Nabin Hait
5d976ca3ac recurring invoice test fix 2014-01-30 15:12:39 +05:30
Rushabh Mehta
fcb6b01e4e cleaned up email 2014-01-30 15:09:05 +05:30
Nabin Hait
f2f17959ab Serial no fix 2014-01-30 14:54:25 +05:30
Akhilesh Darjee
e0a1039756 merge conflict fixed 2014-01-30 14:44:35 +05:30
Pratik Vyas
6448076143 Merge branch 'develop' 2014-01-30 13:59:43 +05:30
Pratik Vyas
3f657bcf51 bumped to version 3.8.0 2014-01-30 14:29:43 +06:00
Akhilesh Darjee
4cdb79941b map charge to taxes and charges in transactions 2014-01-30 13:56:57 +05:30
Nabin Hait
0ff32e73ba Merged with 4.0.0-wip 2014-01-30 12:41:52 +05:30
Nabin Hait
fe8db590a1 Fixed conflict while merging with develop 2014-01-30 12:32:47 +05:30
Nabin Hait
53f7ba26f6 Merge branch 'develop' of github.com:webnotes/erpnext into hotfix 2014-01-30 12:12:50 +05:30
Nabin Hait
937103f840 Update accounts_receivable.py 2014-01-30 12:12:26 +05:30
Nabin Hait
1969f9e1ac Merge branch 'develop' of github.com:webnotes/erpnext into hotfix 2014-01-30 12:11:04 +05:30
Nabin Hait
60fcce66f7 Minor fix in accounts receivable report 2014-01-30 12:08:44 +05:30
Nabin Hait
47fcc0310d Merge pull request #1371 from nabinhait/hotfix
Minor fix in opening purchase invoice and AR report
2014-01-29 22:13:29 -08:00
Nabin Hait
7e676f3aae Merge pull request #1370 from akhileshdarjee/hotfix
Shipping address in quotation fixed for customer validation
2014-01-29 21:50:49 -08:00
Akhilesh Darjee
30aac9bbcf removed contact person for lead filter 2014-01-30 11:02:06 +05:30
Nabin Hait
c2a5858143 Minor fix in accounts receivable report 2014-01-30 10:50:55 +05:30
Nabin Hait
879b3a0cbc Set expense account for perpetual inventory only non-opening invoices 2014-01-30 10:50:55 +05:30
Akhilesh Darjee
ef0a0e8209 stashed footer page 2014-01-29 20:18:43 +05:30
Akhilesh Darjee
f7f20f624a shipping address in quotation fixed for customer validation 2014-01-29 20:13:43 +05:30
Nabin Hait
b87e9f2651 Fixes in fetching party details 2014-01-29 19:51:36 +05:30
Akhilesh Darjee
b665d86292 patch to reload all sales and purchase doctypes and print formats 2014-01-29 17:40:34 +05:30
Akhilesh Darjee
4f7215662d webnotes/erpnext#1090 set default tax type in customer and supplier 2014-01-29 16:31:38 +05:30
Akhilesh Darjee
db22657d93 Merge branch '4.0.0-wip' of github.com:webnotes/erpnext into default-tax 2014-01-29 16:00:33 +05:30
Rushabh Mehta
24da761a17 more updates to party 2014-01-29 15:26:04 +05:30
Nabin Hait
115dcc09d4 Merge pull request #1361 from trhura/develop
Pull request for issue #856
2014-01-29 00:30:07 -08:00
Thura Hlaing
990d7c4862 added StockFreezeError, and uncomment stock_auth_role check 2014-01-29 14:53:21 +06:30
Thura Hlaing
166024a23c Merge branch 'develop' of https://github.com/webnotes/erpnext into develop 2014-01-29 13:29:27 +06:30
Thura Hlaing
3c4bb0c7c9 initial tests for freeze stock functionality 2014-01-29 13:28:11 +06:30
Thura Hlaing
258191ab40 fix bug by coercing stock_frozen_upto_days value to int 2014-01-29 11:37:30 +06:30
Thura Hlaing
d66396abe3 fixed typo add_date -> add_days 2014-01-29 09:49:30 +06:30
Akhilesh Darjee
2ced3b07d4 changed fieldname from charge to taxes 2014-01-28 19:16:05 +05:30
Rushabh Mehta
49dd7bee87 added get_supplier_details and commonified invoice functions 2014-01-28 17:43:10 +05:30
Rushabh Mehta
3b432dce88 added listviews 2014-01-28 16:10:15 +05:30
Nabin Hait
21d324c597 Merged with 4.0-wip 2014-01-28 15:52:25 +05:30
Akhilesh Darjee
a7ab20ec78 webnotes/erpnext#912 Stay Updated button in website fixed 2014-01-28 15:50:28 +05:30
Akhilesh Darjee
7c1976950d webnotes/erpnext#912 stay updated button fixed in website 2014-01-28 13:03:47 +05:30
Nabin Hait
158200b209 Merge pull request #1363 from akhileshdarjee/hotfix
Allow renaming of Sales/Purchase Taxes and Charges Master
2014-01-27 23:13:03 -08:00
Akhilesh Darjee
a570cd66f7 webnotes/erpnext#1362 allow renaming of sales and purchase taxes and charges master 2014-01-28 12:31:12 +05:30
Thura Hlaing
d7f3d63a8e Merge branch 'develop' of https://github.com/webnotes/erpnext into develop 2014-01-28 09:10:20 +06:30
Thura Hlaing
2e67426936 label/message update in error reporting 2014-01-28 09:09:50 +06:30
Thura Hlaing
16f88ba3cd import add_date, removed timedelta import 2014-01-27 20:22:08 +06:30
Thura Hlaing
e31a41854b tabify modifications, minor coding style/message updates 2014-01-27 20:14:53 +06:30
Pratik Vyas
7349c191ab Merge branch 'develop' 2014-01-27 17:49:50 +05:30
Pratik Vyas
dc540dda4d bumped to version 3.7.1 2014-01-27 18:19:50 +06:00
Nabin Hait
4b97811941 Merge pull request #1359 from akhileshdarjee/4.0-hotfix
POS Invoice print format showing inclusive taxes and discount amount
2014-01-27 04:09:36 -08:00
Nabin Hait
5c494f79f3 Merge pull request #1360 from nabinhait/hotfix
Planned qty patch: auto commit on many writes
2014-01-27 04:07:43 -08:00
Nabin Hait
191935bbf5 Planned qty patch: auto commit on many writes 2014-01-27 17:37:06 +05:30
Akhilesh Darjee
ffa4769b51 Merge branch '4.0.0-wip' of github.com:webnotes/erpnext into 4.0-hotfix 2014-01-27 17:32:32 +05:30
Akhilesh Darjee
db4304914c POS Invoice print format showing inclusive taxes and discount amount 2014-01-27 17:27:39 +05:30
Nabin Hait
db7901ec49 Merge pull request #1261 from akhileshdarjee/maintenance2
Fixed Maintenance Schedule
2014-01-27 03:57:15 -08:00
Pratik Vyas
8c78a1abb7 Merge branch 'develop' 2014-01-27 17:19:45 +05:30
Pratik Vyas
8821541f33 bumped to version 3.7.0 2014-01-27 17:49:45 +06:00
Nabin Hait
5cec7ec84a Merge pull request #1355 from akhileshdarjee/hotfix
Allow rename for price list
2014-01-27 02:40:08 -08:00
Thura Hlaing
9d5566634c changed stock_frozen_upto to stock_frozen_upto_days, and added validation for it in stock ledger 2014-01-27 16:54:38 +06:30
Akhilesh Darjee
86894f3bbf merge conflict fixed 2014-01-27 15:42:02 +05:30
Nabin Hait
9536f112b5 Merge pull request #1358 from nabinhait/hotfix
Serial no and planned qty
2014-01-27 01:33:56 -08:00
Nabin Hait
44a40b860e Fixed planned qty bug and patch to recalculate planned qty 2014-01-27 15:02:30 +05:30
Nabin Hait
b3d26c08f6 Fixed planned qty bug and patch to recalculate planned qty 2014-01-27 14:58:55 +05:30
Thura Hlaing
98d4622ed8 Merge branch 'develop' of github.com:trhura/erpnext 2014-01-27 14:10:52 +06:30
Thura Hlaing
24b26db327 initial prototype implementation for issue #856 2014-01-27 14:08:55 +06:30
Nabin Hait
fa9fabaa49 Serial no status fix: patch to set status not available where no sle exists 2014-01-27 12:46:18 +05:30
Akhilesh Darjee
49e8e783e3 webnotes/erpnext#1353 allow rename for price list 2014-01-27 11:12:24 +05:30
Rushabh Mehta
1230e3a28b don't hide customer / supplier links, webnotes/erpenxt#796 2014-01-27 11:02:27 +05:30
Anand Doshi
c4ee74857d BugFix: Production Planning Tool - get_raw_materials 2014-01-24 21:53:11 +05:30
Anand Doshi
3f8f4ff6cd BugFix: Production Planning Tool - get_raw_materials 2014-01-24 21:47:01 +05:30
Anand Doshi
cb39e0878e Merge remote-tracking branch 'webnotes/develop' into 4.0.0-wip
Conflicts:
	config.json
	erpnext/accounts/utils.py
	erpnext/patches/patch_list.py
	erpnext/stock/doctype/price_list/price_list.txt
	erpnext/stock/doctype/warehouse/warehouse.py
	portal/templates/sale.html
	portal/utils.py
	selling/doctype/sales_order/templates/pages/order.py
	selling/utils/cart.py
	selling/utils/product.py
	utilities/demo/demo_docs/Fiscal_Year.csv
	utilities/demo/make_demo.py
2014-01-24 21:44:36 +05:30
Akhilesh Darjee
a4e0a1c061 minor changes 2014-01-24 19:57:52 +05:30
Anand Doshi
fc13b87fd5 Fixes in Make Demo 2014-01-24 18:54:50 +05:30
Anand Doshi
d9ba544e09 Fix in Item Test Case 2014-01-24 15:59:05 +05:30
Rushabh Mehta
2fa914b410 Merge pull request #1347 from akhileshdarjee/4.0-hotfix
method name fixing
2014-01-24 02:07:22 -08:00
Rushabh Mehta
e288e5238a added title_fields for Task, Newsletter 2014-01-24 15:33:42 +05:30
Akhilesh Darjee
7cbf5b4e67 Merge branch '4.0.0-wip' of github.com:webnotes/erpnext into 4.0-hotfix 2014-01-24 11:12:50 +05:30
Akhilesh Darjee
44edfb7231 method name fixing 2014-01-24 11:10:46 +05:30
Rushabh Mehta
1cd96a136f updates for restriction 2014-01-24 11:10:24 +05:30
Nabin Hait
af21479665 Merge pull request #1342 from akhileshdarjee/hotfix
Item List refresh when price list changed in POS
2014-01-23 05:14:16 -08:00
Nabin Hait
93eab5521c Minor fix in path 2014-01-23 17:58:03 +05:30
Nabin Hait
4ba95d0b7a Fix in testcases 2014-01-23 16:45:22 +05:30
Nabin Hait
5ae6a61c4d Fixes related to appifing shopping cart 2014-01-23 15:33:30 +05:30
Nabin Hait
eec59ae7c4 Merge pull request #1345 from nabinhait/hotfix
Order preview through customer login
2014-01-23 01:48:28 -08:00
Nabin Hait
efa9a7ed5b Merge branch 'develop' of github.com:webnotes/erpnext into hotfix 2014-01-23 13:25:39 +05:30
Nabin Hait
557abdebe0 order preview through customer login 2014-01-23 13:25:26 +05:30
Akhilesh Darjee
8589b1db22 Use model set_value for updating values from POS 2014-01-22 19:25:51 +05:30
Akhilesh Darjee
82a21beba0 Item List refresh when price list changed in POS 2014-01-22 16:55:32 +05:30
Pratik Vyas
256c4da0a5 Merge branch 'develop' 2014-01-22 16:03:07 +05:30
Pratik Vyas
7395dc9969 bumped to version 3.6.6 2014-01-22 16:33:07 +06:00
Nabin Hait
6a23cfa5cd Merge branch '4.0.0-wip' of github.com:webnotes/erpnext into 4.0.0-wip 2014-01-22 15:57:32 +05:30
Nabin Hait
d39bc09e62 Merge pull request #1341 from nabinhait/hotfix
Small fix
2014-01-22 02:21:17 -08:00
Nabin Hait
c7676797e1 Dont display old fraction outstanding in AR report 2014-01-22 15:36:44 +05:30
Rushabh Mehta
7460dcf406 updated Bootstrap 2014-01-22 12:44:46 +05:30
Nabin Hait
423932fab2 Fixes in general ledger opening 2014-01-22 11:53:44 +05:30
Nabin Hait
efda5b0d36 Merge branch 'develop' of github.com:webnotes/erpnext into hotfix 2014-01-21 20:58:10 +05:30
Nabin Hait
13a9e27320 Fixes in warehouse merge function 2014-01-21 20:57:39 +05:30
Pratik Vyas
b0433d96a3 Merge branch 'develop' 2014-01-21 12:09:31 +05:30
Pratik Vyas
f3aba2e536 bumped to version 3.6.5 2014-01-21 12:39:31 +06:00
Nabin Hait
1594f102fd Merge pull request #1340 from nabinhait/hotfix
General ledger
2014-01-20 22:29:33 -08:00
Nabin Hait
b2f2df4c64 General ledger: opening balance issue fixed 2014-01-21 11:58:17 +05:30
Nabin Hait
9f6c48d82e Merge branch 'develop' of github.com:webnotes/erpnext into hotfix 2014-01-21 10:44:16 +05:30
Pratik Vyas
f0307dc75e Merge branch 'develop' 2014-01-20 19:21:25 +05:30
Pratik Vyas
872e4d1f3d bumped to version 3.6.4 2014-01-20 19:51:25 +06:00
Nabin Hait
b164e606f9 Merge pull request #1337 from nabinhait/hotfix
Hotfix
2014-01-20 05:00:43 -08:00
Nabin Hait
806343395a Merge branch 'develop' of github.com:webnotes/erpnext into hotfix 2014-01-20 18:29:48 +05:30
Nabin Hait
afe93d633c Increased remarks width in general ledger 2014-01-20 18:28:48 +05:30
Nabin Hait
cd20717c3d Merge pull request #1336 from akhileshdarjee/disable-price-list
Enabled feature for Price List
2014-01-20 04:47:10 -08:00
Rushabh Mehta
f96bcf943b added explicit delete perimssions 2014-01-20 17:52:13 +05:30
Nabin Hait
9e056ec1ce Auto closing of tickets through schedulers 2014-01-20 17:46:37 +05:30
Rushabh Mehta
cef681942f merge fix 2014-01-20 17:41:13 +05:30
Nabin Hait
5c6d13a0df Fixed conflict while merging with develop branch 2014-01-20 17:18:16 +05:30
Nabin Hait
719f2803b3 Fixed conflict while merging with develop branch 2014-01-20 17:01:28 +05:30
Nabin Hait
dc15b4fa8a Fixed conflict while merging with develop brnach 2014-01-20 16:48:49 +05:30
Akhilesh Darjee
529709e08b patch for enabling all price list 2014-01-20 16:39:03 +05:30
Akhilesh Darjee
e82eee512b Enabled feature in Price List 2014-01-20 16:09:45 +05:30
Nabin Hait
ee0c623760 Merge branch 'develop' of github.com:webnotes/erpnext into hotfix 2014-01-20 10:57:12 +05:30
Nabin Hait
dbb4955483 Merge pull request #1332 from akhileshdarjee/hotfix
decimal places fix in item prices report
2014-01-17 20:18:30 -08:00
Akhilesh Darjee
ed87335513 decimal places fix in item prices report 2014-01-17 18:57:21 +05:30
Akhilesh Darjee
8a4111fe0e decimal places fixed in item prices report 2014-01-17 18:50:44 +05:30
Pratik Vyas
4bfa8d560b Merge branch 'develop' 2014-01-17 16:56:31 +05:30
Pratik Vyas
96db41d996 bumped to version 3.6.3 2014-01-17 17:26:31 +06:00
Nabin Hait
9a74330d6f Merge pull request #1330 from pdvyas/fix-mysql-installer
remove mysql-python pinning to 1.2.4
2014-01-17 02:37:25 -08:00
Nabin Hait
1951baca57 Merge pull request #1319 from pdvyas/about-version
update about erpnext with version number
2014-01-17 02:36:11 -08:00
Pratik Vyas
da08124df2 remove mysql-python pinning to 1.2.4 2014-01-17 15:27:19 +05:30
Nabin Hait
2aecc5a717 Merge pull request #1329 from nabinhait/hotfix
Patch for updating billing status for old zero value order
2014-01-17 01:41:40 -08:00
Nabin Hait
a37ffe162b Merge branch 'develop' of github.com:webnotes/erpnext into hotfix 2014-01-17 12:05:06 +05:30
Nabin Hait
bc99c9d6e0 Priority to user's deafult price list over customer's default price list 2014-01-17 12:04:24 +05:30
Nabin Hait
f32314dd0b Do not set income/expense account automatically in company master 2014-01-17 11:53:25 +05:30
Nabin Hait
7e73f35916 Merge pull request #1327 from akhileshdarjee/hotfix
Allow renaming of campaign
2014-01-16 21:48:10 -08:00
Akhilesh Darjee
e1e63a91d6 Allow renaming of campaign 2014-01-17 11:12:20 +05:30
Nabin Hait
9a05aad8ea Merge branch 'develop' of github.com:webnotes/erpnext into hotfix 2014-01-17 10:31:43 +05:30
Nabin Hait
f6b77479d7 Patch: Update billing status for zero value order 2014-01-16 18:18:49 +05:30
Pratik Vyas
3c279163fc Merge branch 'develop' 2014-01-16 16:29:22 +05:30
Pratik Vyas
6933617538 bumped to version 3.6.2 2014-01-16 16:59:22 +06:00
Nabin Hait
2648661757 Merge pull request #1326 from nabinhait/hotfix
Calculate taxes and charges total in server side
2014-01-16 01:28:33 -08:00
Nabin Hait
e31a97f355 Calculate taxes and charges total in server side 2014-01-16 14:24:32 +05:30
Nabin Hait
6bdb73c392 Merge pull request #1324 from nabinhait/hotfix
Minor Fix
2014-01-15 22:44:25 -08:00
Nabin Hait
deda7e2c75 Merge branch 'develop' of github.com:webnotes/erpnext into hotfix 2014-01-16 12:08:36 +05:30
Nabin Hait
5cdb8cea13 Reset filters in Item Price report on each route 2014-01-16 12:08:12 +05:30
Nabin Hait
90a8c9e636 Merge pull request #1323 from nabinhait/hotfix
Billing status for zero value SO/PO
2014-01-15 05:20:51 -08:00
Nabin Hait
c0c951b6a9 Merge branch 'develop' of github.com:webnotes/erpnext into hotfix 2014-01-15 17:36:34 +05:30
Nabin Hait
39eb7faeb9 Update billing percentage and status from SI/PI in SO/PO, when net total is zero 2014-01-15 17:36:18 +05:30
Nabin Hait
4829ad3eb8 Merge pull request #1321 from akhileshdarjee/hotfix
Hide fields fix
2014-01-15 03:17:23 -08:00
Akhilesh Darjee
a682d45846 webnotes/erpnext # 1320 - hide fields fix 2014-01-15 16:39:01 +05:30
Pratik Vyas
76dd468f0e update about erpnext with version number 2014-01-15 14:23:38 +05:30
Nabin Hait
a6df26839d Higher priority to user's default price list over customer's default price list 2014-01-15 12:21:14 +05:30
Akhilesh Darjee
2a79b00700 minor fix 2014-01-15 11:54:05 +05:30
Akhilesh Darjee
6a749e3a8e removed while loop 2014-01-15 11:43:47 +05:30
Nabin Hait
c5d4fc38aa Fixes in monthly salary register 2014-01-15 10:54:07 +05:30
Pratik Vyas
02f7e83bd1 Merge branch 'develop' 2014-01-14 18:49:14 +05:30
Pratik Vyas
f55d9414cd bumped to version 3.6.1 2014-01-14 19:19:14 +06:00
Nabin Hait
5644ed37a4 Merge pull request #1316 from nabinhait/hotfix
rounding and divisional loss
2014-01-14 05:05:33 -08:00
Nabin Hait
ee6200576a Highest priority to user properties while fetching warehouse from item 2014-01-14 18:34:10 +05:30
Nabin Hait
eeb8ba18cd Merge branch 'develop' of github.com:webnotes/erpnext into hotfix 2014-01-14 17:44:47 +05:30
Nabin Hait
3a19370892 Rounding issue and divisional loss adjustment 2014-01-14 17:44:34 +05:30
Nabin Hait
6dc1ba6f7f Merge pull request #1314 from nabinhait/hotfix
comment fix
2014-01-14 02:29:39 -08:00
Nabin Hait
d91af2853e Allowed import for customer issue 2014-01-14 15:56:52 +05:30
Nabin Hait
d23ae108ae Fixes in Comment, if comment by not mentioned, consider owner 2014-01-14 15:52:09 +05:30
Anand Doshi
b9b6a6cea5 Moved webnotes scheduler event hooks 2014-01-13 21:22:23 +05:30
Pratik Vyas
72f8ae2d5a Merge branch 'develop' 2014-01-13 18:37:07 +05:30
Pratik Vyas
1e347910d5 bumped to version 3.6.0 2014-01-13 19:07:07 +06:00
Nabin Hait
25cfb700bb Merge pull request #1311 from akhileshdarjee/hotfix
Increase and decrease quantity buttons in POS
2014-01-13 04:33:50 -08:00
Nabin Hait
8d2d4e82fd Merge pull request #1302 from nabinhait/hotfix
Hotfix
2014-01-13 04:33:18 -08:00
Nabin Hait
c43d58ac79 Delete Property Setters for Custom Fields, and set them inside Custom Field 2014-01-13 17:55:24 +05:30
Akhilesh Darjee
0b3c10601c Increase and decrease quantity buttons in POS 2014-01-13 13:34:34 +05:30
Nabin Hait
14bf711d04 Fixes in frozen accounts validation 2014-01-13 13:28:07 +05:30
Nabin Hait
35a9d585b4 Bank Reconciliation Statement: Show balance in debit or credit column based on account type 2014-01-13 12:24:27 +05:30
Nabin Hait
38e56eeb45 Merge branch 'develop' of github.com:webnotes/erpnext into hotfix 2014-01-13 12:23:29 +05:30
Nabin Hait
3dd1043d5e Merge pull request #1301 from akhileshdarjee/hotfix
pos view showing inclusive taxes
2014-01-10 03:09:12 -08:00
Nabin Hait
55387aa931 Fixed conflict 2014-01-10 16:31:48 +05:30
Nabin Hait
03463ef73b Move related property setters to custom field property 2014-01-10 16:28:41 +05:30
Akhilesh Darjee
371663169c pos view showing inclusive taxes 2014-01-10 15:05:44 +05:30
Nabin Hait
f3ded044e0 Monthly Salary Register: Month is now optional 2014-01-09 17:38:50 +05:30
Nabin Hait
68b0d54b4b Set default accounts in company related to perpetual inventory, only it is enabled 2014-01-09 17:25:55 +05:30
Nabin Hait
95e45574cb Merge pull request #1239 from akhileshdarjee/flat-discount
Flat Discount on Sales Cycle
2014-01-09 03:43:35 -08:00
Pratik Vyas
e4a71935eb Merge branch 'develop' 2014-01-09 15:56:53 +05:30
Pratik Vyas
3e846d19d4 bumped to version 3.5.1 2014-01-09 16:26:53 +06:00
Nabin Hait
5411ece766 Merge pull request #1299 from nabinhait/hotfix
Accounts Receivable fix for partial payment in pos
2014-01-09 02:25:12 -08:00
Nabin Hait
aeb68b2899 Accounts Receivable fix for partial payment in pos 2014-01-09 15:54:18 +05:30
Pratik Vyas
0064dc6f4a Merge branch 'develop' 2014-01-09 15:52:09 +05:30
Pratik Vyas
11bf06ad76 bumped to version 3.5.0 2014-01-09 16:22:09 +06:00
Nabin Hait
5c6a2acff7 Merge pull request #1298 from nabinhait/hotfix
Accounts Receivable fix for partial payment in pos
2014-01-09 02:20:06 -08:00
Nabin Hait
cdbd4218a8 Accounts Receivable fix for partial payment in pos 2014-01-09 15:49:26 +05:30
Nabin Hait
701cddfb15 Merge pull request #1297 from nabinhait/hotfix
Hotfix
2014-01-08 23:18:54 -08:00
Nabin Hait
4bbf91bea1 Added match condition in general ledger report 2014-01-09 12:44:44 +05:30
Nabin Hait
e481e81e67 Merge pull request #1296 from akhileshdarjee/hotfix
POS print format fixed
2014-01-08 22:23:56 -08:00
Anand Doshi
102b417b52 Fix: Typo on patch 2014-01-09 11:39:10 +05:30
Akhilesh Darjee
efc2a45835 merge conflict fixed 2014-01-08 19:42:17 +05:30
Akhilesh Darjee
5c119a7e95 Merge branch 'master' of github.com:webnotes/erpnext into hotfix 2014-01-08 19:36:26 +05:30
Akhilesh Darjee
f7a102ffe3 POS print format fixed 2014-01-08 19:35:01 +05:30
Nabin Hait
d659343541 Payment Reconciliation: Fix for outstanding voucher query 2014-01-08 17:29:23 +05:30
Nabin Hait
dbf5e54eab Merge pull request #1290 from akhileshdarjee/price-list
Price List and Item Price : Valid for Buying and Selling as separate check box
2014-01-07 21:49:52 -08:00
Pratik Vyas
5eb139a531 Merge branch 'develop' 2014-01-07 21:45:04 +05:30
Pratik Vyas
9e2358c544 bumped to version 3.4.9 2014-01-07 22:15:04 +06:00
Akhilesh Darjee
8d0ef21911 pos invoice print format changes 2014-01-07 19:45:33 +05:30
Pratik Vyas
9a8f37c579 Merge pull request #1289 from pdvyas/hotfix-installer
fix installer python packages issue
2014-01-07 06:14:08 -08:00
Akhilesh Darjee
029f698c65 patch for item price and price list 2014-01-07 19:43:35 +05:30
Akhilesh Darjee
806017c92a Price List and Item Price : Validfor Buying and Selling as separate check box 2014-01-07 18:37:38 +05:30
Pratik Vyas
69951e5d1c fix installer python packages issue 2014-01-07 18:24:40 +05:30
Nabin Hait
10fd91c78e Close tickets automatically through scheduler 2014-01-07 16:18:41 +05:30
Pratik Vyas
63d71d7f2f Merge branch 'develop' 2014-01-07 13:47:44 +05:30
Pratik Vyas
777bff6e8d bumped to version 3.4.8 2014-01-07 14:17:44 +06:00
Nabin Hait
1e42a3d028 Merge pull request #1287 from nabinhait/hotfix
Fixes in overbilling validation against DN/PR
2014-01-06 23:12:45 -08:00
Nabin Hait
da282d405f Fixes in overbilling validation against DN/PR 2014-01-07 12:41:09 +05:30
Nabin Hait
8f1bb82ab9 Merge pull request #1286 from nabinhait/hotfix
Removed unwanted debug
2014-01-06 22:40:54 -08:00
Anand Doshi
f2b46635b5 Merge pull request #1285 from pdvyas/hotfix-installer
fix branching, pip version and mysql-python version pinning in install_erpnext
2014-01-06 22:35:49 -08:00
Pratik Vyas
a11e14424c fix branching, pip version and mysql-python version pinning in install_erpnext 2014-01-07 12:03:09 +05:30
Nabin Hait
01441ef37f Removed unwanted debug 2014-01-07 11:59:36 +05:30
Nabin Hait
f6cf5e0f43 Merge branch '4.0.0-wip' of github.com:webnotes/erpnext into 4.0.0-cleanup 2014-01-06 17:36:04 +05:30
Nabin Hait
cb665285db Merge pull request #1280 from nabinhait/hotfix
Fixes in item-wise sales/purchase register
2014-01-06 03:03:02 -08:00
Nabin Hait
6b66c387ad Fixes in item-wise sales/purchase register 2014-01-06 16:28:17 +05:30
Nabin Hait
5e702de710 Merge pull request #1279 from akhileshdarjee/hotfix
accounts payable fixed
2014-01-05 23:01:51 -08:00
Akhilesh Darjee
7e79f300a1 accounts payable fixed 2014-01-06 12:23:29 +05:30
Pratik Vyas
955902ccad Merge branch 'develop' 2014-01-06 12:18:58 +05:30
Pratik Vyas
b882fa14f4 bumped to version 3.4.7 2014-01-06 12:48:58 +06:00
Nabin Hait
d12d7142c6 Merge pull request #1278 from nabinhait/hotfix
Fixes in overbilling validation
2014-01-05 22:35:10 -08:00
Nabin Hait
42db5d76a9 Fixes in overbilling validation 2014-01-06 11:20:37 +05:30
Akhilesh Darjee
5dd92fd5d6 reload doc in maintenance schedule 2014-01-03 19:14:01 +05:30
Pratik Vyas
bd4030bf85 Merge branch 'develop' 2014-01-03 18:40:11 +05:30
Pratik Vyas
a83337a2dd bumped to version 3.4.6 2014-01-03 19:10:11 +06:00
Nabin Hait
e51e5238ec Merge pull request #1267 from nabinhait/hotfix
Hotfix
2014-01-03 04:59:34 -08:00
Nabin Hait
5d5fe5d9d5 Cost center field added in Purchase Receipt Item table 2014-01-03 18:28:53 +05:30
Akhilesh Darjee
e27717261d merge conflict fixed 2014-01-03 18:18:31 +05:30
Akhilesh Darjee
57738a0ff3 flat discount replaced to discount amount 2014-01-03 18:15:07 +05:30
Nabin Hait
b476c989a4 Fixes test cases for date and year mismatch 2014-01-03 17:43:52 +05:30
Nabin Hait
7f0406f281 Chekc over billing validation considering tolerance 2014-01-03 17:43:19 +05:30
Nabin Hait
33f6b9d6e8 Unlinked message listing all linked entries while cancelling an accounting trandsaction 2014-01-03 15:12:16 +05:30
Pratik Vyas
c196037cb0 Merge branch 'develop' 2014-01-03 13:27:06 +05:30
Pratik Vyas
866103bf66 bumped to version 3.4.5 2014-01-03 13:57:06 +06:00
Nabin Hait
528eb4e4ff Merge pull request #1264 from akhileshdarjee/hotfix
fixed accounts receivable for customer name
2014-01-02 23:53:30 -08:00
Nabin Hait
481454298d Merge pull request #1265 from nabinhait/hotfix
Fixes in general ledger report
2014-01-02 23:53:15 -08:00
Akhilesh Darjee
8a0b7cece1 accounts receivable fixed 2014-01-03 13:21:38 +05:30
Akhilesh Darjee
b4eba77f7b fixed accounts receivable 2014-01-03 12:58:04 +05:30
Akhilesh Darjee
b0a9581e59 fixed accounts receivable for customer name 2014-01-03 12:44:00 +05:30
Nabin Hait
6472bdace2 Fixes in general ledger report 2014-01-03 12:30:24 +05:30
Nabin Hait
c95b9f9221 Merge pull request #1263 from nabinhait/hotfix
Hotfix
2014-01-02 22:44:24 -08:00
Nabin Hait
a4db83a934 Fixes in valuation rate calculation in purchase receipt 2014-01-03 12:13:18 +05:30
Nabin Hait
28acaeb345 Fixes in valuation rate calculation in purchase receipt 2014-01-03 11:16:16 +05:30
Akhilesh Darjee
5c96b75a68 fixed maintenance schedule 2014-01-02 17:54:12 +05:30
Akhilesh Darjee
064d2ba16a fixed sr no in maintenance schedule 2014-01-02 17:47:32 +05:30
Pratik Vyas
5fbb757c2c Merge branch 'develop' 2014-01-02 17:12:01 +05:30
Pratik Vyas
df07c964f7 bumped to version 3.4.4 2014-01-02 17:42:01 +06:00
Nabin Hait
0e2a088ac4 Merge pull request #1260 from nabinhait/hotfix
Hotfix
2014-01-02 03:02:56 -08:00
Nabin Hait
ffc2f8885b Merge branch 'develop' of github.com:webnotes/erpnext into hotfix 2014-01-02 16:30:38 +05:30
Nabin Hait
a1ffacaf0b Valuation related charges should only go to stock items 2014-01-02 16:30:16 +05:30
Rushabh Mehta
b09d9dabc5 started cleanup of address / contact calls - partly fixed for customer, to fix shipping_address, get_pos_values, for all supplier transactions 2014-01-02 11:47:23 +05:30
Nabin Hait
06720dfb90 Merge branch '4.0.0-wip' of github.com:webnotes/erpnext into 4.0.0-wip 2014-01-01 10:47:18 +05:30
Nabin Hait
a2e0a9b05f Fliend rearrangemet in tables 2014-01-01 10:45:42 +05:30
Rushabh Mehta
3f7e2729bb removed demo hooks 2014-01-01 10:45:26 +05:30
Nabin Hait
6260b58a0a Merge pull request #1253 from nabinhait/4.0.0-wip
4.0.0 wip
2013-12-31 21:13:45 -08:00
Anand Doshi
2511aa2b14 Merge pull request #1254 from anandpdoshi/4.0.0-shopping-cart-wip
Moved Portal and Shopping Cart to Shopping Cart app, and some minor fixe...
2013-12-31 04:14:15 -08:00
Anand Doshi
9a4a13cb73 Moved Portal and Shopping Cart to Shopping Cart app, and some minor fixes 2013-12-31 17:38:21 +05:30
Nabin Hait
139aa71666 Fixed conflict while merging with master 2013-12-31 16:09:22 +05:30
Nabin Hait
d3f04d754a General ledger path fixed 2013-12-31 16:04:48 +05:30
Nabin Hait
432b86344e Validate account with reference voucher if against voucher mentioned 2013-12-31 15:07:58 +05:30
Pratik Vyas
8c52258e6d Merge branch 'develop' 2013-12-31 14:12:36 +05:30
Pratik Vyas
ffe8af3f2f bumped to version 3.4.3 2013-12-31 14:42:36 +06:00
Nabin Hait
fe5728718f Merge pull request #1251 from nabinhait/hotfix
Hotfix
2013-12-30 21:02:20 -08:00
Nabin Hait
424b4a4b36 Supplier bill info in accounts payable report 2013-12-31 10:24:28 +05:30
Nabin Hait
2a3d7e660f Fixes in general ledger report 2013-12-30 20:28:23 +05:30
Pratik Vyas
a0a43ca4e4 Merge branch 'develop' 2013-12-30 19:34:38 +05:30
Pratik Vyas
9cd9836e18 bumped to version 3.4.2 2013-12-30 20:04:38 +06:00
Pratik Vyas
39a3f50732 Merge branch 'develop' 2013-12-30 18:58:03 +05:30
Pratik Vyas
ba7221c332 bumped to version 3.4.1 2013-12-30 19:28:03 +06:00
Pratik Vyas
6a45588a2c Merge branch 'develop' 2013-12-30 17:48:01 +05:30
Pratik Vyas
ab9d755e4d bumped to version 3.4.0 2013-12-30 18:18:01 +06:00
Nabin Hait
1cf8bd8767 Merge pull request #1246 from nabinhait/hotfix
General Ledger and more
2013-12-30 03:44:41 -08:00
Akhilesh Darjee
829eda47a8 Merge branch '4.0.0-wip' of github.com:webnotes/erpnext into flat-discount 2013-12-30 12:31:07 +05:30
Anand Doshi
0663ec4a9c Merge fixes: removed patches, removed Warehouse User 2013-12-27 18:00:28 +05:30
Rushabh Mehta
61bf425935 deleted moves 2013-12-27 17:58:39 +05:30
Akhilesh Darjee
d203aea7c2 [flat discount] flat discount implemented on sales cycle 2013-12-27 17:49:57 +05:30
Nabin Hait
a4f99428d7 Fixes in time log batch 2013-12-27 17:36:17 +05:30
Nabin Hait
e761fe89e2 Stock Entry catch exceptions for testcase 2013-12-27 17:35:39 +05:30
Nabin Hait
d51f805b78 Rewritten General Ledger report with grouping functions 2013-12-27 17:33:55 +05:30
Rushabh Mehta
c4a0ed63ef Moved demo to separate app, moved patches folder 2013-12-27 17:30:24 +05:30
Akhilesh Darjee
31ccf9a80b [flat discount] fixed test cases for stock entry 2013-12-27 14:21:39 +05:30
Rushabh Mehta
4ac68952e8 Moved patches and fixed method routing in pages 2013-12-27 13:43:40 +05:30
Anand Doshi
e7fc25d6a8 Fixes after permissions merge 2013-12-27 10:49:28 +05:30
Rushabh Mehta
0527a393aa Merge pull request #1236 from anandpdoshi/permissions
Permissions
2013-12-26 21:07:54 -08:00
Akhilesh Darjee
2b1d8854d5 [flat discount] added flat discount in pos 2013-12-26 20:31:42 +05:30
Anand Doshi
8e332ffd16 Merge remote-tracking branch 'webnotes/4.0.0-wip' into permissions
Conflicts:
	erpnext/accounts/page/accounts_browser/accounts_browser.css
	erpnext/controllers/buying_controller.py
	erpnext/manufacturing/doctype/production_order/production_order.py
	erpnext/patches/patch_list.py
	erpnext/selling/doctype/customer/customer.txt
	erpnext/selling/doctype/sales_order/sales_order.py
	erpnext/selling/doctype/sales_order/test_sales_order.py
	erpnext/setup/doctype/features_setup/features_setup.txt
	erpnext/stock/doctype/stock_entry/test_stock_entry.py
	erpnext/stock/doctype/stock_ledger_entry/stock_ledger_entry.py
	startup/query_handlers.py
2013-12-26 19:12:51 +05:30
Akhilesh Darjee
3ab9f24a12 Merge branch 'master' of github.com:webnotes/erpnext into flat_discount 2013-12-26 18:15:14 +05:30
Akhilesh Darjee
13fa595282 [flat discount] pos print format fixed 2013-12-26 18:14:44 +05:30
Akhilesh Darjee
aebb844da9 [flat discount] added flat discount in print format and all selling doctypes 2013-12-26 18:05:41 +05:30
Rushabh Mehta
7334bea3c2 fixed languages, moved framework strings to framework 2013-12-26 14:44:08 +05:30
Rushabh Mehta
caa4380d49 Merge with 3.3.8 2013-12-26 11:07:58 +05:30
Rushabh Mehta
54047780fc Merge with 3.3.8 2013-12-26 11:07:46 +05:30
Akhilesh Darjee
c53dbc7cdf [flat discount] implemented flat discount on client side 2013-12-25 19:46:20 +05:30
Rushabh Mehta
4b6b377134 Removed config.json 2013-12-25 17:38:12 +05:30
Rushabh Mehta
df200f305b Redesigned templates. Now all templates must be inside templates/pages templates/generators 2013-12-25 15:19:22 +05:30
Nabin Hait
9a064e9ced Merge pull request #1233 from nabinhait/hotfix
Removed country field from Search Fields
2013-12-25 01:01:17 -08:00
Nabin Hait
9dc1b00d87 Removed country field from Search Fields 2013-12-25 12:28:54 +05:30
Akhilesh Darjee
63aa5fd673 [flat discount] implemented flat discount on server side 2013-12-24 20:30:03 +05:30
Rushabh Mehta
3c68488873 Fixes to setup wizard 2013-12-24 18:51:49 +05:30
Rushabh Mehta
30fb30cffb Merge pull request #1 from pdvyas/testing
add travis ci
2013-12-24 05:21:21 -08:00
Pratik Vyas
9373ba96d5 Merge branch 'develop' 2013-12-24 13:12:21 +05:30
Pratik Vyas
a402079cd4 bumped to version 3.3.8 2013-12-24 13:42:21 +06:00
Nabin Hait
2ca388b0a5 Merge pull request #1232 from nabinhait/hotfix
Hotfix
2013-12-23 23:29:00 -08:00
Pratik Vyas
f437e867fd add travis ci 2013-12-24 12:17:59 +05:30
Nabin Hait
6ebcc5c006 Change parent account of warehouse from inside the warehouse 2013-12-24 12:14:12 +05:30
Nabin Hait
6a2edee914 Fixes in general ledger report 2013-12-24 11:58:05 +05:30
Nabin Hait
de69ad0a48 Merge pull request #1230 from akhileshdarjee/hotfix
[fix] [minor] update item_name and description in item price
2013-12-23 22:09:13 -08:00
Akhilesh Darjee
25a4bd02f4 [fix] [minor] update item_name and description in item price 2013-12-24 11:32:57 +05:30
Nabin Hait
a3d058938e Company mandatory validation while enabling perpetual inventory 2013-12-24 11:03:04 +05:30
Nabin Hait
4cae8a0d54 Fixes in stock ledger report 2013-12-24 10:47:34 +05:30
Nabin Hait
454b6f9f8a Merge pull request #1229 from nabinhait/hotfix
Fixes in sales return validation
2013-12-23 07:05:08 -08:00
Nabin Hait
9f1b59dfc6 Fixes in sales return validation 2013-12-23 20:34:09 +05:30
Anand Doshi
2926651e1c Restrict Employee and Leave Approver to relevant Employee and Leave Application records 2013-12-23 20:01:20 +05:30
Anand Doshi
9b67f4344b Patch to migrate allow_print and allow_email to print and email rights of DocPerm 2013-12-23 20:01:20 +05:30
Anand Doshi
68852f25b5 Added rights for print and email in DocPerm 2013-12-23 20:01:20 +05:30
Anand Doshi
8a436500f0 [refactor] Client-side permission handling 2013-12-23 20:01:19 +05:30
Anand Doshi
2298d59b8b [patch] new permission system 2013-12-23 20:01:19 +05:30
Anand Doshi
620145c59a [minor] patches for restriction 2013-12-23 20:01:19 +05:30
Anand Doshi
bcf2422848 [minor] user properties and leave application 2013-12-23 20:01:19 +05:30
Anand Doshi
83638b5f05 [minor] move warehouse user to restrictions 2013-12-23 20:01:18 +05:30
Rushabh Mehta
57518fc5f1 [cleanup] [minor] default+cache related 2013-12-23 20:01:18 +05:30
Rushabh Mehta
fea93d0f65 [cleanup] [minor] added webnotes.model.delete_doc (module) 2013-12-23 20:01:18 +05:30
Rushabh Mehta
b1ea6b1f66 [permissions] Added Test Cases 2013-12-23 20:01:18 +05:30
Rushabh Mehta
497d363fc1 [permission model] Redesign
Conflicts:

	patches/patch_list.py
2013-12-23 20:01:18 +05:30
Pratik Vyas
74f64b67db Merge branch 'develop' 2013-12-23 17:31:22 +05:30
Pratik Vyas
2117afba07 bumped to version 3.3.7 2013-12-23 18:01:22 +06:00
Nabin Hait
e409d0d70b Merge pull request #1227 from akhileshdarjee/hotfix
[fix] [minor] update item price on change of item details
2013-12-23 03:42:08 -08:00
Nabin Hait
50125b35d2 Merge pull request #1228 from nabinhait/hotfix
Hotfix
2013-12-23 03:41:13 -08:00
Nabin Hait
c38527ef5f Show general/stock ledger button links to new query reports 2013-12-23 17:07:57 +05:30
Nabin Hait
facde47c6c Stock ledger report filter by item and brand 2013-12-23 17:06:46 +05:30
Nabin Hait
20dc79ac99 General ledger filter by account group 2013-12-23 17:06:10 +05:30
Akhilesh Darjee
61da43f793 [fix] [minor] update modified date and time to item price when updating item and price list 2013-12-23 16:24:33 +05:30
Akhilesh Darjee
af30c3fdfd [fix] [minor] update item price on change of item details 2013-12-23 16:13:42 +05:30
Rushabh Mehta
b63d550a70 Added Applications page and fixed issues in translations and hooks 2013-12-23 16:09:00 +05:30
Akhilesh Darjee
b09dc46e68 [flat discount] first commit 2013-12-23 15:49:08 +05:30
Pratik Vyas
68888a21ec Merge branch 'develop' 2013-12-23 14:41:05 +05:30
Pratik Vyas
7d7661c9ed bumped to version 3.3.6 2013-12-23 15:11:05 +06:00
Nabin Hait
fbda00eef0 Merge pull request #1225 from nabinhait/hotfix
Fixes in Stock ageing report
2013-12-22 22:53:13 -08:00
Nabin Hait
a0212d8014 Fixes in Stock ageing report 2013-12-23 12:21:14 +05:30
Nabin Hait
c8d2604afc Merge pull request #1224 from nabinhait/hotfix
Incoming rate for stock ledger entry should not be rounded
2013-12-22 22:50:41 -08:00
Nabin Hait
861453279d Incoming rate for stock ledger entry should not be rounded 2013-12-23 12:14:45 +05:30
Pratik Vyas
be96600c1c Merge branch 'develop' 2013-12-20 15:15:45 +05:30
Pratik Vyas
8709c51e84 bumped to version 3.3.5 2013-12-20 15:45:45 +06:00
Pratik Vyas
6fc0262cb6 Merge pull request #1220 from nabinhait/hotfix
Fixes in stock projected qty report
2013-12-20 01:36:27 -08:00
Nabin Hait
4b5ced03ec Fixes in merge functions 2013-12-20 12:26:48 +05:30
Nabin Hait
a888e29b0a Fixes in stock projected qty report 2013-12-20 12:18:37 +05:30
Pratik Vyas
ae2e8996b0 Merge branch 'develop' 2013-12-19 19:18:57 +05:30
Pratik Vyas
1c2bbd77a0 bumped to version 3.3.4 2013-12-19 19:48:56 +06:00
Nabin Hait
2ffba327ac Merge pull request #1218 from nabinhait/hotfix
Opening and closing balance in general ledger report
2013-12-19 05:48:07 -08:00
Pratik Vyas
4764f3ea1d Merge pull request #1217 from pdvyas/patch-reload-packed_item
reload packed item in patch, for migration from slow branch
2013-12-19 05:46:52 -08:00
Pratik Vyas
104deeebb5 reload packed item in patch, for migration from slow branch 2013-12-19 19:16:00 +05:30
Nabin Hait
2a9e4e9a32 Opening and closing balance in general ledger report 2013-12-19 19:11:53 +05:30
Rushabh Mehta
2b08985e16 Translations redesigned webnotes/wnframework#351 2013-12-19 18:27:48 +05:30
Pratik Vyas
a38a7b8e76 Merge pull request #1214 from anandpdoshi/hotfix-scheduler-errors
Send Email Digest, only if there is atleast one update for selected cate...
2013-12-19 01:12:17 -08:00
Anand Doshi
88eedb7397 Send Email Digest, only if there is atleast one update for selected categories 2013-12-19 14:07:39 +05:30
Pratik Vyas
605cc93c90 Merge branch 'develop' 2013-12-19 11:42:38 +05:30
Pratik Vyas
1644fce273 bumped to version 3.3.3 2013-12-19 12:12:38 +06:00
Pratik Vyas
8cc2bf7fcf Merge pull request #1213 from pdvyas/email-digest-error
fix company email digest patch
2013-12-18 22:12:03 -08:00
Pratik Vyas
fe6409debf fix company email digest patch 2013-12-19 11:41:10 +05:30
Nabin Hait
edc58619d1 Merge pull request #1211 from nabinhait/hotfix
fixes in item validation
2013-12-18 21:28:25 -08:00
Nabin Hait
85800fa929 fixes in item validation 2013-12-19 10:57:43 +05:30
Nabin Hait
60ec0128a2 Merge pull request #1205 from akhileshdarjee/master
[fix] [issue] webnotes/erpnext#1191 - set expected delivery date in production order
2013-12-18 20:03:36 -08:00
Nabin Hait
90e0700e24 Merge pull request #1208 from nabinhait/hotfix
fixes in stock projected qty report
2013-12-18 05:46:03 -08:00
Nabin Hait
48156e3d8b fixes in stock projected qty report 2013-12-18 18:51:20 +05:30
Nabin Hait
8b353e5e15 Merge pull request #1207 from nabinhait/hotfix
Removed sales_order_no from no_copy in material request item
2013-12-18 01:24:02 -08:00
Nabin Hait
fcbd4d7638 Removed sales_order_no from no_copy in material request item 2013-12-18 14:53:36 +05:30
Pratik Vyas
9409efe02a Merge branch 'develop' 2013-12-18 14:40:36 +05:30
Pratik Vyas
b645a217fd bumped to version 3.3.2 2013-12-18 15:10:36 +06:00
Pratik Vyas
ef295d2977 Merge pull request #1203 from anandpdoshi/hotfix-scheduler-errors
[fix] scheduler error email digest
2013-12-18 01:10:12 -08:00
Akhilesh Darjee
2d0e31b479 [fix] [minor] merge conflict fixed 2013-12-18 13:32:37 +05:30
Akhilesh Darjee
2678ed181a [fix] [issue] webnotes/erpnext#1191 - set expected delivery date in production order 2013-12-18 13:28:40 +05:30
Anand Doshi
1fce0b1f79 [fix] scheduler error email digest 2013-12-18 13:22:18 +05:30
Pratik Vyas
649660d9f0 Merge branch 'develop' 2013-12-18 12:19:28 +05:30
Pratik Vyas
797e0713ea bumped to version 3.3.1 2013-12-18 12:49:28 +06:00
Nabin Hait
6a0ffabbd0 Merge pull request #1201 from nabinhait/hotfix
Hotfix
2013-12-17 21:48:18 -08:00
Nabin Hait
56f58cfa68 Merge pull request #1202 from anandpdoshi/hotfix-backup-manager
[fix] backup manager
2013-12-17 21:48:03 -08:00
Anand Doshi
677ef0c3cf [fix] backup manager 2013-12-18 10:56:43 +05:30
Nabin Hait
64367a905a Merge branch 'develop' of github.com:webnotes/erpnext into hotfix 2013-12-18 10:42:04 +05:30
Nabin Hait
c565de2c12 Removed schedule_date from no_copy in purchase receipt item 2013-12-18 10:41:29 +05:30
Nabin Hait
908f2dc0fd Merge pull request #1200 from anandpdoshi/hotfix-scheduler-errors
[patch] Email Digest
2013-12-17 20:13:56 -08:00
Anand Doshi
0b1a8e13fd [patch] Email Digest 2013-12-18 07:53:49 +05:30
Pratik Vyas
a1ae0270e3 Merge branch 'develop' 2013-12-17 18:03:05 +05:30
Pratik Vyas
4d806c5fcb bumped to version 3.3.0 2013-12-17 18:33:05 +06:00
Anand Doshi
cf6e13d2fe Merge pull request #1148 from nabinhait/reports
Reports
2013-12-17 04:26:36 -08:00
Nabin Hait
ceb940ec17 [reports] [minor] patch to delete old report files 2013-12-17 17:53:05 +05:30
Nabin Hait
a4080eb840 [fix] [minor] item validation 2013-12-17 17:45:50 +05:30
Nabin Hait
90f33c3249 Merge pull request #1196 from nabinhait/hotfix
[fix] [minor] precision in gl entry based on currency format
2013-12-17 03:20:02 -08:00
Nabin Hait
592d27e7f1 [reports] general ledger: grid report to script report 2013-12-17 16:20:11 +05:30
Nabin Hait
8b7da55617 Merge branch 'develop' of github.com:webnotes/erpnext into reports 2013-12-17 16:10:06 +05:30
Nabin Hait
57e89ff6f1 [reports] general ledger: grid report to script report 2013-12-17 16:09:21 +05:30
Nabin Hait
8a98fc7e79 Merge pull request #1194 from akhileshdarjee/master
[feature] create material request sales order wise from production planning tool
2013-12-17 01:39:19 -08:00
Akhilesh Darjee
d94bab0e1d [fix] [minor] sql query related changes in purchase common 2013-12-17 15:05:37 +05:30
Nabin Hait
9d6e10c910 [fix] [minor] precision in gl entry based on currency format 2013-12-17 14:45:55 +05:30
Akhilesh Darjee
9ee20e8f5a [fix] [minor] material request sales order wise through production planning tool 2013-12-17 13:07:00 +05:30
Pratik Vyas
3ddd0d89df Merge pull request #1181 from anandpdoshi/hotfix-allow-roles
[minor] [fix] allow roles
2013-12-16 22:19:34 -08:00
Pratik Vyas
60ec93811e Merge pull request #1190 from anandpdoshi/hotfix-scheduler-errors
[minor] [scheduler] send scheduler errors as email digest
2013-12-16 22:18:43 -08:00
Akhilesh Darjee
dbb69dacff Merge branch 'master' of github.com:webnotes/erpnext 2013-12-16 19:33:20 +05:30
Akhilesh Darjee
9ff9dafd00 [feature] create material request sales order wise from production planning tool 2013-12-16 19:32:22 +05:30
Rushabh Mehta
91e9822f65 fixed test cases webnotes/wnframework#351 2013-12-16 18:43:42 +05:30
Nabin Hait
ea4f66791e Merge branch 'develop' of github.com:webnotes/erpnext into reports 2013-12-16 15:18:34 +05:30
Anand Doshi
b0636edaf7 [minor] [scheduler] send scheduler errors as email digest 2013-12-16 13:56:03 +05:30
Rushabh Mehta
c652a6254f Rewrote hooks for scheduler, notifications, boot, session, login, webpage webnotes/wnframework#351 2013-12-16 12:48:38 +05:30
Nabin Hait
c55b55d959 Merge pull request #1186 from nabinhait/hotfix
[fix] [minor] email digest: consider only submitted documents to get new...
2013-12-14 22:55:17 -08:00
Nabin Hait
585e936263 [fix] [minor] email digest: consider only submitted documents to get new sum of amount 2013-12-15 12:17:40 +05:30
Pratik Vyas
42c7c5b547 Merge branch 'develop' 2013-12-14 17:59:58 +05:30
Pratik Vyas
ba31ecc611 bumped to version 3.2.3 2013-12-14 18:29:58 +06:00
Nabin Hait
2d46d3cd04 Merge pull request #1184 from nabinhait/hotfix
[fix] [minor] match condition fixes for customer and supplier
2013-12-14 04:06:46 -08:00
Nabin Hait
1d361cf26c [minor] merge conflict 2013-12-14 17:36:22 +05:30
Nabin Hait
45a35ced33 [fix] [minor] match condition fixes for customer and supplier 2013-12-14 17:29:42 +05:30
Nabin Hait
fe5dcd49ae Merge pull request #1183 from nabinhait/hotfix
[fix] [minor] update naming series
2013-12-14 03:50:02 -08:00
Nabin Hait
70cd146bb5 [fix] [minor] update naming series 2013-12-14 17:16:21 +05:30
Pratik Vyas
99e641e4c7 Merge branch 'develop' 2013-12-14 00:45:37 +05:30
Pratik Vyas
dea59996d8 bumped to version 3.2.2 2013-12-14 01:15:37 +06:00
Rushabh Mehta
30430796c7 notifications via hooks webnotes/wnframework#351 2013-12-13 15:33:40 +05:30
Rushabh Mehta
6de403f2be added manifest, hooks and fixed requires webnotes/wnframework#351 2013-12-13 14:10:14 +05:30
Anand Doshi
64c512dd61 [minor] [fix] allow roles 2013-12-13 12:34:52 +05:30
Nabin Hait
5534b59d07 Merge pull request #1180 from nabinhait/hotfix
[fix] [minor] fixes in packed item
2013-12-12 22:11:22 -08:00
Nabin Hait
1251a93fc5 [fix] [minor] fixes in packed item 2013-12-13 11:40:16 +05:30
Rushabh Mehta
1f84799f2d install, web serving, session booting webnotes/wnframework#351 2013-12-12 19:12:19 +05:30
Rushabh Mehta
d2dd83c3a3 fixed template loader webnotes/wnframework#351 2013-12-12 13:57:58 +05:30
Pratik Vyas
1b23208779 [minor] get bundle working, almost 2013-12-12 10:44:38 +05:30
Rushabh Mehta
39bb8e2ed4 step 0: install 2013-12-11 15:32:14 +05:30
Rushabh Mehta
e460aa277b added setup.py 2013-12-11 11:32:21 +05:30
Rushabh Mehta
b234a3545a moved config.json inside erpnext 2013-12-11 10:55:55 +05:30
Rushabh Mehta
afea58b7a1 moved modules inside erpnext folder 2013-12-11 10:43:52 +05:30
Nabin Hait
4a8930fc67 [report]general ledger report migrated to script report 2013-12-06 18:07:23 +05:30
Nabin Hait
c313ca99ff [report]general ledger report migrated to script report 2013-12-06 16:36:23 +05:30
Nabin Hait
86da17d5d9 [minor] removed mandatory validation in server side 2013-12-06 13:23:31 +05:30
Nabin Hait
ce2dfadfbd Merge branch 'develop' of github.com:webnotes/erpnext into reports 2013-12-06 12:10:37 +05:30
Nabin Hait
01d2811ccd [report] migrated stock level report to script report and renamed to Stock Projected Qty 2013-12-04 19:16:50 +05:30
Nabin Hait
690c75fa0d [report] migrated stock level report to script report and renamed to Stock Projected Qty 2013-12-04 19:16:32 +05:30
Nabin Hait
462401c4df [minor] fixed conflict 2013-12-04 17:26:22 +05:30
Nabin Hait
1b5de63163 Merge branch 'hotfix' into reports 2013-12-04 17:23:45 +05:30
Nabin Hait
9b0a6d426c [patch] [minor] deleted old stock ledger and stock ageing page 2013-12-04 17:18:05 +05:30
Nabin Hait
bc6df5c71b [patch] [minor] deleted old stock ledger and stock ageing page 2013-12-04 16:42:23 +05:30
Nabin Hait
47e40242bd [minor] removed old stock ageing grid report 2013-12-02 23:13:36 +05:30
Nabin Hait
7eb90d3d5c Stock Ageing report migated to Script report 2013-12-02 20:12:18 +05:30
2902 changed files with 294350 additions and 306412 deletions

2
.gitignore vendored
View File

@@ -5,3 +5,5 @@ conf.py
locale
latest_updates.json
.wnf-lang-status
*.egg-info
dist/

37
.travis.yml Normal file
View File

@@ -0,0 +1,37 @@
language: python
python:
- "2.7"
services:
- mysql
install:
- sudo service mysql stop
- sudo apt-get install python-software-properties
- sudo apt-key adv --recv-keys --keyserver hkp://keyserver.ubuntu.com:80 0xcbcb082a1bb943db
- sudo add-apt-repository 'deb http://ftp.osuosl.org/pub/mariadb/repo/5.5/ubuntu precise main'
- sudo apt-get update
- sudo apt-get purge -y mysql-common
- sudo apt-get install mariadb-server mariadb-common libmariadbclient-dev
- ./ci/fix-mariadb.sh
- wget http://downloads.sourceforge.net/project/wkhtmltopdf/0.12.1/wkhtmltox-0.12.1_linux-precise-amd64.deb
- sudo dpkg -i wkhtmltox-0.12.1_linux-precise-amd64.deb
- CFLAGS=-O0 pip install git+https://github.com/frappe/frappe.git@develop
- CFLAGS=-O0 pip install --editable .
before_script:
- mysql -e 'create database test_frappe'
- echo "USE mysql;\nCREATE USER 'test_frappe'@'localhost' IDENTIFIED BY 'test_frappe';\nFLUSH PRIVILEGES;\n" | mysql -u root
- echo "USE mysql;\nGRANT ALL PRIVILEGES ON \`test_frappe\`.* TO 'test_frappe'@'localhost';\n" | mysql -u root
script:
- cd ./test_sites/
- frappe --use test_site
- frappe --reinstall
- frappe --install_app erpnext --verbose
- frappe -b
- frappe --build_website
- frappe --serve_test &
- frappe --verbose --run_tests --app erpnext

View File

@@ -1,16 +1,23 @@
# Contributing to ERPNext
# Contributing to Frappe / ERPNext
### Update 16-Sep-14
Please send pull requests to branch v5.0
## Reporting issues
We only accept issues that are bug reports or feature requests. Bugs must be isolated and reproducible problems. Please read the following guidelines before opening any issue.
1. **Search for existing issues.** We want to avoid duplication, and you'd help us out a lot by first checking if someone else has reported the same issue. The issue may have already been resolved with a fix available.
1. **Search for existing issues:** We want to avoid duplication, and you'd help us out a lot by first checking if someone else has reported the same issue. The issue may have already been resolved with a fix available.
1. **Report each issue separately:** Don't club multiple, unreleated issues in one note.
1. **Mention the version number:** Please mention the application, browser and platform version numbers.
### Issues
1. **Share as much information as possible.** Include operating system and version, browser and version, when did you last update ERPNext, how is it customized, etc. where appropriate. Also include steps to reproduce the bug.
1. Consider adding screenshots annotated with what goes wrong.
1. If you are reporting an issue from the browser, Open the Javascript Console and paste us any error messages you see.
1. **Share as much information as possible:** Include operating system and version, browser and version, when did you last update ERPNext, how is it customized, etc. where appropriate. Also include steps to reproduce the bug.
1. **Include Screenshots if possible:** Consider adding screenshots annotated with what goes wrong.
1. **Find and post the trace for bugs:** If you are reporting an issue from the browser, Open the Javascript Console and paste us any error messages you see.
### Feature Requests
@@ -37,14 +44,10 @@ that function to accommodate your use case.
DocTypes are easy to create but hard to maintain. If you find that there is a another DocType with a similar functionality, then please try and extend that functionality. For example, by adding a "type" field to classify the new type of record.
#### Don't Send Trivial Requests
Don't send pull requests for fixing a simple typo in a code comment.
#### Tabs or spaces?
Tabs!
### Copyright
Please see README.md
Please see README.md

20
MANIFEST.in Normal file
View File

@@ -0,0 +1,20 @@
include MANIFEST.in
include requirements.txt
include *.json
include *.md
include *.py
include *.txt
include .travis.yml
recursive-include erpnext *.txt
recursive-include erpnext *.css
recursive-include erpnext *.csv
recursive-include erpnext *.html
recursive-include erpnext *.ico
recursive-include erpnext *.js
recursive-include erpnext *.json
recursive-include erpnext *.md
recursive-include erpnext *.png
recursive-include erpnext *.py
recursive-include erpnext *.svg
recursive-include erpnext/public *
recursive-exclude * *.pyc

View File

@@ -1,10 +1,10 @@
# ERPNext - Open Source ERP for small, medium sized businesses
# ERPNext - Open Source ERP for small, medium sized businesses [![Build Status](https://travis-ci.org/frappe/erpnext.png)](https://travis-ci.org/frappe/erpnext)
[https://erpnext.com](https://erpnext.com)
Includes Accounting, Inventory, CRM, Sales, Purchase, Projects, HRMS. Built on Python / MySQL.
Includes Accounting, Inventory, CRM, Sales, Purchase, Projects, HRMS. Built on Python / MariaDB.
ERPNext is built on [wnframework](https://github.com/webnotes/wnframework)
ERPNext is built on [frappe](https://github.com/frappe/frappe) Python Framework.
- [User Guide](http://erpnext.org/user-guide.html)
- [Getting Help](http://erpnext.org/getting-help.html)
@@ -13,28 +13,21 @@ ERPNext is built on [wnframework](https://github.com/webnotes/wnframework)
---
### Install
Use the bench, https://github.com/frappe/bench
### Admin Login
1. go to "/login"
1. Administrator user name: "Administrator"
1. Administrator password: "admin"
### Download and Install
##### Virtual Image:
- [ERPNext Download](http://erpnext.com/erpnext-download)
##### On Linux:
1. Switch to root user using `sudo su`
1. create a folder where you want to install erpnext
1. go to the new folder
1. `wget https://raw.github.com/webnotes/erpnext/master/install_erpnext.py`
1. `python install_erpnext.py`
[See installation notes](https://github.com/webnotes/erpnext/wiki/How-to-Install-ERPNext)
##### Patch and update
To patch and update from the latest git repository the erpnext folder and run.
You will have to set your origin in git remote
$ lib/wnf.py --update origin master
- [ERPNext Download](http://erpnext.com/download)
---
@@ -42,7 +35,7 @@ You will have to set your origin in git remote
GNU/General Public License (see LICENSE.txt)
The ERPNext code is licensed as GNU General Public License (v3) and the Documentation is licensed as Creative Commons (CC-BY-SA-3.0) and the copyright is owned by Web Notes Technologies Pvt Ltd (Web Notes) and Contributors.
The ERPNext code is licensed as GNU General Public License (v3) and the Documentation is licensed as Creative Commons (CC-BY-SA-3.0) and the copyright is owned by Web Notes Technologies Pvt Ltd (Web Notes) and Contributors.
---
@@ -67,7 +60,7 @@ We will grant permission to use the ERPNext name and logo for projects that meet
- The primary purpose of your project is to promote the spread and improvement of the ERPNext software.
- Your project is non-commercial in nature (it can make money to cover its costs or contribute to non-profit entities, but it cannot be run as a for-profit project or business).
Your project neither promotes nor is associated with entities that currently fail to comply with the GPL license under which ERPNext is distributed.
- If your project meets these criteria, you will be permitted to use the ERPNext name and logo to promote your project in any way you see fit with one exception: Please do not use ERPNext as part of a domain name.
- If your project meets these criteria, you will be permitted to use the ERPNext name and logo to promote your project in any way you see fit with one exception: Please do not use ERPNext as part of a domain name.
Use of the ERPNext name and logo is additionally allowed in the following situations:

View File

@@ -1,21 +0,0 @@
[
{
"owner": "Administrator",
"docstatus": 0,
"creation": "2012-04-11 13:16:56",
"modified_by": "Administrator",
"modified": "2012-04-13 12:24:20"
},
{
"doc_type": "Journal Voucher",
"name": "__common__",
"module": "Accounts",
"doctype": "Print Format",
"html": "<!-- p.big {line-height: 200%} .noborder td { border: 0px solid #fff; } -->\n<div style=\"position: relative;\">\n<h3><script>doc.company</script><br /> <br /> \n<hr />\nPAYMENT ADVICE</h3>\n<table class=\"noborder\" style=\"width: 100%;\">\n<tbody>\n<tr>\n<td style=\"vertical-align: top;\" width=\"50%\">To :<br />\n<script type=\"text/javascript\">// <![CDATA[\ndoc.pay_to_recd_from\n// ]]></script>\n</td>\n<td width=\"50%\">\n<table class=\"noborder\" width=\"100%\">\n<tbody>\n<tr>\n<td width=\"30%\">Voucher No :</td>\n<td width=\"70%\">\n<script type=\"text/javascript\">// <![CDATA[\ndoc.name\n// ]]></script>\n</td>\n</tr>\n<tr>\n<td width=\"30%\">Voucher Date :</td>\n<td width=\"70%\">\n<script type=\"text/javascript\">// <![CDATA[\ndate.str_to_user(doc.voucher_date)\n// ]]></script>\n</td>\n</tr>\n<tr>\n<td width=\"30%\">Cheque No :</td>\n<td width=\"70%\">\n<script type=\"text/javascript\">// <![CDATA[\ndate.str_to_user(doc.cheque_no)\n// ]]></script>\n</td>\n</tr>\n<tr>\n<td width=\"30%\">Cheque Date :</td>\n<td width=\"70%\">\n<script type=\"text/javascript\">// <![CDATA[\ndate.str_to_user(doc.cheque_date)\n// ]]></script>\n</td>\n</tr>\n</tbody>\n</table>\n</td>\n</tr>\n</tbody>\n</table>\n<br /> <strong>We are pleased to enclose our cheque in full/part Settlement of your under noted bills</strong> <br /> \n<hr />\n<table class=\"noborder\" width=\"100%\">\n<tbody>\n<tr>\n<td width=\"70%\">&nbsp;</td>\n<td width=\"15%\">Total :</td>\n<td class=\"pos_left\" width=\"15%\">\n<script type=\"text/javascript\">// <![CDATA[\ndoc.total_amount\n// ]]></script>\n</td>\n</tr>\n<tr>\n<td colspan=\"3\">Narration :\n<script type=\"text/javascript\">// <![CDATA[\nreplace_newlines(doc.remark)\n// ]]></script>\n<br /><br /><br /></td>\n</tr>\n</tbody>\n</table>\n<div style=\"position: absolute; top: 14cm; left: 0cm;\">Prepared By</div>\n<div style=\"position: absolute; top: 14cm; left: 5.5cm;\">Authorised Signatory</div>\n<div style=\"position: absolute; top: 14cm; left: 11cm;\">Received Payment as Above</div>\n<div style=\"position: absolute; top: 16.4cm; left: 5.9cm;\"><strong>_____________</strong></div>\n<div style=\"position: absolute; top: 16.7cm; left: 6cm;\"><strong>A/c Payee</strong></div>\n<div style=\"position: absolute; top: 16.7cm; left: 5.9cm;\"><strong>_____________</strong></div>\n<div style=\"position: absolute; top: 16.9cm; left: 12cm;\">\n<script type=\"text/javascript\">// <![CDATA[\ndate.str_to_user(doc.cheque_date)\n// ]]></script>\n</div>\n<div style=\"position: absolute; top: 17.9cm; left: 1cm;\">\n<script type=\"text/javascript\">// <![CDATA[\ndoc.pay_to_recd_from\n// ]]></script>\n</div>\n<div style=\"position: absolute; top: 18.6cm; left: 1cm; width: 7cm;\">\n<script type=\"text/javascript\">// <![CDATA[\ndoc.total_amount_in_words\n// ]]></script>\n</div>\n<div style=\"position: absolute; top: 19.7cm; left: 12cm;\">\n<script type=\"text/javascript\">// <![CDATA[\ndoc.total_amount\n// ]]></script>\n</div>\n</div>",
"standard": "Yes"
},
{
"name": "Cheque Printing Format",
"doctype": "Print Format"
}
]

View File

@@ -1,22 +0,0 @@
[
{
"creation": "2011-12-21 11:08:55",
"docstatus": 0,
"modified": "2013-09-13 17:17:47",
"modified_by": "Administrator",
"owner": "Administrator"
},
{
"doc_type": "Sales Invoice",
"doctype": "Print Format",
"html": "<html>\n<head>\n<!--Item Table, Totals and Other Charges-->\n<script>\nfunction get_print_format() {\n var oc = getchildren('Sales Invoice Item', doc.name, 'entries');\n\tvar rows = '<table width=\"100%\" cellpadding=\"0\" class=\"cart\">\\\n <tr>\\\n <td colspan=\"3\"><hr></td>\\\n </tr>\\\n <tr>\\\n <td width=\"60%\" align=\"left\">ITEM NAME.</td>\\\n <td width=\"10%\" align=\"right\">QTY</td>\\\n <td width=\"30%\" align=\"right\">AMOUNT</td>\\\n </tr>\\\n <tr>\\\n <td colspan=\"3\"><hr></td>\\\n </tr>';\n\tfor (var x=0; x<oc.length; x++) {\n console.log(oc[x].item_code!=oc[x].item_name);\n\t\trows += '<tr>\\\n <td align=\"left\">' + oc[x].item_code + \n (oc[x].item_code!=oc[x].item_name ? ('<br>' + oc[x].item_name) : '') + '</td>\\\n <td align=\"right\" style=\"vertical-align:top;\">' + oc[x].qty + '</td>\\\n <td align=\"right\" valign=\"top\">' + format_currency(oc[x].export_amount, doc.currency) + '</td>\\\n </tr>';\n\t}\n rows += '<tr>\\\n <td colspan=\"3\"><hr></td>\\\n </tr>\\\n <tr>\\\n <td colspan=\"2\" align=\"right\">Net Total</td>\\\n <td align=\"right\">' + format_currency(doc.net_total_export, doc.currency) + '</td>\\\n </tr>';\n if (doc.other_charges_total_export != 0) {\n var taxes = wn.model.get_children(\"Sales Taxes and Charges\", doc.name, \"other_charges\", \"Sales Invoice\");\n\t\t$.each(taxes, function(i, d) {\n\t\t\trows += '<tr>\\\n \t\t\t\t<td colspan=\"2\" align=\"right\">' + d.description + '</td>\\\n \t\t\t\t<td style=\"text-align: right;\">' + format_currency(d.tax_amount / doc.conversion_rate, doc.currency) + '</td>\\\n \t\t\t<tr>';\n\t\t});\n }\n rows += '<tr>\\\n <td colspan=\"2\" align=\"right\" style=\"vertical-align:middle;\">Grand Total</td>\\\n <td align=\"right\"><hr width=\"90%\" align=\"right\">' + format_currency(doc.grand_total_export, doc.currency) + '<br>\\\n <hr width=\"90%\" align=\"right\"></td>\\\n </tr>\\\n <tr>\\\n <td align=\"center\" colspan=\"3\">Thank You. Please visit again.</td>\\\n </tr>\\\n </table>';\n\treturn rows;\n}\n</script>\n<style>\n table, tr, td, div, p {\n font-family: Monospace;\n line-height: 200%;\n }\n h1, h2, h3, h4, h5, h6 {\n text-align: center;\n }\n\t@media screen {\n\t\tbody {\n\t\t\twidth: 4in;\n\t\t}\n\t}\n</style>\n</head>\n\n<body>\n<table width=\"100%\" cellpadding=\"4\">\n <tr>\n <td align=\"left\">RECEIPT NO: <script>doc.name</script></td>\n <td align=\"right\">DATE: <script>date.str_to_user(doc.posting_date)</script></td>\n </tr>\n <tr>\n <td>M/s <script>doc.customer</script></td>\n </tr>\n</table>\n<!--Item Table & Totals-->\n<div><script>get_print_format();</script></div>\n</body>\n</html>\n",
"module": "Accounts",
"name": "__common__",
"print_format_type": "Client",
"standard": "Yes"
},
{
"doctype": "Print Format",
"name": "POS Invoice"
}
]

View File

@@ -1,21 +0,0 @@
[
{
"creation": "2012-05-01 12:46:31",
"docstatus": 0,
"modified": "2013-01-21 18:40:20",
"modified_by": "Administrator",
"owner": "Administrator"
},
{
"doc_type": "Journal Voucher",
"doctype": "Print Format",
"html": "<h3 align=\"center\"><script>doc.select_print_heading || \"Payment Receipt Note\"</script></h3>\n\n<table class='simpletable'>\n<tr>\n<td><b> Receipt No.: </b></td>\n<td><script>doc.name</script></td>\n</tr>\n<tr>\n<td><b> Date : </b></td>\n<td><script>date.str_to_user(doc.voucher_date)</script></td>\n</tr> \n<tr>\n<td><b> Remark: </b></td>\n<td><script> doc.remark </script></td>\n</tr>\n<tr>\n<td><b> Received From: </b></td>\n<td><b><script> doc.pay_to_recd_from </script></b></td>\n</tr>\n</table>\n<br>\n\n<div><b><script>doc.total_amount</script></b> </td></div><br>\n<div style=\"text-align:left\"><b><script>doc.total_amount_in_words</script></b></div><br>\n<br>\n<table class=\"noborder\">\n<tr>\n<td style = \"text-align = right;\"><h3>For <script>doc.company</script>,</h3><br><div>(Authorised Signatory)</div></td>\n</tr>\n</table>",
"module": "Accounts",
"name": "__common__",
"standard": "Yes"
},
{
"doctype": "Print Format",
"name": "Payment Receipt Voucher"
}
]

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

View File

@@ -1,135 +0,0 @@
{%- if doc.letter_head -%}
{{ webnotes.conn.get_value("Letter Head", doc.letter_head, "content") }}
{%- endif -%}
<!-- Page Layout Settings -->
<div class='common page-header'>
<table class='header-table' cellspacing=0>
<thead>
<tr><td colspan="2"><h1>{{ doc.select_print_heading or 'Invoice' }}</h1></td></tr>
<tr><td colspan="2"><h3>{{ doc.name }}</h3></td></tr>
</thead>
<tbody>
<tr>
<td width=60%><table width=100% cellspacing=0><tbody>
<tr>
<td width=39%><b>Name</b></td>
<td>{{ doc.customer_name }}</td>
</tr>
<tr>
<td><b>Address</b></td>
<td>{{ doc.address_display.replace("\n", "<br>") }}</td>
</tr>
<tr>
<td><b>Contact</b></td>
<td>{{ doc.contact_display }}</td>
</tr>
</tbody></table></td>
<td><table width=100% cellspacing=0><tbody>
<tr>
<td width=40%><b>Invoice Date</b></td>
<td>{{ utils.formatdate(doc.posting_date) }}</td>
<tr>
{%- if doc.convert_into_recurring_invoice and doc.recurring_id -%}
<tr>
<td width=40%><b>Invoice Period</b></td>
<td>{{ (utils.formatdate(doc.invoice_period_from_date)) +
' to ' + utils.formatdate(doc.invoice_period_to_date) }}</td>
<tr>
{%- endif -%}
<tr>
<td><b>Due Date</b></td>
<td>{{ utils.formatdate(doc.due_date) }}</td>
<tr>
</tbody></table></td>
</tr>
</tbody>
<tfoot>
</tfoot>
</table>
</div>
<div class='common page-body'>
<!--
Page Body will contain
+ table 2
- Sales Invoice Data
-->
<table class="table table-bordered">
<tbody>
<tr>
<th>Sr</th>
<th>Item Name</th>
<th>Description</th>
<th>Qty</th>
<th>UoM</th>
<th>Basic Rate</th>
<th>Amount</th>
</tr>
{%- for row in doclist.get({"doctype":"Sales Invoice Item"}) %}
<tr>
<td style="width: 3%;">{{ row.idx }}</td>
<td style="width: 20%;">{{ row.item_name }}</td>
<td style="width: 37%;">{{ row.description }}</td>
<td style="width: 5%; text-align: right;">{{ row.qty }}</td>
<td style="width: 5%;">{{ row.stock_uom }}</td>
<td style="width: 15%; text-align: right;">{{ utils.fmt_money(row.export_rate, currency=doc.currency) }}</td>
<td style="width: 15%; text-align: right;">{{ utils.fmt_money(row.export_amount, currency=doc.currency) }}</td>
</tr>
{% endfor -%}
</tbody>
</table>
</div>
<div class='common page-footer'>
<!--
Page Footer will contain
+ table 3
- Terms and Conditions
- Total Rounded Amount Calculation
- Total Rounded Amount in Words
-->
<table class='footer-table' width=100% cellspacing=0>
<thead>
</thead>
<tbody>
<tr>
<td width=60% style='padding-right: 10px;'>
<b>Terms, Conditions &amp; Other Information:</b><br />
{{ doc.terms }}
</td>
<td>
<table cellspacing=0 width=100%>
<tbody>
<tr>
<td>Net Total</td>
<td width=40% style="text-align: right;">{{
utils.fmt_money(doc.net_total_export, currency=doc.currency)
}}</td>
</tr>
{%- for charge in doclist.get({"doctype":"Sales Taxes and Charges"}) -%}
{%- if not charge.included_in_print_rate -%}
<tr>
<td>{{ charge.description }}</td>
<td style="text-align: right;">{{ utils.fmt_money(charge.tax_amount / doc.conversion_rate, currency=doc.currency) }}</td>
</tr>
{%- endif -%}
{%- endfor -%}
<tr>
<td>Grand Total</td>
<td style="text-align: right;">{{ utils.fmt_money(doc.grand_total_export, currency=doc.currency) }}</td>
</tr>
<tr style='font-weight: bold'>
<td>Rounded Total</td>
<td style="text-align: right;">{{ utils.fmt_money(doc.rounded_total_export, currency=doc.currency) }}</td>
</tr>
</tbody>
</table>
<br /><b>In Words</b><br />
<i>{{ doc.in_words_export }}</i>
</td>
</tr>
</tbody>
<tfoot>
</tfoot>
</table>
</div>

View File

@@ -1,20 +0,0 @@
[
{
"creation": "2013-03-21 15:24:28",
"docstatus": 0,
"modified": "2013-03-21 15:26:21",
"modified_by": "Administrator",
"owner": "Administrator"
},
{
"doc_type": "Sales Invoice",
"doctype": "Print Format",
"module": "Accounts",
"name": "__common__",
"standard": "Yes"
},
{
"doctype": "Print Format",
"name": "SalesInvoice"
}
]

View File

@@ -1,145 +0,0 @@
// Copyright (c) 2013, Web Notes Technologies Pvt. Ltd. and Contributors
// License: GNU General Public License v3. See license.txt
// Onload
// -----------------------------------------
cur_frm.cscript.onload = function(doc, cdt, cdn) {
}
// Refresh
// -----------------------------------------
cur_frm.cscript.refresh = function(doc, cdt, cdn) {
if(doc.__islocal) {
msgprint(wn._("Please create new account from Chart of Accounts."));
throw "cannot create";
}
cur_frm.toggle_display('account_name', doc.__islocal);
// hide fields if group
cur_frm.toggle_display(['account_type', 'master_type', 'master_name',
'credit_days', 'credit_limit', 'tax_rate'], doc.group_or_ledger=='Ledger')
// disable fields
cur_frm.toggle_enable(['account_name', 'debit_or_credit', 'group_or_ledger',
'is_pl_account', 'company'], false);
if(doc.group_or_ledger=='Ledger') {
wn.model.with_doc("Accounts Settings", "Accounts Settings", function (name) {
var accounts_settings = wn.model.get_doc("Accounts Settings", name);
var display = accounts_settings["frozen_accounts_modifier"]
&& in_list(user_roles, accounts_settings["frozen_accounts_modifier"]);
cur_frm.toggle_display('freeze_account', display);
});
}
// read-only for root accounts
if(!doc.parent_account) {
cur_frm.perm = [[1,0,0], [1,0,0]];
cur_frm.set_intro(wn._("This is a root account and cannot be edited."));
} else {
// credit days and type if customer or supplier
cur_frm.set_intro(null);
cur_frm.toggle_display(['credit_days', 'credit_limit'], in_list(['Customer', 'Supplier'],
doc.master_type));
cur_frm.cscript.master_type(doc, cdt, cdn);
cur_frm.cscript.account_type(doc, cdt, cdn);
// show / hide convert buttons
cur_frm.cscript.add_toolbar_buttons(doc);
}
}
cur_frm.cscript.master_type = function(doc, cdt, cdn) {
cur_frm.toggle_display(['credit_days', 'credit_limit'], in_list(['Customer', 'Supplier'],
doc.master_type));
cur_frm.toggle_display('master_name', doc.account_type=='Warehouse' ||
in_list(['Customer', 'Supplier'], doc.master_type));
}
// Fetch parent details
// -----------------------------------------
cur_frm.add_fetch('parent_account', 'debit_or_credit', 'debit_or_credit');
cur_frm.add_fetch('parent_account', 'is_pl_account', 'is_pl_account');
// Hide tax rate based on account type
// -----------------------------------------
cur_frm.cscript.account_type = function(doc, cdt, cdn) {
if(doc.group_or_ledger=='Ledger') {
cur_frm.toggle_display(['tax_rate'], doc.account_type == 'Tax');
cur_frm.toggle_display('master_type', cstr(doc.account_type)=='');
cur_frm.toggle_display('master_name', doc.account_type=='Warehouse' ||
in_list(['Customer', 'Supplier'], doc.master_type));
}
}
// Hide/unhide group or ledger
// -----------------------------------------
cur_frm.cscript.add_toolbar_buttons = function(doc) {
cur_frm.appframe.add_button(wn._('Chart of Accounts'),
function() { wn.set_route("Accounts Browser", "Account"); }, 'icon-sitemap')
if (cstr(doc.group_or_ledger) == 'Group') {
cur_frm.add_custom_button(wn._('Convert to Ledger'),
function() { cur_frm.cscript.convert_to_ledger(); }, 'icon-retweet')
} else if (cstr(doc.group_or_ledger) == 'Ledger') {
cur_frm.add_custom_button(wn._('Convert to Group'),
function() { cur_frm.cscript.convert_to_group(); }, 'icon-retweet')
cur_frm.appframe.add_button(wn._('View Ledger'), function() {
wn.route_options = {
"account": doc.name,
"from_date": sys_defaults.year_start_date,
"to_date": sys_defaults.year_end_date
};
wn.set_route("general-ledger");
}, "icon-table");
}
}
// Convert group to ledger
// -----------------------------------------
cur_frm.cscript.convert_to_ledger = function(doc, cdt, cdn) {
return $c_obj(cur_frm.get_doclist(),'convert_group_to_ledger','',function(r,rt) {
if(r.message == 1) {
cur_frm.refresh();
}
});
}
// Convert ledger to group
// -----------------------------------------
cur_frm.cscript.convert_to_group = function(doc, cdt, cdn) {
return $c_obj(cur_frm.get_doclist(),'convert_ledger_to_group','',function(r,rt) {
if(r.message == 1) {
cur_frm.refresh();
}
});
}
cur_frm.fields_dict['master_name'].get_query = function(doc) {
if (doc.master_type || doc.account_type=="Warehouse") {
var dt = doc.master_type || "Warehouse";
return {
doctype: dt,
query: "accounts.doctype.account.account.get_master_name",
filters: {
"master_type": dt,
"company": doc.company
}
}
}
}
cur_frm.fields_dict['parent_account'].get_query = function(doc) {
return {
filters: {
"group_or_ledger": "Group",
"company": doc.company
}
}
}

View File

@@ -1,245 +0,0 @@
# Copyright (c) 2013, Web Notes Technologies Pvt. Ltd. and Contributors
# License: GNU General Public License v3. See license.txt
from __future__ import unicode_literals
import webnotes
from webnotes.utils import flt, fmt_money, cstr, cint
from webnotes import msgprint, _
get_value = webnotes.conn.get_value
class DocType:
def __init__(self,d,dl):
self.doc, self.doclist = d,dl
self.nsm_parent_field = 'parent_account'
def autoname(self):
self.doc.name = self.doc.account_name.strip() + ' - ' + \
webnotes.conn.get_value("Company", self.doc.company, "abbr")
def get_address(self):
return {
'address': webnotes.conn.get_value(self.doc.master_type,
self.doc.master_name, "address")
}
def validate(self):
self.validate_master_name()
self.validate_parent()
self.validate_duplicate_account()
self.validate_root_details()
self.validate_mandatory()
self.validate_warehouse_account()
self.validate_frozen_accounts_modifier()
if not self.doc.parent_account:
self.doc.parent_account = ''
def validate_master_name(self):
"""Remind to add master name"""
if self.doc.master_type in ('Customer', 'Supplier') or self.doc.account_type == "Warehouse":
if not self.doc.master_name:
msgprint(_("Please enter Master Name once the account is created."))
elif not webnotes.conn.exists(self.doc.master_type or self.doc.account_type,
self.doc.master_name):
webnotes.throw(_("Invalid Master Name"))
def validate_parent(self):
"""Fetch Parent Details and validation for account not to be created under ledger"""
if self.doc.parent_account:
par = webnotes.conn.sql("""select name, group_or_ledger, is_pl_account, debit_or_credit
from tabAccount where name =%s""", self.doc.parent_account)
if not par:
msgprint("Parent account does not exists", raise_exception=1)
elif par[0][0] == self.doc.name:
msgprint("You can not assign itself as parent account", raise_exception=1)
elif par[0][1] != 'Group':
msgprint("Parent account can not be a ledger", raise_exception=1)
elif self.doc.debit_or_credit and par[0][3] != self.doc.debit_or_credit:
msgprint("You can not move a %s account under %s account" %
(self.doc.debit_or_credit, par[0][3]), raise_exception=1)
if not self.doc.is_pl_account:
self.doc.is_pl_account = par[0][2]
if not self.doc.debit_or_credit:
self.doc.debit_or_credit = par[0][3]
def validate_max_root_accounts(self):
"""Raise exception if there are more than 4 root accounts"""
if webnotes.conn.sql("""select count(*) from tabAccount where
company=%s and ifnull(parent_account,'')='' and docstatus != 2""",
self.doc.company)[0][0] > 4:
webnotes.msgprint("One company cannot have more than 4 root Accounts",
raise_exception=1)
def validate_duplicate_account(self):
if self.doc.fields.get('__islocal') or not self.doc.name:
company_abbr = webnotes.conn.get_value("Company", self.doc.company, "abbr")
if webnotes.conn.sql("""select name from tabAccount where name=%s""",
(self.doc.account_name + " - " + company_abbr)):
msgprint("Account Name: %s already exists, please rename"
% self.doc.account_name, raise_exception=1)
def validate_root_details(self):
#does not exists parent
if webnotes.conn.exists("Account", self.doc.name):
if not webnotes.conn.get_value("Account", self.doc.name, "parent_account"):
webnotes.msgprint("Root cannot be edited.", raise_exception=1)
def validate_frozen_accounts_modifier(self):
old_value = webnotes.conn.get_value("Account", self.doc.name, "freeze_account")
if old_value and old_value != self.doc.freeze_account:
frozen_accounts_modifier = webnotes.conn.get_value( 'Accounts Settings', None,
'frozen_accounts_modifier')
if not frozen_accounts_modifier or \
frozen_accounts_modifier not in webnotes.user.get_roles():
webnotes.throw(_("You are not authorized to set Frozen value"))
def convert_group_to_ledger(self):
if self.check_if_child_exists():
msgprint("Account: %s has existing child. You can not convert this account to ledger" %
(self.doc.name), raise_exception=1)
elif self.check_gle_exists():
msgprint("Account with existing transaction can not be converted to ledger.",
raise_exception=1)
else:
self.doc.group_or_ledger = 'Ledger'
self.doc.save()
return 1
def convert_ledger_to_group(self):
if self.check_gle_exists():
msgprint("Account with existing transaction can not be converted to group.",
raise_exception=1)
elif self.doc.master_type or self.doc.account_type:
msgprint("Cannot covert to Group because Master Type or Account Type is selected.",
raise_exception=1)
else:
self.doc.group_or_ledger = 'Group'
self.doc.save()
return 1
# Check if any previous balance exists
def check_gle_exists(self):
return webnotes.conn.get_value("GL Entry", {"account": self.doc.name})
def check_if_child_exists(self):
return webnotes.conn.sql("""select name from `tabAccount` where parent_account = %s
and docstatus != 2""", self.doc.name)
def validate_mandatory(self):
if not self.doc.debit_or_credit:
msgprint("Debit or Credit field is mandatory", raise_exception=1)
if not self.doc.is_pl_account:
msgprint("Is PL Account field is mandatory", raise_exception=1)
def validate_warehouse_account(self):
if not cint(webnotes.defaults.get_global_default("auto_accounting_for_stock")):
return
if self.doc.account_type == "Warehouse":
old_warehouse = cstr(webnotes.conn.get_value("Account", self.doc.name, "master_name"))
if old_warehouse != cstr(self.doc.master_name):
if old_warehouse:
self.validate_warehouse(old_warehouse)
if self.doc.master_name:
self.validate_warehouse(self.doc.master_name)
else:
webnotes.throw(_("Master Name is mandatory if account type is Warehouse"))
def validate_warehouse(self, warehouse):
if webnotes.conn.get_value("Stock Ledger Entry", {"warehouse": warehouse}):
webnotes.throw(_("Stock transactions exist against warehouse ") + warehouse +
_(" .You can not assign / modify / remove Master Name"))
def update_nsm_model(self):
"""update lft, rgt indices for nested set model"""
import webnotes
import webnotes.utils.nestedset
webnotes.utils.nestedset.update_nsm(self)
def on_update(self):
self.validate_max_root_accounts()
self.update_nsm_model()
def get_authorized_user(self):
# Check logged-in user is authorized
if webnotes.conn.get_value('Accounts Settings', None, 'credit_controller') \
in webnotes.user.get_roles():
return 1
def check_credit_limit(self, total_outstanding):
# Get credit limit
credit_limit_from = 'Customer'
cr_limit = webnotes.conn.sql("""select t1.credit_limit from tabCustomer t1, `tabAccount` t2
where t2.name=%s and t1.name = t2.master_name""", self.doc.name)
credit_limit = cr_limit and flt(cr_limit[0][0]) or 0
if not credit_limit:
credit_limit = webnotes.conn.get_value('Company', self.doc.company, 'credit_limit')
credit_limit_from = 'Company'
# If outstanding greater than credit limit and not authorized person raise exception
if credit_limit > 0 and flt(total_outstanding) > credit_limit \
and not self.get_authorized_user():
msgprint("""Total Outstanding amount (%s) for <b>%s</b> can not be \
greater than credit limit (%s). To change your credit limit settings, \
please update in the <b>%s</b> master""" % (fmt_money(total_outstanding),
self.doc.name, fmt_money(credit_limit), credit_limit_from), raise_exception=1)
def validate_trash(self):
"""checks gl entries and if child exists"""
if not self.doc.parent_account:
msgprint("Root account can not be deleted", raise_exception=1)
if self.check_gle_exists():
msgprint("""Account with existing transaction (Sales Invoice / Purchase Invoice / \
Journal Voucher) can not be deleted""", raise_exception=1)
if self.check_if_child_exists():
msgprint("Child account exists for this account. You can not delete this account.",
raise_exception=1)
def on_trash(self):
self.validate_trash()
self.update_nsm_model()
def before_rename(self, old, new, merge=False):
# Add company abbr if not provided
from setup.doctype.company.company import get_name_with_abbr
new_account = get_name_with_abbr(new, self.doc.company)
# Validate properties before merging
if merge:
val = list(webnotes.conn.get_value("Account", new_account,
["group_or_ledger", "debit_or_credit", "is_pl_account"]))
if val != [self.doc.group_or_ledger, self.doc.debit_or_credit, self.doc.is_pl_account]:
webnotes.throw(_("""Merging is only possible if following \
properties are same in both records.
Group or Ledger, Debit or Credit, Is PL Account"""))
return new_account
def after_rename(self, old, new, merge=False):
if not merge:
webnotes.conn.set_value("Account", new, "account_name",
" - ".join(new.split(" - ")[:-1]))
else:
from webnotes.utils.nestedset import rebuild_tree
rebuild_tree("Account", "parent_account")
def get_master_name(doctype, txt, searchfield, start, page_len, filters):
conditions = (" and company='%s'"% filters["company"]) if doctype == "Warehouse" else ""
return webnotes.conn.sql("""select name from `tab%s` where %s like %s %s
order by name limit %s, %s""" %
(filters["master_type"], searchfield, "%s", conditions, "%s", "%s"),
("%%%s%%" % txt, start, page_len), as_list=1)
def get_parent_account(doctype, txt, searchfield, start, page_len, filters):
return webnotes.conn.sql("""select name from tabAccount
where group_or_ledger = 'Group' and docstatus != 2 and company = %s
and %s like %s order by name limit %s, %s""" %
("%s", searchfield, "%s", "%s", "%s"),
(filters["company"], "%%%s%%" % txt, start, page_len), as_list=1)

View File

@@ -1,320 +0,0 @@
[
{
"creation": "2013-01-30 12:49:46",
"docstatus": 0,
"modified": "2013-09-24 11:22:18",
"modified_by": "Administrator",
"owner": "Administrator"
},
{
"allow_copy": 1,
"allow_rename": 1,
"description": "Heads (or groups) against which Accounting Entries are made and balances are maintained.",
"doctype": "DocType",
"document_type": "Master",
"icon": "icon-money",
"in_create": 1,
"module": "Accounts",
"name": "__common__",
"search_fields": "debit_or_credit, group_or_ledger"
},
{
"doctype": "DocField",
"name": "__common__",
"parent": "Account",
"parentfield": "fields",
"parenttype": "DocType",
"permlevel": 0
},
{
"amend": 0,
"doctype": "DocPerm",
"name": "__common__",
"parent": "Account",
"parentfield": "permissions",
"parenttype": "DocType",
"read": 1,
"report": 1,
"submit": 0
},
{
"doctype": "DocType",
"name": "Account"
},
{
"doctype": "DocField",
"fieldname": "properties",
"fieldtype": "Section Break",
"label": "Account Details",
"oldfieldtype": "Section Break"
},
{
"doctype": "DocField",
"fieldname": "column_break0",
"fieldtype": "Column Break",
"width": "50%"
},
{
"doctype": "DocField",
"fieldname": "account_name",
"fieldtype": "Data",
"in_filter": 1,
"label": "Account Name",
"no_copy": 1,
"oldfieldname": "account_name",
"oldfieldtype": "Data",
"read_only": 1,
"reqd": 1,
"search_index": 1
},
{
"doctype": "DocField",
"fieldname": "level",
"fieldtype": "Int",
"hidden": 1,
"label": "Level",
"oldfieldname": "level",
"oldfieldtype": "Int",
"print_hide": 1,
"read_only": 1
},
{
"default": "Ledger",
"doctype": "DocField",
"fieldname": "group_or_ledger",
"fieldtype": "Select",
"in_filter": 1,
"label": "Group or Ledger",
"oldfieldname": "group_or_ledger",
"oldfieldtype": "Select",
"options": "\nLedger\nGroup",
"read_only": 1,
"reqd": 1,
"search_index": 1
},
{
"doctype": "DocField",
"fieldname": "debit_or_credit",
"fieldtype": "Data",
"in_filter": 1,
"label": "Debit or Credit",
"oldfieldname": "debit_or_credit",
"oldfieldtype": "Data",
"read_only": 1,
"search_index": 1
},
{
"doctype": "DocField",
"fieldname": "is_pl_account",
"fieldtype": "Select",
"in_filter": 1,
"label": "Is PL Account",
"oldfieldname": "is_pl_account",
"oldfieldtype": "Select",
"options": "Yes\nNo",
"read_only": 1,
"search_index": 1
},
{
"doctype": "DocField",
"fieldname": "company",
"fieldtype": "Link",
"in_filter": 1,
"label": "Company",
"oldfieldname": "company",
"oldfieldtype": "Link",
"options": "Company",
"read_only": 1,
"reqd": 1,
"search_index": 1
},
{
"doctype": "DocField",
"fieldname": "column_break1",
"fieldtype": "Column Break",
"width": "50%"
},
{
"doctype": "DocField",
"fieldname": "parent_account",
"fieldtype": "Link",
"label": "Parent Account",
"oldfieldname": "parent_account",
"oldfieldtype": "Link",
"options": "Account",
"search_index": 1
},
{
"description": "Setting Account Type helps in selecting this Account in transactions.",
"doctype": "DocField",
"fieldname": "account_type",
"fieldtype": "Select",
"in_filter": 1,
"label": "Account Type",
"oldfieldname": "account_type",
"oldfieldtype": "Select",
"options": "\nFixed Asset Account\nBank or Cash\nExpense Account\nTax\nIncome Account\nChargeable\nWarehouse",
"permlevel": 0,
"search_index": 0
},
{
"description": "Rate at which this tax is applied",
"doctype": "DocField",
"fieldname": "tax_rate",
"fieldtype": "Float",
"hidden": 0,
"label": "Rate",
"oldfieldname": "tax_rate",
"oldfieldtype": "Currency",
"reqd": 0
},
{
"description": "If the account is frozen, entries are allowed to restricted users.",
"doctype": "DocField",
"fieldname": "freeze_account",
"fieldtype": "Select",
"label": "Frozen",
"oldfieldname": "freeze_account",
"oldfieldtype": "Select",
"options": "No\nYes"
},
{
"doctype": "DocField",
"fieldname": "credit_days",
"fieldtype": "Int",
"hidden": 1,
"label": "Credit Days",
"oldfieldname": "credit_days",
"oldfieldtype": "Int",
"print_hide": 1
},
{
"doctype": "DocField",
"fieldname": "credit_limit",
"fieldtype": "Currency",
"hidden": 1,
"label": "Credit Limit",
"oldfieldname": "credit_limit",
"oldfieldtype": "Currency",
"options": "Company:company:default_currency",
"print_hide": 1
},
{
"description": "If this Account represents a Customer, Supplier or Employee, set it here.",
"doctype": "DocField",
"fieldname": "master_type",
"fieldtype": "Select",
"label": "Master Type",
"oldfieldname": "master_type",
"oldfieldtype": "Select",
"options": "\nSupplier\nCustomer\nEmployee"
},
{
"doctype": "DocField",
"fieldname": "master_name",
"fieldtype": "Link",
"label": "Master Name",
"oldfieldname": "master_name",
"oldfieldtype": "Link",
"options": "[Select]"
},
{
"default": "1",
"depends_on": "eval:doc.group_or_ledger==\"Ledger\"",
"doctype": "DocField",
"fieldname": "allow_negative_balance",
"fieldtype": "Check",
"label": "Allow Negative Balance"
},
{
"doctype": "DocField",
"fieldname": "lft",
"fieldtype": "Int",
"hidden": 1,
"label": "Lft",
"print_hide": 1,
"read_only": 1
},
{
"doctype": "DocField",
"fieldname": "rgt",
"fieldtype": "Int",
"hidden": 1,
"label": "Rgt",
"print_hide": 1,
"read_only": 1
},
{
"doctype": "DocField",
"fieldname": "old_parent",
"fieldtype": "Data",
"hidden": 1,
"label": "Old Parent",
"print_hide": 1,
"read_only": 1
},
{
"cancel": 1,
"create": 1,
"doctype": "DocPerm",
"permlevel": 0,
"role": "Accounts User",
"write": 1
},
{
"cancel": 0,
"create": 0,
"doctype": "DocPerm",
"permlevel": 0,
"role": "Auditor",
"write": 0
},
{
"cancel": 0,
"create": 0,
"doctype": "DocPerm",
"permlevel": 0,
"role": "Sales User",
"write": 0
},
{
"cancel": 0,
"create": 0,
"doctype": "DocPerm",
"permlevel": 0,
"role": "Purchase User",
"write": 0
},
{
"cancel": 0,
"create": 0,
"doctype": "DocPerm",
"permlevel": 2,
"role": "Auditor",
"write": 0
},
{
"cancel": 1,
"create": 1,
"doctype": "DocPerm",
"permlevel": 0,
"role": "Accounts Manager",
"write": 1
},
{
"cancel": 0,
"create": 0,
"doctype": "DocPerm",
"permlevel": 2,
"role": "Accounts Manager",
"write": 1
},
{
"cancel": 0,
"create": 0,
"doctype": "DocPerm",
"permlevel": 2,
"role": "Accounts User",
"write": 0
}
]

View File

@@ -1,46 +0,0 @@
# Copyright (c) 2013, Web Notes Technologies Pvt. Ltd. and Contributors
# License: GNU General Public License v3. See license.txt
from __future__ import unicode_literals
import webnotes
def make_test_records(verbose):
from webnotes.test_runner import make_test_objects
accounts = [
# [account_name, parent_account, group_or_ledger]
["_Test Account Bank Account", "Bank Accounts", "Ledger"],
["_Test Account Stock Expenses", "Direct Expenses", "Group"],
["_Test Account Shipping Charges", "_Test Account Stock Expenses", "Ledger"],
["_Test Account Customs Duty", "_Test Account Stock Expenses", "Ledger"],
["_Test Account Tax Assets", "Current Assets", "Group"],
["_Test Account VAT", "_Test Account Tax Assets", "Ledger"],
["_Test Account Service Tax", "_Test Account Tax Assets", "Ledger"],
["_Test Account Reserves and Surplus", "Current Liabilities", "Ledger"],
["_Test Account Cost for Goods Sold", "Expenses", "Ledger"],
["_Test Account Excise Duty", "_Test Account Tax Assets", "Ledger"],
["_Test Account Education Cess", "_Test Account Tax Assets", "Ledger"],
["_Test Account S&H Education Cess", "_Test Account Tax Assets", "Ledger"],
["_Test Account CST", "Direct Expenses", "Ledger"],
["_Test Account Discount", "Direct Expenses", "Ledger"],
# related to Account Inventory Integration
["_Test Account Stock In Hand", "Current Assets", "Ledger"],
["_Test Account Fixed Assets", "Current Assets", "Ledger"],
]
for company, abbr in [["_Test Company", "_TC"], ["_Test Company 1", "_TC1"]]:
test_objects = make_test_objects("Account", [[{
"doctype": "Account",
"account_name": account_name,
"parent_account": parent_account + " - " + abbr,
"company": company,
"group_or_ledger": group_or_ledger
}] for account_name, parent_account, group_or_ledger in accounts])
return test_objects

View File

@@ -1,21 +0,0 @@
# Copyright (c) 2013, Web Notes Technologies Pvt. Ltd. and Contributors
# License: GNU General Public License v3. See license.txt
# For license information, please see license.txt
from __future__ import unicode_literals
import webnotes
from webnotes.utils import cint, cstr
from webnotes import msgprint, _
class DocType:
def __init__(self, d, dl):
self.doc, self.doclist = d, dl
def on_update(self):
webnotes.conn.set_default("auto_accounting_for_stock", self.doc.auto_accounting_for_stock)
if self.doc.auto_accounting_for_stock:
for wh in webnotes.conn.sql("select name from `tabWarehouse`"):
wh_bean = webnotes.bean("Warehouse", wh[0])
wh_bean.save()

View File

@@ -1,83 +0,0 @@
[
{
"creation": "2013-06-24 15:49:57",
"docstatus": 0,
"modified": "2013-09-24 11:52:58",
"modified_by": "Administrator",
"owner": "Administrator"
},
{
"description": "Settings for Accounts",
"doctype": "DocType",
"icon": "icon-cog",
"issingle": 1,
"module": "Accounts",
"name": "__common__"
},
{
"doctype": "DocField",
"name": "__common__",
"parent": "Accounts Settings",
"parentfield": "fields",
"parenttype": "DocType",
"permlevel": 0
},
{
"create": 1,
"doctype": "DocPerm",
"name": "__common__",
"parent": "Accounts Settings",
"parentfield": "permissions",
"parenttype": "DocType",
"permlevel": 0,
"read": 1,
"role": "Accounts Manager",
"write": 1
},
{
"doctype": "DocType",
"name": "Accounts Settings"
},
{
"default": "1",
"description": "If enabled, the system will post accounting entries for inventory automatically.",
"doctype": "DocField",
"fieldname": "auto_accounting_for_stock",
"fieldtype": "Check",
"label": "Make Accounting Entry For Every Stock Movement"
},
{
"description": "Accounting entry frozen up to this date, nobody can do / modify entry except role specified below.",
"doctype": "DocField",
"fieldname": "acc_frozen_upto",
"fieldtype": "Date",
"label": "Accounts Frozen Upto"
},
{
"description": "Users with this role are allowed to create / modify accounting entry before frozen date",
"doctype": "DocField",
"fieldname": "bde_auth_role",
"fieldtype": "Link",
"label": "Allowed Role to Edit Entries Before Frozen Date",
"options": "Role"
},
{
"description": "Users with this role are allowed to set frozen accounts and create / modify accounting entries against frozen accounts",
"doctype": "DocField",
"fieldname": "frozen_accounts_modifier",
"fieldtype": "Link",
"label": "Frozen Accounts Modifier",
"options": "Role"
},
{
"description": "Role that is allowed to submit transactions that exceed credit limits set.",
"doctype": "DocField",
"fieldname": "credit_controller",
"fieldtype": "Link",
"label": "Credit Controller",
"options": "Role"
},
{
"doctype": "DocPerm"
}
]

View File

@@ -1,9 +0,0 @@
// Copyright (c) 2013, Web Notes Technologies Pvt. Ltd. and Contributors
// License: GNU General Public License v3. See license.txt
cur_frm.add_fetch("bank_account", "company", "company");
cur_frm.cscript.onload = function(doc, cdt, cdn){
cur_frm.set_intro('<i class="icon-question" /> ' +
wn._("Update clearance date of Journal Entries marked as 'Bank Vouchers'"))
}

View File

@@ -1,57 +0,0 @@
# Copyright (c) 2013, Web Notes Technologies Pvt. Ltd. and Contributors
# License: GNU General Public License v3. See license.txt
from __future__ import unicode_literals
import webnotes
from webnotes.utils import cstr, flt, getdate, now, nowdate
from webnotes.model import db_exists
from webnotes.model.doc import addchild
from webnotes.model.bean import getlist, copy_doclist
from webnotes import msgprint
class DocType:
def __init__(self, d, dl):
self.doc, self.doclist = d, dl
def get_details(self):
if not (self.doc.bank_account and self.doc.from_date and self.doc.to_date):
msgprint("Bank Account, From Date and To Date are Mandatory")
return
dl = webnotes.conn.sql("select t1.name, t1.cheque_no, t1.cheque_date, t2.debit, t2.credit, t1.posting_date, t2.against_account from `tabJournal Voucher` t1, `tabJournal Voucher Detail` t2 where t2.parent = t1.name and t2.account = %s and (clearance_date is null or clearance_date = '0000-00-00' or clearance_date = '') and t1.posting_date >= %s and t1.posting_date <= %s and t1.docstatus=1", (self.doc.bank_account, self.doc.from_date, self.doc.to_date))
self.doclist = self.doc.clear_table(self.doclist, 'entries')
self.doc.total_amount = 0.0
for d in dl:
nl = addchild(self.doc, 'entries', 'Bank Reconciliation Detail', self.doclist)
nl.posting_date = cstr(d[5])
nl.voucher_id = cstr(d[0])
nl.cheque_number = cstr(d[1])
nl.cheque_date = cstr(d[2])
nl.debit = flt(d[3])
nl.credit = flt(d[4])
nl.against_account = cstr(d[6])
self.doc.total_amount += flt(flt(d[4]) - flt(d[3]))
def update_details(self):
vouchers = []
for d in getlist(self.doclist, 'entries'):
if d.clearance_date:
if d.cheque_date and getdate(d.clearance_date) < getdate(d.cheque_date):
msgprint("Clearance Date can not be before Cheque Date (Row #%s)" %
d.idx, raise_exception=1)
webnotes.conn.sql("""update `tabJournal Voucher`
set clearance_date = %s, modified = %s where name=%s""",
(d.clearance_date, nowdate(), d.voucher_id))
vouchers.append(d.voucher_id)
if vouchers:
msgprint("Clearance Date updated in %s" % ", ".join(vouchers))
else:
msgprint("Clearance Date not mentioned")

View File

@@ -1,115 +0,0 @@
[
{
"creation": "2013-01-10 16:34:05",
"docstatus": 0,
"modified": "2013-07-05 14:26:22",
"modified_by": "Administrator",
"owner": "Administrator"
},
{
"allow_copy": 1,
"allow_email": 1,
"allow_print": 1,
"doctype": "DocType",
"hide_heading": 1,
"hide_toolbar": 1,
"icon": "icon-check",
"issingle": 1,
"module": "Accounts",
"name": "__common__",
"read_only": 1
},
{
"doctype": "DocField",
"name": "__common__",
"parent": "Bank Reconciliation",
"parentfield": "fields",
"parenttype": "DocType",
"permlevel": 0
},
{
"amend": 0,
"cancel": 0,
"create": 1,
"doctype": "DocPerm",
"name": "__common__",
"parent": "Bank Reconciliation",
"parentfield": "permissions",
"parenttype": "DocType",
"permlevel": 0,
"read": 1,
"report": 0,
"role": "Accounts User",
"submit": 0,
"write": 1
},
{
"doctype": "DocType",
"name": "Bank Reconciliation"
},
{
"description": "Select account head of the bank where cheque was deposited.",
"doctype": "DocField",
"fieldname": "bank_account",
"fieldtype": "Link",
"label": "Bank Account",
"options": "Account",
"reqd": 1
},
{
"doctype": "DocField",
"fieldname": "company",
"fieldtype": "Link",
"hidden": 1,
"label": "Company",
"options": "Company",
"print_hide": 1,
"reqd": 0
},
{
"doctype": "DocField",
"fieldname": "from_date",
"fieldtype": "Date",
"label": "From Date",
"reqd": 1
},
{
"doctype": "DocField",
"fieldname": "to_date",
"fieldtype": "Date",
"label": "To Date",
"reqd": 1
},
{
"doctype": "DocField",
"fieldname": "get_non_reconciled_entries",
"fieldtype": "Button",
"label": "Get Non Reconciled Entries",
"options": "get_details"
},
{
"doctype": "DocField",
"fieldname": "entries",
"fieldtype": "Table",
"label": "Entries",
"options": "Bank Reconciliation Detail"
},
{
"doctype": "DocField",
"fieldname": "update_clearance_date",
"fieldtype": "Button",
"label": "Update Clearance Date",
"options": "update_details"
},
{
"doctype": "DocField",
"fieldname": "total_amount",
"fieldtype": "Currency",
"label": "Total Amount",
"options": "Company:company:default_currency",
"read_only": 1
},
{
"doctype": "DocPerm"
}
]

View File

@@ -1,9 +0,0 @@
# Copyright (c) 2013, Web Notes Technologies Pvt. Ltd. and Contributors
# License: GNU General Public License v3. See license.txt
from __future__ import unicode_literals
import webnotes
class DocType:
def __init__(self, d, dl):
self.doc, self.doclist = d, dl

View File

@@ -1,108 +0,0 @@
[
{
"creation": "2013-02-22 01:27:37",
"docstatus": 0,
"modified": "2013-11-03 14:11:31",
"modified_by": "Administrator",
"owner": "Administrator"
},
{
"doctype": "DocType",
"istable": 1,
"module": "Accounts",
"name": "__common__"
},
{
"doctype": "DocField",
"name": "__common__",
"no_copy": 0,
"parent": "Bank Reconciliation Detail",
"parentfield": "fields",
"parenttype": "DocType",
"permlevel": 0,
"search_index": 0
},
{
"doctype": "DocType",
"name": "Bank Reconciliation Detail"
},
{
"doctype": "DocField",
"fieldname": "voucher_id",
"fieldtype": "Link",
"in_list_view": 1,
"label": "Voucher ID",
"oldfieldname": "voucher_id",
"oldfieldtype": "Link",
"options": "Journal Voucher"
},
{
"doctype": "DocField",
"fieldname": "against_account",
"fieldtype": "Data",
"in_list_view": 1,
"label": "Against Account",
"oldfieldname": "against_account",
"oldfieldtype": "Data",
"read_only": 1
},
{
"doctype": "DocField",
"fieldname": "posting_date",
"fieldtype": "Date",
"in_list_view": 1,
"label": "Posting Date",
"oldfieldname": "posting_date",
"oldfieldtype": "Date",
"read_only": 1
},
{
"doctype": "DocField",
"fieldname": "clearance_date",
"fieldtype": "Date",
"in_list_view": 1,
"label": "Clearance Date",
"oldfieldname": "clearance_date",
"oldfieldtype": "Date"
},
{
"doctype": "DocField",
"fieldname": "cheque_number",
"fieldtype": "Data",
"in_list_view": 1,
"label": "Cheque Number",
"oldfieldname": "cheque_number",
"oldfieldtype": "Data",
"read_only": 1
},
{
"doctype": "DocField",
"fieldname": "cheque_date",
"fieldtype": "Date",
"in_list_view": 1,
"label": "Cheque Date",
"oldfieldname": "cheque_date",
"oldfieldtype": "Date",
"read_only": 1
},
{
"doctype": "DocField",
"fieldname": "debit",
"fieldtype": "Currency",
"label": "Debit",
"oldfieldname": "debit",
"oldfieldtype": "Currency",
"options": "Company:company:default_currency",
"read_only": 1
},
{
"doctype": "DocField",
"fieldname": "credit",
"fieldtype": "Currency",
"label": "Credit",
"oldfieldname": "credit",
"oldfieldtype": "Currency",
"options": "Company:company:default_currency",
"read_only": 1
}
]

View File

@@ -1,9 +0,0 @@
# Copyright (c) 2013, Web Notes Technologies Pvt. Ltd. and Contributors
# License: GNU General Public License v3. See license.txt
from __future__ import unicode_literals
import webnotes
class DocType:
def __init__(self, d, dl):
self.doc, self.doclist = d, dl

View File

@@ -1,61 +0,0 @@
[
{
"creation": "2013-03-07 11:55:04",
"docstatus": 0,
"modified": "2013-08-22 17:27:59",
"modified_by": "Administrator",
"owner": "Administrator"
},
{
"autoname": "CBD/.######",
"doctype": "DocType",
"istable": 1,
"module": "Accounts",
"name": "__common__"
},
{
"doctype": "DocField",
"in_list_view": 1,
"name": "__common__",
"parent": "Budget Detail",
"parentfield": "fields",
"parenttype": "DocType",
"permlevel": 0,
"reqd": 1
},
{
"doctype": "DocType",
"name": "Budget Detail"
},
{
"doctype": "DocField",
"fieldname": "account",
"fieldtype": "Link",
"in_filter": 1,
"label": "Account",
"oldfieldname": "account",
"oldfieldtype": "Link",
"options": "Account",
"search_index": 1
},
{
"doctype": "DocField",
"fieldname": "budget_allocated",
"fieldtype": "Currency",
"label": "Budget Allocated",
"oldfieldname": "budget_allocated",
"oldfieldtype": "Currency",
"options": "Company:company:default_currency"
},
{
"doctype": "DocField",
"fieldname": "fiscal_year",
"fieldtype": "Select",
"in_filter": 1,
"label": "Fiscal Year",
"oldfieldname": "fiscal_year",
"oldfieldtype": "Select",
"options": "link:Fiscal Year",
"search_index": 1
}
]

View File

@@ -1,17 +0,0 @@
// Copyright (c) 2013, Web Notes Technologies Pvt. Ltd. and Contributors
// License: GNU General Public License v3. See license.txt
cur_frm.cscript.onload = function(doc,cdt,cdn){
if(doc.__islocal){
var callback1 = function(r,rt){
refresh_field('budget_distribution_details');
}
return $c('runserverobj',args={'method' : 'get_months', 'docs' :
wn.model.compress(make_doclist(doc.doctype, doc.name))},callback1);
}
}
cur_frm.cscript.refresh = function(doc,cdt,cdn){
cur_frm.toggle_display('distribution_id', doc.__islocal);
}

View File

@@ -1,32 +0,0 @@
# Copyright (c) 2013, Web Notes Technologies Pvt. Ltd. and Contributors
# License: GNU General Public License v3. See license.txt
from __future__ import unicode_literals
import webnotes
from webnotes.utils import flt
from webnotes.model.doc import addchild
from webnotes.model.bean import getlist
from webnotes import msgprint, _
class DocType:
def __init__(self,doc,doclist=[]):
self.doc,self.doclist = doc,doclist
def get_months(self):
month_list = ['January','February','March','April','May','June','July','August','September',
'October','November','December']
idx =1
for m in month_list:
mnth = addchild(self.doc, 'budget_distribution_details',
'Budget Distribution Detail', self.doclist)
mnth.month = m or ''
mnth.idx = idx
idx += 1
def validate(self):
total = sum([flt(d.percentage_allocation, 2) for d in self.doclist.get(
{"parentfield": "budget_distribution_details"})])
if total != 100.0:
msgprint(_("Percentage Allocation should be equal to ") + "100%", raise_exception=1)

View File

@@ -1,92 +0,0 @@
[
{
"creation": "2013-01-10 16:34:05",
"docstatus": 0,
"modified": "2013-07-22 15:30:37",
"modified_by": "Administrator",
"owner": "Administrator"
},
{
"autoname": "field:distribution_id",
"description": "**Budget Distribution** helps you distribute your budget across months if you have seasonality in your business.\n\nTo distribute a budget using this distribution, set this **Budget Distribution** in the **Cost Center**",
"doctype": "DocType",
"icon": "icon-bar-chart",
"module": "Accounts",
"name": "__common__",
"name_case": "Title Case"
},
{
"doctype": "DocField",
"name": "__common__",
"parent": "Budget Distribution",
"parentfield": "fields",
"parenttype": "DocType",
"permlevel": 0
},
{
"doctype": "DocPerm",
"name": "__common__",
"parent": "Budget Distribution",
"parentfield": "permissions",
"parenttype": "DocType",
"read": 1,
"report": 1,
"role": "Accounts Manager",
"submit": 0
},
{
"doctype": "DocType",
"name": "Budget Distribution"
},
{
"description": "Name of the Budget Distribution",
"doctype": "DocField",
"fieldname": "distribution_id",
"fieldtype": "Data",
"label": "Distribution Name",
"oldfieldname": "distribution_id",
"oldfieldtype": "Data",
"reqd": 1
},
{
"doctype": "DocField",
"fieldname": "fiscal_year",
"fieldtype": "Select",
"in_filter": 1,
"label": "Fiscal Year",
"oldfieldname": "fiscal_year",
"oldfieldtype": "Select",
"options": "link:Fiscal Year",
"search_index": 1
},
{
"doctype": "DocField",
"fieldname": "budget_distribution_details",
"fieldtype": "Table",
"label": "Budget Distribution Details",
"oldfieldname": "budget_distribution_details",
"oldfieldtype": "Table",
"options": "Budget Distribution Detail"
},
{
"doctype": "DocField",
"fieldname": "trash_reason",
"fieldtype": "Small Text",
"label": "Trash Reason",
"oldfieldname": "trash_reason",
"oldfieldtype": "Small Text",
"read_only": 1
},
{
"amend": 0,
"cancel": 1,
"create": 1,
"doctype": "DocPerm",
"permlevel": 0,
"write": 1
},
{
"doctype": "DocPerm",
"permlevel": 2
}
]

View File

@@ -1,70 +0,0 @@
# Copyright (c) 2013, Web Notes Technologies Pvt. Ltd. and Contributors
# License: GNU General Public License v3. See license.txt
test_records = [
[{
"doctype": "Budget Distribution",
"distribution_id": "_Test Distribution",
"fiscal_year": "_Test Fiscal Year 2013",
}, {
"doctype": "Budget Distribution Detail",
"parentfield": "budget_distribution_details",
"month": "January",
"percentage_allocation": "8"
}, {
"doctype": "Budget Distribution Detail",
"parentfield": "budget_distribution_details",
"month": "February",
"percentage_allocation": "8"
}, {
"doctype": "Budget Distribution Detail",
"parentfield": "budget_distribution_details",
"month": "March",
"percentage_allocation": "8"
}, {
"doctype": "Budget Distribution Detail",
"parentfield": "budget_distribution_details",
"month": "April",
"percentage_allocation": "8"
}, {
"doctype": "Budget Distribution Detail",
"parentfield": "budget_distribution_details",
"month": "May",
"percentage_allocation": "8"
}, {
"doctype": "Budget Distribution Detail",
"parentfield": "budget_distribution_details",
"month": "June",
"percentage_allocation": "8"
}, {
"doctype": "Budget Distribution Detail",
"parentfield": "budget_distribution_details",
"month": "July",
"percentage_allocation": "8"
}, {
"doctype": "Budget Distribution Detail",
"parentfield": "budget_distribution_details",
"month": "August",
"percentage_allocation": "8"
}, {
"doctype": "Budget Distribution Detail",
"parentfield": "budget_distribution_details",
"month": "September",
"percentage_allocation": "8"
}, {
"doctype": "Budget Distribution Detail",
"parentfield": "budget_distribution_details",
"month": "October",
"percentage_allocation": "8"
}, {
"doctype": "Budget Distribution Detail",
"parentfield": "budget_distribution_details",
"month": "November",
"percentage_allocation": "10"
}, {
"doctype": "Budget Distribution Detail",
"parentfield": "budget_distribution_details",
"month": "December",
"percentage_allocation": "10"
}]
]

View File

@@ -1,9 +0,0 @@
# Copyright (c) 2013, Web Notes Technologies Pvt. Ltd. and Contributors
# License: GNU General Public License v3. See license.txt
from __future__ import unicode_literals
import webnotes
class DocType:
def __init__(self, d, dl):
self.doc, self.doclist = d, dl

View File

@@ -1,47 +0,0 @@
[
{
"creation": "2013-02-22 01:27:38",
"docstatus": 0,
"modified": "2013-07-10 14:54:06",
"modified_by": "Administrator",
"owner": "Administrator"
},
{
"autoname": "BDD/.#####",
"doctype": "DocType",
"istable": 1,
"module": "Accounts",
"name": "__common__"
},
{
"doctype": "DocField",
"in_list_view": 1,
"name": "__common__",
"parent": "Budget Distribution Detail",
"parentfield": "fields",
"parenttype": "DocType",
"permlevel": 0
},
{
"doctype": "DocType",
"name": "Budget Distribution Detail"
},
{
"doctype": "DocField",
"fieldname": "month",
"fieldtype": "Data",
"label": "Month",
"oldfieldname": "month",
"oldfieldtype": "Data",
"read_only": 1,
"reqd": 1
},
{
"doctype": "DocField",
"fieldname": "percentage_allocation",
"fieldtype": "Float",
"label": "Percentage Allocation",
"oldfieldname": "percentage_allocation",
"oldfieldtype": "Currency"
}
]

View File

@@ -1,86 +0,0 @@
# Copyright (c) 2013, Web Notes Technologies Pvt. Ltd. and Contributors
# License: GNU General Public License v3. See license.txt
from __future__ import unicode_literals
import webnotes
from webnotes.utils import flt, getdate
from webnotes.model.bean import getlist
class DocType:
def __init__(self,d,dl):
self.doc, self.doclist = d,dl
def validate(self):
"""Validate invoice that c-form is applicable
and no other c-form is received for that"""
for d in getlist(self.doclist, 'invoice_details'):
if d.invoice_no:
inv = webnotes.conn.sql("""select c_form_applicable, c_form_no from
`tabSales Invoice` where name = %s and docstatus = 1""", d.invoice_no)
if not inv:
webnotes.msgprint("""Invoice: %s is not exists in the system or
is not submitted, please check.""" % d.invoice_no, raise_exception=1)
elif inv[0][0] != 'Yes':
webnotes.msgprint("C-form is not applicable for Invoice: %s" %
d.invoice_no, raise_exception=1)
elif inv[0][1] and inv[0][1] != self.doc.name:
webnotes.msgprint("""Invoice %s is tagged in another C-form: %s.
If you want to change C-form no for this invoice,
please remove invoice no from the previous c-form and then try again""" %
(d.invoice_no, inv[0][1]), raise_exception=1)
def on_update(self):
""" Update C-Form No on invoices"""
self.set_total_invoiced_amount()
def on_submit(self):
self.set_cform_in_sales_invoices()
def before_cancel(self):
# remove cform reference
webnotes.conn.sql("""update `tabSales Invoice` set c_form_no=null
where c_form_no=%s""", self.doc.name)
def set_cform_in_sales_invoices(self):
inv = [d.invoice_no for d in getlist(self.doclist, 'invoice_details')]
if inv:
webnotes.conn.sql("""update `tabSales Invoice` set c_form_no=%s, modified=%s
where name in (%s)""" % ('%s', '%s', ', '.join(['%s'] * len(inv))),
tuple([self.doc.name, self.doc.modified] + inv))
webnotes.conn.sql("""update `tabSales Invoice` set c_form_no = null, modified = %s
where name not in (%s) and ifnull(c_form_no, '') = %s""" %
('%s', ', '.join(['%s']*len(inv)), '%s'),
tuple([self.doc.modified] + inv + [self.doc.name]))
else:
webnotes.msgprint("Please enter atleast 1 invoice in the table", raise_exception=1)
def set_total_invoiced_amount(self):
total = sum([flt(d.grand_total) for d in getlist(self.doclist, 'invoice_details')])
webnotes.conn.set(self.doc, 'total_invoiced_amount', total)
def get_invoice_details(self, invoice_no):
""" Pull details from invoices for referrence """
inv = webnotes.conn.sql("""select posting_date, territory, net_total, grand_total
from `tabSales Invoice` where name = %s""", invoice_no)
return {
'invoice_date' : inv and getdate(inv[0][0]).strftime('%Y-%m-%d') or '',
'territory' : inv and inv[0][1] or '',
'net_total' : inv and flt(inv[0][2]) or '',
'grand_total' : inv and flt(inv[0][3]) or ''
}
def get_invoice_nos(doctype, txt, searchfield, start, page_len, filters):
from utilities import build_filter_conditions
conditions, filter_values = build_filter_conditions(filters)
return webnotes.conn.sql("""select name from `tabSales Invoice` where docstatus = 1
and c_form_applicable = 'Yes' and ifnull(c_form_no, '') = '' %s
and %s like %s order by name limit %s, %s""" %
(conditions, searchfield, "%s", "%s", "%s"),
tuple(filter_values + ["%%%s%%" % txt, start, page_len]))

View File

@@ -1,188 +0,0 @@
[
{
"creation": "2013-03-07 11:55:06",
"docstatus": 0,
"modified": "2013-11-02 14:05:25",
"modified_by": "Administrator",
"owner": "Administrator"
},
{
"allow_attach": 1,
"autoname": "naming_series:",
"doctype": "DocType",
"icon": "icon-file-text",
"is_submittable": 1,
"max_attachments": 3,
"module": "Accounts",
"name": "__common__"
},
{
"doctype": "DocField",
"name": "__common__",
"parent": "C-Form",
"parentfield": "fields",
"parenttype": "DocType",
"permlevel": 0
},
{
"doctype": "DocPerm",
"name": "__common__",
"parent": "C-Form",
"parentfield": "permissions",
"parenttype": "DocType",
"read": 1,
"report": 1,
"submit": 0
},
{
"doctype": "DocType",
"name": "C-Form"
},
{
"doctype": "DocField",
"fieldname": "column_break0",
"fieldtype": "Column Break",
"print_width": "50%",
"read_only": 0,
"width": "50%"
},
{
"doctype": "DocField",
"fieldname": "naming_series",
"fieldtype": "Select",
"label": "Series",
"options": "\nC-FORM/",
"read_only": 0,
"reqd": 1
},
{
"doctype": "DocField",
"fieldname": "c_form_no",
"fieldtype": "Data",
"label": "C-Form No",
"read_only": 0,
"reqd": 1
},
{
"doctype": "DocField",
"fieldname": "received_date",
"fieldtype": "Date",
"label": "Received Date",
"read_only": 0,
"reqd": 1
},
{
"doctype": "DocField",
"fieldname": "customer",
"fieldtype": "Link",
"label": "Customer",
"options": "Customer",
"read_only": 0,
"reqd": 1
},
{
"doctype": "DocField",
"fieldname": "column_break1",
"fieldtype": "Column Break",
"print_width": "50%",
"read_only": 0,
"width": "50%"
},
{
"doctype": "DocField",
"fieldname": "company",
"fieldtype": "Select",
"label": "Company",
"options": "link:Company",
"read_only": 0
},
{
"doctype": "DocField",
"fieldname": "fiscal_year",
"fieldtype": "Select",
"label": "Fiscal Year",
"options": "link:Fiscal Year",
"read_only": 0,
"reqd": 1
},
{
"doctype": "DocField",
"fieldname": "quarter",
"fieldtype": "Select",
"label": "Quarter",
"options": "\nI\nII\nIII\nIV",
"read_only": 0
},
{
"doctype": "DocField",
"fieldname": "total_amount",
"fieldtype": "Currency",
"label": "Total Amount",
"options": "Company:company:default_currency",
"read_only": 0,
"reqd": 1
},
{
"doctype": "DocField",
"fieldname": "state",
"fieldtype": "Data",
"label": "State",
"read_only": 0,
"reqd": 1
},
{
"doctype": "DocField",
"fieldname": "section_break0",
"fieldtype": "Section Break",
"read_only": 0
},
{
"doctype": "DocField",
"fieldname": "invoice_details",
"fieldtype": "Table",
"label": "Invoice Details",
"options": "C-Form Invoice Detail",
"read_only": 0
},
{
"doctype": "DocField",
"fieldname": "total_invoiced_amount",
"fieldtype": "Currency",
"label": "Total Invoiced Amount",
"options": "Company:company:default_currency",
"print_hide": 0,
"read_only": 1
},
{
"doctype": "DocField",
"fieldname": "amended_from",
"fieldtype": "Link",
"label": "Amended From",
"no_copy": 1,
"options": "C-Form",
"print_hide": 1,
"read_only": 1
},
{
"create": 1,
"doctype": "DocPerm",
"permlevel": 0,
"role": "Accounts User",
"write": 1
},
{
"create": 1,
"doctype": "DocPerm",
"permlevel": 0,
"role": "Accounts Manager",
"write": 1
},
{
"amend": 0,
"cancel": 0,
"create": 0,
"doctype": "DocPerm",
"permlevel": 1,
"role": "All"
}
]

View File

@@ -1,9 +0,0 @@
# Copyright (c) 2013, Web Notes Technologies Pvt. Ltd. and Contributors
# License: GNU General Public License v3. See license.txt
from __future__ import unicode_literals
import webnotes
class DocType:
def __init__(self, d, dl):
self.doc, self.doclist = d, dl

View File

@@ -1,77 +0,0 @@
[
{
"creation": "2013-02-22 01:27:38",
"docstatus": 0,
"modified": "2013-11-02 16:58:31",
"modified_by": "Administrator",
"owner": "Administrator"
},
{
"doctype": "DocType",
"istable": 1,
"module": "Accounts",
"name": "__common__"
},
{
"doctype": "DocField",
"in_list_view": 1,
"name": "__common__",
"parent": "C-Form Invoice Detail",
"parentfield": "fields",
"parenttype": "DocType",
"permlevel": 0
},
{
"doctype": "DocType",
"name": "C-Form Invoice Detail"
},
{
"doctype": "DocField",
"fieldname": "invoice_no",
"fieldtype": "Link",
"label": "Invoice No",
"options": "Sales Invoice",
"print_width": "160px",
"width": "160px"
},
{
"doctype": "DocField",
"fieldname": "invoice_date",
"fieldtype": "Date",
"label": "Invoice Date",
"print_width": "120px",
"read_only": 1,
"width": "120px"
},
{
"description": "<a href=\"#Sales Browser/Territory\">Add / Edit</a>",
"doctype": "DocField",
"fieldname": "territory",
"fieldtype": "Link",
"label": "Territory",
"options": "Territory",
"print_width": "120px",
"read_only": 1,
"width": "120px"
},
{
"doctype": "DocField",
"fieldname": "net_total",
"fieldtype": "Currency",
"label": "Net Total",
"options": "Company:company:default_currency",
"print_width": "120px",
"read_only": 1,
"width": "120px"
},
{
"doctype": "DocField",
"fieldname": "grand_total",
"fieldtype": "Currency",
"label": "Grand Total",
"options": "Company:company:default_currency",
"print_width": "120px",
"read_only": 1,
"width": "120px"
}
]

View File

@@ -1,87 +0,0 @@
// Copyright (c) 2013, Web Notes Technologies Pvt. Ltd. and Contributors
// License: GNU General Public License v3. See license.txt
wn.provide("erpnext.accounts");
erpnext.accounts.CostCenterController = wn.ui.form.Controller.extend({
onload: function() {
this.setup_queries();
},
setup_queries: function() {
var me = this;
if(this.frm.fields_dict["budget_details"].grid.get_field("account")) {
this.frm.set_query("account", "budget_details", function() {
return {
filters:[
['Account', 'company', '=', me.frm.doc.company],
['Account', 'is_pl_account', '=', 'Yes'],
['Account', 'debit_or_credit', '=', 'Debit'],
['Account', 'group_or_ledger', '!=', 'Group'],
]
}
});
}
this.frm.set_query("parent_cost_center", function() {
return {
filters:[
['Cost Center', 'group_or_ledger', '=', 'Group'],
['Cost Center', 'company', '=', me.frm.doc.company],
]
}
});
}
});
$.extend(cur_frm.cscript, new erpnext.accounts.CostCenterController({frm: cur_frm}));
cur_frm.cscript.refresh = function(doc, cdt, cdn) {
var intro_txt = '';
cur_frm.toggle_display('cost_center_name', doc.__islocal);
cur_frm.toggle_enable(['group_or_ledger', 'company'], doc.__islocal);
if(!doc.__islocal && doc.group_or_ledger=='Group') {
intro_txt += '<p><b>'+wn._('Note:')+'</b>'+ wn._('This Cost Center is a')+ '<i>'+wn._('Group')+'</i>, '+
wn._('Accounting Entries are not allowed against groups.')+'</p>';
}
cur_frm.cscript.hide_unhide_group_ledger(doc);
cur_frm.toggle_display('sb1', doc.group_or_ledger=='Ledger')
cur_frm.set_intro(intro_txt);
cur_frm.appframe.add_button(wn._('Chart of Cost Centers'),
function() { wn.set_route("Accounts Browser", "Cost Center"); }, 'icon-sitemap')
}
cur_frm.cscript.parent_cost_center = function(doc,cdt,cdn){
if(!doc.company){
alert(wn._('Please enter company name first'));
}
}
cur_frm.cscript.hide_unhide_group_ledger = function(doc) {
if (cstr(doc.group_or_ledger) == 'Group') {
cur_frm.add_custom_button(wn._('Convert to Ledger'),
function() { cur_frm.cscript.convert_to_ledger(); }, 'icon-retweet')
} else if (cstr(doc.group_or_ledger) == 'Ledger') {
cur_frm.add_custom_button(wn._('Convert to Group'),
function() { cur_frm.cscript.convert_to_group(); }, 'icon-retweet')
}
}
cur_frm.cscript.convert_to_ledger = function(doc, cdt, cdn) {
return $c_obj(cur_frm.get_doclist(),'convert_group_to_ledger','',function(r,rt) {
if(r.message == 1) {
cur_frm.refresh();
}
});
}
cur_frm.cscript.convert_to_group = function(doc, cdt, cdn) {
return $c_obj(cur_frm.get_doclist(),'convert_ledger_to_group','',function(r,rt) {
if(r.message == 1) {
cur_frm.refresh();
}
});
}

View File

@@ -1,92 +0,0 @@
# Copyright (c) 2013, Web Notes Technologies Pvt. Ltd. and Contributors
# License: GNU General Public License v3. See license.txt
from __future__ import unicode_literals
import webnotes
from webnotes.model.bean import getlist
from webnotes import msgprint, _
from webnotes.utils.nestedset import DocTypeNestedSet
class DocType(DocTypeNestedSet):
def __init__(self,d,dl):
self.doc, self.doclist = d,dl
self.nsm_parent_field = 'parent_cost_center'
def autoname(self):
company_abbr = webnotes.conn.sql("select abbr from tabCompany where name=%s",
self.doc.company)[0][0]
self.doc.name = self.doc.cost_center_name.strip() + ' - ' + company_abbr
def validate_mandatory(self):
if not self.doc.group_or_ledger:
msgprint("Please select Group or Ledger value", raise_exception=1)
if self.doc.cost_center_name != self.doc.company and not self.doc.parent_cost_center:
msgprint("Please enter parent cost center", raise_exception=1)
elif self.doc.cost_center_name == self.doc.company and self.doc.parent_cost_center:
msgprint(_("Root cannot have a parent cost center"), raise_exception=1)
def convert_group_to_ledger(self):
if self.check_if_child_exists():
msgprint("Cost Center: %s has existing child. You can not convert this cost center to ledger" % (self.doc.name), raise_exception=1)
elif self.check_gle_exists():
msgprint("Cost Center with existing transaction can not be converted to ledger.", raise_exception=1)
else:
self.doc.group_or_ledger = 'Ledger'
self.doc.save()
return 1
def convert_ledger_to_group(self):
if self.check_gle_exists():
msgprint("Cost Center with existing transaction can not be converted to group.", raise_exception=1)
else:
self.doc.group_or_ledger = 'Group'
self.doc.save()
return 1
def check_gle_exists(self):
return webnotes.conn.get_value("GL Entry", {"cost_center": self.doc.name})
def check_if_child_exists(self):
return webnotes.conn.sql("select name from `tabCost Center` where \
parent_cost_center = %s and docstatus != 2", self.doc.name)
def validate_budget_details(self):
check_acc_list = []
for d in getlist(self.doclist, 'budget_details'):
if self.doc.group_or_ledger=="Group":
msgprint("Budget cannot be set for Group Cost Centers", raise_exception=1)
if [d.account, d.fiscal_year] in check_acc_list:
msgprint("Account " + d.account + "has been entered more than once for fiscal year " + d.fiscal_year, raise_exception=1)
else:
check_acc_list.append([d.account, d.fiscal_year])
def validate(self):
"""
Cost Center name must be unique
"""
if (self.doc.fields.get("__islocal") or not self.doc.name) and webnotes.conn.sql("select name from `tabCost Center` where cost_center_name = %s and company=%s", (self.doc.cost_center_name, self.doc.company)):
msgprint("Cost Center Name already exists, please rename", raise_exception=1)
self.validate_mandatory()
self.validate_budget_details()
def before_rename(self, olddn, newdn, merge=False):
# Add company abbr if not provided
from setup.doctype.company.company import get_name_with_abbr
new_cost_center = get_name_with_abbr(newdn, self.doc.company)
# Validate properties before merging
super(DocType, self).before_rename(olddn, new_cost_center, merge, "group_or_ledger")
return new_cost_center
def after_rename(self, olddn, newdn, merge=False):
if not merge:
webnotes.conn.set_value("Cost Center", newdn, "cost_center_name",
" - ".join(newdn.split(" - ")[:-1]))
else:
super(DocType, self).after_rename(olddn, newdn, merge)

View File

@@ -1,196 +0,0 @@
[
{
"creation": "2013-01-23 19:57:17",
"docstatus": 0,
"modified": "2013-07-22 15:23:10",
"modified_by": "Administrator",
"owner": "Administrator"
},
{
"allow_copy": 1,
"allow_rename": 1,
"autoname": "field:cost_center_name",
"description": "Track separate Income and Expense for product verticals or divisions.",
"doctype": "DocType",
"document_type": "Master",
"icon": "icon-money",
"in_create": 1,
"module": "Accounts",
"name": "__common__",
"search_fields": "name,parent_cost_center"
},
{
"doctype": "DocField",
"name": "__common__",
"parent": "Cost Center",
"parentfield": "fields",
"parenttype": "DocType",
"permlevel": 0
},
{
"amend": 0,
"doctype": "DocPerm",
"name": "__common__",
"parent": "Cost Center",
"parentfield": "permissions",
"parenttype": "DocType",
"permlevel": 0,
"read": 1,
"report": 1,
"submit": 0
},
{
"doctype": "DocType",
"name": "Cost Center"
},
{
"doctype": "DocField",
"fieldname": "sb0",
"fieldtype": "Section Break",
"label": "Cost Center Details"
},
{
"doctype": "DocField",
"fieldname": "trash_reason",
"fieldtype": "Small Text",
"label": "Trash Reason",
"oldfieldname": "trash_reason",
"oldfieldtype": "Small Text",
"read_only": 1
},
{
"doctype": "DocField",
"fieldname": "cost_center_name",
"fieldtype": "Data",
"in_filter": 0,
"label": "Cost Center Name",
"no_copy": 1,
"oldfieldname": "cost_center_name",
"oldfieldtype": "Data",
"reqd": 1,
"search_index": 0
},
{
"doctype": "DocField",
"fieldname": "parent_cost_center",
"fieldtype": "Link",
"label": "Parent Cost Center",
"oldfieldname": "parent_cost_center",
"oldfieldtype": "Link",
"options": "Cost Center",
"reqd": 1
},
{
"doctype": "DocField",
"fieldname": "company",
"fieldtype": "Link",
"label": "Company",
"oldfieldname": "company_name",
"oldfieldtype": "Link",
"options": "Company",
"reqd": 1
},
{
"doctype": "DocField",
"fieldname": "cb0",
"fieldtype": "Column Break",
"width": "50%"
},
{
"doctype": "DocField",
"fieldname": "group_or_ledger",
"fieldtype": "Select",
"hidden": 0,
"label": "Group or Ledger",
"no_copy": 1,
"oldfieldname": "group_or_ledger",
"oldfieldtype": "Select",
"options": "\nGroup\nLedger",
"print_hide": 1,
"report_hide": 1,
"reqd": 1
},
{
"description": "Define Budget for this Cost Center. To set budget action, see <a href=\"#!List/Company\">Company Master</a>",
"doctype": "DocField",
"fieldname": "sb1",
"fieldtype": "Section Break",
"label": "Budget"
},
{
"description": "Select Budget Distribution, if you want to track based on seasonality.",
"doctype": "DocField",
"fieldname": "distribution_id",
"fieldtype": "Link",
"label": "Distribution Id",
"oldfieldname": "distribution_id",
"oldfieldtype": "Link",
"options": "Budget Distribution"
},
{
"description": "Add rows to set annual budgets on Accounts.",
"doctype": "DocField",
"fieldname": "budget_details",
"fieldtype": "Table",
"label": "Budget Details",
"oldfieldname": "budget_details",
"oldfieldtype": "Table",
"options": "Budget Detail"
},
{
"doctype": "DocField",
"fieldname": "lft",
"fieldtype": "Int",
"hidden": 1,
"in_filter": 1,
"label": "lft",
"no_copy": 1,
"oldfieldname": "lft",
"oldfieldtype": "Int",
"print_hide": 1,
"report_hide": 1,
"search_index": 1
},
{
"doctype": "DocField",
"fieldname": "rgt",
"fieldtype": "Int",
"hidden": 1,
"in_filter": 1,
"label": "rgt",
"no_copy": 1,
"oldfieldname": "rgt",
"oldfieldtype": "Int",
"print_hide": 1,
"report_hide": 1,
"reqd": 0,
"search_index": 1
},
{
"doctype": "DocField",
"fieldname": "old_parent",
"fieldtype": "Link",
"hidden": 1,
"label": "old_parent",
"no_copy": 1,
"oldfieldname": "old_parent",
"oldfieldtype": "Data",
"options": "Cost Center",
"print_hide": 1,
"report_hide": 1
},
{
"cancel": 1,
"create": 1,
"doctype": "DocPerm",
"role": "Accounts Manager",
"write": 1
},
{
"cancel": 0,
"create": 0,
"doctype": "DocPerm",
"role": "Accounts User",
"write": 0
}
]

View File

@@ -1,19 +0,0 @@
# Copyright (c) 2013, Web Notes Technologies Pvt. Ltd. and Contributors
# License: GNU General Public License v3. See license.txt
test_records = [
[{
"doctype": "Cost Center",
"cost_center_name": "_Test Cost Center",
"parent_cost_center": "_Test Company - _TC",
"company": "_Test Company",
"group_or_ledger": "Ledger",
"distribution_id": "_Test Distribution",
}, {
"doctype": "Budget Detail",
"parentfield": "budget_details",
"account": "_Test Account Cost for Goods Sold - _TC",
"budget_allocated": 100000,
"fiscal_year": "_Test Fiscal Year 2013"
}],
]

View File

@@ -1,28 +0,0 @@
// Copyright (c) 2013, Web Notes Technologies Pvt. Ltd. and Contributors
// License: GNU General Public License v3. See license.txt
$.extend(cur_frm.cscript, {
refresh: function (doc, dt, dn) {
var me = this;
this.frm.toggle_enable('year_start_date', doc.__islocal)
this.frm.toggle_enable('year_end_date', doc.__islocal)
if (!doc.__islocal && (doc.name != sys_defaults.fiscal_year)) {
this.frm.add_custom_button(wn._("Set as Default"), this.frm.cscript.set_as_default);
this.frm.set_intro(wn._("To set this Fiscal Year as Default, click on 'Set as Default'"));
} else this.frm.set_intro("");
},
set_as_default: function() {
return wn.call({
doc: cur_frm.doc,
method: "set_as_default"
});
},
year_start_date: function(doc, dt, dn) {
var me = this;
year_end_date =
wn.datetime.add_days(wn.datetime.add_months(this.frm.doc.year_start_date, 12), -1);
this.frm.set_value("year_end_date", year_end_date);
},
});

View File

@@ -1,47 +0,0 @@
# Copyright (c) 2013, Web Notes Technologies Pvt. Ltd. and Contributors
# License: GNU General Public License v3. See license.txt
from __future__ import unicode_literals
import webnotes
from webnotes import msgprint, _
from webnotes.utils import getdate
class DocType:
def __init__(self, d, dl):
self.doc, self.doclist = d, dl
def set_as_default(self):
webnotes.conn.set_value("Global Defaults", None, "current_fiscal_year", self.doc.name)
webnotes.get_obj("Global Defaults").on_update()
# clear cache
webnotes.clear_cache()
msgprint(self.doc.name + _(""" is now the default Fiscal Year. \
Please refresh your browser for the change to take effect."""))
def validate(self):
year_start_end_dates = webnotes.conn.sql("""select year_start_date, year_end_date
from `tabFiscal Year` where name=%s""", (self.doc.name))
if year_start_end_dates:
if getdate(self.doc.year_start_date) != year_start_end_dates[0][0] or getdate(self.doc.year_end_date) != year_start_end_dates[0][1]:
webnotes.throw(_("Cannot change Year Start Date and Year End Date \
once the Fiscal Year is saved."))
def on_update(self):
# validate year start date and year end date
if getdate(self.doc.year_start_date) > getdate(self.doc.year_end_date):
webnotes.throw(_("Year Start Date should not be greater than Year End Date"))
if (getdate(self.doc.year_end_date) - getdate(self.doc.year_start_date)).days > 366:
webnotes.throw(_("Year Start Date and Year End Date are not within Fiscal Year."))
year_start_end_dates = webnotes.conn.sql("""select name, year_start_date, year_end_date
from `tabFiscal Year` where name!=%s""", (self.doc.name))
for fiscal_year, ysd, yed in year_start_end_dates:
if (getdate(self.doc.year_start_date) == ysd and getdate(self.doc.year_end_date) == yed) \
and (not webnotes.flags.in_test):
webnotes.throw(_("Year Start Date and Year End Date are already \
set in Fiscal Year: ") + fiscal_year)

View File

@@ -1,93 +0,0 @@
[
{
"creation": "2013-01-22 16:50:25",
"docstatus": 0,
"modified": "2013-11-25 11:40:02",
"modified_by": "Administrator",
"owner": "Administrator"
},
{
"autoname": "field:year",
"description": "**Fiscal Year** represents a Financial Year. All accounting entries and other major transactions are tracked against **Fiscal Year**.",
"doctype": "DocType",
"document_type": "Master",
"icon": "icon-calendar",
"module": "Accounts",
"name": "__common__"
},
{
"doctype": "DocField",
"name": "__common__",
"parent": "Fiscal Year",
"parentfield": "fields",
"parenttype": "DocType",
"permlevel": 0
},
{
"doctype": "DocPerm",
"name": "__common__",
"parent": "Fiscal Year",
"parentfield": "permissions",
"parenttype": "DocType",
"permlevel": 0,
"read": 1
},
{
"doctype": "DocType",
"name": "Fiscal Year"
},
{
"description": "For e.g. 2012, 2012-13",
"doctype": "DocField",
"fieldname": "year",
"fieldtype": "Data",
"label": "Year Name",
"oldfieldname": "year",
"oldfieldtype": "Data",
"reqd": 1
},
{
"doctype": "DocField",
"fieldname": "year_start_date",
"fieldtype": "Date",
"label": "Year Start Date",
"no_copy": 1,
"oldfieldname": "year_start_date",
"oldfieldtype": "Date",
"reqd": 1
},
{
"doctype": "DocField",
"fieldname": "year_end_date",
"fieldtype": "Date",
"label": "Year End Date",
"no_copy": 1,
"reqd": 1
},
{
"default": "No",
"description": "Entries are not allowed against this Fiscal Year if the year is closed.",
"doctype": "DocField",
"fieldname": "is_fiscal_year_closed",
"fieldtype": "Select",
"label": "Year Closed",
"no_copy": 1,
"oldfieldname": "is_fiscal_year_closed",
"oldfieldtype": "Select",
"options": "\nNo\nYes",
"reqd": 0
},
{
"cancel": 1,
"create": 1,
"doctype": "DocPerm",
"report": 1,
"role": "System Manager",
"submit": 0,
"write": 1
},
{
"doctype": "DocPerm",
"role": "All"
}
]

View File

@@ -1,37 +0,0 @@
# Copyright (c) 2013, Web Notes Technologies Pvt. Ltd. and Contributors
# License: GNU General Public License v3. See license.txt
from __future__ import unicode_literals
test_records = [
[{
"doctype": "Fiscal Year",
"year": "_Test Fiscal Year 2012",
"year_start_date": "2012-01-01",
"year_end_date": "2012-12-31"
}],
[{
"doctype": "Fiscal Year",
"year": "_Test Fiscal Year 2013",
"year_start_date": "2013-01-01",
"year_end_date": "2013-12-31"
}],
[{
"doctype": "Fiscal Year",
"year": "_Test Fiscal Year 2014",
"year_start_date": "2014-01-01",
"year_end_date": "2014-12-31"
}],
[{
"doctype": "Fiscal Year",
"year": "_Test Fiscal Year 2015",
"year_start_date": "2015-01-01",
"year_end_date": "2015-12-31"
}],
[{
"doctype": "Fiscal Year",
"year": "_Test Fiscal Year 2016",
"year_start_date": "2016-01-01",
"year_end_date": "2016-12-31"
}],
]

View File

@@ -1,161 +0,0 @@
# Copyright (c) 2013, Web Notes Technologies Pvt. Ltd. and Contributors
# License: GNU General Public License v3. See license.txt
from __future__ import unicode_literals
import webnotes
from webnotes.utils import flt, fmt_money, getdate
from webnotes import _
class DocType:
def __init__(self,d,dl):
self.doc, self.doclist = d, dl
def validate(self):
self.check_mandatory()
self.pl_must_have_cost_center()
self.validate_posting_date()
self.check_pl_account()
self.validate_cost_center()
def on_update_with_args(self, adv_adj, update_outstanding = 'Yes'):
self.validate_account_details(adv_adj)
validate_frozen_account(self.doc.account, adv_adj)
check_freezing_date(self.doc.posting_date, adv_adj)
check_negative_balance(self.doc.account, adv_adj)
# Update outstanding amt on against voucher
if self.doc.against_voucher and self.doc.against_voucher_type != "POS" \
and update_outstanding == 'Yes':
update_outstanding_amt(self.doc.account, self.doc.against_voucher_type,
self.doc.against_voucher)
def check_mandatory(self):
mandatory = ['account','remarks','voucher_type','voucher_no','fiscal_year','company']
for k in mandatory:
if not self.doc.fields.get(k):
webnotes.throw(k + _(" is mandatory for GL Entry"))
# Zero value transaction is not allowed
if not (flt(self.doc.debit) or flt(self.doc.credit)):
webnotes.throw(_("GL Entry: Debit or Credit amount is mandatory for ") +
self.doc.account)
def pl_must_have_cost_center(self):
if webnotes.conn.get_value("Account", self.doc.account, "is_pl_account") == "Yes":
if not self.doc.cost_center and self.doc.voucher_type != 'Period Closing Voucher':
webnotes.throw(_("Cost Center must be specified for PL Account: ") +
self.doc.account)
elif self.doc.cost_center:
self.doc.cost_center = None
def validate_posting_date(self):
from accounts.utils import validate_fiscal_year
validate_fiscal_year(self.doc.posting_date, self.doc.fiscal_year, "Posting Date")
def check_pl_account(self):
if self.doc.is_opening=='Yes' and \
webnotes.conn.get_value("Account", self.doc.account, "is_pl_account") == "Yes":
webnotes.throw(_("For opening balance entry account can not be a PL account"))
def validate_account_details(self, adv_adj):
"""Account must be ledger, active and not freezed"""
ret = webnotes.conn.sql("""select group_or_ledger, docstatus, company
from tabAccount where name=%s""", self.doc.account, as_dict=1)[0]
if ret.group_or_ledger=='Group':
webnotes.throw(_("Account") + ": " + self.doc.account + _(" is not a ledger"))
if ret.docstatus==2:
webnotes.throw(_("Account") + ": " + self.doc.account + _(" is not active"))
if ret.company != self.doc.company:
webnotes.throw(_("Account") + ": " + self.doc.account +
_(" does not belong to the company") + ": " + self.doc.company)
def validate_cost_center(self):
if not hasattr(self, "cost_center_company"):
self.cost_center_company = {}
def _get_cost_center_company():
if not self.cost_center_company.get(self.doc.cost_center):
self.cost_center_company[self.doc.cost_center] = webnotes.conn.get_value(
"Cost Center", self.doc.cost_center, "company")
return self.cost_center_company[self.doc.cost_center]
if self.doc.cost_center and _get_cost_center_company() != self.doc.company:
webnotes.throw(_("Cost Center") + ": " + self.doc.cost_center +
_(" does not belong to the company") + ": " + self.doc.company)
def check_negative_balance(account, adv_adj=False):
if not adv_adj and account:
account_details = webnotes.conn.get_value("Account", account,
["allow_negative_balance", "debit_or_credit"], as_dict=True)
if not account_details["allow_negative_balance"]:
balance = webnotes.conn.sql("""select sum(debit) - sum(credit) from `tabGL Entry`
where account = %s""", account)
balance = account_details["debit_or_credit"] == "Debit" and \
flt(balance[0][0]) or -1*flt(balance[0][0])
if flt(balance) < 0:
webnotes.throw(_("Negative balance is not allowed for account ") + account)
def check_freezing_date(posting_date, adv_adj=False):
"""
Nobody can do GL Entries where posting date is before freezing date
except authorized person
"""
if not adv_adj:
acc_frozen_upto = webnotes.conn.get_value('Accounts Settings', None, 'acc_frozen_upto')
if acc_frozen_upto:
bde_auth_role = webnotes.conn.get_value( 'Accounts Settings', None,'bde_auth_role')
if getdate(posting_date) <= getdate(acc_frozen_upto) \
and not bde_auth_role in webnotes.user.get_roles():
webnotes.throw(_("You are not authorized to do/modify back dated entries before ")
+ getdate(acc_frozen_upto).strftime('%d-%m-%Y'))
def update_outstanding_amt(account, against_voucher_type, against_voucher, on_cancel=False):
# get final outstanding amt
bal = flt(webnotes.conn.sql("""select sum(ifnull(debit, 0)) - sum(ifnull(credit, 0))
from `tabGL Entry`
where against_voucher_type=%s and against_voucher=%s and account = %s""",
(against_voucher_type, against_voucher, account))[0][0] or 0.0)
if against_voucher_type == 'Purchase Invoice':
bal = -bal
elif against_voucher_type == "Journal Voucher":
against_voucher_amount = flt(webnotes.conn.sql("""
select sum(ifnull(debit, 0)) - sum(ifnull(credit, 0))
from `tabGL Entry` where voucher_type = 'Journal Voucher' and voucher_no = %s
and account = %s and ifnull(against_voucher, '') = ''""",
(against_voucher, account))[0][0])
bal = against_voucher_amount + bal
if against_voucher_amount < 0:
bal = -bal
# Validation : Outstanding can not be negative
if bal < 0 and not on_cancel:
webnotes.throw(_("Outstanding for Voucher ") + against_voucher + _(" will become ") +
fmt_money(bal) + _(". Outstanding cannot be less than zero. \
Please match exact outstanding."))
# Update outstanding amt on against voucher
if against_voucher_type in ["Sales Invoice", "Purchase Invoice"]:
webnotes.conn.sql("update `tab%s` set outstanding_amount=%s where name='%s'" %
(against_voucher_type, bal, against_voucher))
def validate_frozen_account(account, adv_adj):
frozen_account = webnotes.conn.get_value("Account", account, "freeze_account")
if frozen_account == 'Yes' and not adv_adj:
frozen_accounts_modifier = webnotes.conn.get_value( 'Accounts Settings', None,
'frozen_accounts_modifier')
if not frozen_accounts_modifier:
webnotes.throw(account + _(" is a frozen account. \
Either make the account active or assign role in Accounts Settings \
who can create / modify entries against this account"))
elif frozen_accounts_modifier not in webnotes.user.get_roles():
webnotes.throw(account + _(" is a frozen account. ") +
_("To create / edit transactions against this account, you need role") + ": " +
frozen_accounts_modifier)

View File

@@ -1,232 +0,0 @@
[
{
"creation": "2013-01-10 16:34:06",
"docstatus": 0,
"modified": "2013-11-03 14:14:09",
"modified_by": "Administrator",
"owner": "Administrator"
},
{
"autoname": "GL.#######",
"doctype": "DocType",
"icon": "icon-list",
"in_create": 1,
"module": "Accounts",
"name": "__common__",
"search_fields": "voucher_no,account,posting_date,against_voucher"
},
{
"doctype": "DocField",
"name": "__common__",
"parent": "GL Entry",
"parentfield": "fields",
"parenttype": "DocType",
"permlevel": 0
},
{
"create": 0,
"doctype": "DocPerm",
"name": "__common__",
"parent": "GL Entry",
"parentfield": "permissions",
"parenttype": "DocType",
"permlevel": 0,
"read": 1,
"report": 1,
"submit": 0,
"write": 0
},
{
"doctype": "DocType",
"name": "GL Entry"
},
{
"doctype": "DocField",
"fieldname": "posting_date",
"fieldtype": "Date",
"in_filter": 1,
"label": "Posting Date",
"oldfieldname": "posting_date",
"oldfieldtype": "Date",
"search_index": 1
},
{
"doctype": "DocField",
"fieldname": "transaction_date",
"fieldtype": "Date",
"label": "Transaction Date",
"oldfieldname": "transaction_date",
"oldfieldtype": "Date"
},
{
"doctype": "DocField",
"fieldname": "aging_date",
"fieldtype": "Date",
"in_filter": 1,
"label": "Aging Date",
"oldfieldname": "aging_date",
"oldfieldtype": "Date",
"search_index": 0
},
{
"doctype": "DocField",
"fieldname": "account",
"fieldtype": "Link",
"in_filter": 1,
"label": "Account",
"oldfieldname": "account",
"oldfieldtype": "Link",
"options": "Account",
"search_index": 1
},
{
"doctype": "DocField",
"fieldname": "cost_center",
"fieldtype": "Link",
"in_filter": 1,
"label": "Cost Center",
"oldfieldname": "cost_center",
"oldfieldtype": "Link",
"options": "Cost Center",
"search_index": 0
},
{
"doctype": "DocField",
"fieldname": "debit",
"fieldtype": "Currency",
"label": "Debit Amt",
"oldfieldname": "debit",
"oldfieldtype": "Currency",
"options": "Company:company:default_currency"
},
{
"doctype": "DocField",
"fieldname": "credit",
"fieldtype": "Currency",
"label": "Credit Amt",
"oldfieldname": "credit",
"oldfieldtype": "Currency",
"options": "Company:company:default_currency"
},
{
"doctype": "DocField",
"fieldname": "against",
"fieldtype": "Text",
"in_filter": 1,
"label": "Against",
"oldfieldname": "against",
"oldfieldtype": "Text"
},
{
"doctype": "DocField",
"fieldname": "against_voucher",
"fieldtype": "Data",
"in_filter": 1,
"label": "Against Voucher",
"oldfieldname": "against_voucher",
"oldfieldtype": "Data",
"search_index": 0
},
{
"doctype": "DocField",
"fieldname": "against_voucher_type",
"fieldtype": "Data",
"in_filter": 0,
"label": "Against Voucher Type",
"oldfieldname": "against_voucher_type",
"oldfieldtype": "Data",
"search_index": 0
},
{
"doctype": "DocField",
"fieldname": "voucher_type",
"fieldtype": "Select",
"in_filter": 1,
"label": "Voucher Type",
"oldfieldname": "voucher_type",
"oldfieldtype": "Select",
"options": "Journal Voucher\nSales Invoice\nPurchase Invoice",
"search_index": 0
},
{
"doctype": "DocField",
"fieldname": "voucher_no",
"fieldtype": "Data",
"in_filter": 1,
"label": "Voucher No",
"oldfieldname": "voucher_no",
"oldfieldtype": "Data",
"search_index": 1
},
{
"doctype": "DocField",
"fieldname": "remarks",
"fieldtype": "Text",
"in_filter": 1,
"label": "Remarks",
"no_copy": 1,
"oldfieldname": "remarks",
"oldfieldtype": "Text",
"search_index": 0
},
{
"doctype": "DocField",
"fieldname": "is_opening",
"fieldtype": "Select",
"in_filter": 1,
"label": "Is Opening",
"oldfieldname": "is_opening",
"oldfieldtype": "Select",
"options": "No\nYes",
"search_index": 0
},
{
"doctype": "DocField",
"fieldname": "is_advance",
"fieldtype": "Select",
"in_filter": 0,
"label": "Is Advance",
"oldfieldname": "is_advance",
"oldfieldtype": "Select",
"options": "No\nYes",
"search_index": 0
},
{
"doctype": "DocField",
"fieldname": "fiscal_year",
"fieldtype": "Select",
"in_filter": 1,
"label": "Fiscal Year",
"oldfieldname": "fiscal_year",
"oldfieldtype": "Select",
"options": "link:Fiscal Year",
"search_index": 0
},
{
"doctype": "DocField",
"fieldname": "company",
"fieldtype": "Link",
"in_filter": 1,
"label": "Company",
"oldfieldname": "company",
"oldfieldtype": "Link",
"options": "Company",
"search_index": 0
},
{
"amend": 0,
"cancel": 0,
"doctype": "DocPerm",
"role": "Accounts User"
},
{
"amend": 0,
"cancel": 0,
"doctype": "DocPerm",
"role": "Accounts Manager"
},
{
"doctype": "DocPerm",
"role": "System Manager"
}
]

View File

@@ -1,239 +0,0 @@
// Copyright (c) 2013, Web Notes Technologies Pvt. Ltd. and Contributors
// License: GNU General Public License v3. See license.txt
wn.provide("erpnext.accounts");
erpnext.accounts.JournalVoucher = wn.ui.form.Controller.extend({
onload: function() {
this.load_defaults();
this.setup_queries();
},
load_defaults: function() {
if(this.frm.doc.__islocal && this.frm.doc.company) {
wn.model.set_default_values(this.frm.doc);
$.each(wn.model.get_doclist(this.frm.doc.doctype,
this.frm.doc.name, {parentfield: "entries"}), function(i, jvd) {
wn.model.set_default_values(jvd);
}
);
if(!this.frm.doc.amended_from) this.frm.doc.posting_date = get_today();
}
},
setup_queries: function() {
var me = this;
$.each(["account", "cost_center"], function(i, fieldname) {
me.frm.set_query(fieldname, "entries", function() {
wn.model.validate_missing(me.frm.doc, "company");
return {
filters: {
company: me.frm.doc.company,
group_or_ledger: "Ledger"
}
};
});
});
$.each([["against_voucher", "Purchase Invoice", "credit_to"],
["against_invoice", "Sales Invoice", "debit_to"]], function(i, opts) {
me.frm.set_query(opts[0], "entries", function(doc, cdt, cdn) {
var jvd = wn.model.get_doc(cdt, cdn);
wn.model.validate_missing(jvd, "account");
return {
filters: [
[opts[1], opts[2], "=", jvd.account],
[opts[1], "docstatus", "=", 1],
[opts[1], "outstanding_amount", ">", 0]
]
};
});
});
this.frm.set_query("against_jv", "entries", function(doc, cdt, cdn) {
var jvd = wn.model.get_doc(cdt, cdn);
wn.model.validate_missing(jvd, "account");
return {
query: "accounts.doctype.journal_voucher.journal_voucher.get_against_jv",
filters: { account: jvd.account }
};
});
},
against_voucher: function(doc, cdt, cdn) {
var d = wn.model.get_doc(cdt, cdn);
if (d.against_voucher && !flt(d.debit)) {
this.get_outstanding({
'doctype': 'Purchase Invoice',
'docname': d.against_voucher
}, d)
}
},
against_invoice: function(doc, cdt, cdn) {
var d = wn.model.get_doc(cdt, cdn);
if (d.against_invoice && !flt(d.credit)) {
this.get_outstanding({
'doctype': 'Sales Invoice',
'docname': d.against_invoice
}, d)
}
},
against_jv: function(doc, cdt, cdn) {
var d = wn.model.get_doc(cdt, cdn);
if (d.against_jv && !flt(d.credit) && !flt(d.debit)) {
this.get_outstanding({
'doctype': 'Journal Voucher',
'docname': d.against_jv,
'account': d.account
}, d)
}
},
get_outstanding: function(args, child) {
var me = this;
return this.frm.call({
child: child,
method: "get_outstanding",
args: { args: args},
callback: function(r) {
cur_frm.cscript.update_totals(me.frm.doc);
}
});
}
});
cur_frm.script_manager.make(erpnext.accounts.JournalVoucher);
cur_frm.cscript.refresh = function(doc) {
cur_frm.cscript.is_opening(doc)
erpnext.hide_naming_series();
cur_frm.cscript.voucher_type(doc);
if(doc.docstatus==1) {
cur_frm.appframe.add_button(wn._('View Ledger'), function() {
wn.route_options = {
"voucher_no": doc.name,
"from_date": doc.posting_date,
"to_date": doc.posting_date,
};
wn.set_route("general-ledger");
}, "icon-table");
}
}
cur_frm.cscript.company = function(doc, cdt, cdn) {
cur_frm.refresh_fields();
}
cur_frm.cscript.is_opening = function(doc, cdt, cdn) {
hide_field('aging_date');
if (doc.is_opening == 'Yes') unhide_field('aging_date');
}
cur_frm.cscript.update_totals = function(doc) {
var td=0.0; var tc =0.0;
var el = getchildren('Journal Voucher Detail', doc.name, 'entries');
for(var i in el) {
td += flt(el[i].debit, 2);
tc += flt(el[i].credit, 2);
}
var doc = locals[doc.doctype][doc.name];
doc.total_debit = td;
doc.total_credit = tc;
doc.difference = flt((td - tc), 2);
refresh_many(['total_debit','total_credit','difference']);
}
cur_frm.cscript.debit = function(doc,dt,dn) { cur_frm.cscript.update_totals(doc); }
cur_frm.cscript.credit = function(doc,dt,dn) { cur_frm.cscript.update_totals(doc); }
cur_frm.cscript.get_balance = function(doc,dt,dn) {
cur_frm.cscript.update_totals(doc);
return $c_obj(make_doclist(dt,dn), 'get_balance', '', function(r, rt){
cur_frm.refresh();
});
}
// Get balance
// -----------
cur_frm.cscript.account = function(doc,dt,dn) {
var d = locals[dt][dn];
if(d.account) {
return wn.call({
method: "accounts.utils.get_balance_on",
args: {account: d.account, date: doc.posting_date},
callback: function(r) {
d.balance = r.message;
refresh_field('balance', d.name, 'entries');
}
});
}
}
cur_frm.cscript.validate = function(doc,cdt,cdn) {
cur_frm.cscript.update_totals(doc);
}
cur_frm.cscript.select_print_heading = function(doc,cdt,cdn){
if(doc.select_print_heading){
// print heading
cur_frm.pformat.print_heading = doc.select_print_heading;
}
else
cur_frm.pformat.print_heading = wn._("Journal Voucher");
}
cur_frm.cscript.voucher_type = function(doc, cdt, cdn) {
cur_frm.set_df_property("cheque_no", "reqd", doc.voucher_type=="Bank Voucher");
cur_frm.set_df_property("cheque_date", "reqd", doc.voucher_type=="Bank Voucher");
if(wn.model.get("Journal Voucher Detail", {"parent":doc.name}).length!==0 // too late
|| !doc.company) // too early
return;
var update_jv_details = function(doc, r) {
$.each(r.message, function(i, d) {
var jvdetail = wn.model.add_child(doc, "Journal Voucher Detail", "entries");
jvdetail.account = d.account;
jvdetail.balance = d.balance;
});
refresh_field("entries");
}
if(in_list(["Bank Voucher", "Cash Voucher"], doc.voucher_type)) {
return wn.call({
type: "GET",
method: "accounts.doctype.journal_voucher.journal_voucher.get_default_bank_cash_account",
args: {
"voucher_type": doc.voucher_type,
"company": doc.company
},
callback: function(r) {
if(r.message) {
update_jv_details(doc, r);
}
}
})
} else if(doc.voucher_type=="Opening Entry") {
return wn.call({
type:"GET",
method: "accounts.doctype.journal_voucher.journal_voucher.get_opening_accounts",
args: {
"company": doc.company
},
callback: function(r) {
wn.model.clear_table("Journal Voucher Detail", "Journal Voucher",
doc.name, "entries");
if(r.message) {
update_jv_details(doc, r);
}
cur_frm.set_value("is_opening", "Yes")
}
})
}
}

View File

@@ -1,463 +0,0 @@
# Copyright (c) 2013, Web Notes Technologies Pvt. Ltd. and Contributors
# License: GNU General Public License v3. See license.txt
from __future__ import unicode_literals
import webnotes
from webnotes.utils import cint, cstr, flt, fmt_money, formatdate, getdate
from webnotes.model.doc import addchild
from webnotes.model.bean import getlist
from webnotes import msgprint, _
from setup.utils import get_company_currency
from controllers.accounts_controller import AccountsController
class DocType(AccountsController):
def __init__(self,d,dl):
self.doc, self.doclist = d,dl
self.master_type = {}
self.credit_days_for = {}
self.credit_days_global = -1
self.is_approving_authority = -1
def validate(self):
if not self.doc.is_opening:
self.doc.is_opening='No'
self.doc.clearance_date = None
super(DocType, self).validate_date_with_fiscal_year()
self.validate_debit_credit()
self.validate_cheque_info()
self.validate_entries_for_advance()
self.validate_against_jv()
self.set_against_account()
self.create_remarks()
self.set_aging_date()
self.set_print_format_fields()
def on_submit(self):
if self.doc.voucher_type in ['Bank Voucher', 'Contra Voucher', 'Journal Entry']:
self.check_credit_days()
self.check_account_against_entries()
self.make_gl_entries()
self.check_credit_limit()
def on_cancel(self):
from accounts.utils import remove_against_link_from_jv
remove_against_link_from_jv(self.doc.doctype, self.doc.name, "against_jv")
self.make_gl_entries(1)
def on_trash(self):
pass
#if self.doc.amended_from:
# webnotes.delete_doc("Journal Voucher", self.doc.amended_from)
def validate_debit_credit(self):
for d in getlist(self.doclist, 'entries'):
if d.debit and d.credit:
msgprint("You cannot credit and debit same account at the same time.",
raise_exception=1)
def validate_cheque_info(self):
if self.doc.voucher_type in ['Bank Voucher']:
if not self.doc.cheque_no or not self.doc.cheque_date:
msgprint("Reference No & Reference Date is required for %s" %
self.doc.voucher_type, raise_exception=1)
if self.doc.cheque_date and not self.doc.cheque_no:
msgprint("Reference No is mandatory if you entered Reference Date", raise_exception=1)
def validate_entries_for_advance(self):
for d in getlist(self.doclist,'entries'):
if not d.is_advance and not d.against_voucher and \
not d.against_invoice and not d.against_jv:
master_type = webnotes.conn.get_value("Account", d.account, "master_type")
if (master_type == 'Customer' and flt(d.credit) > 0) or \
(master_type == 'Supplier' and flt(d.debit) > 0):
msgprint("Message: Please check Is Advance as 'Yes' against \
Account %s if this is an advance entry." % d.account)
def validate_against_jv(self):
for d in getlist(self.doclist, 'entries'):
if d.against_jv:
if d.against_jv == self.doc.name:
msgprint("You can not enter current voucher in 'Against JV' column",
raise_exception=1)
elif not webnotes.conn.sql("""select name from `tabJournal Voucher Detail`
where account = '%s' and docstatus = 1 and parent = '%s'""" %
(d.account, d.against_jv)):
msgprint("Against JV: %s is not valid." % d.against_jv, raise_exception=1)
def set_against_account(self):
# Debit = Credit
debit, credit = 0.0, 0.0
debit_list, credit_list = [], []
for d in getlist(self.doclist, 'entries'):
debit += flt(d.debit, 2)
credit += flt(d.credit, 2)
if flt(d.debit)>0 and (d.account not in debit_list): debit_list.append(d.account)
if flt(d.credit)>0 and (d.account not in credit_list): credit_list.append(d.account)
self.doc.total_debit = debit
self.doc.total_credit = credit
if abs(self.doc.total_debit-self.doc.total_credit) > 0.001:
msgprint("Debit must be equal to Credit. The difference is %s" %
(self.doc.total_debit-self.doc.total_credit), raise_exception=1)
# update against account
for d in getlist(self.doclist, 'entries'):
if flt(d.debit) > 0: d.against_account = ', '.join(credit_list)
if flt(d.credit) > 0: d.against_account = ', '.join(debit_list)
def create_remarks(self):
r = []
if self.doc.cheque_no :
if self.doc.cheque_date:
r.append('Via Reference #%s dated %s' %
(self.doc.cheque_no, formatdate(self.doc.cheque_date)))
else :
msgprint("Please enter Reference date", raise_exception=1)
for d in getlist(self.doclist, 'entries'):
if d.against_invoice and d.credit:
currency = webnotes.conn.get_value("Sales Invoice", d.against_invoice, "currency")
r.append('%s %s against Invoice: %s' %
(cstr(currency), fmt_money(flt(d.credit)), d.against_invoice))
if d.against_voucher and d.debit:
bill_no = webnotes.conn.sql("""select bill_no, bill_date, currency
from `tabPurchase Invoice` where name=%s""", d.against_voucher)
if bill_no and bill_no[0][0] and bill_no[0][0].lower().strip() \
not in ['na', 'not applicable', 'none']:
r.append('%s %s against Bill %s dated %s' %
(cstr(bill_no[0][2]), fmt_money(flt(d.debit)), bill_no[0][0],
bill_no[0][1] and formatdate(bill_no[0][1].strftime('%Y-%m-%d')) or ''))
if self.doc.user_remark:
r.append("User Remark : %s"%self.doc.user_remark)
if r:
self.doc.remark = ("\n").join(r)
else:
webnotes.msgprint("User Remarks is mandatory", raise_exception=1)
def set_aging_date(self):
if self.doc.is_opening != 'Yes':
self.doc.aging_date = self.doc.posting_date
else:
# check account type whether supplier or customer
exists = False
for d in getlist(self.doclist, 'entries'):
account_type = webnotes.conn.get_value("Account", d.account, "account_type")
if account_type in ["Supplier", "Customer"]:
exists = True
break
# If customer/supplier account, aging date is mandatory
if exists and not self.doc.aging_date:
msgprint("Aging Date is mandatory for opening entry", raise_exception=1)
else:
self.doc.aging_date = self.doc.posting_date
def set_print_format_fields(self):
for d in getlist(self.doclist, 'entries'):
account_type, master_type = webnotes.conn.get_value("Account", d.account,
["account_type", "master_type"])
if master_type in ['Supplier', 'Customer']:
if not self.doc.pay_to_recd_from:
self.doc.pay_to_recd_from = webnotes.conn.get_value(master_type,
' - '.join(d.account.split(' - ')[:-1]),
master_type == 'Customer' and 'customer_name' or 'supplier_name')
if account_type == 'Bank or Cash':
company_currency = get_company_currency(self.doc.company)
amt = flt(d.debit) and d.debit or d.credit
self.doc.total_amount = company_currency + ' ' + cstr(amt)
from webnotes.utils import money_in_words
self.doc.total_amount_in_words = money_in_words(amt, company_currency)
def check_credit_days(self):
date_diff = 0
if self.doc.cheque_date:
date_diff = (getdate(self.doc.cheque_date)-getdate(self.doc.posting_date)).days
if date_diff <= 0: return
# Get List of Customer Account
acc_list = filter(lambda d: webnotes.conn.get_value("Account", d.account,
"master_type")=='Customer', getlist(self.doclist,'entries'))
for d in acc_list:
credit_days = self.get_credit_days_for(d.account)
# Check credit days
if credit_days > 0 and not self.get_authorized_user() and cint(date_diff) > credit_days:
msgprint("Credit Not Allowed: Cannot allow a check that is dated \
more than %s days after the posting date" % credit_days, raise_exception=1)
def get_credit_days_for(self, ac):
if not self.credit_days_for.has_key(ac):
self.credit_days_for[ac] = cint(webnotes.conn.get_value("Account", ac, "credit_days"))
if not self.credit_days_for[ac]:
if self.credit_days_global==-1:
self.credit_days_global = cint(webnotes.conn.get_value("Company",
self.doc.company, "credit_days"))
return self.credit_days_global
else:
return self.credit_days_for[ac]
def get_authorized_user(self):
if self.is_approving_authority==-1:
self.is_approving_authority = 0
# Fetch credit controller role
approving_authority = webnotes.conn.get_value("Global Defaults", None,
"credit_controller")
# Check logged-in user is authorized
if approving_authority in webnotes.user.get_roles():
self.is_approving_authority = 1
return self.is_approving_authority
def check_account_against_entries(self):
for d in self.doclist.get({"parentfield": "entries"}):
if d.against_invoice and webnotes.conn.get_value("Sales Invoice",
d.against_invoice, "debit_to") != d.account:
webnotes.throw(_("Credited account (Customer) is not matching with Sales Invoice"))
if d.against_voucher and webnotes.conn.get_value("Purchase Invoice",
d.against_voucher, "credit_to") != d.account:
webnotes.throw(_("Debited account (Supplier) is not matching with \
Purchase Invoice"))
def make_gl_entries(self, cancel=0, adv_adj=0):
from accounts.general_ledger import make_gl_entries
gl_map = []
for d in self.doclist.get({"parentfield": "entries"}):
if d.debit or d.credit:
gl_map.append(
self.get_gl_dict({
"account": d.account,
"against": d.against_account,
"debit": d.debit,
"credit": d.credit,
"against_voucher_type": ((d.against_voucher and "Purchase Invoice")
or (d.against_invoice and "Sales Invoice")
or (d.against_jv and "Journal Voucher")),
"against_voucher": d.against_voucher or d.against_invoice or d.against_jv,
"remarks": self.doc.remark,
"cost_center": d.cost_center
})
)
if gl_map:
make_gl_entries(gl_map, cancel=cancel, adv_adj=adv_adj)
def check_credit_limit(self):
for d in self.doclist.get({"parentfield": "entries"}):
master_type, master_name = webnotes.conn.get_value("Account", d.account,
["master_type", "master_name"])
if master_type == "Customer" and master_name:
super(DocType, self).check_credit_limit(d.account)
def get_balance(self):
if not getlist(self.doclist,'entries'):
msgprint("Please enter atleast 1 entry in 'GL Entries' table")
else:
flag, self.doc.total_debit, self.doc.total_credit = 0, 0, 0
diff = flt(self.doc.difference, 2)
# If any row without amount, set the diff on that row
for d in getlist(self.doclist,'entries'):
if not d.credit and not d.debit and diff != 0:
if diff>0:
d.credit = diff
elif diff<0:
d.debit = diff
flag = 1
# Set the diff in a new row
if flag == 0 and diff != 0:
jd = addchild(self.doc, 'entries', 'Journal Voucher Detail', self.doclist)
if diff>0:
jd.credit = abs(diff)
elif diff<0:
jd.debit = abs(diff)
# Set the total debit, total credit and difference
for d in getlist(self.doclist,'entries'):
self.doc.total_debit += flt(d.debit, 2)
self.doc.total_credit += flt(d.credit, 2)
self.doc.difference = flt(self.doc.total_debit, 2) - flt(self.doc.total_credit, 2)
def get_outstanding_invoices(self):
self.doclist = self.doc.clear_table(self.doclist, 'entries')
total = 0
for d in self.get_values():
total += flt(d[2])
jd = addchild(self.doc, 'entries', 'Journal Voucher Detail', self.doclist)
jd.account = cstr(d[1])
if self.doc.write_off_based_on == 'Accounts Receivable':
jd.credit = flt(d[2])
jd.against_invoice = cstr(d[0])
elif self.doc.write_off_based_on == 'Accounts Payable':
jd.debit = flt(d[2])
jd.against_voucher = cstr(d[0])
jd.save(1)
jd = addchild(self.doc, 'entries', 'Journal Voucher Detail', self.doclist)
if self.doc.write_off_based_on == 'Accounts Receivable':
jd.debit = total
elif self.doc.write_off_based_on == 'Accounts Payable':
jd.credit = total
jd.save(1)
def get_values(self):
cond = (flt(self.doc.write_off_amount) > 0) and \
' and outstanding_amount <= '+ self.doc.write_off_amount or ''
if self.doc.write_off_based_on == 'Accounts Receivable':
return webnotes.conn.sql("""select name, debit_to, outstanding_amount
from `tabSales Invoice` where docstatus = 1 and company = %s
and outstanding_amount > 0 %s""" % ('%s', cond), self.doc.company)
elif self.doc.write_off_based_on == 'Accounts Payable':
return webnotes.conn.sql("""select name, credit_to, outstanding_amount
from `tabPurchase Invoice` where docstatus = 1 and company = %s
and outstanding_amount > 0 %s""" % ('%s', cond), self.doc.company)
@webnotes.whitelist()
def get_default_bank_cash_account(company, voucher_type):
from accounts.utils import get_balance_on
account = webnotes.conn.get_value("Company", company,
voucher_type=="Bank Voucher" and "default_bank_account" or "default_cash_account")
if account:
return {
"account": account,
"balance": get_balance_on(account)
}
@webnotes.whitelist()
def get_payment_entry_from_sales_invoice(sales_invoice):
from accounts.utils import get_balance_on
si = webnotes.bean("Sales Invoice", sales_invoice)
jv = get_payment_entry(si.doc)
jv.doc.remark = 'Payment received against Sales Invoice %(name)s. %(remarks)s' % si.doc.fields
# credit customer
jv.doclist[1].account = si.doc.debit_to
jv.doclist[1].balance = get_balance_on(si.doc.debit_to)
jv.doclist[1].credit = si.doc.outstanding_amount
jv.doclist[1].against_invoice = si.doc.name
# debit bank
jv.doclist[2].debit = si.doc.outstanding_amount
return [d.fields for d in jv.doclist]
@webnotes.whitelist()
def get_payment_entry_from_purchase_invoice(purchase_invoice):
from accounts.utils import get_balance_on
pi = webnotes.bean("Purchase Invoice", purchase_invoice)
jv = get_payment_entry(pi.doc)
jv.doc.remark = 'Payment against Purchase Invoice %(name)s. %(remarks)s' % pi.doc.fields
# credit supplier
jv.doclist[1].account = pi.doc.credit_to
jv.doclist[1].balance = get_balance_on(pi.doc.credit_to)
jv.doclist[1].debit = pi.doc.outstanding_amount
jv.doclist[1].against_voucher = pi.doc.name
# credit bank
jv.doclist[2].credit = pi.doc.outstanding_amount
return [d.fields for d in jv.doclist]
def get_payment_entry(doc):
bank_account = get_default_bank_cash_account(doc.company, "Bank Voucher")
jv = webnotes.new_bean('Journal Voucher')
jv.doc.voucher_type = 'Bank Voucher'
jv.doc.company = doc.company
jv.doc.fiscal_year = doc.fiscal_year
jv.doclist.append({
"doctype": "Journal Voucher Detail",
"parentfield": "entries"
})
jv.doclist.append({
"doctype": "Journal Voucher Detail",
"parentfield": "entries"
})
if bank_account:
jv.doclist[2].account = bank_account["account"]
jv.doclist[2].balance = bank_account["balance"]
return jv
@webnotes.whitelist()
def get_opening_accounts(company):
"""get all balance sheet accounts for opening entry"""
from accounts.utils import get_balance_on
accounts = webnotes.conn.sql_list("""select name from tabAccount
where group_or_ledger='Ledger' and is_pl_account='No' and company=%s""", company)
return [{"account": a, "balance": get_balance_on(a)} for a in accounts]
def get_against_purchase_invoice(doctype, txt, searchfield, start, page_len, filters):
return webnotes.conn.sql("""select name, credit_to, outstanding_amount, bill_no, bill_date
from `tabPurchase Invoice` where credit_to = %s and docstatus = 1
and outstanding_amount > 0 and %s like %s order by name desc limit %s, %s""" %
("%s", searchfield, "%s", "%s", "%s"),
(filters["account"], "%%%s%%" % txt, start, page_len))
def get_against_sales_invoice(doctype, txt, searchfield, start, page_len, filters):
return webnotes.conn.sql("""select name, debit_to, outstanding_amount
from `tabSales Invoice` where debit_to = %s and docstatus = 1
and outstanding_amount > 0 and `%s` like %s order by name desc limit %s, %s""" %
("%s", searchfield, "%s", "%s", "%s"),
(filters["account"], "%%%s%%" % txt, start, page_len))
def get_against_jv(doctype, txt, searchfield, start, page_len, filters):
return webnotes.conn.sql("""select jv.name, jv.posting_date, jv.user_remark
from `tabJournal Voucher` jv, `tabJournal Voucher Detail` jv_detail
where jv_detail.parent = jv.name and jv_detail.account = %s and jv.docstatus = 1
and jv.%s like %s order by jv.name desc limit %s, %s""" %
("%s", searchfield, "%s", "%s", "%s"),
(filters["account"], "%%%s%%" % txt, start, page_len))
@webnotes.whitelist()
def get_outstanding(args):
args = eval(args)
if args.get("doctype") == "Journal Voucher" and args.get("account"):
against_jv_amount = webnotes.conn.sql("""
select sum(ifnull(debit, 0)) - sum(ifnull(credit, 0))
from `tabJournal Voucher Detail` where parent=%s and account=%s
and ifnull(against_invoice, '')='' and ifnull(against_voucher, '')=''
and ifnull(against_jv, '')=''""", (args['docname'], args['account']))
against_jv_amount = flt(against_jv_amount[0][0]) if against_jv_amount else 0
if against_jv_amount > 0:
return {"credit": against_jv_amount}
else:
return {"debit": -1* against_jv_amount}
elif args.get("doctype") == "Sales Invoice":
return {
"credit": flt(webnotes.conn.get_value("Sales Invoice", args["docname"],
"outstanding_amount"))
}
elif args.get("doctype") == "Purchase Invoice":
return {
"debit": flt(webnotes.conn.get_value("Purchase Invoice", args["docname"],
"outstanding_amount"))
}

View File

@@ -1,497 +0,0 @@
[
{
"creation": "2013-03-25 10:53:52",
"docstatus": 0,
"modified": "2013-11-03 14:11:33",
"modified_by": "Administrator",
"owner": "Administrator"
},
{
"allow_import": 1,
"autoname": "naming_series:",
"doctype": "DocType",
"icon": "icon-file-text",
"is_submittable": 1,
"module": "Accounts",
"name": "__common__",
"read_only_onload": 1,
"search_fields": "voucher_type,posting_date, due_date, cheque_no"
},
{
"doctype": "DocField",
"name": "__common__",
"parent": "Journal Voucher",
"parentfield": "fields",
"parenttype": "DocType",
"permlevel": 0
},
{
"doctype": "DocPerm",
"name": "__common__",
"parent": "Journal Voucher",
"parentfield": "permissions",
"parenttype": "DocType",
"permlevel": 0,
"read": 1,
"report": 1
},
{
"doctype": "DocType",
"name": "Journal Voucher"
},
{
"doctype": "DocField",
"fieldname": "voucher_type_and_date",
"fieldtype": "Section Break",
"label": "Voucher Type and Date",
"options": "icon-flag"
},
{
"doctype": "DocField",
"fieldname": "column_break0",
"fieldtype": "Column Break",
"oldfieldtype": "Column Break",
"read_only": 0,
"width": "50%"
},
{
"doctype": "DocField",
"fieldname": "naming_series",
"fieldtype": "Select",
"label": "Series",
"no_copy": 1,
"oldfieldname": "naming_series",
"oldfieldtype": "Select",
"options": "JV",
"print_hide": 1,
"read_only": 0,
"reqd": 1
},
{
"doctype": "DocField",
"fieldname": "voucher_type",
"fieldtype": "Select",
"in_filter": 1,
"in_list_view": 1,
"label": "Voucher Type",
"oldfieldname": "voucher_type",
"oldfieldtype": "Select",
"options": "\nJournal Entry\nBank Voucher\nCash Voucher\nCredit Card Voucher\nDebit Note\nCredit Note\nContra Voucher\nExcise Voucher\nWrite Off Voucher\nOpening Entry",
"print_hide": 0,
"read_only": 0,
"search_index": 1
},
{
"doctype": "DocField",
"fieldname": "column_break1",
"fieldtype": "Column Break",
"oldfieldtype": "Column Break",
"read_only": 0,
"width": "50%"
},
{
"doctype": "DocField",
"fieldname": "posting_date",
"fieldtype": "Date",
"in_filter": 1,
"in_list_view": 1,
"label": "Posting Date",
"no_copy": 1,
"oldfieldname": "posting_date",
"oldfieldtype": "Date",
"read_only": 0,
"reqd": 1,
"search_index": 1
},
{
"doctype": "DocField",
"fieldname": "2_add_edit_gl_entries",
"fieldtype": "Section Break",
"label": "Journal Entries",
"oldfieldtype": "Section Break",
"options": "icon-table",
"read_only": 0
},
{
"allow_on_submit": 1,
"doctype": "DocField",
"fieldname": "entries",
"fieldtype": "Table",
"label": "Entries",
"oldfieldname": "entries",
"oldfieldtype": "Table",
"options": "Journal Voucher Detail",
"print_hide": 0,
"read_only": 0
},
{
"doctype": "DocField",
"fieldname": "section_break99",
"fieldtype": "Section Break",
"read_only": 0
},
{
"doctype": "DocField",
"fieldname": "total_debit",
"fieldtype": "Currency",
"in_filter": 1,
"in_list_view": 1,
"label": "Total Debit",
"no_copy": 1,
"oldfieldname": "total_debit",
"oldfieldtype": "Currency",
"options": "Company:company:default_currency",
"read_only": 1
},
{
"doctype": "DocField",
"fieldname": "total_credit",
"fieldtype": "Currency",
"in_filter": 1,
"label": "Total Credit",
"no_copy": 1,
"oldfieldname": "total_credit",
"oldfieldtype": "Currency",
"options": "Company:company:default_currency",
"read_only": 1
},
{
"doctype": "DocField",
"fieldname": "column_break99",
"fieldtype": "Column Break",
"read_only": 0
},
{
"doctype": "DocField",
"fieldname": "difference",
"fieldtype": "Currency",
"label": "Difference",
"no_copy": 1,
"oldfieldname": "difference",
"oldfieldtype": "Currency",
"options": "Company:company:default_currency",
"print_hide": 1,
"read_only": 1
},
{
"doctype": "DocField",
"fieldname": "get_balance",
"fieldtype": "Button",
"label": "Make Difference Entry",
"oldfieldtype": "Button",
"read_only": 0
},
{
"doctype": "DocField",
"fieldname": "reference",
"fieldtype": "Section Break",
"label": "Reference",
"options": "icon-pushpin",
"read_only": 0
},
{
"description": "eg. Cheque Number",
"doctype": "DocField",
"fieldname": "cheque_no",
"fieldtype": "Data",
"in_filter": 1,
"in_list_view": 1,
"label": "Reference Number",
"no_copy": 1,
"oldfieldname": "cheque_no",
"oldfieldtype": "Data",
"read_only": 0,
"search_index": 1
},
{
"doctype": "DocField",
"fieldname": "cheque_date",
"fieldtype": "Date",
"label": "Reference Date",
"no_copy": 1,
"oldfieldname": "cheque_date",
"oldfieldtype": "Date",
"read_only": 0
},
{
"doctype": "DocField",
"fieldname": "clearance_date",
"fieldtype": "Date",
"in_filter": 1,
"label": "Clearance Date",
"no_copy": 1,
"oldfieldname": "clearance_date",
"oldfieldtype": "Date",
"print_hide": 0,
"read_only": 1,
"search_index": 1
},
{
"doctype": "DocField",
"fieldname": "column_break98",
"fieldtype": "Column Break",
"read_only": 0
},
{
"doctype": "DocField",
"fieldname": "user_remark",
"fieldtype": "Small Text",
"in_filter": 1,
"label": "User Remark",
"no_copy": 1,
"oldfieldname": "user_remark",
"oldfieldtype": "Small Text",
"read_only": 0
},
{
"description": "User Remark will be added to Auto Remark",
"doctype": "DocField",
"fieldname": "remark",
"fieldtype": "Small Text",
"in_list_view": 0,
"label": "Remark",
"no_copy": 1,
"oldfieldname": "remark",
"oldfieldtype": "Small Text",
"read_only": 1,
"reqd": 0
},
{
"doctype": "DocField",
"fieldname": "bill_no",
"fieldtype": "Data",
"in_list_view": 0,
"label": "Bill No",
"oldfieldname": "bill_no",
"oldfieldtype": "Data",
"print_hide": 1,
"read_only": 0
},
{
"doctype": "DocField",
"fieldname": "bill_date",
"fieldtype": "Date",
"label": "Bill Date",
"oldfieldname": "bill_date",
"oldfieldtype": "Date",
"print_hide": 1,
"read_only": 0
},
{
"doctype": "DocField",
"fieldname": "due_date",
"fieldtype": "Date",
"label": "Due Date",
"oldfieldname": "due_date",
"oldfieldtype": "Date",
"print_hide": 0,
"read_only": 0
},
{
"doctype": "DocField",
"fieldname": "addtional_info",
"fieldtype": "Section Break",
"label": "More Info",
"oldfieldtype": "Section Break",
"options": "icon-file-text",
"read_only": 0
},
{
"doctype": "DocField",
"fieldname": "column_break2",
"fieldtype": "Column Break",
"oldfieldtype": "Column Break",
"read_only": 0,
"width": "50%"
},
{
"default": "No",
"description": "Considered as Opening Balance",
"doctype": "DocField",
"fieldname": "is_opening",
"fieldtype": "Select",
"in_filter": 1,
"label": "Is Opening",
"oldfieldname": "is_opening",
"oldfieldtype": "Select",
"options": "No\nYes",
"print_hide": 1,
"read_only": 0,
"search_index": 1
},
{
"description": "Actual Posting Date",
"doctype": "DocField",
"fieldname": "aging_date",
"fieldtype": "Date",
"label": "Aging Date",
"no_copy": 0,
"oldfieldname": "aging_date",
"oldfieldtype": "Date",
"print_hide": 1,
"read_only": 0
},
{
"default": "Accounts Receivable",
"depends_on": "eval:doc.voucher_type == 'Write Off Voucher'",
"doctype": "DocField",
"fieldname": "write_off_based_on",
"fieldtype": "Select",
"label": "Write Off Based On",
"options": "Accounts Receivable\nAccounts Payable",
"print_hide": 1,
"read_only": 0,
"report_hide": 1
},
{
"depends_on": "eval:doc.voucher_type == 'Write Off Voucher'",
"doctype": "DocField",
"fieldname": "write_off_amount",
"fieldtype": "Currency",
"label": "Write Off Amount <=",
"options": "Company:company:default_currency",
"print_hide": 1,
"read_only": 0,
"report_hide": 1
},
{
"depends_on": "eval:doc.voucher_type == 'Write Off Voucher'",
"doctype": "DocField",
"fieldname": "get_outstanding_invoices",
"fieldtype": "Button",
"label": "Get Outstanding Invoices",
"options": "get_outstanding_invoices",
"print_hide": 1,
"read_only": 0
},
{
"doctype": "DocField",
"fieldname": "letter_head",
"fieldtype": "Link",
"label": "Letter Head",
"options": "Letter Head"
},
{
"doctype": "DocField",
"fieldname": "column_break3",
"fieldtype": "Column Break",
"oldfieldtype": "Column Break",
"read_only": 0,
"width": "50%"
},
{
"doctype": "DocField",
"fieldname": "pay_to_recd_from",
"fieldtype": "Data",
"hidden": 0,
"label": "Pay To / Recd From",
"no_copy": 1,
"print_hide": 0,
"read_only": 0,
"report_hide": 1
},
{
"doctype": "DocField",
"fieldname": "total_amount",
"fieldtype": "Data",
"hidden": 1,
"in_list_view": 0,
"label": "Total Amount",
"no_copy": 1,
"print_hide": 1,
"read_only": 1,
"report_hide": 1
},
{
"doctype": "DocField",
"fieldname": "total_amount_in_words",
"fieldtype": "Data",
"hidden": 1,
"label": "Total Amount in Words",
"no_copy": 1,
"print_hide": 1,
"read_only": 1,
"report_hide": 1
},
{
"doctype": "DocField",
"fieldname": "fiscal_year",
"fieldtype": "Select",
"in_filter": 1,
"label": "Fiscal Year",
"oldfieldname": "fiscal_year",
"oldfieldtype": "Select",
"options": "link:Fiscal Year",
"print_hide": 1,
"read_only": 0,
"reqd": 1,
"search_index": 1
},
{
"doctype": "DocField",
"fieldname": "company",
"fieldtype": "Link",
"in_filter": 1,
"label": "Company",
"oldfieldname": "company",
"oldfieldtype": "Link",
"options": "Company",
"print_hide": 1,
"read_only": 0,
"reqd": 1,
"search_index": 1
},
{
"allow_on_submit": 1,
"doctype": "DocField",
"fieldname": "select_print_heading",
"fieldtype": "Link",
"label": "Print Heading",
"no_copy": 1,
"oldfieldname": "select_print_heading",
"oldfieldtype": "Link",
"options": "Print Heading",
"print_hide": 1,
"read_only": 0,
"report_hide": 1
},
{
"doctype": "DocField",
"fieldname": "amended_from",
"fieldtype": "Link",
"label": "Amended From",
"no_copy": 1,
"oldfieldname": "amended_from",
"oldfieldtype": "Link",
"options": "Journal Voucher",
"print_hide": 1,
"read_only": 1
},
{
"amend": 1,
"cancel": 1,
"create": 1,
"doctype": "DocPerm",
"role": "Accounts User",
"submit": 1,
"write": 1
},
{
"amend": 1,
"cancel": 1,
"create": 1,
"doctype": "DocPerm",
"role": "Accounts Manager",
"submit": 1,
"write": 1
},
{
"amend": 0,
"cancel": 0,
"create": 0,
"doctype": "DocPerm",
"role": "Auditor",
"submit": 0,
"write": 0
}
]

View File

@@ -1,208 +0,0 @@
# Copyright (c) 2013, Web Notes Technologies Pvt. Ltd. and Contributors
# License: GNU General Public License v3. See license.txt
from __future__ import unicode_literals
import unittest
import webnotes
class TestJournalVoucher(unittest.TestCase):
def test_journal_voucher_with_against_jv(self):
self.clear_account_balance()
jv_invoice = webnotes.bean(copy=test_records[2])
jv_invoice.insert()
jv_invoice.submit()
self.assertTrue(not webnotes.conn.sql("""select name from `tabJournal Voucher Detail`
where against_jv=%s""", jv_invoice.doc.name))
jv_payment = webnotes.bean(copy=test_records[0])
jv_payment.doclist[1].against_jv = jv_invoice.doc.name
jv_payment.insert()
jv_payment.submit()
self.assertTrue(webnotes.conn.sql("""select name from `tabJournal Voucher Detail`
where against_jv=%s""", jv_invoice.doc.name))
self.assertTrue(webnotes.conn.sql("""select name from `tabJournal Voucher Detail`
where against_jv=%s and credit=400""", jv_invoice.doc.name))
# cancel jv_invoice
jv_invoice.cancel()
self.assertTrue(not webnotes.conn.sql("""select name from `tabJournal Voucher Detail`
where against_jv=%s""", jv_invoice.doc.name))
def test_jv_against_stock_account(self):
from stock.doctype.purchase_receipt.test_purchase_receipt import set_perpetual_inventory
set_perpetual_inventory()
jv = webnotes.bean(copy=test_records[0])
jv.doclist[1].account = "_Test Warehouse - _TC"
jv.insert()
from accounts.general_ledger import StockAccountInvalidTransaction
self.assertRaises(StockAccountInvalidTransaction, jv.submit)
set_perpetual_inventory(0)
def test_monthly_budget_crossed_ignore(self):
webnotes.conn.set_value("Company", "_Test Company", "monthly_bgt_flag", "Ignore")
self.clear_account_balance()
jv = webnotes.bean(copy=test_records[0])
jv.doclist[2].account = "_Test Account Cost for Goods Sold - _TC"
jv.doclist[2].cost_center = "_Test Cost Center - _TC"
jv.doclist[2].debit = 20000.0
jv.doclist[1].credit = 20000.0
jv.insert()
jv.submit()
self.assertTrue(webnotes.conn.get_value("GL Entry",
{"voucher_type": "Journal Voucher", "voucher_no": jv.doc.name}))
def test_monthly_budget_crossed_stop(self):
from accounts.utils import BudgetError
webnotes.conn.set_value("Company", "_Test Company", "monthly_bgt_flag", "Stop")
self.clear_account_balance()
jv = webnotes.bean(copy=test_records[0])
jv.doclist[2].account = "_Test Account Cost for Goods Sold - _TC"
jv.doclist[2].cost_center = "_Test Cost Center - _TC"
jv.doclist[2].debit = 20000.0
jv.doclist[1].credit = 20000.0
jv.insert()
self.assertRaises(BudgetError, jv.submit)
webnotes.conn.set_value("Company", "_Test Company", "monthly_bgt_flag", "Ignore")
def test_yearly_budget_crossed_stop(self):
from accounts.utils import BudgetError
self.clear_account_balance()
self.test_monthly_budget_crossed_ignore()
webnotes.conn.set_value("Company", "_Test Company", "yearly_bgt_flag", "Stop")
jv = webnotes.bean(copy=test_records[0])
jv.doc.posting_date = "2013-08-12"
jv.doclist[2].account = "_Test Account Cost for Goods Sold - _TC"
jv.doclist[2].cost_center = "_Test Cost Center - _TC"
jv.doclist[2].debit = 150000.0
jv.doclist[1].credit = 150000.0
jv.insert()
self.assertRaises(BudgetError, jv.submit)
webnotes.conn.set_value("Company", "_Test Company", "yearly_bgt_flag", "Ignore")
def test_monthly_budget_on_cancellation(self):
from accounts.utils import BudgetError
webnotes.conn.set_value("Company", "_Test Company", "monthly_bgt_flag", "Stop")
self.clear_account_balance()
jv = webnotes.bean(copy=test_records[0])
jv.doclist[1].account = "_Test Account Cost for Goods Sold - _TC"
jv.doclist[1].cost_center = "_Test Cost Center - _TC"
jv.doclist[1].credit = 30000.0
jv.doclist[2].debit = 30000.0
jv.submit()
self.assertTrue(webnotes.conn.get_value("GL Entry",
{"voucher_type": "Journal Voucher", "voucher_no": jv.doc.name}))
jv1 = webnotes.bean(copy=test_records[0])
jv1.doclist[2].account = "_Test Account Cost for Goods Sold - _TC"
jv1.doclist[2].cost_center = "_Test Cost Center - _TC"
jv1.doclist[2].debit = 40000.0
jv1.doclist[1].credit = 40000.0
jv1.submit()
self.assertTrue(webnotes.conn.get_value("GL Entry",
{"voucher_type": "Journal Voucher", "voucher_no": jv1.doc.name}))
self.assertRaises(BudgetError, jv.cancel)
webnotes.conn.set_value("Company", "_Test Company", "monthly_bgt_flag", "Ignore")
def clear_account_balance(self):
webnotes.conn.sql("""delete from `tabGL Entry`""")
test_records = [
[{
"company": "_Test Company",
"doctype": "Journal Voucher",
"fiscal_year": "_Test Fiscal Year 2013",
"naming_series": "_T-Journal Voucher-",
"posting_date": "2013-02-14",
"user_remark": "test",
"voucher_type": "Bank Voucher",
"cheque_no": "33",
"cheque_date": "2013-02-14"
},
{
"account": "_Test Customer - _TC",
"doctype": "Journal Voucher Detail",
"credit": 400.0,
"debit": 0.0,
"parentfield": "entries"
},
{
"account": "_Test Account Bank Account - _TC",
"doctype": "Journal Voucher Detail",
"debit": 400.0,
"credit": 0.0,
"parentfield": "entries"
}],
[{
"company": "_Test Company",
"doctype": "Journal Voucher",
"fiscal_year": "_Test Fiscal Year 2013",
"naming_series": "_T-Journal Voucher-",
"posting_date": "2013-02-14",
"user_remark": "test",
"voucher_type": "Bank Voucher",
"cheque_no": "33",
"cheque_date": "2013-02-14"
},
{
"account": "_Test Supplier - _TC",
"doctype": "Journal Voucher Detail",
"credit": 0.0,
"debit": 400.0,
"parentfield": "entries"
},
{
"account": "_Test Account Bank Account - _TC",
"doctype": "Journal Voucher Detail",
"debit": 0.0,
"credit": 400.0,
"parentfield": "entries"
}],
[{
"company": "_Test Company",
"doctype": "Journal Voucher",
"fiscal_year": "_Test Fiscal Year 2013",
"naming_series": "_T-Journal Voucher-",
"posting_date": "2013-02-14",
"user_remark": "test",
"voucher_type": "Bank Voucher",
"cheque_no": "33",
"cheque_date": "2013-02-14"
},
{
"account": "_Test Customer - _TC",
"doctype": "Journal Voucher Detail",
"credit": 0.0,
"debit": 400.0,
"parentfield": "entries"
},
{
"account": "Sales - _TC",
"doctype": "Journal Voucher Detail",
"credit": 400.0,
"debit": 0.0,
"parentfield": "entries",
"cost_center": "_Test Cost Center - _TC"
}],
]

View File

@@ -1,9 +0,0 @@
# Copyright (c) 2013, Web Notes Technologies Pvt. Ltd. and Contributors
# License: GNU General Public License v3. See license.txt
from __future__ import unicode_literals
import webnotes
class DocType:
def __init__(self, d, dl):
self.doc, self.doclist = d, dl

View File

@@ -1,159 +0,0 @@
[
{
"creation": "2013-02-22 01:27:39",
"docstatus": 0,
"modified": "2013-08-02 18:15:56",
"modified_by": "Administrator",
"owner": "Administrator"
},
{
"autoname": "JVD.######",
"doctype": "DocType",
"istable": 1,
"module": "Accounts",
"name": "__common__"
},
{
"doctype": "DocField",
"name": "__common__",
"parent": "Journal Voucher Detail",
"parentfield": "fields",
"parenttype": "DocType",
"permlevel": 0
},
{
"doctype": "DocType",
"name": "Journal Voucher Detail"
},
{
"doctype": "DocField",
"fieldname": "account",
"fieldtype": "Link",
"in_filter": 1,
"in_list_view": 1,
"label": "Account",
"oldfieldname": "account",
"oldfieldtype": "Link",
"options": "Account",
"print_width": "250px",
"reqd": 1,
"search_index": 1,
"width": "250px"
},
{
"default": ":Company",
"description": "If Income or Expense",
"doctype": "DocField",
"fieldname": "cost_center",
"fieldtype": "Link",
"in_filter": 1,
"in_list_view": 1,
"label": "Cost Center",
"oldfieldname": "cost_center",
"oldfieldtype": "Link",
"options": "Cost Center",
"print_width": "180px",
"search_index": 0,
"width": "180px"
},
{
"doctype": "DocField",
"fieldname": "debit",
"fieldtype": "Currency",
"in_list_view": 1,
"label": "Debit",
"oldfieldname": "debit",
"oldfieldtype": "Currency",
"options": "Company:company:default_currency"
},
{
"doctype": "DocField",
"fieldname": "credit",
"fieldtype": "Currency",
"in_list_view": 1,
"label": "Credit",
"oldfieldname": "credit",
"oldfieldtype": "Currency",
"options": "Company:company:default_currency"
},
{
"doctype": "DocField",
"fieldname": "balance",
"fieldtype": "Currency",
"in_list_view": 1,
"label": "Account Balance",
"no_copy": 1,
"oldfieldname": "balance",
"oldfieldtype": "Data",
"options": "Company:company:default_currency",
"read_only": 1
},
{
"doctype": "DocField",
"fieldname": "reference",
"fieldtype": "Section Break",
"label": "Reference"
},
{
"doctype": "DocField",
"fieldname": "against_voucher",
"fieldtype": "Link",
"in_filter": 1,
"in_list_view": 1,
"label": "Against Purchase Invoice",
"no_copy": 1,
"oldfieldname": "against_voucher",
"oldfieldtype": "Link",
"options": "Purchase Invoice",
"print_hide": 0,
"search_index": 1
},
{
"doctype": "DocField",
"fieldname": "against_invoice",
"fieldtype": "Link",
"in_filter": 1,
"label": "Against Sales Invoice",
"no_copy": 1,
"oldfieldname": "against_invoice",
"oldfieldtype": "Link",
"options": "Sales Invoice",
"print_hide": 0,
"search_index": 1
},
{
"doctype": "DocField",
"fieldname": "against_jv",
"fieldtype": "Link",
"in_filter": 1,
"label": "Against Journal Voucher",
"no_copy": 1,
"oldfieldname": "against_jv",
"oldfieldtype": "Link",
"options": "Journal Voucher",
"print_hide": 0,
"search_index": 1
},
{
"doctype": "DocField",
"fieldname": "is_advance",
"fieldtype": "Select",
"label": "Is Advance",
"no_copy": 1,
"oldfieldname": "is_advance",
"oldfieldtype": "Select",
"options": "No\nYes",
"print_hide": 1
},
{
"doctype": "DocField",
"fieldname": "against_account",
"fieldtype": "Text",
"hidden": 1,
"label": "Against Account",
"no_copy": 1,
"oldfieldname": "against_account",
"oldfieldtype": "Text",
"print_hide": 1
}
]

View File

@@ -1 +0,0 @@
Backend scripts for Financial Statements (to be deprecated)

View File

@@ -1,166 +0,0 @@
# Copyright (c) 2013, Web Notes Technologies Pvt. Ltd. and Contributors
# License: GNU General Public License v3. See license.txt
from __future__ import unicode_literals
import webnotes
from webnotes.utils import flt, get_first_day, get_last_day, has_common
import webnotes.defaults
from accounts.utils import get_balance_on
class DocType:
def __init__(self, doc, doclist):
self.doc = doc
self.doclist = doclist
self.account_list = []
self.ac_details = {} # key: account id, values: debit_or_credit, lft, rgt
self.period_list = []
self.period_start_date = {}
self.period_end_date = {}
self.fs_list = []
self.root_bal = []
self.flag = 0
# Get defaults on load of MIS, MIS - Comparison Report and Financial statements
def get_comp(self):
ret = {}
type = []
ret['period'] = ['Annual','Half Yearly','Quarterly','Monthly']
from accounts.page.accounts_browser.accounts_browser import get_companies
ret['company'] = get_companies()
#--- to get fiscal year and start_date of that fiscal year -----
res = webnotes.conn.sql("select name, year_start_date from `tabFiscal Year`")
ret['fiscal_year'] = [r[0] for r in res]
ret['start_dates'] = {}
for r in res:
ret['start_dates'][r[0]] = str(r[1])
#--- from month and to month (for MIS - Comparison Report) -------
month_list = ['Jan','Feb','Mar','Apr','May','Jun','Jul','Aug','Sep','Oct','Nov','Dec']
fiscal_start_month = webnotes.conn.sql("select MONTH(year_start_date) from `tabFiscal Year` where name = %s",(webnotes.defaults.get_global_default("fiscal_year")))
fiscal_start_month = fiscal_start_month and fiscal_start_month[0][0] or 1
mon = ['']
for i in range(fiscal_start_month,13): mon.append(month_list[i-1])
for i in range(0,fiscal_start_month-1): mon.append(month_list[i])
ret['month'] = mon
# get MIS Type on basis of roles of session user
self.roles = webnotes.user.get_roles()
if has_common(self.roles, ['Sales Manager']):
type.append('Sales')
if has_common(self.roles, ['Purchase Manager']):
type.append('Purchase')
ret['type'] = type
return ret
def get_statement(self, arg):
self.return_data = []
# define periods
arg = eval(arg)
pl = ''
self.define_periods(arg['year'], arg['period'])
self.return_data.append([4,'']+self.period_list)
if arg['statement'] == 'Balance Sheet': pl = 'No'
if arg['statement'] == 'Profit & Loss': pl = 'Yes'
self.get_children('',0,pl,arg['company'], arg['year'])
return self.return_data
def get_children(self, parent_account, level, pl, company, fy):
cl = webnotes.conn.sql("select distinct account_name, name, debit_or_credit, lft, rgt from `tabAccount` where ifnull(parent_account, '') = %s and ifnull(is_pl_account, 'No')=%s and company=%s and docstatus != 2 order by name asc", (parent_account, pl, company))
level0_diff = [0 for p in self.period_list]
if pl=='Yes' and level==0: # switch for income & expenses
cl = [c for c in cl]
cl.reverse()
if cl:
for c in cl:
self.ac_details[c[1]] = [c[2], c[3], c[4]]
bal_list = self.get_period_balance(c[1], pl)
if level==0: # top level - put balances as totals
self.return_data.append([level, c[0]] + ['' for b in bal_list])
totals = bal_list
for i in range(len(totals)): # make totals
if c[2]=='Credit':
level0_diff[i] += flt(totals[i])
else:
level0_diff[i] -= flt(totals[i])
else:
self.return_data.append([level, c[0]]+bal_list)
if level < 2:
self.get_children(c[1], level+1, pl, company, fy)
# make totals - for top level
if level==0:
# add rows for profit / loss in B/S
if pl=='No':
if c[2]=='Credit':
self.return_data.append([1, 'Total Liabilities'] + totals)
level0_diff = [-i for i in level0_diff] # convert to debit
self.return_data.append([5, 'Profit/Loss (Provisional)'] + level0_diff)
for i in range(len(totals)): # make totals
level0_diff[i] = flt(totals[i]) + level0_diff[i]
else:
self.return_data.append([4, 'Total '+c[0]] + totals)
# add rows for profit / loss in P/L
else:
if c[2]=='Debit':
self.return_data.append([1, 'Total Expenses'] + totals)
self.return_data.append([5, 'Profit/Loss (Provisional)'] + level0_diff)
for i in range(len(totals)): # make totals
level0_diff[i] = flt(totals[i]) + level0_diff[i]
else:
self.return_data.append([4, 'Total '+c[0]] + totals)
def define_periods(self, year, period):
ysd = webnotes.conn.sql("select year_start_date from `tabFiscal Year` where name=%s", year)
ysd = ysd and ysd[0][0] or ''
self.ysd = ysd
# year
if period == 'Annual':
pn = 'FY'+year
self.period_list.append(pn)
self.period_start_date[pn] = ysd
self.period_end_date[pn] = get_last_day(get_first_day(ysd,0,11))
# quarter
if period == 'Quarterly':
for i in range(4):
pn = 'Q'+str(i+1)
self.period_list.append(pn)
self.period_start_date[pn] = get_first_day(ysd,0,i*3)
self.period_end_date[pn] = get_last_day(get_first_day(ysd,0,((i+1)*3)-1))
# month
if period == 'Monthly':
mlist = ['Jan','Feb','Mar','Apr','May','Jun','Jul','Aug','Sep','Oct','Nov','Dec']
for i in range(12):
fd = get_first_day(ysd,0,i)
pn = mlist[fd.month-1]
self.period_list.append(pn)
self.period_start_date[pn] = fd
self.period_end_date[pn] = get_last_day(fd)
def get_period_balance(self, acc, pl):
ret, i = [], 0
for p in self.period_list:
period_end_date = self.period_end_date[p].strftime('%Y-%m-%d')
bal = get_balance_on(acc, period_end_date)
if pl=='Yes':
bal = bal - sum(ret)
ret.append(bal)
return ret

View File

@@ -1,19 +0,0 @@
[
{
"creation": "2012-03-27 14:35:49",
"docstatus": 0,
"modified": "2013-07-10 14:54:11",
"modified_by": "Administrator",
"owner": "Administrator"
},
{
"doctype": "DocType",
"issingle": 1,
"module": "Accounts",
"name": "__common__"
},
{
"doctype": "DocType",
"name": "MIS Control"
}
]

View File

@@ -1,12 +0,0 @@
// Copyright (c) 2013, Web Notes Technologies Pvt. Ltd. and Contributors
// License: GNU General Public License v3. See license.txt
cur_frm.set_query("default_account", function(doc) {
return{
filters: {
'account_type': "Bank or Cash",
"group_or_ledger": "Ledger",
'company': doc.company
}
}
});

View File

@@ -1,9 +0,0 @@
# Copyright (c) 2013, Web Notes Technologies Pvt. Ltd. and Contributors
# License: GNU General Public License v3. See license.txt
from __future__ import unicode_literals
import webnotes
class DocType:
def __init__(self, d, dl):
self.doc, self.doclist = d, dl

View File

@@ -1,72 +0,0 @@
[
{
"creation": "2012-12-04 17:49:20",
"docstatus": 0,
"modified": "2013-07-05 14:46:28",
"modified_by": "Administrator",
"owner": "harshada@webnotestech.com"
},
{
"allow_rename": 1,
"autoname": "field:mode_of_payment",
"doctype": "DocType",
"document_type": "Master",
"icon": "icon-credit-card",
"module": "Accounts",
"name": "__common__"
},
{
"doctype": "DocField",
"name": "__common__",
"parent": "Mode of Payment",
"parentfield": "fields",
"parenttype": "DocType",
"permlevel": 0,
"read_only": 0
},
{
"create": 1,
"doctype": "DocPerm",
"name": "__common__",
"parent": "Mode of Payment",
"parentfield": "permissions",
"parenttype": "DocType",
"permlevel": 0,
"read": 1,
"report": 1,
"role": "Accounts Manager",
"submit": 0,
"write": 1
},
{
"doctype": "DocType",
"name": "Mode of Payment"
},
{
"doctype": "DocField",
"fieldname": "mode_of_payment",
"fieldtype": "Data",
"label": "Mode of Payment",
"oldfieldname": "mode_of_payment",
"oldfieldtype": "Data",
"reqd": 1
},
{
"doctype": "DocField",
"fieldname": "company",
"fieldtype": "Link",
"label": "Company",
"options": "Company"
},
{
"description": "Default Bank / Cash account will be automatically updated in POS Invoice when this mode is selected.",
"doctype": "DocField",
"fieldname": "default_account",
"fieldtype": "Link",
"label": "Default Account",
"options": "Account"
},
{
"doctype": "DocPerm"
}
]

View File

@@ -1 +0,0 @@
Tool for mapping (cancelling) unpaid invoices and payments.

View File

@@ -1,50 +0,0 @@
// Copyright (c) 2013, Web Notes Technologies Pvt. Ltd. and Contributors
// License: GNU General Public License v3. See license.txt
// Booking Entry Id
// --------------------
cur_frm.add_fetch("account", "company", "company")
cur_frm.cscript.onload_post_render = function(doc) {
$(cur_frm.get_field("reconcile").input).addClass("btn-info");
}
cur_frm.cscript.refresh = function(doc) {
cur_frm.set_intro("");
if(!doc.voucher_no) {
cur_frm.set_intro(wn._("Select the Invoice against which you want to allocate payments."));
} else {
cur_frm.set_intro(wn._("Set allocated amount against each Payment Entry and click 'Allocate'."));
}
}
cur_frm.fields_dict.voucher_no.get_query = function(doc) {
// TO-do: check for pos, it should not come
if (!doc.account) msgprint(wn._("Please select Account first"));
else {
return {
doctype: doc.voucher_type,
query: "accounts.doctype.payment_to_invoice_matching_tool.payment_to_invoice_matching_tool.gl_entry_details",
filters: {
"dt": doc.voucher_type,
"acc": doc.account,
"account_type": doc.account_type
}
}
}
}
cur_frm.cscript.voucher_no =function(doc, cdt, cdn) {
return get_server_fields('get_voucher_details', '', '', doc, cdt, cdn, 1)
}
cur_frm.cscript.account = function(doc, cdt, cdn) {
return wn.call({
doc: this.frm.doc,
method: "set_account_type",
callback: function(r) {
if(!r.exc) refresh_field("account_type");
}
});
}

View File

@@ -1,160 +0,0 @@
# Copyright (c) 2013, Web Notes Technologies Pvt. Ltd. and Contributors
# License: GNU General Public License v3. See license.txt
from __future__ import unicode_literals
import webnotes
from webnotes.utils import flt
from webnotes.model.doc import addchild
from webnotes.model.bean import getlist
from webnotes import msgprint
class DocType:
def __init__(self, doc, doclist):
self.doc = doc
self.doclist = doclist
def set_account_type(self):
self.doc.account_type = self.doc.account and \
webnotes.conn.get_value("Account", self.doc.account, "debit_or_credit").lower() or ""
def get_voucher_details(self):
total_amount = webnotes.conn.sql("""select sum(%s) from `tabGL Entry`
where voucher_type = %s and voucher_no = %s
and account = %s""" %
(self.doc.account_type, '%s', '%s', '%s'),
(self.doc.voucher_type, self.doc.voucher_no, self.doc.account))
total_amount = total_amount and flt(total_amount[0][0]) or 0
reconciled_payment = webnotes.conn.sql("""
select sum(ifnull(%s, 0)) - sum(ifnull(%s, 0)) from `tabGL Entry` where
against_voucher = %s and voucher_no != %s
and account = %s""" %
((self.doc.account_type == 'debit' and 'credit' or 'debit'), self.doc.account_type,
'%s', '%s', '%s'), (self.doc.voucher_no, self.doc.voucher_no, self.doc.account))
reconciled_payment = reconciled_payment and flt(reconciled_payment[0][0]) or 0
ret = {
'total_amount': total_amount,
'pending_amt_to_reconcile': total_amount - reconciled_payment
}
return ret
def get_payment_entries(self):
"""
Get payment entries for the account and period
Payment entry will be decided based on account type (Dr/Cr)
"""
self.doclist = self.doc.clear_table(self.doclist, 'ir_payment_details')
gle = self.get_gl_entries()
self.create_payment_table(gle)
def get_gl_entries(self):
self.validate_mandatory()
dc = self.doc.account_type == 'debit' and 'credit' or 'debit'
cond = self.doc.from_date and " and t1.posting_date >= '" + self.doc.from_date + "'" or ""
cond += self.doc.to_date and " and t1.posting_date <= '" + self.doc.to_date + "'"or ""
cond += self.doc.amt_greater_than and \
' and t2.' + dc+' >= ' + self.doc.amt_greater_than or ''
cond += self.doc.amt_less_than and \
' and t2.' + dc+' <= ' + self.doc.amt_less_than or ''
gle = webnotes.conn.sql("""
select t1.name as voucher_no, t1.posting_date, t1.total_debit as total_amt,
sum(ifnull(t2.credit, 0)) - sum(ifnull(t2.debit, 0)) as amt_due, t1.remark,
t2.against_account, t2.name as voucher_detail_no
from `tabJournal Voucher` t1, `tabJournal Voucher Detail` t2
where t1.name = t2.parent and t1.docstatus = 1 and t2.account = %s
and ifnull(t2.against_voucher, '')='' and ifnull(t2.against_invoice, '')=''
and ifnull(t2.against_jv, '')='' and t2.%s > 0 %s group by t1.name, t2.name """ %
('%s', dc, cond), self.doc.account, as_dict=1)
return gle
def create_payment_table(self, gle):
for d in gle:
ch = addchild(self.doc, 'ir_payment_details',
'Payment to Invoice Matching Tool Detail', self.doclist)
ch.voucher_no = d.get('voucher_no')
ch.posting_date = d.get('posting_date')
ch.amt_due = self.doc.account_type == 'debit' and flt(d.get('amt_due')) \
or -1*flt(d.get('amt_due'))
ch.total_amt = flt(d.get('total_amt'))
ch.against_account = d.get('against_account')
ch.remarks = d.get('remark')
ch.voucher_detail_no = d.get('voucher_detail_no')
def validate_mandatory(self):
if not self.doc.account:
msgprint("Please select Account first", raise_exception=1)
def reconcile(self):
"""
Links booking and payment voucher
1. cancel payment voucher
2. split into multiple rows if partially adjusted, assign against voucher
3. submit payment voucher
"""
if not self.doc.voucher_no or not webnotes.conn.sql("""select name from `tab%s`
where name = %s""" % (self.doc.voucher_type, '%s'), self.doc.voucher_no):
msgprint("Please select valid Voucher No to proceed", raise_exception=1)
lst = []
for d in getlist(self.doclist, 'ir_payment_details'):
if flt(d.amt_to_be_reconciled) > 0:
args = {
'voucher_no' : d.voucher_no,
'voucher_detail_no' : d.voucher_detail_no,
'against_voucher_type' : self.doc.voucher_type,
'against_voucher' : self.doc.voucher_no,
'account' : self.doc.account,
'is_advance' : 'No',
'dr_or_cr' : self.doc.account_type=='debit' and 'credit' or 'debit',
'unadjusted_amt' : flt(d.amt_due),
'allocated_amt' : flt(d.amt_to_be_reconciled)
}
lst.append(args)
if lst:
from accounts.utils import reconcile_against_document
reconcile_against_document(lst)
msgprint("Successfully allocated.")
else:
msgprint("No amount allocated.", raise_exception=1)
def gl_entry_details(doctype, txt, searchfield, start, page_len, filters):
from controllers.queries import get_match_cond
return webnotes.conn.sql("""select gle.voucher_no, gle.posting_date,
gle.%(account_type)s from `tabGL Entry` gle
where gle.account = '%(acc)s'
and gle.voucher_type = '%(dt)s'
and gle.voucher_no like '%(txt)s'
and (ifnull(gle.against_voucher, '') = ''
or ifnull(gle.against_voucher, '') = gle.voucher_no )
and ifnull(gle.%(account_type)s, 0) > 0
and (select ifnull(abs(sum(ifnull(debit, 0)) - sum(ifnull(credit, 0))), 0)
from `tabGL Entry`
where against_voucher_type = '%(dt)s'
and against_voucher = gle.voucher_no
and voucher_no != gle.voucher_no)
!= abs(ifnull(gle.debit, 0) - ifnull(gle.credit, 0)
)
and if(gle.voucher_type='Sales Invoice', (select is_pos from `tabSales Invoice`
where name=gle.voucher_no), 0)=0
%(mcond)s
ORDER BY gle.posting_date desc, gle.voucher_no desc
limit %(start)s, %(page_len)s""" % {
"dt":filters["dt"],
"acc":filters["acc"],
"account_type": filters['account_type'],
'mcond':get_match_cond(doctype, searchfield),
'txt': "%%%s%%" % txt,
"start": start,
"page_len": page_len
})

View File

@@ -1,196 +0,0 @@
[
{
"creation": "2013-01-30 12:49:46",
"docstatus": 0,
"modified": "2013-07-22 15:31:00",
"modified_by": "Administrator",
"owner": "Administrator"
},
{
"doctype": "DocType",
"document_type": "Other",
"hide_toolbar": 1,
"icon": "icon-magic",
"issingle": 1,
"module": "Accounts",
"name": "__common__"
},
{
"doctype": "DocField",
"name": "__common__",
"parent": "Payment to Invoice Matching Tool",
"parentfield": "fields",
"parenttype": "DocType",
"permlevel": 0
},
{
"create": 1,
"doctype": "DocPerm",
"name": "__common__",
"parent": "Payment to Invoice Matching Tool",
"parentfield": "permissions",
"parenttype": "DocType",
"permlevel": 0,
"read": 1,
"report": 0,
"submit": 0,
"write": 1
},
{
"doctype": "DocType",
"name": "Payment to Invoice Matching Tool"
},
{
"doctype": "DocField",
"fieldname": "account",
"fieldtype": "Link",
"label": "Account",
"options": "Account",
"reqd": 1
},
{
"doctype": "DocField",
"fieldname": "account_type",
"fieldtype": "Data",
"hidden": 1,
"label": "Account Type",
"read_only": 1
},
{
"doctype": "DocField",
"fieldname": "company",
"fieldtype": "Link",
"hidden": 1,
"label": "Company",
"options": "Company",
"print_hide": 1
},
{
"doctype": "DocField",
"fieldname": "voucher_type",
"fieldtype": "Select",
"label": "Voucher Type",
"options": "Sales Invoice\nPurchase Invoice\nJournal Voucher",
"reqd": 1
},
{
"doctype": "DocField",
"fieldname": "voucher_no",
"fieldtype": "Link",
"label": "Voucher No",
"options": "[Select]",
"reqd": 1
},
{
"doctype": "DocField",
"fieldname": "pull_payment_entries",
"fieldtype": "Button",
"label": "Pull Payment Entries",
"options": "get_payment_entries"
},
{
"doctype": "DocField",
"fieldname": "column_break1",
"fieldtype": "Column Break",
"print_width": "50%",
"width": "50%"
},
{
"doctype": "DocField",
"fieldname": "total_amount",
"fieldtype": "Currency",
"label": "Total Amount",
"options": "Company:company:default_currency",
"read_only": 1
},
{
"doctype": "DocField",
"fieldname": "pending_amt_to_reconcile",
"fieldtype": "Currency",
"label": "Outstanding Amount",
"options": "Company:company:default_currency",
"read_only": 1
},
{
"doctype": "DocField",
"fieldname": "payment_entries",
"fieldtype": "Section Break",
"label": "Payment Entries"
},
{
"description": "Update allocated amount in the above table and then click \"Allocate\" button",
"doctype": "DocField",
"fieldname": "ir_payment_details",
"fieldtype": "Table",
"label": "Payment Entries",
"options": "Payment to Invoice Matching Tool Detail"
},
{
"doctype": "DocField",
"fieldname": "reconcile",
"fieldtype": "Button",
"label": "Allocate",
"options": "reconcile"
},
{
"doctype": "DocField",
"fieldname": "section_break0",
"fieldtype": "Section Break",
"options": "Simple"
},
{
"doctype": "DocField",
"fieldname": "column_break2",
"fieldtype": "Column Break",
"label": "Filter By Date",
"print_width": "50%",
"width": "50%"
},
{
"doctype": "DocField",
"fieldname": "from_date",
"fieldtype": "Date",
"label": "From Date"
},
{
"doctype": "DocField",
"fieldname": "to_date",
"fieldtype": "Date",
"label": "To Date"
},
{
"doctype": "DocField",
"fieldname": "help_html",
"fieldtype": "HTML",
"label": "Help HTML",
"options": "Click \"Pull Payment Entries\" to refresh the table with filters."
},
{
"doctype": "DocField",
"fieldname": "column_break3",
"fieldtype": "Column Break",
"label": "Filter By Amount",
"print_width": "50%",
"width": "50%"
},
{
"doctype": "DocField",
"fieldname": "amt_greater_than",
"fieldtype": "Data",
"label": "Amount >="
},
{
"doctype": "DocField",
"fieldname": "amt_less_than",
"fieldtype": "Data",
"label": "Amount <="
},
{
"doctype": "DocPerm",
"role": "Accounts Manager"
},
{
"doctype": "DocPerm",
"role": "Accounts User"
}
]

View File

@@ -1,8 +0,0 @@
# Copyright (c) 2013, Web Notes Technologies Pvt. Ltd. and Contributors
# License: GNU General Public License v3. See license.txt
from __future__ import unicode_literals
import unittest
import webnotes
test_records = []

View File

@@ -1 +0,0 @@
Journal Voucher (payment) detail for matching to invoice.

View File

@@ -1,9 +0,0 @@
# Copyright (c) 2013, Web Notes Technologies Pvt. Ltd. and Contributors
# License: GNU General Public License v3. See license.txt
from __future__ import unicode_literals
import webnotes
class DocType:
def __init__(self, d, dl):
self.doc, self.doclist = d, dl

View File

@@ -1,101 +0,0 @@
[
{
"creation": "2013-02-22 01:27:39",
"docstatus": 0,
"modified": "2013-07-10 14:54:11",
"modified_by": "Administrator",
"owner": "Administrator"
},
{
"doctype": "DocType",
"istable": 1,
"module": "Accounts",
"name": "__common__"
},
{
"doctype": "DocField",
"name": "__common__",
"parent": "Payment to Invoice Matching Tool Detail",
"parentfield": "fields",
"parenttype": "DocType",
"permlevel": 0
},
{
"doctype": "DocType",
"name": "Payment to Invoice Matching Tool Detail"
},
{
"doctype": "DocField",
"fieldname": "voucher_no",
"fieldtype": "Link",
"in_list_view": 1,
"label": "Voucher No",
"options": "Journal Voucher",
"print_width": "140px",
"read_only": 1,
"reqd": 0,
"width": "140px"
},
{
"doctype": "DocField",
"fieldname": "amt_due",
"fieldtype": "Currency",
"in_list_view": 1,
"label": "Unmatched Amount",
"options": "Company:company:default_currency",
"read_only": 1
},
{
"doctype": "DocField",
"fieldname": "amt_to_be_reconciled",
"fieldtype": "Currency",
"in_list_view": 1,
"label": "Allocated Amount",
"options": "Company:company:default_currency",
"reqd": 1
},
{
"doctype": "DocField",
"fieldname": "posting_date",
"fieldtype": "Date",
"in_list_view": 1,
"label": "Posting Date",
"read_only": 1
},
{
"doctype": "DocField",
"fieldname": "total_amt",
"fieldtype": "Currency",
"in_list_view": 1,
"label": "Total Amount",
"options": "Company:company:default_currency",
"read_only": 1
},
{
"doctype": "DocField",
"fieldname": "against_account",
"fieldtype": "Data",
"in_list_view": 1,
"label": "Against Account",
"read_only": 1
},
{
"doctype": "DocField",
"fieldname": "remarks",
"fieldtype": "Small Text",
"label": "Remarks",
"print_width": "200px",
"read_only": 1,
"width": "200px"
},
{
"doctype": "DocField",
"fieldname": "voucher_detail_no",
"fieldtype": "Data",
"hidden": 1,
"label": "Voucher Detail No",
"print_hide": 1,
"read_only": 1,
"reqd": 0
}
]

View File

@@ -1,103 +0,0 @@
# Copyright (c) 2013, Web Notes Technologies Pvt. Ltd. and Contributors
# License: GNU General Public License v3. See license.txt
from __future__ import unicode_literals
import webnotes
from webnotes.utils import cstr, flt, getdate
from webnotes import msgprint, _
from controllers.accounts_controller import AccountsController
class DocType(AccountsController):
def __init__(self,d,dl):
self.doc, self.doclist = d, dl
self.year_start_date = ''
def validate(self):
self.validate_account_head()
self.validate_posting_date()
self.validate_pl_balances()
def on_submit(self):
self.make_gl_entries()
def on_cancel(self):
webnotes.conn.sql("""delete from `tabGL Entry`
where voucher_type = 'Period Closing Voucher' and voucher_no=%s""", self.doc.name)
def validate_account_head(self):
debit_or_credit, is_pl_account = webnotes.conn.get_value("Account",
self.doc.closing_account_head, ["debit_or_credit", "is_pl_account"])
if debit_or_credit != 'Credit' or is_pl_account != 'No':
webnotes.throw(_("Account") + ": " + self.doc.closing_account_head +
_("must be a Liability account"))
def validate_posting_date(self):
from accounts.utils import get_fiscal_year
self.year_start_date = get_fiscal_year(self.doc.posting_date, self.doc.fiscal_year)[1]
pce = webnotes.conn.sql("""select name from `tabPeriod Closing Voucher`
where posting_date > %s and fiscal_year = %s and docstatus = 1""",
(self.doc.posting_date, self.doc.fiscal_year))
if pce and pce[0][0]:
webnotes.throw(_("Another Period Closing Entry") + ": " + cstr(pce[0][0]) +
_("has been made after posting date") + ": " + self.doc.posting_date)
def validate_pl_balances(self):
income_bal = webnotes.conn.sql("""
select sum(ifnull(t1.debit,0))-sum(ifnull(t1.credit,0))
from `tabGL Entry` t1, tabAccount t2
where t1.account = t2.name and t1.posting_date between %s and %s
and t2.debit_or_credit = 'Credit' and t2.is_pl_account = 'Yes'
and t2.docstatus < 2 and t2.company = %s""",
(self.year_start_date, self.doc.posting_date, self.doc.company))
expense_bal = webnotes.conn.sql("""
select sum(ifnull(t1.debit,0))-sum(ifnull(t1.credit,0))
from `tabGL Entry` t1, tabAccount t2
where t1.account = t2.name and t1.posting_date between %s and %s
and t2.debit_or_credit = 'Debit' and t2.is_pl_account = 'Yes'
and t2.docstatus < 2 and t2.company=%s""",
(self.year_start_date, self.doc.posting_date, self.doc.company))
income_bal = income_bal and income_bal[0][0] or 0
expense_bal = expense_bal and expense_bal[0][0] or 0
if not income_bal and not expense_bal:
webnotes.throw(_("Both Income and Expense balances are zero. \
No Need to make Period Closing Entry."))
def get_pl_balances(self):
"""Get balance for pl accounts"""
return webnotes.conn.sql("""
select t1.account, sum(ifnull(t1.debit,0))-sum(ifnull(t1.credit,0)) as balance
from `tabGL Entry` t1, `tabAccount` t2
where t1.account = t2.name and ifnull(t2.is_pl_account, 'No') = 'Yes'
and t2.docstatus < 2 and t2.company = %s
and t1.posting_date between %s and %s
group by t1.account
""", (self.doc.company, self.year_start_date, self.doc.posting_date), as_dict=1)
def make_gl_entries(self):
gl_entries = []
net_pl_balance = 0
pl_accounts = self.get_pl_balances()
for acc in pl_accounts:
if flt(acc.balance):
gl_entries.append(self.get_gl_dict({
"account": acc.account,
"debit": abs(flt(acc.balance)) if flt(acc.balance) < 0 else 0,
"credit": abs(flt(acc.balance)) if flt(acc.balance) > 0 else 0,
}))
net_pl_balance += flt(acc.balance)
if net_pl_balance:
gl_entries.append(self.get_gl_dict({
"account": self.doc.closing_account_head,
"debit": abs(net_pl_balance) if net_pl_balance > 0 else 0,
"credit": abs(net_pl_balance) if net_pl_balance < 0 else 0
}))
from accounts.general_ledger import make_gl_entries
make_gl_entries(gl_entries)

View File

@@ -1,141 +0,0 @@
[
{
"creation": "2013-01-10 16:34:07",
"docstatus": 0,
"modified": "2013-08-12 17:13:23",
"modified_by": "Administrator",
"owner": "jai@webnotestech.com"
},
{
"autoname": "PCE/.###",
"doctype": "DocType",
"icon": "icon-file-text",
"is_submittable": 1,
"module": "Accounts",
"name": "__common__",
"search_fields": "posting_date, fiscal_year"
},
{
"doctype": "DocField",
"name": "__common__",
"parent": "Period Closing Voucher",
"parentfield": "fields",
"parenttype": "DocType",
"permlevel": 0
},
{
"amend": 1,
"cancel": 1,
"create": 1,
"doctype": "DocPerm",
"name": "__common__",
"parent": "Period Closing Voucher",
"parentfield": "permissions",
"parenttype": "DocType",
"permlevel": 0,
"read": 1,
"report": 1,
"submit": 1,
"write": 1
},
{
"doctype": "DocType",
"name": "Period Closing Voucher"
},
{
"doctype": "DocField",
"fieldname": "column_break0",
"fieldtype": "Column Break",
"oldfieldtype": "Column Break",
"width": "50%"
},
{
"doctype": "DocField",
"fieldname": "transaction_date",
"fieldtype": "Date",
"label": "Transaction Date",
"oldfieldname": "transaction_date",
"oldfieldtype": "Date"
},
{
"doctype": "DocField",
"fieldname": "posting_date",
"fieldtype": "Date",
"label": "Posting Date",
"oldfieldname": "posting_date",
"oldfieldtype": "Date",
"reqd": 1
},
{
"doctype": "DocField",
"fieldname": "fiscal_year",
"fieldtype": "Select",
"label": "Closing Fiscal Year",
"oldfieldname": "fiscal_year",
"oldfieldtype": "Select",
"options": "link:Fiscal Year",
"reqd": 1
},
{
"doctype": "DocField",
"fieldname": "amended_from",
"fieldtype": "Data",
"label": "Amended From",
"no_copy": 1,
"oldfieldname": "amended_from",
"oldfieldtype": "Data",
"read_only": 1
},
{
"doctype": "DocField",
"fieldname": "company",
"fieldtype": "Select",
"label": "Company",
"oldfieldname": "company",
"oldfieldtype": "Select",
"options": "link:Company",
"reqd": 1
},
{
"doctype": "DocField",
"fieldname": "column_break1",
"fieldtype": "Column Break",
"oldfieldtype": "Column Break"
},
{
"description": "The account head under Liability, in which Profit/Loss will be booked",
"doctype": "DocField",
"fieldname": "closing_account_head",
"fieldtype": "Link",
"label": "Closing Account Head",
"oldfieldname": "closing_account_head",
"oldfieldtype": "Link",
"options": "Account",
"reqd": 1
},
{
"doctype": "DocField",
"fieldname": "coa_help",
"fieldtype": "HTML",
"label": "CoA Help",
"oldfieldtype": "HTML",
"options": "<a href=\"#!Accounts Browser/Account\">To manage Account Head, click here</a>"
},
{
"doctype": "DocField",
"fieldname": "remarks",
"fieldtype": "Small Text",
"label": "Remarks",
"oldfieldname": "remarks",
"oldfieldtype": "Small Text",
"reqd": 1
},
{
"doctype": "DocPerm",
"role": "System Manager"
},
{
"doctype": "DocPerm",
"role": "Accounts Manager"
}
]

View File

@@ -1,56 +0,0 @@
# Copyright (c) 2013, Web Notes Technologies Pvt. Ltd. and Contributors
# License: GNU General Public License v3. See license.txt
from __future__ import unicode_literals
import unittest
import webnotes
class TestPeriodClosingVoucher(unittest.TestCase):
def test_closing_entry(self):
# clear GL Entries
webnotes.conn.sql("""delete from `tabGL Entry`""")
from accounts.doctype.journal_voucher.test_journal_voucher import test_records as jv_records
jv = webnotes.bean(copy=jv_records[2])
jv.insert()
jv.submit()
jv1 = webnotes.bean(copy=jv_records[0])
jv1.doclist[2].account = "_Test Account Cost for Goods Sold - _TC"
jv1.doclist[2].debit = 600.0
jv1.doclist[1].credit = 600.0
jv1.insert()
jv1.submit()
pcv = webnotes.bean(copy=test_record)
pcv.insert()
pcv.submit()
gl_entries = webnotes.conn.sql("""select account, debit, credit
from `tabGL Entry` where voucher_type='Period Closing Voucher' and voucher_no=%s
order by account asc, debit asc""", pcv.doc.name, as_dict=1)
self.assertTrue(gl_entries)
expected_gl_entries = sorted([
["_Test Account Reserves and Surplus - _TC", 200.0, 0.0],
["_Test Account Cost for Goods Sold - _TC", 0.0, 600.0],
["Sales - _TC", 400.0, 0.0]
])
for i, gle in enumerate(gl_entries):
self.assertEquals(expected_gl_entries[i][0], gle.account)
self.assertEquals(expected_gl_entries[i][1], gle.debit)
self.assertEquals(expected_gl_entries[i][2], gle.credit)
test_dependencies = ["Customer", "Cost Center"]
test_record = [{
"doctype": "Period Closing Voucher",
"closing_account_head": "_Test Account Reserves and Surplus - _TC",
"company": "_Test Company",
"fiscal_year": "_Test Fiscal Year 2013",
"posting_date": "2013-03-31",
"remarks": "test"
}]

View File

@@ -1,78 +0,0 @@
// Copyright (c) 2013, Web Notes Technologies Pvt. Ltd. and Contributors
// License: GNU General Public License v3. See license.txt
cur_frm.cscript.onload = function(doc,cdt,cdn){
return $c_obj(make_doclist(cdt,cdn),'get_series','',function(r,rt){
if(r.message) set_field_options('naming_series', r.message);
});
cur_frm.set_query("selling_price_list", function() {
return { filters: { buying_or_selling: "Selling" } };
});
}
//cash bank account
//------------------------------------
cur_frm.fields_dict['cash_bank_account'].get_query = function(doc,cdt,cdn) {
return{
filters:{
'debit_or_credit': "Debit",
'is_pl_account': "No",
'group_or_ledger': "Ledger",
'company': doc.company
}
}
}
// Income Account
// --------------------------------
cur_frm.fields_dict['income_account'].get_query = function(doc,cdt,cdn) {
return{
filters:{
'debit_or_credit': "Credit",
'group_or_ledger': "Ledger",
'company': doc.company,
'account_type': "Income Account"
}
}
}
// Cost Center
// -----------------------------
cur_frm.fields_dict['cost_center'].get_query = function(doc,cdt,cdn) {
return{
filters:{
'company': doc.company,
'group_or_ledger': "Ledger"
}
}
}
// Expense Account
// -----------------------------
cur_frm.fields_dict["expense_account"].get_query = function(doc) {
return {
filters: {
"is_pl_account": "Yes",
"debit_or_credit": "Debit",
"company": doc.company,
"group_or_ledger": "Ledger"
}
}
}
// ------------------ Get Print Heading ------------------------------------
cur_frm.fields_dict['select_print_heading'].get_query = function(doc, cdt, cdn) {
return{
filters:[
['Print Heading', 'docstatus', '!=', 2]
]
}
}
cur_frm.fields_dict.user.get_query = function(doc,cdt,cdn) {
return{ query:"core.doctype.profile.profile.profile_query"}
}

View File

@@ -1,64 +0,0 @@
# Copyright (c) 2013, Web Notes Technologies Pvt. Ltd. and Contributors
# License: GNU General Public License v3. See license.txt
from __future__ import unicode_literals
import webnotes
from webnotes import msgprint, _
from webnotes.utils import cint
class DocType:
def __init__(self,doc,doclist):
self.doc, self.doclist = doc,doclist
def get_series(self):
import webnotes.model.doctype
docfield = webnotes.model.doctype.get('Sales Invoice')
series = [d.options for d in docfield
if d.doctype == 'DocField' and d.fieldname == 'naming_series']
return series and series[0] or ''
def validate(self):
self.check_for_duplicate()
self.validate_expense_account()
self.validate_all_link_fields()
def check_for_duplicate(self):
res = webnotes.conn.sql("""select name, user from `tabPOS Setting`
where ifnull(user, '') = %s and name != %s and company = %s""",
(self.doc.user, self.doc.name, self.doc.company))
if res:
if res[0][1]:
msgprint("POS Setting '%s' already created for user: '%s' and company: '%s'" %
(res[0][0], res[0][1], self.doc.company), raise_exception=1)
else:
msgprint("Global POS Setting already created - %s for this company: '%s'" %
(res[0][0], self.doc.company), raise_exception=1)
def validate_expense_account(self):
if cint(webnotes.defaults.get_global_default("auto_accounting_for_stock")) \
and not self.doc.expense_account:
msgprint(_("Expense Account is mandatory"), raise_exception=1)
def validate_all_link_fields(self):
accounts = {"Account": [self.doc.cash_bank_account, self.doc.income_account,
self.doc.expense_account], "Cost Center": [self.doc.cost_center],
"Warehouse": [self.doc.warehouse]}
for link_dt, dn_list in accounts.items():
for link_dn in dn_list:
if link_dn and not webnotes.conn.exists({"doctype": link_dt,
"company": self.doc.company, "name": link_dn}):
webnotes.throw(link_dn +_(" does not belong to ") + self.doc.company)
def on_update(self):
webnotes.defaults.clear_default("is_pos")
pos_view_users = webnotes.conn.sql_list("""select user from `tabPOS Setting`""")
for user in pos_view_users:
if user:
webnotes.defaults.set_user_default("is_pos", 1, user)
else:
webnotes.defaults.set_global_default("is_pos", 1)
def on_trash(self):
self.on_update()

View File

@@ -1,242 +0,0 @@
[
{
"creation": "2013-05-24 12:15:51",
"docstatus": 0,
"modified": "2013-11-02 16:58:38",
"modified_by": "Administrator",
"owner": "Administrator"
},
{
"autoname": "POS/.####",
"doctype": "DocType",
"icon": "icon-cog",
"module": "Accounts",
"name": "__common__"
},
{
"doctype": "DocField",
"name": "__common__",
"parent": "POS Setting",
"parentfield": "fields",
"parenttype": "DocType",
"permlevel": 0
},
{
"doctype": "DocPerm",
"name": "__common__",
"parent": "POS Setting",
"parentfield": "permissions",
"parenttype": "DocType",
"permlevel": 0,
"read": 1,
"report": 1,
"submit": 0
},
{
"doctype": "DocType",
"name": "POS Setting"
},
{
"doctype": "DocField",
"fieldname": "user",
"fieldtype": "Link",
"in_list_view": 1,
"label": "User",
"oldfieldname": "user",
"oldfieldtype": "Link",
"options": "Profile",
"read_only": 0
},
{
"description": "<a href=\"#Sales Browser/Territory\">Add / Edit</a>",
"doctype": "DocField",
"fieldname": "territory",
"fieldtype": "Link",
"label": "Territory",
"oldfieldname": "territory",
"oldfieldtype": "Link",
"options": "Territory",
"read_only": 0,
"reqd": 1
},
{
"doctype": "DocField",
"fieldname": "naming_series",
"fieldtype": "Select",
"label": "Series",
"no_copy": 1,
"oldfieldname": "naming_series",
"oldfieldtype": "Select",
"read_only": 0,
"reqd": 1
},
{
"doctype": "DocField",
"fieldname": "currency",
"fieldtype": "Link",
"label": "Currency",
"oldfieldname": "currency",
"oldfieldtype": "Select",
"options": "Currency",
"read_only": 0,
"reqd": 1
},
{
"doctype": "DocField",
"fieldname": "selling_price_list",
"fieldtype": "Link",
"label": "Price List",
"oldfieldname": "price_list_name",
"oldfieldtype": "Select",
"options": "Price List",
"read_only": 0,
"reqd": 1
},
{
"doctype": "DocField",
"fieldname": "company",
"fieldtype": "Link",
"in_list_view": 1,
"label": "Company",
"oldfieldname": "company",
"oldfieldtype": "Link",
"options": "Company",
"read_only": 0,
"reqd": 1
},
{
"doctype": "DocField",
"fieldname": "column_break0",
"fieldtype": "Column Break",
"oldfieldtype": "Column Break",
"read_only": 0
},
{
"default": "1",
"description": "Create Stock Ledger Entries when you submit a Sales Invoice",
"doctype": "DocField",
"fieldname": "update_stock",
"fieldtype": "Check",
"label": "Update Stock",
"reqd": 0
},
{
"doctype": "DocField",
"fieldname": "customer",
"fieldtype": "Link",
"label": "Customer",
"oldfieldname": "customer_account",
"oldfieldtype": "Link",
"options": "Customer",
"read_only": 0,
"reqd": 0
},
{
"doctype": "DocField",
"fieldname": "cash_bank_account",
"fieldtype": "Link",
"label": "Cash/Bank Account",
"oldfieldname": "cash_bank_account",
"oldfieldtype": "Link",
"options": "Account",
"read_only": 0,
"reqd": 1
},
{
"doctype": "DocField",
"fieldname": "income_account",
"fieldtype": "Link",
"label": "Income Account",
"oldfieldname": "income_account",
"oldfieldtype": "Link",
"options": "Account",
"read_only": 0,
"reqd": 1
},
{
"depends_on": "eval:sys_defaults.auto_accounting_for_stock",
"doctype": "DocField",
"fieldname": "expense_account",
"fieldtype": "Link",
"hidden": 0,
"label": "Expense Account",
"options": "Account",
"print_hide": 1,
"read_only": 0,
"reqd": 0
},
{
"doctype": "DocField",
"fieldname": "warehouse",
"fieldtype": "Link",
"label": "Warehouse",
"oldfieldname": "warehouse",
"oldfieldtype": "Link",
"options": "Warehouse",
"read_only": 0,
"reqd": 1
},
{
"doctype": "DocField",
"fieldname": "cost_center",
"fieldtype": "Link",
"label": "Cost Center",
"oldfieldname": "cost_center",
"oldfieldtype": "Link",
"options": "Cost Center",
"read_only": 0,
"reqd": 1
},
{
"doctype": "DocField",
"fieldname": "charge",
"fieldtype": "Link",
"label": "Charge",
"oldfieldname": "charge",
"oldfieldtype": "Link",
"options": "Sales Taxes and Charges Master",
"read_only": 0
},
{
"doctype": "DocField",
"fieldname": "letter_head",
"fieldtype": "Select",
"label": "Letter Head",
"oldfieldname": "letter_head",
"oldfieldtype": "Select",
"options": "link:Letter Head",
"print_hide": 1,
"read_only": 0
},
{
"doctype": "DocField",
"fieldname": "tc_name",
"fieldtype": "Link",
"label": "Terms and Conditions",
"oldfieldname": "tc_name",
"oldfieldtype": "Link",
"options": "Terms and Conditions",
"read_only": 0
},
{
"doctype": "DocField",
"fieldname": "select_print_heading",
"fieldtype": "Select",
"in_filter": 0,
"label": "Print Heading",
"oldfieldname": "select_print_heading",
"oldfieldtype": "Select",
"options": "link:Print Heading",
"read_only": 0
},
{
"create": 1,
"doctype": "DocPerm",
"role": "Accounts Manager",
"write": 1
},
{
"doctype": "DocPerm",
"role": "Accounts User"
}
]

View File

@@ -1,19 +0,0 @@
# Copyright (c) 2013, Web Notes Technologies Pvt. Ltd. and Contributors
# License: GNU General Public License v3. See license.txt
test_records = [
[{
"doctype": "POS Setting",
"name": "_Test POS Setting",
"currency": "INR",
"selling_price_list": "_Test Price List",
"company": "_Test Company",
"warehouse": "_Test Warehouse - _TC",
"territory": "_Test Territory",
"cash_bank_account": "_Test Account Bank Account - _TC",
"income_account": "Sales - _TC",
"cost_center": "_Test Cost Center - _TC",
"expense_account": "_Test Account Cost for Goods Sold - _TC",
"naming_series": "_T-Sales Invoice-"
}]
]

View File

@@ -1,218 +0,0 @@
// Copyright (c) 2013, Web Notes Technologies Pvt. Ltd. and Contributors
// License: GNU General Public License v3. See license.txt
cur_frm.cscript.tname = "Purchase Invoice Item";
cur_frm.cscript.fname = "entries";
cur_frm.cscript.other_fname = "purchase_tax_details";
wn.provide("erpnext.accounts");
wn.require('app/accounts/doctype/purchase_taxes_and_charges_master/purchase_taxes_and_charges_master.js');
wn.require('app/buying/doctype/purchase_common/purchase_common.js');
wn.require('app/accounts/doctype/sales_invoice/pos.js');
erpnext.accounts.PurchaseInvoice = erpnext.buying.BuyingController.extend({
onload: function() {
this._super();
if(!this.frm.doc.__islocal) {
// show credit_to in print format
if(!this.frm.doc.supplier && this.frm.doc.credit_to) {
this.frm.set_df_property("credit_to", "print_hide", 0);
}
}
},
refresh: function(doc) {
this._super();
// Show / Hide button
if(doc.docstatus==1 && doc.outstanding_amount > 0)
this.frm.add_custom_button(wn._('Make Payment Entry'), this.make_bank_voucher);
if(doc.docstatus==1) {
cur_frm.appframe.add_button(wn._('View Ledger'), function() {
wn.route_options = {
"voucher_no": doc.name,
"from_date": doc.posting_date,
"to_date": doc.posting_date,
};
wn.set_route("general-ledger");
}, "icon-table");
}
if(doc.docstatus===0) {
cur_frm.add_custom_button(wn._('From Purchase Order'),
function() {
wn.model.map_current_doc({
method: "buying.doctype.purchase_order.purchase_order.make_purchase_invoice",
source_doctype: "Purchase Order",
get_query_filters: {
supplier: cur_frm.doc.supplier || undefined,
docstatus: 1,
status: ["!=", "Stopped"],
per_billed: ["<", 99.99],
company: cur_frm.doc.company
}
})
});
cur_frm.add_custom_button(wn._('From Purchase Receipt'),
function() {
wn.model.map_current_doc({
method: "stock.doctype.purchase_receipt.purchase_receipt.make_purchase_invoice",
source_doctype: "Purchase Receipt",
get_query_filters: {
supplier: cur_frm.doc.supplier || undefined,
docstatus: 1,
company: cur_frm.doc.company
}
})
});
}
this.is_opening(doc);
},
credit_to: function() {
this.supplier();
},
write_off_amount: function() {
this.calculate_outstanding_amount();
this.frm.refresh_fields();
},
allocated_amount: function() {
this.calculate_total_advance("Purchase Invoice", "advance_allocation_details");
this.frm.refresh_fields();
},
tc_name: function() {
this.get_terms();
},
entries_add: function(doc, cdt, cdn) {
var row = wn.model.get_doc(cdt, cdn);
this.frm.script_manager.copy_from_first_row("entries", row, ["expense_head", "cost_center"]);
}
});
cur_frm.script_manager.make(erpnext.accounts.PurchaseInvoice);
cur_frm.cscript.is_opening = function(doc, dt, dn) {
hide_field('aging_date');
if (doc.is_opening == 'Yes') unhide_field('aging_date');
}
cur_frm.cscript.make_bank_voucher = function() {
return wn.call({
method: "accounts.doctype.journal_voucher.journal_voucher.get_payment_entry_from_purchase_invoice",
args: {
"purchase_invoice": cur_frm.doc.name,
},
callback: function(r) {
var doclist = wn.model.sync(r.message);
wn.set_route("Form", doclist[0].doctype, doclist[0].name);
}
});
}
cur_frm.fields_dict['supplier_address'].get_query = function(doc, cdt, cdn) {
return{
filters:{'supplier': doc.supplier}
}
}
cur_frm.fields_dict['contact_person'].get_query = function(doc, cdt, cdn) {
return{
filters:{'supplier': doc.supplier}
}
}
cur_frm.fields_dict['entries'].grid.get_field("item_code").get_query = function(doc, cdt, cdn) {
return {
query:"controllers.queries.item_query",
filters:{
'is_purchase_item': 'Yes'
}
}
}
cur_frm.fields_dict['credit_to'].get_query = function(doc) {
return{
filters:{
'debit_or_credit': 'Credit',
'is_pl_account': 'No',
'group_or_ledger': 'Ledger',
'company': doc.company
}
}
}
// Get Print Heading
cur_frm.fields_dict['select_print_heading'].get_query = function(doc, cdt, cdn) {
return{
filters:[
['Print Heading', 'docstatus', '!=', 2]
]
}
}
cur_frm.set_query("expense_head", "entries", function(doc) {
return{
query: "accounts.doctype.purchase_invoice.purchase_invoice.get_expense_account",
filters: {'company': doc.company}
}
});
cur_frm.cscript.expense_head = function(doc, cdt, cdn){
var d = locals[cdt][cdn];
if(d.idx == 1 && d.expense_head){
var cl = getchildren('Purchase Invoice Item', doc.name, 'entries', doc.doctype);
for(var i = 0; i < cl.length; i++){
if(!cl[i].expense_head) cl[i].expense_head = d.expense_head;
}
}
refresh_field('entries');
}
cur_frm.fields_dict["entries"].grid.get_field("cost_center").get_query = function(doc) {
return {
filters: {
'company': doc.company,
'group_or_ledger': 'Ledger'
}
}
}
cur_frm.cscript.cost_center = function(doc, cdt, cdn){
var d = locals[cdt][cdn];
if(d.idx == 1 && d.cost_center){
var cl = getchildren('Purchase Invoice Item', doc.name, 'entries', doc.doctype);
for(var i = 0; i < cl.length; i++){
if(!cl[i].cost_center) cl[i].cost_center = d.cost_center;
}
}
refresh_field('entries');
}
cur_frm.fields_dict['entries'].grid.get_field('project_name').get_query = function(doc, cdt, cdn) {
return{
filters:[
['Project', 'status', 'not in', 'Completed, Cancelled']
]
}
}
cur_frm.cscript.select_print_heading = function(doc,cdt,cdn){
if(doc.select_print_heading){
// print heading
cur_frm.pformat.print_heading = doc.select_print_heading;
}
else
cur_frm.pformat.print_heading = wn._("Purchase Invoice");
}

View File

@@ -1,473 +0,0 @@
# Copyright (c) 2013, Web Notes Technologies Pvt. Ltd. and Contributors
# License: GNU General Public License v3. See license.txt
from __future__ import unicode_literals
import webnotes
from webnotes.utils import add_days, cint, cstr, flt, formatdate
from webnotes.model.bean import getlist
from webnotes.model.code import get_obj
from webnotes import msgprint, _
from setup.utils import get_company_currency
import webnotes.defaults
from controllers.buying_controller import BuyingController
class DocType(BuyingController):
def __init__(self,d,dl):
self.doc, self.doclist = d, dl
self.tname = 'Purchase Invoice Item'
self.fname = 'entries'
self.status_updater = [{
'source_dt': 'Purchase Invoice Item',
'target_dt': 'Purchase Order Item',
'join_field': 'po_detail',
'target_field': 'billed_amt',
'target_parent_dt': 'Purchase Order',
'target_parent_field': 'per_billed',
'target_ref_field': 'import_amount',
'source_field': 'import_amount',
'percent_join_field': 'purchase_order',
}]
def validate(self):
super(DocType, self).validate()
self.po_required()
self.pr_required()
self.check_active_purchase_items()
self.check_conversion_rate()
self.validate_bill_no()
self.validate_credit_acc()
self.clear_unallocated_advances("Purchase Invoice Advance", "advance_allocation_details")
self.check_for_acc_head_of_supplier()
self.check_for_stopped_status()
self.validate_with_previous_doc()
self.validate_uom_is_integer("uom", "qty")
if not self.doc.is_opening:
self.doc.is_opening = 'No'
self.set_aging_date()
#set against account for credit to
self.set_against_expense_account()
self.validate_write_off_account()
self.update_raw_material_cost()
self.update_valuation_rate("entries")
self.validate_multiple_billing("Purchase Receipt", "pr_detail", "import_amount",
"purchase_receipt_details")
def get_credit_to(self):
ret = {}
if self.doc.supplier:
acc_head = webnotes.conn.sql("""select name, credit_days from `tabAccount`
where (name = %s or (master_name = %s and master_type = 'supplier'))
and docstatus != 2 and company = %s""",
(cstr(self.doc.supplier) + " - " + self.company_abbr,
self.doc.supplier, self.doc.company))
if acc_head and acc_head[0][0]:
ret['credit_to'] = acc_head[0][0]
if not self.doc.due_date:
ret['due_date'] = add_days(cstr(self.doc.posting_date),
acc_head and cint(acc_head[0][1]) or 0)
elif not acc_head:
msgprint("%s does not have an Account Head in %s. \
You must first create it from the Supplier Master" % \
(self.doc.supplier, self.doc.company))
return ret
def set_supplier_defaults(self):
self.doc.fields.update(self.get_credit_to())
super(DocType, self).set_supplier_defaults()
def get_advances(self):
super(DocType, self).get_advances(self.doc.credit_to,
"Purchase Invoice Advance", "advance_allocation_details", "debit")
def check_active_purchase_items(self):
for d in getlist(self.doclist, 'entries'):
if d.item_code: # extra condn coz item_code is not mandatory in PV
valid_item = webnotes.conn.sql("select docstatus,is_purchase_item from tabItem where name = %s",d.item_code)
if valid_item[0][0] == 2:
msgprint("Item : '%s' is Inactive, you can restore it from Trash" %(d.item_code))
raise Exception
if not valid_item[0][1] == 'Yes':
msgprint("Item : '%s' is not Purchase Item"%(d.item_code))
raise Exception
def check_conversion_rate(self):
default_currency = get_company_currency(self.doc.company)
if not default_currency:
msgprint('Message: Please enter default currency in Company Master')
raise Exception
if (self.doc.currency == default_currency and flt(self.doc.conversion_rate) != 1.00) or not self.doc.conversion_rate or (self.doc.currency != default_currency and flt(self.doc.conversion_rate) == 1.00):
msgprint("Message: Please Enter Appropriate Conversion Rate.")
raise Exception
def validate_bill_no(self):
if self.doc.bill_no and self.doc.bill_no.lower().strip() \
not in ['na', 'not applicable', 'none']:
b_no = webnotes.conn.sql("""select bill_no, name, ifnull(is_opening,'') from `tabPurchase Invoice`
where bill_no = %s and credit_to = %s and docstatus = 1 and name != %s""",
(self.doc.bill_no, self.doc.credit_to, self.doc.name))
if b_no and cstr(b_no[0][2]) == cstr(self.doc.is_opening):
msgprint("Please check you have already booked expense against Bill No. %s \
in Purchase Invoice %s" % (cstr(b_no[0][0]), cstr(b_no[0][1])),
raise_exception=1)
if not self.doc.remarks and self.doc.bill_date:
self.doc.remarks = (self.doc.remarks or '') + "\n" + ("Against Bill %s dated %s"
% (self.doc.bill_no, formatdate(self.doc.bill_date)))
if not self.doc.remarks:
self.doc.remarks = "No Remarks"
def validate_credit_acc(self):
acc = webnotes.conn.sql("select debit_or_credit, is_pl_account from tabAccount where name = %s",
self.doc.credit_to)
if not acc:
msgprint("Account: "+ self.doc.credit_to + "does not exist")
raise Exception
elif acc[0][0] and acc[0][0] != 'Credit':
msgprint("Account: "+ self.doc.credit_to + "is not a credit account")
raise Exception
elif acc[0][1] and acc[0][1] != 'No':
msgprint("Account: "+ self.doc.credit_to + "is a pl account")
raise Exception
# Validate Acc Head of Supplier and Credit To Account entered
# ------------------------------------------------------------
def check_for_acc_head_of_supplier(self):
if self.doc.supplier and self.doc.credit_to:
acc_head = webnotes.conn.sql("select master_name from `tabAccount` where name = %s", self.doc.credit_to)
if (acc_head and cstr(acc_head[0][0]) != cstr(self.doc.supplier)) or (not acc_head and (self.doc.credit_to != cstr(self.doc.supplier) + " - " + self.company_abbr)):
msgprint("Credit To: %s do not match with Supplier: %s for Company: %s.\n If both correctly entered, please select Master Type and Master Name in account master." %(self.doc.credit_to,self.doc.supplier,self.doc.company), raise_exception=1)
# Check for Stopped PO
# ---------------------
def check_for_stopped_status(self):
check_list = []
for d in getlist(self.doclist,'entries'):
if d.purchase_order and not d.purchase_order in check_list and not d.purchase_receipt:
check_list.append(d.purhcase_order)
stopped = webnotes.conn.sql("select name from `tabPurchase Order` where status = 'Stopped' and name = '%s'" % d.purchase_order)
if stopped:
msgprint("One cannot do any transaction against 'Purchase Order' : %s, it's status is 'Stopped'" % (d.purhcase_order))
raise Exception
def validate_with_previous_doc(self):
super(DocType, self).validate_with_previous_doc(self.tname, {
"Purchase Order": {
"ref_dn_field": "purchase_order",
"compare_fields": [["supplier", "="], ["company", "="], ["currency", "="]],
},
"Purchase Order Item": {
"ref_dn_field": "po_detail",
"compare_fields": [["project_name", "="], ["item_code", "="], ["uom", "="]],
"is_child_table": True,
"allow_duplicate_prev_row_id": True
},
"Purchase Receipt": {
"ref_dn_field": "purchase_receipt",
"compare_fields": [["supplier", "="], ["company", "="], ["currency", "="]],
},
"Purchase Receipt Item": {
"ref_dn_field": "pr_detail",
"compare_fields": [["project_name", "="], ["item_code", "="], ["uom", "="]],
"is_child_table": True
}
})
if cint(webnotes.defaults.get_global_default('maintain_same_rate')):
super(DocType, self).validate_with_previous_doc(self.tname, {
"Purchase Order Item": {
"ref_dn_field": "po_detail",
"compare_fields": [["import_rate", "="]],
"is_child_table": True,
"allow_duplicate_prev_row_id": True
},
"Purchase Receipt Item": {
"ref_dn_field": "pr_detail",
"compare_fields": [["import_rate", "="]],
"is_child_table": True
}
})
def set_aging_date(self):
if self.doc.is_opening != 'Yes':
self.doc.aging_date = self.doc.posting_date
elif not self.doc.aging_date:
msgprint("Aging Date is mandatory for opening entry")
raise Exception
def set_against_expense_account(self):
auto_accounting_for_stock = cint(webnotes.defaults.get_global_default("auto_accounting_for_stock"))
if auto_accounting_for_stock:
stock_not_billed_account = self.get_company_default("stock_received_but_not_billed")
against_accounts = []
stock_items = self.get_stock_items()
for item in self.doclist.get({"parentfield": "entries"}):
if auto_accounting_for_stock and item.item_code in stock_items:
# in case of auto inventory accounting, against expense account is always
# Stock Received But Not Billed for a stock item
item.expense_head = stock_not_billed_account
item.cost_center = None
if stock_not_billed_account not in against_accounts:
against_accounts.append(stock_not_billed_account)
elif not item.expense_head:
msgprint(_("Expense account is mandatory for item") + ": " +
(item.item_code or item.item_name), raise_exception=1)
elif item.expense_head not in against_accounts:
# if no auto_accounting_for_stock or not a stock item
against_accounts.append(item.expense_head)
self.doc.against_expense_account = ",".join(against_accounts)
def po_required(self):
if webnotes.conn.get_value("Buying Settings", None, "po_required") == 'Yes':
for d in getlist(self.doclist,'entries'):
if not d.purchase_order:
msgprint("Purchse Order No. required against item %s"%d.item_code)
raise Exception
def pr_required(self):
if webnotes.conn.get_value("Buying Settings", None, "pr_required") == 'Yes':
for d in getlist(self.doclist,'entries'):
if not d.purchase_receipt:
msgprint("Purchase Receipt No. required against item %s"%d.item_code)
raise Exception
def validate_write_off_account(self):
if self.doc.write_off_amount and not self.doc.write_off_account:
msgprint("Please enter Write Off Account", raise_exception=1)
def check_prev_docstatus(self):
for d in getlist(self.doclist,'entries'):
if d.purchase_order:
submitted = webnotes.conn.sql("select name from `tabPurchase Order` where docstatus = 1 and name = '%s'" % d.purchase_order)
if not submitted:
webnotes.throw("Purchase Order : "+ cstr(d.purchase_order) +" is not submitted")
if d.purchase_receipt:
submitted = webnotes.conn.sql("select name from `tabPurchase Receipt` where docstatus = 1 and name = '%s'" % d.purchase_receipt)
if not submitted:
webnotes.throw("Purchase Receipt : "+ cstr(d.purchase_receipt) +" is not submitted")
def update_against_document_in_jv(self):
"""
Links invoice and advance voucher:
1. cancel advance voucher
2. split into multiple rows if partially adjusted, assign against voucher
3. submit advance voucher
"""
lst = []
for d in getlist(self.doclist, 'advance_allocation_details'):
if flt(d.allocated_amount) > 0:
args = {
'voucher_no' : d.journal_voucher,
'voucher_detail_no' : d.jv_detail_no,
'against_voucher_type' : 'Purchase Invoice',
'against_voucher' : self.doc.name,
'account' : self.doc.credit_to,
'is_advance' : 'Yes',
'dr_or_cr' : 'debit',
'unadjusted_amt' : flt(d.advance_amount),
'allocated_amt' : flt(d.allocated_amount)
}
lst.append(args)
if lst:
from accounts.utils import reconcile_against_document
reconcile_against_document(lst)
def on_submit(self):
self.check_prev_docstatus()
get_obj('Authorization Control').validate_approving_authority(self.doc.doctype,
self.doc.company, self.doc.grand_total)
# this sequence because outstanding may get -negative
self.make_gl_entries()
self.update_against_document_in_jv()
self.update_prevdoc_status()
def make_gl_entries(self):
auto_accounting_for_stock = \
cint(webnotes.defaults.get_global_default("auto_accounting_for_stock"))
gl_entries = []
# parent's gl entry
if self.doc.grand_total:
gl_entries.append(
self.get_gl_dict({
"account": self.doc.credit_to,
"against": self.doc.against_expense_account,
"credit": self.doc.total_amount_to_pay,
"remarks": self.doc.remarks,
"against_voucher": self.doc.name,
"against_voucher_type": self.doc.doctype,
})
)
# tax table gl entries
valuation_tax = {}
for tax in self.doclist.get({"parentfield": "purchase_tax_details"}):
if tax.category in ("Total", "Valuation and Total") and flt(tax.tax_amount):
gl_entries.append(
self.get_gl_dict({
"account": tax.account_head,
"against": self.doc.credit_to,
"debit": tax.add_deduct_tax == "Add" and tax.tax_amount or 0,
"credit": tax.add_deduct_tax == "Deduct" and tax.tax_amount or 0,
"remarks": self.doc.remarks,
"cost_center": tax.cost_center
})
)
# accumulate valuation tax
if tax.category in ("Valuation", "Valuation and Total") and flt(tax.tax_amount):
if auto_accounting_for_stock and not tax.cost_center:
webnotes.throw(_("Row %(row)s: Cost Center is mandatory \
if tax/charges category is Valuation or Valuation and Total" %
{"row": tax.idx}))
valuation_tax.setdefault(tax.cost_center, 0)
valuation_tax[tax.cost_center] += \
(tax.add_deduct_tax == "Add" and 1 or -1) * flt(tax.tax_amount)
# item gl entries
stock_item_and_auto_accounting_for_stock = False
stock_items = self.get_stock_items()
rounding_diff = 0.0
for item in self.doclist.get({"parentfield": "entries"}):
if auto_accounting_for_stock and item.item_code in stock_items:
if flt(item.valuation_rate):
# if auto inventory accounting enabled and stock item,
# then do stock related gl entries
# expense will be booked in sales invoice
stock_item_and_auto_accounting_for_stock = True
valuation_amt = flt(flt(item.valuation_rate) * flt(item.qty) * \
flt(item.conversion_factor), self.precision("valuation_rate", item))
rounding_diff += (flt(item.amount, self.precision("amount", item)) +
flt(item.item_tax_amount, self.precision("item_tax_amount", item)) +
flt(item.rm_supp_cost, self.precision("rm_supp_cost", item)) -
valuation_amt)
gl_entries.append(
self.get_gl_dict({
"account": item.expense_head,
"against": self.doc.credit_to,
"debit": valuation_amt,
"remarks": self.doc.remarks or "Accounting Entry for Stock"
})
)
elif flt(item.amount):
# if not a stock item or auto inventory accounting disabled, book the expense
gl_entries.append(
self.get_gl_dict({
"account": item.expense_head,
"against": self.doc.credit_to,
"debit": item.amount,
"remarks": self.doc.remarks,
"cost_center": item.cost_center
})
)
if stock_item_and_auto_accounting_for_stock and valuation_tax:
# credit valuation tax amount in "Expenses Included In Valuation"
# this will balance out valuation amount included in cost of goods sold
expenses_included_in_valuation = \
self.get_company_default("expenses_included_in_valuation")
if rounding_diff:
import operator
cost_center_with_max_value = max(valuation_tax.iteritems(),
key=operator.itemgetter(1))[0]
valuation_tax[cost_center_with_max_value] -= flt(rounding_diff)
for cost_center, amount in valuation_tax.items():
gl_entries.append(
self.get_gl_dict({
"account": expenses_included_in_valuation,
"cost_center": cost_center,
"against": self.doc.credit_to,
"credit": amount,
"remarks": self.doc.remarks or "Accounting Entry for Stock"
})
)
# writeoff account includes petty difference in the invoice amount
# and the amount that is paid
if self.doc.write_off_account and flt(self.doc.write_off_amount):
gl_entries.append(
self.get_gl_dict({
"account": self.doc.write_off_account,
"against": self.doc.credit_to,
"credit": flt(self.doc.write_off_amount),
"remarks": self.doc.remarks,
"cost_center": self.doc.write_off_cost_center
})
)
if gl_entries:
from accounts.general_ledger import make_gl_entries
make_gl_entries(gl_entries, cancel=(self.doc.docstatus == 2))
def on_cancel(self):
from accounts.utils import remove_against_link_from_jv
remove_against_link_from_jv(self.doc.doctype, self.doc.name, "against_voucher")
self.update_prevdoc_status()
self.make_cancel_gl_entries()
def on_update(self):
pass
def update_raw_material_cost(self):
if self.sub_contracted_items:
for d in self.doclist.get({"parentfield": "entries"}):
rm_cost = webnotes.conn.sql("""select raw_material_cost / quantity
from `tabBOM` where item = %s and is_default = 1 and docstatus = 1
and is_active = 1 """, (d.item_code,))
rm_cost = rm_cost and flt(rm_cost[0][0]) or 0
d.conversion_factor = d.conversion_factor or flt(webnotes.conn.get_value(
"UOM Conversion Detail", {"parent": d.item_code, "uom": d.uom},
"conversion_factor")) or 1
d.rm_supp_cost = rm_cost * flt(d.qty) * flt(d.conversion_factor)
@webnotes.whitelist()
def get_expense_account(doctype, txt, searchfield, start, page_len, filters):
from controllers.queries import get_match_cond
# expense account can be any Debit account,
# but can also be a Liability account with account_type='Expense Account' in special circumstances.
# Hence the first condition is an "OR"
return webnotes.conn.sql("""select tabAccount.name from `tabAccount`
where (tabAccount.debit_or_credit="Debit"
or tabAccount.account_type = "Expense Account")
and tabAccount.group_or_ledger="Ledger"
and tabAccount.docstatus!=2
and ifnull(tabAccount.master_type, "")=""
and ifnull(tabAccount.master_name, "")=""
and tabAccount.company = '%(company)s'
and tabAccount.%(key)s LIKE '%(txt)s'
%(mcond)s""" % {'company': filters['company'], 'key': searchfield,
'txt': "%%%s%%" % txt, 'mcond':get_match_cond(doctype, searchfield)})

View File

@@ -1,813 +0,0 @@
[
{
"creation": "2013-05-21 16:16:39",
"docstatus": 0,
"modified": "2013-11-22 17:15:27",
"modified_by": "Administrator",
"owner": "Administrator"
},
{
"allow_attach": 1,
"allow_import": 1,
"autoname": "naming_series:",
"doctype": "DocType",
"icon": "icon-file-text",
"is_submittable": 1,
"module": "Accounts",
"name": "__common__",
"read_only_onload": 1,
"search_fields": "posting_date, credit_to, fiscal_year, bill_no, grand_total, outstanding_amount"
},
{
"doctype": "DocField",
"name": "__common__",
"parent": "Purchase Invoice",
"parentfield": "fields",
"parenttype": "DocType",
"permlevel": 0
},
{
"doctype": "DocPerm",
"name": "__common__",
"parent": "Purchase Invoice",
"parentfield": "permissions",
"parenttype": "DocType",
"permlevel": 0,
"read": 1,
"report": 1
},
{
"doctype": "DocType",
"name": "Purchase Invoice"
},
{
"doctype": "DocField",
"fieldname": "supplier_section",
"fieldtype": "Section Break",
"label": "Supplier",
"options": "icon-user"
},
{
"doctype": "DocField",
"fieldname": "column_break0",
"fieldtype": "Column Break",
"oldfieldtype": "Column Break",
"read_only": 0,
"width": "50%"
},
{
"doctype": "DocField",
"fieldname": "naming_series",
"fieldtype": "Select",
"label": "Series",
"no_copy": 1,
"oldfieldname": "naming_series",
"oldfieldtype": "Select",
"options": "BILL\nBILLJ",
"print_hide": 1,
"read_only": 0,
"report_hide": 0,
"reqd": 1
},
{
"doctype": "DocField",
"fieldname": "supplier",
"fieldtype": "Link",
"hidden": 0,
"label": "Supplier",
"oldfieldname": "supplier",
"oldfieldtype": "Link",
"options": "Supplier",
"print_hide": 1,
"read_only": 0
},
{
"depends_on": "supplier",
"doctype": "DocField",
"fieldname": "supplier_name",
"fieldtype": "Data",
"hidden": 0,
"in_list_view": 1,
"label": "Name",
"oldfieldname": "supplier_name",
"oldfieldtype": "Data",
"read_only": 1
},
{
"doctype": "DocField",
"fieldname": "address_display",
"fieldtype": "Small Text",
"hidden": 1,
"label": "Address",
"read_only": 1
},
{
"doctype": "DocField",
"fieldname": "contact_display",
"fieldtype": "Small Text",
"hidden": 1,
"label": "Contact",
"read_only": 1
},
{
"doctype": "DocField",
"fieldname": "contact_mobile",
"fieldtype": "Text",
"hidden": 1,
"label": "Mobile No",
"read_only": 1
},
{
"doctype": "DocField",
"fieldname": "contact_email",
"fieldtype": "Text",
"hidden": 1,
"label": "Contact Email",
"print_hide": 1,
"read_only": 1
},
{
"doctype": "DocField",
"fieldname": "column_break1",
"fieldtype": "Column Break",
"oldfieldtype": "Column Break",
"read_only": 0,
"reqd": 0,
"width": "50%"
},
{
"default": "Today",
"doctype": "DocField",
"fieldname": "posting_date",
"fieldtype": "Date",
"in_filter": 1,
"label": "Posting Date",
"no_copy": 0,
"oldfieldname": "posting_date",
"oldfieldtype": "Date",
"print_hide": 1,
"read_only": 0,
"reqd": 1,
"search_index": 1
},
{
"description": "If not applicable please enter: NA",
"doctype": "DocField",
"fieldname": "bill_no",
"fieldtype": "Data",
"in_filter": 1,
"label": "Supplier Invoice No",
"oldfieldname": "bill_no",
"oldfieldtype": "Data",
"print_hide": 1,
"read_only": 0,
"reqd": 1,
"search_index": 1
},
{
"doctype": "DocField",
"fieldname": "bill_date",
"fieldtype": "Date",
"in_filter": 1,
"label": "Supplier Invoice Date",
"oldfieldname": "bill_date",
"oldfieldtype": "Date",
"print_hide": 1,
"read_only": 0,
"reqd": 0,
"search_index": 1
},
{
"doctype": "DocField",
"fieldname": "amended_from",
"fieldtype": "Link",
"label": "Amended From",
"no_copy": 1,
"oldfieldname": "amended_from",
"oldfieldtype": "Link",
"options": "Purchase Invoice",
"print_hide": 1,
"read_only": 1
},
{
"doctype": "DocField",
"fieldname": "company",
"fieldtype": "Link",
"in_filter": 1,
"label": "Company",
"oldfieldname": "company",
"oldfieldtype": "Link",
"options": "Company",
"print_hide": 1,
"read_only": 0,
"search_index": 1
},
{
"doctype": "DocField",
"fieldname": "currency_price_list",
"fieldtype": "Section Break",
"label": "Currency and Price List",
"options": "icon-tag",
"read_only": 0
},
{
"doctype": "DocField",
"fieldname": "currency",
"fieldtype": "Link",
"label": "Currency",
"oldfieldname": "currency",
"oldfieldtype": "Select",
"options": "Currency",
"print_hide": 1,
"read_only": 0
},
{
"description": "The rate at which Bill Currency is converted into company's base currency",
"doctype": "DocField",
"fieldname": "conversion_rate",
"fieldtype": "Float",
"label": "Exchange Rate",
"oldfieldname": "conversion_rate",
"oldfieldtype": "Currency",
"print_hide": 1,
"read_only": 0
},
{
"doctype": "DocField",
"fieldname": "column_break2",
"fieldtype": "Column Break",
"read_only": 0
},
{
"doctype": "DocField",
"fieldname": "buying_price_list",
"fieldtype": "Link",
"label": "Price List",
"options": "Price List",
"print_hide": 1,
"read_only": 0
},
{
"doctype": "DocField",
"fieldname": "price_list_currency",
"fieldtype": "Link",
"label": "Price List Currency",
"options": "Currency",
"print_hide": 1,
"read_only": 1
},
{
"doctype": "DocField",
"fieldname": "plc_conversion_rate",
"fieldtype": "Float",
"label": "Price List Exchange Rate",
"print_hide": 1,
"read_only": 0
},
{
"doctype": "DocField",
"fieldname": "items",
"fieldtype": "Section Break",
"label": "Items",
"oldfieldtype": "Section Break",
"options": "icon-shopping-cart",
"read_only": 0
},
{
"allow_on_submit": 1,
"doctype": "DocField",
"fieldname": "entries",
"fieldtype": "Table",
"label": "Entries",
"oldfieldname": "entries",
"oldfieldtype": "Table",
"options": "Purchase Invoice Item",
"read_only": 0
},
{
"doctype": "DocField",
"fieldname": "section_break_26",
"fieldtype": "Section Break"
},
{
"doctype": "DocField",
"fieldname": "net_total_import",
"fieldtype": "Currency",
"label": "Net Total",
"oldfieldname": "net_total_import",
"oldfieldtype": "Currency",
"options": "currency",
"print_hide": 0,
"read_only": 1
},
{
"doctype": "DocField",
"fieldname": "column_break_28",
"fieldtype": "Column Break"
},
{
"description": "Will be calculated automatically when you enter the details",
"doctype": "DocField",
"fieldname": "net_total",
"fieldtype": "Currency",
"label": "Net Total (Company Currency)",
"oldfieldname": "net_total",
"oldfieldtype": "Currency",
"options": "Company:company:default_currency",
"print_hide": 1,
"read_only": 1
},
{
"doctype": "DocField",
"fieldname": "taxes",
"fieldtype": "Section Break",
"label": "Taxes",
"oldfieldtype": "Section Break",
"options": "icon-money",
"read_only": 0
},
{
"doctype": "DocField",
"fieldname": "purchase_other_charges",
"fieldtype": "Link",
"label": "Tax Master",
"oldfieldname": "purchase_other_charges",
"oldfieldtype": "Link",
"options": "Purchase Taxes and Charges Master",
"print_hide": 1,
"read_only": 0
},
{
"doctype": "DocField",
"fieldname": "purchase_tax_details",
"fieldtype": "Table",
"label": "Purchase Taxes and Charges",
"oldfieldname": "purchase_tax_details",
"oldfieldtype": "Table",
"options": "Purchase Taxes and Charges",
"read_only": 0
},
{
"doctype": "DocField",
"fieldname": "tax_calculation",
"fieldtype": "HTML",
"label": "Tax Calculation",
"oldfieldtype": "HTML",
"print_hide": 1,
"read_only": 0
},
{
"doctype": "DocField",
"fieldname": "totals",
"fieldtype": "Section Break",
"label": "Totals",
"oldfieldtype": "Section Break",
"options": "icon-money",
"read_only": 0
},
{
"doctype": "DocField",
"fieldname": "other_charges_added_import",
"fieldtype": "Currency",
"label": "Taxes and Charges Added",
"oldfieldname": "other_charges_added_import",
"oldfieldtype": "Currency",
"options": "currency",
"print_hide": 1,
"read_only": 1
},
{
"doctype": "DocField",
"fieldname": "other_charges_deducted_import",
"fieldtype": "Currency",
"label": "Taxes and Charges Deducted",
"oldfieldname": "other_charges_deducted_import",
"oldfieldtype": "Currency",
"options": "currency",
"print_hide": 1,
"read_only": 1
},
{
"doctype": "DocField",
"fieldname": "grand_total_import",
"fieldtype": "Currency",
"in_list_view": 1,
"label": "Grand Total",
"oldfieldname": "grand_total_import",
"oldfieldtype": "Currency",
"options": "currency",
"print_hide": 0,
"read_only": 1
},
{
"doctype": "DocField",
"fieldname": "in_words_import",
"fieldtype": "Data",
"label": "In Words",
"oldfieldname": "in_words_import",
"oldfieldtype": "Data",
"print_hide": 0,
"read_only": 1
},
{
"doctype": "DocField",
"fieldname": "total_amount_to_pay",
"fieldtype": "Currency",
"hidden": 0,
"label": "Total Amount To Pay",
"no_copy": 1,
"oldfieldname": "total_amount_to_pay",
"oldfieldtype": "Currency",
"options": "Company:company:default_currency",
"print_hide": 1,
"read_only": 1
},
{
"doctype": "DocField",
"fieldname": "total_advance",
"fieldtype": "Currency",
"label": "Total Advance",
"no_copy": 1,
"oldfieldname": "total_advance",
"oldfieldtype": "Currency",
"options": "Company:company:default_currency",
"print_hide": 1,
"read_only": 1
},
{
"doctype": "DocField",
"fieldname": "outstanding_amount",
"fieldtype": "Currency",
"in_filter": 1,
"in_list_view": 1,
"label": "Outstanding Amount",
"no_copy": 1,
"oldfieldname": "outstanding_amount",
"oldfieldtype": "Currency",
"options": "Company:company:default_currency",
"print_hide": 1,
"read_only": 1,
"search_index": 1
},
{
"doctype": "DocField",
"fieldname": "column_break8",
"fieldtype": "Column Break",
"oldfieldtype": "Column Break",
"print_hide": 1,
"read_only": 0,
"width": "50%"
},
{
"doctype": "DocField",
"fieldname": "total_tax",
"fieldtype": "Currency",
"label": "Total Tax (Company Currency)",
"oldfieldname": "total_tax",
"oldfieldtype": "Currency",
"options": "Company:company:default_currency",
"print_hide": 1,
"read_only": 1
},
{
"doctype": "DocField",
"fieldname": "other_charges_added",
"fieldtype": "Currency",
"label": "Taxes and Charges Added (Company Currency)",
"oldfieldname": "other_charges_added",
"oldfieldtype": "Currency",
"options": "Company:company:default_currency",
"print_hide": 1,
"read_only": 1
},
{
"doctype": "DocField",
"fieldname": "other_charges_deducted",
"fieldtype": "Currency",
"label": "Taxes and Charges Deducted (Company Currency)",
"oldfieldname": "other_charges_deducted",
"oldfieldtype": "Currency",
"options": "Company:company:default_currency",
"print_hide": 1,
"read_only": 1
},
{
"doctype": "DocField",
"fieldname": "grand_total",
"fieldtype": "Currency",
"label": "Grand Total (Company Currency)",
"oldfieldname": "grand_total",
"oldfieldtype": "Currency",
"options": "Company:company:default_currency",
"print_hide": 1,
"read_only": 1
},
{
"description": "In Words will be visible once you save the Purchase Invoice.",
"doctype": "DocField",
"fieldname": "in_words",
"fieldtype": "Data",
"label": "In Words (Company Currency)",
"oldfieldname": "in_words",
"oldfieldtype": "Data",
"print_hide": 1,
"read_only": 1
},
{
"doctype": "DocField",
"fieldname": "write_off_amount",
"fieldtype": "Currency",
"label": "Write Off Amount",
"no_copy": 1,
"options": "Company:company:default_currency",
"print_hide": 1,
"read_only": 0
},
{
"depends_on": "eval:flt(doc.write_off_amount)!=0",
"doctype": "DocField",
"fieldname": "write_off_account",
"fieldtype": "Link",
"label": "Write Off Account",
"no_copy": 1,
"options": "Account",
"print_hide": 1,
"read_only": 0
},
{
"depends_on": "eval:flt(doc.write_off_amount)!=0",
"doctype": "DocField",
"fieldname": "write_off_cost_center",
"fieldtype": "Link",
"label": "Write Off Cost Center",
"no_copy": 1,
"options": "Cost Center",
"print_hide": 1,
"read_only": 0
},
{
"doctype": "DocField",
"fieldname": "against_expense_account",
"fieldtype": "Small Text",
"hidden": 1,
"label": "Against Expense Account",
"no_copy": 1,
"oldfieldname": "against_expense_account",
"oldfieldtype": "Small Text",
"print_hide": 1,
"read_only": 0,
"report_hide": 0
},
{
"doctype": "DocField",
"fieldname": "advances",
"fieldtype": "Section Break",
"label": "Advances",
"oldfieldtype": "Section Break",
"options": "icon-money",
"print_hide": 1,
"read_only": 0
},
{
"doctype": "DocField",
"fieldname": "get_advances_paid",
"fieldtype": "Button",
"label": "Get Advances Paid",
"oldfieldtype": "Button",
"options": "get_advances",
"print_hide": 1,
"read_only": 0
},
{
"doctype": "DocField",
"fieldname": "advance_allocation_details",
"fieldtype": "Table",
"label": "Purchase Invoice Advances",
"no_copy": 1,
"oldfieldname": "advance_allocation_details",
"oldfieldtype": "Table",
"options": "Purchase Invoice Advance",
"print_hide": 1,
"read_only": 0
},
{
"doctype": "DocField",
"fieldname": "terms_section_break",
"fieldtype": "Section Break",
"label": "Terms and Conditions",
"options": "icon-legal"
},
{
"doctype": "DocField",
"fieldname": "tc_name",
"fieldtype": "Link",
"label": "Terms",
"options": "Terms and Conditions",
"print_hide": 1
},
{
"doctype": "DocField",
"fieldname": "terms",
"fieldtype": "Text Editor",
"label": "Terms and Conditions1"
},
{
"depends_on": "supplier",
"doctype": "DocField",
"fieldname": "contact_section",
"fieldtype": "Section Break",
"label": "Contact Info",
"options": "icon-bullhorn",
"read_only": 0
},
{
"doctype": "DocField",
"fieldname": "supplier_address",
"fieldtype": "Link",
"label": "Supplier Address",
"options": "Address",
"read_only": 0
},
{
"doctype": "DocField",
"fieldname": "col_break23",
"fieldtype": "Column Break",
"read_only": 0,
"width": "50%"
},
{
"doctype": "DocField",
"fieldname": "contact_person",
"fieldtype": "Link",
"label": "Contact Person",
"options": "Contact",
"print_hide": 1,
"read_only": 0
},
{
"doctype": "DocField",
"fieldname": "more_info",
"fieldtype": "Section Break",
"label": "More Info",
"oldfieldtype": "Section Break",
"options": "icon-file-text",
"print_hide": 1,
"read_only": 0
},
{
"description": "Supplier (Payable) Account",
"doctype": "DocField",
"fieldname": "credit_to",
"fieldtype": "Link",
"in_filter": 1,
"label": "Credit To",
"oldfieldname": "credit_to",
"oldfieldtype": "Link",
"options": "Account",
"print_hide": 1,
"read_only": 0,
"reqd": 1,
"search_index": 1
},
{
"default": "No",
"description": "Considered as Opening Balance",
"doctype": "DocField",
"fieldname": "is_opening",
"fieldtype": "Select",
"in_filter": 1,
"label": "Is Opening",
"oldfieldname": "is_opening",
"oldfieldtype": "Select",
"options": "No\nYes",
"print_hide": 1,
"read_only": 0,
"search_index": 1
},
{
"description": "Actual Invoice Date",
"doctype": "DocField",
"fieldname": "aging_date",
"fieldtype": "Date",
"label": "Aging Date",
"oldfieldname": "aging_date",
"oldfieldtype": "Date",
"print_hide": 1,
"read_only": 0,
"search_index": 0
},
{
"allow_on_submit": 1,
"doctype": "DocField",
"fieldname": "select_print_heading",
"fieldtype": "Link",
"label": "Print Heading",
"no_copy": 1,
"oldfieldname": "select_print_heading",
"oldfieldtype": "Link",
"options": "Print Heading",
"print_hide": 1,
"read_only": 0,
"report_hide": 1
},
{
"doctype": "DocField",
"fieldname": "due_date",
"fieldtype": "Date",
"in_filter": 1,
"label": "Due Date",
"no_copy": 0,
"oldfieldname": "due_date",
"oldfieldtype": "Date",
"print_hide": 0,
"read_only": 0,
"search_index": 1
},
{
"doctype": "DocField",
"fieldname": "mode_of_payment",
"fieldtype": "Select",
"label": "Mode of Payment",
"oldfieldname": "mode_of_payment",
"oldfieldtype": "Select",
"options": "link:Mode of Payment",
"read_only": 0
},
{
"doctype": "DocField",
"fieldname": "column_break_63",
"fieldtype": "Column Break",
"read_only": 0
},
{
"doctype": "DocField",
"fieldname": "fiscal_year",
"fieldtype": "Select",
"in_filter": 1,
"label": "Fiscal Year",
"oldfieldname": "fiscal_year",
"oldfieldtype": "Select",
"options": "link:Fiscal Year",
"print_hide": 1,
"read_only": 0,
"search_index": 1
},
{
"doctype": "DocField",
"fieldname": "remarks",
"fieldtype": "Small Text",
"label": "Remarks",
"no_copy": 1,
"oldfieldname": "remarks",
"oldfieldtype": "Text",
"print_hide": 1,
"read_only": 0,
"reqd": 0
},
{
"amend": 0,
"cancel": 0,
"create": 0,
"doctype": "DocPerm",
"role": "Accounts User",
"submit": 0,
"write": 0
},
{
"amend": 0,
"cancel": 0,
"create": 0,
"doctype": "DocPerm",
"role": "Purchase User",
"submit": 0,
"write": 0
},
{
"amend": 0,
"cancel": 0,
"create": 0,
"doctype": "DocPerm",
"match": "supplier",
"role": "Supplier",
"submit": 0,
"write": 0
},
{
"amend": 1,
"cancel": 1,
"create": 1,
"doctype": "DocPerm",
"role": "Accounts Manager",
"submit": 1,
"write": 1
},
{
"amend": 0,
"cancel": 0,
"create": 0,
"doctype": "DocPerm",
"role": "Auditor",
"submit": 0,
"write": 0
}
]

View File

@@ -1,12 +0,0 @@
// Copyright (c) 2013, Web Notes Technologies Pvt. Ltd. and Contributors
// License: GNU General Public License v3. See license.txt
// render
wn.listview_settings['Purchase Invoice'] = {
add_fields: ["`tabPurchase Invoice`.grand_total", "`tabPurchase Invoice`.outstanding_amount"],
add_columns: [{"content":"paid_amount", width:"10%", type:"bar-graph", label: "Paid"}],
prepare_data: function(data) {
data.paid_amount = flt(data.grand_total) ? (((flt(data.grand_total) -
flt(data.outstanding_amount)) / flt(data.grand_total)) * 100) : 0;
}
};

View File

@@ -1,415 +0,0 @@
# Copyright (c) 2013, Web Notes Technologies Pvt. Ltd. and Contributors
# License: GNU General Public License v3. See license.txt
from __future__ import unicode_literals
import unittest
import webnotes
import webnotes.model
import json
from webnotes.utils import cint
import webnotes.defaults
from stock.doctype.purchase_receipt.test_purchase_receipt import set_perpetual_inventory
test_dependencies = ["Item", "Cost Center"]
test_ignore = ["Serial No"]
class TestPurchaseInvoice(unittest.TestCase):
def test_gl_entries_without_auto_accounting_for_stock(self):
set_perpetual_inventory(0)
self.assertTrue(not cint(webnotes.defaults.get_global_default("auto_accounting_for_stock")))
wrapper = webnotes.bean(copy=test_records[0])
wrapper.run_method("calculate_taxes_and_totals")
wrapper.insert()
wrapper.submit()
wrapper.load_from_db()
dl = wrapper.doclist
expected_gl_entries = {
"_Test Supplier - _TC": [0, 1512.30],
"_Test Account Cost for Goods Sold - _TC": [1250, 0],
"_Test Account Shipping Charges - _TC": [100, 0],
"_Test Account Excise Duty - _TC": [140, 0],
"_Test Account Education Cess - _TC": [2.8, 0],
"_Test Account S&H Education Cess - _TC": [1.4, 0],
"_Test Account CST - _TC": [29.88, 0],
"_Test Account VAT - _TC": [156.25, 0],
"_Test Account Discount - _TC": [0, 168.03],
}
gl_entries = webnotes.conn.sql("""select account, debit, credit from `tabGL Entry`
where voucher_type = 'Purchase Invoice' and voucher_no = %s""", dl[0].name, as_dict=1)
for d in gl_entries:
self.assertEqual([d.debit, d.credit], expected_gl_entries.get(d.account))
def test_gl_entries_with_auto_accounting_for_stock(self):
set_perpetual_inventory(1)
self.assertEqual(cint(webnotes.defaults.get_global_default("auto_accounting_for_stock")), 1)
pi = webnotes.bean(copy=test_records[1])
pi.run_method("calculate_taxes_and_totals")
pi.insert()
pi.submit()
gl_entries = webnotes.conn.sql("""select account, debit, credit
from `tabGL Entry` where voucher_type='Purchase Invoice' and voucher_no=%s
order by account asc""", pi.doc.name, as_dict=1)
self.assertTrue(gl_entries)
expected_values = sorted([
["_Test Supplier - _TC", 0, 720],
["Stock Received But Not Billed - _TC", 750.0, 0],
["_Test Account Shipping Charges - _TC", 100.0, 0],
["_Test Account VAT - _TC", 120.0, 0],
["Expenses Included In Valuation - _TC", 0, 250.0],
])
for i, gle in enumerate(gl_entries):
self.assertEquals(expected_values[i][0], gle.account)
self.assertEquals(expected_values[i][1], gle.debit)
self.assertEquals(expected_values[i][2], gle.credit)
set_perpetual_inventory(0)
def test_gl_entries_with_aia_for_non_stock_items(self):
set_perpetual_inventory()
self.assertEqual(cint(webnotes.defaults.get_global_default("auto_accounting_for_stock")), 1)
pi = webnotes.bean(copy=test_records[1])
pi.doclist[1].item_code = "_Test Non Stock Item"
pi.doclist[1].expense_head = "_Test Account Cost for Goods Sold - _TC"
pi.doclist.pop(2)
pi.doclist.pop(3)
pi.run_method("calculate_taxes_and_totals")
pi.insert()
pi.submit()
gl_entries = webnotes.conn.sql("""select account, debit, credit
from `tabGL Entry` where voucher_type='Purchase Invoice' and voucher_no=%s
order by account asc""", pi.doc.name, as_dict=1)
self.assertTrue(gl_entries)
expected_values = sorted([
["_Test Supplier - _TC", 0, 620],
["_Test Account Cost for Goods Sold - _TC", 500.0, 0],
["_Test Account VAT - _TC", 120.0, 0],
])
for i, gle in enumerate(gl_entries):
self.assertEquals(expected_values[i][0], gle.account)
self.assertEquals(expected_values[i][1], gle.debit)
self.assertEquals(expected_values[i][2], gle.credit)
set_perpetual_inventory(0)
def test_purchase_invoice_calculation(self):
wrapper = webnotes.bean(copy=test_records[0])
wrapper.run_method("calculate_taxes_and_totals")
wrapper.insert()
wrapper.load_from_db()
expected_values = [
["_Test Item Home Desktop 100", 90, 59],
["_Test Item Home Desktop 200", 135, 177]
]
for i, item in enumerate(wrapper.doclist.get({"parentfield": "entries"})):
self.assertEqual(item.item_code, expected_values[i][0])
self.assertEqual(item.item_tax_amount, expected_values[i][1])
self.assertEqual(item.valuation_rate, expected_values[i][2])
self.assertEqual(wrapper.doclist[0].net_total, 1250)
# tax amounts
expected_values = [
["_Test Account Shipping Charges - _TC", 100, 1350],
["_Test Account Customs Duty - _TC", 125, 1350],
["_Test Account Excise Duty - _TC", 140, 1490],
["_Test Account Education Cess - _TC", 2.8, 1492.8],
["_Test Account S&H Education Cess - _TC", 1.4, 1494.2],
["_Test Account CST - _TC", 29.88, 1524.08],
["_Test Account VAT - _TC", 156.25, 1680.33],
["_Test Account Discount - _TC", 168.03, 1512.30],
]
for i, tax in enumerate(wrapper.doclist.get({"parentfield": "purchase_tax_details"})):
self.assertEqual(tax.account_head, expected_values[i][0])
self.assertEqual(tax.tax_amount, expected_values[i][1])
self.assertEqual(tax.total, expected_values[i][2])
def test_purchase_invoice_with_subcontracted_item(self):
wrapper = webnotes.bean(copy=test_records[0])
wrapper.doclist[1].item_code = "_Test FG Item"
wrapper.run_method("calculate_taxes_and_totals")
wrapper.insert()
wrapper.load_from_db()
expected_values = [
["_Test FG Item", 90, 7059],
["_Test Item Home Desktop 200", 135, 177]
]
for i, item in enumerate(wrapper.doclist.get({"parentfield": "entries"})):
self.assertEqual(item.item_code, expected_values[i][0])
self.assertEqual(item.item_tax_amount, expected_values[i][1])
self.assertEqual(item.valuation_rate, expected_values[i][2])
self.assertEqual(wrapper.doclist[0].net_total, 1250)
# tax amounts
expected_values = [
["_Test Account Shipping Charges - _TC", 100, 1350],
["_Test Account Customs Duty - _TC", 125, 1350],
["_Test Account Excise Duty - _TC", 140, 1490],
["_Test Account Education Cess - _TC", 2.8, 1492.8],
["_Test Account S&H Education Cess - _TC", 1.4, 1494.2],
["_Test Account CST - _TC", 29.88, 1524.08],
["_Test Account VAT - _TC", 156.25, 1680.33],
["_Test Account Discount - _TC", 168.03, 1512.30],
]
for i, tax in enumerate(wrapper.doclist.get({"parentfield": "purchase_tax_details"})):
self.assertEqual(tax.account_head, expected_values[i][0])
self.assertEqual(tax.tax_amount, expected_values[i][1])
self.assertEqual(tax.total, expected_values[i][2])
def test_purchase_invoice_with_advance(self):
from accounts.doctype.journal_voucher.test_journal_voucher \
import test_records as jv_test_records
jv = webnotes.bean(copy=jv_test_records[1])
jv.insert()
jv.submit()
pi = webnotes.bean(copy=test_records[0])
pi.doclist.append({
"doctype": "Purchase Invoice Advance",
"parentfield": "advance_allocation_details",
"journal_voucher": jv.doc.name,
"jv_detail_no": jv.doclist[1].name,
"advance_amount": 400,
"allocated_amount": 300,
"remarks": jv.doc.remark
})
pi.run_method("calculate_taxes_and_totals")
pi.insert()
pi.submit()
pi.load_from_db()
self.assertTrue(webnotes.conn.sql("""select name from `tabJournal Voucher Detail`
where against_voucher=%s""", pi.doc.name))
self.assertTrue(webnotes.conn.sql("""select name from `tabJournal Voucher Detail`
where against_voucher=%s and debit=300""", pi.doc.name))
self.assertEqual(pi.doc.outstanding_amount, 1212.30)
pi.cancel()
self.assertTrue(not webnotes.conn.sql("""select name from `tabJournal Voucher Detail`
where against_voucher=%s""", pi.doc.name))
test_records = [
[
# parent
{
"doctype": "Purchase Invoice",
"naming_series": "BILL",
"supplier_name": "_Test Supplier",
"credit_to": "_Test Supplier - _TC",
"bill_no": "NA",
"posting_date": "2013-02-03",
"fiscal_year": "_Test Fiscal Year 2013",
"company": "_Test Company",
"currency": "INR",
"conversion_rate": 1,
"grand_total_import": 0 # for feed
},
# items
{
"doctype": "Purchase Invoice Item",
"parentfield": "entries",
"item_code": "_Test Item Home Desktop 100",
"item_name": "_Test Item Home Desktop 100",
"qty": 10,
"import_rate": 50,
"import_amount": 500,
"rate": 50,
"amount": 500,
"uom": "_Test UOM",
"item_tax_rate": json.dumps({"_Test Account Excise Duty - _TC": 10}),
"expense_head": "_Test Account Cost for Goods Sold - _TC",
"cost_center": "_Test Cost Center - _TC",
"conversion_factor": 1.0,
},
{
"doctype": "Purchase Invoice Item",
"parentfield": "entries",
"item_code": "_Test Item Home Desktop 200",
"item_name": "_Test Item Home Desktop 200",
"qty": 5,
"import_rate": 150,
"import_amount": 750,
"rate": 150,
"amount": 750,
"uom": "_Test UOM",
"expense_head": "_Test Account Cost for Goods Sold - _TC",
"cost_center": "_Test Cost Center - _TC",
"conversion_factor": 1.0,
},
# taxes
{
"doctype": "Purchase Taxes and Charges",
"parentfield": "purchase_tax_details",
"charge_type": "Actual",
"account_head": "_Test Account Shipping Charges - _TC",
"cost_center": "_Test Cost Center - _TC",
"description": "Shipping Charges",
"category": "Valuation and Total",
"add_deduct_tax": "Add",
"rate": 100
},
{
"doctype": "Purchase Taxes and Charges",
"parentfield": "purchase_tax_details",
"charge_type": "On Net Total",
"account_head": "_Test Account Customs Duty - _TC",
"cost_center": "_Test Cost Center - _TC",
"description": "Customs Duty",
"category": "Valuation",
"add_deduct_tax": "Add",
"rate": 10
},
{
"doctype": "Purchase Taxes and Charges",
"parentfield": "purchase_tax_details",
"charge_type": "On Net Total",
"account_head": "_Test Account Excise Duty - _TC",
"cost_center": "_Test Cost Center - _TC",
"description": "Excise Duty",
"category": "Total",
"add_deduct_tax": "Add",
"rate": 12
},
{
"doctype": "Purchase Taxes and Charges",
"parentfield": "purchase_tax_details",
"charge_type": "On Previous Row Amount",
"account_head": "_Test Account Education Cess - _TC",
"cost_center": "_Test Cost Center - _TC",
"description": "Education Cess",
"category": "Total",
"add_deduct_tax": "Add",
"rate": 2,
"row_id": 3
},
{
"doctype": "Purchase Taxes and Charges",
"parentfield": "purchase_tax_details",
"charge_type": "On Previous Row Amount",
"account_head": "_Test Account S&H Education Cess - _TC",
"cost_center": "_Test Cost Center - _TC",
"description": "S&H Education Cess",
"category": "Total",
"add_deduct_tax": "Add",
"rate": 1,
"row_id": 3
},
{
"doctype": "Purchase Taxes and Charges",
"parentfield": "purchase_tax_details",
"charge_type": "On Previous Row Total",
"account_head": "_Test Account CST - _TC",
"cost_center": "_Test Cost Center - _TC",
"description": "CST",
"category": "Total",
"add_deduct_tax": "Add",
"rate": 2,
"row_id": 5
},
{
"doctype": "Purchase Taxes and Charges",
"parentfield": "purchase_tax_details",
"charge_type": "On Net Total",
"account_head": "_Test Account VAT - _TC",
"cost_center": "_Test Cost Center - _TC",
"description": "VAT",
"category": "Total",
"add_deduct_tax": "Add",
"rate": 12.5
},
{
"doctype": "Purchase Taxes and Charges",
"parentfield": "purchase_tax_details",
"charge_type": "On Previous Row Total",
"account_head": "_Test Account Discount - _TC",
"cost_center": "_Test Cost Center - _TC",
"description": "Discount",
"category": "Total",
"add_deduct_tax": "Deduct",
"rate": 10,
"row_id": 7
},
],
[
# parent
{
"doctype": "Purchase Invoice",
"naming_series": "_T-Purchase Invoice-",
"supplier_name": "_Test Supplier",
"credit_to": "_Test Supplier - _TC",
"bill_no": "NA",
"posting_date": "2013-02-03",
"fiscal_year": "_Test Fiscal Year 2013",
"company": "_Test Company",
"currency": "INR",
"conversion_rate": 1.0,
"grand_total_import": 0 # for feed
},
# items
{
"doctype": "Purchase Invoice Item",
"parentfield": "entries",
"item_code": "_Test Item",
"item_name": "_Test Item",
"qty": 10.0,
"import_rate": 50.0,
"uom": "_Test UOM",
"expense_head": "_Test Account Cost for Goods Sold - _TC",
"cost_center": "_Test Cost Center - _TC",
"conversion_factor": 1.0,
},
# taxes
{
"doctype": "Purchase Taxes and Charges",
"parentfield": "purchase_tax_details",
"charge_type": "Actual",
"account_head": "_Test Account Shipping Charges - _TC",
"cost_center": "_Test Cost Center - _TC",
"description": "Shipping Charges",
"category": "Valuation and Total",
"add_deduct_tax": "Add",
"rate": 100.0
},
{
"doctype": "Purchase Taxes and Charges",
"parentfield": "purchase_tax_details",
"charge_type": "Actual",
"account_head": "_Test Account VAT - _TC",
"cost_center": "_Test Cost Center - _TC",
"description": "VAT",
"category": "Total",
"add_deduct_tax": "Add",
"rate": 120.0
},
{
"doctype": "Purchase Taxes and Charges",
"parentfield": "purchase_tax_details",
"charge_type": "Actual",
"account_head": "_Test Account Customs Duty - _TC",
"cost_center": "_Test Cost Center - _TC",
"description": "Customs Duty",
"category": "Valuation",
"add_deduct_tax": "Add",
"rate": 150.0
},
]
]

View File

@@ -1,9 +0,0 @@
# Copyright (c) 2013, Web Notes Technologies Pvt. Ltd. and Contributors
# License: GNU General Public License v3. See license.txt
from __future__ import unicode_literals
import webnotes
class DocType:
def __init__(self, d, dl):
self.doc, self.doclist = d, dl

View File

@@ -1,92 +0,0 @@
[
{
"creation": "2013-03-08 15:36:46",
"docstatus": 0,
"modified": "2013-07-10 14:54:12",
"modified_by": "Administrator",
"owner": "Administrator"
},
{
"doctype": "DocType",
"istable": 1,
"module": "Accounts",
"name": "__common__"
},
{
"doctype": "DocField",
"name": "__common__",
"no_copy": 1,
"parent": "Purchase Invoice Advance",
"parentfield": "fields",
"parenttype": "DocType",
"permlevel": 0
},
{
"doctype": "DocType",
"name": "Purchase Invoice Advance"
},
{
"doctype": "DocField",
"fieldname": "journal_voucher",
"fieldtype": "Link",
"in_list_view": 1,
"label": "Journal Voucher",
"oldfieldname": "journal_voucher",
"oldfieldtype": "Link",
"options": "Journal Voucher",
"print_width": "180px",
"read_only": 1,
"width": "180px"
},
{
"doctype": "DocField",
"fieldname": "jv_detail_no",
"fieldtype": "Data",
"hidden": 1,
"in_list_view": 0,
"label": "Journal Voucher Detail No",
"oldfieldname": "jv_detail_no",
"oldfieldtype": "Date",
"print_hide": 1,
"print_width": "80px",
"read_only": 1,
"width": "80px"
},
{
"doctype": "DocField",
"fieldname": "advance_amount",
"fieldtype": "Currency",
"in_list_view": 1,
"label": "Advance Amount",
"oldfieldname": "advance_amount",
"oldfieldtype": "Currency",
"options": "Company:company:default_currency",
"print_width": "100px",
"read_only": 1,
"width": "100px"
},
{
"doctype": "DocField",
"fieldname": "allocated_amount",
"fieldtype": "Currency",
"in_list_view": 1,
"label": "Allocated Amount",
"oldfieldname": "allocated_amount",
"oldfieldtype": "Currency",
"options": "Company:company:default_currency",
"print_width": "100px",
"width": "100px"
},
{
"doctype": "DocField",
"fieldname": "remarks",
"fieldtype": "Small Text",
"in_list_view": 1,
"label": "Remarks",
"oldfieldname": "remarks",
"oldfieldtype": "Small Text",
"print_width": "150px",
"read_only": 1,
"width": "150px"
}
]

View File

@@ -1,9 +0,0 @@
# Copyright (c) 2013, Web Notes Technologies Pvt. Ltd. and Contributors
# License: GNU General Public License v3. See license.txt
from __future__ import unicode_literals
import webnotes
class DocType:
def __init__(self, d, dl):
self.doc, self.doclist = d, dl

View File

@@ -1,394 +0,0 @@
[
{
"creation": "2013-05-22 12:43:10",
"docstatus": 0,
"modified": "2013-11-02 19:41:17",
"modified_by": "Administrator",
"owner": "Administrator"
},
{
"autoname": "EVD.######",
"doctype": "DocType",
"istable": 1,
"module": "Accounts",
"name": "__common__"
},
{
"doctype": "DocField",
"name": "__common__",
"parent": "Purchase Invoice Item",
"parentfield": "fields",
"parenttype": "DocType",
"permlevel": 0
},
{
"doctype": "DocType",
"name": "Purchase Invoice Item"
},
{
"doctype": "DocField",
"fieldname": "item_code",
"fieldtype": "Link",
"in_filter": 1,
"in_list_view": 0,
"label": "Item",
"oldfieldname": "item_code",
"oldfieldtype": "Link",
"options": "Item",
"print_hide": 1,
"read_only": 0,
"reqd": 0,
"search_index": 1
},
{
"doctype": "DocField",
"fieldname": "item_name",
"fieldtype": "Data",
"in_filter": 0,
"in_list_view": 1,
"label": "Item Name",
"oldfieldname": "item_name",
"oldfieldtype": "Data",
"read_only": 0,
"reqd": 1,
"search_index": 0
},
{
"doctype": "DocField",
"fieldname": "description",
"fieldtype": "Text",
"in_list_view": 1,
"label": "Description",
"oldfieldname": "description",
"oldfieldtype": "Text",
"print_width": "300px",
"read_only": 0,
"width": "300px"
},
{
"doctype": "DocField",
"fieldname": "quantity_and_rate",
"fieldtype": "Section Break",
"in_list_view": 0,
"label": "Quantity and Rate"
},
{
"doctype": "DocField",
"fieldname": "qty",
"fieldtype": "Float",
"in_list_view": 1,
"label": "Qty",
"oldfieldname": "qty",
"oldfieldtype": "Currency",
"print_hide": 0,
"read_only": 0,
"reqd": 1
},
{
"doctype": "DocField",
"fieldname": "uom",
"fieldtype": "Link",
"in_list_view": 0,
"label": "UOM",
"options": "UOM",
"print_hide": 1,
"read_only": 0
},
{
"doctype": "DocField",
"fieldname": "import_ref_rate",
"fieldtype": "Currency",
"in_list_view": 0,
"label": "Price List Rate",
"options": "currency",
"print_hide": 1,
"read_only": 0
},
{
"doctype": "DocField",
"fieldname": "discount_rate",
"fieldtype": "Float",
"in_list_view": 0,
"label": "Discount %",
"print_hide": 0,
"read_only": 0
},
{
"doctype": "DocField",
"fieldname": "import_rate",
"fieldtype": "Currency",
"in_list_view": 1,
"label": "Rate ",
"oldfieldname": "import_rate",
"oldfieldtype": "Currency",
"options": "currency",
"print_hide": 0,
"read_only": 0,
"reqd": 1
},
{
"doctype": "DocField",
"fieldname": "import_amount",
"fieldtype": "Currency",
"in_list_view": 1,
"label": "Amount",
"oldfieldname": "import_amount",
"oldfieldtype": "Currency",
"options": "currency",
"read_only": 1,
"reqd": 1
},
{
"doctype": "DocField",
"fieldname": "purchase_ref_rate",
"fieldtype": "Currency",
"in_list_view": 0,
"label": "Price List Rate (Company Currency)",
"options": "Company:company:default_currency",
"print_hide": 1,
"read_only": 0
},
{
"doctype": "DocField",
"fieldname": "rate",
"fieldtype": "Currency",
"in_list_view": 0,
"label": "Rate (Company Currency)",
"oldfieldname": "rate",
"oldfieldtype": "Currency",
"options": "Company:company:default_currency",
"print_hide": 1,
"read_only": 0,
"reqd": 1
},
{
"doctype": "DocField",
"fieldname": "amount",
"fieldtype": "Currency",
"in_list_view": 0,
"label": "Amount (Company Currency)",
"oldfieldname": "amount",
"oldfieldtype": "Currency",
"options": "Company:company:default_currency",
"print_hide": 1,
"read_only": 1,
"reqd": 1
},
{
"doctype": "DocField",
"fieldname": "accounting",
"fieldtype": "Section Break",
"in_list_view": 0,
"label": "Accounting"
},
{
"doctype": "DocField",
"fieldname": "expense_head",
"fieldtype": "Link",
"in_list_view": 0,
"label": "Expense Head",
"oldfieldname": "expense_head",
"oldfieldtype": "Link",
"options": "Account",
"print_hide": 1,
"print_width": "120px",
"read_only": 0,
"reqd": 0,
"width": "120px"
},
{
"default": ":Company",
"doctype": "DocField",
"fieldname": "cost_center",
"fieldtype": "Link",
"in_list_view": 0,
"label": "Cost Center",
"oldfieldname": "cost_center",
"oldfieldtype": "Link",
"options": "Cost Center",
"print_hide": 1,
"print_width": "120px",
"read_only": 0,
"width": "120px"
},
{
"doctype": "DocField",
"fieldname": "reference",
"fieldtype": "Section Break",
"in_list_view": 0,
"label": "Reference"
},
{
"doctype": "DocField",
"fieldname": "project_name",
"fieldtype": "Link",
"in_filter": 1,
"in_list_view": 0,
"label": "Project Name",
"options": "Project",
"print_hide": 1,
"read_only": 0
},
{
"doctype": "DocField",
"fieldname": "brand",
"fieldtype": "Data",
"hidden": 1,
"in_list_view": 0,
"label": "Brand",
"oldfieldname": "brand",
"oldfieldtype": "Data",
"print_hide": 1,
"read_only": 0
},
{
"description": "<a href=\"#Sales Browser/Item Group\">Add / Edit</a>",
"doctype": "DocField",
"fieldname": "item_group",
"fieldtype": "Link",
"hidden": 1,
"in_filter": 1,
"in_list_view": 0,
"label": "Item Group",
"oldfieldname": "item_group",
"oldfieldtype": "Link",
"options": "Item Group",
"print_hide": 1,
"read_only": 1,
"search_index": 1
},
{
"doctype": "DocField",
"fieldname": "purchase_order",
"fieldtype": "Link",
"in_filter": 1,
"in_list_view": 0,
"label": "Purchase Order",
"no_copy": 1,
"oldfieldname": "purchase_order",
"oldfieldtype": "Link",
"options": "Purchase Order",
"print_hide": 1,
"read_only": 1,
"search_index": 1
},
{
"doctype": "DocField",
"fieldname": "po_detail",
"fieldtype": "Data",
"hidden": 1,
"in_filter": 1,
"in_list_view": 0,
"label": "Purchase Order Item",
"no_copy": 1,
"oldfieldname": "po_detail",
"oldfieldtype": "Data",
"print_hide": 1,
"read_only": 1,
"search_index": 1
},
{
"doctype": "DocField",
"fieldname": "purchase_receipt",
"fieldtype": "Link",
"in_filter": 1,
"in_list_view": 0,
"label": "Purchase Receipt",
"no_copy": 1,
"oldfieldname": "purchase_receipt",
"oldfieldtype": "Link",
"options": "Purchase Receipt",
"print_hide": 1,
"read_only": 1,
"search_index": 1
},
{
"doctype": "DocField",
"fieldname": "pr_detail",
"fieldtype": "Data",
"hidden": 1,
"in_filter": 1,
"in_list_view": 0,
"label": "PR Detail",
"no_copy": 1,
"oldfieldname": "pr_detail",
"oldfieldtype": "Data",
"print_hide": 1,
"read_only": 1,
"search_index": 1
},
{
"description": "Tax detail table fetched from item master as a string and stored in this field.\nUsed for Taxes and Charges",
"doctype": "DocField",
"fieldname": "item_tax_rate",
"fieldtype": "Small Text",
"hidden": 1,
"in_list_view": 0,
"label": "Item Tax Rate",
"oldfieldname": "item_tax_rate",
"oldfieldtype": "Small Text",
"print_hide": 1,
"read_only": 1,
"report_hide": 1
},
{
"doctype": "DocField",
"fieldname": "item_tax_amount",
"fieldtype": "Currency",
"hidden": 1,
"in_list_view": 0,
"label": "Item Tax Amount",
"no_copy": 1,
"options": "Company:company:default_currency",
"print_hide": 1,
"print_width": "150px",
"read_only": 1,
"search_index": 0,
"width": "150px"
},
{
"doctype": "DocField",
"fieldname": "valuation_rate",
"fieldtype": "Currency",
"hidden": 1,
"in_list_view": 0,
"label": "Valuation Rate",
"no_copy": 1,
"options": "Company:company:default_currency",
"print_hide": 1,
"read_only": 1
},
{
"doctype": "DocField",
"fieldname": "conversion_factor",
"fieldtype": "Float",
"in_list_view": 0,
"label": "Conversion Factor",
"print_hide": 1,
"read_only": 0
},
{
"doctype": "DocField",
"fieldname": "rm_supp_cost",
"fieldtype": "Currency",
"hidden": 1,
"in_list_view": 0,
"label": "Raw Materials Supplied Cost",
"no_copy": 1,
"options": "Company:company:default_currency",
"print_hide": 1,
"read_only": 1
},
{
"allow_on_submit": 1,
"doctype": "DocField",
"fieldname": "page_break",
"fieldtype": "Check",
"in_list_view": 0,
"label": "Page Break",
"no_copy": 1,
"print_hide": 1,
"read_only": 0,
"report_hide": 1
}
]

View File

@@ -1,9 +0,0 @@
# Copyright (c) 2013, Web Notes Technologies Pvt. Ltd. and Contributors
# License: GNU General Public License v3. See license.txt
from __future__ import unicode_literals
import webnotes
class DocType:
def __init__(self, d, dl):
self.doc, self.doclist = d, dl

View File

@@ -1,169 +0,0 @@
[
{
"creation": "2013-05-21 16:16:04",
"docstatus": 0,
"modified": "2013-07-10 14:54:18",
"modified_by": "Administrator",
"owner": "Administrator"
},
{
"autoname": "PVTD.######",
"doctype": "DocType",
"hide_heading": 1,
"istable": 1,
"module": "Accounts",
"name": "__common__"
},
{
"doctype": "DocField",
"name": "__common__",
"parent": "Purchase Taxes and Charges",
"parentfield": "fields",
"parenttype": "DocType",
"permlevel": 0
},
{
"doctype": "DocType",
"name": "Purchase Taxes and Charges"
},
{
"default": "Valuation and Total",
"doctype": "DocField",
"fieldname": "category",
"fieldtype": "Select",
"in_list_view": 1,
"label": "Consider Tax or Charge for",
"oldfieldname": "category",
"oldfieldtype": "Select",
"options": "Valuation and Total\nValuation\nTotal",
"read_only": 0,
"reqd": 1
},
{
"doctype": "DocField",
"fieldname": "charge_type",
"fieldtype": "Select",
"in_list_view": 1,
"label": "Type",
"oldfieldname": "charge_type",
"oldfieldtype": "Select",
"options": "\nActual\nOn Net Total\nOn Previous Row Amount\nOn Previous Row Total",
"read_only": 0,
"reqd": 1
},
{
"doctype": "DocField",
"fieldname": "account_head",
"fieldtype": "Link",
"in_list_view": 1,
"label": "Account Head",
"oldfieldname": "account_head",
"oldfieldtype": "Link",
"options": "Account",
"read_only": 0,
"reqd": 1
},
{
"default": ":Company",
"doctype": "DocField",
"fieldname": "cost_center",
"fieldtype": "Link",
"in_list_view": 1,
"label": "Cost Center",
"oldfieldname": "cost_center",
"oldfieldtype": "Link",
"options": "Cost Center",
"read_only": 0
},
{
"doctype": "DocField",
"fieldname": "description",
"fieldtype": "Small Text",
"in_list_view": 1,
"label": "Description",
"oldfieldname": "description",
"oldfieldtype": "Small Text",
"print_width": "300px",
"read_only": 0,
"reqd": 1,
"width": "300px"
},
{
"doctype": "DocField",
"fieldname": "rate",
"fieldtype": "Float",
"in_list_view": 1,
"label": "Rate",
"oldfieldname": "rate",
"oldfieldtype": "Currency",
"read_only": 0,
"reqd": 0
},
{
"doctype": "DocField",
"fieldname": "tax_amount",
"fieldtype": "Currency",
"label": "Amount",
"oldfieldname": "tax_amount",
"oldfieldtype": "Currency",
"options": "Company:company:default_currency",
"read_only": 1,
"reqd": 0
},
{
"doctype": "DocField",
"fieldname": "total",
"fieldtype": "Currency",
"label": "Total",
"oldfieldname": "total",
"oldfieldtype": "Currency",
"options": "Company:company:default_currency",
"read_only": 1
},
{
"doctype": "DocField",
"fieldname": "row_id",
"fieldtype": "Data",
"hidden": 0,
"label": "Enter Row",
"oldfieldname": "row_id",
"oldfieldtype": "Data",
"read_only": 0
},
{
"default": "Add",
"doctype": "DocField",
"fieldname": "add_deduct_tax",
"fieldtype": "Select",
"label": "Add or Deduct",
"oldfieldname": "add_deduct_tax",
"oldfieldtype": "Select",
"options": "Add\nDeduct",
"read_only": 0,
"reqd": 1
},
{
"doctype": "DocField",
"fieldname": "item_wise_tax_detail",
"fieldtype": "Small Text",
"hidden": 1,
"label": "Item Wise Tax Detail ",
"oldfieldname": "item_wise_tax_detail",
"oldfieldtype": "Small Text",
"print_hide": 1,
"read_only": 1
},
{
"doctype": "DocField",
"fieldname": "parenttype",
"fieldtype": "Data",
"hidden": 1,
"in_filter": 1,
"label": "Parenttype",
"oldfieldname": "parenttype",
"oldfieldtype": "Data",
"print_hide": 1,
"read_only": 0,
"search_index": 0
}
]

View File

@@ -1,182 +0,0 @@
// Copyright (c) 2013, Web Notes Technologies Pvt. Ltd. and Contributors
// License: GNU General Public License v3. See license.txt
//
//--------- ONLOAD -------------
wn.require("app/js/controllers/accounts.js");
cur_frm.cscript.onload = function(doc, cdt, cdn) {
}
cur_frm.cscript.refresh = function(doc, cdt, cdn) {
cur_frm.set_footnote(wn.markdown(cur_frm.meta.description));
}
// For customizing print
cur_frm.pformat.net_total_import = function(doc) {
return '';
}
cur_frm.pformat.grand_total_import = function(doc) {
return '';
}
cur_frm.pformat.in_words_import = function(doc) {
return '';
}
cur_frm.pformat.purchase_tax_details= function(doc){
//function to make row of table
var make_row = function(title,val,bold){
var bstart = '<b>'; var bend = '</b>';
return '<tr><td style="width:50%;">'+(bold?bstart:'')+title+(bold?bend:'')+'</td>'
+'<td style="width:25%;text-align:right;"></td>'
+'<td style="width:25%;text-align:right;">'+format_currency(val, doc.currency)+'</td>'
+'</tr>'
}
function convert_rate(val){
var new_val = flt(val)/flt(doc.conversion_rate);
return new_val;
}
function print_hide(fieldname) {
var doc_field = wn.meta.get_docfield(doc.doctype, fieldname, doc.name);
return doc_field.print_hide;
}
var cl = getchildren('Purchase Taxes and Charges',doc.name,'purchase_tax_details');
// outer table
var out='<div><table class="noborder" style="width:100%">\
<tr><td style="width: 60%"></td><td>';
// main table
out +='<table class="noborder" style="width:100%">';
if(!print_hide('net_total_import')) {
out += make_row('Net Total', doc.net_total_import, 1);
}
// add rows
if(cl.length){
for(var i=0;i<cl.length;i++){
out += make_row(cl[i].description,convert_rate(cl[i].tax_amount),0);
}
}
// grand total
if(!print_hide('grand_total_import')) {
out += make_row('Grand Total', doc.grand_total_import, 1);
}
if(doc.in_words_import && !print_hide('in_words_import')){
out +='</table></td></tr>';
out += '<tr><td colspan = "2">';
out += '<table><tr><td style="width:25%;"><b>In Words</b></td>';
out+= '<td style="width:50%;">'+doc.in_words_import+'</td></tr>';
}
out +='</table></td></tr></table></div>';
return out;
}
cur_frm.cscript.add_deduct_tax = function(doc, cdt, cdn) {
var d = locals[cdt][cdn];
if(!d.category && d.add_deduct_tax){
alert(wn._("Please select Category first"));
d.add_deduct_tax = '';
}
else if(d.category != 'Total' && d.add_deduct_tax == 'Deduct') {
console.log([d.category, d.add_deduct_tax]);
msgprint(wn._("You cannot deduct when category is for 'Valuation' or 'Valuation and Total'"));
d.add_deduct_tax = '';
}
}
cur_frm.cscript.charge_type = function(doc, cdt, cdn) {
var d = locals[cdt][cdn];
if(!d.category && d.charge_type){
alert(wn._("Please select Category first"));
d.charge_type = '';
}
else if(d.idx == 1 && (d.charge_type == 'On Previous Row Amount' || d.charge_type == 'On Previous Row Total')){
alert(wn._("You cannot select Charge Type as 'On Previous Row Amount' or 'On Previous Row Total' for first row"));
d.charge_type = '';
}
else if((d.category == 'Valuation' || d.category == 'Valuation and Total') && (d.charge_type == 'On Previous Row Amount' || d.charge_type == 'On Previous Row Total')){
alert(wn._("You cannot select charge type as 'On Previous Row Amount' or 'On Previous Row Total' for valuation. You can select only 'Total' option for previous row amount or previous row total"))
d.charge_type = '';
}
validated = false;
refresh_field('charge_type',d.name,'purchase_tax_details');
cur_frm.cscript.row_id(doc, cdt, cdn);
cur_frm.cscript.rate(doc, cdt, cdn);
cur_frm.cscript.tax_amount(doc, cdt, cdn);
}
cur_frm.cscript.row_id = function(doc, cdt, cdn) {
var d = locals[cdt][cdn];
if(!d.charge_type && d.row_id){
alert(wn._("Please select Charge Type first"));
d.row_id = '';
}
else if((d.charge_type == 'Actual' || d.charge_type == 'On Net Total') && d.row_id) {
alert(wn._("You can Enter Row only if your Charge Type is 'On Previous Row Amount' or ' Previous Row Total'"));
d.row_id = '';
}
else if((d.charge_type == 'On Previous Row Amount' || d.charge_type == 'On Previous Row Total') && d.row_id){
if(d.row_id >= d.idx){
alert(wn._("You cannot Enter Row no. greater than or equal to current row no. for this Charge type"));
d.row_id = '';
}
}
validated = false;
refresh_field('row_id',d.name,'purchase_tax_details');
}
cur_frm.set_query("account_head", "purchase_tax_details", function(doc) {
return {
query: "controllers.queries.tax_account_query",
filters: {
"account_type": ["Tax", "Chargeable", "Expense Account"],
"debit_or_credit": "Debit",
"company": doc.company
}
}
});
cur_frm.fields_dict['purchase_tax_details'].grid.get_field("cost_center").get_query = function(doc) {
return {
filters: {
'company': doc.company,
'group_or_ledger': "Ledger"
}
}
}
cur_frm.cscript.rate = function(doc, cdt, cdn) {
var d = locals[cdt][cdn];
if(!d.charge_type && d.rate) {
alert(wn._("Please select Charge Type first"));
d.rate = '';
}
validated = false;
refresh_field('rate',d.name,'purchase_tax_details');
}
cur_frm.cscript.tax_amount = function(doc, cdt, cdn) {
var d = locals[cdt][cdn];
if(!d.charge_type && d.tax_amount){
alert(wn._("Please select Charge Type first"));
d.tax_amount = '';
}
else if(d.charge_type && d.tax_amount) {
alert(wn._("You cannot directly enter Amount and if your Charge Type is Actual enter your amount in Rate"));
d.tax_amount = '';
}
validated = false;
refresh_field('tax_amount',d.name,'purchase_tax_details');
}

View File

@@ -1,17 +0,0 @@
# Copyright (c) 2013, Web Notes Technologies Pvt. Ltd. and Contributors
# License: GNU General Public License v3. See license.txt
from __future__ import unicode_literals
import webnotes
from webnotes.model import db_exists
from webnotes.model.bean import copy_doclist
from webnotes.model.code import get_obj
class DocType:
def __init__(self, doc, doclist=[]):
self.doc = doc
self.doclist = doclist

View File

@@ -1,91 +0,0 @@
[
{
"creation": "2013-01-10 16:34:08",
"docstatus": 0,
"modified": "2013-07-22 15:22:25",
"modified_by": "Administrator",
"owner": "wasim@webnotestech.com"
},
{
"autoname": "field:title",
"description": "Standard tax template that can be applied to all Purchase Transactions. This template can contain list of tax heads and also other expense heads like \"Shipping\", \"Insurance\", \"Handling\" etc.\n\n#### Note\n\nThe tax rate you define here will be the standard tax rate for all **Items**. If there are **Items** that have different rates, they must be added in the **Item Tax** table in the **Item** master.\n\n#### Description of Columns\n\n1. Calculation Type: \n - This can be on **Net Total** (that is the sum of basic amount).\n - **On Previous Row Total / Amount** (for cumulative taxes or charges). If you select this option, the tax will be applied as a percentage of the previous row (in the tax table) amount or total.\n - **Actual** (as mentioned).\n2. Account Head: The Account ledger under which this tax will be booked\n3. Cost Center: If the tax / charge is an income (like shipping) or expense it needs to be booked against a Cost Center.\n4. Description: Description of the tax (that will be printed in invoices / quotes).\n5. Rate: Tax rate.\n6. Amount: Tax amount.\n7. Total: Cumulative total to this point.\n8. Enter Row: If based on \"Previous Row Total\" you can select the row number which will be taken as a base for this calculation (default is the previous row).\n9. Consider Tax or Charge for: In this section you can specify if the tax / charge is only for valuation (not a part of total) or only for total (does not add value to the item) or for both.\n10. Add or Deduct: Whether you want to add or deduct the tax.",
"doctype": "DocType",
"document_type": "Master",
"icon": "icon-money",
"module": "Accounts",
"name": "__common__"
},
{
"doctype": "DocField",
"name": "__common__",
"parent": "Purchase Taxes and Charges Master",
"parentfield": "fields",
"parenttype": "DocType",
"permlevel": 0
},
{
"doctype": "DocPerm",
"name": "__common__",
"parent": "Purchase Taxes and Charges Master",
"parentfield": "permissions",
"parenttype": "DocType",
"permlevel": 0,
"read": 1,
"report": 1,
"submit": 0
},
{
"doctype": "DocType",
"name": "Purchase Taxes and Charges Master"
},
{
"doctype": "DocField",
"fieldname": "title",
"fieldtype": "Data",
"in_filter": 1,
"label": "Title",
"oldfieldname": "title",
"oldfieldtype": "Data",
"reqd": 1,
"search_index": 0
},
{
"doctype": "DocField",
"fieldname": "is_default",
"fieldtype": "Check",
"label": "Default"
},
{
"doctype": "DocField",
"fieldname": "company",
"fieldtype": "Link",
"in_filter": 1,
"label": "Company",
"options": "Company",
"reqd": 1
},
{
"doctype": "DocField",
"fieldname": "purchase_tax_details",
"fieldtype": "Table",
"label": "Purchase Taxes and Charges",
"oldfieldname": "purchase_tax_details",
"oldfieldtype": "Table",
"options": "Purchase Taxes and Charges"
},
{
"amend": 0,
"cancel": 0,
"create": 0,
"doctype": "DocPerm",
"role": "Purchase Manager",
"write": 0
},
{
"cancel": 1,
"create": 1,
"doctype": "DocPerm",
"role": "Purchase Master Manager",
"write": 1
}
]

View File

@@ -1,541 +0,0 @@
// Copyright (c) 2013, Web Notes Technologies Pvt. Ltd. and Contributors
// License: GNU General Public License v3. See license.txt
erpnext.POS = Class.extend({
init: function(wrapper, frm) {
this.wrapper = wrapper;
this.frm = frm;
this.wrapper.html('<div class="container">\
<div class="row" style="margin: -9px 0px 10px -30px; border-bottom: 1px solid #c7c7c7;">\
<div class="party-area col-sm-3 col-xs-6"></div>\
<div class="barcode-area col-sm-3 col-xs-6"></div>\
<div class="search-area col-sm-3 col-xs-6"></div>\
<div class="item-group-area col-sm-3 col-xs-6"></div>\
</div>\
<div class="row">\
<div class="col-sm-6">\
<div class="pos-bill">\
<div class="item-cart">\
<table class="table table-condensed table-hover" id="cart" style="table-layout: fixed;">\
<thead>\
<tr>\
<th style="width: 50%">Item</th>\
<th style="width: 25%; text-align: right;">Qty</th>\
<th style="width: 25%; text-align: right;">Rate</th>\
</tr>\
</thead>\
<tbody>\
</tbody>\
</table>\
</div>\
<br>\
<div class="totals-area" style="margin-left: 40%;">\
<table class="table table-condensed">\
<tr>\
<td><b>Net Total</b></td>\
<td style="text-align: right;" class="net-total"></td>\
</tr>\
</table>\
<div class="tax-table" style="display: none;">\
<table class="table table-condensed">\
<thead>\
<tr>\
<th style="width: 60%">Taxes</th>\
<th style="width: 40%; text-align: right;"></th>\
</tr>\
</thead>\
<tbody>\
</tbody>\
</table>\
</div>\
<div class="grand-total-area">\
<table class="table table-condensed">\
<tr>\
<td style="vertical-align: middle;"><b>Grand Total</b></td>\
<td style="text-align: right; font-size: 200%; \
font-size: bold;" class="grand-total"></td>\
</tr>\
</table>\
</div>\
</div>\
</div>\
<br><br>\
<button class="btn btn-success btn-lg make-payment">\
<i class="icon-money"></i> Make Payment</button>\
<button class="btn btn-default btn-lg delete-items pull-right" style="display: none;">\
<i class="icon-trash"></i> Del</button>\
<br><br>\
</div>\
<div class="col-sm-6">\
<div class="item-list-area">\
<div class="col-sm-12">\
<div class="row item-list"></div></div>\
</div>\
</div>\
</div></div>');
this.check_transaction_type();
this.make();
var me = this;
$(this.frm.wrapper).on("refresh-fields", function() {
me.refresh();
});
this.call_function("delete-items", function() {me.remove_selected_item();});
this.call_function("make-payment", function() {me.make_payment();});
},
check_transaction_type: function() {
var me = this;
// Check whether the transaction is "Sales" or "Purchase"
if (wn.meta.has_field(cur_frm.doc.doctype, "customer")) {
this.set_transaction_defaults("Customer", "export");
}
else if (wn.meta.has_field(cur_frm.doc.doctype, "supplier")) {
this.set_transaction_defaults("Supplier", "import");
}
},
set_transaction_defaults: function(party, export_or_import) {
var me = this;
this.party = party;
this.price_list = (party == "Customer" ?
this.frm.doc.selling_price_list : this.frm.doc.buying_price_list);
this.sales_or_purchase = (party == "Customer" ? "Sales" : "Purchase");
this.net_total = "net_total_" + export_or_import;
this.grand_total = "grand_total_" + export_or_import;
this.amount = export_or_import + "_amount";
this.rate = export_or_import + "_rate";
},
call_function: function(class_name, fn, event_name) {
this.wrapper.find("." + class_name).on(event_name || "click", fn);
},
make: function() {
this.make_party();
this.make_item_group();
this.make_search();
this.make_barcode();
this.make_item_list();
},
make_party: function() {
var me = this;
this.party_field = wn.ui.form.make_control({
df: {
"fieldtype": "Link",
"options": this.party,
"label": this.party,
"fieldname": "pos_party",
"placeholder": this.party
},
parent: this.wrapper.find(".party-area"),
only_input: true,
});
this.party_field.make_input();
this.party_field.$input.on("change", function() {
if(!me.party_field.autocomplete_open)
wn.model.set_value(me.frm.doctype, me.frm.docname,
me.party.toLowerCase(), this.value);
});
},
make_item_group: function() {
var me = this;
this.item_group = wn.ui.form.make_control({
df: {
"fieldtype": "Link",
"options": "Item Group",
"label": "Item Group",
"fieldname": "pos_item_group",
"placeholder": "Item Group"
},
parent: this.wrapper.find(".item-group-area"),
only_input: true,
});
this.item_group.make_input();
this.item_group.$input.on("change", function() {
if(!me.item_group.autocomplete_open)
me.make_item_list();
});
},
make_search: function() {
var me = this;
this.search = wn.ui.form.make_control({
df: {
"fieldtype": "Data",
"label": "Item",
"fieldname": "pos_item",
"placeholder": "Search Item"
},
parent: this.wrapper.find(".search-area"),
only_input: true,
});
this.search.make_input();
this.search.$input.on("keypress", function() {
if(!me.search.autocomplete_open)
if(me.item_timeout)
clearTimeout(me.item_timeout);
me.item_timeout = setTimeout(function() { me.make_item_list(); }, 1000);
});
},
make_barcode: function() {
var me = this;
this.barcode = wn.ui.form.make_control({
df: {
"fieldtype": "Data",
"label": "Barcode",
"fieldname": "pos_barcode",
"placeholder": "Barcode / Serial No"
},
parent: this.wrapper.find(".barcode-area"),
only_input: true,
});
this.barcode.make_input();
this.barcode.$input.on("keypress", function() {
if(me.barcode_timeout)
clearTimeout(me.barcode_timeout);
me.barcode_timeout = setTimeout(function() { me.add_item_thru_barcode(); }, 1000);
});
},
make_item_list: function() {
var me = this;
me.item_timeout = null;
wn.call({
method: 'accounts.doctype.sales_invoice.pos.get_items',
args: {
sales_or_purchase: this.sales_or_purchase,
price_list: this.price_list,
item_group: this.item_group.$input.val(),
item: this.search.$input.val()
},
callback: function(r) {
var $wrap = me.wrapper.find(".item-list");
me.wrapper.find(".item-list").empty();
if (r.message) {
$.each(r.message, function(index, obj) {
if (obj.image)
image = '<img src="' + obj.image + '" class="img-responsive" \
style="border:1px solid #eee; max-height: 140px;">';
else
image = '<div class="missing-image"><i class="icon-camera"></i></div>';
$(repl('<div class="col-xs-3 pos-item" data-item_code="%(item_code)s">\
<div style="height: 140px; overflow: hidden;">%(item_image)s</div>\
<div class="small">%(item_code)s</div>\
<div class="small">%(item_name)s</div>\
<div class="small">%(item_price)s</div>\
</div>',
{
item_code: obj.name,
item_price: format_currency(obj.ref_rate, obj.currency),
item_name: obj.name===obj.item_name ? "" : obj.item_name,
item_image: image
})).appendTo($wrap);
});
}
// if form is local then allow this function
$(me.wrapper).find("div.pos-item").on("click", function() {
if(me.frm.doc.docstatus==0) {
if(!me.frm.doc[me.party.toLowerCase()] && ((me.frm.doctype == "Quotation" &&
me.frm.doc.quotation_to == "Customer")
|| me.frm.doctype != "Quotation")) {
msgprint("Please select " + me.party + " first.");
return;
}
else
me.add_to_cart($(this).attr("data-item_code"));
}
});
}
});
},
add_to_cart: function(item_code, serial_no) {
var me = this;
var caught = false;
// get no_of_items
var no_of_items = me.wrapper.find("#cart tbody tr").length;
// check whether the item is already added
if (no_of_items != 0) {
$.each(wn.model.get_children(this.frm.doctype + " Item", this.frm.doc.name,
this.frm.cscript.fname, this.frm.doctype), function(i, d) {
if (d.item_code == item_code) {
caught = true;
if (serial_no) {
d.serial_no += '\n' + serial_no;
me.frm.script_manager.trigger("serial_no", d.doctype, d.name);
}
else {
d.qty += 1;
me.frm.script_manager.trigger("qty", d.doctype, d.name);
}
}
});
}
// if item not found then add new item
if (!caught) {
this.add_new_item_to_grid(item_code, serial_no);
}
this.refresh();
this.refresh_search_box();
},
add_new_item_to_grid: function(item_code, serial_no) {
var me = this;
var child = wn.model.add_child(me.frm.doc, this.frm.doctype + " Item",
this.frm.cscript.fname);
child.item_code = item_code;
if (serial_no)
child.serial_no = serial_no;
this.frm.script_manager.trigger("item_code", child.doctype, child.name);
},
refresh_search_box: function() {
var me = this;
// Clear Item Box and remake item list
if (this.search.$input.val()) {
this.search.set_input("");
this.make_item_list();
}
},
update_qty: function(item_code, qty) {
var me = this;
$.each(wn.model.get_children(this.frm.doctype + " Item", this.frm.doc.name,
this.frm.cscript.fname, this.frm.doctype), function(i, d) {
if (d.item_code == item_code) {
if (qty == 0) {
wn.model.clear_doc(d.doctype, d.name);
me.refresh_grid();
} else {
d.qty = qty;
me.frm.script_manager.trigger("qty", d.doctype, d.name);
}
}
});
me.refresh();
},
refresh: function() {
var me = this;
this.party_field.set_input(this.frm.doc[this.party.toLowerCase()]);
this.barcode.set_input("");
this.show_items_in_item_cart();
this.show_taxes();
this.set_totals();
// if form is local then only run all these functions
if (this.frm.doc.docstatus===0) {
this.call_when_local();
}
this.disable_text_box_and_button();
this.make_payment_button();
// If quotation to is not Customer then remove party
if (this.frm.doctype == "Quotation") {
this.party_field.$wrapper.remove();
if (this.frm.doc.quotation_to == "Customer")
this.make_party();
}
},
show_items_in_item_cart: function() {
var me = this;
var $items = this.wrapper.find("#cart tbody").empty();
$.each(wn.model.get_children(this.frm.doctype + " Item", this.frm.doc.name,
this.frm.cscript.fname, this.frm.doctype), function(i, d) {
$(repl('<tr id="%(item_code)s" data-selected="false">\
<td>%(item_code)s%(item_name)s</td>\
<td><input type="text" value="%(qty)s" \
class="form-control qty" style="text-align: right;"></td>\
<td style="text-align: right;"><b>%(amount)s</b><br>%(rate)s</td>\
</tr>',
{
item_code: d.item_code,
item_name: d.item_name===d.item_code ? "" : ("<br>" + d.item_name),
qty: d.qty,
rate: format_currency(d[me.rate], me.frm.doc.currency),
amount: format_currency(d[me.amount], me.frm.doc.currency)
}
)).appendTo($items);
});
},
show_taxes: function() {
var me = this;
var taxes = wn.model.get_children(this.sales_or_purchase + " Taxes and Charges",
this.frm.doc.name, this.frm.cscript.other_fname, this.frm.doctype);
$(this.wrapper).find(".tax-table")
.toggle((taxes && taxes.length &&
flt(me.frm.doc.other_charges_total_export ||
me.frm.doc.other_charges_added_import) != 0.0) ? true : false)
.find("tbody").empty();
$.each(taxes, function(i, d) {
$(repl('<tr>\
<td>%(description)s %(rate)s</td>\
<td style="text-align: right;">%(tax_amount)s</td>\
<tr>', {
description: d.description,
rate: ((d.charge_type == "Actual") ? '' : ("(" + d.rate + "%)")),
tax_amount: format_currency(flt(d.tax_amount)/flt(me.frm.doc.conversion_rate),
me.frm.doc.currency)
})).appendTo(".tax-table tbody");
});
},
set_totals: function() {
var me = this;
this.wrapper.find(".net-total").text(format_currency(this.frm.doc[this.net_total],
me.frm.doc.currency));
this.wrapper.find(".grand-total").text(format_currency(this.frm.doc[this.grand_total],
me.frm.doc.currency));
},
call_when_local: function() {
var me = this;
// append quantity to the respective item after change from input box
$(this.wrapper).find("input.qty").on("change", function() {
var item_code = $(this).closest("tr")[0].id;
me.update_qty(item_code, $(this).val());
});
// on td click toggle the highlighting of row
$(this.wrapper).find("#cart tbody tr td").on("click", function() {
var row = $(this).closest("tr");
if (row.attr("data-selected") == "false") {
row.attr("class", "warning");
row.attr("data-selected", "true");
}
else {
row.prop("class", null);
row.attr("data-selected", "false");
}
me.refresh_delete_btn();
});
me.refresh_delete_btn();
this.barcode.$input.focus();
},
disable_text_box_and_button: function() {
var me = this;
// if form is submitted & cancelled then disable all input box & buttons
if (this.frm.doc.docstatus>=1) {
$(this.wrapper).find('input, button').each(function () {
$(this).prop('disabled', true);
});
$(this.wrapper).find(".delete-items").hide();
$(this.wrapper).find(".make-payment").hide();
}
else {
$(this.wrapper).find('input, button').each(function () {
$(this).prop('disabled', false);
});
$(this.wrapper).find(".make-payment").show();
}
},
make_payment_button: function() {
var me = this;
// Show Make Payment button only in Sales Invoice
if (this.frm.doctype != "Sales Invoice")
$(this.wrapper).find(".make-payment").hide();
},
refresh_delete_btn: function() {
$(this.wrapper).find(".delete-items").toggle($(".item-cart .warning").length ? true : false);
},
add_item_thru_barcode: function() {
var me = this;
me.barcode_timeout = null;
wn.call({
method: 'accounts.doctype.sales_invoice.pos.get_item_code',
args: {barcode_serial_no: this.barcode.$input.val()},
callback: function(r) {
if (r.message) {
if (r.message[1] == "serial_no")
me.add_to_cart(r.message[0][0].item_code, r.message[0][0].name);
else
me.add_to_cart(r.message[0][0].name);
}
else
msgprint(wn._("Invalid Barcode"));
me.refresh();
}
});
},
remove_selected_item: function() {
var me = this;
var selected_items = [];
var no_of_items = $(this.wrapper).find("#cart tbody tr").length;
for(var x=0; x<=no_of_items - 1; x++) {
var row = $(this.wrapper).find("#cart tbody tr:eq(" + x + ")");
if(row.attr("data-selected") == "true") {
selected_items.push(row.attr("id"));
}
}
var child = wn.model.get_children(this.frm.doctype + " Item", this.frm.doc.name,
this.frm.cscript.fname, this.frm.doctype);
$.each(child, function(i, d) {
for (var i in selected_items) {
if (d.item_code == selected_items[i]) {
wn.model.clear_doc(d.doctype, d.name);
}
}
});
this.refresh_grid();
},
refresh_grid: function() {
this.frm.fields_dict[this.frm.cscript.fname].grid.refresh();
this.frm.script_manager.trigger("calculate_taxes_and_totals");
this.refresh();
},
make_payment: function() {
var me = this;
var no_of_items = $(this.wrapper).find("#cart tbody tr").length;
var mode_of_payment = [];
if (no_of_items == 0)
msgprint(wn._("Payment cannot be made for empty cart"));
else {
wn.call({
method: 'accounts.doctype.sales_invoice.pos.get_mode_of_payment',
callback: function(r) {
for (x=0; x<=r.message.length - 1; x++) {
mode_of_payment.push(r.message[x].name);
}
// show payment wizard
var dialog = new wn.ui.Dialog({
width: 400,
title: 'Payment',
fields: [
{fieldtype:'Data', fieldname:'total_amount', label:'Total Amount', read_only:1},
{fieldtype:'Select', fieldname:'mode_of_payment', label:'Mode of Payment',
options:mode_of_payment.join('\n'), reqd: 1},
{fieldtype:'Button', fieldname:'pay', label:'Pay'}
]
});
dialog.set_values({
"total_amount": $(".grand-total").text()
});
dialog.show();
dialog.get_input("total_amount").prop("disabled", true);
dialog.fields_dict.pay.input.onclick = function() {
me.frm.set_value("mode_of_payment", dialog.get_values().mode_of_payment);
me.frm.set_value("paid_amount", dialog.get_values().total_amount);
me.frm.cscript.mode_of_payment(me.frm.doc);
me.frm.save();
dialog.hide();
me.refresh();
};
}
});
}
},
});

View File

@@ -1,52 +0,0 @@
# Copyright (c) 2013, Web Notes Technologies Pvt. Ltd. and Contributors
# License: GNU General Public License v3. See license.txt
from __future__ import unicode_literals
import webnotes
@webnotes.whitelist()
def get_items(price_list, sales_or_purchase, item=None, item_group=None):
condition = ""
args = {"price_list": price_list}
if sales_or_purchase == "Sales":
condition = "i.is_sales_item='Yes'"
else:
condition = "i.is_purchase_item='Yes'"
if item_group and item_group != "All Item Groups":
condition += " and i.item_group='%s'" % item_group
if item:
condition += " and CONCAT(i.name, i.item_name) like %(name)s"
args["name"] = "%%%s%%" % item
return webnotes.conn.sql("""select i.name, i.item_name, i.image,
item_det.ref_rate, item_det.currency
from `tabItem` i LEFT JOIN
(select item_code, ref_rate, currency from
`tabItem Price` where price_list=%s) item_det
ON
item_det.item_code=i.name
where
%s""" % ('%(price_list)s', condition), args, as_dict=1)
@webnotes.whitelist()
def get_item_code(barcode_serial_no):
input_via = "serial_no"
item_code = webnotes.conn.sql("""select name, item_code from `tabSerial No` where
name=%s""", (barcode_serial_no), as_dict=1)
if not item_code:
input_via = "barcode"
item_code = webnotes.conn.sql("""select name from `tabItem` where barcode=%s""",
(barcode_serial_no), as_dict=1)
if item_code:
return item_code, input_via
else:
webnotes.throw("Invalid Barcode / Serial No")
@webnotes.whitelist()
def get_mode_of_payment():
return webnotes.conn.sql("""select name from `tabMode of Payment`""", as_dict=1)

View File

@@ -1,425 +0,0 @@
// Copyright (c) 2013, Web Notes Technologies Pvt. Ltd. and Contributors
// License: GNU General Public License v3. See license.txt
cur_frm.cscript.tname = "Sales Invoice Item";
cur_frm.cscript.fname = "entries";
cur_frm.cscript.other_fname = "other_charges";
cur_frm.cscript.sales_team_fname = "sales_team";
// print heading
cur_frm.pformat.print_heading = 'Invoice';
wn.require('app/accounts/doctype/sales_taxes_and_charges_master/sales_taxes_and_charges_master.js');
wn.require('app/utilities/doctype/sms_control/sms_control.js');
wn.require('app/selling/sales_common.js');
wn.require('app/accounts/doctype/sales_invoice/pos.js');
wn.provide("erpnext.accounts");
erpnext.accounts.SalesInvoiceController = erpnext.selling.SellingController.extend({
onload: function() {
this._super();
if(!this.frm.doc.__islocal && !this.frm.doc.customer && this.frm.doc.debit_to) {
// show debit_to in print format
this.frm.set_df_property("debit_to", "print_hide", 0);
}
// toggle to pos view if is_pos is 1 in user_defaults
if ((cint(wn.defaults.get_user_defaults("is_pos"))===1 || cur_frm.doc.is_pos)) {
if(this.frm.doc.__islocal && !this.frm.doc.amended_from && !this.frm.doc.customer) {
this.frm.set_value("is_pos", 1);
this.is_pos(function() {
if (cint(wn.defaults.get_user_defaults("fs_pos_view"))===1)
cur_frm.cscript.toggle_pos(true);
});
}
}
// if document is POS then change default print format to "POS Invoice"
if(cur_frm.doc.is_pos && cur_frm.doc.docstatus===1) {
locals.DocType[cur_frm.doctype].default_print_format = "POS Invoice";
cur_frm.setup_print_layout();
}
},
refresh: function(doc, dt, dn) {
this._super();
cur_frm.cscript.is_opening(doc, dt, dn);
cur_frm.dashboard.reset();
if(doc.docstatus==1) {
cur_frm.appframe.add_button('View Ledger', function() {
wn.route_options = {
"voucher_no": doc.name,
"from_date": doc.posting_date,
"to_date": doc.posting_date,
};
wn.set_route("general-ledger");
}, "icon-table");
var percent_paid = cint(flt(doc.grand_total - doc.outstanding_amount) / flt(doc.grand_total) * 100);
cur_frm.dashboard.add_progress(percent_paid + "% Paid", percent_paid);
cur_frm.appframe.add_button(wn._('Send SMS'), cur_frm.cscript.send_sms, 'icon-mobile-phone');
if(cint(doc.update_stock)!=1) {
// show Make Delivery Note button only if Sales Invoice is not created from Delivery Note
var from_delivery_note = false;
from_delivery_note = cur_frm.get_doclist({parentfield: "entries"})
.some(function(item) {
return item.delivery_note ? true : false;
});
if(!from_delivery_note)
cur_frm.appframe.add_primary_action(wn._('Make Delivery'), cur_frm.cscript['Make Delivery Note'])
}
if(doc.outstanding_amount!=0)
cur_frm.appframe.add_primary_action(wn._('Make Payment Entry'), cur_frm.cscript.make_bank_voucher);
}
// Show buttons only when pos view is active
if (doc.docstatus===0 && !this.pos_active) {
cur_frm.cscript.sales_order_btn();
cur_frm.cscript.delivery_note_btn();
}
},
sales_order_btn: function() {
this.$sales_order_btn = cur_frm.appframe.add_primary_action(wn._('From Sales Order'),
function() {
wn.model.map_current_doc({
method: "selling.doctype.sales_order.sales_order.make_sales_invoice",
source_doctype: "Sales Order",
get_query_filters: {
docstatus: 1,
status: ["!=", "Stopped"],
per_billed: ["<", 99.99],
customer: cur_frm.doc.customer || undefined,
company: cur_frm.doc.company
}
})
});
},
delivery_note_btn: function() {
this.$delivery_note_btn = cur_frm.appframe.add_primary_action(wn._('From Delivery Note'),
function() {
wn.model.map_current_doc({
method: "stock.doctype.delivery_note.delivery_note.make_sales_invoice",
source_doctype: "Delivery Note",
get_query: function() {
var filters = {
company: cur_frm.doc.company
};
if(cur_frm.doc.customer) filters["customer"] = cur_frm.doc.customer;
return {
query: "controllers.queries.get_delivery_notes_to_be_billed",
filters: filters
};
}
});
});
},
tc_name: function() {
this.get_terms();
},
is_pos: function(callback_fn) {
cur_frm.cscript.hide_fields(this.frm.doc);
if(cint(this.frm.doc.is_pos)) {
if(!this.frm.doc.company) {
this.frm.set_value("is_pos", 0);
msgprint(wn._("Please specify Company to proceed"));
} else {
var me = this;
return this.frm.call({
doc: me.frm.doc,
method: "set_missing_values",
callback: function(r) {
if(!r.exc) {
me.frm.script_manager.trigger("update_stock");
me.set_default_values();
me.set_dynamic_labels();
me.calculate_taxes_and_totals();
if(callback_fn) callback_fn()
}
}
});
}
}
},
debit_to: function() {
this.customer();
},
allocated_amount: function() {
this.calculate_total_advance("Sales Invoice", "advance_adjustment_details");
this.frm.refresh_fields();
},
write_off_outstanding_amount_automatically: function() {
if(cint(this.frm.doc.write_off_outstanding_amount_automatically)) {
wn.model.round_floats_in(this.frm.doc, ["grand_total", "paid_amount"]);
// this will make outstanding amount 0
this.frm.set_value("write_off_amount",
flt(this.frm.doc.grand_total - this.frm.doc.paid_amount), precision("write_off_amount"));
}
this.frm.script_manager.trigger("write_off_amount");
},
write_off_amount: function() {
this.calculate_outstanding_amount();
this.frm.refresh_fields();
},
paid_amount: function() {
this.write_off_outstanding_amount_automatically();
},
entries_add: function(doc, cdt, cdn) {
var row = wn.model.get_doc(cdt, cdn);
this.frm.script_manager.copy_from_first_row("entries", row, ["income_account", "cost_center"]);
},
set_dynamic_labels: function() {
this._super();
this.hide_fields(this.frm.doc);
},
entries_on_form_rendered: function(doc, grid_row) {
erpnext.setup_serial_no(grid_row)
}
});
// for backward compatibility: combine new and previous states
$.extend(cur_frm.cscript, new erpnext.accounts.SalesInvoiceController({frm: cur_frm}));
// Hide Fields
// ------------
cur_frm.cscript.hide_fields = function(doc) {
par_flds = ['project_name', 'due_date', 'is_opening', 'source', 'total_advance', 'gross_profit',
'gross_profit_percent', 'get_advances_received',
'advance_adjustment_details', 'sales_partner', 'commission_rate',
'total_commission', 'advances'];
item_flds_normal = ['sales_order', 'delivery_note']
if(cint(doc.is_pos) == 1) {
hide_field(par_flds);
unhide_field('payments_section');
cur_frm.fields_dict['entries'].grid.set_column_disp(item_flds_normal, false);
} else {
hide_field('payments_section');
for (i in par_flds) {
var docfield = wn.meta.docfield_map[doc.doctype][par_flds[i]];
if(!docfield.hidden) unhide_field(par_flds[i]);
}
cur_frm.fields_dict['entries'].grid.set_column_disp(item_flds_normal, true);
}
item_flds_stock = ['serial_no', 'batch_no', 'actual_qty', 'expense_account', 'warehouse']
cur_frm.fields_dict['entries'].grid.set_column_disp(item_flds_stock,
(cint(doc.update_stock)==1 ? true : false));
// India related fields
var cp = wn.control_panel;
if (cp.country == 'India') unhide_field(['c_form_applicable', 'c_form_no']);
else hide_field(['c_form_applicable', 'c_form_no']);
cur_frm.refresh_fields();
}
cur_frm.cscript.mode_of_payment = function(doc) {
return cur_frm.call({
method: "get_bank_cash_account",
args: { mode_of_payment: doc.mode_of_payment }
});
}
cur_frm.cscript.update_stock = function(doc, dt, dn) {
cur_frm.cscript.hide_fields(doc, dt, dn);
}
cur_frm.cscript.is_opening = function(doc, dt, dn) {
hide_field('aging_date');
if (doc.is_opening == 'Yes') unhide_field('aging_date');
}
//Make Delivery Note Button
//-----------------------------
cur_frm.cscript['Make Delivery Note'] = function() {
wn.model.open_mapped_doc({
method: "accounts.doctype.sales_invoice.sales_invoice.make_delivery_note",
source_name: cur_frm.doc.name
})
}
cur_frm.cscript.make_bank_voucher = function() {
return wn.call({
method: "accounts.doctype.journal_voucher.journal_voucher.get_payment_entry_from_sales_invoice",
args: {
"sales_invoice": cur_frm.doc.name
},
callback: function(r) {
var doclist = wn.model.sync(r.message);
wn.set_route("Form", doclist[0].doctype, doclist[0].name);
}
});
}
cur_frm.fields_dict.debit_to.get_query = function(doc) {
return{
filters: {
'debit_or_credit': 'Debit',
'is_pl_account': 'No',
'group_or_ledger': 'Ledger',
'company': doc.company
}
}
}
cur_frm.fields_dict.cash_bank_account.get_query = function(doc) {
return{
filters: {
'debit_or_credit': 'Debit',
'is_pl_account': 'No',
'group_or_ledger': 'Ledger',
'company': doc.company
}
}
}
cur_frm.fields_dict.write_off_account.get_query = function(doc) {
return{
filters:{
'debit_or_credit': 'Debit',
'is_pl_account': 'Yes',
'group_or_ledger': 'Ledger',
'company': doc.company
}
}
}
// Write off cost center
//-----------------------
cur_frm.fields_dict.write_off_cost_center.get_query = function(doc) {
return{
filters:{
'group_or_ledger': 'Ledger',
'company': doc.company
}
}
}
//project name
//--------------------------
cur_frm.fields_dict['project_name'].get_query = function(doc, cdt, cdn) {
return{
query: "controllers.queries.get_project_name",
filters: {'customer': doc.customer}
}
}
// Income Account in Details Table
// --------------------------------
cur_frm.set_query("income_account", "entries", function(doc) {
return{
query: "accounts.doctype.sales_invoice.sales_invoice.get_income_account",
filters: {'company': doc.company}
}
});
// expense account
if (sys_defaults.auto_accounting_for_stock) {
cur_frm.fields_dict['entries'].grid.get_field('expense_account').get_query = function(doc) {
return {
filters: {
'is_pl_account': 'Yes',
'debit_or_credit': 'Debit',
'company': doc.company,
'group_or_ledger': 'Ledger'
}
}
}
}
// warehouse in detail table
//----------------------------
cur_frm.fields_dict['entries'].grid.get_field('warehouse').get_query = function(doc, cdt, cdn) {
var d = locals[cdt][cdn];
return{
filters:[
['Bin', 'item_code', '=', d.item_code],
['Bin', 'actual_qty', '>', 0]
]
}
}
// Cost Center in Details Table
// -----------------------------
cur_frm.fields_dict["entries"].grid.get_field("cost_center").get_query = function(doc) {
return {
filters: {
'company': doc.company,
'group_or_ledger': 'Ledger'
}
}
}
cur_frm.cscript.income_account = function(doc, cdt, cdn) {
cur_frm.cscript.copy_account_in_all_row(doc, cdt, cdn, "income_account");
}
cur_frm.cscript.expense_account = function(doc, cdt, cdn) {
cur_frm.cscript.copy_account_in_all_row(doc, cdt, cdn, "expense_account");
}
cur_frm.cscript.cost_center = function(doc, cdt, cdn) {
cur_frm.cscript.copy_account_in_all_row(doc, cdt, cdn, "cost_center");
}
cur_frm.cscript.on_submit = function(doc, cdt, cdn) {
if(cint(wn.boot.notification_settings.sales_invoice)) {
cur_frm.email_doc(wn.boot.notification_settings.sales_invoice_message);
}
}
cur_frm.cscript.convert_into_recurring_invoice = function(doc, dt, dn) {
// set default values for recurring invoices
if(doc.convert_into_recurring_invoice) {
var owner_email = doc.owner=="Administrator"
? wn.user_info("Administrator").email
: doc.owner;
doc.notification_email_address = $.map([cstr(owner_email),
cstr(doc.contact_email)], function(v) { return v || null; }).join(", ");
doc.repeat_on_day_of_month = wn.datetime.str_to_obj(doc.posting_date).getDate();
}
refresh_many(["notification_email_address", "repeat_on_day_of_month"]);
}
cur_frm.cscript.invoice_period_from_date = function(doc, dt, dn) {
// set invoice_period_to_date
if(doc.invoice_period_from_date) {
var recurring_type_map = {'Monthly': 1, 'Quarterly': 3, 'Half-yearly': 6,
'Yearly': 12};
var months = recurring_type_map[doc.recurring_type];
if(months) {
var to_date = wn.datetime.add_months(doc.invoice_period_from_date,
months);
doc.invoice_period_to_date = wn.datetime.add_days(to_date, -1);
refresh_field('invoice_period_to_date');
}
}
}

View File

@@ -1,968 +0,0 @@
# Copyright (c) 2013, Web Notes Technologies Pvt. Ltd. and Contributors
# License: GNU General Public License v3. See license.txt
from __future__ import unicode_literals
import webnotes
import webnotes.defaults
from webnotes.utils import add_days, cint, cstr, date_diff, flt, getdate, nowdate, \
get_first_day, get_last_day
from webnotes.utils.email_lib import sendmail
from webnotes.utils import comma_and, get_url
from webnotes.model.doc import make_autoname
from webnotes.model.bean import getlist
from webnotes.model.code import get_obj
from webnotes import _, msgprint
month_map = {'Monthly': 1, 'Quarterly': 3, 'Half-yearly': 6, 'Yearly': 12}
from controllers.selling_controller import SellingController
class DocType(SellingController):
def __init__(self,d,dl):
self.doc, self.doclist = d, dl
self.log = []
self.tname = 'Sales Invoice Item'
self.fname = 'entries'
self.status_updater = [{
'source_dt': 'Sales Invoice Item',
'target_field': 'billed_amt',
'target_ref_field': 'export_amount',
'target_dt': 'Sales Order Item',
'join_field': 'so_detail',
'target_parent_dt': 'Sales Order',
'target_parent_field': 'per_billed',
'source_field': 'export_amount',
'join_field': 'so_detail',
'percent_join_field': 'sales_order',
'status_field': 'billing_status',
'keyword': 'Billed'
}]
def validate(self):
super(DocType, self).validate()
self.validate_posting_time()
self.so_dn_required()
self.validate_proj_cust()
self.validate_with_previous_doc()
self.validate_uom_is_integer("stock_uom", "qty")
self.check_stop_sales_order("sales_order")
self.validate_customer_account()
self.validate_debit_acc()
self.validate_fixed_asset_account()
self.clear_unallocated_advances("Sales Invoice Advance", "advance_adjustment_details")
self.add_remarks()
if cint(self.doc.is_pos):
self.validate_pos()
self.validate_write_off_account()
if cint(self.doc.update_stock):
self.validate_item_code()
self.update_current_stock()
self.validate_delivery_note()
if not self.doc.is_opening:
self.doc.is_opening = 'No'
self.set_aging_date()
self.set_against_income_account()
self.validate_c_form()
self.validate_time_logs_are_submitted()
self.validate_recurring_invoice()
self.validate_multiple_billing("Delivery Note", "dn_detail", "export_amount",
"delivery_note_details")
def on_submit(self):
if cint(self.doc.update_stock) == 1:
self.update_stock_ledger()
else:
# Check for Approving Authority
if not self.doc.recurring_id:
get_obj('Authorization Control').validate_approving_authority(self.doc.doctype,
self.doc.company, self.doc.grand_total, self)
self.check_prev_docstatus()
self.update_status_updater_args()
self.update_prevdoc_status()
# this sequence because outstanding may get -ve
self.make_gl_entries()
self.check_credit_limit(self.doc.debit_to)
if not cint(self.doc.is_pos) == 1:
self.update_against_document_in_jv()
self.update_c_form()
self.update_time_log_batch(self.doc.name)
self.convert_to_recurring()
def before_cancel(self):
self.update_time_log_batch(None)
def on_cancel(self):
if cint(self.doc.update_stock) == 1:
self.update_stock_ledger()
self.check_stop_sales_order("sales_order")
from accounts.utils import remove_against_link_from_jv
remove_against_link_from_jv(self.doc.doctype, self.doc.name, "against_invoice")
self.update_status_updater_args()
self.update_prevdoc_status()
self.make_cancel_gl_entries()
def update_status_updater_args(self):
if cint(self.doc.update_stock):
self.status_updater.append({
'source_dt':'Sales Invoice Item',
'target_dt':'Sales Order Item',
'target_parent_dt':'Sales Order',
'target_parent_field':'per_delivered',
'target_field':'delivered_qty',
'target_ref_field':'qty',
'source_field':'qty',
'join_field':'so_detail',
'percent_join_field':'sales_order',
'status_field':'delivery_status',
'keyword':'Delivered',
'second_source_dt': 'Delivery Note Item',
'second_source_field': 'qty',
'second_join_field': 'prevdoc_detail_docname'
})
def on_update_after_submit(self):
self.validate_recurring_invoice()
self.convert_to_recurring()
def get_portal_page(self):
return "invoice" if self.doc.docstatus==1 else None
def set_missing_values(self, for_validate=False):
self.set_pos_fields(for_validate)
if not self.doc.debit_to:
self.doc.debit_to = self.get_customer_account()
if not self.doc.due_date:
self.doc.due_date = self.get_due_date()
super(DocType, self).set_missing_values(for_validate)
def set_customer_defaults(self):
# TODO cleanup these methods
if self.doc.customer:
self.doc.debit_to = self.get_customer_account()
elif self.doc.debit_to:
self.doc.customer = webnotes.conn.get_value('Account', self.doc.debit_to, 'master_name')
self.doc.due_date = self.get_due_date()
super(DocType, self).set_customer_defaults()
def update_time_log_batch(self, sales_invoice):
for d in self.doclist.get({"doctype":"Sales Invoice Item"}):
if d.time_log_batch:
tlb = webnotes.bean("Time Log Batch", d.time_log_batch)
tlb.doc.sales_invoice = sales_invoice
tlb.update_after_submit()
def validate_time_logs_are_submitted(self):
for d in self.doclist.get({"doctype":"Sales Invoice Item"}):
if d.time_log_batch:
status = webnotes.conn.get_value("Time Log Batch", d.time_log_batch, "status")
if status!="Submitted":
webnotes.msgprint(_("Time Log Batch status must be 'Submitted'") + ":" + d.time_log_batch,
raise_exception=True)
def set_pos_fields(self, for_validate=False):
"""Set retail related fields from pos settings"""
if cint(self.doc.is_pos) != 1:
return
from selling.utils import get_pos_settings, apply_pos_settings
pos = get_pos_settings(self.doc.company)
if pos:
if not for_validate and not self.doc.customer:
self.doc.customer = pos.customer
self.set_customer_defaults()
for fieldname in ('territory', 'naming_series', 'currency', 'charge', 'letter_head', 'tc_name',
'selling_price_list', 'company', 'select_print_heading', 'cash_bank_account'):
if (not for_validate) or (for_validate and not self.doc.fields.get(fieldname)):
self.doc.fields[fieldname] = pos.get(fieldname)
if not for_validate:
self.doc.update_stock = cint(pos.get("update_stock"))
# set pos values in items
for item in self.doclist.get({"parentfield": "entries"}):
if item.fields.get('item_code'):
for fieldname, val in apply_pos_settings(pos, item.fields).items():
if (not for_validate) or (for_validate and not item.fields.get(fieldname)):
item.fields[fieldname] = val
# fetch terms
if self.doc.tc_name and not self.doc.terms:
self.doc.terms = webnotes.conn.get_value("Terms and Conditions", self.doc.tc_name, "terms")
# fetch charges
if self.doc.charge and not len(self.doclist.get({"parentfield": "other_charges"})):
self.set_taxes("other_charges", "charge")
def get_customer_account(self):
"""Get Account Head to which amount needs to be Debited based on Customer"""
if not self.doc.company:
msgprint("Please select company first and re-select the customer after doing so",
raise_exception=1)
if self.doc.customer:
acc_head = webnotes.conn.sql("""select name from `tabAccount`
where (name = %s or (master_name = %s and master_type = 'customer'))
and docstatus != 2 and company = %s""",
(cstr(self.doc.customer) + " - " + self.get_company_abbr(),
self.doc.customer, self.doc.company))
if acc_head and acc_head[0][0]:
return acc_head[0][0]
else:
msgprint("%s does not have an Account Head in %s. \
You must first create it from the Customer Master" %
(self.doc.customer, self.doc.company))
def get_due_date(self):
"""Set Due Date = Posting Date + Credit Days"""
due_date = None
if self.doc.posting_date:
credit_days = 0
if self.doc.debit_to:
credit_days = webnotes.conn.get_value("Account", self.doc.debit_to, "credit_days")
if self.doc.customer and not credit_days:
credit_days = webnotes.conn.get_value("Customer", self.doc.customer, "credit_days")
if self.doc.company and not credit_days:
credit_days = webnotes.conn.get_value("Company", self.doc.company, "credit_days")
if credit_days:
due_date = add_days(self.doc.posting_date, credit_days)
else:
due_date = self.doc.posting_date
return due_date
def get_advances(self):
super(DocType, self).get_advances(self.doc.debit_to,
"Sales Invoice Advance", "advance_adjustment_details", "credit")
def get_company_abbr(self):
return webnotes.conn.sql("select abbr from tabCompany where name=%s", self.doc.company)[0][0]
def update_against_document_in_jv(self):
"""
Links invoice and advance voucher:
1. cancel advance voucher
2. split into multiple rows if partially adjusted, assign against voucher
3. submit advance voucher
"""
lst = []
for d in getlist(self.doclist, 'advance_adjustment_details'):
if flt(d.allocated_amount) > 0:
args = {
'voucher_no' : d.journal_voucher,
'voucher_detail_no' : d.jv_detail_no,
'against_voucher_type' : 'Sales Invoice',
'against_voucher' : self.doc.name,
'account' : self.doc.debit_to,
'is_advance' : 'Yes',
'dr_or_cr' : 'credit',
'unadjusted_amt' : flt(d.advance_amount),
'allocated_amt' : flt(d.allocated_amount)
}
lst.append(args)
if lst:
from accounts.utils import reconcile_against_document
reconcile_against_document(lst)
def validate_customer_account(self):
"""Validates Debit To Account and Customer Matches"""
if self.doc.customer and self.doc.debit_to and not cint(self.doc.is_pos):
acc_head = webnotes.conn.sql("select master_name from `tabAccount` where name = %s and docstatus != 2", self.doc.debit_to)
if (acc_head and cstr(acc_head[0][0]) != cstr(self.doc.customer)) or \
(not acc_head and (self.doc.debit_to != cstr(self.doc.customer) + " - " + self.get_company_abbr())):
msgprint("Debit To: %s do not match with Customer: %s for Company: %s.\n If both correctly entered, please select Master Type \
and Master Name in account master." %(self.doc.debit_to, self.doc.customer,self.doc.company), raise_exception=1)
def validate_debit_acc(self):
acc = webnotes.conn.sql("select debit_or_credit, is_pl_account from tabAccount where name = '%s' and docstatus != 2" % self.doc.debit_to)
if not acc:
msgprint("Account: "+ self.doc.debit_to + " does not exist")
raise Exception
elif acc[0][0] and acc[0][0] != 'Debit':
msgprint("Account: "+ self.doc.debit_to + " is not a debit account")
raise Exception
elif acc[0][1] and acc[0][1] != 'No':
msgprint("Account: "+ self.doc.debit_to + " is a pl account")
raise Exception
def validate_fixed_asset_account(self):
"""Validate Fixed Asset Account and whether Income Account Entered Exists"""
for d in getlist(self.doclist,'entries'):
item = webnotes.conn.sql("select name,is_asset_item,is_sales_item from `tabItem` where name = '%s' and (ifnull(end_of_life,'')='' or end_of_life = '0000-00-00' or end_of_life > now())"% d.item_code)
acc = webnotes.conn.sql("select account_type from `tabAccount` where name = '%s' and docstatus != 2" % d.income_account)
if not acc:
msgprint("Account: "+d.income_account+" does not exist in the system")
raise Exception
elif item and item[0][1] == 'Yes' and not acc[0][0] == 'Fixed Asset Account':
msgprint("Please select income head with account type 'Fixed Asset Account' as Item %s is an asset item" % d.item_code)
raise Exception
def validate_with_previous_doc(self):
super(DocType, self).validate_with_previous_doc(self.tname, {
"Sales Order": {
"ref_dn_field": "sales_order",
"compare_fields": [["customer", "="], ["company", "="], ["project_name", "="],
["currency", "="]],
},
"Delivery Note": {
"ref_dn_field": "delivery_note",
"compare_fields": [["customer", "="], ["company", "="], ["project_name", "="],
["currency", "="]],
},
})
if cint(webnotes.defaults.get_global_default('maintain_same_sales_rate')):
super(DocType, self).validate_with_previous_doc(self.tname, {
"Sales Order Item": {
"ref_dn_field": "so_detail",
"compare_fields": [["export_rate", "="]],
"is_child_table": True,
"allow_duplicate_prev_row_id": True
},
"Delivery Note Item": {
"ref_dn_field": "dn_detail",
"compare_fields": [["export_rate", "="]],
"is_child_table": True
}
})
def set_aging_date(self):
if self.doc.is_opening != 'Yes':
self.doc.aging_date = self.doc.posting_date
elif not self.doc.aging_date:
msgprint("Aging Date is mandatory for opening entry")
raise Exception
def set_against_income_account(self):
"""Set against account for debit to account"""
against_acc = []
for d in getlist(self.doclist, 'entries'):
if d.income_account not in against_acc:
against_acc.append(d.income_account)
self.doc.against_income_account = ','.join(against_acc)
def add_remarks(self):
if not self.doc.remarks: self.doc.remarks = 'No Remarks'
def so_dn_required(self):
"""check in manage account if sales order / delivery note required or not."""
dic = {'Sales Order':'so_required','Delivery Note':'dn_required'}
for i in dic:
if webnotes.conn.get_value('Selling Settings', None, dic[i]) == 'Yes':
for d in getlist(self.doclist,'entries'):
if webnotes.conn.get_value('Item', d.item_code, 'is_stock_item') == 'Yes' \
and not d.fields[i.lower().replace(' ','_')]:
msgprint("%s is mandatory for stock item which is not mentioed against item: %s"%(i,d.item_code), raise_exception=1)
def validate_proj_cust(self):
"""check for does customer belong to same project as entered.."""
if self.doc.project_name and self.doc.customer:
res = webnotes.conn.sql("select name from `tabProject` where name = '%s' and (customer = '%s' or ifnull(customer,'')='')"%(self.doc.project_name, self.doc.customer))
if not res:
msgprint("Customer - %s does not belong to project - %s. \n\nIf you want to use project for multiple customers then please make customer details blank in that project."%(self.doc.customer,self.doc.project_name))
raise Exception
def validate_pos(self):
if not self.doc.cash_bank_account and flt(self.doc.paid_amount):
msgprint("Cash/Bank Account is mandatory for POS, for making payment entry")
raise Exception
if (flt(self.doc.paid_amount) + flt(self.doc.write_off_amount) - round(flt(self.doc.grand_total), 2))>0.001:
msgprint("(Paid amount + Write Off Amount) can not be greater than Grand Total")
raise Exception
def validate_item_code(self):
for d in getlist(self.doclist, 'entries'):
if not d.item_code:
msgprint("Please enter Item Code at line no : %s to update stock or remove check from Update Stock in Basic Info Tab." % (d.idx),
raise_exception=True)
def validate_delivery_note(self):
for d in self.doclist.get({"parentfield": "entries"}):
if d.delivery_note:
msgprint("""Stock update can not be made against Delivery Note""", raise_exception=1)
def validate_write_off_account(self):
if flt(self.doc.write_off_amount) and not self.doc.write_off_account:
msgprint("Please enter Write Off Account", raise_exception=1)
def validate_c_form(self):
""" Blank C-form no if C-form applicable marked as 'No'"""
if self.doc.amended_from and self.doc.c_form_applicable == 'No' and self.doc.c_form_no:
webnotes.conn.sql("""delete from `tabC-Form Invoice Detail` where invoice_no = %s
and parent = %s""", (self.doc.amended_from, self.doc.c_form_no))
webnotes.conn.set(self.doc, 'c_form_no', '')
def update_current_stock(self):
for d in getlist(self.doclist, 'entries'):
if d.item_code and d.warehouse:
bin = webnotes.conn.sql("select actual_qty from `tabBin` where item_code = %s and warehouse = %s", (d.item_code, d.warehouse), as_dict = 1)
d.actual_qty = bin and flt(bin[0]['actual_qty']) or 0
for d in getlist(self.doclist, 'packing_details'):
bin = webnotes.conn.sql("select actual_qty, projected_qty from `tabBin` where item_code = %s and warehouse = %s", (d.item_code, d.warehouse), as_dict = 1)
d.actual_qty = bin and flt(bin[0]['actual_qty']) or 0
d.projected_qty = bin and flt(bin[0]['projected_qty']) or 0
def get_warehouse(self):
w = webnotes.conn.sql("select warehouse from `tabPOS Setting` where ifnull(user,'') = '%s' and company = '%s'" % (webnotes.session['user'], self.doc.company))
w = w and w[0][0] or ''
if not w:
ps = webnotes.conn.sql("select name, warehouse from `tabPOS Setting` where ifnull(user,'') = '' and company = '%s'" % self.doc.company)
if not ps:
msgprint("To make POS entry, please create POS Setting from Accounts --> POS Setting page and refresh the system.", raise_exception=True)
elif not ps[0][1]:
msgprint("Please enter warehouse in POS Setting")
else:
w = ps[0][1]
return w
def on_update(self):
if cint(self.doc.update_stock) == 1:
# Set default warehouse from pos setting
if cint(self.doc.is_pos) == 1:
w = self.get_warehouse()
if w:
for d in getlist(self.doclist, 'entries'):
if not d.warehouse:
d.warehouse = cstr(w)
from stock.doctype.packed_item.packed_item import make_packing_list
make_packing_list(self, 'entries')
else:
self.doclist = self.doc.clear_table(self.doclist, 'packing_details')
if cint(self.doc.is_pos) == 1:
if flt(self.doc.paid_amount) == 0:
if self.doc.cash_bank_account:
webnotes.conn.set(self.doc, 'paid_amount',
(flt(self.doc.grand_total) - flt(self.doc.write_off_amount)))
else:
# show message that the amount is not paid
webnotes.conn.set(self.doc,'paid_amount',0)
webnotes.msgprint("Note: Payment Entry will not be created since 'Cash/Bank Account' was not specified.")
else:
webnotes.conn.set(self.doc,'paid_amount',0)
def check_prev_docstatus(self):
for d in getlist(self.doclist,'entries'):
if d.sales_order:
submitted = webnotes.conn.sql("select name from `tabSales Order` where docstatus = 1 and name = '%s'" % d.sales_order)
if not submitted:
msgprint("Sales Order : "+ cstr(d.sales_order) +" is not submitted")
raise Exception , "Validation Error."
if d.delivery_note:
submitted = webnotes.conn.sql("select name from `tabDelivery Note` where docstatus = 1 and name = '%s'" % d.delivery_note)
if not submitted:
msgprint("Delivery Note : "+ cstr(d.delivery_note) +" is not submitted")
raise Exception , "Validation Error."
def update_stock_ledger(self):
sl_entries = []
for d in self.get_item_list():
if webnotes.conn.get_value("Item", d.item_code, "is_stock_item") == "Yes" \
and d.warehouse:
sl_entries.append(self.get_sl_entries(d, {
"actual_qty": -1*flt(d.qty),
"stock_uom": webnotes.conn.get_value("Item", d.item_code, "stock_uom")
}))
self.make_sl_entries(sl_entries)
def make_gl_entries(self, update_gl_entries_after=True):
gl_entries = self.get_gl_entries()
if gl_entries:
from accounts.general_ledger import make_gl_entries
update_outstanding = cint(self.doc.is_pos) and self.doc.write_off_account \
and 'No' or 'Yes'
make_gl_entries(gl_entries, cancel=(self.doc.docstatus == 2),
update_outstanding=update_outstanding, merge_entries=False)
if update_gl_entries_after and cint(self.doc.update_stock) \
and cint(webnotes.defaults.get_global_default("auto_accounting_for_stock")):
self.update_gl_entries_after()
def get_gl_entries(self, warehouse_account=None):
from accounts.general_ledger import merge_similar_entries
gl_entries = []
self.make_customer_gl_entry(gl_entries)
self.make_tax_gl_entries(gl_entries)
self.make_item_gl_entries(gl_entries)
# merge gl entries before adding pos entries
gl_entries = merge_similar_entries(gl_entries)
self.make_pos_gl_entries(gl_entries)
return gl_entries
def make_customer_gl_entry(self, gl_entries):
if self.doc.grand_total:
gl_entries.append(
self.get_gl_dict({
"account": self.doc.debit_to,
"against": self.doc.against_income_account,
"debit": self.doc.grand_total,
"remarks": self.doc.remarks,
"against_voucher": self.doc.name,
"against_voucher_type": self.doc.doctype,
})
)
def make_tax_gl_entries(self, gl_entries):
for tax in self.doclist.get({"parentfield": "other_charges"}):
if flt(tax.tax_amount):
gl_entries.append(
self.get_gl_dict({
"account": tax.account_head,
"against": self.doc.debit_to,
"credit": flt(tax.tax_amount),
"remarks": self.doc.remarks,
"cost_center": tax.cost_center
})
)
def make_item_gl_entries(self, gl_entries):
# income account gl entries
for item in self.doclist.get({"parentfield": "entries"}):
if flt(item.amount):
gl_entries.append(
self.get_gl_dict({
"account": item.income_account,
"against": self.doc.debit_to,
"credit": item.amount,
"remarks": self.doc.remarks,
"cost_center": item.cost_center
})
)
# expense account gl entries
if cint(webnotes.defaults.get_global_default("auto_accounting_for_stock")) \
and cint(self.doc.update_stock):
gl_entries += super(DocType, self).get_gl_entries()
def make_pos_gl_entries(self, gl_entries):
if cint(self.doc.is_pos) and self.doc.cash_bank_account and self.doc.paid_amount:
# POS, make payment entries
gl_entries.append(
self.get_gl_dict({
"account": self.doc.debit_to,
"against": self.doc.cash_bank_account,
"credit": self.doc.paid_amount,
"remarks": self.doc.remarks,
"against_voucher": self.doc.name,
"against_voucher_type": self.doc.doctype,
})
)
gl_entries.append(
self.get_gl_dict({
"account": self.doc.cash_bank_account,
"against": self.doc.debit_to,
"debit": self.doc.paid_amount,
"remarks": self.doc.remarks,
})
)
# write off entries, applicable if only pos
if self.doc.write_off_account and self.doc.write_off_amount:
gl_entries.append(
self.get_gl_dict({
"account": self.doc.debit_to,
"against": self.doc.write_off_account,
"credit": self.doc.write_off_amount,
"remarks": self.doc.remarks,
"against_voucher": self.doc.name,
"against_voucher_type": self.doc.doctype,
})
)
gl_entries.append(
self.get_gl_dict({
"account": self.doc.write_off_account,
"against": self.doc.debit_to,
"debit": self.doc.write_off_amount,
"remarks": self.doc.remarks,
"cost_center": self.doc.write_off_cost_center
})
)
def update_c_form(self):
"""Update amended id in C-form"""
if self.doc.c_form_no and self.doc.amended_from:
webnotes.conn.sql("""update `tabC-Form Invoice Detail` set invoice_no = %s,
invoice_date = %s, territory = %s, net_total = %s,
grand_total = %s where invoice_no = %s and parent = %s""",
(self.doc.name, self.doc.amended_from, self.doc.c_form_no))
@property
def meta(self):
if not hasattr(self, "_meta"):
self._meta = webnotes.get_doctype(self.doc.doctype)
return self._meta
def validate_recurring_invoice(self):
if self.doc.convert_into_recurring_invoice:
self.validate_notification_email_id()
if not self.doc.recurring_type:
msgprint(_("Please select: ") + self.meta.get_label("recurring_type"),
raise_exception=1)
elif not (self.doc.invoice_period_from_date and \
self.doc.invoice_period_to_date):
msgprint(comma_and([self.meta.get_label("invoice_period_from_date"),
self.meta.get_label("invoice_period_to_date")])
+ _(": Mandatory for a Recurring Invoice."),
raise_exception=True)
def convert_to_recurring(self):
if self.doc.convert_into_recurring_invoice:
if not self.doc.recurring_id:
webnotes.conn.set(self.doc, "recurring_id",
make_autoname("RECINV/.#####"))
self.set_next_date()
elif self.doc.recurring_id:
webnotes.conn.sql("""update `tabSales Invoice`
set convert_into_recurring_invoice = 0
where recurring_id = %s""", (self.doc.recurring_id,))
def validate_notification_email_id(self):
if self.doc.notification_email_address:
email_list = filter(None, [cstr(email).strip() for email in
self.doc.notification_email_address.replace("\n", "").split(",")])
from webnotes.utils import validate_email_add
for email in email_list:
if not validate_email_add(email):
msgprint(self.meta.get_label("notification_email_address") \
+ " - " + _("Invalid Email Address") + ": \"%s\"" % email,
raise_exception=1)
else:
msgprint("Notification Email Addresses not specified for recurring invoice",
raise_exception=1)
def set_next_date(self):
""" Set next date on which auto invoice will be created"""
if not self.doc.repeat_on_day_of_month:
msgprint("""Please enter 'Repeat on Day of Month' field value.
The day of the month on which auto invoice
will be generated e.g. 05, 28 etc.""", raise_exception=1)
next_date = get_next_date(self.doc.posting_date,
month_map[self.doc.recurring_type], cint(self.doc.repeat_on_day_of_month))
webnotes.conn.set(self.doc, 'next_date', next_date)
def get_next_date(dt, mcount, day=None):
dt = getdate(dt)
from dateutil.relativedelta import relativedelta
dt += relativedelta(months=mcount, day=day)
return dt
def manage_recurring_invoices(next_date=None, commit=True):
"""
Create recurring invoices on specific date by copying the original one
and notify the concerned people
"""
next_date = next_date or nowdate()
recurring_invoices = webnotes.conn.sql("""select name, recurring_id
from `tabSales Invoice` where ifnull(convert_into_recurring_invoice, 0)=1
and docstatus=1 and next_date=%s
and next_date <= ifnull(end_date, '2199-12-31')""", next_date)
exception_list = []
for ref_invoice, recurring_id in recurring_invoices:
if not webnotes.conn.sql("""select name from `tabSales Invoice`
where posting_date=%s and recurring_id=%s and docstatus=1""",
(next_date, recurring_id)):
try:
ref_wrapper = webnotes.bean('Sales Invoice', ref_invoice)
new_invoice_wrapper = make_new_invoice(ref_wrapper, next_date)
send_notification(new_invoice_wrapper)
if commit:
webnotes.conn.commit()
except:
if commit:
webnotes.conn.rollback()
webnotes.conn.begin()
webnotes.conn.sql("update `tabSales Invoice` set \
convert_into_recurring_invoice = 0 where name = %s", ref_invoice)
notify_errors(ref_invoice, ref_wrapper.doc.owner)
webnotes.conn.commit()
exception_list.append(webnotes.getTraceback())
finally:
if commit:
webnotes.conn.begin()
if exception_list:
exception_message = "\n\n".join([cstr(d) for d in exception_list])
raise Exception, exception_message
def make_new_invoice(ref_wrapper, posting_date):
from webnotes.model.bean import clone
from accounts.utils import get_fiscal_year
new_invoice = clone(ref_wrapper)
mcount = month_map[ref_wrapper.doc.recurring_type]
invoice_period_from_date = get_next_date(ref_wrapper.doc.invoice_period_from_date, mcount)
# get last day of the month to maintain period if the from date is first day of its own month
# and to date is the last day of its own month
if (cstr(get_first_day(ref_wrapper.doc.invoice_period_from_date)) == \
cstr(ref_wrapper.doc.invoice_period_from_date)) and \
(cstr(get_last_day(ref_wrapper.doc.invoice_period_to_date)) == \
cstr(ref_wrapper.doc.invoice_period_to_date)):
invoice_period_to_date = get_last_day(get_next_date(ref_wrapper.doc.invoice_period_to_date,
mcount))
else:
invoice_period_to_date = get_next_date(ref_wrapper.doc.invoice_period_to_date, mcount)
new_invoice.doc.fields.update({
"posting_date": posting_date,
"aging_date": posting_date,
"due_date": add_days(posting_date, cint(date_diff(ref_wrapper.doc.due_date,
ref_wrapper.doc.posting_date))),
"invoice_period_from_date": invoice_period_from_date,
"invoice_period_to_date": invoice_period_to_date,
"fiscal_year": get_fiscal_year(posting_date)[0],
"owner": ref_wrapper.doc.owner,
})
new_invoice.submit()
return new_invoice
def send_notification(new_rv):
"""Notify concerned persons about recurring invoice generation"""
subject = "Invoice : " + new_rv.doc.name
com = new_rv.doc.company
hd = '''<div><h2>%s</h2></div>
<div><h3>Invoice: %s</h3></div>
<table cellspacing= "5" cellpadding="5" width = "100%%">
<tr>
<td width = "50%%"><b>Customer</b><br>%s<br>%s</td>
<td width = "50%%">Invoice Date : %s<br>Invoice Period : %s to %s <br>Due Date : %s</td>
</tr>
</table>
''' % (com, new_rv.doc.name, new_rv.doc.customer_name, new_rv.doc.address_display, getdate(new_rv.doc.posting_date).strftime("%d-%m-%Y"), \
getdate(new_rv.doc.invoice_period_from_date).strftime("%d-%m-%Y"), getdate(new_rv.doc.invoice_period_to_date).strftime("%d-%m-%Y"),\
getdate(new_rv.doc.due_date).strftime("%d-%m-%Y"))
tbl = '''<table border="1px solid #CCC" width="100%%" cellpadding="0px" cellspacing="0px">
<tr>
<td width = "15%%" bgcolor="#CCC" align="left"><b>Item</b></td>
<td width = "40%%" bgcolor="#CCC" align="left"><b>Description</b></td>
<td width = "15%%" bgcolor="#CCC" align="center"><b>Qty</b></td>
<td width = "15%%" bgcolor="#CCC" align="center"><b>Rate</b></td>
<td width = "15%%" bgcolor="#CCC" align="center"><b>Amount</b></td>
</tr>
'''
for d in getlist(new_rv.doclist, 'entries'):
tbl += '<tr><td>' + cstr(d.item_code) +'</td><td>' + cstr(d.description) + \
'</td><td>' + cstr(d.qty) +'</td><td>' + cstr(d.basic_rate) + \
'</td><td>' + cstr(d.amount) +'</td></tr>'
tbl += '</table>'
totals ='''<table cellspacing= "5" cellpadding="5" width = "100%%">
<tr>
<td width = "50%%"></td>
<td width = "50%%">
<table width = "100%%">
<tr>
<td width = "50%%">Net Total: </td><td>%s </td>
</tr><tr>
<td width = "50%%">Total Tax: </td><td>%s </td>
</tr><tr>
<td width = "50%%">Grand Total: </td><td>%s</td>
</tr><tr>
<td width = "50%%">In Words: </td><td>%s</td>
</tr>
</table>
</td>
</tr>
<tr><td>Terms and Conditions:</td></tr>
<tr><td>%s</td></tr>
</table>
''' % (new_rv.doc.net_total,
new_rv.doc.other_charges_total,new_rv.doc.grand_total,
new_rv.doc.in_words,new_rv.doc.terms)
msg = hd + tbl + totals
sendmail(new_rv.doc.notification_email_address, subject=subject, msg = msg)
def notify_errors(inv, owner):
import webnotes
exception_msg = """
Dear User,
An error occured while creating recurring invoice from %s (at %s).
May be there are some invalid email ids mentioned in the invoice.
To stop sending repetitive error notifications from the system, we have unchecked
"Convert into Recurring" field in the invoice %s.
Please correct the invoice and make the invoice recurring again.
<b>It is necessary to take this action today itself for the above mentioned recurring invoice \
to be generated. If delayed, you will have to manually change the "Repeat on Day of Month" field \
of this invoice for generating the recurring invoice.</b>
Regards,
Administrator
""" % (inv, get_url(), inv)
subj = "[Urgent] Error while creating recurring invoice from %s" % inv
from webnotes.profile import get_system_managers
recipients = get_system_managers()
owner_email = webnotes.conn.get_value("Profile", owner, "email")
if not owner_email in recipients:
recipients.append(owner_email)
assign_task_to_owner(inv, exception_msg, recipients)
sendmail(recipients, subject=subj, msg = exception_msg)
def assign_task_to_owner(inv, msg, users):
for d in users:
from webnotes.widgets.form import assign_to
args = {
'assign_to' : d,
'doctype' : 'Sales Invoice',
'name' : inv,
'description' : msg,
'priority' : 'Urgent'
}
assign_to.add(args)
@webnotes.whitelist()
def get_bank_cash_account(mode_of_payment):
val = webnotes.conn.get_value("Mode of Payment", mode_of_payment, "default_account")
if not val:
webnotes.msgprint("Default Bank / Cash Account not set in Mode of Payment: %s. Please add a Default Account in Mode of Payment master." % mode_of_payment)
return {
"cash_bank_account": val
}
@webnotes.whitelist()
def get_income_account(doctype, txt, searchfield, start, page_len, filters):
from controllers.queries import get_match_cond
# income account can be any Credit account,
# but can also be a Asset account with account_type='Income Account' in special circumstances.
# Hence the first condition is an "OR"
return webnotes.conn.sql("""select tabAccount.name from `tabAccount`
where (tabAccount.debit_or_credit="Credit"
or tabAccount.account_type = "Income Account")
and tabAccount.group_or_ledger="Ledger"
and tabAccount.docstatus!=2
and ifnull(tabAccount.master_type, "")=""
and ifnull(tabAccount.master_name, "")=""
and tabAccount.company = '%(company)s'
and tabAccount.%(key)s LIKE '%(txt)s'
%(mcond)s""" % {'company': filters['company'], 'key': searchfield,
'txt': "%%%s%%" % txt, 'mcond':get_match_cond(doctype, searchfield)})
@webnotes.whitelist()
def make_delivery_note(source_name, target_doclist=None):
from webnotes.model.mapper import get_mapped_doclist
def set_missing_values(source, target):
bean = webnotes.bean(target)
bean.run_method("onload_post_render")
def update_item(source_doc, target_doc, source_parent):
target_doc.amount = (flt(source_doc.qty) - flt(source_doc.delivered_qty)) * \
flt(source_doc.basic_rate)
target_doc.export_amount = (flt(source_doc.qty) - flt(source_doc.delivered_qty)) * \
flt(source_doc.export_rate)
target_doc.qty = flt(source_doc.qty) - flt(source_doc.delivered_qty)
doclist = get_mapped_doclist("Sales Invoice", source_name, {
"Sales Invoice": {
"doctype": "Delivery Note",
"validation": {
"docstatus": ["=", 1]
}
},
"Sales Invoice Item": {
"doctype": "Delivery Note Item",
"field_map": {
"name": "prevdoc_detail_docname",
"parent": "against_sales_invoice",
"serial_no": "serial_no"
},
"postprocess": update_item
},
"Sales Taxes and Charges": {
"doctype": "Sales Taxes and Charges",
"add_if_empty": True
},
"Sales Team": {
"doctype": "Sales Team",
"field_map": {
"incentives": "incentives"
},
"add_if_empty": True
}
}, target_doclist, set_missing_values)
return [d.fields for d in doclist]

File diff suppressed because it is too large Load Diff

View File

@@ -1,13 +0,0 @@
// Copyright (c) 2013, Web Notes Technologies Pvt. Ltd. and Contributors
// License: GNU General Public License v3. See license.txt
// render
wn.listview_settings['Sales Invoice'] = {
add_fields: ["`tabSales Invoice`.grand_total", "`tabSales Invoice`.outstanding_amount"],
add_columns: [{"content":"Percent Paid", width:"10%", type:"bar-graph",
label: "Payment Received"}],
prepare_data: function(data) {
data["Percent Paid"] = flt(data.grand_total) ? (((flt(data.grand_total) -
flt(data.outstanding_amount)) / flt(data.grand_total)) * 100) : 0;
}
};

View File

@@ -1,19 +0,0 @@
// Copyright (c) 2013, Web Notes Technologies Pvt. Ltd. and Contributors
// License: GNU General Public License v3. See license.txt
wn.model.map_info["Sales Invoice"] = {
"Time Log Batch": {
table_map: {
"Sales Invoice Item": "Time Log Batch",
},
field_map: {
"Sales Invoice Item": {
"basic_rate": "rate",
"time_log_batch": "name",
"qty": "total_hours",
"stock_uom": "=Hour",
"description": "=via Time Logs"
}
},
}
}

View File

@@ -1,5 +0,0 @@
{% extends "app/portal/templates/sale.html" %}
{% block status -%}
{% if doc.status %}{{ doc.status }}{% endif %}
{%- endblock %}

View File

@@ -1,30 +0,0 @@
# Copyright (c) 2013, Web Notes Technologies Pvt. Ltd. and Contributors
# License: GNU General Public License v3. See license.txt
from __future__ import unicode_literals
import webnotes
from webnotes import _
from webnotes.utils import flt, fmt_money
no_cache = True
def get_context():
from portal.utils import get_transaction_context
context = get_transaction_context("Sales Invoice", webnotes.form_dict.name)
modify_status(context.get("doc"))
context.update({
"parent_link": "invoices",
"parent_title": "Invoices"
})
return context
def modify_status(doc):
doc.status = ""
if flt(doc.outstanding_amount):
doc.status = '<span class="label %s"><i class="icon-fixed-width %s"></i> %s</span>' % \
("label-warning", "icon-exclamation-sign",
_("To Pay") + " = " + fmt_money(doc.outstanding_amount, currency=doc.currency))
else:
doc.status = '<span class="label %s"><i class="icon-fixed-width %s"></i> %s</span>' % \
("label-success", "icon-ok", _("Paid"))

View File

@@ -1 +0,0 @@
{% extends "app/portal/templates/sales_transactions.html" %}

View File

@@ -1,28 +0,0 @@
# Copyright (c) 2013, Web Notes Technologies Pvt. Ltd. and Contributors
# License: GNU General Public License v3. See license.txt
from __future__ import unicode_literals
import webnotes
no_cache = True
def get_context():
from portal.utils import get_currency_context
context = get_currency_context()
context.update({
"title": "Invoices",
"method": "accounts.doctype.sales_invoice.templates.pages.invoices.get_invoices",
"icon": "icon-file-text",
"empty_list_message": "No Invoices Found",
"page": "invoice"
})
return context
@webnotes.whitelist()
def get_invoices(start=0):
from portal.utils import get_transaction_list
from accounts.doctype.sales_invoice.templates.pages.invoice import modify_status
invoices = get_transaction_list("Sales Invoice", start, ["outstanding_amount"])
for d in invoices:
modify_status(d)
return invoices

File diff suppressed because it is too large Load Diff

View File

@@ -1,9 +0,0 @@
# Copyright (c) 2013, Web Notes Technologies Pvt. Ltd. and Contributors
# License: GNU General Public License v3. See license.txt
from __future__ import unicode_literals
import webnotes
class DocType:
def __init__(self, d, dl):
self.doc, self.doclist = d, dl

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